diff -Nrcpad gcc-16-20251130/ChangeLog gcc-16-20251207/ChangeLog
*** gcc-16-20251130/ChangeLog	Sun Nov 30 22:32:05 2025
--- gcc-16-20251207/ChangeLog	Sun Dec  7 22:32:06 2025
***************
*** 1,3 ****
--- 1,8 ----
+ 2025-11-30  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* MAINTAINERS: Add Algol 68 subsystems.
+ 	* SECURITY.txt: add libga68 to list of libraries.
+ 
  2025-11-20  Claudio Bantaloukas  <claudio.bantaloukas@arm.com>
  
  	* MAINTAINERS:  Add myself in forge integration maintainers
diff -Nrcpad gcc-16-20251130/LAST_UPDATED gcc-16-20251207/LAST_UPDATED
*** gcc-16-20251130/LAST_UPDATED	Sun Nov 30 22:32:20 2025
--- gcc-16-20251207/LAST_UPDATED	Sun Dec  7 22:32:22 2025
***************
*** 1 ****
! Obtained from git: master revision e1f33d3890ddccca3a2c6c5bce08d68e313b1f3a
--- 1 ----
! Obtained from git: master revision 01d4414e3ea4090bffe644c9e2d2834f451ee6a5
diff -Nrcpad gcc-16-20251130/MD5SUMS gcc-16-20251207/MD5SUMS
*** gcc-16-20251130/MD5SUMS	Sun Nov 30 22:32:25 2025
--- gcc-16-20251207/MD5SUMS	Sun Dec  7 22:32:27 2025
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-16-20251130.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-20251207.tar.xz tarball.
  #
  # Besides verifying that all files in the tarball were correctly expanded,
  # it also can be used to determine if any files have changed since the
*************** ac5a8807f431d3dab46a7425b96379e4  .gitig
*** 23,33 ****
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! 3002ed26c9d6dcea4d62a9cf70398a6b  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! e21c7f27f04e3c90a19ac5f25b70b51b  LAST_UPDATED
  9e74773603f25753d4aca0184b8ebaeb  MAINTAINERS
  303dcd6947e003fbebd9a1ba06190d09  Makefile.def
  97cb7e7715d72f600061eb2b788d9978  Makefile.in
--- 23,33 ----
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! 81e206529aaaf8a6cb747d98fe582747  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 25fdaa9f598961408f5471aae37aad08  LAST_UPDATED
  9e74773603f25753d4aca0184b8ebaeb  MAINTAINERS
  303dcd6947e003fbebd9a1ba06190d09  Makefile.def
  97cb7e7715d72f600061eb2b788d9978  Makefile.in
*************** c5a60ac6626343968c4ef1fdf261bf62  c++too
*** 48,54 ****
  c64564b7c7563dae5ebe016f340c9cd9  config.guess
  040359150cf11493f973a46d8a25b06b  config.rpath
  111d54aa3a3019adbab413c8fb435f22  config.sub
! a054e3f62cc679052cf517460e61d082  config/ChangeLog
  e8365ab73da09dccff77a6e2ad006a68  config/acinclude.m4
  9d2aa7a8838218577399701b0cd4166b  config/acx.m4
  6b030f5cf640bdd401ea739f54a667f8  config/asmcfi.m4
--- 48,54 ----
  c64564b7c7563dae5ebe016f340c9cd9  config.guess
  040359150cf11493f973a46d8a25b06b  config.rpath
  111d54aa3a3019adbab413c8fb435f22  config.sub
! 1d1f54db7874d2d925f0b876096db487  config/ChangeLog
  e8365ab73da09dccff77a6e2ad006a68  config/acinclude.m4
  9d2aa7a8838218577399701b0cd4166b  config/acx.m4
  6b030f5cf640bdd401ea739f54a667f8  config/asmcfi.m4
*************** e2dc6b4fd62b77bff96b7951ef74f78f  config
*** 157,163 ****
  db74a73c3c9c3cc71edec37c2436e082  config/zstd.m4
  f9b6d608238df07c76634c78009afa33  configure
  03778937a9f2ba52fd4dc7a290281c17  configure.ac
! f3841fbb657fa927db685c972326ec31  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
  13605e5ba7b533ecbe3a902b8ebe4079  contrib/analyze_brprob.py
--- 157,163 ----
  db74a73c3c9c3cc71edec37c2436e082  config/zstd.m4
  f9b6d608238df07c76634c78009afa33  configure
  03778937a9f2ba52fd4dc7a290281c17  configure.ac
! e2f8a03514d5f78e49e4a2b0ccd659ab  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
  13605e5ba7b533ecbe3a902b8ebe4079  contrib/analyze_brprob.py
*************** da7a8c0d3b1e154584d5e062d9a3b558  contri
*** 168,174 ****
  e45f3883956c257039f6ff14079cff05  contrib/check-params-in-docs.py
  6b9a7ea20f07df4c70a3c38a7478891a  contrib/check_GNU_style.py
  fa1c4b0172be6c080411619977750edb  contrib/check_GNU_style.sh
! d65fb37d5bf4325b777f5cd996b19e97  contrib/check_GNU_style_lib.py
  90007bd4812c8bc365b6f0004e86d465  contrib/check_makefile_deps.sh
  4b4bfb3a8be5ddeae3515ff55c6c1618  contrib/check_warning_flags.sh
  ffab271b81488026969b58ab7dca818a  contrib/clang-format
--- 168,174 ----
  e45f3883956c257039f6ff14079cff05  contrib/check-params-in-docs.py
  6b9a7ea20f07df4c70a3c38a7478891a  contrib/check_GNU_style.py
  fa1c4b0172be6c080411619977750edb  contrib/check_GNU_style.sh
! ed57d10cbc953f0b2b73bf210402462f  contrib/check_GNU_style_lib.py
  90007bd4812c8bc365b6f0004e86d465  contrib/check_makefile_deps.sh
  4b4bfb3a8be5ddeae3515ff55c6c1618  contrib/check_warning_flags.sh
  ffab271b81488026969b58ab7dca818a  contrib/clang-format
*************** c031cdd918e93a5780aab350a42591d8  contri
*** 195,204 ****
  db03e57377f9eb202b7b783eb81fe40d  contrib/filter_knr2ansi.pl
  d577ea19d05f19a8364f73c9901223b7  contrib/filter_params.py
  1f09615feb91c049cbf46b27ea159c58  contrib/gcc-changelog/git_check_commit.py
! 775a46a1c14d05608c320955cf3ad8db  contrib/gcc-changelog/git_commit.py
  6a772ce384751a560f60790681e6fc41  contrib/gcc-changelog/git_email.py
  039963086e96c2e9fdf8ae5643394a9c  contrib/gcc-changelog/git_repository.py
! 5c0a44b6238e0b72cf2b5d2ad94c0e36  contrib/gcc-changelog/git_update_version.py
  6e731268209cc6d4936196233e28bae9  contrib/gcc-changelog/setup.cfg
  0b845b0a18e1acc7cc4d441b4f0cb449  contrib/gcc-changelog/test_email.py
  6662a65218b0a11d673a65656b98d821  contrib/gcc-changelog/test_patches.txt
--- 195,204 ----
  db03e57377f9eb202b7b783eb81fe40d  contrib/filter_knr2ansi.pl
  d577ea19d05f19a8364f73c9901223b7  contrib/filter_params.py
  1f09615feb91c049cbf46b27ea159c58  contrib/gcc-changelog/git_check_commit.py
! 03fe0e4089316d48c3802bc739c17b0d  contrib/gcc-changelog/git_commit.py
  6a772ce384751a560f60790681e6fc41  contrib/gcc-changelog/git_email.py
  039963086e96c2e9fdf8ae5643394a9c  contrib/gcc-changelog/git_repository.py
! fcaa9ab7f2f313dbec5aea07dcf7d330  contrib/gcc-changelog/git_update_version.py
  6e731268209cc6d4936196233e28bae9  contrib/gcc-changelog/setup.cfg
  0b845b0a18e1acc7cc4d441b4f0cb449  contrib/gcc-changelog/test_email.py
  6662a65218b0a11d673a65656b98d821  contrib/gcc-changelog/test_patches.txt
*************** bda0e2d8e6960465c7778fe3856cdacc  contri
*** 254,260 ****
  c5572589247d96d3a50b4dab8f7bcd46  contrib/mklog.py
  9bb8c12fc069b7624268da15bd911667  contrib/paranoia.cc
  56f5ae231f8677575e2be3afe11f0bf3  contrib/patch_tester.sh
! d97ecb8328de32bbaeeb213a0d8d3af7  contrib/prepare-commit-msg
  54a8a1946d9e81a805292deef2e16064  contrib/prepare_patch.sh
  1e0f018552766cabbeae5f6f182bf99e  contrib/prerequisites.md5
  ace5565a36009a7978462fa9d727bea3  contrib/prerequisites.sha512
--- 254,260 ----
  c5572589247d96d3a50b4dab8f7bcd46  contrib/mklog.py
  9bb8c12fc069b7624268da15bd911667  contrib/paranoia.cc
  56f5ae231f8677575e2be3afe11f0bf3  contrib/patch_tester.sh
! 255574db572307c3f7d69d7cb4b51af1  contrib/prepare-commit-msg
  54a8a1946d9e81a805292deef2e16064  contrib/prepare_patch.sh
  1e0f018552766cabbeae5f6f182bf99e  contrib/prerequisites.md5
  ace5565a36009a7978462fa9d727bea3  contrib/prerequisites.sha512
*************** a22e70b3f29292d0e628450f4bb11e62  fixinc
*** 521,527 ****
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! c33d2aa82a34cf36e8c725f49cd01dd0  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
--- 521,527 ----
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 84c3ac2deb9b9c9701628c8a984b5dee  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 558,564 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 243f6e2579f2d93f4aef6e1942ac18c1  gcc/DATESTAMP
  deb513e591f23901188e22323bd3b1d4  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
--- 558,564 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! c07c5b5251726226db1723c432fcfa41  gcc/DATESTAMP
  deb513e591f23901188e22323bd3b1d4  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
*************** ec6799501b2eb2923d5de6a66169dbd2  gcc/ON
*** 570,576 ****
  ee95df275c932cada412ed8168975af9  gcc/acinclude.m4
  e74733ebf762151e601c9e0aa1461a20  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! b39fa1fc2d60f88effc14f13069b1cdb  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
--- 570,576 ----
  ee95df275c932cada412ed8168975af9  gcc/acinclude.m4
  e74733ebf762151e601c9e0aa1461a20  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! 6867a568afbaee5e05c8818c9a27e093  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
*************** eea9961506181531b5f7f1a7f62fe428  gcc/ad
*** 599,605 ****
  2cf41efa2dee24b2dda73018b855edd3  gcc/ada/ChangeLog.tree-ssa
  1ddbf3755fbef2d964b15c7104b9937d  gcc/ada/Make-generated.in
  6c9c3b4249e781ed48c7ae55e8ef9999  gcc/ada/Makefile.in
! f4aae1230ec3af32ac53138e5ed6a1ff  gcc/ada/Makefile.rtl
  38343dc270740eef23a38cd3c750dde1  gcc/ada/accessibility.adb
  fbd3226b85f1e1cc6eb250fa51de4be1  gcc/ada/accessibility.ads
  80867b66cbed2dba054564ea216b3c66  gcc/ada/ada_get_targ.adb
--- 599,605 ----
  2cf41efa2dee24b2dda73018b855edd3  gcc/ada/ChangeLog.tree-ssa
  1ddbf3755fbef2d964b15c7104b9937d  gcc/ada/Make-generated.in
  6c9c3b4249e781ed48c7ae55e8ef9999  gcc/ada/Makefile.in
! 544f7e07ea836172b21e7c16d6f15026  gcc/ada/Makefile.rtl
  38343dc270740eef23a38cd3c750dde1  gcc/ada/accessibility.adb
  fbd3226b85f1e1cc6eb250fa51de4be1  gcc/ada/accessibility.ads
  80867b66cbed2dba054564ea216b3c66  gcc/ada/ada_get_targ.adb
*************** a07518144c5203a421dbc45a7b16e04f  gcc/ad
*** 607,613 ****
  30e7387695692ce78b78ca8165fa9561  gcc/ada/adabkend.ads
  3d1fcc88d6e5624970030c0a00ed8653  gcc/ada/adadecode.c
  066612d3b34078e2a26c00cff399ed82  gcc/ada/adadecode.h
! b0cd87f97b5a146eb21cb1ffdda62ce0  gcc/ada/adaint.c
  f6a5ac54108a44c0cdc3ee5c49d836ae  gcc/ada/adaint.h
  4ef2efbae418f280f680909768eeb59d  gcc/ada/affinity.c
  a22ae88618cb2fc05cb66a79ed80efb5  gcc/ada/ali-util.adb
--- 607,613 ----
  30e7387695692ce78b78ca8165fa9561  gcc/ada/adabkend.ads
  3d1fcc88d6e5624970030c0a00ed8653  gcc/ada/adadecode.c
  066612d3b34078e2a26c00cff399ed82  gcc/ada/adadecode.h
! cd726c4726ec7eae798956c5a3e1849d  gcc/ada/adaint.c
  f6a5ac54108a44c0cdc3ee5c49d836ae  gcc/ada/adaint.h
  4ef2efbae418f280f680909768eeb59d  gcc/ada/affinity.c
  a22ae88618cb2fc05cb66a79ed80efb5  gcc/ada/ali-util.adb
*************** e534e3e90407ece58cb74fbdc390f33d  gcc/ad
*** 659,665 ****
  ae344bff4834b9e2ef3c07f6dd01b59b  gcc/ada/butil.ads
  2acfb74c50c4563afcbe6a1bca3912a3  gcc/ada/casing.adb
  c576df64e1d6a2ac70b389cc10a835e6  gcc/ada/casing.ads
! c000fc1f1f59ba4c17663ed6299481a5  gcc/ada/checks.adb
  f963647952269416533799c6a5117ea3  gcc/ada/checks.ads
  4c0942bba88f786dffff9a3575759026  gcc/ada/cio.c
  10b93c3ec680bbe04e70ea0e2fb09ac7  gcc/ada/clean.adb
--- 659,665 ----
  ae344bff4834b9e2ef3c07f6dd01b59b  gcc/ada/butil.ads
  2acfb74c50c4563afcbe6a1bca3912a3  gcc/ada/casing.adb
  c576df64e1d6a2ac70b389cc10a835e6  gcc/ada/casing.ads
! 5c2b868b8cbbbc528fb2c95ed2bcbeac  gcc/ada/checks.adb
  f963647952269416533799c6a5117ea3  gcc/ada/checks.ads
  4c0942bba88f786dffff9a3575759026  gcc/ada/cio.c
  10b93c3ec680bbe04e70ea0e2fb09ac7  gcc/ada/clean.adb
*************** cd313e8a12cdfb20b99eede7c5252f16  gcc/ad
*** 695,701 ****
  454fb365cfb751d8e03b8e972d3abef1  gcc/ada/doc/gnat_rm/interfacing_to_other_languages.rst
  d3ffb5a905c9520d87b68e10029eb023  gcc/ada/doc/gnat_rm/intrinsic_subprograms.rst
  589bf80a1722468834f1e02674ad1e27  gcc/ada/doc/gnat_rm/obsolescent_features.rst
! 24b733fd801c2f3dd690a82519819be0  gcc/ada/doc/gnat_rm/representation_clauses_and_pragmas.rst
  1813c7ae4ff4245bfbeb8dcf9e475019  gcc/ada/doc/gnat_rm/security_hardening_features.rst
  4de72a3ff83ec3e42cb0d1eaffe486dd  gcc/ada/doc/gnat_rm/specialized_needs_annexes.rst
  31e0ba409ca563e1717444ab64e1e253  gcc/ada/doc/gnat_rm/standard_and_implementation_defined_restrictions.rst
--- 695,701 ----
  454fb365cfb751d8e03b8e972d3abef1  gcc/ada/doc/gnat_rm/interfacing_to_other_languages.rst
  d3ffb5a905c9520d87b68e10029eb023  gcc/ada/doc/gnat_rm/intrinsic_subprograms.rst
  589bf80a1722468834f1e02674ad1e27  gcc/ada/doc/gnat_rm/obsolescent_features.rst
! 72aca4143b04d0cd9a9d207bd7ebbbcd  gcc/ada/doc/gnat_rm/representation_clauses_and_pragmas.rst
  1813c7ae4ff4245bfbeb8dcf9e475019  gcc/ada/doc/gnat_rm/security_hardening_features.rst
  4de72a3ff83ec3e42cb0d1eaffe486dd  gcc/ada/doc/gnat_rm/specialized_needs_annexes.rst
  31e0ba409ca563e1717444ab64e1e253  gcc/ada/doc/gnat_rm/standard_and_implementation_defined_restrictions.rst
*************** de678cadfde8bce5aa2e2f73f408ad76  gcc/ad
*** 704,710 ****
  391d17bf855af400348685ff678c6a6a  gcc/ada/doc/gnat_rm/the_implementation_of_standard_i_o.rst
  ad0b18bc67f8911f5f0d9d2762f19f82  gcc/ada/doc/gnat_ugn.rst
  505b4be5ad4479a4bd295e927f9e2d14  gcc/ada/doc/gnat_ugn/about_this_guide.rst
! 3c1d4f598ded58fbde6261b60795f076  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
--- 704,710 ----
  391d17bf855af400348685ff678c6a6a  gcc/ada/doc/gnat_rm/the_implementation_of_standard_i_o.rst
  ad0b18bc67f8911f5f0d9d2762f19f82  gcc/ada/doc/gnat_ugn.rst
  505b4be5ad4479a4bd295e927f9e2d14  gcc/ada/doc/gnat_ugn/about_this_guide.rst
! 64448df718cb46e2d023da215272dadf  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
*************** c7da61a05156d50b4888cdfaae4241d0  gcc/ad
*** 721,730 ****
  0a025bfec2a94c0fcd11a19d18f6c0c5  gcc/ada/doc/share/gnu_free_documentation_license.rst
  f1c71b64e1c84e240c7b5aea7331a32a  gcc/ada/doc/share/latex_elements.py
  90adfcde2feb6d6c090c2b18a1578145  gcc/ada/doc/share/sphinx.sty
! 1624ebd692cbdf84a719739c08b2e6ac  gcc/ada/einfo-utils.adb
! 76b28b93a0162cb31366aec9f77d5717  gcc/ada/einfo-utils.ads
  4f882a8b5e78253d5838b1a83e4af5bb  gcc/ada/einfo.adb
! f0a4efd83a444d7a3af14c0603f68b7a  gcc/ada/einfo.ads
  9fb4fb23a55081d07dc554eeb3253f91  gcc/ada/elists.adb
  1d7f8772477453dee268f8697433a589  gcc/ada/elists.ads
  2d6cb36d45dda0bf32d01725709f0007  gcc/ada/elists.h
--- 721,730 ----
  0a025bfec2a94c0fcd11a19d18f6c0c5  gcc/ada/doc/share/gnu_free_documentation_license.rst
  f1c71b64e1c84e240c7b5aea7331a32a  gcc/ada/doc/share/latex_elements.py
  90adfcde2feb6d6c090c2b18a1578145  gcc/ada/doc/share/sphinx.sty
! 646a95921e95b98938b5909dc91d468d  gcc/ada/einfo-utils.adb
! b01e9b8e046b105f1fa8e49a64007de1  gcc/ada/einfo-utils.ads
  4f882a8b5e78253d5838b1a83e4af5bb  gcc/ada/einfo.adb
! 81ba855dac7241341df02333b71e3e8d  gcc/ada/einfo.ads
  9fb4fb23a55081d07dc554eeb3253f91  gcc/ada/elists.adb
  1d7f8772477453dee268f8697433a589  gcc/ada/elists.ads
  2d6cb36d45dda0bf32d01725709f0007  gcc/ada/elists.h
*************** e51a9a19184b2a73f27bb944998177e6  gcc/ad
*** 749,759 ****
  8745064abd42114e7f2f12824abd58f8  gcc/ada/eval_fat.adb
  04c8399e5b8f5b974be325af4fc5793b  gcc/ada/eval_fat.ads
  5062429d8789169d01db0423985a5e99  gcc/ada/exit.c
! e518341f11dcff658dde8178bfea2fb0  gcc/ada/exp_aggr.adb
  738bfb6669a1b696ef62dbecd858300a  gcc/ada/exp_aggr.ads
  f5cfbe3c80cc2c7ded2440a52b2b9cf0  gcc/ada/exp_atag.adb
  17872534d797a09463e33092ff3c4b9c  gcc/ada/exp_atag.ads
! edc5a63e8a9a6555d1caa4bfeb18fec4  gcc/ada/exp_attr.adb
  16622dd90fd58bfbfa68224d0bfaf8b2  gcc/ada/exp_attr.ads
  4cb08de59df5f8d0a124038dcbb392f0  gcc/ada/exp_cg.adb
  b18d9873e8e43583acd0e69ba6635023  gcc/ada/exp_cg.ads
--- 749,759 ----
  8745064abd42114e7f2f12824abd58f8  gcc/ada/eval_fat.adb
  04c8399e5b8f5b974be325af4fc5793b  gcc/ada/eval_fat.ads
  5062429d8789169d01db0423985a5e99  gcc/ada/exit.c
! 70316269e03434f024cf88bbf3925a73  gcc/ada/exp_aggr.adb
  738bfb6669a1b696ef62dbecd858300a  gcc/ada/exp_aggr.ads
  f5cfbe3c80cc2c7ded2440a52b2b9cf0  gcc/ada/exp_atag.adb
  17872534d797a09463e33092ff3c4b9c  gcc/ada/exp_atag.ads
! 193b1e89146931c0bb619f46f12aa052  gcc/ada/exp_attr.adb
  16622dd90fd58bfbfa68224d0bfaf8b2  gcc/ada/exp_attr.ads
  4cb08de59df5f8d0a124038dcbb392f0  gcc/ada/exp_cg.adb
  b18d9873e8e43583acd0e69ba6635023  gcc/ada/exp_cg.ads
*************** c6728830f0888dc3385e474b5925c01f  gcc/ad
*** 768,774 ****
  476e299ea88b583859604d0071046143  gcc/ada/exp_ch2.ads
  c431166cd8f490722ee285d60218a76c  gcc/ada/exp_ch3.adb
  d1b7c8ba53a4cc5868e87b17370562ce  gcc/ada/exp_ch3.ads
! 5d65254b3f6dee2189d2511e518126d0  gcc/ada/exp_ch4.adb
  ef982b9647c35560ae7ff386e547bd16  gcc/ada/exp_ch4.ads
  40dcdab9a967b88066b028e7b211dcc4  gcc/ada/exp_ch5.adb
  f0c7dc0ade3f9639e946e709a9288f31  gcc/ada/exp_ch5.ads
--- 768,774 ----
  476e299ea88b583859604d0071046143  gcc/ada/exp_ch2.ads
  c431166cd8f490722ee285d60218a76c  gcc/ada/exp_ch3.adb
  d1b7c8ba53a4cc5868e87b17370562ce  gcc/ada/exp_ch3.ads
! 384a8d9421431163adf30fcfc4b18bb5  gcc/ada/exp_ch4.adb
  ef982b9647c35560ae7ff386e547bd16  gcc/ada/exp_ch4.ads
  40dcdab9a967b88066b028e7b211dcc4  gcc/ada/exp_ch5.adb
  f0c7dc0ade3f9639e946e709a9288f31  gcc/ada/exp_ch5.ads
*************** e0c5e28f92b1d5fad283ec608aceb807  gcc/ad
*** 827,838 ****
  576d7463667fc4c859a05f9e19146427  gcc/ada/fname-uf.ads
  6aaa208cd2b84362faa2525028094cc9  gcc/ada/fname.adb
  5ef403dc7e6540ad58ec4ccec10de65c  gcc/ada/fname.ads
! 03c0209452b0328cb372c379dad3a2a0  gcc/ada/freeze.adb
  0cfb73b82bc6277eb801329c392229d2  gcc/ada/freeze.ads
  cbfee1a640e3bb7eccd29c03275d9a20  gcc/ada/frontend.adb
  6f776be1d84e9d8c996b576c19a4349f  gcc/ada/frontend.ads
  5febf852ffe2ba81709e97acc0e9d3be  gcc/ada/gcc-interface/Make-lang.in
! 6c0fd5d6b5aec35c7a1e05575f0c55f3  gcc/ada/gcc-interface/Makefile.in
  b02134e55a04db5c49a710da26b19be1  gcc/ada/gcc-interface/ada-builtin-types.def
  bc1175cb4ea0b9cb5f8751b3f0da7f74  gcc/ada/gcc-interface/ada-builtins.def
  9671d558ad879f15e73993538906ebda  gcc/ada/gcc-interface/ada-tree.def
--- 827,838 ----
  576d7463667fc4c859a05f9e19146427  gcc/ada/fname-uf.ads
  6aaa208cd2b84362faa2525028094cc9  gcc/ada/fname.adb
  5ef403dc7e6540ad58ec4ccec10de65c  gcc/ada/fname.ads
! 0027b74a0458df65ca8c181e3f36ba37  gcc/ada/freeze.adb
  0cfb73b82bc6277eb801329c392229d2  gcc/ada/freeze.ads
  cbfee1a640e3bb7eccd29c03275d9a20  gcc/ada/frontend.adb
  6f776be1d84e9d8c996b576c19a4349f  gcc/ada/frontend.ads
  5febf852ffe2ba81709e97acc0e9d3be  gcc/ada/gcc-interface/Make-lang.in
! 50b7766537673a121e34241790d08acd  gcc/ada/gcc-interface/Makefile.in
  b02134e55a04db5c49a710da26b19be1  gcc/ada/gcc-interface/ada-builtin-types.def
  bc1175cb4ea0b9cb5f8751b3f0da7f74  gcc/ada/gcc-interface/ada-builtins.def
  9671d558ad879f15e73993538906ebda  gcc/ada/gcc-interface/ada-tree.def
*************** c30d04e8e72b6ecb391a5f74ed43baa6  gcc/ad
*** 876,883 ****
  917ea7311a30ec4c5cec3e610ca640c2  gcc/ada/gnat2.gpr
  49c5329fd360e2bf4e549bc7de93aab7  gcc/ada/gnat_cuda.adb
  de69fc271ce889490809004600fcac0f  gcc/ada/gnat_cuda.ads
! 92600035e939bc79593474b309aea545  gcc/ada/gnat_rm.texi
! 9cc58f140e29ba7f6c1177499a6c4a88  gcc/ada/gnat_ugn.texi
  957e02fdb4684d592d9172cea8dfb4cb  gcc/ada/gnatbind.adb
  fff8dfca966e9d6f779ce90e57344a0f  gcc/ada/gnatbind.ads
  8c8e17b92af1ebdb9de73c064a87b2ea  gcc/ada/gnatchop.adb
--- 876,883 ----
  917ea7311a30ec4c5cec3e610ca640c2  gcc/ada/gnat2.gpr
  49c5329fd360e2bf4e549bc7de93aab7  gcc/ada/gnat_cuda.adb
  de69fc271ce889490809004600fcac0f  gcc/ada/gnat_cuda.ads
! 16753c84b630a4b50ce36824edb41abd  gcc/ada/gnat_rm.texi
! 96ac717551e676e84de7ac095c7f546e  gcc/ada/gnat_ugn.texi
  957e02fdb4684d592d9172cea8dfb4cb  gcc/ada/gnatbind.adb
  fff8dfca966e9d6f779ce90e57344a0f  gcc/ada/gnatbind.ads
  8c8e17b92af1ebdb9de73c064a87b2ea  gcc/ada/gnatchop.adb
*************** e8bfda3d740dfbd8ccf4fc493d8457e1  gcc/ad
*** 2289,2294 ****
--- 2289,2295 ----
  3f36fe3a633aa0e35aa41061c2c53b70  gcc/ada/libgnat/s-optide.adb
  f101ff956cd444806428ff292e098eda  gcc/ada/libgnat/s-os_lib.adb
  c49d74e1d9a73e641efba363334321b2  gcc/ada/libgnat/s-os_lib.ads
+ 03bc482ee69c65fe92b39f1ce7930d6a  gcc/ada/libgnat/s-oslock__darwin.ads
  ee69d5c31f1534ccc0aa80ab59587249  gcc/ada/libgnat/s-oslock__dummy.ads
  0b6cb9ac13ab2e70186fe46147ac6343  gcc/ada/libgnat/s-oslock__mingw.ads
  de8b2eecb4d04b82ea732adf1d76550f  gcc/ada/libgnat/s-oslock__posix.ads
*************** cbf1143b39dba16ccff2bad507662b80  gcc/ad
*** 2890,2898 ****
  3bf01e026b494a442389a5d3541785b8  gcc/ada/seh_init.c
  a424011f3e6f5e5a1163e2a9e1324779  gcc/ada/sem.adb
  b1230ac9f3cae75bd98a0fc5e0fabdcf  gcc/ada/sem.ads
! 486e7e3521da672c20bea967001436f9  gcc/ada/sem_aggr.adb
  d9e9e67a1e6554ab3bc7e11269dd3763  gcc/ada/sem_aggr.ads
! 7c6fefc1754b4b22835c587bcc8d2a75  gcc/ada/sem_attr.adb
  2a239613f39312b54ea82d1e690a3ea2  gcc/ada/sem_attr.ads
  9933f6b1c6d6ebb417929ba3ed154bff  gcc/ada/sem_aux.adb
  e15b069fa2ff472febda85c8b9cacb81  gcc/ada/sem_aux.ads
--- 2891,2899 ----
  3bf01e026b494a442389a5d3541785b8  gcc/ada/seh_init.c
  a424011f3e6f5e5a1163e2a9e1324779  gcc/ada/sem.adb
  b1230ac9f3cae75bd98a0fc5e0fabdcf  gcc/ada/sem.ads
! c27fe1bc54a9ebed16421b64914008f5  gcc/ada/sem_aggr.adb
  d9e9e67a1e6554ab3bc7e11269dd3763  gcc/ada/sem_aggr.ads
! 8240de38646ce59bb4164ffd8b17f767  gcc/ada/sem_attr.adb
  2a239613f39312b54ea82d1e690a3ea2  gcc/ada/sem_attr.ads
  9933f6b1c6d6ebb417929ba3ed154bff  gcc/ada/sem_aux.adb
  e15b069fa2ff472febda85c8b9cacb81  gcc/ada/sem_aux.ads
*************** e364f4e3ae92066699cc93a8f7b828c1  gcc/ad
*** 2904,2918 ****
  6e34ce648cfc10b24c12b68e0e59dcb8  gcc/ada/sem_ch10.ads
  5980a02146588bf0e31ced2382290670  gcc/ada/sem_ch11.adb
  1b6f89866a5d427002df059be3847d62  gcc/ada/sem_ch11.ads
! 8e535b4668a8a68d2ed7cdaebe2341fc  gcc/ada/sem_ch12.adb
  f981520c42b732545be8bb5c8813ccfd  gcc/ada/sem_ch12.ads
! 53f8d4cbe82a9077db930c14fa311f19  gcc/ada/sem_ch13.adb
  42a7b1073e168e8be85f2203fbddd148  gcc/ada/sem_ch13.ads
! 14326c522718c8cb8415b13a79c07972  gcc/ada/sem_ch2.adb
  2471d629be4739ff5135aa87a2ec9166  gcc/ada/sem_ch2.ads
! cd2e49c12d63eac2a3955da026e27ad6  gcc/ada/sem_ch3.adb
  76abe89b089728c6eaca6f7593348732  gcc/ada/sem_ch3.ads
! 158db89e024335f611b8d1ad88b5218d  gcc/ada/sem_ch4.adb
  adba03aae1f439b9e9db8cea05d8e03f  gcc/ada/sem_ch4.ads
  67f40a13b7faf3883c09b190670b8ce2  gcc/ada/sem_ch5.adb
  ec8d5a42c27c46e4969c16d6e18ed276  gcc/ada/sem_ch5.ads
--- 2905,2919 ----
  6e34ce648cfc10b24c12b68e0e59dcb8  gcc/ada/sem_ch10.ads
  5980a02146588bf0e31ced2382290670  gcc/ada/sem_ch11.adb
  1b6f89866a5d427002df059be3847d62  gcc/ada/sem_ch11.ads
! 8e7d895f32fc962f6e8fecfd4aff6054  gcc/ada/sem_ch12.adb
  f981520c42b732545be8bb5c8813ccfd  gcc/ada/sem_ch12.ads
! ab726649c68610977b83977d89dcbd52  gcc/ada/sem_ch13.adb
  42a7b1073e168e8be85f2203fbddd148  gcc/ada/sem_ch13.ads
! 315fd6d2d78d4e9e5bb5ad516e031dbb  gcc/ada/sem_ch2.adb
  2471d629be4739ff5135aa87a2ec9166  gcc/ada/sem_ch2.ads
! e096bc417315d565cb772d1957d16c3f  gcc/ada/sem_ch3.adb
  76abe89b089728c6eaca6f7593348732  gcc/ada/sem_ch3.ads
! 2c8c790ef68f9ec9944eff6c3724f6b6  gcc/ada/sem_ch4.adb
  adba03aae1f439b9e9db8cea05d8e03f  gcc/ada/sem_ch4.ads
  67f40a13b7faf3883c09b190670b8ce2  gcc/ada/sem_ch5.adb
  ec8d5a42c27c46e4969c16d6e18ed276  gcc/ada/sem_ch5.ads
*************** a38c4ce4bc2936bd0a73c28ff1b0df61  gcc/ad
*** 2934,2956 ****
  c074ec7450863300eff2a21c036a624b  gcc/ada/sem_elab.ads
  1623b94463e7ca1496ecde7010db85fc  gcc/ada/sem_elim.adb
  c837e01542a712c622bac1cd152fc080  gcc/ada/sem_elim.ads
! 15415a75e3b2753db5c5e1b9dbe75e97  gcc/ada/sem_eval.adb
  6ad36871bb495808ea611c6c620fc482  gcc/ada/sem_eval.ads
! e8e79e2a818321d7816e27eed8d17404  gcc/ada/sem_intr.adb
  66ccba8e3b77fa8d6e0e13f6368d804a  gcc/ada/sem_intr.ads
  4a954a685009a9b0bcf72a8517dc3bdf  gcc/ada/sem_mech.adb
  bcb22deebc83b966e7be367087d9fd7b  gcc/ada/sem_mech.ads
! 5c18f85f9f139cb9bace5ad72336eb54  gcc/ada/sem_prag.adb
  d16256f1e0a8b84763e3ccc0653e1c4b  gcc/ada/sem_prag.ads
! 71b5231a19ba6bcdd78ec3572fa281b5  gcc/ada/sem_res.adb
  bb01f11ceaa352a8b99f95fcbcfe97d9  gcc/ada/sem_res.ads
  28d33ede4288814374d1909847798c7d  gcc/ada/sem_scil.adb
  db6f5a37bd59fd83ff3286e71ab985fe  gcc/ada/sem_scil.ads
  224e89cdc39291b2a52f3e96e76cc3aa  gcc/ada/sem_smem.adb
  89d73c108bd8921f6d6cd84d98726ea5  gcc/ada/sem_smem.ads
! 8569e75d19fdffff7bb4f1f212d08deb  gcc/ada/sem_type.adb
  dee50852181adfada17fb5b7423ed973  gcc/ada/sem_type.ads
! e2a0d244b4fce05b618b547a42902707  gcc/ada/sem_util.adb
  8d404f6d751c7b017cb0e50f75e551a6  gcc/ada/sem_util.ads
  5f3a0abaff75ad0b25d8db71d07ee534  gcc/ada/sem_warn.adb
  441e0f80657ef72324e40dd20cebfc82  gcc/ada/sem_warn.ads
--- 2935,2957 ----
  c074ec7450863300eff2a21c036a624b  gcc/ada/sem_elab.ads
  1623b94463e7ca1496ecde7010db85fc  gcc/ada/sem_elim.adb
  c837e01542a712c622bac1cd152fc080  gcc/ada/sem_elim.ads
! 2518b4a4f0e337847c5a9bca29cb29f5  gcc/ada/sem_eval.adb
  6ad36871bb495808ea611c6c620fc482  gcc/ada/sem_eval.ads
! 62311ae5d0fd5a3ce00c063c3dfc02db  gcc/ada/sem_intr.adb
  66ccba8e3b77fa8d6e0e13f6368d804a  gcc/ada/sem_intr.ads
  4a954a685009a9b0bcf72a8517dc3bdf  gcc/ada/sem_mech.adb
  bcb22deebc83b966e7be367087d9fd7b  gcc/ada/sem_mech.ads
! 7304f7852d0fba020920ad3bfad73bbb  gcc/ada/sem_prag.adb
  d16256f1e0a8b84763e3ccc0653e1c4b  gcc/ada/sem_prag.ads
! cb62fc472d6eb9cc1b1e2080ee88c8cf  gcc/ada/sem_res.adb
  bb01f11ceaa352a8b99f95fcbcfe97d9  gcc/ada/sem_res.ads
  28d33ede4288814374d1909847798c7d  gcc/ada/sem_scil.adb
  db6f5a37bd59fd83ff3286e71ab985fe  gcc/ada/sem_scil.ads
  224e89cdc39291b2a52f3e96e76cc3aa  gcc/ada/sem_smem.adb
  89d73c108bd8921f6d6cd84d98726ea5  gcc/ada/sem_smem.ads
! be0381c5bd8e36554a2fed98b2d8f36c  gcc/ada/sem_type.adb
  dee50852181adfada17fb5b7423ed973  gcc/ada/sem_type.ads
! 05ecbe87a3c6c68100bb7b2722c11c91  gcc/ada/sem_util.adb
  8d404f6d751c7b017cb0e50f75e551a6  gcc/ada/sem_util.ads
  5f3a0abaff75ad0b25d8db71d07ee534  gcc/ada/sem_warn.adb
  441e0f80657ef72324e40dd20cebfc82  gcc/ada/sem_warn.ads
*************** ceaa52edf6355622601cd30f7c096b06  gcc/ad
*** 2995,3001 ****
  9b1436b62e189c7719fe06539a961935  gcc/ada/stringt.h
  627ba2b2c1dc5a33ccd14d5a62dad5bc  gcc/ada/strub.adb
  426fe1648aa969a711bc91b140c31950  gcc/ada/strub.ads
! 8b54969ef9e1867def686f297cb74c54  gcc/ada/style.adb
  47034d64868bf09604f7cf41bfa8f20b  gcc/ada/style.ads
  68cb599e2bce9af2fffbe9686938edc4  gcc/ada/styleg.adb
  93df3efe29025f787333e334faf17c55  gcc/ada/styleg.ads
--- 2996,3002 ----
  9b1436b62e189c7719fe06539a961935  gcc/ada/stringt.h
  627ba2b2c1dc5a33ccd14d5a62dad5bc  gcc/ada/strub.adb
  426fe1648aa969a711bc91b140c31950  gcc/ada/strub.ads
! 835299f8a72886cbb973c6f8aa91a3a7  gcc/ada/style.adb
  47034d64868bf09604f7cf41bfa8f20b  gcc/ada/style.ads
  68cb599e2bce9af2fffbe9686938edc4  gcc/ada/styleg.adb
  93df3efe29025f787333e334faf17c55  gcc/ada/styleg.ads
*************** cc77d76c407f099273c5d6691a91f67a  gcc/ad
*** 3056,3072 ****
  a8f3f69de7abdd693a971d4655971bf7  gcc/ada/xutil.ads
  60f1f34895b64cc9a3b2d590e6cf576f  gcc/addresses.h
  df3f6c6882fc8f715d4cc537af0f6442  gcc/adjust-alignment.cc
! 6a652c4c4f72e6ffa2a13cc6cd28a244  gcc/algol68/Make-lang.in
  7479907efeefafc7c6d3bc2aaa5c6a83  gcc/algol68/README
  fb43be530798e23528ffc144413b80a9  gcc/algol68/a68-diagnostics.cc
! 42b52f861266f5201771f32a269a4ef8  gcc/algol68/a68-exports.cc
! efe95922af368525d3a2c4ef6c8aa891  gcc/algol68/a68-imports.cc
! 9ab7efb25abe9c5428107f1312f3fdc4  gcc/algol68/a68-lang.cc
  c7f3e4b6ca328ed109839fb6af254e6b  gcc/algol68/a68-low-bits.cc
  284cf6c8827f78791575949cc1f634ef  gcc/algol68/a68-low-bools.cc
  421c70a781dc2c00722aa019bc39f683  gcc/algol68/a68-low-builtins.cc
  ade291f272227055db98bddb78ff715f  gcc/algol68/a68-low-chars.cc
! f8fbcb5625128c4e70b2254495019a83  gcc/algol68/a68-low-clauses.cc
  e475601178306ca722c941848f7b25d7  gcc/algol68/a68-low-coercions.cc
  5aa76e1c20ed5b89f9d01211f6bb6cc6  gcc/algol68/a68-low-complex.cc
  f7c4063a70cd0a3f31880770cd974ec2  gcc/algol68/a68-low-decls.cc
--- 3057,3074 ----
  a8f3f69de7abdd693a971d4655971bf7  gcc/ada/xutil.ads
  60f1f34895b64cc9a3b2d590e6cf576f  gcc/addresses.h
  df3f6c6882fc8f715d4cc537af0f6442  gcc/adjust-alignment.cc
! e4e9af1bba62ce1f208f80f158f73679  gcc/algol68/ChangeLog
! 2a93a1799a2add5d7ad920f0001f7aa5  gcc/algol68/Make-lang.in
  7479907efeefafc7c6d3bc2aaa5c6a83  gcc/algol68/README
  fb43be530798e23528ffc144413b80a9  gcc/algol68/a68-diagnostics.cc
! 95aea877c594908679a2057305b999c8  gcc/algol68/a68-exports.cc
! 48edb9e9154504f31035964193e1d0bb  gcc/algol68/a68-imports.cc
! 6691c0e619bbdb98556bd44b6eb8bd41  gcc/algol68/a68-lang.cc
  c7f3e4b6ca328ed109839fb6af254e6b  gcc/algol68/a68-low-bits.cc
  284cf6c8827f78791575949cc1f634ef  gcc/algol68/a68-low-bools.cc
  421c70a781dc2c00722aa019bc39f683  gcc/algol68/a68-low-builtins.cc
  ade291f272227055db98bddb78ff715f  gcc/algol68/a68-low-chars.cc
! 627c624b3c087448b1669f1805501cff  gcc/algol68/a68-low-clauses.cc
  e475601178306ca722c941848f7b25d7  gcc/algol68/a68-low-coercions.cc
  5aa76e1c20ed5b89f9d01211f6bb6cc6  gcc/algol68/a68-low-complex.cc
  f7c4063a70cd0a3f31880770cd974ec2  gcc/algol68/a68-low-decls.cc
*************** ef61d04fdb839242c97e53b105268e52  gcc/al
*** 3074,3080 ****
  f2482e4ac91f0405b19f2792f14ff03f  gcc/algol68/a68-low-ints.cc
  949d0f0a5f79da34ba44f79c6ebfe282  gcc/algol68/a68-low-misc.cc
  c81c9137e6f6284c6a1ba0be68609895  gcc/algol68/a68-low-moids.cc
! 6318cb4a338706e53480b96e8cd7dff1  gcc/algol68/a68-low-multiples.cc
  1a382214dc720355d1f18b5402c6aa93  gcc/algol68/a68-low-posix.cc
  517f37fafd5f012cb4aad67999cbb5a1  gcc/algol68/a68-low-prelude.cc
  b761d3ea5bc6d29640619297fd8a70b6  gcc/algol68/a68-low-procs.cc
--- 3076,3082 ----
  f2482e4ac91f0405b19f2792f14ff03f  gcc/algol68/a68-low-ints.cc
  949d0f0a5f79da34ba44f79c6ebfe282  gcc/algol68/a68-low-misc.cc
  c81c9137e6f6284c6a1ba0be68609895  gcc/algol68/a68-low-moids.cc
! 7cff8c4f9adad0de3b4db98dc5e2039f  gcc/algol68/a68-low-multiples.cc
  1a382214dc720355d1f18b5402c6aa93  gcc/algol68/a68-low-posix.cc
  517f37fafd5f012cb4aad67999cbb5a1  gcc/algol68/a68-low-prelude.cc
  b761d3ea5bc6d29640619297fd8a70b6  gcc/algol68/a68-low-procs.cc
*************** aebb4c3b9e607164c25541593333b832  gcc/al
*** 3087,3093 ****
  de4cb485173b396d55860a98e328be5b  gcc/algol68/a68-low-structs.cc
  7675b3dfcea25bedcbe52f98cecdf7e2  gcc/algol68/a68-low-unions.cc
  12c8ab6b2a388a0e2ceac19f2d27d6cf  gcc/algol68/a68-low-units.cc
! 3a2e0439e5ac5621bef0bf983cbbca17  gcc/algol68/a68-low.cc
  406bb4b4a8736ed19545acebc61effbd  gcc/algol68/a68-moids-diagnostics.cc
  86ee3e220ec49b15faa51baf250cf66f  gcc/algol68/a68-moids-misc.cc
  93ab5a30cda3f697bee77eba313c66d6  gcc/algol68/a68-moids-to-string.cc
--- 3089,3095 ----
  de4cb485173b396d55860a98e328be5b  gcc/algol68/a68-low-structs.cc
  7675b3dfcea25bedcbe52f98cecdf7e2  gcc/algol68/a68-low-unions.cc
  12c8ab6b2a388a0e2ceac19f2d27d6cf  gcc/algol68/a68-low-units.cc
! bf2e9b5dd21e1dfe9dc046812e7dd756  gcc/algol68/a68-low.cc
  406bb4b4a8736ed19545acebc61effbd  gcc/algol68/a68-moids-diagnostics.cc
  86ee3e220ec49b15faa51baf250cf66f  gcc/algol68/a68-moids-misc.cc
  93ab5a30cda3f697bee77eba313c66d6  gcc/algol68/a68-moids-to-string.cc
*************** ccbd763a1dbbdcb84e98c45193835c87  gcc/al
*** 3097,3110 ****
  06167f432b9437d0cc135868d1067782  gcc/algol68/a68-parser-debug.cc
  abd60542bcc197bcaf32511a37de7e62  gcc/algol68/a68-parser-extract.cc
  5aa1c44cc0b96934ca5906eb2e0e500e  gcc/algol68/a68-parser-keywords.cc
! 058d809782c06e7d0b3626c5383a1a79  gcc/algol68/a68-parser-modes.cc
  451910827918a165063a77e10deebc2a  gcc/algol68/a68-parser-moids-check.cc
  eb200628692c30c1ade0eaeabcddf008  gcc/algol68/a68-parser-moids-coerce.cc
  21df1102d7944e20f83a720318e21de8  gcc/algol68/a68-parser-moids-equivalence.cc
  5ff1fcb1ff4985b94774b904b71582b7  gcc/algol68/a68-parser-pragmat.cc
  05804e13f2603c536bbb12fb8a5a14ff  gcc/algol68/a68-parser-prelude.cc
  58628b673fb2417fa64a9bcfc4420a70  gcc/algol68/a68-parser-scanner.cc
! 00f9ae11b0aefb831939d90a95e0b87f  gcc/algol68/a68-parser-scope.cc
  d259fcdbab02c9c536b330f7111ae7cf  gcc/algol68/a68-parser-serial-dsa.cc
  82335b969057c5977552639844d93cf0  gcc/algol68/a68-parser-taxes.cc
  e746d9f904915c344c976abcd29bef7e  gcc/algol68/a68-parser-top-down.cc
--- 3099,3112 ----
  06167f432b9437d0cc135868d1067782  gcc/algol68/a68-parser-debug.cc
  abd60542bcc197bcaf32511a37de7e62  gcc/algol68/a68-parser-extract.cc
  5aa1c44cc0b96934ca5906eb2e0e500e  gcc/algol68/a68-parser-keywords.cc
! cef52688a96e5c6b6309f823287d7460  gcc/algol68/a68-parser-modes.cc
  451910827918a165063a77e10deebc2a  gcc/algol68/a68-parser-moids-check.cc
  eb200628692c30c1ade0eaeabcddf008  gcc/algol68/a68-parser-moids-coerce.cc
  21df1102d7944e20f83a720318e21de8  gcc/algol68/a68-parser-moids-equivalence.cc
  5ff1fcb1ff4985b94774b904b71582b7  gcc/algol68/a68-parser-pragmat.cc
  05804e13f2603c536bbb12fb8a5a14ff  gcc/algol68/a68-parser-prelude.cc
  58628b673fb2417fa64a9bcfc4420a70  gcc/algol68/a68-parser-scanner.cc
! 642248594944766b6cf1d2ee348ae403  gcc/algol68/a68-parser-scope.cc
  d259fcdbab02c9c536b330f7111ae7cf  gcc/algol68/a68-parser-serial-dsa.cc
  82335b969057c5977552639844d93cf0  gcc/algol68/a68-parser-taxes.cc
  e746d9f904915c344c976abcd29bef7e  gcc/algol68/a68-parser-top-down.cc
*************** e746d9f904915c344c976abcd29bef7e  gcc/al
*** 3112,3118 ****
  8d6bba06c2b65de7a7ccd2b3e3c7544d  gcc/algol68/a68-parser.cc
  bb6a9492686645cd8ede63a3aa41bb2e  gcc/algol68/a68-postulates.cc
  614ee2f3c97cf1910484b4ba1b697352  gcc/algol68/a68-tree.def
! e9b8432bc2ba36c7df0070f097cb8d2a  gcc/algol68/a68-types.h
  cddb33683b15b95275fe506ebd8903ca  gcc/algol68/a68-unistr.c
  7702da44798b0fe0b876ef5c809f6b59  gcc/algol68/a68.h
  cbc2ddca0589edc81c7df109b1a1927b  gcc/algol68/a68spec.cc
--- 3114,3120 ----
  8d6bba06c2b65de7a7ccd2b3e3c7544d  gcc/algol68/a68-parser.cc
  bb6a9492686645cd8ede63a3aa41bb2e  gcc/algol68/a68-postulates.cc
  614ee2f3c97cf1910484b4ba1b697352  gcc/algol68/a68-tree.def
! 64a4d7c961501b931b15a7093ed28291  gcc/algol68/a68-types.h
  cddb33683b15b95275fe506ebd8903ca  gcc/algol68/a68-unistr.c
  7702da44798b0fe0b876ef5c809f6b59  gcc/algol68/a68.h
  cbc2ddca0589edc81c7df109b1a1927b  gcc/algol68/a68spec.cc
*************** e8fdf8aae887a06668b928191ec6da7a  gcc/an
*** 3181,3187 ****
  7ee54f0568377ab1b37ccdc7bb949387  gcc/analyzer/inlining-iterator.h
  9289c540d66da127e56aa983ca018af6  gcc/analyzer/kf-analyzer.cc
  f939ceabcab4e031bd8a0960eaa768dc  gcc/analyzer/kf-lang-cp.cc
! a6af351d1d085be0a26f7f6a32e196ff  gcc/analyzer/kf.cc
  b1767c404b2a466ceeb581380c8a81fe  gcc/analyzer/known-function-manager.cc
  03a32d089b911aa5389a2b9006795f83  gcc/analyzer/known-function-manager.h
  8e66d6b2b230cab65bd41073d71a2e77  gcc/analyzer/pending-diagnostic.cc
--- 3183,3189 ----
  7ee54f0568377ab1b37ccdc7bb949387  gcc/analyzer/inlining-iterator.h
  9289c540d66da127e56aa983ca018af6  gcc/analyzer/kf-analyzer.cc
  f939ceabcab4e031bd8a0960eaa768dc  gcc/analyzer/kf-lang-cp.cc
! 6ff38999d2e80d0b4777aa487dbf4649  gcc/analyzer/kf.cc
  b1767c404b2a466ceeb581380c8a81fe  gcc/analyzer/known-function-manager.cc
  03a32d089b911aa5389a2b9006795f83  gcc/analyzer/known-function-manager.h
  8e66d6b2b230cab65bd41073d71a2e77  gcc/analyzer/pending-diagnostic.cc
*************** a350e0e702ef2468ff3c700dff5b7433  gcc/at
*** 3237,3243 ****
  0ec27d414707ba546fed401eaaf2af22  gcc/attr-callback.h
  8eabb720cd45c245a7d1be51c0f744ca  gcc/attr-fnspec.h
  3d7a71537ed817b2c8f0c30cd04c9201  gcc/attr-urls.def
! 9a7178a90befb7c228527722f0652bc8  gcc/attribs.cc
  74de0da9c4c12c7fd923885069f35eb2  gcc/attribs.h
  54fb3cb1cab63227c50a50819ea1a3c3  gcc/auto-inc-dec.cc
  c25bbcb70f43e3c72a329043adf2c6c2  gcc/auto-obstack.h
--- 3239,3245 ----
  0ec27d414707ba546fed401eaaf2af22  gcc/attr-callback.h
  8eabb720cd45c245a7d1be51c0f744ca  gcc/attr-fnspec.h
  3d7a71537ed817b2c8f0c30cd04c9201  gcc/attr-urls.def
! 7a65877dd641ec8b7fff18dfc7951178  gcc/attribs.cc
  74de0da9c4c12c7fd923885069f35eb2  gcc/attribs.h
  54fb3cb1cab63227c50a50819ea1a3c3  gcc/auto-inc-dec.cc
  c25bbcb70f43e3c72a329043adf2c6c2  gcc/auto-obstack.h
*************** c25bbcb70f43e3c72a329043adf2c6c2  gcc/au
*** 3247,3253 ****
  b187aaef50f37afeeee1f8239d5aa033  gcc/avoid-store-forwarding.h
  db748cbed8c442a442779d8d857a3ae4  gcc/backend.h
  dc5d5c32319eb04bed4f17e183ddeeab  gcc/basic-block.h
! 15eb6a7ac97de636a72d29b459bdfac5  gcc/bb-reorder.cc
  3e49b0021eba39cbab2bc26d55fde08f  gcc/bb-reorder.h
  919e197f7b89caf16d31f0882964adfa  gcc/bbitmap.h
  bb79e5d725623239adccc4b97ad421cb  gcc/bitmap.cc
--- 3249,3255 ----
  b187aaef50f37afeeee1f8239d5aa033  gcc/avoid-store-forwarding.h
  db748cbed8c442a442779d8d857a3ae4  gcc/backend.h
  dc5d5c32319eb04bed4f17e183ddeeab  gcc/basic-block.h
! 7826db397a303cce1eddb3c1cad9f4a5  gcc/bb-reorder.cc
  3e49b0021eba39cbab2bc26d55fde08f  gcc/bb-reorder.h
  919e197f7b89caf16d31f0882964adfa  gcc/bbitmap.h
  bb79e5d725623239adccc4b97ad421cb  gcc/bitmap.cc
*************** ab9fdb6ff2584fb7c564bdd3d5546c02  gcc/bt
*** 3258,3264 ****
  67b762b0b5e04e028c2e2436f9a6cfbe  gcc/builtins.cc
  52ff6fb92e162a8ad41a1af1dfb0171a  gcc/builtins.def
  08bacecaf5d3527bf3df15480fb78537  gcc/builtins.h
! 5d57d8770b6140ee3c175ff1e2d8cab9  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
--- 3260,3266 ----
  67b762b0b5e04e028c2e2436f9a6cfbe  gcc/builtins.cc
  52ff6fb92e162a8ad41a1af1dfb0171a  gcc/builtins.def
  08bacecaf5d3527bf3df15480fb78537  gcc/builtins.h
! 4a3788e0c84a9822bad675c69fdfdee1  gcc/c-family/ChangeLog
  ea3fa1f4d7390a105fa3caab4f79aaf7  gcc/c-family/ChangeLog.gimple-classes
  9c7ff39ab2ffc5f0938f59efc3657201  gcc/c-family/c-ada-spec.cc
  4e83011bee68d9607834ed5335191d65  gcc/c-family/c-ada-spec.h
*************** c8d86c12bc259d3a335f338ce3a10304  gcc/c-
*** 3275,3286 ****
  a4b7179d2e948bb7586a9143fbe05593  gcc/c-family/c-indentation.h
  c80c4d6e16ab46358143d22a8a146725  gcc/c-family/c-lex.cc
  c880dc584a0fd4908e5df33dd81137b8  gcc/c-family/c-objc.h
! e6e761e6863a733dd3a2cad695281cd7  gcc/c-family/c-omp.cc
  d6f330016fc2e053464709bdc03c1101  gcc/c-family/c-opts.cc
  5be37a0daa62d32d800f4818f979e598  gcc/c-family/c-pch.cc
  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
--- 3277,3288 ----
  a4b7179d2e948bb7586a9143fbe05593  gcc/c-family/c-indentation.h
  c80c4d6e16ab46358143d22a8a146725  gcc/c-family/c-lex.cc
  c880dc584a0fd4908e5df33dd81137b8  gcc/c-family/c-objc.h
! 6293b413f6dfbe8ba4a6c8cec20ada2a  gcc/c-family/c-omp.cc
  d6f330016fc2e053464709bdc03c1101  gcc/c-family/c-opts.cc
  5be37a0daa62d32d800f4818f979e598  gcc/c-family/c-pch.cc
  6e53d008a0c4738339154c353a50ff0a  gcc/c-family/c-ppoutput.cc
  cfc760e3be8b3db6dfc8fef49282c0aa  gcc/c-family/c-pragma.cc
! 84cd366e90034d2af1be65ea66818a2d  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
*************** a530312b7a4fec7d277d219086eed57c  gcc/c-
*** 3301,3307 ****
  ac5daa4f7d7788a3f68dde7fe7a25316  gcc/c-family/known-headers.h
  f09c431056b5138e7cfe8376e05de9a6  gcc/c-family/name-hint.h
  d71f74b5b48d9ec5e4e6463e7330121d  gcc/c-family/stub-objc.cc
! d7576efc352a09d1ae2f619d88b92c1c  gcc/c/ChangeLog
  a1ab86dd79d40d45839823afe798673a  gcc/c/Make-lang.in
  f1e5593aebd5cffb4b3cbffe6bd0860a  gcc/c/c-aux-info.cc
  178d24653bb20936d73bad078e70763c  gcc/c/c-convert.cc
--- 3303,3309 ----
  ac5daa4f7d7788a3f68dde7fe7a25316  gcc/c-family/known-headers.h
  f09c431056b5138e7cfe8376e05de9a6  gcc/c-family/name-hint.h
  d71f74b5b48d9ec5e4e6463e7330121d  gcc/c-family/stub-objc.cc
! 879eddd55c6cf8b2355fce0309437f99  gcc/c/ChangeLog
  a1ab86dd79d40d45839823afe798673a  gcc/c/Make-lang.in
  f1e5593aebd5cffb4b3cbffe6bd0860a  gcc/c/c-aux-info.cc
  178d24653bb20936d73bad078e70763c  gcc/c/c-convert.cc
*************** d9c0725d061adffdf400457d91be3aed  gcc/c/
*** 3312,3328 ****
  66f4b0672865216b2d3040eee16759b5  gcc/c/c-lang.h
  c2644975781d9f78ae4c387d01a3270e  gcc/c/c-objc-common.cc
  757f583d06a3ec98336adbfc92b4e6a8  gcc/c/c-objc-common.h
! d3be97811cbd64b259a02944e930d870  gcc/c/c-parser.cc
  4cd2bf432e96f0de530e0ea4e8b44aa2  gcc/c/c-parser.h
  9179f46b6a06c7d734278f5ce2c55883  gcc/c/c-tree.def
  37ad86287839e5f9849ab677266e1909  gcc/c/c-tree.h
! 4bcd0e9abc293dbd86fdaa1bf867890e  gcc/c/c-typeck.cc
  cd371895d730dd64e947066b2e4378f8  gcc/c/config-lang.in
  1bd76a24d1322659f048abe2272a6f34  gcc/c/gccspec.cc
! 1ed203cdf15f14eb7bfe0eaabf41f503  gcc/c/gimple-parser.cc
  84e0373f5db72260d34cf125d8587f06  gcc/c/gimple-parser.h
  137bed6e3e62068dc6a3292ae42a0a4e  gcc/caller-save.cc
! 2b184651895163e884d870ab2434dd33  gcc/calls.cc
  5eea9a238f2c182f5964d1de966e6a34  gcc/calls.h
  c7957e627bab86a3bb7b1adfe7d144e9  gcc/ccmp.cc
  5d9ee312518a07716ecbfe4b5ec17091  gcc/ccmp.h
--- 3314,3330 ----
  66f4b0672865216b2d3040eee16759b5  gcc/c/c-lang.h
  c2644975781d9f78ae4c387d01a3270e  gcc/c/c-objc-common.cc
  757f583d06a3ec98336adbfc92b4e6a8  gcc/c/c-objc-common.h
! d171660519909e3b3f01de16e7b6251a  gcc/c/c-parser.cc
  4cd2bf432e96f0de530e0ea4e8b44aa2  gcc/c/c-parser.h
  9179f46b6a06c7d734278f5ce2c55883  gcc/c/c-tree.def
  37ad86287839e5f9849ab677266e1909  gcc/c/c-tree.h
! 2b41e516754ff744cdbfe50a30f534f1  gcc/c/c-typeck.cc
  cd371895d730dd64e947066b2e4378f8  gcc/c/config-lang.in
  1bd76a24d1322659f048abe2272a6f34  gcc/c/gccspec.cc
! a1cb75cf27d4ffb2f87f4f7dbf93ea45  gcc/c/gimple-parser.cc
  84e0373f5db72260d34cf125d8587f06  gcc/c/gimple-parser.h
  137bed6e3e62068dc6a3292ae42a0a4e  gcc/caller-save.cc
! 11d34bcacb1039b02654b25c000d62f5  gcc/calls.cc
  5eea9a238f2c182f5964d1de966e6a34  gcc/calls.h
  c7957e627bab86a3bb7b1adfe7d144e9  gcc/ccmp.cc
  5d9ee312518a07716ecbfe4b5ec17091  gcc/ccmp.h
*************** bb9ec881bec012134cb6e7900b5a37bb  gcc/cg
*** 3352,3379 ****
  f260ce27ba36b1e6d964fe6ba1552cb6  gcc/cgraphclones.cc
  4e2f7703a23f2c2483098ddb6edac479  gcc/cgraphunit.cc
  bd38ef84be4e8351bde3ee96f062c357  gcc/cif-code.def
! b26ad798bd4cac8832aec4f9cc70f9d6  gcc/cobol/ChangeLog
! 5dfddca4a6eb03f4baa2eab2cd61876d  gcc/cobol/Make-lang.in
  0a84e784d2bc4066654d2377fc6a2930  gcc/cobol/TODO
! b5d944951cc226cf4f33fdd1494aa7e7  gcc/cobol/cbldiag.h
  030342886cc720f11f17d7691f6f24ae  gcc/cobol/cdf-copy.cc
! c9a519283d6e4bd0de7dbefc1812972b  gcc/cobol/cdf.y
  b916ef498fa1cc9821e56ab612f00f3a  gcc/cobol/cdfval.h
  fb65c7259141f1223fa29175a2e441ed  gcc/cobol/cobol-system.h
! cf18ccae4998b9a3dde6cb12300516d6  gcc/cobol/cobol1.cc
  5985e1898b04e553a91bdc474c56311f  gcc/cobol/config-lang.in
  aab9bcdb44bef72e1c3a8cd069bfcccd  gcc/cobol/convert.cc
  bdd6fbf13776c7983a16ac857615424c  gcc/cobol/copybook.h
  3f5a0424b32cd09b107e8858af9cf15f  gcc/cobol/dts.h
! 0cc42085479c01abae9b69fd39db26a8  gcc/cobol/except.cc
! 8208f264c49dfd56f856e8a4229545b9  gcc/cobol/exceptg.h
  4e726128e0c090e4f3a71efddf5ffa8c  gcc/cobol/gcobc
! fa246be77803ddea6f093e99f50df33e  gcc/cobol/gcobol.1
  527925049a81a36c06220d368570f55a  gcc/cobol/gcobol.3
  d7c8a533dca0074af1f74be3f2ef9dce  gcc/cobol/gcobolspec.cc
! 833a47331c5b9312382615afd5a0502d  gcc/cobol/genapi.cc
  d77aff76631397333b43e387383acce2  gcc/cobol/genapi.h
! a11b45ded2381dbcad1f1d4ea77d346d  gcc/cobol/gengen.cc
  eeb2d20d7d0d4521acb2468dee246887  gcc/cobol/gengen.h
  2d93a2650a93b8fc3da87f5ba15d0780  gcc/cobol/genmath.cc
  d44e8c86d57fb704b6c1fbab3464fb9a  gcc/cobol/genmath.h
--- 3354,3381 ----
  f260ce27ba36b1e6d964fe6ba1552cb6  gcc/cgraphclones.cc
  4e2f7703a23f2c2483098ddb6edac479  gcc/cgraphunit.cc
  bd38ef84be4e8351bde3ee96f062c357  gcc/cif-code.def
! c1423036b65d5b923b824b0cf614c3ce  gcc/cobol/ChangeLog
! ee705da1a8f69fdc22716ef43112bfcc  gcc/cobol/Make-lang.in
  0a84e784d2bc4066654d2377fc6a2930  gcc/cobol/TODO
! d2b0dd7d8414ce5776a1038d19ac8153  gcc/cobol/cbldiag.h
  030342886cc720f11f17d7691f6f24ae  gcc/cobol/cdf-copy.cc
! 7b441a0ea8a6967bb4e5f0431e492df6  gcc/cobol/cdf.y
  b916ef498fa1cc9821e56ab612f00f3a  gcc/cobol/cdfval.h
  fb65c7259141f1223fa29175a2e441ed  gcc/cobol/cobol-system.h
! eb8b5cd04a53f0730ae57a97e08f1eb1  gcc/cobol/cobol1.cc
  5985e1898b04e553a91bdc474c56311f  gcc/cobol/config-lang.in
  aab9bcdb44bef72e1c3a8cd069bfcccd  gcc/cobol/convert.cc
  bdd6fbf13776c7983a16ac857615424c  gcc/cobol/copybook.h
  3f5a0424b32cd09b107e8858af9cf15f  gcc/cobol/dts.h
! 7964cb9d308b0a857a3dac0a7fac1320  gcc/cobol/except.cc
! dfdc874741e086c131fcd03117c339cf  gcc/cobol/exceptg.h
  4e726128e0c090e4f3a71efddf5ffa8c  gcc/cobol/gcobc
! 5245a60caec2a280da4cfb250ec8d966  gcc/cobol/gcobol.1
  527925049a81a36c06220d368570f55a  gcc/cobol/gcobol.3
  d7c8a533dca0074af1f74be3f2ef9dce  gcc/cobol/gcobolspec.cc
! 28dbdde18c0c42e943ea3d7c65e1d78f  gcc/cobol/genapi.cc
  d77aff76631397333b43e387383acce2  gcc/cobol/genapi.h
! 3286fac63d9197d8ec07ca505dbae672  gcc/cobol/gengen.cc
  eeb2d20d7d0d4521acb2468dee246887  gcc/cobol/gengen.h
  2d93a2650a93b8fc3da87f5ba15d0780  gcc/cobol/genmath.cc
  d44e8c86d57fb704b6c1fbab3464fb9a  gcc/cobol/genmath.h
*************** fc78b78c0e88e56d8a5bc08ac67ee843  gcc/co
*** 3381,3407 ****
  37f3bc2a2f07d757ac3f9e33027c2e3b  gcc/cobol/genutil.h
  7b9c1ead6f9d3661133f7f732811719c  gcc/cobol/help.gen
  0fa33dbe050697f40b5e8df91896da9a  gcc/cobol/inspect.h
! 2c85ade938027e95c4c411b384f6ad11  gcc/cobol/lang-specs.h
! 4ab99742b15962360c2189eb9cdb087c  gcc/cobol/lang.opt
  27fcbbb7a8eb5ed2cb9e2afff4e05f7e  gcc/cobol/lang.opt.urls
! 8a72c7148e54fd7967bfaf74ceaeba30  gcc/cobol/lexio.cc
  5953c820cdc03feb815bfbf28c10730c  gcc/cobol/lexio.h
! f9b43457830c5833242c3c7f2cf4c57b  gcc/cobol/parse.y
! 65afee7ba4615b76663942ee5553fc61  gcc/cobol/parse_ante.h
  e141e23293fb343e7ccbaa2fe6bcef33  gcc/cobol/parse_util.h
! 42eb873f4f117045d46300019d2cc8f6  gcc/cobol/scan.l
! a12042e240a17e29296ee8240d1304ca  gcc/cobol/scan_ante.h
! 14bb03f129087e74fce03c0d52e31a5c  gcc/cobol/scan_post.h
! 2281970a3bcdaefbd54f7dc641aec071  gcc/cobol/show_parse.h
  c53ffb5b1f39680588d8ace8a3a44953  gcc/cobol/structs.cc
  6a12fdf051ff87867b239b5ae272fd55  gcc/cobol/structs.h
! b465dad3db90ec66032be35f5c0a68d9  gcc/cobol/symbols.cc
! 80e5dffec4b62d9d5f58799583e006dd  gcc/cobol/symbols.h
  56876c7f6bf3230239c8142eb049a183  gcc/cobol/symfind.cc
! ac8f63d8adfa3a7dde880bf5e644ab07  gcc/cobol/token_names.h
  434f4899280e27d0717b2e56d5bf12f2  gcc/cobol/udf/stored-char-length.cbl
! e352d679f98f3ccd1ffee11e8d01c2d9  gcc/cobol/util.cc
! ed3f467605b997678af9e5189497d41b  gcc/cobol/util.h
  0f3dba102a04da8ca1e45b9b16741bde  gcc/collect-utils.cc
  6e6685d60444844fecf36350b5956f77  gcc/collect-utils.h
  30202062ccc5696f6203f07ab6965763  gcc/collect2-aix.cc
--- 3383,3410 ----
  37f3bc2a2f07d757ac3f9e33027c2e3b  gcc/cobol/genutil.h
  7b9c1ead6f9d3661133f7f732811719c  gcc/cobol/help.gen
  0fa33dbe050697f40b5e8df91896da9a  gcc/cobol/inspect.h
! fd52a00ee627385048b4901c68152fd3  gcc/cobol/lang-specs.h
! 326453d4d833b38774f1e514a5d906ae  gcc/cobol/lang.opt
  27fcbbb7a8eb5ed2cb9e2afff4e05f7e  gcc/cobol/lang.opt.urls
! b1dec80ff801eb3236e0eb163d64d56e  gcc/cobol/lexio.cc
  5953c820cdc03feb815bfbf28c10730c  gcc/cobol/lexio.h
! 112b5088144c95f653839c42f9763cb8  gcc/cobol/messages.cc
! a1dc6074f38f10cc7f2f266756cb68af  gcc/cobol/parse.y
! 8fc9d7761aa85dad9d0496a9f34f0c6b  gcc/cobol/parse_ante.h
  e141e23293fb343e7ccbaa2fe6bcef33  gcc/cobol/parse_util.h
! e3e66753004317b7e01c95f9bb63b4c0  gcc/cobol/scan.l
! 5e2a225de732765807b4efebb7b8d944  gcc/cobol/scan_ante.h
! b807722da738ed05d7e57e96dc9b2f1e  gcc/cobol/scan_post.h
! 423be730276839377810c3c8c4207cad  gcc/cobol/show_parse.h
  c53ffb5b1f39680588d8ace8a3a44953  gcc/cobol/structs.cc
  6a12fdf051ff87867b239b5ae272fd55  gcc/cobol/structs.h
! a321b3d018a8db3f4608065a83923990  gcc/cobol/symbols.cc
! 57380914575ad634afed4e4e986208b4  gcc/cobol/symbols.h
  56876c7f6bf3230239c8142eb049a183  gcc/cobol/symfind.cc
! ccb41d4e6733c464561a8425ed5e090e  gcc/cobol/token_names.h
  434f4899280e27d0717b2e56d5bf12f2  gcc/cobol/udf/stored-char-length.cbl
! 1bbe4777241e927d372abc4dea72caa0  gcc/cobol/util.cc
! 6cc175185e4fa5a6a21bdc88a66d3956  gcc/cobol/util.h
  0f3dba102a04da8ca1e45b9b16741bde  gcc/collect-utils.cc
  6e6685d60444844fecf36350b5956f77  gcc/collect-utils.h
  30202062ccc5696f6203f07ab6965763  gcc/collect2-aix.cc
*************** f55010fab8b9aabea82c3ac50d031028  gcc/co
*** 3412,3419 ****
  7041e62f0f582b09331732fef4bb9545  gcc/combine-stack-adj.cc
  8db32a2301bfbb3281c1cc38024ad792  gcc/combine.cc
  2b9ccf7fc2473ef7e36aee9bcf170843  gcc/common.md
! 9fa57028565a50020a540a9064853818  gcc/common.opt
! 82047a733c35e01dd21a71fadf6f283a  gcc/common.opt.urls
  26050db921f73fd87b026dc950bde97b  gcc/common/common-target-def.h
  dae02ebe59cdaaf21611ad354e939ca5  gcc/common/common-target.def
  4a00b1cedd9d15d93e32920b16b3c292  gcc/common/common-target.h
--- 3415,3422 ----
  7041e62f0f582b09331732fef4bb9545  gcc/combine-stack-adj.cc
  8db32a2301bfbb3281c1cc38024ad792  gcc/combine.cc
  2b9ccf7fc2473ef7e36aee9bcf170843  gcc/common.md
! 1b99b9adbc8aca6636b14206165a9321  gcc/common.opt
! 0521f89a92b0c38d381ac40b8ad56b06  gcc/common.opt.urls
  26050db921f73fd87b026dc950bde97b  gcc/common/common-target-def.h
  dae02ebe59cdaaf21611ad354e939ca5  gcc/common/common-target.def
  4a00b1cedd9d15d93e32920b16b3c292  gcc/common/common-target.h
*************** b5a916bb9dd788754ac9e4ad7174ee74  gcc/co
*** 3474,3490 ****
  b209201703dd766f76ff5e16b99191e5  gcc/compare-elim.cc
  618780fbce0ce0cb6f9b86e079ce4e54  gcc/conditions.h
  1b4bc58c657bf910929d06d51bc8fa6c  gcc/config.build
! b3c4f8211e5986384261c7a8f43f69ed  gcc/config.gcc
  053bb14b428d0f073932e88b9a29a8bd  gcc/config.host
  756f3bb3af308945746fb7b5683487ea  gcc/config.in
  8e697813dc96ca90f5d0f4c196efe2cc  gcc/config/README
! ddbb7a934f8b8aa068e7b765c4375fbe  gcc/config/aarch64/aarch64-abi-ms.h
  9ff4e02500f5622983fef95cce7f38fd  gcc/config/aarch64/aarch64-arches.def
  25015a0315f13c9da9f02b76796af35c  gcc/config/aarch64/aarch64-builtin-pairs.def
! 7bfe6f577e74d04fbaece4d908e4f3ea  gcc/config/aarch64/aarch64-builtins.cc
  482530e7572b40bc2ad01bdec0c1b97e  gcc/config/aarch64/aarch64-builtins.h
  a23e0fac46a5ec3786d2e8cc7ad18058  gcc/config/aarch64/aarch64-c.cc
! 133f61af7e288fe91ca31c659939c551  gcc/config/aarch64/aarch64-coff.h
  a6c928b38476b702355454e1f0f3795e  gcc/config/aarch64/aarch64-cores.def
  85b8b0267c641b7fb638fffcb3016739  gcc/config/aarch64/aarch64-cost-tables.h
  bef2a61270424fd606c71d78d20ad675  gcc/config/aarch64/aarch64-d.cc
--- 3477,3495 ----
  b209201703dd766f76ff5e16b99191e5  gcc/compare-elim.cc
  618780fbce0ce0cb6f9b86e079ce4e54  gcc/conditions.h
  1b4bc58c657bf910929d06d51bc8fa6c  gcc/config.build
! 4b6b6a93d1722f3914a651c1538dbfa7  gcc/config.gcc
  053bb14b428d0f073932e88b9a29a8bd  gcc/config.host
  756f3bb3af308945746fb7b5683487ea  gcc/config.in
  8e697813dc96ca90f5d0f4c196efe2cc  gcc/config/README
! a66e3cd55f15eb5f17a8d848161371a7  gcc/config/aarch64/aarch64-abi-ms-protos.h
! fc247aa8c40db38e448846ba37245cc0  gcc/config/aarch64/aarch64-abi-ms.cc
! 1e461c3cff9ad213b0c430fa2505e7e3  gcc/config/aarch64/aarch64-abi-ms.h
  9ff4e02500f5622983fef95cce7f38fd  gcc/config/aarch64/aarch64-arches.def
  25015a0315f13c9da9f02b76796af35c  gcc/config/aarch64/aarch64-builtin-pairs.def
! 484479d548374fdcb26338db469a20d4  gcc/config/aarch64/aarch64-builtins.cc
  482530e7572b40bc2ad01bdec0c1b97e  gcc/config/aarch64/aarch64-builtins.h
  a23e0fac46a5ec3786d2e8cc7ad18058  gcc/config/aarch64/aarch64-c.cc
! 7e379e769908e6e6cce538dbc8872dad  gcc/config/aarch64/aarch64-coff.h
  a6c928b38476b702355454e1f0f3795e  gcc/config/aarch64/aarch64-cores.def
  85b8b0267c641b7fb638fffcb3016739  gcc/config/aarch64/aarch64-cost-tables.h
  bef2a61270424fd606c71d78d20ad675  gcc/config/aarch64/aarch64-d.cc
*************** f931bc8e97c2f1358ad3ad91e902d553  gcc/co
*** 3517,3523 ****
  a1976079127ae261204af8cdddd28c03  gcc/config/aarch64/aarch64-option-extensions.def
  03abf94646a4b525b350e9ecdb8e45a5  gcc/config/aarch64/aarch64-opts.h
  a349e9ba39f96f10f6c9f5e13bb8b661  gcc/config/aarch64/aarch64-passes.def
! b240129234976d7e0196b775179de797  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
--- 3522,3528 ----
  a1976079127ae261204af8cdddd28c03  gcc/config/aarch64/aarch64-option-extensions.def
  03abf94646a4b525b350e9ecdb8e45a5  gcc/config/aarch64/aarch64-opts.h
  a349e9ba39f96f10f6c9f5e13bb8b661  gcc/config/aarch64/aarch64-passes.def
! 43137fc19bb3285435ff7b357109ef86  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
*************** ae7ea468046099ae99d717e107a85497  gcc/co
*** 3548,3556 ****
  dec4c8fd03ac5636ba08d9523bee06be  gcc/config/aarch64/aarch64-tuning-enums.def
  586e3b2fd446baa0a6fb8da7c8cdd660  gcc/config/aarch64/aarch64-tuning-flags.def
  a5cfcce7c9dd86a597161f8bde3497bc  gcc/config/aarch64/aarch64-vxworks.h
! 6094fbed97ccee4bb33a5f4da876c51f  gcc/config/aarch64/aarch64.cc
! bb0828c96d48c6a01dd1c6dc035d2095  gcc/config/aarch64/aarch64.h
! 3acac4e9cce3c681629f79e791c91e7c  gcc/config/aarch64/aarch64.md
  0ce505ced96a535a383adbbdb7c31de8  gcc/config/aarch64/aarch64.opt
  f8862c1a17df0d9164d1f07fc8288527  gcc/config/aarch64/aarch64.opt.urls
  7b468a20f0362cbe02c7699720a962fa  gcc/config/aarch64/arm_acle.h
--- 3553,3561 ----
  dec4c8fd03ac5636ba08d9523bee06be  gcc/config/aarch64/aarch64-tuning-enums.def
  586e3b2fd446baa0a6fb8da7c8cdd660  gcc/config/aarch64/aarch64-tuning-flags.def
  a5cfcce7c9dd86a597161f8bde3497bc  gcc/config/aarch64/aarch64-vxworks.h
! 0f9cdd65290f08b560c6e78cad56ac5a  gcc/config/aarch64/aarch64.cc
! 652375d120c12dc701ac4063e63b82b6  gcc/config/aarch64/aarch64.h
! 87bb81f80d1f24768f04e99072c2f669  gcc/config/aarch64/aarch64.md
  0ce505ced96a535a383adbbdb7c31de8  gcc/config/aarch64/aarch64.opt
  f8862c1a17df0d9164d1f07fc8288527  gcc/config/aarch64/aarch64.opt.urls
  7b468a20f0362cbe02c7699720a962fa  gcc/config/aarch64/arm_acle.h
*************** ae88170d2d567105865813bb4b77d91f  gcc/co
*** 3568,3574 ****
  124d7f2adedfdccecd86bb0274dfc7aa  gcc/config/aarch64/check-sve-md.awk
  e6affb6245a300a09ed57ed4fc0b212b  gcc/config/aarch64/constraints.md
  dd76583202434d2161c8668396b95079  gcc/config/aarch64/cortex-a57-fma-steering.cc
! 034ef57fb17f601ded123d7a43b51d02  gcc/config/aarch64/cygming.h
  292d2b0e05a5d9d17f1d5ab6e78f23b3  gcc/config/aarch64/driver-aarch64.cc
  f713d33fdaee532813b56547dd070c8c  gcc/config/aarch64/fractional-cost.h
  f7165d62ef852e1929a8fc9a85c01ab2  gcc/config/aarch64/gcc-auto-profile
--- 3573,3579 ----
  124d7f2adedfdccecd86bb0274dfc7aa  gcc/config/aarch64/check-sve-md.awk
  e6affb6245a300a09ed57ed4fc0b212b  gcc/config/aarch64/constraints.md
  dd76583202434d2161c8668396b95079  gcc/config/aarch64/cortex-a57-fma-steering.cc
! 6fb19490d45ca30e5e457cc8711266ac  gcc/config/aarch64/cygming.h
  292d2b0e05a5d9d17f1d5ab6e78f23b3  gcc/config/aarch64/driver-aarch64.cc
  f713d33fdaee532813b56547dd070c8c  gcc/config/aarch64/fractional-cost.h
  f7165d62ef852e1929a8fc9a85c01ab2  gcc/config/aarch64/gcc-auto-profile
*************** b28994e8791a9190a2be1df6d81bad02  gcc/co
*** 3579,3587 ****
  811f43b19ba5f415244c59b4ab377445  gcc/config/aarch64/neoversev2.md
  d7be23445faf070c6e51cc3d3403dd81  gcc/config/aarch64/predicates.md
  a4e902ee1494ba5eee811ea46ecdf995  gcc/config/aarch64/rtems.h
! 115f35ecd8bef38fbf0bc2992a8ba0b4  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
  49063fb9a5e33f58ac7cc9c641bf10ac  gcc/config/aarch64/t-aarch64-rtems
  d69f3321610d365313a88ad4ad974d87  gcc/config/aarch64/t-aarch64-vxworks
--- 3584,3593 ----
  811f43b19ba5f415244c59b4ab377445  gcc/config/aarch64/neoversev2.md
  d7be23445faf070c6e51cc3d3403dd81  gcc/config/aarch64/predicates.md
  a4e902ee1494ba5eee811ea46ecdf995  gcc/config/aarch64/rtems.h
! baaec1b607c99920513eb3d3d47af504  gcc/config/aarch64/t-aarch64
  5a6fa47ba2bb65a12cd953f8edee028d  gcc/config/aarch64/t-aarch64-freebsd
  7c93b24bd00b44291884d34b3213b75e  gcc/config/aarch64/t-aarch64-linux
+ fc8b8fa600735bac2ad1da143b5a8d6d  gcc/config/aarch64/t-aarch64-mingw
  5a6fa47ba2bb65a12cd953f8edee028d  gcc/config/aarch64/t-aarch64-netbsd
  49063fb9a5e33f58ac7cc9c641bf10ac  gcc/config/aarch64/t-aarch64-rtems
  d69f3321610d365313a88ad4ad974d87  gcc/config/aarch64/t-aarch64-vxworks
*************** eafc8a2abc331243ea846fab22b8aec4  gcc/co
*** 3725,3731 ****
  5d895a88bb2048a83e3ccc08d50f3151  gcc/config/arm/arm-tables.opt
  f805d118929dd79f6bd4dc75c77c968b  gcc/config/arm/arm-tables.opt.urls
  1f1a55560eb97e283125003609418bce  gcc/config/arm/arm-tune.md
! 2a8178fcca37bbbfd65b777e5aa64273  gcc/config/arm/arm.cc
  4b4c240869c2413c542f051e20fc26d1  gcc/config/arm/arm.h
  f2549733b9a96df12519d1c4e55a1532  gcc/config/arm/arm.md
  570f0bb7a45483c8018c61ecee83a093  gcc/config/arm/arm.opt
--- 3731,3737 ----
  5d895a88bb2048a83e3ccc08d50f3151  gcc/config/arm/arm-tables.opt
  f805d118929dd79f6bd4dc75c77c968b  gcc/config/arm/arm-tables.opt.urls
  1f1a55560eb97e283125003609418bce  gcc/config/arm/arm-tune.md
! 155c38b35f32dd9d617872763b5b0cbe  gcc/config/arm/arm.cc
  4b4c240869c2413c542f051e20fc26d1  gcc/config/arm/arm.h
  f2549733b9a96df12519d1c4e55a1532  gcc/config/arm/arm.md
  570f0bb7a45483c8018c61ecee83a093  gcc/config/arm/arm.opt
*************** cb269e14a0ffcaf48937ea37a588d123  gcc/co
*** 3749,3755 ****
  130a8fbe50847f964b84dcc079274131  gcc/config/arm/arm_vfp_builtins.def
  ae20ce20f59a062f74bc3e38bfb8e776  gcc/config/arm/bpabi.h
  bbacfe695f3abec9a6aa46cee26c1db4  gcc/config/arm/common.md
! 375d73d264ec915d0723320503b65f98  gcc/config/arm/constraints.md
  583626dca1b07ab1d185bd33be9c755e  gcc/config/arm/cortex-a15-neon.md
  e3f39f090dffb6441661f2735ff625c7  gcc/config/arm/cortex-a15.md
  2e920cabf1d4fa68e020ec3becbec753  gcc/config/arm/cortex-a17-neon.md
--- 3755,3761 ----
  130a8fbe50847f964b84dcc079274131  gcc/config/arm/arm_vfp_builtins.def
  ae20ce20f59a062f74bc3e38bfb8e776  gcc/config/arm/bpabi.h
  bbacfe695f3abec9a6aa46cee26c1db4  gcc/config/arm/common.md
! 52b33d708377cbc43730a2262f8e199d  gcc/config/arm/constraints.md
  583626dca1b07ab1d185bd33be9c755e  gcc/config/arm/cortex-a15-neon.md
  e3f39f090dffb6441661f2735ff625c7  gcc/config/arm/cortex-a15.md
  2e920cabf1d4fa68e020ec3becbec753  gcc/config/arm/cortex-a17-neon.md
*************** b1bb4aedc65a975961957373495f8b3a  gcc/co
*** 3787,3793 ****
  e432241ef743dc9fad65a3e982e51711  gcc/config/arm/linux-gas.h
  0143017c5054dbb4839079ed89df7fc4  gcc/config/arm/marvell-pj4.md
  5b6e3779ce7193a5b2496230da7b4ef7  gcc/config/arm/mmintrin.h
! b496a5b2bd3981a56706ea285440bbcd  gcc/config/arm/mve.md
  2229898d1056f856ff420db3ff4d0998  gcc/config/arm/neon.md
  f208fab795fa9231cb51c748bd50e7e5  gcc/config/arm/netbsd-eabi.h
  79c1c27fe924ef728f21bd95a8c3ea71  gcc/config/arm/netbsd-elf.h
--- 3793,3799 ----
  e432241ef743dc9fad65a3e982e51711  gcc/config/arm/linux-gas.h
  0143017c5054dbb4839079ed89df7fc4  gcc/config/arm/marvell-pj4.md
  5b6e3779ce7193a5b2496230da7b4ef7  gcc/config/arm/mmintrin.h
! cda4167e305cea0354f75815849f0d97  gcc/config/arm/mve.md
  2229898d1056f856ff420db3ff4d0998  gcc/config/arm/neon.md
  f208fab795fa9231cb51c748bd50e7e5  gcc/config/arm/netbsd-eabi.h
  79c1c27fe924ef728f21bd95a8c3ea71  gcc/config/arm/netbsd-elf.h
*************** fef90eadb54537d055545abc4dd47f27  gcc/co
*** 3966,3972 ****
  02ae64b29837efadab1a1e3f95e1d4e7  gcc/config/csky/t-csky
  f933c7ba771ce9476d266c70acbf222c  gcc/config/csky/t-csky-elf
  01730ada4a07f2b6a7b9c6bedbe0ec39  gcc/config/csky/t-csky-linux
! aef9384ae90024aef8126c64c575f49a  gcc/config/darwin-c.cc
  2dbf19574a93063035f610f6be08f11c  gcc/config/darwin-d.cc
  94f210dcd1179db695ab8f1ac5c83715  gcc/config/darwin-driver.cc
  2a024d19058232321d7a1a03335e9894  gcc/config/darwin-f.cc
--- 3972,3978 ----
  02ae64b29837efadab1a1e3f95e1d4e7  gcc/config/csky/t-csky
  f933c7ba771ce9476d266c70acbf222c  gcc/config/csky/t-csky-elf
  01730ada4a07f2b6a7b9c6bedbe0ec39  gcc/config/csky/t-csky-linux
! ecebe9431263660540d781b513a5311d  gcc/config/darwin-c.cc
  2dbf19574a93063035f610f6be08f11c  gcc/config/darwin-d.cc
  94f210dcd1179db695ab8f1ac5c83715  gcc/config/darwin-driver.cc
  2a024d19058232321d7a1a03335e9894  gcc/config/darwin-f.cc
*************** d3fb594d11281112ff8d8f304a000c4e  gcc/co
*** 4249,4257 ****
  10a38f2a86740708977ea6a86051e67e  gcc/config/i386/i386-c.cc
  54909bb70e074c14dcf4499a5baedc54  gcc/config/i386/i386-d.cc
  172dcd61afc5800b61ebb688838d9adc  gcc/config/i386/i386-d.h
! 1b2d74cce621225f76c616b18765bf5c  gcc/config/i386/i386-expand.cc
  c9c3969c00808c9b6809fbeab3e4a1d2  gcc/config/i386/i386-expand.h
! ff334919b9f42e840bc445440e280b26  gcc/config/i386/i386-features.cc
  1ee34fa5f2ae92fd7d48419d8fc529f8  gcc/config/i386/i386-features.h
  3d9edfe94007cdc032797a67ebe9733e  gcc/config/i386/i386-isa.def
  03ca94d6fcaa109c0837ebc3f067eb3f  gcc/config/i386/i386-jit.cc
--- 4255,4263 ----
  10a38f2a86740708977ea6a86051e67e  gcc/config/i386/i386-c.cc
  54909bb70e074c14dcf4499a5baedc54  gcc/config/i386/i386-d.cc
  172dcd61afc5800b61ebb688838d9adc  gcc/config/i386/i386-d.h
! e4dae6500fba0b1eefe9eebbd33f9fd2  gcc/config/i386/i386-expand.cc
  c9c3969c00808c9b6809fbeab3e4a1d2  gcc/config/i386/i386-expand.h
! bc18f421fa068cbf9bd4a5c001fe0818  gcc/config/i386/i386-features.cc
  1ee34fa5f2ae92fd7d48419d8fc529f8  gcc/config/i386/i386-features.h
  3d9edfe94007cdc032797a67ebe9733e  gcc/config/i386/i386-isa.def
  03ca94d6fcaa109c0837ebc3f067eb3f  gcc/config/i386/i386-jit.cc
*************** fb6d632066a5383c0ec89e867a9cc9c6  gcc/co
*** 4265,4273 ****
  5b778b3296ea91dab0ca82338ca6828d  gcc/config/i386/i386-rust-and-jit.inc
  b19c27e8a900f9eeb7d73e2bb4b8d313  gcc/config/i386/i386-rust.cc
  24065393854cd1e08e3285bd707210fe  gcc/config/i386/i386-rust.h
! 1f4a32312b032fb883347669e714a376  gcc/config/i386/i386.cc
  e01d46d728877f9a3a104a8d3c4dccd6  gcc/config/i386/i386.h
! 9641f015e68255fd84f9109fe1780dc1  gcc/config/i386/i386.md
  4d6e66705102c7128048fa8c5bbed2a8  gcc/config/i386/i386.opt
  909e9c6704126cda2ec3bf9fa9681c39  gcc/config/i386/i386.opt.urls
  f22876926ff4a2cb67b105ac266c72ea  gcc/config/i386/i386elf.h
--- 4271,4279 ----
  5b778b3296ea91dab0ca82338ca6828d  gcc/config/i386/i386-rust-and-jit.inc
  b19c27e8a900f9eeb7d73e2bb4b8d313  gcc/config/i386/i386-rust.cc
  24065393854cd1e08e3285bd707210fe  gcc/config/i386/i386-rust.h
! 4208220abbbc437ef40c38954476ade3  gcc/config/i386/i386.cc
  e01d46d728877f9a3a104a8d3c4dccd6  gcc/config/i386/i386.h
! d3f2797a9a7b3e1ba523e7bcfb45a839  gcc/config/i386/i386.md
  4d6e66705102c7128048fa8c5bbed2a8  gcc/config/i386/i386.opt
  909e9c6704126cda2ec3bf9fa9681c39  gcc/config/i386/i386.opt.urls
  f22876926ff4a2cb67b105ac266c72ea  gcc/config/i386/i386elf.h
*************** fc41e4ebf77dd1f54ddeec4e60428d5e  gcc/co
*** 4312,4318 ****
  1d9e8c2f64fa31f36bfe9ac83a296943  gcc/config/i386/pmmintrin.h
  62337355ef8c4334a0cc9c1db0cfc0da  gcc/config/i386/popcntintrin.h
  d17b84bc85c341e7f386b3b24b231070  gcc/config/i386/ppro.md
! fcedb63275d60af1eb60e2ac71009aea  gcc/config/i386/predicates.md
  e10e34eef814ce6c5e09777d378d36d3  gcc/config/i386/prfchiintrin.h
  eed7a3601ce61f497dcfc5655e5da7a6  gcc/config/i386/prfchwintrin.h
  bc11b09d2de8ba6b9ec2392f1cebdbd9  gcc/config/i386/raointintrin.h
--- 4318,4324 ----
  1d9e8c2f64fa31f36bfe9ac83a296943  gcc/config/i386/pmmintrin.h
  62337355ef8c4334a0cc9c1db0cfc0da  gcc/config/i386/popcntintrin.h
  d17b84bc85c341e7f386b3b24b231070  gcc/config/i386/ppro.md
! 16568e5cab50c7465efd2e0e345f1f39  gcc/config/i386/predicates.md
  e10e34eef814ce6c5e09777d378d36d3  gcc/config/i386/prfchiintrin.h
  eed7a3601ce61f497dcfc5655e5da7a6  gcc/config/i386/prfchwintrin.h
  bc11b09d2de8ba6b9ec2392f1cebdbd9  gcc/config/i386/raointintrin.h
*************** de4e89bc042c6bc7eb093bda5d33a266  gcc/co
*** 4330,4336 ****
  380f2e50c7d803059b0e7617da00460f  gcc/config/i386/sm4intrin.h
  a24296639492577352dd1309b136bc9a  gcc/config/i386/smmintrin.h
  ffbc43ec2b7f2d37d4a6f69f70d5a345  gcc/config/i386/sol2.h
! 527995c1629648b389936bde09328e13  gcc/config/i386/sse.md
  7c6ff828c11c2892168a2e450559dcb6  gcc/config/i386/ssemath.h
  7ada9f54207701e1d29fd03ea990e163  gcc/config/i386/stringop.def
  9f75a2e9a9bf20db0bef264cabe77a29  gcc/config/i386/subst.md
--- 4336,4342 ----
  380f2e50c7d803059b0e7617da00460f  gcc/config/i386/sm4intrin.h
  a24296639492577352dd1309b136bc9a  gcc/config/i386/smmintrin.h
  ffbc43ec2b7f2d37d4a6f69f70d5a345  gcc/config/i386/sol2.h
! 0166687e3611fbb0ea31702af14906aa  gcc/config/i386/sse.md
  7c6ff828c11c2892168a2e450559dcb6  gcc/config/i386/ssemath.h
  7ada9f54207701e1d29fd03ea990e163  gcc/config/i386/stringop.def
  9f75a2e9a9bf20db0bef264cabe77a29  gcc/config/i386/subst.md
*************** edc4c311c5ce51d78ae963c2bdf66fbf  gcc/co
*** 4634,4641 ****
  5ac3e65a2b4e8a0e77f19d4d0931ec03  gcc/config/mingw/winnt-dll.cc
  ce9dde5e44ad144027da2e35c7e97ef8  gcc/config/mingw/winnt-dll.h
  e4b2f8fb1d66b9d417e6a49457b25003  gcc/config/mingw/winnt-stubs.cc
! 7650f27fe6bcaa8c653382a8f87f27f7  gcc/config/mingw/winnt.cc
! 324c4d27ae846cabeba6e2e64e6275f6  gcc/config/mingw/winnt.h
  2dad819a1af61bda883b08c7310f4ced  gcc/config/mips/10000.md
  58b10461c7d9049333ab922d8faba17c  gcc/config/mips/20kc.md
  a07dd57521c3ce510a685b35c79f0bac  gcc/config/mips/24k.md
--- 4640,4647 ----
  5ac3e65a2b4e8a0e77f19d4d0931ec03  gcc/config/mingw/winnt-dll.cc
  ce9dde5e44ad144027da2e35c7e97ef8  gcc/config/mingw/winnt-dll.h
  e4b2f8fb1d66b9d417e6a49457b25003  gcc/config/mingw/winnt-stubs.cc
! e05ed023d11004879eebfc978b950e34  gcc/config/mingw/winnt.cc
! e555db1aa2ef2a8826e5103e4fbb3781  gcc/config/mingw/winnt.h
  2dad819a1af61bda883b08c7310f4ced  gcc/config/mips/10000.md
  58b10461c7d9049333ab922d8faba17c  gcc/config/mips/20kc.md
  a07dd57521c3ce510a685b35c79f0bac  gcc/config/mips/24k.md
*************** c6303eebdcc28adc0e8dbd36000fd089  gcc/co
*** 4675,4681 ****
  a2f81dceba031fb261df4e6410bc509a  gcc/config/mips/loongson2ef.md
  8045b6d4622838c816ba7dea0109da26  gcc/config/mips/m5100.md
  f6a5d19bdcd6d9ccdaa46f1823dda2c3  gcc/config/mips/micromips.md
! 7a47ab183716a7dc89e111593d05f17c  gcc/config/mips/mips-cpus.def
  b70722da9a66a8346a6d8a03a411a0fc  gcc/config/mips/mips-d.cc
  10b1f2f8768b0f8c230eeae08a7b5746  gcc/config/mips/mips-d.h
  dc3ea85b722793c8e4496599acbbe805  gcc/config/mips/mips-dsp.md
--- 4681,4687 ----
  a2f81dceba031fb261df4e6410bc509a  gcc/config/mips/loongson2ef.md
  8045b6d4622838c816ba7dea0109da26  gcc/config/mips/m5100.md
  f6a5d19bdcd6d9ccdaa46f1823dda2c3  gcc/config/mips/micromips.md
! 765ca844d41438d3f40ecd1ee8416b71  gcc/config/mips/mips-cpus.def
  b70722da9a66a8346a6d8a03a411a0fc  gcc/config/mips/mips-d.cc
  10b1f2f8768b0f8c230eeae08a7b5746  gcc/config/mips/mips-d.h
  dc3ea85b722793c8e4496599acbbe805  gcc/config/mips/mips-dsp.md
*************** f973e381561e255314508a55abacf3fa  gcc/co
*** 4687,4697 ****
  1b87cbf12b808b0145d1c6d1e7380ef8  gcc/config/mips/mips-opts.h
  3177024ac19b3c284f1f9d889d95f47d  gcc/config/mips/mips-protos.h
  beaf066ed06870bef361adf40e122f78  gcc/config/mips/mips-ps-3d.md
! 453ffe6fe7bd722fe86fcbd20ad8c571  gcc/config/mips/mips-tables.opt
  216c87627424d946f6245f736be7b5f1  gcc/config/mips/mips-tables.opt.urls
! 09ed0717f4616634518770137b3dc2b2  gcc/config/mips/mips.cc
! 5390074a96bd88c37709897a13163810  gcc/config/mips/mips.h
! 500caa79972031bcc689037dab20fb2d  gcc/config/mips/mips.md
  b0ee02ac417ab7f573eb8399f8c88228  gcc/config/mips/mips.opt
  826310e4ec0ec1a6e321bd5ddfc26434  gcc/config/mips/mips.opt.urls
  d89c4346d4e58dfefe64a850c4bfdbdb  gcc/config/mips/msa.h
--- 4693,4703 ----
  1b87cbf12b808b0145d1c6d1e7380ef8  gcc/config/mips/mips-opts.h
  3177024ac19b3c284f1f9d889d95f47d  gcc/config/mips/mips-protos.h
  beaf066ed06870bef361adf40e122f78  gcc/config/mips/mips-ps-3d.md
! 1f6d328820dc2a1c2a1c2e086cb7e8bb  gcc/config/mips/mips-tables.opt
  216c87627424d946f6245f736be7b5f1  gcc/config/mips/mips-tables.opt.urls
! a3ec5ee1e1ecf26e9f8d09b9109434f1  gcc/config/mips/mips.cc
! 18924b6fb24b33543914d89b7e1bd121  gcc/config/mips/mips.h
! db7e5c050230838281daa965138ae4f8  gcc/config/mips/mips.md
  b0ee02ac417ab7f573eb8399f8c88228  gcc/config/mips/mips.opt
  826310e4ec0ec1a6e321bd5ddfc26434  gcc/config/mips/mips.opt.urls
  d89c4346d4e58dfefe64a850c4bfdbdb  gcc/config/mips/msa.h
*************** c7d4fb30a2fe78bcdb23db8d74da3746  gcc/co
*** 4918,4924 ****
  ede4cffb79f5496c4063328b9d126f26  gcc/config/pa/pa-openbsd.h
  cd1b48d66fffc5f91a26b160085fbd1e  gcc/config/pa/pa-opts.h
  596c088c93babeea4848ba2aed2eb6b0  gcc/config/pa/pa-protos.h
! 5a592947a91e7c831437a29b95f7165c  gcc/config/pa/pa.cc
  61b4f0474933832cc8b86195296e8314  gcc/config/pa/pa.h
  15cef22d15b01bef0a336da862149b1d  gcc/config/pa/pa.md
  120551d8deffa429a17fa0d4bf19764f  gcc/config/pa/pa.opt
--- 4924,4930 ----
  ede4cffb79f5496c4063328b9d126f26  gcc/config/pa/pa-openbsd.h
  cd1b48d66fffc5f91a26b160085fbd1e  gcc/config/pa/pa-opts.h
  596c088c93babeea4848ba2aed2eb6b0  gcc/config/pa/pa-protos.h
! f77e24ab80f2e0ea56cc2a6c5639db88  gcc/config/pa/pa.cc
  61b4f0474933832cc8b86195296e8314  gcc/config/pa/pa.h
  15cef22d15b01bef0a336da862149b1d  gcc/config/pa/pa.md
  120551d8deffa429a17fa0d4bf19764f  gcc/config/pa/pa.opt
*************** ccf120397e978f8cd4ed98cbe2c0d4f5  gcc/co
*** 4975,4981 ****
  96a9b8701199ede652cadbcdeec423d7  gcc/config/riscv/andes.md
  7444da2915b734a807ab2b707fe0fe35  gcc/config/riscv/andes_vector.h
  3d4ef2c5571dbf0e4bb86d09917f7c07  gcc/config/riscv/arch-canonicalize
! 34e747805ffb6d00e833e358b5572df7  gcc/config/riscv/autovec-opt.md
  b66cc3e74ba11e4863ccf7aced426362  gcc/config/riscv/autovec.md
  d4306030a8879ce9aa1e6cc18aff56eb  gcc/config/riscv/bitmanip.md
  3d4917c0a2efee97aaca242060652e02  gcc/config/riscv/constraints.md
--- 4981,4987 ----
  96a9b8701199ede652cadbcdeec423d7  gcc/config/riscv/andes.md
  7444da2915b734a807ab2b707fe0fe35  gcc/config/riscv/andes_vector.h
  3d4ef2c5571dbf0e4bb86d09917f7c07  gcc/config/riscv/arch-canonicalize
! 14a2555a6dd29f700e6b7024febcbe3f  gcc/config/riscv/autovec-opt.md
  b66cc3e74ba11e4863ccf7aced426362  gcc/config/riscv/autovec.md
  d4306030a8879ce9aa1e6cc18aff56eb  gcc/config/riscv/bitmanip.md
  3d4917c0a2efee97aaca242060652e02  gcc/config/riscv/constraints.md
*************** bffa0caedd7144aff55c80a16431d1a1  gcc/co
*** 5001,5007 ****
  80e8994ee9e6abf380e68aca6443d157  gcc/config/riscv/peephole.md
  a3d3fa9142d4e2ed34ead146941c574a  gcc/config/riscv/pic.md
  674baa66306b2b08e1b80995759f5381  gcc/config/riscv/pipeline-checker
! 89b6aff0e8d9684c1bb44093123c9eb5  gcc/config/riscv/predicates.md
  47128c226cbf453b9816615bc43b879b  gcc/config/riscv/riscv-avlprop.cc
  179d92544e7a65f0ccf206e876026744  gcc/config/riscv/riscv-bclr-lowest-set-bit.cc
  e54a2d33c6fb9bb0381889dad6fa71d8  gcc/config/riscv/riscv-builtins.cc
--- 5007,5013 ----
  80e8994ee9e6abf380e68aca6443d157  gcc/config/riscv/peephole.md
  a3d3fa9142d4e2ed34ead146941c574a  gcc/config/riscv/pic.md
  674baa66306b2b08e1b80995759f5381  gcc/config/riscv/pipeline-checker
! 026c9ee53fb5994354d987b75fd97415  gcc/config/riscv/predicates.md
  47128c226cbf453b9816615bc43b879b  gcc/config/riscv/riscv-avlprop.cc
  179d92544e7a65f0ccf206e876026744  gcc/config/riscv/riscv-bclr-lowest-set-bit.cc
  e54a2d33c6fb9bb0381889dad6fa71d8  gcc/config/riscv/riscv-builtins.cc
*************** fb8278eead727b22c3863e30a89fbc0c  gcc/co
*** 5026,5033 ****
  8f14f2c290395ebe3ff7f23a1e97e56b  gcc/config/riscv/riscv-opt-popretz.cc
  e1bb69cfc54bb16775e01e36a6718b15  gcc/config/riscv/riscv-opts.h
  4b5f5f162a40b5ae9dc3359a58f10c33  gcc/config/riscv/riscv-passes.def
! 121d0828b2622389b84f15f8664c88d0  gcc/config/riscv/riscv-profiles.def
! a35d88a4767b851bb8ad0ce1b224d363  gcc/config/riscv/riscv-protos.h
  446f0f39c6f980e246ea56f1233e9271  gcc/config/riscv/riscv-scalar-crypto.def
  003d5626ce3adcac7ca55401c7dec2bc  gcc/config/riscv/riscv-selftests.cc
  da4e034d23a8f2754b1dfce0122f286e  gcc/config/riscv/riscv-shorten-memrefs.cc
--- 5032,5039 ----
  8f14f2c290395ebe3ff7f23a1e97e56b  gcc/config/riscv/riscv-opt-popretz.cc
  e1bb69cfc54bb16775e01e36a6718b15  gcc/config/riscv/riscv-opts.h
  4b5f5f162a40b5ae9dc3359a58f10c33  gcc/config/riscv/riscv-passes.def
! 6a4ba8b1df2cb6b09b291d1fdeded67c  gcc/config/riscv/riscv-profiles.def
! b4faa6d0fca97ed3f8d64546be10dc90  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
*************** da4e034d23a8f2754b1dfce0122f286e  gcc/co
*** 5035,5059 ****
  38e9863d2a2af1a5773ed060b713ccc1  gcc/config/riscv/riscv-string.cc
  3b52301e3425e6de33a2436af4de6bd8  gcc/config/riscv/riscv-subset.h
  728dc8257d59a540cd2c84220df2d596  gcc/config/riscv/riscv-target-attr.cc
! b98f8c6de4492e41f0c9731ef08804eb  gcc/config/riscv/riscv-v.cc
  0d419e9df116fed7ce6e0ae15131417e  gcc/config/riscv/riscv-v.h
  c5f3161dedd668dfb126ffb191cfb236  gcc/config/riscv/riscv-vect-permconst.cc
! 84e4728d93f1871a385271859cdee594  gcc/config/riscv/riscv-vector-builtins-bases.cc
  689f453a4cdf7fa3e64a7f4bfba8f7dd  gcc/config/riscv/riscv-vector-builtins-bases.h
  bdc5f6caf56fd0411faf705e9c32ccd4  gcc/config/riscv/riscv-vector-builtins-functions.def
  278d45dd3b6250781b7481f0bb02266b  gcc/config/riscv/riscv-vector-builtins-shapes.cc
  7e178dc137007d4ca1aaaaf29940c12f  gcc/config/riscv/riscv-vector-builtins-shapes.h
  dba94786c1a18e3f5fbcca2b5c0af496  gcc/config/riscv/riscv-vector-builtins-types.def
! 7a3a10292f2295839a8e05cc8ea6dc49  gcc/config/riscv/riscv-vector-builtins.cc
  9cbc8a65b5045746afeedeb7b0404c5c  gcc/config/riscv/riscv-vector-builtins.def
! 08fa98f25292b0aaeb6566f437f6f30a  gcc/config/riscv/riscv-vector-builtins.h
  a8fdfe0455fce7cebbb65a7e70831d8a  gcc/config/riscv/riscv-vector-costs.cc
  2a441fb15ed4d774924fe163f29ccf7a  gcc/config/riscv/riscv-vector-costs.h
  4f6ae86b313b2a103caaaca3ec27eb47  gcc/config/riscv/riscv-vector-switch.def
! 3d83e85c22d3c9da7a43e8a19a5c8232  gcc/config/riscv/riscv-vsetvl.cc
  d120ed6eb2847b636271b3a1ef82ecbf  gcc/config/riscv/riscv-vsetvl.def
  7082a18dbfc574d47bf71f4d50dd30f9  gcc/config/riscv/riscv-zicfilp.cc
! d41bb4ac0fd7c709ea39d016f192a46b  gcc/config/riscv/riscv.cc
  7a65f8b385600c8a895a04444c2334d3  gcc/config/riscv/riscv.h
  df70b8958bb33644092fa7f52e8dcb7a  gcc/config/riscv/riscv.md
  011fb3b98a9d049a17db61272a06e9a0  gcc/config/riscv/riscv.opt
--- 5041,5065 ----
  38e9863d2a2af1a5773ed060b713ccc1  gcc/config/riscv/riscv-string.cc
  3b52301e3425e6de33a2436af4de6bd8  gcc/config/riscv/riscv-subset.h
  728dc8257d59a540cd2c84220df2d596  gcc/config/riscv/riscv-target-attr.cc
! 15bec414e0f1e889dafa43e0af0be32a  gcc/config/riscv/riscv-v.cc
  0d419e9df116fed7ce6e0ae15131417e  gcc/config/riscv/riscv-v.h
  c5f3161dedd668dfb126ffb191cfb236  gcc/config/riscv/riscv-vect-permconst.cc
! 472dc58a1c70b0345dcced1152fb8244  gcc/config/riscv/riscv-vector-builtins-bases.cc
  689f453a4cdf7fa3e64a7f4bfba8f7dd  gcc/config/riscv/riscv-vector-builtins-bases.h
  bdc5f6caf56fd0411faf705e9c32ccd4  gcc/config/riscv/riscv-vector-builtins-functions.def
  278d45dd3b6250781b7481f0bb02266b  gcc/config/riscv/riscv-vector-builtins-shapes.cc
  7e178dc137007d4ca1aaaaf29940c12f  gcc/config/riscv/riscv-vector-builtins-shapes.h
  dba94786c1a18e3f5fbcca2b5c0af496  gcc/config/riscv/riscv-vector-builtins-types.def
! 2d8f2fe245bee4b96da8cc6a5db36214  gcc/config/riscv/riscv-vector-builtins.cc
  9cbc8a65b5045746afeedeb7b0404c5c  gcc/config/riscv/riscv-vector-builtins.def
! 222117629707cd3603c59cd1d3ebfb83  gcc/config/riscv/riscv-vector-builtins.h
  a8fdfe0455fce7cebbb65a7e70831d8a  gcc/config/riscv/riscv-vector-costs.cc
  2a441fb15ed4d774924fe163f29ccf7a  gcc/config/riscv/riscv-vector-costs.h
  4f6ae86b313b2a103caaaca3ec27eb47  gcc/config/riscv/riscv-vector-switch.def
! 724b5012debbc56e08795eb0d757a8ed  gcc/config/riscv/riscv-vsetvl.cc
  d120ed6eb2847b636271b3a1ef82ecbf  gcc/config/riscv/riscv-vsetvl.def
  7082a18dbfc574d47bf71f4d50dd30f9  gcc/config/riscv/riscv-zicfilp.cc
! 3ceb4425cbef9f9e4c1dbd2fafa3ab95  gcc/config/riscv/riscv.cc
  7a65f8b385600c8a895a04444c2334d3  gcc/config/riscv/riscv.h
  df70b8958bb33644092fa7f52e8dcb7a  gcc/config/riscv/riscv.md
  011fb3b98a9d049a17db61272a06e9a0  gcc/config/riscv/riscv.opt
*************** bcf728ad2379630774fd5bb529d4ee86  gcc/co
*** 5092,5098 ****
  b5e46305db1116cc1758b504ea37fe74  gcc/config/riscv/vector-bfloat16.md
  88f7597398d0c8b8b87baba5fd207996  gcc/config/riscv/vector-crypto.md
  cf9f38e85752fd2a3ceafd8b1521322a  gcc/config/riscv/vector-iterators.md
! 94a7a4197a9a62a98e2c326c69cc9e88  gcc/config/riscv/vector.md
  18d213c106fe52eebc74017d5ff892ce  gcc/config/riscv/xiangshan.md
  0f64aaa114ab62a1a46f7ac422d6a129  gcc/config/riscv/zc.md
  36cba2444ae9c8f107fee34492bd0ed6  gcc/config/riscv/zicond.md
--- 5098,5104 ----
  b5e46305db1116cc1758b504ea37fe74  gcc/config/riscv/vector-bfloat16.md
  88f7597398d0c8b8b87baba5fd207996  gcc/config/riscv/vector-crypto.md
  cf9f38e85752fd2a3ceafd8b1521322a  gcc/config/riscv/vector-iterators.md
! 3355b711886bf83a6e6370aa54943e95  gcc/config/riscv/vector.md
  18d213c106fe52eebc74017d5ff892ce  gcc/config/riscv/xiangshan.md
  0f64aaa114ab62a1a46f7ac422d6a129  gcc/config/riscv/zc.md
  36cba2444ae9c8f107fee34492bd0ed6  gcc/config/riscv/zicond.md
*************** a9c3cddee4e237141062720b72fe38cd  gcc/co
*** 5600,5606 ****
  5d31df44fc0a5b17beb74ce0ff38e214  gcc/coroutine-passes.cc
  02796caeaa2f14f72dc3c9c23cc97dfc  gcc/coverage.cc
  722fb5fda78e55c5af5da72cad78751f  gcc/coverage.h
! 9eaaa168e88de37c532d5fd7b34810ef  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
--- 5606,5612 ----
  5d31df44fc0a5b17beb74ce0ff38e214  gcc/coroutine-passes.cc
  02796caeaa2f14f72dc3c9c23cc97dfc  gcc/coverage.cc
  722fb5fda78e55c5af5da72cad78751f  gcc/coverage.h
! fd379ac6b0aef5727011b7d10adc6a5c  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
*************** dce6e74658eab6bdf17f4f3b74e84891  gcc/cp
*** 5660,5668 ****
  8e454e3f7746836df899a46698f5af3e  gcc/cp/cxx-pretty-print.cc
  2d4d94b8a1d1c1d26764ae93a8039dda  gcc/cp/cxx-pretty-print.h
  c5f1614ded8bb57480eb7d1afecb7c7c  gcc/cp/cxxapi-data.csv
! 73d36c2af1a2b0069fd3321f4857cba1  gcc/cp/decl.cc
  7f116fdc50b24dcb13cdcf096636aef9  gcc/cp/decl.h
! b60fb404fc796e3de23c680095440d54  gcc/cp/decl2.cc
  691a10b3246d19925433648ba9a4ea9a  gcc/cp/dump.cc
  839ddc69347ac968987974eedc0ea5a7  gcc/cp/error.cc
  856ffef082c6d62b43386d99e03e94b0  gcc/cp/except.cc
--- 5666,5674 ----
  8e454e3f7746836df899a46698f5af3e  gcc/cp/cxx-pretty-print.cc
  2d4d94b8a1d1c1d26764ae93a8039dda  gcc/cp/cxx-pretty-print.h
  c5f1614ded8bb57480eb7d1afecb7c7c  gcc/cp/cxxapi-data.csv
! f07186296ecdd492ac437a19c9c8c96c  gcc/cp/decl.cc
  7f116fdc50b24dcb13cdcf096636aef9  gcc/cp/decl.h
! a1fb87c99967896feccfe593636a2368  gcc/cp/decl2.cc
  691a10b3246d19925433648ba9a4ea9a  gcc/cp/dump.cc
  839ddc69347ac968987974eedc0ea5a7  gcc/cp/error.cc
  856ffef082c6d62b43386d99e03e94b0  gcc/cp/except.cc
*************** aaf76a9b03fd0532d2904aef004fd66a  gcc/cp
*** 5680,5697 ****
  6c77b1fab5f6d146677090285a202a50  gcc/cp/mapper-client.h
  44e22b51797f89c9da996523a6d97f1c  gcc/cp/mapper-resolver.cc
  dba507f47a293a9bc4b13e11d8f5c809  gcc/cp/method.cc
! 52198e1a307b963d696d727675614da2  gcc/cp/module.cc
! d53f79f72261601522449fcf3415c310  gcc/cp/name-lookup.cc
! c4647f229ffc91a8bcff7f05cec7afbf  gcc/cp/name-lookup.h
  e7fe06956aada61bcaae5168ad47a9c1  gcc/cp/operators.def
  813c253a000ee20d8d6598f56edc400e  gcc/cp/optimize.cc
! c04460750dbde08b44f35d6b0c74d10a  gcc/cp/parser.cc
  f6ddd589a7423f07d554dad74c5e43a7  gcc/cp/parser.h
! 2ff28d0cb9d6a17a34c0647bfa71ca6b  gcc/cp/pt.cc
  b606903e35fe6806362fe4eee7a89fef  gcc/cp/ptree.cc
  ee1ddf1e1b9554bb1a10109ce8c6dee5  gcc/cp/rtti.cc
  9c5477f737d2c390510c3fe72454f657  gcc/cp/search.cc
! 539887a6e4dfe0108a43dd06e511bbca  gcc/cp/semantics.cc
  8ccc82546d801360d2ccd8fd2a48b5d6  gcc/cp/std-name-hint.gperf
  bb87dbae9e49b63a73c4afa927a9018e  gcc/cp/std-name-hint.h
  1fe34e428beb7b18d5180400e36d9f86  gcc/cp/tree.cc
--- 5686,5703 ----
  6c77b1fab5f6d146677090285a202a50  gcc/cp/mapper-client.h
  44e22b51797f89c9da996523a6d97f1c  gcc/cp/mapper-resolver.cc
  dba507f47a293a9bc4b13e11d8f5c809  gcc/cp/method.cc
! 664c7b593de980b0455610babc964a9e  gcc/cp/module.cc
! f1f183b4320198a66dd316934a528e05  gcc/cp/name-lookup.cc
! 496f323514612f2e06231cb67428b04e  gcc/cp/name-lookup.h
  e7fe06956aada61bcaae5168ad47a9c1  gcc/cp/operators.def
  813c253a000ee20d8d6598f56edc400e  gcc/cp/optimize.cc
! 26591e3023c9ea05e31c6cfbd2363093  gcc/cp/parser.cc
  f6ddd589a7423f07d554dad74c5e43a7  gcc/cp/parser.h
! 760cfe3026fd465dac78b9f3407e7119  gcc/cp/pt.cc
  b606903e35fe6806362fe4eee7a89fef  gcc/cp/ptree.cc
  ee1ddf1e1b9554bb1a10109ce8c6dee5  gcc/cp/rtti.cc
  9c5477f737d2c390510c3fe72454f657  gcc/cp/search.cc
! 2418a0ec4dbc034514a4126cff75a9e7  gcc/cp/semantics.cc
  8ccc82546d801360d2ccd8fd2a48b5d6  gcc/cp/std-name-hint.gperf
  bb87dbae9e49b63a73c4afa927a9018e  gcc/cp/std-name-hint.h
  1fe34e428beb7b18d5180400e36d9f86  gcc/cp/tree.cc
*************** eea2c218106edc18c40919ad04f90bf8  gcc/cp
*** 5707,5713 ****
  9b5eac8e75a52c0f6080cee20a27587a  gcc/crc-verification.cc
  ec1e9c9456a8530e241079823e2fc126  gcc/crc-verification.h
  9d3c9741dc7aa7fb63e5b4b472a4feb1  gcc/cse.cc
! 4d2f6ca081e1447a5bc287da4f7f1f06  gcc/cselib.cc
  44a1aa31be5edacb5f5644352fbb669c  gcc/cselib.h
  1ded054093de910d9786c62bc4fe8cc6  gcc/cstamp-h.in
  d980e3c4abd7ebfe505123a9fe01e4db  gcc/ctfc.cc
--- 5713,5719 ----
  9b5eac8e75a52c0f6080cee20a27587a  gcc/crc-verification.cc
  ec1e9c9456a8530e241079823e2fc126  gcc/crc-verification.h
  9d3c9741dc7aa7fb63e5b4b472a4feb1  gcc/cse.cc
! 9a6f70c45240207f951e8742aa47ea9c  gcc/cselib.cc
  44a1aa31be5edacb5f5644352fbb669c  gcc/cselib.h
  1ded054093de910d9786c62bc4fe8cc6  gcc/cstamp-h.in
  d980e3c4abd7ebfe505123a9fe01e4db  gcc/ctfc.cc
*************** eb9f3e0ae16be37f2dcd3a2ff36b5d30  gcc/cu
*** 5717,5723 ****
  df0608d254af699b76a227b71cac44c3  gcc/custom-sarif-properties/digraphs.h
  626df1a2167112b2a7b5d92f8acb804a  gcc/custom-sarif-properties/state-graphs.cc
  30bee6e748732780baadc1eed7bfb534  gcc/custom-sarif-properties/state-graphs.h
! 4cd58b042512684d230b9ebc87171263  gcc/d/ChangeLog
  94dbce564aba342900829d11192f8905  gcc/d/ChangeLog-2006
  1a0536d6571bca334bb5c00dbdf257ab  gcc/d/ChangeLog-2007
  362a026d745031260b2e4dd8eba9becc  gcc/d/ChangeLog-2008
--- 5723,5729 ----
  df0608d254af699b76a227b71cac44c3  gcc/custom-sarif-properties/digraphs.h
  626df1a2167112b2a7b5d92f8acb804a  gcc/custom-sarif-properties/state-graphs.cc
  30bee6e748732780baadc1eed7bfb534  gcc/custom-sarif-properties/state-graphs.h
! 824614976dc95289cf54addbb3ea39bc  gcc/d/ChangeLog
  94dbce564aba342900829d11192f8905  gcc/d/ChangeLog-2006
  1a0536d6571bca334bb5c00dbdf257ab  gcc/d/ChangeLog-2007
  362a026d745031260b2e4dd8eba9becc  gcc/d/ChangeLog-2008
*************** ee4c7654f733cefcb73d4fd24f3e1b82  gcc/do
*** 6095,6103 ****
  9512a9fe27682edff7dd2ed171bbb853  gcc/doc/include/gcc-common.texi
  95c90bf85d3eab67f348ee3ce0bf4050  gcc/doc/include/gpl_v3.texi
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
! e0b0489c16fe0a3adc2c75ff70b2fd86  gcc/doc/install.texi
  0f98706361e63fac2c35c2c4491eaac4  gcc/doc/install.texi2html
! 4c39c14bab2d77ce13efb7ec27bc54e6  gcc/doc/invoke.texi
  47f1f55b3595acf670eb6193a0cbd933  gcc/doc/languages.texi
  8783f1b0b6c204d4417b00f3b772beea  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
--- 6101,6109 ----
  9512a9fe27682edff7dd2ed171bbb853  gcc/doc/include/gcc-common.texi
  95c90bf85d3eab67f348ee3ce0bf4050  gcc/doc/include/gpl_v3.texi
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
! 92e92962c982d3290684f9657660ad88  gcc/doc/install.texi
  0f98706361e63fac2c35c2c4491eaac4  gcc/doc/install.texi2html
! b051f5a74b61e587c29a5c1dae82e642  gcc/doc/invoke.texi
  47f1f55b3595acf670eb6193a0cbd933  gcc/doc/languages.texi
  8783f1b0b6c204d4417b00f3b772beea  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
*************** b21182651156de7779948fe8ca2c4160  gcc/dw
*** 6174,6180 ****
  186b01005d892edba3b03fc17bd0dc8f  gcc/dwarf2codeview.h
  990f627cfa0aa26758dc2ffa0422da1b  gcc/dwarf2ctf.cc
  1d0191caafac1774f50a47175d915ea0  gcc/dwarf2ctf.h
! 775ec735081faf89a7d13ea88b27d156  gcc/dwarf2out.cc
  7ff70632352b65c214e02360ed6d6aae  gcc/dwarf2out.h
  fdd976759ee89958c91a4010e53c0f02  gcc/early-remat.cc
  0fa3f12b9f441f701d99e167274a0961  gcc/emit-rtl.cc
--- 6180,6186 ----
  186b01005d892edba3b03fc17bd0dc8f  gcc/dwarf2codeview.h
  990f627cfa0aa26758dc2ffa0422da1b  gcc/dwarf2ctf.cc
  1d0191caafac1774f50a47175d915ea0  gcc/dwarf2ctf.h
! 6d293f92c36f5f40ea6a17021b660bd4  gcc/dwarf2out.cc
  7ff70632352b65c214e02360ed6d6aae  gcc/dwarf2out.h
  fdd976759ee89958c91a4010e53c0f02  gcc/early-remat.cc
  0fa3f12b9f441f701d99e167274a0961  gcc/emit-rtl.cc
*************** b7bf1ecba30babcca6fcc9e9a66bebfb  gcc/fo
*** 6210,6216 ****
  17f1e7f727e08a6e42a5ecbeedca48b5  gcc/fold-const.cc
  09573b86bdb27d2d064ccdd670710fde  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! 48e23b00ac10e27715d92ac317de764b  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
--- 6216,6222 ----
  17f1e7f727e08a6e42a5ecbeedca48b5  gcc/fold-const.cc
  09573b86bdb27d2d064ccdd670710fde  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! b089a352340bdbcdbb2c750447166bfa  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
*************** d1595b2ed8fb2a33f6ce0dc595f4f33c  gcc/fo
*** 6236,6244 ****
  c38eb0f2f19a6cb4b79be761670131e8  gcc/fortran/ChangeLog-2024
  9e0636f92243fb9b3480e27cefc96749  gcc/fortran/ChangeLog.ptr
  db21881c77a22fd3dbfe253c364af5ee  gcc/fortran/Make-lang.in
! 25a2099206e1596859cfc2d787790f32  gcc/fortran/arith.cc
  6b01ec523f3bee8e2469370d106896e3  gcc/fortran/arith.h
! aeababa88343c4300e07c22d78c81533  gcc/fortran/array.cc
  59221f5e105887dce9d0c1b7694aa86f  gcc/fortran/bbt.cc
  a7c1f9d359b6b66b84bfc972f1f828f6  gcc/fortran/check.cc
  aa8168c232dac6107fe372a91bb44a3d  gcc/fortran/class.cc
--- 6242,6250 ----
  c38eb0f2f19a6cb4b79be761670131e8  gcc/fortran/ChangeLog-2024
  9e0636f92243fb9b3480e27cefc96749  gcc/fortran/ChangeLog.ptr
  db21881c77a22fd3dbfe253c364af5ee  gcc/fortran/Make-lang.in
! c125d35d1aa27d0582de1dc5ef408c57  gcc/fortran/arith.cc
  6b01ec523f3bee8e2469370d106896e3  gcc/fortran/arith.h
! b40ca85f52a3624603fd0f0a29313097  gcc/fortran/array.cc
  59221f5e105887dce9d0c1b7694aa86f  gcc/fortran/bbt.cc
  a7c1f9d359b6b66b84bfc972f1f828f6  gcc/fortran/check.cc
  aa8168c232dac6107fe372a91bb44a3d  gcc/fortran/class.cc
*************** aed3aedb6378a970055dff9e11eedc2d  gcc/fo
*** 6251,6268 ****
  b7e224f665bb5044ce35ed09435bd4fb  gcc/fortran/cpp.h
  a232f4d280ad08511e2718281b3d1ab6  gcc/fortran/data.cc
  d85e2f2fc3ee4721563bd47719063fb6  gcc/fortran/data.h
! 92405e5507fefbd4e8a632cf4ab61139  gcc/fortran/decl.cc
  917fd2716f1eef2f47d4f032e14958ad  gcc/fortran/dependency.cc
  70111b1c7592e650c281b513c3cf2f47  gcc/fortran/dependency.h
  029735552d67a599918afceb5c9067aa  gcc/fortran/dump-parse-tree.cc
  fcdf26536d578abd3a720a2579b4def5  gcc/fortran/error.cc
! 057dbc47c0f8aa21e3bd0eae2e718a2c  gcc/fortran/expr.cc
  64cd8af37cf94e944e54f1c1fe1eaef5  gcc/fortran/f95-lang.cc
  5fad9972996846ea1af084cc613ae8b5  gcc/fortran/frontend-passes.cc
  a39f360f255f1ef6dfd91ccefef63e05  gcc/fortran/gfc-diagnostic.def
  bd08c55098f00394b9922e6163c27b92  gcc/fortran/gfc-internals.texi
  94aacc49d064750afb608e1a14969f5a  gcc/fortran/gfortran.h
! 7a8d7d055d41e7124395a6d5e59c9209  gcc/fortran/gfortran.texi
  af66ab40a5434219772b76ad10035e45  gcc/fortran/gfortranspec.cc
  e4fe6ce0303cd182ebd328bdb0ae5743  gcc/fortran/interface.cc
  74d5cc035a8e6ee1fb5826c965c90532  gcc/fortran/intrinsic.cc
--- 6257,6274 ----
  b7e224f665bb5044ce35ed09435bd4fb  gcc/fortran/cpp.h
  a232f4d280ad08511e2718281b3d1ab6  gcc/fortran/data.cc
  d85e2f2fc3ee4721563bd47719063fb6  gcc/fortran/data.h
! d762bc15dad36c43a7650f46323c34da  gcc/fortran/decl.cc
  917fd2716f1eef2f47d4f032e14958ad  gcc/fortran/dependency.cc
  70111b1c7592e650c281b513c3cf2f47  gcc/fortran/dependency.h
  029735552d67a599918afceb5c9067aa  gcc/fortran/dump-parse-tree.cc
  fcdf26536d578abd3a720a2579b4def5  gcc/fortran/error.cc
! 7617494d6a00986d20b6e62ab8e26a70  gcc/fortran/expr.cc
  64cd8af37cf94e944e54f1c1fe1eaef5  gcc/fortran/f95-lang.cc
  5fad9972996846ea1af084cc613ae8b5  gcc/fortran/frontend-passes.cc
  a39f360f255f1ef6dfd91ccefef63e05  gcc/fortran/gfc-diagnostic.def
  bd08c55098f00394b9922e6163c27b92  gcc/fortran/gfc-internals.texi
  94aacc49d064750afb608e1a14969f5a  gcc/fortran/gfortran.h
! 18f34a213c3d17960c758bdfa4802052  gcc/fortran/gfortran.texi
  af66ab40a5434219772b76ad10035e45  gcc/fortran/gfortranspec.cc
  e4fe6ce0303cd182ebd328bdb0ae5743  gcc/fortran/interface.cc
  74d5cc035a8e6ee1fb5826c965c90532  gcc/fortran/intrinsic.cc
*************** cc75a1ff850c3546d6c8156895b54c5a  gcc/fo
*** 6283,6295 ****
  672e1d4135f72ff6f083582ec84123b1  gcc/fortran/matchexp.cc
  763c37f838e32f5ed8ad600157a0d951  gcc/fortran/mathbuiltins.def
  6e89e2e347d7f6e1576cbda0e958b5bd  gcc/fortran/misc.cc
! a5db978e777537ea7ee4d71348b68af0  gcc/fortran/module.cc
! 1de6283bbecfad22709f511bbb8410d0  gcc/fortran/openmp.cc
  97facac1dd9ae327c6c4547b527e4527  gcc/fortran/options.cc
  176e5dd6b8fff96bf0f0c6a696e63ef6  gcc/fortran/parse.cc
  718f4db6bea1b398551c501068f61597  gcc/fortran/parse.h
! c9d22da97e7dd6a7d6a14a49e9b5dcb0  gcc/fortran/primary.cc
! 03b0325ca1be07df9c7d00c404e4439b  gcc/fortran/resolve.cc
  8dc2391850ee95634781b6e296a096f6  gcc/fortran/scanner.cc
  3c39e0eef946c7f557ac375f23b9f3db  gcc/fortran/scanner.h
  d78cc6d6b48b8228757fb8b674f6ad9b  gcc/fortran/simplify.cc
--- 6289,6301 ----
  672e1d4135f72ff6f083582ec84123b1  gcc/fortran/matchexp.cc
  763c37f838e32f5ed8ad600157a0d951  gcc/fortran/mathbuiltins.def
  6e89e2e347d7f6e1576cbda0e958b5bd  gcc/fortran/misc.cc
! c2ff9c82debbc68da75c5a307ef1b138  gcc/fortran/module.cc
! 4872d9bf86b297827b63676cc3271980  gcc/fortran/openmp.cc
  97facac1dd9ae327c6c4547b527e4527  gcc/fortran/options.cc
  176e5dd6b8fff96bf0f0c6a696e63ef6  gcc/fortran/parse.cc
  718f4db6bea1b398551c501068f61597  gcc/fortran/parse.h
! c381d2f08a8a8b647089c5236ed5364a  gcc/fortran/primary.cc
! 0d236ec31473b9315daad5d26c2cf8c9  gcc/fortran/resolve.cc
  8dc2391850ee95634781b6e296a096f6  gcc/fortran/scanner.cc
  3c39e0eef946c7f557ac375f23b9f3db  gcc/fortran/scanner.h
  d78cc6d6b48b8228757fb8b674f6ad9b  gcc/fortran/simplify.cc
*************** d14450908282463ad3a46c36f6148d4d  gcc/fo
*** 6302,6318 ****
  f13dfeafc421dcdcc35ec7a854ae1a77  gcc/fortran/trans-common.cc
  fa8521f4c98868ee5fa7e9dea5a35e37  gcc/fortran/trans-const.cc
  857805820c2a6ac77d2652c610d23de8  gcc/fortran/trans-const.h
! 137cc69ee5526da295758f6d6fbd354e  gcc/fortran/trans-decl.cc
  17146bb3feae81c285b92546d9453423  gcc/fortran/trans-expr.cc
  2889ceeab429a8d9e062daa88b51dd03  gcc/fortran/trans-intrinsic.cc
  2d29342f65aeef2af368527483b2d4f1  gcc/fortran/trans-io.cc
! 903c38f89bedeeda8636b970b82177a8  gcc/fortran/trans-openmp.cc
  cd091509b69239b87561c8695ce522ca  gcc/fortran/trans-stmt.cc
  9caf8a2f93e6cf5e2a567a3aa18f957c  gcc/fortran/trans-stmt.h
  24751fdbf5162757525888384f73dfd7  gcc/fortran/trans-types.cc
  422959ab20fd75df3766a03597227fd2  gcc/fortran/trans-types.h
  47d7a4f95fe5f62d3f8d58763509ad3d  gcc/fortran/trans.cc
! 1a2c63f64bd9b08b64cf30a60250d6ea  gcc/fortran/trans.h
  6f893e67fc7e5f247079bd418e61d1e2  gcc/fortran/trigd_fe.inc
  2ddfa7f2ac232123d67959795d85aaa6  gcc/fortran/types.def
  f574663ce227d0be2e77015c008d708b  gcc/fp-test.cc
--- 6308,6324 ----
  f13dfeafc421dcdcc35ec7a854ae1a77  gcc/fortran/trans-common.cc
  fa8521f4c98868ee5fa7e9dea5a35e37  gcc/fortran/trans-const.cc
  857805820c2a6ac77d2652c610d23de8  gcc/fortran/trans-const.h
! 1bf381029ae74da9d767c99d6e64940d  gcc/fortran/trans-decl.cc
  17146bb3feae81c285b92546d9453423  gcc/fortran/trans-expr.cc
  2889ceeab429a8d9e062daa88b51dd03  gcc/fortran/trans-intrinsic.cc
  2d29342f65aeef2af368527483b2d4f1  gcc/fortran/trans-io.cc
! 47efbf0310b508b8ee3e536751260aca  gcc/fortran/trans-openmp.cc
  cd091509b69239b87561c8695ce522ca  gcc/fortran/trans-stmt.cc
  9caf8a2f93e6cf5e2a567a3aa18f957c  gcc/fortran/trans-stmt.h
  24751fdbf5162757525888384f73dfd7  gcc/fortran/trans-types.cc
  422959ab20fd75df3766a03597227fd2  gcc/fortran/trans-types.h
  47d7a4f95fe5f62d3f8d58763509ad3d  gcc/fortran/trans.cc
! cc062433370f6b8d6b7731c3ced71024  gcc/fortran/trans.h
  6f893e67fc7e5f247079bd418e61d1e2  gcc/fortran/trigd_fe.inc
  2ddfa7f2ac232123d67959795d85aaa6  gcc/fortran/types.def
  f574663ce227d0be2e77015c008d708b  gcc/fp-test.cc
*************** cf3104344cd1bd624fd31423353ea269  gcc/gi
*** 6429,6443 ****
  2267485dd08426f0ba596381f4f4f3ee  gcc/gimple-range-cache.h
  3e4f3306c9eafee14102507900b96dad  gcc/gimple-range-edge.cc
  c8dd21ff63045c1a13e516534e9f26c8  gcc/gimple-range-edge.h
! bb9b07fa9f64bd4a7b02b732ca5043cb  gcc/gimple-range-fold.cc
! fc0a3b03ceae3864b2e655f21c7468ae  gcc/gimple-range-fold.h
  2ab6e680fbd55d50bfc4690e2ecf8a4f  gcc/gimple-range-gori.cc
  db61cb44af184c491426f70b14b72f64  gcc/gimple-range-gori.h
  60c1306ed88dab1ceb0f87187653585f  gcc/gimple-range-infer.cc
  d1b8fdd0fd8c738683e5995bf45cda94  gcc/gimple-range-infer.h
  afe93bca845d66d8f5c8bb4e79507028  gcc/gimple-range-op.cc
  c33a426eeaa6da07a474caf81b43a278  gcc/gimple-range-op.h
! 33d3c148e1b6f1df39688e27f3511fe1  gcc/gimple-range-path.cc
  55a80a9f04099be643d37e29c9ac7d10  gcc/gimple-range-path.h
  f5f2a2bd714b9aba3bf45fbcd137ee4a  gcc/gimple-range-phi.cc
  079db3f6a23a106d51d55dfa751664d3  gcc/gimple-range-phi.h
--- 6435,6449 ----
  2267485dd08426f0ba596381f4f4f3ee  gcc/gimple-range-cache.h
  3e4f3306c9eafee14102507900b96dad  gcc/gimple-range-edge.cc
  c8dd21ff63045c1a13e516534e9f26c8  gcc/gimple-range-edge.h
! 92fd16a2650fbd57ba2c72841e98771d  gcc/gimple-range-fold.cc
! e7ca0edf79f7bcfe8856f81863f47d7d  gcc/gimple-range-fold.h
  2ab6e680fbd55d50bfc4690e2ecf8a4f  gcc/gimple-range-gori.cc
  db61cb44af184c491426f70b14b72f64  gcc/gimple-range-gori.h
  60c1306ed88dab1ceb0f87187653585f  gcc/gimple-range-infer.cc
  d1b8fdd0fd8c738683e5995bf45cda94  gcc/gimple-range-infer.h
  afe93bca845d66d8f5c8bb4e79507028  gcc/gimple-range-op.cc
  c33a426eeaa6da07a474caf81b43a278  gcc/gimple-range-op.h
! 9b17c9e2e81ab747e378d3e9a891675b  gcc/gimple-range-path.cc
  55a80a9f04099be643d37e29c9ac7d10  gcc/gimple-range-path.h
  f5f2a2bd714b9aba3bf45fbcd137ee4a  gcc/gimple-range-phi.cc
  079db3f6a23a106d51d55dfa751664d3  gcc/gimple-range-phi.h
*************** ed9c9a9b8efbcca1621cb38f6a7f739b  gcc/gi
*** 6473,6479 ****
  1835ccd82890f84e5a82ca342d0c5455  gcc/gimple.h
  78067ab7e777ee9d0a105da78655ee19  gcc/gimplify-me.cc
  84814cb09300f3db388dd0d22133ccb4  gcc/gimplify-me.h
! 534cc024b491b58ab70ced23be4c2043  gcc/gimplify.cc
  08a911f7f8b65840f9b57e0e76a2061c  gcc/gimplify.h
  ba3039c0ed9645080c52c0d4bc46096f  gcc/gimplify_reg_info.h
  7df17d7c2bcdff0a474d633a02195544  gcc/ginclude/float.h
--- 6479,6485 ----
  1835ccd82890f84e5a82ca342d0c5455  gcc/gimple.h
  78067ab7e777ee9d0a105da78655ee19  gcc/gimplify-me.cc
  84814cb09300f3db388dd0d22133ccb4  gcc/gimplify-me.h
! 420603212a51051b729affda5b76aedb  gcc/gimplify.cc
  08a911f7f8b65840f9b57e0e76a2061c  gcc/gimplify.h
  ba3039c0ed9645080c52c0d4bc46096f  gcc/gimplify_reg_info.h
  7df17d7c2bcdff0a474d633a02195544  gcc/ginclude/float.h
*************** d7408ac6c915c3e2f58cd40bdb6a0671  gcc/gi
*** 6493,6499 ****
  18dd241fd4e77ac61edc90586b9fb2b6  gcc/ginclude/unwind-arm-common.h
  8d9ecf0d6ef93c79623ce1d27a32a2cb  gcc/ginclude/varargs.h
  b41648f499a7db07e24806aae26998b5  gcc/glimits.h
! 0f7330014d2575d32fa41f31cef967af  gcc/go/ChangeLog
  e697a6a6e7d6942b7375c665c70d34b4  gcc/go/Make-lang.in
  60ea054548c83c7f66170073f9f3e74c  gcc/go/README.gcc
  88217f68368328f3ce651c46f0830df8  gcc/go/config-lang.in
--- 6499,6505 ----
  18dd241fd4e77ac61edc90586b9fb2b6  gcc/ginclude/unwind-arm-common.h
  8d9ecf0d6ef93c79623ce1d27a32a2cb  gcc/ginclude/varargs.h
  b41648f499a7db07e24806aae26998b5  gcc/glimits.h
! 35b46935127001b25372accfafed59d6  gcc/go/ChangeLog
  e697a6a6e7d6942b7375c665c70d34b4  gcc/go/Make-lang.in
  60ea054548c83c7f66170073f9f3e74c  gcc/go/README.gcc
  88217f68368328f3ce651c46f0830df8  gcc/go/config-lang.in
*************** b31732d7a4fe3de8e26b483ab3a44651  gcc/gr
*** 6578,6584 ****
  8585d36b3917e41144ca7ee8a6b5e065  gcc/gsyslimits.h
  053ee4a84e4593c88c088f25e153d1a5  gcc/gtm-builtins.def
  87cc9d25731e0eb84e214143403050c2  gcc/haifa-sched.cc
! 7c43fa42570e69248b3374db9b56b1fa  gcc/hard-reg-set.h
  d6e4aa327744bebf23d0737d5c4122bc  gcc/hash-map-tests.cc
  a7fb406037fcb6153b3c205f2980edde  gcc/hash-map-traits.h
  3b1947d84bdddb973b68b5a989911bd2  gcc/hash-map.h
--- 6584,6590 ----
  8585d36b3917e41144ca7ee8a6b5e065  gcc/gsyslimits.h
  053ee4a84e4593c88c088f25e153d1a5  gcc/gtm-builtins.def
  87cc9d25731e0eb84e214143403050c2  gcc/haifa-sched.cc
! d4abb22ea25bb75f623a81023294a28b  gcc/hard-reg-set.h
  d6e4aa327744bebf23d0737d5c4122bc  gcc/hash-map-tests.cc
  a7fb406037fcb6153b3c205f2980edde  gcc/hash-map-traits.h
  3b1947d84bdddb973b68b5a989911bd2  gcc/hash-map.h
*************** d4930f12a999a28238b013539b631f2f  gcc/ip
*** 6657,6663 ****
  ee440e6aefa2af85a2a7e53c77974413  gcc/ipa-visibility.cc
  32824db5845e283ff117eeb88f4acdf2  gcc/ipa.cc
  c293da53973fb7a7f436f875b73a9753  gcc/ira-build.cc
! d3439ebba5f1f128db67553118a46eca  gcc/ira-color.cc
  d57cb77872c8989b131d3c2c14a685db  gcc/ira-conflicts.cc
  3191757bb3b47c4b71e2e3b2be1b60e4  gcc/ira-costs.cc
  ed94ab1f6976f64c8d20b7b65da14438  gcc/ira-emit.cc
--- 6663,6669 ----
  ee440e6aefa2af85a2a7e53c77974413  gcc/ipa-visibility.cc
  32824db5845e283ff117eeb88f4acdf2  gcc/ipa.cc
  c293da53973fb7a7f436f875b73a9753  gcc/ira-build.cc
! beee9dcc951c396654d44195869c5840  gcc/ira-color.cc
  d57cb77872c8989b131d3c2c14a685db  gcc/ira-conflicts.cc
  3191757bb3b47c4b71e2e3b2be1b60e4  gcc/ira-costs.cc
  ed94ab1f6976f64c8d20b7b65da14438  gcc/ira-emit.cc
*************** f6b72b7aa70bf2902317fd52a231d14e  gcc/lo
*** 6793,6801 ****
  7f27c43d3045c876fd1f60e2dbdb8bb0  gcc/loop-unroll.h
  b54054c495232a416b1cdea9032d1d9f  gcc/lower-subreg.cc
  05bf78e6d3e36587723b1177ffcd9c6e  gcc/lower-subreg.h
! 755a196fed2cd7b5878159035d75b39b  gcc/lra-assigns.cc
  0232e051e662ebb7fd2fa507d9c581b8  gcc/lra-coalesce.cc
! 96404046cf8b0d00538875e9b57ee9df  gcc/lra-constraints.cc
  ebe278d864d3a7e33fbcc46f02926248  gcc/lra-eliminations.cc
  c9f048755e3742fbe86e02e2b4b1eb6d  gcc/lra-int.h
  52ba28cd117bff034bd9a26fe150f692  gcc/lra-lives.cc
--- 6799,6807 ----
  7f27c43d3045c876fd1f60e2dbdb8bb0  gcc/loop-unroll.h
  b54054c495232a416b1cdea9032d1d9f  gcc/lower-subreg.cc
  05bf78e6d3e36587723b1177ffcd9c6e  gcc/lower-subreg.h
! 211eca25f95cc4597f926c35778c41ca  gcc/lra-assigns.cc
  0232e051e662ebb7fd2fa507d9c581b8  gcc/lra-coalesce.cc
! 122b4d014199d491a4cf50d3be0ee24a  gcc/lra-constraints.cc
  ebe278d864d3a7e33fbcc46f02926248  gcc/lra-eliminations.cc
  c9f048755e3742fbe86e02e2b4b1eb6d  gcc/lra-int.h
  52ba28cd117bff034bd9a26fe150f692  gcc/lra-lives.cc
*************** ff9a9ca6ac5fa2e371f831911c148f9b  gcc/lt
*** 6841,6847 ****
  b417a4bd52371186803e70c49d24764d  gcc/m2/COPYING.RUNTIME
  8f0e2cd40e05189ec81232da84bd6e1a  gcc/m2/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/m2/COPYING3.LIB
! 5a7569496f6a5d20cecb4de1341c5b4f  gcc/m2/ChangeLog
  1b9fd55a4978f2f62717ca706fc999f4  gcc/m2/Make-lang.in
  e212443a3231afc28440b22d94debe50  gcc/m2/Make-maintainer.in
  6a74129fda00ca52ba9f953538250c45  gcc/m2/NEWS
--- 6847,6853 ----
  b417a4bd52371186803e70c49d24764d  gcc/m2/COPYING.RUNTIME
  8f0e2cd40e05189ec81232da84bd6e1a  gcc/m2/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/m2/COPYING3.LIB
! f78361ae2b1bf6be04ed68700d264f00  gcc/m2/ChangeLog
  1b9fd55a4978f2f62717ca706fc999f4  gcc/m2/Make-lang.in
  e212443a3231afc28440b22d94debe50  gcc/m2/Make-maintainer.in
  6a74129fda00ca52ba9f953538250c45  gcc/m2/NEWS
*************** f9608e9005487c369e6c38949ab36fa1  gcc/m2
*** 7816,7822 ****
  9c73ce7b15dda9ddf7130eb220aee884  gcc/machmode.def
  550bdb35d0e034ca0050c574ba896d61  gcc/machmode.h
  486412acbbb6de10b080e31410a14f33  gcc/main.cc
! c668205700415bcd5a9e3d746d591b33  gcc/match.pd
  63bf182c7c3a100e101b2129976be89b  gcc/mcf.cc
  795fbbc034a60f5af7e79dbe3bac65a0  gcc/mem-stats-traits.h
  295dcd7618653c13dcf063266752d06f  gcc/mem-stats.h
--- 7822,7828 ----
  9c73ce7b15dda9ddf7130eb220aee884  gcc/machmode.def
  550bdb35d0e034ca0050c574ba896d61  gcc/machmode.h
  486412acbbb6de10b080e31410a14f33  gcc/main.cc
! 09bd26f68c0755db11fa9e6913268f0f  gcc/match.pd
  63bf182c7c3a100e101b2129976be89b  gcc/mcf.cc
  795fbbc034a60f5af7e79dbe3bac65a0  gcc/mem-stats-traits.h
  295dcd7618653c13dcf063266752d06f  gcc/mem-stats.h
*************** db351af3c135e85d5daecadfdff02e4a  gcc/om
*** 7862,7868 ****
  286190bcce78c62804516df6cd0d1684  gcc/omp-expand.h
  9c0c5720928afb3e264aa62d4e9b9cb3  gcc/omp-general.cc
  9ba5023e72c73609347d8584119f8372  gcc/omp-general.h
! cc1e50ba6dc2e08f1b9b516e3a0e5368  gcc/omp-low.cc
  73fb62acbdd74e28aff8cc147ee7fa11  gcc/omp-low.h
  bf774332919d8fc6ad76372ccefd0aa2  gcc/omp-oacc-kernels-decompose.cc
  51e7c46004876244d3f23ab786112c1a  gcc/omp-oacc-neuter-broadcast.cc
--- 7868,7874 ----
  286190bcce78c62804516df6cd0d1684  gcc/omp-expand.h
  9c0c5720928afb3e264aa62d4e9b9cb3  gcc/omp-general.cc
  9ba5023e72c73609347d8584119f8372  gcc/omp-general.h
! bc799bc6ae7feb93c4eb28fcb6a3c272  gcc/omp-low.cc
  73fb62acbdd74e28aff8cc147ee7fa11  gcc/omp-low.h
  bf774332919d8fc6ad76372ccefd0aa2  gcc/omp-oacc-kernels-decompose.cc
  51e7c46004876244d3f23ab786112c1a  gcc/omp-oacc-neuter-broadcast.cc
*************** fccd951e3de91d49d3824e482c12e070  gcc/or
*** 7908,7914 ****
  673ce61076fa80e959fe72ae50291616  gcc/output.h
  c9e6163e1eaa8f82c57f03f76e86da75  gcc/pair-fusion.cc
  b2f692287d25760afcef126c010f7078  gcc/pair-fusion.h
! a5f14f5b1deef6f30081d1896d4e81a3  gcc/params.opt
  2cc794e23d80a8c9f057a7e402c65fb8  gcc/params.opt.urls
  818628b1b793b8f87f62d0c18fd1219a  gcc/pass_manager.h
  38b9f60b5fd192ab2d5c201b4aff3f29  gcc/passes.cc
--- 7914,7920 ----
  673ce61076fa80e959fe72ae50291616  gcc/output.h
  c9e6163e1eaa8f82c57f03f76e86da75  gcc/pair-fusion.cc
  b2f692287d25760afcef126c010f7078  gcc/pair-fusion.h
! bb4d30d4d84d592dc0f626301158e034  gcc/params.opt
  2cc794e23d80a8c9f057a7e402c65fb8  gcc/params.opt.urls
  818628b1b793b8f87f62d0c18fd1219a  gcc/pass_manager.h
  38b9f60b5fd192ab2d5c201b4aff3f29  gcc/passes.cc
*************** f61cb8764111986469375f94416c3930  gcc/re
*** 7987,7993 ****
  cfd72298c4b4412115571bb0330d1cb4  gcc/real.h
  45eaf15130a976ff2f72716853fe77c6  gcc/realmpfr.cc
  ec455f45b6b3263f840fb385563308d7  gcc/realmpfr.h
! 718f543d030c0547d1c5439b92bd842a  gcc/recog.cc
  d6625bf8e7676e7c0d45da5ca515ab06  gcc/recog.h
  d88ebbb33fb2dcd60634dd11046fb909  gcc/ree.cc
  40ff12eae68d7c45fee63cfa20a67634  gcc/reg-notes.def
--- 7993,7999 ----
  cfd72298c4b4412115571bb0330d1cb4  gcc/real.h
  45eaf15130a976ff2f72716853fe77c6  gcc/realmpfr.cc
  ec455f45b6b3263f840fb385563308d7  gcc/realmpfr.h
! 0712323a5910a11cdf17ec32dc1a30a2  gcc/recog.cc
  d6625bf8e7676e7c0d45da5ca515ab06  gcc/recog.h
  d88ebbb33fb2dcd60634dd11046fb909  gcc/ree.cc
  40ff12eae68d7c45fee63cfa20a67634  gcc/reg-notes.def
*************** c08edc659010d9072c249418c1be7fe6  gcc/rt
*** 8047,8053 ****
  ecb31a48caf7998f695601ec7350bdc0  gcc/run-rtl-passes.cc
  c4bc204b62fdb61848c09abf05a60a9d  gcc/run-rtl-passes.h
  add9bd82fcec23469a4d0f7df03d9589  gcc/rust/CONTRIBUTING.md
! 15b0ceb92a062dee89ccc39e4c5a4d62  gcc/rust/ChangeLog
  71972a823341f4ee0b2af7347ef7a633  gcc/rust/Make-lang.in
  f3527e161e6e2827d299c1a928ebe1c6  gcc/rust/README.md
  27f492ab17f50d840e1e0fd32a89c84a  gcc/rust/ast/rust-ast-builder.cc
--- 8053,8059 ----
  ecb31a48caf7998f695601ec7350bdc0  gcc/run-rtl-passes.cc
  c4bc204b62fdb61848c09abf05a60a9d  gcc/run-rtl-passes.h
  add9bd82fcec23469a4d0f7df03d9589  gcc/rust/CONTRIBUTING.md
! 58763dbd50c870e97e91c6776609ede3  gcc/rust/ChangeLog
  71972a823341f4ee0b2af7347ef7a633  gcc/rust/Make-lang.in
  f3527e161e6e2827d299c1a928ebe1c6  gcc/rust/README.md
  27f492ab17f50d840e1e0fd32a89c84a  gcc/rust/ast/rust-ast-builder.cc
*************** e6d36246282c627ce4935b5006882cde  gcc/ru
*** 8088,8094 ****
  b0a8d5728f73b0493b0b4aae04568187  gcc/rust/ast/rust-fmt.cc
  47fa77e4a5e65d5dde6e13fb22489869  gcc/rust/ast/rust-fmt.h
  849c4f62857b225f5709be85f3992b50  gcc/rust/ast/rust-item.h
! d422ca6fdef486f353c824585452e285  gcc/rust/ast/rust-macro.h
  277825a1ab6df255dbe079bb8560e311  gcc/rust/ast/rust-path.cc
  1a331eb0cd7eedec74fbb2ce3677449b  gcc/rust/ast/rust-path.h
  aa85db7e311dbe19dc2be9abadd44aef  gcc/rust/ast/rust-pattern.cc
--- 8094,8100 ----
  b0a8d5728f73b0493b0b4aae04568187  gcc/rust/ast/rust-fmt.cc
  47fa77e4a5e65d5dde6e13fb22489869  gcc/rust/ast/rust-fmt.h
  849c4f62857b225f5709be85f3992b50  gcc/rust/ast/rust-item.h
! 443acf32f91c4929d384f42d0360e19f  gcc/rust/ast/rust-macro.h
  277825a1ab6df255dbe079bb8560e311  gcc/rust/ast/rust-path.cc
  1a331eb0cd7eedec74fbb2ce3677449b  gcc/rust/ast/rust-path.h
  aa85db7e311dbe19dc2be9abadd44aef  gcc/rust/ast/rust-pattern.cc
*************** bd1497a225bbe26dd01b8aef8b89cf3f  gcc/ru
*** 8130,8136 ****
  3a834a862ca7f5516856d25250d4f89e  gcc/rust/backend/rust-compile-var-decl.h
  55c4d864e83808cea66fab2e7e5aee72  gcc/rust/backend/rust-compile.cc
  0de4696fca9f7f20e245ed49dbd8bed7  gcc/rust/backend/rust-compile.h
! 80c8ab121ed5ee8cc9d7e64e280aeb82  gcc/rust/backend/rust-constexpr.cc
  8b7d1489d3387b799f0272f52df62581  gcc/rust/backend/rust-constexpr.h
  bef8332d7c99228e46b17e35e62ab385  gcc/rust/backend/rust-mangle-legacy.cc
  ded63052cb7097de9c2443746c403f00  gcc/rust/backend/rust-mangle-v0.cc
--- 8136,8142 ----
  3a834a862ca7f5516856d25250d4f89e  gcc/rust/backend/rust-compile-var-decl.h
  55c4d864e83808cea66fab2e7e5aee72  gcc/rust/backend/rust-compile.cc
  0de4696fca9f7f20e245ed49dbd8bed7  gcc/rust/backend/rust-compile.h
! 53b4d6a019435dade0320636db64f287  gcc/rust/backend/rust-constexpr.cc
  8b7d1489d3387b799f0272f52df62581  gcc/rust/backend/rust-constexpr.h
  bef8332d7c99228e46b17e35e62ab385  gcc/rust/backend/rust-mangle-legacy.cc
  ded63052cb7097de9c2443746c403f00  gcc/rust/backend/rust-mangle-v0.cc
*************** c9c06fa597a0b2b1ec0dda42fa4ad8ed  gcc/ru
*** 8226,8234 ****
  7468e1931cb87be149fbd15a4134671d  gcc/rust/checks/errors/feature/contrib/regen
  b8fba4504a2b9ad056f96586890f1762  gcc/rust/checks/errors/feature/contrib/scan.l
  7f92e0421f9df0fdd357ad53f9ada746  gcc/rust/checks/errors/feature/rust-feature-defs.h
! b7d6dc0e990163d6829e9484853b835e  gcc/rust/checks/errors/feature/rust-feature-gate.cc
! 5a932cefc939038ecbf29a5e10b317d5  gcc/rust/checks/errors/feature/rust-feature-gate.h
! ae954febfbfdb3359fab980b0f12da47  gcc/rust/checks/errors/feature/rust-feature.cc
  78fb7bf3a240e4fffe28f419a321bb7a  gcc/rust/checks/errors/feature/rust-feature.h
  7aea75e33b055d67c484a9a5c0714b94  gcc/rust/checks/errors/privacy/rust-privacy-check.cc
  3da657013b217061fe50f867abad385d  gcc/rust/checks/errors/privacy/rust-privacy-check.h
--- 8232,8240 ----
  7468e1931cb87be149fbd15a4134671d  gcc/rust/checks/errors/feature/contrib/regen
  b8fba4504a2b9ad056f96586890f1762  gcc/rust/checks/errors/feature/contrib/scan.l
  7f92e0421f9df0fdd357ad53f9ada746  gcc/rust/checks/errors/feature/rust-feature-defs.h
! 51b431be41a832bf7cdbfb080bbad366  gcc/rust/checks/errors/feature/rust-feature-gate.cc
! d80e5d5c1146c21140604dee7cae69e1  gcc/rust/checks/errors/feature/rust-feature-gate.h
! 8eefb7a89549d91fdecb7f7714ef52da  gcc/rust/checks/errors/feature/rust-feature.cc
  78fb7bf3a240e4fffe28f419a321bb7a  gcc/rust/checks/errors/feature/rust-feature.h
  7aea75e33b055d67c484a9a5c0714b94  gcc/rust/checks/errors/privacy/rust-privacy-check.cc
  3da657013b217061fe50f867abad385d  gcc/rust/checks/errors/privacy/rust-privacy-check.h
*************** a8c3fffdd59e62e11f9ae5c1394ea607  gcc/ru
*** 8284,8290 ****
  81e2b0e997b5a9d4a7e99b81fa071334  gcc/rust/expand/rust-derive.h
  2bf0b3ec8f96214e9e951a12aa0a2bb8  gcc/rust/expand/rust-expand-format-args.cc
  3212518ba7ade95bb86b3581ea623f4f  gcc/rust/expand/rust-expand-format-args.h
! 61f942e3bc1c240c767f00e1be34e176  gcc/rust/expand/rust-expand-visitor.cc
  4d58b7326148b1b5c70c40b5ba68f03e  gcc/rust/expand/rust-expand-visitor.h
  a24c9465702c5bb64a467cc4f251ec38  gcc/rust/expand/rust-macro-builtins-asm.cc
  48269c7df7dead67e4185d80b217a76a  gcc/rust/expand/rust-macro-builtins-asm.h
--- 8290,8296 ----
  81e2b0e997b5a9d4a7e99b81fa071334  gcc/rust/expand/rust-derive.h
  2bf0b3ec8f96214e9e951a12aa0a2bb8  gcc/rust/expand/rust-expand-format-args.cc
  3212518ba7ade95bb86b3581ea623f4f  gcc/rust/expand/rust-expand-format-args.h
! fc28dd7b3c2b01bde83fedc493446404  gcc/rust/expand/rust-expand-visitor.cc
  4d58b7326148b1b5c70c40b5ba68f03e  gcc/rust/expand/rust-expand-visitor.h
  a24c9465702c5bb64a467cc4f251ec38  gcc/rust/expand/rust-macro-builtins-asm.cc
  48269c7df7dead67e4185d80b217a76a  gcc/rust/expand/rust-macro-builtins-asm.h
*************** e253e39de6ea2a67018f97fc8e838ef5  gcc/ru
*** 8301,8307 ****
  26a6c99fd51145137f378321795b869d  gcc/rust/expand/rust-macro-builtins.cc
  b0344bc54018de3abfa44322f6262176  gcc/rust/expand/rust-macro-builtins.h
  4fa665fac04b4ae19d1c2dabf6ca0821  gcc/rust/expand/rust-macro-expand.cc
! 7be3a6a907b3d4339bb5363c99a5f39c  gcc/rust/expand/rust-macro-expand.h
  b4b31e238293e868394fdf9247353b30  gcc/rust/expand/rust-macro-invoc-lexer.cc
  df22bd0c18e9d6037a1dbfbd733f009a  gcc/rust/expand/rust-macro-invoc-lexer.h
  b50cebfc8057c27e0e1171b5016f9c17  gcc/rust/expand/rust-macro-substitute-ctx.cc
--- 8307,8313 ----
  26a6c99fd51145137f378321795b869d  gcc/rust/expand/rust-macro-builtins.cc
  b0344bc54018de3abfa44322f6262176  gcc/rust/expand/rust-macro-builtins.h
  4fa665fac04b4ae19d1c2dabf6ca0821  gcc/rust/expand/rust-macro-expand.cc
! a015fbe3c7e78312ee1a662ac22b8025  gcc/rust/expand/rust-macro-expand.h
  b4b31e238293e868394fdf9247353b30  gcc/rust/expand/rust-macro-invoc-lexer.cc
  df22bd0c18e9d6037a1dbfbd733f009a  gcc/rust/expand/rust-macro-invoc-lexer.h
  b50cebfc8057c27e0e1171b5016f9c17  gcc/rust/expand/rust-macro-substitute-ctx.cc
*************** fa7c267c70f0094382b7b3df35e83412  gcc/ru
*** 8373,8379 ****
  e090436833a0ec80b591d0e2b8d0276b  gcc/rust/lang.opt
  9bbbeb77fd5f1d0a5933a1f5f8e137e8  gcc/rust/lang.opt.urls
  4f1a01d5a1d9c4db6498642d7194185e  gcc/rust/lex/rust-input-source.h
! de0e77e8be169f17314f88d5cf9c8dde  gcc/rust/lex/rust-lex.cc
  dff64547611254963c80197402f43560  gcc/rust/lex/rust-lex.h
  1f730a66d38140f8e1c34d3ed31d8128  gcc/rust/lex/rust-token.cc
  8404a81273a40a4b226acc1d54ae58ff  gcc/rust/lex/rust-token.h
--- 8379,8385 ----
  e090436833a0ec80b591d0e2b8d0276b  gcc/rust/lang.opt
  9bbbeb77fd5f1d0a5933a1f5f8e137e8  gcc/rust/lang.opt.urls
  4f1a01d5a1d9c4db6498642d7194185e  gcc/rust/lex/rust-input-source.h
! e33935e366fcf35231d6729937119c74  gcc/rust/lex/rust-lex.cc
  dff64547611254963c80197402f43560  gcc/rust/lex/rust-lex.h
  1f730a66d38140f8e1c34d3ed31d8128  gcc/rust/lex/rust-token.cc
  8404a81273a40a4b226acc1d54ae58ff  gcc/rust/lex/rust-token.h
*************** dcbc600defe89f418c72fb56de980c97  gcc/ru
*** 8390,8396 ****
  d32fa6f6e6b4f85681679a48b9143b49  gcc/rust/parse/rust-parse-impl-lexer.cc
  512507c7858c53e9bcb25b431891ced3  gcc/rust/parse/rust-parse-impl-macro.cc
  eadcb6e38b643a9b344ba845b7eaa4b0  gcc/rust/parse/rust-parse-impl-proc-macro.cc
! 743cac393649d07257dfa1e6b68b5f68  gcc/rust/parse/rust-parse-impl.h
  d60ac257492f0b2d13c8c305707dd04a  gcc/rust/parse/rust-parse.cc
  efd8c95f4749b7137731fe544b287e0f  gcc/rust/parse/rust-parse.h
  d5113906116ffd33fb4c45243a97fb67  gcc/rust/resolve/rust-ast-resolve.h
--- 8396,8402 ----
  d32fa6f6e6b4f85681679a48b9143b49  gcc/rust/parse/rust-parse-impl-lexer.cc
  512507c7858c53e9bcb25b431891ced3  gcc/rust/parse/rust-parse-impl-macro.cc
  eadcb6e38b643a9b344ba845b7eaa4b0  gcc/rust/parse/rust-parse-impl-proc-macro.cc
! ddf1dd50e1e8a44073768831518757a0  gcc/rust/parse/rust-parse-impl.h
  d60ac257492f0b2d13c8c305707dd04a  gcc/rust/parse/rust-parse.cc
  efd8c95f4749b7137731fe544b287e0f  gcc/rust/parse/rust-parse.h
  d5113906116ffd33fb4c45243a97fb67  gcc/rust/resolve/rust-ast-resolve.h
*************** d276acba4372c6be86c88ab32a1a2e8b  gcc/ru
*** 8520,8527 ****
  312caaf1a11f85ba3561fcdc63801d54  gcc/rust/util/rust-edition.h
  7066a7ab173c77ab70f790914031570a  gcc/rust/util/rust-ggc.cc
  3232b843745603441d2d4e56e8c90abd  gcc/rust/util/rust-ggc.h
! f1e54716aafdf7bcb4965774a7413845  gcc/rust/util/rust-hir-map.cc
! eb54f8a12b64f1998c472587b2a373ac  gcc/rust/util/rust-hir-map.h
  88c8ae4d133ecd3a043fc12f4fe69091  gcc/rust/util/rust-identifier.h
  e19359a7d7b629c25d7bda5118df43da  gcc/rust/util/rust-inline-visitor.h
  c8834665fd10b27b0d346b0feb8e0c75  gcc/rust/util/rust-keyword-values.cc
--- 8526,8533 ----
  312caaf1a11f85ba3561fcdc63801d54  gcc/rust/util/rust-edition.h
  7066a7ab173c77ab70f790914031570a  gcc/rust/util/rust-ggc.cc
  3232b843745603441d2d4e56e8c90abd  gcc/rust/util/rust-ggc.h
! 96d78450c9aacd021cd66239d1e5fa6f  gcc/rust/util/rust-hir-map.cc
! 67e6719bf9daab58452edfc32e67a95a  gcc/rust/util/rust-hir-map.h
  88c8ae4d133ecd3a043fc12f4fe69091  gcc/rust/util/rust-identifier.h
  e19359a7d7b629c25d7bda5118df43da  gcc/rust/util/rust-inline-visitor.h
  c8834665fd10b27b0d346b0feb8e0c75  gcc/rust/util/rust-keyword-values.cc
*************** fdc04e5af7ee387dce07c6ba9a99eaa8  gcc/se
*** 8574,8580 ****
  50d9999185408bcae454174489317b68  gcc/signop.h
  97a13c24fa48c474198b5767f228fd93  gcc/simple-diagnostic-path.cc
  4daee3acc61f789d9c4c04a27a5bb351  gcc/simple-diagnostic-path.h
! 21cc9d616e9a0c371691d099704ea9f0  gcc/simplify-rtx.cc
  456e0937ae4b3a0f49fd44fb0d05eb52  gcc/sort.cc
  599fc125220850c86939202313a6f733  gcc/sparseset.cc
  430469e71b555502fe14de847bb52093  gcc/sparseset.h
--- 8580,8586 ----
  50d9999185408bcae454174489317b68  gcc/signop.h
  97a13c24fa48c474198b5767f228fd93  gcc/simple-diagnostic-path.cc
  4daee3acc61f789d9c4c04a27a5bb351  gcc/simple-diagnostic-path.h
! 8a547e417a1cfa27447596aa39d84541  gcc/simplify-rtx.cc
  456e0937ae4b3a0f49fd44fb0d05eb52  gcc/sort.cc
  599fc125220850c86939202313a6f733  gcc/sparseset.cc
  430469e71b555502fe14de847bb52093  gcc/sparseset.h
*************** b1497a03867668af210c32280876fdd7  gcc/sy
*** 8628,8634 ****
  b3ba747676feafec77aa6befa2dec6f0  gcc/targhooks.cc
  94a98d77cef80b0f949fc6d206067e2e  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! cac2009355e4194c66abc512be12bb21  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
--- 8634,8640 ----
  b3ba747676feafec77aa6befa2dec6f0  gcc/targhooks.cc
  94a98d77cef80b0f949fc6d206067e2e  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 599e4091bb1bf7358bfb4c1819e959b8  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
*************** f9a6444ebc4a1c55c546158d2ff21ead  gcc/te
*** 19531,19536 ****
--- 19537,19544 ----
  0f10333a8a4f6bda70dd11c725bbcfdb  gcc/testsuite/c-c++-common/gomp/doacross-6.c
  a31dd2f434001d3bdc2d6760064602a4  gcc/testsuite/c-c++-common/gomp/doacross-7.c
  db5184f418f1fcff4229563335cdcac7  gcc/testsuite/c-c++-common/gomp/doacross-8.c
+ 6c455748c0cbe2d54888be9d633d0fc8  gcc/testsuite/c-c++-common/gomp/dyn_groupprivate-1.c
+ 782e0dbe604e4a5d5d27115b264395ec  gcc/testsuite/c-c++-common/gomp/dyn_groupprivate-2.c
  5a70f931f3d1911a210ec6155240d4dc  gcc/testsuite/c-c++-common/gomp/element-1.c
  56193fbd64f093dd570f7f9543fd8e9e  gcc/testsuite/c-c++-common/gomp/error-1.c
  fa360c10a44a15ddb815a286fa0f2658  gcc/testsuite/c-c++-common/gomp/error-2.c
*************** ecc0ef1a879b400ac24f5ea090a2027c  gcc/te
*** 23266,23271 ****
--- 23274,23280 ----
  2c4b73fa235be0a7a7f59ce113d65ff8  gcc/testsuite/g++.dg/cpp0x/alias-decl-80.C
  0fea677a266ad89646463d41e4df0566  gcc/testsuite/g++.dg/cpp0x/alias-decl-80296.C
  2b0ac9ee7e77902ee76b92dfbfcc37b3  gcc/testsuite/g++.dg/cpp0x/alias-decl-9.C
+ a80f2e9cdb6d31d5f4e4ff72bda47c3c  gcc/testsuite/g++.dg/cpp0x/alias-decl-conv1.C
  0c857f35d307877fbdc35abb07bb117c  gcc/testsuite/g++.dg/cpp0x/alias-decl-dr1286.C
  50768d1b6db3a8fc26c4cfb6c5811b35  gcc/testsuite/g++.dg/cpp0x/alias-decl-dr1286a.C
  ef369c9d8dbd4b3ba5c764f92fc53a46  gcc/testsuite/g++.dg/cpp0x/alias-decl-dr1286b.C
*************** f1d13de23ea9a3bba72c099df16d0488  gcc/te
*** 27810,27816 ****
  51c2c48d440225158c8134ad5f83b650  gcc/testsuite/g++.dg/cpp26/decomp15.C
  e50ef6879fd77fa451a304fa6b752d92  gcc/testsuite/g++.dg/cpp26/decomp16.C
  2b4e0df8744a05194531491cc8c05fd6  gcc/testsuite/g++.dg/cpp26/decomp17.C
! 9f1d07228302dff9f66c8dc26130d78a  gcc/testsuite/g++.dg/cpp26/decomp18.C
  37526de4bae6bf609b32dfaab227d64a  gcc/testsuite/g++.dg/cpp26/decomp19.C
  70cb6b928ead9bbcb58e49f48aac09a0  gcc/testsuite/g++.dg/cpp26/decomp2.C
  9f93677ac517423638d9bafaca9e849f  gcc/testsuite/g++.dg/cpp26/decomp20.C
--- 27819,27825 ----
  51c2c48d440225158c8134ad5f83b650  gcc/testsuite/g++.dg/cpp26/decomp15.C
  e50ef6879fd77fa451a304fa6b752d92  gcc/testsuite/g++.dg/cpp26/decomp16.C
  2b4e0df8744a05194531491cc8c05fd6  gcc/testsuite/g++.dg/cpp26/decomp17.C
! db444769766fb1ab08540d5324b93f8f  gcc/testsuite/g++.dg/cpp26/decomp18.C
  37526de4bae6bf609b32dfaab227d64a  gcc/testsuite/g++.dg/cpp26/decomp19.C
  70cb6b928ead9bbcb58e49f48aac09a0  gcc/testsuite/g++.dg/cpp26/decomp2.C
  9f93677ac517423638d9bafaca9e849f  gcc/testsuite/g++.dg/cpp26/decomp20.C
*************** bcf9b6873e48870b8f6014b5da708cd3  gcc/te
*** 30704,30709 ****
--- 30713,30720 ----
  a17829a2880dfc08bbe88a800e8da670  gcc/testsuite/g++.dg/ext/pr114691.C
  8151d79e58fcd890533f5c325f86ae37  gcc/testsuite/g++.dg/ext/pr116545.C
  82346a2eb86bd9aa0f204ae959eb3b33  gcc/testsuite/g++.dg/ext/pr121678.C
+ f731bf05a8deeffa55903ea3d567cb6e  gcc/testsuite/g++.dg/ext/pr122836.C
+ 5844b6c78ee1dbd691f8bebe14ae2556  gcc/testsuite/g++.dg/ext/pr122860.C
  210171cdbd9571de1bfd894e6c809efa  gcc/testsuite/g++.dg/ext/pr17577.C
  d017f3273bbed79c882146d070c763a4  gcc/testsuite/g++.dg/ext/pr17577.h
  eb1830f7b92ca604956f6b57b3a6d3f4  gcc/testsuite/g++.dg/ext/pr27019.C
*************** f618981833f0b9938b95ee1745d25c54  gcc/te
*** 31089,31096 ****
  6a2ed5ca795d47c333efae7c155c43b1  gcc/testsuite/g++.dg/gcov/gcov.py
  28167c93ffea74cb328ff3cd087d643a  gcc/testsuite/g++.dg/gcov/gcovpart-12b.C
  4486858dfdc63ab6e7f3c42c2b6b11ed  gcc/testsuite/g++.dg/gcov/loop.C
! 4b7602a5329796aad4278cddb665ec25  gcc/testsuite/g++.dg/gcov/pr16855-priority.C
! d7a0158c08e0cb831164f3f727141d1c  gcc/testsuite/g++.dg/gcov/pr16855.C
  62015e4e627cd00c71bb0efd21af8d60  gcc/testsuite/g++.dg/gcov/pr84548.C
  c8c006792fd429653df69e08d74da961  gcc/testsuite/g++.dg/gcov/pr86109.C
  d2e89a1ccbe138ac6c1ad8359bee03c4  gcc/testsuite/g++.dg/gcov/pr88045.C
--- 31100,31107 ----
  6a2ed5ca795d47c333efae7c155c43b1  gcc/testsuite/g++.dg/gcov/gcov.py
  28167c93ffea74cb328ff3cd087d643a  gcc/testsuite/g++.dg/gcov/gcovpart-12b.C
  4486858dfdc63ab6e7f3c42c2b6b11ed  gcc/testsuite/g++.dg/gcov/loop.C
! 815596dd35955e37e62cd4175d5c91e7  gcc/testsuite/g++.dg/gcov/pr16855-priority.C
! 68408b717407ee6a0522ffcc0ab8c513  gcc/testsuite/g++.dg/gcov/pr16855.C
  62015e4e627cd00c71bb0efd21af8d60  gcc/testsuite/g++.dg/gcov/pr84548.C
  c8c006792fd429653df69e08d74da961  gcc/testsuite/g++.dg/gcov/pr86109.C
  d2e89a1ccbe138ac6c1ad8359bee03c4  gcc/testsuite/g++.dg/gcov/pr88045.C
*************** f8d194a431c9313cc0e794b5fcc15ac6  gcc/te
*** 32876,32881 ****
--- 32887,32895 ----
  fca1ecf794ece1959ac2707634e0c851  gcc/testsuite/g++.dg/lto/pr121831_0.C
  1e3973e8017bb39e0770b6c9334d9d09  gcc/testsuite/g++.dg/lto/pr121831_1.C
  d15d49ffd84e37cdcbb1e23564c8c44e  gcc/testsuite/g++.dg/lto/pr121935_0.C
+ 33f0830281538872a0dd25b4e22f1759  gcc/testsuite/g++.dg/lto/pr122905.h
+ da4bb7bd422fbc928dca8b82012b7265  gcc/testsuite/g++.dg/lto/pr122905_0.C
+ 7be91aa845a7810b3947d606a1ffa169  gcc/testsuite/g++.dg/lto/pr122905_1.C
  ba9b686c163762488051ec4094a838b2  gcc/testsuite/g++.dg/lto/pr40818_0.C
  08a786b250f802e56e458c7d60a358fc  gcc/testsuite/g++.dg/lto/pr42987_0.C
  1b56fef803fe85ec97121919ad3ba2b9  gcc/testsuite/g++.dg/lto/pr42987_1.C
*************** d31a2e1fa6bae66ecd393c8e83384c1b  gcc/te
*** 33470,33475 ****
--- 33484,33491 ----
  ba983ce4c51c5220267205b32b9a3909  gcc/testsuite/g++.dg/modules/friend-10_b.C
  8de81f124e74f55feafdb57efba71418  gcc/testsuite/g++.dg/modules/friend-11_a.C
  a71ad222ec453dfae941cc6a9d0495d6  gcc/testsuite/g++.dg/modules/friend-11_b.C
+ 95ac1711696c30b44bd143d707a63055  gcc/testsuite/g++.dg/modules/friend-12_a.C
+ 7207ee63d7d3c126dd8553f8489901a4  gcc/testsuite/g++.dg/modules/friend-12_b.C
  8fcab2cff53b2d8a5b252819cfc97930  gcc/testsuite/g++.dg/modules/friend-1_a.C
  965df98a384b69dc039aa01146450993  gcc/testsuite/g++.dg/modules/friend-1_b.C
  7cf2445dd7db33a1920c890fa101e827  gcc/testsuite/g++.dg/modules/friend-1_c.C
*************** f92c13ff85afb4a0161600875f67c936  gcc/te
*** 33981,33986 ****
--- 33997,34006 ----
  70c50f0547e248c3eace148df0ffe4d5  gcc/testsuite/g++.dg/modules/namespace-14_d.C
  7f12f718e48c2e857ea3368e196a30e3  gcc/testsuite/g++.dg/modules/namespace-15_a.C
  b02e012e3fe6df1deadb2b6c08aee478  gcc/testsuite/g++.dg/modules/namespace-15_b.C
+ 9d938581c2f0bbacf98f05762e4ca2ec  gcc/testsuite/g++.dg/modules/namespace-16_a.C
+ a9638b26b6321d94457e9e43bed55221  gcc/testsuite/g++.dg/modules/namespace-16_b.C
+ 373b62f20b7106a4cb635969e59b28c7  gcc/testsuite/g++.dg/modules/namespace-16_c.C
+ e28683c6caacdc8a9428c0c5663e47f1  gcc/testsuite/g++.dg/modules/namespace-16_d.C
  ebce3d8effe71472ad6b1910c0b435f6  gcc/testsuite/g++.dg/modules/namespace-1_a.C
  c34c17e18223f5c84607e68a5f2dd81a  gcc/testsuite/g++.dg/modules/namespace-1_b.C
  d35b80efe49eb34a9b0c6be1e97ef76a  gcc/testsuite/g++.dg/modules/namespace-1_c.C
*************** e7211c828135e4ab4ce9ebe66058eea0  gcc/te
*** 44432,44437 ****
--- 44452,44458 ----
  ca0bd49ed993de454aefcc3d00bc2b01  gcc/testsuite/g++.target/i386/avx2-pr54700-1.C
  79f312558051b9ebb3cdeaed37f41da0  gcc/testsuite/g++.target/i386/avx2-pr54700-2.C
  c20792613e2de72bf223a9deb9981150  gcc/testsuite/g++.target/i386/avx512-pr115517.C
+ 7e57525fdad02c8211a0b10c338753fd  gcc/testsuite/g++.target/i386/avx512-pr71921.C
  734b3ce37270b7f5daf230629716c5c2  gcc/testsuite/g++.target/i386/avx512bw-pr96246-1.C
  b55cebf22ef53505e15f00d8c547efc0  gcc/testsuite/g++.target/i386/avx512bw-pr96246-2.C
  4a44f470ea24c20123902146bd5273ad  gcc/testsuite/g++.target/i386/avx512bw-pr98537-1.C
*************** ea015573ee8ddabae38c2a615f8228fb  gcc/te
*** 44629,44634 ****
--- 44650,44656 ----
  d127e2f7300195708178a6cec8648544  gcc/testsuite/g++.target/i386/pr122446-amxmovrs.C
  f5a1d06c17cacf90f627c83c8b800a78  gcc/testsuite/g++.target/i386/pr122446-amxtf32.C
  ffbb5e0bd5668625c6d5cef769228118  gcc/testsuite/g++.target/i386/pr122446-amxtile.C
+ 59940f4c4aa7fabb09c136a75c51dbfc  gcc/testsuite/g++.target/i386/pr122906-1.C
  55fb67abf6517f92b1a0240d2c06b5c5  gcc/testsuite/g++.target/i386/pr35513-1.C
  14dde546e4eefec7aa6d1ac41261cb16  gcc/testsuite/g++.target/i386/pr35513-2.C
  1c706f97b6d93c0124dc4a203c98f6d2  gcc/testsuite/g++.target/i386/pr57362.C
*************** db3c3a9d9f798eff6348f0813dccc376  gcc/te
*** 44636,44641 ****
--- 44658,44664 ----
  e8a006e5050e191010d1a6ecff4873a3  gcc/testsuite/g++.target/i386/pr58372.C
  a9182e6d928d363b56a91bded6231bb9  gcc/testsuite/g++.target/i386/pr59492.C
  43859c370dc310a07fe27e045648c6cd  gcc/testsuite/g++.target/i386/pr61747.C
+ 3096cea7de83e629a794ba91b285a279  gcc/testsuite/g++.target/i386/pr71921.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
*************** b7150a91a8e64c0a2f8d47a9f857fd6e  gcc/te
*** 48211,48216 ****
--- 48234,48240 ----
  e88a36f4cba0e85d5491d4b566b19508  gcc/testsuite/gcc.c-torture/execute/pr119428.c
  6cd050f88ca0f122ca3d062c32ebb9cf  gcc/testsuite/gcc.c-torture/execute/pr120630.c
  eda2af339f8dd266a02b2d61a5444a03  gcc/testsuite/gcc.c-torture/execute/pr120677.c
+ 529fc2a1e92dc790d3766cd8554fc89c  gcc/testsuite/gcc.c-torture/execute/pr122943.c
  80c02c70a0b6b91b06942e395c34960f  gcc/testsuite/gcc.c-torture/execute/pr15262-1.c
  987c511633ad57d9f08d352eb9512819  gcc/testsuite/gcc.c-torture/execute/pr15262-2.c
  f7f514cfbd791b0c828e0710493b0910  gcc/testsuite/gcc.c-torture/execute/pr15262.c
*************** f60c7b0f361b02f30b6eca3c14c7a5ed  gcc/te
*** 50386,50391 ****
--- 50410,50416 ----
  cc74ad07bc21697eab1ac4bdbb25f0f5  gcc/testsuite/gcc.dg/asm-hard-reg-6.c
  1a27715b4b755fb46b13300fd15e4690  gcc/testsuite/gcc.dg/asm-hard-reg-7.c
  518c17261bb078d2460f83de54b6ca4e  gcc/testsuite/gcc.dg/asm-hard-reg-8.c
+ ab980f0237f5796fbeebe76bc741601c  gcc/testsuite/gcc.dg/asm-hard-reg-9.c
  d91cbead950670110f9f5469da62fe7e  gcc/testsuite/gcc.dg/asm-hard-reg-error-1.c
  9db82ff602331dd327582c106428d7c7  gcc/testsuite/gcc.dg/asm-hard-reg-error-2.c
  b7d7ad2352b64cd5b5f59527de4a95d9  gcc/testsuite/gcc.dg/asm-hard-reg-error-3.c
*************** c22f32307f45a41035662597ec36c291  gcc/te
*** 54156,54161 ****
--- 54181,54187 ----
  2d95286bb836d5694f1e829fdd422c4d  gcc/testsuite/gcc.dg/gimplefe-55.c
  e79c01b4e6117435c5f54b610c2bfb67  gcc/testsuite/gcc.dg/gimplefe-56.c
  d446f4f9020b0aa4ff3a348d62c0952b  gcc/testsuite/gcc.dg/gimplefe-57.c
+ 10d7a7e88f50cf802d3b03ff88b40d61  gcc/testsuite/gcc.dg/gimplefe-58.c
  003508c84556e4dd5119101f7dec73f6  gcc/testsuite/gcc.dg/gimplefe-6.c
  8537131248e8cadb5cf09db5f3a17687  gcc/testsuite/gcc.dg/gimplefe-7.c
  db9f8ce39b07fae0c4fd30c72f382e9f  gcc/testsuite/gcc.dg/gimplefe-8.c
*************** d9a1f43ca6ac2a073e22bbbf243f300b  gcc/te
*** 54459,54465 ****
  cd38ec3195ea21395e6d6950ff620410  gcc/testsuite/gcc.dg/gomp/pr104532.c
  0c8d7b49664fa54dbd4054b13e8a3133  gcc/testsuite/gcc.dg/gomp/pr104757.c
  a633f425b4fdde0a7b6f0aa6aa2f2754  gcc/testsuite/gcc.dg/gomp/pr108435.c
! 20a3ca0acce7dbf1520d374c9470fc34  gcc/testsuite/gcc.dg/gomp/pr110485.c
  7d1b62adb42c340855e993cf480a19ec  gcc/testsuite/gcc.dg/gomp/pr114075.c
  ec1d4016ba60492b723014b99d2804e6  gcc/testsuite/gcc.dg/gomp/pr121453.c
  7a163e65fe52b23fc85f2daa18c442ee  gcc/testsuite/gcc.dg/gomp/pr25874.c
--- 54485,54491 ----
  cd38ec3195ea21395e6d6950ff620410  gcc/testsuite/gcc.dg/gomp/pr104532.c
  0c8d7b49664fa54dbd4054b13e8a3133  gcc/testsuite/gcc.dg/gomp/pr104757.c
  a633f425b4fdde0a7b6f0aa6aa2f2754  gcc/testsuite/gcc.dg/gomp/pr108435.c
! e3e4142185603ce8e378d6382feeb5b4  gcc/testsuite/gcc.dg/gomp/pr110485.c
  7d1b62adb42c340855e993cf480a19ec  gcc/testsuite/gcc.dg/gomp/pr114075.c
  ec1d4016ba60492b723014b99d2804e6  gcc/testsuite/gcc.dg/gomp/pr121453.c
  7a163e65fe52b23fc85f2daa18c442ee  gcc/testsuite/gcc.dg/gomp/pr25874.c
*************** fcc7dce8774036ba93e1fe9211b4421d  gcc/te
*** 55515,55520 ****
--- 55541,55547 ----
  2f98d70b4613eb7789fd16ce01458a0a  gcc/testsuite/gcc.dg/ipa/remref-6.c
  a4676419cc3a331d3b9012027515cd35  gcc/testsuite/gcc.dg/ipa/remref-7.c
  930b7aab3d43c8aa2dca624660702723  gcc/testsuite/gcc.dg/ipa/symver1.c
+ 366508dbd765f013a732263eefea64d2  gcc/testsuite/gcc.dg/ipa/vrp-from-cst-agg-1.c
  3c328ddcd5d7a795c5f00f06d206b8e2  gcc/testsuite/gcc.dg/ipa/vrp1.c
  2ab8d962e85eaf6f689f3049f44347b5  gcc/testsuite/gcc.dg/ipa/vrp2.c
  03985c8cc09afefc99b9871d9d7c38ae  gcc/testsuite/gcc.dg/ipa/vrp3.c
*************** b975ebfa27ac446e553bacbb75421590  gcc/te
*** 57298,57303 ****
--- 57325,57333 ----
  ea90b28181a941740c845e0095310a27  gcc/testsuite/gcc.dg/pr122200.c
  afbbdc9160c7bbb463b8a9a0ccecc1ec  gcc/testsuite/gcc.dg/pr122756.c
  6f902818ec608b0949c72df134c134a3  gcc/testsuite/gcc.dg/pr122773.c
+ 7344e7d40edaaaf0a7feba4fc50f3e85  gcc/testsuite/gcc.dg/pr122898.c
+ acdecc3711a0a56635d3de4e2064206c  gcc/testsuite/gcc.dg/pr122947.c
+ 9f4094b7196b5eab8c79608995a96efc  gcc/testsuite/gcc.dg/pr122991.c
  bc5ddfbbc46f4e0cce1629d1b58d3090  gcc/testsuite/gcc.dg/pr12603.c
  72a2fca76cb69617ae36bab93c7ec0d7  gcc/testsuite/gcc.dg/pr12625-1.c
  6f0ef61e5a12db5f11da839b2988c5e1  gcc/testsuite/gcc.dg/pr13519-1.c
*************** c5684166faf02044b5d8930cae3d92a2  gcc/te
*** 60912,60918 ****
  71e6b4437bf381edd99e9e6fdd633492  gcc/testsuite/gcc.dg/torture/pr112856.c
  956dc9b1dc1c726c549e9e69ca1db5ec  gcc/testsuite/gcc.dg/torture/pr112859.c
  0da1b162b4d30cd723409c71ad927d22  gcc/testsuite/gcc.dg/torture/pr112991.c
! a1645001cf3586b47483c821d94bff24  gcc/testsuite/gcc.dg/torture/pr113026-1.c
  f7f8eb5978df60ecbe2021cabd4bdc7a  gcc/testsuite/gcc.dg/torture/pr113026-2.c
  6b8cee0b3d74e3be0f3a8748a1d49d29  gcc/testsuite/gcc.dg/torture/pr113126.c
  f3bab6271794f76a87e753dbe63b2cde  gcc/testsuite/gcc.dg/torture/pr113205.c
--- 60942,60948 ----
  71e6b4437bf381edd99e9e6fdd633492  gcc/testsuite/gcc.dg/torture/pr112856.c
  956dc9b1dc1c726c549e9e69ca1db5ec  gcc/testsuite/gcc.dg/torture/pr112859.c
  0da1b162b4d30cd723409c71ad927d22  gcc/testsuite/gcc.dg/torture/pr112991.c
! a32d35aee2736c3fe59d10710c7d2dbf  gcc/testsuite/gcc.dg/torture/pr113026-1.c
  f7f8eb5978df60ecbe2021cabd4bdc7a  gcc/testsuite/gcc.dg/torture/pr113026-2.c
  6b8cee0b3d74e3be0f3a8748a1d49d29  gcc/testsuite/gcc.dg/torture/pr113126.c
  f3bab6271794f76a87e753dbe63b2cde  gcc/testsuite/gcc.dg/torture/pr113205.c
*************** fcc3a6f68a967a257f515d11f06532c2  gcc/te
*** 61088,61093 ****
--- 61118,61125 ----
  9c3c67f35d37e9bc1f80a29aa6076d40  gcc/testsuite/gcc.dg/torture/pr122502-2.c
  d9ab318bf88df260c040cad6b5bc8c90  gcc/testsuite/gcc.dg/torture/pr122502.c
  71ac92084dafbcb1599ceaab894a55dd  gcc/testsuite/gcc.dg/torture/pr122599-1.c
+ 92cb155ee587c0fd7ecfd8db4495488b  gcc/testsuite/gcc.dg/torture/pr122615.c
+ 92f30598e112ad6d42615bba68d59abc  gcc/testsuite/gcc.dg/torture/pr122616.c
  4be6dbd9c5c7d7ab2fa698210dd2d02c  gcc/testsuite/gcc.dg/torture/pr122629-1.c
  217270b9747dc47945d67f9c656c4520  gcc/testsuite/gcc.dg/torture/pr122629-2.c
  03db6841f6edfc51bda3ddb9cad31dc4  gcc/testsuite/gcc.dg/torture/pr122637-1.c
*************** b4f22a4d03e15783a08326646103718e  gcc/te
*** 62114,62119 ****
--- 62146,62152 ----
  bb157f4a51d2cdf6bf7f85020478cfab  gcc/testsuite/gcc.dg/torture/pr99652-1.c
  2fff8ca65194be4ac8378ccc98a0bf27  gcc/testsuite/gcc.dg/torture/pr99652-2.c
  f2d36d390723c0b2f171dce75acc904f  gcc/testsuite/gcc.dg/torture/pr99694.c
+ 785061a25ae083837d58ac1470c6ffaa  gcc/testsuite/gcc.dg/torture/pr99782-1.c
  2712af19a1b0692a370799c3da75f379  gcc/testsuite/gcc.dg/torture/pr99824.c
  1e1d5d7c1a9f7fb97f53ed28cd4d5c93  gcc/testsuite/gcc.dg/torture/pr99880.c
  34e5b5ddc6995292f18effac74e9fcce  gcc/testsuite/gcc.dg/torture/pr99947.c
*************** b62f715ee8b8937cdca8e5fb3f4a31b7  gcc/te
*** 64740,64745 ****
--- 64773,64785 ----
  dcd6b7c8149e3e1bf62ecdac2c39dce3  gcc/testsuite/gcc.dg/tree-ssa/vrp-float-signbit-1.c
  ebac22fe693910194996cdf239108af7  gcc/testsuite/gcc.dg/tree-ssa/vrp-float-signbit-2.c
  c7772445382b7be958fdb8b4b189ab2a  gcc/testsuite/gcc.dg/tree-ssa/vrp-float-signbit-3.c
+ d5ed70ec9ab2dd8a83d1a9ffcd187132  gcc/testsuite/gcc.dg/tree-ssa/vrp-from-cst-agg-1.c
+ 1aad51bb9bf56af7e20c54c72bd852fb  gcc/testsuite/gcc.dg/tree-ssa/vrp-from-cst-agg-2.c
+ 556918d1b50638909a155f913c9ce798  gcc/testsuite/gcc.dg/tree-ssa/vrp-from-cst-agg-3.c
+ c357233e58ef311b1373027fe085936c  gcc/testsuite/gcc.dg/tree-ssa/vrp-from-cst-agg-4.c
+ 63364c254b5272a68ed9aa3ec449453e  gcc/testsuite/gcc.dg/tree-ssa/vrp-from-cst-agg-5.c
+ 3dedc9d679f868f503cb11a78b6a5401  gcc/testsuite/gcc.dg/tree-ssa/vrp-from-cst-agg-6.c
+ 991d629b156ecf31676c1e9d61465dbc  gcc/testsuite/gcc.dg/tree-ssa/vrp-from-cst-agg-7.c
  b8bce41399c7a872e19e6af776f1b0e8  gcc/testsuite/gcc.dg/tree-ssa/vrp-loop-1.c
  65e1c44626dcbb799fcde072f844d5ee  gcc/testsuite/gcc.dg/tree-ssa/vrp-loop-2.c
  05c12d9d18ddba971b5eade05baa3576  gcc/testsuite/gcc.dg/tree-ssa/vrp-unreachable-1.c
*************** d5fa86813a9f054c9df50e4e05d5fbc3  gcc/te
*** 65953,65958 ****
--- 65993,65999 ----
  d2b36be7e59029cef1dd2fecf866de62  gcc/testsuite/gcc.dg/vect/pr122797.c
  72763d9273f88d0ae6d2adb1c7239efb  gcc/testsuite/gcc.dg/vect/pr122850.c
  ae7dd7b535828dd877ea453ce08b1b4b  gcc/testsuite/gcc.dg/vect/pr122855.c
+ 13a0e19b576c184d6a3d2a5e046b1d77  gcc/testsuite/gcc.dg/vect/pr122969.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
*************** b14a7c563931d32378d5a7c177b4a9c9  gcc/te
*** 66975,66980 ****
--- 67016,67025 ----
  4cde691f9b46b73da3fd792615e89948  gcc/testsuite/gcc.dg/vect/vect-early-break_138-pr121020.c
  34a0ecf50bb294439c27ca86196e9202  gcc/testsuite/gcc.dg/vect/vect-early-break_139.c
  73bc7475d6af2bd77455abec5df316e4  gcc/testsuite/gcc.dg/vect/vect-early-break_14.c
+ 0f94ea8d32566351c449ef0923f780bb  gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_1.c
+ fca55cf03db9d8a5e743486b3427a96a  gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_2.c
+ 8cbd75311a4ecc168ec09085f538c7d0  gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_3.c
+ 25d4d94bafb1405becf55cc15f94275e  gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_4.c
  e90473e2ecf7c08db9278bdca5060773  gcc/testsuite/gcc.dg/vect/vect-early-break_15.c
  2232d395ceff11af9b28f269e86162c9  gcc/testsuite/gcc.dg/vect/vect-early-break_16.c
  74848a5e9be64a5356628885f52c286b  gcc/testsuite/gcc.dg/vect/vect-early-break_17.c
*************** dca085f893f46ecb56c7cecb15a42090  gcc/te
*** 67286,67291 ****
--- 67331,67337 ----
  b8e2c3a6d75f12e0a954c022b6f17018  gcc/testsuite/gcc.dg/vect/vect-pr122406-1.c
  5981abb0e1e9f12ff678653ca24ba8e8  gcc/testsuite/gcc.dg/vect/vect-pr122406-2.c
  a27087df4989bb70386182ff7f74facf  gcc/testsuite/gcc.dg/vect/vect-pr122844.c
+ 5346702060f2a1fdcbef60b8759f436c  gcc/testsuite/gcc.dg/vect/vect-pr123002.c
  464c872c62ad2fc5d241ed918e0cf5de  gcc/testsuite/gcc.dg/vect/vect-pr61247.c
  4d57df9e3b3522c9f1a6707c05f1da45  gcc/testsuite/gcc.dg/vect/vect-pr69848.c
  3a3a316ff2f2496494ecb0bd77d61aad  gcc/testsuite/gcc.dg/vect/vect-pre-interact.c
*************** be8935c3fb2fa21e3b6bb3a252110433  gcc/te
*** 67480,67485 ****
--- 67526,67532 ----
  b99bb00397518c13462f451f39b15cb2  gcc/testsuite/gcc.dg/vect/vect-simd-clone-22.c
  0de2b2799e45a60c69b93dd9f859a18e  gcc/testsuite/gcc.dg/vect/vect-simd-clone-22a.c
  2ef0a87aede76c2639e64fdef7c6773b  gcc/testsuite/gcc.dg/vect/vect-simd-clone-23.c
+ 1ed40877d01483d7576a73c131f0720a  gcc/testsuite/gcc.dg/vect/vect-simd-clone-24.c
  cff83413760df8eec4e9c7187ee7ada9  gcc/testsuite/gcc.dg/vect/vect-simd-clone-3.c
  0d3326ce976d42f0a96b625fa721ab32  gcc/testsuite/gcc.dg/vect/vect-simd-clone-4.c
  bc0f68b226839ed569e371de527479fe  gcc/testsuite/gcc.dg/vect/vect-simd-clone-5.c
*************** ec17587eb946389b46a3469b4ec76732  gcc/te
*** 69453,69458 ****
--- 69500,69510 ----
  d2975f7c701c2a4ea6b0a9d184d948aa  gcc/testsuite/gcc.target/aarch64/min_plus_5.c
  6a36a3923a86bb78a9b80e79c524c20f  gcc/testsuite/gcc.target/aarch64/min_plus_6.c
  dca9505b42b2f6c7239de3ce44690e1e  gcc/testsuite/gcc.target/aarch64/min_plus_7.c
+ 5e88c7749f96e67a7b8fcee82a864c48  gcc/testsuite/gcc.target/aarch64/mingw/long_double_size.c
+ e74a5c0f01134d05aa518da6a6ef594f  gcc/testsuite/gcc.target/aarch64/mingw/mingw.exp
+ 7cfd292a52f5e9954493826946105c32  gcc/testsuite/gcc.target/aarch64/mingw/variadic_hfa.c
+ 7b2c336fd8c7f0fe38dd21823360a36c  gcc/testsuite/gcc.target/aarch64/mingw/variadic_hva.c
+ 5ae56c00b38446fe95b7db31dae48056  gcc/testsuite/gcc.target/aarch64/mingw/variadic_int.c
  1d85598730d5bd30a9357549e14379f6  gcc/testsuite/gcc.target/aarch64/mla_intrinsic_1.c
  9117b783d4f390342f3a6e2e9f2b230e  gcc/testsuite/gcc.target/aarch64/mls_intrinsic_1.c
  8ae8760a71399434214ac816531278b6  gcc/testsuite/gcc.target/aarch64/mneg-1.c
*************** bf526d120c538bd714985ac66c46f7bb  gcc/te
*** 69771,69776 ****
--- 69823,69829 ----
  fd8128a2ace2daef0e57c5d400699061  gcc/testsuite/gcc.target/aarch64/pr122069_3.c
  660be217a5e8446a50ffef18eb8fa6e0  gcc/testsuite/gcc.target/aarch64/pr122069_4.c
  00a887e152d5697873b564b81bde2621  gcc/testsuite/gcc.target/aarch64/pr122190.c
+ 79403b7eced8101bc36bd5d2168fe88b  gcc/testsuite/gcc.target/aarch64/pr122675-1.c
  43f64e2ecaed3e7e114e33394cdb9066  gcc/testsuite/gcc.target/aarch64/pr122763.c
  9adb42733d9f5e2b1f2dbb364b62100d  gcc/testsuite/gcc.target/aarch64/pr37780_1.c
  e668fb9e0d32efadd671247467dc90db  gcc/testsuite/gcc.target/aarch64/pr58460.c
*************** d104c798882729bd8931c673334d0232  gcc/te
*** 80375,80380 ****
--- 80428,80434 ----
  4ae6f7347fb5ee353212eb91d46cd67c  gcc/testsuite/gcc.target/arm/mve/pr114801.c
  8402a0860b5d6d3c80715f2741e4a862  gcc/testsuite/gcc.target/arm/mve/pr117408-1.c
  31e2d92c29bd8c4dc1a82b6e5740b459  gcc/testsuite/gcc.target/arm/mve/pr117408-2.c
+ 2844cdec13cd0820b83cc92387cb6ea6  gcc/testsuite/gcc.target/arm/mve/pr122858.c
  a27c7480ff5cba860dda5da683bb3b87  gcc/testsuite/gcc.target/arm/naked-1.c
  292c423c2aa66b03398c922259527367  gcc/testsuite/gcc.target/arm/naked-2.c
  2d75e6bd9379b6e090e6104b97434376  gcc/testsuite/gcc.target/arm/negdi-1.c
*************** df8b684ced3c67573d1feada188938b6  gcc/te
*** 82163,82169 ****
  489303cb175b4f8022fe7d831bef0fe6  gcc/testsuite/gcc.target/i386/20030217-1.c
  41e29ea15c2438cdb075d08b5368c25f  gcc/testsuite/gcc.target/i386/20030217-2.c
  a3e554dab8a93a4d3090e2c2ca07addf  gcc/testsuite/gcc.target/i386/20030926-1.c
! 3b6c04d1af10fdb1e9317d6b0a34a660  gcc/testsuite/gcc.target/i386/20040112-1.c
  23e274aa6bf5841c3542d212ba52d17e  gcc/testsuite/gcc.target/i386/20050113-1.c
  d1076fdd8a8da68773355e333bf1e717  gcc/testsuite/gcc.target/i386/20051216-1.c
  9c2b1a032cf616abe10eceed52867464  gcc/testsuite/gcc.target/i386/20060125-1.c
--- 82217,82223 ----
  489303cb175b4f8022fe7d831bef0fe6  gcc/testsuite/gcc.target/i386/20030217-1.c
  41e29ea15c2438cdb075d08b5368c25f  gcc/testsuite/gcc.target/i386/20030217-2.c
  a3e554dab8a93a4d3090e2c2ca07addf  gcc/testsuite/gcc.target/i386/20030926-1.c
! b3537853af47bede2cf127e4dbc789f0  gcc/testsuite/gcc.target/i386/20040112-1.c
  23e274aa6bf5841c3542d212ba52d17e  gcc/testsuite/gcc.target/i386/20050113-1.c
  d1076fdd8a8da68773355e333bf1e717  gcc/testsuite/gcc.target/i386/20051216-1.c
  9c2b1a032cf616abe10eceed52867464  gcc/testsuite/gcc.target/i386/20060125-1.c
*************** f5710388bf6592fabf21f6aa05044790  gcc/te
*** 82463,82469 ****
  0573dc96587f464eab32fb45381cd9c3  gcc/testsuite/gcc.target/i386/avx-lrint-vec.c
  3391c9dd1dd0dbbac597a660fd5fb010  gcc/testsuite/gcc.target/i386/avx-lrintf-vec.c
  b4097136b326678c552cf24792f79fe8  gcc/testsuite/gcc.target/i386/avx-mul-1.c
! e27aba9c25cfb5a48bac6c6354a97826  gcc/testsuite/gcc.target/i386/avx-ne-convert-1.c
  d03de2728a4eea3b7b83d89fd40a8c2c  gcc/testsuite/gcc.target/i386/avx-ne-convert-vbcstnebf162ps-2.c
  e098abacd326fa403ba8d8834cb92f59  gcc/testsuite/gcc.target/i386/avx-ne-convert-vbcstnesh2ps-2.c
  71c717dba99f2d7206135f53e0fd85bd  gcc/testsuite/gcc.target/i386/avx-ne-convert-vcvtneebf162ps-2.c
--- 82517,82523 ----
  0573dc96587f464eab32fb45381cd9c3  gcc/testsuite/gcc.target/i386/avx-lrint-vec.c
  3391c9dd1dd0dbbac597a660fd5fb010  gcc/testsuite/gcc.target/i386/avx-lrintf-vec.c
  b4097136b326678c552cf24792f79fe8  gcc/testsuite/gcc.target/i386/avx-mul-1.c
! ddb203e8d406794be0981fb2de25afa5  gcc/testsuite/gcc.target/i386/avx-ne-convert-1.c
  d03de2728a4eea3b7b83d89fd40a8c2c  gcc/testsuite/gcc.target/i386/avx-ne-convert-vbcstnebf162ps-2.c
  e098abacd326fa403ba8d8834cb92f59  gcc/testsuite/gcc.target/i386/avx-ne-convert-vbcstnesh2ps-2.c
  71c717dba99f2d7206135f53e0fd85bd  gcc/testsuite/gcc.target/i386/avx-ne-convert-vcvtneebf162ps-2.c
*************** ba28fa2f54eaa9223f6892f84f5a47df  gcc/te
*** 83026,83032 ****
  f6fc2ac3d31c81e3d9c7b73d90f59b85  gcc/testsuite/gcc.target/i386/avx10_1-5.c
  6d38cceea8e161aeffa01313f400100c  gcc/testsuite/gcc.target/i386/avx10_1-6.c
  8171b277bd12f9a75849bb34438003a6  gcc/testsuite/gcc.target/i386/avx10_1-7.c
! 6a8d7e861a7cf49c0c6e9ad05f10a643  gcc/testsuite/gcc.target/i386/avx10_2-bf16-1.c
  c39c590aaa4356d5b403bc01b7783823  gcc/testsuite/gcc.target/i386/avx10_2-bf16-vector-cmp-1.c
  c5f278f4dccfd134d9a3e2aa2a67703d  gcc/testsuite/gcc.target/i386/avx10_2-bf16-vector-fma-1.c
  57227ba784085be4629883789ed368bc  gcc/testsuite/gcc.target/i386/avx10_2-bf16-vector-operations-1.c
--- 83080,83086 ----
  f6fc2ac3d31c81e3d9c7b73d90f59b85  gcc/testsuite/gcc.target/i386/avx10_1-5.c
  6d38cceea8e161aeffa01313f400100c  gcc/testsuite/gcc.target/i386/avx10_1-6.c
  8171b277bd12f9a75849bb34438003a6  gcc/testsuite/gcc.target/i386/avx10_1-7.c
! 997d6928cf20833d78a02bc47506d4ed  gcc/testsuite/gcc.target/i386/avx10_2-bf16-1.c
  c39c590aaa4356d5b403bc01b7783823  gcc/testsuite/gcc.target/i386/avx10_2-bf16-vector-cmp-1.c
  c5f278f4dccfd134d9a3e2aa2a67703d  gcc/testsuite/gcc.target/i386/avx10_2-bf16-vector-fma-1.c
  57227ba784085be4629883789ed368bc  gcc/testsuite/gcc.target/i386/avx10_2-bf16-vector-operations-1.c
*************** a2fc5a1576404e3c308cbd5c09c5efb0  gcc/te
*** 83039,83045 ****
  ddae9e3f25193c53de97e445f19efb5b  gcc/testsuite/gcc.target/i386/avx10_2-comibf-4.c
  1ece947844abac5d130a2fef411986cf  gcc/testsuite/gcc.target/i386/avx10_2-compare-1.c
  3f6ccd6941e539ede6c35d45caf27eb0  gcc/testsuite/gcc.target/i386/avx10_2-compare-1b.c
! e847665a89849da89fbaae0fed8724e3  gcc/testsuite/gcc.target/i386/avx10_2-convert-1.c
  9042f995d107933908f24b29657ef1f0  gcc/testsuite/gcc.target/i386/avx10_2-media-1.c
  56990d02b87728c95a15573638ae1769  gcc/testsuite/gcc.target/i386/avx10_2-minmax-1.c
  47a5dab35b2b917f1d4c5b6e477f6627  gcc/testsuite/gcc.target/i386/avx10_2-movrs-1.c
--- 83093,83099 ----
  ddae9e3f25193c53de97e445f19efb5b  gcc/testsuite/gcc.target/i386/avx10_2-comibf-4.c
  1ece947844abac5d130a2fef411986cf  gcc/testsuite/gcc.target/i386/avx10_2-compare-1.c
  3f6ccd6941e539ede6c35d45caf27eb0  gcc/testsuite/gcc.target/i386/avx10_2-compare-1b.c
! 839bfe312b9bf147895c3e85fd6874b9  gcc/testsuite/gcc.target/i386/avx10_2-convert-1.c
  9042f995d107933908f24b29657ef1f0  gcc/testsuite/gcc.target/i386/avx10_2-media-1.c
  56990d02b87728c95a15573638ae1769  gcc/testsuite/gcc.target/i386/avx10_2-minmax-1.c
  47a5dab35b2b917f1d4c5b6e477f6627  gcc/testsuite/gcc.target/i386/avx10_2-movrs-1.c
*************** e847665a89849da89fbaae0fed8724e3  gcc/te
*** 83047,83053 ****
  4af5f36c571f416f48647ffb75a45045  gcc/testsuite/gcc.target/i386/avx10_2-partial-bf16-vector-fma-1.c
  060256f3db21d28f61a90f026c37c557  gcc/testsuite/gcc.target/i386/avx10_2-partial-bf16-vector-operations-1.c
  fa1d703c5c27e1abbf55a158e4d6ee34  gcc/testsuite/gcc.target/i386/avx10_2-partial-bf16-vector-smaxmin-1.c
! ccadc66d0451b4914b207bb0c67f5f2a  gcc/testsuite/gcc.target/i386/avx10_2-satcvt-1.c
  60a72d0c1e55bd425da17835c9d885cb  gcc/testsuite/gcc.target/i386/avx10_2-vaddbf16-2.c
  43e4fed44125a0ba83d21beca0f9f0ea  gcc/testsuite/gcc.target/i386/avx10_2-vaddbf16-2.h
  27f8b398de5197386cc63ecae500c030  gcc/testsuite/gcc.target/i386/avx10_2-vcmpbf16-2.c
--- 83101,83107 ----
  4af5f36c571f416f48647ffb75a45045  gcc/testsuite/gcc.target/i386/avx10_2-partial-bf16-vector-fma-1.c
  060256f3db21d28f61a90f026c37c557  gcc/testsuite/gcc.target/i386/avx10_2-partial-bf16-vector-operations-1.c
  fa1d703c5c27e1abbf55a158e4d6ee34  gcc/testsuite/gcc.target/i386/avx10_2-partial-bf16-vector-smaxmin-1.c
! cb98d94646b2520b2ad879a3a7daa717  gcc/testsuite/gcc.target/i386/avx10_2-satcvt-1.c
  60a72d0c1e55bd425da17835c9d885cb  gcc/testsuite/gcc.target/i386/avx10_2-vaddbf16-2.c
  43e4fed44125a0ba83d21beca0f9f0ea  gcc/testsuite/gcc.target/i386/avx10_2-vaddbf16-2.h
  27f8b398de5197386cc63ecae500c030  gcc/testsuite/gcc.target/i386/avx10_2-vcmpbf16-2.c
*************** d29c79e3f90ea13ca131538d02e8cbea  gcc/te
*** 83700,83713 ****
  62b19e80a3afe81ed00caf74d9ff1785  gcc/testsuite/gcc.target/i386/avx512bf16-pr108881.c
  be5ec5e06a11542721a6fb86aea97864  gcc/testsuite/gcc.target/i386/avx512bf16-truncsfbf.c
  964a5f2a2c89b83533b2be720732ccd6  gcc/testsuite/gcc.target/i386/avx512bf16-vcvtne2ps2bf16-1.c
! 80660c3a1129515840c1c9e263211f06  gcc/testsuite/gcc.target/i386/avx512bf16-vcvtneps2bf16-1.c
  85f9fe6854d98f374a63df40394fb8cd  gcc/testsuite/gcc.target/i386/avx512bf16-vcvtpbh2ps-1.c
  63e7956c8ca198ce2181d80ed229bbbb  gcc/testsuite/gcc.target/i386/avx512bf16-vdpbf16ps-1.c
  cec20eb9c1925a45f98a14c4507287f3  gcc/testsuite/gcc.target/i386/avx512bf16-vdpbf16ps-2.c
  935f53a8b6597ba96c0e84ef8ed552a4  gcc/testsuite/gcc.target/i386/avx512bf16vl-cvtness2sbh-1.c
  f877c7aff68980a873311e9e3029ab4e  gcc/testsuite/gcc.target/i386/avx512bf16vl-vcvtne2ps2bf16-1.c
! 1e43b2fef5c316c799de12e0b7d6539e  gcc/testsuite/gcc.target/i386/avx512bf16vl-vcvtneps2bf16-1a.c
! 98b5aec84f1eef594c6bd9570935562f  gcc/testsuite/gcc.target/i386/avx512bf16vl-vcvtneps2bf16-1b.c
  3df523677ab1d5b0815a28ada548ad0f  gcc/testsuite/gcc.target/i386/avx512bf16vl-vcvtpbh2ps-1.c
  4d0bcbe3e5ed908d180434ef26bd4a3a  gcc/testsuite/gcc.target/i386/avx512bf16vl-vdpbf16ps-1.c
  1c17eded698566bf1d33a8808168935d  gcc/testsuite/gcc.target/i386/avx512bitalg-pr97770-1.c
--- 83754,83767 ----
  62b19e80a3afe81ed00caf74d9ff1785  gcc/testsuite/gcc.target/i386/avx512bf16-pr108881.c
  be5ec5e06a11542721a6fb86aea97864  gcc/testsuite/gcc.target/i386/avx512bf16-truncsfbf.c
  964a5f2a2c89b83533b2be720732ccd6  gcc/testsuite/gcc.target/i386/avx512bf16-vcvtne2ps2bf16-1.c
! 265a53593c941a00566cc5297de7f275  gcc/testsuite/gcc.target/i386/avx512bf16-vcvtneps2bf16-1.c
  85f9fe6854d98f374a63df40394fb8cd  gcc/testsuite/gcc.target/i386/avx512bf16-vcvtpbh2ps-1.c
  63e7956c8ca198ce2181d80ed229bbbb  gcc/testsuite/gcc.target/i386/avx512bf16-vdpbf16ps-1.c
  cec20eb9c1925a45f98a14c4507287f3  gcc/testsuite/gcc.target/i386/avx512bf16-vdpbf16ps-2.c
  935f53a8b6597ba96c0e84ef8ed552a4  gcc/testsuite/gcc.target/i386/avx512bf16vl-cvtness2sbh-1.c
  f877c7aff68980a873311e9e3029ab4e  gcc/testsuite/gcc.target/i386/avx512bf16vl-vcvtne2ps2bf16-1.c
! 01341fadae2bbafb1014bb5900e49516  gcc/testsuite/gcc.target/i386/avx512bf16vl-vcvtneps2bf16-1a.c
! 22db5fad662e1b48e287482a06a2acf5  gcc/testsuite/gcc.target/i386/avx512bf16vl-vcvtneps2bf16-1b.c
  3df523677ab1d5b0815a28ada548ad0f  gcc/testsuite/gcc.target/i386/avx512bf16vl-vcvtpbh2ps-1.c
  4d0bcbe3e5ed908d180434ef26bd4a3a  gcc/testsuite/gcc.target/i386/avx512bf16vl-vdpbf16ps-1.c
  1c17eded698566bf1d33a8808168935d  gcc/testsuite/gcc.target/i386/avx512bitalg-pr97770-1.c
*************** e5a7b594a43b43d7c5fb9a42e551f0f1  gcc/te
*** 83718,83724 ****
  90280ad6c492abb834bf4d8ce41c1b1c  gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntw.c
  aad4cdd4eab35366b0a86ed5cea463b8  gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntwvl.c
  b39fe9dc3f7b0c435de242709abf276a  gcc/testsuite/gcc.target/i386/avx512bitalg-vpshufbitqmb-1.c
! 684647cae9d0555dc0a794c38a7a7cfd  gcc/testsuite/gcc.target/i386/avx512bitalg-vpshufbitqmb.c
  ae6b05eb60ec60c92e6f0b3a7d4e3adf  gcc/testsuite/gcc.target/i386/avx512bitalgvl-vpopcntb-1.c
  1bc03df9d4275e9b41e7f0e356b06088  gcc/testsuite/gcc.target/i386/avx512bitalgvl-vpopcntw-1.c
  687030be4c7de0df65d352c6e5e2741b  gcc/testsuite/gcc.target/i386/avx512bitalgvl-vpshufbitqmb-1.c
--- 83772,83778 ----
  90280ad6c492abb834bf4d8ce41c1b1c  gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntw.c
  aad4cdd4eab35366b0a86ed5cea463b8  gcc/testsuite/gcc.target/i386/avx512bitalg-vpopcntwvl.c
  b39fe9dc3f7b0c435de242709abf276a  gcc/testsuite/gcc.target/i386/avx512bitalg-vpshufbitqmb-1.c
! 2cf3fbbb33bcd830814fe9573b75b820  gcc/testsuite/gcc.target/i386/avx512bitalg-vpshufbitqmb.c
  ae6b05eb60ec60c92e6f0b3a7d4e3adf  gcc/testsuite/gcc.target/i386/avx512bitalgvl-vpopcntb-1.c
  1bc03df9d4275e9b41e7f0e356b06088  gcc/testsuite/gcc.target/i386/avx512bitalgvl-vpopcntw-1.c
  687030be4c7de0df65d352c6e5e2741b  gcc/testsuite/gcc.target/i386/avx512bitalgvl-vpshufbitqmb-1.c
*************** c0a8430e227e9d73df2153bc79a4f127  gcc/te
*** 83867,83873 ****
  cd50d653b82c72218798d269f8b09ed6  gcc/testsuite/gcc.target/i386/avx512bw-vpbroadcastb-2.c
  331fc645a1c81c3c37a8440362235343  gcc/testsuite/gcc.target/i386/avx512bw-vpbroadcastw-1.c
  598c9df1695e77a9fb8307742402f261  gcc/testsuite/gcc.target/i386/avx512bw-vpbroadcastw-2.c
! 527c40dc3f481c4c82a6ce9865dfbee7  gcc/testsuite/gcc.target/i386/avx512bw-vpcmpb-1.c
  ff58674ac01e02619e7fbb42218197ed  gcc/testsuite/gcc.target/i386/avx512bw-vpcmpb-2.c
  526de46f6f9d6a57e8e51767b22ca73e  gcc/testsuite/gcc.target/i386/avx512bw-vpcmpeqb-1.c
  e4564a6c91e83263596c29a118ae7926  gcc/testsuite/gcc.target/i386/avx512bw-vpcmpeqb-2.c
--- 83921,83927 ----
  cd50d653b82c72218798d269f8b09ed6  gcc/testsuite/gcc.target/i386/avx512bw-vpbroadcastb-2.c
  331fc645a1c81c3c37a8440362235343  gcc/testsuite/gcc.target/i386/avx512bw-vpbroadcastw-1.c
  598c9df1695e77a9fb8307742402f261  gcc/testsuite/gcc.target/i386/avx512bw-vpbroadcastw-2.c
! 2e3bfd1a6ad309e4ea50ada1e3d6cc96  gcc/testsuite/gcc.target/i386/avx512bw-vpcmpb-1.c
  ff58674ac01e02619e7fbb42218197ed  gcc/testsuite/gcc.target/i386/avx512bw-vpcmpb-2.c
  526de46f6f9d6a57e8e51767b22ca73e  gcc/testsuite/gcc.target/i386/avx512bw-vpcmpeqb-1.c
  e4564a6c91e83263596c29a118ae7926  gcc/testsuite/gcc.target/i386/avx512bw-vpcmpeqb-2.c
*************** eb2d9a728125165e33668488f8537623  gcc/te
*** 83917,83927 ****
  306b00a58b1f3f358da2fc093ce27ae1  gcc/testsuite/gcc.target/i386/avx512bw-vpcmpnequw-2.c
  a88b44ed8b499572661bf13c5e83a0b1  gcc/testsuite/gcc.target/i386/avx512bw-vpcmpneqw-1.c
  5f7a1b19066291003f40cb3cebffe750  gcc/testsuite/gcc.target/i386/avx512bw-vpcmpneqw-2.c
! 0c5d436c36b160e96940a0ed5156068a  gcc/testsuite/gcc.target/i386/avx512bw-vpcmpub-1.c
  8c151290624d1563aad645f057a554f1  gcc/testsuite/gcc.target/i386/avx512bw-vpcmpub-2.c
! c153e1069c3dada49b7f9da180f67758  gcc/testsuite/gcc.target/i386/avx512bw-vpcmpuw-1.c
  954b0a84c42b39482b89b0506867efe1  gcc/testsuite/gcc.target/i386/avx512bw-vpcmpuw-2.c
! 8ddb3c88b8d23236798db3082e44d4a8  gcc/testsuite/gcc.target/i386/avx512bw-vpcmpw-1.c
  8932439ef47d9fd6ccc11187519b5396  gcc/testsuite/gcc.target/i386/avx512bw-vpcmpw-2.c
  afd3e3f28e3108bd8551946815797996  gcc/testsuite/gcc.target/i386/avx512bw-vpermi2w-1.c
  2c3c9b31bcb5c5ae49b479d9f30bc8c9  gcc/testsuite/gcc.target/i386/avx512bw-vpermi2w-2.c
--- 83971,83981 ----
  306b00a58b1f3f358da2fc093ce27ae1  gcc/testsuite/gcc.target/i386/avx512bw-vpcmpnequw-2.c
  a88b44ed8b499572661bf13c5e83a0b1  gcc/testsuite/gcc.target/i386/avx512bw-vpcmpneqw-1.c
  5f7a1b19066291003f40cb3cebffe750  gcc/testsuite/gcc.target/i386/avx512bw-vpcmpneqw-2.c
! ee126a844d3f1db2773a6585bde4c282  gcc/testsuite/gcc.target/i386/avx512bw-vpcmpub-1.c
  8c151290624d1563aad645f057a554f1  gcc/testsuite/gcc.target/i386/avx512bw-vpcmpub-2.c
! edb883570cebf256d072f58348f756d9  gcc/testsuite/gcc.target/i386/avx512bw-vpcmpuw-1.c
  954b0a84c42b39482b89b0506867efe1  gcc/testsuite/gcc.target/i386/avx512bw-vpcmpuw-2.c
! 3c4f333fdf203985c76c571a6d8ed619  gcc/testsuite/gcc.target/i386/avx512bw-vpcmpw-1.c
  8932439ef47d9fd6ccc11187519b5396  gcc/testsuite/gcc.target/i386/avx512bw-vpcmpw-2.c
  afd3e3f28e3108bd8551946815797996  gcc/testsuite/gcc.target/i386/avx512bw-vpermi2w-1.c
  2c3c9b31bcb5c5ae49b479d9f30bc8c9  gcc/testsuite/gcc.target/i386/avx512bw-vpermi2w-2.c
*************** b2f4e5d58a8e5fb3eef5b948c74b725c  gcc/te
*** 84115,84154 ****
  145bb45aae56c18ed0d264acbdf3b3c9  gcc/testsuite/gcc.target/i386/avx512dq-vcvtpd2qq-2.c
  6c80da1a273a40cb27a285b9acaf1aa0  gcc/testsuite/gcc.target/i386/avx512dq-vcvtpd2uqq-1.c
  fa2445840040ccb33bcae61cdc7c66ce  gcc/testsuite/gcc.target/i386/avx512dq-vcvtpd2uqq-2.c
! 4c893dcea06aa912142a79032db18fc1  gcc/testsuite/gcc.target/i386/avx512dq-vcvtps2qq-1.c
  9b8f2d23ed0564e67761556a0b24514e  gcc/testsuite/gcc.target/i386/avx512dq-vcvtps2qq-2.c
! cacc0ba80d95abc87a8ee077bdc331e1  gcc/testsuite/gcc.target/i386/avx512dq-vcvtps2uqq-1.c
  9557d86e3a50548518cc46cae35f33e0  gcc/testsuite/gcc.target/i386/avx512dq-vcvtps2uqq-2.c
! 34e65d5466b18ecf608aea87b753c004  gcc/testsuite/gcc.target/i386/avx512dq-vcvtqq2pd-1.c
  87e3d1d0fcbdeb9d0cba3b4eeea4964d  gcc/testsuite/gcc.target/i386/avx512dq-vcvtqq2pd-2.c
! 84c6ebfe2ccb3b7bce1b95ffa4bba617  gcc/testsuite/gcc.target/i386/avx512dq-vcvtqq2ps-1.c
  b322de8f80d77715d924f2ed50c5de6a  gcc/testsuite/gcc.target/i386/avx512dq-vcvtqq2ps-2.c
  a762a92320d777313946457e60450f6c  gcc/testsuite/gcc.target/i386/avx512dq-vcvttpd2qq-1.c
  2322843d8629e40abee50dc5a2b2b2ab  gcc/testsuite/gcc.target/i386/avx512dq-vcvttpd2qq-2.c
  bb435422249c876cffc07bc01f08365e  gcc/testsuite/gcc.target/i386/avx512dq-vcvttpd2uqq-1.c
  2065722b8a48236a7c1908def30581b1  gcc/testsuite/gcc.target/i386/avx512dq-vcvttpd2uqq-2.c
! 29b630f9d538d7ccb8c3365d6bad756d  gcc/testsuite/gcc.target/i386/avx512dq-vcvttps2qq-1.c
  f7fa789cf88fc2cb70ca9cc4f03c56b7  gcc/testsuite/gcc.target/i386/avx512dq-vcvttps2qq-2.c
! 55b71620664b8b069a6ffd5e643d14fd  gcc/testsuite/gcc.target/i386/avx512dq-vcvttps2uqq-1.c
  de3622d9f6431935151edfe54ddbfdce  gcc/testsuite/gcc.target/i386/avx512dq-vcvttps2uqq-2.c
! 95f3a6fe199ad930cdc5e2954879fccc  gcc/testsuite/gcc.target/i386/avx512dq-vcvtuqq2pd-1.c
  180b7c8caefb80b8382490967552396b  gcc/testsuite/gcc.target/i386/avx512dq-vcvtuqq2pd-2.c
! 79fd1683a946f2bbc23254161070242d  gcc/testsuite/gcc.target/i386/avx512dq-vcvtuqq2ps-1.c
  c6fff99f79cc8e88ced4f5a82ef63289  gcc/testsuite/gcc.target/i386/avx512dq-vcvtuqq2ps-2.c
! fb280344b8b691500b120d857d776ff9  gcc/testsuite/gcc.target/i386/avx512dq-vextractf32x8-1.c
! d846c7209b5bac971f214f29ca3fd506  gcc/testsuite/gcc.target/i386/avx512dq-vextractf64x2-1.c
  637fbc2ce18041be1304c818a117bb4a  gcc/testsuite/gcc.target/i386/avx512dq-vextractf64x2-2.c
  65bb840647d16323f540ee4bd308361a  gcc/testsuite/gcc.target/i386/avx512dq-vextracti32x8-1.c
! 7869763c97a223b866eabfebf8b8e84f  gcc/testsuite/gcc.target/i386/avx512dq-vextracti64x2-1.c
  79963a0599d5d2ec618f013e34c2c105  gcc/testsuite/gcc.target/i386/avx512dq-vextracti64x2-2.c
! 9f5da72fd81f13b128a24d00ca7d11f0  gcc/testsuite/gcc.target/i386/avx512dq-vfpclasspd-1.c
  381963168b9a50e823c8375ae95a0d8c  gcc/testsuite/gcc.target/i386/avx512dq-vfpclasspd-2.c
! e44436f82377cc5b5cff6a5347fd450e  gcc/testsuite/gcc.target/i386/avx512dq-vfpclassps-1.c
  b3fc381ca0059d17a2d9812d9231ff01  gcc/testsuite/gcc.target/i386/avx512dq-vfpclassps-2.c
! 315a3604df8b1e1c374a98f932da6925  gcc/testsuite/gcc.target/i386/avx512dq-vfpclasssd-1.c
  320c1383cbb8e4ce07f067792bb52fd4  gcc/testsuite/gcc.target/i386/avx512dq-vfpclasssd-1b.c
  5cd4bb271105b6457a2a496768007256  gcc/testsuite/gcc.target/i386/avx512dq-vfpclasssd-2.c
! 8acc20767c397abf4448f2913287a865  gcc/testsuite/gcc.target/i386/avx512dq-vfpclassss-1.c
  7fc53c6d107e4e8b76a7a062a0e6ef7e  gcc/testsuite/gcc.target/i386/avx512dq-vfpclassss-1b.c
  d2a9855a64040f30e43740f4abffd5eb  gcc/testsuite/gcc.target/i386/avx512dq-vfpclassss-2.c
  1fb9353e1dd69f5c4b4f8968fba855ff  gcc/testsuite/gcc.target/i386/avx512dq-vinsert-1.c
--- 84169,84208 ----
  145bb45aae56c18ed0d264acbdf3b3c9  gcc/testsuite/gcc.target/i386/avx512dq-vcvtpd2qq-2.c
  6c80da1a273a40cb27a285b9acaf1aa0  gcc/testsuite/gcc.target/i386/avx512dq-vcvtpd2uqq-1.c
  fa2445840040ccb33bcae61cdc7c66ce  gcc/testsuite/gcc.target/i386/avx512dq-vcvtpd2uqq-2.c
! d4e7cab88cbbdf68264def0edbfcd73a  gcc/testsuite/gcc.target/i386/avx512dq-vcvtps2qq-1.c
  9b8f2d23ed0564e67761556a0b24514e  gcc/testsuite/gcc.target/i386/avx512dq-vcvtps2qq-2.c
! c1b7ada1a198f766b400a458a9b7fae8  gcc/testsuite/gcc.target/i386/avx512dq-vcvtps2uqq-1.c
  9557d86e3a50548518cc46cae35f33e0  gcc/testsuite/gcc.target/i386/avx512dq-vcvtps2uqq-2.c
! 48602312d66bc0d6fd0584e522027cf7  gcc/testsuite/gcc.target/i386/avx512dq-vcvtqq2pd-1.c
  87e3d1d0fcbdeb9d0cba3b4eeea4964d  gcc/testsuite/gcc.target/i386/avx512dq-vcvtqq2pd-2.c
! e607287c4d426631388ec8aa7d1a5408  gcc/testsuite/gcc.target/i386/avx512dq-vcvtqq2ps-1.c
  b322de8f80d77715d924f2ed50c5de6a  gcc/testsuite/gcc.target/i386/avx512dq-vcvtqq2ps-2.c
  a762a92320d777313946457e60450f6c  gcc/testsuite/gcc.target/i386/avx512dq-vcvttpd2qq-1.c
  2322843d8629e40abee50dc5a2b2b2ab  gcc/testsuite/gcc.target/i386/avx512dq-vcvttpd2qq-2.c
  bb435422249c876cffc07bc01f08365e  gcc/testsuite/gcc.target/i386/avx512dq-vcvttpd2uqq-1.c
  2065722b8a48236a7c1908def30581b1  gcc/testsuite/gcc.target/i386/avx512dq-vcvttpd2uqq-2.c
! e06d8d3c46b3d438654b1e2ec7ff3262  gcc/testsuite/gcc.target/i386/avx512dq-vcvttps2qq-1.c
  f7fa789cf88fc2cb70ca9cc4f03c56b7  gcc/testsuite/gcc.target/i386/avx512dq-vcvttps2qq-2.c
! a21de645ee3872f2aa5b2c85763182ce  gcc/testsuite/gcc.target/i386/avx512dq-vcvttps2uqq-1.c
  de3622d9f6431935151edfe54ddbfdce  gcc/testsuite/gcc.target/i386/avx512dq-vcvttps2uqq-2.c
! 727bc7a18a860d6e41aa5f8f32eae4c0  gcc/testsuite/gcc.target/i386/avx512dq-vcvtuqq2pd-1.c
  180b7c8caefb80b8382490967552396b  gcc/testsuite/gcc.target/i386/avx512dq-vcvtuqq2pd-2.c
! d023e2d36f0cbcee41004c1f96d3bba4  gcc/testsuite/gcc.target/i386/avx512dq-vcvtuqq2ps-1.c
  c6fff99f79cc8e88ced4f5a82ef63289  gcc/testsuite/gcc.target/i386/avx512dq-vcvtuqq2ps-2.c
! 4ac9ccb897f7a2e284df889ae84cd018  gcc/testsuite/gcc.target/i386/avx512dq-vextractf32x8-1.c
! a6bf3a83158921944e5077166e5d9914  gcc/testsuite/gcc.target/i386/avx512dq-vextractf64x2-1.c
  637fbc2ce18041be1304c818a117bb4a  gcc/testsuite/gcc.target/i386/avx512dq-vextractf64x2-2.c
  65bb840647d16323f540ee4bd308361a  gcc/testsuite/gcc.target/i386/avx512dq-vextracti32x8-1.c
! d0597c19c22d633d074877551c8913ba  gcc/testsuite/gcc.target/i386/avx512dq-vextracti64x2-1.c
  79963a0599d5d2ec618f013e34c2c105  gcc/testsuite/gcc.target/i386/avx512dq-vextracti64x2-2.c
! 41a0514949446c2a52d1f3d3172b46dd  gcc/testsuite/gcc.target/i386/avx512dq-vfpclasspd-1.c
  381963168b9a50e823c8375ae95a0d8c  gcc/testsuite/gcc.target/i386/avx512dq-vfpclasspd-2.c
! 9627f3720ec9901c62b2a9caeb200add  gcc/testsuite/gcc.target/i386/avx512dq-vfpclassps-1.c
  b3fc381ca0059d17a2d9812d9231ff01  gcc/testsuite/gcc.target/i386/avx512dq-vfpclassps-2.c
! 671a6dbf17329ddfca6ed70e1db8d6c1  gcc/testsuite/gcc.target/i386/avx512dq-vfpclasssd-1.c
  320c1383cbb8e4ce07f067792bb52fd4  gcc/testsuite/gcc.target/i386/avx512dq-vfpclasssd-1b.c
  5cd4bb271105b6457a2a496768007256  gcc/testsuite/gcc.target/i386/avx512dq-vfpclasssd-2.c
! fbf564f020a3fec94cbac615de13c20e  gcc/testsuite/gcc.target/i386/avx512dq-vfpclassss-1.c
  7fc53c6d107e4e8b76a7a062a0e6ef7e  gcc/testsuite/gcc.target/i386/avx512dq-vfpclassss-1b.c
  d2a9855a64040f30e43740f4abffd5eb  gcc/testsuite/gcc.target/i386/avx512dq-vfpclassss-2.c
  1fb9353e1dd69f5c4b4f8968fba855ff  gcc/testsuite/gcc.target/i386/avx512dq-vinsert-1.c
*************** aaa13a719a973c3617c0af3dc79614c1  gcc/te
*** 84172,84180 ****
  cf7f5cea9d0391cb48bb3a1a927d96bc  gcc/testsuite/gcc.target/i386/avx512dq-vpmovm2q-2.c
  76b11d1ee69ab3efc6dccd085a7b1309  gcc/testsuite/gcc.target/i386/avx512dq-vpmovq2m-1.c
  9fc78389fd92e0e294479f64c7844fdd  gcc/testsuite/gcc.target/i386/avx512dq-vpmovq2m-2.c
! 7c199e03e4250877b6020f2c5952db7a  gcc/testsuite/gcc.target/i386/avx512dq-vpmullq-1.c
  bd05449132ec0ffcf7f9d2cee42d3d84  gcc/testsuite/gcc.target/i386/avx512dq-vpmullq-2.c
! 76f236fa5796b5046b3d42523dbe4575  gcc/testsuite/gcc.target/i386/avx512dq-vpmullq-3.c
  97aa2bc606e77d01e676dc674146f07f  gcc/testsuite/gcc.target/i386/avx512dq-vpmullq-4.c
  05c9050d2203136979ca6f6a60da73fc  gcc/testsuite/gcc.target/i386/avx512dq-vrangepd-1.c
  f0c9881b20109961ade437de8e3cd48c  gcc/testsuite/gcc.target/i386/avx512dq-vrangepd-2.c
--- 84226,84234 ----
  cf7f5cea9d0391cb48bb3a1a927d96bc  gcc/testsuite/gcc.target/i386/avx512dq-vpmovm2q-2.c
  76b11d1ee69ab3efc6dccd085a7b1309  gcc/testsuite/gcc.target/i386/avx512dq-vpmovq2m-1.c
  9fc78389fd92e0e294479f64c7844fdd  gcc/testsuite/gcc.target/i386/avx512dq-vpmovq2m-2.c
! e3df910416a724a3d44deb0c3157f44d  gcc/testsuite/gcc.target/i386/avx512dq-vpmullq-1.c
  bd05449132ec0ffcf7f9d2cee42d3d84  gcc/testsuite/gcc.target/i386/avx512dq-vpmullq-2.c
! b3248bd1edbd16af3d7147d5c7ff2273  gcc/testsuite/gcc.target/i386/avx512dq-vpmullq-3.c
  97aa2bc606e77d01e676dc674146f07f  gcc/testsuite/gcc.target/i386/avx512dq-vpmullq-4.c
  05c9050d2203136979ca6f6a60da73fc  gcc/testsuite/gcc.target/i386/avx512dq-vrangepd-1.c
  f0c9881b20109961ade437de8e3cd48c  gcc/testsuite/gcc.target/i386/avx512dq-vrangepd-2.c
*************** d35963959d5b010c3b26b967f48d3608  gcc/te
*** 84398,84404 ****
  e19e3e51ec11ade8a01868fbfc4cd54d  gcc/testsuite/gcc.target/i386/avx512f-orn-si-zmm-1.c
  67dce330c9eb191d6f0366dbe1125872  gcc/testsuite/gcc.target/i386/avx512f-orn-si-zmm-2.c
  17acbefd47a510ed96d83a23e3e4b8c3  gcc/testsuite/gcc.target/i386/avx512f-os-support.h
! 3914b6d25111ca6ae59285960acf2a38  gcc/testsuite/gcc.target/i386/avx512f-pr100267-1.c
  96968590e0e38d8ab07a46aa232aaa22  gcc/testsuite/gcc.target/i386/avx512f-pr100267-pd-2.c
  f52100c2d13572e0728cca2f85b0fcde  gcc/testsuite/gcc.target/i386/avx512f-pr100267-ps-2.c
  7371abf8df649ac78965cd397d5f5a42  gcc/testsuite/gcc.target/i386/avx512f-pr101471.c
--- 84452,84458 ----
  e19e3e51ec11ade8a01868fbfc4cd54d  gcc/testsuite/gcc.target/i386/avx512f-orn-si-zmm-1.c
  67dce330c9eb191d6f0366dbe1125872  gcc/testsuite/gcc.target/i386/avx512f-orn-si-zmm-2.c
  17acbefd47a510ed96d83a23e3e4b8c3  gcc/testsuite/gcc.target/i386/avx512f-os-support.h
! dc5980341ce02c4a2fc105557649aa38  gcc/testsuite/gcc.target/i386/avx512f-pr100267-1.c
  96968590e0e38d8ab07a46aa232aaa22  gcc/testsuite/gcc.target/i386/avx512f-pr100267-pd-2.c
  f52100c2d13572e0728cca2f85b0fcde  gcc/testsuite/gcc.target/i386/avx512f-pr100267-ps-2.c
  7371abf8df649ac78965cd397d5f5a42  gcc/testsuite/gcc.target/i386/avx512f-pr101471.c
*************** bde726e6f2cd1d9530e50b14cc19e926  gcc/te
*** 84557,84566 ****
  41d510e7de08b1869d765e1c54d9255a  gcc/testsuite/gcc.target/i386/avx512f-vbroadcastsd-2.c
  ea8f5f1fd33b05c11b1eb82ffd2b9d26  gcc/testsuite/gcc.target/i386/avx512f-vbroadcastss-1.c
  faab2215d293f4db6f1cb7890858be20  gcc/testsuite/gcc.target/i386/avx512f-vbroadcastss-2.c
! e1194584e5c0e8505292895eb783e28f  gcc/testsuite/gcc.target/i386/avx512f-vcmppd-1.c
  3eb9d7bb1cd30f1cc232c846f58e9923  gcc/testsuite/gcc.target/i386/avx512f-vcmppd-2.c
  9d1bfb54da4127452b23a69245924448  gcc/testsuite/gcc.target/i386/avx512f-vcmppd-3.c
! 5e54fc5875eaff2d721688cf22b140db  gcc/testsuite/gcc.target/i386/avx512f-vcmpps-1.c
  fb965451870058fc0338da3bf4ca50a1  gcc/testsuite/gcc.target/i386/avx512f-vcmpps-2.c
  695e2674186a97e2190a76ef6bf0e306  gcc/testsuite/gcc.target/i386/avx512f-vcmpps-3.c
  cfc57dcbbde8b4d4956d3ef4c768f651  gcc/testsuite/gcc.target/i386/avx512f-vcmpsd-1.c
--- 84611,84620 ----
  41d510e7de08b1869d765e1c54d9255a  gcc/testsuite/gcc.target/i386/avx512f-vbroadcastsd-2.c
  ea8f5f1fd33b05c11b1eb82ffd2b9d26  gcc/testsuite/gcc.target/i386/avx512f-vbroadcastss-1.c
  faab2215d293f4db6f1cb7890858be20  gcc/testsuite/gcc.target/i386/avx512f-vbroadcastss-2.c
! 6296f2ed8566b09892a01367dfa2d523  gcc/testsuite/gcc.target/i386/avx512f-vcmppd-1.c
  3eb9d7bb1cd30f1cc232c846f58e9923  gcc/testsuite/gcc.target/i386/avx512f-vcmppd-2.c
  9d1bfb54da4127452b23a69245924448  gcc/testsuite/gcc.target/i386/avx512f-vcmppd-3.c
! 8226689f1864d66a3bf15cf6f4b0a8d4  gcc/testsuite/gcc.target/i386/avx512f-vcmpps-1.c
  fb965451870058fc0338da3bf4ca50a1  gcc/testsuite/gcc.target/i386/avx512f-vcmpps-2.c
  695e2674186a97e2190a76ef6bf0e306  gcc/testsuite/gcc.target/i386/avx512f-vcmpps-3.c
  cfc57dcbbde8b4d4956d3ef4c768f651  gcc/testsuite/gcc.target/i386/avx512f-vcmpsd-1.c
*************** bb6be2a9a907a862e8c31a78903ad8d9  gcc/te
*** 84589,84595 ****
  a00344fd22dfb56132d7eaecf7add3e4  gcc/testsuite/gcc.target/i386/avx512f-vcvtph2ps-2.c
  f5522e3e73f476001fbe3a8f66cc6384  gcc/testsuite/gcc.target/i386/avx512f-vcvtps2dq-1.c
  87eebaeff42392b29a47cfb53aa537a3  gcc/testsuite/gcc.target/i386/avx512f-vcvtps2dq-2.c
! 0b81cc2453cbb0f7f49351ea0b6b126f  gcc/testsuite/gcc.target/i386/avx512f-vcvtps2pd-1.c
  c58d5e0518f9a55f9357771ec2f9b77a  gcc/testsuite/gcc.target/i386/avx512f-vcvtps2pd-2.c
  3c686cf13670ff01f2452dffabbe0339  gcc/testsuite/gcc.target/i386/avx512f-vcvtps2ph-1.c
  bb93618c24644f5f810bc9f925e52ac6  gcc/testsuite/gcc.target/i386/avx512f-vcvtps2ph-2.c
--- 84643,84649 ----
  a00344fd22dfb56132d7eaecf7add3e4  gcc/testsuite/gcc.target/i386/avx512f-vcvtph2ps-2.c
  f5522e3e73f476001fbe3a8f66cc6384  gcc/testsuite/gcc.target/i386/avx512f-vcvtps2dq-1.c
  87eebaeff42392b29a47cfb53aa537a3  gcc/testsuite/gcc.target/i386/avx512f-vcvtps2dq-2.c
! 1c8883353d80fd0a54ab827fc7728532  gcc/testsuite/gcc.target/i386/avx512f-vcvtps2pd-1.c
  c58d5e0518f9a55f9357771ec2f9b77a  gcc/testsuite/gcc.target/i386/avx512f-vcvtps2pd-2.c
  3c686cf13670ff01f2452dffabbe0339  gcc/testsuite/gcc.target/i386/avx512f-vcvtps2ph-1.c
  bb93618c24644f5f810bc9f925e52ac6  gcc/testsuite/gcc.target/i386/avx512f-vcvtps2ph-2.c
*************** bb93618c24644f5f810bc9f925e52ac6  gcc/te
*** 84597,84619 ****
  cb55e2121d04013d132458bef594f03e  gcc/testsuite/gcc.target/i386/avx512f-vcvtps2ph-sae.c
  c85c4875b511f42975a9021c9b8a893a  gcc/testsuite/gcc.target/i386/avx512f-vcvtps2udq-1.c
  0401f46259a989a5d63841ab8f7d40c0  gcc/testsuite/gcc.target/i386/avx512f-vcvtps2udq-2.c
! 5471924da73ff85fc9b17915453eaa53  gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2si-1.c
! 61bf0307c819e1a758af99678f370912  gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2si64-1.c
  fa5045d7a2853246cd65ac66bbc1c25e  gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2ss-1.c
! 2b64a629599e855806321961f461bf15  gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi-1.c
  e1612ae877e65f79e5e0a14da93e04b4  gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi-2.c
! 94671f9c6b480b93fa995af6f7b4436d  gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi64-1.c
  0de9d4841f86111871bac66bd04cdda5  gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi64-2.c
  802ca463aff6cf1f35ba352a0abbb8e1  gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2sd-1.c
  d67300af7605421bbfc0e49e08cc8186  gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2sd64-1.c
! 723bd2b12ae682c2d019ccf3dacebee8  gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2ss-1.c
  51ecce6659f2c5abd9188b36ac2510f7  gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2ss64-1.c
  857482b2cffdb8d8256c05e32d493b12  gcc/testsuite/gcc.target/i386/avx512f-vcvtss2sd-1.c
! c6c7a503ecd10c2d06f6cf9a8fccd53a  gcc/testsuite/gcc.target/i386/avx512f-vcvtss2si-1.c
! b6f2ce5a9582289409b475f0ac818d2b  gcc/testsuite/gcc.target/i386/avx512f-vcvtss2si64-1.c
! 5be229a9240abfa4a205058b98ed1e94  gcc/testsuite/gcc.target/i386/avx512f-vcvtss2usi-1.c
  461898db0c8b804b70a27de9bee12a50  gcc/testsuite/gcc.target/i386/avx512f-vcvtss2usi-2.c
! 03119af99acaaee04f31e7835a3d2033  gcc/testsuite/gcc.target/i386/avx512f-vcvtss2usi64-1.c
  2216f47b4ef0bce9f18195d80e34029d  gcc/testsuite/gcc.target/i386/avx512f-vcvtss2usi64-2.c
  a99c2662f1ed54285a3cbe7c6b7a7b3d  gcc/testsuite/gcc.target/i386/avx512f-vcvttpd2dq-1.c
  e938eb7c36f66d70c5fc3f191e0131b1  gcc/testsuite/gcc.target/i386/avx512f-vcvttpd2dq-2.c
--- 84651,84673 ----
  cb55e2121d04013d132458bef594f03e  gcc/testsuite/gcc.target/i386/avx512f-vcvtps2ph-sae.c
  c85c4875b511f42975a9021c9b8a893a  gcc/testsuite/gcc.target/i386/avx512f-vcvtps2udq-1.c
  0401f46259a989a5d63841ab8f7d40c0  gcc/testsuite/gcc.target/i386/avx512f-vcvtps2udq-2.c
! 007da9ce90fc8fbffe2b2d1b83ddada5  gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2si-1.c
! f4131a000a874cbacf2e174be0deb80b  gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2si64-1.c
  fa5045d7a2853246cd65ac66bbc1c25e  gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2ss-1.c
! 74d006da5d406a46f3376885899b0614  gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi-1.c
  e1612ae877e65f79e5e0a14da93e04b4  gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi-2.c
! 095b87291ecb10f354b04afe4fc5030a  gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi64-1.c
  0de9d4841f86111871bac66bd04cdda5  gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi64-2.c
  802ca463aff6cf1f35ba352a0abbb8e1  gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2sd-1.c
  d67300af7605421bbfc0e49e08cc8186  gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2sd64-1.c
! a995eca64b21caada3590e6218372cc9  gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2ss-1.c
  51ecce6659f2c5abd9188b36ac2510f7  gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2ss64-1.c
  857482b2cffdb8d8256c05e32d493b12  gcc/testsuite/gcc.target/i386/avx512f-vcvtss2sd-1.c
! abdde05d988dfa02f2b0aeaa4c2dfd05  gcc/testsuite/gcc.target/i386/avx512f-vcvtss2si-1.c
! ff29f270580664e9b54ef99217fde4a3  gcc/testsuite/gcc.target/i386/avx512f-vcvtss2si64-1.c
! 27bf75685689f1dd04f1c99af05458a6  gcc/testsuite/gcc.target/i386/avx512f-vcvtss2usi-1.c
  461898db0c8b804b70a27de9bee12a50  gcc/testsuite/gcc.target/i386/avx512f-vcvtss2usi-2.c
! 374a0877d639004df866b4f7be5fb330  gcc/testsuite/gcc.target/i386/avx512f-vcvtss2usi64-1.c
  2216f47b4ef0bce9f18195d80e34029d  gcc/testsuite/gcc.target/i386/avx512f-vcvtss2usi64-2.c
  a99c2662f1ed54285a3cbe7c6b7a7b3d  gcc/testsuite/gcc.target/i386/avx512f-vcvttpd2dq-1.c
  e938eb7c36f66d70c5fc3f191e0131b1  gcc/testsuite/gcc.target/i386/avx512f-vcvttpd2dq-2.c
*************** fd6fbfad164318058e62d88f2fa9e6bb  gcc/te
*** 84623,84643 ****
  09f5f282f9942b7c8980c663b7a68f1f  gcc/testsuite/gcc.target/i386/avx512f-vcvttps2dq-2.c
  e326559f86137fcfe36b810dbc864f7c  gcc/testsuite/gcc.target/i386/avx512f-vcvttps2udq-1.c
  e3c8d8d5cdacdd70621f86d3941c64eb  gcc/testsuite/gcc.target/i386/avx512f-vcvttps2udq-2.c
! 9c5417461b16949e8bbae3d9a3b0007d  gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2si-1.c
  5087b04ba9442364f5bad8e631a426ed  gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2si-2.c
! 1340670500cdffa12be659a1b379c61e  gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2si64-1.c
  478ae5208e7b5917c23c9c3263132e13  gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2si64-2.c
! b9429b4927ccc534c338b46f342195bb  gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2usi-1.c
  8506bcd15826041a710eda70edbff5b7  gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2usi-2.c
! fad57887ade4e15793d1217e7e1ad59c  gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2usi64-1.c
  c3df10309a48442b950098d95a83b6b0  gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2usi64-2.c
! 537fbaf2d28ce6c120ea47cd4a5dd5e2  gcc/testsuite/gcc.target/i386/avx512f-vcvttss2si-1.c
  76ac16970f4a4bc15e576cd5aff4789e  gcc/testsuite/gcc.target/i386/avx512f-vcvttss2si-2.c
! 8d311f73b4f9fe734ae5f4d46fc8c1bf  gcc/testsuite/gcc.target/i386/avx512f-vcvttss2si64-1.c
  f44d540b01a97992e7969d90d0621eef  gcc/testsuite/gcc.target/i386/avx512f-vcvttss2si64-2.c
! 525318d081f532e15a4e92f6218eca82  gcc/testsuite/gcc.target/i386/avx512f-vcvttss2usi-1.c
  206aa1e7d40a4430674f50b148639dc0  gcc/testsuite/gcc.target/i386/avx512f-vcvttss2usi-2.c
! e92099d93ae9f2617ac57480ad418269  gcc/testsuite/gcc.target/i386/avx512f-vcvttss2usi64-1.c
  a8fd5ae752b69f78e55af10766938030  gcc/testsuite/gcc.target/i386/avx512f-vcvttss2usi64-2.c
  8045fe423910f16e69e485f89e741d37  gcc/testsuite/gcc.target/i386/avx512f-vcvtudq2pd-1.c
  16071cf285581a2dda5f1c721d3e2ef0  gcc/testsuite/gcc.target/i386/avx512f-vcvtudq2pd-2.c
--- 84677,84697 ----
  09f5f282f9942b7c8980c663b7a68f1f  gcc/testsuite/gcc.target/i386/avx512f-vcvttps2dq-2.c
  e326559f86137fcfe36b810dbc864f7c  gcc/testsuite/gcc.target/i386/avx512f-vcvttps2udq-1.c
  e3c8d8d5cdacdd70621f86d3941c64eb  gcc/testsuite/gcc.target/i386/avx512f-vcvttps2udq-2.c
! 5bd6af7f8f0cd633eaaddeec908bca47  gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2si-1.c
  5087b04ba9442364f5bad8e631a426ed  gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2si-2.c
! 369ba9c487f1c2d7a9ce91e413784eb3  gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2si64-1.c
  478ae5208e7b5917c23c9c3263132e13  gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2si64-2.c
! b28e9345bb975568c31659220a7362a7  gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2usi-1.c
  8506bcd15826041a710eda70edbff5b7  gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2usi-2.c
! 8c62f0e4964f771999eb413f881c2122  gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2usi64-1.c
  c3df10309a48442b950098d95a83b6b0  gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2usi64-2.c
! e53ba07c834dee12df5f4a26f8d911a7  gcc/testsuite/gcc.target/i386/avx512f-vcvttss2si-1.c
  76ac16970f4a4bc15e576cd5aff4789e  gcc/testsuite/gcc.target/i386/avx512f-vcvttss2si-2.c
! f04fcad777ed0aaac66d2c5731c07d5c  gcc/testsuite/gcc.target/i386/avx512f-vcvttss2si64-1.c
  f44d540b01a97992e7969d90d0621eef  gcc/testsuite/gcc.target/i386/avx512f-vcvttss2si64-2.c
! 134a87e437386508da1c21cc045bed1a  gcc/testsuite/gcc.target/i386/avx512f-vcvttss2usi-1.c
  206aa1e7d40a4430674f50b148639dc0  gcc/testsuite/gcc.target/i386/avx512f-vcvttss2usi-2.c
! 3d58c675e28706dff89131df87e2ebf1  gcc/testsuite/gcc.target/i386/avx512f-vcvttss2usi64-1.c
  a8fd5ae752b69f78e55af10766938030  gcc/testsuite/gcc.target/i386/avx512f-vcvttss2usi64-2.c
  8045fe423910f16e69e485f89e741d37  gcc/testsuite/gcc.target/i386/avx512f-vcvtudq2pd-1.c
  16071cf285581a2dda5f1c721d3e2ef0  gcc/testsuite/gcc.target/i386/avx512f-vcvtudq2pd-2.c
*************** d47b93e003c8d44986c06137b1e887a7  gcc/te
*** 84681,84693 ****
  7ca29bb899b42e3bd100324cd1ae7ac5  gcc/testsuite/gcc.target/i386/avx512f-vexpandpd-2.c
  56c621e8cd949ef74a66c3346988fbd1  gcc/testsuite/gcc.target/i386/avx512f-vexpandps-1.c
  73ae6d1c46e469f48c28311970fbfeb6  gcc/testsuite/gcc.target/i386/avx512f-vexpandps-2.c
! 3e825a6ee1139e6b3382ecbe8c04db87  gcc/testsuite/gcc.target/i386/avx512f-vextractf32x4-1.c
  60bd7781f7a70f2214c51db1a967ea50  gcc/testsuite/gcc.target/i386/avx512f-vextractf32x4-2.c
! 71d480a9e2fb9f70f23889c558a07542  gcc/testsuite/gcc.target/i386/avx512f-vextractf64x4-1.c
  1152fa710692c3cd7bed9092a515f6e0  gcc/testsuite/gcc.target/i386/avx512f-vextractf64x4-2.c
  f13ec4d6935c8e808a92e0b1a9e7f099  gcc/testsuite/gcc.target/i386/avx512f-vextracti32x4-1.c
  d1a053f1f9637b75161602a5c9712e41  gcc/testsuite/gcc.target/i386/avx512f-vextracti32x4-2.c
! 3a8a458df6f39a08df8d2a6dde8309c3  gcc/testsuite/gcc.target/i386/avx512f-vextracti64x4-1.c
  c0f9884b6c7750706e77b509c267b387  gcc/testsuite/gcc.target/i386/avx512f-vextracti64x4-2.c
  af3c9f5fcebb6e86a11ff01f1bba8f60  gcc/testsuite/gcc.target/i386/avx512f-vfixupimmpd-1.c
  d3c27ab350b891bc40b7059a1531c0f5  gcc/testsuite/gcc.target/i386/avx512f-vfixupimmpd-2.c
--- 84735,84747 ----
  7ca29bb899b42e3bd100324cd1ae7ac5  gcc/testsuite/gcc.target/i386/avx512f-vexpandpd-2.c
  56c621e8cd949ef74a66c3346988fbd1  gcc/testsuite/gcc.target/i386/avx512f-vexpandps-1.c
  73ae6d1c46e469f48c28311970fbfeb6  gcc/testsuite/gcc.target/i386/avx512f-vexpandps-2.c
! d8163b07c741854d8137fa748ce789b0  gcc/testsuite/gcc.target/i386/avx512f-vextractf32x4-1.c
  60bd7781f7a70f2214c51db1a967ea50  gcc/testsuite/gcc.target/i386/avx512f-vextractf32x4-2.c
! a6788216e40e2a760ba22b961fa3488c  gcc/testsuite/gcc.target/i386/avx512f-vextractf64x4-1.c
  1152fa710692c3cd7bed9092a515f6e0  gcc/testsuite/gcc.target/i386/avx512f-vextractf64x4-2.c
  f13ec4d6935c8e808a92e0b1a9e7f099  gcc/testsuite/gcc.target/i386/avx512f-vextracti32x4-1.c
  d1a053f1f9637b75161602a5c9712e41  gcc/testsuite/gcc.target/i386/avx512f-vextracti32x4-2.c
! f4213f1d21d0d66d5b43576c77c583ff  gcc/testsuite/gcc.target/i386/avx512f-vextracti64x4-1.c
  c0f9884b6c7750706e77b509c267b387  gcc/testsuite/gcc.target/i386/avx512f-vextracti64x4-2.c
  af3c9f5fcebb6e86a11ff01f1bba8f60  gcc/testsuite/gcc.target/i386/avx512f-vfixupimmpd-1.c
  d3c27ab350b891bc40b7059a1531c0f5  gcc/testsuite/gcc.target/i386/avx512f-vfixupimmpd-2.c
*************** c3302fc1e61a77338a62d7a99ac2afe1  gcc/te
*** 84792,84806 ****
  7d342e5548fa1f3350bc9475fc020b7f  gcc/testsuite/gcc.target/i386/avx512f-vminss-1.c
  9a808fc23c61e6c6947ee5474e1389cf  gcc/testsuite/gcc.target/i386/avx512f-vminss-2.c
  1d28629ec1a4a7bcefe25fd77fd5decd  gcc/testsuite/gcc.target/i386/avx512f-vminss-3.c
! fcfe01c60bc3c40da90f554fa0564673  gcc/testsuite/gcc.target/i386/avx512f-vmovapd-1.c
  6f68dc2ac14a9fc6e6b7a5f3f61a127d  gcc/testsuite/gcc.target/i386/avx512f-vmovapd-2.c
! 74fd360f7fcb0753850eaa1dd42189b6  gcc/testsuite/gcc.target/i386/avx512f-vmovaps-1.c
  9ccd3a7e0f4689d95fba34318579ad51  gcc/testsuite/gcc.target/i386/avx512f-vmovaps-2.c
  001366044976eacf28f574403e24ccd6  gcc/testsuite/gcc.target/i386/avx512f-vmovddup-1.c
  f7e1c9b5681f2fc34fb47ea47fb9f5ed  gcc/testsuite/gcc.target/i386/avx512f-vmovddup-2.c
  a35235fccccbc6c32f0ee01ea6389320  gcc/testsuite/gcc.target/i386/avx512f-vmovdqa32-1.c
  6843391920328a69a666b06ff4e19087  gcc/testsuite/gcc.target/i386/avx512f-vmovdqa32-2.c
! 39b8955057d4e2d9146afe225660a1b5  gcc/testsuite/gcc.target/i386/avx512f-vmovdqa64-1.c
  e9d078b68039e687af930b0d7c6ae089  gcc/testsuite/gcc.target/i386/avx512f-vmovdqa64-2.c
  9bf1c297b3ca0529be2337617bffe27e  gcc/testsuite/gcc.target/i386/avx512f-vmovdqu32-1.c
  af872aea16e9bb4f89e8c7c52d5722f0  gcc/testsuite/gcc.target/i386/avx512f-vmovdqu32-2.c
--- 84846,84860 ----
  7d342e5548fa1f3350bc9475fc020b7f  gcc/testsuite/gcc.target/i386/avx512f-vminss-1.c
  9a808fc23c61e6c6947ee5474e1389cf  gcc/testsuite/gcc.target/i386/avx512f-vminss-2.c
  1d28629ec1a4a7bcefe25fd77fd5decd  gcc/testsuite/gcc.target/i386/avx512f-vminss-3.c
! 2b816c3bc89e6d717a5a6f64a25800b0  gcc/testsuite/gcc.target/i386/avx512f-vmovapd-1.c
  6f68dc2ac14a9fc6e6b7a5f3f61a127d  gcc/testsuite/gcc.target/i386/avx512f-vmovapd-2.c
! a8f119299437ddc429c83e4c58f6e721  gcc/testsuite/gcc.target/i386/avx512f-vmovaps-1.c
  9ccd3a7e0f4689d95fba34318579ad51  gcc/testsuite/gcc.target/i386/avx512f-vmovaps-2.c
  001366044976eacf28f574403e24ccd6  gcc/testsuite/gcc.target/i386/avx512f-vmovddup-1.c
  f7e1c9b5681f2fc34fb47ea47fb9f5ed  gcc/testsuite/gcc.target/i386/avx512f-vmovddup-2.c
  a35235fccccbc6c32f0ee01ea6389320  gcc/testsuite/gcc.target/i386/avx512f-vmovdqa32-1.c
  6843391920328a69a666b06ff4e19087  gcc/testsuite/gcc.target/i386/avx512f-vmovdqa32-2.c
! 915b0e34586cf8c6c220daeaee628a51  gcc/testsuite/gcc.target/i386/avx512f-vmovdqa64-1.c
  e9d078b68039e687af930b0d7c6ae089  gcc/testsuite/gcc.target/i386/avx512f-vmovdqa64-2.c
  9bf1c297b3ca0529be2337617bffe27e  gcc/testsuite/gcc.target/i386/avx512f-vmovdqu32-1.c
  af872aea16e9bb4f89e8c7c52d5722f0  gcc/testsuite/gcc.target/i386/avx512f-vmovdqu32-2.c
*************** fe1c1693a8b51d59d5d5d5b10bb13abf  gcc/te
*** 84851,84857 ****
  fa47b76d69a60b5a5f20b8ca18892899  gcc/testsuite/gcc.target/i386/avx512f-vpandd-2.c
  2f1649a26810f9242cb7dd59deae7154  gcc/testsuite/gcc.target/i386/avx512f-vpandnd-1.c
  ee5a92103ab9077a24429ebf80c90964  gcc/testsuite/gcc.target/i386/avx512f-vpandnd-2.c
! 0c2231574c8164c176f2f0de2628c2e5  gcc/testsuite/gcc.target/i386/avx512f-vpandnq-1.c
  e98ab3839f1a1dd1c3b91c16e7242681  gcc/testsuite/gcc.target/i386/avx512f-vpandnq-2.c
  8380b37114862fe7817f883e816f75a8  gcc/testsuite/gcc.target/i386/avx512f-vpandq-1.c
  7c23c776445c4658cbe1fd383146c4e5  gcc/testsuite/gcc.target/i386/avx512f-vpandq-2.c
--- 84905,84911 ----
  fa47b76d69a60b5a5f20b8ca18892899  gcc/testsuite/gcc.target/i386/avx512f-vpandd-2.c
  2f1649a26810f9242cb7dd59deae7154  gcc/testsuite/gcc.target/i386/avx512f-vpandnd-1.c
  ee5a92103ab9077a24429ebf80c90964  gcc/testsuite/gcc.target/i386/avx512f-vpandnd-2.c
! bec8a53a21b2bf7ab0c1dd696d33e6bb  gcc/testsuite/gcc.target/i386/avx512f-vpandnq-1.c
  e98ab3839f1a1dd1c3b91c16e7242681  gcc/testsuite/gcc.target/i386/avx512f-vpandnq-2.c
  8380b37114862fe7817f883e816f75a8  gcc/testsuite/gcc.target/i386/avx512f-vpandq-1.c
  7c23c776445c4658cbe1fd383146c4e5  gcc/testsuite/gcc.target/i386/avx512f-vpandq-2.c
*************** e98ab3839f1a1dd1c3b91c16e7242681  gcc/te
*** 84859,84886 ****
  f0bbc53daeed10bb8766b883d5c0c203  gcc/testsuite/gcc.target/i386/avx512f-vpblendmd-2.c
  251a99def88f580d82db89f5ec00a907  gcc/testsuite/gcc.target/i386/avx512f-vpblendmq-1.c
  6bdbad17c98c034b06064dd5c043ff6d  gcc/testsuite/gcc.target/i386/avx512f-vpblendmq-2.c
! 246a35e1a446af3d2f0bdbc4f9eee6f8  gcc/testsuite/gcc.target/i386/avx512f-vpbroadcastd-1.c
  4f9e796749bfc5c269e5fcb894f43213  gcc/testsuite/gcc.target/i386/avx512f-vpbroadcastd-2.c
! f6e9ee0f49a9136048b8c607f1f8293a  gcc/testsuite/gcc.target/i386/avx512f-vpbroadcastq-1.c
  aaac1408b5ce290b12e396f2a7423275  gcc/testsuite/gcc.target/i386/avx512f-vpbroadcastq-2.c
  b35f385754d7adcf5a33661dff6d0ee5  gcc/testsuite/gcc.target/i386/avx512f-vpclmulqdq-2.c
! 54663b0d44a4c576ba5aaf106a9d9ea8  gcc/testsuite/gcc.target/i386/avx512f-vpcmpd-1.c
  ca3cbe4bf0bd33e5b9a8b91834012346  gcc/testsuite/gcc.target/i386/avx512f-vpcmpd-2.c
  4a0b6a1b300ae1c484b8811362ed18f7  gcc/testsuite/gcc.target/i386/avx512f-vpcmpeqd-1.c
  d6853934ff8391c6aea8eb369fbb6d41  gcc/testsuite/gcc.target/i386/avx512f-vpcmpeqd-2.c
! 5004fd492cca60d7446526871b902c7b  gcc/testsuite/gcc.target/i386/avx512f-vpcmpeqq-1.c
  ffb2026db54e7bf1c7db73db940cfe40  gcc/testsuite/gcc.target/i386/avx512f-vpcmpeqq-2.c
  868d105f114147b76ec8a490642e1e5e  gcc/testsuite/gcc.target/i386/avx512f-vpcmpequd-1.c
  a7ed0687d14f918e7b2a28126dd1564e  gcc/testsuite/gcc.target/i386/avx512f-vpcmpequd-2.c
! 8200d3dd2772196ad8cf4e498de2a419  gcc/testsuite/gcc.target/i386/avx512f-vpcmpequq-1.c
  0c6de1bdf6c1b0f7e67855ffa54f7d45  gcc/testsuite/gcc.target/i386/avx512f-vpcmpequq-2.c
! c70fba917004f7aa3e3da8968495d597  gcc/testsuite/gcc.target/i386/avx512f-vpcmpged-1.c
  02968ca0040ede699f9da757f4b3aa12  gcc/testsuite/gcc.target/i386/avx512f-vpcmpged-2.c
! 585d6d3456e7e6036f3c7b8d76a3be5b  gcc/testsuite/gcc.target/i386/avx512f-vpcmpgeq-1.c
  ace615b2239ebda8b04d57fb3dd9c902  gcc/testsuite/gcc.target/i386/avx512f-vpcmpgeq-2.c
! 36f97139088cf082d7a6dfb7abfcb25f  gcc/testsuite/gcc.target/i386/avx512f-vpcmpgeud-1.c
  9b67cfcd016b4f114c24fdd3ea5ac9b1  gcc/testsuite/gcc.target/i386/avx512f-vpcmpgeud-2.c
! 2e568f2f20af62ba1e756d62a8159a0a  gcc/testsuite/gcc.target/i386/avx512f-vpcmpgeuq-1.c
  677dafc30e2c32a2144b2139533f2db0  gcc/testsuite/gcc.target/i386/avx512f-vpcmpgeuq-2.c
  3a4d88496414b29a1468121ab9e60026  gcc/testsuite/gcc.target/i386/avx512f-vpcmpgtd-1.c
  bd110a6af386a35002710b701fdf4a39  gcc/testsuite/gcc.target/i386/avx512f-vpcmpgtd-2.c
--- 84913,84940 ----
  f0bbc53daeed10bb8766b883d5c0c203  gcc/testsuite/gcc.target/i386/avx512f-vpblendmd-2.c
  251a99def88f580d82db89f5ec00a907  gcc/testsuite/gcc.target/i386/avx512f-vpblendmq-1.c
  6bdbad17c98c034b06064dd5c043ff6d  gcc/testsuite/gcc.target/i386/avx512f-vpblendmq-2.c
! c08e770dc14debf8dd59ef0976d8e803  gcc/testsuite/gcc.target/i386/avx512f-vpbroadcastd-1.c
  4f9e796749bfc5c269e5fcb894f43213  gcc/testsuite/gcc.target/i386/avx512f-vpbroadcastd-2.c
! d937f7fd932b4221f0bbe9d16821efe2  gcc/testsuite/gcc.target/i386/avx512f-vpbroadcastq-1.c
  aaac1408b5ce290b12e396f2a7423275  gcc/testsuite/gcc.target/i386/avx512f-vpbroadcastq-2.c
  b35f385754d7adcf5a33661dff6d0ee5  gcc/testsuite/gcc.target/i386/avx512f-vpclmulqdq-2.c
! 6986d864e0d3811def6b2ba481e743dd  gcc/testsuite/gcc.target/i386/avx512f-vpcmpd-1.c
  ca3cbe4bf0bd33e5b9a8b91834012346  gcc/testsuite/gcc.target/i386/avx512f-vpcmpd-2.c
  4a0b6a1b300ae1c484b8811362ed18f7  gcc/testsuite/gcc.target/i386/avx512f-vpcmpeqd-1.c
  d6853934ff8391c6aea8eb369fbb6d41  gcc/testsuite/gcc.target/i386/avx512f-vpcmpeqd-2.c
! 1f5bc0d58172c99b9b53bbb8aae7751a  gcc/testsuite/gcc.target/i386/avx512f-vpcmpeqq-1.c
  ffb2026db54e7bf1c7db73db940cfe40  gcc/testsuite/gcc.target/i386/avx512f-vpcmpeqq-2.c
  868d105f114147b76ec8a490642e1e5e  gcc/testsuite/gcc.target/i386/avx512f-vpcmpequd-1.c
  a7ed0687d14f918e7b2a28126dd1564e  gcc/testsuite/gcc.target/i386/avx512f-vpcmpequd-2.c
! 6c0e75ea32d66185f7ee71f3d27d00ed  gcc/testsuite/gcc.target/i386/avx512f-vpcmpequq-1.c
  0c6de1bdf6c1b0f7e67855ffa54f7d45  gcc/testsuite/gcc.target/i386/avx512f-vpcmpequq-2.c
! e3f2e380f858387e88dd4f0f899cd091  gcc/testsuite/gcc.target/i386/avx512f-vpcmpged-1.c
  02968ca0040ede699f9da757f4b3aa12  gcc/testsuite/gcc.target/i386/avx512f-vpcmpged-2.c
! adf56c5eb84aebac88000dc404aaedc2  gcc/testsuite/gcc.target/i386/avx512f-vpcmpgeq-1.c
  ace615b2239ebda8b04d57fb3dd9c902  gcc/testsuite/gcc.target/i386/avx512f-vpcmpgeq-2.c
! 265b307906adc9022570f4d194a22fed  gcc/testsuite/gcc.target/i386/avx512f-vpcmpgeud-1.c
  9b67cfcd016b4f114c24fdd3ea5ac9b1  gcc/testsuite/gcc.target/i386/avx512f-vpcmpgeud-2.c
! b2a19da357b4e13e3929ebf7b0e219a0  gcc/testsuite/gcc.target/i386/avx512f-vpcmpgeuq-1.c
  677dafc30e2c32a2144b2139533f2db0  gcc/testsuite/gcc.target/i386/avx512f-vpcmpgeuq-2.c
  3a4d88496414b29a1468121ab9e60026  gcc/testsuite/gcc.target/i386/avx512f-vpcmpgtd-1.c
  bd110a6af386a35002710b701fdf4a39  gcc/testsuite/gcc.target/i386/avx512f-vpcmpgtd-2.c
*************** c65f3ed9955cb3c6d6630f04c06c055e  gcc/te
*** 84890,84924 ****
  8d9ff7f79681cc7cfe828a8184468d68  gcc/testsuite/gcc.target/i386/avx512f-vpcmpgtud-2.c
  d4e1abafeb49cc2acb336fc751249028  gcc/testsuite/gcc.target/i386/avx512f-vpcmpgtuq-1.c
  be7848d5df575aa4628a92c57b4a7b9c  gcc/testsuite/gcc.target/i386/avx512f-vpcmpgtuq-2.c
! 1dd62b5d2a11bf820918e53d1f1753ee  gcc/testsuite/gcc.target/i386/avx512f-vpcmpled-1.c
  b81a1a12c76aabfb9fe7a922aac2cea2  gcc/testsuite/gcc.target/i386/avx512f-vpcmpled-2.c
! fb9e0830d0e117ed6dfe6145a358a643  gcc/testsuite/gcc.target/i386/avx512f-vpcmpleq-1.c
  a2db23c9b4498c85b19faa4b2991d0fc  gcc/testsuite/gcc.target/i386/avx512f-vpcmpleq-2.c
! fc487497bf8ac74b9e2703c9346d30a6  gcc/testsuite/gcc.target/i386/avx512f-vpcmpleud-1.c
  f36445e41a1d7b960b707a3a2c5bb8af  gcc/testsuite/gcc.target/i386/avx512f-vpcmpleud-2.c
! 78143a97834cfaddee90f74a23771dd6  gcc/testsuite/gcc.target/i386/avx512f-vpcmpleuq-1.c
  aee9bb8fd0dc8d04f465d53fd6d95da3  gcc/testsuite/gcc.target/i386/avx512f-vpcmpleuq-2.c
! 8345a7509fc73845c33c9c00bae84e51  gcc/testsuite/gcc.target/i386/avx512f-vpcmpltd-1.c
  749d36fbc9ade6d9dbc3fb3d21212366  gcc/testsuite/gcc.target/i386/avx512f-vpcmpltd-2.c
! fb84652ea2f43d93aab1113140095c5a  gcc/testsuite/gcc.target/i386/avx512f-vpcmpltq-1.c
  10cb639c1c0a01b4583e8e9ad36f74ca  gcc/testsuite/gcc.target/i386/avx512f-vpcmpltq-2.c
! a785bcfb995a8226b9a9b258841d8d9f  gcc/testsuite/gcc.target/i386/avx512f-vpcmpltud-1.c
  2dc86bbe1dc25ee8d425826603caa094  gcc/testsuite/gcc.target/i386/avx512f-vpcmpltud-2.c
! 16eedd9b13ee4da4bf191d5bf55e2fcb  gcc/testsuite/gcc.target/i386/avx512f-vpcmpltuq-1.c
  502120f8e91191afea7128893c761d49  gcc/testsuite/gcc.target/i386/avx512f-vpcmpltuq-2.c
! 72bf509c93cd703ce9b0820b268499c6  gcc/testsuite/gcc.target/i386/avx512f-vpcmpneqd-1.c
  6eb9c1ca04f70a6a896151e40b4ace8f  gcc/testsuite/gcc.target/i386/avx512f-vpcmpneqd-2.c
! db64ecaf7ddaaef749bc26f50af7e3bc  gcc/testsuite/gcc.target/i386/avx512f-vpcmpneqq-1.c
  4adbf6e699def310bb6e9e486798aec3  gcc/testsuite/gcc.target/i386/avx512f-vpcmpneqq-2.c
! 6e1b36076a0d064087e98569ab6880c8  gcc/testsuite/gcc.target/i386/avx512f-vpcmpnequd-1.c
  6ac0181abfe7483ef1b8440d5e01748d  gcc/testsuite/gcc.target/i386/avx512f-vpcmpnequd-2.c
! 2e4aa02377e1d15ecc1a253b37c4e6a8  gcc/testsuite/gcc.target/i386/avx512f-vpcmpnequq-1.c
  1b0d562e1bdce1d648a306f10df08d5a  gcc/testsuite/gcc.target/i386/avx512f-vpcmpnequq-2.c
! 944d48d463ecd817610cf5b0b76d9dfa  gcc/testsuite/gcc.target/i386/avx512f-vpcmpq-1.c
  9e3d3a9f66d739098528a6e45d8c9b3e  gcc/testsuite/gcc.target/i386/avx512f-vpcmpq-2.c
! a6451c4914c5e548ed0b6b1e89bc6f14  gcc/testsuite/gcc.target/i386/avx512f-vpcmpud-1.c
  168050657750b10d1ebfeaae01fe19da  gcc/testsuite/gcc.target/i386/avx512f-vpcmpud-2.c
! 9818d935e35295611c375d42862183bb  gcc/testsuite/gcc.target/i386/avx512f-vpcmpuq-1.c
  c7a149a80b76351d66c8c6d26298bece  gcc/testsuite/gcc.target/i386/avx512f-vpcmpuq-2.c
  604f26dd3cd6a40229c6c51cb663acb7  gcc/testsuite/gcc.target/i386/avx512f-vpcompressb-1.c
  60c29a1b9e21aa53fd0c293e7f092802  gcc/testsuite/gcc.target/i386/avx512f-vpcompressb-2.c
--- 84944,84978 ----
  8d9ff7f79681cc7cfe828a8184468d68  gcc/testsuite/gcc.target/i386/avx512f-vpcmpgtud-2.c
  d4e1abafeb49cc2acb336fc751249028  gcc/testsuite/gcc.target/i386/avx512f-vpcmpgtuq-1.c
  be7848d5df575aa4628a92c57b4a7b9c  gcc/testsuite/gcc.target/i386/avx512f-vpcmpgtuq-2.c
! ae6210b0951d9f4bdb413dfa8a574d91  gcc/testsuite/gcc.target/i386/avx512f-vpcmpled-1.c
  b81a1a12c76aabfb9fe7a922aac2cea2  gcc/testsuite/gcc.target/i386/avx512f-vpcmpled-2.c
! 9a204ff42873ec8dad22c9a7d3ef0e57  gcc/testsuite/gcc.target/i386/avx512f-vpcmpleq-1.c
  a2db23c9b4498c85b19faa4b2991d0fc  gcc/testsuite/gcc.target/i386/avx512f-vpcmpleq-2.c
! fe1fd9d0b1f4f46874ac4afd17aec75a  gcc/testsuite/gcc.target/i386/avx512f-vpcmpleud-1.c
  f36445e41a1d7b960b707a3a2c5bb8af  gcc/testsuite/gcc.target/i386/avx512f-vpcmpleud-2.c
! 66941ac6fd2283db114f45f6741afdf3  gcc/testsuite/gcc.target/i386/avx512f-vpcmpleuq-1.c
  aee9bb8fd0dc8d04f465d53fd6d95da3  gcc/testsuite/gcc.target/i386/avx512f-vpcmpleuq-2.c
! 59bd99d438a6354310447f5483b8c8f0  gcc/testsuite/gcc.target/i386/avx512f-vpcmpltd-1.c
  749d36fbc9ade6d9dbc3fb3d21212366  gcc/testsuite/gcc.target/i386/avx512f-vpcmpltd-2.c
! 2e871b46dcbc26be688f1a51b8a8fcf0  gcc/testsuite/gcc.target/i386/avx512f-vpcmpltq-1.c
  10cb639c1c0a01b4583e8e9ad36f74ca  gcc/testsuite/gcc.target/i386/avx512f-vpcmpltq-2.c
! c59f4e40b21153a9bc14a7bba1dec6e7  gcc/testsuite/gcc.target/i386/avx512f-vpcmpltud-1.c
  2dc86bbe1dc25ee8d425826603caa094  gcc/testsuite/gcc.target/i386/avx512f-vpcmpltud-2.c
! e980a9cc942ca1bb945d5db24d494809  gcc/testsuite/gcc.target/i386/avx512f-vpcmpltuq-1.c
  502120f8e91191afea7128893c761d49  gcc/testsuite/gcc.target/i386/avx512f-vpcmpltuq-2.c
! bc37df0af4c1946292c16a7976022c1d  gcc/testsuite/gcc.target/i386/avx512f-vpcmpneqd-1.c
  6eb9c1ca04f70a6a896151e40b4ace8f  gcc/testsuite/gcc.target/i386/avx512f-vpcmpneqd-2.c
! 005bc86d787b5e7146b76f779070a65f  gcc/testsuite/gcc.target/i386/avx512f-vpcmpneqq-1.c
  4adbf6e699def310bb6e9e486798aec3  gcc/testsuite/gcc.target/i386/avx512f-vpcmpneqq-2.c
! f12d8b4489cb5becfe009527893e7e72  gcc/testsuite/gcc.target/i386/avx512f-vpcmpnequd-1.c
  6ac0181abfe7483ef1b8440d5e01748d  gcc/testsuite/gcc.target/i386/avx512f-vpcmpnequd-2.c
! 3ec0807bf348f068d318d0128fc8ba13  gcc/testsuite/gcc.target/i386/avx512f-vpcmpnequq-1.c
  1b0d562e1bdce1d648a306f10df08d5a  gcc/testsuite/gcc.target/i386/avx512f-vpcmpnequq-2.c
! 6cadd21c392376f92701e04a47bb20c9  gcc/testsuite/gcc.target/i386/avx512f-vpcmpq-1.c
  9e3d3a9f66d739098528a6e45d8c9b3e  gcc/testsuite/gcc.target/i386/avx512f-vpcmpq-2.c
! 9408e5fa178024a1fc320fc4ae310a05  gcc/testsuite/gcc.target/i386/avx512f-vpcmpud-1.c
  168050657750b10d1ebfeaae01fe19da  gcc/testsuite/gcc.target/i386/avx512f-vpcmpud-2.c
! 81f6be8a8d20f7a2a19aaac69d619fa8  gcc/testsuite/gcc.target/i386/avx512f-vpcmpuq-1.c
  c7a149a80b76351d66c8c6d26298bece  gcc/testsuite/gcc.target/i386/avx512f-vpcmpuq-2.c
  604f26dd3cd6a40229c6c51cb663acb7  gcc/testsuite/gcc.target/i386/avx512f-vpcompressb-1.c
  60c29a1b9e21aa53fd0c293e7f092802  gcc/testsuite/gcc.target/i386/avx512f-vpcompressb-2.c
*************** b8fd0a04d5cddf24de912198ddb13b5d  gcc/te
*** 85169,85177 ****
  e91856445184c77672314c948cf06e11  gcc/testsuite/gcc.target/i386/avx512f-vrcp14sd-2.c
  1a21587fcf03abe0109559ac07f8349c  gcc/testsuite/gcc.target/i386/avx512f-vrcp14ss-1.c
  71f331da51ab04208a8df90851157200  gcc/testsuite/gcc.target/i386/avx512f-vrcp14ss-2.c
! e37e49d4cca1522d9cf91e660ec08113  gcc/testsuite/gcc.target/i386/avx512f-vrndscalepd-1.c
  d8348cd10c65a8bcbbe9bfef756c9c0d  gcc/testsuite/gcc.target/i386/avx512f-vrndscalepd-2.c
! 8884d87bfe764b0d3d3f408c18f4ef56  gcc/testsuite/gcc.target/i386/avx512f-vrndscaleps-1.c
  0b30697aa9cdbd4e09c2d4ff0ccebd29  gcc/testsuite/gcc.target/i386/avx512f-vrndscaleps-2.c
  48f936c262900fac0a0565bfabb2616f  gcc/testsuite/gcc.target/i386/avx512f-vrndscalesd-1.c
  df55ca7ad521ffb1fe1216ccea7e0cd1  gcc/testsuite/gcc.target/i386/avx512f-vrndscalesd-2.c
--- 85223,85231 ----
  e91856445184c77672314c948cf06e11  gcc/testsuite/gcc.target/i386/avx512f-vrcp14sd-2.c
  1a21587fcf03abe0109559ac07f8349c  gcc/testsuite/gcc.target/i386/avx512f-vrcp14ss-1.c
  71f331da51ab04208a8df90851157200  gcc/testsuite/gcc.target/i386/avx512f-vrcp14ss-2.c
! 53747c483befd4e7445cf37c8ead4a92  gcc/testsuite/gcc.target/i386/avx512f-vrndscalepd-1.c
  d8348cd10c65a8bcbbe9bfef756c9c0d  gcc/testsuite/gcc.target/i386/avx512f-vrndscalepd-2.c
! 3e31f0e8a529a1d889ced962800aa5ca  gcc/testsuite/gcc.target/i386/avx512f-vrndscaleps-1.c
  0b30697aa9cdbd4e09c2d4ff0ccebd29  gcc/testsuite/gcc.target/i386/avx512f-vrndscaleps-2.c
  48f936c262900fac0a0565bfabb2616f  gcc/testsuite/gcc.target/i386/avx512f-vrndscalesd-1.c
  df55ca7ad521ffb1fe1216ccea7e0cd1  gcc/testsuite/gcc.target/i386/avx512f-vrndscalesd-2.c
*************** e79f5471eaed0e7487f965113398d268  gcc/te
*** 85280,85286 ****
  7d142a72bda1319294e9d63cc7c29ac2  gcc/testsuite/gcc.target/i386/avx512fp16-builtin-sqrt-1.c
  b9ed1e48c2076ab8bd9adfc96519f6d4  gcc/testsuite/gcc.target/i386/avx512fp16-builtin_shuffle-1.c
  262fe61d867c3bf99c20653180a2b0e0  gcc/testsuite/gcc.target/i386/avx512fp16-complex-constraints.c
! b087aa309dcb182d79cfcb79c9dd7901  gcc/testsuite/gcc.target/i386/avx512fp16-complex-fma.c
  907c613e36c0c6fe7fbadf4bffd07e4f  gcc/testsuite/gcc.target/i386/avx512fp16-conjugation-1.c
  62ba9a2c64517f9e64fd9cb6e220a7bc  gcc/testsuite/gcc.target/i386/avx512fp16-dest-false-dep-for-glc.c
  970bc47c225c13b0c28a2f329533ddb7  gcc/testsuite/gcc.target/i386/avx512fp16-floatvnhf.c
--- 85334,85340 ----
  7d142a72bda1319294e9d63cc7c29ac2  gcc/testsuite/gcc.target/i386/avx512fp16-builtin-sqrt-1.c
  b9ed1e48c2076ab8bd9adfc96519f6d4  gcc/testsuite/gcc.target/i386/avx512fp16-builtin_shuffle-1.c
  262fe61d867c3bf99c20653180a2b0e0  gcc/testsuite/gcc.target/i386/avx512fp16-complex-constraints.c
! 88adebbeb939f4406c5c0f04b0a34943  gcc/testsuite/gcc.target/i386/avx512fp16-complex-fma.c
  907c613e36c0c6fe7fbadf4bffd07e4f  gcc/testsuite/gcc.target/i386/avx512fp16-conjugation-1.c
  62ba9a2c64517f9e64fd9cb6e220a7bc  gcc/testsuite/gcc.target/i386/avx512fp16-dest-false-dep-for-glc.c
  970bc47c225c13b0c28a2f329533ddb7  gcc/testsuite/gcc.target/i386/avx512fp16-floatvnhf.c
*************** d8fdbf8479f340e4dada9fd9d4d4649a  gcc/te
*** 85307,85313 ****
  bb19b6456e461ee55adaea68e25306be  gcc/testsuite/gcc.target/i386/avx512fp16-typecast-1.c
  075feb1c6dfc181a118be15ca0b8279a  gcc/testsuite/gcc.target/i386/avx512fp16-typecast-2.c
  f3aa626e8982c538133c093073e01998  gcc/testsuite/gcc.target/i386/avx512fp16-v4hf-concat.c
! 8cae00e836f4c29d226b376aa355088e  gcc/testsuite/gcc.target/i386/avx512fp16-vaddph-1a.c
  e51ccead2e5f0e0e02cdfe0d131376fc  gcc/testsuite/gcc.target/i386/avx512fp16-vaddph-1b.c
  3c404aa6e8ee2ac8e2ce86b07ca2d11b  gcc/testsuite/gcc.target/i386/avx512fp16-vaddsh-1a.c
  c48b75bd903c6fab4a51b670640f8def  gcc/testsuite/gcc.target/i386/avx512fp16-vaddsh-1b.c
--- 85361,85367 ----
  bb19b6456e461ee55adaea68e25306be  gcc/testsuite/gcc.target/i386/avx512fp16-typecast-1.c
  075feb1c6dfc181a118be15ca0b8279a  gcc/testsuite/gcc.target/i386/avx512fp16-typecast-2.c
  f3aa626e8982c538133c093073e01998  gcc/testsuite/gcc.target/i386/avx512fp16-v4hf-concat.c
! 2c7c3340e0b17c5b140ff3a12050f10e  gcc/testsuite/gcc.target/i386/avx512fp16-vaddph-1a.c
  e51ccead2e5f0e0e02cdfe0d131376fc  gcc/testsuite/gcc.target/i386/avx512fp16-vaddph-1b.c
  3c404aa6e8ee2ac8e2ce86b07ca2d11b  gcc/testsuite/gcc.target/i386/avx512fp16-vaddsh-1a.c
  c48b75bd903c6fab4a51b670640f8def  gcc/testsuite/gcc.target/i386/avx512fp16-vaddsh-1b.c
*************** d6de4b27839b50aa7f7235e70ba88db1  gcc/te
*** 85326,85352 ****
  d3897e3a0500cc75be7d131ecb48cec4  gcc/testsuite/gcc.target/i386/avx512fp16-vcondmn-loop-2.c
  516af3c915e00103f083826fd646a8f0  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtdq2ph-1a.c
  858a696a1e43aa6e419c664d59d904d5  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtdq2ph-1b.c
! 044b5228a853d72a5a6943bde8f6d375  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtpd2ph-1a.c
  d738d302b8d2099a4c50ff9b3a0897db  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtpd2ph-1b.c
! 17b9246bb3bfc5ac74fc1e235804d15e  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2dq-1a.c
  63710fbad7391208aa8853c726a6f54e  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2dq-1b.c
! 1e653fc43be65a92c0695ee281033911  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2pd-1a.c
  17fae81c13b871ac02e8305fd7173880  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2pd-1b.c
! ba049bb7e2b62f35c17e3f271884b047  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2psx-1a.c
  96fc57ece0b649f952e93ec2ae44aba5  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2psx-1b.c
! c853c89d65cc419305064f8494e9dbb4  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2qq-1a.c
  cdf1e363360abd70acc5adba8973b158  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2qq-1b.c
! e0f302a3d2cd93ec8dc0594641c9c8da  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2udq-1a.c
  294b90a63ef0ba58104e53065d64d054  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2udq-1b.c
! b0056fe75d855a568120044f78077863  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2uqq-1a.c
  76c02b4daea3ce9a9a465d9518f2a85e  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2uqq-1b.c
! 80ce4f1ec1e8b272482e75c58f518d33  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2uw-1a.c
  1baa4ebd136e93322f10ce6968f5a15c  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2uw-1b.c
! 51c29c6bd997ba6ee25a84403ba07b29  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2w-1a.c
  1e461e4939d4312cec5981ce6e372995  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2w-1b.c
! b7c23a85cbec24b08e6ce959951b7d70  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtps2ph-1a.c
  6a23e173d2e508a1767c09c8f5661ab9  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtps2ph-1b.c
! 6c3c5cd60ff068bdf621d6a4d90cda0e  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtqq2ph-1a.c
  926a053321b9bf1f0cdc4ce390639eb8  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtqq2ph-1b.c
  777e752120c89cf94d80970a53f6b8a4  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtsd2sh-1a.c
  3036678309bc4a21dbcf666f9758f105  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtsd2sh-1b.c
--- 85380,85406 ----
  d3897e3a0500cc75be7d131ecb48cec4  gcc/testsuite/gcc.target/i386/avx512fp16-vcondmn-loop-2.c
  516af3c915e00103f083826fd646a8f0  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtdq2ph-1a.c
  858a696a1e43aa6e419c664d59d904d5  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtdq2ph-1b.c
! 59163b1386b238ef86788089b2c7c59d  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtpd2ph-1a.c
  d738d302b8d2099a4c50ff9b3a0897db  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtpd2ph-1b.c
! 0e21d2ef2667ddb833f0bf5320ce9426  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2dq-1a.c
  63710fbad7391208aa8853c726a6f54e  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2dq-1b.c
! ae50d64a3749573eeecc749f461431e2  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2pd-1a.c
  17fae81c13b871ac02e8305fd7173880  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2pd-1b.c
! 90c5ceaf4fbec81a35c3ac0d80e6b4fd  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2psx-1a.c
  96fc57ece0b649f952e93ec2ae44aba5  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2psx-1b.c
! 36ae55146f325e1dddf7c0705e7c767c  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2qq-1a.c
  cdf1e363360abd70acc5adba8973b158  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2qq-1b.c
! 84a7b75e33b666d763324ba955b8a438  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2udq-1a.c
  294b90a63ef0ba58104e53065d64d054  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2udq-1b.c
! 635ada0e918eb62eff7ca3c96c677ca4  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2uqq-1a.c
  76c02b4daea3ce9a9a465d9518f2a85e  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2uqq-1b.c
! b02fa5a6f413d68f9765d68de7641023  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2uw-1a.c
  1baa4ebd136e93322f10ce6968f5a15c  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2uw-1b.c
! dd57b24974b1f338da785919a85f0cf6  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2w-1a.c
  1e461e4939d4312cec5981ce6e372995  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2w-1b.c
! c3c6d87a7e0a5270867726e5e07842e9  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtps2ph-1a.c
  6a23e173d2e508a1767c09c8f5661ab9  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtps2ph-1b.c
! 8579c5c85888c089f0ddfe8fa66089a2  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtqq2ph-1a.c
  926a053321b9bf1f0cdc4ce390639eb8  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtqq2ph-1b.c
  777e752120c89cf94d80970a53f6b8a4  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtsd2sh-1a.c
  3036678309bc4a21dbcf666f9758f105  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtsd2sh-1b.c
*************** d3461534523d4723896427a11a5b792c  gcc/te
*** 85368,85384 ****
  7c5c465dd7cb0d65f9dfd55b09a52fe1  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtsi2sh64-1b.c
  1b92c9e72dffaf2d33ee368621f082c8  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtss2sh-1a.c
  7d3f5161f70cfd2e6c411de91c7d61c8  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtss2sh-1b.c
! ff9d7456240b818006d3a8065121464f  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2dq-1a.c
  5b07e9e15b4605bc2dcaeb4bef0a58f1  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2dq-1b.c
! 6db746c5a1ece3a098cf0887c45682fd  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2qq-1a.c
  6705cf69f80712a02ee984a5ce1af4d0  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2qq-1b.c
! 8abf170ae79e1e56b9d2c381bc407ca3  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2udq-1a.c
  ec0246b141250bee48adf61342347212  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2udq-1b.c
! 981b1eec7ff1c7d10c3c5f6a97b31b73  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2uqq-1a.c
  f1c28b001d9d1a6143bc8ef91f0e4ab8  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2uqq-1b.c
! 2dfb9cb31e1cf69b1e004f0680558514  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2uw-1a.c
  a0b9d8aefb40699d0fcbc6bad023e571  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2uw-1b.c
! e2f21352e0bdb253ab43600b1791832c  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2w-1a.c
  0900c8d29804a5b9a7f025c9a3b5f34b  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2w-1b.c
  c3176b010bb8c1e11cf63b13652157c3  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttsh2si-1a.c
  a8ecbf52ad049c2898815b51904ee653  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttsh2si-1b.c
--- 85422,85438 ----
  7c5c465dd7cb0d65f9dfd55b09a52fe1  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtsi2sh64-1b.c
  1b92c9e72dffaf2d33ee368621f082c8  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtss2sh-1a.c
  7d3f5161f70cfd2e6c411de91c7d61c8  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtss2sh-1b.c
! e8b78371b1bd9b8cd9c84091548b414a  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2dq-1a.c
  5b07e9e15b4605bc2dcaeb4bef0a58f1  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2dq-1b.c
! 8e82ff99ac6dae7afbbc984117ef7901  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2qq-1a.c
  6705cf69f80712a02ee984a5ce1af4d0  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2qq-1b.c
! b1904aaca456e92e70ea849288e9330b  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2udq-1a.c
  ec0246b141250bee48adf61342347212  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2udq-1b.c
! f85136f670cf4b688b96b73d649b456c  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2uqq-1a.c
  f1c28b001d9d1a6143bc8ef91f0e4ab8  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2uqq-1b.c
! 6e29c72cf7a46a040f7682df506dd0bc  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2uw-1a.c
  a0b9d8aefb40699d0fcbc6bad023e571  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2uw-1b.c
! 109aed6591f93ff74d5ae00d8b275198  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2w-1a.c
  0900c8d29804a5b9a7f025c9a3b5f34b  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2w-1b.c
  c3176b010bb8c1e11cf63b13652157c3  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttsh2si-1a.c
  a8ecbf52ad049c2898815b51904ee653  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttsh2si-1b.c
*************** f7cc8f9979f71534cd0f98a716377f01  gcc/te
*** 85390,85396 ****
  67a22d0e46956df441b87d2050b136ad  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttsh2usi64-1b.c
  f300e5690eee8a70e26b63133e67e631  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtudq2ph-1a.c
  bf77c0756dc9d7614cd8149c27e5dd46  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtudq2ph-1b.c
! f6a95650dbd625f91ba528ec678afa2d  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtuqq2ph-1a.c
  de66d7dafe3a5094bc177b3d6d11fcfc  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtuqq2ph-1b.c
  15cf68b71d78ad4df2914caa1d5f946c  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtusi2sh-1a.c
  59b3693777bf7617cc3327be1954eedf  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtusi2sh-1b.c
--- 85444,85450 ----
  67a22d0e46956df441b87d2050b136ad  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttsh2usi64-1b.c
  f300e5690eee8a70e26b63133e67e631  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtudq2ph-1a.c
  bf77c0756dc9d7614cd8149c27e5dd46  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtudq2ph-1b.c
! 6ad3d2f2bb888de9d3a3ea56dd519b82  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtuqq2ph-1a.c
  de66d7dafe3a5094bc177b3d6d11fcfc  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtuqq2ph-1b.c
  15cf68b71d78ad4df2914caa1d5f946c  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtusi2sh-1a.c
  59b3693777bf7617cc3327be1954eedf  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtusi2sh-1b.c
*************** dfb6ca5d914d1eea44e47f0da8492abc  gcc/te
*** 85409,85419 ****
  93d4037e4b1bcfbff5ef4f6e0c19029f  gcc/testsuite/gcc.target/i386/avx512fp16-vector-bitwise-1a.c
  d4b57d9f3aa7074a24bc9928558d3db1  gcc/testsuite/gcc.target/i386/avx512fp16-vector-bitwise-1b.c
  3050a280871a042d43e4c6a93073186f  gcc/testsuite/gcc.target/i386/avx512fp16-vector-complex-float.c
! 0b7fa0baa231faeec79d6b7fca8f5054  gcc/testsuite/gcc.target/i386/avx512fp16-vfcmaddcph-1a.c
  7176e6cd788bb9afe553a220482b8400  gcc/testsuite/gcc.target/i386/avx512fp16-vfcmaddcph-1b.c
  ab0c29d856546f3202673bc6ab6e9d2c  gcc/testsuite/gcc.target/i386/avx512fp16-vfcmaddcsh-1a.c
  769f5f5a3f1b35b120c8630f8bd298cc  gcc/testsuite/gcc.target/i386/avx512fp16-vfcmaddcsh-1b.c
! 3e22f3e83f5b2776374025d7e3c746ee  gcc/testsuite/gcc.target/i386/avx512fp16-vfcmulcph-1a.c
  fbfe0f5b055de1170d676187d8245ee7  gcc/testsuite/gcc.target/i386/avx512fp16-vfcmulcph-1b.c
  17643cc337dbcdb21bd8d63eab0e8272  gcc/testsuite/gcc.target/i386/avx512fp16-vfcmulcsh-1a.c
  183ff51271c98036b62042cac8a8bd2f  gcc/testsuite/gcc.target/i386/avx512fp16-vfcmulcsh-1b.c
--- 85463,85473 ----
  93d4037e4b1bcfbff5ef4f6e0c19029f  gcc/testsuite/gcc.target/i386/avx512fp16-vector-bitwise-1a.c
  d4b57d9f3aa7074a24bc9928558d3db1  gcc/testsuite/gcc.target/i386/avx512fp16-vector-bitwise-1b.c
  3050a280871a042d43e4c6a93073186f  gcc/testsuite/gcc.target/i386/avx512fp16-vector-complex-float.c
! 2ffe68f21f04b4bd9c072177c4f7ee52  gcc/testsuite/gcc.target/i386/avx512fp16-vfcmaddcph-1a.c
  7176e6cd788bb9afe553a220482b8400  gcc/testsuite/gcc.target/i386/avx512fp16-vfcmaddcph-1b.c
  ab0c29d856546f3202673bc6ab6e9d2c  gcc/testsuite/gcc.target/i386/avx512fp16-vfcmaddcsh-1a.c
  769f5f5a3f1b35b120c8630f8bd298cc  gcc/testsuite/gcc.target/i386/avx512fp16-vfcmaddcsh-1b.c
! 93924d9458ce50274b1e2f5b021d89c7  gcc/testsuite/gcc.target/i386/avx512fp16-vfcmulcph-1a.c
  fbfe0f5b055de1170d676187d8245ee7  gcc/testsuite/gcc.target/i386/avx512fp16-vfcmulcph-1b.c
  17643cc337dbcdb21bd8d63eab0e8272  gcc/testsuite/gcc.target/i386/avx512fp16-vfcmulcsh-1a.c
  183ff51271c98036b62042cac8a8bd2f  gcc/testsuite/gcc.target/i386/avx512fp16-vfcmulcsh-1b.c
*************** fbfe0f5b055de1170d676187d8245ee7  gcc/te
*** 85421,85427 ****
  8598de8426ac28bdbf5f9799905b7486  gcc/testsuite/gcc.target/i386/avx512fp16-vfmaddXXXph-1b.c
  52f6994430c8d8366f9cda5ef1845a96  gcc/testsuite/gcc.target/i386/avx512fp16-vfmaddXXXsh-1a.c
  4a748e0516d2bfc96da9397da14a2a64  gcc/testsuite/gcc.target/i386/avx512fp16-vfmaddXXXsh-1b.c
! 3b6225af15bd320a6dab51a119123543  gcc/testsuite/gcc.target/i386/avx512fp16-vfmaddcph-1a.c
  1a306272d4fc868d7ecd669e50631f9e  gcc/testsuite/gcc.target/i386/avx512fp16-vfmaddcph-1b.c
  2d673752cca80967628712ee109fc09d  gcc/testsuite/gcc.target/i386/avx512fp16-vfmaddcsh-1a.c
  d1e79d7908611df9a92ac7d57407f5ec  gcc/testsuite/gcc.target/i386/avx512fp16-vfmaddcsh-1b.c
--- 85475,85481 ----
  8598de8426ac28bdbf5f9799905b7486  gcc/testsuite/gcc.target/i386/avx512fp16-vfmaddXXXph-1b.c
  52f6994430c8d8366f9cda5ef1845a96  gcc/testsuite/gcc.target/i386/avx512fp16-vfmaddXXXsh-1a.c
  4a748e0516d2bfc96da9397da14a2a64  gcc/testsuite/gcc.target/i386/avx512fp16-vfmaddXXXsh-1b.c
! ba79d672c6b4bb8c31bc564d197cceed  gcc/testsuite/gcc.target/i386/avx512fp16-vfmaddcph-1a.c
  1a306272d4fc868d7ecd669e50631f9e  gcc/testsuite/gcc.target/i386/avx512fp16-vfmaddcph-1b.c
  2d673752cca80967628712ee109fc09d  gcc/testsuite/gcc.target/i386/avx512fp16-vfmaddcsh-1a.c
  d1e79d7908611df9a92ac7d57407f5ec  gcc/testsuite/gcc.target/i386/avx512fp16-vfmaddcsh-1b.c
*************** e830542eb55b6ac3322fd6497f785b45  gcc/te
*** 85433,85439 ****
  3ce94584461f3832e956ef0d70837f39  gcc/testsuite/gcc.target/i386/avx512fp16-vfmsubXXXsh-1b.c
  078fafa833e4c25be7266c6cd513ad50  gcc/testsuite/gcc.target/i386/avx512fp16-vfmsubaddXXXph-1a.c
  6785a076589fe99a58b0e58468c2e00c  gcc/testsuite/gcc.target/i386/avx512fp16-vfmsubaddXXXph-1b.c
! d0a1f720b0c79273e78db5f773f3047e  gcc/testsuite/gcc.target/i386/avx512fp16-vfmulcph-1a.c
  6755ac53da586e48ab8f02029d94ca42  gcc/testsuite/gcc.target/i386/avx512fp16-vfmulcph-1b.c
  c088bd1be6269b59dc9cc3bda7c0a302  gcc/testsuite/gcc.target/i386/avx512fp16-vfmulcsh-1a.c
  aa72ade853de6ca4954622f0c35d0396  gcc/testsuite/gcc.target/i386/avx512fp16-vfmulcsh-1b.c
--- 85487,85493 ----
  3ce94584461f3832e956ef0d70837f39  gcc/testsuite/gcc.target/i386/avx512fp16-vfmsubXXXsh-1b.c
  078fafa833e4c25be7266c6cd513ad50  gcc/testsuite/gcc.target/i386/avx512fp16-vfmsubaddXXXph-1a.c
  6785a076589fe99a58b0e58468c2e00c  gcc/testsuite/gcc.target/i386/avx512fp16-vfmsubaddXXXph-1b.c
! 3533d20bdc003cda2763159decabe674  gcc/testsuite/gcc.target/i386/avx512fp16-vfmulcph-1a.c
  6755ac53da586e48ab8f02029d94ca42  gcc/testsuite/gcc.target/i386/avx512fp16-vfmulcph-1b.c
  c088bd1be6269b59dc9cc3bda7c0a302  gcc/testsuite/gcc.target/i386/avx512fp16-vfmulcsh-1a.c
  aa72ade853de6ca4954622f0c35d0396  gcc/testsuite/gcc.target/i386/avx512fp16-vfmulcsh-1b.c
*************** ea860d9a8011d5b1556db183aaf57b93  gcc/te
*** 85445,85454 ****
  baf31fdbb66bd1db60ed18831c7eb2a8  gcc/testsuite/gcc.target/i386/avx512fp16-vfnmsubXXXph-1b.c
  9b38556b6dac137c53ce931f1f296cca  gcc/testsuite/gcc.target/i386/avx512fp16-vfnmsubXXXsh-1a.c
  c871215766439133615180b4861bbc02  gcc/testsuite/gcc.target/i386/avx512fp16-vfnmsubXXXsh-1b.c
! e5f342115c72c6f189324bbb8ba8498a  gcc/testsuite/gcc.target/i386/avx512fp16-vfpclassph-1a.c
  432b9a4d4d441c5dfa6b2305508a8b40  gcc/testsuite/gcc.target/i386/avx512fp16-vfpclassph-1b.c
  1ef328cbfb02d1f2fd3e0e62d986ebfc  gcc/testsuite/gcc.target/i386/avx512fp16-vfpclassph-1c.c
! 43f3189c0a0cc0109dba0b81ab99fb0a  gcc/testsuite/gcc.target/i386/avx512fp16-vfpclasssh-1a.c
  3e23e295b389d5fc7973bfc73cd8d235  gcc/testsuite/gcc.target/i386/avx512fp16-vfpclasssh-1b.c
  a3f1acec8cc23029e37e44877fc68d8f  gcc/testsuite/gcc.target/i386/avx512fp16-vgetexpph-1a.c
  0417db62f6b2ee90248403220b8a9b50  gcc/testsuite/gcc.target/i386/avx512fp16-vgetexpph-1b.c
--- 85499,85508 ----
  baf31fdbb66bd1db60ed18831c7eb2a8  gcc/testsuite/gcc.target/i386/avx512fp16-vfnmsubXXXph-1b.c
  9b38556b6dac137c53ce931f1f296cca  gcc/testsuite/gcc.target/i386/avx512fp16-vfnmsubXXXsh-1a.c
  c871215766439133615180b4861bbc02  gcc/testsuite/gcc.target/i386/avx512fp16-vfnmsubXXXsh-1b.c
! 20366ad54c7543d0a4a8b7ebcbe57a57  gcc/testsuite/gcc.target/i386/avx512fp16-vfpclassph-1a.c
  432b9a4d4d441c5dfa6b2305508a8b40  gcc/testsuite/gcc.target/i386/avx512fp16-vfpclassph-1b.c
  1ef328cbfb02d1f2fd3e0e62d986ebfc  gcc/testsuite/gcc.target/i386/avx512fp16-vfpclassph-1c.c
! 4167d41540f16ce5f357c14daab39ac7  gcc/testsuite/gcc.target/i386/avx512fp16-vfpclasssh-1a.c
  3e23e295b389d5fc7973bfc73cd8d235  gcc/testsuite/gcc.target/i386/avx512fp16-vfpclasssh-1b.c
  a3f1acec8cc23029e37e44877fc68d8f  gcc/testsuite/gcc.target/i386/avx512fp16-vgetexpph-1a.c
  0417db62f6b2ee90248403220b8a9b50  gcc/testsuite/gcc.target/i386/avx512fp16-vgetexpph-1b.c
*************** c2b8ad6e5aa2d5ac597249334de18936  gcc/te
*** 85476,85486 ****
  dae692b0e1d837991138ec852d90c1d2  gcc/testsuite/gcc.target/i386/avx512fp16-vmovw-3b.c
  7043b6a71bec66be11e4af66b87eda03  gcc/testsuite/gcc.target/i386/avx512fp16-vmovw-4a.c
  6b1429b77a9f481ebb4c012fbb708e5c  gcc/testsuite/gcc.target/i386/avx512fp16-vmovw-4b.c
! caf040594bdc6bb64044942cbca91779  gcc/testsuite/gcc.target/i386/avx512fp16-vmulph-1a.c
  241884b1dda90fbbc81872442f78ff2b  gcc/testsuite/gcc.target/i386/avx512fp16-vmulph-1b.c
  3ee24fc0537f9163f446b55411da155f  gcc/testsuite/gcc.target/i386/avx512fp16-vmulsh-1a.c
  d8361c88b678e85dbea8d9c132aef948  gcc/testsuite/gcc.target/i386/avx512fp16-vmulsh-1b.c
! e1c09a8a3f89395dc1e995f33c144c76  gcc/testsuite/gcc.target/i386/avx512fp16-vrcpph-1a.c
  4a1e2b67404e756caf4595c860220d46  gcc/testsuite/gcc.target/i386/avx512fp16-vrcpph-1b.c
  43d1a14153aa8b4af6a1c68f594fb363  gcc/testsuite/gcc.target/i386/avx512fp16-vrcpsh-1a.c
  bf03643c5dd4168e27f57d9caa97e40c  gcc/testsuite/gcc.target/i386/avx512fp16-vrcpsh-1b.c
--- 85530,85540 ----
  dae692b0e1d837991138ec852d90c1d2  gcc/testsuite/gcc.target/i386/avx512fp16-vmovw-3b.c
  7043b6a71bec66be11e4af66b87eda03  gcc/testsuite/gcc.target/i386/avx512fp16-vmovw-4a.c
  6b1429b77a9f481ebb4c012fbb708e5c  gcc/testsuite/gcc.target/i386/avx512fp16-vmovw-4b.c
! 2b555524073808368ce9ef86e6e10e17  gcc/testsuite/gcc.target/i386/avx512fp16-vmulph-1a.c
  241884b1dda90fbbc81872442f78ff2b  gcc/testsuite/gcc.target/i386/avx512fp16-vmulph-1b.c
  3ee24fc0537f9163f446b55411da155f  gcc/testsuite/gcc.target/i386/avx512fp16-vmulsh-1a.c
  d8361c88b678e85dbea8d9c132aef948  gcc/testsuite/gcc.target/i386/avx512fp16-vmulsh-1b.c
! 57e26748e88c5cd7e1d3ebd8570c011b  gcc/testsuite/gcc.target/i386/avx512fp16-vrcpph-1a.c
  4a1e2b67404e756caf4595c860220d46  gcc/testsuite/gcc.target/i386/avx512fp16-vrcpph-1b.c
  43d1a14153aa8b4af6a1c68f594fb363  gcc/testsuite/gcc.target/i386/avx512fp16-vrcpsh-1a.c
  bf03643c5dd4168e27f57d9caa97e40c  gcc/testsuite/gcc.target/i386/avx512fp16-vrcpsh-1b.c
*************** bf03643c5dd4168e27f57d9caa97e40c  gcc/te
*** 85492,85498 ****
  6970f755e6a68b27cc588df81723848f  gcc/testsuite/gcc.target/i386/avx512fp16-vrndscaleph-1b.c
  1dea081e32e89a263e3782d92308d42f  gcc/testsuite/gcc.target/i386/avx512fp16-vrndscalesh-1a.c
  df4228e144329f00444801f62d705964  gcc/testsuite/gcc.target/i386/avx512fp16-vrndscalesh-1b.c
! db5f22cc6451291ec9f1b52a992a40b8  gcc/testsuite/gcc.target/i386/avx512fp16-vrsqrtph-1a.c
  c03a6fd4dae639987f2f4fd9293201c1  gcc/testsuite/gcc.target/i386/avx512fp16-vrsqrtph-1b.c
  6bbcebe17b0358483254a9deef8746b9  gcc/testsuite/gcc.target/i386/avx512fp16-vrsqrtsh-1a.c
  e22965ad7f8ae66186f596cb545534c5  gcc/testsuite/gcc.target/i386/avx512fp16-vrsqrtsh-1b.c
--- 85546,85552 ----
  6970f755e6a68b27cc588df81723848f  gcc/testsuite/gcc.target/i386/avx512fp16-vrndscaleph-1b.c
  1dea081e32e89a263e3782d92308d42f  gcc/testsuite/gcc.target/i386/avx512fp16-vrndscalesh-1a.c
  df4228e144329f00444801f62d705964  gcc/testsuite/gcc.target/i386/avx512fp16-vrndscalesh-1b.c
! 1e2156397cb7bdacb186b328746c0aa5  gcc/testsuite/gcc.target/i386/avx512fp16-vrsqrtph-1a.c
  c03a6fd4dae639987f2f4fd9293201c1  gcc/testsuite/gcc.target/i386/avx512fp16-vrsqrtph-1b.c
  6bbcebe17b0358483254a9deef8746b9  gcc/testsuite/gcc.target/i386/avx512fp16-vrsqrtsh-1a.c
  e22965ad7f8ae66186f596cb545534c5  gcc/testsuite/gcc.target/i386/avx512fp16-vrsqrtsh-1b.c
*************** e22965ad7f8ae66186f596cb545534c5  gcc/te
*** 85500,85506 ****
  7d0e35d69ba82cec1eeb05dc952ecd82  gcc/testsuite/gcc.target/i386/avx512fp16-vscalefph-1b.c
  245119bf0a8838235d99ccded98653b8  gcc/testsuite/gcc.target/i386/avx512fp16-vscalefsh-1a.c
  893f3813fb89f59b802c9104f2599e8c  gcc/testsuite/gcc.target/i386/avx512fp16-vscalefsh-1b.c
! abec174f2ad4aeb106fa898023f0c25d  gcc/testsuite/gcc.target/i386/avx512fp16-vsqrtph-1a.c
  286c719055a41b2de9a89a1e50237a73  gcc/testsuite/gcc.target/i386/avx512fp16-vsqrtph-1b.c
  7f0e430fe76b4b9471d4b08faf16cd46  gcc/testsuite/gcc.target/i386/avx512fp16-vsqrtsh-1a.c
  eea70f7ec894dc0734720f1168d66a60  gcc/testsuite/gcc.target/i386/avx512fp16-vsqrtsh-1b.c
--- 85554,85560 ----
  7d0e35d69ba82cec1eeb05dc952ecd82  gcc/testsuite/gcc.target/i386/avx512fp16-vscalefph-1b.c
  245119bf0a8838235d99ccded98653b8  gcc/testsuite/gcc.target/i386/avx512fp16-vscalefsh-1a.c
  893f3813fb89f59b802c9104f2599e8c  gcc/testsuite/gcc.target/i386/avx512fp16-vscalefsh-1b.c
! 8d8a36e81bf7908f8f5b41c8d5a3f77b  gcc/testsuite/gcc.target/i386/avx512fp16-vsqrtph-1a.c
  286c719055a41b2de9a89a1e50237a73  gcc/testsuite/gcc.target/i386/avx512fp16-vsqrtph-1b.c
  7f0e430fe76b4b9471d4b08faf16cd46  gcc/testsuite/gcc.target/i386/avx512fp16-vsqrtsh-1a.c
  eea70f7ec894dc0734720f1168d66a60  gcc/testsuite/gcc.target/i386/avx512fp16-vsqrtsh-1b.c
*************** d22f16d05588a4dd223b55a41aab4cbd  gcc/te
*** 85522,85570 ****
  1fc34d1a52a45b56f8dd136cdf04f415  gcc/testsuite/gcc.target/i386/avx512fp16vl-set1-pch-1b.c
  4c8fe2c0f31819229e27d8797cd2496b  gcc/testsuite/gcc.target/i386/avx512fp16vl-typecast-1.c
  b46a427bb17a20b520a7db7ce4250c1b  gcc/testsuite/gcc.target/i386/avx512fp16vl-typecast-2.c
! 668e017a3e6b9bff2a578d15fedc9030  gcc/testsuite/gcc.target/i386/avx512fp16vl-vaddph-1a.c
  2574a54024be5d6ef518e2bae25cd6f6  gcc/testsuite/gcc.target/i386/avx512fp16vl-vaddph-1b.c
  47c7f79bcaeb11267d2a809293d9ae93  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcmpph-1a.c
  e548c5f165233a6b0f52bddfd00b604f  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcmpph-1b.c
  78ad59fb4291984c765815bac8d15b10  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtdq2ph-1a.c
  7eda7b75b02475ecbb3bf828b4513c00  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtdq2ph-1b.c
! fd67ae5beec610a3518bdd0c9a4212d1  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtpd2ph-1a.c
  c51fc319163db9850e50b2ff767b1449  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtpd2ph-1b.c
! 384dc5d09ca0b0a5e0ffa26660f0731c  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2dq-1a.c
  4bc563fd9fd760397f3b6cb9403c7d94  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2dq-1b.c
  89a1295ec1248ce7907c7cd349363ea6  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2pd-1a.c
  54b82109d1b758809669c9c001109738  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2pd-1b.c
! 75e6fa7d77f0dcbbbade9245e6f55603  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2psx-1a.c
  9cd301a4712fb86b9f581e94b4e71769  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2psx-1b.c
! b0cdc454ecd13953d35fb609837e5cd7  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2qq-1a.c
  66015b922981ef8f2b16a4a41c533d9f  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2qq-1b.c
! 8188707b3e279fbd54dceda89548a016  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2udq-1a.c
  db7598788dae76f78020c785009721c3  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2udq-1b.c
! caee8c232f489232793fdd47973dc69f  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2uqq-1a.c
  d0087d75beb636dc4ec7112b39ba21b5  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2uqq-1b.c
! 8b86e2aa730e06d2d86d76b97f32971f  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2uw-1a.c
  b7f54d63aa3eda2a3826307367d8ab78  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2uw-1b.c
! a84fd08e7947e929005dfa30d7e6717e  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2w-1a.c
  4818a70d8bce5721d79026659532d901  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2w-1b.c
! 6ddb98e826509d0cdb9f9b9e14e97343  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtps2ph-1a.c
  51326d2ae9d80f0e96dfe27a549d0a53  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtps2ph-1b.c
! c5e861c073b31db31447a512e34a8026  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtqq2ph-1a.c
  0e22e2def8bf797a1f8ea124a117ab29  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtqq2ph-1b.c
! 74e018dcc2ab8593f1d3e979fc862f8d  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2dq-1a.c
  f61a3cb3ecc48e639fa2d08a1bac4171  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2dq-1b.c
  524f0c14e50098060aa74b78f6f2e6bd  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2qq-1a.c
  101c2c792d6f8135697f455d6bc440ea  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2qq-1b.c
! acb6a3fda5187e8c8a55df89ca4cccc6  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2udq-1a.c
  918d141cd128e05bd5cbcd4fd86875e5  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2udq-1b.c
  18867b5683bb205fdbfd85cad94f343c  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2uqq-1a.c
  6258ab08947763f721c03de622dd0350  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2uqq-1b.c
! 92a79c6248f15e5f308c8a527bff54df  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2uw-1a.c
  0b10bb8dd7ba8c0c09ee68befdfc846d  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2uw-1b.c
! 17de217c1d369e872a49099e5cf05bca  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2w-1a.c
  5b59071f5475bd6fab2593a27e43382b  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2w-1b.c
  dbd04e3756dfea50a6f561e08e7b3f4a  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtudq2ph-1a.c
  dffc6dba60c0fae2dc5ffef7d6730bbc  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtudq2ph-1b.c
! 76e0cfcc126a26f8071fa9c7bc593864  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtuqq2ph-1a.c
  996e891bfa25db9be49bd068bf43c87e  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtuqq2ph-1b.c
  1afc681e8b1e961b1d39eb12a28d505a  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtuw2ph-1a.c
  ce915f9aa41b8c0ad0d5bfd50d48dce2  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtuw2ph-1b.c
--- 85576,85624 ----
  1fc34d1a52a45b56f8dd136cdf04f415  gcc/testsuite/gcc.target/i386/avx512fp16vl-set1-pch-1b.c
  4c8fe2c0f31819229e27d8797cd2496b  gcc/testsuite/gcc.target/i386/avx512fp16vl-typecast-1.c
  b46a427bb17a20b520a7db7ce4250c1b  gcc/testsuite/gcc.target/i386/avx512fp16vl-typecast-2.c
! 2e5cd0c27412f7b146c1662ded94efa8  gcc/testsuite/gcc.target/i386/avx512fp16vl-vaddph-1a.c
  2574a54024be5d6ef518e2bae25cd6f6  gcc/testsuite/gcc.target/i386/avx512fp16vl-vaddph-1b.c
  47c7f79bcaeb11267d2a809293d9ae93  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcmpph-1a.c
  e548c5f165233a6b0f52bddfd00b604f  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcmpph-1b.c
  78ad59fb4291984c765815bac8d15b10  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtdq2ph-1a.c
  7eda7b75b02475ecbb3bf828b4513c00  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtdq2ph-1b.c
! a2f55cc3a85ac9378ee1e7a520575146  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtpd2ph-1a.c
  c51fc319163db9850e50b2ff767b1449  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtpd2ph-1b.c
! ff9216a1397c173f3d672d2ca6b40a6a  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2dq-1a.c
  4bc563fd9fd760397f3b6cb9403c7d94  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2dq-1b.c
  89a1295ec1248ce7907c7cd349363ea6  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2pd-1a.c
  54b82109d1b758809669c9c001109738  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2pd-1b.c
! 78cfd2b6e3ff1c5bc2672d8a7fb3a1fd  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2psx-1a.c
  9cd301a4712fb86b9f581e94b4e71769  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2psx-1b.c
! 298b9145a99b82ad5c33ebc97a92dc2a  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2qq-1a.c
  66015b922981ef8f2b16a4a41c533d9f  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2qq-1b.c
! efb6db14651604eb403ddb834a453d3e  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2udq-1a.c
  db7598788dae76f78020c785009721c3  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2udq-1b.c
! 2d7448d9e0e8059fb6f0079c6bedd66e  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2uqq-1a.c
  d0087d75beb636dc4ec7112b39ba21b5  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2uqq-1b.c
! 560763f1c5845cf684835283c4bd5052  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2uw-1a.c
  b7f54d63aa3eda2a3826307367d8ab78  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2uw-1b.c
! b326f4507009b4b386480591ab3e6725  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2w-1a.c
  4818a70d8bce5721d79026659532d901  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2w-1b.c
! a1eb3791b5ccc97ae5c1217ceca56f1f  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtps2ph-1a.c
  51326d2ae9d80f0e96dfe27a549d0a53  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtps2ph-1b.c
! ab4abbbb727af892608f4ad5eef73efc  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtqq2ph-1a.c
  0e22e2def8bf797a1f8ea124a117ab29  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtqq2ph-1b.c
! 370687a6c1f239d60f51193fecc3ccca  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2dq-1a.c
  f61a3cb3ecc48e639fa2d08a1bac4171  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2dq-1b.c
  524f0c14e50098060aa74b78f6f2e6bd  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2qq-1a.c
  101c2c792d6f8135697f455d6bc440ea  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2qq-1b.c
! 1d9f9443c556bd234aa490063e1bf4cd  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2udq-1a.c
  918d141cd128e05bd5cbcd4fd86875e5  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2udq-1b.c
  18867b5683bb205fdbfd85cad94f343c  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2uqq-1a.c
  6258ab08947763f721c03de622dd0350  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2uqq-1b.c
! 5ae7c4ab2afbde9de833a49e5992cf42  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2uw-1a.c
  0b10bb8dd7ba8c0c09ee68befdfc846d  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2uw-1b.c
! bb46b40a53f277d4aee72f94cc0bc5e6  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2w-1a.c
  5b59071f5475bd6fab2593a27e43382b  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2w-1b.c
  dbd04e3756dfea50a6f561e08e7b3f4a  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtudq2ph-1a.c
  dffc6dba60c0fae2dc5ffef7d6730bbc  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtudq2ph-1b.c
! 38160f776f6c6f303ce1ba8de0c2b913  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtuqq2ph-1a.c
  996e891bfa25db9be49bd068bf43c87e  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtuqq2ph-1b.c
  1afc681e8b1e961b1d39eb12a28d505a  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtuw2ph-1a.c
  ce915f9aa41b8c0ad0d5bfd50d48dce2  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtuw2ph-1b.c
*************** eefc96e7b40bd13cadc405b15f10ad07  gcc/te
*** 85572,85584 ****
  9ef10cbc9797265ae13dbae561ad1676  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtw2ph-1b.c
  fff2a9cfd16fc5853b1107b9fbb4527c  gcc/testsuite/gcc.target/i386/avx512fp16vl-vdivph-1a.c
  936e00e626512e1c797d60b896fb10ae  gcc/testsuite/gcc.target/i386/avx512fp16vl-vdivph-1b.c
! 0746bbc58449a87d9711475b0ef6a0ae  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfcmaddcph-1a.c
  3a1da4c9373179778309ff3b777580a3  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfcmaddcph-1b.c
! 1b2109245a774f87cb04912a57232f71  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfcmulcph-1a.c
  71064dd7fa29fe1871e7b3f57e0bb9df  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfcmulcph-1b.c
  0cfd72100648de4a848e438643d518d7  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfmaddXXXph-1a.c
  7c9286eebe289ec3ec465759be5f1200  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfmaddXXXph-1b.c
! 3a8f9ea4e5dd1084a63e35b1a5702220  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfmaddcph-1a.c
  13bc91b70f04f0183bb4009774c46679  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfmaddcph-1b.c
  b55c044547754292b9c4604f3b8be15c  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfmaddsubXXXph-1a.c
  b22adf2c3a3abab18f4e9e1724077d69  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfmaddsubXXXph-1b.c
--- 85626,85638 ----
  9ef10cbc9797265ae13dbae561ad1676  gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtw2ph-1b.c
  fff2a9cfd16fc5853b1107b9fbb4527c  gcc/testsuite/gcc.target/i386/avx512fp16vl-vdivph-1a.c
  936e00e626512e1c797d60b896fb10ae  gcc/testsuite/gcc.target/i386/avx512fp16vl-vdivph-1b.c
! 1a61afb577420205a38b37028d2e1034  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfcmaddcph-1a.c
  3a1da4c9373179778309ff3b777580a3  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfcmaddcph-1b.c
! d4fb390c8a027d0ada24862d464db520  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfcmulcph-1a.c
  71064dd7fa29fe1871e7b3f57e0bb9df  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfcmulcph-1b.c
  0cfd72100648de4a848e438643d518d7  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfmaddXXXph-1a.c
  7c9286eebe289ec3ec465759be5f1200  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfmaddXXXph-1b.c
! a9833a5891ffe7460c9e101bd10869dd  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfmaddcph-1a.c
  13bc91b70f04f0183bb4009774c46679  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfmaddcph-1b.c
  b55c044547754292b9c4604f3b8be15c  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfmaddsubXXXph-1a.c
  b22adf2c3a3abab18f4e9e1724077d69  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfmaddsubXXXph-1b.c
*************** f744d8527e03baa047d4955ab72ebdcf  gcc/te
*** 85586,85598 ****
  46eee71ea9496d64338eef0411fd23c1  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfmsubXXXph-1b.c
  65f17a4591f6c611466c4c39b45186b9  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfmsubaddXXXph-1a.c
  efbed2b76f297f283a4e744a943eb080  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfmsubaddXXXph-1b.c
! 32cd690a50f6de2fdda27dfa10f617a6  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfmulcph-1a.c
  6b4f528f59b6634179db1191164c630c  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfmulcph-1b.c
  12ab6867a0b80213d0f7006370d96dce  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfnmaddXXXph-1a.c
  8a2fd5dd39eba6562561d91702b6147a  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfnmaddXXXph-1b.c
  814bc54a52a34da228a1b13605fc56f0  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfnmsubXXXph-1a.c
  595b5846335c3c0a86b8db17e0f60f78  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfnmsubXXXph-1b.c
! 1749cfb3b31eedd0e0f4abe9aff2cb6f  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfpclassph-1a.c
  33c3e06fb0746731f8072b54c08551fa  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfpclassph-1b.c
  ef47275bb5b5e9cd3b674c4c46801a5f  gcc/testsuite/gcc.target/i386/avx512fp16vl-vgetexpph-1a.c
  0bae68e74ad4f94f4ad5adf1402f8418  gcc/testsuite/gcc.target/i386/avx512fp16vl-vgetexpph-1b.c
--- 85640,85652 ----
  46eee71ea9496d64338eef0411fd23c1  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfmsubXXXph-1b.c
  65f17a4591f6c611466c4c39b45186b9  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfmsubaddXXXph-1a.c
  efbed2b76f297f283a4e744a943eb080  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfmsubaddXXXph-1b.c
! 2ba05fe7662e7cabf4986f77ea60990e  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfmulcph-1a.c
  6b4f528f59b6634179db1191164c630c  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfmulcph-1b.c
  12ab6867a0b80213d0f7006370d96dce  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfnmaddXXXph-1a.c
  8a2fd5dd39eba6562561d91702b6147a  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfnmaddXXXph-1b.c
  814bc54a52a34da228a1b13605fc56f0  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfnmsubXXXph-1a.c
  595b5846335c3c0a86b8db17e0f60f78  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfnmsubXXXph-1b.c
! d66908de56cc3befeac3c099c33342b7  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfpclassph-1a.c
  33c3e06fb0746731f8072b54c08551fa  gcc/testsuite/gcc.target/i386/avx512fp16vl-vfpclassph-1b.c
  ef47275bb5b5e9cd3b674c4c46801a5f  gcc/testsuite/gcc.target/i386/avx512fp16vl-vgetexpph-1a.c
  0bae68e74ad4f94f4ad5adf1402f8418  gcc/testsuite/gcc.target/i386/avx512fp16vl-vgetexpph-1b.c
*************** edab8b1a84af22b7e06cc8a03d449cdf  gcc/te
*** 85602,85620 ****
  144d71f745f870de3bed2f56253f5def  gcc/testsuite/gcc.target/i386/avx512fp16vl-vmaxph-1b.c
  c508fa63b82d7e8485231005e838faab  gcc/testsuite/gcc.target/i386/avx512fp16vl-vminph-1a.c
  2ac14e17c7d8bea08c38524d9ce767de  gcc/testsuite/gcc.target/i386/avx512fp16vl-vminph-1b.c
! 553e723ff2415a9cdbc699fa31c7538e  gcc/testsuite/gcc.target/i386/avx512fp16vl-vmulph-1a.c
  c23f725b208d00b2a17b0eeff0f4e4e1  gcc/testsuite/gcc.target/i386/avx512fp16vl-vmulph-1b.c
! ff4516d71292cd5af79c95c27649973b  gcc/testsuite/gcc.target/i386/avx512fp16vl-vrcpph-1a.c
  73ea27999df3c8f3b4d3df583b0e4d8b  gcc/testsuite/gcc.target/i386/avx512fp16vl-vrcpph-1b.c
  a19dadf2648d4aba0db44a3a6bc14483  gcc/testsuite/gcc.target/i386/avx512fp16vl-vreduceph-1a.c
  874335942c5b3e9038faae6a630c32b8  gcc/testsuite/gcc.target/i386/avx512fp16vl-vreduceph-1b.c
  8bc4593197ca60bcd96f53f036241ec9  gcc/testsuite/gcc.target/i386/avx512fp16vl-vrndscaleph-1a.c
  c4e22178ec6623c8299ad06eb75c68b0  gcc/testsuite/gcc.target/i386/avx512fp16vl-vrndscaleph-1b.c
! d9a2c270bf8fe66405b8f9c8501ad830  gcc/testsuite/gcc.target/i386/avx512fp16vl-vrsqrtph-1a.c
  a9b4f598a9d799ddfa6d58ecaa25e0ae  gcc/testsuite/gcc.target/i386/avx512fp16vl-vrsqrtph-1b.c
  6d023fb1acf67f582c34ee1446e9fb84  gcc/testsuite/gcc.target/i386/avx512fp16vl-vscalefph-1a.c
  a593f4f9d8ba870b0eed0981c3824f3b  gcc/testsuite/gcc.target/i386/avx512fp16vl-vscalefph-1b.c
! 7e73fe2e2df29207a028d2954f7ea930  gcc/testsuite/gcc.target/i386/avx512fp16vl-vsqrtph-1a.c
  f79eb1ae00681f2da24450b180fb9d92  gcc/testsuite/gcc.target/i386/avx512fp16vl-vsqrtph-1b.c
  09bb88db303e43f561ea2094ee199daa  gcc/testsuite/gcc.target/i386/avx512fp16vl-vsubph-1a.c
  c02bc805f1179c259ec57d0a754f44e1  gcc/testsuite/gcc.target/i386/avx512fp16vl-vsubph-1b.c
--- 85656,85674 ----
  144d71f745f870de3bed2f56253f5def  gcc/testsuite/gcc.target/i386/avx512fp16vl-vmaxph-1b.c
  c508fa63b82d7e8485231005e838faab  gcc/testsuite/gcc.target/i386/avx512fp16vl-vminph-1a.c
  2ac14e17c7d8bea08c38524d9ce767de  gcc/testsuite/gcc.target/i386/avx512fp16vl-vminph-1b.c
! 85badc636b85d4e116170ca01f596b4b  gcc/testsuite/gcc.target/i386/avx512fp16vl-vmulph-1a.c
  c23f725b208d00b2a17b0eeff0f4e4e1  gcc/testsuite/gcc.target/i386/avx512fp16vl-vmulph-1b.c
! 106f118290f7851842969834fb617807  gcc/testsuite/gcc.target/i386/avx512fp16vl-vrcpph-1a.c
  73ea27999df3c8f3b4d3df583b0e4d8b  gcc/testsuite/gcc.target/i386/avx512fp16vl-vrcpph-1b.c
  a19dadf2648d4aba0db44a3a6bc14483  gcc/testsuite/gcc.target/i386/avx512fp16vl-vreduceph-1a.c
  874335942c5b3e9038faae6a630c32b8  gcc/testsuite/gcc.target/i386/avx512fp16vl-vreduceph-1b.c
  8bc4593197ca60bcd96f53f036241ec9  gcc/testsuite/gcc.target/i386/avx512fp16vl-vrndscaleph-1a.c
  c4e22178ec6623c8299ad06eb75c68b0  gcc/testsuite/gcc.target/i386/avx512fp16vl-vrndscaleph-1b.c
! b71306fe6cefca4e0e68733fa9c589d8  gcc/testsuite/gcc.target/i386/avx512fp16vl-vrsqrtph-1a.c
  a9b4f598a9d799ddfa6d58ecaa25e0ae  gcc/testsuite/gcc.target/i386/avx512fp16vl-vrsqrtph-1b.c
  6d023fb1acf67f582c34ee1446e9fb84  gcc/testsuite/gcc.target/i386/avx512fp16vl-vscalefph-1a.c
  a593f4f9d8ba870b0eed0981c3824f3b  gcc/testsuite/gcc.target/i386/avx512fp16vl-vscalefph-1b.c
! 08694ee827ba6c2bb4b20882e2f046b8  gcc/testsuite/gcc.target/i386/avx512fp16vl-vsqrtph-1a.c
  f79eb1ae00681f2da24450b180fb9d92  gcc/testsuite/gcc.target/i386/avx512fp16vl-vsqrtph-1b.c
  09bb88db303e43f561ea2094ee199daa  gcc/testsuite/gcc.target/i386/avx512fp16vl-vsubph-1a.c
  c02bc805f1179c259ec57d0a754f44e1  gcc/testsuite/gcc.target/i386/avx512fp16vl-vsubph-1b.c
*************** c0ef55ca688d812ce21255d44fb1a7d9  gcc/te
*** 85704,85710 ****
  c1fc8c403bea321e9edbec8f46fe2fd8  gcc/testsuite/gcc.target/i386/avx512vl-or-si-ymm-1.c
  5eaf41121795442d2f0736d687d1f1e5  gcc/testsuite/gcc.target/i386/avx512vl-pack-1.c
  994c768ea6f011cb5852de30a104bd2e  gcc/testsuite/gcc.target/i386/avx512vl-pack-2.c
! 6d27b8ca57a36d88c859330ff725fb7e  gcc/testsuite/gcc.target/i386/avx512vl-pr100267-1.c
  26d1511d7f94a147fff46e5c7b585b00  gcc/testsuite/gcc.target/i386/avx512vl-pr100267-pd-2.c
  677f7e556dddad5fe5ca2d37be1cdfa4  gcc/testsuite/gcc.target/i386/avx512vl-pr100267-ps-2.c
  283b4877d58ced6f0c220db178d854a5  gcc/testsuite/gcc.target/i386/avx512vl-pr100648.c
--- 85758,85764 ----
  c1fc8c403bea321e9edbec8f46fe2fd8  gcc/testsuite/gcc.target/i386/avx512vl-or-si-ymm-1.c
  5eaf41121795442d2f0736d687d1f1e5  gcc/testsuite/gcc.target/i386/avx512vl-pack-1.c
  994c768ea6f011cb5852de30a104bd2e  gcc/testsuite/gcc.target/i386/avx512vl-pack-2.c
! b797edd22d4e7e81caca22f64d06f39d  gcc/testsuite/gcc.target/i386/avx512vl-pr100267-1.c
  26d1511d7f94a147fff46e5c7b585b00  gcc/testsuite/gcc.target/i386/avx512vl-pr100267-pd-2.c
  677f7e556dddad5fe5ca2d37be1cdfa4  gcc/testsuite/gcc.target/i386/avx512vl-pr100267-ps-2.c
  283b4877d58ced6f0c220db178d854a5  gcc/testsuite/gcc.target/i386/avx512vl-pr100648.c
*************** f21047fbfa17b906e640bc6515007b2a  gcc/te
*** 85796,85804 ****
  e4ddbd71ef2d7d5216ca7ad71fd2bdc9  gcc/testsuite/gcc.target/i386/avx512vl-vbroadcastsd-2.c
  58e3f49191aeb6bcb14c2d8fbb43155d  gcc/testsuite/gcc.target/i386/avx512vl-vbroadcastss-1.c
  48a2387331a39c577c1361244a782eb5  gcc/testsuite/gcc.target/i386/avx512vl-vbroadcastss-2.c
! 16d37fc43772d94b224bd20b0b8c3584  gcc/testsuite/gcc.target/i386/avx512vl-vcmppd-1.c
  521483bf2df07219c380bcef5d423c53  gcc/testsuite/gcc.target/i386/avx512vl-vcmppd-2.c
! 78b8edf051124f353a00274a9fb1ac5d  gcc/testsuite/gcc.target/i386/avx512vl-vcmpps-1.c
  d71a8de92a0b35053aef0e0bd3e44f3e  gcc/testsuite/gcc.target/i386/avx512vl-vcmpps-2.c
  a73dcafcd0e78eb661d1280e63a1ff15  gcc/testsuite/gcc.target/i386/avx512vl-vcompresspd-1.c
  5e54bd8c83b864b7de36a1cd7cff6844  gcc/testsuite/gcc.target/i386/avx512vl-vcompresspd-2.c
--- 85850,85858 ----
  e4ddbd71ef2d7d5216ca7ad71fd2bdc9  gcc/testsuite/gcc.target/i386/avx512vl-vbroadcastsd-2.c
  58e3f49191aeb6bcb14c2d8fbb43155d  gcc/testsuite/gcc.target/i386/avx512vl-vbroadcastss-1.c
  48a2387331a39c577c1361244a782eb5  gcc/testsuite/gcc.target/i386/avx512vl-vbroadcastss-2.c
! 503fade0e869ebeb84d90df1b3cbcc45  gcc/testsuite/gcc.target/i386/avx512vl-vcmppd-1.c
  521483bf2df07219c380bcef5d423c53  gcc/testsuite/gcc.target/i386/avx512vl-vcmppd-2.c
! d6028996b4e31a365ca27203ab86f4e9  gcc/testsuite/gcc.target/i386/avx512vl-vcmpps-1.c
  d71a8de92a0b35053aef0e0bd3e44f3e  gcc/testsuite/gcc.target/i386/avx512vl-vcmpps-2.c
  a73dcafcd0e78eb661d1280e63a1ff15  gcc/testsuite/gcc.target/i386/avx512vl-vcompresspd-1.c
  5e54bd8c83b864b7de36a1cd7cff6844  gcc/testsuite/gcc.target/i386/avx512vl-vcompresspd-2.c
*************** a73dcafcd0e78eb661d1280e63a1ff15  gcc/te
*** 85810,85819 ****
  6dd6969e7a61221a3a0de4cd582ead9f  gcc/testsuite/gcc.target/i386/avx512vl-vcvtdq2ps-2.c
  733fff5dc1727f74c9dcb9847d217591  gcc/testsuite/gcc.target/i386/avx512vl-vcvtpd2dq-1.c
  d7ea6edadf48104bfaaea869ee64c034  gcc/testsuite/gcc.target/i386/avx512vl-vcvtpd2dq-2.c
! 3adeae0f900719f04fad396b3c77a5b7  gcc/testsuite/gcc.target/i386/avx512vl-vcvtpd2ps-1.c
  480cf88b17091acad80e8e0a94b8c9e5  gcc/testsuite/gcc.target/i386/avx512vl-vcvtpd2ps-2.c
  fee5bd9160a6da64b7f1104bb5a4fa02  gcc/testsuite/gcc.target/i386/avx512vl-vcvtpd2qq-2.c
! ddb0b188eff1e6242b903d8dcb3e195f  gcc/testsuite/gcc.target/i386/avx512vl-vcvtpd2udq-1.c
  54474921804a78f3d098583afc61d955  gcc/testsuite/gcc.target/i386/avx512vl-vcvtpd2udq-2.c
  7a5b733e8fb17f83c4659efb4a7aa3af  gcc/testsuite/gcc.target/i386/avx512vl-vcvtpd2uqq-2.c
  51990c0b10eca0e58aa6a97395c1811b  gcc/testsuite/gcc.target/i386/avx512vl-vcvtph2ps-1.c
--- 85864,85873 ----
  6dd6969e7a61221a3a0de4cd582ead9f  gcc/testsuite/gcc.target/i386/avx512vl-vcvtdq2ps-2.c
  733fff5dc1727f74c9dcb9847d217591  gcc/testsuite/gcc.target/i386/avx512vl-vcvtpd2dq-1.c
  d7ea6edadf48104bfaaea869ee64c034  gcc/testsuite/gcc.target/i386/avx512vl-vcvtpd2dq-2.c
! ef5bebef330ffe0fdbe92f5695de97be  gcc/testsuite/gcc.target/i386/avx512vl-vcvtpd2ps-1.c
  480cf88b17091acad80e8e0a94b8c9e5  gcc/testsuite/gcc.target/i386/avx512vl-vcvtpd2ps-2.c
  fee5bd9160a6da64b7f1104bb5a4fa02  gcc/testsuite/gcc.target/i386/avx512vl-vcvtpd2qq-2.c
! f7ed5a4c4dd149461ca8abc4edabb723  gcc/testsuite/gcc.target/i386/avx512vl-vcvtpd2udq-1.c
  54474921804a78f3d098583afc61d955  gcc/testsuite/gcc.target/i386/avx512vl-vcvtpd2udq-2.c
  7a5b733e8fb17f83c4659efb4a7aa3af  gcc/testsuite/gcc.target/i386/avx512vl-vcvtpd2uqq-2.c
  51990c0b10eca0e58aa6a97395c1811b  gcc/testsuite/gcc.target/i386/avx512vl-vcvtph2ps-1.c
*************** cddd4301ee7f38cba741ce20a0b67206  gcc/te
*** 85835,85847 ****
  b18a465eac56600c74cacf37c52960e8  gcc/testsuite/gcc.target/i386/avx512vl-vcvttpd2dq-1.c
  7e52e2f2f551cfb91e36ee8e3372dde7  gcc/testsuite/gcc.target/i386/avx512vl-vcvttpd2dq-2.c
  2e942c2c9972ea46c7f1cf59be40cba2  gcc/testsuite/gcc.target/i386/avx512vl-vcvttpd2qq-2.c
! e2ba82ea0c2f576073f1c3715c01902c  gcc/testsuite/gcc.target/i386/avx512vl-vcvttpd2udq-1.c
  c75c7b5968ff11e695db113d87b19b17  gcc/testsuite/gcc.target/i386/avx512vl-vcvttpd2udq-2.c
  dd801b7954765a286c666526d24b9229  gcc/testsuite/gcc.target/i386/avx512vl-vcvttpd2uqq-2.c
  f06b223de725e3834246e3035ffe4e2f  gcc/testsuite/gcc.target/i386/avx512vl-vcvttps2dq-1.c
  5133e03e756a40380b8ea8e8a58ae844  gcc/testsuite/gcc.target/i386/avx512vl-vcvttps2dq-2.c
  15d607af0a6203bd3b7426469273dd82  gcc/testsuite/gcc.target/i386/avx512vl-vcvttps2qq-2.c
! 74c8737f85711880e5c65b0a034611d4  gcc/testsuite/gcc.target/i386/avx512vl-vcvttps2udq-1.c
  4df11cff6205628359700d442552f66b  gcc/testsuite/gcc.target/i386/avx512vl-vcvttps2udq-2.c
  67bbb5ee8fe8ef93de3f7f2e2d339da8  gcc/testsuite/gcc.target/i386/avx512vl-vcvttps2uqq-2.c
  350cab8da17033c16c85e93486300ac6  gcc/testsuite/gcc.target/i386/avx512vl-vcvtudq2pd-1.c
--- 85889,85901 ----
  b18a465eac56600c74cacf37c52960e8  gcc/testsuite/gcc.target/i386/avx512vl-vcvttpd2dq-1.c
  7e52e2f2f551cfb91e36ee8e3372dde7  gcc/testsuite/gcc.target/i386/avx512vl-vcvttpd2dq-2.c
  2e942c2c9972ea46c7f1cf59be40cba2  gcc/testsuite/gcc.target/i386/avx512vl-vcvttpd2qq-2.c
! 6e24c40208037211dccfeb54a3ef1eab  gcc/testsuite/gcc.target/i386/avx512vl-vcvttpd2udq-1.c
  c75c7b5968ff11e695db113d87b19b17  gcc/testsuite/gcc.target/i386/avx512vl-vcvttpd2udq-2.c
  dd801b7954765a286c666526d24b9229  gcc/testsuite/gcc.target/i386/avx512vl-vcvttpd2uqq-2.c
  f06b223de725e3834246e3035ffe4e2f  gcc/testsuite/gcc.target/i386/avx512vl-vcvttps2dq-1.c
  5133e03e756a40380b8ea8e8a58ae844  gcc/testsuite/gcc.target/i386/avx512vl-vcvttps2dq-2.c
  15d607af0a6203bd3b7426469273dd82  gcc/testsuite/gcc.target/i386/avx512vl-vcvttps2qq-2.c
! e499b5f12e8ecffa5ad142907a2ee2b7  gcc/testsuite/gcc.target/i386/avx512vl-vcvttps2udq-1.c
  4df11cff6205628359700d442552f66b  gcc/testsuite/gcc.target/i386/avx512vl-vcvttps2udq-2.c
  67bbb5ee8fe8ef93de3f7f2e2d339da8  gcc/testsuite/gcc.target/i386/avx512vl-vcvttps2uqq-2.c
  350cab8da17033c16c85e93486300ac6  gcc/testsuite/gcc.target/i386/avx512vl-vcvtudq2pd-1.c
*************** bc593febb93d58f8369137d8eddc8d88  gcc/te
*** 85860,85866 ****
  8caa2c813166460feffee1f4e9897cdd  gcc/testsuite/gcc.target/i386/avx512vl-vexpandpd-2.c
  f7bcfedeb21945e06c855231aa062858  gcc/testsuite/gcc.target/i386/avx512vl-vexpandps-1.c
  dbc06e067bb58225023ebcfac4b2b65e  gcc/testsuite/gcc.target/i386/avx512vl-vexpandps-2.c
! 3274a948e82b1eb7b3ab52fe4396b3f5  gcc/testsuite/gcc.target/i386/avx512vl-vextractf32x4-1.c
  09c6d63d63fa075a8262998229c87ab8  gcc/testsuite/gcc.target/i386/avx512vl-vextractf32x4-2.c
  0045ebf4b624d6c182825d2537dac378  gcc/testsuite/gcc.target/i386/avx512vl-vextractf64x2-2.c
  e8ea698a6673fd34677b4480aa03168b  gcc/testsuite/gcc.target/i386/avx512vl-vextracti32x4-1.c
--- 85914,85920 ----
  8caa2c813166460feffee1f4e9897cdd  gcc/testsuite/gcc.target/i386/avx512vl-vexpandpd-2.c
  f7bcfedeb21945e06c855231aa062858  gcc/testsuite/gcc.target/i386/avx512vl-vexpandps-1.c
  dbc06e067bb58225023ebcfac4b2b65e  gcc/testsuite/gcc.target/i386/avx512vl-vexpandps-2.c
! a1c61e14029114356b5f309e2928365e  gcc/testsuite/gcc.target/i386/avx512vl-vextractf32x4-1.c
  09c6d63d63fa075a8262998229c87ab8  gcc/testsuite/gcc.target/i386/avx512vl-vextractf32x4-2.c
  0045ebf4b624d6c182825d2537dac378  gcc/testsuite/gcc.target/i386/avx512vl-vextractf64x2-2.c
  e8ea698a6673fd34677b4480aa03168b  gcc/testsuite/gcc.target/i386/avx512vl-vextracti32x4-1.c
*************** b6af513d22fb518acdb7e44e6a3202a2  gcc/te
*** 85923,85937 ****
  1b73dee3283c348d0af4a95337b9ca67  gcc/testsuite/gcc.target/i386/avx512vl-vminpd-2.c
  561cbfc3cacacd033cecdb80bf9fe62b  gcc/testsuite/gcc.target/i386/avx512vl-vminps-1.c
  7cdfbbe34eea82ac0c11e64772bffa96  gcc/testsuite/gcc.target/i386/avx512vl-vminps-2.c
! 9717ed0f7b626f9fbc3c1f2e3118405d  gcc/testsuite/gcc.target/i386/avx512vl-vmovapd-1.c
  bd652ca671d905542642f7043c128890  gcc/testsuite/gcc.target/i386/avx512vl-vmovapd-2.c
! b592affd9524490683f039e2abeddc73  gcc/testsuite/gcc.target/i386/avx512vl-vmovaps-1.c
  90794c8663f5935d70ead7256db55f40  gcc/testsuite/gcc.target/i386/avx512vl-vmovaps-2.c
  88d84a2674ad919f33a60e692d969db8  gcc/testsuite/gcc.target/i386/avx512vl-vmovddup-1.c
  b7a7eb992180804faecbf94a91fbbdf0  gcc/testsuite/gcc.target/i386/avx512vl-vmovddup-2.c
  dd6ca08f30e6fe74cfa6b6391d255ff7  gcc/testsuite/gcc.target/i386/avx512vl-vmovdqa32-1.c
  056deee40089caf20195f78d8cf9b26b  gcc/testsuite/gcc.target/i386/avx512vl-vmovdqa32-2.c
! 91516f1c7934dd1608e8876c1aa72f60  gcc/testsuite/gcc.target/i386/avx512vl-vmovdqa64-1.c
  559a8fb17d2c67c0dbc28efc30d1f36e  gcc/testsuite/gcc.target/i386/avx512vl-vmovdqa64-2.c
  be52bf7ed3992b7c5bd6ff1d5f444dd6  gcc/testsuite/gcc.target/i386/avx512vl-vmovdqu16-2.c
  45b8b31faa417a25330dd6ae632d5fdd  gcc/testsuite/gcc.target/i386/avx512vl-vmovdqu32-1.c
--- 85977,85991 ----
  1b73dee3283c348d0af4a95337b9ca67  gcc/testsuite/gcc.target/i386/avx512vl-vminpd-2.c
  561cbfc3cacacd033cecdb80bf9fe62b  gcc/testsuite/gcc.target/i386/avx512vl-vminps-1.c
  7cdfbbe34eea82ac0c11e64772bffa96  gcc/testsuite/gcc.target/i386/avx512vl-vminps-2.c
! 68e6678d22106796c0bb0d25e35dcaa0  gcc/testsuite/gcc.target/i386/avx512vl-vmovapd-1.c
  bd652ca671d905542642f7043c128890  gcc/testsuite/gcc.target/i386/avx512vl-vmovapd-2.c
! b90e606c00edd81e97703a7868a8aa3d  gcc/testsuite/gcc.target/i386/avx512vl-vmovaps-1.c
  90794c8663f5935d70ead7256db55f40  gcc/testsuite/gcc.target/i386/avx512vl-vmovaps-2.c
  88d84a2674ad919f33a60e692d969db8  gcc/testsuite/gcc.target/i386/avx512vl-vmovddup-1.c
  b7a7eb992180804faecbf94a91fbbdf0  gcc/testsuite/gcc.target/i386/avx512vl-vmovddup-2.c
  dd6ca08f30e6fe74cfa6b6391d255ff7  gcc/testsuite/gcc.target/i386/avx512vl-vmovdqa32-1.c
  056deee40089caf20195f78d8cf9b26b  gcc/testsuite/gcc.target/i386/avx512vl-vmovdqa32-2.c
! b44a9d035467a8e95e20b721508e94d0  gcc/testsuite/gcc.target/i386/avx512vl-vmovdqa64-1.c
  559a8fb17d2c67c0dbc28efc30d1f36e  gcc/testsuite/gcc.target/i386/avx512vl-vmovdqa64-2.c
  be52bf7ed3992b7c5bd6ff1d5f444dd6  gcc/testsuite/gcc.target/i386/avx512vl-vmovdqu16-2.c
  45b8b31faa417a25330dd6ae632d5fdd  gcc/testsuite/gcc.target/i386/avx512vl-vmovdqu32-1.c
*************** f7dc4ecda884ea919f5f5e92f42a2423  gcc/te
*** 86011,86027 ****
  0a6110618dbaf708dc79f526123252e6  gcc/testsuite/gcc.target/i386/avx512vl-vpbroadcastw-2.c
  cd857c56f1a6f4a6714e145144145e41  gcc/testsuite/gcc.target/i386/avx512vl-vpclmulqdq-2.c
  26d001984e4d8897c20587e5d666400b  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpb-2.c
! 0330c591ce0afdf87a34311e1ba7be93  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpd-1.c
  0bc34b4a04332da118d323d0c85c1e02  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpd-2.c
  61e2f702b60e5952a8b040117acfa2dc  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpeqb-2.c
  ccb846b28442adff8cddf40e762fc170  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpeqd-1.c
  30282bfbce0d80a1c6236203901a82b0  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpeqd-2.c
! 430e2a86d1a57ce0e642c7a7db798eff  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpeqq-1.c
  8e5dc0632852f73edd4b7c87c3ec1ffe  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpeqq-2.c
  34b199460d019bcceb635c7293b2d409  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpequb-2.c
  1a6954454700b04bc8aeca6a560a5304  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpequd-1.c
  f0a2df8cddbc2f20daee55cb96297234  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpequd-2.c
! ebfddcf9e4185731c358d199a2dd50f3  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpequq-1.c
  03e7c4974a7878b178447c16ccb6dd76  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpequq-2.c
  7f137851a2723e3b5c577cac2fc00b60  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpequw-2.c
  e0f1c020e31ed8abd688678278d910d7  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpeqw-2.c
--- 86065,86081 ----
  0a6110618dbaf708dc79f526123252e6  gcc/testsuite/gcc.target/i386/avx512vl-vpbroadcastw-2.c
  cd857c56f1a6f4a6714e145144145e41  gcc/testsuite/gcc.target/i386/avx512vl-vpclmulqdq-2.c
  26d001984e4d8897c20587e5d666400b  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpb-2.c
! 5ac0d409ec98654ffcd260d2b9538413  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpd-1.c
  0bc34b4a04332da118d323d0c85c1e02  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpd-2.c
  61e2f702b60e5952a8b040117acfa2dc  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpeqb-2.c
  ccb846b28442adff8cddf40e762fc170  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpeqd-1.c
  30282bfbce0d80a1c6236203901a82b0  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpeqd-2.c
! bff4b6dd92b2dabdbf2303987fd5bca7  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpeqq-1.c
  8e5dc0632852f73edd4b7c87c3ec1ffe  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpeqq-2.c
  34b199460d019bcceb635c7293b2d409  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpequb-2.c
  1a6954454700b04bc8aeca6a560a5304  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpequd-1.c
  f0a2df8cddbc2f20daee55cb96297234  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpequd-2.c
! e9956177d33706cbaccc57a3229651a3  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpequq-1.c
  03e7c4974a7878b178447c16ccb6dd76  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpequq-2.c
  7f137851a2723e3b5c577cac2fc00b60  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpequw-2.c
  e0f1c020e31ed8abd688678278d910d7  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpeqw-2.c
*************** a58a8656b93ff5f4788f6f1c540cc053  gcc/te
*** 86085,86096 ****
  3f6f9a8bd3d23611138b15ce7e423322  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpnequq-2.c
  cd7f3fd860141288d2d3b52036d685b2  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpnequw-2.c
  32f2e7072ce6e300769323cc82efc5a1  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpneqw-2.c
! e11936ec7d5d1cad3280b332e8b5436c  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpq-1.c
  e6ee29155464ba4f854e36436c73e16b  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpq-2.c
  8ec8c403a7c77e812001c0126229d798  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpub-2.c
! b6ba8fad3a289081683cd42175ce01e3  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpud-1.c
  4f81ae5592b50f76ae301abaab860a72  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpud-2.c
! a2c316e85cf1db765e9ee9a53ced388f  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpuq-1.c
  0421f91a556804cea02c315ea567ddc6  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpuq-2.c
  f58201ac16ad74264db1d9335b90a003  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpuw-2.c
  3b93b5708b6a5857882fe8d951d1ac11  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpw-2.c
--- 86139,86150 ----
  3f6f9a8bd3d23611138b15ce7e423322  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpnequq-2.c
  cd7f3fd860141288d2d3b52036d685b2  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpnequw-2.c
  32f2e7072ce6e300769323cc82efc5a1  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpneqw-2.c
! 065ffd63c0ba3868869b5f7307680b79  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpq-1.c
  e6ee29155464ba4f854e36436c73e16b  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpq-2.c
  8ec8c403a7c77e812001c0126229d798  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpub-2.c
! e627c4eadada91bdbc4152b5dc6b3cab  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpud-1.c
  4f81ae5592b50f76ae301abaab860a72  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpud-2.c
! a6734c06e81b4f8122a347bfdc6e53c6  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpuq-1.c
  0421f91a556804cea02c315ea567ddc6  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpuq-2.c
  f58201ac16ad74264db1d9335b90a003  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpuw-2.c
  3b93b5708b6a5857882fe8d951d1ac11  gcc/testsuite/gcc.target/i386/avx512vl-vpcmpw-2.c
*************** b72976450abb440a20ee8bbbcbe9d3da  gcc/te
*** 87512,87518 ****
  91ce8e7334f6685e1162fd58720224ea  gcc/testsuite/gcc.target/i386/no-callee-saved-7.c
  d3aa3fdd97d8af1545b4ad8a07d4d869  gcc/testsuite/gcc.target/i386/no-callee-saved-8.c
  adb9a921b0738fbc19853dbc3cfe9bf3  gcc/testsuite/gcc.target/i386/no-callee-saved-9.c
! d153cc65f8aad89fc3f4f976c1844c13  gcc/testsuite/gcc.target/i386/nop-mcount.c
  7554f6e1a30e3cc93f33dbad79fc2a68  gcc/testsuite/gcc.target/i386/noplt-1.c
  4db83aa123fc4bac669e5678c3fd01a8  gcc/testsuite/gcc.target/i386/noplt-2.c
  d71187a904234084fc7700bf4985493b  gcc/testsuite/gcc.target/i386/noplt-3.c
--- 87566,87573 ----
  91ce8e7334f6685e1162fd58720224ea  gcc/testsuite/gcc.target/i386/no-callee-saved-7.c
  d3aa3fdd97d8af1545b4ad8a07d4d869  gcc/testsuite/gcc.target/i386/no-callee-saved-8.c
  adb9a921b0738fbc19853dbc3cfe9bf3  gcc/testsuite/gcc.target/i386/no-callee-saved-9.c
! 5ddb42184fe06678b1e6b2401e6afbdf  gcc/testsuite/gcc.target/i386/nop-mcount-m16.c
! 92d9fb2d7f42096be9b83ca172427c12  gcc/testsuite/gcc.target/i386/nop-mcount.c
  7554f6e1a30e3cc93f33dbad79fc2a68  gcc/testsuite/gcc.target/i386/noplt-1.c
  4db83aa123fc4bac669e5678c3fd01a8  gcc/testsuite/gcc.target/i386/noplt-2.c
  d71187a904234084fc7700bf4985493b  gcc/testsuite/gcc.target/i386/noplt-3.c
*************** ae9cefa4d949ae63e9380aeb14fae221  gcc/te
*** 88562,88573 ****
--- 88617,88641 ----
  ff0a586f8aaac7078fb79402d3f0df4b  gcc/testsuite/gcc.target/i386/pr122320-mask4.c
  9a861d0f957f59a5dc5e7cafeddd1343  gcc/testsuite/gcc.target/i386/pr122320-mask64.c
  f6a03ec739c3c632b84006aa8e240dae  gcc/testsuite/gcc.target/i386/pr122320-mask8.c
+ e19262d2716f104afc6ca73e92175af5  gcc/testsuite/gcc.target/i386/pr122343-1a.c
+ a91c81ee1151f8eb72972a5ca1c4f5e5  gcc/testsuite/gcc.target/i386/pr122343-1b.c
+ d4d2c5bfecd2f6bdf686431a77bf4e89  gcc/testsuite/gcc.target/i386/pr122343-2a.c
+ 3c6e695d8a0e4a4e246f7d62552d1807  gcc/testsuite/gcc.target/i386/pr122343-2b.c
+ 3ec07a892980f6c3ea3bd95a6d03f07e  gcc/testsuite/gcc.target/i386/pr122343-3.c
+ e51fcfee6f2a7cafac7c30d85656c49d  gcc/testsuite/gcc.target/i386/pr122343-4a.c
+ dc441bebea22c5b1d8b014a60d0be676  gcc/testsuite/gcc.target/i386/pr122343-4b.c
+ a9f95c83c8cfe8c675891c3a3fe30bcd  gcc/testsuite/gcc.target/i386/pr122343-5a.c
+ 0b661b1593adb6d5aec9b192d1ff8c5f  gcc/testsuite/gcc.target/i386/pr122343-5b.c
+ c0a2648ae6688edf7592159b52d2c323  gcc/testsuite/gcc.target/i386/pr122343-6a.c
+ de6e22b443d2b7eda0a3831d24b86dde  gcc/testsuite/gcc.target/i386/pr122343-6b.c
+ 180323b8bcc7eb6910a7c191b2bf9506  gcc/testsuite/gcc.target/i386/pr122343-7.c
  a23e3aee9cb7b8d2fe5895c930cac402  gcc/testsuite/gcc.target/i386/pr122390-1.c
  160b6bb9cb1df1775f284996fcddbc62  gcc/testsuite/gcc.target/i386/pr122390.c
  beaa59876937a489a8ce9f276a586c83  gcc/testsuite/gcc.target/i386/pr122457.c
  b5fef8fb540e17f32442a50d6ee40f1e  gcc/testsuite/gcc.target/i386/pr122518.c
  93c2651b636b33af98942b4d04ed3a85  gcc/testsuite/gcc.target/i386/pr122534.c
  609faa828d84f786709fd1c4f7c03431  gcc/testsuite/gcc.target/i386/pr122598.c
+ 21f548f1c28eff738ee89a3a4e6abaa0  gcc/testsuite/gcc.target/i386/pr122675-1.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
*************** cd2c03a51a97923d710850a4e2fd7a03  gcc/te
*** 92711,92716 ****
--- 92779,92785 ----
  a96d84214b187b42a6e24c4bab58f789  gcc/testsuite/gcc.target/mips/bswap-4.c
  29bd7f8cebfb02a2fc8965b0af28e99a  gcc/testsuite/gcc.target/mips/bswap-5.c
  2230520d1ef1886463333fd2dcedd190  gcc/testsuite/gcc.target/mips/bswap-6.c
+ 046ac5d585f0739ff71348fb441aeb07  gcc/testsuite/gcc.target/mips/bswap-7.c
  b1facdebb98463584872620656c72843  gcc/testsuite/gcc.target/mips/cache-1.c
  8d323ceb7871f85137e0362bd4c6f6c1  gcc/testsuite/gcc.target/mips/call-1.c
  2769e44af5992b59408b5ca732dc6fda  gcc/testsuite/gcc.target/mips/call-1u.c
*************** bbca9daae904a8021f6601711b374b9a  gcc/te
*** 92918,92923 ****
--- 92987,92993 ----
  7bad33ffaa0d5f28c0292bd3a8f1990b  gcc/testsuite/gcc.target/mips/lxc1-sxc1-1.c
  32e8c4673b5166757f1bf22ec18927ed  gcc/testsuite/gcc.target/mips/lxc1-sxc1-2.c
  5a30e65eee1fd4da333668bdbbba2bff  gcc/testsuite/gcc.target/mips/madd-1.c
+ f5d3751daa1b5af439fe00d9328ad5db  gcc/testsuite/gcc.target/mips/madd-10.c
  26704c4dbeb6551d1302fd148169a838  gcc/testsuite/gcc.target/mips/madd-2.c
  d5290a56a230b5523e07e0a3a01d8d36  gcc/testsuite/gcc.target/mips/madd-3.c
  ac7d5969c5c27829d984af11967234a8  gcc/testsuite/gcc.target/mips/madd-4.c
*************** be556d603f230ccc0ab40b5a834b5623  gcc/te
*** 92932,92939 ****
--- 93002,93012 ----
  1660492e57b6adbaf9ed4a6f2df03717  gcc/testsuite/gcc.target/mips/maddu-2.c
  3500999b29ed05c27bf103acfbd6f659  gcc/testsuite/gcc.target/mips/maddu-3.c
  5eb0a529ed68f3a91f6d6ebbc3349cc4  gcc/testsuite/gcc.target/mips/maddu-4.c
+ 50ad78bc86b86353dc6e26f3ca5a129c  gcc/testsuite/gcc.target/mips/maddu-5.c
+ da820ac3cba4604d00fed1e4ee298dc1  gcc/testsuite/gcc.target/mips/max-1.c
  3716fa4b375b446283272f9569dacf34  gcc/testsuite/gcc.target/mips/memcpy-1.c
  4a38b040efb5a22fb9f1f2b5fda6a87e  gcc/testsuite/gcc.target/mips/memcpy-2.c
+ 054465d382f44158822e3f14595c3ab4  gcc/testsuite/gcc.target/mips/min-1.c
  cd3e6ee872a98f50548b07562176981b  gcc/testsuite/gcc.target/mips/mips-3d-1.c
  9e2d5a797e2a158f81a36f81b4c844bf  gcc/testsuite/gcc.target/mips/mips-3d-2.c
  7c25eb6263a1d5cf1448f526b1909c8f  gcc/testsuite/gcc.target/mips/mips-3d-3.c
*************** c6281d635f1218de28eeb6e3d8c91741  gcc/te
*** 93044,93053 ****
--- 93117,93128 ----
  9cd9439f9afb731bd60ec8eaf5c7923f  gcc/testsuite/gcc.target/mips/msub-6.c
  2f83a78f91d73c6b7a619798c0c0aa9b  gcc/testsuite/gcc.target/mips/msub-7.c
  52e1e7b242d344f769a5f35235fc4db4  gcc/testsuite/gcc.target/mips/msub-8.c
+ 8879a97c396723edbd9a59256b4877ba  gcc/testsuite/gcc.target/mips/msub-9.c
  884563deea9b2b960e8325cd8581122c  gcc/testsuite/gcc.target/mips/msubu-1.c
  62815b41239b22dbbf35e8bb5b0097e5  gcc/testsuite/gcc.target/mips/msubu-2.c
  bface0aca9b963178e8efcf64308e3df  gcc/testsuite/gcc.target/mips/msubu-3.c
  092fb750ee234369f5f81bc4f6de669d  gcc/testsuite/gcc.target/mips/msubu-4.c
+ d21c259c7f6b7e684562a3be88237063  gcc/testsuite/gcc.target/mips/msubu-5.c
  23e0f0773a3d23f0ec5ee4b2a7a13933  gcc/testsuite/gcc.target/mips/mulsize-1.c
  58dcc716a4fe8a1717b6614e63441e55  gcc/testsuite/gcc.target/mips/mulsize-2.c
  d69fbecea51158cee00d6a58977fb5a3  gcc/testsuite/gcc.target/mips/mulsize-3.c
*************** ea89beffad7d3445e7faf4e7b1b31944  gcc/te
*** 97537,97548 ****
--- 97612,97626 ----
  bc59de83765bb844925a1922677b3910  gcc/testsuite/gcc.target/riscv/pr122106.c
  0f5f042a5df3f42e8e3634b538a557e9  gcc/testsuite/gcc.target/riscv/pr122114.c
  cddeabddc47c1e2e434be321884dbb80  gcc/testsuite/gcc.target/riscv/pr122147.c
+ 517cee01d883f2604f8317ec8307ae44  gcc/testsuite/gcc.target/riscv/pr122215.c
+ 5e651c455514b3ec306f584a9708ee34  gcc/testsuite/gcc.target/riscv/pr122675-1.c
  37a08389ba95284cc27832767dfc1430  gcc/testsuite/gcc.target/riscv/pr43644.c
  8eba488c3d26a288644785954ea86af2  gcc/testsuite/gcc.target/riscv/pr52345.c
  db206807e7e87fc388e039471812c6e0  gcc/testsuite/gcc.target/riscv/pr58727.c
  ae7832d0dbfbabb51f555f2e9c3138bc  gcc/testsuite/gcc.target/riscv/pr64345.c
  9a44cd39f0fe595fcf632b001e4b7d12  gcc/testsuite/gcc.target/riscv/pr67731.c
  10400130cc47973d43925669f3c795ed  gcc/testsuite/gcc.target/riscv/pr84660.c
+ 0de80b47fe4987561bbabd21726f22d9  gcc/testsuite/gcc.target/riscv/pr91420.c
  c2ac0b53d6af56f5ec5bded3d252dddc  gcc/testsuite/gcc.target/riscv/pr93202.c
  01c8227bf1b5efa52e434a407c33930d  gcc/testsuite/gcc.target/riscv/pr93304.c
  f95453a04d25316c015010a3d66699b8  gcc/testsuite/gcc.target/riscv/pr95252.c
*************** f1ef6fa13c480640b814506c7de90cc4  gcc/te
*** 100004,100029 ****
  3cc64f46a34aa329dbea077958740ea1  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i32.c
  5abc996ed751a1e6e84c659eb10eefa1  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i64.c
  e4c71ab3d3e69a58113214544774fa5c  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i8.c
! 55504e9776c192f779480b3e94761aed  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c
! 08fd1d3b25295da9a6ca95e3b7bab239  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c
! 6cc943e1749e240cba81b949023b5a0d  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c
! 9768220ca1c93819c25f8527f2599494  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c
  a25062a79631dd8f99adeea2d6c9559c  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i16.c
  1e78e7111069a6111a93f3e7828d8d33  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i32.c
  ea9e9332005c3febee88eada951565e8  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i64.c
  92c63b211f99c185f82d40600533888f  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i8.c
! 7ee1d9c01ac0126c0047c3a57e962de3  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c
! 840133270c2384ace51bf6925a08d24a  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c
! bb92157bcb413d197d907e80ae69e2ba  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c
! 6430fcbac7b7f4c7c4c7f6b38a1c0972  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c
  722ec752e3bf1a61188c3fe68367a78d  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i16.c
  85bcdcef366c1e9ee29671acc8804145  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i32.c
  194310aa8da0bc58a4efcb6cd7084a9d  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i64.c
  6bf65042498323e4eb7312041f1d3cc6  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i8.c
! 833ca8dad3e54d9c95dc88bb06b0b885  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c
! ffcaa82e3e13fe86fa2b2ffd90074d77  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c
! db36b8da030881d4e21fdd6522e61fc1  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c
! 2d3154fa53539784a50c5ad012b4eb10  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c
  ddbdedd0bcd1b2f07c63e57ea3edd7f9  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i16.c
  ecb91086db90af95d3f46740e36b1ce2  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i32.c
  cee911916a71eee6997697cd65895e73  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i64.c
--- 100082,100107 ----
  3cc64f46a34aa329dbea077958740ea1  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i32.c
  5abc996ed751a1e6e84c659eb10eefa1  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i64.c
  e4c71ab3d3e69a58113214544774fa5c  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i8.c
! 4201a95f317ea67a928f4dca981cf53d  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c
! 5d2d85231d5430e4ca8d0b4541fef926  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c
! a2c745b379bb71844eec6d8d84ea3e92  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c
! 6ae549569e2b28be78d6ea7dd482a3ba  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c
  a25062a79631dd8f99adeea2d6c9559c  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i16.c
  1e78e7111069a6111a93f3e7828d8d33  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i32.c
  ea9e9332005c3febee88eada951565e8  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i64.c
  92c63b211f99c185f82d40600533888f  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i8.c
! 89dd7d1d5a260205e52c4ff6a3d24208  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c
! ab0b8bbb618d9753eb92f7dc4b9034ed  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c
! a7b9826bc0a50ed1d82760400b61445e  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c
! 261945c13159d1684c3979807ec51589  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c
  722ec752e3bf1a61188c3fe68367a78d  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i16.c
  85bcdcef366c1e9ee29671acc8804145  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i32.c
  194310aa8da0bc58a4efcb6cd7084a9d  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i64.c
  6bf65042498323e4eb7312041f1d3cc6  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i8.c
! bc98a83b126842531e6902eb3716ff1f  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c
! 69b4b8946f9ac7bf86dbee7681dab65e  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c
! c2efca1365ac54d122ff83ae2aefd81b  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c
! c129c6826e2fef2ddb8fdf16511b6d1d  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c
  ddbdedd0bcd1b2f07c63e57ea3edd7f9  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i16.c
  ecb91086db90af95d3f46740e36b1ce2  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i32.c
  cee911916a71eee6997697cd65895e73  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i64.c
*************** ee4d762425ee9fa02262080e983ca873  gcc/te
*** 100069,100076 ****
  d0716e3befd7d8676e3f95ddfc26cf11  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-merge-3-i32.c
  68f38cf2fee3b275e68ad7b4c0590852  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-merge-3-i64.c
  a668be35e3b0365efdcb1644b843f8f7  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-merge-3-i8.c
! 6ad19726235c13cdc6deefa55477c49e  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h
! 40e3b522abb69be8e65d593b35c0d12b  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h
  ccb9cff4438796fd5c2c015df2204a55  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_run.h
  847718238428fcf0d191c5e8f66f2c60  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_ternary.h
  0ac4abbac6b69050fc3b142e914fe58c  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_ternary_data.h
--- 100147,100154 ----
  d0716e3befd7d8676e3f95ddfc26cf11  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-merge-3-i32.c
  68f38cf2fee3b275e68ad7b4c0590852  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-merge-3-i64.c
  a668be35e3b0365efdcb1644b843f8f7  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-merge-3-i8.c
! fc09dfd992febbc2bf439a2287f9ff3d  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h
! 1427199499af08efd4b94c1ae836c581  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h
  ccb9cff4438796fd5c2c015df2204a55  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_run.h
  847718238428fcf0d191c5e8f66f2c60  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_ternary.h
  0ac4abbac6b69050fc3b142e914fe58c  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_ternary_data.h
*************** af39bb531df9d78fb100a8bc074d5527  gcc/te
*** 100175,100180 ****
--- 100253,100262 ----
  8a062701030c2179b34b5cdbe2e5affb  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-u32.c
  066197fc9e9481f3a6397992b977191b  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-u64.c
  cfeabedcaa487c67a2318497a6bd3a39  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-u8.c
+ 443e3e725a8805539e6f6f0707e24e23  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsltu-run-1-u16.c
+ de0be748ebac41beb791e67a7e969c93  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsltu-run-1-u32.c
+ 5c700fdc87c3f4d8d98a4b5d5de51597  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsltu-run-1-u64.c
+ d6f0fade1f4c13cf30fb858c67176891  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsltu-run-1-u8.c
  ba07450cba89795d0ffb8d40b885b494  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-i16.c
  2318de34fc5b6b3c00d6a2024b706bb0  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-i32.c
  39dfa43d1b70cfe850fcf48eb0a6f84a  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-i64.c
*************** eaed30eccbeb952165411cfd2c789b72  gcc/te
*** 100993,100998 ****
--- 101075,101083 ----
  abe5cb852d5c8b368720c2010f7dde5c  gcc/testsuite/gcc.target/riscv/rvv/base/pr119164.c
  3086321c9a12d3eecd8f1f9ad8ecac7a  gcc/testsuite/gcc.target/riscv/rvv/base/pr120436.c
  250f19182eb5aac9b6a01d7c594e8f5f  gcc/testsuite/gcc.target/riscv/rvv/base/pr122270-1.c
+ b0032fffb6e1860da7ca94cd7252c411  gcc/testsuite/gcc.target/riscv/rvv/base/pr122652.c
+ 5c5e286165c8597d712cb612bb370968  gcc/testsuite/gcc.target/riscv/rvv/base/pr122656-1.c
+ 64bada55e64f1bf5909df579653ca6f5  gcc/testsuite/gcc.target/riscv/rvv/base/pr122656-2.c
  c05efbdfaafc64ad34b3d1c4b60a38eb  gcc/testsuite/gcc.target/riscv/rvv/base/pr90263.c
  be75fd39ea9b3d01e3e22294359fb482  gcc/testsuite/gcc.target/riscv/rvv/base/pragma-2.c
  20a3b581af8087da2c1170d56ff52971  gcc/testsuite/gcc.target/riscv/rvv/base/pragma-3.c
*************** a44209b4b22b50ba22251b2901229b35  gcc/te
*** 109725,109732 ****
  291144a665a881ed73c245a048408de6  gcc/testsuite/gfortran.dg/alloc_comp_deep_copy_2.f03
  63268580aa4691498e32913a93d4c74e  gcc/testsuite/gfortran.dg/alloc_comp_deep_copy_3.f03
  d2341b7ea8968ac02843b2dcb31e3e80  gcc/testsuite/gfortran.dg/alloc_comp_deep_copy_4.f03
! df4655cdf0da8093c3495e5877ee9173  gcc/testsuite/gfortran.dg/alloc_comp_deep_copy_5.f90
! 8f2be3ec4b7bad3787c333ced3c30747  gcc/testsuite/gfortran.dg/alloc_comp_deep_copy_6.f90
  44f92878d8c6c52798e461918976dd97  gcc/testsuite/gfortran.dg/alloc_comp_deep_copy_7.f90
  4d1758fe9739756fdf38a4fc8d5687bb  gcc/testsuite/gfortran.dg/alloc_comp_default_init_1.f90
  3ac49823c9b600313f371a6ed0f57568  gcc/testsuite/gfortran.dg/alloc_comp_default_init_2.f90
--- 109810,109817 ----
  291144a665a881ed73c245a048408de6  gcc/testsuite/gfortran.dg/alloc_comp_deep_copy_2.f03
  63268580aa4691498e32913a93d4c74e  gcc/testsuite/gfortran.dg/alloc_comp_deep_copy_3.f03
  d2341b7ea8968ac02843b2dcb31e3e80  gcc/testsuite/gfortran.dg/alloc_comp_deep_copy_4.f03
! ae3501ce59bfdd9cf6fd3ff72cfbec71  gcc/testsuite/gfortran.dg/alloc_comp_deep_copy_5.f90
! 8a8c438589596ffc00cb8d920f8ccdb6  gcc/testsuite/gfortran.dg/alloc_comp_deep_copy_6.f90
  44f92878d8c6c52798e461918976dd97  gcc/testsuite/gfortran.dg/alloc_comp_deep_copy_7.f90
  4d1758fe9739756fdf38a4fc8d5687bb  gcc/testsuite/gfortran.dg/alloc_comp_default_init_1.f90
  3ac49823c9b600313f371a6ed0f57568  gcc/testsuite/gfortran.dg/alloc_comp_default_init_2.f90
*************** a2d9a0d935dd860f2e485600db57ecb8  gcc/te
*** 110037,110042 ****
--- 110122,110128 ----
  f4a1e0c66adc8865d3ed362a2b0afa51  gcc/testsuite/gfortran.dg/array_constructor_type_7.f03
  66cf672a0d9e01d80e5d04dd43a9586e  gcc/testsuite/gfortran.dg/array_constructor_type_8.f03
  4afe2c619ccaae47cf397fe69d0fc8a2  gcc/testsuite/gfortran.dg/array_constructor_type_9.f
+ 419cf9eaa877bfd9544489dd08b9e1d0  gcc/testsuite/gfortran.dg/array_constructor_typespec_1.f90
  7de10c270cdf9e6ae0d118fe6a75e3d0  gcc/testsuite/gfortran.dg/array_function_1.f90
  3afaa99751f4b884afdb193178002cf8  gcc/testsuite/gfortran.dg/array_function_2.f90
  784dbde53c3024a9ece796b66df76ad0  gcc/testsuite/gfortran.dg/array_function_3.f90
*************** cb50185eaf87f5357dad5873642eec33  gcc/te
*** 111602,111607 ****
--- 111688,111694 ----
  5a8601e6c51ea544ca9179e464325eb0  gcc/testsuite/gfortran.dg/contiguous_13.f90
  52a454e4516aaff2011d2696c96ca5ab  gcc/testsuite/gfortran.dg/contiguous_14.f90
  8621637c284842966acb59cdbfe4e51a  gcc/testsuite/gfortran.dg/contiguous_15.f90
+ ffb54aced92284f6168ef0953f0396ea  gcc/testsuite/gfortran.dg/contiguous_16.f90
  9975df3f787a3eaea63dd5664ff235eb  gcc/testsuite/gfortran.dg/contiguous_2.f90
  a59d0430a52a3cf47c280856725dee23  gcc/testsuite/gfortran.dg/contiguous_3.f90
  b81d56e35fe81ed4c9f6f67cca8a0ab2  gcc/testsuite/gfortran.dg/contiguous_4.f90
*************** c6c0a114dc31d5c006e20ffa43eec35c  gcc/te
*** 113387,113394 ****
  9757fd1aff0e97e5388764ec44be73fd  gcc/testsuite/gfortran.dg/gomp/do-1.f90
  9b09f560c0be75a5e05b926194bcc40a  gcc/testsuite/gfortran.dg/gomp/doacross-5.f90
  688b415eed42adc6cb70cd626354a0be  gcc/testsuite/gfortran.dg/gomp/doacross-6.f90
! db8f5ad287de8069cf69309f8f02b88f  gcc/testsuite/gfortran.dg/gomp/dyn_groupprivate-1.f90
! 432406e544228f67cbebee126c43b35a  gcc/testsuite/gfortran.dg/gomp/dyn_groupprivate-2.f90
  aa1be4316dee2804f538b30041f7be95  gcc/testsuite/gfortran.dg/gomp/error-1.f90
  0d3656be08c9011e56a522c5e7cddebd  gcc/testsuite/gfortran.dg/gomp/error-2.f90
  79e1726bb3cc84913d21c0af63e764a6  gcc/testsuite/gfortran.dg/gomp/error-3.f90
--- 113474,113481 ----
  9757fd1aff0e97e5388764ec44be73fd  gcc/testsuite/gfortran.dg/gomp/do-1.f90
  9b09f560c0be75a5e05b926194bcc40a  gcc/testsuite/gfortran.dg/gomp/doacross-5.f90
  688b415eed42adc6cb70cd626354a0be  gcc/testsuite/gfortran.dg/gomp/doacross-6.f90
! b8a179ca20ec807e40c928b3a14147fe  gcc/testsuite/gfortran.dg/gomp/dyn_groupprivate-1.f90
! a0cce0063b9cdfbe266e9bdad336a80d  gcc/testsuite/gfortran.dg/gomp/dyn_groupprivate-2.f90
  aa1be4316dee2804f538b30041f7be95  gcc/testsuite/gfortran.dg/gomp/error-1.f90
  0d3656be08c9011e56a522c5e7cddebd  gcc/testsuite/gfortran.dg/gomp/error-2.f90
  79e1726bb3cc84913d21c0af63e764a6  gcc/testsuite/gfortran.dg/gomp/error-3.f90
*************** a5f0e5f6d1a0cf4437ef6c2b7d002852  gcc/te
*** 115447,115452 ****
--- 115534,115545 ----
  3444ff42a2ca850ccc8b0a46fec4a950  gcc/testsuite/gfortran.dg/pdt_69.f03
  d2c9dae0c6e2385c5712aba8e12a70ba  gcc/testsuite/gfortran.dg/pdt_7.f03
  eadd9a59a070a2b3455cb8918d9cbed1  gcc/testsuite/gfortran.dg/pdt_70.f03
+ 6c8faa617a469eeaf61ce8dd5e138a43  gcc/testsuite/gfortran.dg/pdt_71.f03
+ e60c95d1e5b5c7e5f4c5c95f09cb14e5  gcc/testsuite/gfortran.dg/pdt_72.f03
+ c6f893cb449a80625f83167f1ff5ba51  gcc/testsuite/gfortran.dg/pdt_73.f03
+ 8d4993c59b25b275c9be746b415c88a7  gcc/testsuite/gfortran.dg/pdt_74.f03
+ 8ccbb94fe607aa377b82a359ac1d2ab7  gcc/testsuite/gfortran.dg/pdt_75.f03
+ 872e5a262b625630f6c8518c84192fe0  gcc/testsuite/gfortran.dg/pdt_76.f03
  e21f38a2db39f95405441b61c12cf1e6  gcc/testsuite/gfortran.dg/pdt_8.f03
  c621629f10feffbfa9fef1441a610e53  gcc/testsuite/gfortran.dg/pdt_9.f03
  ce217e87870d47796b72f99a0b0f46b7  gcc/testsuite/gfortran.dg/pdt_generic_1.f90
*************** d470ada2b4a8aa6d586007ab8f6e7e5f  gcc/te
*** 122438,122444 ****
  fde5d5ed0c271572ac7da0e31e22bc5c  gcc/testsuite/gnat.dg/range_check7.adb
  25b5534a4bc4502074ce6463c2f5e96b  gcc/testsuite/gnat.dg/rational_arithmetic.ads
  46cc8f530fa18a6afd30b9d241f7967e  gcc/testsuite/gnat.dg/recursive_call.adb
! 91cab892d1898f9564d603cfa1201d11  gcc/testsuite/gnat.dg/reduce1.adb
  0b27bcc5788ce003bc049b34d20d5c88  gcc/testsuite/gnat.dg/reduce2.adb
  50be8d98f4f9ac99d64926a10596a2df  gcc/testsuite/gnat.dg/ref_type.adb
  5457827e708b7bfc92ffe5610655a443  gcc/testsuite/gnat.dg/ref_type.ads
--- 122531,122537 ----
  fde5d5ed0c271572ac7da0e31e22bc5c  gcc/testsuite/gnat.dg/range_check7.adb
  25b5534a4bc4502074ce6463c2f5e96b  gcc/testsuite/gnat.dg/rational_arithmetic.ads
  46cc8f530fa18a6afd30b9d241f7967e  gcc/testsuite/gnat.dg/recursive_call.adb
! 85a55db824671af62dedb2987941d2fe  gcc/testsuite/gnat.dg/reduce1.adb
  0b27bcc5788ce003bc049b34d20d5c88  gcc/testsuite/gnat.dg/reduce2.adb
  50be8d98f4f9ac99d64926a10596a2df  gcc/testsuite/gnat.dg/ref_type.adb
  5457827e708b7bfc92ffe5610655a443  gcc/testsuite/gnat.dg/ref_type.ads
*************** e87a7723ddb82de7bd960a324539538f  gcc/te
*** 125540,125546 ****
  9c1c18d54fa5811ce07e3c5d4a677fbf  gcc/testsuite/lib/fortran-torture.exp
  8f561f20e6575fc58b7f0ffd21432994  gcc/testsuite/lib/g++-dg.exp
  c345df92b75960dbcf02dc790324b5c6  gcc/testsuite/lib/g++.exp
! fe7ae089a7fe99208cbf6904aeac84a1  gcc/testsuite/lib/gcc-defs.exp
  613c4bf9d9645d83e88918615b2efad9  gcc/testsuite/lib/gcc-dg.exp
  4ce14b2651c02595541e337529a858a7  gcc/testsuite/lib/gcc-gdb-test.exp
  5d11df299efe6269fcdaed3cf91ebd4a  gcc/testsuite/lib/gcc-simulate-thread.exp
--- 125633,125639 ----
  9c1c18d54fa5811ce07e3c5d4a677fbf  gcc/testsuite/lib/fortran-torture.exp
  8f561f20e6575fc58b7f0ffd21432994  gcc/testsuite/lib/g++-dg.exp
  c345df92b75960dbcf02dc790324b5c6  gcc/testsuite/lib/g++.exp
! 34afeaf5c956af6c63ace657aec3525c  gcc/testsuite/lib/gcc-defs.exp
  613c4bf9d9645d83e88918615b2efad9  gcc/testsuite/lib/gcc-dg.exp
  4ce14b2651c02595541e337529a858a7  gcc/testsuite/lib/gcc-gdb-test.exp
  5d11df299efe6269fcdaed3cf91ebd4a  gcc/testsuite/lib/gcc-simulate-thread.exp
*************** a447115837a98ea4ab8390ca3c1d400a  gcc/te
*** 125584,125590 ****
  cdfac88acd33dec95625eb0cca4bc571  gcc/testsuite/lib/sarif-schema-2.1.0.json
  808895f3fef94ae1653cf826a4c6c9de  gcc/testsuite/lib/sarif-schema-2.2-prerelease-2024-08-08.json
  5a6cedce32c4c01005adb940226eae62  gcc/testsuite/lib/sarif.py
! bab70c146620e4a007335796c78aaa8b  gcc/testsuite/lib/scanasm.exp
  83e6c25542a5f84dc92619a64a4fe0e7  gcc/testsuite/lib/scandump.exp
  67189798dcf413cd565b99dee45a8f39  gcc/testsuite/lib/scanhtml.exp
  f17c3b8bef5ec71bda9ad84ca4b914ae  gcc/testsuite/lib/scanipa.exp
--- 125677,125683 ----
  cdfac88acd33dec95625eb0cca4bc571  gcc/testsuite/lib/sarif-schema-2.1.0.json
  808895f3fef94ae1653cf826a4c6c9de  gcc/testsuite/lib/sarif-schema-2.2-prerelease-2024-08-08.json
  5a6cedce32c4c01005adb940226eae62  gcc/testsuite/lib/sarif.py
! 4e227984c666c22bc048540f077bd2bf  gcc/testsuite/lib/scanasm.exp
  83e6c25542a5f84dc92619a64a4fe0e7  gcc/testsuite/lib/scandump.exp
  67189798dcf413cd565b99dee45a8f39  gcc/testsuite/lib/scanhtml.exp
  f17c3b8bef5ec71bda9ad84ca4b914ae  gcc/testsuite/lib/scanipa.exp
*************** eb1595e729e2eaac81c7ffe330d8f24e  gcc/te
*** 125600,125606 ****
  f7940f4f8c24d9f0bf4d062473f55777  gcc/testsuite/lib/scanwpaipa.exp
  23e89ca46b182663a4139064b179545f  gcc/testsuite/lib/target-libpath.exp
  d9a6726c38c578e1cd46631ee7f92d0a  gcc/testsuite/lib/target-supports-dg.exp
! 90b15533ccb7f81720ef91d5f446fdec  gcc/testsuite/lib/target-supports.exp
  cfe4a2f0a83382048de060dc6669cbb9  gcc/testsuite/lib/target-utils.exp
  e45ee1a35539730bd823a310ad306ded  gcc/testsuite/lib/timeout-dg.exp
  b755c82fb5ee43ef6c852f23fbdc8704  gcc/testsuite/lib/timeout.exp
--- 125693,125699 ----
  f7940f4f8c24d9f0bf4d062473f55777  gcc/testsuite/lib/scanwpaipa.exp
  23e89ca46b182663a4139064b179545f  gcc/testsuite/lib/target-libpath.exp
  d9a6726c38c578e1cd46631ee7f92d0a  gcc/testsuite/lib/target-supports-dg.exp
! 56226c9cf1ac9853a53c8b59d3ef7a01  gcc/testsuite/lib/target-supports.exp
  cfe4a2f0a83382048de060dc6669cbb9  gcc/testsuite/lib/target-utils.exp
  e45ee1a35539730bd823a310ad306ded  gcc/testsuite/lib/timeout-dg.exp
  b755c82fb5ee43ef6c852f23fbdc8704  gcc/testsuite/lib/timeout.exp
*************** a57e521085412bbde60e78229ace4fd5  gcc/te
*** 126674,126694 ****
  2d60a6650416d3bcd6a3f5f1fb61dece  gcc/testsuite/objc/execute/va_method.m
  ed5d2cfa69a4e1a3e09e45ccc2af8887  gcc/testsuite/rust/borrowck/borrowck.exp
  c0788446b51d042b258b535fb8f9c42c  gcc/testsuite/rust/borrowck/position_dependant_outlives.rs
! 1a9a4107ab32bf2c5117e66edea230a7  gcc/testsuite/rust/borrowck/reference.rs
  55549f49b623ce72177da987a9c35a4b  gcc/testsuite/rust/borrowck/return_ref_to_local.rs
  16359f2669c7f464396c677c3c2ca2ee  gcc/testsuite/rust/borrowck/subset.rs
  35294e17e69c01e0f9679503250e53a0  gcc/testsuite/rust/borrowck/test_move.rs
  df8b3909971f0cb16cddb5bf261218f2  gcc/testsuite/rust/borrowck/test_move_behind_reference.rs
  c28b3534baed5649e532dc6b8d82a0fa  gcc/testsuite/rust/borrowck/test_move_conditional.rs
! 795197a26cc71b0baf3bd9f5927256df  gcc/testsuite/rust/borrowck/tmp.rs
  3666a253dd2a2b25d5253be6d5c03144  gcc/testsuite/rust/borrowck/use_while_mut.rs
  234b45612dde2e6a42b0a8f3e399963d  gcc/testsuite/rust/borrowck/use_while_mut_fr.rs
  382e747e98598b5399753fb36d318977  gcc/testsuite/rust/borrowck/well_formed_function_inputs.rs
  8095ed7e65a58371ba451265d0c77a81  gcc/testsuite/rust/compile/abi-options1.rs
  d6cef0e2a9876718ef7a3fd4beeb6a17  gcc/testsuite/rust/compile/abi-vardaic.rs
! 464bc566186bb15868c776c6af427545  gcc/testsuite/rust/compile/additional-trait-bounds1.rs
! 91d6766e611dc0b1a16a54962732e6d9  gcc/testsuite/rust/compile/additional-trait-bounds2.rs
! 91d6766e611dc0b1a16a54962732e6d9  gcc/testsuite/rust/compile/additional-trait-bounds2nr2.rs
  d132a3113ba9a617edbc414edce9fa3d  gcc/testsuite/rust/compile/all-cast.rs
  901b9d713edac630ba6ea674c4450902  gcc/testsuite/rust/compile/array3.rs
  d2c5ff8cb3d6990bbfd11e406cca6a23  gcc/testsuite/rust/compile/array4.rs
--- 126767,126787 ----
  2d60a6650416d3bcd6a3f5f1fb61dece  gcc/testsuite/objc/execute/va_method.m
  ed5d2cfa69a4e1a3e09e45ccc2af8887  gcc/testsuite/rust/borrowck/borrowck.exp
  c0788446b51d042b258b535fb8f9c42c  gcc/testsuite/rust/borrowck/position_dependant_outlives.rs
! d6446a492b8cf413fd0184d1bb397579  gcc/testsuite/rust/borrowck/reference.rs
  55549f49b623ce72177da987a9c35a4b  gcc/testsuite/rust/borrowck/return_ref_to_local.rs
  16359f2669c7f464396c677c3c2ca2ee  gcc/testsuite/rust/borrowck/subset.rs
  35294e17e69c01e0f9679503250e53a0  gcc/testsuite/rust/borrowck/test_move.rs
  df8b3909971f0cb16cddb5bf261218f2  gcc/testsuite/rust/borrowck/test_move_behind_reference.rs
  c28b3534baed5649e532dc6b8d82a0fa  gcc/testsuite/rust/borrowck/test_move_conditional.rs
! b27ae778cf2475ca8aa10ab715647d1c  gcc/testsuite/rust/borrowck/tmp.rs
  3666a253dd2a2b25d5253be6d5c03144  gcc/testsuite/rust/borrowck/use_while_mut.rs
  234b45612dde2e6a42b0a8f3e399963d  gcc/testsuite/rust/borrowck/use_while_mut_fr.rs
  382e747e98598b5399753fb36d318977  gcc/testsuite/rust/borrowck/well_formed_function_inputs.rs
  8095ed7e65a58371ba451265d0c77a81  gcc/testsuite/rust/compile/abi-options1.rs
  d6cef0e2a9876718ef7a3fd4beeb6a17  gcc/testsuite/rust/compile/abi-vardaic.rs
! 19f64d4f771a303104019985123dcc89  gcc/testsuite/rust/compile/additional-trait-bounds1.rs
! 7df6a6d7fb5124c02f8b0379264ae1fc  gcc/testsuite/rust/compile/additional-trait-bounds2.rs
! 7df6a6d7fb5124c02f8b0379264ae1fc  gcc/testsuite/rust/compile/additional-trait-bounds2nr2.rs
  d132a3113ba9a617edbc414edce9fa3d  gcc/testsuite/rust/compile/all-cast.rs
  901b9d713edac630ba6ea674c4450902  gcc/testsuite/rust/compile/array3.rs
  d2c5ff8cb3d6990bbfd11e406cca6a23  gcc/testsuite/rust/compile/array4.rs
*************** f555ab8bfe9efe1ebc6a30beabba0b9e  gcc/te
*** 126707,126718 ****
  285d2a6251c3beede3a80d6bce086007  gcc/testsuite/rust/compile/auto_trait_invalid.rs
  10958953946fbdde105431e2937a1695  gcc/testsuite/rust/compile/auto_trait_super_trait.rs
  32fbddcb2f485e6e1367e04a37536c61  gcc/testsuite/rust/compile/auto_trait_valid.rs
! 001db0fdcde4867110a5bb0dfede22b6  gcc/testsuite/rust/compile/auto_traits1.rs
! 90d8638c8b4530c0068e01003e72d1b4  gcc/testsuite/rust/compile/auto_traits2.rs
  274440970f2f3850e87dbb1f309f82db  gcc/testsuite/rust/compile/auto_traits4.rs
  7673a55108cb36ca1835b653cd9d9d0d  gcc/testsuite/rust/compile/bad-crate-name1.rs
  c8c58ec31af772aad429da99744fea8c  gcc/testsuite/rust/compile/bad-crate-name2.rs
! 83fcd1b6d25b090e24e9a9f8d52fadf2  gcc/testsuite/rust/compile/bad-rpit1.rs
  c7ba9642fee029930b93bde0be0044d4  gcc/testsuite/rust/compile/bad=file-name.rs
  74543bdf60d90fdb77b3d59541bb46b8  gcc/testsuite/rust/compile/bad_as_bool_char.rs
  02b466f42629715260cc948eeaf75e56  gcc/testsuite/rust/compile/bad_file_name.txt.rs
--- 126800,126811 ----
  285d2a6251c3beede3a80d6bce086007  gcc/testsuite/rust/compile/auto_trait_invalid.rs
  10958953946fbdde105431e2937a1695  gcc/testsuite/rust/compile/auto_trait_super_trait.rs
  32fbddcb2f485e6e1367e04a37536c61  gcc/testsuite/rust/compile/auto_trait_valid.rs
! 275535429dadd32b757e4503f3295529  gcc/testsuite/rust/compile/auto_traits1.rs
! 710ea274ca59c8674dd9a99b87db8336  gcc/testsuite/rust/compile/auto_traits2.rs
  274440970f2f3850e87dbb1f309f82db  gcc/testsuite/rust/compile/auto_traits4.rs
  7673a55108cb36ca1835b653cd9d9d0d  gcc/testsuite/rust/compile/bad-crate-name1.rs
  c8c58ec31af772aad429da99744fea8c  gcc/testsuite/rust/compile/bad-crate-name2.rs
! a5f201f91926771e45e007fa208c60eb  gcc/testsuite/rust/compile/bad-rpit1.rs
  c7ba9642fee029930b93bde0be0044d4  gcc/testsuite/rust/compile/bad=file-name.rs
  74543bdf60d90fdb77b3d59541bb46b8  gcc/testsuite/rust/compile/bad_as_bool_char.rs
  02b466f42629715260cc948eeaf75e56  gcc/testsuite/rust/compile/bad_file_name.txt.rs
*************** b7e6bbfef08eb8a9143a53af0f574882  gcc/te
*** 126723,126734 ****
  0d119d70ef8a831773de61a39d852ca9  gcc/testsuite/rust/compile/bad_tuple_index.rs
  31411dd4dfa5ef81f48be8524c8a00dc  gcc/testsuite/rust/compile/bad_type1.rs
  ce19b338cc4375d80379a32da223a505  gcc/testsuite/rust/compile/bad_type2.rs
! d95fdf8e651c622204db60c69d5e178e  gcc/testsuite/rust/compile/black_box.rs
  e42d99383a25c9730ef3d807441d0b0c  gcc/testsuite/rust/compile/bounds.rs
! 40bfcf112fd1480b00d3d4858254154a  gcc/testsuite/rust/compile/bounds1.rs
  675fbb5db6e3724c3d695fad3a68c1c6  gcc/testsuite/rust/compile/box_syntax.rs
! 68abfec3310f762ea2f6abf5c18d7049  gcc/testsuite/rust/compile/box_syntax_feature_gate.rs
! 060a81115df2968518fc777bf575e757  gcc/testsuite/rust/compile/braced_macro_arm.rs
  8de7527f66af2394a42996e52d5babe8  gcc/testsuite/rust/compile/braced_macro_statements1.rs
  cbfc197f8134a8350885e815d5ee026c  gcc/testsuite/rust/compile/braced_macro_statements2.rs
  9f90a1bd410498c56e3df950032a988d  gcc/testsuite/rust/compile/braced_macro_statements3.rs
--- 126816,126827 ----
  0d119d70ef8a831773de61a39d852ca9  gcc/testsuite/rust/compile/bad_tuple_index.rs
  31411dd4dfa5ef81f48be8524c8a00dc  gcc/testsuite/rust/compile/bad_type1.rs
  ce19b338cc4375d80379a32da223a505  gcc/testsuite/rust/compile/bad_type2.rs
! 9b0dcf96f11435fac2849574ad34afc4  gcc/testsuite/rust/compile/black_box.rs
  e42d99383a25c9730ef3d807441d0b0c  gcc/testsuite/rust/compile/bounds.rs
! 281cfbf74b64df14d161ecf5a9ae8dac  gcc/testsuite/rust/compile/bounds1.rs
  675fbb5db6e3724c3d695fad3a68c1c6  gcc/testsuite/rust/compile/box_syntax.rs
! 08cadf76428135650d722e84f8820c04  gcc/testsuite/rust/compile/box_syntax_feature_gate.rs
! f7473035cd91da42200dc5ece40a1696  gcc/testsuite/rust/compile/braced_macro_arm.rs
  8de7527f66af2394a42996e52d5babe8  gcc/testsuite/rust/compile/braced_macro_statements1.rs
  cbfc197f8134a8350885e815d5ee026c  gcc/testsuite/rust/compile/braced_macro_statements2.rs
  9f90a1bd410498c56e3df950032a988d  gcc/testsuite/rust/compile/braced_macro_statements3.rs
*************** aee0d6e5e5a54d891b1d4faa7e35d45f  gcc/te
*** 126740,126753 ****
  238450e11ba7966838b9e4286ef1e145  gcc/testsuite/rust/compile/break_continue_outside_loop.rs
  9b99112d2f118c58acb61f3703144ecf  gcc/testsuite/rust/compile/break_with_value_inside_loop.rs
  3089e5cf84922d853bd7c44b22155de5  gcc/testsuite/rust/compile/broken_utf8.rs
! 03467bc827bb9fd9b7bb85d8e18a4589  gcc/testsuite/rust/compile/bug-with-default-generic.rs
  629afb83d10bc6fdc75861d3b03b34ae  gcc/testsuite/rust/compile/bytecharstring.rs
! 32883bd2cd57b15b0d562d5fc0a60332  gcc/testsuite/rust/compile/canonical_paths1.rs
  bbb7a81f895315976bb3b8975d3f3319  gcc/testsuite/rust/compile/cast1.rs
  950b4a75c3c3faf17dffe2facde1f08d  gcc/testsuite/rust/compile/cast4.rs
  b669ba48ac5e60d6d2fe212ead01eb4d  gcc/testsuite/rust/compile/cast5.rs
  99fe91ea2af5bed99341104ce86fa75b  gcc/testsuite/rust/compile/cast_float_as_integer.rs
! 4c09411ff14a842b39cc80cabb0d1c42  gcc/testsuite/rust/compile/cast_generics.rs
  0ade7c1bac955f1b03af6464186073fc  gcc/testsuite/rust/compile/cfg-attr.rs
  a75268078027e4027a1c1f8b374e58c2  gcc/testsuite/rust/compile/cfg-core1.rs
  70f80e73e71174a8c4e1c8791f40099a  gcc/testsuite/rust/compile/cfg-core2.rs
--- 126833,126846 ----
  238450e11ba7966838b9e4286ef1e145  gcc/testsuite/rust/compile/break_continue_outside_loop.rs
  9b99112d2f118c58acb61f3703144ecf  gcc/testsuite/rust/compile/break_with_value_inside_loop.rs
  3089e5cf84922d853bd7c44b22155de5  gcc/testsuite/rust/compile/broken_utf8.rs
! ce8c55f8ee7d7df5af377637100429a3  gcc/testsuite/rust/compile/bug-with-default-generic.rs
  629afb83d10bc6fdc75861d3b03b34ae  gcc/testsuite/rust/compile/bytecharstring.rs
! 57eb82b9d8aa851d0a3fba09446c7b55  gcc/testsuite/rust/compile/canonical_paths1.rs
  bbb7a81f895315976bb3b8975d3f3319  gcc/testsuite/rust/compile/cast1.rs
  950b4a75c3c3faf17dffe2facde1f08d  gcc/testsuite/rust/compile/cast4.rs
  b669ba48ac5e60d6d2fe212ead01eb4d  gcc/testsuite/rust/compile/cast5.rs
  99fe91ea2af5bed99341104ce86fa75b  gcc/testsuite/rust/compile/cast_float_as_integer.rs
! d5f634dbe51215098e4a628e66ada2f4  gcc/testsuite/rust/compile/cast_generics.rs
  0ade7c1bac955f1b03af6464186073fc  gcc/testsuite/rust/compile/cfg-attr.rs
  a75268078027e4027a1c1f8b374e58c2  gcc/testsuite/rust/compile/cfg-core1.rs
  70f80e73e71174a8c4e1c8791f40099a  gcc/testsuite/rust/compile/cfg-core2.rs
*************** c73d64b77895517ecd6f3c68791c8a69  gcc/te
*** 126761,126772 ****
  0446be9193127a70c4d35ca699820a60  gcc/testsuite/rust/compile/changed_intrinsics.rs
  55f85f3cef139e7d73fee86f9df506d1  gcc/testsuite/rust/compile/closure_in_closure.rs
  2bb5cf15b07de99923afb39cf1aca432  gcc/testsuite/rust/compile/closure_move_expr.rs
! 2ba93dbc4c6b008206d95d608331f3aa  gcc/testsuite/rust/compile/closure_no_type_anno.rs
! 9df3c0f643c2b0578b52dd55daa3403e  gcc/testsuite/rust/compile/cmp1.rs
  3b48f4a57e61a47baa03bd470696ba75  gcc/testsuite/rust/compile/compile.exp
  26906781b85cc46264ef3e39029497f7  gcc/testsuite/rust/compile/complex-path1.rs
! 6d005d5b0b3c8f9d215dfc0454904663  gcc/testsuite/rust/compile/complex_qualified_path_in_expr.rs
! dcf8b8a8ff1f9675ee275b77209cc26a  gcc/testsuite/rust/compile/const-issue1440.rs
  35b2389068cb824405eb2d9143bcbaf5  gcc/testsuite/rust/compile/const1.rs
  20a071af13cc659f510fa8e507de1155  gcc/testsuite/rust/compile/const10.rs
  7e8914522c5084bfdf3d535d03eceba9  gcc/testsuite/rust/compile/const2.rs
--- 126854,126865 ----
  0446be9193127a70c4d35ca699820a60  gcc/testsuite/rust/compile/changed_intrinsics.rs
  55f85f3cef139e7d73fee86f9df506d1  gcc/testsuite/rust/compile/closure_in_closure.rs
  2bb5cf15b07de99923afb39cf1aca432  gcc/testsuite/rust/compile/closure_move_expr.rs
! 61c11d0e7f61704df2473fe65580e258  gcc/testsuite/rust/compile/closure_no_type_anno.rs
! 2c2366657645247e66acf5b8c0c4ac9b  gcc/testsuite/rust/compile/cmp1.rs
  3b48f4a57e61a47baa03bd470696ba75  gcc/testsuite/rust/compile/compile.exp
  26906781b85cc46264ef3e39029497f7  gcc/testsuite/rust/compile/complex-path1.rs
! ca188cd1c50d2bac681778e064c11602  gcc/testsuite/rust/compile/complex_qualified_path_in_expr.rs
! 639d0f71f845f9b8f8d4cb0f936e10c3  gcc/testsuite/rust/compile/const-issue1440.rs
  35b2389068cb824405eb2d9143bcbaf5  gcc/testsuite/rust/compile/const1.rs
  20a071af13cc659f510fa8e507de1155  gcc/testsuite/rust/compile/const10.rs
  7e8914522c5084bfdf3d535d03eceba9  gcc/testsuite/rust/compile/const2.rs
*************** dfa3b2217fe0156c62492956eee3bcf4  gcc/te
*** 126778,126802 ****
  f39e120a441c7e4182741b883f1ef05d  gcc/testsuite/rust/compile/const8.rs
  dd04212a2e511e939aedac8b2ea59543  gcc/testsuite/rust/compile/const9.rs
  e03f96eb1b1abbe5563a1a760fe06b10  gcc/testsuite/rust/compile/const_async_function.rs
! d5d062233962271057388d4ed79aa6de  gcc/testsuite/rust/compile/const_generics_1.rs
! 84a700ea403987f1a362cfd5b536f2d3  gcc/testsuite/rust/compile/const_generics_10.rs
! 23a092ac088305a169b61b57e2c79315  gcc/testsuite/rust/compile/const_generics_11.rs
! 8c5973f57c2342d0590a5494cef65b82  gcc/testsuite/rust/compile/const_generics_12.rs
! fc179d4ff1b21540f01410432558749f  gcc/testsuite/rust/compile/const_generics_13.rs
! 8011a02c904a433ae271b2ab49466382  gcc/testsuite/rust/compile/const_generics_14.rs
! 7bf871ed70532f23a7592250b9ec3a99  gcc/testsuite/rust/compile/const_generics_15.rs
! f06601430db6d4d3e822b66306a9a04c  gcc/testsuite/rust/compile/const_generics_16.rs
  e090d32cdcbdeaf2bfbf8690419623e7  gcc/testsuite/rust/compile/const_generics_17.rs
! 36de835b6c10d9ed566d2fee9bb5fbb8  gcc/testsuite/rust/compile/const_generics_18.rs
! eef0e30eeddb26c7fd80cb4c801c61ca  gcc/testsuite/rust/compile/const_generics_19.rs
  843f362a8c63f610af0a4ac77f309065  gcc/testsuite/rust/compile/const_generics_2.rs
! bca4ef052240a6deeee772ed615526ee  gcc/testsuite/rust/compile/const_generics_3.rs
  d24f122dbd7d6bbdb3f7b2c688004a72  gcc/testsuite/rust/compile/const_generics_4.rs
  9e5ea10b505dd0d5220533aa94807a47  gcc/testsuite/rust/compile/const_generics_5.rs
  132116f02eae6c44e8198bc85dd53d08  gcc/testsuite/rust/compile/const_generics_6.rs
  50d13f94376e902f21bb959742a78950  gcc/testsuite/rust/compile/const_generics_7.rs
! c885c15fe10b1a7fbd9858ca29c0e85e  gcc/testsuite/rust/compile/const_generics_8.rs
! ec1474566f4e7a18e47fefded3a8a34b  gcc/testsuite/rust/compile/const_generics_9.rs
  d1bc715bfb792187c8752b3676e946f0  gcc/testsuite/rust/compile/const_trait_fn.rs
  4258f4d6f84473191c981e8a84f06d70  gcc/testsuite/rust/compile/continue1.rs
  9b2eb55272cc3c00b679874344485545  gcc/testsuite/rust/compile/crate-metavar1.rs
--- 126871,126895 ----
  f39e120a441c7e4182741b883f1ef05d  gcc/testsuite/rust/compile/const8.rs
  dd04212a2e511e939aedac8b2ea59543  gcc/testsuite/rust/compile/const9.rs
  e03f96eb1b1abbe5563a1a760fe06b10  gcc/testsuite/rust/compile/const_async_function.rs
! a4488c1adc41e2fc17514f65a6e52ac3  gcc/testsuite/rust/compile/const_generics_1.rs
! bbe6243640ad69d985daa1f4fa95d39f  gcc/testsuite/rust/compile/const_generics_10.rs
! 7ba13a1361cc3cd101ef8c495a324f1f  gcc/testsuite/rust/compile/const_generics_11.rs
! 5b20f9c424a46430f70de2a49d76470c  gcc/testsuite/rust/compile/const_generics_12.rs
! a8c13576fac26a6bfc1d9d265c57f752  gcc/testsuite/rust/compile/const_generics_13.rs
! d6bdd4cc5a0789adb49c6512f92b05b5  gcc/testsuite/rust/compile/const_generics_14.rs
! 7c537da7e7178c1f54a8c58a92b74d45  gcc/testsuite/rust/compile/const_generics_15.rs
! bad60e91ca5e80e86ec3a7f0c62d2041  gcc/testsuite/rust/compile/const_generics_16.rs
  e090d32cdcbdeaf2bfbf8690419623e7  gcc/testsuite/rust/compile/const_generics_17.rs
! 20040fc1e60c30647cb891fca81f2cd5  gcc/testsuite/rust/compile/const_generics_18.rs
! f9cebd850267c201032d46c7ba9d511a  gcc/testsuite/rust/compile/const_generics_19.rs
  843f362a8c63f610af0a4ac77f309065  gcc/testsuite/rust/compile/const_generics_2.rs
! 6f948bc6dfa08b4ff92b005a79fb5554  gcc/testsuite/rust/compile/const_generics_3.rs
  d24f122dbd7d6bbdb3f7b2c688004a72  gcc/testsuite/rust/compile/const_generics_4.rs
  9e5ea10b505dd0d5220533aa94807a47  gcc/testsuite/rust/compile/const_generics_5.rs
  132116f02eae6c44e8198bc85dd53d08  gcc/testsuite/rust/compile/const_generics_6.rs
  50d13f94376e902f21bb959742a78950  gcc/testsuite/rust/compile/const_generics_7.rs
! 88a49c4a1a4f12f11302b24375790d5d  gcc/testsuite/rust/compile/const_generics_8.rs
! 9b7b350cc7c26e280a6117ab821d39d7  gcc/testsuite/rust/compile/const_generics_9.rs
  d1bc715bfb792187c8752b3676e946f0  gcc/testsuite/rust/compile/const_trait_fn.rs
  4258f4d6f84473191c981e8a84f06d70  gcc/testsuite/rust/compile/continue1.rs
  9b2eb55272cc3c00b679874344485545  gcc/testsuite/rust/compile/crate-metavar1.rs
*************** fdfa5359cba5b4ebe27dc487d7bde273  gcc/te
*** 126810,126836 ****
  bbb07a308e077d8068c1a25e119fce9c  gcc/testsuite/rust/compile/decl_macro3.rs
  6efc94f19385c3060fca68fd09bac1cc  gcc/testsuite/rust/compile/decl_macro4.rs
  15fae62741d18e742ca7c0320a61cc95  gcc/testsuite/rust/compile/decl_macro5.rs
! bc73b541d5043286cba7b09aa1d609e9  gcc/testsuite/rust/compile/decl_macro6.rs
! d23eb70e5ff707e3d1a8c4ea21224d84  gcc/testsuite/rust/compile/decl_macro7.rs
  9c18098b4b1ce502c531f0caab668d43  gcc/testsuite/rust/compile/default_not_a_kw.rs
  9b8818615fe9018d9b7d04b5b8d43daf  gcc/testsuite/rust/compile/deferred_const_inference.rs
  3e0da36322a6350ce7cc4cb303e29f2f  gcc/testsuite/rust/compile/deprecated-fn.rs
! 68902fd33be245c60fc188726265fdd0  gcc/testsuite/rust/compile/derive-debug1.rs
! 0ab48e5e5524f0f16decf66eb0ee6058  gcc/testsuite/rust/compile/derive-default1.rs
! f27c0f8016e5452644a979e8d9fedbe2  gcc/testsuite/rust/compile/derive-eq-invalid.rs
! 656338f1895ac7d6976ce493bd8beab2  gcc/testsuite/rust/compile/derive-hash1.rs
! 9ee5aa00c1f670c20e5ee4ab857ae55f  gcc/testsuite/rust/compile/derive-partialeq1.rs
! 5822bbeb23b0f8ad694ed5df0ee43eb3  gcc/testsuite/rust/compile/derive_clone_enum1.rs
! e797f4d3af22dc6cf71b9b9a2a923b84  gcc/testsuite/rust/compile/derive_clone_enum2.rs
! e5cdf3b0ad6be5748c19f12931430a7c  gcc/testsuite/rust/compile/derive_clone_enum3.rs
  b00bfad5fda1037ecfd9712632089f7e  gcc/testsuite/rust/compile/derive_empty.rs
! 51c60723711b435d3d90f4f7f3184357  gcc/testsuite/rust/compile/derive_macro1.rs
! 5630c5f16411daca0b41a9ef3bd19eca  gcc/testsuite/rust/compile/derive_macro3.rs
! 5056e4a6aedacdb7dd1deacd08445e37  gcc/testsuite/rust/compile/derive_macro4.rs
! afaef91e5656013d7f5a1abc7320e182  gcc/testsuite/rust/compile/derive_macro6.rs
  25b35d97f1f4704f338d8b66fe6694d9  gcc/testsuite/rust/compile/derive_macro7.rs
  4f18dc206a2145c8cb8d98c62f0d8751  gcc/testsuite/rust/compile/derive_macro8.rs
! df6f5764d7ba30e758ff7738015c9737  gcc/testsuite/rust/compile/derive_partial_ord1.rs
  0ee7c26dcdc8fb1d25de4eee521bb29e  gcc/testsuite/rust/compile/diagnostic_underline.rs
  9f4c15c76e3e3e3dd4ebd6f61e8db065  gcc/testsuite/rust/compile/doc_isolated_cr_block_comment.rs
  d4173b37d75e489fc580f69e4c6666c9  gcc/testsuite/rust/compile/doc_isolated_cr_inner_block_comment.rs
--- 126903,126929 ----
  bbb07a308e077d8068c1a25e119fce9c  gcc/testsuite/rust/compile/decl_macro3.rs
  6efc94f19385c3060fca68fd09bac1cc  gcc/testsuite/rust/compile/decl_macro4.rs
  15fae62741d18e742ca7c0320a61cc95  gcc/testsuite/rust/compile/decl_macro5.rs
! 18fb05e97678c63542fe556fd96caa33  gcc/testsuite/rust/compile/decl_macro6.rs
! cddf3b4274dc0a1806eb51b0d4283fed  gcc/testsuite/rust/compile/decl_macro7.rs
  9c18098b4b1ce502c531f0caab668d43  gcc/testsuite/rust/compile/default_not_a_kw.rs
  9b8818615fe9018d9b7d04b5b8d43daf  gcc/testsuite/rust/compile/deferred_const_inference.rs
  3e0da36322a6350ce7cc4cb303e29f2f  gcc/testsuite/rust/compile/deprecated-fn.rs
! cbe8d3a68d467bbc825bc5490fecbd70  gcc/testsuite/rust/compile/derive-debug1.rs
! 8a0da7544cb710d59663f2c6341b522e  gcc/testsuite/rust/compile/derive-default1.rs
! 5f2f508dca9411d85879534b4fb0d149  gcc/testsuite/rust/compile/derive-eq-invalid.rs
! f4c8bb6cc540f87f92041b5a37716f5e  gcc/testsuite/rust/compile/derive-hash1.rs
! 546bc5a90ca2931990e85e3015cf1f49  gcc/testsuite/rust/compile/derive-partialeq1.rs
! 184074ae0353c0c93706d8d220e225e8  gcc/testsuite/rust/compile/derive_clone_enum1.rs
! 2b9f555eb35a4f044261b90ef07bb035  gcc/testsuite/rust/compile/derive_clone_enum2.rs
! fd63d2a7bc4b29ecb5f24c07e50a0dbe  gcc/testsuite/rust/compile/derive_clone_enum3.rs
  b00bfad5fda1037ecfd9712632089f7e  gcc/testsuite/rust/compile/derive_empty.rs
! 135b3005883bdc4d414d9c5f984cfd7c  gcc/testsuite/rust/compile/derive_macro1.rs
! ecd942ddd1a987c41d31d3a2e3a5279a  gcc/testsuite/rust/compile/derive_macro3.rs
! 7fc5935fc82e5a0ae49d7c0ea0efbff9  gcc/testsuite/rust/compile/derive_macro4.rs
! 95a33a08d849e56a573a91e10dd0f66b  gcc/testsuite/rust/compile/derive_macro6.rs
  25b35d97f1f4704f338d8b66fe6694d9  gcc/testsuite/rust/compile/derive_macro7.rs
  4f18dc206a2145c8cb8d98c62f0d8751  gcc/testsuite/rust/compile/derive_macro8.rs
! 0e547b4275c25e539a3fe6200eced89f  gcc/testsuite/rust/compile/derive_partial_ord1.rs
  0ee7c26dcdc8fb1d25de4eee521bb29e  gcc/testsuite/rust/compile/diagnostic_underline.rs
  9f4c15c76e3e3e3dd4ebd6f61e8db065  gcc/testsuite/rust/compile/doc_isolated_cr_block_comment.rs
  d4173b37d75e489fc580f69e4c6666c9  gcc/testsuite/rust/compile/doc_isolated_cr_inner_block_comment.rs
*************** d41d8cd98f00b204e9800998ecf8427e  gcc/te
*** 126854,126879 ****
  113f6a76ce7638f6de23fddfbf922104  gcc/testsuite/rust/compile/exhaustiveness1.rs
  dbbc20c84123ef716872f22db4b55df8  gcc/testsuite/rust/compile/exhaustiveness2.rs
  c49a7755c10a7011fef681046ce9f62d  gcc/testsuite/rust/compile/exhaustiveness3.rs
! fb2de02f6df2864b061f62571fe607f8  gcc/testsuite/rust/compile/expand_macro_qual_path_in_type.rs
! 624117462b2e06250289e58e427c6086  gcc/testsuite/rust/compile/expected_type_args2.rs
! 995aa0b15bf08b74b74a18a03cdc9c8d  gcc/testsuite/rust/compile/expected_type_args3.rs
  ac58e8219b88c515b66ef614c71f596e  gcc/testsuite/rust/compile/extern_c_named_variadic.rs
  69cc8fc9dafe3f54e4d6d8f64acd841a  gcc/testsuite/rust/compile/extern_func_with_body.rs
! 60e5ca0c2aa02888ef5dd201d613d382  gcc/testsuite/rust/compile/extern_generics.rs
  b7f4db5c26f356d48451f0a9821716d5  gcc/testsuite/rust/compile/extern_type_item.rs
! 9e130c4eb083122a9ccbf4eb149cc2f2  gcc/testsuite/rust/compile/extern_type_item_missing_semi.rs
  56f4174fc40a8cfa2caa9f1646065feb  gcc/testsuite/rust/compile/feature.rs
  44f07a22a8848431692bbcc231de5a95  gcc/testsuite/rust/compile/feature_extern_types.rs
  855eac5ad5f6820cf81b38a46a7b9488  gcc/testsuite/rust/compile/feature_intrinsics.rs
  aac26abcc55ee5aff6d422cb19c5a251  gcc/testsuite/rust/compile/feature_rust_attri0.rs
  48d3812fa54fdd372ef8ad82f64bad0e  gcc/testsuite/rust/compile/feature_rust_attri1.rs
! 1825dcd79926678ce37e2582394f39e9  gcc/testsuite/rust/compile/for-loop1.rs
! b129c59cb9340d86c151685156da3f0c  gcc/testsuite/rust/compile/for-loop2.rs
  5ee6657185ec67299ef2ace853f873b7  gcc/testsuite/rust/compile/for_expr.rs
  e41c2cabd63dba549da749a8fed6ca7a  gcc/testsuite/rust/compile/for_lifetimes.rs
! 3121e6022ec6fd6781b3bb2218a41bee  gcc/testsuite/rust/compile/format_args_basic_expansion.rs
! 095f89847ace805fa9378dcf0d277ef3  gcc/testsuite/rust/compile/format_args_concat.rs
! 444951ca92739bdbdc74317738c2a855  gcc/testsuite/rust/compile/format_args_extra_comma.rs
  9c06b22a10dcf3a218bb690997175a3f  gcc/testsuite/rust/compile/found_struct.rs
  03ce7bc2c5e3478be586fcc302a8200f  gcc/testsuite/rust/compile/frust-compile-until.rs
  4ce5431fd288fab0e00a74049003aeaf  gcc/testsuite/rust/compile/func-const-unsafe.rs
--- 126947,126972 ----
  113f6a76ce7638f6de23fddfbf922104  gcc/testsuite/rust/compile/exhaustiveness1.rs
  dbbc20c84123ef716872f22db4b55df8  gcc/testsuite/rust/compile/exhaustiveness2.rs
  c49a7755c10a7011fef681046ce9f62d  gcc/testsuite/rust/compile/exhaustiveness3.rs
! 842baea322cadb4231ca4dc88bdc2b7e  gcc/testsuite/rust/compile/expand_macro_qual_path_in_type.rs
! 358da9162ff764209af3752ecdbd8c7a  gcc/testsuite/rust/compile/expected_type_args2.rs
! ce2c4af3c41355d76714c8e07351f0c2  gcc/testsuite/rust/compile/expected_type_args3.rs
  ac58e8219b88c515b66ef614c71f596e  gcc/testsuite/rust/compile/extern_c_named_variadic.rs
  69cc8fc9dafe3f54e4d6d8f64acd841a  gcc/testsuite/rust/compile/extern_func_with_body.rs
! 7c04bf3deb602afbc72c37824b5db341  gcc/testsuite/rust/compile/extern_generics.rs
  b7f4db5c26f356d48451f0a9821716d5  gcc/testsuite/rust/compile/extern_type_item.rs
! f30bf452ca826bda4624acfbbca87a8b  gcc/testsuite/rust/compile/extern_type_item_missing_semi.rs
  56f4174fc40a8cfa2caa9f1646065feb  gcc/testsuite/rust/compile/feature.rs
  44f07a22a8848431692bbcc231de5a95  gcc/testsuite/rust/compile/feature_extern_types.rs
  855eac5ad5f6820cf81b38a46a7b9488  gcc/testsuite/rust/compile/feature_intrinsics.rs
  aac26abcc55ee5aff6d422cb19c5a251  gcc/testsuite/rust/compile/feature_rust_attri0.rs
  48d3812fa54fdd372ef8ad82f64bad0e  gcc/testsuite/rust/compile/feature_rust_attri1.rs
! 3ac3d550c4278a4080911f5ed2c5bcb2  gcc/testsuite/rust/compile/for-loop1.rs
! 4ef3ec6a7fa3a10872ea33723525248e  gcc/testsuite/rust/compile/for-loop2.rs
  5ee6657185ec67299ef2ace853f873b7  gcc/testsuite/rust/compile/for_expr.rs
  e41c2cabd63dba549da749a8fed6ca7a  gcc/testsuite/rust/compile/for_lifetimes.rs
! 3c81d98a94f0295c1e3395e6e7f4cbea  gcc/testsuite/rust/compile/format_args_basic_expansion.rs
! 60225923d279ef4eb17adb6746cb9b71  gcc/testsuite/rust/compile/format_args_concat.rs
! b2141e7fcf026f700af233cacd48857e  gcc/testsuite/rust/compile/format_args_extra_comma.rs
  9c06b22a10dcf3a218bb690997175a3f  gcc/testsuite/rust/compile/found_struct.rs
  03ce7bc2c5e3478be586fcc302a8200f  gcc/testsuite/rust/compile/frust-compile-until.rs
  4ce5431fd288fab0e00a74049003aeaf  gcc/testsuite/rust/compile/func-const-unsafe.rs
*************** b496c8cc5bfab6822169cb4203d1156c  gcc/te
*** 126886,126914 ****
  2620b92c3961f6c81ccf3098e655d539  gcc/testsuite/rust/compile/gat1.rs
  e228c2183a648fd00c7eff22c7292403  gcc/testsuite/rust/compile/generic-default1.rs
  02cf7dd257e61be7e4e30c918248cffa  gcc/testsuite/rust/compile/generic_auto_trait.rs
! e3074cf23f5849f2fa7c27c13fb282cf  gcc/testsuite/rust/compile/generics1.rs
  931c1b938a76b0da8397f8e056ad3bc8  gcc/testsuite/rust/compile/generics10.rs
! e8dbcbd07045d7b5b518d0a236325d16  gcc/testsuite/rust/compile/generics11.rs
! d351b74853227cf8b303e585c21d1fe0  gcc/testsuite/rust/compile/generics12.rs
  ed3baf52aef0cae945dfb5c73cd30acb  gcc/testsuite/rust/compile/generics13.rs
  271f2a46ab8dcc98e96d339e0e040f71  gcc/testsuite/rust/compile/generics14.rs
! 9a59ca7c4e4eadc29fb5bbd7a29af1c6  gcc/testsuite/rust/compile/generics2.rs
! eb85bcea53e38d14f7bcc7f982cc4140  gcc/testsuite/rust/compile/generics3.rs
! 4455201ec7ea4bae73c843936c3636e2  gcc/testsuite/rust/compile/generics4.rs
  39acef99a4b058e012b0f00726f2b442  gcc/testsuite/rust/compile/generics5.rs
! 4b98df244d094a7e12bd9d36ceb0071c  gcc/testsuite/rust/compile/generics6.rs
! 682cc29e7af5ea3a8f6b71c92d5e180b  gcc/testsuite/rust/compile/generics7.rs
! 060d22d6e7f679a78be3e794571d067f  gcc/testsuite/rust/compile/generics8.rs
  9aa765e066290dc262e89eb48abc6f28  gcc/testsuite/rust/compile/generics9.rs
  9e631ea0ca0d4c58b5f20bdf78414c7e  gcc/testsuite/rust/compile/glob_import_enum.rs
  88f9d490b9687075686515d220144c0d  gcc/testsuite/rust/compile/global-path-array.rs
  2e2238492198d9ef7c0141722cead0a3  gcc/testsuite/rust/compile/if-without-else.rs
! bc84abac17812c46c39363b8ae9a8ad9  gcc/testsuite/rust/compile/if_let_expr.rs
  bcb7125cf04603fb905af55075f3c8b9  gcc/testsuite/rust/compile/if_let_expr_simple.rs
  b38301cec7d4b035fa6efa8eb15100bf  gcc/testsuite/rust/compile/iflet.rs
! 3fdd918c7c90e378ac4790739aebb5b6  gcc/testsuite/rust/compile/impl_fnptr.rs
! 8eae850c4702b6718eaaa35c514b1457  gcc/testsuite/rust/compile/impl_trait_diag.rs
! f3d4caa9d92a54f8a1417df4bd0823d6  gcc/testsuite/rust/compile/impl_trait_generic_arg.rs
  c7d60400964e3621102e44ba4cef69f9  gcc/testsuite/rust/compile/implicit_returns_err1.rs
  effa05530ec2bc9508c522bddd5e2b38  gcc/testsuite/rust/compile/implicit_returns_err2.rs
  4f820dabf53d65a41cbe62abc9094e12  gcc/testsuite/rust/compile/implicit_returns_err3.rs
--- 126979,127007 ----
  2620b92c3961f6c81ccf3098e655d539  gcc/testsuite/rust/compile/gat1.rs
  e228c2183a648fd00c7eff22c7292403  gcc/testsuite/rust/compile/generic-default1.rs
  02cf7dd257e61be7e4e30c918248cffa  gcc/testsuite/rust/compile/generic_auto_trait.rs
! e8b4b760a053e199f3570bcd7c634a7d  gcc/testsuite/rust/compile/generics1.rs
  931c1b938a76b0da8397f8e056ad3bc8  gcc/testsuite/rust/compile/generics10.rs
! df4fd482abda6d707d8e0d8df557a684  gcc/testsuite/rust/compile/generics11.rs
! 53ffa17561148b50e66f7dfa3d49f00c  gcc/testsuite/rust/compile/generics12.rs
  ed3baf52aef0cae945dfb5c73cd30acb  gcc/testsuite/rust/compile/generics13.rs
  271f2a46ab8dcc98e96d339e0e040f71  gcc/testsuite/rust/compile/generics14.rs
! ab6c8704ad72a3d063e0b034fa38505f  gcc/testsuite/rust/compile/generics2.rs
! 0265105c85d568d2dd277436627fe504  gcc/testsuite/rust/compile/generics3.rs
! a36efbef19c4b18fd81e589f83e41821  gcc/testsuite/rust/compile/generics4.rs
  39acef99a4b058e012b0f00726f2b442  gcc/testsuite/rust/compile/generics5.rs
! 21ace8d8fd28b0a433cd5d506483ab34  gcc/testsuite/rust/compile/generics6.rs
! e92bb012c68315399d274a9f7634a61a  gcc/testsuite/rust/compile/generics7.rs
! ad10747ee60a228d81c3807ddd4950af  gcc/testsuite/rust/compile/generics8.rs
  9aa765e066290dc262e89eb48abc6f28  gcc/testsuite/rust/compile/generics9.rs
  9e631ea0ca0d4c58b5f20bdf78414c7e  gcc/testsuite/rust/compile/glob_import_enum.rs
  88f9d490b9687075686515d220144c0d  gcc/testsuite/rust/compile/global-path-array.rs
  2e2238492198d9ef7c0141722cead0a3  gcc/testsuite/rust/compile/if-without-else.rs
! 689a33784f7a3e39aaad4efc75ba90e8  gcc/testsuite/rust/compile/if_let_expr.rs
  bcb7125cf04603fb905af55075f3c8b9  gcc/testsuite/rust/compile/if_let_expr_simple.rs
  b38301cec7d4b035fa6efa8eb15100bf  gcc/testsuite/rust/compile/iflet.rs
! 0f516089f807d82daf1b58c811761b2a  gcc/testsuite/rust/compile/impl_fnptr.rs
! 8860e5444535d432672c3737df198f75  gcc/testsuite/rust/compile/impl_trait_diag.rs
! 0d71df1d2735a99fc289f575eed4d0c9  gcc/testsuite/rust/compile/impl_trait_generic_arg.rs
  c7d60400964e3621102e44ba4cef69f9  gcc/testsuite/rust/compile/implicit_returns_err1.rs
  effa05530ec2bc9508c522bddd5e2b38  gcc/testsuite/rust/compile/implicit_returns_err2.rs
  4f820dabf53d65a41cbe62abc9094e12  gcc/testsuite/rust/compile/implicit_returns_err3.rs
*************** af5e396a6998b643c871345238c68e95  gcc/te
*** 126931,127038 ****
  7077d1fa449d27fa9e4995b32d37ede2  gcc/testsuite/rust/compile/inline_asm_typecheck.rs
  3d666bf870705cc14ea9d72d74a9046d  gcc/testsuite/rust/compile/invalid_label_name.rs
  e66597d1435db8c97820eae8edf34298  gcc/testsuite/rust/compile/invalid_variadics.rs
! f263d9837667ee8d8c4b9f6ec4718cca  gcc/testsuite/rust/compile/issue-1005.rs
  ca2c27602daf9dadcc9d976aa4131edc  gcc/testsuite/rust/compile/issue-1006.rs
! d59e1a706f4d5ecf85ccc8929983dda4  gcc/testsuite/rust/compile/issue-1019.rs
  8a6b6780af800c7792766eb1ad1c2bc2  gcc/testsuite/rust/compile/issue-1023.rs
! 7a5ff9315269435c4fb1fd09aa42022a  gcc/testsuite/rust/compile/issue-1031.rs
! 8b4a10a57fa50214c30abf33d38f3a66  gcc/testsuite/rust/compile/issue-1034.rs
  b077488d31789b68da09002a8334d8bb  gcc/testsuite/rust/compile/issue-1048.rs
  755da4cdeb7d21c007a7642f64d68f9f  gcc/testsuite/rust/compile/issue-1073.rs
  3170bfed67ee0e280928743013eff0bb  gcc/testsuite/rust/compile/issue-1089.rs
  fa137bc0614a02dafb820751293a47c7  gcc/testsuite/rust/compile/issue-1089/test_mod.rs
! 5bc4421c6f0beece14d7eebae0ab5139  gcc/testsuite/rust/compile/issue-1128.rs
  215a61ae1ef8ce9d4340a872f9af817f  gcc/testsuite/rust/compile/issue-1129-1.rs
! f980ebe6c33cb30b8f4299b79ee7561a  gcc/testsuite/rust/compile/issue-1129-2.rs
! 4acb3f85a12df3668daf9a543af1ada0  gcc/testsuite/rust/compile/issue-1130.rs
! 394647e04c828e25c1ded1f4d211bc98  gcc/testsuite/rust/compile/issue-1131.rs
  ce6c31e5fae9866aa4ca6c414ee67207  gcc/testsuite/rust/compile/issue-1152.rs
! 78129bcac4f89afdb7ea3ca84dc33cb0  gcc/testsuite/rust/compile/issue-1165.rs
! f00d2daefba13bef1d236d250e76bdff  gcc/testsuite/rust/compile/issue-1173.rs
  c83436fe2fc9fdb75d44d97cc581d491  gcc/testsuite/rust/compile/issue-1226.rs
  8917da2935c56ecd5715cb3db5ad71a3  gcc/testsuite/rust/compile/issue-1234.rs
! 706b52a679ef815e77dcde70b34d8625  gcc/testsuite/rust/compile/issue-1235.rs
! de949b167bc251dd36a632e5a01aa6d0  gcc/testsuite/rust/compile/issue-1237.rs
  17400e163df5334bbe8aac2038ec3043  gcc/testsuite/rust/compile/issue-1251.rs
  8dd9a76c7a3fcfb15bfffaac22520456  gcc/testsuite/rust/compile/issue-1271.rs
  526c2f3c9b8826f2087440064a08e246  gcc/testsuite/rust/compile/issue-1272.rs
! 5eccf21e9b433a6af0158f37bd7516a6  gcc/testsuite/rust/compile/issue-1289.rs
  ab3c15cae592f9bf4cd733d3f1430996  gcc/testsuite/rust/compile/issue-1323-1.rs
  fb1288c6929fb7277dde0d2cd35829d6  gcc/testsuite/rust/compile/issue-1323-2.rs
  b8672e41b3df45a83b26554acb9ba9d1  gcc/testsuite/rust/compile/issue-1361.rs
! 90ebb8b1d558833c738c616dd66ff05b  gcc/testsuite/rust/compile/issue-1383.rs
  ad1f8c80e2b6dd5a82e5d235b59e8e7d  gcc/testsuite/rust/compile/issue-1393.rs
  764b8d11c95b068c1b2a8af94b17fade  gcc/testsuite/rust/compile/issue-1422.rs
  02fcd65b5c0f6695c55954d97165249e  gcc/testsuite/rust/compile/issue-1446.rs
! 1aad0b48f4326d09f4e7b086d33d1863  gcc/testsuite/rust/compile/issue-1447.rs
! 70540dd29e7b0706827350dab2fb8358  gcc/testsuite/rust/compile/issue-1483.rs
! e5211d9e0329f03b539f52e739afef91  gcc/testsuite/rust/compile/issue-1485.rs
! c5fa22f9b64f1ed3638ff08ee2604990  gcc/testsuite/rust/compile/issue-1487.rs
  94b3e95b0146b31cf5c3ed953d8aa56d  gcc/testsuite/rust/compile/issue-1524.rs
  95b616180b39bcdf627de4a88d7f6b8c  gcc/testsuite/rust/compile/issue-1525.rs
! b436c410b33bf1a4a8345bcc091c9a93  gcc/testsuite/rust/compile/issue-1589.rs
! 40bfcf112fd1480b00d3d4858254154a  gcc/testsuite/rust/compile/issue-1725-1.rs
! cb3ba74e97e2ec40f4b5911b7a1b825a  gcc/testsuite/rust/compile/issue-1725-2.rs
  0e1d074590d2b9f2a4070df6ac25de28  gcc/testsuite/rust/compile/issue-1773.rs
! a27cbcf495ce6fabb51f8978e36c8576  gcc/testsuite/rust/compile/issue-1786.rs
  d26d80b504c5b7aceaa2fef4dec88320  gcc/testsuite/rust/compile/issue-1807.rs
  f15fc0ff6bc5cd17c8072f7c136a8c86  gcc/testsuite/rust/compile/issue-1813.rs
  043fc5bec978c63c23d0e2c62be982b5  gcc/testsuite/rust/compile/issue-1830_bytes.rs
  00968b4004619c3448e1d4e030a0ad1a  gcc/testsuite/rust/compile/issue-1830_str.rs
! 9559fc65e325f14d3ed3e1f224c5ad44  gcc/testsuite/rust/compile/issue-1893.rs
! 1c73e99b3deaa294d0e71a2485b2a8c3  gcc/testsuite/rust/compile/issue-1901.rs
! 68e4e03ac47f3cd8e3923653ee133be6  gcc/testsuite/rust/compile/issue-1930.rs
! f7f5972063e57689a5651a368ec69e76  gcc/testsuite/rust/compile/issue-1981.rs
! 6f18feb12e0b8b4f50dd770de0a8f3a5  gcc/testsuite/rust/compile/issue-2015.rs
! dea2255d500ac0b825f926116060eed6  gcc/testsuite/rust/compile/issue-2019-1.rs
! ae81890397358d0988779ae417ff81b4  gcc/testsuite/rust/compile/issue-2019-2.rs
! 487f46cb43b6c6f08b18379178708d7b  gcc/testsuite/rust/compile/issue-2019-3.rs
  5a87a7a30165e85071717f02a940f443  gcc/testsuite/rust/compile/issue-2029.rs
  547ce1dcc38d44c55b14904175214a36  gcc/testsuite/rust/compile/issue-2035.rs
! fe9158f762e004b8016cd4a108a6f99d  gcc/testsuite/rust/compile/issue-2036.rs
! 015a261bf80644566eea53260992855a  gcc/testsuite/rust/compile/issue-2037.rs
  d967f05a8763ae6a1051fc0feda841be  gcc/testsuite/rust/compile/issue-2039.rs
  71ddc9537accfcbd06be474ee0fbcf50  gcc/testsuite/rust/compile/issue-2040.rs
  89b0d4e232b08d023e1100161cb559db  gcc/testsuite/rust/compile/issue-2042.rs
  a58aad2633348ab9b4661de229a89748  gcc/testsuite/rust/compile/issue-2043.rs
! ca0d7bd0e4d6edab91eb3295f5243e78  gcc/testsuite/rust/compile/issue-2070.rs
! f7a4c3ed09ab45e1c096495fc9d675c6  gcc/testsuite/rust/compile/issue-2105.rs
! 5c9cb53adc5a191a5cdfb0c5eea5267f  gcc/testsuite/rust/compile/issue-2106.rs
  f677239cb2f1a8fc0b98b677dc10622c  gcc/testsuite/rust/compile/issue-2125.rs
! 504cf2293bfc6eb2b4f36b0904c7cdc8  gcc/testsuite/rust/compile/issue-2135.rs
! 1993ac90460c0c5343a2547406c0744b  gcc/testsuite/rust/compile/issue-2136-1.rs
! 7b5a2c0de4e8fb1cdd841f8f326ab459  gcc/testsuite/rust/compile/issue-2136-2.rs
! c3eb1a72b4023b45dfd5148bc5d0e7a5  gcc/testsuite/rust/compile/issue-2139.rs
! b1331689a90b28eba6a364bd355124d0  gcc/testsuite/rust/compile/issue-2142.rs
! 176f6f3432e7bbbbef12eec2f4b0b07c  gcc/testsuite/rust/compile/issue-2165.rs
! 2d7b679b5a2fe9db7b71da8238c8b003  gcc/testsuite/rust/compile/issue-2166.rs
  dd3f2a097c79b709dd16483c4a1e248c  gcc/testsuite/rust/compile/issue-2178.rs
! da2420dd88aae313552959890eda2887  gcc/testsuite/rust/compile/issue-2187.rs
  88ea8b6193ca0e9b0446deb7155ef254  gcc/testsuite/rust/compile/issue-2188.rs
  bf7653a0772e6020b3f449cd76d88f20  gcc/testsuite/rust/compile/issue-2189.rs
! 797e9a2fb3bf0297a69ef1e62d05f1bb  gcc/testsuite/rust/compile/issue-2190-1.rs
! 238b1671e90934a6f83702efbafe2a42  gcc/testsuite/rust/compile/issue-2190-2.rs
! c7146c7bbd602763cefd91f32994c7da  gcc/testsuite/rust/compile/issue-2195.rs
  c2eb5d990301dac994badf43bde882fb  gcc/testsuite/rust/compile/issue-2203.rs
  fcc95aaf32f2b6ae3c6e60a0a1f03a6b  gcc/testsuite/rust/compile/issue-2207.rs
  d45c1549ece0e49f041848d45eb5e799  gcc/testsuite/rust/compile/issue-2225.rs
! 7ce5181951a5db8f80b326d8ed2886bc  gcc/testsuite/rust/compile/issue-2238.rs
! 49a5fb24ab1fb010fb697b5455f9589a  gcc/testsuite/rust/compile/issue-2304.rs
! db6a4e59c56318982047d6257d74551c  gcc/testsuite/rust/compile/issue-2323.rs
  5459c28a30b51155c436fcceae10a7b4  gcc/testsuite/rust/compile/issue-2324-1.rs
  fc5fbf31e2dc2650609c585672614044  gcc/testsuite/rust/compile/issue-2324-2.rs
! f016c98a316a423cbe9110749bb60df8  gcc/testsuite/rust/compile/issue-2330.rs
! 9305a2873b28168b52f4519a9889d44f  gcc/testsuite/rust/compile/issue-2369.rs
! 8ab718258c1a331e258d5fa140812639  gcc/testsuite/rust/compile/issue-2375.rs
  c978074de410f3710470187bdc917f4b  gcc/testsuite/rust/compile/issue-2391.rs
  29321f6c75b7d162c5c0508e4fdc620e  gcc/testsuite/rust/compile/issue-2394.rs
  327d620bf438ac1ff1393dfc76ecc0d6  gcc/testsuite/rust/compile/issue-2421_str.rs
  204e9b043ccb1cba225f9859f0fa82af  gcc/testsuite/rust/compile/issue-2423.rs
  572e79cc2733b6ad48fb030aba698641  gcc/testsuite/rust/compile/issue-2431.rs
  6a8748f8e78748713097067cd623aabd  gcc/testsuite/rust/compile/issue-2477.rs
! 28bc68b646cb636c41270ed68a41b9d2  gcc/testsuite/rust/compile/issue-2478.rs
  ddd5ca8d99886bc9de4314d1f0a79932  gcc/testsuite/rust/compile/issue-2479.rs
! a639cdbc4ff4b13c41bb7efccf32ced5  gcc/testsuite/rust/compile/issue-2499.rs
  1c66a04857f7dfbb66f6cefe8f17ae42  gcc/testsuite/rust/compile/issue-2514.rs
  7d861f88c0fb0a67cfcdc446a2d7afc0  gcc/testsuite/rust/compile/issue-2567-1.rs
  5f391867787e66d496afa688f6ffdf4a  gcc/testsuite/rust/compile/issue-2567-2.rs
--- 127024,127131 ----
  7077d1fa449d27fa9e4995b32d37ede2  gcc/testsuite/rust/compile/inline_asm_typecheck.rs
  3d666bf870705cc14ea9d72d74a9046d  gcc/testsuite/rust/compile/invalid_label_name.rs
  e66597d1435db8c97820eae8edf34298  gcc/testsuite/rust/compile/invalid_variadics.rs
! f3681232c6684e21ac3db0269ff6f07f  gcc/testsuite/rust/compile/issue-1005.rs
  ca2c27602daf9dadcc9d976aa4131edc  gcc/testsuite/rust/compile/issue-1006.rs
! ffe78a43acae5defe669dac59cf3004c  gcc/testsuite/rust/compile/issue-1019.rs
  8a6b6780af800c7792766eb1ad1c2bc2  gcc/testsuite/rust/compile/issue-1023.rs
! 6656be0bb416da93b006ff5b5428a773  gcc/testsuite/rust/compile/issue-1031.rs
! 71c1254869f15aecaae23331701cf670  gcc/testsuite/rust/compile/issue-1034.rs
  b077488d31789b68da09002a8334d8bb  gcc/testsuite/rust/compile/issue-1048.rs
  755da4cdeb7d21c007a7642f64d68f9f  gcc/testsuite/rust/compile/issue-1073.rs
  3170bfed67ee0e280928743013eff0bb  gcc/testsuite/rust/compile/issue-1089.rs
  fa137bc0614a02dafb820751293a47c7  gcc/testsuite/rust/compile/issue-1089/test_mod.rs
! bea53a896ef7f5526b4873b801219f8b  gcc/testsuite/rust/compile/issue-1128.rs
  215a61ae1ef8ce9d4340a872f9af817f  gcc/testsuite/rust/compile/issue-1129-1.rs
! 6bee40c5954396bb44237d86e7cc864e  gcc/testsuite/rust/compile/issue-1129-2.rs
! d28f4c4317a84b3a6c2c37ae8213b204  gcc/testsuite/rust/compile/issue-1130.rs
! 792d11983facbead59e26c0ee62d2bf4  gcc/testsuite/rust/compile/issue-1131.rs
  ce6c31e5fae9866aa4ca6c414ee67207  gcc/testsuite/rust/compile/issue-1152.rs
! 39a2633f2c8862b7436fea1eecb16cda  gcc/testsuite/rust/compile/issue-1165.rs
! 2a710f2a0e592daab3a3870e2f8e1913  gcc/testsuite/rust/compile/issue-1173.rs
  c83436fe2fc9fdb75d44d97cc581d491  gcc/testsuite/rust/compile/issue-1226.rs
  8917da2935c56ecd5715cb3db5ad71a3  gcc/testsuite/rust/compile/issue-1234.rs
! a89f35f70028f003de1dbdf477806c1b  gcc/testsuite/rust/compile/issue-1235.rs
! d72ee7d22cac665dd54fe6780bc5b280  gcc/testsuite/rust/compile/issue-1237.rs
  17400e163df5334bbe8aac2038ec3043  gcc/testsuite/rust/compile/issue-1251.rs
  8dd9a76c7a3fcfb15bfffaac22520456  gcc/testsuite/rust/compile/issue-1271.rs
  526c2f3c9b8826f2087440064a08e246  gcc/testsuite/rust/compile/issue-1272.rs
! 49ea66d5e611f204311a4d0263c9e71f  gcc/testsuite/rust/compile/issue-1289.rs
  ab3c15cae592f9bf4cd733d3f1430996  gcc/testsuite/rust/compile/issue-1323-1.rs
  fb1288c6929fb7277dde0d2cd35829d6  gcc/testsuite/rust/compile/issue-1323-2.rs
  b8672e41b3df45a83b26554acb9ba9d1  gcc/testsuite/rust/compile/issue-1361.rs
! 9822d536d1358da388106f9087abb6a1  gcc/testsuite/rust/compile/issue-1383.rs
  ad1f8c80e2b6dd5a82e5d235b59e8e7d  gcc/testsuite/rust/compile/issue-1393.rs
  764b8d11c95b068c1b2a8af94b17fade  gcc/testsuite/rust/compile/issue-1422.rs
  02fcd65b5c0f6695c55954d97165249e  gcc/testsuite/rust/compile/issue-1446.rs
! 82a4d6cb5e6cab8ea4a6e32cdfb6bf1c  gcc/testsuite/rust/compile/issue-1447.rs
! 66d79ebf67fed38f40567c0348f24465  gcc/testsuite/rust/compile/issue-1483.rs
! df159a09442a1fc0b1c9c508b18f393f  gcc/testsuite/rust/compile/issue-1485.rs
! fbd4539bd6d7bdc1fe2b60ecf84ae3d4  gcc/testsuite/rust/compile/issue-1487.rs
  94b3e95b0146b31cf5c3ed953d8aa56d  gcc/testsuite/rust/compile/issue-1524.rs
  95b616180b39bcdf627de4a88d7f6b8c  gcc/testsuite/rust/compile/issue-1525.rs
! d85936a846fbb96742d6814af4ed027c  gcc/testsuite/rust/compile/issue-1589.rs
! 281cfbf74b64df14d161ecf5a9ae8dac  gcc/testsuite/rust/compile/issue-1725-1.rs
! 7f60ae47c4b5153cd66bda3983bd0f2a  gcc/testsuite/rust/compile/issue-1725-2.rs
  0e1d074590d2b9f2a4070df6ac25de28  gcc/testsuite/rust/compile/issue-1773.rs
! 006762085237a43eaff57b878e803a70  gcc/testsuite/rust/compile/issue-1786.rs
  d26d80b504c5b7aceaa2fef4dec88320  gcc/testsuite/rust/compile/issue-1807.rs
  f15fc0ff6bc5cd17c8072f7c136a8c86  gcc/testsuite/rust/compile/issue-1813.rs
  043fc5bec978c63c23d0e2c62be982b5  gcc/testsuite/rust/compile/issue-1830_bytes.rs
  00968b4004619c3448e1d4e030a0ad1a  gcc/testsuite/rust/compile/issue-1830_str.rs
! 2bd3e23b04b0a0c0c2078edfae63f559  gcc/testsuite/rust/compile/issue-1893.rs
! 28131426c87d70eccbf1520898c97aee  gcc/testsuite/rust/compile/issue-1901.rs
! a5db161aabe5c101593f7b8f89aa0ffe  gcc/testsuite/rust/compile/issue-1930.rs
! ac390980a9231b248e077ecb02278be7  gcc/testsuite/rust/compile/issue-1981.rs
! 3bda16817b14445beb9cfa15a037c513  gcc/testsuite/rust/compile/issue-2015.rs
! fe71de4916f8a80522eb08d9b74b2f89  gcc/testsuite/rust/compile/issue-2019-1.rs
! 08e17cb783e9c15cdc2d58715abed4cf  gcc/testsuite/rust/compile/issue-2019-2.rs
! 24b05ca98eeb2d1643cd43fa8f155dbf  gcc/testsuite/rust/compile/issue-2019-3.rs
  5a87a7a30165e85071717f02a940f443  gcc/testsuite/rust/compile/issue-2029.rs
  547ce1dcc38d44c55b14904175214a36  gcc/testsuite/rust/compile/issue-2035.rs
! 403b02dde6fb04e8ec698bcf9fbb5da4  gcc/testsuite/rust/compile/issue-2036.rs
! a7acf04f2bacad4febb55dd60a44d829  gcc/testsuite/rust/compile/issue-2037.rs
  d967f05a8763ae6a1051fc0feda841be  gcc/testsuite/rust/compile/issue-2039.rs
  71ddc9537accfcbd06be474ee0fbcf50  gcc/testsuite/rust/compile/issue-2040.rs
  89b0d4e232b08d023e1100161cb559db  gcc/testsuite/rust/compile/issue-2042.rs
  a58aad2633348ab9b4661de229a89748  gcc/testsuite/rust/compile/issue-2043.rs
! 9773add73c08cca4a308ae22c3e24b60  gcc/testsuite/rust/compile/issue-2070.rs
! 04dad3f128f31e03515ebc5ae1fb7f32  gcc/testsuite/rust/compile/issue-2105.rs
! ef3bf28bbddc49a94d8e3c1b4d239cd7  gcc/testsuite/rust/compile/issue-2106.rs
  f677239cb2f1a8fc0b98b677dc10622c  gcc/testsuite/rust/compile/issue-2125.rs
! de2c744be431d6417215e27ae9aa8c9b  gcc/testsuite/rust/compile/issue-2135.rs
! 3c95cdd5b055a318a013850fa62bb234  gcc/testsuite/rust/compile/issue-2136-1.rs
! 30fad1a2d54cdf8265eeca920f97cdcf  gcc/testsuite/rust/compile/issue-2136-2.rs
! fbe09d317f5a071ac0458e98ade2b77c  gcc/testsuite/rust/compile/issue-2139.rs
! 0451a7b3eb379c8a0260ae2f26b58d8e  gcc/testsuite/rust/compile/issue-2142.rs
! c53cd28f4c88a3f99754a389e386992e  gcc/testsuite/rust/compile/issue-2165.rs
! e953d00192292e5887a253d208f4f15c  gcc/testsuite/rust/compile/issue-2166.rs
  dd3f2a097c79b709dd16483c4a1e248c  gcc/testsuite/rust/compile/issue-2178.rs
! 5cc0d5e3097ffe4283eb72209474c685  gcc/testsuite/rust/compile/issue-2187.rs
  88ea8b6193ca0e9b0446deb7155ef254  gcc/testsuite/rust/compile/issue-2188.rs
  bf7653a0772e6020b3f449cd76d88f20  gcc/testsuite/rust/compile/issue-2189.rs
! 1d77edc425f231a1eac23da83dedb3ac  gcc/testsuite/rust/compile/issue-2190-1.rs
! 9b8db6d994783f50199fb1c480c726f4  gcc/testsuite/rust/compile/issue-2190-2.rs
! e67ee9d287e8a336e5a9100999d3835b  gcc/testsuite/rust/compile/issue-2195.rs
  c2eb5d990301dac994badf43bde882fb  gcc/testsuite/rust/compile/issue-2203.rs
  fcc95aaf32f2b6ae3c6e60a0a1f03a6b  gcc/testsuite/rust/compile/issue-2207.rs
  d45c1549ece0e49f041848d45eb5e799  gcc/testsuite/rust/compile/issue-2225.rs
! 8f4d380759ec6a03e21ddc38d71f021b  gcc/testsuite/rust/compile/issue-2238.rs
! 516849a528c5193a6bd1b5a005487320  gcc/testsuite/rust/compile/issue-2304.rs
! c1f59029c910f5c1a2e35270a97c2777  gcc/testsuite/rust/compile/issue-2323.rs
  5459c28a30b51155c436fcceae10a7b4  gcc/testsuite/rust/compile/issue-2324-1.rs
  fc5fbf31e2dc2650609c585672614044  gcc/testsuite/rust/compile/issue-2324-2.rs
! cd98746cedf1ef3df08417843528d671  gcc/testsuite/rust/compile/issue-2330.rs
! f4d9e732f919a8936067a89c687d5a68  gcc/testsuite/rust/compile/issue-2369.rs
! 8d3e504b9dfb8ab9e160d8b8189a7de2  gcc/testsuite/rust/compile/issue-2375.rs
  c978074de410f3710470187bdc917f4b  gcc/testsuite/rust/compile/issue-2391.rs
  29321f6c75b7d162c5c0508e4fdc620e  gcc/testsuite/rust/compile/issue-2394.rs
  327d620bf438ac1ff1393dfc76ecc0d6  gcc/testsuite/rust/compile/issue-2421_str.rs
  204e9b043ccb1cba225f9859f0fa82af  gcc/testsuite/rust/compile/issue-2423.rs
  572e79cc2733b6ad48fb030aba698641  gcc/testsuite/rust/compile/issue-2431.rs
  6a8748f8e78748713097067cd623aabd  gcc/testsuite/rust/compile/issue-2477.rs
! 95cad129b4f6bc9025b99fdb947fd3da  gcc/testsuite/rust/compile/issue-2478.rs
  ddd5ca8d99886bc9de4314d1f0a79932  gcc/testsuite/rust/compile/issue-2479.rs
! 7a65c7e86360a5af17f2abe1f840ccac  gcc/testsuite/rust/compile/issue-2499.rs
  1c66a04857f7dfbb66f6cefe8f17ae42  gcc/testsuite/rust/compile/issue-2514.rs
  7d861f88c0fb0a67cfcdc446a2d7afc0  gcc/testsuite/rust/compile/issue-2567-1.rs
  5f391867787e66d496afa688f6ffdf4a  gcc/testsuite/rust/compile/issue-2567-2.rs
*************** ad5a6af6cd00b5ff7c2f1e8f4e9358f4  gcc/te
*** 127044,127058 ****
  77f0f6ac41c2a0cddd898d2cfc6f7e80  gcc/testsuite/rust/compile/issue-2665.rs
  4017457d27e9f9977845471749481d07  gcc/testsuite/rust/compile/issue-2680.rs
  67b26e16d2c6f04c185cf6bd1629141e  gcc/testsuite/rust/compile/issue-2709.rs
! 79e64442dc413769cd1a9df190ac987a  gcc/testsuite/rust/compile/issue-2723-1.rs
! fa80bafd4421fc7cb407eb34ec8bdad8  gcc/testsuite/rust/compile/issue-2723-2.rs
! d3359bbfbf707c34372d9917675d0509  gcc/testsuite/rust/compile/issue-2725.rs
! 1631250c1cc2e0002b5ce4a98ae6810b  gcc/testsuite/rust/compile/issue-2747.rs
  500c9ef48c2f8d072ed7e6f8b1f11a2b  gcc/testsuite/rust/compile/issue-2767.rs
! bd37683bed5641ffbd071b6be0d82a54  gcc/testsuite/rust/compile/issue-2772-1.rs
! f9d4a6bcd21c2fad3da335b4458cd917  gcc/testsuite/rust/compile/issue-2772-2.rs
! a1c3a349606e6b480d37913f89e3264b  gcc/testsuite/rust/compile/issue-2775.rs
! 4a8f1c0d3fcee35652ddd40876c2ae35  gcc/testsuite/rust/compile/issue-2782.rs
  5f223e6f046471154129ca4f18a29b87  gcc/testsuite/rust/compile/issue-2785.rs
  9d478006ca67887100c293872a2ae3ba  gcc/testsuite/rust/compile/issue-2788.rs
  7dfbf4858fbd000b737a25219ce353f4  gcc/testsuite/rust/compile/issue-2812.rs
--- 127137,127151 ----
  77f0f6ac41c2a0cddd898d2cfc6f7e80  gcc/testsuite/rust/compile/issue-2665.rs
  4017457d27e9f9977845471749481d07  gcc/testsuite/rust/compile/issue-2680.rs
  67b26e16d2c6f04c185cf6bd1629141e  gcc/testsuite/rust/compile/issue-2709.rs
! 4b0a4174e4066651353a7e9832d862fa  gcc/testsuite/rust/compile/issue-2723-1.rs
! a018606756fdd9b0f247629b8346886f  gcc/testsuite/rust/compile/issue-2723-2.rs
! 2d1e2fcb0cf72fea6f1f7ee9847be340  gcc/testsuite/rust/compile/issue-2725.rs
! 6acccc001c3e72a912227d8b31f4ad53  gcc/testsuite/rust/compile/issue-2747.rs
  500c9ef48c2f8d072ed7e6f8b1f11a2b  gcc/testsuite/rust/compile/issue-2767.rs
! f5bbd756c0c5127617e724c68d7b1796  gcc/testsuite/rust/compile/issue-2772-1.rs
! dfd62deff070d1aeaed43238cde87a52  gcc/testsuite/rust/compile/issue-2772-2.rs
! 5cb842e285ed2a1ce23b86dc49967377  gcc/testsuite/rust/compile/issue-2775.rs
! 41272fea31ac81959ca9144134bfb6cd  gcc/testsuite/rust/compile/issue-2782.rs
  5f223e6f046471154129ca4f18a29b87  gcc/testsuite/rust/compile/issue-2785.rs
  9d478006ca67887100c293872a2ae3ba  gcc/testsuite/rust/compile/issue-2788.rs
  7dfbf4858fbd000b737a25219ce353f4  gcc/testsuite/rust/compile/issue-2812.rs
*************** a1c3a349606e6b480d37913f89e3264b  gcc/te
*** 127062,127084 ****
  cff5ead45fa38818e49938695714423b  gcc/testsuite/rust/compile/issue-2905-1.rs
  f1c76067d9e0cda95c5be153a4510aca  gcc/testsuite/rust/compile/issue-2905-2.rs
  c64c6ee37c57875f223a31b7ca93c937  gcc/testsuite/rust/compile/issue-2906.rs
! c2b5ca1d3dd6482af494c76a69af5c54  gcc/testsuite/rust/compile/issue-2907.rs
! f2f24b0eb27617d825844e2829f32d87  gcc/testsuite/rust/compile/issue-2951.rs
! 0f4b417ad1dbbee856ffcf29764a6095  gcc/testsuite/rust/compile/issue-2953-1.rs
! 8cf82fdc1957a7bffe9429abe6c09187  gcc/testsuite/rust/compile/issue-2953-2.rs
! 09a73589b4f895d4b71bebcb2330388d  gcc/testsuite/rust/compile/issue-2954.rs
! cf1b9655b0c3a9e786b82bfac808658c  gcc/testsuite/rust/compile/issue-2987.rs
! c2d1af57769b8f5b07804e5c121f5c6a  gcc/testsuite/rust/compile/issue-3009.rs
! a8d7d63b3a4cfcce90ed3367fd05f28c  gcc/testsuite/rust/compile/issue-3022.rs
! 5be64c28366496ce3002eb3a089c878d  gcc/testsuite/rust/compile/issue-3030.rs
  88af658cc213f23b86849cd3af2790a5  gcc/testsuite/rust/compile/issue-3031.rs
! eacdfb8535082fecb21ff97090a947a5  gcc/testsuite/rust/compile/issue-3032-1.rs
! 1e50b2e1a3687860690c2ac2eea01512  gcc/testsuite/rust/compile/issue-3032-2.rs
! 0a98d6b65f433a9659ab439707c1bfcc  gcc/testsuite/rust/compile/issue-3033.rs
! 4c9dce924188a2141b41b9c33eb347e2  gcc/testsuite/rust/compile/issue-3035.rs
! 0d1e543b36dffeb3ebc17d14a9844656  gcc/testsuite/rust/compile/issue-3036.rs
! e70bc8badcea0df7ced21286078fe73c  gcc/testsuite/rust/compile/issue-3045-1.rs
! e254634544b693159c4eb480ac1e8244  gcc/testsuite/rust/compile/issue-3045-2.rs
  c26ae7d343d3a3fbe5ba88d563bb2081  gcc/testsuite/rust/compile/issue-3046.rs
  992164d54c304305ccb96dfb41c8b9fc  gcc/testsuite/rust/compile/issue-3082.rs
  51b052580e85bab9fb0f3a3d1cacc947  gcc/testsuite/rust/compile/issue-3139-1.rs
--- 127155,127177 ----
  cff5ead45fa38818e49938695714423b  gcc/testsuite/rust/compile/issue-2905-1.rs
  f1c76067d9e0cda95c5be153a4510aca  gcc/testsuite/rust/compile/issue-2905-2.rs
  c64c6ee37c57875f223a31b7ca93c937  gcc/testsuite/rust/compile/issue-2906.rs
! 117a2f86ba76a8a70493f03d9e5d0687  gcc/testsuite/rust/compile/issue-2907.rs
! 5ad47c2c3cd984c1097e5cbdc13e5f39  gcc/testsuite/rust/compile/issue-2951.rs
! 02b47c00a280f5a96f2156e983cd7429  gcc/testsuite/rust/compile/issue-2953-1.rs
! 21005d68abfbbbaf91715ef7a94abbe8  gcc/testsuite/rust/compile/issue-2953-2.rs
! d0e00e69108c2451b0ca795e98dc9f0b  gcc/testsuite/rust/compile/issue-2954.rs
! 26e61726fa0693d4e4049413ec3b0edc  gcc/testsuite/rust/compile/issue-2987.rs
! 7d0b708f8a9aab96f8242aedee06b427  gcc/testsuite/rust/compile/issue-3009.rs
! b9b172fdb78932be322709d6635ccd51  gcc/testsuite/rust/compile/issue-3022.rs
! c71aea3d68befe628aca2eb9449c6e55  gcc/testsuite/rust/compile/issue-3030.rs
  88af658cc213f23b86849cd3af2790a5  gcc/testsuite/rust/compile/issue-3031.rs
! ddac44d77009858368b9ddd9bae0f5ff  gcc/testsuite/rust/compile/issue-3032-1.rs
! 7a90053c8ca692d17bb68a960c1c69cd  gcc/testsuite/rust/compile/issue-3032-2.rs
! 5717f3d46dc6af2e709a9958e2f5ba1a  gcc/testsuite/rust/compile/issue-3033.rs
! 3d71e74e5353cd8c852886e37b28f455  gcc/testsuite/rust/compile/issue-3035.rs
! ae764b721833d198e55d918f87437854  gcc/testsuite/rust/compile/issue-3036.rs
! 5e0ab84b95d0831767aa1771dc53e155  gcc/testsuite/rust/compile/issue-3045-1.rs
! ceda61f282f495fd8faadac83e9a3752  gcc/testsuite/rust/compile/issue-3045-2.rs
  c26ae7d343d3a3fbe5ba88d563bb2081  gcc/testsuite/rust/compile/issue-3046.rs
  992164d54c304305ccb96dfb41c8b9fc  gcc/testsuite/rust/compile/issue-3082.rs
  51b052580e85bab9fb0f3a3d1cacc947  gcc/testsuite/rust/compile/issue-3139-1.rs
*************** d011f3635f0520cf2a1144a59d7c6608  gcc/te
*** 127086,127105 ****
  c38187cc4d1a6720dc603eb3669e31f5  gcc/testsuite/rust/compile/issue-3139-3.rs
  a6c4e09411ae93ff227eb14a963775c4  gcc/testsuite/rust/compile/issue-3140.rs
  c8e07b1cfb5d32ed3c3a5a05f124a2ed  gcc/testsuite/rust/compile/issue-3141.rs
! 15c2456cd82a62e94caa9932043382df  gcc/testsuite/rust/compile/issue-3144.rs
  aa60d24031a6a312c48347476819a5ff  gcc/testsuite/rust/compile/issue-3174.rs
  59f153890a52fe84e386d4af8805989d  gcc/testsuite/rust/compile/issue-3231.rs
! a35346c925efb8045f613c169242de67  gcc/testsuite/rust/compile/issue-3242.rs
  ef77cbeacb4bb028849a7f89d4dcb697  gcc/testsuite/rust/compile/issue-3261.rs
! 005e4210e8196770b648b0ec08dfa682  gcc/testsuite/rust/compile/issue-3304.rs
  5453b0240082435ff75d85bff8ea271e  gcc/testsuite/rust/compile/issue-3315-1.rs
  e1e2b037bd7ec5aac8a6dad93adccb88  gcc/testsuite/rust/compile/issue-3315-2.rs
  9d6b81fb00c4df2bd274f6a6d5fa4964  gcc/testsuite/rust/compile/issue-3350.rs
! baf4c5a7f39ae8295d20943ad1b6b1d1  gcc/testsuite/rust/compile/issue-3382.rs
! 8885e6ac801d06f4ec4e0c7cf79ae111  gcc/testsuite/rust/compile/issue-3402-1.rs
! ea87eb5dd98fc440678cbfc183368898  gcc/testsuite/rust/compile/issue-3402-2.rs
! 0b6c85cbbc277ebf5846c921c4aa341b  gcc/testsuite/rust/compile/issue-3403.rs
! 6d6b8de1cbf4400ca282314b261c2352  gcc/testsuite/rust/compile/issue-3454.rs
  78a0259ad0533c8b1195164452e3f760  gcc/testsuite/rust/compile/issue-3524.rs
  d1eacc10be9cd3eb212ceee0226cf0bb  gcc/testsuite/rust/compile/issue-3525.rs
  9c32fb3d820cc1289bd30f7b91250129  gcc/testsuite/rust/compile/issue-3530-1.rs
--- 127179,127198 ----
  c38187cc4d1a6720dc603eb3669e31f5  gcc/testsuite/rust/compile/issue-3139-3.rs
  a6c4e09411ae93ff227eb14a963775c4  gcc/testsuite/rust/compile/issue-3140.rs
  c8e07b1cfb5d32ed3c3a5a05f124a2ed  gcc/testsuite/rust/compile/issue-3141.rs
! 2246a2e50301d4524a9b1707eb853d81  gcc/testsuite/rust/compile/issue-3144.rs
  aa60d24031a6a312c48347476819a5ff  gcc/testsuite/rust/compile/issue-3174.rs
  59f153890a52fe84e386d4af8805989d  gcc/testsuite/rust/compile/issue-3231.rs
! f46ae0642668b0b8ed789adc67745aaf  gcc/testsuite/rust/compile/issue-3242.rs
  ef77cbeacb4bb028849a7f89d4dcb697  gcc/testsuite/rust/compile/issue-3261.rs
! 0b7a5e12ba29f178af3cefebf95fbab8  gcc/testsuite/rust/compile/issue-3304.rs
  5453b0240082435ff75d85bff8ea271e  gcc/testsuite/rust/compile/issue-3315-1.rs
  e1e2b037bd7ec5aac8a6dad93adccb88  gcc/testsuite/rust/compile/issue-3315-2.rs
  9d6b81fb00c4df2bd274f6a6d5fa4964  gcc/testsuite/rust/compile/issue-3350.rs
! bc28209ef21f5ce5237b8bdbed840f28  gcc/testsuite/rust/compile/issue-3382.rs
! cbdfbb1216b83af512b50e31266b5aaf  gcc/testsuite/rust/compile/issue-3402-1.rs
! 68ffc683095620d906da712a8c02badf  gcc/testsuite/rust/compile/issue-3402-2.rs
! fc1011ed911a518223b17b43541abd52  gcc/testsuite/rust/compile/issue-3403.rs
! fa771eaf57caa63560f08b5f24f6ccbf  gcc/testsuite/rust/compile/issue-3454.rs
  78a0259ad0533c8b1195164452e3f760  gcc/testsuite/rust/compile/issue-3524.rs
  d1eacc10be9cd3eb212ceee0226cf0bb  gcc/testsuite/rust/compile/issue-3525.rs
  9c32fb3d820cc1289bd30f7b91250129  gcc/testsuite/rust/compile/issue-3530-1.rs
*************** c7919a109aede82f1914922ecb4e4c91  gcc/te
*** 127109,127119 ****
  a16fac448d52ecc36f845f158322f7b4  gcc/testsuite/rust/compile/issue-3541-2.rs
  6c43194fbbe3e88e45c70087448b280d  gcc/testsuite/rust/compile/issue-3546.rs
  5d5147c212936353cb8e89a7fe5a53d5  gcc/testsuite/rust/compile/issue-3549.rs
! cccfe17fac6ad050f5a21f250c83d9bc  gcc/testsuite/rust/compile/issue-3551.rs
  8641e5480371b80c6b5ec39645d00aea  gcc/testsuite/rust/compile/issue-3552.rs
  844e28af629e8aaa74e31dca339d140c  gcc/testsuite/rust/compile/issue-3553.rs
  2e9e39ce283620e50ccd623e5758e6fd  gcc/testsuite/rust/compile/issue-3554-1.rs
! 89ae87e8c1e981b83ca8a9c23e184312  gcc/testsuite/rust/compile/issue-3554-2.rs
  92e0537fcd15f7747426645bd484ab53  gcc/testsuite/rust/compile/issue-3556.rs
  8ed9f05b0580f69cc8cbdd55969abf3a  gcc/testsuite/rust/compile/issue-3563.rs
  a183cd8a8a21fd3792bc6c25a0593dc3  gcc/testsuite/rust/compile/issue-3566-1.rs
--- 127202,127212 ----
  a16fac448d52ecc36f845f158322f7b4  gcc/testsuite/rust/compile/issue-3541-2.rs
  6c43194fbbe3e88e45c70087448b280d  gcc/testsuite/rust/compile/issue-3546.rs
  5d5147c212936353cb8e89a7fe5a53d5  gcc/testsuite/rust/compile/issue-3549.rs
! b56023f5c9389cfb0bc38be9edffcbbe  gcc/testsuite/rust/compile/issue-3551.rs
  8641e5480371b80c6b5ec39645d00aea  gcc/testsuite/rust/compile/issue-3552.rs
  844e28af629e8aaa74e31dca339d140c  gcc/testsuite/rust/compile/issue-3553.rs
  2e9e39ce283620e50ccd623e5758e6fd  gcc/testsuite/rust/compile/issue-3554-1.rs
! b3f8478351704928292c507c860d4677  gcc/testsuite/rust/compile/issue-3554-2.rs
  92e0537fcd15f7747426645bd484ab53  gcc/testsuite/rust/compile/issue-3556.rs
  8ed9f05b0580f69cc8cbdd55969abf3a  gcc/testsuite/rust/compile/issue-3563.rs
  a183cd8a8a21fd3792bc6c25a0593dc3  gcc/testsuite/rust/compile/issue-3566-1.rs
*************** c03fabc8909fdf74b1e0ac91674acf95  gcc/te
*** 127124,127130 ****
  b790a48d62804a4138b4fbcdf0e2d96b  gcc/testsuite/rust/compile/issue-3581-2.rs
  3cd26856f36e846540fccbbf818b4684  gcc/testsuite/rust/compile/issue-3588.rs
  3e6f4e428fb3c361858e39aa3ef67681  gcc/testsuite/rust/compile/issue-3592.rs
! bd3f5f5421f7412556d571aaed504e87  gcc/testsuite/rust/compile/issue-3599.rs
  397a757997946ab15af47e9fad31284c  gcc/testsuite/rust/compile/issue-3605.rs
  61beaa24a09b8012dce7ddadbce604a1  gcc/testsuite/rust/compile/issue-3606.rs
  78f95bd6fc771d76393c4fef5338f991  gcc/testsuite/rust/compile/issue-3612.rs
--- 127217,127223 ----
  b790a48d62804a4138b4fbcdf0e2d96b  gcc/testsuite/rust/compile/issue-3581-2.rs
  3cd26856f36e846540fccbbf818b4684  gcc/testsuite/rust/compile/issue-3588.rs
  3e6f4e428fb3c361858e39aa3ef67681  gcc/testsuite/rust/compile/issue-3592.rs
! 7e988857fd7f4401fb567408968e949e  gcc/testsuite/rust/compile/issue-3599.rs
  397a757997946ab15af47e9fad31284c  gcc/testsuite/rust/compile/issue-3605.rs
  61beaa24a09b8012dce7ddadbce604a1  gcc/testsuite/rust/compile/issue-3606.rs
  78f95bd6fc771d76393c4fef5338f991  gcc/testsuite/rust/compile/issue-3612.rs
*************** c68fac7e04fd77c1639ea1fd3277409c  gcc/te
*** 127135,127141 ****
  1a6f0cc305232f28ce0ea14763a11060  gcc/testsuite/rust/compile/issue-3618.rs
  068bea38ad05bd2a911347bbe3993c6d  gcc/testsuite/rust/compile/issue-3625.rs
  b73bff1144b326261fd3bce5eddb22d3  gcc/testsuite/rust/compile/issue-3628.rs
! 806d9b49fd25931d59857f798a217248  gcc/testsuite/rust/compile/issue-3642.rs
  5953d50711d31ae6f6b26e3727986881  gcc/testsuite/rust/compile/issue-3643.rs
  ee89f9a1a77884e7520601ab049cb4d1  gcc/testsuite/rust/compile/issue-3645.rs
  d690a668cb1a4d9fe94ee30b4e2a967b  gcc/testsuite/rust/compile/issue-3646.rs
--- 127228,127234 ----
  1a6f0cc305232f28ce0ea14763a11060  gcc/testsuite/rust/compile/issue-3618.rs
  068bea38ad05bd2a911347bbe3993c6d  gcc/testsuite/rust/compile/issue-3625.rs
  b73bff1144b326261fd3bce5eddb22d3  gcc/testsuite/rust/compile/issue-3628.rs
! 52f177da94d082845cde92c992243e1b  gcc/testsuite/rust/compile/issue-3642.rs
  5953d50711d31ae6f6b26e3727986881  gcc/testsuite/rust/compile/issue-3643.rs
  ee89f9a1a77884e7520601ab049cb4d1  gcc/testsuite/rust/compile/issue-3645.rs
  d690a668cb1a4d9fe94ee30b4e2a967b  gcc/testsuite/rust/compile/issue-3646.rs
*************** b113df233110ae39a95700fc1d50b75f  gcc/te
*** 127155,127169 ****
  a82f3bb8e730a6249c2d9d547940590a  gcc/testsuite/rust/compile/issue-3665.rs
  10cacd69cdbb198a37f27ed27a03a585  gcc/testsuite/rust/compile/issue-3667.rs
  d7a0aa61ac6ea480aa470031428550d2  gcc/testsuite/rust/compile/issue-3671.rs
! 157c904f67c2f79161fef218c5808562  gcc/testsuite/rust/compile/issue-3711.rs
  b6cc4ab95094c5e9f54084f73495560d  gcc/testsuite/rust/compile/issue-3726.rs
! 7113190e90e883d0006ceaeb866eeb73  gcc/testsuite/rust/compile/issue-3836.rs
  f70238abf05e340d48ee9e6ab5020409  gcc/testsuite/rust/compile/issue-3874.rs
  94a2cfe870fb37b0f022125bd7ab65bf  gcc/testsuite/rust/compile/issue-3876.rs
  34b52236ae1c3de76ae9436257bdb690  gcc/testsuite/rust/compile/issue-3885.rs
! 608e58447c72c19a5ba9eb55aac478d2  gcc/testsuite/rust/compile/issue-3898.rs
! 95ccc1677372d00599c0fc411c72c3c8  gcc/testsuite/rust/compile/issue-3915.rs
! 34fad78a84e55b89af8044a8b659a986  gcc/testsuite/rust/compile/issue-3916.rs
  5ef50466b281b79b756d304bb2847797  gcc/testsuite/rust/compile/issue-3922.rs
  30f649417291a08af7919e5f172ed925  gcc/testsuite/rust/compile/issue-3924.rs
  9739ae3375716648c0ef55647edfe0f8  gcc/testsuite/rust/compile/issue-3928.rs
--- 127248,127262 ----
  a82f3bb8e730a6249c2d9d547940590a  gcc/testsuite/rust/compile/issue-3665.rs
  10cacd69cdbb198a37f27ed27a03a585  gcc/testsuite/rust/compile/issue-3667.rs
  d7a0aa61ac6ea480aa470031428550d2  gcc/testsuite/rust/compile/issue-3671.rs
! 19216f5c45ffc18281d7a6eeb7c5534f  gcc/testsuite/rust/compile/issue-3711.rs
  b6cc4ab95094c5e9f54084f73495560d  gcc/testsuite/rust/compile/issue-3726.rs
! a80ba949f3fc3f50011b81cb80b1ecd4  gcc/testsuite/rust/compile/issue-3836.rs
  f70238abf05e340d48ee9e6ab5020409  gcc/testsuite/rust/compile/issue-3874.rs
  94a2cfe870fb37b0f022125bd7ab65bf  gcc/testsuite/rust/compile/issue-3876.rs
  34b52236ae1c3de76ae9436257bdb690  gcc/testsuite/rust/compile/issue-3885.rs
! 964ce25dc11787d37e2f58cc99b08d10  gcc/testsuite/rust/compile/issue-3898.rs
! a5921241e2fb69f5be5f4dbc5ca08f50  gcc/testsuite/rust/compile/issue-3915.rs
! 4ec8ba647273f5c266a6486e759da392  gcc/testsuite/rust/compile/issue-3916.rs
  5ef50466b281b79b756d304bb2847797  gcc/testsuite/rust/compile/issue-3922.rs
  30f649417291a08af7919e5f172ed925  gcc/testsuite/rust/compile/issue-3924.rs
  9739ae3375716648c0ef55647edfe0f8  gcc/testsuite/rust/compile/issue-3928.rs
*************** a3bdcdba8bf2415b9ee0895e613614f0  gcc/te
*** 127176,127191 ****
  c6dad6212003d86822c4f3310ff3bffa  gcc/testsuite/rust/compile/issue-3965-1.rs
  c021443c771857518a064a621fe4002f  gcc/testsuite/rust/compile/issue-3965-2.rs
  6f333c9b92dd63189b661de715f2bef6  gcc/testsuite/rust/compile/issue-3966.rs
! c93fa26f2668b4381f716f05b1e6d0df  gcc/testsuite/rust/compile/issue-3969.rs
  8c2f1bf21530fc563f42c2af94282319  gcc/testsuite/rust/compile/issue-3971.rs
  60241c6cc63c4504e54468c2ce6c06b6  gcc/testsuite/rust/compile/issue-3974.rs
  d4479cd16fd0fe4348b1bdbfb2f4d527  gcc/testsuite/rust/compile/issue-3978.rs
  b600c0395dbcbda7eda163bb57bf1b72  gcc/testsuite/rust/compile/issue-4006.rs
! 89033d8c6cdd3bc5792c06ce52a288f2  gcc/testsuite/rust/compile/issue-402.rs
! b614f59c05840eb45c25f4c6455c316d  gcc/testsuite/rust/compile/issue-407-2.rs
! a96ecff7ebddf1b3d15a3e3eed146c07  gcc/testsuite/rust/compile/issue-407.rs
! 736a2ee937fe6dba1ca51f9f5c5c9362  gcc/testsuite/rust/compile/issue-4090-1.rs
! 6a4caad70e136d5944c8be9c0ca1e6fa  gcc/testsuite/rust/compile/issue-4090-2.rs
  813e772ce6c019a3e4129348c7561276  gcc/testsuite/rust/compile/issue-4139.rs
  f903646ce6fe965ceb5a5d390d6cfcc4  gcc/testsuite/rust/compile/issue-4140-1.rs
  3d7791312f67fd09e7b5717b29f0b7d2  gcc/testsuite/rust/compile/issue-4140-2.rs
--- 127269,127284 ----
  c6dad6212003d86822c4f3310ff3bffa  gcc/testsuite/rust/compile/issue-3965-1.rs
  c021443c771857518a064a621fe4002f  gcc/testsuite/rust/compile/issue-3965-2.rs
  6f333c9b92dd63189b661de715f2bef6  gcc/testsuite/rust/compile/issue-3966.rs
! e46eaa86fb97d21ba5a2154cfe45c9a9  gcc/testsuite/rust/compile/issue-3969.rs
  8c2f1bf21530fc563f42c2af94282319  gcc/testsuite/rust/compile/issue-3971.rs
  60241c6cc63c4504e54468c2ce6c06b6  gcc/testsuite/rust/compile/issue-3974.rs
  d4479cd16fd0fe4348b1bdbfb2f4d527  gcc/testsuite/rust/compile/issue-3978.rs
  b600c0395dbcbda7eda163bb57bf1b72  gcc/testsuite/rust/compile/issue-4006.rs
! e30cff5705a384a86ca4de4df52ab9e0  gcc/testsuite/rust/compile/issue-402.rs
! 6b76556708b3acd54cb569bf3b0d9c64  gcc/testsuite/rust/compile/issue-407-2.rs
! 9a643706823e2de05785f8d18baf4f23  gcc/testsuite/rust/compile/issue-407.rs
! 03d4c737a53b9eac78e25b0f9c9ea5d3  gcc/testsuite/rust/compile/issue-4090-1.rs
! 543f3f3fd6d2c3715fd9cfb3fabe40f5  gcc/testsuite/rust/compile/issue-4090-2.rs
  813e772ce6c019a3e4129348c7561276  gcc/testsuite/rust/compile/issue-4139.rs
  f903646ce6fe965ceb5a5d390d6cfcc4  gcc/testsuite/rust/compile/issue-4140-1.rs
  3d7791312f67fd09e7b5717b29f0b7d2  gcc/testsuite/rust/compile/issue-4140-2.rs
*************** f903646ce6fe965ceb5a5d390d6cfcc4  gcc/te
*** 127193,127199 ****
  192eb2bd0b392ae1910cc848e0324baf  gcc/testsuite/rust/compile/issue-4146.rs
  6559995996d8b61db8b4090629e0c41e  gcc/testsuite/rust/compile/issue-4148.rs
  9a90a5823b2fac9dbc891be63a808346  gcc/testsuite/rust/compile/issue-4155.rs
! f59b1186003745f5f7bdf10fe4a12678  gcc/testsuite/rust/compile/issue-4162.rs
  f84fe23c1ba8b2db0d2401b4fddc498f  gcc/testsuite/rust/compile/issue-4165.rs
  295eeee71b2b9b6c1be4c0ad05c1e862  gcc/testsuite/rust/compile/issue-4168.rs
  be42b59aa26fcea2b3e4b82ba7cd7e5d  gcc/testsuite/rust/compile/issue-4188.rs
--- 127286,127292 ----
  192eb2bd0b392ae1910cc848e0324baf  gcc/testsuite/rust/compile/issue-4146.rs
  6559995996d8b61db8b4090629e0c41e  gcc/testsuite/rust/compile/issue-4148.rs
  9a90a5823b2fac9dbc891be63a808346  gcc/testsuite/rust/compile/issue-4155.rs
! 7131557f59176cb191bf859cdabf540b  gcc/testsuite/rust/compile/issue-4162.rs
  f84fe23c1ba8b2db0d2401b4fddc498f  gcc/testsuite/rust/compile/issue-4165.rs
  295eeee71b2b9b6c1be4c0ad05c1e862  gcc/testsuite/rust/compile/issue-4168.rs
  be42b59aa26fcea2b3e4b82ba7cd7e5d  gcc/testsuite/rust/compile/issue-4188.rs
*************** c6047d6f2d7da439614b6d3e2824f2f0  gcc/te
*** 127209,127221 ****
  229b98c45f842adf4958f0a3abd8e500  gcc/testsuite/rust/compile/issue-557.rs
  f8f243df4bb6d8ad64bad3b19771c416  gcc/testsuite/rust/compile/issue-635-1.rs
  4ebac20282b976fe52f1017d59feaccb  gcc/testsuite/rust/compile/issue-635-2.rs
! c246745d3c0109f707a97eb978d8efc8  gcc/testsuite/rust/compile/issue-850.rs
  d0bc7a1825bed2205c11837dfb95d94d  gcc/testsuite/rust/compile/issue-852.rs
! 08a40a4206d2165f0c4c4eda3b3a3cb4  gcc/testsuite/rust/compile/issue-855.rs
! d8268bb6a3b94251463bc663c7139eaa  gcc/testsuite/rust/compile/issue-867.rs
! f8081650b54fddb51d3b34b840dafcdb  gcc/testsuite/rust/compile/issue-925.rs
! 2e72c1342c0a71dfbf6a02336d997fb0  gcc/testsuite/rust/compile/iterators1.rs
  7a8fc72a18680d5e07b71b6281265bf2  gcc/testsuite/rust/compile/lang-impl.rs
  1d1da8d13d0b65abc363fa272c1bbd7d  gcc/testsuite/rust/compile/let_alt.rs
  83a6908517e92139d7d9cbd6244e4b51  gcc/testsuite/rust/compile/lifetime_name_validation.rs
  9afdcde455c4f144c4385b9d67323cb3  gcc/testsuite/rust/compile/lookup_err1.rs
--- 127302,127315 ----
  229b98c45f842adf4958f0a3abd8e500  gcc/testsuite/rust/compile/issue-557.rs
  f8f243df4bb6d8ad64bad3b19771c416  gcc/testsuite/rust/compile/issue-635-1.rs
  4ebac20282b976fe52f1017d59feaccb  gcc/testsuite/rust/compile/issue-635-2.rs
! f743c061d39c5b1bead5c560f799e57d  gcc/testsuite/rust/compile/issue-850.rs
  d0bc7a1825bed2205c11837dfb95d94d  gcc/testsuite/rust/compile/issue-852.rs
! cdf95b02e58f3a2eaae2e38ae65f43e9  gcc/testsuite/rust/compile/issue-855.rs
! 43d2e346fe518f541bbb8e982d50f562  gcc/testsuite/rust/compile/issue-867.rs
! 4ce73e497684042862678dda8a66f0ab  gcc/testsuite/rust/compile/issue-925.rs
! 775702005bf37229eaeda41e2ed79c4d  gcc/testsuite/rust/compile/iterators1.rs
  7a8fc72a18680d5e07b71b6281265bf2  gcc/testsuite/rust/compile/lang-impl.rs
+ ac3ff850b71bccb465eebb16d5df5f02  gcc/testsuite/rust/compile/lang_feature_gate.rs
  1d1da8d13d0b65abc363fa272c1bbd7d  gcc/testsuite/rust/compile/let_alt.rs
  83a6908517e92139d7d9cbd6244e4b51  gcc/testsuite/rust/compile/lifetime_name_validation.rs
  9afdcde455c4f144c4385b9d67323cb3  gcc/testsuite/rust/compile/lookup_err1.rs
*************** ea1e1c638922390661311de387e3e55f  gcc/te
*** 127239,127258 ****
  794339400ee1f6736e4f7d9b7729b688  gcc/testsuite/rust/compile/macros/builtin/include_str_location_info.rs
  f78a56479ba7bd2a5ff6949cfe7a2d43  gcc/testsuite/rust/compile/macros/builtin/invalid_utf8
  b3311e2d0b414c3607d49989521d8ca0  gcc/testsuite/rust/compile/macros/builtin/not_found.rs
! 9bded92347ec06fc7e68a76dd000a99d  gcc/testsuite/rust/compile/macros/builtin/option_env1.rs
! 703ac4ca4c9b4d0d667f2da2b681660b  gcc/testsuite/rust/compile/macros/builtin/option_env2.rs
! 6b2e8e5e8dae6280e5d88f4bba34af94  gcc/testsuite/rust/compile/macros/builtin/option_env3.rs
  046776b3496ba2789e3f3c8909c6ec4b  gcc/testsuite/rust/compile/macros/builtin/recurse2.rs
  2c1fa92db46d19b9ccd0a1b1896725df  gcc/testsuite/rust/compile/macros/mbe/macro-delim.rs
  2799bbd1db374643b2e0ad41120b9a72  gcc/testsuite/rust/compile/macros/mbe/macro-expand-module.rs
! ab010cddb1155cc9e700ce547b463174  gcc/testsuite/rust/compile/macros/mbe/macro-issue1053-2.rs
  5717e4e8d84c82f5af7bff4dc34a3be9  gcc/testsuite/rust/compile/macros/mbe/macro-issue1053.rs
  1e7ae050ea3d88cb2f91abc4970eee95  gcc/testsuite/rust/compile/macros/mbe/macro-issue1224.rs
  3717f6b791725345c890efbcdfb6a003  gcc/testsuite/rust/compile/macros/mbe/macro-issue1233.rs
! ebe435ba941202b6f3d66250b76957da  gcc/testsuite/rust/compile/macros/mbe/macro-issue1395-2.rs
  216ccff25a69db7fdb37eeee23f44622  gcc/testsuite/rust/compile/macros/mbe/macro-issue1395.rs
  8e0ff67d24d92aa094edb9b476e6d022  gcc/testsuite/rust/compile/macros/mbe/macro-issue1400-2.rs
! bb9aa74a9231fe6ce9d0118a41b274db  gcc/testsuite/rust/compile/macros/mbe/macro-issue1400.rs
  5bc0014ff55ed0e29eb2dbd0ba79d831  gcc/testsuite/rust/compile/macros/mbe/macro-issue2092.rs
  9a2e5218082a4e181e17e624931dffec  gcc/testsuite/rust/compile/macros/mbe/macro-issue2192.rs
  e88caa59ad2b57999b485919fb19789f  gcc/testsuite/rust/compile/macros/mbe/macro-issue2194.rs
--- 127333,127352 ----
  794339400ee1f6736e4f7d9b7729b688  gcc/testsuite/rust/compile/macros/builtin/include_str_location_info.rs
  f78a56479ba7bd2a5ff6949cfe7a2d43  gcc/testsuite/rust/compile/macros/builtin/invalid_utf8
  b3311e2d0b414c3607d49989521d8ca0  gcc/testsuite/rust/compile/macros/builtin/not_found.rs
! 1aed9b40d5084ec2e5897337877cf008  gcc/testsuite/rust/compile/macros/builtin/option_env1.rs
! 849ecb030f093e790ec7231a2747132c  gcc/testsuite/rust/compile/macros/builtin/option_env2.rs
! ac86b1464f2b24c65d95498592cf80ad  gcc/testsuite/rust/compile/macros/builtin/option_env3.rs
  046776b3496ba2789e3f3c8909c6ec4b  gcc/testsuite/rust/compile/macros/builtin/recurse2.rs
  2c1fa92db46d19b9ccd0a1b1896725df  gcc/testsuite/rust/compile/macros/mbe/macro-delim.rs
  2799bbd1db374643b2e0ad41120b9a72  gcc/testsuite/rust/compile/macros/mbe/macro-expand-module.rs
! 134a8df025105f3697b40e97d0b2def1  gcc/testsuite/rust/compile/macros/mbe/macro-issue1053-2.rs
  5717e4e8d84c82f5af7bff4dc34a3be9  gcc/testsuite/rust/compile/macros/mbe/macro-issue1053.rs
  1e7ae050ea3d88cb2f91abc4970eee95  gcc/testsuite/rust/compile/macros/mbe/macro-issue1224.rs
  3717f6b791725345c890efbcdfb6a003  gcc/testsuite/rust/compile/macros/mbe/macro-issue1233.rs
! 59727f9b181ee48161048d017dbfc412  gcc/testsuite/rust/compile/macros/mbe/macro-issue1395-2.rs
  216ccff25a69db7fdb37eeee23f44622  gcc/testsuite/rust/compile/macros/mbe/macro-issue1395.rs
  8e0ff67d24d92aa094edb9b476e6d022  gcc/testsuite/rust/compile/macros/mbe/macro-issue1400-2.rs
! 9d82b50cc714573903043bc539e8d148  gcc/testsuite/rust/compile/macros/mbe/macro-issue1400.rs
  5bc0014ff55ed0e29eb2dbd0ba79d831  gcc/testsuite/rust/compile/macros/mbe/macro-issue2092.rs
  9a2e5218082a4e181e17e624931dffec  gcc/testsuite/rust/compile/macros/mbe/macro-issue2192.rs
  e88caa59ad2b57999b485919fb19789f  gcc/testsuite/rust/compile/macros/mbe/macro-issue2194.rs
*************** df1b8a97ae68cf8e9eac8408a743fa64  gcc/te
*** 127262,127272 ****
  28d4ec252bf0945ced2a862377c87487  gcc/testsuite/rust/compile/macros/mbe/macro-issue2273.rs
  0fb684b40daad17a61596f80938a52bc  gcc/testsuite/rust/compile/macros/mbe/macro-issue2653.rs
  92aabd663e1074ae6360f66e208ee5f4  gcc/testsuite/rust/compile/macros/mbe/macro-issue2983_2984.rs
! 16ac7479e2f9ccc579ccfcc447e432ce  gcc/testsuite/rust/compile/macros/mbe/macro-issue3608.rs
  5f52281927c41a8a2db3f5f874ff92f3  gcc/testsuite/rust/compile/macros/mbe/macro-issue3693.rs
! 43dad45281aa225d0529ba4d322586eb  gcc/testsuite/rust/compile/macros/mbe/macro-issue3708.rs
  135abba02ca556e90f3518bbc2322024  gcc/testsuite/rust/compile/macros/mbe/macro-issue3709-1.rs
! ca2dbfd2a07a0ca57a96128dd762d8d5  gcc/testsuite/rust/compile/macros/mbe/macro-issue3709-2.rs
  ab03a560e812b16e59522dcd2f0dae54  gcc/testsuite/rust/compile/macros/mbe/macro-issue4054.rs
  bc850c4ba48b08af8788867050a975a6  gcc/testsuite/rust/compile/macros/mbe/macro1.rs
  ac95e4402432bd69656d1ee0d52210ab  gcc/testsuite/rust/compile/macros/mbe/macro10.rs
--- 127356,127366 ----
  28d4ec252bf0945ced2a862377c87487  gcc/testsuite/rust/compile/macros/mbe/macro-issue2273.rs
  0fb684b40daad17a61596f80938a52bc  gcc/testsuite/rust/compile/macros/mbe/macro-issue2653.rs
  92aabd663e1074ae6360f66e208ee5f4  gcc/testsuite/rust/compile/macros/mbe/macro-issue2983_2984.rs
! b77d548768f199c01ca8e079258b5481  gcc/testsuite/rust/compile/macros/mbe/macro-issue3608.rs
  5f52281927c41a8a2db3f5f874ff92f3  gcc/testsuite/rust/compile/macros/mbe/macro-issue3693.rs
! 7e84408a82baddd6ba15e8bd51a0be2d  gcc/testsuite/rust/compile/macros/mbe/macro-issue3708.rs
  135abba02ca556e90f3518bbc2322024  gcc/testsuite/rust/compile/macros/mbe/macro-issue3709-1.rs
! a954353d3a5e0389608636abe2a11d8a  gcc/testsuite/rust/compile/macros/mbe/macro-issue3709-2.rs
  ab03a560e812b16e59522dcd2f0dae54  gcc/testsuite/rust/compile/macros/mbe/macro-issue4054.rs
  bc850c4ba48b08af8788867050a975a6  gcc/testsuite/rust/compile/macros/mbe/macro1.rs
  ac95e4402432bd69656d1ee0d52210ab  gcc/testsuite/rust/compile/macros/mbe/macro10.rs
*************** d2da748616e3ef6e8fe631fc5484611b  gcc/te
*** 127280,127307 ****
  5af29d5155e1ad26afae51f6ba61d2c2  gcc/testsuite/rust/compile/macros/mbe/macro18.rs
  16cbb0c310c9d3506217f27730134a71  gcc/testsuite/rust/compile/macros/mbe/macro19.rs
  421a4aafc9c800aacad47cea9aee5769  gcc/testsuite/rust/compile/macros/mbe/macro2.rs
! 6db675ad9bb7b164f26fdbca910336f2  gcc/testsuite/rust/compile/macros/mbe/macro20.rs
  acf23d48c5e8907c94fc9ad9512b9f68  gcc/testsuite/rust/compile/macros/mbe/macro21.rs
  94a6a460c6d078364f4e18d726d45ba7  gcc/testsuite/rust/compile/macros/mbe/macro22.rs
! 319dfedea8a6a7db3236288fa8accdc7  gcc/testsuite/rust/compile/macros/mbe/macro23.rs
  2e2cfd6ad377b694fe8cb9717e6c4656  gcc/testsuite/rust/compile/macros/mbe/macro25.rs
  2ebb4a653eb27be8e54475a3951619f1  gcc/testsuite/rust/compile/macros/mbe/macro26.rs
! d79f52ad12a10855d24dcc32089c3e64  gcc/testsuite/rust/compile/macros/mbe/macro27.rs
! 0f9ccae7ee77a387dc82996745302613  gcc/testsuite/rust/compile/macros/mbe/macro28.rs
! 7b08d09218e23d6cdbc2ac47b05dcdba  gcc/testsuite/rust/compile/macros/mbe/macro29.rs
  123b1e11db692d44dd105aaa54e2d5c5  gcc/testsuite/rust/compile/macros/mbe/macro3.rs
! a04474d7ece12b1df5b48d74ed2ff9c1  gcc/testsuite/rust/compile/macros/mbe/macro30.rs
! 04691c787fc67ff15b07fe5621bbc6e7  gcc/testsuite/rust/compile/macros/mbe/macro31.rs
  5d33d4ac14eb4de136975f9cfff42def  gcc/testsuite/rust/compile/macros/mbe/macro32.rs
! 7ef893755255482c25c2832cc2ecced9  gcc/testsuite/rust/compile/macros/mbe/macro33.rs
  51d54ecf4fdf2c12007c4d39cea41fe5  gcc/testsuite/rust/compile/macros/mbe/macro34.rs
! 0a6fffcc17b9c4b184022244bf899990  gcc/testsuite/rust/compile/macros/mbe/macro35.rs
  a4c0145ebf6e0d1270d4b1b7d00fcf6d  gcc/testsuite/rust/compile/macros/mbe/macro36.rs
! d821668aa6dd7bcd7412de828c3800c8  gcc/testsuite/rust/compile/macros/mbe/macro37.rs
! 959c846fb4dcc18dab98e2f73485e3da  gcc/testsuite/rust/compile/macros/mbe/macro38.rs
! ec75483aa3888f5e6a15380b33895a40  gcc/testsuite/rust/compile/macros/mbe/macro39.rs
  47935881e7414eacc5ee88b55b692cda  gcc/testsuite/rust/compile/macros/mbe/macro4.rs
! 1948e4f81ca6c91d69420cff1f6e72ef  gcc/testsuite/rust/compile/macros/mbe/macro40.rs
  3b11e1cf2d0e9a7d2ad4f22731a32842  gcc/testsuite/rust/compile/macros/mbe/macro41.rs
  41a82268280de492ad11fccca989e3eb  gcc/testsuite/rust/compile/macros/mbe/macro42.rs
  92ae1601ea830fb34d7642fae08c5707  gcc/testsuite/rust/compile/macros/mbe/macro43.rs
--- 127374,127401 ----
  5af29d5155e1ad26afae51f6ba61d2c2  gcc/testsuite/rust/compile/macros/mbe/macro18.rs
  16cbb0c310c9d3506217f27730134a71  gcc/testsuite/rust/compile/macros/mbe/macro19.rs
  421a4aafc9c800aacad47cea9aee5769  gcc/testsuite/rust/compile/macros/mbe/macro2.rs
! b1ca2d4dc7e3514c2884744108dff37f  gcc/testsuite/rust/compile/macros/mbe/macro20.rs
  acf23d48c5e8907c94fc9ad9512b9f68  gcc/testsuite/rust/compile/macros/mbe/macro21.rs
  94a6a460c6d078364f4e18d726d45ba7  gcc/testsuite/rust/compile/macros/mbe/macro22.rs
! ce3f94a272a69844253a21a1de1f3eaa  gcc/testsuite/rust/compile/macros/mbe/macro23.rs
  2e2cfd6ad377b694fe8cb9717e6c4656  gcc/testsuite/rust/compile/macros/mbe/macro25.rs
  2ebb4a653eb27be8e54475a3951619f1  gcc/testsuite/rust/compile/macros/mbe/macro26.rs
! d9775da858ed042a70860de4387046a7  gcc/testsuite/rust/compile/macros/mbe/macro27.rs
! 08a170e543a0b9048801179763104585  gcc/testsuite/rust/compile/macros/mbe/macro28.rs
! 1e0cbd58ee10ebb5e271dccbd0162cbd  gcc/testsuite/rust/compile/macros/mbe/macro29.rs
  123b1e11db692d44dd105aaa54e2d5c5  gcc/testsuite/rust/compile/macros/mbe/macro3.rs
! 32e700adfa3b872f18fb1b4182e09832  gcc/testsuite/rust/compile/macros/mbe/macro30.rs
! d2f98e81c99e146d91d71910f889b180  gcc/testsuite/rust/compile/macros/mbe/macro31.rs
  5d33d4ac14eb4de136975f9cfff42def  gcc/testsuite/rust/compile/macros/mbe/macro32.rs
! 9d98aaf145bad9e51356360fbd5aea28  gcc/testsuite/rust/compile/macros/mbe/macro33.rs
  51d54ecf4fdf2c12007c4d39cea41fe5  gcc/testsuite/rust/compile/macros/mbe/macro34.rs
! 81f05ff30c83fc419542476d1d6b21ab  gcc/testsuite/rust/compile/macros/mbe/macro35.rs
  a4c0145ebf6e0d1270d4b1b7d00fcf6d  gcc/testsuite/rust/compile/macros/mbe/macro36.rs
! 677671b16a8b6650430922aa07f3c901  gcc/testsuite/rust/compile/macros/mbe/macro37.rs
! bed7d02f5b8c819554d6e52ace46b14e  gcc/testsuite/rust/compile/macros/mbe/macro38.rs
! acc4a3db11437bb9d845f769316cccfe  gcc/testsuite/rust/compile/macros/mbe/macro39.rs
  47935881e7414eacc5ee88b55b692cda  gcc/testsuite/rust/compile/macros/mbe/macro4.rs
! 8a919597a71384fcf2df749f0c7e2f49  gcc/testsuite/rust/compile/macros/mbe/macro40.rs
  3b11e1cf2d0e9a7d2ad4f22731a32842  gcc/testsuite/rust/compile/macros/mbe/macro41.rs
  41a82268280de492ad11fccca989e3eb  gcc/testsuite/rust/compile/macros/mbe/macro42.rs
  92ae1601ea830fb34d7642fae08c5707  gcc/testsuite/rust/compile/macros/mbe/macro43.rs
*************** e9910f8de2ae3032c9b77fdc6fa16d0c  gcc/te
*** 127309,127322 ****
  0d4568d3df391c28384dcb6eda25085b  gcc/testsuite/rust/compile/macros/mbe/macro45.rs
  8a9c7aa5f77919dfbd071ece74c1ddad  gcc/testsuite/rust/compile/macros/mbe/macro46.rs
  41407bd52a2f99ff811b674df5d2b718  gcc/testsuite/rust/compile/macros/mbe/macro47.rs
! d2bab26b4f2d917ba51ca239028dc234  gcc/testsuite/rust/compile/macros/mbe/macro48.rs
! fe4af8ff292812b55c264d84b45bce1a  gcc/testsuite/rust/compile/macros/mbe/macro49.rs
  cea6b447d14844469e6a66daab2ef606  gcc/testsuite/rust/compile/macros/mbe/macro5.rs
  b302559ca62aed1d6bc27155de88c055  gcc/testsuite/rust/compile/macros/mbe/macro50.rs
  9bfa519d74b039a71bf5fe0b4cd8326b  gcc/testsuite/rust/compile/macros/mbe/macro51.rs
  78a5aa89cac023bc785c0adb9f089fd0  gcc/testsuite/rust/compile/macros/mbe/macro52.rs
  898735ef79f68dfc70d4168bba56d096  gcc/testsuite/rust/compile/macros/mbe/macro53.rs
! c14be03a4c0ad9d8d9bb574301accefd  gcc/testsuite/rust/compile/macros/mbe/macro54.rs
  ca850e23b6b7c81edc9053233d083b47  gcc/testsuite/rust/compile/macros/mbe/macro55.rs
  d1cad6e9a95fe096eb686831198c622f  gcc/testsuite/rust/compile/macros/mbe/macro56.rs
  ad1d9b6db0e590cab45d2df94e6b4774  gcc/testsuite/rust/compile/macros/mbe/macro57.rs
--- 127403,127416 ----
  0d4568d3df391c28384dcb6eda25085b  gcc/testsuite/rust/compile/macros/mbe/macro45.rs
  8a9c7aa5f77919dfbd071ece74c1ddad  gcc/testsuite/rust/compile/macros/mbe/macro46.rs
  41407bd52a2f99ff811b674df5d2b718  gcc/testsuite/rust/compile/macros/mbe/macro47.rs
! 725fe9642ceed7374e64d27a583ab43a  gcc/testsuite/rust/compile/macros/mbe/macro48.rs
! 0066fe7fe6e3661e2efc07c0d9bc5b1f  gcc/testsuite/rust/compile/macros/mbe/macro49.rs
  cea6b447d14844469e6a66daab2ef606  gcc/testsuite/rust/compile/macros/mbe/macro5.rs
  b302559ca62aed1d6bc27155de88c055  gcc/testsuite/rust/compile/macros/mbe/macro50.rs
  9bfa519d74b039a71bf5fe0b4cd8326b  gcc/testsuite/rust/compile/macros/mbe/macro51.rs
  78a5aa89cac023bc785c0adb9f089fd0  gcc/testsuite/rust/compile/macros/mbe/macro52.rs
  898735ef79f68dfc70d4168bba56d096  gcc/testsuite/rust/compile/macros/mbe/macro53.rs
! 4f0b536a7ec6c7e5f074989b2c6f1612  gcc/testsuite/rust/compile/macros/mbe/macro54.rs
  ca850e23b6b7c81edc9053233d083b47  gcc/testsuite/rust/compile/macros/mbe/macro55.rs
  d1cad6e9a95fe096eb686831198c622f  gcc/testsuite/rust/compile/macros/mbe/macro56.rs
  ad1d9b6db0e590cab45d2df94e6b4774  gcc/testsuite/rust/compile/macros/mbe/macro57.rs
*************** e423cd71d83e2ff468da6055234aac58  gcc/te
*** 127395,127401 ****
  e7e40a55fdf47f28c89ad061c6470378  gcc/testsuite/rust/compile/mod_missing_middle/missing_middle/sub/mod.rs
  8d7d946e590c2876825aeb5b33acbe76  gcc/testsuite/rust/compile/multi_reference_type.rs
  72e34ff54157685843c81b89ae3be12b  gcc/testsuite/rust/compile/multiline-string.rs
! 251f15e194610309989c8ead03543194  gcc/testsuite/rust/compile/multiple_bindings1.rs
  f31b2774759388ed35dc4269f901b27b  gcc/testsuite/rust/compile/multiple_bindings2.rs
  545146ab7461b26f54326e81d45da595  gcc/testsuite/rust/compile/mutability_checks1.rs
  5347e97f6abe755953017f56901ed5cd  gcc/testsuite/rust/compile/name_resolution1.rs
--- 127489,127495 ----
  e7e40a55fdf47f28c89ad061c6470378  gcc/testsuite/rust/compile/mod_missing_middle/missing_middle/sub/mod.rs
  8d7d946e590c2876825aeb5b33acbe76  gcc/testsuite/rust/compile/multi_reference_type.rs
  72e34ff54157685843c81b89ae3be12b  gcc/testsuite/rust/compile/multiline-string.rs
! a66470a529e528ac46e3d07d1a5f17e6  gcc/testsuite/rust/compile/multiple_bindings1.rs
  f31b2774759388ed35dc4269f901b27b  gcc/testsuite/rust/compile/multiple_bindings2.rs
  545146ab7461b26f54326e81d45da595  gcc/testsuite/rust/compile/mutability_checks1.rs
  5347e97f6abe755953017f56901ed5cd  gcc/testsuite/rust/compile/name_resolution1.rs
*************** d1aa80f28f441526968cec28fc11de80  gcc/te
*** 127409,127422 ****
  a0aef1e7093ca4dfce49de36d2060b44  gcc/testsuite/rust/compile/name_resolution17.rs
  fc649a5b1f764ce93abfd30ddf4a2d9f  gcc/testsuite/rust/compile/name_resolution18.rs
  70d45e5882b11c1911384ffceb9b85aa  gcc/testsuite/rust/compile/name_resolution19.rs
! c71704128738d4623f4b272ee6c7b29f  gcc/testsuite/rust/compile/name_resolution2.rs
  f24c77e37d12a39151522184ec9c2535  gcc/testsuite/rust/compile/name_resolution20.rs
  e3378f39620c55df82b0e48b399140e3  gcc/testsuite/rust/compile/name_resolution22.rs
  a9fd512c90e6a51f37c1b610f86743a9  gcc/testsuite/rust/compile/name_resolution23.rs
  eb0042f3563840da7ab1442f5de0b28b  gcc/testsuite/rust/compile/name_resolution24.rs
  2119574871ad31844d95df71c6c5340a  gcc/testsuite/rust/compile/name_resolution25.rs
  4451e4aed7aa23af2e35ef923e109c43  gcc/testsuite/rust/compile/name_resolution3.rs
! e29dcb718d3b9c163b663fa28126a6a8  gcc/testsuite/rust/compile/name_resolution4.rs
  a28faf8494eeae9637209b6141cf803a  gcc/testsuite/rust/compile/name_resolution5.rs
  5abd468cbdeb6307385cc9b4af7f7d12  gcc/testsuite/rust/compile/name_resolution6.rs
  d65f39df14ef5e966e39a8cbcba42198  gcc/testsuite/rust/compile/name_resolution7.rs
--- 127503,127516 ----
  a0aef1e7093ca4dfce49de36d2060b44  gcc/testsuite/rust/compile/name_resolution17.rs
  fc649a5b1f764ce93abfd30ddf4a2d9f  gcc/testsuite/rust/compile/name_resolution18.rs
  70d45e5882b11c1911384ffceb9b85aa  gcc/testsuite/rust/compile/name_resolution19.rs
! b50764846f13bbd910ec929c1aa29e50  gcc/testsuite/rust/compile/name_resolution2.rs
  f24c77e37d12a39151522184ec9c2535  gcc/testsuite/rust/compile/name_resolution20.rs
  e3378f39620c55df82b0e48b399140e3  gcc/testsuite/rust/compile/name_resolution22.rs
  a9fd512c90e6a51f37c1b610f86743a9  gcc/testsuite/rust/compile/name_resolution23.rs
  eb0042f3563840da7ab1442f5de0b28b  gcc/testsuite/rust/compile/name_resolution24.rs
  2119574871ad31844d95df71c6c5340a  gcc/testsuite/rust/compile/name_resolution25.rs
  4451e4aed7aa23af2e35ef923e109c43  gcc/testsuite/rust/compile/name_resolution3.rs
! f96972d0205a1c0dbb4d637866eabb75  gcc/testsuite/rust/compile/name_resolution4.rs
  a28faf8494eeae9637209b6141cf803a  gcc/testsuite/rust/compile/name_resolution5.rs
  5abd468cbdeb6307385cc9b4af7f7d12  gcc/testsuite/rust/compile/name_resolution6.rs
  d65f39df14ef5e966e39a8cbcba42198  gcc/testsuite/rust/compile/name_resolution7.rs
*************** d65f39df14ef5e966e39a8cbcba42198  gcc/te
*** 127424,127430 ****
  d58e76df4ab13357ec81802a54ebd973  gcc/testsuite/rust/compile/name_resolution9.rs
  819e3c226231807099efa2f38b27eff3  gcc/testsuite/rust/compile/negative_impls.rs
  fda9dc3567123e4f04a16ea5f5b364bf  gcc/testsuite/rust/compile/negative_impls_2.rs
! a2a2d0395b94225c5109187761c0e213  gcc/testsuite/rust/compile/nested_generic.rs
  8d3bdeb4554325413f034d9caa5d45c4  gcc/testsuite/rust/compile/nested_macro_definition.rs
  5cbc00140bae9d06617f7e444baaf508  gcc/testsuite/rust/compile/nested_macro_use1.rs
  da671ca390cc71e31d1a13e83175ed07  gcc/testsuite/rust/compile/nested_macro_use2.rs
--- 127518,127524 ----
  d58e76df4ab13357ec81802a54ebd973  gcc/testsuite/rust/compile/name_resolution9.rs
  819e3c226231807099efa2f38b27eff3  gcc/testsuite/rust/compile/negative_impls.rs
  fda9dc3567123e4f04a16ea5f5b364bf  gcc/testsuite/rust/compile/negative_impls_2.rs
! 73acb28a189596c239409b93cbd5d153  gcc/testsuite/rust/compile/nested_generic.rs
  8d3bdeb4554325413f034d9caa5d45c4  gcc/testsuite/rust/compile/nested_macro_definition.rs
  5cbc00140bae9d06617f7e444baaf508  gcc/testsuite/rust/compile/nested_macro_use1.rs
  da671ca390cc71e31d1a13e83175ed07  gcc/testsuite/rust/compile/nested_macro_use2.rs
*************** cd02e5ae651b681a19fcaf8376afcbf5  gcc/te
*** 127438,127462 ****
  44807d1ba47e379ce9115ce45743697e  gcc/testsuite/rust/compile/not_raw_ref_op.rs
  8b92c67b77b0a8b9220595331bfd0354  gcc/testsuite/rust/compile/offset_of1.rs
  a10eb4517b48647e195976dbe08ce7d3  gcc/testsuite/rust/compile/offset_of2.rs
! 6030c60f7b74c803068d451cb9ced7e5  gcc/testsuite/rust/compile/parse_associated_type_as_generic_arg.rs
! 090d2f2bf747a624502f3ee033467544  gcc/testsuite/rust/compile/parse_associated_type_as_generic_arg2.rs
! 938014f84c9261ed6b113bc617d40919  gcc/testsuite/rust/compile/parse_associated_type_as_generic_arg3.rs
! 5a6a2e1d5328334fea920eeb7ce95a89  gcc/testsuite/rust/compile/parse_closure_bind.rs
! 1bd2c1a4dbfa8382bcaf5f76daa62080  gcc/testsuite/rust/compile/parse_complex_generic_application.rs
! 544d5b140c46a68a1b223a58fed49c32  gcc/testsuite/rust/compile/parse_complex_generic_application2.rs
  ac7d528f48d6a84b3e60f20a514d6cf7  gcc/testsuite/rust/compile/parse_empty_tuple_pattern.rs
  40079a8e05b34d028238d8927bd7d372  gcc/testsuite/rust/compile/parse_float_dot.rs
  7b85f8417fcc86423cfe4746076018be  gcc/testsuite/rust/compile/parse_generic_path_expr.rs
  37c7aff5159b5715fc8cd7a7745826e1  gcc/testsuite/rust/compile/parse_global_path_generic.rs
! 211a4d8d85277f4b17c185612ae9d99e  gcc/testsuite/rust/compile/parse_invalid_specialization.rs
  fa1b080c05380ac0134d408be302d780  gcc/testsuite/rust/compile/parse_item_default_macro.rs
  7db46b087a9339ddd439310cfee25358  gcc/testsuite/rust/compile/parse_pub_unit_type.rs
  114e68344ffd8da36992cebba2f47a5f  gcc/testsuite/rust/compile/parse_range.rs
! 02ce01b76aa86e37e9477312f31c07c0  gcc/testsuite/rust/compile/parse_simple_path_fail_1.rs
! 0e0f8831d04267d4a04c218e34dd1abe  gcc/testsuite/rust/compile/parse_simple_path_fail_2.rs
  9d33d486f2d0ec95adbc86fda39b9f62  gcc/testsuite/rust/compile/parse_specialization.rs
  1278a63dcebf6ac473bf094b98ea0db2  gcc/testsuite/rust/compile/parse_variadic_function.rs
! 334e926cb04db5e55dd49c65ded14065  gcc/testsuite/rust/compile/path_as_generic_arg.rs
  047765489bd97f90336445add2055145  gcc/testsuite/rust/compile/pattern-or.rs
  d79a8f788f3a9207ed678cbc58ca5c82  gcc/testsuite/rust/compile/pattern-struct.rs
  423d1017eea48611d7e71642d906a3d6  gcc/testsuite/rust/compile/pattern_variadic.rs
--- 127532,127556 ----
  44807d1ba47e379ce9115ce45743697e  gcc/testsuite/rust/compile/not_raw_ref_op.rs
  8b92c67b77b0a8b9220595331bfd0354  gcc/testsuite/rust/compile/offset_of1.rs
  a10eb4517b48647e195976dbe08ce7d3  gcc/testsuite/rust/compile/offset_of2.rs
! f9e5077ca4388add458aa1ed7334e634  gcc/testsuite/rust/compile/parse_associated_type_as_generic_arg.rs
! 938a28b8ea65e0b3a8fee8f4fae84c4d  gcc/testsuite/rust/compile/parse_associated_type_as_generic_arg2.rs
! 0a258b1b2c2f35bd4df545e130449ac7  gcc/testsuite/rust/compile/parse_associated_type_as_generic_arg3.rs
! 970cdfb566edd0cdbcf8b8f97cb9cf1e  gcc/testsuite/rust/compile/parse_closure_bind.rs
! 08b49981dd7469c5ab4c7e8f4ebda364  gcc/testsuite/rust/compile/parse_complex_generic_application.rs
! b40b3d8ed7d9fc7c492cc49d68b8759e  gcc/testsuite/rust/compile/parse_complex_generic_application2.rs
  ac7d528f48d6a84b3e60f20a514d6cf7  gcc/testsuite/rust/compile/parse_empty_tuple_pattern.rs
  40079a8e05b34d028238d8927bd7d372  gcc/testsuite/rust/compile/parse_float_dot.rs
  7b85f8417fcc86423cfe4746076018be  gcc/testsuite/rust/compile/parse_generic_path_expr.rs
  37c7aff5159b5715fc8cd7a7745826e1  gcc/testsuite/rust/compile/parse_global_path_generic.rs
! 6e2f342ff10c837c71ccd9977a2d7e98  gcc/testsuite/rust/compile/parse_invalid_specialization.rs
  fa1b080c05380ac0134d408be302d780  gcc/testsuite/rust/compile/parse_item_default_macro.rs
  7db46b087a9339ddd439310cfee25358  gcc/testsuite/rust/compile/parse_pub_unit_type.rs
  114e68344ffd8da36992cebba2f47a5f  gcc/testsuite/rust/compile/parse_range.rs
! 9385674eed552ec32d320c657de0a700  gcc/testsuite/rust/compile/parse_simple_path_fail_1.rs
! 02876c80eef3286f34675c7753261443  gcc/testsuite/rust/compile/parse_simple_path_fail_2.rs
  9d33d486f2d0ec95adbc86fda39b9f62  gcc/testsuite/rust/compile/parse_specialization.rs
  1278a63dcebf6ac473bf094b98ea0db2  gcc/testsuite/rust/compile/parse_variadic_function.rs
! b0f727a1ffd77601ebcce027eb8a993a  gcc/testsuite/rust/compile/path_as_generic_arg.rs
  047765489bd97f90336445add2055145  gcc/testsuite/rust/compile/pattern-or.rs
  d79a8f788f3a9207ed678cbc58ca5c82  gcc/testsuite/rust/compile/pattern-struct.rs
  423d1017eea48611d7e71642d906a3d6  gcc/testsuite/rust/compile/pattern_variadic.rs
*************** d79a8f788f3a9207ed678cbc58ca5c82  gcc/te
*** 127465,127473 ****
  daea204ee4a93b0de9f17381a08f8137  gcc/testsuite/rust/compile/privacy1.rs
  4da8baa4cd281d900c7d76ef49e2094f  gcc/testsuite/rust/compile/privacy2.rs
  eba63e34bf4a3d4997147475917fcb15  gcc/testsuite/rust/compile/privacy3.rs
! fe3b879720289aae0e7b44856a4354c7  gcc/testsuite/rust/compile/privacy4.rs
  c0843b42d79bf0c882db183800c4e8ec  gcc/testsuite/rust/compile/privacy5.rs
! d70eb64b7474083aaf938052cf551ce2  gcc/testsuite/rust/compile/privacy6.rs
  b1b0e52c874721c0a325366a7bc0642e  gcc/testsuite/rust/compile/privacy7.rs
  9b7219e724eac9e35cd9d2fd18e153ba  gcc/testsuite/rust/compile/privacy8.rs
  f6b2d1b1b35b33dcdddd3bb19e17981a  gcc/testsuite/rust/compile/privacy9.rs
--- 127559,127567 ----
  daea204ee4a93b0de9f17381a08f8137  gcc/testsuite/rust/compile/privacy1.rs
  4da8baa4cd281d900c7d76ef49e2094f  gcc/testsuite/rust/compile/privacy2.rs
  eba63e34bf4a3d4997147475917fcb15  gcc/testsuite/rust/compile/privacy3.rs
! 4ac0cd83475482d1bca9113c9e3080b2  gcc/testsuite/rust/compile/privacy4.rs
  c0843b42d79bf0c882db183800c4e8ec  gcc/testsuite/rust/compile/privacy5.rs
! 3fc9f79471aa0b5eb81d2b87e93e8a08  gcc/testsuite/rust/compile/privacy6.rs
  b1b0e52c874721c0a325366a7bc0642e  gcc/testsuite/rust/compile/privacy7.rs
  9b7219e724eac9e35cd9d2fd18e153ba  gcc/testsuite/rust/compile/privacy8.rs
  f6b2d1b1b35b33dcdddd3bb19e17981a  gcc/testsuite/rust/compile/privacy9.rs
*************** fd275066587b6af6683b95664515141e  gcc/te
*** 127476,127488 ****
  54a93cbd04b5c2939e425c1c94314bfb  gcc/testsuite/rust/compile/pub_restricted_2.rs
  6bd1b5dbdfe5f30de51ab30015c5be78  gcc/testsuite/rust/compile/pub_restricted_3.rs
  8556679d5fb3f07093c6b5c029196057  gcc/testsuite/rust/compile/range_from_expr_for_loop.rs
! b60dce123d1d0e89fd2184843fe60b35  gcc/testsuite/rust/compile/raw-byte-string-loc.rs
! 5c2391c3bb0530eac8ee26b714c56bca  gcc/testsuite/rust/compile/raw-string-loc.rs
  2489fea6f272449ac3fb59684962b103  gcc/testsuite/rust/compile/raw_identifiers_bad_keywords.rs
  b9d738cbe9432ef9912a084d6d0017b5  gcc/testsuite/rust/compile/raw_identifiers_underscore.rs
  6dc7c38304f2a19efd74f806c61bc355  gcc/testsuite/rust/compile/raw_ref_op.rs
  47c863d37f17d57952d342e1009884ed  gcc/testsuite/rust/compile/raw_ref_op_feature_gate.rs
! 358abaf1a56f42cfb3478c8e7e1d4cf0  gcc/testsuite/rust/compile/raw_ref_op_invalid.rs
  18866bec0bccb2a4700637c28efbeaac  gcc/testsuite/rust/compile/rawbytestring.rs
  96a985111dc0b6fa6e5da165c62e4fce  gcc/testsuite/rust/compile/redef_error1.rs
  7899f4f909787582c9830959bfad03aa  gcc/testsuite/rust/compile/redef_error2.rs
--- 127570,127582 ----
  54a93cbd04b5c2939e425c1c94314bfb  gcc/testsuite/rust/compile/pub_restricted_2.rs
  6bd1b5dbdfe5f30de51ab30015c5be78  gcc/testsuite/rust/compile/pub_restricted_3.rs
  8556679d5fb3f07093c6b5c029196057  gcc/testsuite/rust/compile/range_from_expr_for_loop.rs
! 8f47308ec993c0b3c4d6ac061e0c9117  gcc/testsuite/rust/compile/raw-byte-string-loc.rs
! ab589ae7679373b5225bdfa28a2f81bc  gcc/testsuite/rust/compile/raw-string-loc.rs
  2489fea6f272449ac3fb59684962b103  gcc/testsuite/rust/compile/raw_identifiers_bad_keywords.rs
  b9d738cbe9432ef9912a084d6d0017b5  gcc/testsuite/rust/compile/raw_identifiers_underscore.rs
  6dc7c38304f2a19efd74f806c61bc355  gcc/testsuite/rust/compile/raw_ref_op.rs
  47c863d37f17d57952d342e1009884ed  gcc/testsuite/rust/compile/raw_ref_op_feature_gate.rs
! 9ba508c2d07741b696e4855db2a9da60  gcc/testsuite/rust/compile/raw_ref_op_invalid.rs
  18866bec0bccb2a4700637c28efbeaac  gcc/testsuite/rust/compile/rawbytestring.rs
  96a985111dc0b6fa6e5da165c62e4fce  gcc/testsuite/rust/compile/redef_error1.rs
  7899f4f909787582c9830959bfad03aa  gcc/testsuite/rust/compile/redef_error2.rs
*************** c864259519a663ecdb9ce794228363de  gcc/te
*** 127503,127521 ****
  be4c338c6c29710796489914493d8665  gcc/testsuite/rust/compile/self-in-impl.rs
  2ef2e5399d947093c2b82f36e833a5bd  gcc/testsuite/rust/compile/self-path1.rs
  716d25499361417164ec827f9ebb0ac6  gcc/testsuite/rust/compile/self-path2.rs
! ce60d6c14138123e0c27ee626b14c1b2  gcc/testsuite/rust/compile/self_const_ptr.rs
  58ba7dc4246e62f932699bc5160f9c39  gcc/testsuite/rust/compile/self_import_namespace.rs
! 345a25d5121fd2dbda8b949098005f58  gcc/testsuite/rust/compile/self_mut_ptr.rs
! 08fba70febee1d69b9e95726a05aaed4  gcc/testsuite/rust/compile/self_ptr.rs
  2aefabea5e9340b0dc31cfb0816e5d24  gcc/testsuite/rust/compile/shadow1.rs
! 078f0a4edb2fd7624f70f3c53250431f  gcc/testsuite/rust/compile/silly-order-bug.rs
  26a750cf312f91f5f35658b8da415d03  gcc/testsuite/rust/compile/sized-stub.rs
! b9677fdb68fdeadc3f105590b7fe34c9  gcc/testsuite/rust/compile/sizeof-stray-infer-var-bug.rs
  8db81b3f57fdb3aaac697db6f3cd5442  gcc/testsuite/rust/compile/slice_rest_pattern.rs
  3d9403599fa65b5b6f55bf030e5f937c  gcc/testsuite/rust/compile/slicepattern-size-mismatch.rs
  c76cd68ebcf9bb89b67b55d54a10cee5  gcc/testsuite/rust/compile/specify-crate-name.rs
! f0310c328b1fddc85d5bebedce0cf769  gcc/testsuite/rust/compile/static_var1.rs
! 4d03e64527f8bdfbe648b8d3d0d8a3e8  gcc/testsuite/rust/compile/stmt_with_block_dot.rs
  570a954443a78c2e050e56451d9f74a7  gcc/testsuite/rust/compile/stmt_with_block_err1.rs
  cb2ba2189235c85921385195ef70db47  gcc/testsuite/rust/compile/stringify.rs
  0638f6f2fdd60dec37f5d96bc57237bd  gcc/testsuite/rust/compile/struct-expr-parse.rs
--- 127597,127615 ----
  be4c338c6c29710796489914493d8665  gcc/testsuite/rust/compile/self-in-impl.rs
  2ef2e5399d947093c2b82f36e833a5bd  gcc/testsuite/rust/compile/self-path1.rs
  716d25499361417164ec827f9ebb0ac6  gcc/testsuite/rust/compile/self-path2.rs
! 5fa46861655655eb9e658f7c7ff2acb0  gcc/testsuite/rust/compile/self_const_ptr.rs
  58ba7dc4246e62f932699bc5160f9c39  gcc/testsuite/rust/compile/self_import_namespace.rs
! 646ee5dab501a158cd6266cc3c946dcb  gcc/testsuite/rust/compile/self_mut_ptr.rs
! 8d255b38a76cbc4b0ed622cc41516e70  gcc/testsuite/rust/compile/self_ptr.rs
  2aefabea5e9340b0dc31cfb0816e5d24  gcc/testsuite/rust/compile/shadow1.rs
! fc4bfff7da9e04a84429fa51984b3b22  gcc/testsuite/rust/compile/silly-order-bug.rs
  26a750cf312f91f5f35658b8da415d03  gcc/testsuite/rust/compile/sized-stub.rs
! 2957300fba12fbef39b203d681568163  gcc/testsuite/rust/compile/sizeof-stray-infer-var-bug.rs
  8db81b3f57fdb3aaac697db6f3cd5442  gcc/testsuite/rust/compile/slice_rest_pattern.rs
  3d9403599fa65b5b6f55bf030e5f937c  gcc/testsuite/rust/compile/slicepattern-size-mismatch.rs
  c76cd68ebcf9bb89b67b55d54a10cee5  gcc/testsuite/rust/compile/specify-crate-name.rs
! 2ed8ae14e031fb426a127f8fd5819910  gcc/testsuite/rust/compile/static_var1.rs
! c47470fcadcdaa19ce2fb18db595b4e9  gcc/testsuite/rust/compile/stmt_with_block_dot.rs
  570a954443a78c2e050e56451d9f74a7  gcc/testsuite/rust/compile/stmt_with_block_err1.rs
  cb2ba2189235c85921385195ef70db47  gcc/testsuite/rust/compile/stringify.rs
  0638f6f2fdd60dec37f5d96bc57237bd  gcc/testsuite/rust/compile/struct-expr-parse.rs
*************** aad9e5362beb5b73a16d9c72d51f55fe  gcc/te
*** 127525,127531 ****
  b8008bbbb6a2e41bf794f9f5d16971a2  gcc/testsuite/rust/compile/struct_init1.rs
  00e347708a104c565e0d029fd61f7e9d  gcc/testsuite/rust/compile/struct_pack1.rs
  c2a21c19762e48d9fe8a2144950b1b4f  gcc/testsuite/rust/compile/struct_pack2.rs
! 52fdac0499cadcbaff603b7c0e77114d  gcc/testsuite/rust/compile/structural-eq-peq.rs
  b367b9437770c67d8d9059972bc1a3e8  gcc/testsuite/rust/compile/syntax-only.rs
  156d3a4eb60d669211c1c31f6828f576  gcc/testsuite/rust/compile/torture/all_doc_comment_line_blocks.rs
  fdf890b2027e28e726e5201eddef6b4f  gcc/testsuite/rust/compile/torture/all_doc_comment_line_blocks_crlf.rs
--- 127619,127625 ----
  b8008bbbb6a2e41bf794f9f5d16971a2  gcc/testsuite/rust/compile/struct_init1.rs
  00e347708a104c565e0d029fd61f7e9d  gcc/testsuite/rust/compile/struct_pack1.rs
  c2a21c19762e48d9fe8a2144950b1b4f  gcc/testsuite/rust/compile/struct_pack2.rs
! b43cef7a71615c9da4ee1b0bf1b98d56  gcc/testsuite/rust/compile/structural-eq-peq.rs
  b367b9437770c67d8d9059972bc1a3e8  gcc/testsuite/rust/compile/syntax-only.rs
  156d3a4eb60d669211c1c31f6828f576  gcc/testsuite/rust/compile/torture/all_doc_comment_line_blocks.rs
  fdf890b2027e28e726e5201eddef6b4f  gcc/testsuite/rust/compile/torture/all_doc_comment_line_blocks_crlf.rs
*************** d5d1af9be28084065ca5bb0e0d583b32  gcc/te
*** 127546,127552 ****
  f6ef7fea1ef5fc900269037059a043f9  gcc/testsuite/rust/compile/torture/arrays_index2.rs
  b8c2c7b3c891bc3a263e763f2163c358  gcc/testsuite/rust/compile/torture/arrays_index3.rs
  92723e1529e3f0e7c0f3f8c66635a91f  gcc/testsuite/rust/compile/torture/as_bool_char.rs
! ea7b41e80e0f70a838cd7436f2141d07  gcc/testsuite/rust/compile/torture/associated_types1.rs
  0a97b462b38130103f86ca35421a3c6a  gcc/testsuite/rust/compile/torture/autoderef1.rs
  167fe74868ba7bded3851a9357f3b2dc  gcc/testsuite/rust/compile/torture/block_expr1.rs
  a065c1c958a9fdc1a842ebdb363ccb6c  gcc/testsuite/rust/compile/torture/block_expr2.rs
--- 127640,127646 ----
  f6ef7fea1ef5fc900269037059a043f9  gcc/testsuite/rust/compile/torture/arrays_index2.rs
  b8c2c7b3c891bc3a263e763f2163c358  gcc/testsuite/rust/compile/torture/arrays_index3.rs
  92723e1529e3f0e7c0f3f8c66635a91f  gcc/testsuite/rust/compile/torture/as_bool_char.rs
! 107278ea1784128f1f46bbc137fa33ce  gcc/testsuite/rust/compile/torture/associated_types1.rs
  0a97b462b38130103f86ca35421a3c6a  gcc/testsuite/rust/compile/torture/autoderef1.rs
  167fe74868ba7bded3851a9357f3b2dc  gcc/testsuite/rust/compile/torture/block_expr1.rs
  a065c1c958a9fdc1a842ebdb363ccb6c  gcc/testsuite/rust/compile/torture/block_expr2.rs
*************** d1a4004c5a6ded0d144af392d0cd79ed  gcc/te
*** 127596,127642 ****
  d77e665974d88bd08a4471b05f5bff0a  gcc/testsuite/rust/compile/torture/forward_decl_3-unsafe.rs
  857a877b0ff7ff3ac0a864d41f3dadb7  gcc/testsuite/rust/compile/torture/forward_decl_3.rs
  b3b1f6a81cb3ee39ad4729bfe15303db  gcc/testsuite/rust/compile/torture/forward_decl_4.rs
! 2c1ad94a05348c22ca6b9ae58142a32d  gcc/testsuite/rust/compile/torture/forward_decl_5.rs
  2a14ed73eb56715fac47961c7ad1d224  gcc/testsuite/rust/compile/torture/func1.rs
  459ebd43954a1ec8ff304444907f2f6a  gcc/testsuite/rust/compile/torture/func2.rs
  d1c0aa9304b5787c6af6b4adee81e1bf  gcc/testsuite/rust/compile/torture/function_reference1.rs
  7bda593163cfcc89e3e33a263bf1fea0  gcc/testsuite/rust/compile/torture/function_reference2.rs
  6dbc5c586e725ca1a1cc60af5f5be2f1  gcc/testsuite/rust/compile/torture/function_reference3.rs
  317e79768c71ad90371a40260f219cc9  gcc/testsuite/rust/compile/torture/function_reference4.rs
! 3b97df70ef74272be2a2605b52b4b5dd  gcc/testsuite/rust/compile/torture/generics1.rs
! 5ff2340496c5b48f548eb513d5b7488e  gcc/testsuite/rust/compile/torture/generics10.rs
! b2697cc5c9f4457b27d4c264e8407fc8  gcc/testsuite/rust/compile/torture/generics11.rs
! 05d52a3a14b8316ba830e1ea730a3295  gcc/testsuite/rust/compile/torture/generics12.rs
! db851b2fea371e2916ed5435d3bc7f80  gcc/testsuite/rust/compile/torture/generics13.rs
! 0f930b04d60b6ac62e2deefc8e7e3ac2  gcc/testsuite/rust/compile/torture/generics14.rs
! 6441550ec69066b45ae93335066e9593  gcc/testsuite/rust/compile/torture/generics15.rs
! 9c0802697ebed4a4d7e4e9172637e275  gcc/testsuite/rust/compile/torture/generics16.rs
! 2214b3aa630479332cdbbb106394054d  gcc/testsuite/rust/compile/torture/generics17.rs
! d9d7d8c489196c9a6c93567d0edd8ce0  gcc/testsuite/rust/compile/torture/generics18.rs
! 47151d7ec62f6bfb2de4e8ea5bfd9442  gcc/testsuite/rust/compile/torture/generics19.rs
! 9c90b4767a1b8ed98fd538e870c5b91c  gcc/testsuite/rust/compile/torture/generics2.rs
! 70cc9131186fad582a3be7fb4a33fc09  gcc/testsuite/rust/compile/torture/generics20.rs
! d1019e1ecc6b6bb4492444918e309ac6  gcc/testsuite/rust/compile/torture/generics21.rs
! 9c2604f90bf58fa95df39fad20cda120  gcc/testsuite/rust/compile/torture/generics22.rs
! 6975f6b51450a7b4085785ab2e9cef58  gcc/testsuite/rust/compile/torture/generics23.rs
! 4ddae093d8041c88576cb979d0f275d5  gcc/testsuite/rust/compile/torture/generics24.rs
! 199f3b2a701734a9a1a5110a68c68725  gcc/testsuite/rust/compile/torture/generics25.rs
! 5aa5968e934404978f5864bc1db0b051  gcc/testsuite/rust/compile/torture/generics26.rs
! a68de14d9507aaeceb6657f4512e3638  gcc/testsuite/rust/compile/torture/generics27.rs
! e993964b19f3868f0e783d56b28cb59c  gcc/testsuite/rust/compile/torture/generics28.rs
! c297a0f1607e6d59bef590c037e85fce  gcc/testsuite/rust/compile/torture/generics29.rs
! 133ba33a6bb38cd49660c3969da8c5b1  gcc/testsuite/rust/compile/torture/generics3.rs
! e927c0533d7d3dae91b895a4f4c546c6  gcc/testsuite/rust/compile/torture/generics30.rs
! 182632540dd7df72ff8b5c42353f40c0  gcc/testsuite/rust/compile/torture/generics31.rs
! 1f9762fbcf921d6b0f6ca48d605a477a  gcc/testsuite/rust/compile/torture/generics32.rs
! 9a77e5d1b23834a3c0d1b4e8ccc935c9  gcc/testsuite/rust/compile/torture/generics4.rs
! 483296edb928d44c7fe068c809c63f6a  gcc/testsuite/rust/compile/torture/generics5.rs
! 406b86ae2686701e4025a6edc7d38367  gcc/testsuite/rust/compile/torture/generics6.rs
! 0c16fbff0f5be8e1e807134374491f7b  gcc/testsuite/rust/compile/torture/generics7.rs
! 061722f813044a39c5e6add379e2361d  gcc/testsuite/rust/compile/torture/generics8.rs
! 6fde910669228d528dbac1a7729f62d0  gcc/testsuite/rust/compile/torture/generics9.rs
  395a45c2c8dc61003c5bf77fbf78f5b1  gcc/testsuite/rust/compile/torture/grouped_expr_function.rs
! a1cb1c1a5db93b8b6b3577994b51c587  gcc/testsuite/rust/compile/torture/identifier-missing-impl-1.rs
  5d24a6ca2068f590853e671c30a9a97a  gcc/testsuite/rust/compile/torture/if.rs
  79a1b73fa046294586bc0a47b730211e  gcc/testsuite/rust/compile/torture/if_elif.rs
  e419012e6cd9fb814f13b07d15eb893d  gcc/testsuite/rust/compile/torture/if_elif_else_expr1.rs
--- 127690,127736 ----
  d77e665974d88bd08a4471b05f5bff0a  gcc/testsuite/rust/compile/torture/forward_decl_3-unsafe.rs
  857a877b0ff7ff3ac0a864d41f3dadb7  gcc/testsuite/rust/compile/torture/forward_decl_3.rs
  b3b1f6a81cb3ee39ad4729bfe15303db  gcc/testsuite/rust/compile/torture/forward_decl_4.rs
! 2d4dfed280824d4f1743d3c4a75b9343  gcc/testsuite/rust/compile/torture/forward_decl_5.rs
  2a14ed73eb56715fac47961c7ad1d224  gcc/testsuite/rust/compile/torture/func1.rs
  459ebd43954a1ec8ff304444907f2f6a  gcc/testsuite/rust/compile/torture/func2.rs
  d1c0aa9304b5787c6af6b4adee81e1bf  gcc/testsuite/rust/compile/torture/function_reference1.rs
  7bda593163cfcc89e3e33a263bf1fea0  gcc/testsuite/rust/compile/torture/function_reference2.rs
  6dbc5c586e725ca1a1cc60af5f5be2f1  gcc/testsuite/rust/compile/torture/function_reference3.rs
  317e79768c71ad90371a40260f219cc9  gcc/testsuite/rust/compile/torture/function_reference4.rs
! 4283b9c0802d3443992b86d64b49c230  gcc/testsuite/rust/compile/torture/generics1.rs
! ae189952dcd166a5571dcd5615440d3d  gcc/testsuite/rust/compile/torture/generics10.rs
! f380a34ce41d304a531884eb5e0c4a55  gcc/testsuite/rust/compile/torture/generics11.rs
! 34422f09bbcfb56ea2ccfc354f453d7b  gcc/testsuite/rust/compile/torture/generics12.rs
! b122cdf0c7b6630e3f3c4413687dcab2  gcc/testsuite/rust/compile/torture/generics13.rs
! f4c528ad21608ca329a64d6c83a157e3  gcc/testsuite/rust/compile/torture/generics14.rs
! 079065c06792cef6955c239dbb6b67f1  gcc/testsuite/rust/compile/torture/generics15.rs
! 4253cab6ca571af714e4d0437603a2ad  gcc/testsuite/rust/compile/torture/generics16.rs
! 2149499050557d801183f9e6d38b41c5  gcc/testsuite/rust/compile/torture/generics17.rs
! ab12db0d875dca7b9e3be9427f05441c  gcc/testsuite/rust/compile/torture/generics18.rs
! 06410d687fd39fd0c8a4e5498570e5c9  gcc/testsuite/rust/compile/torture/generics19.rs
! 1cd66b377ec1a8578d1353b0db943076  gcc/testsuite/rust/compile/torture/generics2.rs
! 19b45aea09528996986d88ed8681cff4  gcc/testsuite/rust/compile/torture/generics20.rs
! 149023ef5912108de8b4e8624b5222ee  gcc/testsuite/rust/compile/torture/generics21.rs
! 187b0b899c874b123afb719ba910cf81  gcc/testsuite/rust/compile/torture/generics22.rs
! 2acbcc43b95f7596b6f0b0818dd92273  gcc/testsuite/rust/compile/torture/generics23.rs
! be459d614083a5aa1b5a0fc6101d06bb  gcc/testsuite/rust/compile/torture/generics24.rs
! 632f72e180193a47ad3acffa5e975e03  gcc/testsuite/rust/compile/torture/generics25.rs
! f42e58f4bb2ee5e87a595df3e3e6c2cc  gcc/testsuite/rust/compile/torture/generics26.rs
! f130bd8b02885b5bff30d571b55a62f7  gcc/testsuite/rust/compile/torture/generics27.rs
! f12f5e6df159ac25888e513dd93f2412  gcc/testsuite/rust/compile/torture/generics28.rs
! f17a9ef32249c5f7d7c5aa05ec6b4953  gcc/testsuite/rust/compile/torture/generics29.rs
! b7e49a6be47f528eb393e00fd26908a4  gcc/testsuite/rust/compile/torture/generics3.rs
! c40fb0b07410e7980fad469df4c272fd  gcc/testsuite/rust/compile/torture/generics30.rs
! 5062980aa7adbf9919be252af122bef9  gcc/testsuite/rust/compile/torture/generics31.rs
! 39fd3f2930de4c96b550b07ff5d6ea56  gcc/testsuite/rust/compile/torture/generics32.rs
! 65d0b30d635c0578193c3878272dd137  gcc/testsuite/rust/compile/torture/generics4.rs
! dced3a9462a53955b813b2692a7b090f  gcc/testsuite/rust/compile/torture/generics5.rs
! 22160ffd35e3e1b14703b27ae0b93b72  gcc/testsuite/rust/compile/torture/generics6.rs
! 5de9bfdb8b0cba810752d605376501f4  gcc/testsuite/rust/compile/torture/generics7.rs
! e64d09c4aa9a07f1ffb409e70e12527e  gcc/testsuite/rust/compile/torture/generics8.rs
! 2d85a427ffecf626dc303d0d27e18a54  gcc/testsuite/rust/compile/torture/generics9.rs
  395a45c2c8dc61003c5bf77fbf78f5b1  gcc/testsuite/rust/compile/torture/grouped_expr_function.rs
! 287bba6afc9bc45397c73b9adaaa8ac1  gcc/testsuite/rust/compile/torture/identifier-missing-impl-1.rs
  5d24a6ca2068f590853e671c30a9a97a  gcc/testsuite/rust/compile/torture/if.rs
  79a1b73fa046294586bc0a47b730211e  gcc/testsuite/rust/compile/torture/if_elif.rs
  e419012e6cd9fb814f13b07d15eb893d  gcc/testsuite/rust/compile/torture/if_elif_else_expr1.rs
*************** a41ad9d29fc8cc2864d3b3d1da781fe4  gcc/te
*** 127655,127681 ****
  d98f733774408fbc7514e5b75b429cca  gcc/testsuite/rust/compile/torture/integer_inference_var4.rs
  31b1b4b7d065b79b397ca6e80713ceb3  gcc/testsuite/rust/compile/torture/integer_inference_var5.rs
  f469e2f4fbffc501a3af510d57f34eee  gcc/testsuite/rust/compile/torture/integer_types.rs
! 906c1f27e3997d318e9ced007c8ebfd6  gcc/testsuite/rust/compile/torture/intrinsics-2.rs
  e3188dd1c7e160729f1e8a5729872685  gcc/testsuite/rust/compile/torture/intrinsics-3.rs
! dcb1a07fb0aba84c09789af4ce07af3f  gcc/testsuite/rust/compile/torture/intrinsics-4.rs
! d9650e65226dfeb372e6d4c9e5262d66  gcc/testsuite/rust/compile/torture/intrinsics-5.rs
! f6c0e0c090c3c182d08265ee7514eea2  gcc/testsuite/rust/compile/torture/intrinsics-6.rs
! aa00d0660f6c7d36a9fb78122bb52732  gcc/testsuite/rust/compile/torture/intrinsics-7.rs
! c0398526150e8c033546f8ae8db51b54  gcc/testsuite/rust/compile/torture/intrinsics-8.rs
  490c78de2d79ba3cb434f2c9f9874c72  gcc/testsuite/rust/compile/torture/intrinsics-math.rs
  a4adc24cf95b12fa0bbeb1910a8fc8c9  gcc/testsuite/rust/compile/torture/isolated_cr_block_comment.rs
  f34eef566cf0283bb6dca5cc9b79de49  gcc/testsuite/rust/compile/torture/isolated_cr_line_comment.rs
! eb9a18a11a36ee7eff79d3a3a90ad645  gcc/testsuite/rust/compile/torture/issue-1024.rs
! a1a13eab8bcde2ebbf6e34eb2ebdc501  gcc/testsuite/rust/compile/torture/issue-1075.rs
! c51c4090ceb7ff2903431e4a9e718bdb  gcc/testsuite/rust/compile/torture/issue-1432.rs
  406d54681d65b703831615467b4b2080  gcc/testsuite/rust/compile/torture/issue-1434.rs
  0a94e4e590827340ac355febfaf48a28  gcc/testsuite/rust/compile/torture/issue-1506.rs
! d2ea54fc5123b7133cb502bb359f4643  gcc/testsuite/rust/compile/torture/issue-1555.rs
! 57afbe29d9c276c8f0cc0ff3f4fd06a1  gcc/testsuite/rust/compile/torture/issue-368.rs
! 1ca37ba8abf7606ed2782a4540814137  gcc/testsuite/rust/compile/torture/issue-808.rs
! 8147ad365b7b87ab30cc3b1052ac4872  gcc/testsuite/rust/compile/torture/issue-862.rs
! a00e20788944e7fa491d3d02050c4c95  gcc/testsuite/rust/compile/torture/issue-893-2.rs
! 96b6794763231168699397f0622edecc  gcc/testsuite/rust/compile/torture/issue-893.rs
  29595aa1cff98b0f7c31b0ed5c6aebdf  gcc/testsuite/rust/compile/torture/lazybooleanexpr_function.rs
  c10b4099a456471bb802b8619bf1d0ce  gcc/testsuite/rust/compile/torture/lifetime1.rs
  6c4d9e27b81996de7d2fe38f1889e809  gcc/testsuite/rust/compile/torture/literals1.rs
--- 127749,127775 ----
  d98f733774408fbc7514e5b75b429cca  gcc/testsuite/rust/compile/torture/integer_inference_var4.rs
  31b1b4b7d065b79b397ca6e80713ceb3  gcc/testsuite/rust/compile/torture/integer_inference_var5.rs
  f469e2f4fbffc501a3af510d57f34eee  gcc/testsuite/rust/compile/torture/integer_types.rs
! ee5ef709e37b17b37891e2466cfe6afd  gcc/testsuite/rust/compile/torture/intrinsics-2.rs
  e3188dd1c7e160729f1e8a5729872685  gcc/testsuite/rust/compile/torture/intrinsics-3.rs
! 9bb5d7323f86e7c136d82a410fda48d2  gcc/testsuite/rust/compile/torture/intrinsics-4.rs
! 34277d77489dcc35b5bf4c68f644f6bb  gcc/testsuite/rust/compile/torture/intrinsics-5.rs
! 476a3e84988c4e32cb2ac846632045c6  gcc/testsuite/rust/compile/torture/intrinsics-6.rs
! e2b335b7117c971a8c450c1deb56588a  gcc/testsuite/rust/compile/torture/intrinsics-7.rs
! 0a9ecf90d73b53ab571f850655d2dc7c  gcc/testsuite/rust/compile/torture/intrinsics-8.rs
  490c78de2d79ba3cb434f2c9f9874c72  gcc/testsuite/rust/compile/torture/intrinsics-math.rs
  a4adc24cf95b12fa0bbeb1910a8fc8c9  gcc/testsuite/rust/compile/torture/isolated_cr_block_comment.rs
  f34eef566cf0283bb6dca5cc9b79de49  gcc/testsuite/rust/compile/torture/isolated_cr_line_comment.rs
! 0d092a4330fa99195341345c3332967c  gcc/testsuite/rust/compile/torture/issue-1024.rs
! 80d034fea06bef8370ddb50054b051ac  gcc/testsuite/rust/compile/torture/issue-1075.rs
! 80d6e241156412bddb399722ac235c09  gcc/testsuite/rust/compile/torture/issue-1432.rs
  406d54681d65b703831615467b4b2080  gcc/testsuite/rust/compile/torture/issue-1434.rs
  0a94e4e590827340ac355febfaf48a28  gcc/testsuite/rust/compile/torture/issue-1506.rs
! 2b1a500aa9c24cbf1169b7f3402a3170  gcc/testsuite/rust/compile/torture/issue-1555.rs
! 6f45b488a85ef3806e8a67f8e41bcb12  gcc/testsuite/rust/compile/torture/issue-368.rs
! a6193332b211935deb23791e1baf2a75  gcc/testsuite/rust/compile/torture/issue-808.rs
! 74c6bb7f0c9c9706eddbb96b53db4559  gcc/testsuite/rust/compile/torture/issue-862.rs
! 6e5726768c3bdaf0f5afc1b037ea5757  gcc/testsuite/rust/compile/torture/issue-893-2.rs
! fec709aa4b5e72a151dcbf60d2986384  gcc/testsuite/rust/compile/torture/issue-893.rs
  29595aa1cff98b0f7c31b0ed5c6aebdf  gcc/testsuite/rust/compile/torture/lazybooleanexpr_function.rs
  c10b4099a456471bb802b8619bf1d0ce  gcc/testsuite/rust/compile/torture/lifetime1.rs
  6c4d9e27b81996de7d2fe38f1889e809  gcc/testsuite/rust/compile/torture/literals1.rs
*************** eae809c284afe8f3d4ca29d7b61dfeb2  gcc/te
*** 127699,127709 ****
  a23c36b851ab81323eb71eda6f576132  gcc/testsuite/rust/compile/torture/mod3.rs
  d1e08ad9924d246f8402392cdfdcf5bc  gcc/testsuite/rust/compile/torture/modules/valid_path.rs
  5e2f80b4dea8a468b3c354b206e9a349  gcc/testsuite/rust/compile/torture/must_use1.rs
! a4ae03a1a0dfacb8e11195dc839c5fd1  gcc/testsuite/rust/compile/torture/must_use2.rs
  1c8f90f487042a33bb8e0acf08090e60  gcc/testsuite/rust/compile/torture/name_resolve1.rs
  0d384f2eff5a12ea261d549e0115dd38  gcc/testsuite/rust/compile/torture/negation_function.rs
  072ec96cc0b4beeeaa8ff3e1732f82e4  gcc/testsuite/rust/compile/torture/nested_fn1.rs
! 025bde78888e090048811d489549bb39  gcc/testsuite/rust/compile/torture/nested_fn2.rs
  dfa972595ce960e7bcf241361e3dbbf7  gcc/testsuite/rust/compile/torture/nested_struct1.rs
  767b1f4d6e5547d33f8529d8b59b3513  gcc/testsuite/rust/compile/torture/never_type1.rs
  814385cb7dcdc27aede29309bce0c3cd  gcc/testsuite/rust/compile/torture/not_shebang.rs
--- 127793,127803 ----
  a23c36b851ab81323eb71eda6f576132  gcc/testsuite/rust/compile/torture/mod3.rs
  d1e08ad9924d246f8402392cdfdcf5bc  gcc/testsuite/rust/compile/torture/modules/valid_path.rs
  5e2f80b4dea8a468b3c354b206e9a349  gcc/testsuite/rust/compile/torture/must_use1.rs
! 16fb0869a365f45151a81e796b4e815b  gcc/testsuite/rust/compile/torture/must_use2.rs
  1c8f90f487042a33bb8e0acf08090e60  gcc/testsuite/rust/compile/torture/name_resolve1.rs
  0d384f2eff5a12ea261d549e0115dd38  gcc/testsuite/rust/compile/torture/negation_function.rs
  072ec96cc0b4beeeaa8ff3e1732f82e4  gcc/testsuite/rust/compile/torture/nested_fn1.rs
! 235b5a4a295178c03fd20387a84f5aae  gcc/testsuite/rust/compile/torture/nested_fn2.rs
  dfa972595ce960e7bcf241361e3dbbf7  gcc/testsuite/rust/compile/torture/nested_struct1.rs
  767b1f4d6e5547d33f8529d8b59b3513  gcc/testsuite/rust/compile/torture/never_type1.rs
  814385cb7dcdc27aede29309bce0c3cd  gcc/testsuite/rust/compile/torture/not_shebang.rs
*************** f4a2aa66a4c4665f1875940b26eee985  gcc/te
*** 127713,127723 ****
  37c3b775f772f4708128f6027e4814a4  gcc/testsuite/rust/compile/torture/not_shebang_spaces.rs
  7bb7007e218d70f518b100ce80dda102  gcc/testsuite/rust/compile/torture/parameter_usage1.rs
  dded9e8144069d4e60ad55cc51f7de67  gcc/testsuite/rust/compile/torture/parens1.rs
! 658046990826e4e71acd11340df976c6  gcc/testsuite/rust/compile/torture/phantom_data.rs
  d6398d24645efaf33f81b4a0ef4191db  gcc/testsuite/rust/compile/torture/pointer1.rs
  f0959ff1bd276d250ccc42f37bc85bdc  gcc/testsuite/rust/compile/torture/primconsts.rs
  86bd151b079ea074d3f82107f256da13  gcc/testsuite/rust/compile/torture/prims_struct_eq.rs
! c9a952038b3c64a2ff4d80788a35f854  gcc/testsuite/rust/compile/torture/range-lang-item1.rs
  6cd9f44ec6aba9d36d17df7766fcccf7  gcc/testsuite/rust/compile/torture/raw_identifiers.rs
  f8a99c53051766f9e444d92c260fefc1  gcc/testsuite/rust/compile/torture/raw_identifiers_keywords.rs
  b47fc558f700188bb4d2e500abbcdc80  gcc/testsuite/rust/compile/torture/recursive_fn1.rs
--- 127807,127817 ----
  37c3b775f772f4708128f6027e4814a4  gcc/testsuite/rust/compile/torture/not_shebang_spaces.rs
  7bb7007e218d70f518b100ce80dda102  gcc/testsuite/rust/compile/torture/parameter_usage1.rs
  dded9e8144069d4e60ad55cc51f7de67  gcc/testsuite/rust/compile/torture/parens1.rs
! b759295d5e8d05c1dc47156f1e4d5186  gcc/testsuite/rust/compile/torture/phantom_data.rs
  d6398d24645efaf33f81b4a0ef4191db  gcc/testsuite/rust/compile/torture/pointer1.rs
  f0959ff1bd276d250ccc42f37bc85bdc  gcc/testsuite/rust/compile/torture/primconsts.rs
  86bd151b079ea074d3f82107f256da13  gcc/testsuite/rust/compile/torture/prims_struct_eq.rs
! 6cf972a346def4e54405f735dc17758d  gcc/testsuite/rust/compile/torture/range-lang-item1.rs
  6cd9f44ec6aba9d36d17df7766fcccf7  gcc/testsuite/rust/compile/torture/raw_identifiers.rs
  f8a99c53051766f9e444d92c260fefc1  gcc/testsuite/rust/compile/torture/raw_identifiers_keywords.rs
  b47fc558f700188bb4d2e500abbcdc80  gcc/testsuite/rust/compile/torture/recursive_fn1.rs
*************** ee7382b0f606db87f9c72e296c629917  gcc/te
*** 127748,127774 ****
  2ca1ceb27b8f20b6041cf81949f17264  gcc/testsuite/rust/compile/torture/struct_init_8.rs
  a880259cc4562c6b06c0ff44af84c26e  gcc/testsuite/rust/compile/torture/struct_init_9.rs
  bf6541107d91ebc0ef79cd469d3f4bee  gcc/testsuite/rust/compile/torture/top_attr.rs
! d4f57670a81afad59941a6c623282365  gcc/testsuite/rust/compile/torture/traits1.rs
! 61886dbe934d68917b4abea481d0bd11  gcc/testsuite/rust/compile/torture/traits10.rs
! f145bf1f2e7b55ca9b25a7316db60ce2  gcc/testsuite/rust/compile/torture/traits11.rs
! 447dd2f36086393aa87ff7ee8c86b8af  gcc/testsuite/rust/compile/torture/traits12.rs
! 50447cafdc2ba6810aba0da218731a2f  gcc/testsuite/rust/compile/torture/traits13.rs
! 51626e7b4a464cfff01baa71cd4330db  gcc/testsuite/rust/compile/torture/traits14.rs
! 531b1c96a82bdc1b9685543b827bd08c  gcc/testsuite/rust/compile/torture/traits15.rs
! 368d3bce3b2fd0a8488db698a170dd61  gcc/testsuite/rust/compile/torture/traits16.rs
! c8c47f8e55013811bc4996f575619fbc  gcc/testsuite/rust/compile/torture/traits17.rs
! de6056a9a0306d6a5caade358268bf8e  gcc/testsuite/rust/compile/torture/traits18.rs
! af0a278cecf22cabd9cce06c4aaba2bf  gcc/testsuite/rust/compile/torture/traits19.rs
! 47505dfdbb68c3690cb03333aaa75fd7  gcc/testsuite/rust/compile/torture/traits2.rs
! 94f7f580613d012a7069fcfd01519f60  gcc/testsuite/rust/compile/torture/traits3.rs
! 4b4c1672882620f4efe5b069ce7a7e70  gcc/testsuite/rust/compile/torture/traits4.rs
! 5dcbe7a312d4506f459c969c4c583bb5  gcc/testsuite/rust/compile/torture/traits5.rs
! c17e5e7936f9df88e607fa6b4b726d9d  gcc/testsuite/rust/compile/torture/traits6.rs
! 898719dcc8d8f15581396a0ea53e214b  gcc/testsuite/rust/compile/torture/traits7.rs
! 78bf33f383e889d5d7cb76a7e423cff8  gcc/testsuite/rust/compile/torture/traits8.rs
! 717619eb6814a0bc1eab099a41d59e05  gcc/testsuite/rust/compile/torture/traits9.rs
! 5cd369727475a28a479f3aaa8eb8006c  gcc/testsuite/rust/compile/torture/transmute-size-check-1.rs
! 5ebf10c1565cfe67020a23d059c7fffc  gcc/testsuite/rust/compile/torture/transmute1.rs
  856ba6b52cb97f89365a34dc844b2383  gcc/testsuite/rust/compile/torture/tuple1.rs
  a32be8ab02d584ff702a43f23ad95934  gcc/testsuite/rust/compile/torture/tuple2.rs
  d4d906776cca4aae5ee85d930cf4ef1c  gcc/testsuite/rust/compile/torture/tuple3.rs
--- 127842,127868 ----
  2ca1ceb27b8f20b6041cf81949f17264  gcc/testsuite/rust/compile/torture/struct_init_8.rs
  a880259cc4562c6b06c0ff44af84c26e  gcc/testsuite/rust/compile/torture/struct_init_9.rs
  bf6541107d91ebc0ef79cd469d3f4bee  gcc/testsuite/rust/compile/torture/top_attr.rs
! 63bb998b9beb6dbe73b93731eed5f7aa  gcc/testsuite/rust/compile/torture/traits1.rs
! b08bc2189b8e5310de2fe05379269d15  gcc/testsuite/rust/compile/torture/traits10.rs
! 14fceb576af263f7c46a83071455b545  gcc/testsuite/rust/compile/torture/traits11.rs
! 2adcf57609bffce1ea36ee180ce3e18d  gcc/testsuite/rust/compile/torture/traits12.rs
! e55a51d1345e979b4ed4fc4330e8d0f5  gcc/testsuite/rust/compile/torture/traits13.rs
! 53c4a45d80d61e8785a6247881bc8949  gcc/testsuite/rust/compile/torture/traits14.rs
! c6811c0b89130501d072a41f0c720eb5  gcc/testsuite/rust/compile/torture/traits15.rs
! ebffdc7847228d168a713dac63f277ec  gcc/testsuite/rust/compile/torture/traits16.rs
! f1aa1d7a24a9841f589e9bc042719e7f  gcc/testsuite/rust/compile/torture/traits17.rs
! c8517b99b87a8c0a9250baf87acec460  gcc/testsuite/rust/compile/torture/traits18.rs
! 32dd4d5226a61c54a709595338cbc3cc  gcc/testsuite/rust/compile/torture/traits19.rs
! 131d1cc2281d492ed49e171734444ad4  gcc/testsuite/rust/compile/torture/traits2.rs
! 9eed338263b40939f42d61f489209ee6  gcc/testsuite/rust/compile/torture/traits3.rs
! d0868cdf4c44ea8273098a8a1d5cf0c1  gcc/testsuite/rust/compile/torture/traits4.rs
! 92c5e013e70d884b3923cbf92feb14dc  gcc/testsuite/rust/compile/torture/traits5.rs
! 57184e590610b860badeea967631956b  gcc/testsuite/rust/compile/torture/traits6.rs
! 39a0e47486242979027751ce5ce60824  gcc/testsuite/rust/compile/torture/traits7.rs
! 704b60bbe620add7ebaeac02e549eb10  gcc/testsuite/rust/compile/torture/traits8.rs
! 4f96ecd94356efdbc0f91649af6e7670  gcc/testsuite/rust/compile/torture/traits9.rs
! ba21074bf403a7fe96a057b4df10de34  gcc/testsuite/rust/compile/torture/transmute-size-check-1.rs
! a9bf44625efa55125d68188dbb0830c6  gcc/testsuite/rust/compile/torture/transmute1.rs
  856ba6b52cb97f89365a34dc844b2383  gcc/testsuite/rust/compile/torture/tuple1.rs
  a32be8ab02d584ff702a43f23ad95934  gcc/testsuite/rust/compile/torture/tuple2.rs
  d4d906776cca4aae5ee85d930cf4ef1c  gcc/testsuite/rust/compile/torture/tuple3.rs
*************** a7106ab3e5a08e2b58b4f3d59f6c16bb  gcc/te
*** 127793,127799 ****
  b681f040c3d1e80af3f41d1b267db483  gcc/testsuite/rust/compile/torture/undended-string-2.rs
  7496356346ddb12a707c608a7ca122d5  gcc/testsuite/rust/compile/torture/underscore_id.rs
  4f3b8153204513c624e2394abb19a0d1  gcc/testsuite/rust/compile/torture/unended-raw-byte-string.rs
! 1cfc5ea87d2735462d0268a4484cd5ad  gcc/testsuite/rust/compile/torture/uninit-intrinsic-1.rs
  97a2905e8fd8b85c8fe64e4b83babb3e  gcc/testsuite/rust/compile/torture/union.rs
  103a196af16a2550139988edb7794ae8  gcc/testsuite/rust/compile/torture/union_union.rs
  22f979b621b23664c1a0c4a7920e6738  gcc/testsuite/rust/compile/torture/unit_type1.rs
--- 127887,127893 ----
  b681f040c3d1e80af3f41d1b267db483  gcc/testsuite/rust/compile/torture/undended-string-2.rs
  7496356346ddb12a707c608a7ca122d5  gcc/testsuite/rust/compile/torture/underscore_id.rs
  4f3b8153204513c624e2394abb19a0d1  gcc/testsuite/rust/compile/torture/unended-raw-byte-string.rs
! 78eb384f1b615849d306aea45b322e5e  gcc/testsuite/rust/compile/torture/uninit-intrinsic-1.rs
  97a2905e8fd8b85c8fe64e4b83babb3e  gcc/testsuite/rust/compile/torture/union.rs
  103a196af16a2550139988edb7794ae8  gcc/testsuite/rust/compile/torture/union_union.rs
  22f979b621b23664c1a0c4a7920e6738  gcc/testsuite/rust/compile/torture/unit_type1.rs
*************** b5f9a01c4ceb113cef5f95a9be82a126  gcc/te
*** 127810,127816 ****
  011e23a9b276286f198468298bc8fb7c  gcc/testsuite/rust/compile/torture/unused_struct.rs
  9fcdc00fb6fbe7500a819719c27a59e1  gcc/testsuite/rust/compile/torture/unused_struct_field.rs
  e29cac3aeb678adaa01b17ac8e9018f8  gcc/testsuite/rust/compile/torture/usize1.rs
! 836ea2f9678655a119c8f84c64006314  gcc/testsuite/rust/compile/torture/utf8_identifiers.rs
  450925f1fdb8f793280e12ae10d1c683  gcc/testsuite/rust/compile/torture/utf8_whitespaces.rs
  086c8f2639392f24c1a8d60145c15f47  gcc/testsuite/rust/compile/torture/very-broken-attr-string.rs
  ae85bb383c361b590f3be526db37809d  gcc/testsuite/rust/compile/torture/while_function.rs
--- 127904,127910 ----
  011e23a9b276286f198468298bc8fb7c  gcc/testsuite/rust/compile/torture/unused_struct.rs
  9fcdc00fb6fbe7500a819719c27a59e1  gcc/testsuite/rust/compile/torture/unused_struct_field.rs
  e29cac3aeb678adaa01b17ac8e9018f8  gcc/testsuite/rust/compile/torture/usize1.rs
! 325181c927848472e6fdaf8619a509a9  gcc/testsuite/rust/compile/torture/utf8_identifiers.rs
  450925f1fdb8f793280e12ae10d1c683  gcc/testsuite/rust/compile/torture/utf8_whitespaces.rs
  086c8f2639392f24c1a8d60145c15f47  gcc/testsuite/rust/compile/torture/very-broken-attr-string.rs
  ae85bb383c361b590f3be526db37809d  gcc/testsuite/rust/compile/torture/while_function.rs
*************** ae85bb383c361b590f3be526db37809d  gcc/te
*** 127819,127841 ****
  1f5805ef3a2bfe8d85cda1b3c8ed95ba  gcc/testsuite/rust/compile/trait13.rs
  35ed7ab1a4a6b857f5e3a998ad2b535e  gcc/testsuite/rust/compile/trait14.rs
  c16116c6e1935e080add3e0fa21e3a7d  gcc/testsuite/rust/compile/trait_pub_type.rs
! fa77f7c3f57f9c2e1114103f4a2aaab5  gcc/testsuite/rust/compile/traits1.rs
! 268e8c1b05973e3b69beb39208fb8574  gcc/testsuite/rust/compile/traits10.rs
! 8fc5acce95af60347e458ab63a37bc0e  gcc/testsuite/rust/compile/traits11.rs
! 25f3ed6b4486b4561a145b1bba89af44  gcc/testsuite/rust/compile/traits12.rs
! 7d02d6279266c95632aa93eff2485a8b  gcc/testsuite/rust/compile/traits2.rs
! 7eac844ed096af032284a4fb4a80de53  gcc/testsuite/rust/compile/traits3.rs
! a225b4c57ba672661c1d29da450cefc9  gcc/testsuite/rust/compile/traits4.rs
! 49e1b15d3c9095e0f37e9505924bfabc  gcc/testsuite/rust/compile/traits5.rs
! 70d0cd3be0d16286ab28eb106f68408d  gcc/testsuite/rust/compile/traits6.rs
! 54b50841460752b7d17613381fc20a75  gcc/testsuite/rust/compile/traits7.rs
! 4efe1f3a0f41279a076b223dbaa6c7a4  gcc/testsuite/rust/compile/traits8.rs
! 67e4aedb74b951612d083061e0dfc9d0  gcc/testsuite/rust/compile/traits9.rs
  e5ba2705e4db9becf9b15f55ae4c2045  gcc/testsuite/rust/compile/try-catch-unwind-new.rs
  058f6afaf86db22b30feb1bbcc49eff8  gcc/testsuite/rust/compile/try-catch-unwind-old.rs
! 3261dfa33f8c6dfb0a1d95afd1c89a1e  gcc/testsuite/rust/compile/try-expr1.rs
! 9ffde65558275c1bc1fccaa8d3d303ad  gcc/testsuite/rust/compile/try-trait.rs
! 418f71863496e6a7341ca0b843e40f1c  gcc/testsuite/rust/compile/try_block1.rs
  d0dd22fa3a3a512431403c19da377d75  gcc/testsuite/rust/compile/tuple1.rs
  3e11ad929fc91de98602e9b2a827b85c  gcc/testsuite/rust/compile/tuple_float_index.rs
  19f5a9f2ca0e23f16b06edd22c250bde  gcc/testsuite/rust/compile/tuple_index_on_non_tuple.rs
--- 127913,127935 ----
  1f5805ef3a2bfe8d85cda1b3c8ed95ba  gcc/testsuite/rust/compile/trait13.rs
  35ed7ab1a4a6b857f5e3a998ad2b535e  gcc/testsuite/rust/compile/trait14.rs
  c16116c6e1935e080add3e0fa21e3a7d  gcc/testsuite/rust/compile/trait_pub_type.rs
! d62ef0add5507a934fef75f0e8dcfc01  gcc/testsuite/rust/compile/traits1.rs
! 4d4172362dd4c38df4501aa9a3f05fb3  gcc/testsuite/rust/compile/traits10.rs
! 8eca696ee4a39e847c5d4c69b5ed2e4b  gcc/testsuite/rust/compile/traits11.rs
! d953ff1b86e1717b5b127300aff53cd2  gcc/testsuite/rust/compile/traits12.rs
! 534cd76378585ce2560a3037952d2a51  gcc/testsuite/rust/compile/traits2.rs
! 14d8dbc56ae037d552915ad2fb783931  gcc/testsuite/rust/compile/traits3.rs
! 4277fbd39bb6257fbd197846d83ac9b1  gcc/testsuite/rust/compile/traits4.rs
! da3f2451f897f4053cd3e0c13fbf39ee  gcc/testsuite/rust/compile/traits5.rs
! 074c525ae61770a2d9d787c4094d2916  gcc/testsuite/rust/compile/traits6.rs
! a48c06412b8ddf1f0d214f89facc8594  gcc/testsuite/rust/compile/traits7.rs
! 76964b195ec14e15b59384322dc8057f  gcc/testsuite/rust/compile/traits8.rs
! 3d93f175182edabd9e93c1bf359bc570  gcc/testsuite/rust/compile/traits9.rs
  e5ba2705e4db9becf9b15f55ae4c2045  gcc/testsuite/rust/compile/try-catch-unwind-new.rs
  058f6afaf86db22b30feb1bbcc49eff8  gcc/testsuite/rust/compile/try-catch-unwind-old.rs
! a00f4b8a4164a2df5259ef21468ae761  gcc/testsuite/rust/compile/try-expr1.rs
! 658a514668318ab8a6a5634f3a16e2ad  gcc/testsuite/rust/compile/try-trait.rs
! e612ef3f9af801c3bfb6c9edc3e51d2d  gcc/testsuite/rust/compile/try_block1.rs
  d0dd22fa3a3a512431403c19da377d75  gcc/testsuite/rust/compile/tuple1.rs
  3e11ad929fc91de98602e9b2a827b85c  gcc/testsuite/rust/compile/tuple_float_index.rs
  19f5a9f2ca0e23f16b06edd22c250bde  gcc/testsuite/rust/compile/tuple_index_on_non_tuple.rs
*************** ffa73f47d2229f341adda66e96732b6f  gcc/te
*** 127847,127864 ****
  8a7025a646eb1e1024bf917d7b472e23  gcc/testsuite/rust/compile/tuplepattern-restpattern-typecheck-err.rs
  5845cf816be4b72d5badd371e2ffba04  gcc/testsuite/rust/compile/tupple_struct_pattern_tuple.rs
  146a99b5e95da275ac9f3aa327f5113f  gcc/testsuite/rust/compile/type-alias1.rs
! 872853973f8258921389204e8eadb56b  gcc/testsuite/rust/compile/type-bindings1.rs
  60558a7d2f3b7ae8e24ff2c795297008  gcc/testsuite/rust/compile/type-if.rs
  7a9af2a371d7cbd23dbe6d8a8956d6a5  gcc/testsuite/rust/compile/unary_negation.rs
  10cbc3f39d66596fc2a04f40a8673b0f  gcc/testsuite/rust/compile/unary_not.rs
! 1a5e768c5e81ad5cb8a1ade5cd57f622  gcc/testsuite/rust/compile/unconstrained_type_param.rs
  0bc89f0cfd095fc4c59f1e85d6966681  gcc/testsuite/rust/compile/undeclared_label.rs
  6895f64e4c1c706d09e540e4b97751d5  gcc/testsuite/rust/compile/unicode_escape.rs
  a823af26e85a962948de60f4b33d559e  gcc/testsuite/rust/compile/unicode_norm1.rs
! 714e7339f62ee7f473cd2b034a07b6b1  gcc/testsuite/rust/compile/unify-errors1.rs
  e61fc0f33dc5620379eacfb49627f713  gcc/testsuite/rust/compile/unknown-associated-item.rs
  c0f3b70f1f30585a1ddb81a01cd7784b  gcc/testsuite/rust/compile/unsafe1.rs
! 7decff6d514eeddac35d6e93c14d4490  gcc/testsuite/rust/compile/unsafe10.rs
  ffd0086398c13dd461c60ab251dea96e  gcc/testsuite/rust/compile/unsafe11.rs
  5575f8e36d7f8fc301e84dfb3a182fa3  gcc/testsuite/rust/compile/unsafe2.rs
  40a486ea3c004b99b422ac2e7710de83  gcc/testsuite/rust/compile/unsafe3.rs
--- 127941,127958 ----
  8a7025a646eb1e1024bf917d7b472e23  gcc/testsuite/rust/compile/tuplepattern-restpattern-typecheck-err.rs
  5845cf816be4b72d5badd371e2ffba04  gcc/testsuite/rust/compile/tupple_struct_pattern_tuple.rs
  146a99b5e95da275ac9f3aa327f5113f  gcc/testsuite/rust/compile/type-alias1.rs
! 2e7b654c0eb9d1bb49d5abfe21bf991c  gcc/testsuite/rust/compile/type-bindings1.rs
  60558a7d2f3b7ae8e24ff2c795297008  gcc/testsuite/rust/compile/type-if.rs
  7a9af2a371d7cbd23dbe6d8a8956d6a5  gcc/testsuite/rust/compile/unary_negation.rs
  10cbc3f39d66596fc2a04f40a8673b0f  gcc/testsuite/rust/compile/unary_not.rs
! 14346ea39ab9b817a79289f9838c3896  gcc/testsuite/rust/compile/unconstrained_type_param.rs
  0bc89f0cfd095fc4c59f1e85d6966681  gcc/testsuite/rust/compile/undeclared_label.rs
  6895f64e4c1c706d09e540e4b97751d5  gcc/testsuite/rust/compile/unicode_escape.rs
  a823af26e85a962948de60f4b33d559e  gcc/testsuite/rust/compile/unicode_norm1.rs
! 2ae5eae408801158a2d75eca31317296  gcc/testsuite/rust/compile/unify-errors1.rs
  e61fc0f33dc5620379eacfb49627f713  gcc/testsuite/rust/compile/unknown-associated-item.rs
  c0f3b70f1f30585a1ddb81a01cd7784b  gcc/testsuite/rust/compile/unsafe1.rs
! 02994a008becb1e86b967eba00ea25b3  gcc/testsuite/rust/compile/unsafe10.rs
  ffd0086398c13dd461c60ab251dea96e  gcc/testsuite/rust/compile/unsafe11.rs
  5575f8e36d7f8fc301e84dfb3a182fa3  gcc/testsuite/rust/compile/unsafe2.rs
  40a486ea3c004b99b422ac2e7710de83  gcc/testsuite/rust/compile/unsafe3.rs
*************** dfa73aa7120ddff81f720be1afb6d4e8  gcc/te
*** 127877,127887 ****
  9508f3e1b9be217e1163c87013266022  gcc/testsuite/rust/compile/use_self_alone.rs
  049d72c9a061c5c318ca8571600ff869  gcc/testsuite/rust/compile/use_self_alone_in_list.rs
  bb66b71d9e02e842378a5f1a6113a4de  gcc/testsuite/rust/compile/usize1.rs
! 4ba93adcc306a982a169bf9d8fc0e09c  gcc/testsuite/rust/compile/v0-mangle1.rs
! 63dc292fd1579604dc888db846d521f6  gcc/testsuite/rust/compile/v0-mangle2.rs
  ffeacc1dda452d94122d6a2cea6d601a  gcc/testsuite/rust/compile/variadic.rs
  d328500e54be92447ee10f2591d11017  gcc/testsuite/rust/compile/while_break_expr.rs
! 4e05133cd51875241639b30cbd212b32  gcc/testsuite/rust/compile/while_let1.rs
  a924b01bbc1d263aa1409bc3be20babb  gcc/testsuite/rust/compile/while_let_expr.rs
  c6edc136ff5d22dbaf22a81eafe9061f  gcc/testsuite/rust/compile/while_let_without_label.rs
  ecd1b51f089be2835ada173bc06aaa41  gcc/testsuite/rust/compile/wrong_lhs_assignment.rs
--- 127971,127981 ----
  9508f3e1b9be217e1163c87013266022  gcc/testsuite/rust/compile/use_self_alone.rs
  049d72c9a061c5c318ca8571600ff869  gcc/testsuite/rust/compile/use_self_alone_in_list.rs
  bb66b71d9e02e842378a5f1a6113a4de  gcc/testsuite/rust/compile/usize1.rs
! ae2e1fb6ecd39505291238dfec8ae324  gcc/testsuite/rust/compile/v0-mangle1.rs
! 7afaa1b52f4b772cce1e07fdbfa3303f  gcc/testsuite/rust/compile/v0-mangle2.rs
  ffeacc1dda452d94122d6a2cea6d601a  gcc/testsuite/rust/compile/variadic.rs
  d328500e54be92447ee10f2591d11017  gcc/testsuite/rust/compile/while_break_expr.rs
! 1c60e802028c78790411bb91b158a2d6  gcc/testsuite/rust/compile/while_let1.rs
  a924b01bbc1d263aa1409bc3be20babb  gcc/testsuite/rust/compile/while_let_expr.rs
  c6edc136ff5d22dbaf22a81eafe9061f  gcc/testsuite/rust/compile/while_let_without_label.rs
  ecd1b51f089be2835ada173bc06aaa41  gcc/testsuite/rust/compile/wrong_lhs_assignment.rs
*************** c7d793e2850d119364ecbefff6f25e6a  gcc/te
*** 127891,127897 ****
  f219c902f8bbb7747064aa57b2247406  gcc/testsuite/rust/compile/xfail/struct_field_vis.rs
  6cac77bead9a159370fe05c2e4be2550  gcc/testsuite/rust/compile/xfail/xfail.exp
  3218ecaec34cb9248c2d6ea5e9a19e62  gcc/testsuite/rust/compile/zero_sized_slice.rs
! 6409eb53fa7987e4e6d9ea0d348b8d73  gcc/testsuite/rust/core/core.exp
  cf84f07cfe0ecfb071b976dc80fea9b2  gcc/testsuite/rust/debug/chartype.rs
  faa029c0320aae395036255789ed154c  gcc/testsuite/rust/debug/custom_link_section.rs
  2af64fa0368515022042a3fcb6118659  gcc/testsuite/rust/debug/debug.exp
--- 127985,127991 ----
  f219c902f8bbb7747064aa57b2247406  gcc/testsuite/rust/compile/xfail/struct_field_vis.rs
  6cac77bead9a159370fe05c2e4be2550  gcc/testsuite/rust/compile/xfail/xfail.exp
  3218ecaec34cb9248c2d6ea5e9a19e62  gcc/testsuite/rust/compile/zero_sized_slice.rs
! d4996daabc4925ea3a5e37f51e49984a  gcc/testsuite/rust/core/core.exp
  cf84f07cfe0ecfb071b976dc80fea9b2  gcc/testsuite/rust/debug/chartype.rs
  faa029c0320aae395036255789ed154c  gcc/testsuite/rust/debug/custom_link_section.rs
  2af64fa0368515022042a3fcb6118659  gcc/testsuite/rust/debug/debug.exp
*************** faa029c0320aae395036255789ed154c  gcc/te
*** 127901,127916 ****
  4f4406b9c3ea1e1d1fe142e73f7d81dc  gcc/testsuite/rust/debug/oldlang.rs
  533df5d9904c8efee02c94532338efc2  gcc/testsuite/rust/debug/tuple.rs
  d5d8788f3a670487fb051714384ab2a1  gcc/testsuite/rust/debug/win64-abi.rs
! 252f7f8fd334d8f3d2cc69a2b8b31c2e  gcc/testsuite/rust/execute/black_box.rs
  36f6ff07e76f000052781ec6324b4dff  gcc/testsuite/rust/execute/crate-metavar1.rs
  a955f443b22ec1f728412795c6504609  gcc/testsuite/rust/execute/execute.exp
  fdc391d276e1f1fa9f056edffd0476f1  gcc/testsuite/rust/execute/inline_asm_inout_ident.rs
  ec6207f32c715c36caeeb0fa641702a0  gcc/testsuite/rust/execute/inline_asm_inout_var.rs
  94c13baa4b458105f3e2204c8d4d1e17  gcc/testsuite/rust/execute/torture/arrays.rs
! eca15726fcabf7e7620037e020ee686f  gcc/testsuite/rust/execute/torture/atomic_load.rs
! 08a045beac132b26b7d1b09ee02a7bd4  gcc/testsuite/rust/execute/torture/atomic_store.rs
! 5674a4df48636339ce6b004b16b52a52  gcc/testsuite/rust/execute/torture/basic_partial_ord1.rs
! d26050080ee67ef52dfd4c9c3be4f9c7  gcc/testsuite/rust/execute/torture/basic_partial_ord2.rs
  64ec49dcf61c1ec23016e5eb7627a5b7  gcc/testsuite/rust/execute/torture/block_expr1.rs
  95c683b978067e1f39177adfa6ce02ae  gcc/testsuite/rust/execute/torture/builtin_abort.rs
  c1b657c2acee7d237da8a2cd240c44a8  gcc/testsuite/rust/execute/torture/builtin_macro_cfg.rs
--- 127995,128010 ----
  4f4406b9c3ea1e1d1fe142e73f7d81dc  gcc/testsuite/rust/debug/oldlang.rs
  533df5d9904c8efee02c94532338efc2  gcc/testsuite/rust/debug/tuple.rs
  d5d8788f3a670487fb051714384ab2a1  gcc/testsuite/rust/debug/win64-abi.rs
! 6cd38c3c8ed8f0c65b736cdeece17cf7  gcc/testsuite/rust/execute/black_box.rs
  36f6ff07e76f000052781ec6324b4dff  gcc/testsuite/rust/execute/crate-metavar1.rs
  a955f443b22ec1f728412795c6504609  gcc/testsuite/rust/execute/execute.exp
  fdc391d276e1f1fa9f056edffd0476f1  gcc/testsuite/rust/execute/inline_asm_inout_ident.rs
  ec6207f32c715c36caeeb0fa641702a0  gcc/testsuite/rust/execute/inline_asm_inout_var.rs
  94c13baa4b458105f3e2204c8d4d1e17  gcc/testsuite/rust/execute/torture/arrays.rs
! 50f7444de0171c099a3783818d04a67e  gcc/testsuite/rust/execute/torture/atomic_load.rs
! 98ce4e96587464e7dfa67d374586eab3  gcc/testsuite/rust/execute/torture/atomic_store.rs
! 5454281894a92c17cdf14a5f5504d8b0  gcc/testsuite/rust/execute/torture/basic_partial_ord1.rs
! 5146af2f95700b6d484292317878c033  gcc/testsuite/rust/execute/torture/basic_partial_ord2.rs
  64ec49dcf61c1ec23016e5eb7627a5b7  gcc/testsuite/rust/execute/torture/block_expr1.rs
  95c683b978067e1f39177adfa6ce02ae  gcc/testsuite/rust/execute/torture/builtin_abort.rs
  c1b657c2acee7d237da8a2cd240c44a8  gcc/testsuite/rust/execute/torture/builtin_macro_cfg.rs
*************** cfad0d9f56bfc596e57015384c27d0c9  gcc/te
*** 127919,127925 ****
  8d5f0efa0dec7ac74e7eb026e35633d7  gcc/testsuite/rust/execute/torture/builtin_macro_include_bytes.rs
  768015a23dc069437f4fd1b24e6eaa81  gcc/testsuite/rust/execute/torture/builtin_macro_include_str.rs
  490a74d71fee522b5677974a21023378  gcc/testsuite/rust/execute/torture/builtin_macro_line.rs
! 31c00291a652dae8f2f4ad8f634476ee  gcc/testsuite/rust/execute/torture/builtin_macro_option_env.rs
  b6fcc627a166c042555ce9c7e9298a1f  gcc/testsuite/rust/execute/torture/builtin_macro_stringify.rs
  fa58e352ba2ca785ae91a05e9b7fe6ca  gcc/testsuite/rust/execute/torture/builtin_macros1.rs
  976ef422b18d727506900f11fc958cec  gcc/testsuite/rust/execute/torture/builtin_macros3.rs
--- 128013,128019 ----
  8d5f0efa0dec7ac74e7eb026e35633d7  gcc/testsuite/rust/execute/torture/builtin_macro_include_bytes.rs
  768015a23dc069437f4fd1b24e6eaa81  gcc/testsuite/rust/execute/torture/builtin_macro_include_str.rs
  490a74d71fee522b5677974a21023378  gcc/testsuite/rust/execute/torture/builtin_macro_line.rs
! 12daaf7bd41be456fd163625ab5b5988  gcc/testsuite/rust/execute/torture/builtin_macro_option_env.rs
  b6fcc627a166c042555ce9c7e9298a1f  gcc/testsuite/rust/execute/torture/builtin_macro_stringify.rs
  fa58e352ba2ca785ae91a05e9b7fe6ca  gcc/testsuite/rust/execute/torture/builtin_macros1.rs
  976ef422b18d727506900f11fc958cec  gcc/testsuite/rust/execute/torture/builtin_macros3.rs
*************** ccc2591f70377149f4aa4e23d900dba6  gcc/te
*** 127929,128025 ****
  9783ede29592db2668bfdad04aa365bc  gcc/testsuite/rust/execute/torture/cfg3.rs
  7982b994d6eb88a809b882ab3b263b33  gcc/testsuite/rust/execute/torture/cfg4.rs
  8686a31954a6b1f67d910f849e9edc68  gcc/testsuite/rust/execute/torture/cfg5.rs
! 660b7127e3ceadd40411c5cec5bc6a03  gcc/testsuite/rust/execute/torture/closure1.rs
! cc38817bf71a3f294f3189058431b45d  gcc/testsuite/rust/execute/torture/closure2.rs
! c32fe7a964c76791db55140ea8246c43  gcc/testsuite/rust/execute/torture/closure3.rs
! e81ff8419c8b0085aa761fb8da969227  gcc/testsuite/rust/execute/torture/closure4.rs
! 68b76cd79b817b8e9315c05cd60c81f6  gcc/testsuite/rust/execute/torture/coercion1.rs
! 27dd0332fd73b2accf878d9b7db118d3  gcc/testsuite/rust/execute/torture/coercion2.rs
! 497b0c18909c49a30e2b53c15f8fc527  gcc/testsuite/rust/execute/torture/coercion3.rs
! 8446b8757d4d2c85db0aa361ce166b12  gcc/testsuite/rust/execute/torture/const-generics-1.rs
! a6cdbfe3707ef28f67bed32232c4cbc7  gcc/testsuite/rust/execute/torture/const-generics-2.rs
! f1df3ea62ae187528fb69e7eb9d93bac  gcc/testsuite/rust/execute/torture/const-generics-3.rs
! 276f0470aa5b0a82c97e2925db4be406  gcc/testsuite/rust/execute/torture/const-generics-4.rs
! d61f3a21c8acdd39c2534f5a93e34b00  gcc/testsuite/rust/execute/torture/const-generics-5.rs
! 1517d9765ba88616d9a2c28836954b04  gcc/testsuite/rust/execute/torture/const-generics-6.rs
! bf0edd22a11bec47f52001ab5bd2ea9f  gcc/testsuite/rust/execute/torture/const-generics-7.rs
  744aef37751c0985c87a0e8de312c015  gcc/testsuite/rust/execute/torture/const_block1.rs
  16aaa17474f319d84939e58bd3191fe6  gcc/testsuite/rust/execute/torture/const_fold1.rs
  241a2be1d8747c41bb6696abef8fca56  gcc/testsuite/rust/execute/torture/const_fold2.rs
! fd85d0412a3b44dc18646d7a2f23ed44  gcc/testsuite/rust/execute/torture/copy_nonoverlapping1.rs
  15aeecda0667a9b6fb7dc5fa85ca5d7d  gcc/testsuite/rust/execute/torture/decl_macro1.rs
  1d8ebbc049fb21f9609e1de2d2d094ac  gcc/testsuite/rust/execute/torture/decl_macro2.rs
  2ca84627b7b27d5e1c7889f6997d31c1  gcc/testsuite/rust/execute/torture/decl_macro3.rs
  b9d5acfe96556f242a09a6982797cd8b  gcc/testsuite/rust/execute/torture/decl_macro4.rs
! 3f57cd6a0818ef995e11884429993020  gcc/testsuite/rust/execute/torture/derive-default1.rs
! 1a151d0002782fe81774c2ef9d91474d  gcc/testsuite/rust/execute/torture/derive-partialeq1.rs
! 5c6c2c51b40ad8d290fe6a4690c81481  gcc/testsuite/rust/execute/torture/derive-partialeq2.rs
! 48caa2872d3bb7f0e1b8ee4fb1849acc  gcc/testsuite/rust/execute/torture/derive_clone_enum1.rs
! 88c52a8112f07c24a800321dac704c65  gcc/testsuite/rust/execute/torture/derive_macro1.rs
! 9093dd2dd5d6d17cfab71c38028cb7b3  gcc/testsuite/rust/execute/torture/derive_macro3.rs
! 56e0f09d7857937ae1d8ad7c799018f4  gcc/testsuite/rust/execute/torture/derive_macro4.rs
  f3e8fb4d74a3a31041cfcb2286645769  gcc/testsuite/rust/execute/torture/empty_main.rs
! 5560f8c82637ea346cec8aa95c6d1369  gcc/testsuite/rust/execute/torture/enum_intrinsics1.rs
! 8084a8ae59912c36a5f70a9b738843f1  gcc/testsuite/rust/execute/torture/enum_intrinsics2.rs
  e9009eb5eaed800d5f556dd9eb81d1b8  gcc/testsuite/rust/execute/torture/execute.exp
  c579ac738ba95f67c2c7d8a745f30d74  gcc/testsuite/rust/execute/torture/exit_error.rs
  ab6af2afb853cd3748a8320e0f4d16f3  gcc/testsuite/rust/execute/torture/extern_mod4.rs
  deec28fbd0fd7d5a890d0905cbfa3d3a  gcc/testsuite/rust/execute/torture/extern_mod4/modules/mod.rs
! 3dac9bc33a1617b2a7bc49d3025058aa  gcc/testsuite/rust/execute/torture/for-loop1.rs
! 5a1213e2a96611248a95776205c33912  gcc/testsuite/rust/execute/torture/for-loop2.rs
  51c98fe37862ab18dafa4be9e1fcc95e  gcc/testsuite/rust/execute/torture/func1.rs
! 7ded03d458f56e47ad4d5b7b372d3975  gcc/testsuite/rust/execute/torture/gat1.rs
  fab98ca34ae058c9972166c501a700ec  gcc/testsuite/rust/execute/torture/helloworld1.rs
  dd9d5a465f08d85c74f79bf57191b889  gcc/testsuite/rust/execute/torture/helloworld2.rs
  ab0eadcf833fcbd08d9b7fdc9778ed10  gcc/testsuite/rust/execute/torture/iflet.rs
! cf7a3a950600b05c687aa68cddfdcb25  gcc/testsuite/rust/execute/torture/impl_desugar-2.rs
! 4eb6c5b481a2150428f4740a114e6f65  gcc/testsuite/rust/execute/torture/impl_desugar.rs
! 1390651fd9eeb96b9b0c73f0213b4e3f  gcc/testsuite/rust/execute/torture/impl_rpit1.rs
! 0bae05b8784cf8dda71e182067857c9a  gcc/testsuite/rust/execute/torture/impl_rpit2.rs
! f5fd0e4151ad6b4b62e17501a7f76ede  gcc/testsuite/rust/execute/torture/impl_rpit3.rs
! 499b5dc450a898e8c08caa8a06da71dd  gcc/testsuite/rust/execute/torture/impl_trait1.rs
! d8e168754d6d6c3afe53ac2c50e92b9a  gcc/testsuite/rust/execute/torture/impl_trait2.rs
! a3ff73b45a6aab3f498fd241adc10a45  gcc/testsuite/rust/execute/torture/impl_trait3.rs
! cc3e37b2162ed9a0de72784a803dbbbf  gcc/testsuite/rust/execute/torture/impl_trait4.rs
  d1bf4d03901b291d3115f4895ffb2fb7  gcc/testsuite/rust/execute/torture/include.txt
! 62a41b75b7c5ffea1195d0d9ae0a0292  gcc/testsuite/rust/execute/torture/index1.rs
  101931feb6b9121176b08e5394b8f10c  gcc/testsuite/rust/execute/torture/inline_asm_mov_x_5_ARM.rs
  432174330121612ddc4ea6d7c0d027b1  gcc/testsuite/rust/execute/torture/inline_asm_mov_x_5_x86_64.rs
! 976a754e4c002db75b718db2ffad2976  gcc/testsuite/rust/execute/torture/issue-1120.rs
! 3c2b61d6a054cae09658b0ea3efdaef6  gcc/testsuite/rust/execute/torture/issue-1133.rs
! fd2a4838eb014285bc8f567e8bd70ceb  gcc/testsuite/rust/execute/torture/issue-1198.rs
  205a284536c62257237cafba849510a6  gcc/testsuite/rust/execute/torture/issue-1231.rs
! 12c716ab70323de0af63a9c0f99aea03  gcc/testsuite/rust/execute/torture/issue-1232.rs
! e4c50a85ec53e7486479e75929f741e7  gcc/testsuite/rust/execute/torture/issue-1249.rs
! 69c87f9ecf59a43749bed79606fb35a2  gcc/testsuite/rust/execute/torture/issue-1436.rs
! 4879ae61e1c23fbaeed3b1d870e783ab  gcc/testsuite/rust/execute/torture/issue-1481.rs
! 277f816167dbef8aeb1a4f3e957f1302  gcc/testsuite/rust/execute/torture/issue-1482.rs
! 0fe3cb9aefa642b3ad5d66b03236eebc  gcc/testsuite/rust/execute/torture/issue-1496.rs
! d6cecf6e8b59b318ec6239b5a61bee14  gcc/testsuite/rust/execute/torture/issue-1720-2.rs
! d4fd8ea0044840c76ddeff882c4cd32b  gcc/testsuite/rust/execute/torture/issue-1720.rs
  b6b074a8a691f6f9edb8191b820c0ad6  gcc/testsuite/rust/execute/torture/issue-1852-1.rs
  da3f6f2847d41be5c388e50b18051e12  gcc/testsuite/rust/execute/torture/issue-1852.rs
! 0372216e15b2d9a78d4954513b094088  gcc/testsuite/rust/execute/torture/issue-2005.rs
! ca9c7c4413199f843e3b51677965b5b4  gcc/testsuite/rust/execute/torture/issue-2052.rs
  8becbf6525cbbde4782e84b68f602396  gcc/testsuite/rust/execute/torture/issue-2080.rs
! d8ad8f9578efd13f8656c31449e77bf0  gcc/testsuite/rust/execute/torture/issue-2179.rs
! dac58df6bbee5b6fd5f8e0bf62fe2b1a  gcc/testsuite/rust/execute/torture/issue-2180.rs
  b00a6157a531d1d419bb852d30b7d131  gcc/testsuite/rust/execute/torture/issue-2187.rs
! 1309b73638a56bc83e0e3fadcc762b4c  gcc/testsuite/rust/execute/torture/issue-2236.rs
! b00ed11eddbb45f2d076fbabb9980dc0  gcc/testsuite/rust/execute/torture/issue-2583.rs
  7cad0696fff12a23d88d55c29b36b4fd  gcc/testsuite/rust/execute/torture/issue-2906.rs
! 06cdf97de4a0f302b366e6bd9e2c0b51  gcc/testsuite/rust/execute/torture/issue-3126.rs
! 63b786f5f35c6c87d722646f2d91b209  gcc/testsuite/rust/execute/torture/issue-3381.rs
! a96b0644743e8e241da6558cbb2c2fba  gcc/testsuite/rust/execute/torture/issue-3502.rs
! bed350f339543e64906d16b02e9f5183  gcc/testsuite/rust/execute/torture/issue-3836.rs
  1c8ab14dfd7607c77a2ae45ffa4adc37  gcc/testsuite/rust/execute/torture/issue-4242.rs
! ba2cc9caa5cf695dabb5e09de31fcceb  gcc/testsuite/rust/execute/torture/issue-647.rs
! 9aebf168cfdac6b4ffcb96d19980fa72  gcc/testsuite/rust/execute/torture/issue-845.rs
! 063e1d1686f93b29ba383722fc51dbed  gcc/testsuite/rust/execute/torture/issue-851.rs
! f7a4dec5c495bdc2a5580c6b2ff9a054  gcc/testsuite/rust/execute/torture/issue-858.rs
  449e42630eb5fd571755658ebbb341c4  gcc/testsuite/rust/execute/torture/issue-976.rs
  a7f4a565f46d8c8589434308e7968386  gcc/testsuite/rust/execute/torture/issue-995.rs
! 372b5ab0b0565ead0b200dc760731544  gcc/testsuite/rust/execute/torture/iter1.rs
  58e6d4e2e10974545dcb38e56ab711d4  gcc/testsuite/rust/execute/torture/let-identifierpattern-subpattern.rs
  e5d4fd47103c9b2ec08ec98416082eb9  gcc/testsuite/rust/execute/torture/let-pattern-1.rs
  3b24a17a7ebb32561ec8e5ad521f06a0  gcc/testsuite/rust/execute/torture/link-name.rs
--- 128023,128119 ----
  9783ede29592db2668bfdad04aa365bc  gcc/testsuite/rust/execute/torture/cfg3.rs
  7982b994d6eb88a809b882ab3b263b33  gcc/testsuite/rust/execute/torture/cfg4.rs
  8686a31954a6b1f67d910f849e9edc68  gcc/testsuite/rust/execute/torture/cfg5.rs
! c98955e696b05c373422ad43b266645b  gcc/testsuite/rust/execute/torture/closure1.rs
! 39fa53e571e319f302b0000309ee776a  gcc/testsuite/rust/execute/torture/closure2.rs
! 4e204217a205db43769683456b710213  gcc/testsuite/rust/execute/torture/closure3.rs
! db9f24f81db2d945c11b0cf69da93548  gcc/testsuite/rust/execute/torture/closure4.rs
! 28f34ea7230418c77a610873f7363349  gcc/testsuite/rust/execute/torture/coercion1.rs
! d347450bdc1ae7a9cba5035d61ed484e  gcc/testsuite/rust/execute/torture/coercion2.rs
! 9b8ec8e474ec7df9849f045d45239949  gcc/testsuite/rust/execute/torture/coercion3.rs
! d25ba3e0e787fe42b3e0a4040931490c  gcc/testsuite/rust/execute/torture/const-generics-1.rs
! d6c46d627a1b183703c0480160002d7b  gcc/testsuite/rust/execute/torture/const-generics-2.rs
! 0e4e2dc92fc74441d3382b3b13841342  gcc/testsuite/rust/execute/torture/const-generics-3.rs
! 0a8131301d243b8e2fe4bd0c83a21615  gcc/testsuite/rust/execute/torture/const-generics-4.rs
! 72ed4fcbe6172cd33fae785e304d95d9  gcc/testsuite/rust/execute/torture/const-generics-5.rs
! fc1c063aa95eb7fee39802e7ff880983  gcc/testsuite/rust/execute/torture/const-generics-6.rs
! 5de4c871f7589ca936b1190b6c2bd8da  gcc/testsuite/rust/execute/torture/const-generics-7.rs
  744aef37751c0985c87a0e8de312c015  gcc/testsuite/rust/execute/torture/const_block1.rs
  16aaa17474f319d84939e58bd3191fe6  gcc/testsuite/rust/execute/torture/const_fold1.rs
  241a2be1d8747c41bb6696abef8fca56  gcc/testsuite/rust/execute/torture/const_fold2.rs
! 564f7bd6f6e2918dc568c36735773c18  gcc/testsuite/rust/execute/torture/copy_nonoverlapping1.rs
  15aeecda0667a9b6fb7dc5fa85ca5d7d  gcc/testsuite/rust/execute/torture/decl_macro1.rs
  1d8ebbc049fb21f9609e1de2d2d094ac  gcc/testsuite/rust/execute/torture/decl_macro2.rs
  2ca84627b7b27d5e1c7889f6997d31c1  gcc/testsuite/rust/execute/torture/decl_macro3.rs
  b9d5acfe96556f242a09a6982797cd8b  gcc/testsuite/rust/execute/torture/decl_macro4.rs
! 96cd2db45a5178f7f0e98b99f0e2a966  gcc/testsuite/rust/execute/torture/derive-default1.rs
! 598d93933bb6d9468012ebfa7bdf2df0  gcc/testsuite/rust/execute/torture/derive-partialeq1.rs
! 82fc7c1a883d67cbea2110b45f72da44  gcc/testsuite/rust/execute/torture/derive-partialeq2.rs
! b92c9779bd60dcd2744afcc28a94141c  gcc/testsuite/rust/execute/torture/derive_clone_enum1.rs
! f6cb889901b8a47b518071b96493b711  gcc/testsuite/rust/execute/torture/derive_macro1.rs
! 91018d1d0e0fc7d6e223eb91e2f12d0c  gcc/testsuite/rust/execute/torture/derive_macro3.rs
! ea026219dd061a7db1e3b975bd31a0cb  gcc/testsuite/rust/execute/torture/derive_macro4.rs
  f3e8fb4d74a3a31041cfcb2286645769  gcc/testsuite/rust/execute/torture/empty_main.rs
! 86239e95fe0435c053014d6db143dfd7  gcc/testsuite/rust/execute/torture/enum_intrinsics1.rs
! d67b83a0a0218684802f7a55aa0ae5cc  gcc/testsuite/rust/execute/torture/enum_intrinsics2.rs
  e9009eb5eaed800d5f556dd9eb81d1b8  gcc/testsuite/rust/execute/torture/execute.exp
  c579ac738ba95f67c2c7d8a745f30d74  gcc/testsuite/rust/execute/torture/exit_error.rs
  ab6af2afb853cd3748a8320e0f4d16f3  gcc/testsuite/rust/execute/torture/extern_mod4.rs
  deec28fbd0fd7d5a890d0905cbfa3d3a  gcc/testsuite/rust/execute/torture/extern_mod4/modules/mod.rs
! 87d77b12ee8bad224dbedb6256ae3b9c  gcc/testsuite/rust/execute/torture/for-loop1.rs
! cd7da58dde4ecd6e1fd26cc6ce27b7d8  gcc/testsuite/rust/execute/torture/for-loop2.rs
  51c98fe37862ab18dafa4be9e1fcc95e  gcc/testsuite/rust/execute/torture/func1.rs
! 9f2dc78bbb26473ff4aa0d00da4869eb  gcc/testsuite/rust/execute/torture/gat1.rs
  fab98ca34ae058c9972166c501a700ec  gcc/testsuite/rust/execute/torture/helloworld1.rs
  dd9d5a465f08d85c74f79bf57191b889  gcc/testsuite/rust/execute/torture/helloworld2.rs
  ab0eadcf833fcbd08d9b7fdc9778ed10  gcc/testsuite/rust/execute/torture/iflet.rs
! dd0b1222be6b1ec837410b77e7ddd329  gcc/testsuite/rust/execute/torture/impl_desugar-2.rs
! c74962e4f0e603fdce997c7c2eab4c02  gcc/testsuite/rust/execute/torture/impl_desugar.rs
! f04314c1bbc390151f9f4390ec084acd  gcc/testsuite/rust/execute/torture/impl_rpit1.rs
! 273b93990efa3d49c8431f0ded936498  gcc/testsuite/rust/execute/torture/impl_rpit2.rs
! 13b3608339866645b166a4b358d3848a  gcc/testsuite/rust/execute/torture/impl_rpit3.rs
! 57744af16607d42583ff20d65bc2832f  gcc/testsuite/rust/execute/torture/impl_trait1.rs
! 8d34075dd79102590ef64df190149bfa  gcc/testsuite/rust/execute/torture/impl_trait2.rs
! de48464b049bdc9add1595e6b18ce48a  gcc/testsuite/rust/execute/torture/impl_trait3.rs
! 8499dc5f3ba531cb5d541bd25b957571  gcc/testsuite/rust/execute/torture/impl_trait4.rs
  d1bf4d03901b291d3115f4895ffb2fb7  gcc/testsuite/rust/execute/torture/include.txt
! efe869588cf6114c014dbc0157499bd0  gcc/testsuite/rust/execute/torture/index1.rs
  101931feb6b9121176b08e5394b8f10c  gcc/testsuite/rust/execute/torture/inline_asm_mov_x_5_ARM.rs
  432174330121612ddc4ea6d7c0d027b1  gcc/testsuite/rust/execute/torture/inline_asm_mov_x_5_x86_64.rs
! 4fa8496908e0df7f3ad0f9cc89ae158a  gcc/testsuite/rust/execute/torture/issue-1120.rs
! b9069a5808313d4ee9c3158642f16c2c  gcc/testsuite/rust/execute/torture/issue-1133.rs
! c68eadc07d6d914d77119a7508217550  gcc/testsuite/rust/execute/torture/issue-1198.rs
  205a284536c62257237cafba849510a6  gcc/testsuite/rust/execute/torture/issue-1231.rs
! f211448e561b07c038f7478190c63c24  gcc/testsuite/rust/execute/torture/issue-1232.rs
! 0a19d52270e6f6a04b3ae31079a2becc  gcc/testsuite/rust/execute/torture/issue-1249.rs
! fbf24044cbc55ac914d38771a17a9dba  gcc/testsuite/rust/execute/torture/issue-1436.rs
! 0881f68a74be3e36fd00dbbbb18f2b3d  gcc/testsuite/rust/execute/torture/issue-1481.rs
! cda33c9c5bfc7d9a57d1aeb9b01db881  gcc/testsuite/rust/execute/torture/issue-1482.rs
! b825c57ebd5d1de7db0b31049ccfdd6c  gcc/testsuite/rust/execute/torture/issue-1496.rs
! 00710ea9e854b57c6271db191d9c1dfd  gcc/testsuite/rust/execute/torture/issue-1720-2.rs
! 319c4e21194522719736bd828db78424  gcc/testsuite/rust/execute/torture/issue-1720.rs
  b6b074a8a691f6f9edb8191b820c0ad6  gcc/testsuite/rust/execute/torture/issue-1852-1.rs
  da3f6f2847d41be5c388e50b18051e12  gcc/testsuite/rust/execute/torture/issue-1852.rs
! d3e0bc464f2baffbf8ee91c925621dc5  gcc/testsuite/rust/execute/torture/issue-2005.rs
! 6f391012bf8db4ff631bb1cc219d0ab5  gcc/testsuite/rust/execute/torture/issue-2052.rs
  8becbf6525cbbde4782e84b68f602396  gcc/testsuite/rust/execute/torture/issue-2080.rs
! eb246e0781aed1a5ef0f833de779311e  gcc/testsuite/rust/execute/torture/issue-2179.rs
! 871532add4afde596d37879088bc335a  gcc/testsuite/rust/execute/torture/issue-2180.rs
  b00a6157a531d1d419bb852d30b7d131  gcc/testsuite/rust/execute/torture/issue-2187.rs
! 4352bdc0463aa54e7198417685b82ee9  gcc/testsuite/rust/execute/torture/issue-2236.rs
! 0ed62723e59e9c8766f2f3b9d9309e64  gcc/testsuite/rust/execute/torture/issue-2583.rs
  7cad0696fff12a23d88d55c29b36b4fd  gcc/testsuite/rust/execute/torture/issue-2906.rs
! a452c2cb8c1bc6b24b3320a96b894e04  gcc/testsuite/rust/execute/torture/issue-3126.rs
! 97f421639e726c9a811adfdd8b583ea4  gcc/testsuite/rust/execute/torture/issue-3381.rs
! d6d01f4144498ec9f00ffa866981dbb4  gcc/testsuite/rust/execute/torture/issue-3502.rs
! 66b5ccda9023acd8a0d6e1339fee0f09  gcc/testsuite/rust/execute/torture/issue-3836.rs
  1c8ab14dfd7607c77a2ae45ffa4adc37  gcc/testsuite/rust/execute/torture/issue-4242.rs
! 8efe65f5ec5ca3b8c78e44c2715c8c59  gcc/testsuite/rust/execute/torture/issue-647.rs
! b4f8eea90f82d2c33cf223fa89563c57  gcc/testsuite/rust/execute/torture/issue-845.rs
! a49dd9edf48eec1cd3bb1cf4896a8a83  gcc/testsuite/rust/execute/torture/issue-851.rs
! e79ef9dc28c84445eac4ce32ebe6adcb  gcc/testsuite/rust/execute/torture/issue-858.rs
  449e42630eb5fd571755658ebbb341c4  gcc/testsuite/rust/execute/torture/issue-976.rs
  a7f4a565f46d8c8589434308e7968386  gcc/testsuite/rust/execute/torture/issue-995.rs
! 073edd8112fc3c910df51654db9d2f1c  gcc/testsuite/rust/execute/torture/iter1.rs
  58e6d4e2e10974545dcb38e56ab711d4  gcc/testsuite/rust/execute/torture/let-identifierpattern-subpattern.rs
  e5d4fd47103c9b2ec08ec98416082eb9  gcc/testsuite/rust/execute/torture/let-pattern-1.rs
  3b24a17a7ebb32561ec8e5ad521f06a0  gcc/testsuite/rust/execute/torture/link-name.rs
*************** da3cc94e0c8aa9565e49d1bd27995cf8  gcc/te
*** 128041,128052 ****
  b281220ae153f399dd51618f42474958  gcc/testsuite/rust/execute/torture/macros20.rs
  a21c287a31b6ae6ae179b1e5dfa2ac1e  gcc/testsuite/rust/execute/torture/macros21.rs
  4275d231e07ef7914d5814da80620035  gcc/testsuite/rust/execute/torture/macros22.rs
! 25ca7869554b1448eec52e0fbecb8c59  gcc/testsuite/rust/execute/torture/macros23.rs
  67746d30dadbf3035d2d8852c7dbc69c  gcc/testsuite/rust/execute/torture/macros24.rs
  eadfe7cba5cb9c5ec331deb7f77f0dbc  gcc/testsuite/rust/execute/torture/macros25.rs
  105c0886cf1eed36dc2251a200d0211b  gcc/testsuite/rust/execute/torture/macros26.rs
  c3c01ded1bb615ed722fd3e375605462  gcc/testsuite/rust/execute/torture/macros27.rs
! 89bb295740d60b5076b09ae3bcc5e8cc  gcc/testsuite/rust/execute/torture/macros28.rs
  537527f89c1e8934f8ae9a83f325faf3  gcc/testsuite/rust/execute/torture/macros29.rs
  c4ca94d1444b919b584963996a8b5c93  gcc/testsuite/rust/execute/torture/macros3.rs
  f1af5dc0f2bfff937199c36b0c439a26  gcc/testsuite/rust/execute/torture/macros30.rs
--- 128135,128146 ----
  b281220ae153f399dd51618f42474958  gcc/testsuite/rust/execute/torture/macros20.rs
  a21c287a31b6ae6ae179b1e5dfa2ac1e  gcc/testsuite/rust/execute/torture/macros21.rs
  4275d231e07ef7914d5814da80620035  gcc/testsuite/rust/execute/torture/macros22.rs
! 96550fbe0c3128feee77a41dfc4caa9a  gcc/testsuite/rust/execute/torture/macros23.rs
  67746d30dadbf3035d2d8852c7dbc69c  gcc/testsuite/rust/execute/torture/macros24.rs
  eadfe7cba5cb9c5ec331deb7f77f0dbc  gcc/testsuite/rust/execute/torture/macros25.rs
  105c0886cf1eed36dc2251a200d0211b  gcc/testsuite/rust/execute/torture/macros26.rs
  c3c01ded1bb615ed722fd3e375605462  gcc/testsuite/rust/execute/torture/macros27.rs
! bf443f4e61bd165416067dee392a404c  gcc/testsuite/rust/execute/torture/macros28.rs
  537527f89c1e8934f8ae9a83f325faf3  gcc/testsuite/rust/execute/torture/macros29.rs
  c4ca94d1444b919b584963996a8b5c93  gcc/testsuite/rust/execute/torture/macros3.rs
  f1af5dc0f2bfff937199c36b0c439a26  gcc/testsuite/rust/execute/torture/macros30.rs
*************** d53a9a5ff7302a95bec132cd6bba3962  gcc/te
*** 128079,128158 ****
  b6c1253a40c7a21db9fac6062ae50a91  gcc/testsuite/rust/execute/torture/match_tuple1.rs
  bd1d405cfc6bdbadc0c47d3aab4b794b  gcc/testsuite/rust/execute/torture/matches_macro.rs
  7985e85176bb59d44b2aac56f2ca81c0  gcc/testsuite/rust/execute/torture/method1.rs
! d5dc0260dfa3bbf3e347b8e56945fa1e  gcc/testsuite/rust/execute/torture/method2.rs
! d19bc56fc070b84e1ca39de0f28a852e  gcc/testsuite/rust/execute/torture/method3.rs
! 8f2351f701c6ec39cf992f060166dfb7  gcc/testsuite/rust/execute/torture/method4.rs
! c744a77a54b5b3c0d239cd6452eab119  gcc/testsuite/rust/execute/torture/min_specialization2.rs
! e007cd93facba6b11ec1ba055a220e75  gcc/testsuite/rust/execute/torture/min_specialization3.rs
  3f13ddef20c0f036bfffdb2d02bc5334  gcc/testsuite/rust/execute/torture/mod1.rs
  d4b094ee76b23fbfd1be6f64c23f0041  gcc/testsuite/rust/execute/torture/multiline-string.rs
  e957051762f4d5dabfb1d25f0630864d  gcc/testsuite/rust/execute/torture/name_resolution.rs
  533763469b219f004d5d73c7642553c9  gcc/testsuite/rust/execute/torture/named_variadic.rs
  b387fd12ecb9c7890bdc7ee742312285  gcc/testsuite/rust/execute/torture/offset_of1.rs
! dda9820471c4dc11cd335034d35e5ccf  gcc/testsuite/rust/execute/torture/operator_overload_1.rs
! 4e5ed0e919b2c59a3b848e46a7384626  gcc/testsuite/rust/execute/torture/operator_overload_10.rs
! 6a53583664982c8979b58e254484e47c  gcc/testsuite/rust/execute/torture/operator_overload_11.rs
! 567b3a868cbdcf7a9cf7450fba4d1ffe  gcc/testsuite/rust/execute/torture/operator_overload_12.rs
! 9efcdefa14aec863f1eca165f6aa7b91  gcc/testsuite/rust/execute/torture/operator_overload_2.rs
! c779dfb967dbac26990ef5b03b51002a  gcc/testsuite/rust/execute/torture/operator_overload_3.rs
! 2438b0880a7abb7136f5326bc8019e6e  gcc/testsuite/rust/execute/torture/operator_overload_4.rs
! 19e3b4c153ef357fce3ed1109a69b79d  gcc/testsuite/rust/execute/torture/operator_overload_5.rs
! fbcd41be2b08da7908ab89e54b177cfd  gcc/testsuite/rust/execute/torture/operator_overload_6.rs
! 0c4471748f5ea55d5f3f2ef107302e7e  gcc/testsuite/rust/execute/torture/operator_overload_7.rs
! 888c1a26ac2690b214ed602ad5f13bdb  gcc/testsuite/rust/execute/torture/operator_overload_8.rs
! 590e9f21c9a0ed350404c74654ae9d37  gcc/testsuite/rust/execute/torture/operator_overload_9.rs
  b1bd8293d4d79d471bcee8c9628e98f8  gcc/testsuite/rust/execute/torture/overflow1.rs
! ace2ab3c1ce74a48ed297da336519a7a  gcc/testsuite/rust/execute/torture/partial-eq-1.rs
! 7f73ef0b8fade6a91eac04a7da93f272  gcc/testsuite/rust/execute/torture/partial-eq-2.rs
! 9a83c866b27c0c30b61806ea63d6f55c  gcc/testsuite/rust/execute/torture/partial-eq-3.rs
! f78278d9f8fad7c99e5ea083d544cb61  gcc/testsuite/rust/execute/torture/partial-eq-4.rs
! aab77de5851ce017a67940fea1caa9ae  gcc/testsuite/rust/execute/torture/partial-ord-1.rs
! b994ed9ce989e14ccadbdf906df04d7c  gcc/testsuite/rust/execute/torture/partial-ord-2.rs
! d92f010abfc6a0a554d4ddb1822b2f3d  gcc/testsuite/rust/execute/torture/partial-ord-3.rs
! 85224be8222346cb96ffc42a275717f7  gcc/testsuite/rust/execute/torture/partial-ord-4.rs
! 98c769ff628fd851a4879052feed6195  gcc/testsuite/rust/execute/torture/partial-ord-5.rs
! 6ce121e27f170ceba4a0e46f40551864  gcc/testsuite/rust/execute/torture/partial-ord-6.rs
! 0263ed17cb91d2e5c2d8bcbbb76a0202  gcc/testsuite/rust/execute/torture/prefetch_data.rs
  5988fffedf274ba8d07caa5e3d9d12d4  gcc/testsuite/rust/execute/torture/ref-pattern1.rs
! dd58e1082f60a5368ebe81642f8cc0f0  gcc/testsuite/rust/execute/torture/ref-pattern2.rs
! a6c6f34cfdbdb4f4cef812852fec8f17  gcc/testsuite/rust/execute/torture/sip-hasher.rs
! 5835ff2a0ce23dfa254a210e8c01c3f0  gcc/testsuite/rust/execute/torture/slice-magic.rs
! 059de3f8e1a277e43310a9ccdc1749a9  gcc/testsuite/rust/execute/torture/slice-magic2.rs
! afc782817d48f2259095dafb108d9f80  gcc/testsuite/rust/execute/torture/slice1.rs
! 7f58cd080e9071bf9aa8b7a9da902ff4  gcc/testsuite/rust/execute/torture/str-layout1.rs
  d45464967a452ff175b27ff3b0890b31  gcc/testsuite/rust/execute/torture/str-zero.rs
  f69bfb2937d07310ce98001e8938fe72  gcc/testsuite/rust/execute/torture/struct-pattern-match.rs
  fe8d09c5e3db9666f4831da3d247b28b  gcc/testsuite/rust/execute/torture/struct_pattern1.rs
! 219f89de9c1c232ed85025aff0b4f1dc  gcc/testsuite/rust/execute/torture/trait1.rs
! 7ccb805ffe7885efab539189726d54d5  gcc/testsuite/rust/execute/torture/trait10.rs
! a60a0abe5e8f50ac9c0b8b4f683c7f35  gcc/testsuite/rust/execute/torture/trait11.rs
! 312bacbb64cf19b9cd3f778ce0fd6424  gcc/testsuite/rust/execute/torture/trait12.rs
! bf777904ba4c07bc57fac1fa0f684448  gcc/testsuite/rust/execute/torture/trait13.rs
! a24dd83293f855e40f210dbb907f65d0  gcc/testsuite/rust/execute/torture/trait14.rs
! c4e5fbc1550bb9894f84877fbb5a0bd8  gcc/testsuite/rust/execute/torture/trait15.rs
  621c4e646d592dde3efc00a32873545b  gcc/testsuite/rust/execute/torture/trait16.rs
  8fb625e62f11cb16e91efcb7b9e39926  gcc/testsuite/rust/execute/torture/trait17.rs
  fc8c3be91dabb27e15883b50dc6a2e7f  gcc/testsuite/rust/execute/torture/trait18.rs
! 2bdd6f23fa37bce05b9a97683c232d39  gcc/testsuite/rust/execute/torture/trait2.rs
! d04fe352d2cbe0aafd0191cf7e5e0793  gcc/testsuite/rust/execute/torture/trait3.rs
! 65050d814dbad819494405043d2cd890  gcc/testsuite/rust/execute/torture/trait4.rs
! 198c11281dc9c98375428c52c0dae3fa  gcc/testsuite/rust/execute/torture/trait5.rs
! 863ec14b61b319481d8a4c9967cd2f9f  gcc/testsuite/rust/execute/torture/trait6.rs
! cc2cdb763843ab4c3244cd4ac3003bc6  gcc/testsuite/rust/execute/torture/trait7.rs
! ecafe513273e63e71cd928b53b02d5c9  gcc/testsuite/rust/execute/torture/trait8.rs
! 6934bf3f42c3e3d95de6d9091cf95cec  gcc/testsuite/rust/execute/torture/trait9.rs
! 7d523840107b55fa60669f67bdb6e437  gcc/testsuite/rust/execute/torture/transmute1.rs
! 4c0cc5cc1c3416c7d8ae0e009be50ebe  gcc/testsuite/rust/execute/torture/wrapping_op1.rs
! 0191f519c13fb014fd21afe64ac4b7c6  gcc/testsuite/rust/execute/torture/wrapping_op2.rs
  0e0f3ebabd8be7fe40d5e8bc054bf19d  gcc/testsuite/rust/execute/xfail/macro1.rs
  fabc20160a01c0fa1e0c900262de3997  gcc/testsuite/rust/execute/xfail/match-identifierpattern-enum.rs
  ffa2bd6f2a9efb48af0e98e648eef6ac  gcc/testsuite/rust/link/generic_function_0.rs
! f2a777658cea0585f5d5a1d20ec2d40e  gcc/testsuite/rust/link/generic_function_1.rs
  df61a5f5576463f4e163f1364e8c63df  gcc/testsuite/rust/link/link.exp
  e8f8000787067fbf63460ed56e1fd29e  gcc/testsuite/rust/link/simple_function_0.rs
  935c741fe66a7107d877188eb7365214  gcc/testsuite/rust/link/simple_function_1.rs
  06f68dc4a7ab6af5ed722d9ddcda10ff  gcc/testsuite/rust/link/trait_import_0.rs
! 5eecf3163a174bd8047aec53c9145ab2  gcc/testsuite/rust/link/trait_import_1.rs
  7ba67c515a5228a7472fd045dd8397a0  gcc/testsuite/rust/rustc/README.md
  efd93d54e933def690c5f068247aaaf0  gcc/testsuite/rust/rustc/rustc.exp
  f5ea66a6a877aa916f3f82001c49ac06  gcc/testsuite/sarif-replay.dg/2.1.0-invalid/3.1-not-an-object.sarif
--- 128173,128252 ----
  b6c1253a40c7a21db9fac6062ae50a91  gcc/testsuite/rust/execute/torture/match_tuple1.rs
  bd1d405cfc6bdbadc0c47d3aab4b794b  gcc/testsuite/rust/execute/torture/matches_macro.rs
  7985e85176bb59d44b2aac56f2ca81c0  gcc/testsuite/rust/execute/torture/method1.rs
! a260aeeefeb39cc5b763d1a686ba73c1  gcc/testsuite/rust/execute/torture/method2.rs
! 461e57c8a14391d04550c0fe19b8ac6f  gcc/testsuite/rust/execute/torture/method3.rs
! a627ed448104c77a44ddbf23c7d7ff5c  gcc/testsuite/rust/execute/torture/method4.rs
! f8902e1866727abb028132dce3a5d293  gcc/testsuite/rust/execute/torture/min_specialization2.rs
! 2cf0c2589fbe27e33fa7892a1eabbe9b  gcc/testsuite/rust/execute/torture/min_specialization3.rs
  3f13ddef20c0f036bfffdb2d02bc5334  gcc/testsuite/rust/execute/torture/mod1.rs
  d4b094ee76b23fbfd1be6f64c23f0041  gcc/testsuite/rust/execute/torture/multiline-string.rs
  e957051762f4d5dabfb1d25f0630864d  gcc/testsuite/rust/execute/torture/name_resolution.rs
  533763469b219f004d5d73c7642553c9  gcc/testsuite/rust/execute/torture/named_variadic.rs
  b387fd12ecb9c7890bdc7ee742312285  gcc/testsuite/rust/execute/torture/offset_of1.rs
! 7ce60e7c9a23b88e531929901b08bc2a  gcc/testsuite/rust/execute/torture/operator_overload_1.rs
! 7a9ab06f6318e84683222953e87ead0c  gcc/testsuite/rust/execute/torture/operator_overload_10.rs
! 7f955493a04769128e5831b24700a8ef  gcc/testsuite/rust/execute/torture/operator_overload_11.rs
! ddbb0d54dbe04e9a44120bfa8f2ddce3  gcc/testsuite/rust/execute/torture/operator_overload_12.rs
! a71b378698434db041c087693e9ae6e6  gcc/testsuite/rust/execute/torture/operator_overload_2.rs
! f6d9bbcfcbcc50bacdc26faba32b24fe  gcc/testsuite/rust/execute/torture/operator_overload_3.rs
! 4e2f2e5fc14e77826cda18f8eeea6e1a  gcc/testsuite/rust/execute/torture/operator_overload_4.rs
! 1c540b14fca68ab8da4314e8a206914c  gcc/testsuite/rust/execute/torture/operator_overload_5.rs
! e1739fab90e1a08211162fa3f0f5ba40  gcc/testsuite/rust/execute/torture/operator_overload_6.rs
! 215ac5ddf1fe7ccb6405688ca951abfc  gcc/testsuite/rust/execute/torture/operator_overload_7.rs
! bf005623bd9bde86ec99b600f88256c0  gcc/testsuite/rust/execute/torture/operator_overload_8.rs
! 7f4dc06f5d85096aa9d860273afffd64  gcc/testsuite/rust/execute/torture/operator_overload_9.rs
  b1bd8293d4d79d471bcee8c9628e98f8  gcc/testsuite/rust/execute/torture/overflow1.rs
! 282d31a0a6e64109320cd89a553dcb9b  gcc/testsuite/rust/execute/torture/partial-eq-1.rs
! 5b25b996734aaab41eda094c4ffd6b3f  gcc/testsuite/rust/execute/torture/partial-eq-2.rs
! ae032e7a6b620dceda1f72f7aef49015  gcc/testsuite/rust/execute/torture/partial-eq-3.rs
! 6fff728e7326c764389fce2bd2661bbc  gcc/testsuite/rust/execute/torture/partial-eq-4.rs
! 2a40d8d0b7b49b23682014e56e032ad4  gcc/testsuite/rust/execute/torture/partial-ord-1.rs
! d34eb30ea434fa4ce6183a96019e0fe7  gcc/testsuite/rust/execute/torture/partial-ord-2.rs
! c1713ed30269d078883e0be38f7f3ef1  gcc/testsuite/rust/execute/torture/partial-ord-3.rs
! 36b79c1e110c783296d4eb870ceb49bc  gcc/testsuite/rust/execute/torture/partial-ord-4.rs
! c02254917bdf28ebd668fa95a9ccbeda  gcc/testsuite/rust/execute/torture/partial-ord-5.rs
! 2c77b876542802c801ac9d4746fadd66  gcc/testsuite/rust/execute/torture/partial-ord-6.rs
! 531083707d773de2914d4fa7df46576e  gcc/testsuite/rust/execute/torture/prefetch_data.rs
  5988fffedf274ba8d07caa5e3d9d12d4  gcc/testsuite/rust/execute/torture/ref-pattern1.rs
! d8e34c2b594bbeb40031ffc8818dfb03  gcc/testsuite/rust/execute/torture/ref-pattern2.rs
! a42d8ecb9b2c18b0ae7133071ac2c217  gcc/testsuite/rust/execute/torture/sip-hasher.rs
! 590900c829f19a6e39defc87b838b4d5  gcc/testsuite/rust/execute/torture/slice-magic.rs
! be870a4176f04b8de9b7572abb1b2fa1  gcc/testsuite/rust/execute/torture/slice-magic2.rs
! b191fec760e5441a85bbd57479f78087  gcc/testsuite/rust/execute/torture/slice1.rs
! 525568964207360296b2013476c1624a  gcc/testsuite/rust/execute/torture/str-layout1.rs
  d45464967a452ff175b27ff3b0890b31  gcc/testsuite/rust/execute/torture/str-zero.rs
  f69bfb2937d07310ce98001e8938fe72  gcc/testsuite/rust/execute/torture/struct-pattern-match.rs
  fe8d09c5e3db9666f4831da3d247b28b  gcc/testsuite/rust/execute/torture/struct_pattern1.rs
! f9397ae859a7af6ce6f9e81dc4837f50  gcc/testsuite/rust/execute/torture/trait1.rs
! 5c2276e53a7d37be016a7ac45d66ba5e  gcc/testsuite/rust/execute/torture/trait10.rs
! beed2cefa0bf5680e6b40f57b9e039a1  gcc/testsuite/rust/execute/torture/trait11.rs
! 61c9a5e255c6cceb4d0c7b95ef7d6369  gcc/testsuite/rust/execute/torture/trait12.rs
! bbc24bde4737ec793254e688ac141cf8  gcc/testsuite/rust/execute/torture/trait13.rs
! c11eafed02905a9d76da219590387ac6  gcc/testsuite/rust/execute/torture/trait14.rs
! dc8f6fd56bcc9befeaf32ec4c8eb9e80  gcc/testsuite/rust/execute/torture/trait15.rs
  621c4e646d592dde3efc00a32873545b  gcc/testsuite/rust/execute/torture/trait16.rs
  8fb625e62f11cb16e91efcb7b9e39926  gcc/testsuite/rust/execute/torture/trait17.rs
  fc8c3be91dabb27e15883b50dc6a2e7f  gcc/testsuite/rust/execute/torture/trait18.rs
! 887a65a49d2543f5f55f3f4464b3b699  gcc/testsuite/rust/execute/torture/trait2.rs
! f4de79988d3e859ef5fd71b9a3c655df  gcc/testsuite/rust/execute/torture/trait3.rs
! d1932cdfd1ddf9fccd9dfd51b86e803c  gcc/testsuite/rust/execute/torture/trait4.rs
! 22107751a7a2fb30cc5d65e73deee1e9  gcc/testsuite/rust/execute/torture/trait5.rs
! 548705b3fdd6ddaacd082a911ac3780c  gcc/testsuite/rust/execute/torture/trait6.rs
! aeec523e5ad58d08e7af6b343248afa3  gcc/testsuite/rust/execute/torture/trait7.rs
! 79aea26b40f663d62e00f971e1838463  gcc/testsuite/rust/execute/torture/trait8.rs
! 6368a52f67dfa8937c7f391d126397ba  gcc/testsuite/rust/execute/torture/trait9.rs
! 982cce7b72f64991ddd1cfe8bfa53932  gcc/testsuite/rust/execute/torture/transmute1.rs
! 1b17603fa449773324c964a1bcf7f95a  gcc/testsuite/rust/execute/torture/wrapping_op1.rs
! fceabb835a14bfecb7481955919c4f7a  gcc/testsuite/rust/execute/torture/wrapping_op2.rs
  0e0f3ebabd8be7fe40d5e8bc054bf19d  gcc/testsuite/rust/execute/xfail/macro1.rs
  fabc20160a01c0fa1e0c900262de3997  gcc/testsuite/rust/execute/xfail/match-identifierpattern-enum.rs
  ffa2bd6f2a9efb48af0e98e648eef6ac  gcc/testsuite/rust/link/generic_function_0.rs
! 273b83a82bb22f5d14cfc529c963e5c8  gcc/testsuite/rust/link/generic_function_1.rs
  df61a5f5576463f4e163f1364e8c63df  gcc/testsuite/rust/link/link.exp
  e8f8000787067fbf63460ed56e1fd29e  gcc/testsuite/rust/link/simple_function_0.rs
  935c741fe66a7107d877188eb7365214  gcc/testsuite/rust/link/simple_function_1.rs
  06f68dc4a7ab6af5ed722d9ddcda10ff  gcc/testsuite/rust/link/trait_import_0.rs
! 6c4c79b9f86d26ab7ca5de9906a59bc8  gcc/testsuite/rust/link/trait_import_1.rs
  7ba67c515a5228a7472fd045dd8397a0  gcc/testsuite/rust/rustc/README.md
  efd93d54e933def690c5f068247aaaf0  gcc/testsuite/rust/rustc/rustc.exp
  f5ea66a6a877aa916f3f82001c49ac06  gcc/testsuite/sarif-replay.dg/2.1.0-invalid/3.1-not-an-object.sarif
*************** b528a0932f50504df146d112f7d01a5c  gcc/tr
*** 128268,128274 ****
  1718a36253ebbb17fe4570fc768216c9  gcc/tree-chrec.cc
  0e4a484c6387f9be0a506783637432f9  gcc/tree-chrec.h
  c610e208c5e1da4ee1bff58dac50e79a  gcc/tree-complex.cc
! 1191933aea8ceb0c68bc9e4b2ab3971b  gcc/tree-core.h
  77244f55dae576a255f5b69b70774e54  gcc/tree-data-ref.cc
  e43a555cdaab9a97ba3910364910f865  gcc/tree-data-ref.h
  f01aeac56dffd44808096094e2bf76c1  gcc/tree-dfa.cc
--- 128362,128368 ----
  1718a36253ebbb17fe4570fc768216c9  gcc/tree-chrec.cc
  0e4a484c6387f9be0a506783637432f9  gcc/tree-chrec.h
  c610e208c5e1da4ee1bff58dac50e79a  gcc/tree-complex.cc
! 455bddf8ce2fe4dfcb90a83d94c24c60  gcc/tree-core.h
  77244f55dae576a255f5b69b70774e54  gcc/tree-data-ref.cc
  e43a555cdaab9a97ba3910364910f865  gcc/tree-data-ref.h
  f01aeac56dffd44808096094e2bf76c1  gcc/tree-dfa.cc
*************** ef1cb0fba517532ecda9f4e0dd5218f7  gcc/tr
*** 128294,128300 ****
  708a19806855f78da0268f0c25a1c1c0  gcc/tree-logical-location.cc
  fba074361c117a968daf282ef88a2b6e  gcc/tree-logical-location.h
  809e077fea6aa1e38be693ae0a16dee1  gcc/tree-loop-distribution.cc
! 87cc8ab545fc5cfef7174e99c72a407a  gcc/tree-nested.cc
  b9bad013f5186a6cf78fe8adbe457945  gcc/tree-nested.h
  b2cc2bfd702552bff382308428fec556  gcc/tree-nrv.cc
  ee80014e23feed8ed49cf5c4b1fe225f  gcc/tree-object-size.cc
--- 128388,128394 ----
  708a19806855f78da0268f0c25a1c1c0  gcc/tree-logical-location.cc
  fba074361c117a968daf282ef88a2b6e  gcc/tree-logical-location.h
  809e077fea6aa1e38be693ae0a16dee1  gcc/tree-loop-distribution.cc
! dfd20c8b11a281f68c975c63033ed5e0  gcc/tree-nested.cc
  b9bad013f5186a6cf78fe8adbe457945  gcc/tree-nested.h
  b2cc2bfd702552bff382308428fec556  gcc/tree-nrv.cc
  ee80014e23feed8ed49cf5c4b1fe225f  gcc/tree-object-size.cc
*************** beaa17685ead93eee17f6373d004c4c4  gcc/tr
*** 128308,128314 ****
  460fc341cb2d78f53e0a27c81de36a7d  gcc/tree-phinodes.h
  10ba4bea4c7470735678acc6088c06d5  gcc/tree-predcom.cc
  529cb4117fb3ff7fd899c570bd97e944  gcc/tree-pretty-print-markup.h
! 75f7536de821e165a3a39bbd1cdfe9d8  gcc/tree-pretty-print.cc
  fd4dd1219acc650a4f7855faa0097964  gcc/tree-pretty-print.h
  7c11aa147a6d02acce5170cb35aed445  gcc/tree-profile.cc
  30eadcd3625eaa7cbebc8de55729efbc  gcc/tree-scalar-evolution.cc
--- 128402,128408 ----
  460fc341cb2d78f53e0a27c81de36a7d  gcc/tree-phinodes.h
  10ba4bea4c7470735678acc6088c06d5  gcc/tree-predcom.cc
  529cb4117fb3ff7fd899c570bd97e944  gcc/tree-pretty-print-markup.h
! 5c27ec66167b88ee1ac42a16d76266bd  gcc/tree-pretty-print.cc
  fd4dd1219acc650a4f7855faa0097964  gcc/tree-pretty-print.h
  7c11aa147a6d02acce5170cb35aed445  gcc/tree-profile.cc
  30eadcd3625eaa7cbebc8de55729efbc  gcc/tree-scalar-evolution.cc
*************** ec0ea4b2fca8f29ceacc9fa4130673d0  gcc/tr
*** 128342,128348 ****
  1f70c217ef5bd5f655512b9232754870  gcc/tree-ssa-loop-ivopts.h
  71ebf1f6c8d82b1fdbca6c7aa3bd14cb  gcc/tree-ssa-loop-manip.cc
  fbcc93539b376489c1256eb8cf2d4800  gcc/tree-ssa-loop-manip.h
! 45dcb23db46972c4a2e823140623c9e8  gcc/tree-ssa-loop-niter.cc
  189317c0b965ddd0ee491f8e45af4b0d  gcc/tree-ssa-loop-niter.h
  523a4b7c5b7113009b3b1f0f514d0cd3  gcc/tree-ssa-loop-prefetch.cc
  00d71257ae0536e64bdea226f1e5ef5f  gcc/tree-ssa-loop-split.cc
--- 128436,128442 ----
  1f70c217ef5bd5f655512b9232754870  gcc/tree-ssa-loop-ivopts.h
  71ebf1f6c8d82b1fdbca6c7aa3bd14cb  gcc/tree-ssa-loop-manip.cc
  fbcc93539b376489c1256eb8cf2d4800  gcc/tree-ssa-loop-manip.h
! 7025f238a60607230de6b49275eda668  gcc/tree-ssa-loop-niter.cc
  189317c0b965ddd0ee491f8e45af4b0d  gcc/tree-ssa-loop-niter.h
  523a4b7c5b7113009b3b1f0f514d0cd3  gcc/tree-ssa-loop-prefetch.cc
  00d71257ae0536e64bdea226f1e5ef5f  gcc/tree-ssa-loop-split.cc
*************** af4c63760c432f66b1c6c8e7e7666699  gcc/tr
*** 128389,128414 ****
  629c2d175128efb2809d4ed7e08f1a18  gcc/tree-streamer-out.cc
  22cddc57dea71a3e5c57e033b6f86476  gcc/tree-streamer.cc
  6714826bb9cd5f171a08cbabcb1da8e6  gcc/tree-streamer.h
! fc4b4f80b4c39a4bf73ced787dec927c  gcc/tree-switch-conversion.cc
  ebb8ac3717c1bf5db4371da2f3cf6af7  gcc/tree-switch-conversion.h
  c98debbdc978c10e8934f3b4fb7e2504  gcc/tree-tailcall.cc
  afc64fe5f2d0be7edd7fd887eb73b974  gcc/tree-vect-data-refs.cc
  e569116acd109106c3f93f17b35e82c9  gcc/tree-vect-generic.cc
! 47f4c512832f0e3fbbb9517328f6f59d  gcc/tree-vect-loop-manip.cc
! f7cd96b3e2ea80ad7799f14ee4af5595  gcc/tree-vect-loop.cc
! 1b7dbf0667537cd5ff3a40f07bef6ffa  gcc/tree-vect-patterns.cc
  588899232babed9c67e61795ff405608  gcc/tree-vect-slp-patterns.cc
  6c3b37caceaea7946e7fde6dfa408f3f  gcc/tree-vect-slp.cc
! 3995f29389898876ccbfdde9180a5bbd  gcc/tree-vect-stmts.cc
  c8efeee600d612c4bae8dda4bd45ee54  gcc/tree-vector-builder.cc
  258611ff1e83cc7680e8c9f033499665  gcc/tree-vector-builder.h
  c516450d07587e25c338c4223664b2ad  gcc/tree-vectorizer.cc
! b96a5b5a61fb1629fdafddfa4409547b  gcc/tree-vectorizer.h
  6af612260e9aa57da3abab8955305844  gcc/tree-vrp.cc
  a19edad681d27130bd2a0d83768ac946  gcc/tree-vrp.h
! 92d9ea2670b1e0a04299dde2fbab863d  gcc/tree.cc
  2b3067f4ee14760d08fdfee4eb6b8a00  gcc/tree.def
! 44f0f974feafc527c34656a0dc67ae08  gcc/tree.h
  b642c83968cda285afc700da2fb276d5  gcc/treestruct.def
  84205f5a5b424f30ce8c527b234e3f94  gcc/tristate.cc
  ea37ace5dddab6f4b2b9608516bebc35  gcc/tristate.h
--- 128483,128508 ----
  629c2d175128efb2809d4ed7e08f1a18  gcc/tree-streamer-out.cc
  22cddc57dea71a3e5c57e033b6f86476  gcc/tree-streamer.cc
  6714826bb9cd5f171a08cbabcb1da8e6  gcc/tree-streamer.h
! 9eb012617e4989c6e0f013631b853d98  gcc/tree-switch-conversion.cc
  ebb8ac3717c1bf5db4371da2f3cf6af7  gcc/tree-switch-conversion.h
  c98debbdc978c10e8934f3b4fb7e2504  gcc/tree-tailcall.cc
  afc64fe5f2d0be7edd7fd887eb73b974  gcc/tree-vect-data-refs.cc
  e569116acd109106c3f93f17b35e82c9  gcc/tree-vect-generic.cc
! 1fda189ce70e35745f865fd7705fd60a  gcc/tree-vect-loop-manip.cc
! ff900d86848016b11aeec88d9e225674  gcc/tree-vect-loop.cc
! 45156c2c4f681900600c801161a90601  gcc/tree-vect-patterns.cc
  588899232babed9c67e61795ff405608  gcc/tree-vect-slp-patterns.cc
  6c3b37caceaea7946e7fde6dfa408f3f  gcc/tree-vect-slp.cc
! 6373d046b1d3dc14cec984ec55658793  gcc/tree-vect-stmts.cc
  c8efeee600d612c4bae8dda4bd45ee54  gcc/tree-vector-builder.cc
  258611ff1e83cc7680e8c9f033499665  gcc/tree-vector-builder.h
  c516450d07587e25c338c4223664b2ad  gcc/tree-vectorizer.cc
! 69c93a44a2b800f839150157cfd558e1  gcc/tree-vectorizer.h
  6af612260e9aa57da3abab8955305844  gcc/tree-vrp.cc
  a19edad681d27130bd2a0d83768ac946  gcc/tree-vrp.h
! 26e4c4decbadc48ca56beacdcc5cc8ed  gcc/tree.cc
  2b3067f4ee14760d08fdfee4eb6b8a00  gcc/tree.def
! 3c7284eaa6ec4e9196ccee69be8048a4  gcc/tree.h
  b642c83968cda285afc700da2fb276d5  gcc/treestruct.def
  84205f5a5b424f30ce8c527b234e3f94  gcc/tristate.cc
  ea37ace5dddab6f4b2b9608516bebc35  gcc/tristate.h
*************** e1189a7a57364aa6379d885c8c3034c4  gcc/va
*** 128435,128442 ****
  46fa73b8a0c784d01ffa56c8dd1499e4  gcc/value-range-storage.h
  0adce82382d8cbd43c11374a18019b2a  gcc/value-range.cc
  8456af13cd791169eff90d7d6cf3d657  gcc/value-range.h
! 4fcfb97f5fdee9686317186a141f2b4b  gcc/value-relation.cc
! cd4e6196ea1c7eb134b4d7cbadb9dcb3  gcc/value-relation.h
  db99ee82ab71b58820d60f9863e62aac  gcc/var-tracking.cc
  63e6a64533514c36d9e6e1bd510a2c21  gcc/varasm.cc
  69f8e035a8548037bc8c8f7f854253c4  gcc/varasm.h
--- 128529,128536 ----
  46fa73b8a0c784d01ffa56c8dd1499e4  gcc/value-range-storage.h
  0adce82382d8cbd43c11374a18019b2a  gcc/value-range.cc
  8456af13cd791169eff90d7d6cf3d657  gcc/value-range.h
! 79218f1b1541107edcd2c970e947e835  gcc/value-relation.cc
! be431fb5e48823f5b9bce654ae3e7645  gcc/value-relation.h
  db99ee82ab71b58820d60f9863e62aac  gcc/var-tracking.cc
  63e6a64533514c36d9e6e1bd510a2c21  gcc/varasm.cc
  69f8e035a8548037bc8c8f7f854253c4  gcc/varasm.h
*************** c4e8176c1964a5ebe0a55900f2141299  gotool
*** 128478,128484 ****
  eb2aeb3a6cffe7b26a8f1c8a2da23dcd  gotools/gofmt.1
  59530bdf33659b29e73d4adb9f9f6552  include/COPYING
  d32239bcb673463ab874e80d47fae504  include/COPYING3
! 60a932a258f61c0709c5246f77e3f0c0  include/ChangeLog
  4263432a72ff47ed8bf420208ee7eea5  include/ChangeLog-9103
  a43d76108493b20da790f953f829c6a5  include/ChangeLog.jit
  44b123c52a2755c9e6bf43ec0c33ae49  include/ansidecl.h
--- 128572,128578 ----
  eb2aeb3a6cffe7b26a8f1c8a2da23dcd  gotools/gofmt.1
  59530bdf33659b29e73d4adb9f9f6552  include/COPYING
  d32239bcb673463ab874e80d47fae504  include/COPYING3
! d670aa4cb670832ed89b7d35ee8fafc6  include/ChangeLog
  4263432a72ff47ed8bf420208ee7eea5  include/ChangeLog-9103
  a43d76108493b20da790f953f829c6a5  include/ChangeLog.jit
  44b123c52a2755c9e6bf43ec0c33ae49  include/ansidecl.h
*************** e27e2525cf1fed8c89039e133b1e2c85  includ
*** 128505,128513 ****
  c67dacb4baed3b58603898c91e8b3a43  include/getopt.h
  166564252573a229d5ff5df3515f42ab  include/gomp-constants.h
  94b47e7bd114c7bfa9d2eb1ffc606526  include/hashtab.h
! a60e7538de6c6058ce9da2c087d4f509  include/hsa.h
! cb74ebfb08a77d7e3734ec67963de6db  include/hsa_ext_amd.h
! 5443314035a5aba09d31390d9ad93c07  include/hsa_ext_image.h
  96744aabb8a4171ae991e2569e025202  include/leb128.h
  91ecff44973c64cfdfc2e3c412c56a80  include/libcollector.h
  71ab4f2b87330987580da553ce63f7c7  include/libfcollector.h
--- 128599,128607 ----
  c67dacb4baed3b58603898c91e8b3a43  include/getopt.h
  166564252573a229d5ff5df3515f42ab  include/gomp-constants.h
  94b47e7bd114c7bfa9d2eb1ffc606526  include/hashtab.h
! 2118d769c13ea72b98f0c28e1db51b7b  include/hsa.h
! d551a31f3c70723b0e716ae5b1248096  include/hsa_ext_amd.h
! 6188b71a256d4cdc0522d9d8ff6f2807  include/hsa_ext_image.h
  96744aabb8a4171ae991e2569e025202  include/leb128.h
  91ecff44973c64cfdfc2e3c412c56a80  include/libcollector.h
  71ab4f2b87330987580da553ce63f7c7  include/libfcollector.h
*************** c0fa0a593b3a9b1ffd2f84bc40a22980  libbac
*** 128685,128702 ****
  69e738d1cd72baaeda073609f133f005  libbacktrace/xztest.c
  4d7dab09ddbe953244044c8a60434ad9  libbacktrace/zstdtest.c
  08e64385c7a2a6f5a8d0e25f4c237e51  libbacktrace/ztest.c
! 5364e04989abd77daa83c2779cc802de  libcc1/ChangeLog
  e396ef427fc1a75d765f69ea2b48aef9  libcc1/Makefile.am
  270e13d9f539c9eacc16d848641ecb9d  libcc1/Makefile.in
  e6c98f41e0035dd3e80d4c55a6301318  libcc1/aclocal.m4
  a7921a04b41c3295dbab2dd307ae1794  libcc1/callbacks.cc
  4f6c2ccf3b49364f7c5628cca8a9ddcb  libcc1/callbacks.hh
! 9d81ce1461f24e4af7c8639d94f06789  libcc1/cc1plugin-config.h.in
  c82e9b4d1b92d009ed3f69590b3ab9b8  libcc1/compiler-name.hh
  fe09cc65e2242b1f5e5ec3dc3da54c20  libcc1/compiler.cc
  717133d037105479c95708d7362528cf  libcc1/compiler.hh
! 8a59c21abf1b248412a86bea57e1f080  libcc1/configure
! a3cb3c5aa8181bef86a5a5e4e03235c3  libcc1/configure.ac
  ef80637fedf68c1802c638751df08472  libcc1/connection.cc
  5c6231697372fed74cf47657b57a1009  libcc1/connection.hh
  235a6446a8ab713932edafd646e54764  libcc1/context.cc
--- 128779,128796 ----
  69e738d1cd72baaeda073609f133f005  libbacktrace/xztest.c
  4d7dab09ddbe953244044c8a60434ad9  libbacktrace/zstdtest.c
  08e64385c7a2a6f5a8d0e25f4c237e51  libbacktrace/ztest.c
! 1dac6738cba96b602a5cde0ab4964653  libcc1/ChangeLog
  e396ef427fc1a75d765f69ea2b48aef9  libcc1/Makefile.am
  270e13d9f539c9eacc16d848641ecb9d  libcc1/Makefile.in
  e6c98f41e0035dd3e80d4c55a6301318  libcc1/aclocal.m4
  a7921a04b41c3295dbab2dd307ae1794  libcc1/callbacks.cc
  4f6c2ccf3b49364f7c5628cca8a9ddcb  libcc1/callbacks.hh
! 1f3b7b1e8d6a667dd12c3a564524179a  libcc1/cc1plugin-config.h.in
  c82e9b4d1b92d009ed3f69590b3ab9b8  libcc1/compiler-name.hh
  fe09cc65e2242b1f5e5ec3dc3da54c20  libcc1/compiler.cc
  717133d037105479c95708d7362528cf  libcc1/compiler.hh
! f2a1ecfd7e948d5d8ec585c74ecb6b92  libcc1/configure
! 2d7d0ef24d3baa63d1bd9a73c21b64db  libcc1/configure.ac
  ef80637fedf68c1802c638751df08472  libcc1/connection.cc
  5c6231697372fed74cf47657b57a1009  libcc1/connection.hh
  235a6446a8ab713932edafd646e54764  libcc1/context.cc
*************** b07c7863f0e7ad4e6a0915d66fc9e582  libcpp
*** 128753,128769 ****
  4544249e26f23e9431a118ea6d548b52  libcpp/directives.cc
  fe94628a876ca876eb1ac6dc396c0068  libcpp/errors.cc
  a80d04c82bb4afb7bdb159103298ecd0  libcpp/expr.cc
! ce74c78c2cb27bcdeac8a9b0400712cd  libcpp/files.cc
  d7530c9a36bef9a00a690083401e3c83  libcpp/generated_cpp_wcwidth.h
  c496c50691c37464e0aacc985cc3ab1e  libcpp/identifiers.cc
! afbc7662b6b89d8d2eda44c65840759f  libcpp/include/cpplib.h
  ac88522f7fec46badcd2623d11a4b61e  libcpp/include/label-text.h
  dfc19e9ca5f8f9391a0bc03e85de0c2f  libcpp/include/line-map.h
  4779aaa10e24fd2398a105e78bdd88a5  libcpp/include/mkdeps.h
  e7ac00cffa78c0e155998831a5cd5a1e  libcpp/include/rich-location.h
  d516a30568fd33a5e69be4374f27812f  libcpp/include/symtab.h
  6ca7a34229f481396dbd24fb80f45c49  libcpp/init.cc
! 3e462ce9a600968eb061f2c013777a32  libcpp/internal.h
  7b4ae8bcd3e2eb946670229986a08e79  libcpp/lex.cc
  2e71ca8fb0f9a1be425b538ec8b24aae  libcpp/line-map.cc
  46a07100f95f5e354c7e25cd19d26884  libcpp/location-example.txt
--- 128847,128863 ----
  4544249e26f23e9431a118ea6d548b52  libcpp/directives.cc
  fe94628a876ca876eb1ac6dc396c0068  libcpp/errors.cc
  a80d04c82bb4afb7bdb159103298ecd0  libcpp/expr.cc
! 11a16fb1a2db14c6ab9a0b9a36888c57  libcpp/files.cc
  d7530c9a36bef9a00a690083401e3c83  libcpp/generated_cpp_wcwidth.h
  c496c50691c37464e0aacc985cc3ab1e  libcpp/identifiers.cc
! 9781ac9c6a15a5c06d4fa31b2c1863ba  libcpp/include/cpplib.h
  ac88522f7fec46badcd2623d11a4b61e  libcpp/include/label-text.h
  dfc19e9ca5f8f9391a0bc03e85de0c2f  libcpp/include/line-map.h
  4779aaa10e24fd2398a105e78bdd88a5  libcpp/include/mkdeps.h
  e7ac00cffa78c0e155998831a5cd5a1e  libcpp/include/rich-location.h
  d516a30568fd33a5e69be4374f27812f  libcpp/include/symtab.h
  6ca7a34229f481396dbd24fb80f45c49  libcpp/init.cc
! 58d35fc12f681ffa6e7787a9a6500759  libcpp/internal.h
  7b4ae8bcd3e2eb946670229986a08e79  libcpp/lex.cc
  2e71ca8fb0f9a1be425b538ec8b24aae  libcpp/line-map.cc
  46a07100f95f5e354c7e25cd19d26884  libcpp/location-example.txt
*************** a3eb5dee2788fe0a6c42502ba658eddd  libffi
*** 129265,129270 ****
--- 129359,129365 ----
  0f3c94e520870e194cf525de7ec404dc  libffi/testsuite/libffi.go/ffitest.h
  6cfb66c1c00023abb2c2276d85f16e77  libffi/testsuite/libffi.go/go.exp
  189dc193fd0e627a2d55b2e84871edc5  libffi/testsuite/libffi.go/static-chain.h
+ 022e54e5f5f1030f43df9ee002c148ef  libga68/ChangeLog
  32a6cfe3b283d9e93de3717f07be75a9  libga68/Makefile.am
  3a23c15e53f814e130a87c72920a7b13  libga68/Makefile.in
  e582170826a5049ebe5f76ccb66fe5f2  libga68/README
*************** a3a7e9ca6057da9ca42e03e41e1c73f7  libgo/
*** 137488,137497 ****
  dcdf1b680b15b372bdb64cc5107d51b6  libgo/testsuite/libgo-test-support.exp.in
  bf162aa572f7b96b25dbd2b027845d32  libgo/testsuite/libgo.testmain/testmain.exp
  cc9d2a0e34e31ba866a8caf9f46f48f3  libgomp/.gitattributes
! 6c12f860a0ac68f417521bab50fa20fc  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
  714e3b9c0810a61df01246c2a97e825a  libgomp/Makefile.am
! 3c91d539fc9934b5095923265d09ec8f  libgomp/Makefile.in
  f931a90a01b7668928d9f7fcd5c7f3fb  libgomp/acc_prof.h
  9a95db76a2060962a69a4afbc3f6a5bd  libgomp/acinclude.m4
  0630eb0d021f598b58704f3aed8ad2a2  libgomp/aclocal.m4
--- 137583,137592 ----
  dcdf1b680b15b372bdb64cc5107d51b6  libgo/testsuite/libgo-test-support.exp.in
  bf162aa572f7b96b25dbd2b027845d32  libgo/testsuite/libgo.testmain/testmain.exp
  cc9d2a0e34e31ba866a8caf9f46f48f3  libgomp/.gitattributes
! e73fcc95df2f8ca16293bba8328bb804  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
  714e3b9c0810a61df01246c2a97e825a  libgomp/Makefile.am
! a0a1ac8cf0159995930a1c6c60042f2d  libgomp/Makefile.in
  f931a90a01b7668928d9f7fcd5c7f3fb  libgomp/acc_prof.h
  9a95db76a2060962a69a4afbc3f6a5bd  libgomp/acinclude.m4
  0630eb0d021f598b58704f3aed8ad2a2  libgomp/aclocal.m4
*************** f4c32f19e8df86d2ac9c3d4cc4e788f1  libgom
*** 137627,137637 ****
  c798aea0a594e97c71edb3bd8cb93579  libgomp/iter.c
  c3d837ee5481f078c8b7875c1c8306be  libgomp/iter_ull.c
  0214d07a09a5c6e422ca9541c3f6cba4  libgomp/libgomp-plugin.c
! a41a1f7c44a7fd87722b98cc38a4269c  libgomp/libgomp-plugin.h
! bc78934a73836840269a016981725f46  libgomp/libgomp.h
  cd6a22eaa3c99a58084ad32602f087b4  libgomp/libgomp.map
  8b2aa50aecad82171348a6918309afd6  libgomp/libgomp.spec.in
! f0f7bfa5036cdcbeaf6800c337ff73f3  libgomp/libgomp.texi
  519d28879206bae759d85cd3bb7b493b  libgomp/libgomp_f.h.in
  fdadcc861565b686070908326f5e5914  libgomp/libgomp_g.h
  a5060d745455b036a62cc46de1fe0576  libgomp/lock.c
--- 137722,137732 ----
  c798aea0a594e97c71edb3bd8cb93579  libgomp/iter.c
  c3d837ee5481f078c8b7875c1c8306be  libgomp/iter_ull.c
  0214d07a09a5c6e422ca9541c3f6cba4  libgomp/libgomp-plugin.c
! 032e4d3a4921fe9c27b025b7af287723  libgomp/libgomp-plugin.h
! 21a838f501beb823e9b3a82f26344b31  libgomp/libgomp.h
  cd6a22eaa3c99a58084ad32602f087b4  libgomp/libgomp.map
  8b2aa50aecad82171348a6918309afd6  libgomp/libgomp.spec.in
! ab40dff8475a71931fda31d4e1beeeab  libgomp/libgomp.texi
  519d28879206bae759d85cd3bb7b493b  libgomp/libgomp_f.h.in
  fdadcc861565b686070908326f5e5914  libgomp/libgomp_g.h
  a5060d745455b036a62cc46de1fe0576  libgomp/lock.c
*************** f24734d0f876e60f6edf6283233372be  libgom
*** 137656,137679 ****
  61774236eebfdd613ffcc94220388876  libgomp/openacc_lib.h
  70196de117934b7f120ff364699b0142  libgomp/ordered.c
  5d03c6596f36bc8b6127cd047fb71b81  libgomp/parallel.c
! b62a5d146dc237f28322cddf18c8a8bc  libgomp/plugin/Makefrag.am
  00915d9ce3e412613822d106e8c71deb  libgomp/plugin/build-target-indirect-htab.h
  5a5c5a37c066333fa237c308a243cda1  libgomp/plugin/configfrag.ac
  92f97e6738a0b5c4baa390cce2f52809  libgomp/plugin/cuda-lib.def
! fafa9c3e545d79d7206b51c518169ab7  libgomp/plugin/plugin-gcn.c
  623b27d2f16cb605982a0e8b63201a16  libgomp/plugin/plugin-nvptx.c
  0f2fc4f7d0850afd090ba2bb43681c8a  libgomp/priority_queue.c
  5c28f5f7bbc16dada259efc296bbe9f3  libgomp/priority_queue.h
  f1eee47026bb1c516cd1b3a9b9c1c5fa  libgomp/scope.c
  9ffecc292626b5af7bc2f960a91a888c  libgomp/sections.c
  861663907e49ce3b02add14fc05a078c  libgomp/secure_getenv.h
! 2d0a58628ab05794e636d12072e30552  libgomp/simple-allocator.c
  1a659741443df556b83c96cee6a23405  libgomp/single.c
  6197f832f373fba082a73a413e58be94  libgomp/splay-tree.c
  6562eda8ef1a1fd0a2a0a9e5621f684b  libgomp/splay-tree.h
  1775f6ebbed5a9aef1882e66136d9e2b  libgomp/target-cxa-dso-dtor.c
  a8a23ca7c25ca51062b636b0c099096a  libgomp/target-indirect.c
! d51cb0052ff9738ebab7ebce1a36a2b8  libgomp/target.c
  8f03749b5187ce4fb4dce3f7d5b2d9f7  libgomp/task.c
  865cdfdff84a15247efff279e8aca77f  libgomp/taskloop.c
  f540431686cf02c11ae33b1cd66e01ca  libgomp/team.c
--- 137751,137775 ----
  61774236eebfdd613ffcc94220388876  libgomp/openacc_lib.h
  70196de117934b7f120ff364699b0142  libgomp/ordered.c
  5d03c6596f36bc8b6127cd047fb71b81  libgomp/parallel.c
! a5ada313613c1edc8912eba3982794b2  libgomp/plugin/Makefrag.am
  00915d9ce3e412613822d106e8c71deb  libgomp/plugin/build-target-indirect-htab.h
  5a5c5a37c066333fa237c308a243cda1  libgomp/plugin/configfrag.ac
  92f97e6738a0b5c4baa390cce2f52809  libgomp/plugin/cuda-lib.def
! b21ea8a17acdb2346d0b7ef2ab49b81b  libgomp/plugin/mutex.c
! d6433843821f867e6496714960c3130a  libgomp/plugin/plugin-gcn.c
  623b27d2f16cb605982a0e8b63201a16  libgomp/plugin/plugin-nvptx.c
  0f2fc4f7d0850afd090ba2bb43681c8a  libgomp/priority_queue.c
  5c28f5f7bbc16dada259efc296bbe9f3  libgomp/priority_queue.h
  f1eee47026bb1c516cd1b3a9b9c1c5fa  libgomp/scope.c
  9ffecc292626b5af7bc2f960a91a888c  libgomp/sections.c
  861663907e49ce3b02add14fc05a078c  libgomp/secure_getenv.h
! 057a2863d1e8b0d3185fe3634afe1708  libgomp/simple-allocator.c
  1a659741443df556b83c96cee6a23405  libgomp/single.c
  6197f832f373fba082a73a413e58be94  libgomp/splay-tree.c
  6562eda8ef1a1fd0a2a0a9e5621f684b  libgomp/splay-tree.h
  1775f6ebbed5a9aef1882e66136d9e2b  libgomp/target-cxa-dso-dtor.c
  a8a23ca7c25ca51062b636b0c099096a  libgomp/target-indirect.c
! 1d00c9031b9c58e97a284b4d9f403d96  libgomp/target.c
  8f03749b5187ce4fb4dce3f7d5b2d9f7  libgomp/task.c
  865cdfdff84a15247efff279e8aca77f  libgomp/taskloop.c
  f540431686cf02c11ae33b1cd66e01ca  libgomp/team.c
*************** ae0dcb4c08025996b4bf4550cf72832e  libgom
*** 137683,137693 ****
  83cc7a56dc29f0c258b4b9e13798b8ec  libgomp/testsuite/config/default.exp
  989674e1cf3f6739f5d9519d904650c7  libgomp/testsuite/flock
  6c859d1c520b245e51a29693632545d6  libgomp/testsuite/lib/libgomp-dg.exp
! 573cfd695101a3a2073c3296ab1d9ab7  libgomp/testsuite/lib/libgomp.exp
  751966e2063e2e638eb537562f7d4551  libgomp/testsuite/libgomp-site-extra.exp.in
  6d56ea402ff11fa0bd533c6d73e2ecde  libgomp/testsuite/libgomp-test-support.exp.in
  75cc672a1bf25974c5f4c5e3bc1a74b1  libgomp/testsuite/libgomp.c++/affinity-1.C
! bad2b3f952b5f27bb1afaadb25ec0846  libgomp/testsuite/libgomp.c++/alloc-managed-1.C
  b53352ff3eedfe05e27937094f28fa51  libgomp/testsuite/libgomp.c++/allocate-1.C
  621f4af33dbb0ad8d27a2993a83c9953  libgomp/testsuite/libgomp.c++/allocator-1.C
  3f8b62419c2c8e4b2039644a97c006e3  libgomp/testsuite/libgomp.c++/allocator-2.C
--- 137779,137789 ----
  83cc7a56dc29f0c258b4b9e13798b8ec  libgomp/testsuite/config/default.exp
  989674e1cf3f6739f5d9519d904650c7  libgomp/testsuite/flock
  6c859d1c520b245e51a29693632545d6  libgomp/testsuite/lib/libgomp-dg.exp
! 75a6472ade550f7c04d89ab0da87b781  libgomp/testsuite/lib/libgomp.exp
  751966e2063e2e638eb537562f7d4551  libgomp/testsuite/libgomp-site-extra.exp.in
  6d56ea402ff11fa0bd533c6d73e2ecde  libgomp/testsuite/libgomp-test-support.exp.in
  75cc672a1bf25974c5f4c5e3bc1a74b1  libgomp/testsuite/libgomp.c++/affinity-1.C
! 6856c17d5ce497451e68ed6383793c60  libgomp/testsuite/libgomp.c++/alloc-managed-1.C
  b53352ff3eedfe05e27937094f28fa51  libgomp/testsuite/libgomp.c++/allocate-1.C
  621f4af33dbb0ad8d27a2993a83c9953  libgomp/testsuite/libgomp.c++/allocator-1.C
  3f8b62419c2c8e4b2039644a97c006e3  libgomp/testsuite/libgomp.c++/allocator-2.C
*************** b27380cd395a2928996b8531b3eb62ad  libgom
*** 138246,138253 ****
  81cd8a77c25ea49d08f07250f984f35d  libgomp/testsuite/libgomp.c-c++-common/loop-14.c
  dffc3aabaa5b2461aa560fc66c80c0fe  libgomp/testsuite/libgomp.c-c++-common/loop-15.c
  432ac98498f545fab31969b079c5848a  libgomp/testsuite/libgomp.c-c++-common/map-arrayofstruct-1.c
! a47284d2352269483d0c53155360b633  libgomp/testsuite/libgomp.c-c++-common/map-arrayofstruct-2.c
! b89b9c70a8c4c9621441bbf286e6bc0d  libgomp/testsuite/libgomp.c-c++-common/map-arrayofstruct-3.c
  5cdaccb404c42c94d2b0ed71fa9b4450  libgomp/testsuite/libgomp.c-c++-common/masked-1.c
  3c55e0ae7ee0559f4081eae1bd8bcff2  libgomp/testsuite/libgomp.c-c++-common/master-combined-1.c
  27c24d3b4c26f7da3f648202a22fa1e7  libgomp/testsuite/libgomp.c-c++-common/matrix-1.h
--- 138342,138349 ----
  81cd8a77c25ea49d08f07250f984f35d  libgomp/testsuite/libgomp.c-c++-common/loop-14.c
  dffc3aabaa5b2461aa560fc66c80c0fe  libgomp/testsuite/libgomp.c-c++-common/loop-15.c
  432ac98498f545fab31969b079c5848a  libgomp/testsuite/libgomp.c-c++-common/map-arrayofstruct-1.c
! afc52bb7680e92ac0996527dce7bd30f  libgomp/testsuite/libgomp.c-c++-common/map-arrayofstruct-2.c
! b7c55d9a7dcc3e046b1f2c02fc0d61e2  libgomp/testsuite/libgomp.c-c++-common/map-arrayofstruct-3.c
  5cdaccb404c42c94d2b0ed71fa9b4450  libgomp/testsuite/libgomp.c-c++-common/masked-1.c
  3c55e0ae7ee0559f4081eae1bd8bcff2  libgomp/testsuite/libgomp.c-c++-common/master-combined-1.c
  27c24d3b4c26f7da3f648202a22fa1e7  libgomp/testsuite/libgomp.c-c++-common/matrix-1.h
*************** c0f14c17be7a8ee323ff263c601b1acc  libgom
*** 138340,138349 ****
  8a69c8483a5b57f5e10ebe6dc5c601c2  libgomp/testsuite/libgomp.c-c++-common/requires-3-aux.c
  5d5e860b312fff5c34533d48ec0eb681  libgomp/testsuite/libgomp.c-c++-common/requires-3.c
  d2d94dae77980713772e146283d1ebea  libgomp/testsuite/libgomp.c-c++-common/requires-4-aux.c
! 122889a7264fc929d05d7dbcf313e31b  libgomp/testsuite/libgomp.c-c++-common/requires-4.c
! 6c692530980949db1e055c4cc1ed8141  libgomp/testsuite/libgomp.c-c++-common/requires-4a.c
  d9ee2c78e4856929794abece69334a40  libgomp/testsuite/libgomp.c-c++-common/requires-5-aux.c
! 623abfaf9eea646fe7161a0f752e1e31  libgomp/testsuite/libgomp.c-c++-common/requires-5.c
  fd32aa450f6085f94f173a50b28d3d25  libgomp/testsuite/libgomp.c-c++-common/requires-6.c
  195d6a61269c9033d8086247c91f77ee  libgomp/testsuite/libgomp.c-c++-common/requires-7-aux.c
  9d6c03006ea5f6c30ceda8760563f925  libgomp/testsuite/libgomp.c-c++-common/requires-7.c
--- 138436,138445 ----
  8a69c8483a5b57f5e10ebe6dc5c601c2  libgomp/testsuite/libgomp.c-c++-common/requires-3-aux.c
  5d5e860b312fff5c34533d48ec0eb681  libgomp/testsuite/libgomp.c-c++-common/requires-3.c
  d2d94dae77980713772e146283d1ebea  libgomp/testsuite/libgomp.c-c++-common/requires-4-aux.c
! 4cc8a2d7791bb0a26c13312f205083db  libgomp/testsuite/libgomp.c-c++-common/requires-4.c
! 96730961c62dcc79fd879145f17fb9dc  libgomp/testsuite/libgomp.c-c++-common/requires-4a.c
  d9ee2c78e4856929794abece69334a40  libgomp/testsuite/libgomp.c-c++-common/requires-5-aux.c
! 9acba21e7753c559f8f55f3a93b8247b  libgomp/testsuite/libgomp.c-c++-common/requires-5.c
  fd32aa450f6085f94f173a50b28d3d25  libgomp/testsuite/libgomp.c-c++-common/requires-6.c
  195d6a61269c9033d8086247c91f77ee  libgomp/testsuite/libgomp.c-c++-common/requires-7-aux.c
  9d6c03006ea5f6c30ceda8760563f925  libgomp/testsuite/libgomp.c-c++-common/requires-7.c
*************** caca1aa745e9df985dc965e87fc08c02  libgom
*** 138484,138493 ****
  9827d700d634869b090c7636cc855819  libgomp/testsuite/libgomp.c/address-space-1.c
  35d465afcc91bf0b02e92e10cee649bb  libgomp/testsuite/libgomp.c/affinity-1.c
  fe6e22f8c0d2e289ecbd5ea26c9ed1bc  libgomp/testsuite/libgomp.c/affinity-2.c
! 16e18ed8d3e7c4261ccab26d65fe8f3e  libgomp/testsuite/libgomp.c/alloc-managed-1.c
! dfc1682eaf9317e71b962c5bfb71f706  libgomp/testsuite/libgomp.c/alloc-managed-2.c
! 63dfb1b6d4b079adc14c2de67e129bac  libgomp/testsuite/libgomp.c/alloc-managed-3.c
! 874de22196a25858ce2536e46b0fd55d  libgomp/testsuite/libgomp.c/alloc-managed-4.c
  72954694e3579e47a13b08306be48420  libgomp/testsuite/libgomp.c/alloc-pinned-1.c
  ad1652b5597cee1d0b32c5a47dde101b  libgomp/testsuite/libgomp.c/alloc-pinned-2.c
  237dd2407f06187c8d624632bc613b94  libgomp/testsuite/libgomp.c/alloc-pinned-3.c
--- 138580,138589 ----
  9827d700d634869b090c7636cc855819  libgomp/testsuite/libgomp.c/address-space-1.c
  35d465afcc91bf0b02e92e10cee649bb  libgomp/testsuite/libgomp.c/affinity-1.c
  fe6e22f8c0d2e289ecbd5ea26c9ed1bc  libgomp/testsuite/libgomp.c/affinity-2.c
! a52fb92b19587144b8e2695db415d94e  libgomp/testsuite/libgomp.c/alloc-managed-1.c
! 6c8686bb019986a5da3b70a8e4ec67e6  libgomp/testsuite/libgomp.c/alloc-managed-2.c
! 3b5636699d51e6a8a989ff3da594bf65  libgomp/testsuite/libgomp.c/alloc-managed-3.c
! ab38e44db50706b57b8283d050893ca0  libgomp/testsuite/libgomp.c/alloc-managed-4.c
  72954694e3579e47a13b08306be48420  libgomp/testsuite/libgomp.c/alloc-pinned-1.c
  ad1652b5597cee1d0b32c5a47dde101b  libgomp/testsuite/libgomp.c/alloc-pinned-2.c
  237dd2407f06187c8d624632bc613b94  libgomp/testsuite/libgomp.c/alloc-pinned-3.c
*************** cbc8d1928586e24499210f2cd9438551  libgom
*** 139035,139041 ****
  21463b128d951cea6b4ea41176379b5c  libgomp/testsuite/libgomp.fortran/alloc-comp-2.f90
  c9531d367dce1d94d1c60a4798d79661  libgomp/testsuite/libgomp.fortran/alloc-comp-3.f90
  fa45380ee93a1192a6e6ef3538c265be  libgomp/testsuite/libgomp.fortran/alloc-comp-4.f90
! 8da6d3497cf7015763ec2fead66658f0  libgomp/testsuite/libgomp.fortran/alloc-managed-1.f90
  1067959d41c1d727cb8b2b0fb01911a7  libgomp/testsuite/libgomp.fortran/alloc-pinned-1.f90
  9ddc595eb654a0b9f09bb8a163862bd3  libgomp/testsuite/libgomp.fortran/allocatable-comp.f90
  a52dbb26d615e1710d36c7f03cfed8b2  libgomp/testsuite/libgomp.fortran/allocatable1.f90
--- 139131,139137 ----
  21463b128d951cea6b4ea41176379b5c  libgomp/testsuite/libgomp.fortran/alloc-comp-2.f90
  c9531d367dce1d94d1c60a4798d79661  libgomp/testsuite/libgomp.fortran/alloc-comp-3.f90
  fa45380ee93a1192a6e6ef3538c265be  libgomp/testsuite/libgomp.fortran/alloc-comp-4.f90
! d3800d655351c2378745c38ed5a99de4  libgomp/testsuite/libgomp.fortran/alloc-managed-1.f90
  1067959d41c1d727cb8b2b0fb01911a7  libgomp/testsuite/libgomp.fortran/alloc-pinned-1.f90
  9ddc595eb654a0b9f09bb8a163862bd3  libgomp/testsuite/libgomp.fortran/allocatable-comp.f90
  a52dbb26d615e1710d36c7f03cfed8b2  libgomp/testsuite/libgomp.fortran/allocatable1.f90
*************** e0c7a627e2c061377a19883807aabfe2  libgom
*** 139272,139284 ****
  11a2994612dda1ea5d074b912ea7e4aa  libgomp/testsuite/libgomp.fortran/map-alloc-comp-9.f90
  f4ad2acbc3bf213777f658e4581eb805  libgomp/testsuite/libgomp.fortran/map-alloc-ptr-1.f90
  794f9311ffd6c98b9329dc06aa6a39e3  libgomp/testsuite/libgomp.fortran/map-alloc-ptr-2.f90
  fe829ea13169aa018e2a5ad40e7581b9  libgomp/testsuite/libgomp.fortran/map-subarray-2.f90
  c1190bc5bceb25197c6d0d9b5ba5a2ae  libgomp/testsuite/libgomp.fortran/map-subarray-3.f90
  b2c263036c49be63977c634860a8cf72  libgomp/testsuite/libgomp.fortran/map-subarray-4.f90
! 556c53224e40ca2a5519b1262ae4a5f5  libgomp/testsuite/libgomp.fortran/map-subarray-5.f90
  3016a644377b86aff8cd64f0767eac38  libgomp/testsuite/libgomp.fortran/map-subarray-6.f90
  b916bf010c1060aa6d0c7f50cf781f71  libgomp/testsuite/libgomp.fortran/map-subarray-7.f90
  74aa87d51967ef1e4d58a270e8558b81  libgomp/testsuite/libgomp.fortran/map-subarray-8.f90
  a4b7a9ace17dd9b075800abbfd0733ce  libgomp/testsuite/libgomp.fortran/map-subarray.f90
  eaa2fd770a7d57561f30521ae9f2fc9f  libgomp/testsuite/libgomp.fortran/map-subcomponents.f90
  235b8f3fb869589084e0e80ba5622db7  libgomp/testsuite/libgomp.fortran/masked-1.f90
--- 139368,139382 ----
  11a2994612dda1ea5d074b912ea7e4aa  libgomp/testsuite/libgomp.fortran/map-alloc-comp-9.f90
  f4ad2acbc3bf213777f658e4581eb805  libgomp/testsuite/libgomp.fortran/map-alloc-ptr-1.f90
  794f9311ffd6c98b9329dc06aa6a39e3  libgomp/testsuite/libgomp.fortran/map-alloc-ptr-2.f90
+ 523668cf7417e7c8cb78a2b394f7329d  libgomp/testsuite/libgomp.fortran/map-subarray-10.f90
  fe829ea13169aa018e2a5ad40e7581b9  libgomp/testsuite/libgomp.fortran/map-subarray-2.f90
  c1190bc5bceb25197c6d0d9b5ba5a2ae  libgomp/testsuite/libgomp.fortran/map-subarray-3.f90
  b2c263036c49be63977c634860a8cf72  libgomp/testsuite/libgomp.fortran/map-subarray-4.f90
! 919c574beca36bdd957b212826948051  libgomp/testsuite/libgomp.fortran/map-subarray-5.f90
  3016a644377b86aff8cd64f0767eac38  libgomp/testsuite/libgomp.fortran/map-subarray-6.f90
  b916bf010c1060aa6d0c7f50cf781f71  libgomp/testsuite/libgomp.fortran/map-subarray-7.f90
  74aa87d51967ef1e4d58a270e8558b81  libgomp/testsuite/libgomp.fortran/map-subarray-8.f90
+ 33dd6008eda776497e2463d274281b62  libgomp/testsuite/libgomp.fortran/map-subarray-9.f90
  a4b7a9ace17dd9b075800abbfd0733ce  libgomp/testsuite/libgomp.fortran/map-subarray.f90
  eaa2fd770a7d57561f30521ae9f2fc9f  libgomp/testsuite/libgomp.fortran/map-subcomponents.f90
  235b8f3fb869589084e0e80ba5622db7  libgomp/testsuite/libgomp.fortran/masked-1.f90
*************** d1c33a8b5e0f3d9a19ffe583f8e72f56  libgru
*** 141047,141053 ****
  c21183b1df7f7afb240d765035277db1  libgrust/rustc-lib/version-info
  99c2e5e712b990ee07be10f53e41f3fb  libiberty/.gitignore
  a916467b91076e631dd8edb7424769c7  libiberty/COPYING.LIB
! 327eb105f6fbdfd21a42f230580231f2  libiberty/ChangeLog
  347c31392973de6a4872d540c1718dc1  libiberty/ChangeLog.jit
  65c8c72721eb29b2e2b42968dc6aaee6  libiberty/Makefile.in
  8b93d0e0369daed24e2260ccfd102eb3  libiberty/README
--- 141145,141151 ----
  c21183b1df7f7afb240d765035277db1  libgrust/rustc-lib/version-info
  99c2e5e712b990ee07be10f53e41f3fb  libiberty/.gitignore
  a916467b91076e631dd8edb7424769c7  libiberty/COPYING.LIB
! 7aab4fcdd929bcb80d6b78f2f060bcd2  libiberty/ChangeLog
  347c31392973de6a4872d540c1718dc1  libiberty/ChangeLog.jit
  65c8c72721eb29b2e2b42968dc6aaee6  libiberty/Makefile.in
  8b93d0e0369daed24e2260ccfd102eb3  libiberty/README
*************** a73fdec6746eaad8ccdc8e8403aac562  libqua
*** 142517,142527 ****
  af84fa5118f4adec8393614994e1c4d6  libquadmath/strtod/strtoflt128.c
  d15a18f7c46ba2add6148edc5b7563c0  libquadmath/strtod/tens_in_limb.c
  12c73a846f7668d29de720bd79502bef  libquadmath/update-quadmath.py
! 344c7d49ee3e409de4821c5a1178cab7  libsanitizer/ChangeLog
  63916ba64a3cfa7ce2809fb46ab38597  libsanitizer/HOWTO_MERGE
  0249c37748936faf5b1efd5789587909  libsanitizer/LICENSE.TXT
! 1a2ca7cd408b1705dc84c19070a7049b  libsanitizer/LOCAL_PATCHES
! e21ca1bb3d06f01f82229263eaae434d  libsanitizer/MERGE
  843b9a7b22b34445ab6cc181f7afd30b  libsanitizer/Makefile.am
  039dcea53673bf748693f1a5817c9880  libsanitizer/Makefile.in
  af677523339d9108ea25d6905226bf0a  libsanitizer/README.gcc
--- 142615,142625 ----
  af84fa5118f4adec8393614994e1c4d6  libquadmath/strtod/strtoflt128.c
  d15a18f7c46ba2add6148edc5b7563c0  libquadmath/strtod/tens_in_limb.c
  12c73a846f7668d29de720bd79502bef  libquadmath/update-quadmath.py
! 3619205a8df2bf6440bd437f68f17e8a  libsanitizer/ChangeLog
  63916ba64a3cfa7ce2809fb46ab38597  libsanitizer/HOWTO_MERGE
  0249c37748936faf5b1efd5789587909  libsanitizer/LICENSE.TXT
! bb311178c14b9f8eae7c689d13438244  libsanitizer/LOCAL_PATCHES
! 77c8af4bb646849f05ab0cd2380ea36c  libsanitizer/MERGE
  843b9a7b22b34445ab6cc181f7afd30b  libsanitizer/Makefile.am
  039dcea53673bf748693f1a5817c9880  libsanitizer/Makefile.in
  af677523339d9108ea25d6905226bf0a  libsanitizer/README.gcc
*************** af677523339d9108ea25d6905226bf0a  libsan
*** 142529,142606 ****
  a90b34f1e50aad380aefdff221374180  libsanitizer/aclocal.m4
  9f9ad5f48e64ac70c9dcfb129fc1a890  libsanitizer/asan/Makefile.am
  18233f272904843a0a491e7660266586  libsanitizer/asan/Makefile.in
! d07e95f3fda97a66cd02b78623fb2c53  libsanitizer/asan/asan_activation.cpp
  49679f380cb38cd6671d4d18b3c103e2  libsanitizer/asan/asan_activation.h
  acd6633a0710d8be6454db6d024d7aa9  libsanitizer/asan/asan_activation_flags.inc
! 0e9e7ed9643d7f80cb3ec5a85a0a5233  libsanitizer/asan/asan_allocator.cpp
! 88608021ec8f5818112124d547f26b58  libsanitizer/asan/asan_allocator.h
  67d7800157dbc7b40cc249055cc0b614  libsanitizer/asan/asan_debugging.cpp
! b4b55d9289735f67683f0ba667449673  libsanitizer/asan/asan_descriptions.cpp
  4b8ca0ce2211775f27225aa7694f671d  libsanitizer/asan/asan_descriptions.h
! b47db6725ad84b33aa879e1ad9adc4b9  libsanitizer/asan/asan_errors.cpp
! 0bc1a7566cf75121a39ccb07cb002ed5  libsanitizer/asan/asan_errors.h
! a551a1d2e1dd9007e7859fbe1c2142a8  libsanitizer/asan/asan_fake_stack.cpp
! a15f0895968debeada4576d3f50cd49f  libsanitizer/asan/asan_fake_stack.h
! 57760c802b7afb4e6e4bde9256d90899  libsanitizer/asan/asan_flags.cpp
! 62bf4dd74e13c5de98bece330fca0dae  libsanitizer/asan/asan_flags.h
! 37604152159e9b0a148b7f9488ff5b51  libsanitizer/asan/asan_flags.inc
! e73c27af53aea36cee643df17da9a406  libsanitizer/asan/asan_fuchsia.cpp
  be6eaef30dff75f718a87c86397c99e2  libsanitizer/asan/asan_globals.cpp
  b7ffd393031d20d605478b8457a018c7  libsanitizer/asan/asan_globals_win.cpp
  70bdc70f05ca1bf6f615ea7609e3bf8c  libsanitizer/asan/asan_init_version.h
! b4bb34d56bf3fe340fb0ca4a48e2d7c7  libsanitizer/asan/asan_interceptors.cpp
! 02996712bb908eea597a6f6b5210a28a  libsanitizer/asan/asan_interceptors.h
! 6a6ab3d41155984bd4c7ab7a8a3ef654  libsanitizer/asan/asan_interceptors_memintrinsics.cpp
! 7ba71a70c4c17ea0f4e871dfff4ad59a  libsanitizer/asan/asan_interceptors_memintrinsics.h
  47d1026d8b2923487aef9553f134bfe8  libsanitizer/asan/asan_interceptors_vfork.S
  1e7d255fa2c1933020b98cfd75b1d1e6  libsanitizer/asan/asan_interface.inc
  08eb391a8b97f054ee0255e42f76dd82  libsanitizer/asan/asan_interface_internal.h
! eaa13188e4fbbd6220c2d7c78b1903cf  libsanitizer/asan/asan_internal.h
! 3e4d0d986b097bddd963d22596e163df  libsanitizer/asan/asan_linux.cpp
! 6abc2c335ae8b73464f5487f00575b69  libsanitizer/asan/asan_mac.cpp
! ddc9c80938e3ce9be9f41edc5c1d5f93  libsanitizer/asan/asan_malloc_linux.cpp
! 0ee3a5722bb42918f258a414f7b7aca1  libsanitizer/asan/asan_malloc_mac.cpp
! cc88f57a6afb9d070362be4cce503c0a  libsanitizer/asan/asan_malloc_win.cpp
  fa5272548138ecffb5872478a9e91b5e  libsanitizer/asan/asan_malloc_win_thunk.cpp
! fd00f6408101905225469957f90aa5de  libsanitizer/asan/asan_mapping.h
  30b2997bea78189e8a56bd135ede2a34  libsanitizer/asan/asan_mapping_sparc64.h
  71186b6e110dbb29131ad64b6604faf8  libsanitizer/asan/asan_memory_profile.cpp
! 5f212f5d60b6daf3fdf284910a1dba52  libsanitizer/asan/asan_new_delete.cpp
! b655b4da29065f138595f4f7631fba33  libsanitizer/asan/asan_poisoning.cpp
! 694cb52b66fd0f6d3f41d67429bfa1ba  libsanitizer/asan/asan_poisoning.h
! e293eff907af7fb92387298e7969f380  libsanitizer/asan/asan_posix.cpp
  5fc623355715dccd6edce041b1c257e6  libsanitizer/asan/asan_preinit.cpp
  2dcbdfd71c0a6ab8273d7703aaec5bcb  libsanitizer/asan/asan_premap_shadow.cpp
  a116a301835f4803dda6ba547a4efb13  libsanitizer/asan/asan_premap_shadow.h
! cd71adefb70adf26d87061d104310a82  libsanitizer/asan/asan_report.cpp
  79f0af80eb532c581070b6d432144cd6  libsanitizer/asan/asan_report.h
! 6f6d6ebc84e43ac5603c3aab74e26242  libsanitizer/asan/asan_rtl.cpp
  d28b754f660d002fcb71421b13dc895c  libsanitizer/asan/asan_rtl_static.cpp
! 9ce41550238a6796a363585ab8d13f73  libsanitizer/asan/asan_rtl_x86_64.S
  7a66ee99b1b671c738ca237415ef25b8  libsanitizer/asan/asan_scariness_score.h
! 8072d65a81c5968f332de2a2db8778f5  libsanitizer/asan/asan_shadow_setup.cpp
  a9ee444b2c882f859206d5557c53796e  libsanitizer/asan/asan_stack.cpp
  2ff0bdf565589ed4b0b36ba24c542e25  libsanitizer/asan/asan_stack.h
  32d0551d66ab2b7e1b8cf0440aed0188  libsanitizer/asan/asan_stats.cpp
  89151303b3f73f562ecdcb3835396dee  libsanitizer/asan/asan_stats.h
! d6b033fd621ce9957b1647a3e4c31909  libsanitizer/asan/asan_suppressions.cpp
! 8ab11db904fc944b69ba16601317c1c7  libsanitizer/asan/asan_suppressions.h
! 1199cdcff41933bad3ef8cf8049b82a7  libsanitizer/asan/asan_thread.cpp
! 5524d249b5666a805d4f692a2f75ef06  libsanitizer/asan/asan_thread.h
! 92ec3ca03d8667ff8bb45bb6c069a97d  libsanitizer/asan/asan_win.cpp
  1302f2626df3bae206147f0ed2e9ab4b  libsanitizer/asan/asan_win_common_runtime_thunk.cpp
  6f3d9b841ace96f7ab6fbab4e3b2b6fc  libsanitizer/asan/asan_win_common_runtime_thunk.h
  e7ba2e2cd6c818f19794c191561787a8  libsanitizer/asan/asan_win_dynamic_runtime_thunk.cpp
! f6023fedacb2c033b902f237dfb478e6  libsanitizer/asan/asan_win_static_runtime_thunk.cpp
  faf2a6ac3826446f8109f955fc331f15  libsanitizer/asan/libtool-version
! ca2b59491c60b319280078740aa575b8  libsanitizer/builtins/assembly.h
  4d6948c4912be5da16e30aac001b87d7  libsanitizer/config.h.in
  806119bae4e8f9efd02d3702986a95b4  libsanitizer/configure
  4fb8fe43cd5510b08a3abc9a38bc4ea3  libsanitizer/configure.ac
! 56772d73b7fdd0b7fdb1c25ed2202e65  libsanitizer/configure.tgt
  c5fe0662e5d5bbb3d31d1a11669cdbb8  libsanitizer/hwasan/Makefile.am
  7c6905ddf409ba02f8a5b7b2cf41f46c  libsanitizer/hwasan/Makefile.in
! 5c84e505b2eb11919a599ee7b2f6c763  libsanitizer/hwasan/hwasan.cpp
  3a85b60821e128b16c3e43236f324b7d  libsanitizer/hwasan/hwasan.h
  585fd62c519e70893541ff8779d088ff  libsanitizer/hwasan/hwasan_allocation_functions.cpp
  77c398709a899d6be47d63f035d309da  libsanitizer/hwasan/hwasan_allocator.cpp
--- 142627,142704 ----
  a90b34f1e50aad380aefdff221374180  libsanitizer/aclocal.m4
  9f9ad5f48e64ac70c9dcfb129fc1a890  libsanitizer/asan/Makefile.am
  18233f272904843a0a491e7660266586  libsanitizer/asan/Makefile.in
! c1132148bc396d4e94b4082bec02c332  libsanitizer/asan/asan_activation.cpp
  49679f380cb38cd6671d4d18b3c103e2  libsanitizer/asan/asan_activation.h
  acd6633a0710d8be6454db6d024d7aa9  libsanitizer/asan/asan_activation_flags.inc
! 04172432ead254c34ae8385f356733ce  libsanitizer/asan/asan_allocator.cpp
! a6020419d296fce738f64f72f7b2c671  libsanitizer/asan/asan_allocator.h
  67d7800157dbc7b40cc249055cc0b614  libsanitizer/asan/asan_debugging.cpp
! 1ad09a4467b7c36d4552a538b41808b9  libsanitizer/asan/asan_descriptions.cpp
  4b8ca0ce2211775f27225aa7694f671d  libsanitizer/asan/asan_descriptions.h
! 377b97fde842ad28eb64247793dff3f6  libsanitizer/asan/asan_errors.cpp
! 60df7f2d94e0248addf67b2bd1700dc7  libsanitizer/asan/asan_errors.h
! e2452d0e36dd8e1bf23e0384932c1b35  libsanitizer/asan/asan_fake_stack.cpp
! cd1e3004779a188df1567ce5ee593aa3  libsanitizer/asan/asan_fake_stack.h
! 17998fe313e8a91521d414af743dfbfe  libsanitizer/asan/asan_flags.cpp
! e089fafe68a700f119ab311c1419777b  libsanitizer/asan/asan_flags.h
! 9e77d6038ab61dc3757d6be4f9ee790f  libsanitizer/asan/asan_flags.inc
! b6a7e7d03e47c6d92704c941ea77e175  libsanitizer/asan/asan_fuchsia.cpp
  be6eaef30dff75f718a87c86397c99e2  libsanitizer/asan/asan_globals.cpp
  b7ffd393031d20d605478b8457a018c7  libsanitizer/asan/asan_globals_win.cpp
  70bdc70f05ca1bf6f615ea7609e3bf8c  libsanitizer/asan/asan_init_version.h
! b26dd7d7e4a846712f51cc09ac5ae4c0  libsanitizer/asan/asan_interceptors.cpp
! 8f9f4095bdf1ee2e4508e29b3a8f73a9  libsanitizer/asan/asan_interceptors.h
! e7d4b6027f17ee062914786e78f57318  libsanitizer/asan/asan_interceptors_memintrinsics.cpp
! 7c829b2b09c5f43c40d37247d19c463c  libsanitizer/asan/asan_interceptors_memintrinsics.h
  47d1026d8b2923487aef9553f134bfe8  libsanitizer/asan/asan_interceptors_vfork.S
  1e7d255fa2c1933020b98cfd75b1d1e6  libsanitizer/asan/asan_interface.inc
  08eb391a8b97f054ee0255e42f76dd82  libsanitizer/asan/asan_interface_internal.h
! 2fb87df203545ef4127f1b8b45821c4d  libsanitizer/asan/asan_internal.h
! 3d9706ca1955de33b660efcfaf0c72bf  libsanitizer/asan/asan_linux.cpp
! 3033a7f927610c82f0e946a6f48b7757  libsanitizer/asan/asan_mac.cpp
! 7fb47c47fb3a5ff66a2c88fa9ae41dd2  libsanitizer/asan/asan_malloc_linux.cpp
! a856e685dbedec00c0b22ebe2101ad0f  libsanitizer/asan/asan_malloc_mac.cpp
! 1079d2b16ee9101984591faca59085dc  libsanitizer/asan/asan_malloc_win.cpp
  fa5272548138ecffb5872478a9e91b5e  libsanitizer/asan/asan_malloc_win_thunk.cpp
! 5a68ed9103af267d1b38894baf1e3d61  libsanitizer/asan/asan_mapping.h
  30b2997bea78189e8a56bd135ede2a34  libsanitizer/asan/asan_mapping_sparc64.h
  71186b6e110dbb29131ad64b6604faf8  libsanitizer/asan/asan_memory_profile.cpp
! c03e71c9d80c35c6f928b9e708243b97  libsanitizer/asan/asan_new_delete.cpp
! a26deb46d165ba69697cf0b5a29fccbc  libsanitizer/asan/asan_poisoning.cpp
! b322a7b9a08865b5e9d107a213b35e0b  libsanitizer/asan/asan_poisoning.h
! 3c04f1139d8dbae1eeb08ea726a2ecbb  libsanitizer/asan/asan_posix.cpp
  5fc623355715dccd6edce041b1c257e6  libsanitizer/asan/asan_preinit.cpp
  2dcbdfd71c0a6ab8273d7703aaec5bcb  libsanitizer/asan/asan_premap_shadow.cpp
  a116a301835f4803dda6ba547a4efb13  libsanitizer/asan/asan_premap_shadow.h
! 66d85c59b844ace8a32ad4fa439a734a  libsanitizer/asan/asan_report.cpp
  79f0af80eb532c581070b6d432144cd6  libsanitizer/asan/asan_report.h
! 18552457090978b4e7c942df2c328ff0  libsanitizer/asan/asan_rtl.cpp
  d28b754f660d002fcb71421b13dc895c  libsanitizer/asan/asan_rtl_static.cpp
! 2dda5e2888550d50638ddcce230d397e  libsanitizer/asan/asan_rtl_x86_64.S
  7a66ee99b1b671c738ca237415ef25b8  libsanitizer/asan/asan_scariness_score.h
! c670ba8f26e3bcf2b758152397c96903  libsanitizer/asan/asan_shadow_setup.cpp
  a9ee444b2c882f859206d5557c53796e  libsanitizer/asan/asan_stack.cpp
  2ff0bdf565589ed4b0b36ba24c542e25  libsanitizer/asan/asan_stack.h
  32d0551d66ab2b7e1b8cf0440aed0188  libsanitizer/asan/asan_stats.cpp
  89151303b3f73f562ecdcb3835396dee  libsanitizer/asan/asan_stats.h
! a0ac11c49994e6105e9d9205081ec1e1  libsanitizer/asan/asan_suppressions.cpp
! 660027dc897025226663097627f9be35  libsanitizer/asan/asan_suppressions.h
! 581a28c676dcbcaa229102e11c6950f8  libsanitizer/asan/asan_thread.cpp
! bf63d0626bc3f394c15532142d9437fc  libsanitizer/asan/asan_thread.h
! 8f2ab1b75016cbe88d7c72deaa773497  libsanitizer/asan/asan_win.cpp
  1302f2626df3bae206147f0ed2e9ab4b  libsanitizer/asan/asan_win_common_runtime_thunk.cpp
  6f3d9b841ace96f7ab6fbab4e3b2b6fc  libsanitizer/asan/asan_win_common_runtime_thunk.h
  e7ba2e2cd6c818f19794c191561787a8  libsanitizer/asan/asan_win_dynamic_runtime_thunk.cpp
! c7be8fd54fdc2d75c7a02cea18023679  libsanitizer/asan/asan_win_static_runtime_thunk.cpp
  faf2a6ac3826446f8109f955fc331f15  libsanitizer/asan/libtool-version
! c8af4438003f230ddf6b43349c1c56c8  libsanitizer/builtins/assembly.h
  4d6948c4912be5da16e30aac001b87d7  libsanitizer/config.h.in
  806119bae4e8f9efd02d3702986a95b4  libsanitizer/configure
  4fb8fe43cd5510b08a3abc9a38bc4ea3  libsanitizer/configure.ac
! 2c84d3922c66e36c48943551cde268dd  libsanitizer/configure.tgt
  c5fe0662e5d5bbb3d31d1a11669cdbb8  libsanitizer/hwasan/Makefile.am
  7c6905ddf409ba02f8a5b7b2cf41f46c  libsanitizer/hwasan/Makefile.in
! 3e2bdedf438a10a438e6e5402311b06d  libsanitizer/hwasan/hwasan.cpp
  3a85b60821e128b16c3e43236f324b7d  libsanitizer/hwasan/hwasan.h
  585fd62c519e70893541ff8779d088ff  libsanitizer/hwasan/hwasan_allocation_functions.cpp
  77c398709a899d6be47d63f035d309da  libsanitizer/hwasan/hwasan_allocator.cpp
*************** d2c53fada53bfee78b11f99e297aed7b  libsan
*** 142611,142641 ****
  9dfd44f3f73d7a5ff9183b8624869c27  libsanitizer/hwasan/hwasan_exceptions.cpp
  9750f099c8028db1b9c972cc7157280a  libsanitizer/hwasan/hwasan_flags.h
  569536c809276273be6344267b2b960e  libsanitizer/hwasan/hwasan_flags.inc
! 753ce92c601b47cf7a61b16b620865bb  libsanitizer/hwasan/hwasan_fuchsia.cpp
! 20d20fc3b2ac6fb11e0a990d959c1a27  libsanitizer/hwasan/hwasan_globals.cpp
  e0f27a58c9d03369d2cbad572c5e99f4  libsanitizer/hwasan/hwasan_globals.h
  83d86ea8a431a8cfa7a68b8b2146e77d  libsanitizer/hwasan/hwasan_interceptors.cpp
! 0ff1272e9d2ece4e771dfba1ecb0d538  libsanitizer/hwasan/hwasan_interceptors_vfork.S
! f105a8a8561f900da250329f2e1e91a5  libsanitizer/hwasan/hwasan_interface_internal.h
  55359d59843b4bc4362c024e04253002  libsanitizer/hwasan/hwasan_linux.cpp
! 2ee3ae16d29b69720e9f2512908a45b5  libsanitizer/hwasan/hwasan_malloc_bisect.h
  4390a795bf11c5cb596462234bb81e09  libsanitizer/hwasan/hwasan_mapping.h
  70e3bc6498c0cfb6c675fda7a9b2bb10  libsanitizer/hwasan/hwasan_memintrinsics.cpp
! cf42fe809c9a5c6c76fd8243c8dbba0b  libsanitizer/hwasan/hwasan_new_delete.cpp
! 320ae30eba3ba345b17c04f73aee67fc  libsanitizer/hwasan/hwasan_platform_interceptors.h
  7c0fe0939e5b6c7c7a7fccd79f6fb9f6  libsanitizer/hwasan/hwasan_poisoning.cpp
  dbbf5a6219c3628eace17cf1d008c47a  libsanitizer/hwasan/hwasan_poisoning.h
  3c4a35efb7e314907c4a8ee4e35d777e  libsanitizer/hwasan/hwasan_preinit.cpp
  b4c906553a888ce9c94c127fa2e0e452  libsanitizer/hwasan/hwasan_registers.h
! 58b05d957e9902e54032e1a196188158  libsanitizer/hwasan/hwasan_report.cpp
  a428030ea59c9750d767a61dfa6c7295  libsanitizer/hwasan/hwasan_report.h
! 0aa0465cbf6b82abe9ada90e4dce9801  libsanitizer/hwasan/hwasan_setjmp_aarch64.S
  2cc1e1dfc1150cc465439b8e87f46264  libsanitizer/hwasan/hwasan_setjmp_riscv64.S
! c0879885e5a796a284631e5b4dd24126  libsanitizer/hwasan/hwasan_setjmp_x86_64.S
! 2714ba0625c028be9633230ea1ebabf1  libsanitizer/hwasan/hwasan_tag_mismatch_aarch64.S
  2de869754f30f0e4fc56ea5e883d2957  libsanitizer/hwasan/hwasan_tag_mismatch_riscv64.S
! c91b6130437c5c0c0aa530ff3eac27fb  libsanitizer/hwasan/hwasan_thread.cpp
! ef3f94242327f05c5808584ae8f5212b  libsanitizer/hwasan/hwasan_thread.h
  4e6f89f77d57040f630775bc12feeead  libsanitizer/hwasan/hwasan_thread_list.cpp
  52586792b3176c9f9aabd0779041bff5  libsanitizer/hwasan/hwasan_thread_list.h
  0515919baf280afc79f60ae7056c0e36  libsanitizer/hwasan/hwasan_type_test.cpp
--- 142709,142739 ----
  9dfd44f3f73d7a5ff9183b8624869c27  libsanitizer/hwasan/hwasan_exceptions.cpp
  9750f099c8028db1b9c972cc7157280a  libsanitizer/hwasan/hwasan_flags.h
  569536c809276273be6344267b2b960e  libsanitizer/hwasan/hwasan_flags.inc
! 8f9b314650d1e5f5a6ce9e85f38540b1  libsanitizer/hwasan/hwasan_fuchsia.cpp
! f8e4122a2de7b2082891298642094408  libsanitizer/hwasan/hwasan_globals.cpp
  e0f27a58c9d03369d2cbad572c5e99f4  libsanitizer/hwasan/hwasan_globals.h
  83d86ea8a431a8cfa7a68b8b2146e77d  libsanitizer/hwasan/hwasan_interceptors.cpp
! ab357587821431a9ccc2aba0d2e52d18  libsanitizer/hwasan/hwasan_interceptors_vfork.S
! 036e7de27c0a79be773194581cd3f9ce  libsanitizer/hwasan/hwasan_interface_internal.h
  55359d59843b4bc4362c024e04253002  libsanitizer/hwasan/hwasan_linux.cpp
! 3134957723593f0384dea9015c685fb6  libsanitizer/hwasan/hwasan_malloc_bisect.h
  4390a795bf11c5cb596462234bb81e09  libsanitizer/hwasan/hwasan_mapping.h
  70e3bc6498c0cfb6c675fda7a9b2bb10  libsanitizer/hwasan/hwasan_memintrinsics.cpp
! 5c31f7c777cd005f9909ff10530a3f80  libsanitizer/hwasan/hwasan_new_delete.cpp
! cf3c4b3ed22c1a5f954e253cfbe57706  libsanitizer/hwasan/hwasan_platform_interceptors.h
  7c0fe0939e5b6c7c7a7fccd79f6fb9f6  libsanitizer/hwasan/hwasan_poisoning.cpp
  dbbf5a6219c3628eace17cf1d008c47a  libsanitizer/hwasan/hwasan_poisoning.h
  3c4a35efb7e314907c4a8ee4e35d777e  libsanitizer/hwasan/hwasan_preinit.cpp
  b4c906553a888ce9c94c127fa2e0e452  libsanitizer/hwasan/hwasan_registers.h
! 0037ec7aeac983faeccc75ee66e68698  libsanitizer/hwasan/hwasan_report.cpp
  a428030ea59c9750d767a61dfa6c7295  libsanitizer/hwasan/hwasan_report.h
! faec7fba39b95b4e2b57ebbf2bc91b25  libsanitizer/hwasan/hwasan_setjmp_aarch64.S
  2cc1e1dfc1150cc465439b8e87f46264  libsanitizer/hwasan/hwasan_setjmp_riscv64.S
! b146b35f49bac97a9ab43f918c00206f  libsanitizer/hwasan/hwasan_setjmp_x86_64.S
! 1aa30ce6343117d1b86fa634291c8727  libsanitizer/hwasan/hwasan_tag_mismatch_aarch64.S
  2de869754f30f0e4fc56ea5e883d2957  libsanitizer/hwasan/hwasan_tag_mismatch_riscv64.S
! 10b0701b080c84b4ae6dde350be3745b  libsanitizer/hwasan/hwasan_thread.cpp
! f33ead76dc15a3329b6f47c5765f176e  libsanitizer/hwasan/hwasan_thread.h
  4e6f89f77d57040f630775bc12feeead  libsanitizer/hwasan/hwasan_thread_list.cpp
  52586792b3176c9f9aabd0779041bff5  libsanitizer/hwasan/hwasan_thread_list.h
  0515919baf280afc79f60ae7056c0e36  libsanitizer/hwasan/hwasan_type_test.cpp
*************** d005d0a644120838c6dfd397d6aede70  libsan
*** 142648,142661 ****
  539a148aa5ee4d4d789d2b325b239c39  libsanitizer/include/sanitizer/hwasan_interface.h
  1e763d9ba4112cb3d4e650a62381f7ca  libsanitizer/include/sanitizer/linux_syscall_hooks.h
  1bd34ad322a65afee9ed3ff08641cf5b  libsanitizer/include/sanitizer/lsan_interface.h
! 362411e1566639713f43de9ab6ac16c1  libsanitizer/include/sanitizer/memprof_interface.h
  4f75286f59f01d95e745922fadffc1c4  libsanitizer/include/sanitizer/msan_interface.h
  8cfb31c202da51942d071d62333feafa  libsanitizer/include/sanitizer/netbsd_syscall_hooks.h
  d0a48348c6161ea0de82d6bf24c8b646  libsanitizer/include/sanitizer/nsan_interface.h
  70f1336d22dbcb6b1963e3b59060641f  libsanitizer/include/sanitizer/rtsan_interface.h
  21f5e42c5cce93a45ec79348cb539845  libsanitizer/include/sanitizer/scudo_interface.h
  3ee81e9f99926181d5ca17317184a561  libsanitizer/include/sanitizer/tsan_interface.h
! 82e3ce3ab2f016560e52dc733aba79ae  libsanitizer/include/sanitizer/tsan_interface_atomic.h
  01301cbe68b6d0ff4d5bbff82d176a37  libsanitizer/include/sanitizer/ubsan_interface.h
  c06732d7b90bf79a06f7aa44d08a1fbb  libsanitizer/include/system/asm/ptrace.h
  7b7bed50874b18703cfc3f3e9405dc93  libsanitizer/include/system/linux/aio_abi.h
--- 142746,142759 ----
  539a148aa5ee4d4d789d2b325b239c39  libsanitizer/include/sanitizer/hwasan_interface.h
  1e763d9ba4112cb3d4e650a62381f7ca  libsanitizer/include/sanitizer/linux_syscall_hooks.h
  1bd34ad322a65afee9ed3ff08641cf5b  libsanitizer/include/sanitizer/lsan_interface.h
! c47ca4bb86c670b524cffd8c40bb157c  libsanitizer/include/sanitizer/memprof_interface.h
  4f75286f59f01d95e745922fadffc1c4  libsanitizer/include/sanitizer/msan_interface.h
  8cfb31c202da51942d071d62333feafa  libsanitizer/include/sanitizer/netbsd_syscall_hooks.h
  d0a48348c6161ea0de82d6bf24c8b646  libsanitizer/include/sanitizer/nsan_interface.h
  70f1336d22dbcb6b1963e3b59060641f  libsanitizer/include/sanitizer/rtsan_interface.h
  21f5e42c5cce93a45ec79348cb539845  libsanitizer/include/sanitizer/scudo_interface.h
  3ee81e9f99926181d5ca17317184a561  libsanitizer/include/sanitizer/tsan_interface.h
! 9b23aafb68f7b9b1d0e79189e2ddda3f  libsanitizer/include/sanitizer/tsan_interface_atomic.h
  01301cbe68b6d0ff4d5bbff82d176a37  libsanitizer/include/sanitizer/ubsan_interface.h
  c06732d7b90bf79a06f7aa44d08a1fbb  libsanitizer/include/system/asm/ptrace.h
  7b7bed50874b18703cfc3f3e9405dc93  libsanitizer/include/system/linux/aio_abi.h
*************** e0f26bb761d75b6aac187f2c8d755c0b  libsan
*** 142666,142679 ****
  177782c011eb97e4adc68bd2c39b6f84  libsanitizer/include/system/sys/ptrace.h
  158a29394be4331a9d1cde51aacb1284  libsanitizer/interception/Makefile.am
  f8ce5ff423deff429bad7fceecc648c8  libsanitizer/interception/Makefile.in
! 6f7e1851b2e602eb110c4fb38d0db117  libsanitizer/interception/interception.h
! a369bda2bdee55815c0587eeb2041947  libsanitizer/interception/interception_linux.cpp
! 9a8de98a4d965528037c0929968ceb5e  libsanitizer/interception/interception_linux.h
  0e693fb7fe561dbbff408f6493c081d7  libsanitizer/interception/interception_mac.cpp
  0123641b0fbd5589d3819e5a27205e34  libsanitizer/interception/interception_mac.h
  5e3580ad904d6532995eadf5a0f76e54  libsanitizer/interception/interception_type_test.cpp
! beed38444f9ea027548f06680db73e3e  libsanitizer/interception/interception_win.cpp
! 6f3d21b72d6739cd636c58314329da52  libsanitizer/interception/interception_win.h
  432dc1db22008a6a94b6906dffd76915  libsanitizer/libbacktrace/Makefile.am
  d7bf098d8629e6c9ed6d5c41e3a89886  libsanitizer/libbacktrace/Makefile.in
  3ac69d9fb43e338ecc043296461ef01e  libsanitizer/libbacktrace/backtrace-rename.h
--- 142764,142777 ----
  177782c011eb97e4adc68bd2c39b6f84  libsanitizer/include/system/sys/ptrace.h
  158a29394be4331a9d1cde51aacb1284  libsanitizer/interception/Makefile.am
  f8ce5ff423deff429bad7fceecc648c8  libsanitizer/interception/Makefile.in
! 3c11e8db14ed3ee5efb3368eb10ac0e4  libsanitizer/interception/interception.h
! 94eaf33c04d2414439159af4594f61a1  libsanitizer/interception/interception_linux.cpp
! f16b9851a0cb295a7e222c35209dde95  libsanitizer/interception/interception_linux.h
  0e693fb7fe561dbbff408f6493c081d7  libsanitizer/interception/interception_mac.cpp
  0123641b0fbd5589d3819e5a27205e34  libsanitizer/interception/interception_mac.h
  5e3580ad904d6532995eadf5a0f76e54  libsanitizer/interception/interception_type_test.cpp
! f245c213a34c2a696bee16a453d1ffbf  libsanitizer/interception/interception_win.cpp
! b0f3e17adadb0c18f43d7a31da6688c3  libsanitizer/interception/interception_win.h
  432dc1db22008a6a94b6906dffd76915  libsanitizer/libbacktrace/Makefile.am
  d7bf098d8629e6c9ed6d5c41e3a89886  libsanitizer/libbacktrace/Makefile.in
  3ac69d9fb43e338ecc043296461ef01e  libsanitizer/libbacktrace/backtrace-rename.h
*************** afbb83670aebea5034bc386604a01397  libsan
*** 142685,142709 ****
  f2f51c768041ab63c956646fa5f7af5b  libsanitizer/lsan/libtool-version
  c7cb472161bc9fd3b41f1a71266a9090  libsanitizer/lsan/lsan.cpp
  2cad573e8f16d3af1d83656591cf952c  libsanitizer/lsan/lsan.h
! 320a8141b1e2196dad82367c5fd0c9bb  libsanitizer/lsan/lsan_allocator.cpp
! 17871f0b4c3ec3b70b00bbb7d87c2c0f  libsanitizer/lsan/lsan_allocator.h
! 64528b935f4e7e240128985169440a22  libsanitizer/lsan/lsan_common.cpp
! b48fbea440a21dcb40deec3eb88817c3  libsanitizer/lsan/lsan_common.h
  837b31d5c0aaab07f7afbc0cbef04f24  libsanitizer/lsan/lsan_common_fuchsia.cpp
! f9d367e2c9430f40684ff02036db1dd5  libsanitizer/lsan/lsan_common_linux.cpp
  e0c1fefc6d7a8d0f00122415d01fb44d  libsanitizer/lsan/lsan_common_mac.cpp
  2107cfb13c020efdf410726abf2d8979  libsanitizer/lsan/lsan_flags.inc
! 97051f0e348088d16f52cf49ae7ae2c3  libsanitizer/lsan/lsan_fuchsia.cpp
  0a42ef558db22ea416707423b4ee5313  libsanitizer/lsan/lsan_fuchsia.h
! a2bb4ce82517490a473b4f4a78a0a925  libsanitizer/lsan/lsan_interceptors.cpp
  956639c4d9b147ff17fbd7c99f809223  libsanitizer/lsan/lsan_linux.cpp
  4fa725b880e76379f3f26408ca1558f7  libsanitizer/lsan/lsan_mac.cpp
! 94e1495e5dfa6d86df31bfed27d4bb1a  libsanitizer/lsan/lsan_malloc_mac.cpp
! 27e7a9acf4d6389c68679c2034a2e536  libsanitizer/lsan/lsan_posix.cpp
! 2d218702383904dd6ba0cbb97b0bfd82  libsanitizer/lsan/lsan_posix.h
  4ef9c81bd893835723a68ebd22cfa9ab  libsanitizer/lsan/lsan_preinit.cpp
! 2e5e2fa7ae3e1aff84765e97f03d95c9  libsanitizer/lsan/lsan_thread.cpp
! 40250a40045098844f2cb7c1830cfa8d  libsanitizer/lsan/lsan_thread.h
  30e8a1a43b912457b629922cb03ef1cf  libsanitizer/merge.sh
  c301ea6a9cda0da0cfe222dc46b34e94  libsanitizer/sanitizer_common/Makefile.am
  1d256563c2de7ed098e5a95953422048  libsanitizer/sanitizer_common/Makefile.in
--- 142783,142807 ----
  f2f51c768041ab63c956646fa5f7af5b  libsanitizer/lsan/libtool-version
  c7cb472161bc9fd3b41f1a71266a9090  libsanitizer/lsan/lsan.cpp
  2cad573e8f16d3af1d83656591cf952c  libsanitizer/lsan/lsan.h
! 1d754a3a45c1ea107cf144914cebd298  libsanitizer/lsan/lsan_allocator.cpp
! 6362685d1387cb8cae4b340c02e8535d  libsanitizer/lsan/lsan_allocator.h
! d48aae4e18911060b885780cad7bcbac  libsanitizer/lsan/lsan_common.cpp
! 3ef3ffb4fcf3bc3accac2eec9929f2b8  libsanitizer/lsan/lsan_common.h
  837b31d5c0aaab07f7afbc0cbef04f24  libsanitizer/lsan/lsan_common_fuchsia.cpp
! 487ff7b7c9d0d77b296a8045887719e5  libsanitizer/lsan/lsan_common_linux.cpp
  e0c1fefc6d7a8d0f00122415d01fb44d  libsanitizer/lsan/lsan_common_mac.cpp
  2107cfb13c020efdf410726abf2d8979  libsanitizer/lsan/lsan_flags.inc
! ef9a10163604ef205fbcaab69bf9d0ae  libsanitizer/lsan/lsan_fuchsia.cpp
  0a42ef558db22ea416707423b4ee5313  libsanitizer/lsan/lsan_fuchsia.h
! dff87fd5758e2cfaa64af7b1f9a8cea2  libsanitizer/lsan/lsan_interceptors.cpp
  956639c4d9b147ff17fbd7c99f809223  libsanitizer/lsan/lsan_linux.cpp
  4fa725b880e76379f3f26408ca1558f7  libsanitizer/lsan/lsan_mac.cpp
! 650c8091c1ae08bacd3d8ad0e91c35de  libsanitizer/lsan/lsan_malloc_mac.cpp
! c8c3e715c6354f05ae12ba65a4e5382d  libsanitizer/lsan/lsan_posix.cpp
! 6da64ca6e1094c34364faf03f77f03e7  libsanitizer/lsan/lsan_posix.h
  4ef9c81bd893835723a68ebd22cfa9ab  libsanitizer/lsan/lsan_preinit.cpp
! 8b1959afc2c520a73871466e10d4167b  libsanitizer/lsan/lsan_thread.cpp
! d4382e96a94ba87c7474b7c55b762213  libsanitizer/lsan/lsan_thread.h
  30e8a1a43b912457b629922cb03ef1cf  libsanitizer/merge.sh
  c301ea6a9cda0da0cfe222dc46b34e94  libsanitizer/sanitizer_common/Makefile.am
  1d256563c2de7ed098e5a95953422048  libsanitizer/sanitizer_common/Makefile.in
*************** f04b14c8928c5d1f093e2ae9138a4d97  libsan
*** 142716,142727 ****
  58afe7ee0a8301bc2ee5e0495a5c3720  libsanitizer/sanitizer_common/sanitizer_allocator_checks.cpp
  4ee074df007bb212ba0e23ec75009eca  libsanitizer/sanitizer_common/sanitizer_allocator_checks.h
  42255d2f0af0d6529e6562e12fe76714  libsanitizer/sanitizer_common/sanitizer_allocator_combined.h
! 3c645dfe014d04fa75d279647bae95d2  libsanitizer/sanitizer_common/sanitizer_allocator_dlsym.h
  5fc70560e6fad39c418b5589426a8d82  libsanitizer/sanitizer_common/sanitizer_allocator_interface.h
! 828ea8b0bdf238e32fccaa70b5b23cce  libsanitizer/sanitizer_common/sanitizer_allocator_internal.h
! 077de40d6eda25e0f6b7713f2e9763f4  libsanitizer/sanitizer_common/sanitizer_allocator_local_cache.h
  231e9ee76b69fc5da94ead1b51cdf94c  libsanitizer/sanitizer_common/sanitizer_allocator_primary32.h
! 3e4f8e80a5d9d4806dba8b20c38d9c50  libsanitizer/sanitizer_common/sanitizer_allocator_primary64.h
  ff41eeb2a6f776ce3d9f5a913f70fa5c  libsanitizer/sanitizer_common/sanitizer_allocator_report.cpp
  5fca989318db3c792dfeea2a7a028c24  libsanitizer/sanitizer_common/sanitizer_allocator_report.h
  22d9f5ff34200de98c097dbbfd466bc8  libsanitizer/sanitizer_common/sanitizer_allocator_secondary.h
--- 142814,142825 ----
  58afe7ee0a8301bc2ee5e0495a5c3720  libsanitizer/sanitizer_common/sanitizer_allocator_checks.cpp
  4ee074df007bb212ba0e23ec75009eca  libsanitizer/sanitizer_common/sanitizer_allocator_checks.h
  42255d2f0af0d6529e6562e12fe76714  libsanitizer/sanitizer_common/sanitizer_allocator_combined.h
! 97ece62476f9e946cbdaa19b0285b5f3  libsanitizer/sanitizer_common/sanitizer_allocator_dlsym.h
  5fc70560e6fad39c418b5589426a8d82  libsanitizer/sanitizer_common/sanitizer_allocator_interface.h
! 448fc12528de7f022ecc830b5e18bf30  libsanitizer/sanitizer_common/sanitizer_allocator_internal.h
! 3451872ecfd30f21715f6f84832c17ea  libsanitizer/sanitizer_common/sanitizer_allocator_local_cache.h
  231e9ee76b69fc5da94ead1b51cdf94c  libsanitizer/sanitizer_common/sanitizer_allocator_primary32.h
! 1da3e32f371cf7b94ab6ec0e77e0acf7  libsanitizer/sanitizer_common/sanitizer_allocator_primary64.h
  ff41eeb2a6f776ce3d9f5a913f70fa5c  libsanitizer/sanitizer_common/sanitizer_allocator_report.cpp
  5fca989318db3c792dfeea2a7a028c24  libsanitizer/sanitizer_common/sanitizer_allocator_report.h
  22d9f5ff34200de98c097dbbfd466bc8  libsanitizer/sanitizer_common/sanitizer_allocator_secondary.h
*************** fea02c2bee302ef80068d06de6550959  libsan
*** 142730,142766 ****
  0136f420ff25cc446d086b8a05a982e9  libsanitizer/sanitizer_common/sanitizer_array_ref.h
  61f6307bbc3dfa55854a788367fa217a  libsanitizer/sanitizer_common/sanitizer_asm.h
  7cd70281393ca476547040a412b9dbce  libsanitizer/sanitizer_common/sanitizer_atomic.h
! b31de3daf790ffbf0cf8bc366f7a9865  libsanitizer/sanitizer_common/sanitizer_atomic_clang.h
  721be1dbdd1c54f48618db8de40da192  libsanitizer/sanitizer_common/sanitizer_atomic_msvc.h
  62aea4a43bd8989b58929848b8bfc2ce  libsanitizer/sanitizer_common/sanitizer_bitvector.h
  2c60255aaee6514e73b7c326d2edbc51  libsanitizer/sanitizer_common/sanitizer_bvgraph.h
  825779226b13ba3409ec77092a87f5fa  libsanitizer/sanitizer_common/sanitizer_chained_origin_depot.cpp
  312f30c8f9914e5c1909e7b2bb105bc5  libsanitizer/sanitizer_common/sanitizer_chained_origin_depot.h
  39b157e63816e5ec5dd61b84f98cda6a  libsanitizer/sanitizer_common/sanitizer_common.cpp
! c0dfa2350e2b5db939decb80322c27d8  libsanitizer/sanitizer_common/sanitizer_common.h
! 26f4454a89cf4851e1e674f38a21ee92  libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc
! 0a68626fb68e0f53b782fec8d795f632  libsanitizer/sanitizer_common/sanitizer_common_interceptors_format.inc
! f7ca723d15d4d448c700727f05b86537  libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
! 1a89be9bea304a8e2a2c2ecb1b8942f3  libsanitizer/sanitizer_common/sanitizer_common_interceptors_memintrinsics.inc
  c664d5fb1514c978d28a6a62b2040b53  libsanitizer/sanitizer_common/sanitizer_common_interceptors_netbsd_compat.inc
! e19e7b0a6d9409a4b3a5c277ebba0b9a  libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_aarch64.inc.S
  3d738bf27e973b3bebdbb87ed70467c0  libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_arm.inc.S
! 09c9b0c5fca7989c02e9a0dcd2ab933d  libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_i386.inc.S
  38347e4acdc72a8875c7924d7b50505f  libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_loongarch64.inc.S
  d5715d90f08ee5cca09715fd5b25b201  libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_riscv64.inc.S
! 77a89301257ab14bab0d4c024ad9c33d  libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_x86_64.inc.S
  2dd47762ea721b2d69ec546f4ebea68e  libsanitizer/sanitizer_common/sanitizer_common_interface.inc
  bf8ce226f58b9794d275785342c4be6b  libsanitizer/sanitizer_common/sanitizer_common_interface_posix.inc
  b6ababc124f0e5321f6bf7e80ca91800  libsanitizer/sanitizer_common/sanitizer_common_libcdep.cpp
  7a1b36d01791b6039980a1da35cc7130  libsanitizer/sanitizer_common/sanitizer_common_nolibc.cpp
! 703f7b0472eb38d9388b20595f1e4ea8  libsanitizer/sanitizer_common/sanitizer_common_syscalls.inc
  780515c8fb1c7353dab146368fcc4da4  libsanitizer/sanitizer_common/sanitizer_coverage_fuchsia.cpp
  c1a02c896ece2bae19c87b561049f73b  libsanitizer/sanitizer_common/sanitizer_coverage_interface.inc
  680aae8760de55d5a977003c75d4e31d  libsanitizer/sanitizer_common/sanitizer_coverage_libcdep_new.cpp
  b626ecb5c331c559b84506d088ea006e  libsanitizer/sanitizer_common/sanitizer_coverage_win_runtime_thunk.cpp
  3f3a487b0f415ffaf2022c06c7e71af4  libsanitizer/sanitizer_common/sanitizer_coverage_win_sections.cpp
  c24845d0d3c29b56170aa71091426359  libsanitizer/sanitizer_common/sanitizer_dbghelp.h
! 93c7f7cfe4584314922d85a50eb6f712  libsanitizer/sanitizer_common/sanitizer_deadlock_detector.h
  60b82132d1e67e37257799273c024824  libsanitizer/sanitizer_common/sanitizer_deadlock_detector1.cpp
  21a5fbc7da336c033aaaff3bf8de5f61  libsanitizer/sanitizer_common/sanitizer_deadlock_detector2.cpp
  714375c2f0080364d3f9636fb365cb50  libsanitizer/sanitizer_common/sanitizer_deadlock_detector_interface.h
--- 142828,142864 ----
  0136f420ff25cc446d086b8a05a982e9  libsanitizer/sanitizer_common/sanitizer_array_ref.h
  61f6307bbc3dfa55854a788367fa217a  libsanitizer/sanitizer_common/sanitizer_asm.h
  7cd70281393ca476547040a412b9dbce  libsanitizer/sanitizer_common/sanitizer_atomic.h
! 64e66099bb819db40e20d70ecc0981bb  libsanitizer/sanitizer_common/sanitizer_atomic_clang.h
  721be1dbdd1c54f48618db8de40da192  libsanitizer/sanitizer_common/sanitizer_atomic_msvc.h
  62aea4a43bd8989b58929848b8bfc2ce  libsanitizer/sanitizer_common/sanitizer_bitvector.h
  2c60255aaee6514e73b7c326d2edbc51  libsanitizer/sanitizer_common/sanitizer_bvgraph.h
  825779226b13ba3409ec77092a87f5fa  libsanitizer/sanitizer_common/sanitizer_chained_origin_depot.cpp
  312f30c8f9914e5c1909e7b2bb105bc5  libsanitizer/sanitizer_common/sanitizer_chained_origin_depot.h
  39b157e63816e5ec5dd61b84f98cda6a  libsanitizer/sanitizer_common/sanitizer_common.cpp
! dcff9380486642ad39e2ca36668a6310  libsanitizer/sanitizer_common/sanitizer_common.h
! 72c52a6d7dbfbdc233a087c6c4398346  libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc
! 35a277fb883f636c344675c31d202b0e  libsanitizer/sanitizer_common/sanitizer_common_interceptors_format.inc
! 2655125c87f7c71f5e5478db2ca359fe  libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
! 9e0c290bd269fe95a3079cc29f7c89e1  libsanitizer/sanitizer_common/sanitizer_common_interceptors_memintrinsics.inc
  c664d5fb1514c978d28a6a62b2040b53  libsanitizer/sanitizer_common/sanitizer_common_interceptors_netbsd_compat.inc
! 956adae6b09618354dbb46f8816141cd  libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_aarch64.inc.S
  3d738bf27e973b3bebdbb87ed70467c0  libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_arm.inc.S
! 3b4e259439cbcb1247489c5f8ae42a80  libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_i386.inc.S
  38347e4acdc72a8875c7924d7b50505f  libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_loongarch64.inc.S
  d5715d90f08ee5cca09715fd5b25b201  libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_riscv64.inc.S
! 8e19572fa0f0fd7d8ee7ece961e9bdc0  libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_x86_64.inc.S
  2dd47762ea721b2d69ec546f4ebea68e  libsanitizer/sanitizer_common/sanitizer_common_interface.inc
  bf8ce226f58b9794d275785342c4be6b  libsanitizer/sanitizer_common/sanitizer_common_interface_posix.inc
  b6ababc124f0e5321f6bf7e80ca91800  libsanitizer/sanitizer_common/sanitizer_common_libcdep.cpp
  7a1b36d01791b6039980a1da35cc7130  libsanitizer/sanitizer_common/sanitizer_common_nolibc.cpp
! 3c4ac8375c5395f5fb28519981cca799  libsanitizer/sanitizer_common/sanitizer_common_syscalls.inc
  780515c8fb1c7353dab146368fcc4da4  libsanitizer/sanitizer_common/sanitizer_coverage_fuchsia.cpp
  c1a02c896ece2bae19c87b561049f73b  libsanitizer/sanitizer_common/sanitizer_coverage_interface.inc
  680aae8760de55d5a977003c75d4e31d  libsanitizer/sanitizer_common/sanitizer_coverage_libcdep_new.cpp
  b626ecb5c331c559b84506d088ea006e  libsanitizer/sanitizer_common/sanitizer_coverage_win_runtime_thunk.cpp
  3f3a487b0f415ffaf2022c06c7e71af4  libsanitizer/sanitizer_common/sanitizer_coverage_win_sections.cpp
  c24845d0d3c29b56170aa71091426359  libsanitizer/sanitizer_common/sanitizer_dbghelp.h
! cc817c1830cfa03b8405915cc65b9e0b  libsanitizer/sanitizer_common/sanitizer_deadlock_detector.h
  60b82132d1e67e37257799273c024824  libsanitizer/sanitizer_common/sanitizer_deadlock_detector1.cpp
  21a5fbc7da336c033aaaff3bf8de5f61  libsanitizer/sanitizer_common/sanitizer_deadlock_detector2.cpp
  714375c2f0080364d3f9636fb365cb50  libsanitizer/sanitizer_common/sanitizer_deadlock_detector_interface.h
*************** c0851917dc871b62dd2f570daa13eea4  libsan
*** 142769,142844 ****
  51f60f3e08112ffd8d2087e1118450d2  libsanitizer/sanitizer_common/sanitizer_dl.cpp
  56aa2ff246c77ba5a8c066d6cc0c8ea9  libsanitizer/sanitizer_common/sanitizer_dl.h
  2bfe2f83195a87b4f57151a8adc98706  libsanitizer/sanitizer_common/sanitizer_errno.cpp
! b751f665e23f9c48eeffdb8ab7973e35  libsanitizer/sanitizer_common/sanitizer_errno.h
! 204bc959e2b196b621b61cdf5894c34b  libsanitizer/sanitizer_common/sanitizer_errno_codes.h
! 17570b73ac0f8624e61847211f669fa7  libsanitizer/sanitizer_common/sanitizer_file.cpp
! 1a5a447ab60a66359da740801bd8ba9d  libsanitizer/sanitizer_common/sanitizer_file.h
  fe75d2882844576020bba0da3fd2de97  libsanitizer/sanitizer_common/sanitizer_flag_parser.cpp
  1e99a92428a0c48f7a74933ba4f3f378  libsanitizer/sanitizer_common/sanitizer_flag_parser.h
  1f6a67b0728f9b8e7c3cca7b3d8efa8d  libsanitizer/sanitizer_common/sanitizer_flags.cpp
  50b07ed067f181e6df763aa0940acec1  libsanitizer/sanitizer_common/sanitizer_flags.h
! cae746d04ddd7dbb5cf06850d639c753  libsanitizer/sanitizer_common/sanitizer_flags.inc
  c494ec3dcc524f252a462aafb5d84148  libsanitizer/sanitizer_common/sanitizer_flat_map.h
! d6c6926a15bb2c56155cc4c06d30259f  libsanitizer/sanitizer_common/sanitizer_fuchsia.cpp
! 286b7995698dbe20223e1a3c05933d6d  libsanitizer/sanitizer_common/sanitizer_fuchsia.h
! 1d8e62bbd8a595f6e44228e1dc7cbcd8  libsanitizer/sanitizer_common/sanitizer_getauxval.h
  f06be5c69a658d7ac5ebea616ebb001a  libsanitizer/sanitizer_common/sanitizer_glibc_version.h
  7437a0d8e50cbc7d1d25d27e390f9dc9  libsanitizer/sanitizer_common/sanitizer_hash.h
  14320fc600ec0b7789c3baf1cf923a1d  libsanitizer/sanitizer_common/sanitizer_interceptors_ioctl_netbsd.inc
  bd4f256aead593f4ef70966739361714  libsanitizer/sanitizer_common/sanitizer_interface_internal.h
! 6d09fb1e026a1a0e9c8b7de5dc584dd2  libsanitizer/sanitizer_common/sanitizer_internal_defs.h
  45de936b7d4065758483844c920f2ba4  libsanitizer/sanitizer_common/sanitizer_leb128.h
  5da7cbe05015b8a52342cd8a74fb0ad2  libsanitizer/sanitizer_common/sanitizer_lfstack.h
  abc3d4588ee1b4576e4493c95b0b0583  libsanitizer/sanitizer_common/sanitizer_libc.cpp
  fcccc17ab9511f4da14279e7828a5ddd  libsanitizer/sanitizer_common/sanitizer_libc.h
  ddfd6af3f87a47b1ce8919e05e930d24  libsanitizer/sanitizer_common/sanitizer_libignore.cpp
  08871b2f457db946621b7b929d40e4c9  libsanitizer/sanitizer_common/sanitizer_libignore.h
! 2b88de7322e61cd7d89c0b59bef0682e  libsanitizer/sanitizer_common/sanitizer_linux.cpp
! 0e9136f3c4cd9ebab1135b8c7fc95b49  libsanitizer/sanitizer_common/sanitizer_linux.h
! b1e56ece7ce8aaa37374e2df63d0a192  libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp
  b744ae519d9a0007389121695e32a90b  libsanitizer/sanitizer_common/sanitizer_linux_s390.cpp
  51d4c37472c1c2c6010e5d1eb5bf340f  libsanitizer/sanitizer_common/sanitizer_list.h
  15f5a30dda04b6f3bc49cb5206d92e7b  libsanitizer/sanitizer_common/sanitizer_local_address_space_view.h
  b819992c5da123bc4d79e61fa5154215  libsanitizer/sanitizer_common/sanitizer_lzw.h
! 3a9e3b00fedce5149369f2f633bb0eb4  libsanitizer/sanitizer_common/sanitizer_mac.cpp
! 4a2287c1e441c3abcc5c9ee7aee2754d  libsanitizer/sanitizer_common/sanitizer_mac.h
  3c8a29762c7ecf7082ea5a28335716f6  libsanitizer/sanitizer_common/sanitizer_mac_libcdep.cpp
  e93238f16cdf5cf465aa2c721a4e5447  libsanitizer/sanitizer_common/sanitizer_mallinfo.h
! 782e293828801abaf565a8fefd3cce35  libsanitizer/sanitizer_common/sanitizer_malloc_mac.inc
  37d72ef7a8199cc8557a541d81be679f  libsanitizer/sanitizer_common/sanitizer_mutex.cpp
  7dc346968361491c8e35254fcd12ca5c  libsanitizer/sanitizer_common/sanitizer_mutex.h
! 3ec767742997468be9817fb2a5fe4c1f  libsanitizer/sanitizer_common/sanitizer_netbsd.cpp
  ceac766877c4c2363d959a0ebaa74421  libsanitizer/sanitizer_common/sanitizer_placement_new.h
! 2baabfc5be74c1737404850a1e7f22d4  libsanitizer/sanitizer_common/sanitizer_platform.h
! 50c1aed3617beff9d3ddbadf90e1e077  libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h
! 9339dda2345e2e11200a7c44fe3aa71e  libsanitizer/sanitizer_common/sanitizer_platform_limits_freebsd.cpp
! c20619c1cdd5936e7b8b0c701a9389ef  libsanitizer/sanitizer_common/sanitizer_platform_limits_freebsd.h
  b582d1c8ad1dfab45211cbb7c25cf5f6  libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cpp
! a4d7b3990585330fb0fbc99e5afaf019  libsanitizer/sanitizer_common/sanitizer_platform_limits_netbsd.cpp
! 0865bdc585846a1c9cfa5d1df0517d02  libsanitizer/sanitizer_common/sanitizer_platform_limits_netbsd.h
! ae39fafc805d942f70ebb97140084eae  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
! 292ad6a7d436278e2f125cecbe8cd711  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
! 711b54008ada7faff939a95e325b185b  libsanitizer/sanitizer_common/sanitizer_platform_limits_solaris.cpp
! ab1ad414331f77e459da9a32b756cbac  libsanitizer/sanitizer_common/sanitizer_platform_limits_solaris.h
! f0b890407c0f914a601ad28f17dadfee  libsanitizer/sanitizer_common/sanitizer_posix.cpp
  5afb08036b6622b667986de89bc658de  libsanitizer/sanitizer_common/sanitizer_posix.h
! 3c1674ab91e6a5fd8475bfd7ac39cde6  libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cpp
  4dcc859b9034e8711c54a922aa2655e5  libsanitizer/sanitizer_common/sanitizer_printf.cpp
! e74aaa19ad8d77b9c3fdc095cd85f72d  libsanitizer/sanitizer_common/sanitizer_procmaps.h
  fae42c956eac7df94a6d84263f802737  libsanitizer/sanitizer_common/sanitizer_procmaps_bsd.cpp
  2fa1929aff0076a2eb5e7e7723fea652  libsanitizer/sanitizer_common/sanitizer_procmaps_common.cpp
  359d6e04536b11f84ee64fcc65fceff5  libsanitizer/sanitizer_common/sanitizer_procmaps_fuchsia.cpp
  cac752f7b42df7a26fc91e0aadc8aa36  libsanitizer/sanitizer_common/sanitizer_procmaps_linux.cpp
! c11a721b657c9e27d2bbcde1c4a839b6  libsanitizer/sanitizer_common/sanitizer_procmaps_mac.cpp
! 2fb0efa00fc53422e18e61baadf421cc  libsanitizer/sanitizer_common/sanitizer_procmaps_solaris.cpp
  796a93e9377f8db4d1a9b36bd27ce711  libsanitizer/sanitizer_common/sanitizer_ptrauth.h
  6a13c5d77fcf1ab15a92498a30bfc5c2  libsanitizer/sanitizer_common/sanitizer_quarantine.h
  7991d1d21190a84ae23b6795d92b8228  libsanitizer/sanitizer_common/sanitizer_range.cpp
  63beefad8f822d08911997ce177551c3  libsanitizer/sanitizer_common/sanitizer_range.h
! ce37125aeef9e9fa5d27b36132a84f7f  libsanitizer/sanitizer_common/sanitizer_redefine_builtins.h
  790117d4c85c98c499151ad830f99a49  libsanitizer/sanitizer_common/sanitizer_report_decorator.h
  490e9e2e338b8cd9b363bf836a1362d7  libsanitizer/sanitizer_common/sanitizer_ring_buffer.h
! 62a52ef4ab43d92a89baff5071bc1ded  libsanitizer/sanitizer_common/sanitizer_signal_interceptors.inc
  d81628c1f3c14142bf5218228d6bdcc6  libsanitizer/sanitizer_common/sanitizer_solaris.cpp
  379f4e42b7a717d642000a85a853e264  libsanitizer/sanitizer_common/sanitizer_solaris.h
  d0c53826f3b557f2e124ec2c64fa02b2  libsanitizer/sanitizer_common/sanitizer_stack_store.cpp
--- 142867,142942 ----
  51f60f3e08112ffd8d2087e1118450d2  libsanitizer/sanitizer_common/sanitizer_dl.cpp
  56aa2ff246c77ba5a8c066d6cc0c8ea9  libsanitizer/sanitizer_common/sanitizer_dl.h
  2bfe2f83195a87b4f57151a8adc98706  libsanitizer/sanitizer_common/sanitizer_errno.cpp
! 58efda50d41552a57cfcb3ed5b329d20  libsanitizer/sanitizer_common/sanitizer_errno.h
! 41e0b89e8438d5076b5f1fdc7932b76d  libsanitizer/sanitizer_common/sanitizer_errno_codes.h
! 52d8d515d8a6fb2d8626b56e2065943d  libsanitizer/sanitizer_common/sanitizer_file.cpp
! fe3a18fc7087866225c9bb4b1c600932  libsanitizer/sanitizer_common/sanitizer_file.h
  fe75d2882844576020bba0da3fd2de97  libsanitizer/sanitizer_common/sanitizer_flag_parser.cpp
  1e99a92428a0c48f7a74933ba4f3f378  libsanitizer/sanitizer_common/sanitizer_flag_parser.h
  1f6a67b0728f9b8e7c3cca7b3d8efa8d  libsanitizer/sanitizer_common/sanitizer_flags.cpp
  50b07ed067f181e6df763aa0940acec1  libsanitizer/sanitizer_common/sanitizer_flags.h
! fe40f7c2a72e8c23566d509f382e425e  libsanitizer/sanitizer_common/sanitizer_flags.inc
  c494ec3dcc524f252a462aafb5d84148  libsanitizer/sanitizer_common/sanitizer_flat_map.h
! 1a8626021d7e8ac4edec11212c99787e  libsanitizer/sanitizer_common/sanitizer_fuchsia.cpp
! 28d8463cdde8cd03a0278ce88d000065  libsanitizer/sanitizer_common/sanitizer_fuchsia.h
! 14e511aaa73bd5c9f9fa5283df448c3c  libsanitizer/sanitizer_common/sanitizer_getauxval.h
  f06be5c69a658d7ac5ebea616ebb001a  libsanitizer/sanitizer_common/sanitizer_glibc_version.h
  7437a0d8e50cbc7d1d25d27e390f9dc9  libsanitizer/sanitizer_common/sanitizer_hash.h
  14320fc600ec0b7789c3baf1cf923a1d  libsanitizer/sanitizer_common/sanitizer_interceptors_ioctl_netbsd.inc
  bd4f256aead593f4ef70966739361714  libsanitizer/sanitizer_common/sanitizer_interface_internal.h
! 05113e403f8108c9649ed130364bd06b  libsanitizer/sanitizer_common/sanitizer_internal_defs.h
  45de936b7d4065758483844c920f2ba4  libsanitizer/sanitizer_common/sanitizer_leb128.h
  5da7cbe05015b8a52342cd8a74fb0ad2  libsanitizer/sanitizer_common/sanitizer_lfstack.h
  abc3d4588ee1b4576e4493c95b0b0583  libsanitizer/sanitizer_common/sanitizer_libc.cpp
  fcccc17ab9511f4da14279e7828a5ddd  libsanitizer/sanitizer_common/sanitizer_libc.h
  ddfd6af3f87a47b1ce8919e05e930d24  libsanitizer/sanitizer_common/sanitizer_libignore.cpp
  08871b2f457db946621b7b929d40e4c9  libsanitizer/sanitizer_common/sanitizer_libignore.h
! 3b040cdbbd8d59dd8bca5f091644d2e0  libsanitizer/sanitizer_common/sanitizer_linux.cpp
! 6ee055da8056b99c138578a0a97fc57b  libsanitizer/sanitizer_common/sanitizer_linux.h
! 8acdbbbfdb9494286418a43be5214019  libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp
  b744ae519d9a0007389121695e32a90b  libsanitizer/sanitizer_common/sanitizer_linux_s390.cpp
  51d4c37472c1c2c6010e5d1eb5bf340f  libsanitizer/sanitizer_common/sanitizer_list.h
  15f5a30dda04b6f3bc49cb5206d92e7b  libsanitizer/sanitizer_common/sanitizer_local_address_space_view.h
  b819992c5da123bc4d79e61fa5154215  libsanitizer/sanitizer_common/sanitizer_lzw.h
! b260755e2e295cca629af4888461f415  libsanitizer/sanitizer_common/sanitizer_mac.cpp
! 1383a729fb9fa35eb8ec302a325a70e9  libsanitizer/sanitizer_common/sanitizer_mac.h
  3c8a29762c7ecf7082ea5a28335716f6  libsanitizer/sanitizer_common/sanitizer_mac_libcdep.cpp
  e93238f16cdf5cf465aa2c721a4e5447  libsanitizer/sanitizer_common/sanitizer_mallinfo.h
! 2072e18eeb42e914f38272cab6d58d26  libsanitizer/sanitizer_common/sanitizer_malloc_mac.inc
  37d72ef7a8199cc8557a541d81be679f  libsanitizer/sanitizer_common/sanitizer_mutex.cpp
  7dc346968361491c8e35254fcd12ca5c  libsanitizer/sanitizer_common/sanitizer_mutex.h
! 79b666c2befc03c43d5d2c29085e5787  libsanitizer/sanitizer_common/sanitizer_netbsd.cpp
  ceac766877c4c2363d959a0ebaa74421  libsanitizer/sanitizer_common/sanitizer_placement_new.h
! a0b5c16bfa42f20401128d91562b45ee  libsanitizer/sanitizer_common/sanitizer_platform.h
! 7623c50f6135b32bbf01c9465ce923ae  libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h
! 47644b7c8e4a3f43b3fff13d585441fa  libsanitizer/sanitizer_common/sanitizer_platform_limits_freebsd.cpp
! e2028d620f63073886f18579dcdb8d5f  libsanitizer/sanitizer_common/sanitizer_platform_limits_freebsd.h
  b582d1c8ad1dfab45211cbb7c25cf5f6  libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cpp
! 4243d5b306f4e60f91a88e43d960d82d  libsanitizer/sanitizer_common/sanitizer_platform_limits_netbsd.cpp
! 411ecf024e7ca3399783152d0a8b1f14  libsanitizer/sanitizer_common/sanitizer_platform_limits_netbsd.h
! 92ec6a90685ade2f33a3e507af4ec47f  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
! 3d5549a16542a4aafd42b392ff7417b1  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
! ded55bf57e2f75649daa859be5849aea  libsanitizer/sanitizer_common/sanitizer_platform_limits_solaris.cpp
! d3d6fc8b858ce5fb68945027ac64585a  libsanitizer/sanitizer_common/sanitizer_platform_limits_solaris.h
! 88d3a3793fefd2dbf92ce4ccfdcf2831  libsanitizer/sanitizer_common/sanitizer_posix.cpp
  5afb08036b6622b667986de89bc658de  libsanitizer/sanitizer_common/sanitizer_posix.h
! d2df504620ac24e96f3fae59b61e9148  libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cpp
  4dcc859b9034e8711c54a922aa2655e5  libsanitizer/sanitizer_common/sanitizer_printf.cpp
! 3783b1a7e271877cf2f8dc7965de16e9  libsanitizer/sanitizer_common/sanitizer_procmaps.h
  fae42c956eac7df94a6d84263f802737  libsanitizer/sanitizer_common/sanitizer_procmaps_bsd.cpp
  2fa1929aff0076a2eb5e7e7723fea652  libsanitizer/sanitizer_common/sanitizer_procmaps_common.cpp
  359d6e04536b11f84ee64fcc65fceff5  libsanitizer/sanitizer_common/sanitizer_procmaps_fuchsia.cpp
  cac752f7b42df7a26fc91e0aadc8aa36  libsanitizer/sanitizer_common/sanitizer_procmaps_linux.cpp
! 56bdea2c98fb5586f96906b8b69b1148  libsanitizer/sanitizer_common/sanitizer_procmaps_mac.cpp
! ca9cc861399b488409ed41ba77d7607f  libsanitizer/sanitizer_common/sanitizer_procmaps_solaris.cpp
  796a93e9377f8db4d1a9b36bd27ce711  libsanitizer/sanitizer_common/sanitizer_ptrauth.h
  6a13c5d77fcf1ab15a92498a30bfc5c2  libsanitizer/sanitizer_common/sanitizer_quarantine.h
  7991d1d21190a84ae23b6795d92b8228  libsanitizer/sanitizer_common/sanitizer_range.cpp
  63beefad8f822d08911997ce177551c3  libsanitizer/sanitizer_common/sanitizer_range.h
! 88857b15b3de420a2e77d990e0631771  libsanitizer/sanitizer_common/sanitizer_redefine_builtins.h
  790117d4c85c98c499151ad830f99a49  libsanitizer/sanitizer_common/sanitizer_report_decorator.h
  490e9e2e338b8cd9b363bf836a1362d7  libsanitizer/sanitizer_common/sanitizer_ring_buffer.h
! 78c6484faf368ee653b5f05b5d751999  libsanitizer/sanitizer_common/sanitizer_signal_interceptors.inc
  d81628c1f3c14142bf5218228d6bdcc6  libsanitizer/sanitizer_common/sanitizer_solaris.cpp
  379f4e42b7a717d642000a85a853e264  libsanitizer/sanitizer_common/sanitizer_solaris.h
  d0c53826f3b557f2e124ec2c64fa02b2  libsanitizer/sanitizer_common/sanitizer_stack_store.cpp
*************** a0239ea33a0aa9852e7a41bfcc9a4d23  libsan
*** 142852,142864 ****
  c924ab59f0a14028d44589b5772ec4a4  libsanitizer/sanitizer_common/sanitizer_stacktrace_printer.cpp
  633c7a616408195d104492b3f8d74d39  libsanitizer/sanitizer_common/sanitizer_stacktrace_printer.h
  5ca09ec40d6a2d96e5146f3711376479  libsanitizer/sanitizer_common/sanitizer_stacktrace_sparc.cpp
! 76324ac84f5eb512c3e2351dbfd9ce24  libsanitizer/sanitizer_common/sanitizer_stoptheworld.h
  c1faa837dd50d9ad2162751a200fa58b  libsanitizer/sanitizer_common/sanitizer_stoptheworld_fuchsia.cpp
  60c0888eff94b59773f87548c52f756a  libsanitizer/sanitizer_common/sanitizer_stoptheworld_fuchsia.h
! 022ee2ebd01a6e9a6587f6890a6f18e1  libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp
! c22a391491d33bcbef7758f001dc204d  libsanitizer/sanitizer_common/sanitizer_stoptheworld_mac.cpp
! 0f7617268ce454b6bb3c1180966d7092  libsanitizer/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cpp
! bdb416b455b14acf317962318eb84924  libsanitizer/sanitizer_common/sanitizer_stoptheworld_win.cpp
  fe8c1a0a2761d65e1bb01489459babb2  libsanitizer/sanitizer_common/sanitizer_suppressions.cpp
  6dc05d23b94fb4783618dcd3cd4b1c9f  libsanitizer/sanitizer_common/sanitizer_suppressions.h
  9f7aefe7272c0c1ac5c83fba7988c9d3  libsanitizer/sanitizer_common/sanitizer_symbolizer.cpp
--- 142950,142962 ----
  c924ab59f0a14028d44589b5772ec4a4  libsanitizer/sanitizer_common/sanitizer_stacktrace_printer.cpp
  633c7a616408195d104492b3f8d74d39  libsanitizer/sanitizer_common/sanitizer_stacktrace_printer.h
  5ca09ec40d6a2d96e5146f3711376479  libsanitizer/sanitizer_common/sanitizer_stacktrace_sparc.cpp
! 6919a5e768e3ad23e6406584730e28ae  libsanitizer/sanitizer_common/sanitizer_stoptheworld.h
  c1faa837dd50d9ad2162751a200fa58b  libsanitizer/sanitizer_common/sanitizer_stoptheworld_fuchsia.cpp
  60c0888eff94b59773f87548c52f756a  libsanitizer/sanitizer_common/sanitizer_stoptheworld_fuchsia.h
! 825e90cb11b28e28543b0edd701eb0c0  libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp
! 45c046bc82da22558789c6a05696adae  libsanitizer/sanitizer_common/sanitizer_stoptheworld_mac.cpp
! 46087464156bf2cb64d2217cd8d13d72  libsanitizer/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cpp
! d59060372dd2172b9e88452a21f73f02  libsanitizer/sanitizer_common/sanitizer_stoptheworld_win.cpp
  fe8c1a0a2761d65e1bb01489459babb2  libsanitizer/sanitizer_common/sanitizer_suppressions.cpp
  6dc05d23b94fb4783618dcd3cd4b1c9f  libsanitizer/sanitizer_common/sanitizer_suppressions.h
  9f7aefe7272c0c1ac5c83fba7988c9d3  libsanitizer/sanitizer_common/sanitizer_symbolizer.cpp
*************** e1a480087ee92ca2798a0b831172ba8f  libsan
*** 142866,142879 ****
  7f944ae09b27a906e595c100e8e459ee  libsanitizer/sanitizer_common/sanitizer_symbolizer_internal.h
  86502e8ef2c025574561f9f604e8652d  libsanitizer/sanitizer_common/sanitizer_symbolizer_libbacktrace.cpp
  57fad0f520b4b3e56bb19ce40a50676a  libsanitizer/sanitizer_common/sanitizer_symbolizer_libbacktrace.h
! 80669b590a417ebc2275714b67f9b450  libsanitizer/sanitizer_common/sanitizer_symbolizer_libcdep.cpp
  e43082e26d355a72cad2912e888f797b  libsanitizer/sanitizer_common/sanitizer_symbolizer_mac.cpp
  cf53e533bc415a2a97e702de211878f1  libsanitizer/sanitizer_common/sanitizer_symbolizer_mac.h
  abf52a3e832c9712775d39369c36700c  libsanitizer/sanitizer_common/sanitizer_symbolizer_markup.cpp
  8d6bcc9e7430f340fc5568c35561d488  libsanitizer/sanitizer_common/sanitizer_symbolizer_markup.h
  98b8ab75645b13d047205e528a21b227  libsanitizer/sanitizer_common/sanitizer_symbolizer_markup_constants.h
  f1ec702dc3a4a44acfae0a30bc3c6618  libsanitizer/sanitizer_common/sanitizer_symbolizer_markup_fuchsia.cpp
! 7f0871614fbeb39a46b3c3cdc3fe9598  libsanitizer/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp
  f7d3dc332f1ca461481b2cadb3e970b5  libsanitizer/sanitizer_common/sanitizer_symbolizer_report.cpp
  cdddef85fd548c558a0e39808c64bb86  libsanitizer/sanitizer_common/sanitizer_symbolizer_report_fuchsia.cpp
  4911379d3e13fcc97ce842cfacf45d4e  libsanitizer/sanitizer_common/sanitizer_symbolizer_win.cpp
--- 142964,142977 ----
  7f944ae09b27a906e595c100e8e459ee  libsanitizer/sanitizer_common/sanitizer_symbolizer_internal.h
  86502e8ef2c025574561f9f604e8652d  libsanitizer/sanitizer_common/sanitizer_symbolizer_libbacktrace.cpp
  57fad0f520b4b3e56bb19ce40a50676a  libsanitizer/sanitizer_common/sanitizer_symbolizer_libbacktrace.h
! ad9c7eae214d496bc3eeb6ef36dffdfb  libsanitizer/sanitizer_common/sanitizer_symbolizer_libcdep.cpp
  e43082e26d355a72cad2912e888f797b  libsanitizer/sanitizer_common/sanitizer_symbolizer_mac.cpp
  cf53e533bc415a2a97e702de211878f1  libsanitizer/sanitizer_common/sanitizer_symbolizer_mac.h
  abf52a3e832c9712775d39369c36700c  libsanitizer/sanitizer_common/sanitizer_symbolizer_markup.cpp
  8d6bcc9e7430f340fc5568c35561d488  libsanitizer/sanitizer_common/sanitizer_symbolizer_markup.h
  98b8ab75645b13d047205e528a21b227  libsanitizer/sanitizer_common/sanitizer_symbolizer_markup_constants.h
  f1ec702dc3a4a44acfae0a30bc3c6618  libsanitizer/sanitizer_common/sanitizer_symbolizer_markup_fuchsia.cpp
! 0bfe7231ca327049e3652c73f2733227  libsanitizer/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp
  f7d3dc332f1ca461481b2cadb3e970b5  libsanitizer/sanitizer_common/sanitizer_symbolizer_report.cpp
  cdddef85fd548c558a0e39808c64bb86  libsanitizer/sanitizer_common/sanitizer_symbolizer_report_fuchsia.cpp
  4911379d3e13fcc97ce842cfacf45d4e  libsanitizer/sanitizer_common/sanitizer_symbolizer_win.cpp
*************** dd3c422b6984d35ca7d0c2b990a064f7  libsan
*** 142890,142907 ****
  a7531068a4273b1bec8fd603f49f392f  libsanitizer/sanitizer_common/sanitizer_thread_arg_retval.h
  902db1424df4d3b0660b1c65d7e09958  libsanitizer/sanitizer_common/sanitizer_thread_history.cpp
  100d934af5f35007d9f12fd7926b344f  libsanitizer/sanitizer_common/sanitizer_thread_history.h
! 24ea9b7ab5b6de38df61d14d6808628f  libsanitizer/sanitizer_common/sanitizer_thread_registry.cpp
! 5f71ee79c0197391a5c670da69dfe7cb  libsanitizer/sanitizer_common/sanitizer_thread_registry.h
  f337f2c9c679c772ddff2564c1e814e5  libsanitizer/sanitizer_common/sanitizer_thread_safety.h
  81cfeed5164e74c68231f3c47a11842f  libsanitizer/sanitizer_common/sanitizer_tls_get_addr.cpp
  b6930b12d743a8868664486ff99904ae  libsanitizer/sanitizer_common/sanitizer_tls_get_addr.h
  daf0a3ec50a14c09b41741865f11e807  libsanitizer/sanitizer_common/sanitizer_type_traits.cpp
  c7100b0c25734fc3c76d5416db5be325  libsanitizer/sanitizer_common/sanitizer_type_traits.h
  011c202871bc5910625c34ae50dc7f03  libsanitizer/sanitizer_common/sanitizer_unwind_fuchsia.cpp
! 8b294afb5681a0b6adddd1dc224e8eb3  libsanitizer/sanitizer_common/sanitizer_unwind_linux_libcdep.cpp
! eb0550c92bfbe239a01f3c921491c107  libsanitizer/sanitizer_common/sanitizer_unwind_win.cpp
  c6626ead5ce5eff397b6675bbf291cde  libsanitizer/sanitizer_common/sanitizer_vector.h
! 5647f17e36c6788f43d8590da9c312d7  libsanitizer/sanitizer_common/sanitizer_win.cpp
  ca31c361d0d8cc286a9c2a79da57a3ed  libsanitizer/sanitizer_common/sanitizer_win.h
  3a867f4ebec3e726e51526c82c85c978  libsanitizer/sanitizer_common/sanitizer_win_defs.h
  ad4e673c6991ddc18b59c25260ab7126  libsanitizer/sanitizer_common/sanitizer_win_immortalize.h
--- 142988,143005 ----
  a7531068a4273b1bec8fd603f49f392f  libsanitizer/sanitizer_common/sanitizer_thread_arg_retval.h
  902db1424df4d3b0660b1c65d7e09958  libsanitizer/sanitizer_common/sanitizer_thread_history.cpp
  100d934af5f35007d9f12fd7926b344f  libsanitizer/sanitizer_common/sanitizer_thread_history.h
! 2ef4d936e361be65877c9cafd6cb1a2d  libsanitizer/sanitizer_common/sanitizer_thread_registry.cpp
! 56e4d90241defe45ceeeddfd39f242d0  libsanitizer/sanitizer_common/sanitizer_thread_registry.h
  f337f2c9c679c772ddff2564c1e814e5  libsanitizer/sanitizer_common/sanitizer_thread_safety.h
  81cfeed5164e74c68231f3c47a11842f  libsanitizer/sanitizer_common/sanitizer_tls_get_addr.cpp
  b6930b12d743a8868664486ff99904ae  libsanitizer/sanitizer_common/sanitizer_tls_get_addr.h
  daf0a3ec50a14c09b41741865f11e807  libsanitizer/sanitizer_common/sanitizer_type_traits.cpp
  c7100b0c25734fc3c76d5416db5be325  libsanitizer/sanitizer_common/sanitizer_type_traits.h
  011c202871bc5910625c34ae50dc7f03  libsanitizer/sanitizer_common/sanitizer_unwind_fuchsia.cpp
! b99b73f250a760b524be450b0d3bbc31  libsanitizer/sanitizer_common/sanitizer_unwind_linux_libcdep.cpp
! 104d51472adf42d7f6e3f82699bc6e37  libsanitizer/sanitizer_common/sanitizer_unwind_win.cpp
  c6626ead5ce5eff397b6675bbf291cde  libsanitizer/sanitizer_common/sanitizer_vector.h
! cf41c92147635e921d02133938336213  libsanitizer/sanitizer_common/sanitizer_win.cpp
  ca31c361d0d8cc286a9c2a79da57a3ed  libsanitizer/sanitizer_common/sanitizer_win.h
  3a867f4ebec3e726e51526c82c85c978  libsanitizer/sanitizer_common/sanitizer_win_defs.h
  ad4e673c6991ddc18b59c25260ab7126  libsanitizer/sanitizer_common/sanitizer_win_immortalize.h
*************** d96a79aae86361640da54337862c2369  libsan
*** 142912,142974 ****
  a3fb2da1f02bba234ad5bb2a01f67db9  libsanitizer/tsan/Makefile.am
  20a4dfd3c2600d66d89915db53a4c40a  libsanitizer/tsan/Makefile.in
  4993c3783465efe7eb63dd3ae6611678  libsanitizer/tsan/libtool-version
! c9463f7672b8955c8c5a62008e50d172  libsanitizer/tsan/tsan_debugging.cpp
  d90b2e24518aaa7ec11d4a260ca2529d  libsanitizer/tsan/tsan_defs.h
  2b8f57d3e2eee47095d7d41f44964f41  libsanitizer/tsan/tsan_dense_alloc.h
  3f795e350589a36d74082d95246390a7  libsanitizer/tsan/tsan_dispatch_defs.h
  739c3934d530a14499813584df8a16d0  libsanitizer/tsan/tsan_external.cpp
  3d494f806f28e53275870211565852ef  libsanitizer/tsan/tsan_fd.cpp
  84644dcbcc7cf34528393f9790a85897  libsanitizer/tsan/tsan_fd.h
! 7cfdddbed7ec59ef27883bbb0ae366ba  libsanitizer/tsan/tsan_flags.cpp
! 9fcbcc17ace4216572d132c7f19980dd  libsanitizer/tsan/tsan_flags.h
! 03e8ef6fd65a0666d2072c12853e6950  libsanitizer/tsan/tsan_flags.inc
  60bfaa19bc1c038d806e759abd03e869  libsanitizer/tsan/tsan_ignoreset.cpp
  d419772368c76a807ff66bafd0683028  libsanitizer/tsan/tsan_ignoreset.h
  45bd7ec3e79167e3101e35f5ba81d51b  libsanitizer/tsan/tsan_ilist.h
! 06a4b4cb6505540e613b010a75484946  libsanitizer/tsan/tsan_interceptors.h
  5ae7905d35628b6e1eed00f1fc25caa7  libsanitizer/tsan/tsan_interceptors_libdispatch.cpp
! 3dd09fadeccfcff17c53d9f3d477d441  libsanitizer/tsan/tsan_interceptors_mac.cpp
  a83781c196d253d2f7538367873b4d65  libsanitizer/tsan/tsan_interceptors_mach_vm.cpp
  fad10d5e8278f758dbd89e63f71aae9d  libsanitizer/tsan/tsan_interceptors_memintrinsics.cpp
! 4c2b8322723730eb16592589a5b5132e  libsanitizer/tsan/tsan_interceptors_posix.cpp
  44e87b9222e50e4ce561458989a58e85  libsanitizer/tsan/tsan_interface.cpp
! 13f1c6ec638214307e59922e63b441cb  libsanitizer/tsan/tsan_interface.h
  12c2d0a710c7eb00a61b269e3a5e2444  libsanitizer/tsan/tsan_interface.inc
! d9d264f1180f3469f037bda22866604c  libsanitizer/tsan/tsan_interface_ann.cpp
  85e02689af55fa1cc3f98b5cfe3043a1  libsanitizer/tsan/tsan_interface_ann.h
! f098696b72ba6c84c36e80dd22ca5fe1  libsanitizer/tsan/tsan_interface_atomic.cpp
! fa41f071fdf51b20a993550241165dfd  libsanitizer/tsan/tsan_interface_java.cpp
  b6f28fd4519c6bc2e8cd9cdb820f72a8  libsanitizer/tsan/tsan_interface_java.h
! c7957f47ce5239b5caf8b53459f90f6e  libsanitizer/tsan/tsan_malloc_mac.cpp
  2ce89d665869a9e29509f68c3b093511  libsanitizer/tsan/tsan_md5.cpp
! 11161e3f887648c3ad7a5e16c86b867a  libsanitizer/tsan/tsan_mman.cpp
  9aae8d8fa5ebb886928f6ad7ce84afc6  libsanitizer/tsan/tsan_mman.h
  fce523833cd619da90b4bb9efe7126aa  libsanitizer/tsan/tsan_mutexset.cpp
  5c2fffc76ce06a684d8c9fe407d8d735  libsanitizer/tsan/tsan_mutexset.h
  abb77573543b4ca2e18a84ae834d8ff7  libsanitizer/tsan/tsan_new_delete.cpp
! 21013f34fb38c39d923a4becc4cf3f4c  libsanitizer/tsan/tsan_platform.h
! 0ba234829c39ce12f5c331a7ef21f946  libsanitizer/tsan/tsan_platform_linux.cpp
! a5f1c5f77db8e9f3000e80a2e79061cf  libsanitizer/tsan/tsan_platform_mac.cpp
  a2153ea5e715c8b4cbd27c7974257d1b  libsanitizer/tsan/tsan_platform_posix.cpp
  3988e672409da51d77f562f3c17ad309  libsanitizer/tsan/tsan_platform_windows.cpp
  52a08181bf0cebd537f6ff681e4201d2  libsanitizer/tsan/tsan_ppc_regs.h
  60c37ff46cc77df61a768bb1f5b8fe36  libsanitizer/tsan/tsan_preinit.cpp
  7db544717620fcdfff2dff23ba583ee2  libsanitizer/tsan/tsan_report.cpp
! c68d61aeee9a11bc4c3a287966347eb9  libsanitizer/tsan/tsan_report.h
! fa80d813475718c4f54ce0d0761d8470  libsanitizer/tsan/tsan_rtl.cpp
! dca5f89ede3069ad9ba42144ac8343ad  libsanitizer/tsan/tsan_rtl.h
! 8c47cfcb64eab03f1b479fe81b8f28ab  libsanitizer/tsan/tsan_rtl_aarch64.S
! b6a8ad241afad6f1ad8719389ee85006  libsanitizer/tsan/tsan_rtl_access.cpp
! 21a51361f4b9d69ba544bd2b24129994  libsanitizer/tsan/tsan_rtl_amd64.S
  9c988affea81c858d52b1b7ebf21e3b3  libsanitizer/tsan/tsan_rtl_loongarch64.S
  2e223da4b198b7996aa993b62da9470c  libsanitizer/tsan/tsan_rtl_mips64.S
! 5204d8d4182b601b778c97e5c50fd8fe  libsanitizer/tsan/tsan_rtl_mutex.cpp
  d771c907949512e86f6221398475c2c1  libsanitizer/tsan/tsan_rtl_ppc64.S
  d23feb95e5ade35c9d1fa0203dfc64bb  libsanitizer/tsan/tsan_rtl_proc.cpp
! f3053726fb4fce5a28eec514926684eb  libsanitizer/tsan/tsan_rtl_report.cpp
  39578f7f0f1d3c5038bb6d1efb8d1335  libsanitizer/tsan/tsan_rtl_riscv64.S
  28f4e3484ccd9079551dd4c92a0c47f2  libsanitizer/tsan/tsan_rtl_s390x.S
! 0e4c3cb20831d3c6b2f713091b53f792  libsanitizer/tsan/tsan_rtl_thread.cpp
  a10771eef091e41d3529a27da63b2c73  libsanitizer/tsan/tsan_shadow.h
  17ea88c98da50f5e75f508e49c6e098e  libsanitizer/tsan/tsan_spinlock_defs_mac.h
  d927f16e28e5fd7b5a8c718f575d7a09  libsanitizer/tsan/tsan_stack_trace.cpp
--- 143010,143072 ----
  a3fb2da1f02bba234ad5bb2a01f67db9  libsanitizer/tsan/Makefile.am
  20a4dfd3c2600d66d89915db53a4c40a  libsanitizer/tsan/Makefile.in
  4993c3783465efe7eb63dd3ae6611678  libsanitizer/tsan/libtool-version
! 3d5eb3a1421a064514ea0f8f5d8d3b89  libsanitizer/tsan/tsan_debugging.cpp
  d90b2e24518aaa7ec11d4a260ca2529d  libsanitizer/tsan/tsan_defs.h
  2b8f57d3e2eee47095d7d41f44964f41  libsanitizer/tsan/tsan_dense_alloc.h
  3f795e350589a36d74082d95246390a7  libsanitizer/tsan/tsan_dispatch_defs.h
  739c3934d530a14499813584df8a16d0  libsanitizer/tsan/tsan_external.cpp
  3d494f806f28e53275870211565852ef  libsanitizer/tsan/tsan_fd.cpp
  84644dcbcc7cf34528393f9790a85897  libsanitizer/tsan/tsan_fd.h
! 16fb54bbc4f70d4c461cfd631c5acdf9  libsanitizer/tsan/tsan_flags.cpp
! bc40a87099a5aba3abc163099841fb97  libsanitizer/tsan/tsan_flags.h
! 04d13efaabaf208cb612cad622ef0353  libsanitizer/tsan/tsan_flags.inc
  60bfaa19bc1c038d806e759abd03e869  libsanitizer/tsan/tsan_ignoreset.cpp
  d419772368c76a807ff66bafd0683028  libsanitizer/tsan/tsan_ignoreset.h
  45bd7ec3e79167e3101e35f5ba81d51b  libsanitizer/tsan/tsan_ilist.h
! f6799ea3e697a3f52d59c60ae7e4e37e  libsanitizer/tsan/tsan_interceptors.h
  5ae7905d35628b6e1eed00f1fc25caa7  libsanitizer/tsan/tsan_interceptors_libdispatch.cpp
! e9306847bcc0a9cd2520a23c3d5b5edf  libsanitizer/tsan/tsan_interceptors_mac.cpp
  a83781c196d253d2f7538367873b4d65  libsanitizer/tsan/tsan_interceptors_mach_vm.cpp
  fad10d5e8278f758dbd89e63f71aae9d  libsanitizer/tsan/tsan_interceptors_memintrinsics.cpp
! 34f26a474ee08f0ed4ab4ea7dac010fd  libsanitizer/tsan/tsan_interceptors_posix.cpp
  44e87b9222e50e4ce561458989a58e85  libsanitizer/tsan/tsan_interface.cpp
! 6d4b644096da2ee7b3b31c754d38cb3b  libsanitizer/tsan/tsan_interface.h
  12c2d0a710c7eb00a61b269e3a5e2444  libsanitizer/tsan/tsan_interface.inc
! ef855339157a4b652eef8910935ba17c  libsanitizer/tsan/tsan_interface_ann.cpp
  85e02689af55fa1cc3f98b5cfe3043a1  libsanitizer/tsan/tsan_interface_ann.h
! 254996552d748f0489b3a75b121e6f6a  libsanitizer/tsan/tsan_interface_atomic.cpp
! a905cbaa278f59b5fee84e505d28a1b4  libsanitizer/tsan/tsan_interface_java.cpp
  b6f28fd4519c6bc2e8cd9cdb820f72a8  libsanitizer/tsan/tsan_interface_java.h
! b3a12188e995ab4d27a8396e122e8d49  libsanitizer/tsan/tsan_malloc_mac.cpp
  2ce89d665869a9e29509f68c3b093511  libsanitizer/tsan/tsan_md5.cpp
! b7ebae46d8f24139d94c5ad0281b4dc3  libsanitizer/tsan/tsan_mman.cpp
  9aae8d8fa5ebb886928f6ad7ce84afc6  libsanitizer/tsan/tsan_mman.h
  fce523833cd619da90b4bb9efe7126aa  libsanitizer/tsan/tsan_mutexset.cpp
  5c2fffc76ce06a684d8c9fe407d8d735  libsanitizer/tsan/tsan_mutexset.h
  abb77573543b4ca2e18a84ae834d8ff7  libsanitizer/tsan/tsan_new_delete.cpp
! 8342143db02c13b44429e8792f689cec  libsanitizer/tsan/tsan_platform.h
! b41c84206c6a2806d510c4a4d2d4939d  libsanitizer/tsan/tsan_platform_linux.cpp
! ecc849651e1edac6f58028f6dca22c11  libsanitizer/tsan/tsan_platform_mac.cpp
  a2153ea5e715c8b4cbd27c7974257d1b  libsanitizer/tsan/tsan_platform_posix.cpp
  3988e672409da51d77f562f3c17ad309  libsanitizer/tsan/tsan_platform_windows.cpp
  52a08181bf0cebd537f6ff681e4201d2  libsanitizer/tsan/tsan_ppc_regs.h
  60c37ff46cc77df61a768bb1f5b8fe36  libsanitizer/tsan/tsan_preinit.cpp
  7db544717620fcdfff2dff23ba583ee2  libsanitizer/tsan/tsan_report.cpp
! ab3ed67ff379744ab82603293300e0c1  libsanitizer/tsan/tsan_report.h
! 90f1f2230f6d081292f0324173d18384  libsanitizer/tsan/tsan_rtl.cpp
! f1ae76dbe99bf047ae7265306a589276  libsanitizer/tsan/tsan_rtl.h
! 37d2c0c65de80b25fdfab30f6e8415a7  libsanitizer/tsan/tsan_rtl_aarch64.S
! 59ccf8d3344a8f6eb610061509d17733  libsanitizer/tsan/tsan_rtl_access.cpp
! 91412accc632b1699b3e6f438dcbef0b  libsanitizer/tsan/tsan_rtl_amd64.S
  9c988affea81c858d52b1b7ebf21e3b3  libsanitizer/tsan/tsan_rtl_loongarch64.S
  2e223da4b198b7996aa993b62da9470c  libsanitizer/tsan/tsan_rtl_mips64.S
! cee60133eb216c63befc4d80a02a5537  libsanitizer/tsan/tsan_rtl_mutex.cpp
  d771c907949512e86f6221398475c2c1  libsanitizer/tsan/tsan_rtl_ppc64.S
  d23feb95e5ade35c9d1fa0203dfc64bb  libsanitizer/tsan/tsan_rtl_proc.cpp
! 6a5c9557c9f3c09e2c1661c56742c867  libsanitizer/tsan/tsan_rtl_report.cpp
  39578f7f0f1d3c5038bb6d1efb8d1335  libsanitizer/tsan/tsan_rtl_riscv64.S
  28f4e3484ccd9079551dd4c92a0c47f2  libsanitizer/tsan/tsan_rtl_s390x.S
! a040d1618bc39b8501505e21d5bb5f60  libsanitizer/tsan/tsan_rtl_thread.cpp
  a10771eef091e41d3529a27da63b2c73  libsanitizer/tsan/tsan_shadow.h
  17ea88c98da50f5e75f508e49c6e098e  libsanitizer/tsan/tsan_spinlock_defs_mac.h
  d927f16e28e5fd7b5a8c718f575d7a09  libsanitizer/tsan/tsan_stack_trace.cpp
*************** fcdf88c4922b4bf531859f5e19f37f19  libsan
*** 142977,142983 ****
  2158aca0f3a2d54057e8cd7895ef496c  libsanitizer/tsan/tsan_suppressions.h
  44bcdcf638df13751840900e2eb82315  libsanitizer/tsan/tsan_symbolize.cpp
  339793c91cce47c39da05aab388a1d91  libsanitizer/tsan/tsan_symbolize.h
! ac99e2a1604f10691ceb3d4a4600d0ed  libsanitizer/tsan/tsan_sync.cpp
  6f7b135e2c27d09f0db426a5f7427966  libsanitizer/tsan/tsan_sync.h
  8ca6a9e7f5c97b2069ca2eb034d7b61f  libsanitizer/tsan/tsan_trace.h
  7043f9d2d6d55a4a9dad3179e81ac578  libsanitizer/tsan/tsan_vector_clock.cpp
--- 143075,143081 ----
  2158aca0f3a2d54057e8cd7895ef496c  libsanitizer/tsan/tsan_suppressions.h
  44bcdcf638df13751840900e2eb82315  libsanitizer/tsan/tsan_symbolize.cpp
  339793c91cce47c39da05aab388a1d91  libsanitizer/tsan/tsan_symbolize.h
! f14c436a4fb0bdd373cb518b35b84f3c  libsanitizer/tsan/tsan_sync.cpp
  6f7b135e2c27d09f0db426a5f7427966  libsanitizer/tsan/tsan_sync.h
  8ca6a9e7f5c97b2069ca2eb034d7b61f  libsanitizer/tsan/tsan_trace.h
  7043f9d2d6d55a4a9dad3179e81ac578  libsanitizer/tsan/tsan_vector_clock.cpp
*************** d08cd7318d9fa76e2ca9b3ee6008735f  libsan
*** 142985,143009 ****
  abd71f0fd55b25d20057f5dfe13144b1  libsanitizer/ubsan/Makefile.am
  d6c1a78f08263ec1fee4e3bc43f40392  libsanitizer/ubsan/Makefile.in
  db0727716bbb494b5221fcab5517db23  libsanitizer/ubsan/libtool-version
! 09adf5cec3b2e75084c18928b377c4f3  libsanitizer/ubsan/ubsan_checks.inc
  2b10b2299cf1e4446204362c49c8763a  libsanitizer/ubsan/ubsan_diag.cpp
  9128b5c2caa5c47d8afbac66a4ca0e52  libsanitizer/ubsan/ubsan_diag.h
  909d094c1bf4569acc8c978d3f3e22b2  libsanitizer/ubsan/ubsan_diag_standalone.cpp
  e3592cc9006c6b039a3cec6a3bf25efb  libsanitizer/ubsan/ubsan_flags.cpp
  c6447e64133bd56b1aa97dde6c16675f  libsanitizer/ubsan/ubsan_flags.h
  b27e02f11f51c44900f55d9f84490952  libsanitizer/ubsan/ubsan_flags.inc
! d0304dbd04248253797b62c4db795d07  libsanitizer/ubsan/ubsan_handlers.cpp
! 34299cae3736d7df13faa9bd0ae27581  libsanitizer/ubsan/ubsan_handlers.h
  0b47c9e3d0dd3bca13d9aabbfd1435aa  libsanitizer/ubsan/ubsan_handlers_cxx.cpp
  f68334ffc0e5ade2b4d76ef6927bebcb  libsanitizer/ubsan/ubsan_handlers_cxx.h
  9d08bdf4cae4efd5e51640e730a32049  libsanitizer/ubsan/ubsan_init.cpp
  6e2f838f2a1a00942ff6a510da152fac  libsanitizer/ubsan/ubsan_init.h
! 6709b25bace5613d327e12057227eefc  libsanitizer/ubsan/ubsan_init_standalone.cpp
  04f80173ed9f5e1dc4c569c15772f2f1  libsanitizer/ubsan/ubsan_init_standalone_preinit.cpp
! e370a3970bedb3db6e6c15b4c76c79b6  libsanitizer/ubsan/ubsan_interface.inc
  d86be2442566cf10902db54006f9794e  libsanitizer/ubsan/ubsan_monitor.cpp
  7311068be7eacbc04a232416cd95a29d  libsanitizer/ubsan/ubsan_monitor.h
! 10edc94e5e8978df9e90a2d71b857b1a  libsanitizer/ubsan/ubsan_platform.h
  06498b8dd96eb4aa136ecad80b88203e  libsanitizer/ubsan/ubsan_signals_standalone.cpp
  80d12dc787dd1f9c2aff6e99ccf028a3  libsanitizer/ubsan/ubsan_signals_standalone.h
  c334521cda7aa18f71d0584166e5ed32  libsanitizer/ubsan/ubsan_type_hash.cpp
--- 143083,143107 ----
  abd71f0fd55b25d20057f5dfe13144b1  libsanitizer/ubsan/Makefile.am
  d6c1a78f08263ec1fee4e3bc43f40392  libsanitizer/ubsan/Makefile.in
  db0727716bbb494b5221fcab5517db23  libsanitizer/ubsan/libtool-version
! 8ce44f4b7a33f66716c6a18ead865ff3  libsanitizer/ubsan/ubsan_checks.inc
  2b10b2299cf1e4446204362c49c8763a  libsanitizer/ubsan/ubsan_diag.cpp
  9128b5c2caa5c47d8afbac66a4ca0e52  libsanitizer/ubsan/ubsan_diag.h
  909d094c1bf4569acc8c978d3f3e22b2  libsanitizer/ubsan/ubsan_diag_standalone.cpp
  e3592cc9006c6b039a3cec6a3bf25efb  libsanitizer/ubsan/ubsan_flags.cpp
  c6447e64133bd56b1aa97dde6c16675f  libsanitizer/ubsan/ubsan_flags.h
  b27e02f11f51c44900f55d9f84490952  libsanitizer/ubsan/ubsan_flags.inc
! 74c4b9195d161431fa289d20fcd92c83  libsanitizer/ubsan/ubsan_handlers.cpp
! 0fc4d8db44b35150e14463b321f8b003  libsanitizer/ubsan/ubsan_handlers.h
  0b47c9e3d0dd3bca13d9aabbfd1435aa  libsanitizer/ubsan/ubsan_handlers_cxx.cpp
  f68334ffc0e5ade2b4d76ef6927bebcb  libsanitizer/ubsan/ubsan_handlers_cxx.h
  9d08bdf4cae4efd5e51640e730a32049  libsanitizer/ubsan/ubsan_init.cpp
  6e2f838f2a1a00942ff6a510da152fac  libsanitizer/ubsan/ubsan_init.h
! 8d1bbd878ad610f67584610485be68b1  libsanitizer/ubsan/ubsan_init_standalone.cpp
  04f80173ed9f5e1dc4c569c15772f2f1  libsanitizer/ubsan/ubsan_init_standalone_preinit.cpp
! 0d395d75ac9892918f297a5a45fe9189  libsanitizer/ubsan/ubsan_interface.inc
  d86be2442566cf10902db54006f9794e  libsanitizer/ubsan/ubsan_monitor.cpp
  7311068be7eacbc04a232416cd95a29d  libsanitizer/ubsan/ubsan_monitor.h
! 34113e0318e1dbb63d4af968cca71310  libsanitizer/ubsan/ubsan_platform.h
  06498b8dd96eb4aa136ecad80b88203e  libsanitizer/ubsan/ubsan_signals_standalone.cpp
  80d12dc787dd1f9c2aff6e99ccf028a3  libsanitizer/ubsan/ubsan_signals_standalone.h
  c334521cda7aa18f71d0584166e5ed32  libsanitizer/ubsan/ubsan_type_hash.cpp
*************** cc7b9d72793a57ce775ed182634de360  libsan
*** 143011,143017 ****
  f01966720c236be4a6f849bb79c2e3a0  libsanitizer/ubsan/ubsan_type_hash_itanium.cpp
  07c0334c044295c3fef2cabbb9973477  libsanitizer/ubsan/ubsan_type_hash_win.cpp
  36c349526a8bcc6a104185c4571b5363  libsanitizer/ubsan/ubsan_value.cpp
! f95aed5d713e73ada16956190fa4ac58  libsanitizer/ubsan/ubsan_value.h
  f44dc970bc1adae9a128b178a339fd0e  libsanitizer/ubsan/ubsan_win_runtime_thunk.cpp
  116c4faba0089bc6456c191c34e240d0  libssp/ChangeLog
  3c64b74eec15b8c16d5cfabfe903d655  libssp/Makefile.am
--- 143109,143115 ----
  f01966720c236be4a6f849bb79c2e3a0  libsanitizer/ubsan/ubsan_type_hash_itanium.cpp
  07c0334c044295c3fef2cabbb9973477  libsanitizer/ubsan/ubsan_type_hash_win.cpp
  36c349526a8bcc6a104185c4571b5363  libsanitizer/ubsan/ubsan_value.cpp
! 47cf5df0506b64613c633c0d5055e44b  libsanitizer/ubsan/ubsan_value.h
  f44dc970bc1adae9a128b178a339fd0e  libsanitizer/ubsan/ubsan_win_runtime_thunk.cpp
  116c4faba0089bc6456c191c34e240d0  libssp/ChangeLog
  3c64b74eec15b8c16d5cfabfe903d655  libssp/Makefile.am
*************** d680e7307fb59fe24f8431e179191f16  libssp
*** 143043,143049 ****
  534c3fb4a88e5c1f70db35c12b7742c3  libssp/vsnprintf-chk.c
  34daeb04a522ee796098df4446d6ce61  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! bf6912986826563860bb1072b25964ba  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
--- 143141,143147 ----
  534c3fb4a88e5c1f70db35c12b7742c3  libssp/vsnprintf-chk.c
  34daeb04a522ee796098df4446d6ce61  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! 6bbbc903fd4a952d0aed358aff9e89aa  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** bc0412a9556e7ed39afe5103b73f1f26  libstd
*** 143702,143709 ****
  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
! f3bc82135dfcb3341457a729d2972838  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
--- 143800,143807 ----
  c587674e0c370a2d6ccc5213ab3e4e65  libstdc++-v3/doc/xml/spine.xml
  bd966b4a0df6f2a84f9770525581d45c  libstdc++-v3/doc/xsl/customization.xsl.in
  42d14268f2b16c54a6bc2f71538a838c  libstdc++-v3/fragment.am
! 3ab39089ede995cb1febae4fe7522ce8  libstdc++-v3/include/Makefile.am
! ba9b9411c240a6b808a7f157890fd9c4  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
*************** c2f5862787920c2fc07b4f499e362a00  libstd
*** 143719,143741 ****
  d18c16b3c9c3ab2e7d487de90ec27d17  libstdc++-v3/include/bits/allocator.h
  2b1a23c26b949972792d8aaa9bfecb81  libstdc++-v3/include/bits/atomic_base.h
  7c88fbee1dffec663e740720882b5344  libstdc++-v3/include/bits/atomic_futex.h
! 95eadcfae55c62fa294caf419982570d  libstdc++-v3/include/bits/atomic_timed_wait.h
! b87228eb6dcc3f474c118e7fa9503cda  libstdc++-v3/include/bits/atomic_wait.h
  3f7a7ce2588d1e8ea4f282e9f41ac292  libstdc++-v3/include/bits/basic_ios.h
  c54b27ddff7542cc6baa362f62fb5778  libstdc++-v3/include/bits/basic_ios.tcc
! 6c5259b73ad46bd2e8d9f3ae9bc6aeda  libstdc++-v3/include/bits/basic_string.h
  ae1074cab6b583707efdb40bf0099caf  libstdc++-v3/include/bits/basic_string.tcc
! a42bb53b8c5d7cc611ebeb32ed871eba  libstdc++-v3/include/bits/binders.h
  858c4ad0f5f089f87e6b1feede7e0da5  libstdc++-v3/include/bits/boost_concept_check.h
  a155d2afa910d24be0955f42c4585228  libstdc++-v3/include/bits/c++0x_warning.h
! e3c307e48b9e12b0736fde183ffa8bd7  libstdc++-v3/include/bits/c++config
  5384dfbb9eb9731df3aca40e40d55350  libstdc++-v3/include/bits/char_traits.h
  195dabcb74f9b313c574745539925b0e  libstdc++-v3/include/bits/charconv.h
  0cb9a3c5bdddb11656d4542f26a916dc  libstdc++-v3/include/bits/chrono.h
  0021dee9f87c2d7b4963da843d73afb1  libstdc++-v3/include/bits/chrono_io.h
  2ff73cb405cb01626a751e0fa0f339f3  libstdc++-v3/include/bits/codecvt.h
  23fc42ee8644308c793f44d20f00420e  libstdc++-v3/include/bits/concept_check.h
! 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
--- 143817,143839 ----
  d18c16b3c9c3ab2e7d487de90ec27d17  libstdc++-v3/include/bits/allocator.h
  2b1a23c26b949972792d8aaa9bfecb81  libstdc++-v3/include/bits/atomic_base.h
  7c88fbee1dffec663e740720882b5344  libstdc++-v3/include/bits/atomic_futex.h
! bbb2e6df693b76b595fa2fb59b423b42  libstdc++-v3/include/bits/atomic_timed_wait.h
! 40e1eb93e4f9a6472b74fe13470d2ef5  libstdc++-v3/include/bits/atomic_wait.h
  3f7a7ce2588d1e8ea4f282e9f41ac292  libstdc++-v3/include/bits/basic_ios.h
  c54b27ddff7542cc6baa362f62fb5778  libstdc++-v3/include/bits/basic_ios.tcc
! 7d529582d267ef7674bba74d215574ce  libstdc++-v3/include/bits/basic_string.h
  ae1074cab6b583707efdb40bf0099caf  libstdc++-v3/include/bits/basic_string.tcc
! 6577c59d5422a21dd9f45310f1a10b22  libstdc++-v3/include/bits/binders.h
  858c4ad0f5f089f87e6b1feede7e0da5  libstdc++-v3/include/bits/boost_concept_check.h
  a155d2afa910d24be0955f42c4585228  libstdc++-v3/include/bits/c++0x_warning.h
! 6e7868b1ca67f9665233ad19da1ed3bc  libstdc++-v3/include/bits/c++config
  5384dfbb9eb9731df3aca40e40d55350  libstdc++-v3/include/bits/char_traits.h
  195dabcb74f9b313c574745539925b0e  libstdc++-v3/include/bits/charconv.h
  0cb9a3c5bdddb11656d4542f26a916dc  libstdc++-v3/include/bits/chrono.h
  0021dee9f87c2d7b4963da843d73afb1  libstdc++-v3/include/bits/chrono_io.h
  2ff73cb405cb01626a751e0fa0f339f3  libstdc++-v3/include/bits/codecvt.h
  23fc42ee8644308c793f44d20f00420e  libstdc++-v3/include/bits/concept_check.h
! 4754401e820e3e65a300a2d3498a37db  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
*************** b0c29f09a819ac9aa11c3507409c11ef  libstd
*** 143800,143806 ****
  b6eed13c8fe4256b2bc0de7419a05bb5  libstdc++-v3/include/bits/ranges_cmp.h
  2eec8b6abbfa67c2a80da3caf7e0c2c3  libstdc++-v3/include/bits/ranges_uninitialized.h
  1d1c887295c693bce1fe28dc004684af  libstdc++-v3/include/bits/ranges_util.h
! 222a1067e3c63fb19ed0996234a84884  libstdc++-v3/include/bits/refwrap.h
  5b95e35539d0071176396cd82a6072b7  libstdc++-v3/include/bits/regex.h
  d0ff506cfa0d3f2d14ebceb08faac4dd  libstdc++-v3/include/bits/regex.tcc
  8574b29ef7f78afa13942ca1525502d5  libstdc++-v3/include/bits/regex_automaton.h
--- 143898,143904 ----
  b6eed13c8fe4256b2bc0de7419a05bb5  libstdc++-v3/include/bits/ranges_cmp.h
  2eec8b6abbfa67c2a80da3caf7e0c2c3  libstdc++-v3/include/bits/ranges_uninitialized.h
  1d1c887295c693bce1fe28dc004684af  libstdc++-v3/include/bits/ranges_util.h
! 293201f2f614a98913ef19a6f2316131  libstdc++-v3/include/bits/refwrap.h
  5b95e35539d0071176396cd82a6072b7  libstdc++-v3/include/bits/regex.h
  d0ff506cfa0d3f2d14ebceb08faac4dd  libstdc++-v3/include/bits/regex.tcc
  8574b29ef7f78afa13942ca1525502d5  libstdc++-v3/include/bits/regex_automaton.h
*************** f82756dba1eb6b3ea0ca4d3ed0da3773  libstd
*** 143873,143880 ****
  3ddbcccf58411251c2825ae41b697844  libstdc++-v3/include/bits/valarray_array.tcc
  a4c99020fc6d28e94d24a3f60a71b6ec  libstdc++-v3/include/bits/valarray_before.h
  6adf2ccea897e9d5fc8e7650eceac96f  libstdc++-v3/include/bits/vector.tcc
! 012dfed30be3874f574dfcacb375c2dc  libstdc++-v3/include/bits/version.def
! e6c0bcc6b5b6b688dfaa2e7177ade26c  libstdc++-v3/include/bits/version.h
  602b081d70553843ef4511ca8ec803c9  libstdc++-v3/include/bits/version.tpl
  6ccd70c0c36dd38ba559c1fc5a05fbd0  libstdc++-v3/include/c/cassert
  c31b54f25b2f8c7ca3ca3eec930d4e1d  libstdc++-v3/include/c/cctype
--- 143971,143978 ----
  3ddbcccf58411251c2825ae41b697844  libstdc++-v3/include/bits/valarray_array.tcc
  a4c99020fc6d28e94d24a3f60a71b6ec  libstdc++-v3/include/bits/valarray_before.h
  6adf2ccea897e9d5fc8e7650eceac96f  libstdc++-v3/include/bits/vector.tcc
! d6fb199ec0d88c204f46caed5f3b61ec  libstdc++-v3/include/bits/version.def
! c640b4171ad1b53f1f0ebf6115ff2886  libstdc++-v3/include/bits/version.h
  602b081d70553843ef4511ca8ec803c9  libstdc++-v3/include/bits/version.tpl
  6ccd70c0c36dd38ba559c1fc5a05fbd0  libstdc++-v3/include/c/cassert
  c31b54f25b2f8c7ca3ca3eec930d4e1d  libstdc++-v3/include/c/cctype
*************** a46e56be8a5c7864bcb2f77a72d54330  libstd
*** 143972,143997 ****
  194fe21cb1d17e540e307f40839dd3a0  libstdc++-v3/include/debug/assertions.h
  f13795ce096d89245c5cca9a1fd186ea  libstdc++-v3/include/debug/bitset
  d04ab77d57ea4da4e9368ea91a58b0b9  libstdc++-v3/include/debug/debug.h
! 315542f069d1f7281003b0e0ef35099a  libstdc++-v3/include/debug/deque
  4bfcb8801504f4255afc7240ed87193f  libstdc++-v3/include/debug/formatter.h
  2449beab5eab6049ace03f3e4be6acb0  libstdc++-v3/include/debug/forward_list
! f24076b350dc9e5a87d645cb1c04b3fe  libstdc++-v3/include/debug/functions.h
! e8351ce24d977c21ec504a56e9a0fc71  libstdc++-v3/include/debug/helper_functions.h
  c56cf423167e7d092ffc37f84df8f959  libstdc++-v3/include/debug/list
  48ad2bbf8cb94bbfb81869406475eaa3  libstdc++-v3/include/debug/macros.h
  c5d850b63f4a5052d58fbaa66c5a6b9e  libstdc++-v3/include/debug/map
  5b9398ce68edf5b4f5e9de85fea7f91e  libstdc++-v3/include/debug/map.h
  3caad01bff561c15da72e6c800b0e09f  libstdc++-v3/include/debug/multimap.h
  1d41253547d7e8329dd21632fb7c523a  libstdc++-v3/include/debug/multiset.h
! fa8e77478856ecd3c5865c98c4f4bbb5  libstdc++-v3/include/debug/safe_base.h
! a31590077139b8cb7811da234690f2ec  libstdc++-v3/include/debug/safe_container.h
! b4e8921d132283c0833b6b2f5002bef9  libstdc++-v3/include/debug/safe_iterator.h
  d6bcf138ca31811eb1e7b8c10ea1b3b8  libstdc++-v3/include/debug/safe_iterator.tcc
  59e65cdeb71c21b01a6f79721c97b8dc  libstdc++-v3/include/debug/safe_local_iterator.h
  0b8246199e84b21d0c9acb326649404f  libstdc++-v3/include/debug/safe_local_iterator.tcc
! c6c6355a9616e7bb1c9480d04ed102f9  libstdc++-v3/include/debug/safe_sequence.h
! 83b889a8c3f0463b93fb8634b47f56e2  libstdc++-v3/include/debug/safe_sequence.tcc
! c99ef04a577557b915cad4620999b6b3  libstdc++-v3/include/debug/safe_unordered_base.h
  f39ef099759054b1b06019d7072d8e81  libstdc++-v3/include/debug/safe_unordered_container.h
  66eaab00df39f074eefd1bd753eec3ab  libstdc++-v3/include/debug/safe_unordered_container.tcc
  9c8890168ebee87d21799e32dbd16dba  libstdc++-v3/include/debug/set
--- 144070,144096 ----
  194fe21cb1d17e540e307f40839dd3a0  libstdc++-v3/include/debug/assertions.h
  f13795ce096d89245c5cca9a1fd186ea  libstdc++-v3/include/debug/bitset
  d04ab77d57ea4da4e9368ea91a58b0b9  libstdc++-v3/include/debug/debug.h
! 675f9d9d7a715a71228a2a27655eac9f  libstdc++-v3/include/debug/deque
  4bfcb8801504f4255afc7240ed87193f  libstdc++-v3/include/debug/formatter.h
  2449beab5eab6049ace03f3e4be6acb0  libstdc++-v3/include/debug/forward_list
! ffc8e7ea0022fb867df992083c41f744  libstdc++-v3/include/debug/functions.h
! 33af44b79ac30bbacc1cfd1f4f3e116c  libstdc++-v3/include/debug/helper_functions.h
! 95593578171eceb0a645a3345a408d09  libstdc++-v3/include/debug/inplace_vector
  c56cf423167e7d092ffc37f84df8f959  libstdc++-v3/include/debug/list
  48ad2bbf8cb94bbfb81869406475eaa3  libstdc++-v3/include/debug/macros.h
  c5d850b63f4a5052d58fbaa66c5a6b9e  libstdc++-v3/include/debug/map
  5b9398ce68edf5b4f5e9de85fea7f91e  libstdc++-v3/include/debug/map.h
  3caad01bff561c15da72e6c800b0e09f  libstdc++-v3/include/debug/multimap.h
  1d41253547d7e8329dd21632fb7c523a  libstdc++-v3/include/debug/multiset.h
! d91aa8714bf3440140ff3ce06fcf6a8a  libstdc++-v3/include/debug/safe_base.h
! 0f2fbdc2123d808c40d7944c7a4b111d  libstdc++-v3/include/debug/safe_container.h
! 33c36c3ee85f1599105b92bf2fbef34d  libstdc++-v3/include/debug/safe_iterator.h
  d6bcf138ca31811eb1e7b8c10ea1b3b8  libstdc++-v3/include/debug/safe_iterator.tcc
  59e65cdeb71c21b01a6f79721c97b8dc  libstdc++-v3/include/debug/safe_local_iterator.h
  0b8246199e84b21d0c9acb326649404f  libstdc++-v3/include/debug/safe_local_iterator.tcc
! 897a8e6c6f5a0ef8818d62e4d4eec84c  libstdc++-v3/include/debug/safe_sequence.h
! f519c1b2701897e8e55726089752088b  libstdc++-v3/include/debug/safe_sequence.tcc
! 5c661d509c5317710f608d539c6035a5  libstdc++-v3/include/debug/safe_unordered_base.h
  f39ef099759054b1b06019d7072d8e81  libstdc++-v3/include/debug/safe_unordered_container.h
  66eaab00df39f074eefd1bd753eec3ab  libstdc++-v3/include/debug/safe_unordered_container.tcc
  9c8890168ebee87d21799e32dbd16dba  libstdc++-v3/include/debug/set
*************** f1cc3238df41adc204bc4f90accc63f3  libstd
*** 144423,144429 ****
  d26c17df4d8dbf3f28df91e901fb1ae2  libstdc++-v3/include/std/algorithm
  d891b88417c6426b21aee63c74ec4e98  libstdc++-v3/include/std/any
  cfa40ce7bf7ca94a28186ab967acdd6f  libstdc++-v3/include/std/array
! ed7b697a4f9617810311e005acda34a8  libstdc++-v3/include/std/atomic
  d1730a41b18e21cbac0f5328aad2d223  libstdc++-v3/include/std/barrier
  66a9c513e3e5b0698ace3297c819bdcf  libstdc++-v3/include/std/bit
  40092e929e71453f8b98c503bb70cf91  libstdc++-v3/include/std/bitset
--- 144522,144528 ----
  d26c17df4d8dbf3f28df91e901fb1ae2  libstdc++-v3/include/std/algorithm
  d891b88417c6426b21aee63c74ec4e98  libstdc++-v3/include/std/any
  cfa40ce7bf7ca94a28186ab967acdd6f  libstdc++-v3/include/std/array
! 3e7b188185af6d862ad47487fc129213  libstdc++-v3/include/std/atomic
  d1730a41b18e21cbac0f5328aad2d223  libstdc++-v3/include/std/barrier
  66a9c513e3e5b0698ace3297c819bdcf  libstdc++-v3/include/std/bit
  40092e929e71453f8b98c503bb70cf91  libstdc++-v3/include/std/bitset
*************** a90e2b9ed2c236c92f3f2387a39a0ac8  libstd
*** 144435,144453 ****
  432501df58e845b724cce62e7d76214d  libstdc++-v3/include/std/condition_variable
  264518c8a6bbba954d8dfbc74162a7e2  libstdc++-v3/include/std/coroutine
  f945d16289e71c13744e7d9177de9ccc  libstdc++-v3/include/std/debugging
! a0fc3dc83ee36ee79d13e7291b461565  libstdc++-v3/include/std/deque
  ae96a272e65886b9386e26db37971da1  libstdc++-v3/include/std/execution
  f69418c6593c8e3b4581801495ecdf0c  libstdc++-v3/include/std/expected
  c2e511ae49957a9f02446e544d201582  libstdc++-v3/include/std/filesystem
! 5aa136a1aaeb7658dee6ccdd5cb6e5c6  libstdc++-v3/include/std/flat_map
  8a5fa0a4bb554b2db8c2fed26a6993ca  libstdc++-v3/include/std/flat_set
  0e99501415b9a573340245e608f08902  libstdc++-v3/include/std/format
  fa4316749922813b44f2ee282452813b  libstdc++-v3/include/std/forward_list
  e790ae6877466aa86b47f36d201e8563  libstdc++-v3/include/std/fstream
! 638cc22c2f3dd6d455c59ea0669ede00  libstdc++-v3/include/std/functional
  d472ad4b1b5c12e2f731980802d15b50  libstdc++-v3/include/std/future
  d91bc94f2a9c1ff7f642d23c27ec66ae  libstdc++-v3/include/std/generator
! 5e8806ffa7fe2e4b79b8323d11609fda  libstdc++-v3/include/std/inplace_vector
  90e01b4e65cec5c0a3786580b2529edb  libstdc++-v3/include/std/iomanip
  bf5ea5fbda7bfdc1dc462f0303fc4e99  libstdc++-v3/include/std/ios
  4623e874877c5e927587c4bfe1a03c84  libstdc++-v3/include/std/iosfwd
--- 144534,144552 ----
  432501df58e845b724cce62e7d76214d  libstdc++-v3/include/std/condition_variable
  264518c8a6bbba954d8dfbc74162a7e2  libstdc++-v3/include/std/coroutine
  f945d16289e71c13744e7d9177de9ccc  libstdc++-v3/include/std/debugging
! 800f27a47208b2a5c6192f7260053949  libstdc++-v3/include/std/deque
  ae96a272e65886b9386e26db37971da1  libstdc++-v3/include/std/execution
  f69418c6593c8e3b4581801495ecdf0c  libstdc++-v3/include/std/expected
  c2e511ae49957a9f02446e544d201582  libstdc++-v3/include/std/filesystem
! 4699aa56b9e90fd895859e47b48614c1  libstdc++-v3/include/std/flat_map
  8a5fa0a4bb554b2db8c2fed26a6993ca  libstdc++-v3/include/std/flat_set
  0e99501415b9a573340245e608f08902  libstdc++-v3/include/std/format
  fa4316749922813b44f2ee282452813b  libstdc++-v3/include/std/forward_list
  e790ae6877466aa86b47f36d201e8563  libstdc++-v3/include/std/fstream
! 03468240e9adff28238300032817bc1f  libstdc++-v3/include/std/functional
  d472ad4b1b5c12e2f731980802d15b50  libstdc++-v3/include/std/future
  d91bc94f2a9c1ff7f642d23c27ec66ae  libstdc++-v3/include/std/generator
! 54cace1e59a7a7e3b9c805c13917f662  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
*** 144459,144465 ****
  c9ef2791c2dc0d6c98a1a85c8f6aa473  libstdc++-v3/include/std/list
  f4af31191dea172207576960ad71d42d  libstdc++-v3/include/std/locale
  8b76fc7da76f0579c2fd1f22821d03be  libstdc++-v3/include/std/map
! 5eef83ecc30e14a81ae80fd3f325b1bb  libstdc++-v3/include/std/mdspan
  563ae67a140bca148dc565c4a845d161  libstdc++-v3/include/std/memory
  9e86c11ff29d60fddf403674e9182b36  libstdc++-v3/include/std/memory_resource
  154adad15522042ed2886d969f645c0b  libstdc++-v3/include/std/mutex
--- 144558,144564 ----
  c9ef2791c2dc0d6c98a1a85c8f6aa473  libstdc++-v3/include/std/list
  f4af31191dea172207576960ad71d42d  libstdc++-v3/include/std/locale
  8b76fc7da76f0579c2fd1f22821d03be  libstdc++-v3/include/std/map
! d014429d4f4313c764d1d209cd18c58f  libstdc++-v3/include/std/mdspan
  563ae67a140bca148dc565c4a845d161  libstdc++-v3/include/std/memory
  9e86c11ff29d60fddf403674e9182b36  libstdc++-v3/include/std/memory_resource
  154adad15522042ed2886d969f645c0b  libstdc++-v3/include/std/mutex
*************** b944796362aa39fc1cba3747d2247464  libstd
*** 144470,144476 ****
  fd773662a4b346f11b66520f34a8898e  libstdc++-v3/include/std/print
  ba14be3c6ffe74b2ec997245d3a94e3d  libstdc++-v3/include/std/queue
  553e2f4fd74c3e0258a774ab683470fd  libstdc++-v3/include/std/random
! 47677e82df5a14fc54b01e92c7c18186  libstdc++-v3/include/std/ranges
  a28bf4bed6789b61535d4b05ff48ba76  libstdc++-v3/include/std/ratio
  7d864de507d428ace2b6886ab9bb2610  libstdc++-v3/include/std/regex
  1bad2aed72c4537e7f08d24c1bf7d375  libstdc++-v3/include/std/scoped_allocator
--- 144569,144575 ----
  fd773662a4b346f11b66520f34a8898e  libstdc++-v3/include/std/print
  ba14be3c6ffe74b2ec997245d3a94e3d  libstdc++-v3/include/std/queue
  553e2f4fd74c3e0258a774ab683470fd  libstdc++-v3/include/std/random
! a51149145ac383b381df2ccad75e568e  libstdc++-v3/include/std/ranges
  a28bf4bed6789b61535d4b05ff48ba76  libstdc++-v3/include/std/ratio
  7d864de507d428ace2b6886ab9bb2610  libstdc++-v3/include/std/regex
  1bad2aed72c4537e7f08d24c1bf7d375  libstdc++-v3/include/std/scoped_allocator
*************** efdde6d8d883a91854d4ae616b627e53  libstd
*** 144487,144500 ****
  ece7d2fc2f03efd22a5d6ce6dc618b1b  libstdc++-v3/include/std/stdfloat
  23b5b63af5cceb0d44d8c2aab32c8e30  libstdc++-v3/include/std/stop_token
  56f8a72abc9e7160f18f9a373325a008  libstdc++-v3/include/std/streambuf
! eb4b43503dd02f6baa6785de6e466e55  libstdc++-v3/include/std/string
! c5a4df8fdbbe4b3d33d0b52db500e16d  libstdc++-v3/include/std/string_view
  b9cf79d1edae688927d40109f321047a  libstdc++-v3/include/std/syncstream
  21988a8b4bf87b01fc566fe8659ab2cc  libstdc++-v3/include/std/system_error
  608edef7344e2e25c7b00170df6fa9e6  libstdc++-v3/include/std/text_encoding
  0ed8103f880c65d72326076bb36a84d2  libstdc++-v3/include/std/thread
  8456c84295d4d092b0b55a359845078d  libstdc++-v3/include/std/tuple
! ed236476b32b50d24a4ce7d43f2508c8  libstdc++-v3/include/std/type_traits
  237682577d22ec3f9f5046abf0acd8e7  libstdc++-v3/include/std/typeindex
  520c52362f53e18f20838693cfd131bf  libstdc++-v3/include/std/unordered_map
  c82be32edefaa23cc1228b092d319315  libstdc++-v3/include/std/unordered_set
--- 144586,144599 ----
  ece7d2fc2f03efd22a5d6ce6dc618b1b  libstdc++-v3/include/std/stdfloat
  23b5b63af5cceb0d44d8c2aab32c8e30  libstdc++-v3/include/std/stop_token
  56f8a72abc9e7160f18f9a373325a008  libstdc++-v3/include/std/streambuf
! 40d7d9c013bf29caa0e60c9069aae770  libstdc++-v3/include/std/string
! 78d2cbb37b2fb9bf3c0e60f6456002c7  libstdc++-v3/include/std/string_view
  b9cf79d1edae688927d40109f321047a  libstdc++-v3/include/std/syncstream
  21988a8b4bf87b01fc566fe8659ab2cc  libstdc++-v3/include/std/system_error
  608edef7344e2e25c7b00170df6fa9e6  libstdc++-v3/include/std/text_encoding
  0ed8103f880c65d72326076bb36a84d2  libstdc++-v3/include/std/thread
  8456c84295d4d092b0b55a359845078d  libstdc++-v3/include/std/tuple
! ac22bad6023357162b5da83d4fb62afe  libstdc++-v3/include/std/type_traits
  237682577d22ec3f9f5046abf0acd8e7  libstdc++-v3/include/std/typeindex
  520c52362f53e18f20838693cfd131bf  libstdc++-v3/include/std/unordered_map
  c82be32edefaa23cc1228b092d319315  libstdc++-v3/include/std/unordered_set
*************** cba1356a5d30bc9057a2e5d0925657f8  libstd
*** 144668,144674 ****
  4cb74e4755d2e3e58503a243d7ae042b  libstdc++-v3/python/hook.in
  68b329da9893e34099c7d8ad5cb9c940  libstdc++-v3/python/libstdcxx/__init__.py
  f3661044e04e7499daef1e53bba37dc7  libstdc++-v3/python/libstdcxx/v6/__init__.py
! e204a8c3f14dd0be2870fa730e9c77b6  libstdc++-v3/python/libstdcxx/v6/printers.py
  0adf034769d8327b096aeb5d78ebe475  libstdc++-v3/python/libstdcxx/v6/xmethods.py
  cdac7363b91e7d57b85f7b560f62f033  libstdc++-v3/scripts/check_compile
  87c30a72c1d3ec2a203894ac24d78005  libstdc++-v3/scripts/check_performance
--- 144767,144773 ----
  4cb74e4755d2e3e58503a243d7ae042b  libstdc++-v3/python/hook.in
  68b329da9893e34099c7d8ad5cb9c940  libstdc++-v3/python/libstdcxx/__init__.py
  f3661044e04e7499daef1e53bba37dc7  libstdc++-v3/python/libstdcxx/v6/__init__.py
! dd8acce249657292ea11b4f993406248  libstdc++-v3/python/libstdcxx/v6/printers.py
  0adf034769d8327b096aeb5d78ebe475  libstdc++-v3/python/libstdcxx/v6/xmethods.py
  cdac7363b91e7d57b85f7b560f62f033  libstdc++-v3/scripts/check_compile
  87c30a72c1d3ec2a203894ac24d78005  libstdc++-v3/scripts/check_performance
*************** e66e202fb59625eb933c316b0bf9ee34  libstd
*** 144793,144799 ****
  6bbe101ec337afce54e0c8dee6fdd6d3  libstdc++-v3/src/c++17/uint128_t.h
  4d414718915223bfe45a3a197501ea1d  libstdc++-v3/src/c++20/Makefile.am
  8992329b44e206ac3d5b63e10bf82246  libstdc++-v3/src/c++20/Makefile.in
! d6130a688e0f5d24203c1ef8212f7de6  libstdc++-v3/src/c++20/atomic.cc
  ac664105ccfd50a2a092e98df11864a3  libstdc++-v3/src/c++20/clock.cc
  94b3ab191e8fe566a951ac2b4f081c40  libstdc++-v3/src/c++20/format.cc
  939eb3ac7ce3c32a8b2aac493f053893  libstdc++-v3/src/c++20/sstream-inst.cc
--- 144892,144898 ----
  6bbe101ec337afce54e0c8dee6fdd6d3  libstdc++-v3/src/c++17/uint128_t.h
  4d414718915223bfe45a3a197501ea1d  libstdc++-v3/src/c++20/Makefile.am
  8992329b44e206ac3d5b63e10bf82246  libstdc++-v3/src/c++20/Makefile.in
! be1000fdf86e41cc962c019548a54484  libstdc++-v3/src/c++20/atomic.cc
  ac664105ccfd50a2a092e98df11864a3  libstdc++-v3/src/c++20/clock.cc
  94b3ab191e8fe566a951ac2b4f081c40  libstdc++-v3/src/c++20/format.cc
  939eb3ac7ce3c32a8b2aac493f053893  libstdc++-v3/src/c++20/sstream-inst.cc
*************** ba1de75ac9c1bb7d2506c503fe17708a  libstd
*** 144807,144813 ****
  ea41b659ccf9f3e1850802e2fddaba52  libstdc++-v3/src/c++23/print.cc
  15f6b28b71ad24bc5b6d33c21048e59a  libstdc++-v3/src/c++23/stacktrace.cc
  c319163994652e23066095eded5869f0  libstdc++-v3/src/c++23/std-clib.cc.in
! 540b4905703f768b378596d9d51aca70  libstdc++-v3/src/c++23/std.cc.in
  ef2786c62e1aa27a5405d7bf70e5212c  libstdc++-v3/src/c++23/std.compat.cc.in
  757f1e829f27dedf5e8d7d83b358ad27  libstdc++-v3/src/c++26/Makefile.am
  7bb4fc4ec0d17bf1e304be661919aad7  libstdc++-v3/src/c++26/Makefile.in
--- 144906,144912 ----
  ea41b659ccf9f3e1850802e2fddaba52  libstdc++-v3/src/c++23/print.cc
  15f6b28b71ad24bc5b6d33c21048e59a  libstdc++-v3/src/c++23/stacktrace.cc
  c319163994652e23066095eded5869f0  libstdc++-v3/src/c++23/std-clib.cc.in
! 0f19d96619e7984c25e37be9bff485f9  libstdc++-v3/src/c++23/std.cc.in
  ef2786c62e1aa27a5405d7bf70e5212c  libstdc++-v3/src/c++23/std.compat.cc.in
  757f1e829f27dedf5e8d7d83b358ad27  libstdc++-v3/src/c++26/Makefile.am
  7bb4fc4ec0d17bf1e304be661919aad7  libstdc++-v3/src/c++26/Makefile.in
*************** cdab5e201dc6718ebb6f9b5df5610494  libstd
*** 145275,145287 ****
  89d3120d9d7c44b7a1154cf495589327  libstdc++-v3/testsuite/20_util/bind/60497.cc
  1abb9ee33a2b6bfb5cc7c75e4482283e  libstdc++-v3/testsuite/20_util/bind/68912.cc
  7b3a3a8913a667244b224725ff321522  libstdc++-v3/testsuite/20_util/bind/79798.cc
  7f527ce507278f94c530f093fc6ecdc3  libstdc++-v3/testsuite/20_util/bind/83427.cc
  8b9b8bbfbf5c02e965426ed4b8e002bb  libstdc++-v3/testsuite/20_util/bind/91371.cc
  c5db106f73b52a878135d322fbbbb39f  libstdc++-v3/testsuite/20_util/bind/all_bound.cc
  0fea9eed3c13c478a31d72ea6b052b5e  libstdc++-v3/testsuite/20_util/bind/constexpr.cc
  dc811926d3a0cc8410b37f38fd276e62  libstdc++-v3/testsuite/20_util/bind/conv_result.cc
  7fdf3835a346e7ef9a3a8308d819b141  libstdc++-v3/testsuite/20_util/bind/cv_quals.cc
! 3296aff77062491cdbb021ced8c9691a  libstdc++-v3/testsuite/20_util/bind/cv_quals_2.cc
  eb24581e6901c23d8bdbfca254833195  libstdc++-v3/testsuite/20_util/bind/cv_quals_3.cc
  9e20c0553ba5c2a0e7032207ebaef1c2  libstdc++-v3/testsuite/20_util/bind/dangling_ref.cc
  499a492e07678a83b4feca56bc7dec38  libstdc++-v3/testsuite/20_util/bind/is_placeholder_v.cc
--- 145374,145387 ----
  89d3120d9d7c44b7a1154cf495589327  libstdc++-v3/testsuite/20_util/bind/60497.cc
  1abb9ee33a2b6bfb5cc7c75e4482283e  libstdc++-v3/testsuite/20_util/bind/68912.cc
  7b3a3a8913a667244b224725ff321522  libstdc++-v3/testsuite/20_util/bind/79798.cc
+ 9732bcd6d4fa0e14cb4049d21f85b7a9  libstdc++-v3/testsuite/20_util/bind/80564.cc
  7f527ce507278f94c530f093fc6ecdc3  libstdc++-v3/testsuite/20_util/bind/83427.cc
  8b9b8bbfbf5c02e965426ed4b8e002bb  libstdc++-v3/testsuite/20_util/bind/91371.cc
  c5db106f73b52a878135d322fbbbb39f  libstdc++-v3/testsuite/20_util/bind/all_bound.cc
  0fea9eed3c13c478a31d72ea6b052b5e  libstdc++-v3/testsuite/20_util/bind/constexpr.cc
  dc811926d3a0cc8410b37f38fd276e62  libstdc++-v3/testsuite/20_util/bind/conv_result.cc
  7fdf3835a346e7ef9a3a8308d819b141  libstdc++-v3/testsuite/20_util/bind/cv_quals.cc
! 8af0c53690034d717f03eaec61bf77d1  libstdc++-v3/testsuite/20_util/bind/cv_quals_2.cc
  eb24581e6901c23d8bdbfca254833195  libstdc++-v3/testsuite/20_util/bind/cv_quals_3.cc
  9e20c0553ba5c2a0e7032207ebaef1c2  libstdc++-v3/testsuite/20_util/bind/dangling_ref.cc
  499a492e07678a83b4feca56bc7dec38  libstdc++-v3/testsuite/20_util/bind/is_placeholder_v.cc
*************** a8a56b45372ab9a92235b9c43274978f  libstd
*** 145290,145296 ****
  0d5fcd12cb9b282b50865cadeb899ccd  libstdc++-v3/testsuite/20_util/bind/placeholders.cc
  4944bb5ac21efc6649d385212a18a01f  libstdc++-v3/testsuite/20_util/bind/ref.cc
  edd97b36a8e740f4541e76b68c7983bf  libstdc++-v3/testsuite/20_util/bind/ref2.cc
! 16dbffbdcc11058cd0ce84c48c349016  libstdc++-v3/testsuite/20_util/bind/ref_neg.cc
  874167315e9615b2a4f2f567aa4c4b70  libstdc++-v3/testsuite/20_util/bind/refqual.cc
  52e3e554b856e7eff5c1d25d3b870473  libstdc++-v3/testsuite/20_util/bind/socket.cc
  c0edeeaaf9a022df2a3ca636e28ac7f2  libstdc++-v3/testsuite/20_util/bitset/107037.cc
--- 145390,145396 ----
  0d5fcd12cb9b282b50865cadeb899ccd  libstdc++-v3/testsuite/20_util/bind/placeholders.cc
  4944bb5ac21efc6649d385212a18a01f  libstdc++-v3/testsuite/20_util/bind/ref.cc
  edd97b36a8e740f4541e76b68c7983bf  libstdc++-v3/testsuite/20_util/bind/ref2.cc
! 4f8564e8a915887da6eac06bd6a18396  libstdc++-v3/testsuite/20_util/bind/ref_neg.cc
  874167315e9615b2a4f2f567aa4c4b70  libstdc++-v3/testsuite/20_util/bind/refqual.cc
  52e3e554b856e7eff5c1d25d3b870473  libstdc++-v3/testsuite/20_util/bind/socket.cc
  c0edeeaaf9a022df2a3ca636e28ac7f2  libstdc++-v3/testsuite/20_util/bitset/107037.cc
*************** cd35f526f71cd243c4965f834df24c89  libstd
*** 145339,145344 ****
--- 145439,145445 ----
  eef2204d57edb98136c3ffd5d0879a97  libstdc++-v3/testsuite/20_util/bitset/version.cc
  c8f50ba04b6971c9baf46f1890fc61ef  libstdc++-v3/testsuite/20_util/bool_constant/requirements.cc
  d9e3a835b6facefd71de42c8fe38c7ed  libstdc++-v3/testsuite/20_util/common_reference/100894.cc
+ af25f8f7e85a16941631a585bc0e1b68  libstdc++-v3/testsuite/20_util/common_reference/p2655r3.cc
  b231fe644af8f6c7b8e8db865b0335e8  libstdc++-v3/testsuite/20_util/common_reference/requirements/alias_decl.cc
  e874c307ac6cb1be4ebab7d34d4673c1  libstdc++-v3/testsuite/20_util/common_reference/requirements/explicit_instantiation.cc
  3ec71232a9e140f7524d6dbc2af6bd6a  libstdc++-v3/testsuite/20_util/common_reference/requirements/typedefs.cc
*************** dd2b6594a4fe51b51519aade50612fbf  libstd
*** 145533,145539 ****
  a41d567a9f64dcc981f9f9fab7c2aa14  libstdc++-v3/testsuite/20_util/function_objects/bind_back/nttp_neg.cc
  3069d4262424e54c9e41d54964effde3  libstdc++-v3/testsuite/20_util/function_objects/bind_front/1.cc
  b7e1e25aa8f6fddecd578ce1c23b63e2  libstdc++-v3/testsuite/20_util/function_objects/bind_front/107784.cc
! 8db3b98751c1e7c5aa70b7392e0f66ac  libstdc++-v3/testsuite/20_util/function_objects/bind_front/111327.cc
  586c9c5a05cff6578318e5d46789f1c9  libstdc++-v3/testsuite/20_util/function_objects/bind_front/116038.cc
  1a693160b90575d90d17b98c05d54334  libstdc++-v3/testsuite/20_util/function_objects/bind_front/2.cc
  ca6516aefe54fd40ebaa1dafa0a11255  libstdc++-v3/testsuite/20_util/function_objects/bind_front/97101.cc
--- 145634,145640 ----
  a41d567a9f64dcc981f9f9fab7c2aa14  libstdc++-v3/testsuite/20_util/function_objects/bind_back/nttp_neg.cc
  3069d4262424e54c9e41d54964effde3  libstdc++-v3/testsuite/20_util/function_objects/bind_front/1.cc
  b7e1e25aa8f6fddecd578ce1c23b63e2  libstdc++-v3/testsuite/20_util/function_objects/bind_front/107784.cc
! cdc8350ee8a6650ca3c2245e507b77df  libstdc++-v3/testsuite/20_util/function_objects/bind_front/111327.cc
  586c9c5a05cff6578318e5d46789f1c9  libstdc++-v3/testsuite/20_util/function_objects/bind_front/116038.cc
  1a693160b90575d90d17b98c05d54334  libstdc++-v3/testsuite/20_util/function_objects/bind_front/2.cc
  ca6516aefe54fd40ebaa1dafa0a11255  libstdc++-v3/testsuite/20_util/function_objects/bind_front/97101.cc
*************** ed22f1a32cfdccf5200689be87c1cc39  libstd
*** 145567,145573 ****
  ff6c4579fd9a68a2d44a0b8d16f91b70  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/forward.cc
  710e7f4fd797055d7c14e47abdc082f1  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/refqual.cc
  1919fd19d4b3213099623c7a396bae90  libstdc++-v3/testsuite/20_util/function_objects/not_fn/1.cc
! 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
  93973eb2b0b058ba2f9918668a0cb089  libstdc++-v3/testsuite/20_util/function_objects/not_fn/nttp.cc
--- 145668,145674 ----
  ff6c4579fd9a68a2d44a0b8d16f91b70  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/forward.cc
  710e7f4fd797055d7c14e47abdc082f1  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/refqual.cc
  1919fd19d4b3213099623c7a396bae90  libstdc++-v3/testsuite/20_util/function_objects/not_fn/1.cc
! e1808fcbf02f9a379da70178f1c3dee0  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
  93973eb2b0b058ba2f9918668a0cb089  libstdc++-v3/testsuite/20_util/function_objects/not_fn/nttp.cc
*************** fc5be5d36104b42d43116e3506037956  libstd
*** 146204,146209 ****
--- 146305,146311 ----
  3a4e290fbbefce397c537f6f76360292  libstdc++-v3/testsuite/20_util/reference_wrapper/invoke-noexcept.cc
  b2201235fae80a383258a58745a2bed4  libstdc++-v3/testsuite/20_util/reference_wrapper/invoke.cc
  c364f6bd3aced75ba7ed9b09d1af6f88  libstdc++-v3/testsuite/20_util/reference_wrapper/lwg2993.cc
+ 21b999c8cc5c5df3995a2f9c95f34c7a  libstdc++-v3/testsuite/20_util/reference_wrapper/p2655r3.cc
  0f169888ac660d973263a927ee070788  libstdc++-v3/testsuite/20_util/reference_wrapper/ref_neg.cc
  fe072fcf0dc6cb0a2dadd2d6121eee9e  libstdc++-v3/testsuite/20_util/reference_wrapper/requirements.cc
  630f3ee72e38723828e78b49e3c51237  libstdc++-v3/testsuite/20_util/reference_wrapper/result_type.cc
*************** ef0364633c86640e5ff7ca7c76f7d0f2  libstd
*** 147001,147006 ****
--- 147103,147110 ----
  f3c2b089b141a94126fb6dbb390027f3  libstdc++-v3/testsuite/21_strings/basic_string/operations/starts_with/wchar_t.cc
  010bcbdab00c47a37cae9ec80d9eacce  libstdc++-v3/testsuite/21_strings/basic_string/operations/substr/char.cc
  cfb72fc0a67dd58ed4c53ef461c07665  libstdc++-v3/testsuite/21_strings/basic_string/operations/substr/wchar_t.cc
+ 58048963a5004d5252fd699db587440b  libstdc++-v3/testsuite/21_strings/basic_string/operations/subview/char.cc
+ 0dbb47a32a81818f91b6ea2e9bd576be  libstdc++-v3/testsuite/21_strings/basic_string/operations/subview/wchar_t.cc
  73d19a5eb809ae8bae88a6856044a654  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/1.cc
  b8480a59a371a757d933a921b06f1c59  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/2.cc
  8e789079477fc6af07ffaadfbf980a8c  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/3.cc
*************** e557e0d70933bc2f2fb4a97e09efdb9c  libstd
*** 147138,147143 ****
--- 147242,147249 ----
  bf123e81bccba53462b213568147a51f  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/substr/char/83511.cc
  e58553019cfab05fe7a91edee41f4f43  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/substr/wchar_t.cc
  0c1879fadc9358e6aab8cec41f4b5b51  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/substr/wchar_t/83511.cc
+ f1e55d4af67918e00ea4b2039e63a5d7  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/subview/char.cc
+ 48d17f4f9d59c80fbe60dd57db9d6c2f  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/subview/wchar_t.cc
  51010bcb6dceed494feeb3b4ffb0a7f7  libstdc++-v3/testsuite/21_strings/basic_string_view/operators/char/2.cc
  51f9169ffbabd846354f81d26640f49e  libstdc++-v3/testsuite/21_strings/basic_string_view/operators/char/89446.cc
  b713b15e01373ddf48e5be9b9d535dce  libstdc++-v3/testsuite/21_strings/basic_string_view/operators/char/cmp_c++20.cc
*************** b689b9284136a8f539f41ca45d35a809  libstd
*** 147960,147965 ****
--- 148066,148072 ----
  95a799e3b8d76afa510b0df08077af02  libstdc++-v3/testsuite/23_containers/deque/debug/construct2_neg.cc
  1bbd49c3f81b53c11e67d53d1d016346  libstdc++-v3/testsuite/23_containers/deque/debug/construct3_neg.cc
  3419ac59d5d19e2242c78938b2407c7e  libstdc++-v3/testsuite/23_containers/deque/debug/construct4_neg.cc
+ fc958e6a3ef959d185a6a56e9e00abe0  libstdc++-v3/testsuite/23_containers/deque/debug/erase.cc
  cb7136c838f00eface86ee0965a63f97  libstdc++-v3/testsuite/23_containers/deque/debug/insert1_neg.cc
  b12d57baf1623d47f7e9970f12d0d9f1  libstdc++-v3/testsuite/23_containers/deque/debug/insert2_neg.cc
  a079bb93c4aaa7c00621270109c425db  libstdc++-v3/testsuite/23_containers/deque/debug/insert3_neg.cc
*************** a079bb93c4aaa7c00621270109c425db  libstd
*** 147969,147974 ****
--- 148076,148082 ----
  33499c35aca776e26db583c5e69820f3  libstdc++-v3/testsuite/23_containers/deque/debug/invalidation/2.cc
  fd8c7a56b823d3be49b2c29aa4b199aa  libstdc++-v3/testsuite/23_containers/deque/debug/invalidation/3.cc
  a295235abb9e2be84b35302cd0f4b896  libstdc++-v3/testsuite/23_containers/deque/debug/invalidation/4.cc
+ 275d57bd035b2209c0595bb3d81cb5b0  libstdc++-v3/testsuite/23_containers/deque/debug/invalidation/erase.cc
  ffe16938dd35690b0c5cb48f21358def  libstdc++-v3/testsuite/23_containers/deque/debug/iterator1_neg.cc
  76964670de76efe13c5601ab5045dcb8  libstdc++-v3/testsuite/23_containers/deque/debug/iterator2_neg.cc
  df6f3979278ab7bd9df1ab015d437ddc  libstdc++-v3/testsuite/23_containers/deque/debug/shrink_to_fit.cc
*************** c5f32b33de65013c0fc106b121d9adb9  libstd
*** 148023,148030 ****
  66d8e0b64dc2f55b235d2a74c80953c3  libstdc++-v3/testsuite/23_containers/deque/types/pmr_typedefs.cc
  2ef42205ec9719ecefddda3ad2adc42a  libstdc++-v3/testsuite/23_containers/deque/types/pmr_typedefs_debug.cc
  ca98b78997105b8f93c1c653568b6095  libstdc++-v3/testsuite/23_containers/deque/version.cc
! 1492854298ee7b1d66830e5105c20370  libstdc++-v3/testsuite/23_containers/flat_map/1.cc
! 710f5ae26fb931929eec91619c0d93b9  libstdc++-v3/testsuite/23_containers/flat_multimap/1.cc
  9b2f42aff2cc15dfd3a3f7693a799f84  libstdc++-v3/testsuite/23_containers/flat_multiset/1.cc
  76d6af8252b5ad047167bd10312d53bc  libstdc++-v3/testsuite/23_containers/flat_set/1.cc
  0c9946a785a1bcd0c52de4c0d17ff0e9  libstdc++-v3/testsuite/23_containers/forward_list/48101-2_neg.cc
--- 148131,148138 ----
  66d8e0b64dc2f55b235d2a74c80953c3  libstdc++-v3/testsuite/23_containers/deque/types/pmr_typedefs.cc
  2ef42205ec9719ecefddda3ad2adc42a  libstdc++-v3/testsuite/23_containers/deque/types/pmr_typedefs_debug.cc
  ca98b78997105b8f93c1c653568b6095  libstdc++-v3/testsuite/23_containers/deque/version.cc
! 30a5a3c1b40ce7942e8853237efc9b65  libstdc++-v3/testsuite/23_containers/flat_map/1.cc
! ed93a89d8077e1bcc2a90a7e2c63ce05  libstdc++-v3/testsuite/23_containers/flat_multimap/1.cc
  9b2f42aff2cc15dfd3a3f7693a799f84  libstdc++-v3/testsuite/23_containers/flat_multiset/1.cc
  76d6af8252b5ad047167bd10312d53bc  libstdc++-v3/testsuite/23_containers/flat_set/1.cc
  0c9946a785a1bcd0c52de4c0d17ff0e9  libstdc++-v3/testsuite/23_containers/forward_list/48101-2_neg.cc
*************** da421f8c7821a0a6d7eab3d8001476e3  libstd
*** 148167,148176 ****
  c3b72820d263829b8713079673adf2bf  libstdc++-v3/testsuite/23_containers/inplace_vector/access/capacity.cc
  0dfecfd826cd666c38084ef6cb55c9b2  libstdc++-v3/testsuite/23_containers/inplace_vector/access/elem.cc
  30ab64df2eb33c78da29eab2cf8935d7  libstdc++-v3/testsuite/23_containers/inplace_vector/access/elem_neg.cc
! e43e9eb523468bb62b4f7889ad64b811  libstdc++-v3/testsuite/23_containers/inplace_vector/cons/1.cc
  cd81d3555896e4c03e2bba3f0932ce5c  libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_range.cc
  38e5f39346a05e51ec2a0e4cdf2586e4  libstdc++-v3/testsuite/23_containers/inplace_vector/cons/throws.cc
! 273424e32898a9d53a7f2ac8a6fc355b  libstdc++-v3/testsuite/23_containers/inplace_vector/copy.cc
  b597adca8581a01fbdfcf2647c26135e  libstdc++-v3/testsuite/23_containers/inplace_vector/erasure.cc
  25458c2942c9e5fdbe79af5a83ec4102  libstdc++-v3/testsuite/23_containers/inplace_vector/modifiers/assign.cc
  5aec8512568ce2f7543d9c77e6605c2c  libstdc++-v3/testsuite/23_containers/inplace_vector/modifiers/erase.cc
--- 148275,148314 ----
  c3b72820d263829b8713079673adf2bf  libstdc++-v3/testsuite/23_containers/inplace_vector/access/capacity.cc
  0dfecfd826cd666c38084ef6cb55c9b2  libstdc++-v3/testsuite/23_containers/inplace_vector/access/elem.cc
  30ab64df2eb33c78da29eab2cf8935d7  libstdc++-v3/testsuite/23_containers/inplace_vector/access/elem_neg.cc
! 622856eec1c33e96d8aa14449309a720  libstdc++-v3/testsuite/23_containers/inplace_vector/cons/1.cc
  cd81d3555896e4c03e2bba3f0932ce5c  libstdc++-v3/testsuite/23_containers/inplace_vector/cons/from_range.cc
  38e5f39346a05e51ec2a0e4cdf2586e4  libstdc++-v3/testsuite/23_containers/inplace_vector/cons/throws.cc
! 885e647c2fd112b257c4c58939169847  libstdc++-v3/testsuite/23_containers/inplace_vector/copy.cc
! c87eb94f57dafc64e6cdeeab93e4ea86  libstdc++-v3/testsuite/23_containers/inplace_vector/debug/assign1_neg.cc
! 1fa7391889af8e1484f4259b15b914f0  libstdc++-v3/testsuite/23_containers/inplace_vector/debug/assign2_neg.cc
! 22678c0980cba5c92cdbbb592d98ce46  libstdc++-v3/testsuite/23_containers/inplace_vector/debug/assign3_neg.cc
! 2375b778cedda3f579cb9e34f57d1d83  libstdc++-v3/testsuite/23_containers/inplace_vector/debug/assign4_backtrace_neg.cc
! 7859c185bcd98665b570d779ff74f8e5  libstdc++-v3/testsuite/23_containers/inplace_vector/debug/assign4_neg.cc
! c07a1081a648cd69500f185187ba95cd  libstdc++-v3/testsuite/23_containers/inplace_vector/debug/construct1_neg.cc
! 18acdbfd05e36cea250d03f2f2899ef1  libstdc++-v3/testsuite/23_containers/inplace_vector/debug/construct2_neg.cc
! 571233cc6d3ad45ff166b15b9b89bce3  libstdc++-v3/testsuite/23_containers/inplace_vector/debug/construct3_neg.cc
! 65cdba5d6b9ef3529b4710fefcfea155  libstdc++-v3/testsuite/23_containers/inplace_vector/debug/construct4_neg.cc
! 68c2ab132962343e4d8f2742bf29f195  libstdc++-v3/testsuite/23_containers/inplace_vector/debug/debug_functions.cc
! f2127eabd3efff76a9918eb3a685bef8  libstdc++-v3/testsuite/23_containers/inplace_vector/debug/erase.cc
! 0a2181e4b275b1abba451c2b519c0548  libstdc++-v3/testsuite/23_containers/inplace_vector/debug/insert1_neg.cc
! 50ae315c9caae8d4c5841677775f0f02  libstdc++-v3/testsuite/23_containers/inplace_vector/debug/insert2_neg.cc
! d98f767e5c3092e4fa4c0e738eb62333  libstdc++-v3/testsuite/23_containers/inplace_vector/debug/insert3_neg.cc
! 679fbc9364425900b114df49f9cd6807  libstdc++-v3/testsuite/23_containers/inplace_vector/debug/insert4_neg.cc
! 54cdbee6f1315514fb850ffd2fd217cf  libstdc++-v3/testsuite/23_containers/inplace_vector/debug/insert5_neg.cc
! 801fa62be8a2e85b7e3ad40f52aa5a19  libstdc++-v3/testsuite/23_containers/inplace_vector/debug/insert7_neg.cc
! eaaf08c4821362e3300114284107b596  libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/1.cc
! 27f1c5a80d42ee81aa25eda4387dd27c  libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/2.cc
! 9d4b1602a5ed92f3386329bc3b906086  libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/3.cc
! 99425777cee839b30744a6da3eadfe8c  libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/4.cc
! 4f4921f719bc70119721da8b071774fc  libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/append_range.cc
! bdfb47460495795498b43da7b5e449e5  libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/erase.cc
! 4be4fc12ab6433d1000ed01192eafaa6  libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/pop_back.cc
! adf70c3108bb57e460f5e7f13e417f6c  libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/push_back.cc
! 434493384983fc66e09d4d9f33b8fc5a  libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/swap.cc
! b1d065547f03bed8fcb20c656a18aae3  libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/try_append_range.cc
! 72f18de3eccccd911e3abb64eab49888  libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/try_emplace_back.cc
! 1201b3e07704574b86c2ebaa12550203  libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/try_push_back.cc
! 597dca6295388c7b43dbf6bd1b92363a  libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/unchecked_emplace_back.cc
  b597adca8581a01fbdfcf2647c26135e  libstdc++-v3/testsuite/23_containers/inplace_vector/erasure.cc
  25458c2942c9e5fdbe79af5a83ec4102  libstdc++-v3/testsuite/23_containers/inplace_vector/modifiers/assign.cc
  5aec8512568ce2f7543d9c77e6605c2c  libstdc++-v3/testsuite/23_containers/inplace_vector/modifiers/erase.cc
*************** b597adca8581a01fbdfcf2647c26135e  libstd
*** 148178,148184 ****
  a7c24e54c62a380315141d521b8fdcef  libstdc++-v3/testsuite/23_containers/inplace_vector/modifiers/multi_insert.cc
  8c4c89cbb2ba35feda988027855433ad  libstdc++-v3/testsuite/23_containers/inplace_vector/modifiers/single_insert.cc
  63a7d605a0bc39f3acfb0fa4bb289dda  libstdc++-v3/testsuite/23_containers/inplace_vector/modifiers/single_insert_neg.cc
! f134ee48b3f80955503a35907623395b  libstdc++-v3/testsuite/23_containers/inplace_vector/move.cc
  5518dafa57195a13905e6083cf064ace  libstdc++-v3/testsuite/23_containers/inplace_vector/relops.cc
  2b73622f47b87d526a0d4cbbd45bd738  libstdc++-v3/testsuite/23_containers/inplace_vector/version.cc
  094ef547af977ed770df7574cebf8f92  libstdc++-v3/testsuite/23_containers/list/14340.cc
--- 148316,148322 ----
  a7c24e54c62a380315141d521b8fdcef  libstdc++-v3/testsuite/23_containers/inplace_vector/modifiers/multi_insert.cc
  8c4c89cbb2ba35feda988027855433ad  libstdc++-v3/testsuite/23_containers/inplace_vector/modifiers/single_insert.cc
  63a7d605a0bc39f3acfb0fa4bb289dda  libstdc++-v3/testsuite/23_containers/inplace_vector/modifiers/single_insert_neg.cc
! c0e4b5e520bb7afd9585b659e29ec827  libstdc++-v3/testsuite/23_containers/inplace_vector/move.cc
  5518dafa57195a13905e6083cf064ace  libstdc++-v3/testsuite/23_containers/inplace_vector/relops.cc
  2b73622f47b87d526a0d4cbbd45bd738  libstdc++-v3/testsuite/23_containers/inplace_vector/version.cc
  094ef547af977ed770df7574cebf8f92  libstdc++-v3/testsuite/23_containers/list/14340.cc
*************** f11430abfbf793c9117a6d498fc9e9d6  libstd
*** 148447,148467 ****
  56a0f5d5edaad1117cc988beafc16d5d  libstdc++-v3/testsuite/23_containers/mdspan/extents/custom_integer.cc
  669e44182af41d221acecffd45681dc9  libstdc++-v3/testsuite/23_containers/mdspan/extents/extents_mismatch_neg.cc
  b156707a9c78c39d6425cbae7cb3f90a  libstdc++-v3/testsuite/23_containers/mdspan/extents/misc.cc
! 45151a2cf9a16e9d2585ceb05d895da5  libstdc++-v3/testsuite/23_containers/mdspan/int_like.h
  bead52db525471c98d26137e05743c97  libstdc++-v3/testsuite/23_containers/mdspan/layout_like.h
  72b470dbb3b1ec39181d25a3e5456df2  libstdc++-v3/testsuite/23_containers/mdspan/layout_traits.h
  ab07a82ad1f2a1ee5e8b19e0b60f44ea  libstdc++-v3/testsuite/23_containers/mdspan/layouts/class_mandate_neg.cc
! bf768147c78af893e17cf46daac301d6  libstdc++-v3/testsuite/23_containers/mdspan/layouts/ctors.cc
  ea1a2f61fac46b6b55b9ff2c52289540  libstdc++-v3/testsuite/23_containers/mdspan/layouts/debug/out_of_bounds_neg.cc
  afe443cccc07fbd59aff2af0edd955ce  libstdc++-v3/testsuite/23_containers/mdspan/layouts/empty.cc
  f100ecfcef3f79639fc5c07828bee8f2  libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc
! 810ef0d9608731f373a7e23c8a457b6e  libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded.cc
  490297a4a90a084a51d7dfe6eb3a0f72  libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded_neg.cc
  3f96813b92ac712ab8210f7eb24e7158  libstdc++-v3/testsuite/23_containers/mdspan/layouts/stride.cc
  94e1c258b4d0ee973edbc3f9311a7883  libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc
  4b1a50b4d361b155b60027f1bdc566e7  libstdc++-v3/testsuite/23_containers/mdspan/out_of_bounds_neg.cc
  4c9c6015ba8a52688acc785190d451f1  libstdc++-v3/testsuite/23_containers/mdspan/submdspan/strided_slice.cc
  9bf970f0e760e969476983a9e58f4313  libstdc++-v3/testsuite/23_containers/mdspan/submdspan/strided_slice_neg.cc
  a1e2443fdfc824b4a97945b2d4aa84a0  libstdc++-v3/testsuite/23_containers/mdspan/version.cc
  351e436ffeeb8e47804c6992b75a81cb  libstdc++-v3/testsuite/23_containers/multimap/14340.cc
  5bf01016c0929346c0086fb8a71129b5  libstdc++-v3/testsuite/23_containers/multimap/23781_neg.cc
--- 148585,148609 ----
  56a0f5d5edaad1117cc988beafc16d5d  libstdc++-v3/testsuite/23_containers/mdspan/extents/custom_integer.cc
  669e44182af41d221acecffd45681dc9  libstdc++-v3/testsuite/23_containers/mdspan/extents/extents_mismatch_neg.cc
  b156707a9c78c39d6425cbae7cb3f90a  libstdc++-v3/testsuite/23_containers/mdspan/extents/misc.cc
! ab055bfc068f83879ad28ea7bc8c0287  libstdc++-v3/testsuite/23_containers/mdspan/int_like.h
  bead52db525471c98d26137e05743c97  libstdc++-v3/testsuite/23_containers/mdspan/layout_like.h
  72b470dbb3b1ec39181d25a3e5456df2  libstdc++-v3/testsuite/23_containers/mdspan/layout_traits.h
  ab07a82ad1f2a1ee5e8b19e0b60f44ea  libstdc++-v3/testsuite/23_containers/mdspan/layouts/class_mandate_neg.cc
! 17c0f6c2479b2697a0e1f1e5dbbeb6af  libstdc++-v3/testsuite/23_containers/mdspan/layouts/ctors.cc
  ea1a2f61fac46b6b55b9ff2c52289540  libstdc++-v3/testsuite/23_containers/mdspan/layouts/debug/out_of_bounds_neg.cc
  afe443cccc07fbd59aff2af0edd955ce  libstdc++-v3/testsuite/23_containers/mdspan/layouts/empty.cc
  f100ecfcef3f79639fc5c07828bee8f2  libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc
! 2226303150eee3ae46373765f6a6d08f  libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded.cc
  490297a4a90a084a51d7dfe6eb3a0f72  libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded_neg.cc
  3f96813b92ac712ab8210f7eb24e7158  libstdc++-v3/testsuite/23_containers/mdspan/layouts/stride.cc
  94e1c258b4d0ee973edbc3f9311a7883  libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc
  4b1a50b4d361b155b60027f1bdc566e7  libstdc++-v3/testsuite/23_containers/mdspan/out_of_bounds_neg.cc
  4c9c6015ba8a52688acc785190d451f1  libstdc++-v3/testsuite/23_containers/mdspan/submdspan/strided_slice.cc
  9bf970f0e760e969476983a9e58f4313  libstdc++-v3/testsuite/23_containers/mdspan/submdspan/strided_slice_neg.cc
+ 34b597bdb79c9dd1ff8a73e86e40e4d6  libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_canonicalize_slices.cc
+ aae227415f150b9a9ecb7c5f3471bdb1  libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_canonicalize_slices_neg.cc
+ 88f4ed8f7327ad7b85a365ae47183b7b  libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_extents.cc
+ 6cbb5626b65f7cf931854666ecfe358e  libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_extents_neg.cc
  a1e2443fdfc824b4a97945b2d4aa84a0  libstdc++-v3/testsuite/23_containers/mdspan/version.cc
  351e436ffeeb8e47804c6992b75a81cb  libstdc++-v3/testsuite/23_containers/multimap/14340.cc
  5bf01016c0929346c0086fb8a71129b5  libstdc++-v3/testsuite/23_containers/multimap/23781_neg.cc
*************** e39104563e342c5d9638814951254e5d  libstd
*** 154228,154234 ****
  4cf87dc727e180a71a41f9ae3161a3e2  libstdc++-v3/testsuite/std/ranges/adaptors/slide/1.cc
  8693266e965c3670fd068e24f7fcb4ea  libstdc++-v3/testsuite/std/ranges/adaptors/split.cc
  a0e630899068a41f2ddf2c81cbd386a4  libstdc++-v3/testsuite/std/ranges/adaptors/stride/1.cc
! 90369337fa5642d6d93f54b333836826  libstdc++-v3/testsuite/std/ranges/adaptors/take.cc
  66691dbef221bbf5e355c8d462e1e3cc  libstdc++-v3/testsuite/std/ranges/adaptors/take_while.cc
  b84e90f734d1e8ca59322b53758c6f9c  libstdc++-v3/testsuite/std/ranges/adaptors/to_input/1.cc
  51048211cc18e0fd3a4e8fb3e1a826c9  libstdc++-v3/testsuite/std/ranges/adaptors/transform.cc
--- 154370,154376 ----
  4cf87dc727e180a71a41f9ae3161a3e2  libstdc++-v3/testsuite/std/ranges/adaptors/slide/1.cc
  8693266e965c3670fd068e24f7fcb4ea  libstdc++-v3/testsuite/std/ranges/adaptors/split.cc
  a0e630899068a41f2ddf2c81cbd386a4  libstdc++-v3/testsuite/std/ranges/adaptors/stride/1.cc
! 62f5c1e77e8cf1bb5724b3225cb067ea  libstdc++-v3/testsuite/std/ranges/adaptors/take.cc
  66691dbef221bbf5e355c8d462e1e3cc  libstdc++-v3/testsuite/std/ranges/adaptors/take_while.cc
  b84e90f734d1e8ca59322b53758c6f9c  libstdc++-v3/testsuite/std/ranges/adaptors/to_input/1.cc
  51048211cc18e0fd3a4e8fb3e1a826c9  libstdc++-v3/testsuite/std/ranges/adaptors/transform.cc
*************** bd807b019a4ba77566998c99313db859  libstd
*** 154997,155003 ****
  7c187c082e20bb57d454656467eb1b04  libstdc++-v3/testsuite/util/common_type/priority_queue/common_type.hpp
  ff2b916d222771b590e8628ab36923e5  libstdc++-v3/testsuite/util/common_type/priority_queue/detail/ds_string_form.hpp
  1e9ec7b42c6e4f14d1419d9ef5a5a7d1  libstdc++-v3/testsuite/util/common_type/priority_queue/string_form.hpp
! 80b99e023b02012abf71a149f21b1652  libstdc++-v3/testsuite/util/debug/checks.h
  a8df77c6f6c2beb546ceff7f5a8000ed  libstdc++-v3/testsuite/util/debug/unordered_checks.h
  5dada16221bc63b0ad5b2f44ea6254ec  libstdc++-v3/testsuite/util/exception/safety.h
  5fcb49246388ddc3a703251c5e0283f9  libstdc++-v3/testsuite/util/hash_fn/dna_str_limit.hpp
--- 155139,155145 ----
  7c187c082e20bb57d454656467eb1b04  libstdc++-v3/testsuite/util/common_type/priority_queue/common_type.hpp
  ff2b916d222771b590e8628ab36923e5  libstdc++-v3/testsuite/util/common_type/priority_queue/detail/ds_string_form.hpp
  1e9ec7b42c6e4f14d1419d9ef5a5a7d1  libstdc++-v3/testsuite/util/common_type/priority_queue/string_form.hpp
! b32e47636ee90b429a76008e41f703a7  libstdc++-v3/testsuite/util/debug/checks.h
  a8df77c6f6c2beb546ceff7f5a8000ed  libstdc++-v3/testsuite/util/debug/unordered_checks.h
  5dada16221bc63b0ad5b2f44ea6254ec  libstdc++-v3/testsuite/util/exception/safety.h
  5fcb49246388ddc3a703251c5e0283f9  libstdc++-v3/testsuite/util/hash_fn/dna_str_limit.hpp
diff -Nrcpad gcc-16-20251130/config/ChangeLog gcc-16-20251207/config/ChangeLog
*** gcc-16-20251130/config/ChangeLog	Sun Nov 30 22:32:05 2025
--- gcc-16-20251207/config/ChangeLog	Sun Dec  7 22:32:06 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-11-30  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* acx.m4 (ACX_PROG_GA68): New defun.
+ 
  2025-11-03  Sam James  <sam@gentoo.org>
  
  	* clang-plugin.m4: Sync with binutils.
diff -Nrcpad gcc-16-20251130/contrib/ChangeLog gcc-16-20251207/contrib/ChangeLog
*** gcc-16-20251130/contrib/ChangeLog	Sun Nov 30 22:32:05 2025
--- gcc-16-20251207/contrib/ChangeLog	Sun Dec  7 22:32:06 2025
***************
*** 1,3 ****
--- 1,22 ----
+ 2025-12-06  Mark Zhuang  <mark.zhuang@spacemit.com>
+ 
+ 	* prepare-commit-msg: check --default-prefix
+ 
+ 2025-12-04  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* check_GNU_style_lib.py (TrailinigOperatorCheck): Rename to
+ 	TrailingOperatorCheck.
+ 
+ 2025-12-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gcc-changelog/git_update_version.py (ignored_commits): Add
+ 	e69bea9b4ccfe79efeec6e87d7d24e6350f31375.
+ 
+ 2025-12-01  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* gcc-changelog/git_commit.py: Add gcc/algol68 and libga68 to
+ 	default_changelog_locations.
+ 
  2025-11-22  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
  
  	* gcc-changelog/git_commit.py: Add algol68.
diff -Nrcpad gcc-16-20251130/contrib/check_GNU_style_lib.py gcc-16-20251207/contrib/check_GNU_style_lib.py
*** gcc-16-20251130/contrib/check_GNU_style_lib.py	Sun Nov 30 22:32:05 2025
--- gcc-16-20251207/contrib/check_GNU_style_lib.py	Sun Dec  7 22:32:06 2025
*************** class BracesOnSeparateLineCheck:
*** 217,223 ****
                  line[:m.start(2)] + error_string(m.group(2)) + line[m.end(2):],
                  'braces should be on a separate line', m.start(2))
  
! class TrailinigOperatorCheck:
      def __init__(self):
          regex = r'^\s.*(([^a-zA-Z_]\*)|([-%<=&|^?])|([^*]/)|([^:][+]))$'
          self.re = re.compile(regex)
--- 217,223 ----
                  line[:m.start(2)] + error_string(m.group(2)) + line[m.end(2):],
                  'braces should be on a separate line', m.start(2))
  
! class TrailingOperatorCheck:
      def __init__(self):
          regex = r'^\s.*(([^a-zA-Z_]\*)|([-%<=&|^?])|([^*]/)|([^:][+]))$'
          self.re = re.compile(regex)
*************** def check_GNU_style_file(file, format):
*** 272,278 ****
          SentenceSeparatorCheck(), SentenceEndOfCommentCheck(),
          SentenceDotEndCheck(), FunctionParenthesisCheck(),
          SquareBracketCheck(), ClosingParenthesisCheck(),
!         BracesOnSeparateLineCheck(), TrailinigOperatorCheck(),
          SpacesAndTabsMixedCheck()]
      errors = []
  
--- 272,278 ----
          SentenceSeparatorCheck(), SentenceEndOfCommentCheck(),
          SentenceDotEndCheck(), FunctionParenthesisCheck(),
          SquareBracketCheck(), ClosingParenthesisCheck(),
!         BracesOnSeparateLineCheck(), TrailingOperatorCheck(),
          SpacesAndTabsMixedCheck()]
      errors = []
  
diff -Nrcpad gcc-16-20251130/contrib/gcc-changelog/git_commit.py gcc-16-20251207/contrib/gcc-changelog/git_commit.py
*** gcc-16-20251130/contrib/gcc-changelog/git_commit.py	Sun Nov 30 22:32:05 2025
--- gcc-16-20251207/contrib/gcc-changelog/git_commit.py	Sun Dec  7 22:32:06 2025
*************** default_changelog_locations = {
*** 33,38 ****
--- 33,39 ----
      'contrib/regression',
      'fixincludes',
      'gcc/ada',
+     'gcc/algol68',
      'gcc/analyzer',
      'gcc/brig',
      'gcc/c',
*************** default_changelog_locations = {
*** 64,69 ****
--- 65,71 ----
      'libcpp/po',
      'libdecnumber',
      'libffi',
+     'libga68',
      'libgcc',
      'libgcc/config/avr/libf7',
      'libgcc/config/libbid',
diff -Nrcpad gcc-16-20251130/contrib/gcc-changelog/git_update_version.py gcc-16-20251207/contrib/gcc-changelog/git_update_version.py
*** gcc-16-20251130/contrib/gcc-changelog/git_update_version.py	Sun Nov 30 22:32:05 2025
--- gcc-16-20251207/contrib/gcc-changelog/git_update_version.py	Sun Dec  7 22:32:06 2025
*************** ignored_commits = {
*** 48,54 ****
          '10d76b7f1e5b63ad6d2b92940c39007913ced037',
          'de3b277247ce98d189f121155b75f490725a42f6',
          '13cf22eb557eb5e3d796822247d8d4957bdb25da',
!         'b40ef6e9dc096c8c19399e94947a1965258a6942'}
  
  FORMAT = '%(asctime)s:%(levelname)s:%(name)s:%(message)s'
  logging.basicConfig(level=logging.INFO, format=FORMAT,
--- 48,55 ----
          '10d76b7f1e5b63ad6d2b92940c39007913ced037',
          'de3b277247ce98d189f121155b75f490725a42f6',
          '13cf22eb557eb5e3d796822247d8d4957bdb25da',
!         'b40ef6e9dc096c8c19399e94947a1965258a6942',
!         'e69bea9b4ccfe79efeec6e87d7d24e6350f31375'}
  
  FORMAT = '%(asctime)s:%(levelname)s:%(name)s:%(message)s'
  logging.basicConfig(level=logging.INFO, format=FORMAT,
diff -Nrcpad gcc-16-20251130/contrib/prepare-commit-msg gcc-16-20251207/contrib/prepare-commit-msg
*** gcc-16-20251130/contrib/prepare-commit-msg	Sun Nov 30 22:32:05 2025
--- gcc-16-20251207/contrib/prepare-commit-msg	Sun Dec  7 22:32:06 2025
*************** else
*** 78,81 ****
      tee="cat"
  fi
  
! git $cmd --default-prefix | $tee | git gcc-mklog -c "$COMMIT_MSG_FILE"
--- 78,86 ----
      tee="cat"
  fi
  
! # Use --default-prefix if supported
! if git diff --help | grep -q "\-\-default-prefix" 2>/dev/null; then
!     cmd="$cmd --default-prefix"
! fi
! 
! git $cmd | $tee | git gcc-mklog -c "$COMMIT_MSG_FILE"
diff -Nrcpad gcc-16-20251130/gcc/ChangeLog gcc-16-20251207/gcc/ChangeLog
*** gcc-16-20251130/gcc/ChangeLog	Sun Nov 30 22:32:05 2025
--- gcc-16-20251207/gcc/ChangeLog	Sun Dec  7 22:32:06 2025
***************
*** 1,3 ****
--- 1,535 ----
+ 2025-12-06  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	PR rtl-optimization/122947
+ 	* calls.cc (expand_call): Add stack function usage in
+ 	non-ACCUMULATE_OUTGOING_ARGS configurations.
+ 
+ 2025-12-06  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	PR target/91420
+ 	* config/riscv/riscv.cc (riscv_symbolic_constant_p): Require
+ 	offsets smaller than +/- 1GiB for PCREL symbols.
+ 
+ 2025-12-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* attribs.cc (decl_attributes): Use attribute_value_equal to
+ 	compare attribute values instead of simple_cst_equal.
+ 
+ 2025-12-06  Dimitar Dimitrov  <dimitar@dinux.eu>
+ 
+ 	PR rtl-optimization/122675
+ 	* bb-reorder.cc (edge_order): Fix BB edge ordering to be
+ 	descending.
+ 
+ 2025-12-05  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/122215
+ 	* ira-color.cc (improve_allocation): Use register filter for all
+ 	loop on hard regs.
+ 
+ 2025-12-05  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/122999
+ 	* config/arm/arm.cc (arm_canonicalize_comparison): Defer
+ 	initializing maxval until we know we are dealing with an
+ 	integer mode.
+ 
+ 2025-12-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-loop.cc (vect_need_peeling_or_partial_vectors_p):
+ 	When peeling for gaps we always need an epilog.
+ 
+ 2025-12-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/120939
+ 	* tree-vect-loop.cc (vect_need_peeling_or_partial_vectors_p):
+ 	Remove eliding an epilogue based on not computed
+ 	LOOP_VINFO_COST_MODEL_THRESHOLD and estimated max stmt executions.
+ 
+ 2025-12-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/123002
+ 	* tree-vectorizer.h (supportable_widening_operation): Remove
+ 	vinfo and stmt_info parameters, add flag to indicate whether
+ 	the context would allow OP_{EVEN,ODD}.
+ 	* tree-vect-patterns.cc (vect_recog_abd_pattern): Adjust
+ 	and pass false.
+ 	(vect_recog_widen_op_pattern): Likewise.
+ 	(vect_recog_widen_abd_pattern): Likewise.
+ 	* tree-vect-stmts.cc (vectorizable_conversion): Move
+ 	even/odd validity check here, from supportable_widening_operation.
+ 	Adjust it to be conservative.
+ 	(supportable_widening_operation): Get flag whether even/odd
+ 	is OK to use and remove then unused parameters and code.
+ 
+ 2025-12-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-pretty-print.cc (dump_mem_ref): Dump clique : base
+ 	specifier for MEM_REF and TARGET_MEM_REF when dumping
+ 	GIMPLE format.
+ 
+ 2025-12-05  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* gimplify.cc (gimplify_scan_omp_clauses): Handle
+ 	OMP_CLAUSE_DYN_GROUPPRIVATE by printing 'sorry, unimplemented'.
+ 	* tree-core.h (enum omp_clause_code): Add OMP_CLAUSE_DYN_GROUPPRIVATE.
+ 	(enum omp_clause_fallback_kind): New.
+ 	(struct tree_omp_clause): Add fallback_kind union member.
+ 	* tree-nested.cc (convert_nonlocal_omp_clauses,
+ 	convert_local_omp_clauses): Handle OMP_CLAUSE_DYN_GROUPPRIVATE.
+ 	* tree.cc (omp_clause_num_ops, omp_clause_code_name): Add
+ 	OMP_CLAUSE_DYN_GROUPPRIVATE.
+ 	* tree-pretty-print.cc (dump_omp_clause): Handle
+ 	OMP_CLAUSE_DYN_GROUPPRIVATE.
+ 	* tree.h (OMP_CLAUSE_DYN_GROUPPRIVATE_EXPR,
+ 	OMP_CLAUSE_DYN_GROUPPRIVATE_KIND): New #define.
+ 
+ 2025-12-05  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR middle-end/99782
+ 	* config/i386/i386-expand.cc (ix86_gen_ccmp_next): Move the check
+ 	for mode earlier before expand_operands.
+ 	* config/aarch64/aarch64.cc (aarch64_gen_ccmp_next): Likewise.
+ 
+ 2025-12-05  Daniel Barboza  <dbarboza@ventanamicro.com>
+ 	    Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	* match.pd (`x & c ? (x - c) | (x | c)`): New pattern.
+ 	(`x & c ? (x & ~c) | (x | c)`): Likewise.
+ 
+ 2025-12-05  Pan Li  <pan2.li@intel.com>
+ 
+ 	* config/riscv/autovec-opt.md (*pred_cmp_swapped<mode>_scalar):
+ 	Add new pattern to match vec_dup > vec for vmsltu.
+ 	* config/riscv/predicates.md (comparison_swappable_operator):
+ 	Add new iterator for above pattern
+ 	* config/riscv/riscv-protos.h (expand_vx_cmp_vec_dup_vec): Add
+ 	new func to emit vmsltu.vx.
+ 	* config/riscv/riscv-v.cc (get_swapped_cmp_rtx_code): Add new
+ 	func to convert cmp code to swapped, like gtu to ltu.
+ 	(expand_vx_cmp_vec_dup_vec): Add new func decl.
+ 
+ 2025-12-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/122991
+ 	* config/aarch64/aarch64.md (crc_rev<ALLI:mode><ALLX:mode>4,
+ 	crc<ALLI:mode><ALLX:mode>4): Use const_int_operand predicate for
+ 	the last operand.
+ 
+ 2025-12-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122776
+ 	* tree-vectorizer.h (vect_simd_clone_data::clone,
+ 	vect_simd_clone_data::clone_inbranch): New fields for
+ 	the two selected clones.
+ 	* tree-vect-stmts.cc (vectorizable_simd_clone_call): Record
+ 	both a possibly notinbranch and a inbranch clone.  Delay
+ 	the choice between both to code generation based on
+ 	LOOP_VINFO_FULLY_MASKED_P.
+ 
+ 2025-12-04  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* gimple-range-fold.h (class fold_using_range): New member
+ 	function range_from_readonly_var.
+ 	* gimple-range-fold.cc (fold_using_range::fold_stmt): Call
+ 	range_from_readonly_var on assignments.
+ 	(range_from_missing_constructor_part): New function.
+ 	(range_from_readonly_load): Likewise.
+ 	(fold_using_range::range_from_readonly_var): Likewise.
+ 	* params.opt (param_vrp_cstload_limit): New.
+ 	* doc/invoke.texi (vrp-cstload-limit): Likewise.
+ 
+ 2025-12-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/122991
+ 	* config/i386/i386.md (crc_rev<SWI124:mode>si4): Use const_int_operand
+ 	predicate for the last input argument.
+ 
+ 2025-12-04  Stefan Schulze Frielinghaus  <stefansf@gcc.gnu.org>
+ 
+ 	* lra-constraints.cc (get_reload_reg): Honor exclude start regs
+ 	while reusing reloads.
+ 
+ 2025-12-04  Kugan Vivekanandarajah  <kvivekananda@nvidia.com>
+ 
+ 	Revert:
+ 	2025-12-02  Kugan Vivekanandarajah  <kvivekananda@nvidia.com>
+ 
+ 	* ipa-inline.cc (inline_functions_by_afdo): Remove resetting bool inlined.
+ 
+ 2025-12-03  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/85072
+ 	* lra-assigns.cc (init_live_reload_and_inheritance_pseudos):
+ 	Improve calculation of live_reload_and_inheritance_pseudos and set
+ 	a constraint to do this.
+ 	* params.opt
+ 	(lra-max-pseudos-points-log2-considered-for-preferences): New.
+ 	* doc/invoke.texi
+ 	(lra-max-pseudos-points-log2-considered-for-preferences): Document
+ 	it.
+ 
+ 2025-12-03  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR tree-optimization/122934
+ 	* tree-ssa-loop-niter.cc (simplify_using_initial_conditions): Use
+ 	singleton_p predicate even with boolean ranges.
+ 
+ 2025-12-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/122943
+ 	* tree-switch-conversion.cc (switch_conversion::build_arrays):
+ 	Always gimplify subtraction in utype without cast to tidxtype
+ 	and set m_arr_ref_first to the last stmt of that.  Remove unneeded
+ 	update_stmt call.  If tidxtype is not utype, append after that stmt
+ 	cast to tidxtype and set tidx to the lhs of that cast.
+ 
+ 2025-12-03  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/122898
+ 	* gimple-range-fold.cc (fur_source::register_relation): Return a bool;
+ 	(fur_depend::register_relation): Ditto.
+ 	(fur_relation::register_relation): Ditto.
+ 	* gimple-range-fold.h (fur_source::register_relation): Adjust prototype.
+ 	(fur_depend::register_relation): Ditto.
+ 	* gimple-range-path.cc (jt_fur_source::register_relation): Return bool.
+ 	* value-relation.cc (equiv_oracle::add_partial_equiv): Return a bool.
+ 	(equiv_oracle::record): Return a bool.
+ 	(relation_oracle::record): Return a bool.
+ 	(dom_oracle::record): Return a bool.
+ 	(dom_oracle::set_one_relation): Remove some debug output.
+ 	(path_oracle::equiv_set): Return a bool.
+ 	(path_oracle::register_equiv): Return a bool.
+ 	(path_oracle::record): Return a bool.
+ 	* value-relation.h (relation_oracle::record): Adjust prototype.
+ 	(equiv_oracle::add_partial_equiv): Ditto
+ 	(equiv_oracle::record): Ditto.
+ 	(dom_oracle::record): Ditto.
+ 	(path_oracle::equiv_set): Ditto.
+ 	(path_oracle::register_equiv): Ditto.
+ 	(path_oracle::record): Ditto.
+ 
+ 2025-12-03  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	PR algol68/122964
+ 	* dwarf2out.cc (gen_compile_unit_die): Set LVERSION to 1978 for
+ 	Algol 68 and add dwarf_version >= 5 to guard.
+ 
+ 2025-12-03  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/122969
+ 	* tree-vect-loop-manip.cc (vect_update_ivs_after_vectorizer): handle
+ 	non-ssa name IV var args.
+ 
+ 2025-12-03  Mathias Krause  <minipli@grsecurity.net>
+ 
+ 	* config/i386/i386.cc (x86_print_call_or_nop): Fix 16-bit NOP
+ 	generation.
+ 
+ 2025-12-03  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR middle-end/122959
+ 	* tree-vect-loop-manip.cc (vect_do_peeling): Delay setting update_e.
+ 
+ 2025-12-03  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/71921
+ 	* config/i386/predicates.md (ieee_maxmin_comparison_operator):
+ 	New predicator.
+ 	* config/i386/sse.md (*minmax<mode>3_3): New define_insn_and_split.
+ 	(*minmax<mode>3_4): Ditto.
+ 	(*minmax<mode>3_1): Extend operands[2]/operands[4] to handle
+ 	immediate_operand.
+ 
+ 2025-12-02  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	PR target/122874
+ 	* config/pa/pa.cc (pa_emit_move_sequence): Break out large
+ 	REG+D addresses from MEM operands.  Also, don't allow
+ 	unscaled indexed source operands till reload completes.
+ 
+ 2025-12-02  Robin Dapp  <rdapp.gcc@gmail.com>
+ 
+ 	PR target/122656
+ 	* config/riscv/riscv-vector-builtins-bases.cc: Use
+ 	use_contiguous_load for vlsegff.
+ 	* config/riscv/riscv-vector-builtins.cc (function_expander::use_exact_insn):
+ 	Only add rounding mode operand if insn requires it and number of
+ 	arguments is < required.
+ 	(function_expander::use_ternop_insn): Ditto.
+ 	(function_expander::use_widen_ternop_insn): Ditto.
+ 	* config/riscv/vector.md: Use vector-mode source operand.
+ 
+ 2025-12-02  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* config/riscv/riscv-vector-builtins.cc
+ 	(function_builder::add_function): Remove placeholder_p parameter.
+ 	(function_builder::add_unique_function): Update call.
+ 	(function_builder::add_overloaded_function): Likewise.
+ 	* config/riscv/riscv-vector-builtins.h
+ 	(function_builder::add_function): Update declaration.
+ 
+ 2025-12-02  Robin Dapp  <rdapp@ventanamicro.com>
+ 
+ 	* tree-vect-stmts.cc (vectorizable_scan_store): Pass loop_lens
+ 	to vect_get_data_ptr_increment.
+ 
+ 2025-12-02  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/122868
+ 	* tree-vect-stmts.cc (vectorizable_load): Don't hoist loop invariant
+ 	conditional loads unless in header.
+ 
+ 2025-12-02  Kugan Vivekanandarajah  <kvivekananda@nvidia.com>
+ 
+ 	* ipa-inline.cc (inline_functions_by_afdo): Remove resetting bool inlined.
+ 
+ 2025-12-02  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR target/122912
+ 	* config/aarch64/t-aarch64 (TM_H): Add aarch64-tuning-enums.def.
+ 
+ 2025-12-02  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* hard-reg-set.h (hard_reg_set_iter_init): Drop unnecessary
+ 	increment of min.
+ 	(hard_reg_set_iter_set): Use ctz_hwi, and compute
+ 	word-advanced regno from word_no.
+ 	(hard_reg_set_iter_next): Only clear the cached LSB.
+ 
+ 2025-12-02  David Guillen Fandos  <david@davidgf.net>
+ 
+ 	* config/mips/mips.h (ISA_HAS_MADD_MSUB): Include allegrex.
+ 	* config/mips/mips.md: Tweak mul_acc_si/mul_sub_si to make it
+ 	work when MUL3 is not available.
+ 
+ 2025-12-02  David Guillen Fandos  <david@davidgf.net>
+ 
+ 	* config/mips/mips.h (ISA_HAS_WSBW): Defined a new macro.
+ 	* config/mips/mips.md (bswapsi2): Add new instruction.
+ 	(wsbwsi2): Replace with expand to support both wsbw and wsbh.
+ 
+ 2025-12-02  David Guillen Fandos  <david@davidgf.net>
+ 
+ 	* config/mips/mips.h (ISA_HAS_MIN_MAX): Defined a new macro.
+ 	* config/mips/mips.md (sminsi3): Defined a new instruction.
+ 	(smaxsi3): Defined a new instruction.
+ 
+ 2025-12-02  David Guillen Fandos  <david@davidgf.net>
+ 
+ 	* config/mips/mips-cpus.def (MIPS_CPU): Added a new CPU.
+ 	* config/mips/mips-tables.opt: Regenerated table.
+ 	* config/mips/mips.cc: Added cost table for the new CPU.
+ 	* config/mips/mips.h (TARGET_ALLEGREX): Defined a new macro.
+ 	(TUNE_ALLEGREX): Defined a new macro.
+ 	(ISA_HAS_CONDMOVE): Added Allegrex CPU to the list.
+ 	(ISA_HAS_LDC1_SDC1): Exclude Allegrex from the list.
+ 	(ISA_HAS_COND_TRAP): Exclude Allegrex from the list.
+ 	(ISA_HAS_COND_TRAPI): Exclude Allegrex from the list.
+ 	(ISA_HAS_CLZ_CLO): Added Allegrex CPU to the list.
+ 	(ISA_HAS_ROR): Added Allegrex CPU to the list.
+ 	(ISA_HAS_WSBH): Added Allegrex CPU to the list.
+ 	(ISA_HAS_SEB_SEH): Added Allegrex CPU to the list.
+ 	(ISA_HAS_EXT_INS): Added Allegrex CPU to the list.
+ 	(ISA_HAS_XFER_DELAY): Exclude Allegrex from the list.
+ 	(ISA_HAS_HILO_INTERLOCKS): Added Allegrex CPU to the list.
+ 	* config/mips/mips.md: Added Allegrex CPU as a new processor.
+ 	* doc/invoke.texi: Documented Allegrex as a new arch
+ 
+ 2025-12-02  Saurabh Jha  <saurabh.jha@arm.com>
+ 	    Radek Barton  <radek.barton@microsoft.com>
+ 
+ 	* config.gcc: Add new Makefile fragment and new object file.
+ 	* config/aarch64/aarch64-builtins.cc
+ 	(aarch64_ms_variadic_abi_init_builtins): Initialize builtin
+ 	variadic functions for aarch64-w64-mingw32.
+ 	* config/aarch64/aarch64-protos.h
+ 	(aarch64_ms_variadic_abi_init_builtins): Initialize builtin
+ 	variadic functions for aarch64-w64-mingw32.
+ 	* config/aarch64/aarch64.cc
+ 	(handle_aarch64_vector_pcs_attribute): Add support for
+ 	ARM_PCS_MS_VARIADIC.
+ 	(aarch64_ms_variadic_abi): Return descriptor to variadic
+ 	function call ABI for aarch64-w64-mingw32 target.
+ 	(aarch64_fntype_abi): Add support for variadic functions for
+ 	aarch64-w64-mingw32 target.
+ 	(aarch64_reg_save_mode): Add support for ARM_PCS_MS_VARIADIC.
+ 	(num_pcs_arg_regs): Add support for ARM_PCS_MS_VARIADIC.
+ 	(get_pcs_arg_reg): Add support for ARM_PCS_MS_VARIADIC.
+ 	(aarch64_arg_size): Returns size of argument.
+ 	(aarch64_ms_variadic_abi_layout_arg): aarch64-w64-mingw32
+ 	specific support for variadic ABI.
+ 	(aarch64_layout_arg): Add support for ARM_PCS_MS_VARIADIC.
+ 	(aarch64_function_arg): Implement TARGET_FUNCTION_ARG.
+ 	(aarch64_function_arg_advance): Add support for
+ 	ARM_PCS_MS_VARIADIC.
+ 	(aarch64_function_arg_regno_p): Add support for
+ 	ARM_PCS_MS_VARIADIC.
+ 	(aarch64_init_builtins): Add support for TARGET_AARCH64_MS_ABI.
+ 	(aarch64_ms_variadic_abi_build_builtin_va_list): Setup va_list
+ 	for aarch64-w64-mingw32.
+ 	(aarch64_build_builtin_va_list): Add support for
+ 	TARGET_AARCH64_MS_ABI.
+ 	(aarch64_ms_variadic_abi_expand_builtin_va_start): Implement
+ 	TARGET_BUILD_BUILTIN_VA_START.
+ 	(aarch64_setup_incoming_varargs): Implement
+ 	TARGET_SETUP_INCOMING_VARARGS.
+ 	(aarch64_mangle_type): Implement TARGET_MANGLE_TYPE.
+ 	(aarch64_variadic_abi_strict_argument_naming): Implement
+ 	TARGET_STRICT_ARGUMENT_NAMING.
+ 	* config/aarch64/aarch64.h
+ 	(aarch64_frame): Add new field
+ 	unaligned_saved_varargs_size.
+ 	(enum arm_pcs): Add new enum option
+ 	ARM_PCS_MS_VARIADIC.
+ 	* config/aarch64/cygming.h
+ 	(SUBTARGET_ATTRIBUTE_TABLE): Add support for ms_abi.
+ 	* config/mingw/winnt.cc
+ 	(aarch64_handle_ms_abi_attribute): Handle ms_abi attribue.
+ 	* config/mingw/winnt.h
+ 	(aarch64_handle_ms_abi_attribute): Handle ms_abi attribute.
+ 	* config/aarch64/aarch64-abi-ms-protos.h:
+ 	(aarch64_arg_partial_bytes): Declare.
+ 	(aarch64_ms_variadic_abi_canonical_va_list_type): Declare.
+ 	(aarch64_ms_variadic_abi_enum_va_list): Declare.
+ 	(aarch64_ms_variadic_abi_fn_abi_va_list): Implement
+ 	TARGET_FN_ABI_VA_LIST.
+ 	* config/aarch64/aarch64-abi-ms.cc:
+ 	(aarch64_arg_partial_bytes): Implement TARGET_ARG_PARTIAL_BYTES.
+ 	(aarch64_ms_variadic_abi_canonical_va_list_type): Implement
+ 	TARGET_CANONICAL_VA_LIST_TYPE.
+ 	(aarch64_ms_variadic_abi_enum_va_list): Implement
+ 	TARGET_ENUM_VA_LIST_P.
+ 	(aarch64_ms_variadic_abi_fn_abi_va_list): Implement
+ 	TARGET_FN_ABI_VA_LIST.
+ 	* config/aarch64/t-aarch64-mingw: New Makefile fragment.
+ 
+ 2025-12-02  Saurabh Jha  <saurabh.jha@arm.com>
+ 	    Radek Barton  <radek.barton@microsoft.com>
+ 	    Martin Vejbora  <mvejbora@microsoft.com>
+ 
+ 	* config/aarch64/aarch64-abi-ms.h
+ 	(TARGET_LONG_DOUBLE_128): Set this to 0.
+ 	* config/aarch64/aarch64.cc
+ 	(aarch64_scalar_mode_supported_p): Make long double 64 bits.
+ 	(aarch64_c_mode_for_floating_type): Return true for TFmode.
+ 	* config/aarch64/aarch64.h
+ 	(TARGET_LONG_DOUBLE_128): Set this to 1.
+ 
+ 2025-12-02  Saurabh Jha  <saurabh.jha@arm.com>
+ 
+ 	* config/aarch64/aarch64-abi-ms.h
+ 	(ASM_COMMENT_START): Specify start of comment.
+ 	(ASM_OUTPUT_TYPE_DIRECTIVE): Moved from aarch64-coff.h.
+ 	(ASM_DECLARE_FUNCTION_SIZE): Specify end of function as comment.
+ 	* config/aarch64/aarch64-coff.h
+ 	(ASM_OUTPUT_TYPE_DIRECTIVE): Moved to aarch64-abi-ms.h.
+ 	(ASM_DECLARE_FUNCTION_SIZE): Moved to aarch64-abi-ms.h.
+ 
+ 2025-12-01  Peter Bergner  <bergner@tenstorrent.com>
+ 
+ 	PR target/122942
+ 	* config/riscv/riscv-profiles.def (rva23s64): Add zifencei.
+ 	(rvb23s64): Likewise.
+ 
+ 2025-12-01  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* doc/install.texi (Downloading the source): Mention Algol 68.
+ 
+ 2025-12-01  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	PR target/122858
+ 	* config/arm/constraints.md (Ph): New constraint.
+ 	* config/arm/mve.md (mve_asrl_imm, mve_lsll_imm): Fix constraints
+ 	of operand 1 and handle 32 as special shift amount.
+ 
+ 2025-12-01  Robin Dapp  <rdapp@ventanamicro.com>
+ 
+ 	PR target/122652
+ 	* config/riscv/riscv-vsetvl.cc: Add nullptr check.
+ 
+ 2025-12-01  Paul-Antoine Arras  <parras@baylibre.com>
+ 
+ 	PR fortran/120505
+ 	* omp-low.cc (lower_omp_target): Set GOMP_MAP_IMPLICIT flag.
+ 
+ 2025-12-01  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/122906
+ 	* config/i386/i386-features.cc (ix86_emit_tls_call): Emit the
+ 	TLS call after deleted instructions.
+ 
+ 2025-11-30  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/115120
+ 	PR tree-optimization/119577
+ 	PR tree-optimization/119860
+ 	* tree-vect-loop-manip.cc (vect_can_advance_ivs_p): Check for nonlinear
+ 	mult induction and early break.
+ 	(vect_update_ivs_after_vectorizer): Support early break exits.
+ 	(vect_do_peeling): Support scalar IVs.
+ 	* tree-vect-loop.cc (vect_peel_nonlinear_iv_init): Support early break.
+ 	(vect_update_nonlinear_iv): use `unsigned_type_for` such that function
+ 	works for both vector and scalar types.
+ 	(vectorizable_induction, vectorizable_live_operation): Remove vector
+ 	early break IV code.
+ 	(vect_update_ivs_after_vectorizer_for_early_breaks): New.
+ 	(vect_transform_loop): Support new scalar IV for early break.
+ 	* tree-vect-slp.cc (vect_analyze_slp): Remove SLP build for early break
+ 	IVs.
+ 	* tree-vect-stmts.cc (vect_stmt_relevant_p): No longer mark early break
+ 	IVs as completely unused rather than used_only_live.  They no longer
+ 	contribute to the vector loop and so should not be analyzed.
+ 	(can_vectorize_live_stmts): Remove vector early vreak IV code.
+ 	* tree-vectorizer.h (LOOP_VINFO_EARLY_BRK_NITERS_VAR): New.
+ 	(class loop_vec_info): Add early_break_niters_var.
+ 
+ 2025-11-30  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* Makefile.in (OPT_URLS_HTML_DEPS): Add ga68/Option-Index.html.
+ 
+ 2025-11-30  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* doc/install.texi (Configuration): Mention algol68 option for
+ 	--enable-languages.
+ 	(Algol 68-Specific Options): New section.
+ 	* doc/sourcebuild.texi (Top Level): Add entry for libga68.
+ 
+ 2025-11-30  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* config/rs6000/rs6000-logue.cc (rs6000_output_function_epilogue):
+ 	Handle "GNU Algol 68" in language_string.
+ 
+ 2025-11-30  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* config/darwin.h: Adapt specs for libga68.a.
+ 
+ 2025-11-30  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* dwarf2out.cc: Set DW_LANG_Algol68 an DW_LNAME_Algol68.
+ 
+ 2025-11-30  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* common.opt: New option -static-libga68.
+ 	* common.opt.urls: Generate.
+ 	* gcc.cc: Handle OPT_static_libga68.
+ 	* regenerate-opt-urls.py (PER_LANGUAGE_OPTION_INDEXES): Add Algol68.
+ 
+ 2025-11-30  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* Makefile.def (libga68): New module.
+ 	(configure-target-libga68): Likewise.
+ 	* Makefile.tpl (GA68): Define.
+ 	(GA68_FOR_BUILD): Likewise.
+ 	(GA68FLAGS): Likewise.
+ 	* configure.ac (--enable-libga68): New option.
+ 	(--enable-algol68-gc): Likewise.
+ 	(GA68): Subst.
+ 	(GA68FLAGS): Likewise.
+ 	Invoke ACX_PROG_GA68.
+ 	* configure: Regenerate.
+ 	* Makefile.in: Likewise.
+ 
  2025-11-29  Sandra Loosemore  <sloosemore@baylibre.com>
  
  	* common.opt.urls: Regenerated.
diff -Nrcpad gcc-16-20251130/gcc/DATESTAMP gcc-16-20251207/gcc/DATESTAMP
*** gcc-16-20251130/gcc/DATESTAMP	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/DATESTAMP	Sun Dec  7 22:32:06 2025
***************
*** 1 ****
! 20251130
--- 1 ----
! 20251207
diff -Nrcpad gcc-16-20251130/gcc/ada/ChangeLog gcc-16-20251207/gcc/ada/ChangeLog
*** gcc-16-20251130/gcc/ada/ChangeLog	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/ada/ChangeLog	Sun Dec  7 22:32:06 2025
***************
*** 1,3 ****
--- 1,133 ----
+ 2025-12-06  Denis Mazzucato  <mazzucato@adacore.com>
+ 
+ 	* sem_attr.adb (Resolve_Attribute): Check if the reducer is a
+ 	procedure before giving the warning.
+ 
+ 2025-12-05  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* einfo.ads (Has_Unsigned_Base_Range_Aspect): Update documentation.
+ 	(Has_Modular_Operations): New synthesized predicate.
+ 	(Has_Overflow_Operations): New synthesized predicate.
+ 	* einfo-utils.ads (Has_Modular_Operations): New function.
+ 	(Has_Overflow_Operations): New function.
+ 	* einfo-utils.adb (Is_Modular_Integer_Type): Undo previous patch.
+ 	(Is_Signed_Integer_Type): Undo previous patch.
+ 	(Has_Modular_Operations): New function.
+ 	(Has_Overflow_Operations): New function.
+ 	* checks.adb (Determine_Range): Replace selected occurrences of calls to
+ 	Is_Modular_Integer_Type by calls to Has_Modular_Operations, and calls to
+ 	Is_Signed_Integer_Type by calls to Has Overflow_Operations.
+ 	(Enable_Range_Check): Ditto.
+ 	(Insert_Valid_Check): Ditto.
+ 	* exp_aggr.adb (Others_Check): Ditto.
+ 	* exp_attr.adb (Expand_N_Attribute_Reference [Attribute_Pred,
+ 	Attribute_Succ]): Ditto.
+ 	* exp_ch4.adb (Expand_Compare_Minimize_Eliminate_Overflow): Ditto.
+ 	(Size_In_Storage_Elements): Ditto.
+ 	(Expand_N_Op_Abs): Ditto.
+ 	(Expand_N_Op_Expon): Ditto.
+ 	(Expand_N_Op_Minus): Ditto.
+ 	(Expand_N_Op_Multiply): Ditto.
+ 	(Expand_N_Op_Subtract): Ditto.
+ 	* freeze.adb (Freeze_Entity): Ditto.
+ 	* sem_aggr.adb (Report_Null_Array_Constraint_Error): Ditto plus
+ 	report specific error for index with unsigned_base_range aspect.
+ 	* sem_attr.adb (Check_Modular_Integer_Type): Ditto.
+ 	(Analyze_Attribute [Attribute_Pred, Attribute_Succ, Attribute_
+ 	Range_Length, Attribute_Small, Attribute_Reduce]): Ditto.
+ 	* sem_ch12.adb (Instantiate_Type): Ditto.
+ 	(Validate_Formal_Type_Default): Ditto.
+ 	* sem_ch13.adb (Valid_Empty): Ditto.
+ 	* sem_ch2.adb (Analyze_Integer_Literal): Ditto.
+ 	* sem_ch3.adb (Unsigned_Base_Range_Type_Declaration): Set attribute
+ 	Has_Unsigned_Base_Range_Aspect on the implicit base, and set Etype
+ 	of its first subtype E_Modular_Integer_Subtype.
+ 	* sem_ch4.adb (Analyze_Call): Ditto.
+ 	* sem_eval.adb (Check_Non_Static_Context_For_Overflow): Ditto.
+ 	(Eval_Arithmetic_Op): Ditto.
+ 	(Eval_Integer_Literal): Ditto.
+ 	(Eval_Logical_Op): Ditto.
+ 	(Eval_Op_Expon): Ditto.
+ 	(Eval_Op_Not): Ditto.
+ 	(Eval_Unary_Op): Ditto.
+ 	(Fold_Shift): Ditto.
+ 	(Test_Expression_Is_Foldable): Ditto.
+ 	* sem_intr.adb (Check_Shift): Ditto.
+ 	* sem_prag.adb (Analyze_Pragma [Pragma_Unsigned_Base_Range]): Add
+ 	assertion.
+ 	* sem_res.adb (Resolve_Logical_Op): Ditto.
+ 	(Resolve_Unary_Op): Ditto.
+ 	(Set_String_Literal_Subtype): Ditto.
+ 	* sem_type.adb (Covers): Ditto.
+ 	(Specific_Type): Ditto.
+ 	(Valid_Boolean_Arg): Ditto.
+ 	* sem_util.adb (Wrong_Type): Ditto
+ 	* style.adb (Check_Boolean_Operator): Ditto.
+ 
+ 2025-12-05  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* doc/gnat_rm/representation_clauses_and_pragmas.rst: Improve table.
+ 	* gnat_rm.texi: Regenerate.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2025-12-05  Viljar Indus  <indus@adacore.com>
+ 
+ 	* sem_util.adb (Get_Cursor_Type): use the
+ 	specific type for classwide container checks.
+ 
+ 2025-12-05  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch12.adb (Remove_Parent): Only set the Is_Transient component
+ 	of the local scope stack entry.
+ 
+ 2025-12-05  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst
+ 	(-gnato??): Remove redundant/confusing doc on floating-point
+ 	overflow.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2025-12-05  Tonu Naks  <naks@adacore.com>
+ 
+ 	* adaint.c: use the _tsopen macro when opening RO file
+ 
+ 2025-12-05  Denis Mazzucato  <mazzucato@adacore.com>
+ 
+ 	* sem_attr.adb
+ 	(Analyze_Attribute): Set the type of the attribute expression only when
+ 	not ambiguous (it will later be resolved correctly). Emit an error in
+ 	case the type is limited.
+ 	(Resolve_Attribute): Emit an error if the reducer has no entity.
+ 	(Get_Value_Subtype): Try to resolve the Value_Subtype of the aggregate
+ 	expression, and if it succeeds, set the candidate reducer subprogram.
+ 	(Is_Reducer_Subprogram): Check whether the selected candidate has a
+ 	proper reducer profile.
+ 	(Make_Array_Type): Return simple array type to resolve the array
+ 	aggregate against it.
+ 	(Resolve_Attribute): Reimplement the resolution of Reduce attribute,
+ 	including its prefix.
+ 	* sem_res.adb (Resolve_Declare_Expression): Save and restore variables
+ 	that may be hidden by the local declaration. Only setting the new
+ 	entities is problematic when dealing with copied trees where the ref is
+ 	lost (eg. when resolving array aggregates).
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): Remove tricks to resolve
+ 	the reducer in case of faulty resolution as not needed anymore.
+ 
+ 2025-12-05  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR ada/115305
+ 	* Makefile.rtl: Use s-oslock__darwin instead of the Posix version.
+ 	* libgnat/s-oslock__darwin.ads: New file.
+ 
+ 2025-12-03  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/122960
+ 	* gcc-interface/Makefile.in (powerpc64-suse-linux): Remove kludge.
+ 
+ 2025-11-30  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* gcc-interface/lang.opt.urls: Regenerate.
+ 
  2025-11-27  Eric Botcazou  <ebotcazou@adacore.com>
  
  	* exp_ch6.adb (Expand_Actuals): Do not create activation chain and
diff -Nrcpad gcc-16-20251130/gcc/ada/Makefile.rtl gcc-16-20251207/gcc/ada/Makefile.rtl
*** gcc-16-20251130/gcc/ada/Makefile.rtl	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/ada/Makefile.rtl	Sun Dec  7 22:32:06 2025
*************** ifeq ($(strip $(filter-out darwin%,$(tar
*** 3036,3042 ****
      s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
      s-osinte.adb<libgnarl/s-osinte__darwin.adb \
      s-osinte.ads<libgnarl/s-osinte__darwin.ads \
!     s-oslock.ads<libgnat/s-oslock__posix.ads \
      s-taprop.adb<libgnarl/s-taprop__posix.adb \
      s-taspri.ads<libgnarl/s-taspri__posix.ads \
      g-sercom.adb<libgnat/g-sercom__linux.adb \
--- 3036,3042 ----
      s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
      s-osinte.adb<libgnarl/s-osinte__darwin.adb \
      s-osinte.ads<libgnarl/s-osinte__darwin.ads \
!     s-oslock.ads<libgnat/s-oslock__darwin.ads \
      s-taprop.adb<libgnarl/s-taprop__posix.adb \
      s-taspri.ads<libgnarl/s-taspri__posix.ads \
      g-sercom.adb<libgnat/g-sercom__linux.adb \
diff -Nrcpad gcc-16-20251130/gcc/ada/adaint.c gcc-16-20251207/gcc/ada/adaint.c
*** gcc-16-20251130/gcc/ada/adaint.c	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/ada/adaint.c	Sun Dec  7 22:32:06 2025
*************** extern "C" {
*** 179,184 ****
--- 179,185 ----
  #elif defined (__MINGW32__) || defined (__CYGWIN__)
  
  #include "mingw32.h"
+ #include "share.h"
  
  /* Current code page and CCS encoding to use, set in rtinit.c.  */
  UINT __gnat_current_codepage;
*************** __gnat_open_read (char *path, int fmode)
*** 940,946 ****
     TCHAR wpath[GNAT_MAX_PATH_LEN];
  
     S2WSC (wpath, path, GNAT_MAX_PATH_LEN);
!    fd = _topen (wpath, O_RDONLY | o_fmode, 0444);
   }
  #else
    fd = GNAT_OPEN (path, O_RDONLY | o_fmode);
--- 941,947 ----
     TCHAR wpath[GNAT_MAX_PATH_LEN];
  
     S2WSC (wpath, path, GNAT_MAX_PATH_LEN);
!    fd = _tsopen (wpath, O_RDONLY | o_fmode, _SH_DENYNO, 0444);
   }
  #else
    fd = GNAT_OPEN (path, O_RDONLY | o_fmode);
diff -Nrcpad gcc-16-20251130/gcc/ada/checks.adb gcc-16-20251207/gcc/ada/checks.adb
*** gcc-16-20251130/gcc/ada/checks.adb	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/ada/checks.adb	Sun Dec  7 22:32:06 2025
*************** package body Checks is
*** 5532,5540 ****
           --  bound, because that means the result could wrap.
           --  Same applies for the lower bound if it is negative.
  
!          if Is_Modular_Integer_Type (Typ)
!            and then not Has_Unsigned_Base_Range_Aspect (Btyp)
!          then
              if Lor > Lo and then Hir <= Hbound then
                 Lo := Lor;
              end if;
--- 5532,5538 ----
           --  bound, because that means the result could wrap.
           --  Same applies for the lower bound if it is negative.
  
!          if Has_Modular_Operations (Typ) then
              if Lor > Lo and then Hir <= Hbound then
                 Lo := Lor;
              end if;
*************** package body Checks is
*** 6263,6273 ****
        if Overflow_Checks_Suppressed (Etype (N)) then
           return;
  
!       --  Nothing to do for unsigned integer types, which do not overflow
  
!       elsif Is_Modular_Integer_Type (Typ)
!         and then not Has_Unsigned_Base_Range_Aspect (Typ)
!       then
           return;
        end if;
  
--- 6261,6269 ----
        if Overflow_Checks_Suppressed (Etype (N)) then
           return;
  
!       --  Nothing to do for modular integer types, which do not overflow
  
!       elsif Has_Modular_Operations (Typ) then
           return;
        end if;
  
*************** package body Checks is
*** 8158,8166 ****
  
        elsif Nkind (Expr) = N_Selected_Component
          and then Present (Component_Clause (Entity (Selector_Name (Expr))))
!         and then
!           (Is_Modular_Integer_Type (Typ)
!              and then not Has_Unsigned_Base_Range_Aspect (Base_Type (Typ)))
          and then Modulus (Typ) = 2 ** Esize (Entity (Selector_Name (Expr)))
        then
           return;
--- 8154,8160 ----
  
        elsif Nkind (Expr) = N_Selected_Component
          and then Present (Component_Clause (Entity (Selector_Name (Expr))))
!         and then Has_Modular_Operations (Typ)
          and then Modulus (Typ) = 2 ** Esize (Entity (Selector_Name (Expr)))
        then
           return;
diff -Nrcpad gcc-16-20251130/gcc/ada/doc/gnat_rm/representation_clauses_and_pragmas.rst gcc-16-20251207/gcc/ada/doc/gnat_rm/representation_clauses_and_pragmas.rst
*** gcc-16-20251130/gcc/ada/doc/gnat_rm/representation_clauses_and_pragmas.rst	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/ada/doc/gnat_rm/representation_clauses_and_pragmas.rst	Sun Dec  7 22:32:06 2025
***************
*** 1,5 ****
--- 1,8 ----
  .. role:: switch(samp)
  
+ .. role:: ada(code)
+    :language: ada
+ 
  .. _Representation_Clauses_and_Pragmas:
  
  **********************************
*************** description of the ``Object_Size`` attri
*** 560,583 ****
  To get a feel for the difference, consider the following examples (note
  that in each case the base is ``Short_Short_Integer`` with a size of 8):
  
! +---------------------------------------------+-------------+-------------+
! |Type or subtype declaration                  | Object_Size |   Value_Size|
! +=============================================+=============+=============+
! |``type x1 is range 0 .. 5;``                 |  8          |    3        |
! +---------------------------------------------+-------------+-------------+
! |``type x2 is range 0 .. 5;``                 | 16          |   12        |
! |``for x2'size use 12;``                      |             |             |
! +---------------------------------------------+-------------+-------------+
! |``subtype x3 is x2 range 0 .. 3;``           | 16          |    2        |
! +---------------------------------------------+-------------+-------------+
! |``subtype x4 is x2'base range 0 .. 10;``     |  8          |    4        |
! +---------------------------------------------+-------------+-------------+
! |``dynamic : x2'Base range -64 .. +63;``      |             |             |
! +---------------------------------------------+-------------+-------------+
! |``subtype x5 is x2 range 0 .. dynamic;``     | 16          |    3*       |
! +---------------------------------------------+-------------+-------------+
! |``subtype x6 is x2'base range 0 .. dynamic;``|  8          |    7*       |
! +---------------------------------------------+-------------+-------------+
  
  Note: the entries marked '*' are not actually specified by the Ada
  Reference Manual, which has nothing to say about size in the dynamic
--- 563,586 ----
  To get a feel for the difference, consider the following examples (note
  that in each case the base is ``Short_Short_Integer`` with a size of 8):
  
! +------------------------------------------------+-------------+-------------+
! |Type or subtype declaration                     | Object_Size |   Value_Size|
! +================================================+=============+=============+
! |:ada:`type X1 is range 0 .. 5;`                 |  8          |    3        |
! +------------------------------------------------+-------------+-------------+
! |:ada:`type X2 is range 0 .. 5;                  | 16          |   12        |
! |for X2'Size use 12;`                            |             |             |
! +------------------------------------------------+-------------+-------------+
! |:ada:`subtype X3 is X2 range 0 .. 3;`           | 16          |    2        |
! +------------------------------------------------+-------------+-------------+
! |:ada:`subtype X4 is X2'Base range 0 .. 10;`     |  8          |    4        |
! +------------------------------------------------+-------------+-------------+
! |:ada:`Dynamic : X2'Base range -64 .. +63;`      |             |             |
! +------------------------------------------------+-------------+-------------+
! |:ada:`subtype X5 is X2 range 0 .. Dynamic;`     | 16          |    3*       |
! +------------------------------------------------+-------------+-------------+
! |:ada:`subtype X6 is X2'Base range 0 .. Dynamic;`|  8          |    7*       |
! +------------------------------------------------+-------------+-------------+
  
  Note: the entries marked '*' are not actually specified by the Ada
  Reference Manual, which has nothing to say about size in the dynamic
diff -Nrcpad gcc-16-20251130/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst gcc-16-20251207/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst
*** gcc-16-20251130/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst	Sun Dec  7 22:32:06 2025
*************** switches refine this default behavior.
*** 5414,5478 ****
    This switch controls the mode used for computing intermediate
    arithmetic integer operations, and also enables overflow checking.
    For a full description of overflow mode and checking control, see
!   the 'Overflow Check Handling in GNAT' appendix in this
    User's Guide.
  
-   Overflow checks are always enabled by this switch. The argument
-   controls the mode, using the codes
- 
- 
-   *1 = STRICT*
-     In STRICT mode, intermediate operations are always done using the
-     base type, and overflow checking ensures that the result is within
-     the base type range.
- 
- 
-   *2 = MINIMIZED*
-     In MINIMIZED mode, overflows in intermediate operations are avoided
-     where possible by using a larger integer type for the computation
-     (typically ``Long_Long_Integer``). Overflow checking ensures that
-     the result fits in this larger integer type.
- 
- 
-   *3 = ELIMINATED*
-     In ELIMINATED mode, overflows in intermediate operations are avoided
-     by using multi-precision arithmetic. In this case, overflow checking
-     has no effect on intermediate operations (since overflow is impossible).
- 
-   If two digits are present after :switch:`-gnato` then the first digit
-   sets the mode for expressions outside assertions, and the second digit
-   sets the mode for expressions within assertions. Here assertions is used
-   in the technical sense (which includes for example precondition and
-   postcondition expressions).
- 
-   If one digit is present, the corresponding mode is applicable to both
-   expressions within and outside assertion expressions.
- 
-   If no digits are present, the default is to enable overflow checks
-   and set STRICT mode for both kinds of expressions. This is compatible
-   with the use of :switch:`-gnato` in previous versions of GNAT.
- 
-   .. index:: Machine_Overflows
- 
-   Note that the :switch:`-gnato??` switch does not affect the code generated
-   for any floating-point operations; it applies only to integer semantics.
-   For floating-point, GNAT has the ``Machine_Overflows``
-   attribute set to ``False`` and the normal mode of operation is to
-   generate IEEE NaN and infinite values on overflow or invalid operations
-   (such as dividing 0.0 by 0.0).
- 
-   The reason that we distinguish overflow checking from other kinds of
-   range constraint checking is that a failure of an overflow check, unlike
-   for example the failure of a range check, can result in an incorrect
-   value, but cannot cause random memory destruction (like an out of range
-   subscript), or a wild jump (from an out of range case value). Overflow
-   checking is also quite expensive in time and space, since in general it
-   requires the use of double length arithmetic.
- 
-   Note again that the default is :switch:`-gnato11` (equivalent to :switch:`-gnato1`),
-   so overflow checking is performed in STRICT mode by default.
- 
- 
  .. index:: -gnatE  (gcc)
  .. index:: Elaboration checks
  .. index:: Check, elaboration
--- 5414,5422 ----
    This switch controls the mode used for computing intermediate
    arithmetic integer operations, and also enables overflow checking.
    For a full description of overflow mode and checking control, see
!   the :ref:`Overflow_Check_Handling_in_GNAT` appendix in this
    User's Guide.
  
  .. index:: -gnatE  (gcc)
  .. index:: Elaboration checks
  .. index:: Check, elaboration
diff -Nrcpad gcc-16-20251130/gcc/ada/einfo-utils.adb gcc-16-20251207/gcc/ada/einfo-utils.adb
*** gcc-16-20251130/gcc/ada/einfo-utils.adb	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/ada/einfo-utils.adb	Sun Dec  7 22:32:06 2025
*************** package body Einfo.Utils is
*** 333,340 ****
  
     function Is_Modular_Integer_Type             (Id : E) return B is
     begin
!       return Ekind (Id) in Modular_Integer_Kind
!         and then not Has_Unsigned_Base_Range_Aspect (Base_Type (Id));
     end Is_Modular_Integer_Type;
  
     function Is_Named_Access_Type                (Id : E) return B is
--- 333,339 ----
  
     function Is_Modular_Integer_Type             (Id : E) return B is
     begin
!       return Ekind (Id) in Modular_Integer_Kind;
     end Is_Modular_Integer_Type;
  
     function Is_Named_Access_Type                (Id : E) return B is
*************** package body Einfo.Utils is
*** 394,403 ****
  
     function Is_Signed_Integer_Type              (Id : E) return B is
     begin
!       return Ekind (Id) in Signed_Integer_Kind
!         or else
!           (Ekind (Id) in Modular_Integer_Kind
!              and then Has_Unsigned_Base_Range_Aspect (Base_Type (Id)));
     end Is_Signed_Integer_Type;
  
     function Is_Subprogram                       (Id : E) return B is
--- 393,399 ----
  
     function Is_Signed_Integer_Type              (Id : E) return B is
     begin
!       return Ekind (Id) in Signed_Integer_Kind;
     end Is_Signed_Integer_Type;
  
     function Is_Subprogram                       (Id : E) return B is
*************** package body Einfo.Utils is
*** 1260,1265 ****
--- 1256,1271 ----
          and then Present (Limited_View (Id));
     end Has_Limited_View;
  
+    ----------------------------
+    -- Has_Modular_Operations --
+    ----------------------------
+ 
+    function Has_Modular_Operations (Id : E) return B is
+    begin
+       return Is_Modular_Integer_Type (Id)
+         and then not Has_Unsigned_Base_Range_Aspect (Base_Type (Id));
+    end Has_Modular_Operations;
+ 
     --------------------------
     -- Has_Non_Limited_View --
     --------------------------
*************** package body Einfo.Utils is
*** 1349,1354 ****
--- 1355,1371 ----
            and then Nkind (Node (First_Elmt (Constits))) = N_Null;
     end Has_Null_Visible_Refinement;
  
+    -----------------------------
+    -- Has_Overflow_Operations --
+    -----------------------------
+ 
+    function Has_Overflow_Operations (Id : E) return B is
+    begin
+       return Is_Signed_Integer_Type (Id)
+         or else (Is_Modular_Integer_Type (Id)
+                    and then Has_Unsigned_Base_Range_Aspect (Base_Type (Id)));
+    end Has_Overflow_Operations;
+ 
     --------------------
     -- Has_Unmodified --
     --------------------
diff -Nrcpad gcc-16-20251130/gcc/ada/einfo-utils.ads gcc-16-20251207/gcc/ada/einfo-utils.ads
*** gcc-16-20251130/gcc/ada/einfo-utils.ads	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/ada/einfo-utils.ads	Sun Dec  7 22:32:06 2025
*************** package Einfo.Utils is
*** 186,196 ****
--- 186,198 ----
     function Has_Interrupt_Handler (Id : E) return B;
     function Has_Invariants (Id : E) return B;
     function Has_Limited_View (Id : E) return B;
+    function Has_Modular_Operations (Id : E) return B with Inline;
     function Has_Non_Limited_View (Id : E) return B with Inline;
     function Has_Non_Null_Abstract_State (Id : E) return B;
     function Has_Non_Null_Visible_Refinement (Id : E) return B;
     function Has_Null_Abstract_State (Id : E) return B;
     function Has_Null_Visible_Refinement (Id : E) return B;
+    function Has_Overflow_Operations (Id : E) return B with Inline;
     function Implementation_Base_Type (Id : E) return E;
     function Is_Boolean_Type (Id : E) return B with Inline;
     function Is_Constant_Object (Id : E) return B with Inline;
diff -Nrcpad gcc-16-20251130/gcc/ada/einfo.ads gcc-16-20251207/gcc/ada/einfo.ads
*** gcc-16-20251130/gcc/ada/einfo.ads	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/ada/einfo.ads	Sun Dec  7 22:32:06 2025
*************** package Einfo is
*** 2186,2194 ****
  --       inherited in certain contexts.
  
  --    Has_Unsigned_Base_Range_Aspect [base type only]
! --       Defined in integer types. Set in the base type of an integer type for
! --       which the type has an Unsigned_Base_Range of True (whether by an
! --       aspect_specification, a pragma, or inheritance).
  
  --    Has_Visible_Refinement
  --       Defined in E_Abstract_State entities. Set when a state has at least
--- 2186,2206 ----
  --       inherited in certain contexts.
  
  --    Has_Unsigned_Base_Range_Aspect [base type only]
! --       Defined in modular integer types. This flag is set in the base type
! --       generated by the frontend for a signed integer type that has an
! --       Unsigned_Base_Range of True (whether by an aspect_specification, a
! --       pragma, or inheritance).
! 
! --    Has_Modular_Operations (synthesized)
! --       Defined in modular integer types. True when the type has modular
! --       operations; that is, when its base type does NOT have the attribute
! --       Unsigned_Base_Range_Aspect set to True.
! 
! --    Has_Overflow_Operations (synthesized)
! --       Defined in signed integer types and modular integer types. True when
! --       the type has overflow operations; that is, when the type is either
! --       (1) a signed integer type, or (2) a modular integer type and its
! --       base type has the attribute Unsigned_Base_Range_Aspect.
  
  --    Has_Visible_Refinement
  --       Defined in E_Abstract_State entities. Set when a state has at least
*************** package Einfo is
*** 5782,5787 ****
--- 5794,5801 ----
     --    Non_Binary_Modulus                   (base type only)
     --    Has_Biased_Representation
     --    Has_Shift_Operator                   (base type only)
+    --    Has_Modular_Operations               (synth)
+    --    Has_Overflow_Operations              (synth)
     --    Has_Unsigned_Base_Range_Aspect       (base type only)
     --    No_Predicate_On_Actual
     --    No_Dynamic_Predicate_On_Actual
*************** package Einfo is
*** 6169,6176 ****
     --    Scalar_Range
     --    Static_Discrete_Predicate
     --    Has_Biased_Representation
     --    Has_Shift_Operator                   (base type only)
-    --    Has_Unsigned_Base_Range_Aspect       (base type only)
     --    No_Predicate_On_Actual
     --    No_Dynamic_Predicate_On_Actual
     --    Type_Low_Bound                       (synth)
--- 6183,6190 ----
     --    Scalar_Range
     --    Static_Discrete_Predicate
     --    Has_Biased_Representation
+    --    Has_Overflow_Operations              (synth)
     --    Has_Shift_Operator                   (base type only)
     --    No_Predicate_On_Actual
     --    No_Dynamic_Predicate_On_Actual
     --    Type_Low_Bound                       (synth)
diff -Nrcpad gcc-16-20251130/gcc/ada/exp_aggr.adb gcc-16-20251207/gcc/ada/exp_aggr.adb
*** gcc-16-20251130/gcc/ada/exp_aggr.adb	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/ada/exp_aggr.adb	Sun Dec  7 22:32:06 2025
*************** package body Exp_Aggr is
*** 5777,5783 ****
                     Left_Opnd  => Duplicate_Subexpr_Move_Checks (Aggr_Lo),
                     Right_Opnd => Duplicate_Subexpr_Move_Checks (Aggr_Hi));
  
!             elsif Is_Signed_Integer_Type (Ind_Typ) then
                 Cond :=
                   Make_Op_Gt (Loc,
                     Left_Opnd  =>
--- 5777,5783 ----
                     Left_Opnd  => Duplicate_Subexpr_Move_Checks (Aggr_Lo),
                     Right_Opnd => Duplicate_Subexpr_Move_Checks (Aggr_Hi));
  
!             elsif Has_Overflow_Operations (Ind_Typ) then
                 Cond :=
                   Make_Op_Gt (Loc,
                     Left_Opnd  =>
diff -Nrcpad gcc-16-20251130/gcc/ada/exp_attr.adb gcc-16-20251207/gcc/ada/exp_attr.adb
*** gcc-16-20251130/gcc/ada/exp_attr.adb	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/ada/exp_attr.adb	Sun Dec  7 22:32:06 2025
*************** package body Exp_Attr is
*** 6222,6228 ****
  
           --  For modular types, nothing to do (no overflow, since wraps)
  
!          elsif Is_Modular_Integer_Type (Ptyp) then
              null;
  
           --  For other types, if argument is marked as needing a range check or
--- 6222,6228 ----
  
           --  For modular types, nothing to do (no overflow, since wraps)
  
!          elsif Has_Modular_Operations (Ptyp) then
              null;
  
           --  For other types, if argument is marked as needing a range check or
*************** package body Exp_Attr is
*** 6594,6608 ****
              E2  : constant Node_Id   := Next (E1);
              Bnn : constant Entity_Id := Make_Temporary (Loc, 'B', N);
  
!             Accum_Typ : Entity_Id := Empty;
              New_Loop  : Node_Id;
  
              function Build_Stat (Comp : Node_Id) return Node_Id;
              --  The reducer can be a function, a procedure whose first
              --  parameter is in-out, or an attribute that is a function,
              --  which (for now) can only be Min/Max. This subprogram
!             --  builds the corresponding computation for the generated loop
!             --  and retrieves the accumulator type as per RM 4.5.10(19/5).
  
              ----------------
              -- Build_Stat --
--- 6594,6607 ----
              E2  : constant Node_Id   := Next (E1);
              Bnn : constant Entity_Id := Make_Temporary (Loc, 'B', N);
  
!             Accum_Typ : constant Entity_Id := Etype (N);
              New_Loop  : Node_Id;
  
              function Build_Stat (Comp : Node_Id) return Node_Id;
              --  The reducer can be a function, a procedure whose first
              --  parameter is in-out, or an attribute that is a function,
              --  which (for now) can only be Min/Max. This subprogram
!             --  builds the corresponding computation for the generated loop.
  
              ----------------
              -- Build_Stat --
*************** package body Exp_Attr is
*** 6613,6619 ****
  
              begin
                 if Nkind (E1) = N_Attribute_Reference then
-                   Accum_Typ := Base_Type (Entity (Prefix (E1)));
                    Stat := Make_Assignment_Statement (Loc,
                              Name => New_Occurrence_Of (Bnn, Loc),
                              Expression => Make_Attribute_Reference (Loc,
--- 6612,6617 ----
*************** package body Exp_Attr is
*** 6624,6630 ****
                                  Comp)));
  
                 elsif Ekind (Entity (E1)) = E_Procedure then
-                   Accum_Typ := Etype (First_Formal (Entity (E1)));
                    Stat := Make_Procedure_Call_Statement (Loc,
                              Name => New_Occurrence_Of (Entity (E1), Loc),
                                 Parameter_Associations => New_List (
--- 6622,6627 ----
*************** package body Exp_Attr is
*** 6632,6638 ****
                                   Comp));
  
                 else
-                   Accum_Typ := Etype (Entity (E1));
                    Stat := Make_Assignment_Statement (Loc,
                              Name => New_Occurrence_Of (Bnn, Loc),
                              Expression => Make_Function_Call (Loc,
--- 6629,6634 ----
*************** package body Exp_Attr is
*** 6642,6669 ****
                                  Comp)));
                 end if;
  
-                --  Try to cope if E1 is wrong because it is an overloaded
-                --  subprogram that happens to be the first candidate
-                --  on a homonym chain, but that resolution candidate turns
-                --  out to be the wrong one.
-                --  This workaround usually gets the right type, but it can
-                --  yield the wrong subtype of that type.
- 
-                if Base_Type (Accum_Typ) /= Base_Type (Etype (N)) then
-                   Accum_Typ := Etype (N);
-                end if;
- 
-                --  Try to cope with wrong E1 when Etype (N) doesn't help
-                if Is_Universal_Numeric_Type (Accum_Typ) then
-                   if Is_Array_Type (Etype (Prefix (N))) then
-                      Accum_Typ := Component_Type (Etype (Prefix (N)));
-                   else
-                      --  Further hackery can be added here when there is a
-                      --  demonstrated need.
-                      null;
-                   end if;
-                end if;
- 
                 return Stat;
              end Build_Stat;
  
--- 6638,6643 ----
*************** package body Exp_Attr is
*** 7523,7529 ****
  
           --  For modular types, nothing to do (no overflow, since wraps)
  
!          elsif Is_Modular_Integer_Type (Ptyp) then
              null;
  
           --  For other types, if argument is marked as needing a range check or
--- 7497,7503 ----
  
           --  For modular types, nothing to do (no overflow, since wraps)
  
!          elsif Has_Modular_Operations (Ptyp) then
              null;
  
           --  For other types, if argument is marked as needing a range check or
diff -Nrcpad gcc-16-20251130/gcc/ada/exp_ch4.adb gcc-16-20251207/gcc/ada/exp_ch4.adb
*** gcc-16-20251130/gcc/ada/exp_ch4.adb	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/ada/exp_ch4.adb	Sun Dec  7 22:32:06 2025
*************** package body Exp_Ch4 is
*** 2240,2246 ****
           --  Note: Entity for the comparison may be wrong, but it's not worth
           --  the effort to change it, since the back end does not use it.
  
!          if Is_Signed_Integer_Type (Ltype)
             and then Base_Type (Ltype) = Base_Type (Rtype)
           then
              return;
--- 2240,2246 ----
           --  Note: Entity for the comparison may be wrong, but it's not worth
           --  the effort to change it, since the back end does not use it.
  
!          if Has_Overflow_Operations (Ltype)
             and then Base_Type (Ltype) = Base_Type (Rtype)
           then
              return;
*************** package body Exp_Ch4 is
*** 4386,4392 ****
  
           for J in 1 .. Number_Dimensions (E) loop
  
!             if not Is_Modular_Integer_Type (Etype (Idx)) then
                 Len :=
                   Make_Attribute_Reference (Loc,
                     Prefix         => New_Occurrence_Of (E, Loc),
--- 4386,4392 ----
  
           for J in 1 .. Number_Dimensions (E) loop
  
!             if not Has_Modular_Operations (Etype (Idx)) then
                 Len :=
                   Make_Attribute_Reference (Loc,
                     Prefix         => New_Occurrence_Of (E, Loc),
*************** package body Exp_Ch4 is
*** 7825,7831 ****
  
        --  Deal with software overflow checking
  
!       if Is_Signed_Integer_Type (Typ)
          and then Do_Overflow_Check (N)
        then
           --  The only case to worry about is when the argument is equal to the
--- 7825,7831 ----
  
        --  Deal with software overflow checking
  
!       if Has_Overflow_Operations (Typ)
          and then Do_Overflow_Check (N)
        then
           --  The only case to worry about is when the argument is equal to the
*************** package body Exp_Ch4 is
*** 7898,7908 ****
        --  Arithmetic overflow checks for signed integer/fixed point types,
        --  and signed integer types with unsigned base range aspect.
  
!       if Is_Signed_Integer_Type (Typ)
          or else Is_Fixed_Point_Type (Typ)
-         or else
-           (Is_Modular_Integer_Type (Typ)
-             and then Has_Unsigned_Base_Range_Aspect (Base_Type (Typ)))
        then
           Apply_Arithmetic_Overflow_Check (N);
           return;
--- 7898,7905 ----
        --  Arithmetic overflow checks for signed integer/fixed point types,
        --  and signed integer types with unsigned base range aspect.
  
!       if Has_Overflow_Operations (Typ)
          or else Is_Fixed_Point_Type (Typ)
        then
           Apply_Arithmetic_Overflow_Check (N);
           return;
*************** package body Exp_Ch4 is
*** 9073,9079 ****
              --  therefore we might need to generate an overflow check here
              --  if the type is signed.
  
!             if Is_Signed_Integer_Type (Typ) and then Ovflo then
                 declare
                    OK : Boolean;
                    Lo : Uint;
--- 9070,9076 ----
              --  therefore we might need to generate an overflow check here
              --  if the type is signed.
  
!             if Has_Overflow_Operations (Typ) and then Ovflo then
                 declare
                    OK : Boolean;
                    Lo : Uint;
*************** package body Exp_Ch4 is
*** 9112,9118 ****
  
        --  First deal with modular case
  
!       if Is_Modular_Integer_Type (Rtyp) then
  
           --  Nonbinary modular case, we call the special exponentiation
           --  routine for the nonbinary case, converting the argument to
--- 9109,9115 ----
  
        --  First deal with modular case
  
!       if Has_Modular_Operations (Rtyp) then
  
           --  Nonbinary modular case, we call the special exponentiation
           --  routine for the nonbinary case, converting the argument to
*************** package body Exp_Ch4 is
*** 9173,9179 ****
        --  checks are required, and one when they are not required, since there
        --  is a real gain in omitting checks on many machines.
  
!       elsif Is_Signed_Integer_Type (Rtyp) then
           if Esize (Rtyp) <= Standard_Integer_Size then
              Etyp := Standard_Integer;
  
--- 9170,9176 ----
        --  checks are required, and one when they are not required, since there
        --  is a real gain in omitting checks on many machines.
  
!       elsif Has_Overflow_Operations (Rtyp) then
           if Esize (Rtyp) <= Standard_Integer_Size then
              Etyp := Standard_Integer;
  
*************** package body Exp_Ch4 is
*** 9494,9504 ****
        end if;
  
        if not Backend_Overflow_Checks_On_Target
!          and then
!            (Is_Signed_Integer_Type (Typ)
!               or else
!                 (Is_Modular_Integer_Type (Typ)
!                    and then Has_Unsigned_Base_Range_Aspect (Base_Type (Typ))))
           and then Do_Overflow_Check (N)
        then
           --  Software overflow checking expands -expr into (0 - expr)
--- 9491,9497 ----
        end if;
  
        if not Backend_Overflow_Checks_On_Target
!          and then Has_Overflow_Operations (Typ)
           and then Do_Overflow_Check (N)
        then
           --  Software overflow checking expands -expr into (0 - expr)
*************** package body Exp_Ch4 is
*** 9809,9815 ****
              --  If the result is modular, perform the reduction of the result
              --  appropriately.
  
!             if Is_Modular_Integer_Type (Typ)
                and then not Non_Binary_Modulus (Typ)
              then
                 Rewrite (N,
--- 9802,9808 ----
              --  If the result is modular, perform the reduction of the result
              --  appropriately.
  
!             if Has_Modular_Operations (Typ)
                and then not Non_Binary_Modulus (Typ)
              then
                 Rewrite (N,
*************** package body Exp_Ch4 is
*** 9837,9843 ****
        --  Same processing for the operands the other way round
  
        elsif Lp2 then
!          if Is_Modular_Integer_Type (Typ)
             and then not Non_Binary_Modulus (Typ)
           then
              Rewrite (N,
--- 9830,9836 ----
        --  Same processing for the operands the other way round
  
        elsif Lp2 then
!          if Has_Modular_Operations (Typ)
             and then not Non_Binary_Modulus (Typ)
           then
              Rewrite (N,
*************** package body Exp_Ch4 is
*** 9922,9932 ****
  
        --  Non-fixed point cases, check software overflow checking required
  
!       elsif Is_Signed_Integer_Type (Etype (N))
!         or else
!           (Is_Modular_Integer_Type (Typ)
!             and then Has_Unsigned_Base_Range_Aspect (Base_Type (Typ)))
!       then
           Apply_Arithmetic_Overflow_Check (N);
        end if;
  
--- 9915,9921 ----
  
        --  Non-fixed point cases, check software overflow checking required
  
!       elsif Has_Overflow_Operations (Etype (N)) then
           Apply_Arithmetic_Overflow_Check (N);
        end if;
  
*************** package body Exp_Ch4 is
*** 10493,10503 ****
        --  Arithmetic overflow checks for signed integer/fixed point types,
        --  and signed integer types with unsigned base range aspect.
  
!       if Is_Signed_Integer_Type (Typ)
          or else Is_Fixed_Point_Type (Typ)
-         or else
-           (Is_Modular_Integer_Type (Typ)
-             and then Has_Unsigned_Base_Range_Aspect (Base_Type (Typ)))
        then
           Apply_Arithmetic_Overflow_Check (N);
        end if;
--- 10482,10489 ----
        --  Arithmetic overflow checks for signed integer/fixed point types,
        --  and signed integer types with unsigned base range aspect.
  
!       if Has_Overflow_Operations (Typ)
          or else Is_Fixed_Point_Type (Typ)
        then
           Apply_Arithmetic_Overflow_Check (N);
        end if;
diff -Nrcpad gcc-16-20251130/gcc/ada/freeze.adb gcc-16-20251207/gcc/ada/freeze.adb
*** gcc-16-20251130/gcc/ada/freeze.adb	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/ada/freeze.adb	Sun Dec  7 22:32:06 2025
*************** package body Freeze is
*** 7713,7719 ****
           elsif Is_Integer_Type (E) then
              Adjust_Esize_For_Alignment (E);
  
!             if Is_Modular_Integer_Type (E) then
                 --  Standard_Address has been built with the assumption that its
                 --  modulus was System_Address_Size, but this is not a universal
                 --  property and may need to be corrected.
--- 7713,7719 ----
           elsif Is_Integer_Type (E) then
              Adjust_Esize_For_Alignment (E);
  
!             if Has_Modular_Operations (E) then
                 --  Standard_Address has been built with the assumption that its
                 --  modulus was System_Address_Size, but this is not a universal
                 --  property and may need to be corrected.
diff -Nrcpad gcc-16-20251130/gcc/ada/gcc-interface/Makefile.in gcc-16-20251207/gcc/ada/gcc-interface/Makefile.in
*** gcc-16-20251130/gcc/ada/gcc-interface/Makefile.in	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/ada/gcc-interface/Makefile.in	Sun Dec  7 22:32:06 2025
*************** ifeq ($(strip $(filter-out x86_64 linux-
*** 358,368 ****
    endif
  endif
  
- # The SuSE PowerPC64/Linux compiler is actually a 32-bit PowerPC compiler
- ifeq ($(strip $(filter-out powerpc64 suse linux%, $(target_cpu) $(target_vendor) $(target_os))),)
-   target_cpu:=powerpc
- endif
- 
  # Configuration of host tools
  
  # Under linux, host tools need to be linked with -ldl
--- 358,363 ----
diff -Nrcpad gcc-16-20251130/gcc/ada/gnat_rm.texi gcc-16-20251207/gcc/ada/gnat_rm.texi
*** gcc-16-20251130/gcc/ada/gnat_rm.texi	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/ada/gnat_rm.texi	Sun Dec  7 22:32:06 2025
***************
*** 19,25 ****
  
  @copying
  @quotation
! GNAT Reference Manual , Nov 18, 2025
  
  AdaCore
  
--- 19,25 ----
  
  @copying
  @quotation
! GNAT Reference Manual , Dec 05, 2025
  
  AdaCore
  
*************** To get a feel for the difference, consid
*** 19606,19612 ****
  that in each case the base is @code{Short_Short_Integer} with a size of 8):
  
  
! @multitable {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} {xxxxxxxxxxxxxxx} {xxxxxxxxxxxxxxx} 
  @headitem
  
  Type or subtype declaration
--- 19606,19612 ----
  that in each case the base is @code{Short_Short_Integer} with a size of 8):
  
  
! @multitable {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} {xxxxxxxxxxxxxxx} {xxxxxxxxxxxxxxx} 
  @headitem
  
  Type or subtype declaration
*************** Value_Size
*** 19621,19627 ****
  
  @item
  
! @code{type x1 is range 0 .. 5;}
  
  @tab
  
--- 19621,19627 ----
  
  @item
  
! @code{type X1 is range 0 .. 5;}
  
  @tab
  
*************** Value_Size
*** 19633,19640 ****
  
  @item
  
! @code{type x2 is range 0 .. 5;}
! @code{for x2'size use 12;}
  
  @tab
  
--- 19633,19640 ----
  
  @item
  
! @code{type X2 is range 0 .. 5;
! for X2'Size use 12;}
  
  @tab
  
*************** Value_Size
*** 19646,19652 ****
  
  @item
  
! @code{subtype x3 is x2 range 0 .. 3;}
  
  @tab
  
--- 19646,19652 ----
  
  @item
  
! @code{subtype X3 is X2 range 0 .. 3;}
  
  @tab
  
*************** Value_Size
*** 19658,19664 ****
  
  @item
  
! @code{subtype x4 is x2'base range 0 .. 10;}
  
  @tab
  
--- 19658,19664 ----
  
  @item
  
! @code{subtype X4 is X2'Base range 0 .. 10;}
  
  @tab
  
*************** Value_Size
*** 19670,19676 ****
  
  @item
  
! @code{dynamic : x2'Base range -64 .. +63;}
  
  @tab
  
--- 19670,19676 ----
  
  @item
  
! @code{Dynamic : X2'Base range -64 .. +63;}
  
  @tab
  
*************** Value_Size
*** 19678,19684 ****
  
  @item
  
! @code{subtype x5 is x2 range 0 .. dynamic;}
  
  @tab
  
--- 19678,19684 ----
  
  @item
  
! @code{subtype X5 is X2 range 0 .. Dynamic;}
  
  @tab
  
*************** Value_Size
*** 19690,19696 ****
  
  @item
  
! @code{subtype x6 is x2'base range 0 .. dynamic;}
  
  @tab
  
--- 19690,19696 ----
  
  @item
  
! @code{subtype X6 is X2'Base range 0 .. Dynamic;}
  
  @tab
  
diff -Nrcpad gcc-16-20251130/gcc/ada/gnat_ugn.texi gcc-16-20251207/gcc/ada/gnat_ugn.texi
*** gcc-16-20251130/gcc/ada/gnat_ugn.texi	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/ada/gnat_ugn.texi	Sun Dec  7 22:32:06 2025
***************
*** 19,25 ****
  
  @copying
  @quotation
! GNAT User's Guide for Native Platforms , Nov 27, 2025
  
  AdaCore
  
--- 19,25 ----
  
  @copying
  @quotation
! GNAT User's Guide for Native Platforms , Dec 05, 2025
  
  AdaCore
  
*************** This switch cancels the effect of a prev
*** 14356,14422 ****
  This switch controls the mode used for computing intermediate
  arithmetic integer operations, and also enables overflow checking.
  For a full description of overflow mode and checking control, see
! the ‘Overflow Check Handling in GNAT’ appendix in this
  User’s Guide.
- 
- Overflow checks are always enabled by this switch. The argument
- controls the mode, using the codes
- 
- 
- @table @asis
- 
- @item `1 = STRICT'
- 
- In STRICT mode, intermediate operations are always done using the
- base type, and overflow checking ensures that the result is within
- the base type range.
- 
- @item `2 = MINIMIZED'
- 
- In MINIMIZED mode, overflows in intermediate operations are avoided
- where possible by using a larger integer type for the computation
- (typically @code{Long_Long_Integer}). Overflow checking ensures that
- the result fits in this larger integer type.
- 
- @item `3 = ELIMINATED'
- 
- In ELIMINATED mode, overflows in intermediate operations are avoided
- by using multi-precision arithmetic. In this case, overflow checking
- has no effect on intermediate operations (since overflow is impossible).
- @end table
- 
- If two digits are present after @code{-gnato} then the first digit
- sets the mode for expressions outside assertions, and the second digit
- sets the mode for expressions within assertions. Here assertions is used
- in the technical sense (which includes for example precondition and
- postcondition expressions).
- 
- If one digit is present, the corresponding mode is applicable to both
- expressions within and outside assertion expressions.
- 
- If no digits are present, the default is to enable overflow checks
- and set STRICT mode for both kinds of expressions. This is compatible
- with the use of @code{-gnato} in previous versions of GNAT.
- 
- @geindex Machine_Overflows
- 
- Note that the @code{-gnato??} switch does not affect the code generated
- for any floating-point operations; it applies only to integer semantics.
- For floating-point, GNAT has the @code{Machine_Overflows}
- attribute set to @code{False} and the normal mode of operation is to
- generate IEEE NaN and infinite values on overflow or invalid operations
- (such as dividing 0.0 by 0.0).
- 
- The reason that we distinguish overflow checking from other kinds of
- range constraint checking is that a failure of an overflow check, unlike
- for example the failure of a range check, can result in an incorrect
- value, but cannot cause random memory destruction (like an out of range
- subscript), or a wild jump (from an out of range case value). Overflow
- checking is also quite expensive in time and space, since in general it
- requires the use of double length arithmetic.
- 
- Note again that the default is @code{-gnato11} (equivalent to @code{-gnato1}),
- so overflow checking is performed in STRICT mode by default.
  @end table
  
  @geindex -gnatE (gcc)
--- 14356,14363 ----
  This switch controls the mode used for computing intermediate
  arithmetic integer operations, and also enables overflow checking.
  For a full description of overflow mode and checking control, see
! the @ref{fa,,Overflow Check Handling in GNAT} appendix in this
  User’s Guide.
  @end table
  
  @geindex -gnatE (gcc)
*************** checks) or @code{Unsuppress} (to add bac
*** 14463,14469 ****
  the program source.
  
  @node Using gcc for Syntax Checking,Using gcc for Semantic Checking,Run-Time Checks,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat id20}@anchor{fa}@anchor{gnat_ugn/building_executable_programs_with_gnat using-gcc-for-syntax-checking}@anchor{fb}
  @subsection Using @code{gcc} for Syntax Checking
  
  
--- 14404,14410 ----
  the program source.
  
  @node Using gcc for Syntax Checking,Using gcc for Semantic Checking,Run-Time Checks,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat id20}@anchor{fb}@anchor{gnat_ugn/building_executable_programs_with_gnat using-gcc-for-syntax-checking}@anchor{fc}
  @subsection Using @code{gcc} for Syntax Checking
  
  
*************** together. This is primarily used by the
*** 14520,14526 ****
  @end table
  
  @node Using gcc for Semantic Checking,Compiling Different Versions of Ada,Using gcc for Syntax Checking,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat id21}@anchor{fc}@anchor{gnat_ugn/building_executable_programs_with_gnat using-gcc-for-semantic-checking}@anchor{fd}
  @subsection Using @code{gcc} for Semantic Checking
  
  
--- 14461,14467 ----
  @end table
  
  @node Using gcc for Semantic Checking,Compiling Different Versions of Ada,Using gcc for Syntax Checking,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat id21}@anchor{fd}@anchor{gnat_ugn/building_executable_programs_with_gnat using-gcc-for-semantic-checking}@anchor{fe}
  @subsection Using @code{gcc} for Semantic Checking
  
  
*************** and specifications where a separate body
*** 14567,14573 ****
  @end table
  
  @node Compiling Different Versions of Ada,Character Set Control,Using gcc for Semantic Checking,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat compiling-different-versions-of-ada}@anchor{6}@anchor{gnat_ugn/building_executable_programs_with_gnat id22}@anchor{fe}
  @subsection Compiling Different Versions of Ada
  
  
--- 14508,14514 ----
  @end table
  
  @node Compiling Different Versions of Ada,Character Set Control,Using gcc for Semantic Checking,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat compiling-different-versions-of-ada}@anchor{6}@anchor{gnat_ugn/building_executable_programs_with_gnat id22}@anchor{ff}
  @subsection Compiling Different Versions of Ada
  
  
*************** extensions enabled by this switch, see t
*** 14732,14738 ****
  @end table
  
  @node Character Set Control,File Naming Control,Compiling Different Versions of Ada,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat character-set-control}@anchor{32}@anchor{gnat_ugn/building_executable_programs_with_gnat id23}@anchor{ff}
  @subsection Character Set Control
  
  
--- 14673,14679 ----
  @end table
  
  @node Character Set Control,File Naming Control,Compiling Different Versions of Ada,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat character-set-control}@anchor{32}@anchor{gnat_ugn/building_executable_programs_with_gnat id23}@anchor{100}
  @subsection Character Set Control
  
  
*************** comments are ended by an appropriate (CR
*** 14959,14965 ****
  This is a common mode for many programs with foreign language comments.
  
  @node File Naming Control,Subprogram Inlining Control,Character Set Control,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat file-naming-control}@anchor{100}@anchor{gnat_ugn/building_executable_programs_with_gnat id24}@anchor{101}
  @subsection File Naming Control
  
  
--- 14900,14906 ----
  This is a common mode for many programs with foreign language comments.
  
  @node File Naming Control,Subprogram Inlining Control,Character Set Control,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat file-naming-control}@anchor{101}@anchor{gnat_ugn/building_executable_programs_with_gnat id24}@anchor{102}
  @subsection File Naming Control
  
  
*************** For the source file naming rules, @ref{3
*** 14979,14985 ****
  @end table
  
  @node Subprogram Inlining Control,Auxiliary Output Control,File Naming Control,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat id25}@anchor{102}@anchor{gnat_ugn/building_executable_programs_with_gnat subprogram-inlining-control}@anchor{103}
  @subsection Subprogram Inlining Control
  
  
--- 14920,14926 ----
  @end table
  
  @node Subprogram Inlining Control,Auxiliary Output Control,File Naming Control,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat id25}@anchor{103}@anchor{gnat_ugn/building_executable_programs_with_gnat subprogram-inlining-control}@anchor{104}
  @subsection Subprogram Inlining Control
  
  
*************** If you specify this switch the compiler
*** 15012,15018 ****
  creating an extra source dependency for the resulting object file, and
  where possible, the call will be inlined.
  For further details on when inlining is possible
! see @ref{104,,Inlining of Subprograms}.
  @end table
  
  @geindex -gnatN (gcc)
--- 14953,14959 ----
  creating an extra source dependency for the resulting object file, and
  where possible, the call will be inlined.
  For further details on when inlining is possible
! see @ref{105,,Inlining of Subprograms}.
  @end table
  
  @geindex -gnatN (gcc)
*************** inlining, but that is no longer the case
*** 15032,15038 ****
  @end table
  
  @node Auxiliary Output Control,Debugging Control,Subprogram Inlining Control,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat auxiliary-output-control}@anchor{105}@anchor{gnat_ugn/building_executable_programs_with_gnat id26}@anchor{106}
  @subsection Auxiliary Output Control
  
  
--- 14973,14979 ----
  @end table
  
  @node Auxiliary Output Control,Debugging Control,Subprogram Inlining Control,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat auxiliary-output-control}@anchor{106}@anchor{gnat_ugn/building_executable_programs_with_gnat id26}@anchor{107}
  @subsection Auxiliary Output Control
  
  
*************** An object file has been generated for ev
*** 15102,15108 ****
  @end table
  
  @node Debugging Control,Exception Handling Control,Auxiliary Output Control,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat debugging-control}@anchor{107}@anchor{gnat_ugn/building_executable_programs_with_gnat id27}@anchor{108}
  @subsection Debugging Control
  
  
--- 15043,15049 ----
  @end table
  
  @node Debugging Control,Exception Handling Control,Auxiliary Output Control,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat debugging-control}@anchor{108}@anchor{gnat_ugn/building_executable_programs_with_gnat id27}@anchor{109}
  @subsection Debugging Control
  
  
*************** encodings for the rest.
*** 15455,15461 ****
  @end table
  
  @node Exception Handling Control,Units to Sources Mapping Files,Debugging Control,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat exception-handling-control}@anchor{109}@anchor{gnat_ugn/building_executable_programs_with_gnat id28}@anchor{10a}
  @subsection Exception Handling Control
  
  
--- 15396,15402 ----
  @end table
  
  @node Exception Handling Control,Units to Sources Mapping Files,Debugging Control,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat exception-handling-control}@anchor{10a}@anchor{gnat_ugn/building_executable_programs_with_gnat id28}@anchor{10b}
  @subsection Exception Handling Control
  
  
*************** and @code{gnatbind}. Passing this option
*** 15527,15533 ****
  through the compilation and binding steps.
  
  @node Units to Sources Mapping Files,Code Generation Control,Exception Handling Control,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat id29}@anchor{10b}@anchor{gnat_ugn/building_executable_programs_with_gnat units-to-sources-mapping-files}@anchor{eb}
  @subsection Units to Sources Mapping Files
  
  
--- 15468,15474 ----
  through the compilation and binding steps.
  
  @node Units to Sources Mapping Files,Code Generation Control,Exception Handling Control,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat id29}@anchor{10c}@anchor{gnat_ugn/building_executable_programs_with_gnat units-to-sources-mapping-files}@anchor{eb}
  @subsection Units to Sources Mapping Files
  
  
*************** mapping file and communicates it to the
*** 15579,15585 ****
  @end table
  
  @node Code Generation Control,,Units to Sources Mapping Files,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat code-generation-control}@anchor{10c}@anchor{gnat_ugn/building_executable_programs_with_gnat id30}@anchor{10d}
  @subsection Code Generation Control
  
  
--- 15520,15526 ----
  @end table
  
  @node Code Generation Control,,Units to Sources Mapping Files,Compiler Switches
! @anchor{gnat_ugn/building_executable_programs_with_gnat code-generation-control}@anchor{10d}@anchor{gnat_ugn/building_executable_programs_with_gnat id30}@anchor{10e}
  @subsection Code Generation Control
  
  
*************** there is no point in using @code{-m} swi
*** 15608,15614 ****
  unless you actually see a performance improvement.
  
  @node Linker Switches,Binding with gnatbind,Compiler Switches,Building Executable Programs with GNAT
! @anchor{gnat_ugn/building_executable_programs_with_gnat id31}@anchor{10e}@anchor{gnat_ugn/building_executable_programs_with_gnat linker-switches}@anchor{10f}
  @section Linker Switches
  
  
--- 15549,15555 ----
  unless you actually see a performance improvement.
  
  @node Linker Switches,Binding with gnatbind,Compiler Switches,Building Executable Programs with GNAT
! @anchor{gnat_ugn/building_executable_programs_with_gnat id31}@anchor{10f}@anchor{gnat_ugn/building_executable_programs_with_gnat linker-switches}@anchor{110}
  @section Linker Switches
  
  
*************** platforms.
*** 15628,15634 ****
  @end table
  
  @node Binding with gnatbind,Linking with gnatlink,Linker Switches,Building Executable Programs with GNAT
! @anchor{gnat_ugn/building_executable_programs_with_gnat binding-with-gnatbind}@anchor{cb}@anchor{gnat_ugn/building_executable_programs_with_gnat id32}@anchor{110}
  @section Binding with @code{gnatbind}
  
  
--- 15569,15575 ----
  @end table
  
  @node Binding with gnatbind,Linking with gnatlink,Linker Switches,Building Executable Programs with GNAT
! @anchor{gnat_ugn/building_executable_programs_with_gnat binding-with-gnatbind}@anchor{cb}@anchor{gnat_ugn/building_executable_programs_with_gnat id32}@anchor{111}
  @section Binding with @code{gnatbind}
  
  
*************** to be read by the @code{gnatlink} utilit
*** 15679,15685 ****
  @end menu
  
  @node Running gnatbind,Switches for gnatbind,,Binding with gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat id33}@anchor{111}@anchor{gnat_ugn/building_executable_programs_with_gnat running-gnatbind}@anchor{112}
  @subsection Running @code{gnatbind}
  
  
--- 15620,15626 ----
  @end menu
  
  @node Running gnatbind,Switches for gnatbind,,Binding with gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat id33}@anchor{112}@anchor{gnat_ugn/building_executable_programs_with_gnat running-gnatbind}@anchor{113}
  @subsection Running @code{gnatbind}
  
  
*************** Ada code provided the @code{-g} switch i
*** 15764,15770 ****
  @code{gnatbind} and @code{gnatlink}.
  
  @node Switches for gnatbind,Command-Line Access,Running gnatbind,Binding with gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat id34}@anchor{113}@anchor{gnat_ugn/building_executable_programs_with_gnat switches-for-gnatbind}@anchor{114}
  @subsection Switches for @code{gnatbind}
  
  
--- 15705,15711 ----
  @code{gnatbind} and @code{gnatlink}.
  
  @node Switches for gnatbind,Command-Line Access,Running gnatbind,Binding with gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat id34}@anchor{114}@anchor{gnat_ugn/building_executable_programs_with_gnat switches-for-gnatbind}@anchor{115}
  @subsection Switches for @code{gnatbind}
  
  
*************** Currently the same as @code{-Ea}.
*** 15959,15965 ****
  
  @item @code{-f`elab-order'}
  
! Force elaboration order. For further details see @ref{115,,Elaboration Control}
  and @ref{10,,Elaboration Order Handling in GNAT}.
  @end table
  
--- 15900,15906 ----
  
  @item @code{-f`elab-order'}
  
! Force elaboration order. For further details see @ref{116,,Elaboration Control}
  and @ref{10,,Elaboration Order Handling in GNAT}.
  @end table
  
*************** Legacy elaboration order model enabled.
*** 16008,16014 ****
  @item @code{-H32}
  
  Use 32-bit allocations for @code{__gnat_malloc} (and thus for access types).
! For further details see @ref{116,,Dynamic Allocation Control}.
  @end table
  
  @geindex -H64 (gnatbind)
--- 15949,15955 ----
  @item @code{-H32}
  
  Use 32-bit allocations for @code{__gnat_malloc} (and thus for access types).
! For further details see @ref{117,,Dynamic Allocation Control}.
  @end table
  
  @geindex -H64 (gnatbind)
*************** For further details see @ref{116,,Dynami
*** 16021,16027 ****
  @item @code{-H64}
  
  Use 64-bit allocations for @code{__gnat_malloc} (and thus for access types).
! For further details see @ref{116,,Dynamic Allocation Control}.
  
  @geindex -I (gnatbind)
  
--- 15962,15968 ----
  @item @code{-H64}
  
  Use 64-bit allocations for @code{__gnat_malloc} (and thus for access types).
! For further details see @ref{117,,Dynamic Allocation Control}.
  
  @geindex -I (gnatbind)
  
*************** Enable dynamic stack usage, with @code{n
*** 16310,16316 ****
  at program termination. A result is generated when a task
  terminates. Results that can’t be stored are displayed on the fly, at
  task termination. This option is currently not supported on Itanium
! platforms. (See @ref{117,,Dynamic Stack Usage Analysis} for details.)
  
  @geindex -v (gnatbind)
  
--- 16251,16257 ----
  at program termination. A result is generated when a task
  terminates. Results that can’t be stored are displayed on the fly, at
  task termination. This option is currently not supported on Itanium
! platforms. (See @ref{118,,Dynamic Stack Usage Analysis} for details.)
  
  @geindex -v (gnatbind)
  
*************** no arguments.
*** 16390,16396 ****
  @end menu
  
  @node Consistency-Checking Modes,Binder Error Message Control,,Switches for gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat consistency-checking-modes}@anchor{118}@anchor{gnat_ugn/building_executable_programs_with_gnat id35}@anchor{119}
  @subsubsection Consistency-Checking Modes
  
  
--- 16331,16337 ----
  @end menu
  
  @node Consistency-Checking Modes,Binder Error Message Control,,Switches for gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat consistency-checking-modes}@anchor{119}@anchor{gnat_ugn/building_executable_programs_with_gnat id35}@anchor{11a}
  @subsubsection Consistency-Checking Modes
  
  
*************** case the checking against sources has al
*** 16444,16450 ****
  @end table
  
  @node Binder Error Message Control,Elaboration Control,Consistency-Checking Modes,Switches for gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat binder-error-message-control}@anchor{11a}@anchor{gnat_ugn/building_executable_programs_with_gnat id36}@anchor{11b}
  @subsubsection Binder Error Message Control
  
  
--- 16385,16391 ----
  @end table
  
  @node Binder Error Message Control,Elaboration Control,Consistency-Checking Modes,Switches for gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat binder-error-message-control}@anchor{11b}@anchor{gnat_ugn/building_executable_programs_with_gnat id36}@anchor{11c}
  @subsubsection Binder Error Message Control
  
  
*************** with extreme care.
*** 16554,16560 ****
  @end table
  
  @node Elaboration Control,Output Control,Binder Error Message Control,Switches for gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat elaboration-control}@anchor{115}@anchor{gnat_ugn/building_executable_programs_with_gnat id37}@anchor{11c}
  @subsubsection Elaboration Control
  
  
--- 16495,16501 ----
  @end table
  
  @node Elaboration Control,Output Control,Binder Error Message Control,Switches for gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat elaboration-control}@anchor{116}@anchor{gnat_ugn/building_executable_programs_with_gnat id37}@anchor{11d}
  @subsubsection Elaboration Control
  
  
*************** debugging/experimental use.
*** 16639,16645 ****
  @end table
  
  @node Output Control,Dynamic Allocation Control,Elaboration Control,Switches for gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat id38}@anchor{11d}@anchor{gnat_ugn/building_executable_programs_with_gnat output-control}@anchor{11e}
  @subsubsection Output Control
  
  
--- 16580,16586 ----
  @end table
  
  @node Output Control,Dynamic Allocation Control,Elaboration Control,Switches for gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat id38}@anchor{11e}@anchor{gnat_ugn/building_executable_programs_with_gnat output-control}@anchor{11f}
  @subsubsection Output Control
  
  
*************** be used to improve code generation in so
*** 16720,16726 ****
  @end table
  
  @node Dynamic Allocation Control,Binding with Non-Ada Main Programs,Output Control,Switches for gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat dynamic-allocation-control}@anchor{116}@anchor{gnat_ugn/building_executable_programs_with_gnat id39}@anchor{11f}
  @subsubsection Dynamic Allocation Control
  
  
--- 16661,16667 ----
  @end table
  
  @node Dynamic Allocation Control,Binding with Non-Ada Main Programs,Output Control,Switches for gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat dynamic-allocation-control}@anchor{117}@anchor{gnat_ugn/building_executable_programs_with_gnat id39}@anchor{120}
  @subsubsection Dynamic Allocation Control
  
  
*************** unless explicitly overridden by a @code{
*** 16746,16752 ****
  These switches are only effective on VMS platforms.
  
  @node Binding with Non-Ada Main Programs,Binding Programs with No Main Subprogram,Dynamic Allocation Control,Switches for gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat binding-with-non-ada-main-programs}@anchor{7f}@anchor{gnat_ugn/building_executable_programs_with_gnat id40}@anchor{120}
  @subsubsection Binding with Non-Ada Main Programs
  
  
--- 16687,16693 ----
  These switches are only effective on VMS platforms.
  
  @node Binding with Non-Ada Main Programs,Binding Programs with No Main Subprogram,Dynamic Allocation Control,Switches for gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat binding-with-non-ada-main-programs}@anchor{7f}@anchor{gnat_ugn/building_executable_programs_with_gnat id40}@anchor{121}
  @subsubsection Binding with Non-Ada Main Programs
  
  
*************** side effect is that this could be the wr
*** 16842,16848 ****
  where floating point computation could be broken after this call.
  
  @node Binding Programs with No Main Subprogram,,Binding with Non-Ada Main Programs,Switches for gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat binding-programs-with-no-main-subprogram}@anchor{121}@anchor{gnat_ugn/building_executable_programs_with_gnat id41}@anchor{122}
  @subsubsection Binding Programs with No Main Subprogram
  
  
--- 16783,16789 ----
  where floating point computation could be broken after this call.
  
  @node Binding Programs with No Main Subprogram,,Binding with Non-Ada Main Programs,Switches for gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat binding-programs-with-no-main-subprogram}@anchor{122}@anchor{gnat_ugn/building_executable_programs_with_gnat id41}@anchor{123}
  @subsubsection Binding Programs with No Main Subprogram
  
  
*************** the binder switch
*** 16873,16879 ****
  @end table
  
  @node Command-Line Access,Search Paths for gnatbind,Switches for gnatbind,Binding with gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat command-line-access}@anchor{123}@anchor{gnat_ugn/building_executable_programs_with_gnat id42}@anchor{124}
  @subsection Command-Line Access
  
  
--- 16814,16820 ----
  @end table
  
  @node Command-Line Access,Search Paths for gnatbind,Switches for gnatbind,Binding with gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat command-line-access}@anchor{124}@anchor{gnat_ugn/building_executable_programs_with_gnat id42}@anchor{125}
  @subsection Command-Line Access
  
  
*************** required, your main program must set @co
*** 16903,16909 ****
  it.
  
  @node Search Paths for gnatbind,Examples of gnatbind Usage,Command-Line Access,Binding with gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat id43}@anchor{125}@anchor{gnat_ugn/building_executable_programs_with_gnat search-paths-for-gnatbind}@anchor{77}
  @subsection Search Paths for @code{gnatbind}
  
  
--- 16844,16850 ----
  it.
  
  @node Search Paths for gnatbind,Examples of gnatbind Usage,Command-Line Access,Binding with gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat id43}@anchor{126}@anchor{gnat_ugn/building_executable_programs_with_gnat search-paths-for-gnatbind}@anchor{77}
  @subsection Search Paths for @code{gnatbind}
  
  
*************** in compiling sources from multiple direc
*** 17007,17013 ****
  development environments much more flexible.
  
  @node Examples of gnatbind Usage,,Search Paths for gnatbind,Binding with gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat examples-of-gnatbind-usage}@anchor{126}@anchor{gnat_ugn/building_executable_programs_with_gnat id44}@anchor{127}
  @subsection Examples of @code{gnatbind} Usage
  
  
--- 16948,16954 ----
  development environments much more flexible.
  
  @node Examples of gnatbind Usage,,Search Paths for gnatbind,Binding with gnatbind
! @anchor{gnat_ugn/building_executable_programs_with_gnat examples-of-gnatbind-usage}@anchor{127}@anchor{gnat_ugn/building_executable_programs_with_gnat id44}@anchor{128}
  @subsection Examples of @code{gnatbind} Usage
  
  
*************** since gnatlink will not be able to find
*** 17036,17042 ****
  @end quotation
  
  @node Linking with gnatlink,Using the GNU make Utility,Binding with gnatbind,Building Executable Programs with GNAT
! @anchor{gnat_ugn/building_executable_programs_with_gnat id45}@anchor{128}@anchor{gnat_ugn/building_executable_programs_with_gnat linking-with-gnatlink}@anchor{cc}
  @section Linking with @code{gnatlink}
  
  
--- 16977,16983 ----
  @end quotation
  
  @node Linking with gnatlink,Using the GNU make Utility,Binding with gnatbind,Building Executable Programs with GNAT
! @anchor{gnat_ugn/building_executable_programs_with_gnat id45}@anchor{129}@anchor{gnat_ugn/building_executable_programs_with_gnat linking-with-gnatlink}@anchor{cc}
  @section Linking with @code{gnatlink}
  
  
*************** generated by the @code{gnatbind} to dete
*** 17057,17063 ****
  @end menu
  
  @node Running gnatlink,Switches for gnatlink,,Linking with gnatlink
! @anchor{gnat_ugn/building_executable_programs_with_gnat id46}@anchor{129}@anchor{gnat_ugn/building_executable_programs_with_gnat running-gnatlink}@anchor{12a}
  @subsection Running @code{gnatlink}
  
  
--- 16998,17004 ----
  @end menu
  
  @node Running gnatlink,Switches for gnatlink,,Linking with gnatlink
! @anchor{gnat_ugn/building_executable_programs_with_gnat id46}@anchor{12a}@anchor{gnat_ugn/building_executable_programs_with_gnat running-gnatlink}@anchor{12b}
  @subsection Running @code{gnatlink}
  
  
*************** $ gnatlink my_prog -Wl,-Map,MAPFILE
*** 17116,17123 ****
  
  Using @code{linker options} it is possible to set the program stack and
  heap size.
! See @ref{12b,,Setting Stack Size from gnatlink} and
! @ref{12c,,Setting Heap Size from gnatlink}.
  
  @code{gnatlink} determines the list of objects required by the Ada
  program and prepends them to the list of objects passed to the linker.
--- 17057,17064 ----
  
  Using @code{linker options} it is possible to set the program stack and
  heap size.
! See @ref{12c,,Setting Stack Size from gnatlink} and
! @ref{12d,,Setting Heap Size from gnatlink}.
  
  @code{gnatlink} determines the list of objects required by the Ada
  program and prepends them to the list of objects passed to the linker.
*************** program and prepends them to the list of
*** 17126,17132 ****
  presented to the linker.
  
  @node Switches for gnatlink,,Running gnatlink,Linking with gnatlink
! @anchor{gnat_ugn/building_executable_programs_with_gnat id47}@anchor{12d}@anchor{gnat_ugn/building_executable_programs_with_gnat switches-for-gnatlink}@anchor{12e}
  @subsection Switches for @code{gnatlink}
  
  
--- 17067,17073 ----
  presented to the linker.
  
  @node Switches for gnatlink,,Running gnatlink,Linking with gnatlink
! @anchor{gnat_ugn/building_executable_programs_with_gnat id47}@anchor{12e}@anchor{gnat_ugn/building_executable_programs_with_gnat switches-for-gnatlink}@anchor{12f}
  @subsection Switches for @code{gnatlink}
  
  
*************** switch.
*** 17321,17327 ****
  @end table
  
  @node Using the GNU make Utility,GNAT with the LLVM Back End,Linking with gnatlink,Building Executable Programs with GNAT
! @anchor{gnat_ugn/building_executable_programs_with_gnat id48}@anchor{12f}@anchor{gnat_ugn/building_executable_programs_with_gnat using-the-gnu-make-utility}@anchor{71}
  @section Using the GNU @code{make} Utility
  
  
--- 17262,17268 ----
  @end table
  
  @node Using the GNU make Utility,GNAT with the LLVM Back End,Linking with gnatlink,Building Executable Programs with GNAT
! @anchor{gnat_ugn/building_executable_programs_with_gnat id48}@anchor{130}@anchor{gnat_ugn/building_executable_programs_with_gnat using-the-gnu-make-utility}@anchor{71}
  @section Using the GNU @code{make} Utility
  
  
*************** is the same, these examples use some adv
*** 17346,17352 ****
  @end menu
  
  @node Using gnatmake in a Makefile,Automatically Creating a List of Directories,,Using the GNU make Utility
! @anchor{gnat_ugn/building_executable_programs_with_gnat id49}@anchor{130}@anchor{gnat_ugn/building_executable_programs_with_gnat using-gnatmake-in-a-makefile}@anchor{131}
  @subsection Using gnatmake in a Makefile
  
  
--- 17287,17293 ----
  @end menu
  
  @node Using gnatmake in a Makefile,Automatically Creating a List of Directories,,Using the GNU make Utility
! @anchor{gnat_ugn/building_executable_programs_with_gnat id49}@anchor{131}@anchor{gnat_ugn/building_executable_programs_with_gnat using-gnatmake-in-a-makefile}@anchor{132}
  @subsection Using gnatmake in a Makefile
  
  
*************** the appropriate directories.
*** 17365,17371 ****
  
  Note that you should also read the example on how to automatically
  create the list of directories
! (@ref{132,,Automatically Creating a List of Directories})
  which might help you in case your project has a lot of subdirectories.
  
  @example
--- 17306,17312 ----
  
  Note that you should also read the example on how to automatically
  create the list of directories
! (@ref{133,,Automatically Creating a List of Directories})
  which might help you in case your project has a lot of subdirectories.
  
  @example
*************** clean::
*** 17445,17451 ****
  @end example
  
  @node Automatically Creating a List of Directories,Generating the Command Line Switches,Using gnatmake in a Makefile,Using the GNU make Utility
! @anchor{gnat_ugn/building_executable_programs_with_gnat automatically-creating-a-list-of-directories}@anchor{132}@anchor{gnat_ugn/building_executable_programs_with_gnat id50}@anchor{133}
  @subsection Automatically Creating a List of Directories
  
  
--- 17386,17392 ----
  @end example
  
  @node Automatically Creating a List of Directories,Generating the Command Line Switches,Using gnatmake in a Makefile,Using the GNU make Utility
! @anchor{gnat_ugn/building_executable_programs_with_gnat automatically-creating-a-list-of-directories}@anchor{133}@anchor{gnat_ugn/building_executable_programs_with_gnat id50}@anchor{134}
  @subsection Automatically Creating a List of Directories
  
  
*************** DIRS := $@{shell find $@{ROOT_DIRECTORY@
*** 17518,17529 ****
  @end example
  
  @node Generating the Command Line Switches,Overcoming Command Line Length Limits,Automatically Creating a List of Directories,Using the GNU make Utility
! @anchor{gnat_ugn/building_executable_programs_with_gnat generating-the-command-line-switches}@anchor{134}@anchor{gnat_ugn/building_executable_programs_with_gnat id51}@anchor{135}
  @subsection Generating the Command Line Switches
  
  
  Once you have created the list of directories as explained in the
! previous section (@ref{132,,Automatically Creating a List of Directories}),
  you can easily generate the command line arguments to pass to gnatmake.
  
  For the sake of completeness, this example assumes that the source path
--- 17459,17470 ----
  @end example
  
  @node Generating the Command Line Switches,Overcoming Command Line Length Limits,Automatically Creating a List of Directories,Using the GNU make Utility
! @anchor{gnat_ugn/building_executable_programs_with_gnat generating-the-command-line-switches}@anchor{135}@anchor{gnat_ugn/building_executable_programs_with_gnat id51}@anchor{136}
  @subsection Generating the Command Line Switches
  
  
  Once you have created the list of directories as explained in the
! previous section (@ref{133,,Automatically Creating a List of Directories}),
  you can easily generate the command line arguments to pass to gnatmake.
  
  For the sake of completeness, this example assumes that the source path
*************** all:
*** 17544,17550 ****
  @end example
  
  @node Overcoming Command Line Length Limits,,Generating the Command Line Switches,Using the GNU make Utility
! @anchor{gnat_ugn/building_executable_programs_with_gnat id52}@anchor{136}@anchor{gnat_ugn/building_executable_programs_with_gnat overcoming-command-line-length-limits}@anchor{137}
  @subsection Overcoming Command Line Length Limits
  
  
--- 17485,17491 ----
  @end example
  
  @node Overcoming Command Line Length Limits,,Generating the Command Line Switches,Using the GNU make Utility
! @anchor{gnat_ugn/building_executable_programs_with_gnat id52}@anchor{137}@anchor{gnat_ugn/building_executable_programs_with_gnat overcoming-command-line-length-limits}@anchor{138}
  @subsection Overcoming Command Line Length Limits
  
  
*************** even none on most systems).
*** 17559,17565 ****
  
  It assumes that you have created a list of directories in your Makefile,
  using one of the methods presented in
! @ref{132,,Automatically Creating a List of Directories}.
  For the sake of completeness, we assume that the object
  path (where the ALI files are found) is different from the sources patch.
  
--- 17500,17506 ----
  
  It assumes that you have created a list of directories in your Makefile,
  using one of the methods presented in
! @ref{133,,Automatically Creating a List of Directories}.
  For the sake of completeness, we assume that the object
  path (where the ALI files are found) is different from the sources patch.
  
*************** all:
*** 17602,17608 ****
  @end example
  
  @node GNAT with the LLVM Back End,,Using the GNU make Utility,Building Executable Programs with GNAT
! @anchor{gnat_ugn/building_executable_programs_with_gnat gnat-with-the-llvm-back-end}@anchor{138}@anchor{gnat_ugn/building_executable_programs_with_gnat gnatllvm}@anchor{7}
  @section GNAT with the LLVM Back End
  
  
--- 17543,17549 ----
  @end example
  
  @node GNAT with the LLVM Back End,,Using the GNU make Utility,Building Executable Programs with GNAT
! @anchor{gnat_ugn/building_executable_programs_with_gnat gnat-with-the-llvm-back-end}@anchor{139}@anchor{gnat_ugn/building_executable_programs_with_gnat gnatllvm}@anchor{7}
  @section GNAT with the LLVM Back End
  
  
*************** GNAT.
*** 17707,17713 ****
  
  
  @node GNAT Utility Programs,GNAT and Program Execution,Building Executable Programs with GNAT,Top
! @anchor{gnat_ugn/gnat_utility_programs doc}@anchor{139}@anchor{gnat_ugn/gnat_utility_programs gnat-utility-programs}@anchor{c}@anchor{gnat_ugn/gnat_utility_programs id1}@anchor{13a}
  @chapter GNAT Utility Programs
  
  
--- 17648,17654 ----
  
  
  @node GNAT Utility Programs,GNAT and Program Execution,Building Executable Programs with GNAT,Top
! @anchor{gnat_ugn/gnat_utility_programs doc}@anchor{13a}@anchor{gnat_ugn/gnat_utility_programs gnat-utility-programs}@anchor{c}@anchor{gnat_ugn/gnat_utility_programs id1}@anchor{13b}
  @chapter GNAT Utility Programs
  
  
*************** This chapter describes a number of utili
*** 17718,17727 ****
  @itemize *
  
  @item 
! @ref{13b,,The File Cleanup Utility gnatclean}
  
  @item 
! @ref{13c,,The GNAT Library Browser gnatls}
  @end itemize
  
  Other GNAT utilities are described elsewhere in this manual:
--- 17659,17668 ----
  @itemize *
  
  @item 
! @ref{13c,,The File Cleanup Utility gnatclean}
  
  @item 
! @ref{13d,,The GNAT Library Browser gnatls}
  @end itemize
  
  Other GNAT utilities are described elsewhere in this manual:
*************** Other GNAT utilities are described elsew
*** 17749,17755 ****
  @end menu
  
  @node The File Cleanup Utility gnatclean,The GNAT Library Browser gnatls,,GNAT Utility Programs
! @anchor{gnat_ugn/gnat_utility_programs id2}@anchor{13d}@anchor{gnat_ugn/gnat_utility_programs the-file-cleanup-utility-gnatclean}@anchor{13b}
  @section The File Cleanup Utility @code{gnatclean}
  
  
--- 17690,17696 ----
  @end menu
  
  @node The File Cleanup Utility gnatclean,The GNAT Library Browser gnatls,,GNAT Utility Programs
! @anchor{gnat_ugn/gnat_utility_programs id2}@anchor{13e}@anchor{gnat_ugn/gnat_utility_programs the-file-cleanup-utility-gnatclean}@anchor{13c}
  @section The File Cleanup Utility @code{gnatclean}
  
  
*************** generated files and executable files.
*** 17769,17775 ****
  @end menu
  
  @node Running gnatclean,Switches for gnatclean,,The File Cleanup Utility gnatclean
! @anchor{gnat_ugn/gnat_utility_programs id3}@anchor{13e}@anchor{gnat_ugn/gnat_utility_programs running-gnatclean}@anchor{13f}
  @subsection Running @code{gnatclean}
  
  
--- 17710,17716 ----
  @end menu
  
  @node Running gnatclean,Switches for gnatclean,,The File Cleanup Utility gnatclean
! @anchor{gnat_ugn/gnat_utility_programs id3}@anchor{13f}@anchor{gnat_ugn/gnat_utility_programs running-gnatclean}@anchor{140}
  @subsection Running @code{gnatclean}
  
  
*************** linker. In information-only mode, specif
*** 17793,17799 ****
  normal mode, but doesn’t actually delete any files.
  
  @node Switches for gnatclean,,Running gnatclean,The File Cleanup Utility gnatclean
! @anchor{gnat_ugn/gnat_utility_programs id4}@anchor{140}@anchor{gnat_ugn/gnat_utility_programs switches-for-gnatclean}@anchor{141}
  @subsection Switches for @code{gnatclean}
  
  
--- 17734,17740 ----
  normal mode, but doesn’t actually delete any files.
  
  @node Switches for gnatclean,,Running gnatclean,The File Cleanup Utility gnatclean
! @anchor{gnat_ugn/gnat_utility_programs id4}@anchor{141}@anchor{gnat_ugn/gnat_utility_programs switches-for-gnatclean}@anchor{142}
  @subsection Switches for @code{gnatclean}
  
  
*************** where @code{gnatclean} was invoked.
*** 17997,18003 ****
  @end table
  
  @node The GNAT Library Browser gnatls,,The File Cleanup Utility gnatclean,GNAT Utility Programs
! @anchor{gnat_ugn/gnat_utility_programs id5}@anchor{142}@anchor{gnat_ugn/gnat_utility_programs the-gnat-library-browser-gnatls}@anchor{13c}
  @section The GNAT Library Browser @code{gnatls}
  
  
--- 17938,17944 ----
  @end table
  
  @node The GNAT Library Browser gnatls,,The File Cleanup Utility gnatclean,GNAT Utility Programs
! @anchor{gnat_ugn/gnat_utility_programs id5}@anchor{143}@anchor{gnat_ugn/gnat_utility_programs the-gnat-library-browser-gnatls}@anchor{13d}
  @section The GNAT Library Browser @code{gnatls}
  
  
*************** as well as various characteristics.
*** 18018,18024 ****
  @end menu
  
  @node Running gnatls,Switches for gnatls,,The GNAT Library Browser gnatls
! @anchor{gnat_ugn/gnat_utility_programs id6}@anchor{143}@anchor{gnat_ugn/gnat_utility_programs running-gnatls}@anchor{144}
  @subsection Running @code{gnatls}
  
  
--- 17959,17965 ----
  @end menu
  
  @node Running gnatls,Switches for gnatls,,The GNAT Library Browser gnatls
! @anchor{gnat_ugn/gnat_utility_programs id6}@anchor{144}@anchor{gnat_ugn/gnat_utility_programs running-gnatls}@anchor{145}
  @subsection Running @code{gnatls}
  
  
*************** version of the same source that has been
*** 18098,18104 ****
  @end table
  
  @node Switches for gnatls,Example of gnatls Usage,Running gnatls,The GNAT Library Browser gnatls
! @anchor{gnat_ugn/gnat_utility_programs id7}@anchor{145}@anchor{gnat_ugn/gnat_utility_programs switches-for-gnatls}@anchor{146}
  @subsection Switches for @code{gnatls}
  
  
--- 18039,18045 ----
  @end table
  
  @node Switches for gnatls,Example of gnatls Usage,Running gnatls,The GNAT Library Browser gnatls
! @anchor{gnat_ugn/gnat_utility_programs id7}@anchor{146}@anchor{gnat_ugn/gnat_utility_programs switches-for-gnatls}@anchor{147}
  @subsection Switches for @code{gnatls}
  
  
*************** by the user.
*** 18281,18287 ****
  @end table
  
  @node Example of gnatls Usage,,Switches for gnatls,The GNAT Library Browser gnatls
! @anchor{gnat_ugn/gnat_utility_programs example-of-gnatls-usage}@anchor{147}@anchor{gnat_ugn/gnat_utility_programs id8}@anchor{148}
  @subsection Example of @code{gnatls} Usage
  
  
--- 18222,18228 ----
  @end table
  
  @node Example of gnatls Usage,,Switches for gnatls,The GNAT Library Browser gnatls
! @anchor{gnat_ugn/gnat_utility_programs example-of-gnatls-usage}@anchor{148}@anchor{gnat_ugn/gnat_utility_programs id8}@anchor{149}
  @subsection Example of @code{gnatls} Usage
  
  
*************** instr.ads
*** 18367,18373 ****
  @c -- Example: A |withing| unit has a |with| clause, it |withs| a |withed| unit
  
  @node GNAT and Program Execution,Platform-Specific Information,GNAT Utility Programs,Top
! @anchor{gnat_ugn/gnat_and_program_execution doc}@anchor{149}@anchor{gnat_ugn/gnat_and_program_execution gnat-and-program-execution}@anchor{d}@anchor{gnat_ugn/gnat_and_program_execution id1}@anchor{14a}
  @chapter GNAT and Program Execution
  
  
--- 18308,18314 ----
  @c -- Example: A |withing| unit has a |with| clause, it |withs| a |withed| unit
  
  @node GNAT and Program Execution,Platform-Specific Information,GNAT Utility Programs,Top
! @anchor{gnat_ugn/gnat_and_program_execution doc}@anchor{14a}@anchor{gnat_ugn/gnat_and_program_execution gnat-and-program-execution}@anchor{d}@anchor{gnat_ugn/gnat_and_program_execution id1}@anchor{14b}
  @chapter GNAT and Program Execution
  
  
*************** This chapter covers several topics:
*** 18377,18404 ****
  @itemize *
  
  @item 
! @ref{14b,,Running and Debugging Ada Programs}
  
  @item 
! @ref{14c,,Profiling}
  
  @item 
! @ref{14d,,Improving Performance}
  
  @item 
! @ref{14e,,Overflow Check Handling in GNAT}
  
  @item 
! @ref{14f,,Performing Dimensionality Analysis in GNAT}
  
  @item 
! @ref{150,,Stack Related Facilities}
  
  @item 
! @ref{151,,Memory Management Issues}
  
  @item 
! @ref{152,,Sanitizers for Ada}
  @end itemize
  
  @menu
--- 18318,18345 ----
  @itemize *
  
  @item 
! @ref{14c,,Running and Debugging Ada Programs}
  
  @item 
! @ref{14d,,Profiling}
  
  @item 
! @ref{14e,,Improving Performance}
  
  @item 
! @ref{14f,,Overflow Check Handling in GNAT}
  
  @item 
! @ref{150,,Performing Dimensionality Analysis in GNAT}
  
  @item 
! @ref{151,,Stack Related Facilities}
  
  @item 
! @ref{152,,Memory Management Issues}
  
  @item 
! @ref{153,,Sanitizers for Ada}
  @end itemize
  
  @menu
*************** This chapter covers several topics:
*** 18414,18420 ****
  @end menu
  
  @node Running and Debugging Ada Programs,Profiling,,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution id2}@anchor{14b}@anchor{gnat_ugn/gnat_and_program_execution running-and-debugging-ada-programs}@anchor{153}
  @section Running and Debugging Ada Programs
  
  
--- 18355,18361 ----
  @end menu
  
  @node Running and Debugging Ada Programs,Profiling,,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution id2}@anchor{14c}@anchor{gnat_ugn/gnat_and_program_execution running-and-debugging-ada-programs}@anchor{154}
  @section Running and Debugging Ada Programs
  
  
*************** the incorrect user program.
*** 18468,18474 ****
  @end menu
  
  @node The GNAT Debugger GDB,Running GDB,,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution id3}@anchor{154}@anchor{gnat_ugn/gnat_and_program_execution the-gnat-debugger-gdb}@anchor{155}
  @subsection The GNAT Debugger GDB
  
  
--- 18409,18415 ----
  @end menu
  
  @node The GNAT Debugger GDB,Running GDB,,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution id3}@anchor{155}@anchor{gnat_ugn/gnat_and_program_execution the-gnat-debugger-gdb}@anchor{156}
  @subsection The GNAT Debugger GDB
  
  
*************** the debugging information and can respon
*** 18526,18532 ****
  variables and more generally to report on the state of execution.
  
  @node Running GDB,Introduction to GDB Commands,The GNAT Debugger GDB,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution id4}@anchor{156}@anchor{gnat_ugn/gnat_and_program_execution running-gdb}@anchor{157}
  @subsection Running GDB
  
  
--- 18467,18473 ----
  variables and more generally to report on the state of execution.
  
  @node Running GDB,Introduction to GDB Commands,The GNAT Debugger GDB,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution id4}@anchor{157}@anchor{gnat_ugn/gnat_and_program_execution running-gdb}@anchor{158}
  @subsection Running GDB
  
  
*************** exactly as if the debugger were not pres
*** 18553,18559 ****
  describes some of the additional commands that you can give to @code{GDB}.
  
  @node Introduction to GDB Commands,Using Ada Expressions,Running GDB,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution id5}@anchor{158}@anchor{gnat_ugn/gnat_and_program_execution introduction-to-gdb-commands}@anchor{159}
  @subsection Introduction to GDB Commands
  
  
--- 18494,18500 ----
  describes some of the additional commands that you can give to @code{GDB}.
  
  @node Introduction to GDB Commands,Using Ada Expressions,Running GDB,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution id5}@anchor{159}@anchor{gnat_ugn/gnat_and_program_execution introduction-to-gdb-commands}@anchor{15a}
  @subsection Introduction to GDB Commands
  
  
*************** characters need be typed to disambiguate
*** 18767,18773 ****
  @code{breakpoint}).
  
  @node Using Ada Expressions,Calling User-Defined Subprograms,Introduction to GDB Commands,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution id6}@anchor{15a}@anchor{gnat_ugn/gnat_and_program_execution using-ada-expressions}@anchor{15b}
  @subsection Using Ada Expressions
  
  
--- 18708,18714 ----
  @code{breakpoint}).
  
  @node Using Ada Expressions,Calling User-Defined Subprograms,Introduction to GDB Commands,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution id6}@anchor{15b}@anchor{gnat_ugn/gnat_and_program_execution using-ada-expressions}@anchor{15c}
  @subsection Using Ada Expressions
  
  
*************** their packages, regardless of context. W
*** 18805,18811 ****
  For details on the supported Ada syntax, see @cite{Debugging with GDB}.
  
  @node Calling User-Defined Subprograms,Using the next Command in a Function,Using Ada Expressions,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution calling-user-defined-subprograms}@anchor{15c}@anchor{gnat_ugn/gnat_and_program_execution id7}@anchor{15d}
  @subsection Calling User-Defined Subprograms
  
  
--- 18746,18752 ----
  For details on the supported Ada syntax, see @cite{Debugging with GDB}.
  
  @node Calling User-Defined Subprograms,Using the next Command in a Function,Using Ada Expressions,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution calling-user-defined-subprograms}@anchor{15d}@anchor{gnat_ugn/gnat_and_program_execution id7}@anchor{15e}
  @subsection Calling User-Defined Subprograms
  
  
*************** elements directly from GDB, you can writ
*** 18864,18870 ****
  the elements in the format you desire.
  
  @node Using the next Command in a Function,Stopping When Ada Exceptions Are Raised,Calling User-Defined Subprograms,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution id8}@anchor{15e}@anchor{gnat_ugn/gnat_and_program_execution using-the-next-command-in-a-function}@anchor{15f}
  @subsection Using the `next' Command in a Function
  
  
--- 18805,18811 ----
  the elements in the format you desire.
  
  @node Using the next Command in a Function,Stopping When Ada Exceptions Are Raised,Calling User-Defined Subprograms,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution id8}@anchor{15f}@anchor{gnat_ugn/gnat_and_program_execution using-the-next-command-in-a-function}@anchor{160}
  @subsection Using the `next' Command in a Function
  
  
*************** The value returned is always that from t
*** 18887,18893 ****
  that was stepped through.
  
  @node Stopping When Ada Exceptions Are Raised,Ada Tasks,Using the next Command in a Function,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution id9}@anchor{160}@anchor{gnat_ugn/gnat_and_program_execution stopping-when-ada-exceptions-are-raised}@anchor{161}
  @subsection Stopping When Ada Exceptions Are Raised
  
  
--- 18828,18834 ----
  that was stepped through.
  
  @node Stopping When Ada Exceptions Are Raised,Ada Tasks,Using the next Command in a Function,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution id9}@anchor{161}@anchor{gnat_ugn/gnat_and_program_execution stopping-when-ada-exceptions-are-raised}@anchor{162}
  @subsection Stopping When Ada Exceptions Are Raised
  
  
*************** argument, prints out only those exceptio
*** 18944,18950 ****
  @geindex Tasks (in gdb)
  
  @node Ada Tasks,Debugging Generic Units,Stopping When Ada Exceptions Are Raised,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution ada-tasks}@anchor{162}@anchor{gnat_ugn/gnat_and_program_execution id10}@anchor{163}
  @subsection Ada Tasks
  
  
--- 18885,18891 ----
  @geindex Tasks (in gdb)
  
  @node Ada Tasks,Debugging Generic Units,Stopping When Ada Exceptions Are Raised,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution ada-tasks}@anchor{163}@anchor{gnat_ugn/gnat_and_program_execution id10}@anchor{164}
  @subsection Ada Tasks
  
  
*************** see @cite{Debugging with GDB}.
*** 19031,19037 ****
  @geindex Generics
  
  @node Debugging Generic Units,Remote Debugging with gdbserver,Ada Tasks,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution debugging-generic-units}@anchor{164}@anchor{gnat_ugn/gnat_and_program_execution id11}@anchor{165}
  @subsection Debugging Generic Units
  
  
--- 18972,18978 ----
  @geindex Generics
  
  @node Debugging Generic Units,Remote Debugging with gdbserver,Ada Tasks,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution debugging-generic-units}@anchor{165}@anchor{gnat_ugn/gnat_and_program_execution id11}@anchor{166}
  @subsection Debugging Generic Units
  
  
*************** variables, as you do for other units.
*** 19091,19097 ****
  @geindex Remote Debugging with gdbserver
  
  @node Remote Debugging with gdbserver,GNAT Abnormal Termination or Failure to Terminate,Debugging Generic Units,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution id12}@anchor{166}@anchor{gnat_ugn/gnat_and_program_execution remote-debugging-with-gdbserver}@anchor{167}
  @subsection Remote Debugging with gdbserver
  
  
--- 19032,19038 ----
  @geindex Remote Debugging with gdbserver
  
  @node Remote Debugging with gdbserver,GNAT Abnormal Termination or Failure to Terminate,Debugging Generic Units,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution id12}@anchor{167}@anchor{gnat_ugn/gnat_and_program_execution remote-debugging-with-gdbserver}@anchor{168}
  @subsection Remote Debugging with gdbserver
  
  
*************** x86_64-linux.
*** 19150,19156 ****
  @geindex Abnormal Termination or Failure to Terminate
  
  @node GNAT Abnormal Termination or Failure to Terminate,Naming Conventions for GNAT Source Files,Remote Debugging with gdbserver,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution gnat-abnormal-termination-or-failure-to-terminate}@anchor{168}@anchor{gnat_ugn/gnat_and_program_execution id13}@anchor{169}
  @subsection GNAT Abnormal Termination or Failure to Terminate
  
  
--- 19091,19097 ----
  @geindex Abnormal Termination or Failure to Terminate
  
  @node GNAT Abnormal Termination or Failure to Terminate,Naming Conventions for GNAT Source Files,Remote Debugging with gdbserver,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution gnat-abnormal-termination-or-failure-to-terminate}@anchor{169}@anchor{gnat_ugn/gnat_and_program_execution id13}@anchor{16a}
  @subsection GNAT Abnormal Termination or Failure to Terminate
  
  
*************** Finally, you can start
*** 19205,19211 ****
  @code{gdb} directly on the @code{gnat1} executable. @code{gnat1} is the
  front-end of GNAT and can be run independently (normally it is just
  called from @code{gcc}). You can use @code{gdb} on @code{gnat1} as you
! would on a C program (but @ref{155,,The GNAT Debugger GDB} for caveats). The
  @code{where} command is the first line of attack; the variable
  @code{lineno} (seen by @code{print lineno}), used by the second phase of
  @code{gnat1} and by the @code{gcc} back end, indicates the source line at
--- 19146,19152 ----
  @code{gdb} directly on the @code{gnat1} executable. @code{gnat1} is the
  front-end of GNAT and can be run independently (normally it is just
  called from @code{gcc}). You can use @code{gdb} on @code{gnat1} as you
! would on a C program (but @ref{156,,The GNAT Debugger GDB} for caveats). The
  @code{where} command is the first line of attack; the variable
  @code{lineno} (seen by @code{print lineno}), used by the second phase of
  @code{gnat1} and by the @code{gcc} back end, indicates the source line at
*************** the source file.
*** 19214,19220 ****
  @end itemize
  
  @node Naming Conventions for GNAT Source Files,Getting Internal Debugging Information,GNAT Abnormal Termination or Failure to Terminate,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution id14}@anchor{16a}@anchor{gnat_ugn/gnat_and_program_execution naming-conventions-for-gnat-source-files}@anchor{16b}
  @subsection Naming Conventions for GNAT Source Files
  
  
--- 19155,19161 ----
  @end itemize
  
  @node Naming Conventions for GNAT Source Files,Getting Internal Debugging Information,GNAT Abnormal Termination or Failure to Terminate,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution id14}@anchor{16b}@anchor{gnat_ugn/gnat_and_program_execution naming-conventions-for-gnat-source-files}@anchor{16c}
  @subsection Naming Conventions for GNAT Source Files
  
  
*************** the other @code{.c} files are modificati
*** 19304,19310 ****
  @end itemize
  
  @node Getting Internal Debugging Information,Stack Traceback,Naming Conventions for GNAT Source Files,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution getting-internal-debugging-information}@anchor{16c}@anchor{gnat_ugn/gnat_and_program_execution id15}@anchor{16d}
  @subsection Getting Internal Debugging Information
  
  
--- 19245,19251 ----
  @end itemize
  
  @node Getting Internal Debugging Information,Stack Traceback,Naming Conventions for GNAT Source Files,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution getting-internal-debugging-information}@anchor{16d}@anchor{gnat_ugn/gnat_and_program_execution id15}@anchor{16e}
  @subsection Getting Internal Debugging Information
  
  
*************** are replaced with run-time calls.
*** 19332,19338 ****
  @geindex stack unwinding
  
  @node Stack Traceback,Pretty-Printers for the GNAT runtime,Getting Internal Debugging Information,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution id16}@anchor{16e}@anchor{gnat_ugn/gnat_and_program_execution stack-traceback}@anchor{16f}
  @subsection Stack Traceback
  
  
--- 19273,19279 ----
  @geindex stack unwinding
  
  @node Stack Traceback,Pretty-Printers for the GNAT runtime,Getting Internal Debugging Information,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution id16}@anchor{16f}@anchor{gnat_ugn/gnat_and_program_execution stack-traceback}@anchor{170}
  @subsection Stack Traceback
  
  
*************** is enabled and no exception is raised du
*** 19361,19367 ****
  @end menu
  
  @node Non-Symbolic Traceback,Symbolic Traceback,,Stack Traceback
! @anchor{gnat_ugn/gnat_and_program_execution id17}@anchor{170}@anchor{gnat_ugn/gnat_and_program_execution non-symbolic-traceback}@anchor{171}
  @subsubsection Non-Symbolic Traceback
  
  
--- 19302,19308 ----
  @end menu
  
  @node Non-Symbolic Traceback,Symbolic Traceback,,Stack Traceback
! @anchor{gnat_ugn/gnat_and_program_execution id17}@anchor{171}@anchor{gnat_ugn/gnat_and_program_execution non-symbolic-traceback}@anchor{172}
  @subsubsection Non-Symbolic Traceback
  
  
*************** $ addr2line -e stb -a -f -p --demangle=g
*** 19495,19501 ****
  From this traceback, we can see that the exception was raised in @code{stb.adb}
  at line 5, which was reached from a procedure call in @code{stb.adb} at line
  10, and so on. @code{b~std.adb} is the binder file, which contains the
! call to the main program; @ref{112,,Running gnatbind}. The remaining entries are
  assorted runtime routines. The output will vary from platform to platform.
  
  You can also use @code{GDB} with these traceback addresses to debug
--- 19436,19442 ----
  From this traceback, we can see that the exception was raised in @code{stb.adb}
  at line 5, which was reached from a procedure call in @code{stb.adb} at line
  10, and so on. @code{b~std.adb} is the binder file, which contains the
! call to the main program; @ref{113,,Running gnatbind}. The remaining entries are
  assorted runtime routines. The output will vary from platform to platform.
  
  You can also use @code{GDB} with these traceback addresses to debug
*************** addresses need to be specified in C form
*** 19683,19689 ****
  @geindex symbolic
  
  @node Symbolic Traceback,,Non-Symbolic Traceback,Stack Traceback
! @anchor{gnat_ugn/gnat_and_program_execution id18}@anchor{172}@anchor{gnat_ugn/gnat_and_program_execution symbolic-traceback}@anchor{173}
  @subsubsection Symbolic Traceback
  
  
--- 19624,19630 ----
  @geindex symbolic
  
  @node Symbolic Traceback,,Non-Symbolic Traceback,Stack Traceback
! @anchor{gnat_ugn/gnat_and_program_execution id18}@anchor{173}@anchor{gnat_ugn/gnat_and_program_execution symbolic-traceback}@anchor{174}
  @subsubsection Symbolic Traceback
  
  
*************** traceback, which will also be printed if
*** 19802,19808 ****
  terminates the program.
  
  @node Pretty-Printers for the GNAT runtime,,Stack Traceback,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution id19}@anchor{174}@anchor{gnat_ugn/gnat_and_program_execution pretty-printers-for-the-gnat-runtime}@anchor{175}
  @subsection Pretty-Printers for the GNAT runtime
  
  
--- 19743,19749 ----
  terminates the program.
  
  @node Pretty-Printers for the GNAT runtime,,Stack Traceback,Running and Debugging Ada Programs
! @anchor{gnat_ugn/gnat_and_program_execution id19}@anchor{175}@anchor{gnat_ugn/gnat_and_program_execution pretty-printers-for-the-gnat-runtime}@anchor{176}
  @subsection Pretty-Printers for the GNAT runtime
  
  
*************** for more information.
*** 19911,19917 ****
  @geindex Profiling
  
  @node Profiling,Improving Performance,Running and Debugging Ada Programs,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution id20}@anchor{176}@anchor{gnat_ugn/gnat_and_program_execution profiling}@anchor{14c}
  @section Profiling
  
  
--- 19852,19858 ----
  @geindex Profiling
  
  @node Profiling,Improving Performance,Running and Debugging Ada Programs,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution id20}@anchor{177}@anchor{gnat_ugn/gnat_and_program_execution profiling}@anchor{14d}
  @section Profiling
  
  
*************** This section describes how to use the @c
*** 19927,19933 ****
  @end menu
  
  @node Profiling an Ada Program with gprof,,,Profiling
! @anchor{gnat_ugn/gnat_and_program_execution id21}@anchor{177}@anchor{gnat_ugn/gnat_and_program_execution profiling-an-ada-program-with-gprof}@anchor{178}
  @subsection Profiling an Ada Program with gprof
  
  
--- 19868,19874 ----
  @end menu
  
  @node Profiling an Ada Program with gprof,,,Profiling
! @anchor{gnat_ugn/gnat_and_program_execution id21}@anchor{178}@anchor{gnat_ugn/gnat_and_program_execution profiling-an-ada-program-with-gprof}@anchor{179}
  @subsection Profiling an Ada Program with gprof
  
  
*************** to interpret the results.
*** 19982,19988 ****
  @end menu
  
  @node Compilation for profiling,Program execution,,Profiling an Ada Program with gprof
! @anchor{gnat_ugn/gnat_and_program_execution compilation-for-profiling}@anchor{179}@anchor{gnat_ugn/gnat_and_program_execution id22}@anchor{17a}
  @subsubsection Compilation for profiling
  
  
--- 19923,19929 ----
  @end menu
  
  @node Compilation for profiling,Program execution,,Profiling an Ada Program with gprof
! @anchor{gnat_ugn/gnat_and_program_execution compilation-for-profiling}@anchor{17a}@anchor{gnat_ugn/gnat_and_program_execution id22}@anchor{17b}
  @subsubsection Compilation for profiling
  
  
*************** Note that on Windows, @code{gprof} does
*** 20013,20019 ****
  the @code{-no-pie} switch to the linker flags to disable PIE.
  
  @node Program execution,Running gprof,Compilation for profiling,Profiling an Ada Program with gprof
! @anchor{gnat_ugn/gnat_and_program_execution id23}@anchor{17b}@anchor{gnat_ugn/gnat_and_program_execution program-execution}@anchor{17c}
  @subsubsection Program execution
  
  
--- 19954,19960 ----
  the @code{-no-pie} switch to the linker flags to disable PIE.
  
  @node Program execution,Running gprof,Compilation for profiling,Profiling an Ada Program with gprof
! @anchor{gnat_ugn/gnat_and_program_execution id23}@anchor{17c}@anchor{gnat_ugn/gnat_and_program_execution program-execution}@anchor{17d}
  @subsubsection Program execution
  
  
*************** generated in the directory where the pro
*** 20028,20034 ****
  already exists, it will be overwritten by running the program.
  
  @node Running gprof,Interpretation of profiling results,Program execution,Profiling an Ada Program with gprof
! @anchor{gnat_ugn/gnat_and_program_execution id24}@anchor{17d}@anchor{gnat_ugn/gnat_and_program_execution running-gprof}@anchor{17e}
  @subsubsection Running gprof
  
  
--- 19969,19975 ----
  already exists, it will be overwritten by running the program.
  
  @node Running gprof,Interpretation of profiling results,Program execution,Profiling an Ada Program with gprof
! @anchor{gnat_ugn/gnat_and_program_execution id24}@anchor{17e}@anchor{gnat_ugn/gnat_and_program_execution running-gprof}@anchor{17f}
  @subsubsection Running gprof
  
  
*************** switch.
*** 20140,20146 ****
  @end table
  
  @node Interpretation of profiling results,,Running gprof,Profiling an Ada Program with gprof
! @anchor{gnat_ugn/gnat_and_program_execution id25}@anchor{17f}@anchor{gnat_ugn/gnat_and_program_execution interpretation-of-profiling-results}@anchor{180}
  @subsubsection Interpretation of profiling results
  
  
--- 20081,20087 ----
  @end table
  
  @node Interpretation of profiling results,,Running gprof,Profiling an Ada Program with gprof
! @anchor{gnat_ugn/gnat_and_program_execution id25}@anchor{180}@anchor{gnat_ugn/gnat_and_program_execution interpretation-of-profiling-results}@anchor{181}
  @subsubsection Interpretation of profiling results
  
  
*************** and the subprograms that it calls. It al
*** 20157,20163 ****
  spent in each of those callers and called subprograms.
  
  @node Improving Performance,Overflow Check Handling in GNAT,Profiling,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution id26}@anchor{14d}@anchor{gnat_ugn/gnat_and_program_execution improving-performance}@anchor{181}
  @section Improving Performance
  
  
--- 20098,20104 ----
  spent in each of those callers and called subprograms.
  
  @node Improving Performance,Overflow Check Handling in GNAT,Profiling,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution id26}@anchor{14e}@anchor{gnat_ugn/gnat_and_program_execution improving-performance}@anchor{182}
  @section Improving Performance
  
  
*************** which can reduce the size of program exe
*** 20178,20184 ****
  @end menu
  
  @node Performance Considerations,Text_IO Suggestions,,Improving Performance
! @anchor{gnat_ugn/gnat_and_program_execution id27}@anchor{182}@anchor{gnat_ugn/gnat_and_program_execution performance-considerations}@anchor{183}
  @subsection Performance Considerations
  
  
--- 20119,20125 ----
  @end menu
  
  @node Performance Considerations,Text_IO Suggestions,,Improving Performance
! @anchor{gnat_ugn/gnat_and_program_execution id27}@anchor{183}@anchor{gnat_ugn/gnat_and_program_execution performance-considerations}@anchor{184}
  @subsection Performance Considerations
  
  
*************** some guidelines on debugging optimized c
*** 20239,20245 ****
  @end menu
  
  @node Controlling Run-Time Checks,Use of Restrictions,,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution controlling-run-time-checks}@anchor{184}@anchor{gnat_ugn/gnat_and_program_execution id28}@anchor{185}
  @subsubsection Controlling Run-Time Checks
  
  
--- 20180,20186 ----
  @end menu
  
  @node Controlling Run-Time Checks,Use of Restrictions,,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution controlling-run-time-checks}@anchor{185}@anchor{gnat_ugn/gnat_and_program_execution id28}@anchor{186}
  @subsubsection Controlling Run-Time Checks
  
  
*************** remove checks) or @code{pragma Unsuppres
*** 20291,20297 ****
  checks) in your program source.
  
  @node Use of Restrictions,Optimization Levels,Controlling Run-Time Checks,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id29}@anchor{186}@anchor{gnat_ugn/gnat_and_program_execution use-of-restrictions}@anchor{187}
  @subsubsection Use of Restrictions
  
  
--- 20232,20238 ----
  checks) in your program source.
  
  @node Use of Restrictions,Optimization Levels,Controlling Run-Time Checks,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id29}@anchor{187}@anchor{gnat_ugn/gnat_and_program_execution use-of-restrictions}@anchor{188}
  @subsubsection Use of Restrictions
  
  
*************** this, it also means you can write code w
*** 20327,20333 ****
  possibility of an immediate abort at any point.
  
  @node Optimization Levels,Debugging Optimized Code,Use of Restrictions,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id30}@anchor{188}@anchor{gnat_ugn/gnat_and_program_execution optimization-levels}@anchor{f0}
  @subsubsection Optimization Levels
  
  
--- 20268,20274 ----
  possibility of an immediate abort at any point.
  
  @node Optimization Levels,Debugging Optimized Code,Use of Restrictions,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id30}@anchor{189}@anchor{gnat_ugn/gnat_and_program_execution optimization-levels}@anchor{f0}
  @subsubsection Optimization Levels
  
  
*************** levels.
*** 20470,20479 ****
  A note regarding the use of @code{-O3}: The use of this optimization level
  ought not to be automatically preferred over that of level @code{-O2},
  since it often results in larger executables which may run more slowly.
! See further discussion of this point in @ref{104,,Inlining of Subprograms}.
  
  @node Debugging Optimized Code,Inlining of Subprograms,Optimization Levels,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution debugging-optimized-code}@anchor{189}@anchor{gnat_ugn/gnat_and_program_execution id31}@anchor{18a}
  @subsubsection Debugging Optimized Code
  
  
--- 20411,20420 ----
  A note regarding the use of @code{-O3}: The use of this optimization level
  ought not to be automatically preferred over that of level @code{-O2},
  since it often results in larger executables which may run more slowly.
! See further discussion of this point in @ref{105,,Inlining of Subprograms}.
  
  @node Debugging Optimized Code,Inlining of Subprograms,Optimization Levels,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution debugging-optimized-code}@anchor{18a}@anchor{gnat_ugn/gnat_and_program_execution id31}@anchor{18b}
  @subsubsection Debugging Optimized Code
  
  
*************** on the resulting executable,
*** 20601,20607 ****
  which removes both debugging information and global symbols.
  
  @node Inlining of Subprograms,Floating Point Operations,Debugging Optimized Code,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id32}@anchor{18b}@anchor{gnat_ugn/gnat_and_program_execution inlining-of-subprograms}@anchor{104}
  @subsubsection Inlining of Subprograms
  
  
--- 20542,20548 ----
  which removes both debugging information and global symbols.
  
  @node Inlining of Subprograms,Floating Point Operations,Debugging Optimized Code,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id32}@anchor{18c}@anchor{gnat_ugn/gnat_and_program_execution inlining-of-subprograms}@anchor{105}
  @subsubsection Inlining of Subprograms
  
  
*************** indeed you should use @code{-O3} only if
*** 20745,20751 ****
  improves performance for your program.
  
  @node Floating Point Operations,Vectorization of loops,Inlining of Subprograms,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution floating-point-operations}@anchor{18c}@anchor{gnat_ugn/gnat_and_program_execution id33}@anchor{18d}
  @subsubsection Floating Point Operations
  
  
--- 20686,20692 ----
  improves performance for your program.
  
  @node Floating Point Operations,Vectorization of loops,Inlining of Subprograms,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution floating-point-operations}@anchor{18d}@anchor{gnat_ugn/gnat_and_program_execution id33}@anchor{18e}
  @subsubsection Floating Point Operations
  
  
*************** Note that the ABI has the same form for
*** 20792,20798 ****
  so you can mix units compiled with and without these switches.
  
  @node Vectorization of loops,Other Optimization Switches,Floating Point Operations,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id34}@anchor{18e}@anchor{gnat_ugn/gnat_and_program_execution vectorization-of-loops}@anchor{18f}
  @subsubsection Vectorization of loops
  
  
--- 20733,20739 ----
  so you can mix units compiled with and without these switches.
  
  @node Vectorization of loops,Other Optimization Switches,Floating Point Operations,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id34}@anchor{18f}@anchor{gnat_ugn/gnat_and_program_execution vectorization-of-loops}@anchor{190}
  @subsubsection Vectorization of loops
  
  
*************** omit the non-vectorized version of the l
*** 20948,20954 ****
  This is also currently only supported by the GCC back end.
  
  @node Other Optimization Switches,Optimization and Strict Aliasing,Vectorization of loops,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id35}@anchor{190}@anchor{gnat_ugn/gnat_and_program_execution other-optimization-switches}@anchor{191}
  @subsubsection Other Optimization Switches
  
  
--- 20889,20895 ----
  This is also currently only supported by the GCC back end.
  
  @node Other Optimization Switches,Optimization and Strict Aliasing,Vectorization of loops,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id35}@anchor{191}@anchor{gnat_ugn/gnat_and_program_execution other-optimization-switches}@anchor{192}
  @subsubsection Other Optimization Switches
  
  
*************** full details of these switches, see the
*** 20965,20971 ****
  the `Hardware Models and Configurations' chapter of @cite{Using the GNU Compiler Collection (GCC)}.
  
  @node Optimization and Strict Aliasing,Aliased Variables and Optimization,Other Optimization Switches,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id36}@anchor{192}@anchor{gnat_ugn/gnat_and_program_execution optimization-and-strict-aliasing}@anchor{e7}
  @subsubsection Optimization and Strict Aliasing
  
  
--- 20906,20912 ----
  the `Hardware Models and Configurations' chapter of @cite{Using the GNU Compiler Collection (GCC)}.
  
  @node Optimization and Strict Aliasing,Aliased Variables and Optimization,Other Optimization Switches,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id36}@anchor{193}@anchor{gnat_ugn/gnat_and_program_execution optimization-and-strict-aliasing}@anchor{e7}
  @subsubsection Optimization and Strict Aliasing
  
  
*************** review any uses of unchecked conversion,
*** 21259,21265 ****
  getting the warnings described above.
  
  @node Aliased Variables and Optimization,Atomic Variables and Optimization,Optimization and Strict Aliasing,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution aliased-variables-and-optimization}@anchor{193}@anchor{gnat_ugn/gnat_and_program_execution id37}@anchor{194}
  @subsubsection Aliased Variables and Optimization
  
  
--- 21200,21206 ----
  getting the warnings described above.
  
  @node Aliased Variables and Optimization,Atomic Variables and Optimization,Optimization and Strict Aliasing,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution aliased-variables-and-optimization}@anchor{194}@anchor{gnat_ugn/gnat_and_program_execution id37}@anchor{195}
  @subsubsection Aliased Variables and Optimization
  
  
*************** avoid code such as this if possible beca
*** 21319,21325 ****
  functin as you expect with all compilers.
  
  @node Atomic Variables and Optimization,Passive Task Optimization,Aliased Variables and Optimization,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution atomic-variables-and-optimization}@anchor{195}@anchor{gnat_ugn/gnat_and_program_execution id38}@anchor{196}
  @subsubsection Atomic Variables and Optimization
  
  
--- 21260,21266 ----
  functin as you expect with all compilers.
  
  @node Atomic Variables and Optimization,Passive Task Optimization,Aliased Variables and Optimization,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution atomic-variables-and-optimization}@anchor{196}@anchor{gnat_ugn/gnat_and_program_execution id38}@anchor{197}
  @subsubsection Atomic Variables and Optimization
  
  
*************** such synchronization code is not require
*** 21400,21406 ****
  useful to disable it.
  
  @node Passive Task Optimization,,Atomic Variables and Optimization,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id39}@anchor{197}@anchor{gnat_ugn/gnat_and_program_execution passive-task-optimization}@anchor{198}
  @subsubsection Passive Task Optimization
  
  
--- 21341,21347 ----
  useful to disable it.
  
  @node Passive Task Optimization,,Atomic Variables and Optimization,Performance Considerations
! @anchor{gnat_ugn/gnat_and_program_execution id39}@anchor{198}@anchor{gnat_ugn/gnat_and_program_execution passive-task-optimization}@anchor{199}
  @subsubsection Passive Task Optimization
  
  
*************** that typically clients of the tasks who
*** 21445,21451 ****
  to be modified, only the task definitions themselves.
  
  @node Text_IO Suggestions,Reducing Size of Executables with Unused Subprogram/Data Elimination,Performance Considerations,Improving Performance
! @anchor{gnat_ugn/gnat_and_program_execution id40}@anchor{199}@anchor{gnat_ugn/gnat_and_program_execution text-io-suggestions}@anchor{19a}
  @subsection @code{Text_IO} Suggestions
  
  
--- 21386,21392 ----
  to be modified, only the task definitions themselves.
  
  @node Text_IO Suggestions,Reducing Size of Executables with Unused Subprogram/Data Elimination,Performance Considerations,Improving Performance
! @anchor{gnat_ugn/gnat_and_program_execution id40}@anchor{19a}@anchor{gnat_ugn/gnat_and_program_execution text-io-suggestions}@anchor{19b}
  @subsection @code{Text_IO} Suggestions
  
  
*************** of the standard output file or change th
*** 21468,21474 ****
  be buffered using @code{Interfaces.C_Streams.setvbuf}.
  
  @node Reducing Size of Executables with Unused Subprogram/Data Elimination,,Text_IO Suggestions,Improving Performance
! @anchor{gnat_ugn/gnat_and_program_execution id41}@anchor{19b}@anchor{gnat_ugn/gnat_and_program_execution reducing-size-of-executables-with-unused-subprogram-data-elimination}@anchor{19c}
  @subsection Reducing Size of Executables with Unused Subprogram/Data Elimination
  
  
--- 21409,21415 ----
  be buffered using @code{Interfaces.C_Streams.setvbuf}.
  
  @node Reducing Size of Executables with Unused Subprogram/Data Elimination,,Text_IO Suggestions,Improving Performance
! @anchor{gnat_ugn/gnat_and_program_execution id41}@anchor{19c}@anchor{gnat_ugn/gnat_and_program_execution reducing-size-of-executables-with-unused-subprogram-data-elimination}@anchor{19d}
  @subsection Reducing Size of Executables with Unused Subprogram/Data Elimination
  
  
*************** your executable just by setting options
*** 21485,21491 ****
  @end menu
  
  @node About unused subprogram/data elimination,Compilation options,,Reducing Size of Executables with Unused Subprogram/Data Elimination
! @anchor{gnat_ugn/gnat_and_program_execution about-unused-subprogram-data-elimination}@anchor{19d}@anchor{gnat_ugn/gnat_and_program_execution id42}@anchor{19e}
  @subsubsection About unused subprogram/data elimination
  
  
--- 21426,21432 ----
  @end menu
  
  @node About unused subprogram/data elimination,Compilation options,,Reducing Size of Executables with Unused Subprogram/Data Elimination
! @anchor{gnat_ugn/gnat_and_program_execution about-unused-subprogram-data-elimination}@anchor{19e}@anchor{gnat_ugn/gnat_and_program_execution id42}@anchor{19f}
  @subsubsection About unused subprogram/data elimination
  
  
*************** architecture and on all cross platforms
*** 21499,21505 ****
  In both cases, GNU binutils version 2.16 or later are required to enable it.
  
  @node Compilation options,Example of unused subprogram/data elimination,About unused subprogram/data elimination,Reducing Size of Executables with Unused Subprogram/Data Elimination
! @anchor{gnat_ugn/gnat_and_program_execution compilation-options}@anchor{19f}@anchor{gnat_ugn/gnat_and_program_execution id43}@anchor{1a0}
  @subsubsection Compilation options
  
  
--- 21440,21446 ----
  In both cases, GNU binutils version 2.16 or later are required to enable it.
  
  @node Compilation options,Example of unused subprogram/data elimination,About unused subprogram/data elimination,Reducing Size of Executables with Unused Subprogram/Data Elimination
! @anchor{gnat_ugn/gnat_and_program_execution compilation-options}@anchor{1a0}@anchor{gnat_ugn/gnat_and_program_execution id43}@anchor{1a1}
  @subsubsection Compilation options
  
  
*************** eliminate the unused code and data of th
*** 21540,21546 ****
  executable.
  
  @node Example of unused subprogram/data elimination,,Compilation options,Reducing Size of Executables with Unused Subprogram/Data Elimination
! @anchor{gnat_ugn/gnat_and_program_execution example-of-unused-subprogram-data-elimination}@anchor{1a1}@anchor{gnat_ugn/gnat_and_program_execution id44}@anchor{1a2}
  @subsubsection Example of unused subprogram/data elimination
  
  
--- 21481,21487 ----
  executable.
  
  @node Example of unused subprogram/data elimination,,Compilation options,Reducing Size of Executables with Unused Subprogram/Data Elimination
! @anchor{gnat_ugn/gnat_and_program_execution example-of-unused-subprogram-data-elimination}@anchor{1a2}@anchor{gnat_ugn/gnat_and_program_execution id44}@anchor{1a3}
  @subsubsection Example of unused subprogram/data elimination
  
  
*************** appropriate switches.
*** 21610,21616 ****
  @geindex Checks (overflow)
  
  @node Overflow Check Handling in GNAT,Performing Dimensionality Analysis in GNAT,Improving Performance,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution id45}@anchor{14e}@anchor{gnat_ugn/gnat_and_program_execution overflow-check-handling-in-gnat}@anchor{1a3}
  @section Overflow Check Handling in GNAT
  
  
--- 21551,21557 ----
  @geindex Checks (overflow)
  
  @node Overflow Check Handling in GNAT,Performing Dimensionality Analysis in GNAT,Improving Performance,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution id45}@anchor{14f}@anchor{gnat_ugn/gnat_and_program_execution overflow-check-handling-in-gnat}@anchor{fa}
  @section Overflow Check Handling in GNAT
  
  
*************** platforms for which @code{Long_Long_Inte
*** 22062,22068 ****
  platforms).
  
  @node Performing Dimensionality Analysis in GNAT,Stack Related Facilities,Overflow Check Handling in GNAT,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution id51}@anchor{14f}@anchor{gnat_ugn/gnat_and_program_execution performing-dimensionality-analysis-in-gnat}@anchor{1ad}
  @section Performing Dimensionality Analysis in GNAT
  
  
--- 22003,22009 ----
  platforms).
  
  @node Performing Dimensionality Analysis in GNAT,Stack Related Facilities,Overflow Check Handling in GNAT,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution id51}@anchor{150}@anchor{gnat_ugn/gnat_and_program_execution performing-dimensionality-analysis-in-gnat}@anchor{1ad}
  @section Performing Dimensionality Analysis in GNAT
  
  
*************** package Mks_Numerics is new
*** 22465,22471 ****
  @end quotation
  
  @node Stack Related Facilities,Memory Management Issues,Performing Dimensionality Analysis in GNAT,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution id52}@anchor{150}@anchor{gnat_ugn/gnat_and_program_execution stack-related-facilities}@anchor{1ae}
  @section Stack Related Facilities
  
  
--- 22406,22412 ----
  @end quotation
  
  @node Stack Related Facilities,Memory Management Issues,Performing Dimensionality Analysis in GNAT,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution id52}@anchor{151}@anchor{gnat_ugn/gnat_and_program_execution stack-related-facilities}@anchor{1ae}
  @section Stack Related Facilities
  
  
*************** If the space is exceeded, a @code{Storag
*** 22518,22524 ****
  
  For declared tasks, the default stack size is defined by the GNAT runtime,
  whose size may be modified at bind time through the @code{-d} bind switch
! (@ref{114,,Switches for gnatbind}). You can set task specific stack sizes using the
  @code{Storage_Size} pragma.
  
  For the environment task, the stack size is determined by the operating system.
--- 22459,22465 ----
  
  For declared tasks, the default stack size is defined by the GNAT runtime,
  whose size may be modified at bind time through the @code{-d} bind switch
! (@ref{115,,Switches for gnatbind}). You can set task specific stack sizes using the
  @code{Storage_Size} pragma.
  
  For the environment task, the stack size is determined by the operating system.
*************** consistent with that in the file documen
*** 22581,22587 ****
  This is not supported by the LLVM back end.
  
  @node Dynamic Stack Usage Analysis,,Static Stack Usage Analysis,Stack Related Facilities
! @anchor{gnat_ugn/gnat_and_program_execution dynamic-stack-usage-analysis}@anchor{117}@anchor{gnat_ugn/gnat_and_program_execution id55}@anchor{1b1}
  @subsection Dynamic Stack Usage Analysis
  
  
--- 22522,22528 ----
  This is not supported by the LLVM back end.
  
  @node Dynamic Stack Usage Analysis,,Static Stack Usage Analysis,Stack Related Facilities
! @anchor{gnat_ugn/gnat_and_program_execution dynamic-stack-usage-analysis}@anchor{118}@anchor{gnat_ugn/gnat_and_program_execution id55}@anchor{1b1}
  @subsection Dynamic Stack Usage Analysis
  
  
*************** The package @code{GNAT.Task_Stack_Usage}
*** 22666,22672 ****
  stack-usage reports at run time. See its body for the details.
  
  @node Memory Management Issues,Sanitizers for Ada,Stack Related Facilities,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution id56}@anchor{151}@anchor{gnat_ugn/gnat_and_program_execution memory-management-issues}@anchor{1b2}
  @section Memory Management Issues
  
  
--- 22607,22613 ----
  stack-usage reports at run time. See its body for the details.
  
  @node Memory Management Issues,Sanitizers for Ada,Stack Related Facilities,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution id56}@anchor{152}@anchor{gnat_ugn/gnat_and_program_execution memory-management-issues}@anchor{1b2}
  @section Memory Management Issues
  
  
*************** Debug Pool info:
*** 22924,22930 ****
  
  
  @node Sanitizers for Ada,,Memory Management Issues,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution id63}@anchor{152}@anchor{gnat_ugn/gnat_and_program_execution sanitizers-for-ada}@anchor{1b7}
  @section Sanitizers for Ada
  
  
--- 22865,22871 ----
  
  
  @node Sanitizers for Ada,,Memory Management Issues,GNAT and Program Execution
! @anchor{gnat_ugn/gnat_and_program_execution id63}@anchor{153}@anchor{gnat_ugn/gnat_and_program_execution sanitizers-for-ada}@anchor{1b7}
  @section Sanitizers for Ada
  
  
*************** Set a breakpoint inside the DLL
*** 25911,25917 ****
  
  At this stage, a breakpoint is set inside the DLL. From there on
  you can use standard @code{GDB} commands to debug the whole program
! (@ref{153,,Running and Debugging Ada Programs}).
  
  @node Program Built with Foreign Tools and DLL Built with GCC/GNAT,,Program and DLL Both Built with GCC/GNAT,Debugging a DLL
  @anchor{gnat_ugn/platform_specific_information id40}@anchor{217}@anchor{gnat_ugn/platform_specific_information program-built-with-foreign-tools-and-dll-built-with-gcc-gnat}@anchor{218}
--- 25852,25858 ----
  
  At this stage, a breakpoint is set inside the DLL. From there on
  you can use standard @code{GDB} commands to debug the whole program
! (@ref{154,,Running and Debugging Ada Programs}).
  
  @node Program Built with Foreign Tools and DLL Built with GCC/GNAT,,Program and DLL Both Built with GCC/GNAT,Debugging a DLL
  @anchor{gnat_ugn/platform_specific_information id40}@anchor{217}@anchor{gnat_ugn/platform_specific_information program-built-with-foreign-tools-and-dll-built-with-gcc-gnat}@anchor{218}
*************** Continue the program.
*** 25998,26004 ****
  This runs the program until it reaches the breakpoint that you’ve
  set. From that point, you can use standard @code{GDB} commands to debug
  a program as described in
! (@ref{153,,Running and Debugging Ada Programs}).
  @end itemize
  
  You can also debug the DLL by attaching @code{GDB} to a running process.
--- 25939,25945 ----
  This runs the program until it reaches the breakpoint that you’ve
  set. From that point, you can use standard @code{GDB} commands to debug
  a program as described in
! (@ref{154,,Running and Debugging Ada Programs}).
  @end itemize
  
  You can also debug the DLL by attaching @code{GDB} to a running process.
*************** Continue process execution.
*** 26068,26077 ****
  This last step will resume the process execution and stop at
  the breakpoint we have set. From there you can use standard
  @code{GDB} commands to debug a program, as described in
! @ref{153,,Running and Debugging Ada Programs}.
  
  @node Setting Stack Size from gnatlink,Setting Heap Size from gnatlink,Debugging a DLL,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information id41}@anchor{219}@anchor{gnat_ugn/platform_specific_information setting-stack-size-from-gnatlink}@anchor{12b}
  @subsubsection Setting Stack Size from @code{gnatlink}
  
  
--- 26009,26018 ----
  This last step will resume the process execution and stop at
  the breakpoint we have set. From there you can use standard
  @code{GDB} commands to debug a program, as described in
! @ref{154,,Running and Debugging Ada Programs}.
  
  @node Setting Stack Size from gnatlink,Setting Heap Size from gnatlink,Debugging a DLL,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information id41}@anchor{219}@anchor{gnat_ugn/platform_specific_information setting-stack-size-from-gnatlink}@anchor{12c}
  @subsubsection Setting Stack Size from @code{gnatlink}
  
  
*************** because the comma is a separator for thi
*** 26115,26121 ****
  @end itemize
  
  @node Setting Heap Size from gnatlink,,Setting Stack Size from gnatlink,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information id42}@anchor{21a}@anchor{gnat_ugn/platform_specific_information setting-heap-size-from-gnatlink}@anchor{12c}
  @subsubsection Setting Heap Size from @code{gnatlink}
  
  
--- 26056,26062 ----
  @end itemize
  
  @node Setting Heap Size from gnatlink,,Setting Stack Size from gnatlink,Mixed-Language Programming on Windows
! @anchor{gnat_ugn/platform_specific_information id42}@anchor{21a}@anchor{gnat_ugn/platform_specific_information setting-heap-size-from-gnatlink}@anchor{12d}
  @subsubsection Setting Heap Size from @code{gnatlink}
  
  
diff -Nrcpad gcc-16-20251130/gcc/ada/libgnat/s-oslock__darwin.ads gcc-16-20251207/gcc/ada/libgnat/s-oslock__darwin.ads
*** gcc-16-20251130/gcc/ada/libgnat/s-oslock__darwin.ads	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/ada/libgnat/s-oslock__darwin.ads	Sun Dec  7 22:32:06 2025
***************
*** 0 ****
--- 1,57 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
+ --                                                                          --
+ --                       S Y S T E M . O S _ L O C K S                      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --              Copyright (C) 2025, Free Software Foundation, Inc.          --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNARL was developed by the GNARL team at Florida State University.       --
+ -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is a Darwin version of this package
+ 
+ with Interfaces.C;
+ with System.OS_Constants;
+ 
+ package System.OS_Locks is
+    pragma Preelaborate;
+ 
+    type pthread_mutex_t is limited private;
+ 
+    subtype RTS_Lock is pthread_mutex_t;
+    --  Should be used inside the runtime system. The difference between Lock
+    --  and the RTS_Lock is that the latter serves only as a semaphore so that
+    --  we do not check for ceiling violations.
+ 
+ private
+ 
+    subtype char_array is Interfaces.C.char_array;
+ 
+    type pthread_mutex_t is record
+       Sig  : Interfaces.C.long;
+       Data : char_array (1 .. OS_Constants.PTHREAD_MUTEX_SIZE);
+    end record;
+    pragma Convention (C, pthread_mutex_t);
+ 
+ end System.OS_Locks;
diff -Nrcpad gcc-16-20251130/gcc/ada/sem_aggr.adb gcc-16-20251207/gcc/ada/sem_aggr.adb
*** gcc-16-20251130/gcc/ada/sem_aggr.adb	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/ada/sem_aggr.adb	Sun Dec  7 22:32:06 2025
*************** package body Sem_Aggr is
*** 1136,1145 ****
     begin
        Error_Msg_Warn := SPARK_Mode /= On;
  
!       if Is_Modular_Integer_Type (Index_Typ) then
           Error_Msg_N
             ("null array aggregate indexed by a modular type<<", N);
  
        elsif Is_Enumeration_Type (Index_Typ) then
           Error_Msg_N
             ("null array aggregate indexed by an enumeration type<<", N);
--- 1136,1152 ----
     begin
        Error_Msg_Warn := SPARK_Mode /= On;
  
!       if Has_Modular_Operations (Index_Typ) then
           Error_Msg_N
             ("null array aggregate indexed by a modular type<<", N);
  
+       elsif Is_Modular_Integer_Type (Index_Typ)
+         and then Has_Unsigned_Base_Range_Aspect (Base_Type (Index_Typ))
+       then
+          Error_Msg_N
+            ("null array aggregate indexed by an unsigned base range type<<",
+             N);
+ 
        elsif Is_Enumeration_Type (Index_Typ) then
           Error_Msg_N
             ("null array aggregate indexed by an enumeration type<<", N);
diff -Nrcpad gcc-16-20251130/gcc/ada/sem_attr.adb gcc-16-20251207/gcc/ada/sem_attr.adb
*** gcc-16-20251130/gcc/ada/sem_attr.adb	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/ada/sem_attr.adb	Sun Dec  7 22:32:06 2025
*************** package body Sem_Attr is
*** 2387,2393 ****
        begin
           Check_Type;
  
!          if not Is_Modular_Integer_Type (P_Type) then
              Error_Attr_P
                ("prefix of % attribute must be modular integer type");
           end if;
--- 2387,2393 ----
        begin
           Check_Type;
  
!          if not Has_Modular_Operations (P_Type) then
              Error_Attr_P
                ("prefix of % attribute must be modular integer type");
           end if;
*************** package body Sem_Attr is
*** 5778,5784 ****
           --  If not modular type, test for overflow check required
  
           else
!             if not Is_Modular_Integer_Type (P_Type)
                and then not Range_Checks_Suppressed (P_Base_Type)
              then
                 Enable_Range_Check (E1);
--- 5778,5784 ----
           --  If not modular type, test for overflow check required
  
           else
!             if not Has_Modular_Operations (P_Type)
                and then not Range_Checks_Suppressed (P_Base_Type)
              then
                 Enable_Range_Check (E1);
*************** package body Sem_Attr is
*** 6161,6167 ****
  
              Analyze (E1);
              Analyze (E2);
!             Set_Etype (N, Etype (E2));
           end;
  
        ----------
--- 6161,6186 ----
  
              Analyze (E1);
              Analyze (E2);
! 
!             --  The type of the reduction is quickly resolved if it can be
!             --  inferred definitely from its actuals. In case the reduction is
!             --  not the rhs of an assignment, its type may be used before the
!             --  attribute resolution and thus crash the compiler; so we try to
!             --  resolve it here as much as possible.
! 
!             --  Note a crash may still occur if both E1 and E2 are overloaded
!             --  and the reduction is not the rhs of an assignment ???
! 
!             if not Is_Overloaded (E2) then
!                Set_Etype (N, Etype (E2));
! 
!             elsif not Is_Overloaded (E1)
!               and then E1 in N_Entity_Id
!               and then Present (First_Formal (E1))
!               and then Present (Next_Formal (First_Formal (E1)))
!             then
!                Set_Etype (N, Etype (Next_Formal (First_Formal (E1))));
!             end if;
           end;
  
        ----------
*************** package body Sem_Attr is
*** 10202,10208 ****
  
           --  Modular integer case (wraps)
  
!          elsif Is_Modular_Integer_Type (P_Type) then
              Fold_Uint (N, (Expr_Value (E1) - 1) mod Modulus (P_Type), Static);
  
           --  Other scalar cases
--- 10221,10227 ----
  
           --  Modular integer case (wraps)
  
!          elsif Has_Modular_Operations (P_Type) then
              Fold_Uint (N, (Expr_Value (E1) - 1) mod Modulus (P_Type), Static);
  
           --  Other scalar cases
*************** package body Sem_Attr is
*** 10592,10598 ****
  
           --  Modular integer case (wraps)
  
!          elsif Is_Modular_Integer_Type (P_Type) then
              Fold_Uint (N, (Expr_Value (E1) + 1) mod Modulus (P_Type), Static);
  
           --  Other scalar cases
--- 10611,10617 ----
  
           --  Modular integer case (wraps)
  
!          elsif Has_Modular_Operations (P_Type) then
              Fold_Uint (N, (Expr_Value (E1) + 1) mod Modulus (P_Type), Static);
  
           --  Other scalar cases
*************** package body Sem_Attr is
*** 12701,12782 ****
  
           when Attribute_Reduce =>
              declare
!                Reducer_Subp_Name : constant Node_Id := First (Expressions (N));
!                Init_Value_Exp    : constant Node_Id :=
!                  Next (Reducer_Subp_Name);
!                Op : Entity_Id := Empty;
  
!                Index : Interp_Index;
!                It    : Interp;
  
!                function Proper_Op
!                  (Op     : Entity_Id;
!                   Strict : Boolean := False) return Boolean;
!                --  Is Op a suitable reducer subprogram?
!                --  Strict indicates whether ops found in Standard should be
!                --  considered even if Typ is not a predefined type.
  
!                ---------------
!                -- Proper_Op --
!                ---------------
  
!                function Proper_Op
!                  (Op     : Entity_Id;
!                   Strict : Boolean := False) return Boolean
                 is
                    F1, F2 : Entity_Id;
                 begin
!                   F1 := First_Formal (Op);
!                   if No (F1) then
                       return False;
                    else
                       F2 := Next_Formal (F1);
                       if No (F2)
                         or else Present (Next_Formal (F2))
                       then
                          return False;
  
!                      elsif Ekind (Op) = E_Procedure then
                          return Ekind (F1) = E_In_Out_Parameter
!                           and then Covers (Typ, Etype (F1));
  
!                      elsif Covers (Typ, Etype (Op)) then
                          return True;
  
!                      elsif Ekind (Op) = E_Operator
!                        and then Scope (Op) = Standard_Standard
!                        and then not Strict
                       then
                          --  Nonassociative ops like division are unlikely to
                          --  come up in practice, but they are legal.
  
!                         case Any_Operator_Name'(Chars (Op)) is
                             when Name_Op_Add
!                              | Name_Op_Subtract
!                              | Name_Op_Multiply
!                              | Name_Op_Divide
!                              | Name_Op_Expon
                             =>
!                               return Is_Numeric_Type (Typ);
  
                             when Name_Op_Mod | Name_Op_Rem =>
!                               return Is_Numeric_Type (Typ)
!                                 and then Is_Discrete_Type (Typ);
  
                             when Name_Op_And | Name_Op_Or | Name_Op_Xor =>
                                --  No Boolean array operators in Standard
!                               return Is_Boolean_Type (Typ)
!                                 or else Is_Modular_Integer_Type (Typ);
  
                             when Name_Op_Concat =>
!                               return Is_Array_Type (Typ)
!                                 and then Number_Dimensions (Typ) = 1;
  
!                            when Name_Op_Eq | Name_Op_Ne
!                              | Name_Op_Lt | Name_Op_Le
!                              | Name_Op_Gt | Name_Op_Ge
                             =>
!                               return Is_Boolean_Type (Typ);
  
                             when Name_Op_Abs | Name_Op_Not =>
                                --  unary ops were already handled
--- 12720,13166 ----
  
           when Attribute_Reduce =>
              declare
!                Reducer_N : constant Node_Id := First (Expressions (N));
!                Reducer_E : Entity_Id;
  
!                Init_Value_Expr : constant Node_Id := Next (Reducer_N);
!                Accum_Typ       : Entity_Id := Typ;
!                Value_Typ       : Entity_Id := Empty;
  
!                function Get_Value_Subtype return Entity_Id;
!                --  If non-ambiguous, this function sets the reducer's entity
!                --  and returns the value subtype of the expression inside the
!                --  array aggregate.
  
!                function Is_Reducer_Subprogram
!                  (E : Entity_Id;
!                   Check_Value_Subtype : Boolean := True) return Boolean;
!                --  This function checks whether E is a proper reducer
!                --  subprogram. If Check_Value_Subtype is true then the second
!                --  formal of E is matched against Value_Typ.
  
!                function Make_Array_Type
!                  (Index, Value : Entity_Id) return Entity_Id;
!                --  This function returs a simple array type to resolve the
!                --  array aggregate.
! 
!                -----------------------
!                -- Get_Value_Subtype --
!                -----------------------
! 
!                function Get_Value_Subtype return Entity_Id is
!                   Loop_Var, Init_Var           : Entity_Id;
!                   Reducer_Call, Copy_Aggr_Expr : Node_Id;
!                   Copy_Reducer_N               : constant Node_Id :=
!                     Copy_Separate_Tree (Reducer_N);
! 
!                   procedure Error_Mixed_Function_Procedure_Reducers;
!                   --  This procedure emits an error message with all possible
!                   --  interpretations of the reducer subprogram when there is
!                   --  a mix of functions and procedures. Note that, this is
!                   --  only a potential ambiguity but we cannot resolve it in a
!                   --  definitive way as there is no construct that accepts both
!                   --  functions and procedures together.
! 
!                   function Reducer_Call_Statement_Kind return Entity_Kind;
!                   --  This function returns the kind of a call statement able
!                   --  to contain a reducer call. If all the candidate
!                   --  interpretation subprograms that can be reducers agree on
!                   --  the same subprogram type, meaning that they are all
!                   --  procedures or all function/operators, then this function
!                   --  returns either E_Procedure or E_Function respectively.
! 
!                   ---------------------------------------------
!                   -- Error_Mixed_Function_Procedure_Reducers --
!                   ---------------------------------------------
! 
!                   procedure Error_Mixed_Function_Procedure_Reducers is
!                      First_Time : Boolean := True;
!                      I          : Interp_Index;
!                      It         : Interp;
!                   begin
!                      Get_First_Interp (Reducer_N, I, It);
!                      while Present (It.Nam) loop
!                         if Is_Reducer_Subprogram (It.Nam,
!                                                   Check_Value_Subtype => False)
!                         then
!                            --  It may be the case that no interpretation
!                            --  matches the proper reducer profile, in this case
!                            --  we avoid emitting the error here.
! 
!                            if First_Time then
!                               Error_Msg_N
!                                 ("potential ambiguous reducer subprogram " &
!                                  "(cannot resolve&)",
!                                  Reducer_N);
!                               First_Time := False;
!                            end if;
! 
!                            if Ekind (It.Nam) = E_Function then
!                               Error_Msg_Sloc := Sloc (It.Nam);
!                               Error_Msg_N
!                                 ("\\possible function interpretation#!",
!                                  Reducer_N);
!                            else
!                               Error_Msg_Sloc := Sloc (It.Nam);
!                               Error_Msg_N
!                                 ("\\possible procedure interpretation#!",
!                                  Reducer_N);
!                            end if;
!                         end if;
!                         Get_Next_Interp (I, It);
!                      end loop;
! 
!                      if First_Time then
!                         Error_Msg_N ("no suitable reducer subprogram found",
!                                      Reducer_N);
!                      end if;
!                   end Error_Mixed_Function_Procedure_Reducers;
! 
!                   ---------------------------------
!                   -- Reducer_Call_Statement_Kind --
!                   ---------------------------------
! 
!                   function Reducer_Call_Statement_Kind return Entity_Kind is
!                      Kind : Entity_Kind := E_Void;
!                      I    : Interp_Index;
!                      It   : Interp;
!                   begin
!                      if not Is_Overloaded (Reducer_N) then
!                         return Ekind (Entity (Reducer_N));
!                      end if;
! 
!                      Get_First_Interp (Reducer_N, I, It);
!                      while Present (It.Nam) loop
!                         if Is_Reducer_Subprogram (It.Nam,
!                                                   Check_Value_Subtype => False)
!                         then
!                            case Kind is
!                               --  First matching interpretation sets the kind
!                               when E_Void =>
!                                  if Ekind (It.Nam)
!                                    not in E_Procedure | E_Function | E_Operator
!                                  then
!                                     return E_Void;
!                                  end if;
!                                  Kind := Ekind (It.Nam);
! 
!                               --  Subsequent matching interpretations must
!                               --  agree on the same kind.
!                               when E_Procedure =>
!                                  if Ekind (It.Nam) /= E_Procedure then
!                                     return E_Void;
!                                  end if;
! 
!                               --  Functions and Operators match the same call
!                               --  statement.
!                               when E_Function | E_Operator =>
!                                  if Ekind (It.Nam)
!                                    not in E_Function | E_Operator
!                                  then
!                                     return E_Void;
!                                  end if;
! 
!                               when others =>
!                                  return E_Void;
!                            end case;
!                         end if;
!                         Get_Next_Interp (I, It);
!                      end loop;
!                      return Kind;
!                   end Reducer_Call_Statement_Kind;
! 
!                --  Start of processing for Get_Value_Subtype
! 
!                begin
!                   --  In case the reducer is not overloaded, check directly
!                   --  its second formal for the value subtype.
! 
!                   if not Is_Overloaded (Reducer_N) then
!                      if Is_Reducer_Subprogram (Entity (Reducer_N),
!                                                Check_Value_Subtype => False)
!                      then
!                         return Etype (Next_Formal
!                                        (First_Formal (Entity (Reducer_N))));
! 
!                      --  Return any type to signal the caller that no proper
!                      --  reducer subprogram was found.
! 
!                      else
!                         return Any_Type;
!                      end if;
!                   end if;
! 
!                   --  RM 4.5.10(11/5): the reducer subprogram is required to be
!                   --  subtype conformant with one of the following profiles:
! 
!                   --  function Reducer
!                   --    (Accum : Accum_Subtype;
!                   --     Value : Value_Subtype) return Accum_Subtype;
! 
!                   --  Or
! 
!                   --  procedure Reducer
!                   --    (Accum : in out Accum_Subtype;
!                   --     Value : in Value_Subtype);
! 
!                   --  The Value_Subtype is the type of the expression of the
!                   --  array aggregate, or its equivalent expansion in case of P
!                   --  being an iterable container. Thus, given the expression N
!                   --  as:
! 
!                   --  [for I in|of It => Expr (I)]'Reduce (Reducer, Init);
! 
!                   --  To find whether there are no suitable interpretations, or
!                   --  too many, for the combination of reducer and expression
!                   --  we resolve the following call:
! 
!                   --    Reducer (Init_Var, Expr (I))
! 
!                   --  Where the context is augmented with the iteration
!                   --  variable I of the right type, and Init_Var of type
!                   --  Accum_Subtype. If the Reducer has both procedure and
!                   --  function interpretations with the proper reducer profile
!                   --  an ambiguity error is emitted. Note that, this could be a
!                   --  false positive as the two may coexist without ambiguity
!                   --  but a more complex resolution is needed for that.
! 
!                   --  If the call above resolves correctly, we have a single,
!                   --  non-ambiguous, reduction expression. Note that, we still
!                   --  need to check whether Reducer has a subtype conformant
!                   --  profile, eg. the resolved reducer may have a different
!                   --  number of formals with default expressions.
! 
!                   declare
!                      Dummy_Loop, Iter_Spec, Aggr_Expr : Node_Id;
!                   begin
!                      --  We start by preanalyzing the following loop to obtain
!                      --  the type of the iteration variable Loop_Var:
! 
!                      --    for I in|of It loop
!                      --      null;
!                      --    end loop;
! 
!                      if Nkind (P) = N_Aggregate then
!                         declare
!                            Stream, Stream_It : Node_Id;
!                         begin
!                            Stream := First (Component_Associations (P));
!                            Stream_It := Iterator_Specification (Stream);
!                            Aggr_Expr := Expression (Stream);
! 
!                            --  Case [for I of It => Aggr_Expr]
! 
!                            if Nkind (Stream) = N_Iterated_Component_Association
!                              and then Present (Stream_It)
!                              and then Of_Present (Stream_It)
!                            then
!                               Iter_Spec :=
!                                 Make_Iteration_Scheme (Loc,
!                                   Iterator_Specification =>
!                                     Relocate_Node (Stream_It));
!                               Loop_Var :=
!                                 Defining_Identifier
!                                   (Iterator_Specification (Iter_Spec));
! 
!                            --  Case [for I in Range => Aggr_Expr]
! 
!                            else
!                               Iter_Spec :=
!                                 Make_Iteration_Scheme (Loc,
!                                   Loop_Parameter_Specification =>
!                                     Make_Loop_Parameter_Specification  (Loc,
!                                       Defining_Identifier =>
!                                         Defining_Identifier
!                                           (Copy_Separate_Tree (Stream)),
!                                       Discrete_Subtype_Definition =>
!                                         Relocate_Node (First (Discrete_Choices
!                                                                (Stream)))));
!                               Loop_Var :=
!                                 Defining_Identifier
!                                   (Loop_Parameter_Specification (Iter_Spec));
!                            end if;
!                         end;
! 
!                      --  Case of prefix name
! 
!                      else
!                         Loop_Var := Make_Temporary (Loc, 'I');
!                         Aggr_Expr := Make_Identifier (Loc, Chars (Loop_Var));
!                         Iter_Spec := Make_Iteration_Scheme (Loc,
!                           Iterator_Specification =>
!                             Make_Iterator_Specification (Loc,
!                               Defining_Identifier => Loop_Var,
!                               Of_Present          => True,
!                               Name                => P));
!                      end if;
! 
!                      Dummy_Loop := Make_Loop_Statement (Loc,
!                                      Iteration_Scheme => Iter_Spec);
!                      Preanalyze (Dummy_Loop);
! 
!                      --  The preanalysis of the loop sets the type of the
!                      --  iteration variable. It may happen that another loop
!                      --  variable is created in the preanalysis, in case the
!                      --  right one is found at its next entity.
! 
!                      if Etype (Loop_Var) = Any_Type then
!                         Loop_Var := Next_Entity (Loop_Var);
!                      end if;
!                      pragma Assert (Present (Etype (Loop_Var)));
!                      pragma Assert (Etype (Loop_Var) /= Any_Type);
! 
!                      Copy_Aggr_Expr := Copy_Separate_Tree (Aggr_Expr);
!                   end;
! 
!                   --  Instead of directly using the initialization expression,
!                   --  which would require a full copy to be used in another
!                   --  list, we just setup a variable Init_Var of the same type.
! 
!                   declare
!                      Init_E : constant Entity_Id := Make_Temporary (Loc, 'B');
!                   begin
!                      Set_Etype (Init_E, Accum_Typ);
!                      Mutate_Ekind (Init_E, E_Variable);
! 
!                      Init_Var := Make_Identifier (Loc, Chars (Init_E));
!                      Set_Entity (Init_Var, Init_E);
!                   end;
! 
!                   case Reducer_Call_Statement_Kind is
!                      when E_Procedure =>
!                         Reducer_Call :=
!                           Make_Procedure_Call_Statement (Sloc (Reducer_N),
!                             Name => Copy_Reducer_N,
!                             Parameter_Associations =>
!                               New_List (Init_Var, Copy_Aggr_Expr));
! 
!                      when E_Function | E_Operator =>
!                         Reducer_Call :=
!                           Make_Function_Call (Sloc (Reducer_N),
!                             Name => Copy_Reducer_N,
!                             Parameter_Associations =>
!                               New_List (Init_Var, Copy_Aggr_Expr));
!                         Set_Etype (Reducer_Call, Accum_Typ);
! 
!                      when others =>
!                         Error_Mixed_Function_Procedure_Reducers;
!                         return Empty;
!                   end case;
! 
!                   --  To resolve Reducer_Call we augment the context with the
!                   --  initialization and iteration (which may hide homonyms)
!                   --  variables. Specifically, we need to restore the
!                   --  visibility of the iteration variable since the analysis
!                   --  of the dummy loop above hides it on exit.
! 
!                   declare
!                      Save_Homonym : constant Entity_Id :=
!                        Get_Name_Entity_Id (Chars (Loop_Var));
!                   begin
!                      Set_Current_Entity (Init_Var);
!                      Set_Current_Entity (Loop_Var);
!                      Set_Is_Immediately_Visible (Loop_Var);
!                      Set_Is_Not_Self_Hidden (Loop_Var);
! 
!                      Push_Scope (Scope (Loop_Var));
!                      Preanalyze_And_Resolve (Reducer_Call);
!                      Pop_Scope;
! 
!                      Set_Name_Entity_Id (Chars (Loop_Var), Save_Homonym);
!                      Set_Name_Entity_Id (Chars (Init_Var), Empty);
!                   end;
! 
!                   --  In case resolution failed, the error message is too
!                   --  generic and can be improved with additional context.
! 
!                   if Error_Posted (Reducer_Call) then
!                      Error_Msg_N ("\\no suitable reducer subprogram found",
!                                   Reducer_Call);
! 
!                   --  Resolution succeeded so far
! 
!                   elsif not Is_Overloaded (Reducer_Call) then
!                      pragma Assert (Present (Entity (Copy_Reducer_N)));
!                      pragma Assert (Present (Etype (Copy_Aggr_Expr)));
! 
!                      --  Set the correct reducer entity and then return the
!                      --  value subtype.
! 
!                      Set_Entity (Reducer_N, Entity (Copy_Reducer_N));
!                      return Etype (Copy_Aggr_Expr);
!                   end if;
!                   return Empty;
!                end Get_Value_Subtype;
! 
!                ---------------------------
!                -- Is_Reducer_Subprogram --
!                ---------------------------
! 
!                function Is_Reducer_Subprogram
!                  (E : Entity_Id;
!                   Check_Value_Subtype : Boolean := True) return Boolean
                 is
                    F1, F2 : Entity_Id;
                 begin
!                   F1 := First_Formal (E);
!                   if No (F1)
!                     or else not Covers (Accum_Typ, Etype (F1))
!                   then
                       return False;
                    else
                       F2 := Next_Formal (F1);
                       if No (F2)
                         or else Present (Next_Formal (F2))
+                        or else (Check_Value_Subtype
+                                  and then not Covers (Value_Typ,
+                                                       Etype (F2)))
                       then
                          return False;
  
!                      elsif Ekind (E) = E_Procedure then
                          return Ekind (F1) = E_In_Out_Parameter
!                           and then Ekind (F2) = E_In_Parameter;
  
!                      elsif Covers (Accum_Typ, Etype (E)) then
                          return True;
  
!                      elsif Ekind (E) = E_Operator
!                        and then Scope (E) = Standard_Standard
                       then
                          --  Nonassociative ops like division are unlikely to
                          --  come up in practice, but they are legal.
  
!                         case Any_Operator_Name'(Chars (E)) is
                             when Name_Op_Add
!                               | Name_Op_Subtract
!                               | Name_Op_Multiply
!                               | Name_Op_Divide
!                               | Name_Op_Expon
                             =>
!                               return Is_Numeric_Type (Accum_Typ);
  
                             when Name_Op_Mod | Name_Op_Rem =>
!                               return Is_Numeric_Type (Accum_Typ)
!                                 and then Is_Discrete_Type (Accum_Typ);
  
                             when Name_Op_And | Name_Op_Or | Name_Op_Xor =>
                                --  No Boolean array operators in Standard
!                               return Is_Boolean_Type (Accum_Typ)
!                                 or else Has_Modular_Operations (Accum_Typ);
  
                             when Name_Op_Concat =>
!                               return Is_Array_Type (Accum_Typ)
!                                 and then Number_Dimensions (Accum_Typ) = 1;
  
!                            when Name_Op_Eq
!                               | Name_Op_Ne
!                               | Name_Op_Lt
!                               | Name_Op_Le
!                               | Name_Op_Gt
!                               | Name_Op_Ge
                             =>
!                               return Is_Boolean_Type (Accum_Typ);
  
                             when Name_Op_Abs | Name_Op_Not =>
                                --  unary ops were already handled
*************** package body Sem_Attr is
*** 12788,12833 ****
                          return False;
                       end if;
                    end if;
!                end Proper_Op;
  
              begin
!                --  First try to resolve the reducer and then, if this succeeds,
!                --  resolve the initial value.  This nicely deals with confused
!                --  programmers who swap the two items.
  
!                if Is_Overloaded (Reducer_Subp_Name) then
!                   Outer :
!                   for Retry in Boolean loop
!                      Get_First_Interp (Reducer_Subp_Name, Index, It);
!                      while Present (It.Nam) loop
!                         if Proper_Op (It.Nam, Strict => not Retry) then
!                            Op := It.Nam;
!                            Set_Entity (Reducer_Subp_Name, Op);
!                            exit Outer;
!                         end if;
  
!                         Get_Next_Interp (Index, It);
!                      end loop;
!                   end loop Outer;
  
!                elsif Nkind (Reducer_Subp_Name) = N_Attribute_Reference
!                  and then (Attribute_Name (Reducer_Subp_Name) = Name_Max
!                    or else Attribute_Name (Reducer_Subp_Name) = Name_Min)
                 then
!                   Op := Reducer_Subp_Name;
  
!                elsif Is_Entity_Name (Reducer_Subp_Name)
!                  and then Proper_Op (Entity (Reducer_Subp_Name))
                 then
!                   Op := Entity (Reducer_Subp_Name);
!                   Set_Etype (N, Typ);
                 end if;
  
!                if No (Op) then
!                   Error_Msg_N ("no suitable reducer subprogram found",
!                     Reducer_Subp_Name);
                 else
!                   Resolve (Init_Value_Exp, Typ);
                 end if;
              end;
  
--- 13172,13329 ----
                          return False;
                       end if;
                    end if;
!                end Is_Reducer_Subprogram;
! 
!                ---------------------
!                -- Make_Array_Type --
!                ---------------------
! 
!                function Make_Array_Type
!                  (Index, Value : Entity_Id) return Entity_Id
!                is
!                   Array_Type : constant Entity_Id := Make_Temporary (Loc, 'A');
!                   Range_N    : constant Node_Id :=
!                     Make_Range (Loc,
!                       Low_Bound  => Type_Low_Bound (Index),
!                       High_Bound => Type_High_Bound (Index));
!                begin
!                   Set_In_List (Range_N);
!                   Set_Etype (Range_N, Index);
! 
!                   Set_Etype (Array_Type, Array_Type);
!                   Set_Scope (Array_Type, Find_Enclosing_Scope (N));
!                   Mutate_Ekind (Array_Type, E_Array_Type);
!                   Set_Component_Type (Array_Type, Value);
!                   Set_First_Index (Array_Type, Range_N);
! 
!                   return Array_Type;
!                end Make_Array_Type;
  
              begin
!                if Error_Posted (N) then
!                   return;
!                end if;
  
!                --  If no error has been posted and the accumulation type is
!                --  constrained, then the resolution of the reducer can start.
  
!                if Nkind (Reducer_N) = N_Attribute_Reference then
!                   if Attribute_Name (Reducer_N) in Name_Max | Name_Min then
!                      Value_Typ := Etype (Reducer_N);
!                      Reducer_E := Reducer_N;
!                   else
!                      Error_Msg_N ("only Min and Max attributes are allowed " &
!                                   "as reducers",
!                                   Reducer_N);
!                      return;
!                   end if;
  
!                elsif not Is_Entity_Name (Reducer_N) then
!                   Error_Msg_N ("reducer must be a subprogram, an operator, " &
!                                "or an attribute",
!                                Reducer_N);
! 
!                   --  If the reducer has no entity, but the initial expression
!                   --  does, then they have most likely been swapped.
! 
!                   if Nkind (Init_Value_Expr) = N_Attribute_Reference
!                     or else Is_Entity_Name (Init_Value_Expr)
!                   then
!                      Error_Msg_N ("\\possible swap of reducer and initial " &
!                                   "value!",
!                                   Reducer_N);
!                   end if;
!                   return;
! 
!                else
!                   Value_Typ := Get_Value_Subtype;
!                   Reducer_E := Entity (Reducer_N);
! 
!                   --  Stop in case of no suitable interpretation or ambiguous
!                   --  expression, an error has already been posted.
! 
!                   if No (Value_Typ) then
!                      return;
! 
!                   elsif not Is_Reducer_Subprogram (Reducer_E) then
!                      Error_Msg_N ("no suitable reducer subprogram found",
!                                   Reducer_N);
!                      return;
!                   end if;
!                end if;
! 
!                --  After resolving the reducer, determine the correct
!                --  Accum_Subtype: if the reducer is an attribute (Min or Max),
!                --  then the prefix type is the accumulation type.
! 
!                if Nkind (Reducer_E) = N_Attribute_Reference then
!                   Accum_Typ := Etype (Prefix (Reducer_E));
! 
!                --  If an operator from standard, then the type of its first
!                --  formal woudl be Any_Type, in this case we make sure we don't
!                --  use an universal type to avoid resolution problems later on.
! 
!                elsif Ekind (Reducer_E) = E_Operator
!                  or else Scope (Reducer_E) = Standard_Standard
                 then
!                   if Accum_Typ = Universal_Integer then
!                      Accum_Typ := Standard_Integer;
!                   elsif Accum_Typ = Universal_Real then
!                      Accum_Typ := Standard_Float;
!                   end if;
  
!                --  Otherwise, the Accum_Subtype is the subtype of the first
!                --  formal of the reducer subprogram RM 4.5.10(19/5).
! 
!                else
!                   Accum_Typ := Etype (First_Formal (Reducer_E));
!                end if;
!                Set_Etype (N, Accum_Typ);
! 
!                --  Accumulation type must be nonlimited, RM 4.5.10(8/5)
! 
!                if Is_Limited_Type (Accum_Typ) then
!                   Error_Msg_N
!                     ("accumulated subtype of Reduce must be nonlimited", N);
! 
!                --  If the Accum_Typ is an unconstrained array and the reducer
!                --  subprogram is a function then a Constraint_Error will be
!                --  raised at runtime as most computations will change its
!                --  length type during the reduction execution, RM 4.5.10(25/5).
!                --  For instance, this is the case with:
!                --    [...]'Reduce ("&", ...)
!                --  When the expression yields non-empty strings, the reduction
!                --  repeatedly executes the following assignment:
!                --    Acc := Expr (I) & Acc;
!                --  which will raise a Constraint_Error since the number of
!                --  elements is increasing.
! 
!                elsif Nkind (Reducer_E) /= N_Attribute_Reference
!                  and then Ekind (Reducer_E) = E_Function
!                  and then not Is_Numeric_Type (Base_Type (Accum_Typ))
!                  and then not Is_Constrained (Accum_Typ)
                 then
!                   declare
!                      Discard : Node_Id;
!                      pragma Unreferenced (Discard);
!                   begin
!                      Discard := Compile_Time_Constraint_Error
!                                   (Reducer_N,
!                                    "potential length mismatch!!??",
!                                    Accum_Typ);
!                   end;
                 end if;
  
!                --  Complete the resolution of the reduction expression by
!                --  resolving the initial expression and array aggregate.
! 
!                Resolve (Init_Value_Expr, Accum_Typ);
!                if Nkind (P) = N_Aggregate then
!                   Resolve_Aggregate (P,
!                     Make_Array_Type (Index => Standard_Positive,
!                                      Value => Value_Typ));
                 else
!                   Resolve (P);
                 end if;
              end;
  
diff -Nrcpad gcc-16-20251130/gcc/ada/sem_ch12.adb gcc-16-20251207/gcc/ada/sem_ch12.adb
*** gcc-16-20251130/gcc/ada/sem_ch12.adb	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/ada/sem_ch12.adb	Sun Dec  7 22:32:06 2025
*************** package body Sem_Ch12 is
*** 15794,15800 ****
                 Diagnose_Predicated_Actual;
  
              when N_Formal_Signed_Integer_Type_Definition =>
!                if not Is_Signed_Integer_Type (Act_T) then
                    Error_Msg_NE
                      ("expect signed integer type in instantiation of&",
                       Actual, Gen_T);
--- 15794,15800 ----
                 Diagnose_Predicated_Actual;
  
              when N_Formal_Signed_Integer_Type_Definition =>
!                if not Has_Overflow_Operations (Act_T) then
                    Error_Msg_NE
                      ("expect signed integer type in instantiation of&",
                       Actual, Gen_T);
*************** package body Sem_Ch12 is
*** 15804,15810 ****
                 Diagnose_Predicated_Actual;
  
              when N_Formal_Modular_Type_Definition =>
!                if not Is_Modular_Integer_Type (Act_T) then
                    Error_Msg_NE
                      ("expect modular type in instantiation of &",
                         Actual, Gen_T);
--- 15804,15810 ----
                 Diagnose_Predicated_Actual;
  
              when N_Formal_Modular_Type_Definition =>
!                if not Has_Modular_Operations (Act_T) then
                    Error_Msg_NE
                      ("expect modular type in instantiation of &",
                         Actual, Gen_T);
*************** package body Sem_Ch12 is
*** 16929,16935 ****
              Scope_Stack.Decrement_Last;
              S := Current_Scope;
           else
!             SE := (Is_Transient => False, others => <>);
           end if;
  
           --  After child instantiation is complete, remove from scope stack the
--- 16929,16935 ----
              Scope_Stack.Decrement_Last;
              S := Current_Scope;
           else
!             SE.Is_Transient := False;
           end if;
  
           --  After child instantiation is complete, remove from scope stack the
*************** package body Sem_Ch12 is
*** 19230,19242 ****
              end if;
  
           when N_Formal_Signed_Integer_Type_Definition =>
!             if not Is_Integer_Type (Def_Sub) then
                 Error_Msg_NE ("default for& must be a discrete type",
                   Default, Formal);
              end if;
  
           when N_Formal_Modular_Type_Definition =>
!             if not Is_Modular_Integer_Type (Def_Sub) then
                 Error_Msg_NE ("default for& must be a modular_integer Type",
                   Default, Formal);
              end if;
--- 19230,19242 ----
              end if;
  
           when N_Formal_Signed_Integer_Type_Definition =>
!             if not Has_Overflow_Operations (Def_Sub) then
                 Error_Msg_NE ("default for& must be a discrete type",
                   Default, Formal);
              end if;
  
           when N_Formal_Modular_Type_Definition =>
!             if not Has_Modular_Operations (Def_Sub) then
                 Error_Msg_NE ("default for& must be a modular_integer Type",
                   Default, Formal);
              end if;
diff -Nrcpad gcc-16-20251130/gcc/ada/sem_ch13.adb gcc-16-20251207/gcc/ada/sem_ch13.adb
*** gcc-16-20251130/gcc/ada/sem_ch13.adb	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/ada/sem_ch13.adb	Sun Dec  7 22:32:06 2025
*************** package body Sem_Ch13 is
*** 18166,18172 ****
           elsif Ekind (E) = E_Function then
              return No (First_Formal (E))
                or else
!                 (Is_Signed_Integer_Type (Etype (First_Formal (E)))
                    and then No (Next_Formal (First_Formal (E))));
           else
              return False;
--- 18166,18172 ----
           elsif Ekind (E) = E_Function then
              return No (First_Formal (E))
                or else
!                 (Has_Overflow_Operations (Etype (First_Formal (E)))
                    and then No (Next_Formal (First_Formal (E))));
           else
              return False;
diff -Nrcpad gcc-16-20251130/gcc/ada/sem_ch2.adb gcc-16-20251207/gcc/ada/sem_ch2.adb
*** gcc-16-20251130/gcc/ada/sem_ch2.adb	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/ada/sem_ch2.adb	Sun Dec  7 22:32:06 2025
*************** package body Sem_Ch2 is
*** 124,130 ****
        --  prior analysis (or construction) of the literal, and after type
        --  checking and resolution.
  
!       if No (Etype (N)) or else not Is_Modular_Integer_Type (Etype (N)) then
           Set_Etype (N, Universal_Integer);
        end if;
  
--- 124,130 ----
        --  prior analysis (or construction) of the literal, and after type
        --  checking and resolution.
  
!       if No (Etype (N)) or else not Has_Modular_Operations (Etype (N)) then
           Set_Etype (N, Universal_Integer);
        end if;
  
diff -Nrcpad gcc-16-20251130/gcc/ada/sem_ch3.adb gcc-16-20251207/gcc/ada/sem_ch3.adb
*** gcc-16-20251130/gcc/ada/sem_ch3.adb	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/ada/sem_ch3.adb	Sun Dec  7 22:32:06 2025
*************** package body Sem_Ch3 is
*** 11313,11321 ****
        --  not. It is OK for the new bound we are creating, but not for
        --  the old one??? Still if it never happens, no problem.
  
!       --  This must be disabled on unsigned base range types because their
!       --  base type is a modular type, and their type is a signed integer
!       --  type.
  
        if not Has_Unsigned_Base_Range_Aspect (Base_Type (Par_T)) then
           Analyze_And_Resolve (Bound, Base_Type (Par_T));
--- 11313,11320 ----
        --  not. It is OK for the new bound we are creating, but not for
        --  the old one??? Still if it never happens, no problem.
  
!       --  This must be disabled on types with the unsigned base range aspect
!       --  to avoid reporting spurious errors.
  
        if not Has_Unsigned_Base_Range_Aspect (Base_Type (Par_T)) then
           Analyze_And_Resolve (Bound, Base_Type (Par_T));
*************** package body Sem_Ch3 is
*** 24100,24106 ****
        Set_Scalar_Range   (Implicit_Base, Scalar_Range   (Base_Typ));
        Set_Modulus        (Implicit_Base, Modulus        (Base_Typ));
  
!       Mutate_Ekind           (T, E_Signed_Integer_Subtype);
        Set_Etype              (T, Implicit_Base);
        Set_Size_Info          (T, Implicit_Base);
        Inherit_Rep_Item_Chain (T, Implicit_Base);
--- 24099,24107 ----
        Set_Scalar_Range   (Implicit_Base, Scalar_Range   (Base_Typ));
        Set_Modulus        (Implicit_Base, Modulus        (Base_Typ));
  
!       Set_Has_Unsigned_Base_Range_Aspect (Implicit_Base);
! 
!       Mutate_Ekind           (T, E_Modular_Integer_Subtype);
        Set_Etype              (T, Implicit_Base);
        Set_Size_Info          (T, Implicit_Base);
        Inherit_Rep_Item_Chain (T, Implicit_Base);
diff -Nrcpad gcc-16-20251130/gcc/ada/sem_ch4.adb gcc-16-20251207/gcc/ada/sem_ch4.adb
*** gcc-16-20251130/gcc/ada/sem_ch4.adb	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/ada/sem_ch4.adb	Sun Dec  7 22:32:06 2025
*************** package body Sem_Ch4 is
*** 1491,1502 ****
                       Typ := Etype (Arg);
                    end if;
  
!                   if Is_Signed_Integer_Type (Typ) then
                       Error_Msg_N
                         ("possible missing instantiation of "
                          & "'Text_'I'O.'Integer_'I'O!", Nam);
  
!                   elsif Is_Modular_Integer_Type (Typ) then
                       Error_Msg_N
                         ("possible missing instantiation of "
                          & "'Text_'I'O.'Modular_'I'O!", Nam);
--- 1491,1502 ----
                       Typ := Etype (Arg);
                    end if;
  
!                   if Has_Overflow_Operations (Typ) then
                       Error_Msg_N
                         ("possible missing instantiation of "
                          & "'Text_'I'O.'Integer_'I'O!", Nam);
  
!                   elsif Has_Modular_Operations (Typ) then
                       Error_Msg_N
                         ("possible missing instantiation of "
                          & "'Text_'I'O.'Modular_'I'O!", Nam);
diff -Nrcpad gcc-16-20251130/gcc/ada/sem_eval.adb gcc-16-20251207/gcc/ada/sem_eval.adb
*** gcc-16-20251130/gcc/ada/sem_eval.adb	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/ada/sem_eval.adb	Sun Dec  7 22:32:06 2025
*************** package body Sem_Eval is
*** 666,672 ****
     is
     begin
        if (not Stat or else In_Inlined_Body)
!         and then Is_Signed_Integer_Type (Etype (N))
        then
           declare
              BT : constant Entity_Id := Base_Type (Etype (N));
--- 666,672 ----
     is
     begin
        if (not Stat or else In_Inlined_Body)
!         and then Has_Overflow_Operations (Etype (N))
        then
           declare
              BT : constant Entity_Id := Base_Type (Etype (N));
*************** package body Sem_Eval is
*** 1494,1501 ****
                 --  the types are not modular (e.g. X < X + 1 is False if X is
                 --  the largest number).
  
!                if not Is_Modular_Integer_Type (Ltyp)
!                  and then not Is_Modular_Integer_Type (Rtyp)
                 then
                    if Loffs < Roffs then
                       Diff.all := Roffs - Loffs;
--- 1494,1501 ----
                 --  the types are not modular (e.g. X < X + 1 is False if X is
                 --  the largest number).
  
!                if not Has_Modular_Operations (Ltyp)
!                  and then not Has_Modular_Operations (Rtyp)
                 then
                    if Loffs < Roffs then
                       Diff.all := Roffs - Loffs;
*************** package body Sem_Eval is
*** 2094,2100 ****
  
              --  Adjust the result by the modulus if the type is a modular type
  
!             if Is_Modular_Integer_Type (Ltype) then
                 Result := Result mod Modulus (Ltype);
              end if;
  
--- 2094,2100 ----
  
              --  Adjust the result by the modulus if the type is a modular type
  
!             if Has_Modular_Operations (Ltype) then
                 Result := Result mod Modulus (Ltype);
              end if;
  
*************** package body Sem_Eval is
*** 2826,2832 ****
  
        --  Modular integer literals must be in their base range
  
!       if Is_Modular_Integer_Type (Typ)
          and then Is_Out_Of_Range (N, Base_Type (Typ), Assume_Valid => True)
        then
           Out_Of_Range (N);
--- 2826,2832 ----
  
        --  Modular integer literals must be in their base range
  
!       if Has_Modular_Operations (Typ)
          and then Is_Out_Of_Range (N, Base_Type (Typ), Assume_Valid => True)
        then
           Out_Of_Range (N);
*************** package body Sem_Eval is
*** 2969,2975 ****
  
        --  Compile time evaluation of logical operation
  
!       if Is_Modular_Integer_Type (Etype (N)) then
           Left_Int  := Expr_Value (Left);
           Right_Int := Expr_Value (Right);
  
--- 2969,2975 ----
  
        --  Compile time evaluation of logical operation
  
!       if Has_Modular_Operations (Etype (N)) then
           Left_Int  := Expr_Value (Left);
           Right_Int := Expr_Value (Right);
  
*************** package body Sem_Eval is
*** 3206,3212 ****
                       Result := Left_Int;
                    end if;
  
!                   if Is_Modular_Integer_Type (Etype (N)) then
                       Result := Result mod Modulus (Etype (N));
                    end if;
  
--- 3206,3212 ----
                       Result := Left_Int;
                    end if;
  
!                   if Has_Modular_Operations (Etype (N)) then
                       Result := Result mod Modulus (Etype (N));
                    end if;
  
*************** package body Sem_Eval is
*** 3277,3283 ****
           --  the original value. For a nonbinary modulus this is an arbitrary
           --  but consistent definition.
  
!          if Is_Modular_Integer_Type (Typ) then
              Fold_Uint (N, Modulus (Typ) - 1 - Rint, Stat);
           else pragma Assert (Is_Boolean_Type (Typ));
              Fold_Uint (N, Test (not Is_True (Rint)), Stat);
--- 3277,3283 ----
           --  the original value. For a nonbinary modulus this is an arbitrary
           --  but consistent definition.
  
!          if Has_Modular_Operations (Typ) then
              Fold_Uint (N, Modulus (Typ) - 1 - Rint, Stat);
           else pragma Assert (Is_Boolean_Type (Typ));
              Fold_Uint (N, Test (not Is_True (Rint)), Stat);
*************** package body Sem_Eval is
*** 4388,4394 ****
                 Result := Rint;
  
              elsif Nkind (N) = N_Op_Minus then
!                if Is_Modular_Integer_Type (Etype (N)) then
                    Result := (-Rint) mod Modulus (Etype (N));
                 else
                    Result := (-Rint);
--- 4388,4394 ----
                 Result := Rint;
  
              elsif Nkind (N) = N_Op_Minus then
!                if Has_Modular_Operations (Etype (N)) then
                    Result := (-Rint) mod Modulus (Etype (N));
                 else
                    Result := (-Rint);
*************** package body Sem_Eval is
*** 5005,5011 ****
  
        declare
           Modulus : constant Uint :=
!            (if Is_Modular_Integer_Type (Typ) then Einfo.Entities.Modulus (Typ)
              else Uint_2 ** RM_Size (Typ));
           Amount : constant Uint := UI_Min (Expr_Value (Right), RM_Size (Typ));
           --  Shift by an Amount greater than the size is all-zeros or all-ones.
--- 5005,5011 ----
  
        declare
           Modulus : constant Uint :=
!            (if Has_Modular_Operations (Typ) then Einfo.Entities.Modulus (Typ)
              else Uint_2 ** RM_Size (Typ));
           Amount : constant Uint := UI_Min (Expr_Value (Right), RM_Size (Typ));
           --  Shift by an Amount greater than the size is all-zeros or all-ones.
*************** package body Sem_Eval is
*** 5023,5029 ****
              Val := (Expr_Value (Left) * (Uint_2 ** Amount))
                       rem Modulus;
  
!             if Is_Modular_Integer_Type (Typ)
                or else Val < Modulus / Uint_2
              then
                 Fold_Uint (N, Val, Static => Static);
--- 5023,5029 ----
              Val := (Expr_Value (Left) * (Uint_2 ** Amount))
                       rem Modulus;
  
!             if Has_Modular_Operations (Typ)
                or else Val < Modulus / Uint_2
              then
                 Fold_Uint (N, Val, Static => Static);
*************** package body Sem_Eval is
*** 5062,5071 ****
              begin
                 --  X / 2**Y if X if positive or a small enough modular integer
  
!                if (Is_Modular_Integer_Type (Typ)
                      and then Expr_Value (Left) < Modulus / Uint_2)
                   or else
!                    (not Is_Modular_Integer_Type (Typ)
                       and then Expr_Value (Left) >= 0)
                 then
                    Fold_Uint (N, Expr_Value (Left) / Two_Y, Static => Static);
--- 5062,5071 ----
              begin
                 --  X / 2**Y if X if positive or a small enough modular integer
  
!                if (Has_Modular_Operations (Typ)
                      and then Expr_Value (Left) < Modulus / Uint_2)
                   or else
!                    (not Has_Modular_Operations (Typ)
                       and then Expr_Value (Left) >= 0)
                 then
                    Fold_Uint (N, Expr_Value (Left) / Two_Y, Static => Static);
*************** package body Sem_Eval is
*** 5076,5082 ****
                 elsif Two_Y > Modulus
                   or else Expr_Value (Left) = Uint_Minus_1
                 then
!                   if Is_Modular_Integer_Type (Typ) then
                       Fold_Uint (N, Modulus - Uint_1, Static => Static);
                    else
                       Fold_Uint (N, Uint_Minus_1, Static => Static);
--- 5076,5082 ----
                 elsif Two_Y > Modulus
                   or else Expr_Value (Left) = Uint_Minus_1
                 then
!                   if Has_Modular_Operations (Typ) then
                       Fold_Uint (N, Modulus - Uint_1, Static => Static);
                    else
                       Fold_Uint (N, Uint_Minus_1, Static => Static);
*************** package body Sem_Eval is
*** 5085,5091 ****
                 --  Large modular integer, compute via multiply/divide the
                 --  following: X >> Y + (1 << Y - 1) << (RM_Size - Y)
  
!                elsif Is_Modular_Integer_Type (Typ) then
                    Fold_Uint
                      (N,
                       (Expr_Value (Left)) / Two_Y
--- 5085,5091 ----
                 --  Large modular integer, compute via multiply/divide the
                 --  following: X >> Y + (1 << Y - 1) << (RM_Size - Y)
  
!                elsif Has_Modular_Operations (Typ) then
                    Fold_Uint
                      (N,
                       (Expr_Value (Left)) / Two_Y
*************** package body Sem_Eval is
*** 7207,7213 ****
        --   An expression of a formal modular type is not foldable because
        --   the modulus is unknown.
  
!       elsif Is_Modular_Integer_Type (Etype (Op1))
          and then Is_Generic_Type (Etype (Op1))
        then
           Check_Non_Static_Context (Op1);
--- 7207,7213 ----
        --   An expression of a formal modular type is not foldable because
        --   the modulus is unknown.
  
!       elsif Has_Modular_Operations (Etype (Op1))
          and then Is_Generic_Type (Etype (Op1))
        then
           Check_Non_Static_Context (Op1);
*************** package body Sem_Eval is
*** 7283,7289 ****
  
        --  Exclude expressions of a generic modular type, as above
  
!       elsif Is_Modular_Integer_Type (Etype (Op1))
          and then Is_Generic_Type (Etype (Op1))
        then
           Check_Non_Static_Context (Op1);
--- 7283,7289 ----
  
        --  Exclude expressions of a generic modular type, as above
  
!       elsif Has_Modular_Operations (Etype (Op1))
          and then Is_Generic_Type (Etype (Op1))
        then
           Check_Non_Static_Context (Op1);
*************** package body Sem_Eval is
*** 7305,7311 ****
           end if;
  
           if not Fold
!            and then not Is_Modular_Integer_Type (Etype (N))
           then
              case Nkind (N) is
                 when N_Op_And =>
--- 7305,7311 ----
           end if;
  
           if not Fold
!            and then not Has_Modular_Operations (Etype (N))
           then
              case Nkind (N) is
                 when N_Op_And =>
*************** package body Sem_Eval is
*** 7482,7488 ****
        --  size, then the source value must be in range. We exclude biased
        --  types, because they bizarrely can generate out of range values.
  
!       elsif Is_Signed_Integer_Type (Etype (N))
          and then Is_Known_Valid (Typ)
          and then Esize (Etype (N)) <= Esize (Typ)
          and then not Has_Biased_Representation (Etype (N))
--- 7482,7489 ----
        --  size, then the source value must be in range. We exclude biased
        --  types, because they bizarrely can generate out of range values.
  
!       elsif (Is_Signed_Integer_Type (Etype (N))
!                and then Is_Signed_Integer_Type (Typ))
          and then Is_Known_Valid (Typ)
          and then Esize (Etype (N)) <= Esize (Typ)
          and then not Has_Biased_Representation (Etype (N))
diff -Nrcpad gcc-16-20251130/gcc/ada/sem_intr.adb gcc-16-20251207/gcc/ada/sem_intr.adb
*** gcc-16-20251130/gcc/ada/sem_intr.adb	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/ada/sem_intr.adb	Sun Dec  7 22:32:06 2025
*************** package body Sem_Intr is
*** 455,461 ****
        --  For modular type, modulus must be 2**8, 2**16, 2**32, or 2**64.
        --  Don't apply to generic types, since we may not have a modulus value.
  
!       elsif Is_Modular_Integer_Type (Typ1)
          and then not Is_Generic_Type (Typ1)
          and then Modulus (Typ1) /= Uint_2 ** 8
          and then Modulus (Typ1) /= Uint_2 ** 16
--- 455,461 ----
        --  For modular type, modulus must be 2**8, 2**16, 2**32, or 2**64.
        --  Don't apply to generic types, since we may not have a modulus value.
  
!       elsif Has_Modular_Operations (Typ1)
          and then not Is_Generic_Type (Typ1)
          and then Modulus (Typ1) /= Uint_2 ** 8
          and then Modulus (Typ1) /= Uint_2 ** 16
diff -Nrcpad gcc-16-20251130/gcc/ada/sem_prag.adb gcc-16-20251207/gcc/ada/sem_prag.adb
*** gcc-16-20251130/gcc/ada/sem_prag.adb	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/ada/sem_prag.adb	Sun Dec  7 22:32:06 2025
*************** package body Sem_Prag is
*** 28172,28178 ****
                 return;
  
              elsif not Is_Integer_Type (E)
!               or else Is_Modular_Integer_Type (E)
              then
                 Error_Pragma_Arg
                   ("cannot apply pragma %",
--- 28172,28180 ----
                 return;
  
              elsif not Is_Integer_Type (E)
!               or else
!                 (Is_Modular_Integer_Type (E)
!                    and then not Has_Unsigned_Base_Range_Aspect (Base_Type (E)))
              then
                 Error_Pragma_Arg
                   ("cannot apply pragma %",
*************** package body Sem_Prag is
*** 28211,28217 ****
                 Set_First_Subtype_Link (Freeze_Node (Base_Type (E)), E);
                 Set_Has_Delayed_Freeze (E);
  
!                Set_Has_Unsigned_Base_Range_Aspect (Base_Type (E));
              end if;
           end Unsigned_Base_Range;
  
--- 28213,28222 ----
                 Set_First_Subtype_Link (Freeze_Node (Base_Type (E)), E);
                 Set_Has_Delayed_Freeze (E);
  
!                --  Attribute Has_Unsigned_Base_Range_Aspect must have been
!                --  set by Unsigned_Base_Range_Type_Declaration or inherited
!                --  by Build_Derived_Numeric_Type.
!                pragma Assert (Has_Unsigned_Base_Range_Aspect (Base_Type (E)));
              end if;
           end Unsigned_Base_Range;
  
diff -Nrcpad gcc-16-20251130/gcc/ada/sem_res.adb gcc-16-20251207/gcc/ada/sem_res.adb
*** gcc-16-20251130/gcc/ada/sem_res.adb	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/ada/sem_res.adb	Sun Dec  7 22:32:06 2025
*************** package body Sem_Res is
*** 7753,7758 ****
--- 7753,7763 ----
        Decl  : Node_Id;
        Local : Entity_Id := Empty;
  
+       Save_Hidden_Map : constant Elist_Id := New_Elmt_List;
+       --  Stores the map of identifiers, and corresponding entities, that
+       --  temporarily loose visibility due to homonym declarations in the
+       --  current declare expression.
+ 
        function Replace_Local (N  : Node_Id) return Traverse_Result;
        --  Use a tree traversal to replace each occurrence of the name of
        --  a local object declared in the construct, with the corresponding
*************** package body Sem_Res is
*** 7817,7822 ****
--- 7822,7840 ----
                    Next (D);
                 end loop;
              end;
+ 
+             --  Homonyms of the new local declaration are saved to be restored
+             --  after the resolution of the declare block's expression.
+ 
+             Append_Elmt (Local, Save_Hidden_Map);
+             Append_Elmt (Get_Name_Entity_Id (Chars (Local)), Save_Hidden_Map);
+ 
+             --  Update the references to local in the name table and make them
+             --  immediately visible to be available within the expression.
+ 
+             Set_Current_Entity (Local);
+             Set_Is_Immediately_Visible (Local);
+             Set_Is_Not_Self_Hidden (Local);
           end if;
  
           Next (Decl);
*************** package body Sem_Res is
*** 7832,7837 ****
--- 7850,7869 ----
  
        Resolve (Expr, Typ);
        Check_Unset_Reference (Expr);
+ 
+       --  Restore any hidden entity homonyms to a local one
+ 
+       declare
+          Cursor : Elmt_Id := First_Elmt (Save_Hidden_Map);
+          Name : Name_Id;
+       begin
+          while Present (Cursor) loop
+             Name := Chars (Node (Cursor));
+             Next_Elmt (Cursor);
+             Set_Name_Entity_Id (Name, Node (Cursor));
+             Next_Elmt (Cursor);
+          end loop;
+       end;
     end Resolve_Declare_Expression;
  
     -----------------------------------
*************** package body Sem_Res is
*** 10086,10092 ****
           Set_Etype (N, Any_Type);
           return;
  
!       elsif Is_Modular_Integer_Type (Typ)
          and then Etype (Left_Opnd (N)) = Universal_Integer
          and then Etype (Right_Opnd (N)) = Universal_Integer
        then
--- 10118,10124 ----
           Set_Etype (N, Any_Type);
           return;
  
!       elsif Has_Modular_Operations (Typ)
          and then Etype (Left_Opnd (N)) = Universal_Integer
          and then Etype (Right_Opnd (N)) = Universal_Integer
        then
*************** package body Sem_Res is
*** 12735,12741 ****
          and then Nkind (N) = N_Op_Minus
          and then Nkind (R) = N_Integer_Literal
          and then Comes_From_Source (R)
!         and then Is_Modular_Integer_Type (B_Typ)
          and then Nkind (Parent (N)) not in N_Qualified_Expression
                                           | N_Type_Conversion
          and then Expr_Value (R) > Uint_1
--- 12767,12773 ----
          and then Nkind (N) = N_Op_Minus
          and then Nkind (R) = N_Integer_Literal
          and then Comes_From_Source (R)
!         and then Has_Modular_Operations (B_Typ)
          and then Nkind (Parent (N)) not in N_Qualified_Expression
                                           | N_Type_Conversion
          and then Expr_Value (R) > Uint_1
*************** package body Sem_Res is
*** 13228,13234 ****
              if Length = 1 then
                 High_Bound := New_Copy_Tree (Low_Bound);
  
!             elsif Is_Signed_Integer_Type (Index_Type) then
                 High_Bound :=
                   Make_Op_Add (Loc,
                     Left_Opnd  => New_Copy_Tree (Low_Bound),
--- 13260,13266 ----
              if Length = 1 then
                 High_Bound := New_Copy_Tree (Low_Bound);
  
!             elsif Has_Overflow_Operations (Index_Type) then
                 High_Bound :=
                   Make_Op_Add (Loc,
                     Left_Opnd  => New_Copy_Tree (Low_Bound),
diff -Nrcpad gcc-16-20251130/gcc/ada/sem_type.adb gcc-16-20251207/gcc/ada/sem_type.adb
*** gcc-16-20251130/gcc/ada/sem_type.adb	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/ada/sem_type.adb	Sun Dec  7 22:32:06 2025
*************** package body Sem_Type is
*** 1144,1150 ****
        --  A boolean operation on integer literals is compatible with modular
        --  context.
  
!       elsif T2 = Any_Modular and then Is_Modular_Integer_Type (T1) then
           return True;
  
        --  The actual type may be the result of a previous error
--- 1144,1150 ----
        --  A boolean operation on integer literals is compatible with modular
        --  context.
  
!       elsif T2 = Any_Modular and then Has_Modular_Operations (T1) then
           return True;
  
        --  The actual type may be the result of a previous error
*************** package body Sem_Type is
*** 3375,3381 ****
          or else (T1 = Universal_Real    and then Is_Real_Type (T2))
          or else (T1 = Universal_Fixed   and then Is_Fixed_Point_Type (T2))
          or else (T1 = Any_Fixed         and then Is_Fixed_Point_Type (T2))
!         or else (T1 = Any_Modular       and then Is_Modular_Integer_Type (T2))
          or else (T1 = Any_Character     and then Is_Character_Type (T2))
          or else (T1 = Any_String        and then Is_String_Type (T2))
          or else (T1 = Any_Composite     and then Is_Aggregate_Type (T2))
--- 3375,3381 ----
          or else (T1 = Universal_Real    and then Is_Real_Type (T2))
          or else (T1 = Universal_Fixed   and then Is_Fixed_Point_Type (T2))
          or else (T1 = Any_Fixed         and then Is_Fixed_Point_Type (T2))
!         or else (T1 = Any_Modular       and then Has_Modular_Operations (T2))
          or else (T1 = Any_Character     and then Is_Character_Type (T2))
          or else (T1 = Any_String        and then Is_String_Type (T2))
          or else (T1 = Any_Composite     and then Is_Aggregate_Type (T2))
*************** package body Sem_Type is
*** 3395,3401 ****
          or else (T2 = Universal_Real    and then Is_Real_Type (T1))
          or else (T2 = Universal_Fixed   and then Is_Fixed_Point_Type (T1))
          or else (T2 = Any_Fixed         and then Is_Fixed_Point_Type (T1))
!         or else (T2 = Any_Modular       and then Is_Modular_Integer_Type (T1))
          or else (T2 = Any_Character     and then Is_Character_Type (T1))
          or else (T2 = Any_String        and then Is_String_Type (T1))
          or else (T2 = Any_Composite     and then Is_Aggregate_Type (T1))
--- 3395,3401 ----
          or else (T2 = Universal_Real    and then Is_Real_Type (T1))
          or else (T2 = Universal_Fixed   and then Is_Fixed_Point_Type (T1))
          or else (T2 = Any_Fixed         and then Is_Fixed_Point_Type (T1))
!         or else (T2 = Any_Modular       and then Has_Modular_Operations (T1))
          or else (T2 = Any_Character     and then Is_Character_Type (T1))
          or else (T2 = Any_String        and then Is_String_Type (T1))
          or else (T2 = Any_Composite     and then Is_Aggregate_Type (T1))
*************** package body Sem_Type is
*** 3562,3568 ****
     function Valid_Boolean_Arg (T : Entity_Id) return Boolean is
     begin
        if Is_Boolean_Type (T)
!         or else Is_Modular_Integer_Type (T)
          or else T = Universal_Integer
          or else T = Any_Composite
          or else T = Raise_Type
--- 3562,3568 ----
     function Valid_Boolean_Arg (T : Entity_Id) return Boolean is
     begin
        if Is_Boolean_Type (T)
!         or else Has_Modular_Operations (T)
          or else T = Universal_Integer
          or else T = Any_Composite
          or else T = Raise_Type
diff -Nrcpad gcc-16-20251130/gcc/ada/sem_util.adb gcc-16-20251207/gcc/ada/sem_util.adb
*** gcc-16-20251130/gcc/ada/sem_util.adb	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/ada/sem_util.adb	Sun Dec  7 22:32:06 2025
*************** package body Sem_Util is
*** 10399,10404 ****
--- 10399,10405 ----
        Func     : Entity_Id;
        First_Op : Entity_Id;
        Cursor   : Entity_Id;
+       Specific_Type : Entity_Id := Typ;
  
     begin
        --  If error already detected, return
*************** package body Sem_Util is
*** 10407,10412 ****
--- 10408,10417 ----
           return Any_Type;
        end if;
  
+       if Is_Class_Wide_Type (Specific_Type) then
+          Specific_Type := Etype (Typ);
+       end if;
+ 
        --  The cursor type for an Iterable aspect is the return type of a
        --  non-overloaded First primitive operation. Locate association for
        --  First.
*************** package body Sem_Util is
*** 10437,10448 ****
        --  is created for it, check that the base type of the first formal
        --  of First matches the base type of the domain.
  
!       Func := First_Entity (Scope (Typ));
        while Present (Func) loop
           if Chars (Func) = Chars (First_Op)
             and then Ekind (Func) = E_Function
             and then Present (First_Formal (Func))
!            and then Base_Type (Etype (First_Formal (Func))) = Base_Type (Typ)
             and then No (Next_Formal (First_Formal (Func)))
           then
              if Cursor /= Any_Type then
--- 10442,10454 ----
        --  is created for it, check that the base type of the first formal
        --  of First matches the base type of the domain.
  
!       Func := First_Entity (Scope (Specific_Type));
        while Present (Func) loop
           if Chars (Func) = Chars (First_Op)
             and then Ekind (Func) = E_Function
             and then Present (First_Formal (Func))
!            and then Base_Type (Etype (First_Formal (Func)))
!                     = Base_Type (Specific_Type)
             and then No (Next_Formal (First_Formal (Func)))
           then
              if Cursor /= Any_Type then
*************** package body Sem_Util is
*** 30732,30738 ****
           --  of the same modular type, and (M1 and M2) = 0 was intended.
  
           if Expec_Type = Standard_Boolean
!            and then Is_Modular_Integer_Type (Found_Type)
             and then Nkind (Parent (Expr)) in N_Op_And | N_Op_Or | N_Op_Xor
             and then Nkind (Right_Opnd (Parent (Expr))) in N_Op_Compare
           then
--- 30738,30744 ----
           --  of the same modular type, and (M1 and M2) = 0 was intended.
  
           if Expec_Type = Standard_Boolean
!            and then Has_Modular_Operations (Found_Type)
             and then Nkind (Parent (Expr)) in N_Op_And | N_Op_Or | N_Op_Xor
             and then Nkind (Right_Opnd (Parent (Expr))) in N_Op_Compare
           then
diff -Nrcpad gcc-16-20251130/gcc/ada/style.adb gcc-16-20251207/gcc/ada/style.adb
*** gcc-16-20251130/gcc/ada/style.adb	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/ada/style.adb	Sun Dec  7 22:32:06 2025
*************** package body Style is
*** 152,158 ****
  
                    --  Second OK case, modular types
  
!                   elsif Is_Modular_Integer_Type (Etype (Node)) then
                       return;
  
                    --  Third OK case, array types
--- 152,158 ----
  
                    --  Second OK case, modular types
  
!                   elsif Has_Modular_Operations (Etype (Node)) then
                       return;
  
                    --  Third OK case, array types
diff -Nrcpad gcc-16-20251130/gcc/algol68/ChangeLog gcc-16-20251207/gcc/algol68/ChangeLog
*** gcc-16-20251130/gcc/algol68/ChangeLog	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/algol68/ChangeLog	Sun Dec  7 22:32:07 2025
***************
*** 0 ****
--- 1,187 ----
+ 2025-12-06  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	PR algol68/123007
+ 	* a68-lang.cc (a68_type_for_size): Handle intTI_type_node.
+ 
+ 2025-12-03  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	PR algol68/122954
+ 	* a68-types.h (NO_A68_REF): Delete.
+ 	(NO_ARRAY): Likewise.
+ 	(NO_BOOK): Likewise.
+ 	(NO_BOOL): Likewise.
+ 	(NO_BYTE): Likewise.
+ 	(NO_CONSTANT): Likewise.
+ 	(NO_DEC): Likewise.
+ 	(NO_EDLIN): Likewise.
+ 	(NO_FILE): Likewise.
+ 	(NO_FORMAT): Likewise.
+ 	(NO_GPROC): Likewise.
+ 	(NO_HANDLE): Likewise.
+ 	(NO_INT): Likewise.
+ 	(NO_JMP_BUF): Likewise.
+ 	(NO_SCOPE): Moved to a68-parser-scope.cc.
+ 	(NO_TUPLE): Likewise.
+ 	(TUPLE): Likewise.
+ 	(NO_GINFO): Converted from macro to contexpr.
+ 	(NO_KEYWORD): Likewise.
+ 	(NO_NINFO): Likewise.
+ 	(NO_PACK): Likewise.
+ 	(NO_SOID): Likewise.
+ 	(NO_TOKEN): Likewise.
+ 	(NO_NOTE): Likewise.
+ 	(MODES_T): Turned from typedef to forward declaration.
+ 	(NODE_T): Likewise.
+ 	(MODE_CACHE_T): Likewise.
+ 	(MOID_T): Likewise.
+ 	(GINFO_T): Likewise.
+ 	(KEYWORD_T): Likewise.
+ 	(LINE_T): Likewise.
+ 	(NODE_INFO_T): Likewise.
+ 	(PACK_T): Likewise.
+ 	(SOID_T): Likewise.
+ 	(TABLE_T): Likewise.
+ 	(TAG_T): Likewise.
+ 	(TOKEN_T): Likewise.
+ 	(ORIGIN_T): Likewise.
+ 	(POSTULATE_T): Likewise.
+ 	(OPTIONS_T): Likewise.
+ 	(PARSER_T): Likewise.
+ 	(MODULE_T): Likewise.
+ 	(EXTRACT_T): Likewise.
+ 	(MOIF_T): Likewise.
+ 	(A68_T): Likewise.
+ 	* a68-parser-scope.cc (NO_TUPLE): Moved from a68-types.h
+ 	(NO_SCOPE): Likewise.
+ 	(TUPLE): Likewise.
+ 
+ 2025-12-03  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	PR algol68/122966
+ 	* a68-low-clauses.cc (a68_lower_collateral_clause): Remove
+ 	self-assignment.
+ 
+ 2025-12-02  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	PR algol68/122954
+ 	* a68-low-clauses.cc (serial_clause_dsa): Avoid redundant
+ 	initialization.
+ 	* a68-parser-modes.cc (compute_derived_modes): Likewise.
+ 	* a68-low.cc (a68_lower_tree): Remove redundant break.
+ 
+ 2025-12-01  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	PR algol68/122944
+ 	* Make-lang.in (algol68.install-common): Link
+ 	A68_TARGET_INSTALL_NAME in bindir.
+ 
+ 2025-12-01  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* a68-exports.cc: Include memmodel.h.
+ 	* a68-imports.cc: Likeswise.
+ 
+ 2025-12-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* a68-low-multiples.cc (copy_multiple_dimension_elems): Use
+ 	HOST_SIZE_T_PRINT_DEC in xasprintf format string and cast to
+ 	fmt_size_t.
+ 
+ 2025-11-30  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* a68-diagnostics.cc (diagnostic): Copypasto "a meek"
+ 	should be "a firm".  Support printing line number for programs
+ 	longer than 9 lines.  Use obstack_append_str rather than
+ 	obstack_grow.
+ 	(obstack_append_str): New function.
+ 
+ 2025-11-30  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* lang.opt.urls: Regenerate.
+ 
+ 2025-11-30  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* lang.opt: New file.
+ 	* lang.opt.urls: Generate.
+ 
+ 2025-11-30  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* ga68-internals.texi: New file.
+ 	* ga68.texi: Likewise.
+ 	* Make-lang.in: New file.
+ 	* config-lang.in: Likewise.
+ 
+ 2025-11-30  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* a68-unistr.c: New file.
+ 	* a68-lang.cc: Likewise.
+ 	* a68spec.cc: Likewise.
+ 	* lang-specs.h: Likewise.
+ 	* README: Likewise.
+ 	* a68-tree.def: Likewise.
+ 	* a68-types.h: Likewise.
+ 	* a68.h: Likewise.
+ 	* ga68.vw: Likewise.
+ 	* a68-low-moids.cc: Likewise.
+ 	* a68-low-coercions.cc: Likewise.
+ 	* a68-low-generator.cc: Likewise.
+ 	* a68-low-units.cc: Likewise.
+ 	* a68-low-ranges.cc: Likewise.
+ 	* a68-low-builtins.cc: Likewise.
+ 	* a68-low-runtime.cc: Likewise.
+ 	* a68-low-runtime.def: Likewise.
+ 	* a68-low-clauses.cc: Likewise.
+ 	* a68-low-decls.cc: Likewise.
+ 	* a68-low-posix.cc: Likewise.
+ 	* a68-low-prelude.cc: Likewise.
+ 	* a68-low-multiples.cc: Likewise.
+ 	* a68-low-structs.cc: Likewise.
+ 	* a68-low-unions.cc: Likewise.
+ 	* a68-low-bits.cc: Likewise.
+ 	* a68-low-bools.cc: Likewise.
+ 	* a68-low-chars.cc: Likewise.
+ 	* a68-low-complex.cc: Likewise.
+ 	* a68-low-ints.cc: Likewise.
+ 	* a68-low-procs.cc: Likewise.
+ 	* a68-low-reals.cc: Likewise.
+ 	* a68-low-refs.cc: Likewise.
+ 	* a68-low-strings.cc: Likewise.
+ 	* a68-low.cc: Likewise.
+ 	* a68-low-misc.cc: Likewise.
+ 	* a68-parser-pragmat.cc: Likewise.
+ 	* a68-parser-serial-dsa.cc: Likewise.
+ 	* a68-parser-debug.cc: Likewise.
+ 
+ 2025-11-30  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 	    Marcel van der Veer  <algol68g@xs4all.nl>
+ 
+ 	* a68-parser-extract.cc: New file.
+ 	* a68-parser-scope.cc: Likewise.
+ 	* a68-parser-taxes.cc: Likewise.
+ 	* a68-moids-diagnostics.cc: Likewise.
+ 	* a68-moids-misc.cc: Likewise.
+ 	* a68-moids-to-string.cc: Likewise.
+ 	* a68-parser-modes.cc: Likewise.
+ 	* a68-parser-moids-check.cc: Likewise.
+ 	* a68-parser-moids-coerce.cc: Likewise.
+ 	* a68-parser-moids-equivalence.cc: Likewise.
+ 	* a68-postulates.cc: Likewise.
+ 	* a68-parser-prelude.cc: Likewise.
+ 	* a68-parser-victal.cc: Likewise.
+ 	* a68-parser-bottom-up.cc: Likewise.
+ 	* a68-parser-brackets.cc: Likewise.
+ 	* a68-parser-top-down.cc: Likewise.
+ 	* a68-parser-keywords.cc: Likewise.
+ 	* a68-parser-scanner.cc: Likewise.
+ 	* a68-parser-attrs.def: Likewise.
+ 	* a68-parser.cc: Likewise.
+ 	* a68-imports.cc: Likewise.
+ 	* a68-exports.cc: Likewise.
+ 	* ga68-exports.pk: Likewise.
+ 	* a68-diagnostics.cc: Likewise.
+ 
+ 
+ Copyright (C) 2025 Free Software Foundation, Inc.
+ 
+ Copying and distribution of this file, with or without modification,
+ are permitted in any medium without royalty provided the copyright
+ notice and this notice are preserved.
diff -Nrcpad gcc-16-20251130/gcc/algol68/Make-lang.in gcc-16-20251207/gcc/algol68/Make-lang.in
*** gcc-16-20251130/gcc/algol68/Make-lang.in	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/algol68/Make-lang.in	Sun Dec  7 22:32:07 2025
*************** selftest-algol68:
*** 223,228 ****
--- 223,237 ----
  algol68.install-common: installdirs
  	-rm -f $(DESTDIR)$(bindir)/$(A68_INSTALL_NAME)$(exeext)
  	$(INSTALL_PROGRAM) ga68$(exeext) $(DESTDIR)$(bindir)/$(A68_INSTALL_NAME)$(exeext)
+ 	-if test -f a681$(exeext); then \
+ 	  if test -f ga68-cross$(exeext); then \
+ 	    :; \
+ 	  else \
+ 	    rm -f $(DESTDIR)$(bindir)/$(A68_TARGET_INSTALL_NAME)$(exeext); \
+ 	    ( cd $(DESTDIR)$(bindir) && \
+ 	      $(LN) $(A68_INSTALL_NAME)$(exeext) $(A68_TARGET_INSTALL_NAME)$(exeext) ); \
+ 	  fi; \
+ 	fi
  
  algol68.install-man: $(DESTDIR)$(man1dir)/$(A68_INSTALL_NAME)$(man1ext)
  
diff -Nrcpad gcc-16-20251130/gcc/algol68/a68-exports.cc gcc-16-20251207/gcc/algol68/a68-exports.cc
*** gcc-16-20251130/gcc/algol68/a68-exports.cc	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/algol68/a68-exports.cc	Sun Dec  7 22:32:07 2025
***************
*** 22,27 ****
--- 22,28 ----
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
+ #include "memmodel.h"
  #include "tree.h"
  #include "target.h"
  #include "tm_p.h"
diff -Nrcpad gcc-16-20251130/gcc/algol68/a68-imports.cc gcc-16-20251207/gcc/algol68/a68-imports.cc
*** gcc-16-20251130/gcc/algol68/a68-imports.cc	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/algol68/a68-imports.cc	Sun Dec  7 22:32:07 2025
***************
*** 31,36 ****
--- 31,37 ----
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
+ #include "memmodel.h"
  #include "tree.h"
  #include "target.h"
  #include "tm_p.h"
diff -Nrcpad gcc-16-20251130/gcc/algol68/a68-lang.cc gcc-16-20251207/gcc/algol68/a68-lang.cc
*** gcc-16-20251130/gcc/algol68/a68-lang.cc	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/algol68/a68-lang.cc	Sun Dec  7 22:32:07 2025
*************** a68_type_for_size (unsigned int bits, in
*** 336,341 ****
--- 336,346 ----
      }
    else
      {
+       /* Handle TImode as a special case because it is used by some backends
+          (e.g. ARM) even though it is not available for normal use.  */
+       if (bits == TYPE_PRECISION (intTI_type_node))
+ 	return intTI_type_node;
+ 
        if (bits <= TYPE_PRECISION (a68_short_short_int_type))
  	return a68_short_short_int_type;
        if (bits <= TYPE_PRECISION (a68_short_int_type))
diff -Nrcpad gcc-16-20251130/gcc/algol68/a68-low-clauses.cc gcc-16-20251207/gcc/algol68/a68-low-clauses.cc
*** gcc-16-20251130/gcc/algol68/a68-low-clauses.cc	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/algol68/a68-low-clauses.cc	Sun Dec  7 22:32:07 2025
***************
*** 58,66 ****
  static bool
  serial_clause_dsa (NODE_T *p)
  {
!   NODE_T *s = NEXT (SUB (p));
! 
!   for (s = p; SUB (s) &&  IS (s, SERIAL_CLAUSE); s = SUB (s))
      {
        if (DYNAMIC_STACK_ALLOCS (s))
  	return true;
--- 58,64 ----
  static bool
  serial_clause_dsa (NODE_T *p)
  {
!   for (NODE_T *s = p; SUB (s) &&  IS (s, SERIAL_CLAUSE); s = SUB (s))
      {
        if (DYNAMIC_STACK_ALLOCS (s))
  	return true;
*************** a68_lower_collateral_clause (NODE_T *p A
*** 1290,1296 ****
  	      // XXX should we make a copy of the sub_multiple_elements here?
  	      // We DO need to iterate slicing, because of strides: if
  	      // the sub_multiple is a trimmer.
- 	      sub_multiple_elements = sub_multiple_elements;
  	      tree sub_multiple_elements_type = TREE_TYPE (sub_multiple_elements);
  	      tree sub_multiple_num_elems = a68_multiple_num_elems (sub_multiple);
  	      tree sub_multiple_element_type = TREE_TYPE (sub_multiple_elements_type);
--- 1288,1293 ----
diff -Nrcpad gcc-16-20251130/gcc/algol68/a68-low-multiples.cc gcc-16-20251207/gcc/algol68/a68-low-multiples.cc
*** gcc-16-20251130/gcc/algol68/a68-low-multiples.cc	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/algol68/a68-low-multiples.cc	Sun Dec  7 22:32:07 2025
*************** copy_multiple_dimension_elems (size_t di
*** 633,639 ****
    tree element_type = TREE_TYPE (element_pointer_type);
    tree upb = a68_multiple_upper_bound (from, size_int (dim));
  
!   char *name = xasprintf ("r%ld%%", dim);
    indexes[dim] = a68_lower_tmpvar (name, ssizetype,
  				   a68_multiple_lower_bound (from,
  							     size_int (dim)));
--- 633,639 ----
    tree element_type = TREE_TYPE (element_pointer_type);
    tree upb = a68_multiple_upper_bound (from, size_int (dim));
  
!   char *name = xasprintf ("r" HOST_SIZE_T_PRINT_DEC "%%", (fmt_size_t) dim);
    indexes[dim] = a68_lower_tmpvar (name, ssizetype,
  				   a68_multiple_lower_bound (from,
  							     size_int (dim)));
diff -Nrcpad gcc-16-20251130/gcc/algol68/a68-low.cc gcc-16-20251207/gcc/algol68/a68-low.cc
*** gcc-16-20251130/gcc/algol68/a68-low.cc	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/algol68/a68-low.cc	Sun Dec  7 22:32:07 2025
*************** a68_lower_tree (NODE_T *p, LOW_CTX_T ctx
*** 1479,1485 ****
      case PACKET:
        res = lower_packet (p, ctx);
        break;
-       break;
      case PRELUDE_PACKET:
        res = lower_prelude_packet (p, ctx);
        break;
--- 1479,1484 ----
diff -Nrcpad gcc-16-20251130/gcc/algol68/a68-parser-modes.cc gcc-16-20251207/gcc/algol68/a68-parser-modes.cc
*** gcc-16-20251130/gcc/algol68/a68-parser-modes.cc	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/algol68/a68-parser-modes.cc	Sun Dec  7 22:32:07 2025
*************** compute_derived_modes (MODULE_T *mod)
*** 1202,1211 ****
  
  	  for (; s != NO_PACK; FORWARD (s))
  	    {
- 	      PACK_T *t = NEXT (s);
  	      bool x = true;
  
! 	      for (t = NEXT (s); t != NO_PACK && x; FORWARD (t))
  		{
  		  if (TEXT (s) == TEXT (t))
  		    {
--- 1202,1210 ----
  
  	  for (; s != NO_PACK; FORWARD (s))
  	    {
  	      bool x = true;
  
! 	      for (PACK_T *t = NEXT (s); t != NO_PACK && x; FORWARD (t))
  		{
  		  if (TEXT (s) == TEXT (t))
  		    {
diff -Nrcpad gcc-16-20251130/gcc/algol68/a68-parser-scope.cc gcc-16-20251207/gcc/algol68/a68-parser-scope.cc
*** gcc-16-20251130/gcc/algol68/a68-parser-scope.cc	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/algol68/a68-parser-scope.cc	Sun Dec  7 22:32:07 2025
***************
*** 29,37 ****
  
  #include "a68.h"
  
- typedef struct TUPLE_T TUPLE_T;
- typedef struct SCOPE_T SCOPE_T;
- 
  struct TUPLE_T
  {
    int level;
--- 29,34 ----
*************** struct SCOPE_T
*** 45,50 ****
--- 42,52 ----
    SCOPE_T *next;
  };
  
+ constexpr TUPLE_T *NO_TUPLE = nullptr;
+ constexpr SCOPE_T *NO_SCOPE = nullptr;
+ 
+ #define TUPLE(p) ((p)->tuple)
+ 
  enum { NOT_TRANSIENT = 0, TRANSIENT };
  
  static void gather_scopes_for_youngest (NODE_T *, SCOPE_T **);
diff -Nrcpad gcc-16-20251130/gcc/algol68/a68-types.h gcc-16-20251207/gcc/algol68/a68-types.h
*** gcc-16-20251130/gcc/algol68/a68-types.h	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/algol68/a68-types.h	Sun Dec  7 22:32:07 2025
*************** enum a68_tree_index
*** 75,135 ****
  
  typedef char BUFFER[BUFFER_SIZE + 1];
  
! typedef struct MODES_T MODES_T;
! typedef struct NODE_T NODE_T;
! typedef struct MODE_CACHE_T MODE_CACHE_T;
! typedef struct MOID_T MOID_T;
! typedef struct GINFO_T GINFO_T;
! typedef struct KEYWORD_T KEYWORD_T;
! typedef struct LINE_T LINE_T;
! typedef struct NODE_INFO_T NODE_INFO_T;
! typedef struct PACK_T PACK_T;
! typedef struct SOID_T SOID_T;
! typedef struct TABLE_T TABLE_T;
! typedef struct TAG_T TAG_T;
! typedef struct TOKEN_T TOKEN_T;
! typedef struct ORIGIN_T ORIGIN_T;
! typedef struct POSTULATE_T POSTULATE_T;
! typedef struct OPTIONS_T OPTIONS_T;
! typedef struct PARSER_T PARSER_T;
! typedef struct MODULE_T MODULE_T;
! typedef struct EXTRACT_T EXTRACT_T;
! typedef struct MOIF_T MOIF_T;
! typedef struct A68_T A68_T;
  
! #define NO_A68_REF ((A68_REF *) 0)
! #define NO_ARRAY ((A68_ARRAY *) 0)
! #define NO_BOOK ((BOOK_T *) 0)
! #define NO_BOOL ((bool *) 0)
! #define NO_BYTE ((BYTE_T *) 0)
! #define NO_CONSTANT ((void *) 0)
! #define NO_DEC ((DEC_T *) 0)
! #define NO_EDLIN ((EDLIN_T *) 0)
! #define NO_FILE ((FILE *) 0)
! #define NO_FORMAT ((A68_FORMAT *) 0)
! #define NO_GINFO ((GINFO_T *) 0)
! #define NO_GPROC ((void (*) (NODE_T *)) 0)
! #define NO_HANDLE ((A68_HANDLE *) 0)
! #define NO_INT ((int *) 0)
! #define NO_JMP_BUF ((jmp_buf *) 0)
! #define NO_KEYWORD ((KEYWORD_T *) 0)
! #define NO_NINFO ((NODE_INFO_T *) 0)
! #define NO_NOTE ((void (*) (NODE_T *)) 0)
! #define NO_OPTION_LIST ((OPTION_LIST_T *) 0)
! #define NO_PACK ((PACK_T *) 0)
! #define NO_PPROC ((PROP_T (*) (NODE_T *)) 0)
! #define NO_PROCEDURE ((A68_PROCEDURE *) 0)
! #define NO_REAL ((REAL_T *) 0)
! #define NO_REFINEMENT ((REFINEMENT_T *) 0)
! #define NO_REGMATCH ((regmatch_t *) 0)
! #define NO_SCOPE ((SCOPE_T *) 0)
! #define NO_SOID ((SOID_T *) 0)
! #define NO_STREAM NO_FILE
! #define NO_TEXT ((char *) 0)
! #define NO_TICK ((bool *) 0)
! #define NO_TOKEN ((TOKEN_T *) 0)
! #define NO_TUPLE ((A68_TUPLE *) 0)
! #define NO_VAR (0)
  
  /* A STATUS_MASK_T is a word of flags denoting states.
  
--- 75,112 ----
  
  typedef char BUFFER[BUFFER_SIZE + 1];
  
! struct MODES_T;
! struct NODE_T;
! struct MODE_CACHE_T;
! struct MOID_T;
! struct GINFO_T;
! struct KEYWORD_T;
! struct LINE_T;
! struct NODE_INFO_T;
! struct PACK_T;
! struct SOID_T;
! struct TABLE_T;
! struct TAG_T;
! struct TOKEN_T;
! struct ORIGIN_T;
! struct POSTULATE_T;
! struct OPTIONS_T;
! struct PARSER_T;
! struct MODULE_T;
! struct EXTRACT_T;
! struct MOIF_T;
! struct A68_T;
  
! constexpr GINFO_T *NO_GINFO = nullptr;
! constexpr KEYWORD_T *NO_KEYWORD = nullptr;
! constexpr NODE_INFO_T *NO_NINFO = nullptr;
! constexpr void (*NO_NOTE) (NODE_T *) = nullptr;
! constexpr PACK_T *NO_PACK = nullptr;
! constexpr SOID_T *NO_SOID = nullptr;
! constexpr char *NO_TEXT = nullptr;
! constexpr bool *NO_TICK = nullptr;
! constexpr TOKEN_T *NO_TOKEN = nullptr;
! #define NO_VAR nullptr
  
  /* A STATUS_MASK_T is a word of flags denoting states.
  
*************** struct GTY(()) A68_T
*** 1123,1129 ****
  #define TRANSIENT(p) ((p)->transient)
  #define TREE_LISTING_SAFE(p) ((p)->tree_listing_safe)
  #define TRIM(p) ((p)->trim)
- #define TUPLE(p) ((p)->tuple)
  #define UNIT(p) ((p)->unit)
  #define USE(p) ((p)->use)
  #define VALUE(p) ((p)->value)
--- 1100,1105 ----
diff -Nrcpad gcc-16-20251130/gcc/analyzer/kf.cc gcc-16-20251207/gcc/analyzer/kf.cc
*** gcc-16-20251130/gcc/analyzer/kf.cc	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/analyzer/kf.cc	Sun Dec  7 22:32:07 2025
*************** register_known_functions (known_function
*** 2334,2342 ****
      kfm.add ("__builtin_strlen", std::make_unique<kf_strlen> ());
      kfm.add ("strstr", std::make_unique<kf_strstr> ());
      kfm.add ("__builtin_strstr", std::make_unique<kf_strstr> ());
- 
-     register_atomic_builtins (kfm);
-     register_varargs_builtins (kfm);
    }
  
    /* Known POSIX functions, and some non-standard extensions.  */
--- 2334,2339 ----
diff -Nrcpad gcc-16-20251130/gcc/attribs.cc gcc-16-20251207/gcc/attribs.cc
*** gcc-16-20251130/gcc/attribs.cc	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/attribs.cc	Sun Dec  7 22:32:07 2025
*************** decl_attributes (tree *node, tree attrib
*** 967,976 ****
  	  for (a = find_same_attribute (attr, old_attrs);
  	       a != NULL_TREE;
  	       a = find_same_attribute (attr, TREE_CHAIN (a)))
! 	    {
! 	      if (simple_cst_equal (TREE_VALUE (a), args) == 1)
! 		break;
! 	    }
  
  	  if (a == NULL_TREE)
  	    {
--- 967,974 ----
  	  for (a = find_same_attribute (attr, old_attrs);
  	       a != NULL_TREE;
  	       a = find_same_attribute (attr, TREE_CHAIN (a)))
! 	    if (attribute_value_equal (a, attr))
! 	      break;
  
  	  if (a == NULL_TREE)
  	    {
diff -Nrcpad gcc-16-20251130/gcc/bb-reorder.cc gcc-16-20251207/gcc/bb-reorder.cc
*** gcc-16-20251130/gcc/bb-reorder.cc	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/bb-reorder.cc	Sun Dec  7 22:32:07 2025
*************** reorder_basic_blocks_software_trace_cach
*** 2377,2383 ****
    FREE (bbd);
  }
  
! /* Order edges by execution frequency, higher first.  */
  
  static int
  edge_order (const void *ve1, const void *ve2)
--- 2377,2387 ----
    FREE (bbd);
  }
  
! /* Order edges by execution frequency, higher first.
!    Return:
!        1 iff frequency (VE1) < frequency (VE2)
!        0 iff frequency (VE1) == frequency (VE2)
!        -1 iff frequency (VE1) > frequency (VE2)  */
  
  static int
  edge_order (const void *ve1, const void *ve2)
*************** edge_order (const void *ve1, const void
*** 2392,2398 ****
    gcov_type gc1 = c1.initialized_p () ? c1.to_gcov_type () : 0;
    gcov_type gc2 = c2.initialized_p () ? c2.to_gcov_type () : 0;
    gcov_type m = MAX (gc1, gc2);
!   return (m == gc1) - (m == gc2);
  }
  
  /* Reorder basic blocks using the "simple" algorithm.  This tries to
--- 2396,2407 ----
    gcov_type gc1 = c1.initialized_p () ? c1.to_gcov_type () : 0;
    gcov_type gc2 = c2.initialized_p () ? c2.to_gcov_type () : 0;
    gcov_type m = MAX (gc1, gc2);
!   int low_to_high_cmp = (m == gc1) - (m == gc2);
!   /* gcc_stablesort sorts values in low-to-high order.  But edges should
!      be sorted in the opposite order - with highest execution frequency first.
!      So return an inverted comparison to trick gcc_stablesort into
!      performing a reversed sorting order.  */
!   return -1 * low_to_high_cmp;
  }
  
  /* Reorder basic blocks using the "simple" algorithm.  This tries to
diff -Nrcpad gcc-16-20251130/gcc/c/ChangeLog gcc-16-20251207/gcc/c/ChangeLog
*** gcc-16-20251130/gcc/c/ChangeLog	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/c/ChangeLog	Sun Dec  7 22:32:07 2025
***************
*** 1,3 ****
--- 1,17 ----
+ 2025-12-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-parser.cc (c_parser_gimple_postfix_expression):
+ 	Parse optional clique : base specifier on __MEM.
+ 
+ 2025-12-05  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* c-parser.cc (c_parser_omp_clause_dyn_groupprivate): New.
+ 	(OMP_TARGET_CLAUSE_MASK): Add PRAGMA_OMP_CLAUSE_DYN_GROUPPRIVATE;
+ 	sort clauses alphabetically.
+ 	(c_parser_omp_clause_name, c_parser_omp_all_clauses):
+ 	Handle 'dyn_groupprivate' clause.
+ 	* c-typeck.cc (c_finish_omp_clauses): Likewise.
+ 
  2025-11-27  Jakub Jelinek  <jakub@redhat.com>
  
  	PR c/121506
diff -Nrcpad gcc-16-20251130/gcc/c/c-parser.cc gcc-16-20251207/gcc/c/c-parser.cc
*** gcc-16-20251130/gcc/c/c-parser.cc	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/c/c-parser.cc	Sun Dec  7 22:32:07 2025
*************** c_parser_omp_clause_name (c_parser *pars
*** 16411,16416 ****
--- 16411,16418 ----
  	    result = PRAGMA_OMP_CLAUSE_DIST_SCHEDULE;
  	  else if (!strcmp ("doacross", p))
  	    result = PRAGMA_OMP_CLAUSE_DOACROSS;
+ 	  else if (!strcmp ("dyn_groupprivate", p))
+ 	    result = PRAGMA_OMP_CLAUSE_DYN_GROUPPRIVATE;
  	  break;
  	case 'e':
  	  if (!strcmp ("enter", p))
*************** c_parser_omp_clause_doacross (c_parser *
*** 20262,20267 ****
--- 20264,20359 ----
    return list;
  }
  
+ /* OpenMP 6.1:
+    dyn_groupprivate ( [fallback-modifier : ] integer-expression )
+ 
+    fallback-modifier
+       fallback( abort | default_mem | null )  */
+ 
+ static tree
+ c_parser_omp_clause_dyn_groupprivate (c_parser *parser, tree list)
+ {
+   location_t clause_loc = c_parser_peek_token (parser)->location;
+   matching_parens parens;
+   if (!parens.require_open (parser))
+     return list;
+ 
+   enum omp_clause_fallback_kind kind = OMP_CLAUSE_FALLBACK_UNSPECIFIED;
+ 
+   unsigned n = 3;
+   if (c_parser_next_token_is (parser, CPP_NAME)
+       && (c_parser_peek_2nd_token (parser)->type == CPP_COLON
+ 	  || (c_parser_peek_2nd_token (parser)->type == CPP_OPEN_PAREN
+ 	      && c_parser_check_balanced_raw_token_sequence (parser, &n)
+ 	      && (c_parser_peek_nth_token_raw (parser, n)->type
+ 		  == CPP_CLOSE_PAREN)
+ 	      && (c_parser_peek_nth_token_raw (parser, n + 1)->type
+ 		  == CPP_COLON))))
+     {
+       const char *p = IDENTIFIER_POINTER (c_parser_peek_token (parser)->value);
+       if (strcmp (p, "fallback") != 0)
+ 	{
+ 	  c_parser_error (parser, "expected %<fallback%> modifier");
+ 	  return list;
+ 	}
+       c_parser_consume_token (parser);
+       if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>"))
+ 	return list;
+       p = "";
+       if (c_parser_next_token_is (parser, CPP_NAME))
+ 	p = IDENTIFIER_POINTER (c_parser_peek_token (parser)->value);
+       if (strcmp (p, "abort") == 0)
+ 	kind = OMP_CLAUSE_FALLBACK_ABORT;
+       else if (strcmp (p, "default_mem") == 0)
+ 	kind = OMP_CLAUSE_FALLBACK_DEFAULT_MEM;
+       else if (strcmp (p, "null") == 0)
+ 	kind = OMP_CLAUSE_FALLBACK_NULL;
+       else
+ 	{
+ 	  c_parser_error (parser, "expected %<abort%>, %<default_mem%>, or "
+ 				  "%<null%> as fallback mode");
+ 	  return list;
+ 	}
+       c_parser_consume_token (parser);
+       if (!c_parser_require (parser, CPP_CLOSE_PAREN, "expected %<)%>"))
+ 	return list;
+       if (!c_parser_require (parser, CPP_COLON, "expected %<:%>"))
+ 	return list;
+     }
+   location_t expr_loc = c_parser_peek_token (parser)->location;
+   c_expr expr = c_parser_expr_no_commas (parser, NULL);
+   expr = convert_lvalue_to_rvalue (expr_loc, expr, false, true);
+   tree size = c_fully_fold (expr.value, false, NULL);
+   parens.skip_until_found_close (parser);
+ 
+   if (!INTEGRAL_TYPE_P (TREE_TYPE (size)))
+     {
+       error_at (expr_loc, "expected integer expression");
+       return list;
+     }
+ 
+   /* Attempt to statically determine when the number is negative.  */
+   tree c = fold_build2_loc (expr_loc, LT_EXPR, boolean_type_node, size,
+ 			    build_int_cst (TREE_TYPE (size), 0));
+   protected_set_expr_location (c, expr_loc);
+   if (c == boolean_true_node)
+     {
+       warning_at (expr_loc, OPT_Wopenmp,
+ 		  "%<dyn_groupprivate%> value must be non-negative");
+       size = integer_zero_node;
+     }
+   check_no_duplicate_clause (list, OMP_CLAUSE_DYN_GROUPPRIVATE,
+ 			     "dyn_groupprivate");
+ 
+   c = build_omp_clause (clause_loc, OMP_CLAUSE_DYN_GROUPPRIVATE);
+   OMP_CLAUSE_DYN_GROUPPRIVATE_KIND (c) = kind;
+   OMP_CLAUSE_DYN_GROUPPRIVATE_EXPR (c) = size;
+   OMP_CLAUSE_CHAIN (c) = list;
+   list = c;
+ 
+   return list;
+ }
+ 
  /* OpenMP 4.0:
     map ( map-kind: variable-list )
     map ( variable-list )
*************** c_parser_omp_all_clauses (c_parser *pars
*** 21982,21987 ****
--- 22074,22083 ----
  	  clauses = c_parser_omp_clause_destroy (parser, clauses);
  	  c_name = "destroy";
  	  break;
+ 	case PRAGMA_OMP_CLAUSE_DYN_GROUPPRIVATE:
+ 	  clauses = c_parser_omp_clause_dyn_groupprivate (parser, clauses);
+ 	  c_name = "dyn_groupprivate";
+ 	  break;
  	case PRAGMA_OMP_CLAUSE_INIT:
  	  clauses = c_parser_omp_clause_init (parser, clauses);
  	  c_name = "init";
*************** c_parser_omp_target_exit_data (location_
*** 26796,26814 ****
       structured-block  */
  
  #define OMP_TARGET_CLAUSE_MASK					\
! 	( (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_DEVICE)	\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_MAP)		\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_IF)		\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_DEPEND)	\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_NOWAIT)	\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_PRIVATE)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_FIRSTPRIVATE)	\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_ALLOCATE)	\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_DEFAULTMAP)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_IN_REDUCTION)	\
- 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_THREAD_LIMIT)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_IS_DEVICE_PTR)\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_HAS_DEVICE_ADDR))
  
  static bool
  c_parser_omp_target (c_parser *parser, enum pragma_context context, bool *if_p)
--- 26892,26911 ----
       structured-block  */
  
  #define OMP_TARGET_CLAUSE_MASK					\
! 	( (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_ALLOCATE)	\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_DEFAULTMAP)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_DEPEND)	\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_DEVICE)	\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_DYN_GROUPPRIVATE) \
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_FIRSTPRIVATE)	\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_HAS_DEVICE_ADDR) \
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_IF)		\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_IN_REDUCTION)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_IS_DEVICE_PTR)\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_MAP)		\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_NOWAIT)	\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_PRIVATE)	\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_THREAD_LIMIT))
  
  static bool
  c_parser_omp_target (c_parser *parser, enum pragma_context context, bool *if_p)
diff -Nrcpad gcc-16-20251130/gcc/c/c-typeck.cc gcc-16-20251207/gcc/c/c-typeck.cc
*** gcc-16-20251130/gcc/c/c-typeck.cc	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/c/c-typeck.cc	Sun Dec  7 22:32:07 2025
*************** c_finish_omp_clauses (tree clauses, enum
*** 17879,17884 ****
--- 17879,17885 ----
  	case OMP_CLAUSE_FINAL:
  	case OMP_CLAUSE_DEVICE:
  	case OMP_CLAUSE_DIST_SCHEDULE:
+ 	case OMP_CLAUSE_DYN_GROUPPRIVATE:
  	case OMP_CLAUSE_PARALLEL:
  	case OMP_CLAUSE_FOR:
  	case OMP_CLAUSE_SECTIONS:
diff -Nrcpad gcc-16-20251130/gcc/c/gimple-parser.cc gcc-16-20251207/gcc/c/gimple-parser.cc
*** gcc-16-20251130/gcc/c/gimple-parser.cc	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/c/gimple-parser.cc	Sun Dec  7 22:32:07 2025
*************** c_parser_gimple_postfix_expression (gimp
*** 1529,1535 ****
  	    {
  	      /* __MEM '<' type-name [ ',' number ] '>'
  	               '(' [ '(' type-name ')' ] unary-expression
! 		           [ '+' number ] ')'  */
  	      location_t loc = c_parser_peek_token (parser)->location;
  	      c_parser_consume_token (parser);
  	      tree type = c_parser_gimple_typespec (parser);
--- 1529,1536 ----
  	    {
  	      /* __MEM '<' type-name [ ',' number ] '>'
  	               '(' [ '(' type-name ')' ] unary-expression
! 			   [ '+' number ]
! 			   [ ',' number ':' number ] ')'  */
  	      location_t loc = c_parser_peek_token (parser)->location;
  	      c_parser_consume_token (parser);
  	      tree type = c_parser_gimple_typespec (parser);
*************** c_parser_gimple_postfix_expression (gimp
*** 1539,1544 ****
--- 1540,1547 ----
  	      step.value = NULL_TREE;
  	      index.value = NULL_TREE;
  	      index2.value = NULL_TREE;
+ 	      unsigned short clique = 0;
+ 	      unsigned short base = 0;
  	      if (c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>"))
  		{
  		  tree alias_type = NULL_TREE;
*************** c_parser_gimple_postfix_expression (gimp
*** 1620,1625 ****
--- 1623,1649 ----
  				  "expected constant step for %<__MEM%> "
  				  "operand");
  		    }
+ 		  if (c_parser_next_token_is (parser, CPP_COMMA))
+ 		    {
+ 		      struct c_expr cl, ba;
+ 		      c_parser_consume_token (parser);
+ 		      cl = c_parser_gimple_postfix_expression (parser);
+ 		      if (c_parser_require (parser,
+ 					    CPP_COLON, "expected %<:%>"))
+ 			{
+ 			  ba = c_parser_gimple_postfix_expression (parser);
+ 			  if (!tree_fits_uhwi_p (cl.value)
+ 			      || !tree_fits_uhwi_p (ba.value)
+ 			      || compare_tree_int (cl.value,
+ 						   (clique = tree_to_uhwi
+ 								(cl.value)))
+ 			      || compare_tree_int (ba.value,
+ 						   (base = tree_to_uhwi
+ 								 (ba.value))))
+ 			    error_at (cl.get_start (),
+ 				      "invalid clique/base pair");
+ 			}
+ 		    }
  		  c_parser_skip_until_found (parser, CPP_CLOSE_PAREN,
  					     "expected %<)%>");
  		}
*************** c_parser_gimple_postfix_expression (gimp
*** 1635,1640 ****
--- 1659,1670 ----
  	      else
  		expr.value = build2_loc (loc, MEM_REF,
  					 type, ptr.value, alias_off.value);
+ 	      if (clique != 0)
+ 		{
+ 		  cfun->last_clique = MAX (cfun->last_clique, clique);
+ 		  MR_DEPENDENCE_CLIQUE (expr.value) = clique;
+ 		  MR_DEPENDENCE_BASE (expr.value) = base;
+ 		}
  	      break;
  	    }
  	  else if (strcmp (IDENTIFIER_POINTER (id), "__VIEW_CONVERT") == 0)
diff -Nrcpad gcc-16-20251130/gcc/c-family/ChangeLog gcc-16-20251207/gcc/c-family/ChangeLog
*** gcc-16-20251130/gcc/c-family/ChangeLog	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/c-family/ChangeLog	Sun Dec  7 22:32:07 2025
***************
*** 1,3 ****
--- 1,15 ----
+ 2025-12-05  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* c-omp.cc (c_omp_split_clauses): Handle
+ 	OMP_CLAUSE_DYN_GROUPPRIVATE, sort target clauses
+ 	alphabetically.
+ 	* c-pragma.h (enum pragma_omp_clause): Add
+ 	PRAGMA_OMP_CLAUSE_DYN_GROUPPRIVATE.
+ 
+ 2025-11-30  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* c.opt.urls: Regenerate.
+ 
  2025-11-26  Alejandro Colomar  <alx@kernel.org>
  
  	* c-common.cc (c_common_reswords): Add _Maxof & _Minof keywords.
diff -Nrcpad gcc-16-20251130/gcc/c-family/c-omp.cc gcc-16-20251207/gcc/c-family/c-omp.cc
*** gcc-16-20251130/gcc/c-family/c-omp.cc	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/c-family/c-omp.cc	Sun Dec  7 22:32:07 2025
*************** c_omp_split_clauses (location_t loc, enu
*** 2176,2186 ****
  	{
  	/* First the clauses that are unique to some constructs.  */
  	case OMP_CLAUSE_DEVICE:
- 	case OMP_CLAUSE_MAP:
- 	case OMP_CLAUSE_IS_DEVICE_PTR:
- 	case OMP_CLAUSE_HAS_DEVICE_ADDR:
  	case OMP_CLAUSE_DEFAULTMAP:
  	case OMP_CLAUSE_DEPEND:
  	  s = C_OMP_CLAUSE_SPLIT_TARGET;
  	  break;
  	case OMP_CLAUSE_DOACROSS:
--- 2176,2187 ----
  	{
  	/* First the clauses that are unique to some constructs.  */
  	case OMP_CLAUSE_DEVICE:
  	case OMP_CLAUSE_DEFAULTMAP:
  	case OMP_CLAUSE_DEPEND:
+ 	case OMP_CLAUSE_DYN_GROUPPRIVATE:
+ 	case OMP_CLAUSE_IS_DEVICE_PTR:
+ 	case OMP_CLAUSE_HAS_DEVICE_ADDR:
+ 	case OMP_CLAUSE_MAP:
  	  s = C_OMP_CLAUSE_SPLIT_TARGET;
  	  break;
  	case OMP_CLAUSE_DOACROSS:
diff -Nrcpad gcc-16-20251130/gcc/c-family/c-pragma.h gcc-16-20251207/gcc/c-family/c-pragma.h
*** gcc-16-20251130/gcc/c-family/c-pragma.h	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/c-family/c-pragma.h	Sun Dec  7 22:32:07 2025
*************** enum pragma_omp_clause {
*** 119,124 ****
--- 119,125 ----
    PRAGMA_OMP_CLAUSE_DEVICE_TYPE,
    PRAGMA_OMP_CLAUSE_DIST_SCHEDULE,
    PRAGMA_OMP_CLAUSE_DOACROSS,
+   PRAGMA_OMP_CLAUSE_DYN_GROUPPRIVATE,
    PRAGMA_OMP_CLAUSE_ENTER,
    PRAGMA_OMP_CLAUSE_FILTER,
    PRAGMA_OMP_CLAUSE_FINAL,
diff -Nrcpad gcc-16-20251130/gcc/calls.cc gcc-16-20251207/gcc/calls.cc
*** gcc-16-20251130/gcc/calls.cc	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/calls.cc	Sun Dec  7 22:32:07 2025
*************** expand_call (tree exp, rtx target, int i
*** 3579,3585 ****
  		      && check_sibcall_argument_overlap (before_arg,
  							 &args[i], true)))
  		sibcall_failure = true;
! 	      }
  
  	  if (args[i].stack)
  	    call_fusage
--- 3579,3586 ----
  		      && check_sibcall_argument_overlap (before_arg,
  							 &args[i], true)))
  		sibcall_failure = true;
! 	      gcc_checking_assert (!args[i].stack || argblock);
! 	    }
  
  	  if (args[i].stack)
  	    call_fusage
*************** expand_call (tree exp, rtx target, int i
*** 3676,3681 ****
--- 3677,3708 ----
  	  && !must_preallocate && reg_parm_stack_space > 0)
  	anti_adjust_stack (GEN_INT (reg_parm_stack_space));
  
+       /* Cover pushed arguments with call usage, so that cselib knows to
+ 	 invalidate the stores in them at the call insn.  */
+       if (pass == 1 && !argblock
+ 	  && (maybe_ne (adjusted_args_size.constant, 0)
+ 	      || adjusted_args_size.var))
+ 	{
+ 	  rtx addr = virtual_outgoing_args_rtx;
+ 	  poly_int64 size = adjusted_args_size.constant;
+ 	  if (!STACK_GROWS_DOWNWARD)
+ 	    {
+ 	      if (adjusted_args_size.var)
+ 		/* ??? We can't compute the exact base address.  */
+ 		addr = gen_rtx_PLUS (GET_MODE (addr), addr,
+ 				     gen_rtx_SCRATCH (GET_MODE (addr)));
+ 	      else
+ 		addr = plus_constant (GET_MODE (addr), addr, -size);
+ 	    }
+ 	  rtx fu = gen_rtx_MEM (BLKmode, addr);
+ 	  if (adjusted_args_size.var == 0)
+ 	    set_mem_size (fu, size);
+ 	  call_fusage
+ 	    = gen_rtx_EXPR_LIST (BLKmode,
+ 				 gen_rtx_USE (VOIDmode, fu),
+ 				 call_fusage);
+ 	}
+ 
        /* Pass the function the address in which to return a
  	 structure value.  */
        if (pass != 0 && structure_value_addr && ! structure_value_addr_parm)
diff -Nrcpad gcc-16-20251130/gcc/cobol/ChangeLog gcc-16-20251207/gcc/cobol/ChangeLog
*** gcc-16-20251130/gcc/cobol/ChangeLog	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/cobol/ChangeLog	Sun Dec  7 22:32:07 2025
***************
*** 1,3 ****
--- 1,89 ----
+ 2025-12-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* lang.opt: Make sure all option descriptions are terminated with
+ 	a dot.
+ 	(preprocess): Capitalize first letter of option description.
+ 
+ 2025-12-01  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	PR cobol/119329
+ 	PR cobol/119331
+ 	PR cobol/120786
+ 	* Make-lang.in: Add cobol/messages.o to cobol1 sources.
+ 	* cbldiag.h (yywarn): Remove function.
+ 	(struct cbl_loc_t): Introduce new location type independent of Bison.
+ 	(enum cbl_diag_id_t): Enumerate diagnostic messages.
+ 	(cbl_message): New function.
+ 	(dialect_ok): Test for dialect, emit standard message.
+ 	(dialect_not_ok): Emit standard message if syntax excluded by dialect.
+ 	(dialect_error): Remove function.
+ 	(cbl_unimplementedw): Use cbl_diag_id_t.
+ 	(cbl_unimplemented): Whitespace.
+ 	* cdf.y: Update token values.
+ 	* cobol1.cc (enable_exceptions): Use cbl_message.
+ 	(cobol_warning): Declare function.
+ 	(cobol_langhook_handle_option): Add 44 new warning options.
+ 	(cobol_langhook_type_for_mode): Remove function.
+ 	* except.cc (cbl_enabled_exception_t::dump): Remove function.
+ 	* exceptg.h (class exception_turn_t): Use cbl_diag_id_t.
+ 	* gcobol.1: Document dialect syntax and new warning options.
+ 	* genapi.cc (parser_label_label): Remove unused warning.
+ 	* gengen.cc (gg_find_field_in_struct): Use cbl_internal_error.
+ 	(gg_printf): Same.
+ 	(gg_fprintf): Same.
+ 	(gg_define_function): Same.
+ 	(gg_get_function_decl): Same.
+ 	(gg_call_expr): Same.
+ 	(gg_call): Same.
+ 	* lang-specs.h: Add warning options.
+ 	* lang.opt: Add ISO dialect and options.
+ 	* lexio.cc (parse_replacing_term): Use cbl_message.
+ 	(parse_replacing_pair): Same.
+ 	(preprocess_filter_add): Same.
+ 	(cdftext::echo_input): Same.
+ 	(cdftext::lex_open): Same.
+ 	(cdftext::open_input): Same.
+ 	* messages.cc: New file implements cbl_message.
+ 	* parse.y: Use cbl_message.
+ 	* parse_ante.h (dialect_proscribed): Remove function.
+ 	(parser_move_carefully): Use dialect_ok.
+ 	(goodnight_gracie): Convert warning to debug message.
+ 	* scan.l: Use dialect_ok.
+ 	* scan_ante.h (scanner_parsing): Use cbl_diag_id_t.
+ 	(scanner_parsing_toggle): Same.
+ 	(scanner_parsing_pop): Same.
+ 	(verify_ws): Same.
+ 	(level_of): Same.
+ 	(typed_name): Same.
+ 	(integer_of): Same.
+ 	* scan_post.h (datetime_format_of): Use cbl_internal_error.
+ 	(prelex): Emit only debug messages.
+ 	* show_parse.h: Use cbl_internal_error.
+ 	* symbols.cc (symbols_update): Remove dialect test because parser's problem.
+ 	(cbl_field_t::internalize): Use cbl_message.
+ 	* symbols.h (enum cbl_dialect_t): Add ISO to cbl_dialect_t.
+ 	(cbl_dialect_str): Recognize ISO dialect.
+ 	(dialect_has): New function.
+ 	(cbl_diagnostic_kind): New function.
+ 	(cbl_dialect_kind): New function.
+ 	(struct cbl_alphabet_t): Emit only debug message.
+ 	* token_names.h: Regenerate.
+ 	* util.cc (gb4): Emit only debug message.
+ 	(current_token_location): Add overload to set token_location.
+ 	(yywarn): Remove function.
+ 	(cobol_fileline_set): Use cbl_message.
+ 	(cobol_parse_files): Same.
+ 	(cbl_message): New diagnostic message function uses cbl_diag_id_t.
+ 	(cbl_diagnostic_kind): New function.
+ 	(cbl_diagnostic_option): New function.
+ 	(cbl_unimplementedw): Use cbl_diag_id_t.
+ 	(dialect_error): Remove function.
+ 	* util.h (cbl_message): Remove obsolete prototype for cbl_message.
+ 
+ 2025-11-30  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* lang.opt.urls: Regenerate.
+ 
  2025-11-17  James K. Lowden  <jklowden@cobolworx.com>
  
  	PR cobol/122702
diff -Nrcpad gcc-16-20251130/gcc/cobol/Make-lang.in gcc-16-20251207/gcc/cobol/Make-lang.in
*** gcc-16-20251130/gcc/cobol/Make-lang.in	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/cobol/Make-lang.in	Sun Dec  7 22:32:07 2025
*************** cobol1_OBJS =    \
*** 71,76 ****
--- 71,77 ----
   cobol/genmath.o    \
   cobol/gengen.o     \
   cobol/lexio.o      \
+  cobol/messages.o   \
   cobol/parse.o      \
   cobol/scan.o       \
   cobol/structs.o    \
diff -Nrcpad gcc-16-20251130/gcc/cobol/cbldiag.h gcc-16-20251207/gcc/cobol/cbldiag.h
*** gcc-16-20251130/gcc/cobol/cbldiag.h	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/cobol/cbldiag.h	Sun Dec  7 22:32:07 2025
*************** const char * cobol_filename();
*** 46,52 ****
   *  diagnostic framework and use text that can be localized.
   */
  void yyerror( const char fmt[], ... ) ATTRIBUTE_GCOBOL_DIAG(1, 2);
- bool yywarn( const char fmt[], ... ) ATTRIBUTE_GCOBOL_DIAG(1, 2);
  
  /* Location type.  Borrowed from parse.h as generated by Bison. */
  #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
--- 46,51 ----
*************** struct YDFLTYPE
*** 78,83 ****
--- 77,186 ----
  
  #endif
  
+ struct cbl_loc_t {
+   int first_line;
+   int first_column;
+   int last_line;
+   int last_column;
+ 
+   cbl_loc_t( const YYLTYPE& loc ) 
+     : first_line(loc.first_line)
+     , first_column(loc.first_column)
+     , last_line(loc.last_line)
+     , last_column(loc.last_column)
+   {}
+ 
+   operator YYLTYPE() const {
+     return { first_line, first_column, last_line, last_column };
+   } 
+ };
+ 
+ /*
+  * Naming Convention: Names end with a letter that indicates 
+  * their kind:
+  * F  fatal, "fatal error: "
+  * I  ice, "internal compiler error: "
+  * E  error, "error: "
+  * S  sorry, "sorry, unimplemented: "
+  * W  warning, "warning: "
+  * A  anachronism, "anachronism: "
+  * N  note, "note: "
+  * D  debug, "debug: "
+  */
+ enum cbl_diag_id_t : uint64_t {
+   CdfNotFoundW, 
+   CdfParameterW,
+   
+   EcUnknownW, 
+ 
+   LexIncludeE,
+   LexIncludeOkN,
+   LexIndicatorE,
+   LexInputN,
+   LexLineE,
+   LexPreprocessE,
+   LexReplaceE,
+   LexSeparatorE,
+ 
+   IbmEjectE,
+   IbmEqualAssignE,
+   IbmLengthOf, 
+   IbmProcedurePointer, 
+   IbmSectionNegE,
+   IbmSectionRangeE,
+   IbmSectionSegmentW,
+   IbmStopNumber,
+   IbmVolatileE,  
+   IbmVolatileW,  // dialect warning for ignored syntax
+ 
+   IsoResume,
+ 
+   MfBinaryLongLong,
+   MfCallGiving,
+   MfCdfDollar, 
+   MfComp6,
+   MfCompX,
+   MfLevel_1_Occurs, 
+   MfLevel78,
+   MfMovePointer, 
+   MfReturningNum,
+   MfUsageTypename,
+   MfTrailing,
+   
+   Par78CdfDefinedW,
+   ParIconvE, 
+   ParInfoI,
+   ParLangInfoW,
+   ParLiteral2W, 
+   ParLocaleW,
+   ParNoCorrespondingW,
+   ParNumstrW, 
+   ParUnresolvedProcE, 
+ 
+   SynApplyCommit,
+   SynFileCodeSet,
+   SynHighOrderBit,
+   SynRecordingMode,
+   SynSetLocaleTo,
+   SynSetToLocale,
+ 
+   DiagDiagDiag // always last
+ };
+ 
+ bool cbl_message( cbl_diag_id_t id, const char msg[], ... )
+   ATTRIBUTE_GCOBOL_DIAG(2, 3);
+ 
+ bool cbl_message( cbl_loc_t loc, cbl_diag_id_t id, const char msg[], ... )
+   ATTRIBUTE_GCOBOL_DIAG(3, 4);
+ 
+ bool
+ dialect_ok( const cbl_loc_t& loc, cbl_diag_id_t id, const char term[], bool ok = true );
+ 
+ static inline bool
+ dialect_not_ok( const cbl_loc_t& loc, cbl_diag_id_t id, const char term[] ) {
+   return dialect_ok(loc, id, term, false);
+ }
+ 
  // Diagnostic format specifiers are documented in gcc/pretty-print.cc
  // an error at a location, called from the parser for semantic errors
  void error_msg( const YYLTYPE& loc, const char gmsgid[], ... )
*************** warn_msg( const YYLTYPE& loc, const char
*** 91,106 ****
  void error_msg_direct( const char gmsgid[], ... )
    ATTRIBUTE_GCOBOL_DIAG(1, 2);
  
- void dialect_error( const YYLTYPE& loc, const char term[], const char dialect[] );
- 
- 
  // for CDF and other warnings that refer back to an earlier line
  // (not in diagnostic framework yet)
  void yyerrorvl( int line, const char *filename, const char fmt[], ... )
    ATTRIBUTE_PRINTF_3;
  
! void cbl_unimplementedw(const char *gmsgid, ...) ATTRIBUTE_GCOBOL_DIAG(1, 2); // warning
! void cbl_unimplemented(const char *gmsgid, ...) ATTRIBUTE_GCOBOL_DIAG(1, 2);  // error
  void cbl_unimplemented_at( const  YYLTYPE& loc, const char *gmsgid, ... )
    ATTRIBUTE_GCOBOL_DIAG(2, 3);
  
--- 194,208 ----
  void error_msg_direct( const char gmsgid[], ... )
    ATTRIBUTE_GCOBOL_DIAG(1, 2);
  
  // for CDF and other warnings that refer back to an earlier line
  // (not in diagnostic framework yet)
  void yyerrorvl( int line, const char *filename, const char fmt[], ... )
    ATTRIBUTE_PRINTF_3;
  
! void cbl_unimplementedw(cbl_diag_id_t id, const char *gmsgid, ...)
!   ATTRIBUTE_GCOBOL_DIAG(2, 3); // warning
! void cbl_unimplemented(const char *gmsgid, ...)
!   ATTRIBUTE_GCOBOL_DIAG(1, 2);  // error
  void cbl_unimplemented_at( const  YYLTYPE& loc, const char *gmsgid, ... )
    ATTRIBUTE_GCOBOL_DIAG(2, 3);
  
diff -Nrcpad gcc-16-20251130/gcc/cobol/cdf.y gcc-16-20251207/gcc/cobol/cdf.y
*** gcc-16-20251130/gcc/cobol/cdf.y	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/cobol/cdf.y	Sun Dec  7 22:32:07 2025
*************** apply_cdf_turn( const exception_turn_t&
*** 201,207 ****
  %type	<cdfarg>	namelit name_any name_one
  %type	<string>	name subscript subscripts inof
  %token <boolean>  BOOL
! %token <number>  FEATURE 366  NUMBER 303  EXCEPTION_NAME 280    "EXCEPTION NAME"
  
  %type	<cdfval>	cdf_expr
  %type	<cdfval>	cdf_relexpr cdf_reloper cdf_and cdf_bool_expr
--- 201,207 ----
  %type	<cdfarg>	namelit name_any name_one
  %type	<string>	name subscript subscripts inof
  %token <boolean>  BOOL
! %token <number>  FEATURE 367  NUMBER 304  EXCEPTION_NAME 280    "EXCEPTION NAME"
  
  %type	<cdfval>	cdf_expr
  %type	<cdfval>	cdf_relexpr cdf_reloper cdf_and cdf_bool_expr
*************** apply_cdf_turn( const exception_turn_t&
*** 213,264 ****
  
  %type   <number>        cdf_stackable
  
! %token BY 487
! %token COPY 363
! %token CDF_DISPLAY 385    ">>DISPLAY"
  %token IN 606
  %token NAME 286
! %token NUMSTR 305    "numeric literal"
  %token OF 687
  %token PSEUDOTEXT 723
  %token REPLACING 745
! %token LITERAL 298
! %token SUPPRESS 377
  
! %token LSUB 368    "("
! %token SUBSCRIPT 376  RSUB 373    ")"
  
! %token CDF_DEFINE 384    ">>DEFINE"
! %token CDF_IF 386    ">>IF"
! %token CDF_ELSE 387    ">>ELSE"
! %token CDF_END_IF 388    ">>END-IF"
! %token CDF_EVALUATE 389    ">>EVALUATE"
! %token CDF_WHEN 390    ">>WHEN"
! %token CDF_END_EVALUATE 391    ">>END-EVALUATE"
  
! %token ALL 451
! %token CALL_CONVENTION 392    ">>CALL-CONVENTION"
! %token COBOL_WORDS 381    ">>COBOL-WORDS"
! %token CDF_PUSH 395    ">>PUSH"
! %token CDF_POP 396    ">>POP"
! %token SOURCE_FORMAT 397    ">>SOURCE FORMAT"
  
! %token AS 469  CONSTANT 362  DEFINED 364
  %type	<boolean>	     DEFINED
! %token OTHER 699  PARAMETER_kw 369    "PARAMETER"
! %token OFF 688  OVERRIDE 370
  %token THRU 950
  %token TRUE_kw 815    "True"
  
! %token CALL_COBOL 393    "CALL"
! %token CALL_VERBATIM 394    "CALL (as C)"
  
! %token TURN 817  CHECKING 497  LOCATION 650  ON 690  WITH 844
  
  %left OR 951
  %left AND 952
  %right NOT 953
! %left '<'  '>'  '='  NE 954  LE 955  GE 956
  %left '-'  '+'
  %left '*'  '/'
  %right NEG 958
--- 213,264 ----
  
  %type   <number>        cdf_stackable
  
! %token BY 488
! %token COPY 364
! %token CDF_DISPLAY 386    ">>DISPLAY"
  %token IN 606
  %token NAME 286
! %token NUMSTR 306    "numeric literal"
  %token OF 687
  %token PSEUDOTEXT 723
  %token REPLACING 745
! %token LITERAL 299
! %token SUPPRESS 378
  
! %token LSUB 369    "("
! %token SUBSCRIPT 377  RSUB 374    ")"
  
! %token CDF_DEFINE 385    ">>DEFINE"
! %token CDF_IF 387    ">>IF"
! %token CDF_ELSE 388    ">>ELSE"
! %token CDF_END_IF 389    ">>END-IF"
! %token CDF_EVALUATE 390    ">>EVALUATE"
! %token CDF_WHEN 391    ">>WHEN"
! %token CDF_END_EVALUATE 392    ">>END-EVALUATE"
  
! %token ALL 452
! %token CALL_CONVENTION 393    ">>CALL-CONVENTION"
! %token COBOL_WORDS 382    ">>COBOL-WORDS"
! %token CDF_PUSH 396    ">>PUSH"
! %token CDF_POP 397    ">>POP"
! %token SOURCE_FORMAT 398    ">>SOURCE FORMAT"
  
! %token AS 470  CONSTANT 363  DEFINED 365
  %type	<boolean>	     DEFINED
! %token OTHER 699  PARAMETER_kw 370    "PARAMETER"
! %token OFF 688  OVERRIDE 371
  %token THRU 950
  %token TRUE_kw 815    "True"
  
! %token CALL_COBOL 394    "CALL"
! %token CALL_VERBATIM 395    "CALL (as C)"
  
! %token TURN 817  CHECKING 498  LOCATION 650  ON 690  WITH 844
  
  %left OR 951
  %left AND 952
  %right NOT 953
! %left '<'  '>'  EQ 298    "EQUAL"  NE 954  LE 955  GE 956
  %left '-'  '+'
  %left '*'  '/'
  %right NEG 958
*************** cdf_define:	CDF_DEFINE cdf_constant NAME
*** 362,368 ****
                    }
  
  		}
! 	|	CDF_DEFINE cdf_constant NAME '=' cdf_expr[value] override
  		{  /* accept, but as error */
  		  if( scanner_parsing() ) {
  		    error_msg(@NAME, "CDF error: %s = value invalid", $NAME);
--- 362,368 ----
                    }
  
  		}
! 	|	CDF_DEFINE cdf_constant NAME EQ cdf_expr[value] override
  		{  /* accept, but as error */
  		  if( scanner_parsing() ) {
  		    error_msg(@NAME, "CDF error: %s = value invalid", $NAME);
*************** cdf_define:	CDF_DEFINE cdf_constant NAME
*** 382,389 ****
  		 */
  		{
  		  if( 0 == cdf_dictionary().count($NAME) ) {
! 		    yywarn("CDF: '%s' is defined AS PARAMETER "
! 			    "but was not defined", $NAME);
  		  }
  		}
  	|	CDF_DEFINE FEATURE as ON {
--- 382,390 ----
  		 */
  		{
  		  if( 0 == cdf_dictionary().count($NAME) ) {
!                     cbl_message(@NAME, CdfParameterW,
!                                 "CDF: '%s' is defined AS PARAMETER "
!                                 "but was not defined", $NAME);
  		  }
  		}
  	|	CDF_DEFINE FEATURE as ON {
*************** cdf_reloper:	    cdf_relexpr
*** 563,569 ****
  
  cdf_relexpr:	cdf_relexpr '<' cdf_expr { $$ = $1(@1) <  $3(@3); }
  	|	cdf_relexpr LE  cdf_expr { $$ = $1(@1) <= $3(@3); }
! 	|	cdf_relexpr '=' cdf_expr {
  		  $$ = cdfval_t(false);
  		  if( ( $1.string &&  $3.string) ||
  		      (!$1.string && !$3.string) )
--- 564,570 ----
  
  cdf_relexpr:	cdf_relexpr '<' cdf_expr { $$ = $1(@1) <  $3(@3); }
  	|	cdf_relexpr LE  cdf_expr { $$ = $1(@1) <= $3(@3); }
! 	|	cdf_relexpr EQ cdf_expr {
  		  $$ = cdfval_t(false);
  		  if( ( $1.string &&  $3.string) ||
  		      (!$1.string && !$3.string) )
*************** cdf_factor:     NAME {
*** 612,618 ****
  		    $$ = that->second;
  		  } else {
  		    if( ! scanner_parsing() ) {
! 		      yywarn("CDF skipping: no such variable '%s' (ignored)", $1);
  		    } else {
  		      error_msg(@NAME, "CDF error: no such variable '%s'", $1);
  		    }
--- 613,620 ----
  		    $$ = that->second;
  		  } else {
  		    if( ! scanner_parsing() ) {
! 		      cbl_message(CdfNotFoundW,
!                                   "CDF skipping: no such variable '%s'", $1);
  		    } else {
  		      error_msg(@NAME, "CDF error: no such variable '%s'", $1);
  		    }
diff -Nrcpad gcc-16-20251130/gcc/cobol/cobol1.cc gcc-16-20251207/gcc/cobol/cobol1.cc
*** gcc-16-20251130/gcc/cobol/cobol1.cc	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/cobol/cobol1.cc	Sun Dec  7 22:32:07 2025
*************** enable_exceptions( bool enable ) {
*** 317,323 ****
         NULL != (name = strtok(name, ",")); name = NULL ) {
      ec_type_t type = ec_type_of(name);
      if( type == ec_none_e ) {
!       yywarn("unrecognized exception '%s' was ignored", name);
        continue;
      }
      ec_disposition_t disposition = ec_type_disposition(type);
--- 317,323 ----
         NULL != (name = strtok(name, ",")); name = NULL ) {
      ec_type_t type = ec_type_of(name);
      if( type == ec_none_e ) {
!       cbl_message(EcUnknownW, "unrecognized exception '%s'", name);
        continue;
      }
      ec_disposition_t disposition = ec_type_disposition(type);
*************** enable_exceptions( bool enable ) {
*** 328,344 ****
    }
  }
  
  static bool
  cobol_langhook_handle_option (size_t scode,
!                               const char *arg ATTRIBUTE_UNUSED,
                                HOST_WIDE_INT value,
!                               int kind ATTRIBUTE_UNUSED,
                                location_t loc ATTRIBUTE_UNUSED,
                                const struct
                                cl_option_handlers *handlers ATTRIBUTE_UNUSED)
      {
      // process_command (decoded_options_count, decoded_options);
      enum opt_code code = (enum opt_code) scode;
  
      switch(code)
          {
--- 328,348 ----
    }
  }
  
+ void cobol_warning( cbl_diag_id_t id, int yn, bool );
+ 
  static bool
  cobol_langhook_handle_option (size_t scode,
!                               const char *arg,
                                HOST_WIDE_INT value,
!                               int kind,
                                location_t loc ATTRIBUTE_UNUSED,
                                const struct
                                cl_option_handlers *handlers ATTRIBUTE_UNUSED)
      {
      // process_command (decoded_options_count, decoded_options);
      enum opt_code code = (enum opt_code) scode;
+     auto super_kind = diagnostics::kind(kind);
+     bool warning_as_error = super_kind == diagnostics::kind::error;
  
      switch(code)
          {
*************** cobol_langhook_handle_option (size_t sco
*** 403,408 ****
--- 407,414 ----
              return true;
  
          case OPT_dialect:
+             // gcc disallows 0 as an enumerated value, so we used 0x10 for iso.
+             if( cobol_dialect == 0x100 ) cobol_dialect = 0; 
              cobol_dialect_set(cbl_dialect_t(cobol_dialect));
              return true;
  
*************** cobol_langhook_handle_option (size_t sco
*** 439,444 ****
--- 445,638 ----
              cobol_gcobol_feature_set(feature_internal_ebcdic_e);
              return true;
  
+         // Warnings and errors
+ 
+         case OPT_Wbinary_long_long:
+           cobol_warning(MfBinaryLongLong, binary_long_long, warning_as_error);
+           return true;
+ 
+         case OPT_Wcall_giving:
+           cobol_warning(MfCallGiving, call_giving, warning_as_error);
+           return true;
+ 
+         case OPT_Wcdf_dollar:
+           cobol_warning(MfCdfDollar, cdf_dollar, warning_as_error);
+           return true;
+ 
+         case OPT_Wcomp_6:
+           cobol_warning(MfComp6, comp_6, warning_as_error);
+           return true;
+ 
+         case OPT_Wcomp_x:
+           cobol_warning(MfCompX, comp_x, warning_as_error);
+           return true;
+ 
+         case OPT_Winspect_trailing:
+           cobol_warning(MfTrailing, inspect_trailing, warning_as_error);
+           return true;
+ 
+         case OPT_Wlevel_1_occurs:
+           cobol_warning(MfLevel_1_Occurs, level_1_occurs, warning_as_error);
+           return true;
+ 
+         case OPT_Wlevel_78_defined:
+           cobol_warning(Par78CdfDefinedW, level_78_defined, warning_as_error);
+           return true;
+ 
+         case OPT_Wmove_pointer:
+           cobol_warning(MfMovePointer, move_pointer, warning_as_error);
+           return true;
+ 
+         case OPT_Wlevel_78:
+           cobol_warning(MfLevel78, level_78, warning_as_error);
+           return true;
+ 
+         case OPT_Wreturning_number:
+           cobol_warning(MfReturningNum, returning_number, warning_as_error);
+           return true;
+ 
+         case OPT_Wusage_typename:
+           cobol_warning(MfUsageTypename, usage_typename, warning_as_error);
+           return true;
+ 
+         case OPT_Wbad_line_directive:
+           cobol_warning(LexLineE, bad_line_directive, warning_as_error);
+           return true;
+ 
+         case OPT_Wequal_assign:
+           cobol_warning(IbmEqualAssignE, equal_assign, warning_as_error);
+           return true;
+ 
+         case OPT_Wbad_numeric:
+           cobol_warning(ParNumstrW, bad_numeric, warning_as_error);
+           return true;
+ 
+         case OPT_Wcdf_invalid_parameter:
+           cobol_warning(CdfParameterW, cdf_invalid_parameter, warning_as_error);
+           return true;
+ 
+         case OPT_Wcdf_name_not_found:
+           cobol_warning(CdfNotFoundW, cdf_name_not_found, warning_as_error);
+           return true;
+ 
+         case OPT_Wcopybook_found:
+           cobol_warning(LexInputN, copybook_found, warning_as_error);
+           return true;
+ 
+         case OPT_Wec_unknown:
+           cobol_warning(EcUnknownW, ec_unknown, warning_as_error);
+           return true;
+ 
+         case OPT_Wentry_convention:
+           cobol_warning(ParInfoI, entry_convention, warning_as_error);
+           return true;
+ 
+         case OPT_Wiconv_error:
+           cobol_warning(ParIconvE, iconv_error, warning_as_error);
+           return true;
+ 
+         case OPT_Winclude_file_found:
+           cobol_warning(LexIncludeOkN, include_file_found, warning_as_error);
+           return true;
+ 
+         case OPT_Winclude_file_not_found:
+           cobol_warning(LexIncludeE, include_file_not_found, warning_as_error);
+           return true;
+ 
+         case OPT_Wliteral_concat:
+           cobol_warning(ParLiteral2W, literal_concat, warning_as_error);
+           return true;
+ 
+         case OPT_Wlocale_error:
+           cobol_warning(ParLocaleW, locale_error, warning_as_error);
+           return true;
+ 
+         case OPT_Wmove_corresponding:
+           cobol_warning(ParNoCorrespondingW, warn_corresponding, warning_as_error);
+           return true;
+ 
+         case OPT_Wnllanginfo_error:
+           cobol_warning(ParLangInfoW, nllanginfo_error, warning_as_error);
+           return true;
+ 
+         case OPT_Wlength_of:
+           cobol_warning(IbmLengthOf, cobol_length_of, warning_as_error);
+           return true;
+ 
+         case OPT_Wpreprocessor_error:
+           cobol_warning(ParLangInfoW, preprocessor_error, warning_as_error);
+           return true;
+ 
+         case OPT_Wprocedure_pointer:
+           cobol_warning(IbmProcedurePointer, procedure_pointer, warning_as_error);
+           return true;
+ 
+         case OPT_Wprocedure_not_found:
+           cobol_warning(ParUnresolvedProcE, procedure_not_found, warning_as_error);
+           return true;
+ 
+         case OPT_Wreplace_error:
+           cobol_warning(LexReplaceE, replace_error, warning_as_error);
+           return true;
+ 
+         case OPT_Wsegment_error:
+           cobol_warning(IbmSectionRangeE, segment_error, warning_as_error);
+           return true;
+ 
+         case OPT_Wsegment_negative:
+           cobol_warning(IbmSectionNegE, segment_negative, warning_as_error);
+           return true;
+ 
+         case OPT_Wsegment:
+           cobol_warning(IbmSectionSegmentW, cobol_segment, warning_as_error);
+           return true;
+ 
+         case OPT_Wcobol_eject:
+           cobol_warning(IbmEjectE, cobol_eject, warning_as_error);
+           return true;
+ 
+         case OPT_Woperator_space:
+           cobol_warning(LexSeparatorE, operator_space, warning_as_error);
+           return true;
+ 
+         case OPT_Wstop_number:
+           cobol_warning(IbmStopNumber, stop_number, warning_as_error);
+           return true;
+ 
+         case OPT_Wstray_indicator:
+           cobol_warning(LexIndicatorE, stray_indicator, warning_as_error);
+           return true;
+ 
+         case OPT_Wcobol_volatile:
+           // If arg is true, the error becoomes a warning
+           cobol_warning(IbmVolatileE, cobol_volatile, warning_as_error);
+           cobol_warning(IbmVolatileW, cobol_volatile, warning_as_error);
+           return true;
+ 
+         case OPT_Wcobol_resume:
+           cobol_warning(IsoResume, cobol_resume, warning_as_error);
+           return true;
+ 
+         case OPT_Wapply_commit:
+           cobol_warning(SynApplyCommit, apply_commit, warning_as_error);
+           return true;
+ 
+         case OPT_Whigh_order_bit:
+           cobol_warning(SynHighOrderBit, high_order_bit, warning_as_error);
+           return true;
+ 
+         case OPT_Wfile_code_set:
+           cobol_warning(SynFileCodeSet, file_code_set, warning_as_error);
+           return true;
+ 
+         case OPT_Wset_locale_to:
+           cobol_warning(SynSetLocaleTo, set_locale_to, warning_as_error);
+           return true;
+ 
+         case OPT_Wset_to_locale:
+           cobol_warning(SynSetToLocale, set_to_locale, warning_as_error);
+           return true;
+ 
          default:
              break;
          }
*************** cobol_langhook_type_for_mode (enum machi
*** 514,527 ****
      return NULL;
      }
  
- ////static tree
- ////cobol_langhook_type_for_size (unsigned int bits ATTRIBUTE_UNUSED,
- ////                              int unsignedp ATTRIBUTE_UNUSED)
- ////    {
- ////    gcc_unreachable ();
- ////    return NULL;
- ////    }
- 
  /* Record a builtin function.  We just ignore builtin functions.  */
  
  static tree
--- 708,713 ----
diff -Nrcpad gcc-16-20251130/gcc/cobol/except.cc gcc-16-20251207/gcc/cobol/except.cc
*** gcc-16-20251130/gcc/cobol/except.cc	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/cobol/except.cc	Sun Dec  7 22:32:07 2025
*************** ec_level( ec_type_t ec ) {
*** 76,90 ****
  }
  
  void
- cbl_enabled_exception_t::dump( int i ) const {
-   cbl_message(2, "cbl_enabled_exception_t: %2d  {%s, %s, %zu}",
-               i,
-               location? "location" : "    none",
-               ec_type_str(ec),
-               file );
- }
- 
- void
  cbl_enabled_exceptions_t::dump() const {
    extern int yydebug;
    int debug = 1;
--- 76,81 ----
diff -Nrcpad gcc-16-20251130/gcc/cobol/exceptg.h gcc-16-20251207/gcc/cobol/exceptg.h
*** gcc-16-20251130/gcc/cobol/exceptg.h	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/cobol/exceptg.h	Sun Dec  7 22:32:07 2025
*************** class exception_turn_t {
*** 77,83 ****
    bool add_exception( ec_type_t type, const filelist_t& files = filelist_t() ) {
      ec_disposition_t disposition = ec_type_disposition(type);
      if( disposition != ec_implemented(disposition) ) {
! 	cbl_unimplementedw("CDF: exception '%s'", ec_type_str(type));
      }
      auto elem = exceptions.find(type);
      if( elem != exceptions.end() ) return false; // cannot add twice
--- 77,83 ----
    bool add_exception( ec_type_t type, const filelist_t& files = filelist_t() ) {
      ec_disposition_t disposition = ec_type_disposition(type);
      if( disposition != ec_implemented(disposition) ) {
!       cbl_unimplementedw(EcUnknownW, "exception %qs", ec_type_str(type));
      }
      auto elem = exceptions.find(type);
      if( elem != exceptions.end() ) return false; // cannot add twice
diff -Nrcpad gcc-16-20251130/gcc/cobol/gcobol.1 gcc-16-20251207/gcc/cobol/gcobol.1
*** gcc-16-20251130/gcc/cobol/gcobol.1	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/cobol/gcobol.1	Sun Dec  7 22:32:07 2025
***************
*** 1,4 ****
! .ds lang COBOL
  .ds gcobol GCC\ \*[lang]\ Front-end
  .ds isostd ISO/IEC 1989:2023
  .Dd \& February 2025
--- 1,4 ----
!  .ds lang COBOL
  .ds gcobol GCC\ \*[lang]\ Front-end
  .ds isostd ISO/IEC 1989:2023
  .Dd \& February 2025
***************
*** 31,42 ****
  .Op Fl preprocess Ar preprocess-filter
  .Op Fl fflex-debug
  .Op Fl fyacc-debug
  .Ar filename Op ...
  .
  .Sh DESCRIPTION
  .Nm
! compiles \*[lang] source code to object code, and optionally produces an
! executable binary or shared object.  As a GCC component, it accepts
  all options that affect code-generation and linking.  Options specific
  to \*[lang] are listed below.
  .Bl -tag -width "\0\0debug"
--- 31,88 ----
  .Op Fl preprocess Ar preprocess-filter
  .Op Fl fflex-debug
  .Op Fl fyacc-debug
+ .\" warnings
+ .Op Fl Wno-apply-commit
+ .Op Fl Wno-file-code-set
+ .Op Fl Wno-high-order-bit
+ .Op Fl Wno-bad-line-directive
+ .Op Fl Wno-bad-numeric
+ .Op Fl Wno-binary-long-long
+ .Op Fl Wno-call-giving
+ .Op Fl Wno-cdf-dollar
+ .Op Fl Wno-cdf-invalid-parameter
+ .Op Fl Wno-cdf-name-not-found
+ .Op Fl Wno-cobol-eject
+ .Op Fl Wno-cobol-resume
+ .Op Fl Wno-cobol-volatile
+ .Op Fl Wno-comp-6
+ .Op Fl Wno-comp-x
+ .Op Fl Wno-copybook-found
+ .Op Fl Wno-ec-unknown
+ .Op Fl Wno-entry-convention
+ .Op Fl Wno-iconv-error
+ .Op Fl Wno-include-file-found
+ .Op Fl Wno-include-file-not-found
+ .Op Fl Wno-inspect-trailing
+ .Op Fl Wno-length-of
+ .Op Fl Wno-level-1-occurs
+ .Op Fl Wno-level-78
+ .Op Fl Wno-level-78-defined
+ .Op Fl Wno-literal-concat
+ .Op Fl Wno-locale-error
+ .Op Fl Wno-move-corresponding
+ .Op Fl Wno-move-pointer
+ .Op Fl Wno-nllanginfo-error
+ .Op Fl Wno-operator-space
+ .Op Fl Wno-preprocessor-error
+ .Op Fl Wno-procedure-not-found
+ .Op Fl Wno-procedure-pointer
+ .Op Fl Wno-replace-error
+ .Op Fl Wno-returning-number
+ .Op Fl Wno-segment-error
+ .Op Fl Wno-segment-negative
+ .Op Fl Wno-stop-number
+ .Op Fl Wno-stray-indicator
+ .Op Fl Wno-usage-typename
+ .Op Fl Wno-recording-mode
+ .Op Fl Wno-set-locale-to
+ .Op Fl Wno-set-to-locale
  .Ar filename Op ...
  .
  .Sh DESCRIPTION
  .Nm
! compiles \*[lang] source code to object code, and optionally produces
! an executable binary or shared object.  As a GCC component, it accepts
  all options that affect code-generation and linking.  Options specific
  to \*[lang] are listed below.
  .Bl -tag -width "\0\0debug"
*************** because its value is determined at run t
*** 283,312 ****
  By default,
  .Nm
  accepts \*[lang] syntax as defined by \*[isostd], with some
! extensions for backward compatibility with COBOL-85.  To make the
! compiler more generally useful, some additional syntax is supported by
! this option.
! .Pp
! The value of
  .Ar dialect-name
  may be
! .Bl -tag -compact
  .It ibm
! to indicate IBM COBOL 6.3 syntax, specifically
! .D1 STOP <number>.
  .It gnu
! to indicate GnuCOBOL syntax
  .It mf
! to indicate MicroFocus syntax, specifically
  .Sy LEVEL 78
! constants.
  .El
- .Pp
- Only a few such non-standard constructs are accepted, and
- .Nm
- makes no claim to emulate other compilers.  But to the extent that a
- feature is popular but nonstandard, this option provides a way to
- support it, or add it.
  .
  .It Fl include Ar filename
  Process
--- 329,394 ----
  By default,
  .Nm
  accepts \*[lang] syntax as defined by \*[isostd], with some
! extensions for backward compatibility with COBOL-85.  Additional syntax is supported with this option. The value of
  .Ar dialect-name
  may be
! .Bl -tag
  .It ibm
! to indicate IBM COBOL 6.4 syntax:
! .Bl -bullet -compact
! .It
! .Sy EJECT
! .It
! .Sy EQUAL
! as assignment operator
! .It
! .Sy "LENGTH OF"
! .It
! .Sy "PROCEDURE POINTER"
! .It
! .Sy SECTION
! segment
! .It
! .Sy STOP
! <number>
! .It
! .Sy VOLATILE
! .El
  .It gnu
! to indicate GnuCOBOL syntax, generally compatible with MicroFocus.
  .It mf
! to indicate MicroFocus syntax:
! .Bl -bullet -compact
! .It
! .Sy BINARY-LONG-LONG
! .It
! .Sy CALL ... GIVING
! .It
! .Sy CDF \[Do]IF
! .It
! .Sy COMPUTATIONAL-6
! .It
! .Sy COMPUTATIONAL
! used with
! .Sy PICTURE X
! .It
! .Sy INSPECT ... TRAILING
! .It
! .Sy OCCURS
! at
! .Sy "LEVEL 01"
! .It
  .Sy LEVEL 78
! constants
! .It
! .Sy MOVE POINTER
! .It
! .Sy RETURNING
! <number>
! .It
! .Sy USAGE IS TYPENAME
! .El
  .El
  .
  .It Fl include Ar filename
  Process
*************** The
*** 371,377 ****
  should return a zero exit status, indicating success.  If it returns a
  nonzero exit status, an error is reported and the compiler is not
  invoked.
- .
  .It Fl fflex-debug Ns Li , Fl fyacc-debug
  produce messages useful for compiler development.  The
  .Fl fflex-debug
--- 453,458 ----
*************** option prints the tokenized input stream
*** 379,384 ****
--- 460,570 ----
  .Fl fyacc-debug
  option shows the shift and reduce actions taken by the parser.
  .El
+ .Ss Diagnostic Messages
+ .Pp
+ Many warning options can be used to convert error messages to
+ warnings, or to suppress messages related to \*[lang] dialects. The
+ user may mix and match. A group of features may be enabled by
+ indicating a dialect (or more than one dialect) and individual
+ features may be enabled as a warning, or error, or suppressed.
+ .Bl -tag -width Wno-cdf-name-not-found\0\0 -compact
+ .It Fl Wno-apply-commit
+ Warn if APPLY COMMIT is used.
+ .It Fl Wno-bad-line-directive
+ Warn if malformed %<#line%> directive is encountered.
+ .It Fl Wno-binary-long-long
+ Warn if BINARY-LONG-LONG is used.
+ .It Fl Wno-call_giving
+ Warn if CALL ... GIVING is used.
+ .It Fl Wno-cdf-dollar
+ Warn if CDF \[Do]IF is used.
+ .It Fl Wno-comp-6
+ Warn if COMPUTATIONAL-6 is used.
+ .It Fl Wno-comp-x
+ Warn if COMPUTATIONAL is used with PICTURE X.
+ .It Fl Wno-file-code-set
+ Warn if FILE CODE SET is used.
+ .It Fl Wno-inspect-trailing
+ Warn if INSPECT ... TRAILING is used.
+ .It Fl Wno-level-1-occurs
+ Warn if Level 01 is used with OCCURS.
+ .It Fl Wno-level-78-defined
+ Warn if CDF defines Level 78 constant.
+ .It Fl Wno-move-pointer
+ Warn if MOVE POINTER is used.
+ .It Fl Wno-returning-number
+ Warn if RETURNING <number> is used.
+ .It Fl Wno-usage-typename
+ Warn if USAGE IS TYPENAME is used.
+ .It Fl Wno-bad-numeric
+ Warn if numeric string is invalid.
+ .It Fl Wno-cdf-invalid-parameter
+ Warn if referenced CDF PARAMETER is not defined.
+ .It Fl Wno-cdf-name-not-found
+ Warn if referenced CDF name is not defined.
+ .It Fl Wno-cobol-eject
+ Warn if IBM-style EJECT is used (instead of error).
+ .It Fl Wno-cobol-resume
+ Warn if ISO RESUME is used with \-dialect ibm (instead of error).
+ .It Fl Wno-cobol-volatile
+ Warn if VOLATILE is used (instead of error if -dialect ibm).
+ .It Fl Wno-copybook-found
+ Print message when copybook is processed.
+ .It Fl Wno-ec-unknown
+ Warn if unimplemented/unknown exception condition is referenced.
+ .It Fl Wno-entry-convention
+ Print message when ENTRY CONVENTION is specified.
+ .It Fl Wno-high-order-bit
+ Warn if HIGH-ORDER-LEFT HIGH-ORDER-RIGHT is used.
+ .It Fl Wno-include-file-found
+ Print message when include file is processed.
+ .It Fl Wno-length-of
+ Warn if LENGTH OF is used.
+ .It Fl Wno-level-78
+ Warn if Level 78 is used.
+ .It Fl Wno-literal-concat
+ Warn if concatenated literals use different encodings.
+ .It Fl Wno-locale-error
+ Warn if locale(3) fails.
+ .It Fl Wno-move-corresponding
+ Warn if COBOL MOVE has no corresponding fields.
+ .It Fl Wno-nllanginfo-error
+ Warn if nlanglanginfo(3) fails.
+ .It Fl Wno-recording-mode
+ Warn if RECORDING MODE is used.
+ .It Fl Wno-segment
+ Warn if SECTION segments are used.
+ .It Fl Wno-set-locale-to
+ Warn if SET LOCALE ... TO is used.
+ .It Fl Wno-set-to-locale
+ Warn if SET ... TO LOCALE is used.
+ .
+ `.\" convert errors to warnings
+ Warn if a line directive is malformed (instead of error).
+ .It Fl Wno-iconv-error
+ Warn if iconv(3) cannot convert between encodings (instead of error).
+ .It Fl Wno-include-file-not-found
+ Warn if include file is not found (instead of error).
+ .It Fl Wno-operator-space
+ Warn if relational operator not followed by space (instead of error).
+ .It Fl Wno-preprocessor-error
+ Warn if a preprocessor fails  (instead of error).
+ .It Fl Wno-procedure-pointer
+ Warn if PROCEDURE POINTER is used.
+ .It Fl Wno-procedure-not-found
+ Warn if a referenced procedure is not found (instead of error).
+ .It Fl Wno-replace-error
+ Warn if REPLACE cannot be processed (instead of error).
+ .It Fl Wno-segment-error
+ Warn if a SEGMENT section is invalid (instead of error).
+ .It Fl Wno-segment-negative
+ Warn if a SEGMENT range is negative (instead of error).
+ .It Fl Wno-stop-number
+ Warn if IBM-style STOP <number> is used (instead of error).
+ .It Fl Wno-stray-indicator
+ Warn if indicator column has no recognized meaning (instead of error).
+ 
+ .El
  .
  .Sh COMPILATION SCENARIOS
  .D1 gcobol Ar xyz.cob
diff -Nrcpad gcc-16-20251130/gcc/cobol/genapi.cc gcc-16-20251207/gcc/cobol/genapi.cc
*** gcc-16-20251130/gcc/cobol/genapi.cc	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/cobol/genapi.cc	Sun Dec  7 22:32:07 2025
*************** public:
*** 4002,4013 ****
        dangling.insert(index_of(label));
      }
    }
!   bool lay( const cbl_label_t *label ) {
      auto ok = lain.insert(index_of(label));
      if( ok.second ) {
        dangling.erase(index_of(label));
      }
-     return true;
    }
    bool vet() const { // be always agreeable, for now.
      return dangling.empty();
--- 4002,4012 ----
        dangling.insert(index_of(label));
      }
    }
!   void lay( const cbl_label_t *label ) {
      auto ok = lain.insert(index_of(label));
      if( ok.second ) {
        dangling.erase(index_of(label));
      }
    }
    bool vet() const { // be always agreeable, for now.
      return dangling.empty();
*************** parser_label_label(struct cbl_label_t *l
*** 8222,8238 ****
  
    CHECK_LABEL(label);
  
- #if 1
-   // At the present time, label_verify.lay is returning true, so I edited
-   // out the if( !... ) to quiet cppcheck
    label_verify.lay(label);
- #else
-   if( ! label_verify.lay(label) )
-     {
-     yywarn("%s: label %qs already exists", __func__, label->name);
-     gcc_unreachable();
-     }
- #endif
  
    if(strcmp(label->name, "_end_declaratives") == 0 )
      {
--- 8221,8227 ----
diff -Nrcpad gcc-16-20251130/gcc/cobol/gengen.cc gcc-16-20251207/gcc/cobol/gengen.cc
*** gcc-16-20251130/gcc/cobol/gengen.cc	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/cobol/gengen.cc	Sun Dec  7 22:32:07 2025
*************** gg_find_field_in_struct(const tree base,
*** 523,532 ****
  
    if( !field_decl )
      {
!     yywarn("Somebody asked for the field %s.%s, which does not exist",
            IDENTIFIER_POINTER(DECL_NAME(base)),
            field_name);
-     gcc_unreachable();
      }
  
    return field_decl;
--- 523,531 ----
  
    if( !field_decl )
      {
!     cbl_internal_error("Somebody asked for the field %s.%s, which does not exist",
            IDENTIFIER_POINTER(DECL_NAME(base)),
            field_name);
      }
  
    return field_decl;
*************** gg_printf(const char *format_string, ...
*** 2153,2169 ****
      {
      if(nargs >= ARG_LIMIT)
        {
!       yywarn("You *must* be joking");
!       gcc_unreachable();
        }
  
      if( TREE_CODE(arg) >= NUM_TREE_CODES)
        {
        // Warning:  This test is not completely reliable, because a garbage
        // byte could have a valid TREE_CODE.  But it does help.
!       yywarn("You forgot to put a %<NULL_TREE%> at the end of a "
!                   "%<gg_printf()%> again");
!       gcc_unreachable();
        }
  
      args[nargs++] = arg;
--- 2152,2166 ----
      {
      if(nargs >= ARG_LIMIT)
        {
!       cbl_internal_error("You *must* be joking");
        }
  
      if( TREE_CODE(arg) >= NUM_TREE_CODES)
        {
        // Warning:  This test is not completely reliable, because a garbage
        // byte could have a valid TREE_CODE.  But it does help.
!       cbl_internal_error("You forgot to put a %<NULL_TREE%> at the end of a "
!                          "%<gg_printf()%> again");
        }
  
      args[nargs++] = arg;
*************** gg_fprintf(tree fd, int nargs, const cha
*** 2208,2215 ****
      {
      if(argc >= ARG_LIMIT)
        {
!       yywarn("You *must* be joking");
!       gcc_unreachable();
        }
  
      args[argc++] = arg;
--- 2205,2211 ----
      {
      if(argc >= ARG_LIMIT)
        {
!       cbl_internal_error("You *must* be joking");
        }
  
      args[argc++] = arg;
*************** gg_define_function( tree return_type,
*** 2587,2595 ****
        {
        // Warning:  This test is not completely reliable, because a garbage
        // byte could have a valid TREE_CODE.  But it does help.
!       yywarn("You forgot to put a %<NULL_TREE%> at the end of a "
                    "%<gg_define_function()%> again");
-       gcc_unreachable();
        }
  
      const char *name = va_arg(params, const char *);
--- 2583,2590 ----
        {
        // Warning:  This test is not completely reliable, because a garbage
        // byte could have a valid TREE_CODE.  But it does help.
!       cbl_internal_error("You forgot to put a %<NULL_TREE%> at the end of a "
                    "%<gg_define_function()%> again");
        }
  
      const char *name = va_arg(params, const char *);
*************** gg_define_function( tree return_type,
*** 2599,2606 ****
      nparams += 1;
      if(nparams > ARG_LIMIT)
        {
!       yywarn("%d parameters? Really? Are you insane?", ARG_LIMIT+1);
!       gcc_unreachable();
        }
      }
    va_end(params);
--- 2594,2600 ----
      nparams += 1;
      if(nparams > ARG_LIMIT)
        {
!       cbl_internal_error("%d parameters? Really? Are you insane?", ARG_LIMIT+1);
        }
      }
    va_end(params);
*************** gg_get_function_decl(tree return_type, c
*** 2748,2756 ****
        {
        // Warning:  This test is not completely reliable, because a garbage
        // byte could have a valid TREE_CODE.  But it does help.
!       yywarn("You forgot to put a %<NULL_TREE%> at the end of a "
              "%<gg_define_function()%> again");
-       gcc_unreachable();
        }
  
      const char *name = va_arg(params, const char *);
--- 2742,2749 ----
        {
        // Warning:  This test is not completely reliable, because a garbage
        // byte could have a valid TREE_CODE.  But it does help.
!       cbl_internal_error("You forgot to put a %<NULL_TREE%> at the end of a "
              "%<gg_define_function()%> again");
        }
  
      const char *name = va_arg(params, const char *);
*************** gg_get_function_decl(tree return_type, c
*** 2760,2768 ****
      nparams += 1;
      if(nparams > ARG_LIMIT)
        {
!       yywarn("%d parameters? Really? Are you insane?",
                    ARG_LIMIT+1);
-       gcc_unreachable();
        }
      }
    va_end(params);
--- 2753,2760 ----
      nparams += 1;
      if(nparams > ARG_LIMIT)
        {
!       cbl_internal_error("%d parameters? Really? Are you insane?",
                    ARG_LIMIT+1);
        }
      }
    va_end(params);
*************** gg_call_expr(tree return_type, const cha
*** 3040,3047 ****
      {
      if(nargs >= ARG_LIMIT)
        {
!       yywarn("You *must* be joking");
!       gcc_unreachable();
        }
  
      tree arg = va_arg(ap, tree);
--- 3032,3038 ----
      {
      if(nargs >= ARG_LIMIT)
        {
!       cbl_internal_error("You *must* be joking");
        }
  
      tree arg = va_arg(ap, tree);
*************** gg_call(tree return_type, const char *fu
*** 3096,3103 ****
      {
      if(nargs >= ARG_LIMIT)
        {
!       yywarn("You *must* be joking");
!       gcc_unreachable();
        }
  
      tree arg = va_arg(ap, tree);
--- 3087,3093 ----
      {
      if(nargs >= ARG_LIMIT)
        {
!       cbl_internal_error("You *must* be joking");
        }
  
      tree arg = va_arg(ap, tree);
diff -Nrcpad gcc-16-20251130/gcc/cobol/lang-specs.h gcc-16-20251207/gcc/cobol/lang-specs.h
*** gcc-16-20251130/gcc/cobol/lang-specs.h	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/cobol/lang-specs.h	Sun Dec  7 22:32:07 2025
***************
*** 42,47 ****
--- 42,93 ----
          "%{preprocess} "
          "%{dialect} "
          "%{include} "
+ 	"%{Wno-apply-commit} "
+ 	"%{Wno-file-code-set} "
+ 	"%{Wno-high-order-bit} "
+ 	"%{Wno-bad-line-directive} "
+ 	"%{Wno-bad-numeric} "
+ 	"%{Wno-binary-long-long} "
+ 	"%{Wno-call-giving} "
+ 	"%{Wno-cdf-dollar} "
+ 	"%{Wno-cdf-invalid-parameter} "
+ 	"%{Wno-cdf-name-not-found} "
+ 	"%{Wno-cobol-eject} "
+ 	"%{Wno-cobol-resume} "
+ 	"%{Wno-cobol-volatile} "
+ 	"%{Wno-comp-6} "
+ 	"%{Wno-comp-x} "
+ 	"%{Wno-copybook-found} "
+ 	"%{Wno-ec-unknown} "
+ 	"%{Wno-entry-convention} "
+ 	"%{Wno-iconv-error} "
+ 	"%{Wno-include-file-found} "
+ 	"%{Wno-include-file-not-found} "
+ 	"%{Wno-inspect-trailing} "
+ 	"%{Wno-length-of} "
+ 	"%{Wno-level-1-occurs} "
+ 	"%{Wno-level-78} "
+ 	"%{Wno-level-78-defined} "
+ 	"%{Wno-literal-concat} "
+ 	"%{Wno-locale-error} "
+ 	"%{Wno-move-corresponding} "
+ 	"%{Wno-move-pointer} "
+ 	"%{Wno-nllanginfo-error} "
+ 	"%{Wno-operator-space} "
+ 	"%{Wno-preprocessor-error} "
+ 	"%{Wno-procedure-not-found} "
+ 	"%{Wno-procedure-pointer} "
+ 	"%{Wno-replace-error} "
+ 	"%{Wno-returning-number} "
+ 	"%{Wno-segment-error} "
+ 	"%{Wno-segment-negative} "
+ 	"%{Wno-stop-number} "
+ 	"%{Wno-stray-indicator} "
+ 	"%{Wno-usage-typename} "
+ 	"%{Wno-recording-mode} "
+ 	"%{Wno-set-locale-to} "
+ 	"%{Wno-set-to-locale} "
          "%{nomain} "
          "%{!fsyntax-only:%(invoke_as)} "
          , 0, 0, 0},
+       
diff -Nrcpad gcc-16-20251130/gcc/cobol/lang.opt gcc-16-20251207/gcc/cobol/lang.opt
*** gcc-16-20251130/gcc/cobol/lang.opt	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/cobol/lang.opt	Sun Dec  7 22:32:07 2025
*************** Cobol
*** 45,82 ****
  
  dialect
  Cobol Joined Separate Enum(dialect_type) EnumBitSet Var(cobol_dialect)
! Accept COBOL constructs used by non-ISO compilers
  
  Enum
  Name(dialect_type) Type(int) UnknownError(Unrecognized COBOL dialect name: %qs)
  
  EnumValue
! Enum(dialect_type) String(gcc) Value(0x04) Canonical
  
  EnumValue
! Enum(dialect_type) String(ibm) Value(0x01)
  
  EnumValue
! Enum(dialect_type) String(mf)  Value(0x02)
  
  EnumValue
! Enum(dialect_type) String(gnu) Value(0x04)
  
  fcobol-exceptions
  Cobol Joined Separate Var(cobol_exceptions)
! -fcobol-exceptions=<n>	Enable some exceptions by default
  
  copyext
  Cobol Joined Separate Var(cobol_copyext) Init(0)
! Define alternative implicit copybook filename extension
  
  fdefaultbyte
  Cobol RejectNegative Joined Separate UInteger Var(cobol_default_byte)
! Set Working-Storage data items to the supplied value
  
  fflex-debug
  Cobol Var(yy_flex_debug, 1) Init(0)
! Enable Cobol lex debugging
  
  ffixed-form
  Cobol RejectNegative
--- 45,328 ----
  
  dialect
  Cobol Joined Separate Enum(dialect_type) EnumBitSet Var(cobol_dialect)
! Accept COBOL constructs used by non-ISO compilers.
  
  Enum
  Name(dialect_type) Type(int) UnknownError(Unrecognized COBOL dialect name: %qs)
  
  EnumValue
! Enum(dialect_type) String(iso) Value(0x100)
  
  EnumValue
! Enum(dialect_type) String(gcc) Value(0x01) Canonical
  
  EnumValue
! Enum(dialect_type) String(ibm) Value(0x02)
  
  EnumValue
! Enum(dialect_type) String(mf)  Value(0x04)
! 
! EnumValue
! Enum(dialect_type) String(gnu) Value(0x08)
  
  fcobol-exceptions
  Cobol Joined Separate Var(cobol_exceptions)
! -fcobol-exceptions=<n>	Enable some exceptions by default.
  
  copyext
  Cobol Joined Separate Var(cobol_copyext) Init(0)
! Define alternative implicit copybook filename extension.
! 
! ;; warnings
! 
! ; Par78CdfDefinedW
! Wlevel-78-defined
! Cobol Warning Var(level_78_defined, 1) Init(1)
! Warn if CDF defines Level 78 constant.
! 
! ; MfBinaryLongLong
! Wbinary-long-long
! Cobol Warning Var(binary_long_long, 1) Init(1)
! Warn if BINARY-LONG-LONG is used.
! 
! ; MfCallGiving
! Wcall-giving
! Cobol Warning Var(call_giving, 1) Init(1)
! Warn if CALL ... GIVING is used.
! 
! ; MfCdfDollar
! Wcdf-dollar
! Cobol Warning Var(cdf_dollar, 1) Init(1)
! Warn if CDF %<$IF%> is used.
! 
! ; MfComp6
! Wcomp-6
! Cobol Warning Var(comp_6, 1) Init(1)
! Warn if COMPUTATIONAL-6 is used.
! 
! ; MfCompX
! Wcomp-x
! Cobol Warning Var(comp_x, 1) Init(1)
! Warn if COMPUTATIONAL is used with PICTURE X.
! 
! ; MfTrailing
! Winspect-trailing
! Cobol Warning Var(inspect_trailing, 1) Init(1)
! Warn if INSPECT ... TRAILING is used.
! 
! ; MfLevel_1_Occurs
! Wlevel-1-occurs
! Cobol Warning Var(level_1_occurs, 1) Init(1)
! Warn if Level 01 is used with OCCURS.
! 
! ; MfLevel78
! Wlevel-78
! Cobol Warning Var(level_78, 1) Init(1)
! Warn if Level 78 is used.
! 
! ; MfMovePointer
! Wmove-pointer
! Cobol Warning Var(move_pointer, 1) Init(1)
! Warn if MOVE POINTER is used.
! 
! ; MfReturningNum
! Wreturning-number
! Cobol Warning Var(returning_number, 1) Init(1)
! Warn if RETURNING <number> is used.
! 
! ; MfUsageTypename
! Wusage-typename
! Cobol Warning Var(usage_typename, 1) Init(1)
! Warn if USAGE IS TYPENAME is used.
! 
! ; ParNumstrW
! Wbad-numeric
! Cobol Warning Var(bad_numeric, 1) Init(1)
! Warn if numeric string is invalid.
! 
! ; CdfParameterW
! Wcdf-invalid-parameter
! Cobol Warning Var(cdf_invalid_parameter, 1) Init(1)
! Warn if referenced CDF PARAMETER is not defined.
! 
! ; CdfNotFoundW
! Wcdf-name-not-found
! Cobol Warning Var(cdf_name_not_found, 1) Init(1)
! Warn if referenced CDF name is not defined.
! 
! ; LexInputN
! Wcopybook-found
! Cobol Warning Var(copybook_found, 1) Init(1)
! Print message when copybook is processed.
! 
! ; EcUnknownW
! Wec-unknown
! Cobol Warning Var(ec_unknown, 1) Init(1)
! Warn if unimplemented/unknown exception condition is referenced.
! 
! ; ParInfoI
! Wentry-convention
! Cobol Warning Var(entry_convention, 1) Init(1)
! Print message when ENTRY CONVENTION is specified.
! 
! ; LexIncludeOkN
! Winclude-file-found
! Cobol Warning Var(include_file_found, 1) Init(1)
! Print message when include file is processed.
! 
! ; ParLiteral2W
! Wliteral-concat
! Cobol Warning Var(literal_concat, 1) Init(1)
! Warn if concatenated literals use different encodings.
! 
! ; ParLocaleW
! Wlocale-error
! Cobol Warning Var(locale_error, 1) Init(1)
! Warn if locale(3) fails.
! 
! ; ParNoCorrespondingW
! Wmove-corresponding
! Cobol Warning Var(warn_corresponding, 1) Init(1) 
! Warn if COBOL MOVE has no corresponding fields.
! 
! ; ParLangInfoW
! Wnllanginfo-error
! Cobol Warning Var(nllanginfo_error, 1) Init(1)
! Warn if nlanglanginfo(3) fails.
! 
! ; IbmLengthOf
! Wlength-of
! Cobol Warning Var(cobol_length_of, 1) Init(1)
! Warn if LENGTH OF is used.
! 
! ; IbmProcedurePointer
! Wprocedure-pointer
! Cobol Warning Var(procedure_pointer, 1) Init(1)
! Warn if PROCEDURE POINTER is used.
! 
! ; IbmSectionSegmentW
! Wsegment
! Cobol Warning Var(cobol_segment, 1) Init(1)
! Warn if SECTION segments are used.
! 
! ; IsoResume
! Wcobol-resume
! Cobol Warning Var(cobol_resume, 1) Init(1)
! Warn if resume is used (instead of error for IBM).
! 
! ;; unimplemented syntax
! 
! ; SynApplyCommit
! Wapply-commit
! Cobol Warning Var(apply_commit, 1) Init(1)
! Warn if APPLY COMMIT is used.
! 
! ; SynHighOrderBit
! Whigh-order-bit
! Cobol Warning Var(high_order_bit, 1) Init(1)
! Warn if HIGH-ORDER-LEFT HIGH-ORDER-RIGHT is used.
! 
! ; SynFileCodeSet  
! Wfile-code-set
! Cobol Warning Var(file_code_set, 1) Init(1)
! Warn if FILE CODE SET is used.
! 
! ; SynRecordingMode
! Wrecording-mode
! Cobol Warning Var(recording_mode, 1) Init(1)
! Warn if RECORDING MODE is used.
! 
! ; SynSetLocaleTo
! Wset-locale-to
! Cobol Warning Var(set_locale_to, 1) Init(1)
! Warn if SET LOCALE ... TO is used.
! 
! ; SynSetToLocale
! Wset-to-locale
! Cobol Warning Var(set_to_locale, 1) Init(1)
! Warn if SET ... TO LOCALE is used.
! 
! ;; errors to warnings
! 
! ; LexLineE
! Wbad-line-directive
! Cobol Warning Var(bad_line_directive, 1) Init(1)
! Warn if a line directive is malformed (instead of error).
! 
! ; IbmEqualAssignE
! Wequal-assign
! Cobol Warning Var(equal_assign, 1) Init(1)
! Warn if EQUAL used as assignment operator (instead of error).
! 
! ; ParIconvE
! Wiconv-error
! Cobol Warning Var(iconv_error, 1) Init(1)
! Warn if iconv(3) cannot convert between encodings (instead of error).
! 
! ; LexIncludeE
! Winclude-file-not-found
! Cobol Warning Var(include_file_not_found, 1) Init(1)
! Warn if include file is not found (instead of error).
! 
! ; LexPreprocessE
! Wpreprocessor-error
! Cobol Warning Var(preprocessor_error, 1) Init(1)
! Warn if a preprocessor fails (instead of error).
! 
! ; ParUnresolvedProcE
! Wprocedure-not-found
! Cobol Warning Var(procedure_not_found, 1) Init(1)
! Warn if a referenced procedure is not found (instead of error).
! 
! ; LexReplaceE
! Wreplace-error
! Cobol Warning Var(replace_error, 1) Init(1)
! Warn if REPLACE cannot be processed (instead of error).
! 
! ; IbmSectionRangeE
! Wsegment-error
! Cobol Warning Var(segment_error, 1) Init(1)
! Warn if a SEGMENT section is invalid (instead of error).
! 
! ; IbmSectionNegE
! Wsegment-negative
! Cobol Warning Var(segment_negative, 1) Init(1)
! Warn if a SEGMENT range is negative (instead of error).
! 
! ; LexIndicatorE
! Wstray-indicator
! Cobol Warning Var(stray_indicator, 1) Init(1)
! Warn if indicator column has no recognized meaning (instead of error).
! 
! ; LexSeparatorE
! Woperator-space
! Cobol Warning Var(operator_space, 1) Init(1)
! Warn if relational operator not followed by space (instead of error).
! 
! ; IbmEjectE
! Wcobol-eject
! Cobol Warning Var(cobol_eject, 1) Init(1)
! Warn if IBM-style EJECT is used (instead of error).
! 
! ; IbmStopNumber
! Wstop-number
! Cobol Warning Var(stop_number, 1) Init(1)
! Warn if IBM-style STOP <number> is used (instead of error).
! 
! ; IbmVolatileE
! Wcobol-volatile
! Cobol Warning Var(cobol_volatile, 1) Init(1)
! Warn if VOLATILE is used (instead of error if -dialect ibm).
! 
! ;; end error-suppression options
  
  fdefaultbyte
  Cobol RejectNegative Joined Separate UInteger Var(cobol_default_byte)
! Set Working-Storage data items to the supplied value.
  
  fflex-debug
  Cobol Var(yy_flex_debug, 1) Init(0)
! Enable Cobol lex debugging.
  
  ffixed-form
  Cobol RejectNegative
*************** Assume that the source file is free form
*** 88,114 ****
  
  findicator-column
  Cobol RejectNegative Joined Separate UInteger Var(indicator_column) Init(0) IntegerRange(0, 8)
! -findicator-column=<n>	Column after which Region A begins
  
  finternal-ebcdic
  Cobol Var(cobol_ebcdic, 1) Init(0)
! -finternal-ebcdic	Internal processing is in EBCDIC Code Page 1140
  
  fstatic-call
  Cobol Var(cobol_static_call, 1) Init(1)
! Enable/disable static linkage for CALL literals
  
  ftrace-debug
  Cobol Var(cobol_trace_debug, 1) Init(0)
! Enable Cobol parser debugging
  
  fyacc-debug
  Cobol Var(yy_debug, 1) Init(0)
! Enable Cobol yacc debugging
  
  preprocess
  Cobol Joined Separate Var(cobol_preprocess)
! preprocess <source_filter> before compiling
  
  iprefix
  Cobol Joined Separate
--- 334,360 ----
  
  findicator-column
  Cobol RejectNegative Joined Separate UInteger Var(indicator_column) Init(0) IntegerRange(0, 8)
! -findicator-column=<n>	Column after which Region A begins.
  
  finternal-ebcdic
  Cobol Var(cobol_ebcdic, 1) Init(0)
! -finternal-ebcdic	Internal processing is in EBCDIC Code Page 1140.
  
  fstatic-call
  Cobol Var(cobol_static_call, 1) Init(1)
! Enable/disable static linkage for CALL literals.
  
  ftrace-debug
  Cobol Var(cobol_trace_debug, 1) Init(0)
! Enable Cobol parser debugging.
  
  fyacc-debug
  Cobol Var(yy_debug, 1) Init(0)
! Enable Cobol yacc debugging.
  
  preprocess
  Cobol Joined Separate Var(cobol_preprocess)
! Preprocess <source_filter> before compiling.
  
  iprefix
  Cobol Joined Separate
*************** Cobol Joined Separate
*** 128,141 ****
  
  main
  Cobol
! -main	The first program-id in the next source file is called by a generated main() entry point
  
  main=
  Cobol Joined Var(cobol_main_string)
! -main=<source_file> source_file/PROGRAM-ID is called by the generated main()
  
  nomain
  Cobol
! -nomain	No main() function is created from COBOL source files
  
  ; This comment is to ensure we retain the blank line above.
--- 374,387 ----
  
  main
  Cobol
! -main	The first program-id in the next source file is called by a generated main() entry point.
  
  main=
  Cobol Joined Var(cobol_main_string)
! -main=<source_file> source_file/PROGRAM-ID is called by the generated main().
  
  nomain
  Cobol
! -nomain	No main() function is created from COBOL source files.
  
  ; This comment is to ensure we retain the blank line above.
diff -Nrcpad gcc-16-20251130/gcc/cobol/lexio.cc gcc-16-20251207/gcc/cobol/lexio.cc
*** gcc-16-20251130/gcc/cobol/lexio.cc	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/cobol/lexio.cc	Sun Dec  7 22:32:07 2025
*************** parse_replacing_term( const char *stmt,
*** 681,687 ****
      }
      if( extraneous_replacing ) {
        update_yylloc( cm[0], cm[8] );
!       yywarn("syntax error: invalid '%.*s'", cm[8].length(), cm[8].first);
        output.matched = false;
        return output;
      }
--- 681,688 ----
      }
      if( extraneous_replacing ) {
        update_yylloc( cm[0], cm[8] );
!       cbl_message(LexReplaceE, "syntax error: invalid '%.*s'",
!                   cm[8].length(), cm[8].first);
        output.matched = false;
        return output;
      }
*************** parse_replacing_pair( const char *stmt,
*** 797,807 ****
        }
      }
      if( pair.stmt.p ) {
!       yywarn("CDF syntax error '%.*s'", (int)pair.stmt.size(), pair.stmt.p);
      }
      else {
        // This eliminated a compiler warning about "format-overflow"
!       yywarn("CDF syntax error");
      }
      pair.stmt = span_t(size_t(0), stmt);
      pair.replace = replace_t();
--- 798,808 ----
        }
      }
      if( pair.stmt.p ) {
!       cbl_message(LexReplaceE, "LEX syntax error '%.*s'", (int)pair.stmt.size(), pair.stmt.p);
      }
      else {
        // This eliminated a compiler warning about "format-overflow"
!       cbl_message(LexReplaceE, "LEX syntax error");
      }
      pair.stmt = span_t(size_t(0), stmt);
      pair.replace = replace_t();
*************** preprocess_filter_add( const char input[
*** 1466,1472 ****
  
    auto filename = find_filter(filter.c_str());
    if( !filename ) {
!     yywarn("preprocessor '%s/%s' not found", getcwd(NULL, 0), filter.c_str());
      return false;
    }
    preprocessor_filters.push_back( std::make_pair(xstrdup(filename), options) );
--- 1467,1474 ----
  
    auto filename = find_filter(filter.c_str());
    if( !filename ) {
!     cbl_message(LexPreprocessE, "preprocessor '%s/%s' not found",
!                 getcwd(NULL, 0), filter.c_str());
      return false;
    }
    preprocessor_filters.push_back( std::make_pair(xstrdup(filename), options) );
*************** void
*** 1477,1498 ****
  cdftext::echo_input( int input, const char filename[] ) {
    int fd;
    if( -1 == (fd = dup(input)) ) {
!       yywarn( "could not open preprocessed file %s to echo to standard output",
!                filename );
        return;
    }
  
    auto mfile = map_file(fd);
  
    if( -1 == write(STDOUT_FILENO, mfile.data, mfile.size()) ) {
!     yywarn( "could not write preprocessed file %s to standard output",
            filename );
    }
    if( -1 == munmap(mfile.data, mfile.size()) ) {
!     yywarn( "could not release mapped file" );
    }
    if( -1 == close(fd) ) {
!     yywarn( "could not close mapped file" );
    }
  }
  
--- 1479,1500 ----
  cdftext::echo_input( int input, const char filename[] ) {
    int fd;
    if( -1 == (fd = dup(input)) ) {
!       cbl_message(LexPreprocessE, "could not open preprocessed file "
!                                  "%s to echo to standard output", filename );
        return;
    }
  
    auto mfile = map_file(fd);
  
    if( -1 == write(STDOUT_FILENO, mfile.data, mfile.size()) ) {
!     cbl_message(LexPreprocessE, "could not write preprocessed file %s to standard output",
            filename );
    }
    if( -1 == munmap(mfile.data, mfile.size()) ) {
!     cbl_message(LexPreprocessE, "could not release mapped file" );
    }
    if( -1 == close(fd) ) {
!     cbl_message(LexPreprocessE, "could not close mapped file" );
    }
  }
  
*************** cdftext::lex_open( const char filename[]
*** 1515,1521 ****
    // Process any files supplied by the -include command-line option.
    for( auto name : included_files ) {
      if( -1 == (input = open(name, O_RDONLY)) ) {
!       yyerrorvl(1, "", "cannot open -include file %s", name);
        continue;
      }
      cobol_filename(name, inode_of(input));
--- 1517,1523 ----
    // Process any files supplied by the -include command-line option.
    for( auto name : included_files ) {
      if( -1 == (input = open(name, O_RDONLY)) ) {
!       cbl_message(LexIncludeE, "cannot open %<-include%> file %qs", name);
        continue;
      }
      cobol_filename(name, inode_of(input));
*************** cdftext::lex_open( const char filename[]
*** 1569,1575 ****
        }
        int erc;
        if( -1 == (erc = execv(filter, argv.data())) ) {
!         yywarn("could not execute %s", filter);
        }
        _exit(erc);
      }
--- 1571,1577 ----
        }
        int erc;
        if( -1 == (erc = execv(filter, argv.data())) ) {
!         cbl_message(LexPreprocessE, "could not execute %s", filter);
        }
        _exit(erc);
      }
*************** cdftext::lex_open( const char filename[]
*** 1588,1594 ****
               filter, status);
        }
      }
!     yywarn( "applied %s", filter );
    }
  
    return fdopen( output, "r");
--- 1590,1596 ----
               filter, status);
        }
      }
!     cbl_message(LexIncludeOkN, "applied %s", filter );
    }
  
    return fdopen( output, "r");
*************** cdftext::open_input( const char filename
*** 1604,1610 ****
    verbose_file_reader = NULL != getenv("GCOBOL_TEMPDIR");
  
    if( verbose_file_reader ) {
!     yywarn("verbose: opening %s for input", filename);
    }
    return fd;
  }
--- 1606,1612 ----
    verbose_file_reader = NULL != getenv("GCOBOL_TEMPDIR");
  
    if( verbose_file_reader ) {
!     cbl_message(LexInputN, "verbose: opening %s for input", filename);
    }
    return fd;
  }
diff -Nrcpad gcc-16-20251130/gcc/cobol/messages.cc gcc-16-20251207/gcc/cobol/messages.cc
*** gcc-16-20251130/gcc/cobol/messages.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/cobol/messages.cc	Sun Dec  7 22:32:07 2025
***************
*** 0 ****
--- 1,388 ----
+ /*
+  * Copyright (c) 2021-2025 Symas Corporation
+  *
+  * Redistribution and use in source and binary forms, with or without
+  * modification, are permitted provided that the following conditions are
+  * met:
+  *
+  * * Redistributions of source code must retain the above copyright
+  *   notice, this list of conditions and the following disclaimer.
+  * * Redistributions in binary form must reproduce the above
+  *   copyright notice, this list of conditions and the following disclaimer
+  *   in the documentation and/or other materials provided with the
+  *   distribution.
+  * * Neither the name of the Symas Corporation nor the names of its
+  *   contributors may be used to endorse or promote products derived from
+  *   this software without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  */
+ 
+ /*
+  * Define a table of diagnositic messages, each uniquely identified and 
+  * grouped into dialects. The user can select on the command line which 
+  * ones are in effect.  
+  */
+ 
+ #include <cobol-system.h>
+ #include <coretypes.h>
+ #include <tree.h>
+ #undef yy_flex_debug
+ 
+ #include <langinfo.h>
+ 
+ #include <coretypes.h>
+ #include <version.h>
+ #include <demangle.h>
+ #include <intl.h>
+ #include <backtrace.h>
+ #include <diagnostic.h>
+ #include <opts.h>
+ #include "util.h"
+ 
+ #include "cbldiag.h"
+ #include "cdfval.h"
+ #include "lexio.h"
+ 
+ #include "../../libgcobol/ec.h"
+ #include "../../libgcobol/common-defs.h"
+ #include "symbols.h"
+ #include "inspect.h"
+ #include "../../libgcobol/io.h"
+ #include "genapi.h"
+ #include "genutil.h"
+ #include "../../libgcobol/charmaps.h"
+ 
+ 
+ 
+ /*
+  * As of now, every diagnositc has one id, one message, one kind, and is
+  * associated with "one" dialect. The dialect could be ORed. If it is, that
+  * means among the dialects it belongs to, it is always of the same kind.
+  *
+  * The diagnositic mask in force during compilation may include/exclude
+  * features based on their associated dialect and/or by id.  It may stipulate
+  * that a warning is treated as an error, too, but that's up the diagnostic
+  * framework.  If a feature requires a dialect and is not specifically enabled,
+  * gcobol emits of message of the associated kind, and names the dialect
+  * required.
+  */
+ struct cbl_diag_t {
+   cbl_diag_id_t id;
+   cbl_name_t option;
+   diagnostics::kind kind;
+   cbl_dialect_t dialect;
+   
+   explicit cbl_diag_t( cbl_diag_id_t id )
+     : id(id), option(""), kind(diagnostics::kind::ignored), dialect(dialect_gcc_e)
+   {}
+ 
+   cbl_diag_t( cbl_diag_id_t id,
+               const char option[],
+               diagnostics::kind kind,
+               cbl_dialect_t dialect = dialect_iso_e )
+     : id(id), option(""), kind(kind), dialect(dialect)
+   {
+     gcc_assert(strlen(option) < sizeof(this->option));
+     strcpy(this->option, option);
+   }
+ 
+   bool operator<( const cbl_diag_t& that ) const {
+     return id < that.id;
+   }
+ };
+ 
+ /*
+  * Initially, errors and warnings are set per the default, dialect gcc.  If the
+  * user chooses dialect iso, all dialect-enabled features are turned into
+  * errors.  If the user selects a more generous dialect, features associated
+  * with it are set to be ignored.
+  * 
+  * Individual features may also be suppressed, and all warnings may be elevated
+  * to errors.
+  */
+ const static auto dialect_mf_gnu = cbl_dialect_t(dialect_mf_e | dialect_gnu_e);
+ const static auto dialect_ibm_mf_gnu = cbl_dialect_t(dialect_ibm_e |
+                                                      dialect_mf_e  |
+                                                      dialect_gnu_e);
+ 
+ std::set<cbl_diag_t> cbl_diagnostics {
+   { CdfNotFoundW, "-Wcdf-name-not-found", diagnostics::kind::warning },
+   { CdfParameterW, "-Wcdf-invalid-parameter", diagnostics::kind::warning },
+ 
+   { EcUnknownW, "-Wec-unknown", diagnostics::kind::warning },
+ 
+   { IbmEjectE, "-Wcobol-eject", diagnostics::kind::error, dialect_ibm_e },
+   { IbmLengthOf, "-Wlength-of", diagnostics::kind::error, dialect_ibm_mf_gnu },
+   { IbmEqualAssignE, "-Wequal-assign", diagnostics::kind::error, dialect_ibm_e },
+   { IbmProcedurePointer, "-Wprocedure-pointer", diagnostics::kind::error, dialect_ibm_mf_gnu },
+   { IbmSectionNegE, "-Wsegment-negative", diagnostics::kind::error, dialect_ibm_e },
+   { IbmSectionRangeE, "-Wsegment-error", diagnostics::kind::error, dialect_ibm_e },
+   { IbmSectionSegmentW, "-Wsegment", diagnostics::kind::warning, dialect_ibm_e },
+   { IbmStopNumber, "-Wstop-number", diagnostics::kind::error, dialect_ibm_e },
+   { IbmVolatileE, "-Wcobol-volatile", diagnostics::kind::error, dialect_ibm_e },
+   { IbmVolatileW, "-Wcobol-volatile", diagnostics::kind::warning, dialect_ibm_e },
+ 
+   // RESUME not supported by IBM
+   { IsoResume, "-Wcobol-resume", diagnostics::kind::error, dialect_ibm_e },
+ 
+   { MfBinaryLongLong, "-Wbinary-long-long", diagnostics::kind::error, dialect_mf_gnu },
+   { MfCallGiving, "-Wcall-giving", diagnostics::kind::error, dialect_mf_gnu },
+   { MfCdfDollar, "-Wcdf-dollar", diagnostics::kind::error, dialect_mf_gnu },
+   { MfComp6, "-Wcomp-6", diagnostics::kind::error, dialect_mf_gnu },
+   { MfCompX, "-Wcomp-x", diagnostics::kind::error, dialect_mf_gnu },
+   { MfLevel_1_Occurs, "Wlevel-1-occurs", diagnostics::kind::error, dialect_mf_gnu },
+   { MfLevel78, "-Wlevel-78", diagnostics::kind::error, dialect_mf_gnu },
+   { MfMovePointer, "-Wmove-pointer", diagnostics::kind::error, dialect_mf_gnu },
+   { MfReturningNum, "-Wreturning-number", diagnostics::kind::error, dialect_mf_gnu },
+   { MfUsageTypename, "-Wusage-typename", diagnostics::kind::error, dialect_mf_gnu },
+   { MfTrailing, "-Winspect-trailing", diagnostics::kind::error, dialect_mf_gnu },
+ 
+   { LexIncludeE, "-Winclude-file-not-found", diagnostics::kind::error }, 
+   { LexIncludeOkN, "-Winclude-file-found", diagnostics::kind::note }, 
+   { LexIndicatorE, "-Wstray-indicator", diagnostics::kind::error }, 
+   { LexInputN, "-Wcopybook-found", diagnostics::kind::note }, 
+   { LexLineE, "-Wbad-line-directive", diagnostics::kind::error }, 
+   { LexPreprocessE, "-Wpreprocessor-error", diagnostics::kind::error }, 
+   { LexReplaceE, "-Wreplace-error", diagnostics::kind::error },
+   // mf and gnu do not require whitespace after relational operators
+   { LexSeparatorE, "-Woperator-space", diagnostics::kind::error, dialect_mf_gnu }, 
+ 
+   { Par78CdfDefinedW, "-Wlevel-78-defined", diagnostics::kind::warning },
+   { ParIconvE, "-Wiconv-error", diagnostics::kind::note }, 
+   { ParInfoI, "-Wentry-convention", diagnostics::kind::note }, 
+   { ParLangInfoW, "-Wnllanginfo-error", diagnostics::kind::warning },
+   { ParLiteral2W, "-Wliteral-concat", diagnostics::kind::warning },
+   { ParLocaleW, "-Wlocale-error", diagnostics::kind::warning },
+   { ParNoCorrespondingW, "-Wmove-corresponding", diagnostics::kind::warning },
+   { ParNumstrW, "-Wbad-numeric", diagnostics::kind::warning },
+   { ParUnresolvedProcE, "-Wprocedure-not-found", diagnostics::kind::error },
+ 
+   // unimplmeneted syntax warnings
+   { SynApplyCommit, "-Wapply-commit", diagnostics::kind::warning },
+   { SynFileCodeSet, "-Wfile-code-set", diagnostics::kind::warning },
+   { SynHighOrderBit, "-Whigh-order-bit", diagnostics::kind::warning },
+   { SynRecordingMode, "-Wrecording-mode", diagnostics::kind::warning },
+   { SynSetLocaleTo, "-Wset-locale-to", diagnostics::kind::warning },
+   { SynSetToLocale, "-Wset-to-locale", diagnostics::kind::warning },
+ 
+ };
+ 
+ static struct set_verify {
+   set_verify() {
+     gcc_assert(cbl_diagnostics.size() == DiagDiagDiag);
+     auto p = std::find_if(cbl_diagnostics.begin(), cbl_diagnostics.end(),
+                              []( const auto& diag ) {
+                                return '?' == cbl_dialect_str(diag.dialect)[0];
+                              } );
+     if( p != cbl_diagnostics.end() ) {
+       fprintf(stderr, "unregconized dialect '%04x (~%04x)'", p->dialect, ~p->dialect);
+     }
+     gcc_assert( std::none_of(cbl_diagnostics.begin(), cbl_diagnostics.end(),
+                              []( const auto& diag ) {
+                                return '?' == cbl_dialect_str(diag.dialect)[0];
+                              } ) );
+   }
+ } verify_consistent_message_count;
+ 
+ static inline diagnostics::kind
+ kind_of( cbl_diag_id_t id ) {
+   auto diag = cbl_diagnostics.find(cbl_diag_t(id));
+   if( diag != cbl_diagnostics.end() ) {
+     return diag->kind;
+   }
+   return diagnostics::kind::ice;
+ }  
+ 
+ diagnostics::kind
+ cbl_diagnostic_kind( cbl_diag_id_t id ) {
+   return kind_of(id);
+ }
+ 
+ bool
+ cbl_diagnostic_kind( cbl_diag_id_t id, diagnostics::kind kind ) {
+   auto p = cbl_diagnostics.find( cbl_diag_t{id} );
+   if( p != cbl_diagnostics.end() ) {
+     auto diag(*p);
+     diag.kind = kind;
+     cbl_diagnostics.erase(p);
+     return cbl_diagnostics.insert(diag).second;
+   }
+   return false;
+ }
+ 
+ bool
+ cbl_diagnostic_kind( cbl_dialect_t dialect, diagnostics::kind kind ) {
+   bool ok = true;
+   for( auto diag : cbl_diagnostics ) {
+     if( diag.dialect == dialect ) {
+       if( ! cbl_diagnostic_kind(diag.id, kind) ) ok = false;
+     }
+   }
+   return ok;
+ }
+ 
+ void
+ cobol_warning( cbl_diag_id_t id, int yn, bool warning_as_error ) {
+   gcc_assert( 0 <= yn && yn <= 1 );
+ 
+   diagnostics::kind kind = yn?
+     diagnostics::kind::warning : diagnostics::kind::ignored;
+   
+   if( warning_as_error ) {
+     kind = diagnostics::kind::error;
+   }
+   
+   cbl_diagnostic_kind(id, kind);
+ }
+ 
+ static inline const char *
+ option_of( cbl_diag_id_t id ) {
+   auto diag = cbl_diagnostics.find(cbl_diag_t(id));
+   if( diag != cbl_diagnostics.end() && diag->option[0] ) {
+     return diag->option;
+   }
+   return nullptr;
+ }  
+ 
+ const char *
+ cbl_diagnostic_option( cbl_diag_id_t id ) {
+   return option_of(id);
+ }
+ 
+ /*
+  * This is the general message looker-upper.  It determines whether the
+  * diagnositic is in force, at what level, and the message text, and invokes
+  * the framework.
+  */
+ extern int yychar;
+ extern YYLTYPE yylloc;
+ 
+ static const diagnostics::option_id option_zero;
+ 
+ location_t current_token_location();
+ location_t current_token_location(const location_t& loc);
+ 
+ bool
+ cbl_message( cbl_diag_id_t id, const char gmsgid[], ... ) {
+   auto_diagnostic_group d;
+   const char *option;
+   char *msg = nullptr;
+ 
+   diagnostics::kind kind = kind_of(id);
+   if( kind == diagnostics::kind::ignored ) return false;
+ 
+   if( (option = option_of(id)) != nullptr ) {
+     msg = xasprintf("%s [%s]", gmsgid, option);
+     gmsgid = msg;
+   }
+  
+   va_list ap;
+ 
+   va_start (ap, gmsgid);
+   auto ret = emit_diagnostic_valist( kind, current_token_location(),
+                                      option_zero, gmsgid, &ap );
+   va_end (ap);
+   free(msg);
+   
+   return ret;
+ }
+ 
+ bool cbl_message( cbl_loc_t loc, cbl_diag_id_t id, const char gmsgid[], ... ) {
+   class temp_loc_t { // copied from util.cc
+     location_t orig;
+   public:
+     temp_loc_t() : orig(current_token_location()) {
+       if( yychar < 3 ) return;
+ 
+       gcc_location_set(yylloc); // use lookahead location
+     }
+     explicit temp_loc_t( const YYLTYPE& loc) : orig(current_token_location()) {
+       gcc_location_set(loc);
+     }
+     explicit temp_loc_t( const YDFLTYPE& loc) : orig(current_token_location()) {
+       gcc_location_set(loc);
+     }
+     ~temp_loc_t() {
+       if( orig != current_token_location() ) {
+         current_token_location(orig);
+       }
+     }
+   };
+ 
+   auto_diagnostic_group d;
+   const char *option;
+   char *msg = nullptr;
+ 
+   diagnostics::kind kind = kind_of(id);
+   if( kind == diagnostics::kind::ignored ) return false;
+ 
+   if( (option = option_of(id)) != nullptr ) {
+     msg = xasprintf("%s [%s]", gmsgid, option);
+     gmsgid = msg;
+   }
+ 
+   temp_loc_t looker(loc);
+   va_list ap;
+   
+   va_start (ap, gmsgid);
+   rich_location richloc (line_table, current_token_location());
+   auto ret = emit_diagnostic_valist( kind, 
+                                      current_token_location(),
+                                      option_zero, gmsgid, &ap );
+   va_end (ap);
+   free(msg);
+ 
+   return ret;
+ }
+ 
+ /*
+  * Verify the dialect associated with the id (and thus term) is covered by the
+  * dialects currently in effect.  If not, issue a standard message of the kind
+  * defined by the id. Possible combinations:
+  *   dialect required:  ok, dialect matches feature dialect
+  *   dialect prohibits  not_ok, dialect matches feature ~dialect
+  *
+  * If ok is false, then a match means the dialect prohibits the feature. 
+  */
+ bool
+ dialect_ok( const cbl_loc_t& loc, cbl_diag_id_t id, const char term[], bool ok ) {
+   auto diag = cbl_diagnostics.find(cbl_diag_t(id));
+ 
+   const char *verb = "requires";
+   
+   if( diag == cbl_diagnostics.end() ) {
+     gcc_unreachable();
+   }
+ 
+   if( diag->kind == diagnostics::kind::ignored ) return true;
+   
+   if( dialect_has(diag->dialect) ) {
+     if( ok ) {
+       return true;
+     } else {
+       verb = "prohibits";
+     }
+   } else {
+     if( !ok ) return true; // current dialect correctly does not match the feature
+   }
+ 
+   cbl_message(loc, id, "%qs %s %<-dialect %s%>",
+               term, verb, cbl_dialect_str(diag->dialect));
+   return false;
+ }
+ 
+ 
+ 
+ 
+   
diff -Nrcpad gcc-16-20251130/gcc/cobol/parse.y gcc-16-20251207/gcc/cobol/parse.y
*** gcc-16-20251130/gcc/cobol/parse.y	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/cobol/parse.y	Sun Dec  7 22:32:07 2025
*************** class locale_tgt_t {
*** 359,365 ****
  			NUMED_CR  "NUMERIC-EDITED CR picture"
  			NUMED_DB  "NUMERIC-EDITED DB picture"
  %token  <number>        NINEDOT NINES NINEV PIC_P ONES
! %token  <string>        SPACES
  %token  <literal>       LITERAL
  %token  <number>        END EOP
  %token  <string>        FILENAME
--- 359,365 ----
  			NUMED_CR  "NUMERIC-EDITED CR picture"
  			NUMED_DB  "NUMERIC-EDITED DB picture"
  %token  <number>        NINEDOT NINES NINEV PIC_P ONES
! %token  <string>        SPACES EQ "EQUAL"
  %token  <literal>       LITERAL
  %token  <number>        END EOP
  %token  <string>        FILENAME
*************** class locale_tgt_t {
*** 477,484 ****
  			DOWN DUPLICATES
  			DYNAMIC
  
! 			E EBCDIC EC EGCS ENCODING ENTRY ENVIRONMENT EQUAL EVERY
! 			EXAMINE EXHIBIT EXP EXP10 EXTEND EXTERNAL
  
  			EXCEPTION_FILE	     "EXCEPTION-FILE"
  			EXCEPTION_FILE_N     "EXCEPTION-FILE-N"
--- 477,484 ----
  			DOWN DUPLICATES
  			DYNAMIC
  
! 			E EBCDIC EC EGCS ENCODING ENTRY ENVIRONMENT 
! 			EVERY EXAMINE EXHIBIT EXP EXP10 EXTEND EXTERNAL
  
  			EXCEPTION_FILE	     "EXCEPTION-FILE"
  			EXCEPTION_FILE_N     "EXCEPTION-FILE-N"
*************** class locale_tgt_t {
*** 1130,1136 ****
                          DYNAMIC
  
                          E EBCDIC EC EGCS ELEMENT
!                         ENTRY ENVIRONMENT EQUAL ERROR EVERY
                          EXAMINE EXCEPTION EXHIBIT EXP EXP10 EXTEND EXTERNAL
  
                          EXCEPTION_FILE
--- 1130,1136 ----
                          DYNAMIC
  
                          E EBCDIC EC EGCS ELEMENT
!                         ENTRY ENVIRONMENT ERROR EVERY
                          EXAMINE EXCEPTION EXHIBIT EXP EXP10 EXTEND EXTERNAL
  
                          EXCEPTION_FILE
*************** class locale_tgt_t {
*** 1336,1342 ****
  %left  OR
  %left  AND
  %right  NOT
! %left '<' '>' '=' NE LE GE
  %left '-' '+'
  %left '*' '/'
  %right POW
--- 1336,1342 ----
  %left  OR
  %left  AND
  %right  NOT
! %left '<' '>' EQ NE LE GE
  %left '-' '+'
  %left '*' '/'
  %right POW
*************** opt_round:      DEFAULT ROUNDED mode is
*** 1658,1678 ****
                  }
                  ;
  opt_entry:      ENTRY_CONVENTION is COBOL {
! 		  yywarn("ENTRY-CONVENTION IS COBOL, check");
  		}
                  ;
  opt_binary:     FLOAT_BINARY default_kw is HIGH_ORDER_LEFT
  		{
! 		  cbl_unimplementedw("HIGH-ORDER-LEFT was ignored");
  		  if( ! current.option_binary(cbl_options_t::high_order_left_e) ) {
! 		    error_msg(@3, "unable to set %<HIGH_ORDER_LEFT%>");
  		  }
  		}
          |       FLOAT_BINARY default_kw is HIGH_ORDER_RIGHT[opt]
  		{
! 		  cbl_unimplementedw("HIGH-ORDER-RIGHT was ignored");
  		  if( ! current.option_binary(cbl_options_t::high_order_right_e) ) {
! 		    error_msg(@opt, "unable to set HIGH-ORDER-RIGHT");
  		  }
  		}
                  ;
--- 1658,1682 ----
                  }
                  ;
  opt_entry:      ENTRY_CONVENTION is COBOL {
!                  cbl_message(ParInfoI, "ENTRY-CONVENTION IS COBOL");
  		}
                  ;
  opt_binary:     FLOAT_BINARY default_kw is HIGH_ORDER_LEFT
  		{
!                   cbl_unimplementedw(SynHighOrderBit,
!                                      "HIGH-ORDER-LEFT was ignored");
  		  if( ! current.option_binary(cbl_options_t::high_order_left_e) ) {
!                       cbl_message(@3, SynHighOrderBit,
!                                   "unable to set %<HIGH_ORDER_LEFT%>");
  		  }
  		}
          |       FLOAT_BINARY default_kw is HIGH_ORDER_RIGHT[opt]
  		{
!                     cbl_unimplementedw(SynHighOrderBit,
!                                        "HIGH-ORDER-RIGHT was ignored");
  		  if( ! current.option_binary(cbl_options_t::high_order_right_e) ) {
!                       cbl_message(@opt, SynHighOrderBit,
!                                   "unable to set HIGH-ORDER-RIGHT");
  		  }
  		}
                  ;
*************** default_kw:     %empty
*** 1681,1710 ****
                  ;
  opt_decimal:    FLOAT_DECIMAL default_kw is HIGH_ORDER_LEFT[opt]
  		{
! 		  cbl_unimplementedw("HIGH-ORDER-LEFT was ignored");
  		  if( ! current.option_decimal(cbl_options_t::high_order_left_e) ) {
! 		    error_msg(@opt, "unable to set HIGH-ORDER-LEFT");
  		  }
  		}
          |       FLOAT_DECIMAL default_kw is HIGH_ORDER_RIGHT[opt]
  		{
! 		  cbl_unimplementedw("HIGH-ORDER-RIGHT was ignored");
  		  if( ! current.option_decimal(cbl_options_t::high_order_right_e) ) {
! 		    error_msg(@opt, "unable to set HIGH-ORDER-RIGHT");
  		  }
  		}
          |       FLOAT_DECIMAL default_kw is BINARY_ENCODING[opt]
  		{
! 		  cbl_unimplementedw("BINARY-ENCODING was ignored");
  		  if( ! current.option(cbl_options_t::binary_encoding_e) ) {
! 		    error_msg(@opt, "unable to set BINARY-ENCODING option");
  		  }
  		}
          |       FLOAT_DECIMAL default_kw is DECIMAL_ENCODING[opt]
  		{
! 		  cbl_unimplementedw("DECIMAL-ENCODING was ignored");
  		  if( ! current.option(cbl_options_t::decimal_encoding_e) ) {
! 		    error_msg(@opt, "unable to set DECIMAL-ENCODING option");
  		  }
  		}
                  ;
--- 1685,1722 ----
                  ;
  opt_decimal:    FLOAT_DECIMAL default_kw is HIGH_ORDER_LEFT[opt]
  		{
! 		  cbl_unimplementedw(SynHighOrderBit,
!                                   "HIGH-ORDER-LEFT was ignored");
  		  if( ! current.option_decimal(cbl_options_t::high_order_left_e) ) {
! 		    cbl_message(@opt, SynHighOrderBit,
!                                 "unable to set HIGH-ORDER-LEFT");
  		  }
  		}
          |       FLOAT_DECIMAL default_kw is HIGH_ORDER_RIGHT[opt]
  		{
! 		  cbl_unimplementedw(SynHighOrderBit,
!                                      "HIGH-ORDER-RIGHT was ignored");
  		  if( ! current.option_decimal(cbl_options_t::high_order_right_e) ) {
! 		    cbl_message(@opt, SynHighOrderBit,
!                                   "unable to set HIGH-ORDER-RIGHT");
  		  }
  		}
          |       FLOAT_DECIMAL default_kw is BINARY_ENCODING[opt]
  		{
! 		  cbl_unimplementedw(SynHighOrderBit,
!                                   "BINARY-ENCODING was ignored");
  		  if( ! current.option(cbl_options_t::binary_encoding_e) ) {
! 		    cbl_message(@opt, SynHighOrderBit,
!                                   "unable to set BINARY-ENCODING option");
  		  }
  		}
          |       FLOAT_DECIMAL default_kw is DECIMAL_ENCODING[opt]
  		{
! 		  cbl_unimplementedw(SynHighOrderBit,
!                                   "DECIMAL-ENCODING was ignored");
  		  if( ! current.option(cbl_options_t::decimal_encoding_e) ) {
! 		    cbl_message(@opt, SynHighOrderBit,
!                                   "unable to set DECIMAL-ENCODING option");
  		  }
  		}
                  ;
*************** io_control_clause:
*** 1888,1894 ****
                  }
          |       APPLY COMMIT on field_list
                  {
!                   cbl_unimplementedw("I-O-CONTROL APPLY COMMIT");
                  }
                  ;
  area:           %empty
--- 1900,1907 ----
                  }
          |       APPLY COMMIT on field_list
                  {
!                   cbl_unimplementedw(SynApplyCommit,
!                                      "I-O-CONTROL APPLY COMMIT ignored");
                  }
                  ;
  area:           %empty
*************** fd_clause:      record_desc
*** 3160,3173 ****
                      error_msg(@NAME, "invalid RECORDING MODE '%s'", $NAME);
                      YYERROR;
                    }
!                   cbl_unimplementedw("RECORDING MODE was ignored, not defined by ISO 2023");
                  }
          |       VALUE OF fd_values
          |       CODESET is codeset_name[codeset] {
                    auto f = cbl_file_of(symbol_at(file_section_fd));
                    f->codeset = cbl_file_t::codeset_t($codeset.encoding,
                                                       $codeset.isym);
!                   cbl_unimplementedw("sorry, unimplemented CODE-SET");
                  }
          |       CODESET for alphanational is codeset_name[codeset]
                  {
--- 3173,3188 ----
                      error_msg(@NAME, "invalid RECORDING MODE '%s'", $NAME);
                      YYERROR;
                    }
!                   cbl_unimplementedw(SynRecordingMode,
!                                      "RECORDING MODE ignored");
                  }
          |       VALUE OF fd_values
          |       CODESET is codeset_name[codeset] {
                    auto f = cbl_file_of(symbol_at(file_section_fd));
                    f->codeset = cbl_file_t::codeset_t($codeset.encoding,
                                                       $codeset.isym);
!                   cbl_unimplementedw(SynFileCodeSet,
!                                      "sorry, unimplemented CODE-SET");
                  }
          |       CODESET for alphanational is codeset_name[codeset]
                  {
*************** data_descr1:    level_name
*** 3758,3781 ****
  
          |       LEVEL78 NAME[name] VALUE is value78[data]
                  {
!                   if( ! (dialect_mf() || dialect_gnu()) ) {
!                     dialect_error(@1, "level 78", "mf or gnu");
!                     YYERROR;
!                   }
                    cbl_field_t field = { FldLiteralA, constant_e, *$data.data,
                                          78, $name, @name.first_line };
                    if( field.data.initial ) {
                      field.attr |= quoted_e;
                      field.codeset.set($data.encoding);
                      if( !cdf_value(field.name, field.data.initial) ) {
!                       yywarn("%s was defined by CDF", field.name);
                      }
                    } else {
                      field.type = FldLiteralN;
                      field.data.initial = string_of(field.data.value_of());
                      field.codeset.set($data.encoding);
                      if( !cdf_value(field.name, field.as_integer()) ) {
!                       yywarn("%s was defined by CDF", field.name);
                      }
                    }
                    if( ($$ = field_add(@name, &field)) == NULL ) {
--- 3773,3795 ----
  
          |       LEVEL78 NAME[name] VALUE is value78[data]
                  {
!                   dialect_ok(@1, MfLevel78, "LEVEL 78");
                    cbl_field_t field = { FldLiteralA, constant_e, *$data.data,
                                          78, $name, @name.first_line };
                    if( field.data.initial ) {
                      field.attr |= quoted_e;
                      field.codeset.set($data.encoding);
                      if( !cdf_value(field.name, field.data.initial) ) {
!                       cbl_message(Par78CdfDefinedW,
!                                   "%s was defined by CDF", field.name);
                      }
                    } else {
                      field.type = FldLiteralN;
                      field.data.initial = string_of(field.data.value_of());
                      field.codeset.set($data.encoding);
                      if( !cdf_value(field.name, field.as_integer()) ) {
!                       cbl_message(Par78CdfDefinedW,
!                                   "%s was defined by CDF", field.name);
                      }
                    }
                    if( ($$ = field_add(@name, &field)) == NULL ) {
*************** literalism:     LITERAL { $$ = $1; }
*** 4062,4069 ****
  
                    if( $second.prefix[0] ) { strcpy(output.prefix, $second.prefix); }
                    if( ! $first.compatible_prefix($second) ) {
!                     yywarn("dissimilar literals, '%s' prevails",
!                           output.prefix);
                    }
                  }
                  ;
--- 4076,4084 ----
  
                    if( $second.prefix[0] ) { strcpy(output.prefix, $second.prefix); }
                    if( ! $first.compatible_prefix($second) ) {
!                     cbl_message(@$, ParLiteral2W,
!                                 "dissimilar literals, '%s' prevails",
!                                 output.prefix);
                    }
                  }
                  ;
*************** data_clauses:   data_clause
*** 4173,4185 ****
                      if( field->is_binary_integer() && field->data.capacity == 4) {
                        auto redefined = symbol_redefines(field);
                        if( redefined && redefined->type == FldPointer ) {
!                         if( yydebug ) {
!                           yywarn("expanding %s size from %u bytes to %wd "
! 				 "because it redefines %s with %<USAGE POINTER%>",
!                                 field->name, field->size(),
!                                 int_size_in_bytes(ptr_type_node),
!                                 redefined->name);
!                         }
                          field->embiggen();
                        }
                      }
--- 4188,4198 ----
                      if( field->is_binary_integer() && field->data.capacity == 4) {
                        auto redefined = symbol_redefines(field);
                        if( redefined && redefined->type == FldPointer ) {
!                         dbgmsg("expanding %s size from %u bytes to %lu "
! 			       "because it redefines %s with USAGE POINTER",
!                                field->name, field->size(),
!                                int_size_in_bytes(ptr_type_node),
!                                redefined->name);
                          field->embiggen();
                        }
                      }
*************** data_clause:    any_length        { $$ =
*** 4213,4219 ****
                    cbl_field_t *field = current_field();
                    switch( field->level ) {
                    case 1:
! 		    if( dialect_mf() ) break;
  		    __attribute__((fallthrough));
                    case 77:
                    case 88:
--- 4226,4232 ----
                    cbl_field_t *field = current_field();
                    switch( field->level ) {
                    case 1:
! 		    if( dialect_ok(@$, MfLevel_1_Occurs, "LEVEL 01 for OCCURS") ) break;
  		    __attribute__((fallthrough));
                    case 77:
                    case 88:
*************** picture_clause: PIC signed nps[fore] nin
*** 4336,4342 ****
  
  		  if( field->type == FldNumericBin5 &&
  		      field->data.capacity == 0xFF  &&
! 		      (dialect_gnu() || dialect_mf()) )
  		  { // PIC X COMP-X or COMP-9
  		    if( ! field->has_attr(all_x_e) ) {
  		      error_msg(@2, "COMP PICTURE requires all X%'s or all 9%'s");
--- 4349,4355 ----
  
  		  if( field->type == FldNumericBin5 &&
  		      field->data.capacity == 0xFF  &&
! 		      dialect_ok(@2, MfCompX, "alphanumeric PICTURE with numeric USAGE") )
  		  { // PIC X COMP-X or COMP-9
  		    if( ! field->has_attr(all_x_e) ) {
  		      error_msg(@2, "COMP PICTURE requires all X%'s or all 9%'s");
*************** usage_clause1:  usage BIT
*** 4568,4589 ****
  		      case FldAlphanumeric:   // PIC X COMP-5 or COMP-X
  			assert( field->data.digits == 0 );
  			assert( field->data.rdigits == 0 );
! 		        if( (dialect_mf() || dialect_gnu()) ) {
!                           field->type = $comp.type;
! 			  field->clear_attr(signable_e);
! 		        } else {
! 			  error_msg(@comp, "numeric USAGE invalid "
! 				           "with Alphanumeric PICTURE");
! 			  dialect_error(@1, "Alphanumeric COMP-5 or COMP-X", "mf or gnu");
! 			  YYERROR;
! 		        }
                          break;
  		      case FldNumericDisplay: // PIC 9 COMP-5 or COMP-X
  		        if( $comp.capacity == 0xFF ) { // comp-x is a bit like comp-5
  			  assert( field->data.digits == field->data.capacity );
! 		          if( ! (dialect_mf() || dialect_gnu()) ) {
! 				  dialect_error(@1, "COMP-X", "mf or gnu");
! 		          }
  			}
                          field->type = $comp.type;
                          field->data.capacity = type_capacity(field->type,
--- 4581,4595 ----
  		      case FldAlphanumeric:   // PIC X COMP-5 or COMP-X
  			assert( field->data.digits == 0 );
  			assert( field->data.rdigits == 0 );
! 		        dialect_ok(@2, MfCompX, "alphanumeric PICTURE with numeric USAGE");
! 
!                         field->type = $comp.type;
! 			field->clear_attr(signable_e);
                          break;
  		      case FldNumericDisplay: // PIC 9 COMP-5 or COMP-X
  		        if( $comp.capacity == 0xFF ) { // comp-x is a bit like comp-5
  			  assert( field->data.digits == field->data.capacity );
! 		          dialect_ok(@2, MfCompX, "alphanumeric PICTURE with numeric USAGE");
  			}
                          field->type = $comp.type;
                          field->data.capacity = type_capacity(field->type,
*************** usage_clause1:  usage BIT
*** 4596,4604 ****
  		  case FldPacked: // comp-6 is unsigned comp-3
  		    assert(! $comp.signable);  // else PACKED_DECIMAL from scanner
  		    field->attr |= separate_e;
! 		    if( ! dialect_mf() ) {
! 		      dialect_error(@1, "COMP-6", "mf");
! 		    }
                      if( field->type == FldNumericDisplay ) {// PICTURE before USAGE
                        infer = false;
                        assert(field->data.capacity > 0);
--- 4602,4608 ----
  		  case FldPacked: // comp-6 is unsigned comp-3
  		    assert(! $comp.signable);  // else PACKED_DECIMAL from scanner
  		    field->attr |= separate_e;
!                     dialect_ok(@2, MfComp6, "COMP-6");
                      if( field->type == FldNumericDisplay ) {// PICTURE before USAGE
                        infer = false;
                        assert(field->data.capacity > 0);
*************** usage_clause1:  usage BIT
*** 4649,4670 ****
  		      case FldAlphanumeric:   // PIC X COMP-5 or COMP-X
  			assert( field->data.digits == 0 );
  			assert( field->data.rdigits == 0 );
! 		        if( (dialect_mf() || dialect_gnu()) ) {
!                           field->type = $comp.type;
! 			  field->clear_attr(signable_e);
! 		        } else {
! 			  error_msg(@comp, "numeric USAGE invalid "
! 				           "with Alphanumeric PICTURE");
! 			  dialect_error(@1, "Alphanumeric COMP-5 or COMP-X", "mf or gnu");
! 			  YYERROR;
! 		        }
                          break;
  		      case FldNumericDisplay: // PIC 9 COMP-5 or COMP-X
  		        if( $comp.capacity == 0xFF ) { // comp-x is a bit like comp-5
  			  assert( field->data.digits == field->data.capacity );
! 		          if( ! (dialect_mf() || dialect_gnu()) ) {
! 				  dialect_error(@1, "COMP-X", "mf or gnu");
! 		          }
  			}
                          field->type = $comp.type;
                          field->data.capacity = type_capacity(field->type,
--- 4653,4666 ----
  		      case FldAlphanumeric:   // PIC X COMP-5 or COMP-X
  			assert( field->data.digits == 0 );
  			assert( field->data.rdigits == 0 );
! 		        dialect_ok(@2, MfCompX, "alphanumeric PICTURE with numeric USAGE");
!                         field->type = $comp.type;
! 			field->clear_attr(signable_e);
                          break;
  		      case FldNumericDisplay: // PIC 9 COMP-5 or COMP-X
  		        if( $comp.capacity == 0xFF ) { // comp-x is a bit like comp-5
  			  assert( field->data.digits == field->data.capacity );
!                           dialect_ok(@2, MfCompX, "alphanumeric PICTURE with numeric USAGE");
  			}
                          field->type = $comp.type;
                          field->data.capacity = type_capacity(field->type,
*************** usage_clause1:  usage BIT
*** 4677,4685 ****
  		  case FldPacked: // comp-6 is unsigned comp-3
  		    assert(! $comp.signable);  // else PACKED_DECIMAL from scanner
  		    field->attr |= separate_e;
! 		    if( ! dialect_mf() ) {
! 		      dialect_error(@1, "COMP-6", "mf");
! 		    }
                      if( field->type == FldNumericDisplay ) {// PICTURE before USAGE
                        infer = false;
                        assert(field->data.capacity > 0);
--- 4673,4679 ----
  		  case FldPacked: // comp-6 is unsigned comp-3
  		    assert(! $comp.signable);  // else PACKED_DECIMAL from scanner
  		    field->attr |= separate_e;
!                     dialect_ok(@2, MfComp6, "COMP-6");
                      if( field->type == FldNumericDisplay ) {// PICTURE before USAGE
                        infer = false;
                        assert(field->data.capacity > 0);
*************** type_clause: TYPE to typename
*** 5074,5083 ****
                  }
          |       USAGE is typename
                  {
!                   if( ! dialect_mf() ) {
!                     dialect_error(@typename, "USAGE TYPENAME", "mf");
!                     YYERROR;
!                   }
                    cbl_field_t *field = current_field();
                    if( $typename ) {
                      const auto e = symbol_field_same_as(field, $typename);
--- 5068,5074 ----
                  }
          |       USAGE is typename
                  {
!                   dialect_ok(@typename, MfUsageTypename, "USAGE TYPENAME");
                    cbl_field_t *field = current_field();
                    if( $typename ) {
                      const auto e = symbol_field_same_as(field, $typename);
*************** typedef_clause: is TYPEDEF strong
*** 5112,5121 ****
  volatile_clause:
                  VOLATILE
                  {
!                   if( dialect_ibm() ) {
!                     yywarn("VOLATILE has no effect");
!                   } else {
!                     dialect_error(@1, "VOLATILE", "ibm");
                    }
                  }
                  ;
--- 5103,5110 ----
  volatile_clause:
                  VOLATILE
                  {
!                   if( dialect_ok(@1, IbmVolatileE, "VOLATILE") ) {
!                     cbl_message(@1, IbmVolatileW, "VOLATILE has no effect");
                    }
                  }
                  ;
*************** sentence:       statements  '.'
*** 5272,5281 ****
                    std::set<std::string> externals = current.end_program();
                    if( !externals.empty() ) {
                      for( const auto& name : externals ) {
!                       yywarn("%s calls external symbol '%s'",
                               prog->name, name.c_str());
                      }
-                     YYERROR;
                    }
                    // pointer still valid because name is in symbol table
                    ast_end_program(prog->name);
--- 5261,5269 ----
                    std::set<std::string> externals = current.end_program();
                    if( !externals.empty() ) {
                      for( const auto& name : externals ) {
!                       dbgmsg("%s calls external symbol '%s'",
                               prog->name, name.c_str());
                      }
                    }
                    // pointer still valid because name is in symbol table
                    ast_end_program(prog->name);
*************** add_body:       sum TO rnames
*** 5692,5700 ****
                      corresponding_arith_fields( $sum->refers.front().field,
                                                  rhs.front().refer.field );
                      if( pairs.empty() ) {
!                       yywarn( "%s and %s have no corresponding fields",
!                                 $sum->refers.front().field->name,
!                                 rhs.front().refer.field->name );
                      }
                    // First src/tgt elements are templates.
                    // Their subscripts apply to the correspondents.
--- 5680,5689 ----
                      corresponding_arith_fields( $sum->refers.front().field,
                                                  rhs.front().refer.field );
                      if( pairs.empty() ) {
!                       cbl_message( @$, ParNoCorrespondingW,
!                                    "%s and %s have no corresponding fields",
!                                    $sum->refers.front().field->name,
!                                    rhs.front().refer.field->name );
                      }
                    // First src/tgt elements are templates.
                    // Their subscripts apply to the correspondents.
*************** compute_body:   rnames { statement_begin
*** 5854,5874 ****
                    $$.expr = $expr;
                  }
                  ;
! compute_expr:   '=' {
                    current.compute_begin();
                  } expr {
                    $$ = $expr;
                  }
                  ;
- 	|	EQUAL {
- 		  if( ! dialect_ibm() ) {
- 		    dialect_error(@1, "EQUAL invalid as assignment operator", "ibm");
- 		  }
- 		  current.compute_begin();
-                 } expr {
-                   $$ = $expr;
-                 }
-                 ;
  
  display:        disp_body end_display[advance]
                  {
--- 5843,5858 ----
                    $$.expr = $expr;
                  }
                  ;
! compute_expr:   EQ {
!                   if( $1[0] == 'E' ) { // lexer found EQUALS keyword
!                     dialect_ok(@1, IbmEqualAssignE,
!                                "EQUAL as assignment operator" );
!                   }
                    current.compute_begin();
                  } expr {
                    $$ = $expr;
                  }
                  ;
  
  display:        disp_body end_display[advance]
                  {
*************** end_program:    end_program1[end] '.'
*** 6079,6087 ****
                    std::set<std::string> externals = current.end_program();
                    if( !externals.empty() ) {
  		    for( const auto& name : externals ) {
! 		      yywarn("%s calls external symbol '%s'", prog->name, name.c_str());
  		    }
-                     YYERROR;
                    }
                    // pointer still valid because name is in symbol table
                    ast_end_program(prog->name);
--- 6063,6070 ----
                    std::set<std::string> externals = current.end_program();
                    if( !externals.empty() ) {
  		    for( const auto& name : externals ) {
! 		      dbgmsg("%s calls external symbol '%s'", prog->name, name.c_str());
  		    }
                    }
                    // pointer still valid because name is in symbol table
                    ast_end_program(prog->name);
*************** exit_with:      %empty
*** 6192,6200 ****
                  }
  	|	RETURNING stop_status
                  {
! 		  if( ! dialect_mf() ) {
!                     dialect_error(@2, "RETURNING <number>", "mf");
! 		  }
                    $$ = $stop_status? $stop_status : new_reference(literally_one);
                  }
                  ;
--- 6175,6181 ----
                  }
  	|	RETURNING stop_status
                  {
!                   dialect_ok(@$, MfReturningNum, "RETURNING <number>");
                    $$ = $stop_status? $stop_status : new_reference(literally_one);
                  }
                  ;
*************** move:           MOVE scalar TO move_tgts
*** 7229,7236 ****
                    }
  
                    if( !move_corresponding(*$to, *$from) ) {
!                     yywarn( "%s and %s have no corresponding fields",
!                             $from->field->name, $to->field->name );
                    }
                  }
                  ;
--- 7210,7218 ----
                    }
  
                    if( !move_corresponding(*$to, *$from) ) {
!                     cbl_message( @$, ParNoCorrespondingW,
!                                  "%s and %s have no corresponding fields",
!                                  $from->field->name, $to->field->name );
                    }
                  }
                  ;
*************** arith_err:      SIZE_ERROR
*** 7407,7413 ****
  
  relop:          '<' { $$ = '<'; }
          |       LE  { $$ = LE;  }
!         |       '=' { $$ = '='; }
          |       NE  { $$ = NE;  }
          |       GE  { $$ = GE;  }
          |       '>' { $$ = '>'; }
--- 7389,7395 ----
  
  relop:          '<' { $$ = '<'; }
          |       LE  { $$ = LE;  }
!         |       EQ { $$ = EQ; }
          |       NE  { $$ = NE;  }
          |       GE  { $$ = GE;  }
          |       '>' { $$ = '>'; }
*************** num_value:      scalar // might actually
*** 7442,7466 ****
          |       LENGTH_OF binary_type[size] {
                    location_set(@1);
                    $$ = new cbl_refer_t( new_tempnumeric(none_e) );
!                   if( dialect_gcc() ) {
! 		    dialect_error(@1, "LENGTH OF", "ibm");
!                   }
  		  parser_set_numeric($$->field, $size);
  		}
          |       LENGTH_OF name[val] {
                    location_set(@1);
                    $$ = new cbl_refer_t( new_tempnumeric(none_e) );
!                   if( dialect_gcc() ) {
! 		    dialect_error(@1, "LENGTH OF", "ibm");
!                   }
  		  parser_set_numeric($$->field, $val->data.capacity);
                  }
          |       LENGTH_OF name[val] subscripts[subs] {
                    location_set(@1);
                    $$ = new cbl_refer_t( new_tempnumeric(none_e) );
!                   if( dialect_gcc() ) {
! 		    dialect_error(@1, "LENGTH OF", "ibm");
!                   }
                    if( 0 == dimensions($val) ) {
  		    cbl_refer_t r1($val);
  		    subscript_dimension_error( @subs, $subs->refers.size(), &r1 );
--- 7424,7442 ----
          |       LENGTH_OF binary_type[size] {
                    location_set(@1);
                    $$ = new cbl_refer_t( new_tempnumeric(none_e) );
! 		  dialect_ok(@1, IbmLengthOf, "LENGTH OF");
  		  parser_set_numeric($$->field, $size);
  		}
          |       LENGTH_OF name[val] {
                    location_set(@1);
                    $$ = new cbl_refer_t( new_tempnumeric(none_e) );
! 		  dialect_ok(@1, IbmLengthOf, "LENGTH OF");
  		  parser_set_numeric($$->field, $val->data.capacity);
                  }
          |       LENGTH_OF name[val] subscripts[subs] {
                    location_set(@1);
                    $$ = new cbl_refer_t( new_tempnumeric(none_e) );
! 		  dialect_ok(@1, IbmLengthOf, "LENGTH OF");
                    if( 0 == dimensions($val) ) {
  		    cbl_refer_t r1($val);
  		    subscript_dimension_error( @subs, $subs->refers.size(), &r1 );
*************** num_value:      scalar // might actually
*** 7488,7494 ****
  /* cce_relexpr: cce_expr */
  /*      |       cce_relexpr '<' cce_expr { $$ = $1 <  $3; } */
  /*      |       cce_relexpr LE  cce_expr { $$ = $1 <= $3; } */
! /*      |       cce_relexpr '=' cce_expr { $$ = $1 == $3; } */
  /*      |       cce_relexpr NE  cce_expr { $$ = $1 != $3; } */
  /*      |       cce_relexpr GE  cce_expr { $$ = $1 >= $3; } */
  /*      |       cce_relexpr '>' cce_expr { $$ = $1 >  $3; } */
--- 7464,7470 ----
  /* cce_relexpr: cce_expr */
  /*      |       cce_relexpr '<' cce_expr { $$ = $1 <  $3; } */
  /*      |       cce_relexpr LE  cce_expr { $$ = $1 <= $3; } */
! /*      |       cce_relexpr EQ cce_expr { $$ = $1 == $3; } */
  /*      |       cce_relexpr NE  cce_expr { $$ = $1 != $3; } */
  /*      |       cce_relexpr GE  cce_expr { $$ = $1 >= $3; } */
  /*      |       cce_relexpr '>' cce_expr { $$ = $1 >  $3; } */
*************** section_name:	NAME section_kw '.'
*** 7553,7575 ****
  
  section_kw:     SECTION
                  {
!                   if( $1 ) {
  		    if( *$1 == '-' ) {
! 		      error_msg(@1, "SECTION segment %qs is negative", $1);
                      } else {
! 		      if( dialect_ibm() ) {
! 			int sectno;
! 			sscanf($1, "%d", &sectno);
! 			if( ! (0 <= sectno && sectno <= 99) ) {
! 			  error_msg(@1, "SECTION segment %qs must be 0-99", $1);
! 			} else {
! 			  if(false) { // stand-in for warning, someday.
! 			    yywarn("SECTION segment %qs was ignored", $1);
! 			  }
! 			}
! 		      } else {
! 			cbl_unimplemented("SECTION segment %qs is not ISO syntax", $1);
! 		      }
                      }
  		  }
                  }
--- 7529,7547 ----
  
  section_kw:     SECTION
                  {
!                   if( $1 && dialect_ok(@1, IbmSectionSegmentW, "SECTION segment") ) {
! 		    cbl_message(@1, IbmSectionSegmentW,
!                                 "SECTION segment %qs was ignored", $1);
  		    if( *$1 == '-' ) {
!                       cbl_message(@1, IbmSectionNegE,
!                                   "SECTION segment %qs is negative", $1);
                      } else {
!                       int sectno;
!                       sscanf($1, "%d", &sectno);
!                       if( ! (0 <= sectno && sectno <= 99) ) {
!                         cbl_message(@1, IbmSectionRangeE,
!                                      "SECTION segment %qs must be 0-99", $1);
! 		      } 
                      }
  		  }
                  }
*************** stop:           STOP RUN exit_with
*** 7587,7596 ****
          |       STOP NUMSTR[status] // IBM syntax
                  {
                    statement_begin(@1, STOP);
!                   if( ! dialect_ibm() ) {
!                     dialect_error(@2, "STOP <number> is not ISO syntax,", "ibm");
!                     YYERROR;
!                   }
                    cbl_refer_t status( new_literal($status.string, $status.radix) );
                    parser_see_stop_run( status, NULL );
                  }
--- 7559,7565 ----
          |       STOP NUMSTR[status] // IBM syntax
                  {
                    statement_begin(@1, STOP);
!                   dialect_ok(@2, IbmStopNumber, "STOP <number>");
                    cbl_refer_t status( new_literal($status.string, $status.radix) );
                    parser_see_stop_run( status, NULL );
                  }
*************** signed_literal:     num_literal
*** 7674,7698 ****
          |       LENGTH_OF binary_type[size] {
                    location_set(@1);
                    $$ = new_tempnumeric(none_e);
!                   if( dialect_gcc() ) {
! 		    dialect_error(@1, "LENGTH OF", "ibm");
!                   }
                    parser_set_numeric($$, $size);
  		}
          |       LENGTH_OF name[val] {
                    location_set(@1);
                    $$ = new_tempnumeric(none_e);
!                   if( dialect_gcc() ) {
! 		    dialect_error(@1, "LENGTH OF", "ibm");
!                   }
                    parser_set_numeric($$, $val->data.capacity);
                  }
          |       LENGTH_OF name[val] subscripts[subs] {
                    location_set(@1);
                    $$ = new_tempnumeric(none_e);
!                   if( dialect_gcc() ) {
! 		    dialect_error(@1, "LENGTH OF", "ibm");
!                   }
                    if( 0 == dimensions($val) ) {
  		    cbl_refer_t r1($val);
  		    subscript_dimension_error( @subs, $subs->refers.size(), &r1 );
--- 7643,7661 ----
          |       LENGTH_OF binary_type[size] {
                    location_set(@1);
                    $$ = new_tempnumeric(none_e);
! 		  dialect_ok(@1, IbmLengthOf, "LENGTH OF");
                    parser_set_numeric($$, $size);
  		}
          |       LENGTH_OF name[val] {
                    location_set(@1);
                    $$ = new_tempnumeric(none_e);
! 		  dialect_ok(@1, IbmLengthOf, "LENGTH OF");
                    parser_set_numeric($$, $val->data.capacity);
                  }
          |       LENGTH_OF name[val] subscripts[subs] {
                    location_set(@1);
                    $$ = new_tempnumeric(none_e);
! 		  dialect_ok(@1, IbmLengthOf, "LENGTH OF");
                    if( 0 == dimensions($val) ) {
  		    cbl_refer_t r1($val);
  		    subscript_dimension_error( @subs, $subs->refers.size(), &r1 );
*************** subtract_body:  sum FROM rnames
*** 8198,8206 ****
                      corresponding_arith_fields( $sum->refers.front().field,
                                                  rhs.front().refer.field );
                      if( pairs.empty() ) {
!                       yywarn( "%s and %s have no corresponding fields",
!                                $sum->refers.front().field->name,
!                                rhs.front().refer.field->name );
                      }
                    // First src/tgt elements are templates.
                    // Their subscripts apply to the correspondents.
--- 8161,8170 ----
                      corresponding_arith_fields( $sum->refers.front().field,
                                                  rhs.front().refer.field );
                      if( pairs.empty() ) {
!                       cbl_message(ParNoCorrespondingW,
!                                   "%s and %s have no corresponding fields",
!                                   $sum->refers.front().field->name,
!                                   rhs.front().refer.field->name );
                      }
                    // First src/tgt elements are templates.
                    // Their subscripts apply to the correspondents.
*************** varg1a:         ADDRESS OF scalar {
*** 8241,8265 ****
          |       LENGTH_OF binary_type[size] {
                    location_set(@1);
                    $$ = new cbl_refer_t( new_tempnumeric(none_e) );
!                   if( dialect_gcc() ) {
! 		    dialect_error(@1, "LENGTH OF", "ibm");
!                   }
  		  parser_set_numeric($$->field, $size);
  		}
          |       LENGTH_OF name[val] {
                    location_set(@1);
                    $$ = new cbl_refer_t( new_tempnumeric(none_e) );
!                   if( dialect_gcc() ) {
! 		    dialect_error(@1, "LENGTH OF", "ibm");
!                   }
  		  parser_set_numeric($$->field, $val->size());
  		}
          |       LENGTH_OF name[val] subscripts[subs] {
                    location_set(@1);
                    $$ = new cbl_refer_t( new_tempnumeric(none_e) );
!                   if( dialect_gcc() ) {
! 		    dialect_error(@1, "LENGTH OF", "ibm");
!                   }
                    if( 0 == dimensions($val) ) {
  		    cbl_refer_t r1($val);
  		    subscript_dimension_error( @subs, $subs->refers.size(), &r1 );
--- 8205,8223 ----
          |       LENGTH_OF binary_type[size] {
                    location_set(@1);
                    $$ = new cbl_refer_t( new_tempnumeric(none_e) );
! 		  dialect_ok(@1, IbmLengthOf, "LENGTH OF");
  		  parser_set_numeric($$->field, $size);
  		}
          |       LENGTH_OF name[val] {
                    location_set(@1);
                    $$ = new cbl_refer_t( new_tempnumeric(none_e) );
! 		  dialect_ok(@1, IbmLengthOf, "LENGTH OF");
  		  parser_set_numeric($$->field, $val->size());
  		}
          |       LENGTH_OF name[val] subscripts[subs] {
                    location_set(@1);
                    $$ = new cbl_refer_t( new_tempnumeric(none_e) );
! 		  dialect_ok(@1, IbmLengthOf, "LENGTH OF");
                    if( 0 == dimensions($val) ) {
  		    cbl_refer_t r1($val);
  		    subscript_dimension_error( @subs, $subs->refers.size(), &r1 );
*************** start_body:     filename[file]
*** 8879,8888 ****
                    int size = key == 0 ? 0 : $file->keys[key - 1].size();
                    auto ksize = new_tempnumeric();
                    parser_set_numeric(ksize, size);
!                   if( yydebug ) {
!                     yywarn("START: key #%d '%s' has size %d",
!                           key, $key->name, size);
!                   }
                    $$ = file_start_args.init(@file, $file);
                    parser_file_start( $file, relop_of($relop), key, ksize );
                  }
--- 8837,8843 ----
                    int size = key == 0 ? 0 : $file->keys[key - 1].size();
                    auto ksize = new_tempnumeric();
                    parser_set_numeric(ksize, size);
!                   dbgmsg("START: key #%d '%s' has size %d", key, $key->name, size);
                    $$ = file_start_args.init(@file, $file);
                    parser_file_start( $file, relop_of($relop), key, ksize );
                  }
*************** set:            SET set_tgts[tgts] TO se
*** 9069,9075 ****
                    default:
                      gcc_unreachable();
                    }
!                   cbl_unimplementedw("unimplemented: SET TO LOCALE");
                  }
                  ;
          |       SET set_tgts[tgts] UP BY num_operand[src]
--- 9024,9031 ----
                    default:
                      gcc_unreachable();
                    }
!                   cbl_unimplementedw(SynSetToLocale,
!                                      "unimplemented: %<SET ... TO LOCALE%>");
                  }
                  ;
          |       SET set_tgts[tgts] UP BY num_operand[src]
*************** set:            SET set_tgts[tgts] TO se
*** 9139,9145 ****
                    } else {
                      // do something $tgt->lc_categories()
                    }
!                   cbl_unimplementedw("unimplemented: SET LOCALE");
                  }
                  ;
  
--- 9095,9102 ----
                    } else {
                      // do something $tgt->lc_categories()
                    }
!                   cbl_unimplementedw(SynSetLocaleTo,
!                                      "unimplemented: %<SET LOCALE ... TO%>");
                  }
                  ;
  
*************** search_1_cases: search_1_case
*** 9260,9266 ****
                          lookahead = keyword_str(yychar);
                        }
                      }
!                     yywarn("Just one case, lookahead is '%s'", lookahead);
                    }
                  }
          |       search_1_cases search_1_case
--- 9217,9223 ----
                          lookahead = keyword_str(yychar);
                        }
                      }
!                     dbgmsg("Just one case, lookahead is '%s'", lookahead);
                    }
                  }
          |       search_1_cases search_1_case
*************** search_stmts:   statements    %prec ADD
*** 9314,9320 ****
  search_terms:   search_term
          |       search_terms AND search_term
                  ;
! search_term:    scalar[key] '=' search_expr[sarg]
                  {
                    if( $key->nsubscript() == 0 ) {
                      error_msg(@1, "no index for key");
--- 9271,9277 ----
  search_terms:   search_term
          |       search_terms AND search_term
                  ;
! search_term:    scalar[key] EQ search_expr[sarg]
                  {
                    if( $key->nsubscript() == 0 ) {
                      error_msg(@1, "no index for key");
*************** tally_forth:    CHARACTERS insp_mtqual[q
*** 9764,9772 ****
          |       TRAILING tally_matches[q]
                  { $q->bound = bound_trailing_e;
                    $$ = $q;
! 		  if( ! dialect_mf() ) {
! 		    dialect_error(@1, "TRAILING", "mf");
! 		  }
                  }
                  ;
  
--- 9721,9727 ----
          |       TRAILING tally_matches[q]
                  { $q->bound = bound_trailing_e;
                    $$ = $q;
!                   dialect_ok(@1, MfTrailing, "TRAILING");
                  }
                  ;
  
*************** first_leading:  FIRST      { $$ = bound_
*** 9897,9905 ****
          |       ALL        { $$ = bound_all_e; }
          |       LEADING    { $$ = bound_leading_e; }
          |       TRAILING   { $$ = bound_trailing_e;
! 		  if( ! dialect_mf() ) {
! 		    dialect_error(@1, "TRAILING", "mf");
! 		  }
  		}
                  ;
  
--- 9852,9858 ----
          |       ALL        { $$ = bound_all_e; }
          |       LEADING    { $$ = bound_leading_e; }
          |       TRAILING   { $$ = bound_trailing_e;
!                   dialect_ok(@1, MfTrailing, "TRAILING");
  		}
                  ;
  
*************** call_body:      ffi_name
*** 10089,10097 ****
                  ;
  call_returning:	RETURNING
  	|	GIVING {
! 		  if( !dialect_mf() ) {
! 		    dialect_error(@1, "CALL ... GIVING", "mf");
! 		  }
  		}
  		;
  
--- 10042,10048 ----
                  ;
  call_returning:	RETURNING
  	|	GIVING {
!                   dialect_ok(@1, MfCallGiving, "CALL ... GIVING");
  		}
  		;
  
*************** go_to:          GOTO labels[args]
*** 10343,10355 ****
  resume:         RESUME NEXT STATEMENT
                  {
                    statement_begin(@1, RESUME);
!                   if( dialect_proscribed( @1, dialect_ibm_e, "RESUME") ) YYERROR;
                    parser_clear_exception();
                  }
          |       RESUME label_1[tgt]
                  {
                    statement_begin(@1, RESUME);
!                   if( dialect_proscribed( @1, dialect_ibm_e, "RESUME") ) YYERROR;
                    parser_clear_exception();
  		  $tgt->used = @1.first_line;
                    parser_goto( cbl_refer_t(), 1, &$tgt );
--- 10294,10306 ----
  resume:         RESUME NEXT STATEMENT
                  {
                    statement_begin(@1, RESUME);
!                   dialect_not_ok( @1, IsoResume, "RESUME");
                    parser_clear_exception();
                  }
          |       RESUME label_1[tgt]
                  {
                    statement_begin(@1, RESUME);
!                   dialect_not_ok( @1, IsoResume, "RESUME");
                    parser_clear_exception();
  		  $tgt->used = @1.first_line;
                    parser_goto( cbl_refer_t(), 1, &$tgt );
*************** relop_of(int token) {
*** 12289,12295 ****
    switch(token) {
    case '<': return lt_op;
    case LE:  return le_op;
!   case '=': return eq_op;
    case NE:  return ne_op;
    case GE:  return ge_op;
    case '>': return gt_op;
--- 12240,12246 ----
    switch(token) {
    case '<': return lt_op;
    case LE:  return le_op;
!   case EQ: return eq_op;
    case NE:  return ne_op;
    case GE:  return ge_op;
    case '>': return gt_op;
*************** relop_debug_str(int token) {
*** 12322,12328 ****
    case 0:   return "zilch";
    case '<': return "<";
    case LE:  return "LE";
!   case '=': return "=";
    case NE:  return "NE";
    case GE:  return "GE";
    case '>': return ">";
--- 12273,12279 ----
    case 0:   return "zilch";
    case '<': return "<";
    case LE:  return "LE";
!   case EQ: return "=";
    case NE:  return "NE";
    case GE:  return "GE";
    case '>': return ">";
*************** token_of(enum relop_t op) {
*** 12336,12342 ****
    switch(op) {
    case lt_op: return '<';
    case le_op: return LE;
!   case eq_op: return '=';
    case ne_op: return NE;
    case ge_op: return GE;
    case gt_op: return '>';
--- 12287,12293 ----
    switch(op) {
    case lt_op: return '<';
    case le_op: return LE;
!   case eq_op: return EQ;
    case ne_op: return NE;
    case ge_op: return GE;
    case gt_op: return '>';
*************** struct stringify_src_t : public cbl_stri
*** 12807,12813 ****
  
   protected:
    static void dump_input( const cbl_refer_t& refer ) {
!     yywarn( "%s: %s", __func__, field_str(refer.field) );
    }
  };
  
--- 12758,12764 ----
  
   protected:
    static void dump_input( const cbl_refer_t& refer ) {
!     dbgmsg( "%s: %s", __func__, field_str(refer.field) );
    }
  };
  
*************** stringify( refer_collection_t *inputs,
*** 12817,12829 ****
             cbl_label_t  *on_error,
             cbl_label_t *not_error )
  {
-   std::vector <stringify_src_t> sources(inputs->lists.size());
- 
    if( inputs->lists.back().marker == NULL ) {
      inputs->lists.back().marker = cbl_refer_t::empty();
    }
    assert( inputs->lists.back().marker );
!   std::copy( inputs->lists.begin(), inputs->lists.end(), sources.begin() );
    parser_string( into, pointer, sources.size(), sources.data(), on_error, not_error );
  }
  
--- 12768,12780 ----
             cbl_label_t  *on_error,
             cbl_label_t *not_error )
  {
    if( inputs->lists.back().marker == NULL ) {
      inputs->lists.back().marker = cbl_refer_t::empty();
    }
    assert( inputs->lists.back().marker );
! 
!   std::vector <stringify_src_t> sources(inputs->lists.begin(), inputs->lists.end());
! 
    parser_string( into, pointer, sources.size(), sources.data(), on_error, not_error );
  }
  
*************** numstr2i( const char input[], radix_t ra
*** 13114,13120 ****
    case boolean_e:
      for( const char *p = input; *p != '\0'; p++ ) {
        if( ssize_t(8 * sizeof(integer) - 1) < p - input ) {
!         yywarn("'%s' was accepted as %zu", input, integer);
          break;
        }
        switch(*p) {
--- 13065,13071 ----
    case boolean_e:
      for( const char *p = input; *p != '\0'; p++ ) {
        if( ssize_t(8 * sizeof(integer) - 1) < p - input ) {
!         dbgmsg("'%s' was accepted as %lu", input, (unsigned long)integer);
          break;
        }
        switch(*p) {
*************** numstr2i( const char input[], radix_t ra
*** 13124,13130 ****
            integer |= ((*p) == '0' ? 0 : 1);
            break;
        default:
!         yywarn("'%s' was accepted as %zu", input, integer);
  	break;
        }
      }
--- 13075,13081 ----
            integer |= ((*p) == '0' ? 0 : 1);
            break;
        default:
!         dbgmsg("'%s' was accepted as %lu", input, (unsigned long)integer);
  	break;
        }
      }
*************** numstr2i( const char input[], radix_t ra
*** 13132,13138 ****
      return output;
    }
    if( erc == -1 ) {
!     yywarn("'%s' was accepted as %zu", input, integer);
    }
    return output;
  }
--- 13083,13089 ----
      return output;
    }
    if( erc == -1 ) {
!     cbl_message(ParNumstrW, "'%s' was accepted as %zu", input, integer);
    }
    return output;
  }
*************** mode_syntax_only() {
*** 13843,13848 ****
--- 13794,13800 ----
  void
  cobol_dialect_set( cbl_dialect_t dialect ) {
    switch(dialect) {
+   case dialect_iso_e: 
    case dialect_gcc_e:
      break;
    case dialect_ibm_e:
diff -Nrcpad gcc-16-20251130/gcc/cobol/parse_ante.h gcc-16-20251207/gcc/cobol/parse_ante.h
*** gcc-16-20251130/gcc/cobol/parse_ante.h	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/cobol/parse_ante.h	Sun Dec  7 22:32:07 2025
*************** has_clause( int data_clauses, data_claus
*** 190,205 ****
  }
  
  static bool
- dialect_proscribed( const YYLTYPE& loc, cbl_dialect_t dialect, const char msg[] ) {
-   if( dialect == cbl_dialects ) {
-     error_msg(loc, "dialect %s does not allow syntax: %qs",
-               cbl_dialect_str(dialect), msg);
-     return true;
-   }
-   return false;
- }
- 
- static bool
  is_cobol_charset( const char name[] ) {
    auto eoname = name + strlen(name);
    auto ok = std::all_of( name, eoname,
--- 190,195 ----
*************** static class current_t {
*** 2072,2092 ****
      parser_leave_section( programs.top().section );
      programs.pop();
  
- #if 0
-     if( programs.empty() ) {
-       // The default encoding can be changed only with -finternal-ebcdic, and
-       // remains in effect for all programs while the compiler runs.
-       // This comment here to remind us.  
-       default_encoding = prog_descr_t::encoding_t::encoding_base_t();
-     }
- #endif
      debugging_clients.clear();
      error_clients.clear();
      exception_clients.clear();
  
      if( ref ) {
!       yywarn("could not resolve paragraph (or section) '%s' at line %d",
!                ref->paragraph(), ref->line_number());
        // add string to indicate ambiguity error
        externals.insert(":ambiguous:");
      }
--- 2062,2075 ----
      parser_leave_section( programs.top().section );
      programs.pop();
  
      debugging_clients.clear();
      error_clients.clear();
      exception_clients.clear();
  
      if( ref ) {
!       cbl_message(ParUnresolvedProcE,
!                   "could not resolve paragraph (or section) '%s' at line %d",
!                   ref->paragraph(), ref->line_number());
        // add string to indicate ambiguity error
        externals.insert(":ambiguous:");
      }
*************** static class current_t {
*** 2227,2237 ****
    }
  
    void antecedent_dump() const {
-     if( ! yydebug ) return;
      if( ! antecedent_cache.operand ) {
!       yywarn( "Antecedent: none" );
      } else {
!       yywarn( "Antecedent: %c %s %s %c",
               antecedent_cache.invert? '!':' ',
               name_of(antecedent_cache.operand->field),
               relop_str(antecedent_cache.relop),
--- 2210,2219 ----
    }
  
    void antecedent_dump() const {
      if( ! antecedent_cache.operand ) {
!       dbgmsg( "Antecedent: none" );
      } else {
!       dbgmsg( "Antecedent: %c %s %s %c",
               antecedent_cache.invert? '!':' ',
               name_of(antecedent_cache.operand->field),
               relop_str(antecedent_cache.relop),
*************** parser_move_carefully( const char */*F*/
*** 3139,3146 ****
        if( ! valid_move( tgt.field, src.field ) ) {
          if( src.field->type == FldPointer &&
              tgt.field->type == FldPointer ) {
!           if( dialect_mf() || dialect_gnu() ) return true;
!           dialect_error(src.loc, "MOVE POINTER", "mf");
          }
          if( ! is_index ) {
            char ach[16];
--- 3121,3127 ----
        if( ! valid_move( tgt.field, src.field ) ) {
          if( src.field->type == FldPointer &&
              tgt.field->type == FldPointer ) {
!           dialect_ok(src.loc, MfMovePointer, "MOVE POINTER");
          }
          if( ! is_index ) {
            char ach[16];
*************** goodnight_gracie() {
*** 3612,3618 ****
  
    if( !externals.empty() ) {
      for( const auto& name : externals ) {
!       yywarn("%s calls external symbol '%s'",
              prog->name, name.c_str());
      }
      return false;
--- 3593,3599 ----
  
    if( !externals.empty() ) {
      for( const auto& name : externals ) {
!       dbgmsg("%s calls external symbol '%s'",
              prog->name, name.c_str());
      }
      return false;
diff -Nrcpad gcc-16-20251130/gcc/cobol/scan.l gcc-16-20251207/gcc/cobol/scan.l
*** gcc-16-20251130/gcc/cobol/scan.l	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/cobol/scan.l	Sun Dec  7 22:32:07 2025
*************** EVERY		{ return EVERY; }
*** 762,768 ****
  ERROR		{ return ERROR; }
  EVALUATE	{ return EVALUATE; }
  
! EQUALS?         { return '='; }
  ENVIRONMENT[[:blank:]]+DIVISION	{ return ENVIRONMENT_DIV; }
  
  ENTRY		{ return ENTRY; }
--- 762,770 ----
  ERROR		{ return ERROR; }
  EVALUATE	{ return EVALUATE; }
  
! EQUALS?         { ydflval.string = yylval.string = xstrdup(yytext);
! 		  return '='; }
! 
  ENVIRONMENT[[:blank:]]+DIVISION	{ return ENVIRONMENT_DIV; }
  
  ENTRY		{ return ENTRY; }
*************** ACCESS		{ return ACCESS; }
*** 900,910 ****
  ACCEPT		{ return ACCEPT; }
  
  DELETE		{ return DELETE; }
! EJECT{DOTEOL}? {
! 		  if( ! dialect_ibm() ) {
! 		    dialect_error(yylloc, "EJECT is not ISO syntax,", "ibm");
! 		  }
! 		}
  INSERTT		{ return INSERTT; }
  LABEL		{ return LABEL; }
  PROCESS		{ return PROCESS; }
--- 902,908 ----
  ACCEPT		{ return ACCEPT; }
  
  DELETE		{ return DELETE; }
! EJECT{DOTEOL}?  { dialect_ok(yylloc, IbmEjectE, "EJECT"); }
  INSERTT		{ return INSERTT; }
  LABEL		{ return LABEL; }
  PROCESS		{ return PROCESS; }
*************** USE({SPC}FOR)?		{ return USE; }
*** 1007,1015 ****
    BINARY-SHORT	  		{ return bcomputable(FldNumericBin5, 2); }
    BINARY-LONG	   		{ return bcomputable(FldNumericBin5, 4); }
    BINARY-DOUBLE			{ return bcomputable(FldNumericBin5, 8); }
!   BINARY-LONG-LONG		{ if( ! dialect_mf() ) {
! 				    dialect_error(yylloc, yytext, "mf");
! 				  }
  				  return bcomputable(FldNumericBin5, 8);
  				}
  
--- 1005,1011 ----
    BINARY-SHORT	  		{ return bcomputable(FldNumericBin5, 2); }
    BINARY-LONG	   		{ return bcomputable(FldNumericBin5, 4); }
    BINARY-DOUBLE			{ return bcomputable(FldNumericBin5, 8); }
!   BINARY-LONG-LONG		{ dialect_ok(yylloc, MfBinaryLongLong, "BINARY-LONG-LONG");
  				  return bcomputable(FldNumericBin5, 8);
  				}
  
*************** USE({SPC}FOR)?		{ return USE; }
*** 1044,1052 ****
    PROGRAM-POINTER      	{ yylval.field_attr = prog_ptr_e; return POINTER; }
    POINTER           	{ yylval.field_attr = none_e;     return POINTER; }
  
!   PROCEDURE-POINTER    	{ if( dialect_gcc() ) {
! 			    dialect_error(yylloc, yytext, "ibm or mf");
! 			  }
  			  yylval.field_attr = prog_ptr_e;
  			  return POINTER;  // return it anyway
  			}
--- 1040,1047 ----
    PROGRAM-POINTER      	{ yylval.field_attr = prog_ptr_e; return POINTER; }
    POINTER           	{ yylval.field_attr = none_e;     return POINTER; }
  
!   PROCEDURE-POINTER    	{ 
! 			  dialect_ok(yylloc, IbmProcedurePointer, yytext);
  			  yylval.field_attr = prog_ptr_e;
  			  return POINTER;  // return it anyway
  			}
*************** USE({SPC}FOR)?		{ return USE; }
*** 1086,1098 ****
    DEPENDING		{ return DEPENDING; }
    DESCENDING		{ return DESCENDING; }
    DISPLAY		{ return DISPLAY; }
!   EJECT{DOTEOL}?  {
! 		  if( ! dialect_ibm() ) {
! 		    dialect_error(yylloc, "EJECT is not ISO syntax,", "ibm");
! 		  }
!                   auto len = yyleng - 1;
!                   if( yytext[len] == '\f' ) myless(--len);
! 		}
    EXTERNAL		{ return EXTERNAL; }
    FALSE			{ return FALSE_kw; }
    FROM			{ return FROM; }
--- 1081,1091 ----
    DEPENDING		{ return DEPENDING; }
    DESCENDING		{ return DESCENDING; }
    DISPLAY		{ return DISPLAY; }
!   EJECT{DOTEOL}?  	{
! 			  dialect_ok(yylloc, IbmEjectE, "EJECT"); 
! 			  auto len = yyleng - 1;
! 			  if( yytext[len] == '\f' ) myless(--len);
! 			}
    EXTERNAL		{ return EXTERNAL; }
    FALSE			{ return FALSE_kw; }
    FROM			{ return FROM; }
*************** USE({SPC}FOR)?		{ return USE; }
*** 1506,1521 ****
  <cdf_state,procedure_div>{
    (IS{SPC})?"<"         { return '<'; }
    (IS{SPC})?"<="        { return LE;  }
!   (IS{SPC})?"="         { return '='; }
    (IS{SPC})?"<>"        { return NE;  }
    (IS{SPC})?">="        { return GE;  }
    (IS{SPC})?">"         { return '>'; }
  
!   {LESS_THAN} 				{ return '<'; }
    {LESS_THAN}{SPC}{OR_EQUAL}/[[:space:]]	{ return LE; }
!   (IS{SPC})?EQUALS?({SPC}TO)?/[[:space:]]		{ return '='; }
    {GREATER_THAN}{SPC}{OR_EQUAL}/[[:space:]]	{ return GE; }
!   {GREATER_THAN}			{ return '>'; }
  
    {ISNT}{OSPC}">="        { verify_ws(yytext[yyleng - 3]); return '<'; }
    {ISNT}{OSPC}">"         { verify_ws(yytext[yyleng - 2]); return LE;  }
--- 1499,1519 ----
  <cdf_state,procedure_div>{
    (IS{SPC})?"<"         { return '<'; }
    (IS{SPC})?"<="        { return LE;  }
!   (IS{SPC})?"="         { static char eq[] = "=";
! 			  ydflval.string = yylval.string = eq;
!   			  return EQ; }
    (IS{SPC})?"<>"        { return NE;  }
    (IS{SPC})?">="        { return GE;  }
    (IS{SPC})?">"         { return '>'; }
  
!   {LESS_THAN} 		{ return '<'; }
    {LESS_THAN}{SPC}{OR_EQUAL}/[[:space:]]	{ return LE; }
!   (IS{SPC})?EQUALS?({SPC}TO)?/[[:space:]] {
! 		  static char eq[] = "EQUAL";
! 		  ydflval.string = yylval.string = eq;
! 		  return EQ; }
    {GREATER_THAN}{SPC}{OR_EQUAL}/[[:space:]]	{ return GE; }
!   {GREATER_THAN}				{ return '>'; }
  
    {ISNT}{OSPC}">="        { verify_ws(yytext[yyleng - 3]); return '<'; }
    {ISNT}{OSPC}">"         { verify_ws(yytext[yyleng - 2]); return LE;  }
*************** BASIS		{ yy_push_state(basis); return BA
*** 1992,1998 ****
    {STRING}      { yy_pop_state();
                    yypush_buffer_state( yy_create_buffer(yyin, YY_BUF_SIZE) );
                    if( (yyin = cdftext::lex_open(yytext)) == NULL ) {
!                     yywarn("could not open BASIS file '%s'", yytext);
                      yyterminate();
                    }
                  }
--- 1990,1997 ----
    {STRING}      { yy_pop_state();
                    yypush_buffer_state( yy_create_buffer(yyin, YY_BUF_SIZE) );
                    if( (yyin = cdftext::lex_open(yytext)) == NULL ) {
!                     cbl_message(yylloc, LexIncludeE,
!                                 "could not open BASIS file '%s'", yytext);
                      yyterminate();
                    }
                  }
*************** BASIS		{ yy_push_state(basis); return BA
*** 2003,2009 ****
  }
  
  <procedure_div>{
!    EQUALS?{OSPC}/[(] { return '='; }
  
     {NAME}{OSPC}/[(] { /* If /{OSPC}, "dangerous trailing context" "*/
                    if( is_integer_token() ) return numstr_of(yytext);
--- 2002,2009 ----
  }
  
  <procedure_div>{
!    EQUALS?{OSPC}/[(]	{ ydflval.string = yylval.string = xstrdup(yytext);
! 		  	  return EQ; }
  
     {NAME}{OSPC}/[(] { /* If /{OSPC}, "dangerous trailing context" "*/
                    if( is_integer_token() ) return numstr_of(yytext);
*************** BASIS		{ yy_push_state(basis); return BA
*** 2084,2104 ****
    ^[ ]*>>{OBLANK}ELSE	 	{ return CDF_ELSE; }
    ^[ ]*>>{OBLANK}END-IF	 	{ return CDF_END_IF; }
  
!   ^[ ]*[$]{OBLANK}IF		{ if( ! dialect_mf() )  {
! 				    dialect_error(yylloc,  yytext, "mf");
! 				  }
  				  yy_push_state(cdf_state); return CDF_IF; }
!   ^[ ]*[$]{OBLANK}ELSE	 	{ if( ! dialect_mf() )  {
! 				    dialect_error(yylloc,  yytext, "mf");
! 				  }
  				  return CDF_ELSE; }
!   ^[ ]*[$]{OBLANK}END	 	{ if( ! dialect_mf() ) {
! 				    dialect_error(yylloc,  yytext, "mf");
! 				  }
  				  return CDF_END_IF; }
  
    ^[ ]*[$]{OBLANK}SET({SPC}CONSTANT)? {
! 				  if( ! dialect_mf() ) dialect_error(yylloc, yytext, "mf");
  				  yy_push_state(cdf_state); return CDF_DEFINE; }
  
    ^[ ]*>>{OBLANK}EVALUATE		{ return CDF_EVALUATE; }
--- 2084,2098 ----
    ^[ ]*>>{OBLANK}ELSE	 	{ return CDF_ELSE; }
    ^[ ]*>>{OBLANK}END-IF	 	{ return CDF_END_IF; }
  
!   ^[ ]*[$]{OBLANK}IF		{ dialect_ok(yylloc, MfCdfDollar, yytext); 
  				  yy_push_state(cdf_state); return CDF_IF; }
!   ^[ ]*[$]{OBLANK}ELSE	 	{ dialect_ok(yylloc, MfCdfDollar, yytext); 
  				  return CDF_ELSE; }
!   ^[ ]*[$]{OBLANK}END	 	{ dialect_ok(yylloc, MfCdfDollar, yytext); 
  				  return CDF_END_IF; }
  
    ^[ ]*[$]{OBLANK}SET({SPC}CONSTANT)? {
! 				  dialect_ok(yylloc, MfCdfDollar, yytext); 
  				  yy_push_state(cdf_state); return CDF_DEFINE; }
  
    ^[ ]*>>{OBLANK}EVALUATE		{ return CDF_EVALUATE; }
*************** BASIS		{ yy_push_state(basis); return BA
*** 2293,2299 ****
    END-SUBTRACT	{ return END_SUBTRACT; }
    END-WRITE	{ return END_WRITE; }
    ENVIRONMENT	{ return ENVIRONMENT; }
!   EQUAL		{ return EQUAL; }
    ERROR		{ return ERROR; }
    EVALUATE	{ return EVALUATE; }
    EXCEPTION	{ return EXCEPTION; }
--- 2287,2294 ----
    END-SUBTRACT	{ return END_SUBTRACT; }
    END-WRITE	{ return END_WRITE; }
    ENVIRONMENT	{ return ENVIRONMENT; }
!   EQUAL		{ ydflval.string = yylval.string = xstrdup(yytext);
! 		  return EQ; }
    ERROR		{ return ERROR; }
    EVALUATE	{ return EVALUATE; }
    EXCEPTION	{ return EXCEPTION; }
diff -Nrcpad gcc-16-20251130/gcc/cobol/scan_ante.h gcc-16-20251207/gcc/cobol/scan_ante.h
*** gcc-16-20251130/gcc/cobol/scan_ante.h	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/cobol/scan_ante.h	Sun Dec  7 22:32:07 2025
*************** static class parsing_status_t : public s
*** 295,301 ****
    void splat() const {
      int i=0;
      for( const auto& status : c ) {
!       yywarn( "%d %s", ++i, status.str() );
      }
    }
  } parsing;
--- 295,301 ----
    void splat() const {
      int i=0;
      for( const auto& status : c ) {
!       dbgmsg( "%d %s", ++i, status.str() );
      }
    }
  } parsing;
*************** bool scanner_normal()  { return parsing.
*** 316,326 ****
  
  void scanner_parsing( int token, bool tf ) {
    parsing.push( cdf_status_t(token, tf) );
!   if( yydebug ) {
!     yywarn("%s: parsing now %s, depth %zu",
!             keyword_str(token), boolalpha(parsing.on()), parsing.size());
!     parsing.splat();
!   }
  }
  void scanner_parsing_toggle() {
    if( parsing.empty() ) {
--- 316,324 ----
  
  void scanner_parsing( int token, bool tf ) {
    parsing.push( cdf_status_t(token, tf) );
!   dbgmsg("%s: parsing now %s, depth %zu",
!          keyword_str(token), boolalpha(parsing.on()), parsing.size());
!   parsing.splat();
  }
  void scanner_parsing_toggle() {
    if( parsing.empty() ) {
*************** void scanner_parsing_toggle() {
*** 328,337 ****
      return;
    }
    parsing.top().toggle();
!   if( yydebug ) {
!     yywarn("%s: parsing now %s",
!             keyword_str(CDF_ELSE), boolalpha(parsing.on()));
!   }
  }
  void scanner_parsing_pop() {
    if( parsing.empty() ) {
--- 326,333 ----
      return;
    }
    parsing.top().toggle();
!   dbgmsg("%s: parsing now %s",
!          keyword_str(CDF_ELSE), boolalpha(parsing.on()));
  }
  void scanner_parsing_pop() {
    if( parsing.empty() ) {
*************** void scanner_parsing_pop() {
*** 339,350 ****
      return;
    }
    parsing.pop();
!   if( yydebug ) {
!     yywarn("%s: parsing now %s, depth %zu",
!             keyword_str(CDF_END_IF), boolalpha(parsing.on()),
! 	   parsing.size());
!     parsing.splat();
!   }
  }
  
  
--- 335,344 ----
      return;
    }
    parsing.pop();
!   dbgmsg("%s: parsing now %s, depth %zu",
!          keyword_str(CDF_END_IF), boolalpha(parsing.on()),
!          parsing.size());
!   parsing.splat();
  }
  
  
*************** binary_integer_usage( const char name[])
*** 640,650 ****
  }
        
  static void
! verify_ws( const YYLTYPE& loc, const char input[], char ch ) {
    if( ! fisspace(ch) ) {
!     if( ! (dialect_mf() || dialect_gnu()) ) {
!       dialect_error(loc, "separator space required in %qs", input);
!     }
    }
  }
  #define verify_ws(C) verify_ws(yylloc, yytext, C)
--- 634,642 ----
  }
        
  static void
! verify_ws( const YYLTYPE& loc, const char [] /* input[] */, char ch ) {
    if( ! fisspace(ch) ) {
!     dialect_ok(loc, LexSeparatorE, "missing separator space");
    }
  }
  #define verify_ws(C) verify_ws(yylloc, yytext, C)
*************** level_of( const char input[] ) {
*** 676,682 ****
    if( input[0] == '0' ) input++;
  
    if( 1 != sscanf(input, "%u", &output) ) {
!     yywarn( "%s:%d: invalid level '%s'", __func__, __LINE__, input );
    }
  
    return output;
--- 668,674 ----
    if( input[0] == '0' ) input++;
  
    if( 1 != sscanf(input, "%u", &output) ) {
!     cbl_internal_error( "%s:%d: invalid level '%s'", __func__, __LINE__, input );
    }
  
    return output;
*************** typed_name( const char name[] ) {
*** 1221,1227 ****
      return cbl_field_of(e)->level == 88? NAME88 : CLASS_NAME;
      break;
    default:
!     yywarn("%s:%d: invalid symbol type %s for symbol %qs",
            __func__, __LINE__, cbl_field_type_str(type), name);
      return NAME;
    }
--- 1213,1219 ----
      return cbl_field_of(e)->level == 88? NAME88 : CLASS_NAME;
      break;
    default:
!     cbl_internal_error("%s:%d: invalid symbol type %s for symbol %qs",
            __func__, __LINE__, cbl_field_type_str(type), name);
      return NAME;
    }
*************** integer_of( const char input[], bool is_
*** 1253,1260 ****
    if( input[0] == '0' ) input++;
  
    if( 1 != sscanf(input, fmt, &output) ) {
!     yywarn( "%s:%d: invalid integer '%s'", __func__, __LINE__, input );
    }
  
    return output;
  }
--- 1245,1258 ----
    if( input[0] == '0' ) input++;
  
    if( 1 != sscanf(input, fmt, &output) ) {
!     cbl_internal_error( "%s:%d: invalid integer '%s'", __func__, __LINE__, input );
    }
  
    return output;
  }
+ 
+ 
+ 
+ 
+ 
+ 
diff -Nrcpad gcc-16-20251130/gcc/cobol/scan_post.h gcc-16-20251207/gcc/cobol/scan_post.h
*** gcc-16-20251130/gcc/cobol/scan_post.h	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/cobol/scan_post.h	Sun Dec  7 22:32:07 2025
*************** datetime_format_of( const char input[] )
*** 120,126 ****
        if( 0 != (erc = regcomp(&p->re, p->regex, cflags)) ) {
          static char msg[80];
          regerror(erc, &p->re, msg, sizeof(msg));
!         yywarn("%s:%d: %s: %s", __func__, __LINE__, keyword_str(p->token), msg);
        }
      }
    }
--- 120,127 ----
        if( 0 != (erc = regcomp(&p->re, p->regex, cflags)) ) {
          static char msg[80];
          regerror(erc, &p->re, msg, sizeof(msg));
!         cbl_internal_error("%s:%d: %s: %s", __func__, __LINE__,
!                            keyword_str(p->token), msg);
        }
      }
    }
*************** prelex() {
*** 293,304 ****
    if( YY_START == field_state && level_needed() ) {
      switch( token ) {
      case NUMSTR:
!       if( yy_flex_debug ) yywarn("final token is NUMSTR");
        yylval.number = level_of(yylval.numstr.string);
        token = LEVEL;
        break;
      case YDF_NUMBER:
!       if( yy_flex_debug ) yywarn("final token is %<YDF_NUMBER%>");
        yylval.number = ydflval.number;
        token = LEVEL;
        break;
--- 294,305 ----
    if( YY_START == field_state && level_needed() ) {
      switch( token ) {
      case NUMSTR:
!       dbgmsg("final token is NUMSTR");
        yylval.number = level_of(yylval.numstr.string);
        token = LEVEL;
        break;
      case YDF_NUMBER:
!       dbgmsg("final token is YDF_NUMBER");
        yylval.number = ydflval.number;
        token = LEVEL;
        break;
diff -Nrcpad gcc-16-20251130/gcc/cobol/show_parse.h gcc-16-20251207/gcc/cobol/show_parse.h
*** gcc-16-20251130/gcc/cobol/show_parse.h	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/cobol/show_parse.h	Sun Dec  7 22:32:07 2025
*************** extern bool cursor_at_sol;
*** 449,467 ****
          do {                                                            \
          if(!a)                                                          \
              {                                                           \
!             yywarn("%s: parameter %<" #a "%> is NULL", __func__);       \
!             gcc_unreachable();                                          \
!             abort();                                                    \
              }                                                           \
          if( !a->var_decl_node )                                         \
              {                                                           \
!             yywarn("%s: parameter %<" #a "%> is variable "              \
                     "%s<%s> with NULL %<var_decl_node%>",                \
                  __func__,                                               \
                  a->name,                                                \
                  cbl_field_type_str(a->type) );                          \
-             gcc_unreachable();                                          \
-             abort();                                                    \
              }                                                           \
          } while(0);
  
--- 449,463 ----
          do {                                                            \
          if(!a)                                                          \
              {                                                           \
!             cbl_internal_error("%s: parameter %<" #a "%> is NULL", __func__); \
              }                                                           \
          if( !a->var_decl_node )                                         \
              {                                                           \
!             cbl_internal_error("%s: parameter %<" #a "%> is variable "              \
                     "%s<%s> with NULL %<var_decl_node%>",                \
                  __func__,                                               \
                  a->name,                                                \
                  cbl_field_type_str(a->type) );                          \
              }                                                           \
          } while(0);
  
*************** extern bool cursor_at_sol;
*** 470,488 ****
          do {                                                            \
          if(!a)                                                          \
              {                                                           \
!             yywarn("%s: parameter %<" #a "%> is NULL", __func__);       \
!             gcc_unreachable();                                          \
!             abort();                                                    \
              }                                                           \
          if( !a->var_decl_node && a->type != FldConditional && a->type != FldLiteralA) \
              {                                                           \
!             yywarn("%s: parameter %<" #a "%> is variable "               \
                     "%s<%s> with NULL %<var_decl_node%>",                \
                  __func__,                                               \
                  a->name,                                                \
                  cbl_field_type_str(a->type) );                          \
-             gcc_unreachable();                                          \
-             abort();                                                    \
              }                                                           \
          } while(0);
  
--- 466,480 ----
          do {                                                            \
          if(!a)                                                          \
              {                                                           \
!             cbl_internal_error("%s: parameter %<" #a "%> is NULL", __func__);       \
              }                                                           \
          if( !a->var_decl_node && a->type != FldConditional && a->type != FldLiteralA) \
              {                                                           \
!             cbl_internal_error("%s: parameter %<" #a "%> is variable "               \
                     "%s<%s> with NULL %<var_decl_node%>",                \
                  __func__,                                               \
                  a->name,                                                \
                  cbl_field_type_str(a->type) );                          \
              }                                                           \
          } while(0);
  
*************** extern bool cursor_at_sol;
*** 491,499 ****
          do{                                                             \
          if(!a)                                                          \
              {                                                           \
!             yywarn("%s: parameter %<" #a "%> is NULL", __func__);       \
!             gcc_unreachable();                                          \
!             abort();                                                    \
              }                                                           \
          }while(0);
  
--- 483,489 ----
          do{                                                             \
          if(!a)                                                          \
              {                                                           \
!             cbl_internal_error("%s: parameter %<" #a "%> is NULL", __func__);       \
              }                                                           \
          }while(0);
  
diff -Nrcpad gcc-16-20251130/gcc/cobol/symbols.cc gcc-16-20251207/gcc/cobol/symbols.cc
*** gcc-16-20251130/gcc/cobol/symbols.cc	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/cobol/symbols.cc	Sun Dec  7 22:32:07 2025
*************** static struct symbol_elem_t *
*** 1318,1324 ****
  
    switch( group->level ) {
    case 1: case 77:
!     if( dialect_mf() && is_table(group) ) {
        size_t elem_size = std::max(group->data.memsize, group->data.memsize);
        group->data.memsize = elem_size * group->occurs.ntimes();
      }
--- 1318,1324 ----
  
    switch( group->level ) {
    case 1: case 77:
!     if( is_table(group) ) {
        size_t elem_size = std::max(group->data.memsize, group->data.memsize);
        group->data.memsize = elem_size * group->occurs.ntimes();
      }
*************** symbols_update( size_t first, bool parse
*** 1783,1789 ****
        break;
      case 1:
        pend = calculate_capacity(p);
!       if( dialect_mf() && is_table(field) ) {
          if( field->data.memsize < field->size() ) {
            field->data.memsize = field->size();
          }
--- 1783,1789 ----
        break;
      case 1:
        pend = calculate_capacity(p);
!       if( is_table(field) ) {
          if( field->data.memsize < field->size() ) {
            field->data.memsize = field->size();
          }
*************** cbl_field_t::internalize() {
*** 3858,3864 ****
    iconv_t cd = tocodes[toname];
  
    if (cd == (iconv_t)-1) {
!     yywarn("failed %<iconv_open%> tocode = %qs fromcode = %qs", tocode, fromcode);
    }
  
    if( fromcode == tocode || has_attr(hex_encoded_e) ) {
--- 3858,3866 ----
    iconv_t cd = tocodes[toname];
  
    if (cd == (iconv_t)-1) {
!     cbl_message(ParIconvE,
!                 "failed %<iconv_open%> tocode = %qs fromcode = %qs",
!                 tocode, fromcode);
    }
  
    if( fromcode == tocode || has_attr(hex_encoded_e) ) {
diff -Nrcpad gcc-16-20251130/gcc/cobol/symbols.h gcc-16-20251207/gcc/cobol/symbols.h
*** gcc-16-20251130/gcc/cobol/symbols.h	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/cobol/symbols.h	Sun Dec  7 22:32:07 2025
***************
*** 51,70 ****
  extern const char *numed_message;
  
  enum cbl_dialect_t {
!   dialect_gcc_e = 0x00,
!   dialect_ibm_e = 0x01,
!   dialect_mf_e  = 0x02,
!   dialect_gnu_e = 0x04,
  };
  
  static inline const char *
  cbl_dialect_str(cbl_dialect_t dialect)  {
    switch(dialect) {
    case dialect_gcc_e: return "gcc";
    case dialect_ibm_e: return "ibm";
    case dialect_mf_e:  return "mf";
    case dialect_gnu_e: return "gnu";
    }
    return "???";
  };
  
--- 51,78 ----
  extern const char *numed_message;
  
  enum cbl_dialect_t {
!   dialect_iso_e = 0x00,
!   dialect_gcc_e = 0x01,
!   dialect_ibm_e = 0x02,
!   dialect_mf_e  = 0x04,
!   dialect_gnu_e = 0x08,
  };
  
  static inline const char *
  cbl_dialect_str(cbl_dialect_t dialect)  {
    switch(dialect) {
+   case dialect_iso_e: return "iso";
    case dialect_gcc_e: return "gcc";
    case dialect_ibm_e: return "ibm";
    case dialect_mf_e:  return "mf";
    case dialect_gnu_e: return "gnu";
    }
+ 
+   switch(size_t(dialect)) {
+   case dialect_mf_e | dialect_gnu_e:  return "mf or gnu";
+   case dialect_ibm_e | dialect_mf_e | dialect_gnu_e:  return "ibm or mf or gnu";
+   }
+   
    return "???";
  };
  
*************** static inline bool dialect_gnu() {
*** 86,91 ****
--- 94,108 ----
    return dialect_gnu_e  == (cbl_dialects & dialect_gnu_e );
  }
  
+ static inline bool dialect_has( cbl_dialect_t dialect) {
+   return 0 < (cbl_dialects & dialect);
+ }
+ 
+ #ifdef GCC_DIAGNOSTIC_H
+ bool cbl_diagnostic_kind( cbl_diag_id_t id, diagnostics::kind kind );
+ bool cbl_dialect_kind( cbl_dialect_t dialect, diagnostics::kind kind );
+ #endif
+ 
  enum cbl_gcobol_feature_t {
    feature_gcc_e = 0x00,
    feature_internal_ebcdic_e = 0x01,
*************** struct cbl_alphabet_t {
*** 1715,1723 ****
    }
  
    void dump() const {
!     yywarn("%qs: %s, %<%c%> to %<%c%> (low 0x%x, high 0x%x)",
!           name, encoding_str(encoding),
!           low_index, last_index, low_index, high_index);
      if( encoding == custom_encoding_e ) {
        fprintf(stderr, "\t"
                 "  0   1   2   3   4   5   6   7"
--- 1732,1740 ----
    }
  
    void dump() const {
!     dbgmsg("%s: '%s', '%c' to '%c' (low 0x%x, high 0x%x)",
!            name, encoding_str(encoding),
!            low_index, last_index, low_index, high_index);
      if( encoding == custom_encoding_e ) {
        fprintf(stderr, "\t"
                 "  0   1   2   3   4   5   6   7"
diff -Nrcpad gcc-16-20251130/gcc/cobol/token_names.h gcc-16-20251207/gcc/cobol/token_names.h
*** gcc-16-20251130/gcc/cobol/token_names.h	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/cobol/token_names.h	Sun Dec  7 22:32:07 2025
***************
*** 1,5 ****
! // generated by ./token_names.h.gen ../../build/gcc/cobol/parse.h
! // Tue Nov 11 22:26:46 EST 2025
  tokens = {
  	{ "identification", IDENTIFICATION_DIV }, // 258
  	{ "environment", ENVIRONMENT_DIV }, // 259
--- 1,5 ----
! // generated by /home/jklowden/projects/3rd/gcc/parser/gcc/cobol/token_names.h.gen cobol/parse.h
! // Wed Nov 26 11:57:23 EST 2025
  tokens = {
  	{ "identification", IDENTIFICATION_DIV }, // 258
  	{ "environment", ENVIRONMENT_DIV }, // 259
*************** tokens = {
*** 42,309 ****
  	{ "ones", ONES }, // 296
  	{ "spaces", SPACES }, // 297
  	{ "space", SPACES }, // 297
! 	{ "literal", LITERAL }, // 298
! 	{ "end", END }, // 299
! 	{ "eop", EOP }, // 300
! 	{ "filename", FILENAME }, // 301
! 	{ "invalid", INVALID }, // 302
! 	{ "number", NUMBER }, // 303
! 	{ "negative", NEGATIVE }, // 304
! 	{ "numstr", NUMSTR }, // 305
! 	{ "overflow", OVERFLOW_kw }, // 306
! 	{ "binary-integer", BINARY_INTEGER }, // 307
! 	{ "computational", COMPUTATIONAL }, // 308
! 	{ "perform", PERFORM }, // 309
! 	{ "backward", BACKWARD }, // 310
! 	{ "positive", POSITIVE }, // 311
! 	{ "pointer", POINTER }, // 312
! 	{ "section", SECTION }, // 313
! 	{ "standard-alphabet", STANDARD_ALPHABET }, // 314
! 	{ "switch", SWITCH }, // 315
! 	{ "upsi", UPSI }, // 316
! 	{ "zero", ZERO }, // 317
! 	{ "zeros", ZERO }, // 317
! 	{ "zeroes", ZERO }, // 317
! 	{ "sysin", SYSIN }, // 318
! 	{ "sysipt", SYSIPT }, // 319
! 	{ "sysout", SYSOUT }, // 320
! 	{ "syslist", SYSLIST }, // 321
! 	{ "syslst", SYSLST }, // 322
! 	{ "syspunch", SYSPUNCH }, // 323
! 	{ "syspch", SYSPCH }, // 324
! 	{ "console", CONSOLE }, // 325
! 	{ "c01", C01 }, // 326
! 	{ "c02", C02 }, // 327
! 	{ "c03", C03 }, // 328
! 	{ "c04", C04 }, // 329
! 	{ "c05", C05 }, // 330
! 	{ "c06", C06 }, // 331
! 	{ "c07", C07 }, // 332
! 	{ "c08", C08 }, // 333
! 	{ "c09", C09 }, // 334
! 	{ "c10", C10 }, // 335
! 	{ "c11", C11 }, // 336
! 	{ "c12", C12 }, // 337
! 	{ "csp", CSP }, // 338
! 	{ "s01", S01 }, // 339
! 	{ "s02", S02 }, // 340
! 	{ "s03", S03 }, // 341
! 	{ "s04", S04 }, // 342
! 	{ "s05", S05 }, // 343
! 	{ "afp-5a", AFP_5A }, // 344
! 	{ "stdin", STDIN }, // 345
! 	{ "stdout", STDOUT }, // 346
! 	{ "stderr", STDERR }, // 347
! 	{ "list", LIST }, // 348
! 	{ "map", MAP }, // 349
! 	{ "nolist", NOLIST }, // 350
! 	{ "nomap", NOMAP }, // 351
! 	{ "nosource", NOSOURCE }, // 352
! 	{ "might-be", MIGHT_BE }, // 353
! 	{ "function-udf", FUNCTION_UDF }, // 354
! 	{ "function-udf-0", FUNCTION_UDF_0 }, // 355
! 	{ "default", DEFAULT }, // 356
! 	{ "date-fmt", DATE_FMT }, // 357
! 	{ "time-fmt", TIME_FMT }, // 358
! 	{ "datetime-fmt", DATETIME_FMT }, // 359
! 	{ "basis", BASIS }, // 360
! 	{ "cbl", CBL }, // 361
! 	{ "constant", CONSTANT }, // 362
! 	{ "copy", COPY }, // 363
! 	{ "defined", DEFINED }, // 364
! 	{ "enter", ENTER }, // 365
! 	{ "feature", FEATURE }, // 366
! 	{ "insertt", INSERTT }, // 367
! 	{ "lsub", LSUB }, // 368
! 	{ "parameter", PARAMETER_kw }, // 369
! 	{ "override", OVERRIDE }, // 370
! 	{ "ready", READY }, // 371
! 	{ "reset", RESET }, // 372
! 	{ "rsub", RSUB }, // 373
! 	{ "service-reload", SERVICE_RELOAD }, // 374
! 	{ "star-cbl", STAR_CBL }, // 375
! 	{ "subscript", SUBSCRIPT }, // 376
! 	{ "suppress", SUPPRESS }, // 377
! 	{ "title", TITLE }, // 378
! 	{ "trace", TRACE }, // 379
! 	{ "use", USE }, // 380
! 	{ "cobol-words", COBOL_WORDS }, // 381
! 	{ "equate", EQUATE }, // 382
! 	{ "undefine", UNDEFINE }, // 383
! 	{ "cdf-define", CDF_DEFINE }, // 384
! 	{ "cdf-display", CDF_DISPLAY }, // 385
! 	{ "cdf-if", CDF_IF }, // 386
! 	{ "cdf-else", CDF_ELSE }, // 387
! 	{ "cdf-end-if", CDF_END_IF }, // 388
! 	{ "cdf-evaluate", CDF_EVALUATE }, // 389
! 	{ "cdf-when", CDF_WHEN }, // 390
! 	{ "cdf-end-evaluate", CDF_END_EVALUATE }, // 391
! 	{ "call-convention", CALL_CONVENTION }, // 392
! 	{ "call-cobol", CALL_COBOL }, // 393
! 	{ "call-verbatim", CALL_VERBATIM }, // 394
! 	{ "cdf-push", CDF_PUSH }, // 395
! 	{ "cdf-pop", CDF_POP }, // 396
! 	{ "source-format", SOURCE_FORMAT }, // 397
! 	{ "if", IF }, // 398
! 	{ "then", THEN }, // 399
! 	{ "else", ELSE }, // 400
! 	{ "sentence", SENTENCE }, // 401
! 	{ "accept", ACCEPT }, // 402
! 	{ "add", ADD }, // 403
! 	{ "alter", ALTER }, // 404
! 	{ "call", CALL }, // 405
! 	{ "cancel", CANCEL }, // 406
! 	{ "close", CLOSE }, // 407
! 	{ "compute", COMPUTE }, // 408
! 	{ "continue", CONTINUE }, // 409
! 	{ "delete", DELETE }, // 410
! 	{ "display", DISPLAY }, // 411
! 	{ "divide", DIVIDE }, // 412
! 	{ "evaluate", EVALUATE }, // 413
! 	{ "exit", EXIT }, // 414
! 	{ "filler", FILLER_kw }, // 415
! 	{ "goback", GOBACK }, // 416
! 	{ "goto", GOTO }, // 417
! 	{ "initialize", INITIALIZE }, // 418
! 	{ "inspect", INSPECT }, // 419
! 	{ "merge", MERGE }, // 420
! 	{ "move", MOVE }, // 421
! 	{ "multiply", MULTIPLY }, // 422
! 	{ "open", OPEN }, // 423
! 	{ "paragraph", PARAGRAPH }, // 424
! 	{ "read", READ }, // 425
! 	{ "release", RELEASE }, // 426
! 	{ "return", RETURN }, // 427
! 	{ "rewrite", REWRITE }, // 428
! 	{ "search", SEARCH }, // 429
! 	{ "set", SET }, // 430
! 	{ "select", SELECT }, // 431
! 	{ "sort", SORT }, // 432
! 	{ "sort-merge", SORT_MERGE }, // 433
! 	{ "string", STRING_kw }, // 434
! 	{ "stop", STOP }, // 435
! 	{ "subtract", SUBTRACT }, // 436
! 	{ "start", START }, // 437
! 	{ "unstring", UNSTRING }, // 438
! 	{ "write", WRITE }, // 439
! 	{ "when", WHEN }, // 440
! 	{ "argument-number", ARGUMENT_NUMBER }, // 441
! 	{ "argument-value", ARGUMENT_VALUE }, // 442
! 	{ "environment-name", ENVIRONMENT_NAME }, // 443
! 	{ "environment-value", ENVIRONMENT_VALUE }, // 444
! 	{ "abs", ABS }, // 445
! 	{ "access", ACCESS }, // 446
! 	{ "acos", ACOS }, // 447
! 	{ "actual", ACTUAL }, // 448
! 	{ "advancing", ADVANCING }, // 449
! 	{ "after", AFTER }, // 450
! 	{ "all", ALL }, // 451
! 	{ "allocate", ALLOCATE }, // 452
! 	{ "alphabet", ALPHABET }, // 453
! 	{ "alphabetic", ALPHABETIC }, // 454
! 	{ "alphabetic-lower", ALPHABETIC_LOWER }, // 455
! 	{ "alphabetic-upper", ALPHABETIC_UPPER }, // 456
! 	{ "alphanumeric", ALPHANUMERIC }, // 457
! 	{ "alphanumeric-edited", ALPHANUMERIC_EDITED }, // 458
! 	{ "also", ALSO }, // 459
! 	{ "alternate", ALTERNATE }, // 460
! 	{ "annuity", ANNUITY }, // 461
! 	{ "anum", ANUM }, // 462
! 	{ "any", ANY }, // 463
! 	{ "anycase", ANYCASE }, // 464
! 	{ "apply", APPLY }, // 465
! 	{ "are", ARE }, // 466
! 	{ "area", AREA }, // 467
! 	{ "areas", AREAS }, // 468
! 	{ "as", AS }, // 469
! 	{ "ascending", ASCENDING }, // 470
! 	{ "activating", ACTIVATING }, // 471
! 	{ "asin", ASIN }, // 472
! 	{ "assign", ASSIGN }, // 473
! 	{ "at", AT }, // 474
! 	{ "atan", ATAN }, // 475
! 	{ "based", BASED }, // 476
! 	{ "baseconvert", BASECONVERT }, // 477
! 	{ "before", BEFORE }, // 478
! 	{ "binary", BINARY }, // 479
! 	{ "bit", BIT }, // 480
! 	{ "bit-of", BIT_OF }, // 481
! 	{ "bit-to-char", BIT_TO_CHAR }, // 482
! 	{ "blank", BLANK }, // 483
! 	{ "block", BLOCK_kw }, // 484
! 	{ "boolean-of-integer", BOOLEAN_OF_INTEGER }, // 485
! 	{ "bottom", BOTTOM }, // 486
! 	{ "by", BY }, // 487
! 	{ "byte", BYTE }, // 488
! 	{ "byte-length", BYTE_LENGTH }, // 489
! 	{ "cf", CF }, // 490
! 	{ "ch", CH }, // 491
! 	{ "changed", CHANGED }, // 492
! 	{ "char", CHAR }, // 493
! 	{ "char-national", CHAR_NATIONAL }, // 494
! 	{ "character", CHARACTER }, // 495
! 	{ "characters", CHARACTERS }, // 496
! 	{ "checking", CHECKING }, // 497
! 	{ "class", CLASS }, // 498
! 	{ "cobol", COBOL }, // 499
! 	{ "code", CODE }, // 500
! 	{ "code-set", CODESET }, // 501
! 	{ "collating", COLLATING }, // 502
! 	{ "column", COLUMN }, // 503
! 	{ "combined-datetime", COMBINED_DATETIME }, // 504
! 	{ "comma", COMMA }, // 505
! 	{ "command-line", COMMAND_LINE }, // 506
! 	{ "command-line-count", COMMAND_LINE_COUNT }, // 507
! 	{ "commit", COMMIT }, // 508
! 	{ "common", COMMON }, // 509
! 	{ "concat", CONCAT }, // 510
! 	{ "condition", CONDITION }, // 511
! 	{ "configuration", CONFIGURATION_SECT }, // 512
! 	{ "contains", CONTAINS }, // 513
! 	{ "content", CONTENT }, // 514
! 	{ "control", CONTROL }, // 515
! 	{ "controls", CONTROLS }, // 516
! 	{ "convert", CONVERT }, // 517
! 	{ "converting", CONVERTING }, // 518
! 	{ "corresponding", CORRESPONDING }, // 519
! 	{ "cos", COS }, // 520
! 	{ "count", COUNT }, // 521
! 	{ "currency", CURRENCY }, // 522
! 	{ "current", CURRENT }, // 523
! 	{ "current-date", CURRENT_DATE }, // 524
! 	{ "data", DATA }, // 525
! 	{ "date", DATE }, // 526
! 	{ "date-compiled", DATE_COMPILED }, // 527
! 	{ "date-of-integer", DATE_OF_INTEGER }, // 528
! 	{ "date-to-yyyymmdd", DATE_TO_YYYYMMDD }, // 529
! 	{ "date-written", DATE_WRITTEN }, // 530
! 	{ "day", DAY }, // 531
! 	{ "day-of-integer", DAY_OF_INTEGER }, // 532
! 	{ "day-of-week", DAY_OF_WEEK }, // 533
! 	{ "day-to-yyyyddd", DAY_TO_YYYYDDD }, // 534
! 	{ "dbcs", DBCS }, // 535
! 	{ "de", DE }, // 536
! 	{ "debugging", DEBUGGING }, // 537
! 	{ "decimal-point", DECIMAL_POINT }, // 538
! 	{ "declaratives", DECLARATIVES }, // 539
! 	{ "delimited", DELIMITED }, // 540
! 	{ "delimiter", DELIMITER }, // 541
! 	{ "depending", DEPENDING }, // 542
! 	{ "descending", DESCENDING }, // 543
! 	{ "detail", DETAIL }, // 544
! 	{ "direct", DIRECT }, // 545
! 	{ "direct-access", DIRECT_ACCESS }, // 546
! 	{ "down", DOWN }, // 547
! 	{ "duplicates", DUPLICATES }, // 548
! 	{ "dynamic", DYNAMIC }, // 549
! 	{ "e", E }, // 550
! 	{ "ebcdic", EBCDIC }, // 551
! 	{ "ec", EC }, // 552
! 	{ "egcs", EGCS }, // 553
! 	{ "encoding", ENCODING }, // 554
! 	{ "entry", ENTRY }, // 555
! 	{ "environment", ENVIRONMENT }, // 556
! 	{ "equal", EQUAL }, // 557
  	{ "every", EVERY }, // 558
  	{ "examine", EXAMINE }, // 559
  	{ "exhibit", EXHIBIT }, // 560
--- 42,309 ----
  	{ "ones", ONES }, // 296
  	{ "spaces", SPACES }, // 297
  	{ "space", SPACES }, // 297
! 	{ "eq", EQ }, // 298
! 	{ "literal", LITERAL }, // 299
! 	{ "end", END }, // 300
! 	{ "eop", EOP }, // 301
! 	{ "filename", FILENAME }, // 302
! 	{ "invalid", INVALID }, // 303
! 	{ "number", NUMBER }, // 304
! 	{ "negative", NEGATIVE }, // 305
! 	{ "numstr", NUMSTR }, // 306
! 	{ "overflow", OVERFLOW_kw }, // 307
! 	{ "binary-integer", BINARY_INTEGER }, // 308
! 	{ "computational", COMPUTATIONAL }, // 309
! 	{ "perform", PERFORM }, // 310
! 	{ "backward", BACKWARD }, // 311
! 	{ "positive", POSITIVE }, // 312
! 	{ "pointer", POINTER }, // 313
! 	{ "section", SECTION }, // 314
! 	{ "standard-alphabet", STANDARD_ALPHABET }, // 315
! 	{ "switch", SWITCH }, // 316
! 	{ "upsi", UPSI }, // 317
! 	{ "zero", ZERO }, // 318
! 	{ "zeros", ZERO }, // 318
! 	{ "zeroes", ZERO }, // 318
! 	{ "sysin", SYSIN }, // 319
! 	{ "sysipt", SYSIPT }, // 320
! 	{ "sysout", SYSOUT }, // 321
! 	{ "syslist", SYSLIST }, // 322
! 	{ "syslst", SYSLST }, // 323
! 	{ "syspunch", SYSPUNCH }, // 324
! 	{ "syspch", SYSPCH }, // 325
! 	{ "console", CONSOLE }, // 326
! 	{ "c01", C01 }, // 327
! 	{ "c02", C02 }, // 328
! 	{ "c03", C03 }, // 329
! 	{ "c04", C04 }, // 330
! 	{ "c05", C05 }, // 331
! 	{ "c06", C06 }, // 332
! 	{ "c07", C07 }, // 333
! 	{ "c08", C08 }, // 334
! 	{ "c09", C09 }, // 335
! 	{ "c10", C10 }, // 336
! 	{ "c11", C11 }, // 337
! 	{ "c12", C12 }, // 338
! 	{ "csp", CSP }, // 339
! 	{ "s01", S01 }, // 340
! 	{ "s02", S02 }, // 341
! 	{ "s03", S03 }, // 342
! 	{ "s04", S04 }, // 343
! 	{ "s05", S05 }, // 344
! 	{ "afp-5a", AFP_5A }, // 345
! 	{ "stdin", STDIN }, // 346
! 	{ "stdout", STDOUT }, // 347
! 	{ "stderr", STDERR }, // 348
! 	{ "list", LIST }, // 349
! 	{ "map", MAP }, // 350
! 	{ "nolist", NOLIST }, // 351
! 	{ "nomap", NOMAP }, // 352
! 	{ "nosource", NOSOURCE }, // 353
! 	{ "might-be", MIGHT_BE }, // 354
! 	{ "function-udf", FUNCTION_UDF }, // 355
! 	{ "function-udf-0", FUNCTION_UDF_0 }, // 356
! 	{ "default", DEFAULT }, // 357
! 	{ "date-fmt", DATE_FMT }, // 358
! 	{ "time-fmt", TIME_FMT }, // 359
! 	{ "datetime-fmt", DATETIME_FMT }, // 360
! 	{ "basis", BASIS }, // 361
! 	{ "cbl", CBL }, // 362
! 	{ "constant", CONSTANT }, // 363
! 	{ "copy", COPY }, // 364
! 	{ "defined", DEFINED }, // 365
! 	{ "enter", ENTER }, // 366
! 	{ "feature", FEATURE }, // 367
! 	{ "insertt", INSERTT }, // 368
! 	{ "lsub", LSUB }, // 369
! 	{ "parameter", PARAMETER_kw }, // 370
! 	{ "override", OVERRIDE }, // 371
! 	{ "ready", READY }, // 372
! 	{ "reset", RESET }, // 373
! 	{ "rsub", RSUB }, // 374
! 	{ "service-reload", SERVICE_RELOAD }, // 375
! 	{ "star-cbl", STAR_CBL }, // 376
! 	{ "subscript", SUBSCRIPT }, // 377
! 	{ "suppress", SUPPRESS }, // 378
! 	{ "title", TITLE }, // 379
! 	{ "trace", TRACE }, // 380
! 	{ "use", USE }, // 381
! 	{ "cobol-words", COBOL_WORDS }, // 382
! 	{ "equate", EQUATE }, // 383
! 	{ "undefine", UNDEFINE }, // 384
! 	{ "cdf-define", CDF_DEFINE }, // 385
! 	{ "cdf-display", CDF_DISPLAY }, // 386
! 	{ "cdf-if", CDF_IF }, // 387
! 	{ "cdf-else", CDF_ELSE }, // 388
! 	{ "cdf-end-if", CDF_END_IF }, // 389
! 	{ "cdf-evaluate", CDF_EVALUATE }, // 390
! 	{ "cdf-when", CDF_WHEN }, // 391
! 	{ "cdf-end-evaluate", CDF_END_EVALUATE }, // 392
! 	{ "call-convention", CALL_CONVENTION }, // 393
! 	{ "call-cobol", CALL_COBOL }, // 394
! 	{ "call-verbatim", CALL_VERBATIM }, // 395
! 	{ "cdf-push", CDF_PUSH }, // 396
! 	{ "cdf-pop", CDF_POP }, // 397
! 	{ "source-format", SOURCE_FORMAT }, // 398
! 	{ "if", IF }, // 399
! 	{ "then", THEN }, // 400
! 	{ "else", ELSE }, // 401
! 	{ "sentence", SENTENCE }, // 402
! 	{ "accept", ACCEPT }, // 403
! 	{ "add", ADD }, // 404
! 	{ "alter", ALTER }, // 405
! 	{ "call", CALL }, // 406
! 	{ "cancel", CANCEL }, // 407
! 	{ "close", CLOSE }, // 408
! 	{ "compute", COMPUTE }, // 409
! 	{ "continue", CONTINUE }, // 410
! 	{ "delete", DELETE }, // 411
! 	{ "display", DISPLAY }, // 412
! 	{ "divide", DIVIDE }, // 413
! 	{ "evaluate", EVALUATE }, // 414
! 	{ "exit", EXIT }, // 415
! 	{ "filler", FILLER_kw }, // 416
! 	{ "goback", GOBACK }, // 417
! 	{ "goto", GOTO }, // 418
! 	{ "initialize", INITIALIZE }, // 419
! 	{ "inspect", INSPECT }, // 420
! 	{ "merge", MERGE }, // 421
! 	{ "move", MOVE }, // 422
! 	{ "multiply", MULTIPLY }, // 423
! 	{ "open", OPEN }, // 424
! 	{ "paragraph", PARAGRAPH }, // 425
! 	{ "read", READ }, // 426
! 	{ "release", RELEASE }, // 427
! 	{ "return", RETURN }, // 428
! 	{ "rewrite", REWRITE }, // 429
! 	{ "search", SEARCH }, // 430
! 	{ "set", SET }, // 431
! 	{ "select", SELECT }, // 432
! 	{ "sort", SORT }, // 433
! 	{ "sort-merge", SORT_MERGE }, // 434
! 	{ "string", STRING_kw }, // 435
! 	{ "stop", STOP }, // 436
! 	{ "subtract", SUBTRACT }, // 437
! 	{ "start", START }, // 438
! 	{ "unstring", UNSTRING }, // 439
! 	{ "write", WRITE }, // 440
! 	{ "when", WHEN }, // 441
! 	{ "argument-number", ARGUMENT_NUMBER }, // 442
! 	{ "argument-value", ARGUMENT_VALUE }, // 443
! 	{ "environment-name", ENVIRONMENT_NAME }, // 444
! 	{ "environment-value", ENVIRONMENT_VALUE }, // 445
! 	{ "abs", ABS }, // 446
! 	{ "access", ACCESS }, // 447
! 	{ "acos", ACOS }, // 448
! 	{ "actual", ACTUAL }, // 449
! 	{ "advancing", ADVANCING }, // 450
! 	{ "after", AFTER }, // 451
! 	{ "all", ALL }, // 452
! 	{ "allocate", ALLOCATE }, // 453
! 	{ "alphabet", ALPHABET }, // 454
! 	{ "alphabetic", ALPHABETIC }, // 455
! 	{ "alphabetic-lower", ALPHABETIC_LOWER }, // 456
! 	{ "alphabetic-upper", ALPHABETIC_UPPER }, // 457
! 	{ "alphanumeric", ALPHANUMERIC }, // 458
! 	{ "alphanumeric-edited", ALPHANUMERIC_EDITED }, // 459
! 	{ "also", ALSO }, // 460
! 	{ "alternate", ALTERNATE }, // 461
! 	{ "annuity", ANNUITY }, // 462
! 	{ "anum", ANUM }, // 463
! 	{ "any", ANY }, // 464
! 	{ "anycase", ANYCASE }, // 465
! 	{ "apply", APPLY }, // 466
! 	{ "are", ARE }, // 467
! 	{ "area", AREA }, // 468
! 	{ "areas", AREAS }, // 469
! 	{ "as", AS }, // 470
! 	{ "ascending", ASCENDING }, // 471
! 	{ "activating", ACTIVATING }, // 472
! 	{ "asin", ASIN }, // 473
! 	{ "assign", ASSIGN }, // 474
! 	{ "at", AT }, // 475
! 	{ "atan", ATAN }, // 476
! 	{ "based", BASED }, // 477
! 	{ "baseconvert", BASECONVERT }, // 478
! 	{ "before", BEFORE }, // 479
! 	{ "binary", BINARY }, // 480
! 	{ "bit", BIT }, // 481
! 	{ "bit-of", BIT_OF }, // 482
! 	{ "bit-to-char", BIT_TO_CHAR }, // 483
! 	{ "blank", BLANK }, // 484
! 	{ "block", BLOCK_kw }, // 485
! 	{ "boolean-of-integer", BOOLEAN_OF_INTEGER }, // 486
! 	{ "bottom", BOTTOM }, // 487
! 	{ "by", BY }, // 488
! 	{ "byte", BYTE }, // 489
! 	{ "byte-length", BYTE_LENGTH }, // 490
! 	{ "cf", CF }, // 491
! 	{ "ch", CH }, // 492
! 	{ "changed", CHANGED }, // 493
! 	{ "char", CHAR }, // 494
! 	{ "char-national", CHAR_NATIONAL }, // 495
! 	{ "character", CHARACTER }, // 496
! 	{ "characters", CHARACTERS }, // 497
! 	{ "checking", CHECKING }, // 498
! 	{ "class", CLASS }, // 499
! 	{ "cobol", COBOL }, // 500
! 	{ "code", CODE }, // 501
! 	{ "code-set", CODESET }, // 502
! 	{ "collating", COLLATING }, // 503
! 	{ "column", COLUMN }, // 504
! 	{ "combined-datetime", COMBINED_DATETIME }, // 505
! 	{ "comma", COMMA }, // 506
! 	{ "command-line", COMMAND_LINE }, // 507
! 	{ "command-line-count", COMMAND_LINE_COUNT }, // 508
! 	{ "commit", COMMIT }, // 509
! 	{ "common", COMMON }, // 510
! 	{ "concat", CONCAT }, // 511
! 	{ "condition", CONDITION }, // 512
! 	{ "configuration", CONFIGURATION_SECT }, // 513
! 	{ "contains", CONTAINS }, // 514
! 	{ "content", CONTENT }, // 515
! 	{ "control", CONTROL }, // 516
! 	{ "controls", CONTROLS }, // 517
! 	{ "convert", CONVERT }, // 518
! 	{ "converting", CONVERTING }, // 519
! 	{ "corresponding", CORRESPONDING }, // 520
! 	{ "cos", COS }, // 521
! 	{ "count", COUNT }, // 522
! 	{ "currency", CURRENCY }, // 523
! 	{ "current", CURRENT }, // 524
! 	{ "current-date", CURRENT_DATE }, // 525
! 	{ "data", DATA }, // 526
! 	{ "date", DATE }, // 527
! 	{ "date-compiled", DATE_COMPILED }, // 528
! 	{ "date-of-integer", DATE_OF_INTEGER }, // 529
! 	{ "date-to-yyyymmdd", DATE_TO_YYYYMMDD }, // 530
! 	{ "date-written", DATE_WRITTEN }, // 531
! 	{ "day", DAY }, // 532
! 	{ "day-of-integer", DAY_OF_INTEGER }, // 533
! 	{ "day-of-week", DAY_OF_WEEK }, // 534
! 	{ "day-to-yyyyddd", DAY_TO_YYYYDDD }, // 535
! 	{ "dbcs", DBCS }, // 536
! 	{ "de", DE }, // 537
! 	{ "debugging", DEBUGGING }, // 538
! 	{ "decimal-point", DECIMAL_POINT }, // 539
! 	{ "declaratives", DECLARATIVES }, // 540
! 	{ "delimited", DELIMITED }, // 541
! 	{ "delimiter", DELIMITER }, // 542
! 	{ "depending", DEPENDING }, // 543
! 	{ "descending", DESCENDING }, // 544
! 	{ "detail", DETAIL }, // 545
! 	{ "direct", DIRECT }, // 546
! 	{ "direct-access", DIRECT_ACCESS }, // 547
! 	{ "down", DOWN }, // 548
! 	{ "duplicates", DUPLICATES }, // 549
! 	{ "dynamic", DYNAMIC }, // 550
! 	{ "e", E }, // 551
! 	{ "ebcdic", EBCDIC }, // 552
! 	{ "ec", EC }, // 553
! 	{ "egcs", EGCS }, // 554
! 	{ "encoding", ENCODING }, // 555
! 	{ "entry", ENTRY }, // 556
! 	{ "environment", ENVIRONMENT }, // 557
  	{ "every", EVERY }, // 558
  	{ "examine", EXAMINE }, // 559
  	{ "exhibit", EXHIBIT }, // 560
*************** token_names = {
*** 750,1015 ****
  	"PIC-P", // 37 (295)
  	"ONES", // 38 (296)
  	"SPACES", // 39 (297)
! 	"LITERAL", // 40 (298)
! 	"END", // 41 (299)
! 	"EOP", // 42 (300)
! 	"FILENAME", // 43 (301)
! 	"INVALID", // 44 (302)
! 	"NUMBER", // 45 (303)
! 	"NEGATIVE", // 46 (304)
! 	"NUMSTR", // 47 (305)
! 	"OVERFLOW", // 48 (306)
! 	"BINARY-INTEGER", // 49 (307)
! 	"COMPUTATIONAL", // 50 (308)
! 	"PERFORM", // 51 (309)
! 	"BACKWARD", // 52 (310)
! 	"POSITIVE", // 53 (311)
! 	"POINTER", // 54 (312)
! 	"SECTION", // 55 (313)
! 	"STANDARD-ALPHABET", // 56 (314)
! 	"SWITCH", // 57 (315)
! 	"UPSI", // 58 (316)
! 	"ZERO", // 59 (317)
! 	"SYSIN", // 60 (318)
! 	"SYSIPT", // 61 (319)
! 	"SYSOUT", // 62 (320)
! 	"SYSLIST", // 63 (321)
! 	"SYSLST", // 64 (322)
! 	"SYSPUNCH", // 65 (323)
! 	"SYSPCH", // 66 (324)
! 	"CONSOLE", // 67 (325)
! 	"C01", // 68 (326)
! 	"C02", // 69 (327)
! 	"C03", // 70 (328)
! 	"C04", // 71 (329)
! 	"C05", // 72 (330)
! 	"C06", // 73 (331)
! 	"C07", // 74 (332)
! 	"C08", // 75 (333)
! 	"C09", // 76 (334)
! 	"C10", // 77 (335)
! 	"C11", // 78 (336)
! 	"C12", // 79 (337)
! 	"CSP", // 80 (338)
! 	"S01", // 81 (339)
! 	"S02", // 82 (340)
! 	"S03", // 83 (341)
! 	"S04", // 84 (342)
! 	"S05", // 85 (343)
! 	"AFP-5A", // 86 (344)
! 	"STDIN", // 87 (345)
! 	"STDOUT", // 88 (346)
! 	"STDERR", // 89 (347)
! 	"LIST", // 90 (348)
! 	"MAP", // 91 (349)
! 	"NOLIST", // 92 (350)
! 	"NOMAP", // 93 (351)
! 	"NOSOURCE", // 94 (352)
! 	"MIGHT-BE", // 95 (353)
! 	"FUNCTION-UDF", // 96 (354)
! 	"FUNCTION-UDF-0", // 97 (355)
! 	"DEFAULT", // 98 (356)
! 	"DATE-FMT", // 99 (357)
! 	"TIME-FMT", // 100 (358)
! 	"DATETIME-FMT", // 101 (359)
! 	"BASIS", // 102 (360)
! 	"CBL", // 103 (361)
! 	"CONSTANT", // 104 (362)
! 	"COPY", // 105 (363)
! 	"DEFINED", // 106 (364)
! 	"ENTER", // 107 (365)
! 	"FEATURE", // 108 (366)
! 	"INSERTT", // 109 (367)
! 	"LSUB", // 110 (368)
! 	"PARAMETER", // 111 (369)
! 	"OVERRIDE", // 112 (370)
! 	"READY", // 113 (371)
! 	"RESET", // 114 (372)
! 	"RSUB", // 115 (373)
! 	"SERVICE-RELOAD", // 116 (374)
! 	"STAR-CBL", // 117 (375)
! 	"SUBSCRIPT", // 118 (376)
! 	"SUPPRESS", // 119 (377)
! 	"TITLE", // 120 (378)
! 	"TRACE", // 121 (379)
! 	"USE", // 122 (380)
! 	"COBOL-WORDS", // 123 (381)
! 	"EQUATE", // 124 (382)
! 	"UNDEFINE", // 125 (383)
! 	"CDF-DEFINE", // 126 (384)
! 	"CDF-DISPLAY", // 127 (385)
! 	"CDF-IF", // 128 (386)
! 	"CDF-ELSE", // 129 (387)
! 	"CDF-END-IF", // 130 (388)
! 	"CDF-EVALUATE", // 131 (389)
! 	"CDF-WHEN", // 132 (390)
! 	"CDF-END-EVALUATE", // 133 (391)
! 	"CALL-CONVENTION", // 134 (392)
! 	"CALL-COBOL", // 135 (393)
! 	"CALL-VERBATIM", // 136 (394)
! 	"CDF-PUSH", // 137 (395)
! 	"CDF-POP", // 138 (396)
! 	"SOURCE-FORMAT", // 139 (397)
! 	"IF", // 140 (398)
! 	"THEN", // 141 (399)
! 	"ELSE", // 142 (400)
! 	"SENTENCE", // 143 (401)
! 	"ACCEPT", // 144 (402)
! 	"ADD", // 145 (403)
! 	"ALTER", // 146 (404)
! 	"CALL", // 147 (405)
! 	"CANCEL", // 148 (406)
! 	"CLOSE", // 149 (407)
! 	"COMPUTE", // 150 (408)
! 	"CONTINUE", // 151 (409)
! 	"DELETE", // 152 (410)
! 	"DISPLAY", // 153 (411)
! 	"DIVIDE", // 154 (412)
! 	"EVALUATE", // 155 (413)
! 	"EXIT", // 156 (414)
! 	"FILLER", // 157 (415)
! 	"GOBACK", // 158 (416)
! 	"GOTO", // 159 (417)
! 	"INITIALIZE", // 160 (418)
! 	"INSPECT", // 161 (419)
! 	"MERGE", // 162 (420)
! 	"MOVE", // 163 (421)
! 	"MULTIPLY", // 164 (422)
! 	"OPEN", // 165 (423)
! 	"PARAGRAPH", // 166 (424)
! 	"READ", // 167 (425)
! 	"RELEASE", // 168 (426)
! 	"RETURN", // 169 (427)
! 	"REWRITE", // 170 (428)
! 	"SEARCH", // 171 (429)
! 	"SET", // 172 (430)
! 	"SELECT", // 173 (431)
! 	"SORT", // 174 (432)
! 	"SORT-MERGE", // 175 (433)
! 	"STRING", // 176 (434)
! 	"STOP", // 177 (435)
! 	"SUBTRACT", // 178 (436)
! 	"START", // 179 (437)
! 	"UNSTRING", // 180 (438)
! 	"WRITE", // 181 (439)
! 	"WHEN", // 182 (440)
! 	"ARGUMENT-NUMBER", // 183 (441)
! 	"ARGUMENT-VALUE", // 184 (442)
! 	"ENVIRONMENT-NAME", // 185 (443)
! 	"ENVIRONMENT-VALUE", // 186 (444)
! 	"ABS", // 187 (445)
! 	"ACCESS", // 188 (446)
! 	"ACOS", // 189 (447)
! 	"ACTUAL", // 190 (448)
! 	"ADVANCING", // 191 (449)
! 	"AFTER", // 192 (450)
! 	"ALL", // 193 (451)
! 	"ALLOCATE", // 194 (452)
! 	"ALPHABET", // 195 (453)
! 	"ALPHABETIC", // 196 (454)
! 	"ALPHABETIC-LOWER", // 197 (455)
! 	"ALPHABETIC-UPPER", // 198 (456)
! 	"ALPHANUMERIC", // 199 (457)
! 	"ALPHANUMERIC-EDITED", // 200 (458)
! 	"ALSO", // 201 (459)
! 	"ALTERNATE", // 202 (460)
! 	"ANNUITY", // 203 (461)
! 	"ANUM", // 204 (462)
! 	"ANY", // 205 (463)
! 	"ANYCASE", // 206 (464)
! 	"APPLY", // 207 (465)
! 	"ARE", // 208 (466)
! 	"AREA", // 209 (467)
! 	"AREAS", // 210 (468)
! 	"AS", // 211 (469)
! 	"ASCENDING", // 212 (470)
! 	"ACTIVATING", // 213 (471)
! 	"ASIN", // 214 (472)
! 	"ASSIGN", // 215 (473)
! 	"AT", // 216 (474)
! 	"ATAN", // 217 (475)
! 	"BASED", // 218 (476)
! 	"BASECONVERT", // 219 (477)
! 	"BEFORE", // 220 (478)
! 	"BINARY", // 221 (479)
! 	"BIT", // 222 (480)
! 	"BIT-OF", // 223 (481)
! 	"BIT-TO-CHAR", // 224 (482)
! 	"BLANK", // 225 (483)
! 	"BLOCK", // 226 (484)
! 	"BOOLEAN-OF-INTEGER", // 227 (485)
! 	"BOTTOM", // 228 (486)
! 	"BY", // 229 (487)
! 	"BYTE", // 230 (488)
! 	"BYTE-LENGTH", // 231 (489)
! 	"CF", // 232 (490)
! 	"CH", // 233 (491)
! 	"CHANGED", // 234 (492)
! 	"CHAR", // 235 (493)
! 	"CHAR-NATIONAL", // 236 (494)
! 	"CHARACTER", // 237 (495)
! 	"CHARACTERS", // 238 (496)
! 	"CHECKING", // 239 (497)
! 	"CLASS", // 240 (498)
! 	"COBOL", // 241 (499)
! 	"CODE", // 242 (500)
! 	"CODE-SET", // 243 (501)
! 	"COLLATING", // 244 (502)
! 	"COLUMN", // 245 (503)
! 	"COMBINED-DATETIME", // 246 (504)
! 	"COMMA", // 247 (505)
! 	"COMMAND-LINE", // 248 (506)
! 	"COMMAND-LINE-COUNT", // 249 (507)
! 	"COMMIT", // 250 (508)
! 	"COMMON", // 251 (509)
! 	"CONCAT", // 252 (510)
! 	"CONDITION", // 253 (511)
! 	"CONFIGURATION", // 254 (512)
! 	"CONTAINS", // 255 (513)
! 	"CONTENT", // 256 (514)
! 	"CONTROL", // 257 (515)
! 	"CONTROLS", // 258 (516)
! 	"CONVERT", // 259 (517)
! 	"CONVERTING", // 260 (518)
! 	"CORRESPONDING", // 261 (519)
! 	"COS", // 262 (520)
! 	"COUNT", // 263 (521)
! 	"CURRENCY", // 264 (522)
! 	"CURRENT", // 265 (523)
! 	"CURRENT-DATE", // 266 (524)
! 	"DATA", // 267 (525)
! 	"DATE", // 268 (526)
! 	"DATE-COMPILED", // 269 (527)
! 	"DATE-OF-INTEGER", // 270 (528)
! 	"DATE-TO-YYYYMMDD", // 271 (529)
! 	"DATE-WRITTEN", // 272 (530)
! 	"DAY", // 273 (531)
! 	"DAY-OF-INTEGER", // 274 (532)
! 	"DAY-OF-WEEK", // 275 (533)
! 	"DAY-TO-YYYYDDD", // 276 (534)
! 	"DBCS", // 277 (535)
! 	"DE", // 278 (536)
! 	"DEBUGGING", // 279 (537)
! 	"DECIMAL-POINT", // 280 (538)
! 	"DECLARATIVES", // 281 (539)
! 	"DELIMITED", // 282 (540)
! 	"DELIMITER", // 283 (541)
! 	"DEPENDING", // 284 (542)
! 	"DESCENDING", // 285 (543)
! 	"DETAIL", // 286 (544)
! 	"DIRECT", // 287 (545)
! 	"DIRECT-ACCESS", // 288 (546)
! 	"DOWN", // 289 (547)
! 	"DUPLICATES", // 290 (548)
! 	"DYNAMIC", // 291 (549)
! 	"E", // 292 (550)
! 	"EBCDIC", // 293 (551)
! 	"EC", // 294 (552)
! 	"EGCS", // 295 (553)
! 	"ENCODING", // 296 (554)
! 	"ENTRY", // 297 (555)
! 	"ENVIRONMENT", // 298 (556)
! 	"EQUAL", // 299 (557)
  	"EVERY", // 300 (558)
  	"EXAMINE", // 301 (559)
  	"EXHIBIT", // 302 (560)
--- 750,1015 ----
  	"PIC-P", // 37 (295)
  	"ONES", // 38 (296)
  	"SPACES", // 39 (297)
! 	"EQ", // 40 (298)
! 	"LITERAL", // 41 (299)
! 	"END", // 42 (300)
! 	"EOP", // 43 (301)
! 	"FILENAME", // 44 (302)
! 	"INVALID", // 45 (303)
! 	"NUMBER", // 46 (304)
! 	"NEGATIVE", // 47 (305)
! 	"NUMSTR", // 48 (306)
! 	"OVERFLOW", // 49 (307)
! 	"BINARY-INTEGER", // 50 (308)
! 	"COMPUTATIONAL", // 51 (309)
! 	"PERFORM", // 52 (310)
! 	"BACKWARD", // 53 (311)
! 	"POSITIVE", // 54 (312)
! 	"POINTER", // 55 (313)
! 	"SECTION", // 56 (314)
! 	"STANDARD-ALPHABET", // 57 (315)
! 	"SWITCH", // 58 (316)
! 	"UPSI", // 59 (317)
! 	"ZERO", // 60 (318)
! 	"SYSIN", // 61 (319)
! 	"SYSIPT", // 62 (320)
! 	"SYSOUT", // 63 (321)
! 	"SYSLIST", // 64 (322)
! 	"SYSLST", // 65 (323)
! 	"SYSPUNCH", // 66 (324)
! 	"SYSPCH", // 67 (325)
! 	"CONSOLE", // 68 (326)
! 	"C01", // 69 (327)
! 	"C02", // 70 (328)
! 	"C03", // 71 (329)
! 	"C04", // 72 (330)
! 	"C05", // 73 (331)
! 	"C06", // 74 (332)
! 	"C07", // 75 (333)
! 	"C08", // 76 (334)
! 	"C09", // 77 (335)
! 	"C10", // 78 (336)
! 	"C11", // 79 (337)
! 	"C12", // 80 (338)
! 	"CSP", // 81 (339)
! 	"S01", // 82 (340)
! 	"S02", // 83 (341)
! 	"S03", // 84 (342)
! 	"S04", // 85 (343)
! 	"S05", // 86 (344)
! 	"AFP-5A", // 87 (345)
! 	"STDIN", // 88 (346)
! 	"STDOUT", // 89 (347)
! 	"STDERR", // 90 (348)
! 	"LIST", // 91 (349)
! 	"MAP", // 92 (350)
! 	"NOLIST", // 93 (351)
! 	"NOMAP", // 94 (352)
! 	"NOSOURCE", // 95 (353)
! 	"MIGHT-BE", // 96 (354)
! 	"FUNCTION-UDF", // 97 (355)
! 	"FUNCTION-UDF-0", // 98 (356)
! 	"DEFAULT", // 99 (357)
! 	"DATE-FMT", // 100 (358)
! 	"TIME-FMT", // 101 (359)
! 	"DATETIME-FMT", // 102 (360)
! 	"BASIS", // 103 (361)
! 	"CBL", // 104 (362)
! 	"CONSTANT", // 105 (363)
! 	"COPY", // 106 (364)
! 	"DEFINED", // 107 (365)
! 	"ENTER", // 108 (366)
! 	"FEATURE", // 109 (367)
! 	"INSERTT", // 110 (368)
! 	"LSUB", // 111 (369)
! 	"PARAMETER", // 112 (370)
! 	"OVERRIDE", // 113 (371)
! 	"READY", // 114 (372)
! 	"RESET", // 115 (373)
! 	"RSUB", // 116 (374)
! 	"SERVICE-RELOAD", // 117 (375)
! 	"STAR-CBL", // 118 (376)
! 	"SUBSCRIPT", // 119 (377)
! 	"SUPPRESS", // 120 (378)
! 	"TITLE", // 121 (379)
! 	"TRACE", // 122 (380)
! 	"USE", // 123 (381)
! 	"COBOL-WORDS", // 124 (382)
! 	"EQUATE", // 125 (383)
! 	"UNDEFINE", // 126 (384)
! 	"CDF-DEFINE", // 127 (385)
! 	"CDF-DISPLAY", // 128 (386)
! 	"CDF-IF", // 129 (387)
! 	"CDF-ELSE", // 130 (388)
! 	"CDF-END-IF", // 131 (389)
! 	"CDF-EVALUATE", // 132 (390)
! 	"CDF-WHEN", // 133 (391)
! 	"CDF-END-EVALUATE", // 134 (392)
! 	"CALL-CONVENTION", // 135 (393)
! 	"CALL-COBOL", // 136 (394)
! 	"CALL-VERBATIM", // 137 (395)
! 	"CDF-PUSH", // 138 (396)
! 	"CDF-POP", // 139 (397)
! 	"SOURCE-FORMAT", // 140 (398)
! 	"IF", // 141 (399)
! 	"THEN", // 142 (400)
! 	"ELSE", // 143 (401)
! 	"SENTENCE", // 144 (402)
! 	"ACCEPT", // 145 (403)
! 	"ADD", // 146 (404)
! 	"ALTER", // 147 (405)
! 	"CALL", // 148 (406)
! 	"CANCEL", // 149 (407)
! 	"CLOSE", // 150 (408)
! 	"COMPUTE", // 151 (409)
! 	"CONTINUE", // 152 (410)
! 	"DELETE", // 153 (411)
! 	"DISPLAY", // 154 (412)
! 	"DIVIDE", // 155 (413)
! 	"EVALUATE", // 156 (414)
! 	"EXIT", // 157 (415)
! 	"FILLER", // 158 (416)
! 	"GOBACK", // 159 (417)
! 	"GOTO", // 160 (418)
! 	"INITIALIZE", // 161 (419)
! 	"INSPECT", // 162 (420)
! 	"MERGE", // 163 (421)
! 	"MOVE", // 164 (422)
! 	"MULTIPLY", // 165 (423)
! 	"OPEN", // 166 (424)
! 	"PARAGRAPH", // 167 (425)
! 	"READ", // 168 (426)
! 	"RELEASE", // 169 (427)
! 	"RETURN", // 170 (428)
! 	"REWRITE", // 171 (429)
! 	"SEARCH", // 172 (430)
! 	"SET", // 173 (431)
! 	"SELECT", // 174 (432)
! 	"SORT", // 175 (433)
! 	"SORT-MERGE", // 176 (434)
! 	"STRING", // 177 (435)
! 	"STOP", // 178 (436)
! 	"SUBTRACT", // 179 (437)
! 	"START", // 180 (438)
! 	"UNSTRING", // 181 (439)
! 	"WRITE", // 182 (440)
! 	"WHEN", // 183 (441)
! 	"ARGUMENT-NUMBER", // 184 (442)
! 	"ARGUMENT-VALUE", // 185 (443)
! 	"ENVIRONMENT-NAME", // 186 (444)
! 	"ENVIRONMENT-VALUE", // 187 (445)
! 	"ABS", // 188 (446)
! 	"ACCESS", // 189 (447)
! 	"ACOS", // 190 (448)
! 	"ACTUAL", // 191 (449)
! 	"ADVANCING", // 192 (450)
! 	"AFTER", // 193 (451)
! 	"ALL", // 194 (452)
! 	"ALLOCATE", // 195 (453)
! 	"ALPHABET", // 196 (454)
! 	"ALPHABETIC", // 197 (455)
! 	"ALPHABETIC-LOWER", // 198 (456)
! 	"ALPHABETIC-UPPER", // 199 (457)
! 	"ALPHANUMERIC", // 200 (458)
! 	"ALPHANUMERIC-EDITED", // 201 (459)
! 	"ALSO", // 202 (460)
! 	"ALTERNATE", // 203 (461)
! 	"ANNUITY", // 204 (462)
! 	"ANUM", // 205 (463)
! 	"ANY", // 206 (464)
! 	"ANYCASE", // 207 (465)
! 	"APPLY", // 208 (466)
! 	"ARE", // 209 (467)
! 	"AREA", // 210 (468)
! 	"AREAS", // 211 (469)
! 	"AS", // 212 (470)
! 	"ASCENDING", // 213 (471)
! 	"ACTIVATING", // 214 (472)
! 	"ASIN", // 215 (473)
! 	"ASSIGN", // 216 (474)
! 	"AT", // 217 (475)
! 	"ATAN", // 218 (476)
! 	"BASED", // 219 (477)
! 	"BASECONVERT", // 220 (478)
! 	"BEFORE", // 221 (479)
! 	"BINARY", // 222 (480)
! 	"BIT", // 223 (481)
! 	"BIT-OF", // 224 (482)
! 	"BIT-TO-CHAR", // 225 (483)
! 	"BLANK", // 226 (484)
! 	"BLOCK", // 227 (485)
! 	"BOOLEAN-OF-INTEGER", // 228 (486)
! 	"BOTTOM", // 229 (487)
! 	"BY", // 230 (488)
! 	"BYTE", // 231 (489)
! 	"BYTE-LENGTH", // 232 (490)
! 	"CF", // 233 (491)
! 	"CH", // 234 (492)
! 	"CHANGED", // 235 (493)
! 	"CHAR", // 236 (494)
! 	"CHAR-NATIONAL", // 237 (495)
! 	"CHARACTER", // 238 (496)
! 	"CHARACTERS", // 239 (497)
! 	"CHECKING", // 240 (498)
! 	"CLASS", // 241 (499)
! 	"COBOL", // 242 (500)
! 	"CODE", // 243 (501)
! 	"CODE-SET", // 244 (502)
! 	"COLLATING", // 245 (503)
! 	"COLUMN", // 246 (504)
! 	"COMBINED-DATETIME", // 247 (505)
! 	"COMMA", // 248 (506)
! 	"COMMAND-LINE", // 249 (507)
! 	"COMMAND-LINE-COUNT", // 250 (508)
! 	"COMMIT", // 251 (509)
! 	"COMMON", // 252 (510)
! 	"CONCAT", // 253 (511)
! 	"CONDITION", // 254 (512)
! 	"CONFIGURATION", // 255 (513)
! 	"CONTAINS", // 256 (514)
! 	"CONTENT", // 257 (515)
! 	"CONTROL", // 258 (516)
! 	"CONTROLS", // 259 (517)
! 	"CONVERT", // 260 (518)
! 	"CONVERTING", // 261 (519)
! 	"CORRESPONDING", // 262 (520)
! 	"COS", // 263 (521)
! 	"COUNT", // 264 (522)
! 	"CURRENCY", // 265 (523)
! 	"CURRENT", // 266 (524)
! 	"CURRENT-DATE", // 267 (525)
! 	"DATA", // 268 (526)
! 	"DATE", // 269 (527)
! 	"DATE-COMPILED", // 270 (528)
! 	"DATE-OF-INTEGER", // 271 (529)
! 	"DATE-TO-YYYYMMDD", // 272 (530)
! 	"DATE-WRITTEN", // 273 (531)
! 	"DAY", // 274 (532)
! 	"DAY-OF-INTEGER", // 275 (533)
! 	"DAY-OF-WEEK", // 276 (534)
! 	"DAY-TO-YYYYDDD", // 277 (535)
! 	"DBCS", // 278 (536)
! 	"DE", // 279 (537)
! 	"DEBUGGING", // 280 (538)
! 	"DECIMAL-POINT", // 281 (539)
! 	"DECLARATIVES", // 282 (540)
! 	"DELIMITED", // 283 (541)
! 	"DELIMITER", // 284 (542)
! 	"DEPENDING", // 285 (543)
! 	"DESCENDING", // 286 (544)
! 	"DETAIL", // 287 (545)
! 	"DIRECT", // 288 (546)
! 	"DIRECT-ACCESS", // 289 (547)
! 	"DOWN", // 290 (548)
! 	"DUPLICATES", // 291 (549)
! 	"DYNAMIC", // 292 (550)
! 	"E", // 293 (551)
! 	"EBCDIC", // 294 (552)
! 	"EC", // 295 (553)
! 	"EGCS", // 296 (554)
! 	"ENCODING", // 297 (555)
! 	"ENTRY", // 298 (556)
! 	"ENVIRONMENT", // 299 (557)
  	"EVERY", // 300 (558)
  	"EXAMINE", // 301 (559)
  	"EXHIBIT", // 302 (560)
diff -Nrcpad gcc-16-20251130/gcc/cobol/util.cc gcc-16-20251207/gcc/cobol/util.cc
*** gcc-16-20251130/gcc/cobol/util.cc	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/cobol/util.cc	Sun Dec  7 22:32:07 2025
*************** get_current_dir_name ()
*** 100,106 ****
  unsigned long
  gb4( size_t input ) {
    if( input != static_cast<unsigned long>(input) ) {
!     yywarn("size too large to print: %lx:%lx",
  	   (unsigned long)(input >> (4 * sizeof(unsigned long))),
  	   static_cast<unsigned long>(input));
    }
--- 100,106 ----
  unsigned long
  gb4( size_t input ) {
    if( input != static_cast<unsigned long>(input) ) {
!     dbgmsg("size too large to print: %lx:%lx",
  	   (unsigned long)(input >> (4 * sizeof(unsigned long))),
  	   static_cast<unsigned long>(input));
    }
*************** static location_t token_location_minus_1
*** 2147,2152 ****
--- 2147,2155 ----
  static location_t token_location = 0;
  
  location_t current_token_location() { return token_location; }
+ location_t current_token_location(const location_t& loc) {
+   return token_location = loc;
+ }
  location_t current_location_minus_one() { return token_location_minus_1; }
  void current_location_minus_one_clear()
    {
*************** yyerror( const char gmsgid[], ... ) {
*** 2360,2377 ****
    global_dc->end_group();
  }
  
- bool
- yywarn( const char gmsgid[], ... ) {
-   verify_format(gmsgid);
-   auto_diagnostic_group d;
-   va_list ap;
-   va_start (ap, gmsgid);
-   auto ret = emit_diagnostic_valist( diagnostics::kind::warning, token_location,
-                                      option_zero, gmsgid, &ap );
-   va_end (ap);
-   return ret;
- }
- 
  /*
   * Sometimes during parsing an error is noticed late. This message refers back
   * to an arbitrary file and line number.
--- 2363,2368 ----
*************** cobol_fileline_set( const char line[] )
*** 2430,2438 ****
      *filename = xstrndup(line + pmatch[2].rm_so, matched_length(pmatch[2]));
    int fileline;
  
!   if( 1 != sscanf(line_str, "%d", &fileline) )
!     yywarn("could not parse line number %s from %<#line%> directive", line_str);
! 
    input_file_t input_file( filename, ino_t(0), fileline ); // constructor sets inode
  
    if( input_filenames.empty() ) {
--- 2421,2431 ----
      *filename = xstrndup(line + pmatch[2].rm_so, matched_length(pmatch[2]));
    int fileline;
  
!   if( 1 != sscanf(line_str, "%d", &fileline) ) {
!     cbl_message(LexLineE,
!                 "could not parse line number %s from %<#line%> directive",
!                 line_str);
!   }
    input_file_t input_file( filename, ino_t(0), fileline ); // constructor sets inode
  
    if( input_filenames.empty() ) {
*************** cobol_parse_files (int nfile, const char
*** 2525,2535 ****
  {
    const char * opaque = setlocale(LC_CTYPE, "");
    if( ! opaque ) {
!     yywarn("setlocale: unable to initialize LOCALE");
    } else {
      char *codeset = nl_langinfo(CODESET);
      if( ! codeset ) {
!       yywarn("%<nl_langinfo%> failed after %<setlocale()%> succeeded");
      } else {
        os_locale.codeset = codeset;
      }
--- 2518,2528 ----
  {
    const char * opaque = setlocale(LC_CTYPE, "");
    if( ! opaque ) {
!     cbl_message(ParLocaleW, "setlocale: unable to initialize LOCALE");
    } else {
      char *codeset = nl_langinfo(CODESET);
      if( ! codeset ) {
!       cbl_message(ParLangInfoW, "%<nl_langinfo%> failed after %<setlocale()%> succeeded");
      } else {
        os_locale.codeset = codeset;
      }
*************** cobol_parse_files (int nfile, const char
*** 2541,2560 ****
    }
  }
  
- /*  Outputs the formatted string onto the file descriptor */
- 
- void
- cbl_message(int fd, const char *format_string, ...)
-   {
-   va_list ap;
-   va_start(ap, format_string);
-   char *ostring = xvasprintf(format_string, ap);
-   va_end(ap);
-   write(fd, ostring, strlen(ostring));
-   write(fd, "\n", 1);
-   free(ostring);
-   }
- 
  /*  Uses the GCC internal_error () to output the formatted string.  Processing
      ends with a stack trace  */
  
--- 2534,2539 ----
*************** cbl_internal_error(const char *gmsgid, .
*** 2571,2585 ****
    //        // doesn't cause a warning.
  }
  
  void
! cbl_unimplementedw(const char *gmsgid, ...) {
    verify_format(gmsgid);
    auto_diagnostic_group d;
    va_list ap;
    va_start(ap, gmsgid);
!   emit_diagnostic_valist( diagnostics::kind::warning,
! 			  token_location, option_zero, gmsgid, &ap );
    va_end(ap);
  }
  
  void
--- 2550,2579 ----
    //        // doesn't cause a warning.
  }
  
+ diagnostics::kind cbl_diagnostic_kind( cbl_diag_id_t id );
+ const char *    cbl_diagnostic_option( cbl_diag_id_t id );
+ 
  void
! cbl_unimplementedw(cbl_diag_id_t id, const char *gmsgid, ...) {
    verify_format(gmsgid);
    auto_diagnostic_group d;
+   const char *option;
+   char *msg = nullptr;
+ 
+   diagnostics::kind kind = cbl_diagnostic_kind(id);
+   if( kind == diagnostics::kind::ignored ) return;
+ 
+   if( (option = cbl_diagnostic_option(id)) != nullptr ) {
+     msg = xasprintf("%s [%s]", gmsgid, option);
+     gmsgid = msg;
+   }
+  
    va_list ap;
+ 
    va_start(ap, gmsgid);
!   emit_diagnostic_valist( kind, token_location, option_zero, gmsgid, &ap );
    va_end(ap);
+   free(msg);
  }
  
  void
*************** cbl_errx(const char *gmsgid, ...) {
*** 2635,2640 ****
--- 2629,2641 ----
    va_end(ap);
    }
  
+ /*
+  * For a function that uses host *printf, %zu or %td or %wu are not ok, sadly.
+  * not all supported host arches support those.  So, for *printf family one
+  * needs to use macros like HOST_WIDE_INT_PRINT_DEC (for HOST_WIDE_INT
+  * argument), or HOST_SIZE_T_PRINT_UNSIGNED (for size_t, with casts to
+  * (fmt_size_t)).
+  */
  void
  dbgmsg(const char *msg, ...) {
    if( yy_flex_debug || yydebug ) {
*************** dbgmsg(const char *msg, ...) {
*** 2647,2658 ****
    }
  }
  
- void
- dialect_error( const YYLTYPE& loc, const char term[], const char dialect[] ) {
-   error_msg(loc, "%s is not ISO syntax, requires %<-dialect %s%>",
-            term, dialect);
- }
- 
  bool fisdigit(int c)
    {
    return ISDIGIT(c);
--- 2648,2653 ----
diff -Nrcpad gcc-16-20251130/gcc/cobol/util.h gcc-16-20251207/gcc/cobol/util.h
*** gcc-16-20251130/gcc/cobol/util.h	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/cobol/util.h	Sun Dec  7 22:32:07 2025
***************
*** 31,38 ****
  #ifndef _UTIL_H_
  #define _UTIL_H_
  
- void cbl_message(int fd, const char *format_string, ...)
-   ATTRIBUTE_PRINTF_2;
  [[noreturn]] void cbl_internal_error(const char *format_string, ...)
    ATTRIBUTE_GCOBOL_DIAG(1, 2);
  
--- 31,36 ----
diff -Nrcpad gcc-16-20251130/gcc/common.opt gcc-16-20251207/gcc/common.opt
*** gcc-16-20251130/gcc/common.opt	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/common.opt	Sun Dec  7 22:32:07 2025
*************** ffunction-sections
*** 1828,1833 ****
--- 1828,1837 ----
  Common Var(flag_function_sections)
  Place each function into its own section.
  
+ ffuse-ops-with-volatile-access
+ Target Var(flag_fuse_ops_with_volatile_access) Init(1)
+ Allow limited optimization of operations with volatile memory access.
+ 
  fgcse
  Common Var(flag_gcse) Optimization
  Perform global common subexpression elimination.
diff -Nrcpad gcc-16-20251130/gcc/common.opt.urls gcc-16-20251207/gcc/common.opt.urls
*** gcc-16-20251130/gcc/common.opt.urls	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/common.opt.urls	Sun Dec  7 22:32:07 2025
*************** UrlSuffix(gcc/Optimize-Options.html#inde
*** 782,787 ****
--- 782,790 ----
  ffunction-sections
  UrlSuffix(gcc/Optimize-Options.html#index-ffunction-sections)
  
+ ffuse-ops-with-volatile-access
+ UrlSuffix(gcc/Optimize-Options.html#index-ffuse-ops-with-volatile-access)
+ 
  fgcse
  UrlSuffix(gcc/Optimize-Options.html#index-fgcse)
  
diff -Nrcpad gcc-16-20251130/gcc/config/aarch64/aarch64-abi-ms-protos.h gcc-16-20251207/gcc/config/aarch64/aarch64-abi-ms-protos.h
*** gcc-16-20251130/gcc/config/aarch64/aarch64-abi-ms-protos.h	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/config/aarch64/aarch64-abi-ms-protos.h	Sun Dec  7 22:32:07 2025
***************
*** 0 ****
--- 1,34 ----
+ /* Windows specific ABI for AArch64 architecture.
+    Copyright (C) 2025 Free Software Foundation, Inc.
+    Contributed by ARM Ltd.
+ 
+    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_ABI_MS_PROTOS_H
+ #define GCC_AARCH64_ABI_MS_PROTOS_H
+ 
+ extern int aarch64_ms_variadic_abi_enum_va_list (int, const char **,
+ 						 tree *ptree);
+ 
+ extern tree aarch64_ms_variadic_abi_fn_abi_va_list (tree fndecl);
+ 
+ extern tree aarch64_ms_variadic_abi_canonical_va_list_type (tree type);
+ 
+ extern int aarch64_arg_partial_bytes (cumulative_args_t,
+ 				      const function_arg_info &);
+ 
+ #endif
diff -Nrcpad gcc-16-20251130/gcc/config/aarch64/aarch64-abi-ms.cc gcc-16-20251207/gcc/config/aarch64/aarch64-abi-ms.cc
*** gcc-16-20251130/gcc/config/aarch64/aarch64-abi-ms.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/config/aarch64/aarch64-abi-ms.cc	Sun Dec  7 22:32:07 2025
***************
*** 0 ****
--- 1,106 ----
+ /* Windows specific ABI for AArch64 architecture.
+    Copyright (C) 2025 Free Software Foundation, Inc.
+    Contributed by ARM Ltd.
+ 
+    This file is part of GCC.
+ 
+    GCC is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 3, or (at your option)
+    any later version.
+ 
+    GCC is distributed in the hope that it will be useful, but
+    WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    General Public License for more details.
+ 
+    You should have received a copy of the GNU General Public License
+    along with GCC; see the file COPYING3.  If not see
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #define IN_TARGET_CODE 1
+ 
+ #include "config.h"
+ #include "system.h"
+ #include "coretypes.h"
+ #include "target.h"
+ #include "backend.h"
+ #include "rtl.h"
+ #include "tree.h"
+ #include "stringpool.h"
+ #include "attribs.h"
+ #include "regs.h"
+ #include "function-abi.h"
+ #include "builtins.h"
+ #include "aarch64-abi-ms-protos.h"
+ 
+ /* Iterate through the target-specific builtin types for va_list.
+    IDX denotes the iterator, *PTREE is set to the result type of
+    the va_list builtin, and *PNAME to its internal type.
+    Returns zero if there is no element for this index, otherwise
+    IDX should be increased upon the next call.
+    Note, do not iterate a base builtin's name like __builtin_va_list.
+    Used from c_common_nodes_and_builtins.  */
+ 
+ int
+ aarch64_ms_variadic_abi_enum_va_list (int idx, const char **pname, tree *ptree)
+ {
+   switch (idx)
+     {
+     default:
+       break;
+ 
+     case 0:
+       *ptree = ms_va_list_type_node;
+       *pname = "__builtin_ms_va_list";
+       return 1;
+     }
+ 
+   return 0;
+ }
+ 
+ /* This function returns the calling abi specific va_list type node.
+    It returns  the FNDECL specific va_list type.  */
+ 
+ tree
+ aarch64_ms_variadic_abi_fn_abi_va_list (tree fndecl)
+ {
+   gcc_assert (fndecl != NULL_TREE);
+ 
+   arm_pcs pcs = (arm_pcs) fndecl_abi (fndecl).id ();
+   if (pcs == ARM_PCS_MS_VARIADIC)
+     return ms_va_list_type_node;
+ 
+   return std_fn_abi_va_list (fndecl);
+ }
+ 
+ /* Returns the canonical va_list type specified by TYPE.
+    If there is no valid TYPE provided, it return NULL_TREE.  */
+ 
+ tree
+ aarch64_ms_variadic_abi_canonical_va_list_type (tree type)
+ {
+   if (lookup_attribute ("ms_abi va_list", TYPE_ATTRIBUTES (type)))
+     return ms_va_list_type_node;
+ 
+   return NULL_TREE;
+ }
+ 
+ /* Implement TARGET_ARG_PARTIAL_BYTES.  */
+ 
+ int
+ aarch64_arg_partial_bytes (cumulative_args_t pcum_v,
+ 			   const function_arg_info &arg ATTRIBUTE_UNUSED)
+ {
+   CUMULATIVE_ARGS *pcum = get_cumulative_args (pcum_v);
+ 
+   if (pcum->pcs_variant != ARM_PCS_MS_VARIADIC)
+     return 0;
+ 
+   /* Handle the case when argument is split between the last registers and
+      the stack.  */
+   if ((pcum->aapcs_reg != NULL_RTX) && (pcum->aapcs_stack_words != 0))
+     return pcum->aapcs_stack_words * UNITS_PER_WORD;
+ 
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/gcc/config/aarch64/aarch64-abi-ms.h gcc-16-20251207/gcc/config/aarch64/aarch64-abi-ms.h
*** gcc-16-20251130/gcc/config/aarch64/aarch64-abi-ms.h	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/config/aarch64/aarch64-abi-ms.h	Sun Dec  7 22:32:07 2025
*************** along with GCC; see the file COPYING3.
*** 31,34 ****
--- 31,52 ----
  #undef  STATIC_CHAIN_REGNUM
  #define STATIC_CHAIN_REGNUM R17_REGNUM
  
+ #define ASM_COMMENT_START "//"
+ 
+ /* ASM_OUTPUT_TYPE_DIRECTIVE is not yet supported by binutils for the
+    aarch64-w64-mingw32 target.  */
+ #define ASM_OUTPUT_TYPE_DIRECTIVE(STREAM, NAME, TYPE)
+ 
+ /* Structured Exception Handling (SEH) is not yet supported by binutils
+    so adding seh_endproc as an assembly comment to mark the end of a
+    function.  */
+ #define ASM_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL) \
+   fprintf (FILE, "\t" ASM_COMMENT_START "  seh_endproc\n")
+ 
+ /* Long double is 64 bit for Coff targets.
+    Reference:
+    https://learn.microsoft.com/en-us/cpp/c-language/type-long-double.  */
+ #undef TARGET_LONG_DOUBLE_128
+ #define TARGET_LONG_DOUBLE_128 0
+ 
  #endif /* GCC_AARCH64_ABI_MS_H.  */
diff -Nrcpad gcc-16-20251130/gcc/config/aarch64/aarch64-builtins.cc gcc-16-20251207/gcc/config/aarch64/aarch64-builtins.cc
*** gcc-16-20251130/gcc/config/aarch64/aarch64-builtins.cc	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/config/aarch64/aarch64-builtins.cc	Sun Dec  7 22:32:07 2025
*************** aarch64_general_init_builtins (void)
*** 2519,2524 ****
--- 2519,2557 ----
      handle_arm_acle_h ();
  }
  
+ /* Function to initialize builtin variadic functions for aarch64-w64-mingw32.
+    In this target, variadic functions are handled differently.
+ 
+    Implements SUBTARGET_INIT_BULITINS.  */
+ 
+ void
+ aarch64_ms_variadic_abi_init_builtins (void)
+ {
+   tree ms_va_ref;
+   tree fnvoid_va_end_ms;
+   tree fnvoid_va_start_ms;
+   tree fnvoid_va_copy_ms;
+   tree fnattr_ms = NULL_TREE;
+ 
+   fnattr_ms = build_tree_list (get_identifier ("ms_abi"), NULL_TREE);
+   ms_va_ref = build_reference_type (ms_va_list_type_node);
+ 
+   fnvoid_va_end_ms
+     = build_function_type_list (void_type_node, ms_va_ref, NULL_TREE);
+   fnvoid_va_start_ms
+     = build_varargs_function_type_list (void_type_node, ms_va_ref, NULL_TREE);
+   fnvoid_va_copy_ms
+     = build_function_type_list (void_type_node, ms_va_ref, ms_va_list_type_node,
+ 								NULL_TREE);
+ 
+   add_builtin_function ("__builtin_ms_va_start", fnvoid_va_start_ms,
+ 			BUILT_IN_VA_START, BUILT_IN_NORMAL, NULL, fnattr_ms);
+   add_builtin_function ("__builtin_ms_va_end", fnvoid_va_end_ms,
+ 			BUILT_IN_VA_END, BUILT_IN_NORMAL, NULL, fnattr_ms);
+   add_builtin_function ("__builtin_ms_va_copy", fnvoid_va_copy_ms,
+ 			BUILT_IN_VA_COPY, BUILT_IN_NORMAL, NULL, fnattr_ms);
+ }
+ 
  /* Implement TARGET_BUILTIN_DECL for the AARCH64_BUILTIN_GENERAL group.  */
  tree
  aarch64_general_builtin_decl (unsigned code, bool)
diff -Nrcpad gcc-16-20251130/gcc/config/aarch64/aarch64-coff.h gcc-16-20251207/gcc/config/aarch64/aarch64-coff.h
*** gcc-16-20251130/gcc/config/aarch64/aarch64-coff.h	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/config/aarch64/aarch64-coff.h	Sun Dec  7 22:32:07 2025
***************
*** 61,71 ****
  #define ASM_OUTPUT_SKIP(STREAM, NBYTES) 	\
    fprintf (STREAM, "\t.space\t%d  // skip\n", (int) (NBYTES))
  
- /* Definitions that are not yet supported by binutils for the
-    aarch64-w64-mingw32 target.  */
- #define ASM_OUTPUT_TYPE_DIRECTIVE(STREAM, NAME, TYPE)
- #define ASM_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL)
- 
  #define TEXT_SECTION_ASM_OP	"\t.text"
  #define DATA_SECTION_ASM_OP	"\t.data"
  #define BSS_SECTION_ASM_OP	"\t.bss"
--- 61,66 ----
diff -Nrcpad gcc-16-20251130/gcc/config/aarch64/aarch64-protos.h gcc-16-20251207/gcc/config/aarch64/aarch64-protos.h
*** gcc-16-20251130/gcc/config/aarch64/aarch64-protos.h	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/config/aarch64/aarch64-protos.h	Sun Dec  7 22:32:07 2025
*************** gimple *aarch64_general_gimple_fold_buil
*** 1139,1144 ****
--- 1139,1145 ----
  rtx aarch64_general_expand_builtin (unsigned int, tree, rtx, int);
  tree aarch64_general_builtin_decl (unsigned, bool);
  tree aarch64_general_builtin_rsqrt (unsigned int);
+ void aarch64_ms_variadic_abi_init_builtins (void);
  void handle_arm_acle_h (void);
  void handle_arm_neon_h (void);
  
diff -Nrcpad gcc-16-20251130/gcc/config/aarch64/aarch64.cc gcc-16-20251207/gcc/config/aarch64/aarch64.cc
*** gcc-16-20251130/gcc/config/aarch64/aarch64.cc	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/config/aarch64/aarch64.cc	Sun Dec  7 22:32:07 2025
***************
*** 83,88 ****
--- 83,89 ----
  #include "rtlanal.h"
  #include "tree-dfa.h"
  #include "asan.h"
+ #include "aarch64-abi-ms-protos.h"
  #include "aarch64-elf-metadata.h"
  #include "aarch64-feature-deps.h"
  #include "config/arm/aarch-common.h"
***************
*** 116,121 ****
--- 117,127 ----
  #define HAVE_AS_AEABI_BUILD_ATTRIBUTES 0
  #endif
  
+ /* Not on Windows ABI unless explicitly set.  */
+ #ifndef TARGET_AARCH64_MS_ABI
+ #define TARGET_AARCH64_MS_ABI 0
+ #endif
+ 
  /* Flags that describe how a function shares certain architectural state
     with its callers.
  
*************** handle_aarch64_vector_pcs_attribute (tre
*** 751,757 ****
        *no_add_attrs = true;
        return NULL_TREE;
  
!       /* Rely on the exclusions list for preserve_none.  */
      case ARM_PCS_PRESERVE_NONE:
      case ARM_PCS_TLSDESC:
      case ARM_PCS_UNKNOWN:
--- 757,764 ----
        *no_add_attrs = true;
        return NULL_TREE;
  
!     case ARM_PCS_MS_VARIADIC:
!     /* Rely on the exclusions list for preserve_none.  */
      case ARM_PCS_PRESERVE_NONE:
      case ARM_PCS_TLSDESC:
      case ARM_PCS_UNKNOWN:
*************** aarch64_takes_arguments_in_sve_regs_p (c
*** 2338,2348 ****
--- 2345,2373 ----
    return false;
  }
  
+ /* Return the descriptor of the Windows Arm64 variadic function call ABI.  */
+ 
+ static const predefined_function_abi &
+ aarch64_ms_variadic_abi (void)
+ {
+   predefined_function_abi &ms_variadic_abi = function_abis[ARM_PCS_MS_VARIADIC];
+   if (!ms_variadic_abi.initialized_p ())
+     {
+       HARD_REG_SET full_reg_clobbers
+ 	      = default_function_abi.full_reg_clobbers ();
+       ms_variadic_abi.initialize (ARM_PCS_MS_VARIADIC, full_reg_clobbers);
+     }
+   return ms_variadic_abi;
+ }
+ 
  /* Implement TARGET_FNTYPE_ABI.  */
  
  static const predefined_function_abi &
  aarch64_fntype_abi (const_tree fntype)
  {
+   if (TARGET_AARCH64_MS_ABI && stdarg_p (fntype))
+     return aarch64_ms_variadic_abi ();
+ 
    if (lookup_attribute ("aarch64_vector_pcs", TYPE_ATTRIBUTES (fntype)))
      return aarch64_simd_abi ();
  
*************** aarch64_reg_save_mode (unsigned int regn
*** 2556,2569 ****
    if (FP_REGNUM_P (regno))
      switch (crtl->abi->id ())
        {
        case ARM_PCS_PRESERVE_NONE:
  	/* In preserve_none all fpr registers are caller saved, so the choice
  	   here should not matter.  Nevertheless, fall back to the base AAPCS
  	   for consistency.  */
-       case ARM_PCS_AAPCS64:
- 	/* Only the low 64 bits are saved by the base PCS.  */
  	return DFmode;
  
        case ARM_PCS_SIMD:
  	/* The vector PCS saves the low 128 bits (which is the full
  	   register on non-SVE targets).  */
--- 2581,2598 ----
    if (FP_REGNUM_P (regno))
      switch (crtl->abi->id ())
        {
+       case ARM_PCS_AAPCS64:
+ 	/* Only the low 64 bits are saved by the base PCS.  */
        case ARM_PCS_PRESERVE_NONE:
  	/* In preserve_none all fpr registers are caller saved, so the choice
  	   here should not matter.  Nevertheless, fall back to the base AAPCS
  	   for consistency.  */
  	return DFmode;
  
+       case ARM_PCS_MS_VARIADIC:
+ 	/* Windows only uses GP registers for variadic arguments.  */
+ 	return DImode;
+ 
        case ARM_PCS_SIMD:
  	/* The vector PCS saves the low 128 bits (which is the full
  	   register on non-SVE targets).  */
*************** num_pcs_arg_regs (enum arm_pcs pcs)
*** 7344,7349 ****
--- 7373,7379 ----
      case ARM_PCS_PRESERVE_NONE:
        return NUM_PRESERVE_NONE_ARG_REGS;
      case ARM_PCS_AAPCS64:
+     case ARM_PCS_MS_VARIADIC:
      case ARM_PCS_SIMD:
      case ARM_PCS_SVE:
      case ARM_PCS_TLSDESC:
*************** get_pcs_arg_reg (enum arm_pcs pcs, int n
*** 7368,7373 ****
--- 7398,7404 ----
      case ARM_PCS_PRESERVE_NONE:
        return ARM_PCS_PRESERVE_NONE_REGISTERS[num];
      case ARM_PCS_AAPCS64:
+     case ARM_PCS_MS_VARIADIC:
      case ARM_PCS_SIMD:
      case ARM_PCS_SVE:
      case ARM_PCS_TLSDESC:
*************** get_pcs_arg_reg (enum arm_pcs pcs, int n
*** 7377,7382 ****
--- 7408,7484 ----
    gcc_unreachable ();
  }
  
+ static int
+ aarch64_arg_size (const function_arg_info &arg)
+ {
+   HOST_WIDE_INT size;
+ 
+   /* Size in bytes, rounded to the nearest multiple of 8 bytes.  */
+   if (arg.type)
+     size = int_size_in_bytes (arg.type);
+   else
+     /* No frontends can create types with variable-sized modes, so we
+        shouldn't be asked to pass or return them.  */
+     size = GET_MODE_SIZE (arg.mode).to_constant ();
+ 
+   return ROUND_UP (size, UNITS_PER_WORD);
+ }
+ 
+ /* The Windows Arm64 variadic function call ABI uses only C.12-C15 rules.
+    See: https://learn.microsoft.com/en-us/cpp/build/arm64-windows-abi-conventions#addendum-variadic-functions.  */
+ 
+ static void
+ aarch64_ms_variadic_abi_layout_arg (cumulative_args_t pcum_v,
+ 				    const function_arg_info &arg)
+ {
+   CUMULATIVE_ARGS *pcum = get_cumulative_args (pcum_v);
+   auto mode = arg.mode;
+   auto ncrn = pcum->aapcs_ncrn;
+   HOST_WIDE_INT size = aarch64_arg_size (arg);
+   auto nregs = size / UNITS_PER_WORD;
+ 
+   if (ncrn < NUM_ARG_REGS)
+     {
+       /* The argument bytes are copied to the core registers.  */
+       if (nregs == 1 || GET_MODE_CLASS (mode) == MODE_INT)
+ 	pcum->aapcs_reg = gen_rtx_REG (mode, R0_REGNUM + ncrn);
+       else
+ 	{
+ 	  /* Handle the case when argument is split
+ 	     between the last registers and the
+ 	     stack.  */
+ 	  if (ncrn + nregs > NUM_ARG_REGS)
+ 	    {
+ 	      pcum->aapcs_stack_words = ncrn + nregs - NUM_ARG_REGS;
+ 	      nregs -= pcum->aapcs_stack_words;
+ 	    }
+ 
+ 	  /* Generate load arg to registers instructions.  */
+ 	  rtx par = gen_rtx_PARALLEL (mode, rtvec_alloc (nregs));
+ 	  for (auto i = 0; i < nregs; i++)
+ 	    {
+ 	      rtx tmp = gen_rtx_REG (word_mode, R0_REGNUM + ncrn + i);
+ 	      tmp = gen_rtx_EXPR_LIST (VOIDmode, tmp,
+ 				       GEN_INT (i * UNITS_PER_WORD));
+ 	      XVECEXP (par, 0, i) = tmp;
+ 	    }
+ 	  pcum->aapcs_reg = par;
+ 	}
+ 
+       pcum->aapcs_nextncrn = ncrn + nregs;
+     }
+   else
+     {
+       /* The remaining arguments are passed on stack; record the needed
+ 	 number of words for this argument and align the total size if
+ 	 necessary.  */
+       pcum->aapcs_nextncrn = NUM_ARG_REGS;
+       pcum->aapcs_stack_words = nregs;
+     }
+ 
+   pcum->aapcs_arg_processed = true;
+ }
+ 
  /* Layout a function argument according to the AAPCS64 rules.  The rule
     numbers refer to the rule numbers in the AAPCS64.  ORIG_MODE is the
     mode that was originally given to us by the target hook, whereas the
*************** aarch64_layout_arg (cumulative_args_t pc
*** 7400,7405 ****
--- 7502,7513 ----
    if (pcum->aapcs_arg_processed)
      return;
  
+   if (pcum->pcs_variant == ARM_PCS_MS_VARIADIC)
+     {
+       aarch64_ms_variadic_abi_layout_arg (pcum_v, arg);
+       return;
+     }
+ 
    bool warn_pcs_change
      = (warn_psabi
         && !pcum->silent_p
*************** aarch64_layout_arg (cumulative_args_t pc
*** 7517,7531 ****
  		&& (aarch64_some_values_include_pst_objects_p (type)
  		    || (vec_flags & VEC_PARTIAL)));
  
!   /* Size in bytes, rounded to the nearest multiple of 8 bytes.  */
!   if (type)
!     size = int_size_in_bytes (type);
!   else
!     /* No frontends can create types with variable-sized modes, so we
!        shouldn't be asked to pass or return them.  */
!     size = GET_MODE_SIZE (mode).to_constant ();
!   size = ROUND_UP (size, UNITS_PER_WORD);
! 
    allocate_ncrn = (type) ? !(FLOAT_TYPE_P (type)) : !FLOAT_MODE_P (mode);
    allocate_nvrn = aarch64_vfp_is_call_candidate (pcum_v,
  						 mode,
--- 7625,7631 ----
  		&& (aarch64_some_values_include_pst_objects_p (type)
  		    || (vec_flags & VEC_PARTIAL)));
  
!   size = aarch64_arg_size (arg);
    allocate_ncrn = (type) ? !(FLOAT_TYPE_P (type)) : !FLOAT_MODE_P (mode);
    allocate_nvrn = aarch64_vfp_is_call_candidate (pcum_v,
  						 mode,
*************** aarch64_function_arg (cumulative_args_t
*** 7767,7776 ****
  {
    CUMULATIVE_ARGS *pcum = get_cumulative_args (pcum_v);
    gcc_assert (pcum->pcs_variant == ARM_PCS_AAPCS64
  	      || pcum->pcs_variant == ARM_PCS_SIMD
! 	      || pcum->pcs_variant == ARM_PCS_SVE
! 	      || pcum->pcs_variant == ARM_PCS_PRESERVE_NONE);
! 
    if (arg.end_marker_p ())
      {
        rtx abi_cookie = aarch64_gen_callee_cookie (pcum->isa_mode,
--- 7867,7876 ----
  {
    CUMULATIVE_ARGS *pcum = get_cumulative_args (pcum_v);
    gcc_assert (pcum->pcs_variant == ARM_PCS_AAPCS64
+ 	      || pcum->pcs_variant == ARM_PCS_PRESERVE_NONE
+ 	      || pcum->pcs_variant == ARM_PCS_MS_VARIADIC
  	      || pcum->pcs_variant == ARM_PCS_SIMD
! 	      || pcum->pcs_variant == ARM_PCS_SVE);
    if (arg.end_marker_p ())
      {
        rtx abi_cookie = aarch64_gen_callee_cookie (pcum->isa_mode,
*************** aarch64_function_arg_advance (cumulative
*** 7862,7868 ****
    if (pcum->pcs_variant == ARM_PCS_AAPCS64
        || pcum->pcs_variant == ARM_PCS_SIMD
        || pcum->pcs_variant == ARM_PCS_SVE
!       || pcum->pcs_variant == ARM_PCS_PRESERVE_NONE)
      {
        aarch64_layout_arg (pcum_v, arg);
        if (pcum->aapcs_reg && aarch64_call_switches_pstate_sm (pcum->isa_mode))
--- 7962,7969 ----
    if (pcum->pcs_variant == ARM_PCS_AAPCS64
        || pcum->pcs_variant == ARM_PCS_SIMD
        || pcum->pcs_variant == ARM_PCS_SVE
!       || pcum->pcs_variant == ARM_PCS_PRESERVE_NONE
!       || pcum->pcs_variant == ARM_PCS_MS_VARIADIC)
      {
        aarch64_layout_arg (pcum_v, arg);
        if (pcum->aapcs_reg && aarch64_call_switches_pstate_sm (pcum->isa_mode))
*************** aarch64_function_arg_regno_p (unsigned r
*** 7901,7906 ****
--- 8002,8008 ----
    switch (pcs)
      {
      case ARM_PCS_AAPCS64:
+     case ARM_PCS_MS_VARIADIC:
      case ARM_PCS_SIMD:
      case ARM_PCS_SVE:
      case ARM_PCS_TLSDESC:
*************** aarch64_init_builtins ()
*** 16427,16432 ****
--- 16529,16538 ----
  {
    aarch64_general_init_builtins ();
    aarch64_sve::init_builtins ();
+   if (TARGET_AARCH64_MS_ABI)
+     {
+       aarch64_ms_variadic_abi_init_builtins ();
+     }
  #ifdef SUBTARGET_INIT_BUILTINS
    SUBTARGET_INIT_BUILTINS;
  #endif
*************** aarch64_load_tp (rtx target)
*** 21818,21823 ****
--- 21924,21947 ----
    return target;
  }
  
+ /* Windows Arm64 variadic function call ABI specific va_list type node.  */
+ tree ms_va_list_type_node = NULL_TREE;
+ 
+ /* Setup the builtin va_list data type and for 64-bit the additional
+    calling convention specific va_list data types.  */
+ 
+ static tree
+ aarch64_ms_variadic_abi_build_builtin_va_list (void)
+ {
+   /* For MS_ABI we use plain pointer to argument area.  */
+   tree char_ptr_type = build_pointer_type (char_type_node);
+   tree attr = tree_cons (get_identifier ("ms_abi va_list"), NULL_TREE,
+ 			 TYPE_ATTRIBUTES (char_ptr_type));
+   ms_va_list_type_node = build_type_attribute_variant (char_ptr_type, attr);
+ 
+   return ms_va_list_type_node;
+ }
+ 
  /* On AAPCS systems, this is the "struct __va_list".  */
  static GTY(()) tree va_list_type;
  
*************** static GTY(()) tree va_list_type;
*** 21833,21843 ****
       void *__vr_top;
       int   __gr_offs;
       int   __vr_offs;
!    };  */
  
  static tree
  aarch64_build_builtin_va_list (void)
  {
    tree va_list_name;
    tree f_stack, f_grtop, f_vrtop, f_groff, f_vroff;
  
--- 21957,21973 ----
       void *__vr_top;
       int   __gr_offs;
       int   __vr_offs;
!    };
! 
!    Windows ABI is handled using
!    aarch64_ms_variadic_abi_build_builtin_va_list (void).  */
  
  static tree
  aarch64_build_builtin_va_list (void)
  {
+   if (TARGET_AARCH64_MS_ABI)
+     return aarch64_ms_variadic_abi_build_builtin_va_list ();
+ 
    tree va_list_name;
    tree f_stack, f_grtop, f_vrtop, f_groff, f_vroff;
  
*************** aarch64_build_builtin_va_list (void)
*** 21901,21910 ****
    return va_list_type;
  }
  
  /* Implement TARGET_EXPAND_BUILTIN_VA_START.  */
  static void
! aarch64_expand_builtin_va_start (tree valist, rtx nextarg ATTRIBUTE_UNUSED)
  {
    const CUMULATIVE_ARGS *cum;
    tree f_stack, f_grtop, f_vrtop, f_groff, f_vroff;
    tree stack, grtop, vrtop, groff, vroff;
--- 22031,22059 ----
    return va_list_type;
  }
  
+ static void
+ aarch64_ms_variadic_abi_expand_builtin_va_start (tree valist, rtx nextarg)
+ {
+   rtx va_r = expand_expr (valist, NULL_RTX, VOIDmode, EXPAND_WRITE);
+ 
+   /* ??? Should we initialize and use cfun->va_list_gpr_size instead of
+    * defining single purpose
+    * cfun->machine->frame.unaligned_saved_varargs_size field.
+    * Currently, the cfun->va_list_gpr_size contains only value 255.  */
+   int offset = cfun->machine->frame.unaligned_saved_varargs_size;
+   nextarg = plus_constant (GET_MODE (nextarg), nextarg, -offset);
+ 
+   convert_move (va_r, nextarg, 0);
+ }
+ 
  /* Implement TARGET_EXPAND_BUILTIN_VA_START.  */
+ 
  static void
! aarch64_expand_builtin_va_start (tree valist, rtx nextarg)
  {
+   if (TARGET_AARCH64_MS_ABI)
+     return aarch64_ms_variadic_abi_expand_builtin_va_start (valist, nextarg);
+ 
    const CUMULATIVE_ARGS *cum;
    tree f_stack, f_grtop, f_vrtop, f_groff, f_vroff;
    tree stack, grtop, vrtop, groff, vroff;
*************** aarch64_expand_builtin_va_start (tree va
*** 21987,21992 ****
--- 22136,22142 ----
  
  /* Implement TARGET_GIMPLIFY_VA_ARG_EXPR.  */
  
+ #if TARGET_AARCH64_MS_ABI == 0
  static tree
  aarch64_gimplify_va_arg_expr (tree valist, tree type, gimple_seq *pre_p,
  			      gimple_seq *post_p ATTRIBUTE_UNUSED)
*************** aarch64_gimplify_va_arg_expr (tree valis
*** 22279,22284 ****
--- 22429,22435 ----
  
    return addr;
  }
+ #endif
  
  /* Implement TARGET_SETUP_INCOMING_VARARGS.  */
  
*************** aarch64_setup_incoming_varargs (cumulati
*** 22309,22315 ****
      vr_saved = MIN (NUM_FP_ARG_REGS - local_cum.aapcs_nvrn,
  		    cfun->va_list_fpr_size / UNITS_PER_VREG);
  
!   if (!TARGET_FLOAT)
      {
        gcc_assert (local_cum.aapcs_nvrn == 0);
        vr_saved = 0;
--- 22460,22467 ----
      vr_saved = MIN (NUM_FP_ARG_REGS - local_cum.aapcs_nvrn,
  		    cfun->va_list_fpr_size / UNITS_PER_VREG);
  
!   /* Windows variadic function calls ABI never uses vector registers.  */
!   if (TARGET_AARCH64_MS_ABI || !TARGET_FLOAT)
      {
        gcc_assert (local_cum.aapcs_nvrn == 0);
        vr_saved = 0;
*************** aarch64_setup_incoming_varargs (cumulati
*** 22374,22381 ****
  
    /* We don't save the size into *PRETEND_SIZE because we want to avoid
       any complication of having crtl->args.pretend_args_size changed.  */
    cfun->machine->frame.saved_varargs_size
!     = (ROUND_UP (gr_saved * UNITS_PER_WORD,
  		 STACK_BOUNDARY / BITS_PER_UNIT)
         + vr_saved * UNITS_PER_VREG);
  }
--- 22526,22534 ----
  
    /* We don't save the size into *PRETEND_SIZE because we want to avoid
       any complication of having crtl->args.pretend_args_size changed.  */
+   cfun->machine->frame.unaligned_saved_varargs_size = gr_saved * UNITS_PER_WORD;
    cfun->machine->frame.saved_varargs_size
!     = (ROUND_UP (cfun->machine->frame.unaligned_saved_varargs_size,
  		 STACK_BOUNDARY / BITS_PER_UNIT)
         + vr_saved * UNITS_PER_VREG);
  }
*************** static const char *
*** 23186,23193 ****
  aarch64_mangle_type (const_tree type)
  {
    /* The AArch64 ABI documents say that "__va_list" has to be
!      mangled as if it is in the "std" namespace.  */
!   if (lang_hooks.types_compatible_p (CONST_CAST_TREE (type), va_list_type))
      return "St9__va_list";
  
    /* Half-precision floating point types.  */
--- 23339,23349 ----
  aarch64_mangle_type (const_tree type)
  {
    /* The AArch64 ABI documents say that "__va_list" has to be
!      mangled as if it is in the "std" namespace.
!      The Windows Arm64 ABI uses just an address of the first variadic
!      argument.  */
!   if (!TARGET_AARCH64_MS_ABI
!       && lang_hooks.types_compatible_p (CONST_CAST_TREE (type), va_list_type))
      return "St9__va_list";
  
    /* Half-precision floating point types.  */
*************** aarch64_post_cfi_startproc (FILE *f, tre
*** 25835,25840 ****
--- 25991,26018 ----
  	asm_fprintf (f, "\t.cfi_b_key_frame\n");
  }
  
+ /* Implement TARGET_STRICT_ARGUMENT_NAMING.
+ 
+    Return true if the location where a function argument is passed
+    depends on whether or not it is a named argument.
+ 
+    For Windows ABI of variadic function calls, treat the named arguments as
+    unnamed as they are handled the same way as variadic arguments.  */
+ 
+ static bool
+ aarch64_variadic_abi_strict_argument_naming (cumulative_args_t pcum_v)
+ {
+   if (!TARGET_AARCH64_MS_ABI)
+     return hook_bool_CUMULATIVE_ARGS_true (pcum_v);
+ 
+   CUMULATIVE_ARGS *pcum = get_cumulative_args (pcum_v);
+ 
+   if (pcum->pcs_variant == ARM_PCS_MS_VARIADIC)
+     return false;
+ 
+   return hook_bool_CUMULATIVE_ARGS_true (pcum_v);
+ }
+ 
  /* Implements TARGET_ASM_FILE_START.  Output the assembly header.  */
  
  static void
*************** aarch64_gen_ccmp_next (rtx_insn **prep_s
*** 28479,28484 ****
--- 28657,28668 ----
    struct expand_operand ops[6];
    int aarch64_cond;
  
+   /* Exit early for modes that are ot handled to avoid O(n^2) part of expand_operands. */
+   op_mode = TYPE_MODE (TREE_TYPE (treeop0));
+   if (!(op_mode == QImode || op_mode == HImode || op_mode == SImode || op_mode == DImode
+ 	|| op_mode == SFmode || op_mode == DFmode))
+    return NULL_RTX;
+ 
    push_to_sequence (*prep_seq);
    expand_operands (treeop0, treeop1, NULL_RTX, &op0, &op1, EXPAND_NORMAL);
  
*************** aarch64_scalar_mode_supported_p (scalar_
*** 29783,29788 ****
--- 29967,29975 ----
    if (DECIMAL_FLOAT_MODE_P (mode))
      return default_decimal_float_supported_p ();
  
+   if (mode == TFmode)
+     return true;
+ 
    return ((mode == HFmode || mode == BFmode)
  	  ? true
  	  : default_scalar_mode_supported_p (mode));
*************** aarch64_bitint_type_info (int n, struct
*** 29873,29879 ****
  static machine_mode
  aarch64_c_mode_for_floating_type (enum tree_index ti)
  {
!   if (ti == TI_LONG_DOUBLE_TYPE)
      return TFmode;
    return default_mode_for_floating_type (ti);
  }
--- 30060,30066 ----
  static machine_mode
  aarch64_c_mode_for_floating_type (enum tree_index ti)
  {
!   if (TARGET_LONG_DOUBLE_128 && ti == TI_LONG_DOUBLE_TYPE)
      return TFmode;
    return default_mode_for_floating_type (ti);
  }
*************** aarch64_run_selftests (void)
*** 32583,32588 ****
--- 32770,32790 ----
  #undef TARGET_EXPAND_BUILTIN_VA_START
  #define TARGET_EXPAND_BUILTIN_VA_START aarch64_expand_builtin_va_start
  
+ #if TARGET_AARCH64_MS_ABI == 1
+ #undef TARGET_ENUM_VA_LIST_P
+ #define TARGET_ENUM_VA_LIST_P aarch64_ms_variadic_abi_enum_va_list
+ 
+ #undef TARGET_FN_ABI_VA_LIST
+ #define TARGET_FN_ABI_VA_LIST aarch64_ms_variadic_abi_fn_abi_va_list
+ 
+ #undef TARGET_CANONICAL_VA_LIST_TYPE
+ #define TARGET_CANONICAL_VA_LIST_TYPE \
+   aarch64_ms_variadic_abi_canonical_va_list_type
+ 
+ #undef TARGET_ARG_PARTIAL_BYTES
+ #define TARGET_ARG_PARTIAL_BYTES aarch64_arg_partial_bytes
+ #endif
+ 
  #undef TARGET_FOLD_BUILTIN
  #define TARGET_FOLD_BUILTIN aarch64_fold_builtin
  
*************** aarch64_run_selftests (void)
*** 32621,32628 ****
--- 32823,32832 ----
  #undef TARGET_GIMPLE_FOLD_BUILTIN
  #define TARGET_GIMPLE_FOLD_BUILTIN aarch64_gimple_fold_builtin
  
+ #if TARGET_AARCH64_MS_ABI == 0
  #undef TARGET_GIMPLIFY_VA_ARG_EXPR
  #define TARGET_GIMPLIFY_VA_ARG_EXPR aarch64_gimplify_va_arg_expr
+ #endif
  
  #undef  TARGET_INIT_BUILTINS
  #define TARGET_INIT_BUILTINS  aarch64_init_builtins
*************** aarch64_libgcc_floating_mode_supported_p
*** 33044,33050 ****
  #define TARGET_ASM_POST_CFI_STARTPROC aarch64_post_cfi_startproc
  
  #undef TARGET_STRICT_ARGUMENT_NAMING
! #define TARGET_STRICT_ARGUMENT_NAMING hook_bool_CUMULATIVE_ARGS_true
  
  #undef TARGET_MODE_EMIT
  #define TARGET_MODE_EMIT aarch64_mode_emit
--- 33248,33255 ----
  #define TARGET_ASM_POST_CFI_STARTPROC aarch64_post_cfi_startproc
  
  #undef TARGET_STRICT_ARGUMENT_NAMING
! #define TARGET_STRICT_ARGUMENT_NAMING \
!   aarch64_variadic_abi_strict_argument_naming
  
  #undef TARGET_MODE_EMIT
  #define TARGET_MODE_EMIT aarch64_mode_emit
diff -Nrcpad gcc-16-20251130/gcc/config/aarch64/aarch64.h gcc-16-20251207/gcc/config/aarch64/aarch64.h
*** gcc-16-20251130/gcc/config/aarch64/aarch64.h	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/config/aarch64/aarch64.h	Sun Dec  7 22:32:07 2025
*************** enum reg_class
*** 945,950 ****
--- 945,955 ----
  /* CPU/ARCH option handling.  */
  #include "config/aarch64/aarch64-opts.h"
  
+ /* Long double is stored in 128 bits by default.  */
+ #ifndef TARGET_LONG_DOUBLE_128
+ #define TARGET_LONG_DOUBLE_128 1
+ #endif
+ 
  /* If there is no CPU defined at configure, use generic as default.  */
  #ifndef TARGET_CPU_DEFAULT
  # define TARGET_CPU_DEFAULT AARCH64_CPU_generic_armv8_a
*************** struct GTY (()) aarch64_frame
*** 1012,1017 ****
--- 1017,1025 ----
       STACK_BOUNDARY.  */
    HOST_WIDE_INT saved_varargs_size;
  
+   /* The same as above except it is the original unaligned stack size.  */
+   HOST_WIDE_INT unaligned_saved_varargs_size;
+ 
    /* The number of bytes between the bottom of the static frame (the bottom
       of the outgoing arguments) and the bottom of the register save area.
       This value is always a multiple of STACK_BOUNDARY.  */
*************** enum arm_pcs
*** 1177,1182 ****
--- 1185,1195 ----
    ARM_PCS_TLSDESC,		/* For targets of tlsdesc calls.  */
    ARM_PCS_PRESERVE_NONE,	/* PCS variant with no call-preserved
  				   registers except X29.  */
+   ARM_PCS_MS_VARIADIC,	/* PCS variant with no call-preserved
+ 			   differently.
+ 			   All composites are treated alike.
+ 			   SIMD and floating-point registers
+ 			   aren't used.  */
    ARM_PCS_UNKNOWN
  };
  
*************** extern GTY(()) tree aarch64_fp16_ptr_typ
*** 1560,1565 ****
--- 1573,1581 ----
     bfloat16_type_node.  Defined in aarch64-builtins.cc.  */
  extern GTY(()) tree aarch64_bf16_ptr_type_node;
  
+ /* Windows Arm64 variadic function call ABI specific va_list type node.  */
+ extern GTY(()) tree ms_va_list_type_node;
+ 
  /* The generic unwind code in libgcc does not initialize the frame pointer.
     So in order to unwind a function using a frame pointer, the very first
     function that is unwound must save the frame pointer.  That way the frame
diff -Nrcpad gcc-16-20251130/gcc/config/aarch64/aarch64.md gcc-16-20251207/gcc/config/aarch64/aarch64.md
*** gcc-16-20251130/gcc/config/aarch64/aarch64.md	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/config/aarch64/aarch64.md	Sun Dec  7 22:32:07 2025
***************
*** 4917,4923 ****
     ;; data
     (match_operand:ALLI 2 "register_operand" "r")
     ;; polynomial without leading 1
!    (match_operand:ALLX 3)]
    ""
    {
      /* If the polynomial is the same as the polynomial of crc32c* instruction,
--- 4917,4923 ----
     ;; data
     (match_operand:ALLI 2 "register_operand" "r")
     ;; polynomial without leading 1
!    (match_operand:ALLX 3 "const_int_operand")]
    ""
    {
      /* If the polynomial is the same as the polynomial of crc32c* instruction,
***************
*** 4956,4962 ****
     ;; data
     (match_operand:ALLI 2 "register_operand" "r")
     ;; polynomial without leading 1
!    (match_operand:ALLX 3)]
    "TARGET_AES && <ALLI:sizen> <= <ALLX:sizen>"
    {
      aarch64_expand_crc_using_pmull (<ALLX:MODE>mode, <ALLI:MODE>mode,
--- 4956,4962 ----
     ;; data
     (match_operand:ALLI 2 "register_operand" "r")
     ;; polynomial without leading 1
!    (match_operand:ALLX 3 "const_int_operand")]
    "TARGET_AES && <ALLI:sizen> <= <ALLX:sizen>"
    {
      aarch64_expand_crc_using_pmull (<ALLX:MODE>mode, <ALLI:MODE>mode,
diff -Nrcpad gcc-16-20251130/gcc/config/aarch64/cygming.h gcc-16-20251207/gcc/config/aarch64/cygming.h
*** gcc-16-20251130/gcc/config/aarch64/cygming.h	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/config/aarch64/cygming.h	Sun Dec  7 22:32:07 2025
*************** still needed for compilation.  */
*** 205,211 ****
  
  #define SUBTARGET_ATTRIBUTE_TABLE \
    { "selectany", 0, 0, true, false, false, false, \
!     mingw_handle_selectany_attribute, NULL }
  
  #undef SUB_TARGET_RECORD_STUB
  #define SUB_TARGET_RECORD_STUB(NAME, DECL) mingw_pe_record_stub((NAME), \
--- 205,214 ----
  
  #define SUBTARGET_ATTRIBUTE_TABLE \
    { "selectany", 0, 0, true, false, false, false, \
!     mingw_handle_selectany_attribute, NULL },     \
!   { "ms_abi", 0, 0, false, true, true, true,      \
!     aarch64_handle_ms_abi_attribute, NULL },      \
!   { "ms_abi va_list", 0, 0, false, false, false, false, NULL, NULL }
  
  #undef SUB_TARGET_RECORD_STUB
  #define SUB_TARGET_RECORD_STUB(NAME, DECL) mingw_pe_record_stub((NAME), \
diff -Nrcpad gcc-16-20251130/gcc/config/aarch64/t-aarch64 gcc-16-20251207/gcc/config/aarch64/t-aarch64
*** gcc-16-20251130/gcc/config/aarch64/t-aarch64	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/config/aarch64/t-aarch64	Sun Dec  7 22:32:07 2025
***************
*** 20,25 ****
--- 20,26 ----
  
  TM_H += $(srcdir)/config/aarch64/aarch64-fusion-pairs.def \
  	$(srcdir)/config/aarch64/aarch64-tuning-flags.def \
+ 	$(srcdir)/config/aarch64/aarch64-tuning-enums.def \
  	$(srcdir)/config/aarch64/aarch64-option-extensions.def \
  	$(srcdir)/config/aarch64/aarch64-cores.def \
  	$(srcdir)/config/aarch64/aarch64-isa-modes.def \
diff -Nrcpad gcc-16-20251130/gcc/config/aarch64/t-aarch64-mingw gcc-16-20251207/gcc/config/aarch64/t-aarch64-mingw
*** gcc-16-20251130/gcc/config/aarch64/t-aarch64-mingw	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/config/aarch64/t-aarch64-mingw	Sun Dec  7 22:32:07 2025
***************
*** 0 ****
--- 1,25 ----
+ # Windows specific ABI for AArch64 architecture.
+ # Copyright (C) 2025 Free Software Foundation, Inc.
+ # Contributed by ARM Ltd.
+ #
+ # 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/>.
+ 
+ aarch64-abi-ms.o: \
+   $(srcdir)/config/aarch64/aarch64-abi-ms.cc \
+   $(TREE_H)
+ 	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
+ 		$(srcdir)/config/aarch64/aarch64-abi-ms.cc
diff -Nrcpad gcc-16-20251130/gcc/config/arm/arm.cc gcc-16-20251207/gcc/config/arm/arm.cc
*** gcc-16-20251130/gcc/config/arm/arm.cc	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/config/arm/arm.cc	Sun Dec  7 22:32:07 2025
*************** arm_canonicalize_comparison (int *code,
*** 5700,5707 ****
    if (mode == VOIDmode)
      mode = GET_MODE (*op1);
  
-   maxval = (HOST_WIDE_INT_1U << (GET_MODE_BITSIZE (mode) - 1)) - 1;
- 
    /* For floating-point comparisons, prefer >= and > over <= and < since
       the former are supported by VSEL on some architectures.  Only do this
       if both operands are registers.  */
--- 5700,5705 ----
*************** arm_canonicalize_comparison (int *code,
*** 5718,5723 ****
--- 5716,5728 ----
        return;
      }
  
+   /* Everything below assumes an integer mode.  */
+   if (GET_MODE_CLASS (mode) != MODE_INT
+       || GET_MODE_BITSIZE (mode) > HOST_BITS_PER_WIDE_INT)
+     return;
+ 
+   maxval = (HOST_WIDE_INT_1U << (GET_MODE_BITSIZE (mode) - 1)) - 1;
+ 
    /* For DImode, we have GE/LT/GEU/LTU comparisons (with cmp/sbc).  In
       ARM mode we can also use cmp/cmpeq for GTU/LEU.  GT/LE must be
       either reversed or (for constant OP1) adjusted to GE/LT.
diff -Nrcpad gcc-16-20251130/gcc/config/arm/constraints.md gcc-16-20251207/gcc/config/arm/constraints.md
*** gcc-16-20251130/gcc/config/arm/constraints.md	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/config/arm/constraints.md	Sun Dec  7 22:32:07 2025
***************
*** 35,42 ****
  ;; in ARM/Thumb-2 state: Da, Db, Dc, Dd, Dn, DN, Dm, Dl, DL, Do, Dv, Dy, Di,
  ;;			 Dj, Ds, Dt, Dp, Dz, Tu, Te
  ;; in Thumb-1 state: Pa, Pb, Pc, Pd, Pe
! ;; in Thumb-2 state: Ha, Pg, Pj, PJ, Ps, Pt, Pu, Pv, Pw, Px, Py, Pz, Ra, Rb,
! ;;		     Rd, Rf, Rg, Ri
  
  ;; The following memory constraints have been used:
  ;; in ARM/Thumb-2 state: Uh, Ut, Uv, Un, Um, Us, Uo, Up, Uf, Ux, Ul, Uz
--- 35,42 ----
  ;; in ARM/Thumb-2 state: Da, Db, Dc, Dd, Dn, DN, Dm, Dl, DL, Do, Dv, Dy, Di,
  ;;			 Dj, Ds, Dt, Dp, Dz, Tu, Te
  ;; in Thumb-1 state: Pa, Pb, Pc, Pd, Pe
! ;; in Thumb-2 state: Ha, Pg, Ph, Pj, PJ, Ps, Pt, Pu, Pv, Pw, Px, Py, Pz, Ra,
! ;;		     Rb, Rd, Rf, Rg, Ri
  
  ;; The following memory constraints have been used:
  ;; in ARM/Thumb-2 state: Uh, Ut, Uv, Un, Um, Us, Uo, Up, Uf, Ux, Ul, Uz
***************
*** 237,242 ****
--- 237,247 ----
    (and (match_code "const_int")
         (match_test "TARGET_THUMB2 && ival >= 1 && ival <= 32")))
  
+ (define_constraint "Ph"
+   "@internal In Thumb-2 state a constant in range 32 to 255"
+   (and (match_code "const_int")
+        (match_test "TARGET_THUMB2 && ival >= 32 && ival <= 255")))
+ 
  (define_constraint "Ps"
    "@internal In Thumb-2 state a constant in the range -255 to +255"
    (and (match_code "const_int")
diff -Nrcpad gcc-16-20251130/gcc/config/arm/mve.md gcc-16-20251207/gcc/config/arm/mve.md
*** gcc-16-20251130/gcc/config/arm/mve.md	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/config/arm/mve.md	Sun Dec  7 22:32:07 2025
***************
*** 4762,4771 ****
  (define_insn_and_split "mve_asrl_imm"
    [(set (match_operand:DI 0 "arm_general_register_operand" "=r,r")
  	  (ashiftrt:DI (match_operand:DI 1 "arm_general_register_operand" "0,r")
! 		       (match_operand:QI 2 "immediate_operand" "Pg,I")))]
    "TARGET_HAVE_MVE"
!   "asrl%?\\t%Q0, %R1, %2"
!   "&& !satisfies_constraint_Pg (operands[2])"
    [(clobber (const_int 0))]
    "
    rtx amount = operands[2];
--- 4762,4771 ----
  (define_insn_and_split "mve_asrl_imm"
    [(set (match_operand:DI 0 "arm_general_register_operand" "=r,r")
  	  (ashiftrt:DI (match_operand:DI 1 "arm_general_register_operand" "0,r")
! 		       (match_operand:QI 2 "immediate_operand" "Pg,Ph")))]
    "TARGET_HAVE_MVE"
!   "asrl%?\\t%Q0, %R0, %2"
!   "&& satisfies_constraint_Ph (operands[2])"
    [(clobber (const_int 0))]
    "
    rtx amount = operands[2];
***************
*** 4781,4810 ****
      }
  
    /* ival < 0 should have already been handled by mve_asrl. */
!   gcc_assert (ival > 32);
  
-   /* Shift amount above immediate range (ival > 32).
-      out_hi gets the sign bit
-      out_lo gets in_hi << (ival - 32) or << 31 if ival >= 64.
-      If ival >= 64, the result is either 0 or -1, depending on the
-      input sign.  */
    rtx in_hi = gen_highpart (SImode, operands[1]);
    rtx out_lo = gen_lowpart (SImode, operands[0]);
    rtx out_hi = gen_highpart (SImode, operands[0]);
  
!   emit_insn (gen_rtx_SET (out_lo,
! 			  gen_rtx_fmt_ee (ASHIFTRT,
! 					  SImode,
! 					  in_hi,
! 					  GEN_INT (MIN (ival - 32,
! 							31)))));
    /* Copy sign bit, which is OK even if out_lo == in_hi.  */
    emit_insn (gen_rtx_SET (out_hi,
  			  gen_rtx_fmt_ee (ASHIFTRT,
  					  SImode,
  					  in_hi,
  					  GEN_INT (31))));
! 	DONE;
    "
    [(set_attr "predicable" "yes,yes")
     (set_attr "length" "4,8")])
--- 4781,4816 ----
      }
  
    /* ival < 0 should have already been handled by mve_asrl. */
!   gcc_assert (ival >= 32);
  
    rtx in_hi = gen_highpart (SImode, operands[1]);
    rtx out_lo = gen_lowpart (SImode, operands[0]);
    rtx out_hi = gen_highpart (SImode, operands[0]);
  
!   if (ival == 32)
!     /* out_hi gets the sign bit
!        out_lo gets in_hi.  */
!     emit_insn (gen_movsi (out_lo, in_hi));
!   else
!     /* Shift amount above immediate range (ival > 32).
!        out_hi gets the sign bit
!        out_lo gets in_hi << (ival - 32) or << 31 if ival >= 64.
!        If ival >= 64, the result is either 0 or -1, depending on the
!        input sign.  */
!     emit_insn (gen_rtx_SET (out_lo,
! 			    gen_rtx_fmt_ee (ASHIFTRT,
! 					    SImode,
! 					    in_hi,
! 					    GEN_INT (MIN (ival - 32,
! 							  31)))));
! 
    /* Copy sign bit, which is OK even if out_lo == in_hi.  */
    emit_insn (gen_rtx_SET (out_hi,
  			  gen_rtx_fmt_ee (ASHIFTRT,
  					  SImode,
  					  in_hi,
  					  GEN_INT (31))));
!   DONE;
    "
    [(set_attr "predicable" "yes,yes")
     (set_attr "length" "4,8")])
***************
*** 4818,4824 ****
  		       (match_dup 2))
  	  (ashift:DI (match_dup 1) (neg:QI (match_dup 2)))))]
    "TARGET_HAVE_MVE"
!   "asrl%?\\t%Q0, %R1, %2"
    [(set_attr "predicable" "yes")])
  
  ;; General pattern for lsll
--- 4824,4830 ----
  		       (match_dup 2))
  	  (ashift:DI (match_dup 1) (neg:QI (match_dup 2)))))]
    "TARGET_HAVE_MVE"
!   "asrl%?\\t%Q0, %R0, %2"
    [(set_attr "predicable" "yes")])
  
  ;; General pattern for lsll
***************
*** 4852,4861 ****
  (define_insn_and_split "mve_lsll_imm"
    [(set (match_operand:DI 0 "arm_general_register_operand" "=r,r")
  	  (ashift:DI (match_operand:DI 1 "arm_general_register_operand" "0,r")
! 		     (match_operand:QI 2 "immediate_operand" "Pg,I")))]
    "TARGET_HAVE_MVE"
!   "lsll%?\\t%Q0, %R1, %2"
!   "&& !satisfies_constraint_Pg (operands[2])"
    [(clobber (const_int 0))]
    "
    rtx amount = operands[2];
--- 4858,4867 ----
  (define_insn_and_split "mve_lsll_imm"
    [(set (match_operand:DI 0 "arm_general_register_operand" "=r,r")
  	  (ashift:DI (match_operand:DI 1 "arm_general_register_operand" "0,r")
! 		     (match_operand:QI 2 "immediate_operand" "Pg,Ph")))]
    "TARGET_HAVE_MVE"
!   "lsll%?\\t%Q0, %R0, %2"
!   "&& satisfies_constraint_Ph (operands[2])"
    [(clobber (const_int 0))]
    "
    rtx amount = operands[2];
***************
*** 4878,4894 ****
      }
  
    /* ival < 0 should have already been handled by mve_asrl. */
!   gcc_assert (ival > 32);
  
-   /* Shift amount above immediate range: 32 < ival < 64.  */
    rtx in_lo = gen_lowpart (SImode, operands[1]);
    rtx out_lo = gen_lowpart (SImode, operands[0]);
    rtx out_hi = gen_highpart (SImode, operands[0]);
!   emit_insn (gen_rtx_SET (out_hi,
! 			  gen_rtx_fmt_ee (ASHIFT,
! 					  SImode,
! 					  in_lo,
! 					  GEN_INT (ival - 32))));
    emit_insn (gen_rtx_SET (out_lo, const0_rtx));
    DONE;
    "
--- 4884,4907 ----
      }
  
    /* ival < 0 should have already been handled by mve_asrl. */
!   gcc_assert (ival >= 32);
  
    rtx in_lo = gen_lowpart (SImode, operands[1]);
    rtx out_lo = gen_lowpart (SImode, operands[0]);
    rtx out_hi = gen_highpart (SImode, operands[0]);
! 
!   if (ival == 32)
!     /* Shift by 32 is just a move.  */
!     emit_insn (gen_movsi (out_hi, in_lo));
!   else
!     /* Shift amount above immediate range: 32 < ival < 64.  */
!     emit_insn (gen_rtx_SET (out_hi,
! 			    gen_rtx_fmt_ee (ASHIFT,
! 					    SImode,
! 					    in_lo,
! 					    GEN_INT (ival - 32))));
! 
!   /* Clear low 32 bits.  */
    emit_insn (gen_rtx_SET (out_lo, const0_rtx));
    DONE;
    "
***************
*** 4904,4910 ****
  		     (match_dup 2))
  	  (lshiftrt:DI (match_dup 1) (neg:QI (match_dup 2)))))]
    "TARGET_HAVE_MVE"
!   "lsll%?\\t%Q0, %R1, %2"
    [(set_attr "predicable" "yes")])
  
  (define_insn "mve_lsrl"
--- 4917,4923 ----
  		     (match_dup 2))
  	  (lshiftrt:DI (match_dup 1) (neg:QI (match_dup 2)))))]
    "TARGET_HAVE_MVE"
!   "lsll%?\\t%Q0, %R0, %2"
    [(set_attr "predicable" "yes")])
  
  (define_insn "mve_lsrl"
***************
*** 4912,4916 ****
  	(lshiftrt:DI (match_operand:DI 1 "arm_general_register_operand" "0")
  		     (match_operand:SI 2 "long_shift_imm" "Pg")))]
    "TARGET_HAVE_MVE"
!   "lsrl%?\\t%Q0, %R1, %2"
    [(set_attr "predicable" "yes")])
--- 4925,4929 ----
  	(lshiftrt:DI (match_operand:DI 1 "arm_general_register_operand" "0")
  		     (match_operand:SI 2 "long_shift_imm" "Pg")))]
    "TARGET_HAVE_MVE"
!   "lsrl%?\\t%Q0, %R0, %2"
    [(set_attr "predicable" "yes")])
diff -Nrcpad gcc-16-20251130/gcc/config/darwin-c.cc gcc-16-20251207/gcc/config/darwin-c.cc
*** gcc-16-20251130/gcc/config/darwin-c.cc	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/config/darwin-c.cc	Sun Dec  7 22:32:07 2025
*************** find_subframework_header (cpp_reader *pf
*** 537,553 ****
    const char *n;
  
    for (b = cpp_get_buffer (pfile);
!        b && cpp_get_file (b) && cpp_get_path (cpp_get_file (b));
         b = cpp_get_prev (b))
      {
!       n = find_subframework_file (fname, cpp_get_path (cpp_get_file (b)));
        if (n)
  	{
  	  /* Logically, the place where we found the subframework is
  	     the place where we found the Framework that contains the
  	     subframework.  This is useful for tracking wether or not
  	     we are in a system header.  */
! 	  *dirp = cpp_get_dir (cpp_get_file (b));
  	  return n;
  	}
      }
--- 537,554 ----
    const char *n;
  
    for (b = cpp_get_buffer (pfile);
!        b && cpp_get_file (b) && _cpp_get_file_path (cpp_get_file (b));
         b = cpp_get_prev (b))
      {
!       n = find_subframework_file (fname,
! 				  _cpp_get_file_path (cpp_get_file (b)));
        if (n)
  	{
  	  /* Logically, the place where we found the subframework is
  	     the place where we found the Framework that contains the
  	     subframework.  This is useful for tracking wether or not
  	     we are in a system header.  */
! 	  *dirp = _cpp_get_file_dir (cpp_get_file (b));
  	  return n;
  	}
      }
diff -Nrcpad gcc-16-20251130/gcc/config/i386/i386-expand.cc gcc-16-20251207/gcc/config/i386/i386-expand.cc
*** gcc-16-20251130/gcc/config/i386/i386-expand.cc	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/config/i386/i386-expand.cc	Sun Dec  7 22:32:07 2025
*************** ix86_gen_ccmp_next (rtx_insn **prep_seq,
*** 27125,27141 ****
    struct expand_operand ops[5];
    int dfv;
  
!   push_to_sequence (*prep_seq);
!   expand_operands (treeop0, treeop1, NULL_RTX, &op0, &op1, EXPAND_NORMAL);
! 
!   cmp_mode = op_mode = GET_MODE (op0);
  
    if (!(op_mode == DImode || op_mode == SImode || op_mode == HImode
  	|| op_mode == QImode))
!     {
!       end_sequence ();
!       return NULL_RTX;
!     }
  
    icode = code_for_ccmp (op_mode);
  
--- 27125,27139 ----
    struct expand_operand ops[5];
    int dfv;
  
!   /* Exit early for non integer modes to avoid O(n^2) part of expand_operands. */
!   cmp_mode = op_mode = TYPE_MODE (TREE_TYPE (treeop0));
  
    if (!(op_mode == DImode || op_mode == SImode || op_mode == HImode
  	|| op_mode == QImode))
!     return NULL_RTX;
! 
!   push_to_sequence (*prep_seq);
!   expand_operands (treeop0, treeop1, NULL_RTX, &op0, &op1, EXPAND_NORMAL);
  
    icode = code_for_ccmp (op_mode);
  
diff -Nrcpad gcc-16-20251130/gcc/config/i386/i386-features.cc gcc-16-20251207/gcc/config/i386/i386-features.cc
*** gcc-16-20251130/gcc/config/i386/i386-features.cc	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/config/i386/i386-features.cc	Sun Dec  7 22:32:07 2025
*************** ix86_emit_tls_call (rtx tls_set, x86_cse
*** 3947,3958 ****
--- 3947,3966 ----
  		 (note 2 3 5 2 NOTE_INSN_FUNCTION_BEG)
  		 (debug_insn 5 2 16 2 (debug_marker) "x.c":6:3 -1 (nil))
  
+ 		 or a basic block with only deleted instructions:
+ 
+ 		 (code_label 348 23 349 45 3 (nil) [0 uses])
+ 		 (note 349 348 436 45 [bb 45] NOTE_INSN_BASIC_BLOCK)
+ 		 (note 436 349 362 45 NOTE_INSN_DELETED)
+ 
  	       */
  	      gcc_assert (DEBUG_INSN_P (insn)
  			  || (NOTE_P (insn)
  			      && ((NOTE_KIND (insn)
  				   == NOTE_INSN_FUNCTION_BEG)
  				  || (NOTE_KIND (insn)
+ 				      == NOTE_INSN_DELETED)
+ 				  || (NOTE_KIND (insn)
  				      == NOTE_INSN_BASIC_BLOCK))));
  	      insn = NULL;
  	      break;
diff -Nrcpad gcc-16-20251130/gcc/config/i386/i386.cc gcc-16-20251207/gcc/config/i386/i386.cc
*** gcc-16-20251130/gcc/config/i386/i386.cc	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/config/i386/i386.cc	Sun Dec  7 22:32:07 2025
*************** x86_print_call_or_nop (FILE *file, const
*** 23767,23775 ****
  		       const char *label)
  {
    if (flag_nop_mcount || !strcmp (target, "nop"))
!     /* 5 byte nop: nopl 0(%[re]ax,%[re]ax,1) */
!     fprintf (file, "%s" ASM_BYTE "0x0f, 0x1f, 0x44, 0x00, 0x00\n",
! 	     label);
    else if (!TARGET_PECOFF && flag_pic)
      {
        gcc_assert (flag_plt);
--- 23767,23781 ----
  		       const char *label)
  {
    if (flag_nop_mcount || !strcmp (target, "nop"))
!     {
!       if (TARGET_16BIT)
! 	/* 3 byte no-op: lea 0(%si), %si */
! 	fprintf (file, "%s" ASM_BYTE "0x8d, 0x74, 0x00\n", label);
!       else
! 	/* 5 byte nop: nopl 0(%[re]ax,%[re]ax,1) */
! 	fprintf (file, "%s" ASM_BYTE "0x0f, 0x1f, 0x44, 0x00, 0x00\n",
! 		 label);
!     }
    else if (!TARGET_PECOFF && flag_pic)
      {
        gcc_assert (flag_plt);
diff -Nrcpad gcc-16-20251130/gcc/config/i386/i386.md gcc-16-20251207/gcc/config/i386/i386.md
*** gcc-16-20251130/gcc/config/i386/i386.md	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/config/i386/i386.md	Sun Dec  7 22:32:07 2025
***************
*** 29711,29717 ****
    [(match_operand:SI 0 "register_operand")
     (match_operand:SI 1 "register_operand")
     (match_operand:SWI124 2 "nonimmediate_operand")
!    (match_operand:SI 3)]
    "TARGET_CRC32"
  {
    /* crc32 uses iSCSI polynomial */
--- 29711,29717 ----
    [(match_operand:SI 0 "register_operand")
     (match_operand:SI 1 "register_operand")
     (match_operand:SWI124 2 "nonimmediate_operand")
!    (match_operand:SI 3 "const_int_operand")]
    "TARGET_CRC32"
  {
    /* crc32 uses iSCSI polynomial */
diff -Nrcpad gcc-16-20251130/gcc/config/i386/predicates.md gcc-16-20251207/gcc/config/i386/predicates.md
*** gcc-16-20251130/gcc/config/i386/predicates.md	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/config/i386/predicates.md	Sun Dec  7 22:32:07 2025
***************
*** 1584,1589 ****
--- 1584,1592 ----
  (define_predicate "add_comparison_operator"
    (match_code "geu,ltu"))
  
+ (define_predicate "ieee_maxmin_comparison_operator"
+   (match_code "lt,gt"))
+ 
  ;; Return true if OP is a valid comparison operator in valid mode.
  (define_predicate "ix86_comparison_operator"
    (match_operand 0 "comparison_operator")
diff -Nrcpad gcc-16-20251130/gcc/config/i386/sse.md gcc-16-20251207/gcc/config/i386/sse.md
*** gcc-16-20251130/gcc/config/i386/sse.md	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/config/i386/sse.md	Sun Dec  7 22:32:07 2025
***************
*** 3338,3347 ****
    [(set (match_operand:VFH 0 "register_operand")
  	(vec_merge:VFH
  	  (match_operand:VFH 1 "nonimmediate_operand")
! 	  (match_operand:VFH 2 "nonimmediate_operand")
  	  (unspec:<avx512fmaskmode>
  	    [(match_operand:VFH 3 "nonimmediate_operand")
! 	     (match_operand:VFH 4 "nonimmediate_operand")
  	     (match_operand:SI 5 "const_0_to_31_operand")]
  	     UNSPEC_PCMP)))]
    "TARGET_SSE && ix86_pre_reload_split ()
--- 3338,3347 ----
    [(set (match_operand:VFH 0 "register_operand")
  	(vec_merge:VFH
  	  (match_operand:VFH 1 "nonimmediate_operand")
! 	  (match_operand:VFH 2 "general_operand")
  	  (unspec:<avx512fmaskmode>
  	    [(match_operand:VFH 3 "nonimmediate_operand")
! 	     (match_operand:VFH 4 "general_operand")
  	     (match_operand:SI 5 "const_0_to_31_operand")]
  	     UNSPEC_PCMP)))]
    "TARGET_SSE && ix86_pre_reload_split ()
***************
*** 3352,3370 ****
     && (INTVAL (operands[5]) == 1 || INTVAL (operands[5]) == 14)"
     "#"
     "&& 1"
!    [(const_int 0)]
   {
     int u = UNSPEC_IEEE_MIN;
     if ((INTVAL (operands[5]) == 1 && rtx_equal_p (operands[1], operands[4]))
  	|| (INTVAL (operands[5]) == 14 && rtx_equal_p (operands[1], operands[3])))
       u = UNSPEC_IEEE_MAX;
  
     if (MEM_P (operands[1]))
       operands[1] = force_reg (<MODE>mode, operands[1]);
!    rtvec v = gen_rtvec (2, operands[1], operands[2]);
!    rtx tmp = gen_rtx_UNSPEC (<MODE>mode, v, u);
!    emit_move_insn (operands[0], tmp);
!    DONE;
   })
  
  (define_insn_and_split "*minmax<mode>3_2"
--- 3352,3372 ----
     && (INTVAL (operands[5]) == 1 || INTVAL (operands[5]) == 14)"
     "#"
     "&& 1"
!    [(set (match_dup 0) (match_dup 6))]
   {
     int u = UNSPEC_IEEE_MIN;
+    rtx tmp = operands[2];
     if ((INTVAL (operands[5]) == 1 && rtx_equal_p (operands[1], operands[4]))
  	|| (INTVAL (operands[5]) == 14 && rtx_equal_p (operands[1], operands[3])))
       u = UNSPEC_IEEE_MAX;
  
     if (MEM_P (operands[1]))
       operands[1] = force_reg (<MODE>mode, operands[1]);
! 
!   if (immediate_operand (operands[2], <MODE>mode))
!     tmp = force_reg (<MODE>mode, operands[2]);
!    rtvec v = gen_rtvec (2, operands[1], tmp);
!    operands[6] = gen_rtx_UNSPEC (<MODE>mode, v, u);
   })
  
  (define_insn_and_split "*minmax<mode>3_2"
***************
*** 3383,3389 ****
  	   && rtx_equal_p (operands[2], operands[3])))"
     "#"
     "&& 1"
!    [(const_int 0)]
   {
     int u = UNSPEC_IEEE_MIN;
     if (rtx_equal_p (operands[1], operands[3]))
--- 3385,3391 ----
  	   && rtx_equal_p (operands[2], operands[3])))"
     "#"
     "&& 1"
!    [(set (match_dup 0) (match_dup 5))]
   {
     int u = UNSPEC_IEEE_MIN;
     if (rtx_equal_p (operands[1], operands[3]))
***************
*** 3392,3400 ****
     if (MEM_P (operands[2]))
       operands[2] = force_reg (<MODE>mode, operands[2]);
     rtvec v = gen_rtvec (2, operands[2], operands[1]);
!    rtx tmp = gen_rtx_UNSPEC (<MODE>mode, v, u);
!    emit_move_insn (operands[0], tmp);
!    DONE;
   })
  
  ;; These versions of the min/max patterns implement exactly the operations
--- 3394,3446 ----
     if (MEM_P (operands[2]))
       operands[2] = force_reg (<MODE>mode, operands[2]);
     rtvec v = gen_rtvec (2, operands[2], operands[1]);
!    operands[5] = gen_rtx_UNSPEC (<MODE>mode, v, u);
!  })
! 
! 
! (define_insn_and_split "*minmax<mode>3_3"
!   [(set (match_operand:VF_128_256 0 "register_operand")
! 	(and:VF_128_256
! 	  (not:VF_128_256
! 	    (match_operator:VF_128_256 1 "ieee_maxmin_comparison_operator"
! 	     [(match_operand:VF_128_256 2 "nonimmediate_operand")
! 	      (match_operand:VF_128_256 3 "const0_operand")]))
! 	  (match_operand:VF_128_256 4 "nonimmediate_operand")))]
!   "TARGET_SSE && ix86_pre_reload_split ()
!    && rtx_equal_p (operands[2], operands[4])"
!    "#"
!    "&& 1"
!    [(set (match_dup 0) (match_dup 5))]
!  {
!    int u = UNSPEC_IEEE_MIN;
!    if (GET_CODE (operands[1]) == LT)
!      u = UNSPEC_IEEE_MAX;
! 
!    rtx tmp = force_reg (<MODE>mode, operands[3]);
!    rtvec v = gen_rtvec (2, tmp, operands[2]);
!    operands[5] = gen_rtx_UNSPEC (<MODE>mode, v, u);
!  })
! 
! (define_insn_and_split "*minmax<mode>3_4"
!   [(set (match_operand:VF_128_256 0 "register_operand")
! 	(and:VF_128_256
! 	  (match_operator:VF_128_256 1 "ieee_maxmin_comparison_operator"
! 	    [(match_operand:VF_128_256 2 "nonimmediate_operand")
! 	     (match_operand:VF_128_256 3 "const0_operand")])
! 	  (match_operand:VF_128_256 4 "nonimmediate_operand")))]
!   "TARGET_SSE && ix86_pre_reload_split ()
!    && rtx_equal_p (operands[2], operands[4])"
!    "#"
!    "&& 1"
!    [(set (match_dup 0) (match_dup 5))]
!  {
!    int u = UNSPEC_IEEE_MIN;
!    if (GET_CODE (operands[1]) == GT)
!      u = UNSPEC_IEEE_MAX;
! 
!    rtx tmp = force_reg (<MODE>mode, operands[3]);
!    rtvec v = gen_rtvec (2, operands[2], tmp);
!    operands[5] = gen_rtx_UNSPEC (<MODE>mode, v, u);
   })
  
  ;; These versions of the min/max patterns implement exactly the operations
diff -Nrcpad gcc-16-20251130/gcc/config/mingw/winnt.cc gcc-16-20251207/gcc/config/mingw/winnt.cc
*** gcc-16-20251130/gcc/config/mingw/winnt.cc	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/config/mingw/winnt.cc	Sun Dec  7 22:32:07 2025
*************** mingw_pe_encode_section_info (tree decl,
*** 339,344 ****
--- 339,366 ----
    SYMBOL_REF_FLAGS (symbol) = flags;
  }
  
+ /* Handle a "ms_abi" attribute; arguments as in struct
+    attribute_spec.handler.  */
+ 
+ tree
+ aarch64_handle_ms_abi_attribute (tree *node, tree name, tree, int,
+ 						bool *no_add_attrs)
+ {
+   if (TREE_CODE (*node) != FUNCTION_TYPE
+       && TREE_CODE (*node) != METHOD_TYPE
+       && TREE_CODE (*node) != FIELD_DECL
+       && TREE_CODE (*node) != TYPE_DECL)
+     {
+       warning (OPT_Wattributes, "%qE attribute only applies to functions",
+ 	       name);
+       *no_add_attrs = true;
+ 
+       return NULL_TREE;
+     }
+ 
+   return NULL_TREE;
+ }
+ 
  
  bool
  i386_pe_binds_local_p (const_tree exp)
diff -Nrcpad gcc-16-20251130/gcc/config/mingw/winnt.h gcc-16-20251207/gcc/config/mingw/winnt.h
*** gcc-16-20251130/gcc/config/mingw/winnt.h	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/config/mingw/winnt.h	Sun Dec  7 22:32:07 2025
*************** http://www.gnu.org/licenses/.  */
*** 20,25 ****
--- 20,26 ----
  
  #ifndef USED_FOR_TARGET
  
+ extern tree aarch64_handle_ms_abi_attribute (tree *, tree, tree, int, bool *);
  extern tree mingw_handle_selectany_attribute (tree *, tree, tree, int, bool *);
  
  extern void mingw_pe_asm_named_section (const char *, unsigned int, tree);
diff -Nrcpad gcc-16-20251130/gcc/config/mips/mips-cpus.def gcc-16-20251207/gcc/config/mips/mips-cpus.def
*** gcc-16-20251130/gcc/config/mips/mips-cpus.def	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/config/mips/mips-cpus.def	Sun Dec  7 22:32:07 2025
*************** MIPS_CPU ("r3900", PROCESSOR_R3900, MIPS
*** 62,67 ****
--- 62,68 ----
  
  /* MIPS II processors.  */
  MIPS_CPU ("r6000", PROCESSOR_R6000, MIPS_ISA_MIPS2, 0)
+ MIPS_CPU ("allegrex", PROCESSOR_ALLEGREX, MIPS_ISA_MIPS2, 0)
  
  /* MIPS III processors.  */
  MIPS_CPU ("r4000", PROCESSOR_R4000, MIPS_ISA_MIPS3, 0)
diff -Nrcpad gcc-16-20251130/gcc/config/mips/mips-tables.opt gcc-16-20251207/gcc/config/mips/mips-tables.opt
*** gcc-16-20251130/gcc/config/mips/mips-tables.opt	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/config/mips/mips-tables.opt	Sun Dec  7 22:32:07 2025
*************** EnumValue
*** 160,713 ****
  Enum(mips_arch_opt_value) String(6k) Value(17)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r4000) Value(18) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r4k) Value(18)
  
  EnumValue
! Enum(mips_arch_opt_value) String(4000) Value(18)
  
  EnumValue
! Enum(mips_arch_opt_value) String(4k) Value(18)
  
  EnumValue
! Enum(mips_arch_opt_value) String(vr4100) Value(19) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(4100) Value(19)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r4100) Value(19)
  
  EnumValue
! Enum(mips_arch_opt_value) String(vr4111) Value(20) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(4111) Value(20)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r4111) Value(20)
  
  EnumValue
! Enum(mips_arch_opt_value) String(vr4120) Value(21) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(4120) Value(21)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r4120) Value(21)
  
  EnumValue
! Enum(mips_arch_opt_value) String(vr4130) Value(22) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(4130) Value(22)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r4130) Value(22)
  
  EnumValue
! Enum(mips_arch_opt_value) String(vr4300) Value(23) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(4300) Value(23)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r4300) Value(23)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r4400) Value(24) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(4400) Value(24)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r4600) Value(25) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(4600) Value(25)
  
  EnumValue
! Enum(mips_arch_opt_value) String(orion) Value(26) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r4650) Value(27) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(4650) Value(27)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r4700) Value(28) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(4700) Value(28)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r5900) Value(29) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(5900) Value(29)
  
  EnumValue
! Enum(mips_arch_opt_value) String(loongson2e) Value(30) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(loongson2f) Value(31) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r8000) Value(32) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r8k) Value(32)
  
  EnumValue
! Enum(mips_arch_opt_value) String(8000) Value(32)
  
  EnumValue
! Enum(mips_arch_opt_value) String(8k) Value(32)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r10000) Value(33) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r10k) Value(33)
  
  EnumValue
! Enum(mips_arch_opt_value) String(10000) Value(33)
  
  EnumValue
! Enum(mips_arch_opt_value) String(10k) Value(33)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r12000) Value(34) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r12k) Value(34)
  
  EnumValue
! Enum(mips_arch_opt_value) String(12000) Value(34)
  
  EnumValue
! Enum(mips_arch_opt_value) String(12k) Value(34)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r14000) Value(35) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r14k) Value(35)
  
  EnumValue
! Enum(mips_arch_opt_value) String(14000) Value(35)
  
  EnumValue
! Enum(mips_arch_opt_value) String(14k) Value(35)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r16000) Value(36) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r16k) Value(36)
  
  EnumValue
! Enum(mips_arch_opt_value) String(16000) Value(36)
  
  EnumValue
! Enum(mips_arch_opt_value) String(16k) Value(36)
  
  EnumValue
! Enum(mips_arch_opt_value) String(vr5000) Value(37) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(vr5k) Value(37)
  
  EnumValue
! Enum(mips_arch_opt_value) String(5000) Value(37)
  
  EnumValue
! Enum(mips_arch_opt_value) String(5k) Value(37)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r5000) Value(37)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r5k) Value(37)
  
  EnumValue
! Enum(mips_arch_opt_value) String(vr5400) Value(38) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(5400) Value(38)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r5400) Value(38)
  
  EnumValue
! Enum(mips_arch_opt_value) String(vr5500) Value(39) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(5500) Value(39)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r5500) Value(39)
  
  EnumValue
! Enum(mips_arch_opt_value) String(rm7000) Value(40) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(rm7k) Value(40)
  
  EnumValue
! Enum(mips_arch_opt_value) String(7000) Value(40)
  
  EnumValue
! Enum(mips_arch_opt_value) String(7k) Value(40)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r7000) Value(40)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r7k) Value(40)
  
  EnumValue
! Enum(mips_arch_opt_value) String(rm9000) Value(41) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(rm9k) Value(41)
  
  EnumValue
! Enum(mips_arch_opt_value) String(9000) Value(41)
  
  EnumValue
! Enum(mips_arch_opt_value) String(9k) Value(41)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r9000) Value(41)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r9k) Value(41)
  
  EnumValue
! Enum(mips_arch_opt_value) String(4kc) Value(42) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r4kc) Value(42)
  
  EnumValue
! Enum(mips_arch_opt_value) String(4km) Value(43) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r4km) Value(43)
  
  EnumValue
! Enum(mips_arch_opt_value) String(4kp) Value(44) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r4kp) Value(44)
  
  EnumValue
! Enum(mips_arch_opt_value) String(4ksc) Value(45) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r4ksc) Value(45)
  
  EnumValue
! Enum(mips_arch_opt_value) String(m4k) Value(46) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(m14kc) Value(47) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(m14k) Value(48) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(m14ke) Value(49) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(m14kec) Value(50) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(4kec) Value(51) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r4kec) Value(51)
  
  EnumValue
! Enum(mips_arch_opt_value) String(4kem) Value(52) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r4kem) Value(52)
  
  EnumValue
! Enum(mips_arch_opt_value) String(4kep) Value(53) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r4kep) Value(53)
  
  EnumValue
! Enum(mips_arch_opt_value) String(4ksd) Value(54) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r4ksd) Value(54)
  
  EnumValue
! Enum(mips_arch_opt_value) String(24kc) Value(55) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r24kc) Value(55)
  
  EnumValue
! Enum(mips_arch_opt_value) String(24kf2_1) Value(56) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r24kf2_1) Value(56)
  
  EnumValue
! Enum(mips_arch_opt_value) String(24kf) Value(57) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r24kf) Value(57)
  
  EnumValue
! Enum(mips_arch_opt_value) String(24kf1_1) Value(58) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r24kf1_1) Value(58)
  
  EnumValue
! Enum(mips_arch_opt_value) String(24kfx) Value(59) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r24kfx) Value(59)
  
  EnumValue
! Enum(mips_arch_opt_value) String(24kx) Value(60) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r24kx) Value(60)
  
  EnumValue
! Enum(mips_arch_opt_value) String(24kec) Value(61) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r24kec) Value(61)
  
  EnumValue
! Enum(mips_arch_opt_value) String(24kef2_1) Value(62) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r24kef2_1) Value(62)
  
  EnumValue
! Enum(mips_arch_opt_value) String(24kef) Value(63) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r24kef) Value(63)
  
  EnumValue
! Enum(mips_arch_opt_value) String(24kef1_1) Value(64) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r24kef1_1) Value(64)
  
  EnumValue
! Enum(mips_arch_opt_value) String(24kefx) Value(65) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r24kefx) Value(65)
  
  EnumValue
! Enum(mips_arch_opt_value) String(24kex) Value(66) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r24kex) Value(66)
  
  EnumValue
! Enum(mips_arch_opt_value) String(34kc) Value(67) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r34kc) Value(67)
  
  EnumValue
! Enum(mips_arch_opt_value) String(34kf2_1) Value(68) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r34kf2_1) Value(68)
  
  EnumValue
! Enum(mips_arch_opt_value) String(34kf) Value(69) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r34kf) Value(69)
  
  EnumValue
! Enum(mips_arch_opt_value) String(34kf1_1) Value(70) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r34kf1_1) Value(70)
  
  EnumValue
! Enum(mips_arch_opt_value) String(34kfx) Value(71) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r34kfx) Value(71)
  
  EnumValue
! Enum(mips_arch_opt_value) String(34kx) Value(72) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r34kx) Value(72)
  
  EnumValue
! Enum(mips_arch_opt_value) String(34kn) Value(73) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r34kn) Value(73)
  
  EnumValue
! Enum(mips_arch_opt_value) String(74kc) Value(74) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r74kc) Value(74)
  
  EnumValue
! Enum(mips_arch_opt_value) String(74kf2_1) Value(75) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r74kf2_1) Value(75)
  
  EnumValue
! Enum(mips_arch_opt_value) String(74kf) Value(76) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r74kf) Value(76)
  
  EnumValue
! Enum(mips_arch_opt_value) String(74kf1_1) Value(77) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r74kf1_1) Value(77)
  
  EnumValue
! Enum(mips_arch_opt_value) String(74kfx) Value(78) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r74kfx) Value(78)
  
  EnumValue
! Enum(mips_arch_opt_value) String(74kx) Value(79) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r74kx) Value(79)
  
  EnumValue
! Enum(mips_arch_opt_value) String(74kf3_2) Value(80) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r74kf3_2) Value(80)
  
  EnumValue
! Enum(mips_arch_opt_value) String(1004kc) Value(81) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r1004kc) Value(81)
  
  EnumValue
! Enum(mips_arch_opt_value) String(1004kf2_1) Value(82) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r1004kf2_1) Value(82)
  
  EnumValue
! Enum(mips_arch_opt_value) String(1004kf) Value(83) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r1004kf) Value(83)
  
  EnumValue
! Enum(mips_arch_opt_value) String(1004kf1_1) Value(84) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r1004kf1_1) Value(84)
  
  EnumValue
! Enum(mips_arch_opt_value) String(interaptiv) Value(85) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(p5600) Value(86) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(m5100) Value(87) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(m5101) Value(88) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(5kc) Value(89) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r5kc) Value(89)
  
  EnumValue
! Enum(mips_arch_opt_value) String(5kf) Value(90) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r5kf) Value(90)
  
  EnumValue
! Enum(mips_arch_opt_value) String(20kc) Value(91) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r20kc) Value(91)
  
  EnumValue
! Enum(mips_arch_opt_value) String(sb1) Value(92) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(sb1a) Value(93) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(sr71000) Value(94) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(sr71k) Value(94)
  
  EnumValue
! Enum(mips_arch_opt_value) String(xlr) Value(95) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(loongson3a) Value(96) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(gs464) Value(97) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(gs464e) Value(98) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(gs264e) Value(99) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(octeon) Value(100) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(octeon+) Value(101) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(octeon2) Value(102) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(octeon3) Value(103) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(xlp) Value(104) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(i6400) Value(105) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(i6500) Value(106) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(p6600) Value(107) Canonical
  
--- 160,716 ----
  Enum(mips_arch_opt_value) String(6k) Value(17)
  
  EnumValue
! Enum(mips_arch_opt_value) String(allegrex) Value(18) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r4000) Value(19) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r4k) Value(19)
  
  EnumValue
! Enum(mips_arch_opt_value) String(4000) Value(19)
  
  EnumValue
! Enum(mips_arch_opt_value) String(4k) Value(19)
  
  EnumValue
! Enum(mips_arch_opt_value) String(vr4100) Value(20) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(4100) Value(20)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r4100) Value(20)
  
  EnumValue
! Enum(mips_arch_opt_value) String(vr4111) Value(21) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(4111) Value(21)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r4111) Value(21)
  
  EnumValue
! Enum(mips_arch_opt_value) String(vr4120) Value(22) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(4120) Value(22)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r4120) Value(22)
  
  EnumValue
! Enum(mips_arch_opt_value) String(vr4130) Value(23) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(4130) Value(23)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r4130) Value(23)
  
  EnumValue
! Enum(mips_arch_opt_value) String(vr4300) Value(24) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(4300) Value(24)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r4300) Value(24)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r4400) Value(25) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(4400) Value(25)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r4600) Value(26) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(4600) Value(26)
  
  EnumValue
! Enum(mips_arch_opt_value) String(orion) Value(27) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r4650) Value(28) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(4650) Value(28)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r4700) Value(29) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(4700) Value(29)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r5900) Value(30) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(5900) Value(30)
  
  EnumValue
! Enum(mips_arch_opt_value) String(loongson2e) Value(31) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(loongson2f) Value(32) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r8000) Value(33) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r8k) Value(33)
  
  EnumValue
! Enum(mips_arch_opt_value) String(8000) Value(33)
  
  EnumValue
! Enum(mips_arch_opt_value) String(8k) Value(33)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r10000) Value(34) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r10k) Value(34)
  
  EnumValue
! Enum(mips_arch_opt_value) String(10000) Value(34)
  
  EnumValue
! Enum(mips_arch_opt_value) String(10k) Value(34)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r12000) Value(35) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r12k) Value(35)
  
  EnumValue
! Enum(mips_arch_opt_value) String(12000) Value(35)
  
  EnumValue
! Enum(mips_arch_opt_value) String(12k) Value(35)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r14000) Value(36) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r14k) Value(36)
  
  EnumValue
! Enum(mips_arch_opt_value) String(14000) Value(36)
  
  EnumValue
! Enum(mips_arch_opt_value) String(14k) Value(36)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r16000) Value(37) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r16k) Value(37)
  
  EnumValue
! Enum(mips_arch_opt_value) String(16000) Value(37)
  
  EnumValue
! Enum(mips_arch_opt_value) String(16k) Value(37)
  
  EnumValue
! Enum(mips_arch_opt_value) String(vr5000) Value(38) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(vr5k) Value(38)
  
  EnumValue
! Enum(mips_arch_opt_value) String(5000) Value(38)
  
  EnumValue
! Enum(mips_arch_opt_value) String(5k) Value(38)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r5000) Value(38)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r5k) Value(38)
  
  EnumValue
! Enum(mips_arch_opt_value) String(vr5400) Value(39) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(5400) Value(39)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r5400) Value(39)
  
  EnumValue
! Enum(mips_arch_opt_value) String(vr5500) Value(40) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(5500) Value(40)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r5500) Value(40)
  
  EnumValue
! Enum(mips_arch_opt_value) String(rm7000) Value(41) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(rm7k) Value(41)
  
  EnumValue
! Enum(mips_arch_opt_value) String(7000) Value(41)
  
  EnumValue
! Enum(mips_arch_opt_value) String(7k) Value(41)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r7000) Value(41)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r7k) Value(41)
  
  EnumValue
! Enum(mips_arch_opt_value) String(rm9000) Value(42) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(rm9k) Value(42)
  
  EnumValue
! Enum(mips_arch_opt_value) String(9000) Value(42)
  
  EnumValue
! Enum(mips_arch_opt_value) String(9k) Value(42)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r9000) Value(42)
  
  EnumValue
! Enum(mips_arch_opt_value) String(r9k) Value(42)
  
  EnumValue
! Enum(mips_arch_opt_value) String(4kc) Value(43) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r4kc) Value(43)
  
  EnumValue
! Enum(mips_arch_opt_value) String(4km) Value(44) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r4km) Value(44)
  
  EnumValue
! Enum(mips_arch_opt_value) String(4kp) Value(45) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r4kp) Value(45)
  
  EnumValue
! Enum(mips_arch_opt_value) String(4ksc) Value(46) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r4ksc) Value(46)
  
  EnumValue
! Enum(mips_arch_opt_value) String(m4k) Value(47) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(m14kc) Value(48) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(m14k) Value(49) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(m14ke) Value(50) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(m14kec) Value(51) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(4kec) Value(52) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r4kec) Value(52)
  
  EnumValue
! Enum(mips_arch_opt_value) String(4kem) Value(53) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r4kem) Value(53)
  
  EnumValue
! Enum(mips_arch_opt_value) String(4kep) Value(54) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r4kep) Value(54)
  
  EnumValue
! Enum(mips_arch_opt_value) String(4ksd) Value(55) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r4ksd) Value(55)
  
  EnumValue
! Enum(mips_arch_opt_value) String(24kc) Value(56) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r24kc) Value(56)
  
  EnumValue
! Enum(mips_arch_opt_value) String(24kf2_1) Value(57) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r24kf2_1) Value(57)
  
  EnumValue
! Enum(mips_arch_opt_value) String(24kf) Value(58) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r24kf) Value(58)
  
  EnumValue
! Enum(mips_arch_opt_value) String(24kf1_1) Value(59) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r24kf1_1) Value(59)
  
  EnumValue
! Enum(mips_arch_opt_value) String(24kfx) Value(60) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r24kfx) Value(60)
  
  EnumValue
! Enum(mips_arch_opt_value) String(24kx) Value(61) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r24kx) Value(61)
  
  EnumValue
! Enum(mips_arch_opt_value) String(24kec) Value(62) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r24kec) Value(62)
  
  EnumValue
! Enum(mips_arch_opt_value) String(24kef2_1) Value(63) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r24kef2_1) Value(63)
  
  EnumValue
! Enum(mips_arch_opt_value) String(24kef) Value(64) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r24kef) Value(64)
  
  EnumValue
! Enum(mips_arch_opt_value) String(24kef1_1) Value(65) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r24kef1_1) Value(65)
  
  EnumValue
! Enum(mips_arch_opt_value) String(24kefx) Value(66) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r24kefx) Value(66)
  
  EnumValue
! Enum(mips_arch_opt_value) String(24kex) Value(67) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r24kex) Value(67)
  
  EnumValue
! Enum(mips_arch_opt_value) String(34kc) Value(68) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r34kc) Value(68)
  
  EnumValue
! Enum(mips_arch_opt_value) String(34kf2_1) Value(69) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r34kf2_1) Value(69)
  
  EnumValue
! Enum(mips_arch_opt_value) String(34kf) Value(70) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r34kf) Value(70)
  
  EnumValue
! Enum(mips_arch_opt_value) String(34kf1_1) Value(71) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r34kf1_1) Value(71)
  
  EnumValue
! Enum(mips_arch_opt_value) String(34kfx) Value(72) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r34kfx) Value(72)
  
  EnumValue
! Enum(mips_arch_opt_value) String(34kx) Value(73) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r34kx) Value(73)
  
  EnumValue
! Enum(mips_arch_opt_value) String(34kn) Value(74) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r34kn) Value(74)
  
  EnumValue
! Enum(mips_arch_opt_value) String(74kc) Value(75) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r74kc) Value(75)
  
  EnumValue
! Enum(mips_arch_opt_value) String(74kf2_1) Value(76) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r74kf2_1) Value(76)
  
  EnumValue
! Enum(mips_arch_opt_value) String(74kf) Value(77) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r74kf) Value(77)
  
  EnumValue
! Enum(mips_arch_opt_value) String(74kf1_1) Value(78) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r74kf1_1) Value(78)
  
  EnumValue
! Enum(mips_arch_opt_value) String(74kfx) Value(79) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r74kfx) Value(79)
  
  EnumValue
! Enum(mips_arch_opt_value) String(74kx) Value(80) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r74kx) Value(80)
  
  EnumValue
! Enum(mips_arch_opt_value) String(74kf3_2) Value(81) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r74kf3_2) Value(81)
  
  EnumValue
! Enum(mips_arch_opt_value) String(1004kc) Value(82) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r1004kc) Value(82)
  
  EnumValue
! Enum(mips_arch_opt_value) String(1004kf2_1) Value(83) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r1004kf2_1) Value(83)
  
  EnumValue
! Enum(mips_arch_opt_value) String(1004kf) Value(84) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r1004kf) Value(84)
  
  EnumValue
! Enum(mips_arch_opt_value) String(1004kf1_1) Value(85) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r1004kf1_1) Value(85)
  
  EnumValue
! Enum(mips_arch_opt_value) String(interaptiv) Value(86) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(p5600) Value(87) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(m5100) Value(88) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(m5101) Value(89) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(5kc) Value(90) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r5kc) Value(90)
  
  EnumValue
! Enum(mips_arch_opt_value) String(5kf) Value(91) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r5kf) Value(91)
  
  EnumValue
! Enum(mips_arch_opt_value) String(20kc) Value(92) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(r20kc) Value(92)
  
  EnumValue
! Enum(mips_arch_opt_value) String(sb1) Value(93) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(sb1a) Value(94) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(sr71000) Value(95) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(sr71k) Value(95)
  
  EnumValue
! Enum(mips_arch_opt_value) String(xlr) Value(96) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(loongson3a) Value(97) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(gs464) Value(98) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(gs464e) Value(99) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(gs264e) Value(100) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(octeon) Value(101) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(octeon+) Value(102) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(octeon2) Value(103) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(octeon3) Value(104) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(xlp) Value(105) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(i6400) Value(106) Canonical
  
  EnumValue
! Enum(mips_arch_opt_value) String(i6500) Value(107) Canonical
! 
! EnumValue
! Enum(mips_arch_opt_value) String(p6600) Value(108) Canonical
  
diff -Nrcpad gcc-16-20251130/gcc/config/mips/mips.cc gcc-16-20251207/gcc/config/mips/mips.cc
*** gcc-16-20251130/gcc/config/mips/mips.cc	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/config/mips/mips.cc	Sun Dec  7 22:32:07 2025
*************** static const struct mips_rtx_cost_data
*** 1163,1168 ****
--- 1163,1182 ----
      COSTS_N_INSNS (8),            /* int_div_di */
  		    2,            /* branch_cost */
  		    4             /* memory_latency */
+   },
+   { /* Allegrex */
+     /* Has hard-float support for single precision only. */
+     COSTS_N_INSNS (5),            /* fp_add */
+     COSTS_N_INSNS (5),            /* fp_mult_sf */
+     COSTS_N_INSNS (256),          /* fp_mult_df */
+     COSTS_N_INSNS (30),           /* fp_div_sf */
+     COSTS_N_INSNS (256),          /* fp_div_df */
+     COSTS_N_INSNS (7) ,           /* int_mult_si */
+     COSTS_N_INSNS (27),           /* int_mult_di */
+     COSTS_N_INSNS (21),           /* int_div_si */
+     COSTS_N_INSNS (256),          /* int_div_di */
+ 		     2,           /* branch_cost */
+ 		     4            /* memory_latency */
    }
  };
  
diff -Nrcpad gcc-16-20251130/gcc/config/mips/mips.h gcc-16-20251207/gcc/config/mips/mips.h
*** gcc-16-20251130/gcc/config/mips/mips.h	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/config/mips/mips.h	Sun Dec  7 22:32:07 2025
*************** struct mips_cpu_info {
*** 291,296 ****
--- 291,297 ----
  #define ISA_MIPS64R6		    (mips_isa == MIPS_ISA_MIPS64R6)
  
  /* Architecture target defines.  */
+ #define TARGET_ALLEGREX             (mips_arch == PROCESSOR_ALLEGREX)
  #define TARGET_LOONGSON_2E          (mips_arch == PROCESSOR_LOONGSON_2E)
  #define TARGET_LOONGSON_2F          (mips_arch == PROCESSOR_LOONGSON_2F)
  #define TARGET_LOONGSON_2EF         (TARGET_LOONGSON_2E || TARGET_LOONGSON_2F)
*************** struct mips_cpu_info {
*** 326,331 ****
--- 327,333 ----
  				     || mips_tune == PROCESSOR_74KF2_1	\
  				     || mips_tune == PROCESSOR_74KF1_1  \
  				     || mips_tune == PROCESSOR_74KF3_2)
+ #define TUNE_ALLEGREX		    (mips_tune == PROCESSOR_ALLEGREX)
  #define TUNE_LOONGSON_2EF           (mips_tune == PROCESSOR_LOONGSON_2E	\
  				     || mips_tune == PROCESSOR_LOONGSON_2F)
  #define TUNE_GS464		    (mips_tune == PROCESSOR_GS464)
*************** struct mips_cpu_info {
*** 1091,1102 ****
--- 1093,1106 ----
  /* ISA has the integer conditional move instructions introduced in mips4 and
     ST Loongson 2E/2F.  */
  #define ISA_HAS_CONDMOVE        (ISA_HAS_FP_CONDMOVE			\
+ 				 || TARGET_ALLEGREX			\
  				 || TARGET_MIPS5900			\
  				 || ISA_HAS_MIPS16E2			\
  				 || TARGET_LOONGSON_2EF)
  
  /* ISA has LDC1 and SDC1.  */
  #define ISA_HAS_LDC1_SDC1	(!ISA_MIPS1				\
+ 				 && !TARGET_ALLEGREX			\
  				 && !TARGET_MIPS5900			\
  				 && !TARGET_MIPS16)
  
*************** struct mips_cpu_info {
*** 1135,1150 ****
  
  /* ISA has conditional trap instructions.  */
  #define ISA_HAS_COND_TRAP	(!ISA_MIPS1				\
  				 && !TARGET_MIPS16)
  
  /* ISA has conditional trap with immediate instructions.  */
  #define ISA_HAS_COND_TRAPI	(!ISA_MIPS1				\
  				 && mips_isa_rev <= 5			\
  				 && !TARGET_MIPS16)
  
  /* ISA has integer multiply-accumulate instructions, madd and msub.  */
! #define ISA_HAS_MADD_MSUB	(mips_isa_rev >= 1			\
! 				 && mips_isa_rev <= 5)
  
  /* Integer multiply-accumulate instructions should be generated.  */
  #define GENERATE_MADD_MSUB	(TARGET_IMADD && !TARGET_MIPS16)
--- 1139,1157 ----
  
  /* ISA has conditional trap instructions.  */
  #define ISA_HAS_COND_TRAP	(!ISA_MIPS1				\
+ 				 && !TARGET_ALLEGREX                    \
  				 && !TARGET_MIPS16)
  
  /* ISA has conditional trap with immediate instructions.  */
  #define ISA_HAS_COND_TRAPI	(!ISA_MIPS1				\
  				 && mips_isa_rev <= 5			\
+ 				 && !TARGET_ALLEGREX                    \
  				 && !TARGET_MIPS16)
  
  /* ISA has integer multiply-accumulate instructions, madd and msub.  */
! #define ISA_HAS_MADD_MSUB	((mips_isa_rev >= 1			\
! 				 && mips_isa_rev <= 5)			\
! 				 || TARGET_ALLEGREX)
  
  /* Integer multiply-accumulate instructions should be generated.  */
  #define GENERATE_MADD_MSUB	(TARGET_IMADD && !TARGET_MIPS16)
*************** struct mips_cpu_info {
*** 1199,1205 ****
  #define ISA_HAS_IEEE_754_2008	(mips_isa_rev >= 2)
  
  /* ISA has count leading zeroes/ones instruction (not implemented).  */
! #define ISA_HAS_CLZ_CLO		(mips_isa_rev >= 1 && !TARGET_MIPS16)
  
  /* ISA has count trailing zeroes/ones instruction.  */
  #define ISA_HAS_CTZ_CTO		(TARGET_LOONGSON_EXT2)
--- 1206,1213 ----
  #define ISA_HAS_IEEE_754_2008	(mips_isa_rev >= 2)
  
  /* ISA has count leading zeroes/ones instruction (not implemented).  */
! #define ISA_HAS_CLZ_CLO		((mips_isa_rev >= 1 && !TARGET_MIPS16)   \
! 				  || TARGET_ALLEGREX)
  
  /* ISA has count trailing zeroes/ones instruction.  */
  #define ISA_HAS_CTZ_CTO		(TARGET_LOONGSON_EXT2)
*************** struct mips_cpu_info {
*** 1241,1255 ****
  
  /* ISA has the "ror" (rotate right) instructions.  */
  #define ISA_HAS_ROR		((mips_isa_rev >= 2			\
  				  || TARGET_MIPS5400			\
  				  || TARGET_MIPS5500			\
  				  || TARGET_SR71K			\
  				  || TARGET_SMARTMIPS)			\
  				 && !TARGET_MIPS16)
  
  /* ISA has the WSBH (word swap bytes within halfwords) instruction.
     64-bit targets also provide DSBH and DSHD.  */
! #define ISA_HAS_WSBH		(mips_isa_rev >= 2 && !TARGET_MIPS16)
  
  /* ISA has data prefetch instructions.  This controls use of 'pref'.  */
  #define ISA_HAS_PREFETCH	((ISA_MIPS4				\
--- 1249,1271 ----
  
  /* ISA has the "ror" (rotate right) instructions.  */
  #define ISA_HAS_ROR		((mips_isa_rev >= 2			\
+ 				  || TARGET_ALLEGREX			\
  				  || TARGET_MIPS5400			\
  				  || TARGET_MIPS5500			\
  				  || TARGET_SR71K			\
  				  || TARGET_SMARTMIPS)			\
  				 && !TARGET_MIPS16)
  
+ /* ISA has the "min" and "max" instructions (signed min/max). */
+ #define ISA_HAS_MIN_MAX		(TARGET_ALLEGREX)
+ 
  /* ISA has the WSBH (word swap bytes within halfwords) instruction.
     64-bit targets also provide DSBH and DSHD.  */
! #define ISA_HAS_WSBH		((mips_isa_rev >= 2 && !TARGET_MIPS16)  \
! 				  || TARGET_ALLEGREX)
! 
! /* Similar to WSBH but for 32 bit words (byte swap within a word). */
! #define ISA_HAS_WSBW		(TARGET_ALLEGREX)
  
  /* ISA has data prefetch instructions.  This controls use of 'pref'.  */
  #define ISA_HAS_PREFETCH	((ISA_MIPS4				\
*************** struct mips_cpu_info {
*** 1282,1292 ****
  #define ISA_HAS_TRUNC_W		(!ISA_MIPS1)
  
  /* ISA includes the MIPS32r2 seb and seh instructions.  */
! #define ISA_HAS_SEB_SEH		(mips_isa_rev >= 2 && !TARGET_MIPS16)
  
  /* ISA includes the MIPS32/64 rev 2 ext and ins instructions.  */
  #define ISA_HAS_EXT_INS		((mips_isa_rev >= 2 && !TARGET_MIPS16)	\
! 				 || ISA_HAS_MIPS16E2)
  
  /* ISA has instructions for accessing top part of 64-bit fp regs.  */
  #define ISA_HAS_MXHC1		(!TARGET_FLOAT32	\
--- 1298,1310 ----
  #define ISA_HAS_TRUNC_W		(!ISA_MIPS1)
  
  /* ISA includes the MIPS32r2 seb and seh instructions.  */
! #define ISA_HAS_SEB_SEH		((mips_isa_rev >= 2 && !TARGET_MIPS16)  \
! 				  || TARGET_ALLEGREX)
  
  /* ISA includes the MIPS32/64 rev 2 ext and ins instructions.  */
  #define ISA_HAS_EXT_INS		((mips_isa_rev >= 2 && !TARGET_MIPS16)	\
! 				 || ISA_HAS_MIPS16E2 \
! 				 || TARGET_ALLEGREX)
  
  /* ISA has instructions for accessing top part of 64-bit fp regs.  */
  #define ISA_HAS_MXHC1		(!TARGET_FLOAT32	\
*************** struct mips_cpu_info {
*** 1330,1335 ****
--- 1348,1354 ----
  
  /* Likewise mtc1 and mfc1.  */
  #define ISA_HAS_XFER_DELAY	(mips_isa <= MIPS_ISA_MIPS3	\
+ 				 && !TARGET_ALLEGREX		\
  				 && !TARGET_MIPS5900		\
  				 && !TARGET_LOONGSON_2EF)
  
*************** struct mips_cpu_info {
*** 1351,1356 ****
--- 1370,1376 ----
     earlier-ISA CPUs for which CPU documentation declares that the
     instructions are really interlocked.  */
  #define ISA_HAS_HILO_INTERLOCKS	(mips_isa_rev >= 1			\
+ 				 || TARGET_ALLEGREX 			\
  				 || TARGET_MIPS5500			\
  				 || TARGET_MIPS5900			\
  				 || TARGET_LOONGSON_2EF)
diff -Nrcpad gcc-16-20251130/gcc/config/mips/mips.md gcc-16-20251207/gcc/config/mips/mips.md
*** gcc-16-20251130/gcc/config/mips/mips.md	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/config/mips/mips.md	Sun Dec  7 22:32:07 2025
***************
*** 72,77 ****
--- 72,78 ----
    m5100
    i6400
    p6600
+   allegrex
  ])
  
  (define_c_enum "unspec" [
***************
*** 835,843 ****
--- 836,846 ----
  ;; conditional-move-type condition is needed.
  (define_mode_iterator MOVECC [SI (DI "TARGET_64BIT")
                                (CC "TARGET_HARD_FLOAT
+ 				   && !TARGET_ALLEGREX
  				   && !TARGET_LOONGSON_2EF
  				   && !TARGET_MIPS5900")
                                (CCE "TARGET_HARD_FLOAT
+ 				   && !TARGET_ALLEGREX
  				   && !TARGET_LOONGSON_2EF
  				   && !TARGET_MIPS5900")])
  
***************
*** 1792,1800 ****
     (set_attr "mode"	"SI")
     (set_attr "insn_count" "1,1,2")
     (set (attr "enabled")
!         (cond [(eq_attr "alternative" "1,2")
!                   (const_string "yes")]
!               (const_string "no")))])
  
  ;; The same idea applies here.  The middle alternative needs one less
  ;; clobber than the final alternative, so we add "*?" as a counterweight.
--- 1795,1806 ----
     (set_attr "mode"	"SI")
     (set_attr "insn_count" "1,1,2")
     (set (attr "enabled")
!        (cond [(eq_attr "alternative" "1")
!               (const_string "yes")
!               (and (eq_attr "alternative" "2")
!                    (match_test "ISA_HAS_MUL3"))
!               (const_string "yes")]
!            (const_string "no")))])
  
  ;; The same idea applies here.  The middle alternative needs one less
  ;; clobber than the final alternative, so we add "*?" as a counterweight.
***************
*** 2038,2046 ****
     (set_attr "mode"     "SI")
     (set_attr "insn_count" "1,1,2")
     (set (attr "enabled")
!         (cond [(eq_attr "alternative" "1,2")
!                   (const_string "yes")]
!               (const_string "no")))])
  
  ;; Split *mul_sub_si if both the source and destination accumulator
  ;; values are GPRs.
--- 2044,2055 ----
     (set_attr "mode"     "SI")
     (set_attr "insn_count" "1,1,2")
     (set (attr "enabled")
!         (cond [(eq_attr "alternative" "1")
!                (const_string "yes")
!                (and (eq_attr "alternative" "2")
!                     (match_test "ISA_HAS_MUL3"))
!                (const_string "yes")]
!            (const_string "no")))])
  
  ;; Split *mul_sub_si if both the source and destination accumulator
  ;; values are GPRs.
***************
*** 6038,6053 ****
    "wsbh\t%0,%1"
    [(set_attr "type" "shift")])
  
! (define_insn_and_split "bswapsi2"
    [(set (match_operand:SI 0 "register_operand" "=d")
  	(bswap:SI (match_operand:SI 1 "register_operand" "d")))]
!   "ISA_HAS_WSBH && ISA_HAS_ROR"
!   "#"
!   "&& 1"
!   [(set (match_dup 0) (unspec:SI [(match_dup 1)] UNSPEC_WSBH))
!    (set (match_dup 0) (rotatert:SI (match_dup 0) (const_int 16)))]
!   ""
!   [(set_attr "insn_count" "2")])
  
  (define_insn_and_split "bswapdi2"
    [(set (match_operand:DI 0 "register_operand" "=d")
--- 6047,6075 ----
    "wsbh\t%0,%1"
    [(set_attr "type" "shift")])
  
! (define_expand "bswapsi2"
!   [(set (match_operand:SI 0 "register_operand" "=d")
!     (bswap:SI (match_operand:SI 1 "register_operand" "d")))]
!   "ISA_HAS_WSBW || (ISA_HAS_WSBH && ISA_HAS_ROR)"
! {
!   if (ISA_HAS_WSBW) {
!     emit_insn (gen_wsbwsi2 (operands[0], operands[1]));
!   }
!   else
!   {
!     rtx tmp = gen_reg_rtx (SImode);
!     emit_insn (gen_wsbh (tmp, operands[1]));
!     emit_insn (gen_rotrsi3 (operands[0], tmp, GEN_INT(16)));
!   }
!   DONE;
! })
! 
! (define_insn "wsbwsi2"
    [(set (match_operand:SI 0 "register_operand" "=d")
  	(bswap:SI (match_operand:SI 1 "register_operand" "d")))]
!   "ISA_HAS_WSBW"
!   "wsbw\t%0,%1"
!   [(set_attr "type" "shift")])
  
  (define_insn_and_split "bswapdi2"
    [(set (match_operand:DI 0 "register_operand" "=d")
***************
*** 7648,7653 ****
--- 7670,7696 ----
    DONE;
  })
  
+ ;; Min and max.
+ 
+ (define_insn "sminsi3"
+   [(set (match_operand:SI 0 "register_operand" "=d")
+         (smin:SI (match_operand:SI 1 "register_operand" "d")
+                  (match_operand:SI 2 "register_operand" "d")))]
+   "ISA_HAS_MIN_MAX"
+   "min\t%0,%1,%2"
+   [(set_attr "type"    "arith")
+    (set_attr "mode"    "SI")])
+ 
+ (define_insn "smaxsi3"
+   [(set (match_operand:SI 0 "register_operand" "=d")
+         (smax:SI (match_operand:SI 1 "register_operand" "d")
+                  (match_operand:SI 2 "register_operand" "d")))]
+   "ISA_HAS_MIN_MAX"
+   "max\t%0,%1,%2"
+   [(set_attr "type"    "arith")
+    (set_attr "mode"    "SI")])
+ 
+ 
  (define_expand "speculation_barrier"
    [(unspec_volatile [(const_int 0)] VUNSPEC_SPECULATION_BARRIER)]
    ""
diff -Nrcpad gcc-16-20251130/gcc/config/pa/pa.cc gcc-16-20251207/gcc/config/pa/pa.cc
*** gcc-16-20251130/gcc/config/pa/pa.cc	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/config/pa/pa.cc	Sun Dec  7 22:32:07 2025
*************** pa_emit_move_sequence (rtx *operands, ma
*** 1932,1962 ****
  
    /* We can only handle indexed addresses in the destination operand
       of floating point stores.  Thus, we need to break out indexed
!      addresses from the destination operand.  */
!   if (GET_CODE (operand0) == MEM && IS_INDEX_ADDR_P (XEXP (operand0, 0)))
      {
-       gcc_assert (can_create_pseudo_p ());
- 
        tem = copy_to_mode_reg (Pmode, XEXP (operand0, 0));
        operand0 = replace_equiv_address (operand0, tem);
      }
  
    /* On targets with non-equivalent space registers, break out unscaled
!      indexed addresses from the source operand before the final CSE.
       We have to do this because the REG_POINTER flag is not correctly
!      carried through various optimization passes and CSE may substitute
!      a pseudo without the pointer set for one with the pointer set.  As
!      a result, we loose various opportunities to create insns with
!      unscaled indexed addresses.  */
!   if (!TARGET_NO_SPACE_REGS
!       && !cse_not_expected
!       && GET_CODE (operand1) == MEM
        && GET_CODE (XEXP (operand1, 0)) == PLUS
        && REG_P (XEXP (XEXP (operand1, 0), 0))
!       && REG_P (XEXP (XEXP (operand1, 0), 1)))
!     operand1
!       = replace_equiv_address (operand1,
! 			       copy_to_mode_reg (Pmode, XEXP (operand1, 0)));
  
    if (scratch_reg
        && reload_in_progress
--- 1932,1967 ----
  
    /* We can only handle indexed addresses in the destination operand
       of floating point stores.  Thus, we need to break out indexed
!      addresses from the destination operand.  We also need to break
!      out REG+D addresses with large offsets.  */
!   if (MEM_P (operand0)
!       && (IS_INDEX_ADDR_P (XEXP (operand0, 0))
! 	  || (GET_CODE (XEXP (operand0, 0)) == PLUS
! 	      && REG_P (XEXP (XEXP (operand0, 0), 0))
! 	      && CONST_INT_P (XEXP (XEXP (operand0, 0), 1))
! 	      && !INT_14_BITS (XEXP (XEXP (operand0, 0), 1)))))
      {
        tem = copy_to_mode_reg (Pmode, XEXP (operand0, 0));
        operand0 = replace_equiv_address (operand0, tem);
      }
  
    /* On targets with non-equivalent space registers, break out unscaled
!      indexed addresses from the source operand before reload is completed.
       We have to do this because the REG_POINTER flag is not correctly
!      carried through various optimization passes.  We also need to break
!      out REG+D addresses with large offsets.  */
!   if (MEM_P (operand1)
        && GET_CODE (XEXP (operand1, 0)) == PLUS
        && REG_P (XEXP (XEXP (operand1, 0), 0))
!       && ((!TARGET_NO_SPACE_REGS
! 	   && !reload_completed
! 	   && REG_P (XEXP (XEXP (operand1, 0), 1)))
! 	  || (CONST_INT_P (XEXP (XEXP (operand1, 0), 1))
! 	      && !INT_14_BITS (XEXP (XEXP (operand1, 0), 1)))))
!     {
!       tem = copy_to_mode_reg (Pmode, XEXP (operand1, 0));
!       operand1 = replace_equiv_address (operand1, tem);
!     }
  
    if (scratch_reg
        && reload_in_progress
diff -Nrcpad gcc-16-20251130/gcc/config/riscv/autovec-opt.md gcc-16-20251207/gcc/config/riscv/autovec-opt.md
*** gcc-16-20251130/gcc/config/riscv/autovec-opt.md	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/config/riscv/autovec-opt.md	Sun Dec  7 22:32:07 2025
***************
*** 1976,1981 ****
--- 1976,2011 ----
    }
    [(set_attr "type" "viwmuladd")])
  
+ (define_insn_and_split "*pred_cmp_swapped<mode>_scalar"
+   [(set (match_operand:<VM>         0 "register_operand")
+ 	(if_then_else:<VM>
+ 	 (unspec:<VM>
+ 	   [(match_operand:<VM>     1 "vector_mask_operand")
+ 	    (match_operand          6 "vector_length_operand")
+ 	    (match_operand          7 "const_int_operand")
+ 	    (match_operand          8 "const_int_operand")
+ 	    (reg:SI VL_REGNUM)
+ 	    (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	 (match_operator:<VM>       3 "comparison_swappable_operator"
+ 	    [(vec_duplicate:V_VLSI
+ 	       (match_operand:<VEL> 4 "register_operand"))
+ 	     (match_operand:V_VLSI  5 "register_operand")])
+ 	 (unspec:<VM>
+ 	   [(match_operand:DI       2 "register_operand")] UNSPEC_VUNDEF)))]
+   "TARGET_VECTOR && can_create_pseudo_p ()"
+   "#"
+   "&& 1"
+   [(const_int 0)]
+   {
+     riscv_vector::expand_vx_cmp_vec_dup_vec (operands[0], operands[4],
+ 					     operands[5],
+ 					     GET_CODE (operands[3]),
+ 					     <MODE>mode);
+ 
+     DONE;
+   }
+   [(set_attr "type" "vicmp")])
+ 
  ;; =============================================================================
  ;; Combine vec_duplicate + op.vv to op.vf
  ;; Include
diff -Nrcpad gcc-16-20251130/gcc/config/riscv/predicates.md gcc-16-20251207/gcc/config/riscv/predicates.md
*** gcc-16-20251130/gcc/config/riscv/predicates.md	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/config/riscv/predicates.md	Sun Dec  7 22:32:07 2025
***************
*** 611,616 ****
--- 611,619 ----
  (define_predicate "comparison_except_ge_operator"
    (match_code "eq,ne,le,leu,gt,gtu,lt,ltu"))
  
+ (define_predicate "comparison_swappable_operator"
+   (match_code "gtu"))
+ 
  (define_predicate "ge_operator"
    (match_code "ge,geu"))
  
diff -Nrcpad gcc-16-20251130/gcc/config/riscv/riscv-profiles.def gcc-16-20251207/gcc/config/riscv/riscv-profiles.def
*** gcc-16-20251130/gcc/config/riscv/riscv-profiles.def	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/config/riscv/riscv-profiles.def	Sun Dec  7 22:32:07 2025
*************** RISCV_PROFILE("rva23s64",     "rv64imafd
*** 61,67 ****
  				 "_zicbom_zicbop_zicboz_zfhmin_zkt_zvfhmin_zvbb_zvkt_zihintntl"
  				 "_zicond_zimop_zcmop_zcb_zfa_zawrs_svbare_svade_ssccptr"
  				 "_sstvecd_sstvala_sscounterenw_svpbmt_svinval_svnapot_sstc"
! 				 "_sscofpmf_ssnpm_ssu64xl_sha_supm")
  
  /* RVB23 contains all mandatory base ISA for RVA22U64 and the new extension
     'zihintntl,zicond,zimop,zcmop,zfa,zawrs' as mandatory extensions.  */
--- 61,67 ----
  				 "_zicbom_zicbop_zicboz_zfhmin_zkt_zvfhmin_zvbb_zvkt_zihintntl"
  				 "_zicond_zimop_zcmop_zcb_zfa_zawrs_svbare_svade_ssccptr"
  				 "_sstvecd_sstvala_sscounterenw_svpbmt_svinval_svnapot_sstc"
! 				 "_sscofpmf_ssnpm_ssu64xl_sha_supm_zifencei")
  
  /* RVB23 contains all mandatory base ISA for RVA22U64 and the new extension
     'zihintntl,zicond,zimop,zcmop,zfa,zawrs' as mandatory extensions.  */
*************** RISCV_PROFILE("rvb23s64",     "rv64imafd
*** 77,82 ****
  				 "_zicbom_zicbop_zicboz_zfhmin_zkt_zvfhmin_zvbb_zvkt"
  				 "_zihintntl_zicond_zimop_zcmop_zcb_zfa_zawrs_svbare_svade"
  				 "_ssccptr_sstvecd_sstvala_sscounterenw_svpbmt_svinval_svnapot"
! 				 "_sstc_sscofpmf_ssu64xl_supm")
  
  #undef RISCV_PROFILE
--- 77,82 ----
  				 "_zicbom_zicbop_zicboz_zfhmin_zkt_zvfhmin_zvbb_zvkt"
  				 "_zihintntl_zicond_zimop_zcmop_zcb_zfa_zawrs_svbare_svade"
  				 "_ssccptr_sstvecd_sstvala_sscounterenw_svpbmt_svinval_svnapot"
! 				 "_sstc_sscofpmf_ssu64xl_supm_zifencei")
  
  #undef RISCV_PROFILE
diff -Nrcpad gcc-16-20251130/gcc/config/riscv/riscv-protos.h gcc-16-20251207/gcc/config/riscv/riscv-protos.h
*** gcc-16-20251130/gcc/config/riscv/riscv-protos.h	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/config/riscv/riscv-protos.h	Sun Dec  7 22:32:07 2025
*************** void expand_vx_binary_vec_dup_vec (rtx,
*** 691,696 ****
--- 691,697 ----
  void expand_vx_binary_vec_vec_dup (rtx, rtx, rtx, rtx_code, machine_mode);
  void expand_vx_binary_vxrm_vec_vec_dup (rtx, rtx, rtx, int, int, machine_mode);
  void expand_vx_binary_vxrm_vec_dup_vec (rtx, rtx, rtx, int, int, machine_mode);
+ void expand_vx_cmp_vec_dup_vec (rtx, rtx, rtx, rtx_code, machine_mode);
  #endif
  bool sew64_scalar_helper (rtx *, rtx *, rtx, machine_mode,
  			  bool, void (*)(rtx *, rtx), enum avl_type);
diff -Nrcpad gcc-16-20251130/gcc/config/riscv/riscv-v.cc gcc-16-20251207/gcc/config/riscv/riscv-v.cc
*** gcc-16-20251130/gcc/config/riscv/riscv-v.cc	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/config/riscv/riscv-v.cc	Sun Dec  7 22:32:07 2025
*************** expand_vx_binary_vec_vec_dup (rtx op_0,
*** 5862,5867 ****
--- 5862,5899 ----
    emit_vlmax_insn (icode, riscv_vector::BINARY_OP, ops);
  }
  
+ static rtx_code
+ get_swapped_cmp_rtx_code (rtx_code code)
+ {
+   switch (code)
+     {
+     case GTU:
+       return LTU;
+     default:
+       gcc_unreachable ();
+     }
+ }
+ 
+ /* Expand the binary vx combine with the format like v2 = vec_dup(x) > v1.
+    Aka the first op comes from the vec_duplicate, and the second op is the vector
+    reg.  Unfortunately, the RVV vms* only form like v2 = v1 < vec_dup(x), so
+    we need to swap the op_1 and op_2, then emit the swapped(from gtu to ltu)
+    insn instead.  */
+ 
+ void
+ expand_vx_cmp_vec_dup_vec (rtx op_0, rtx op_1, rtx op_2, rtx_code code,
+ 			   machine_mode mode)
+ {
+   machine_mode mask_mode = get_mask_mode (mode);
+   rtx_code swapped_code = get_swapped_cmp_rtx_code (code);
+ 
+   insn_code icode = code_for_pred_cmp_scalar (mode);
+   rtx cmp = gen_rtx_fmt_ee (swapped_code, mask_mode, op_2, op_1);
+   rtx ops[] = {op_0, cmp, op_2, op_1};
+ 
+   emit_vlmax_insn (icode, COMPARE_OP, ops);
+ }
+ 
  /* Vectorize popcount by the Wilkes-Wheeler-Gill algorithm that libgcc uses as
     well.  */
  void
diff -Nrcpad gcc-16-20251130/gcc/config/riscv/riscv-vector-builtins-bases.cc gcc-16-20251207/gcc/config/riscv/riscv-vector-builtins-bases.cc
*** gcc-16-20251130/gcc/config/riscv/riscv-vector-builtins-bases.cc	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/config/riscv/riscv-vector-builtins-bases.cc	Sun Dec  7 22:32:07 2025
*************** public:
*** 2130,2136 ****
  
    rtx expand (function_expander &e) const override
    {
!     return e.use_exact_insn (code_for_pred_fault_load (e.vector_mode ()));
    }
  };
  
--- 2130,2137 ----
  
    rtx expand (function_expander &e) const override
    {
!     return e.use_contiguous_load_insn
!       (code_for_pred_fault_load (e.vector_mode ()));
    }
  };
  
diff -Nrcpad gcc-16-20251130/gcc/config/riscv/riscv-vector-builtins.cc gcc-16-20251207/gcc/config/riscv/riscv-vector-builtins.cc
*** gcc-16-20251130/gcc/config/riscv/riscv-vector-builtins.cc	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/config/riscv/riscv-vector-builtins.cc	Sun Dec  7 22:32:07 2025
*************** function_builder::get_attributes (const
*** 4443,4449 ****
  registered_function &
  function_builder::add_function (const function_instance &instance,
  				const char *name, tree fntype, tree attrs,
! 				bool placeholder_p, const char *overload_name,
  				const vec<tree> &argument_types,
  				enum required_ext required,
  				bool overloaded_p = false)
--- 4443,4449 ----
  registered_function &
  function_builder::add_function (const function_instance &instance,
  				const char *name, tree fntype, tree attrs,
! 				const char *overload_name,
  				const vec<tree> &argument_types,
  				enum required_ext required,
  				bool overloaded_p = false)
*************** function_builder::add_function (const fu
*** 4464,4470 ****
       nodes and remove the target hook. For now, however, we need to appease the
       validation and return a non-NULL, non-error_mark_node node, so we
       arbitrarily choose integer_zero_node.  */
!   tree decl = placeholder_p || in_lto_p
  		? integer_zero_node
  		: simulate_builtin_function_decl (input_location, name, fntype,
  						  code, NULL, attrs);
--- 4464,4470 ----
       nodes and remove the target hook. For now, however, we need to appease the
       validation and return a non-NULL, non-error_mark_node node, so we
       arbitrarily choose integer_zero_node.  */
!   tree decl = in_lto_p
  		? integer_zero_node
  		: simulate_builtin_function_decl (input_location, name, fntype,
  						  code, NULL, attrs);
*************** function_builder::add_unique_function (c
*** 4508,4514 ****
  				 argument_types.address ());
    tree attrs = get_attributes (instance);
    registered_function &rfn
!     = add_function (instance, name, fntype, attrs, false, overload_name,
  		    argument_types.copy (), required);
  
    /* Enter the function into the hash table.  */
--- 4508,4514 ----
  				 argument_types.address ());
    tree attrs = get_attributes (instance);
    registered_function &rfn
!     = add_function (instance, name, fntype, attrs, overload_name,
  		    argument_types.copy (), required);
  
    /* Enter the function into the hash table.  */
*************** function_builder::add_unique_function (c
*** 4523,4529 ****
        /* Attribute lists shouldn't be shared.  */
        tree attrs = get_attributes (instance);
        if (m_direct_overloads)
! 	add_function (instance, overload_name, fntype, attrs, false, NULL,
  		      vNULL, required);
        else
  	{
--- 4523,4529 ----
        /* Attribute lists shouldn't be shared.  */
        tree attrs = get_attributes (instance);
        if (m_direct_overloads)
! 	add_function (instance, overload_name, fntype, attrs, NULL,
  		      vNULL, required);
        else
  	{
*************** function_builder::add_overloaded_functio
*** 4562,4568 ****
        /* To avoid API conflicting, take void return type and void argument
  	 for the overloaded function.  */
        tree fntype = build_function_type (void_type_node, void_list_node);
!       add_function (instance, name, fntype, NULL_TREE, false, name,
  		    vNULL, required, true);
        obstack_free (&m_string_obstack, name);
      }
--- 4562,4568 ----
        /* To avoid API conflicting, take void return type and void argument
  	 for the overloaded function.  */
        tree fntype = build_function_type (void_type_node, void_list_node);
!       add_function (instance, name, fntype, NULL_TREE, name,
  		    vNULL, required, true);
        obstack_free (&m_string_obstack, name);
      }
*************** function_expander::use_exact_insn (insn_
*** 4709,4715 ****
  
    /* The RVV floating-point only support dynamic rounding mode in the
       FRM register.  */
!   if (opno != insn_data[icode].n_generator_args)
      add_input_operand (Pmode, gen_int_mode (riscv_vector::FRM_DYN, Pmode));
  
    return generate_insn (icode);
--- 4709,4716 ----
  
    /* The RVV floating-point only support dynamic rounding mode in the
       FRM register.  */
!   if (base->may_require_frm_p ()
!       && opno < insn_data[icode].n_generator_args)
      add_input_operand (Pmode, gen_int_mode (riscv_vector::FRM_DYN, Pmode));
  
    return generate_insn (icode);
*************** function_expander::use_ternop_insn (bool
*** 4894,4900 ****
  
    /* The RVV floating-point only support dynamic rounding mode in the
       FRM register.  */
!   if (opno != insn_data[icode].n_generator_args)
      add_input_operand (Pmode, gen_int_mode (riscv_vector::FRM_DYN, Pmode));
  
    return generate_insn (icode);
--- 4895,4902 ----
  
    /* The RVV floating-point only support dynamic rounding mode in the
       FRM register.  */
!   if (base->may_require_frm_p ()
!       && opno < insn_data[icode].n_generator_args)
      add_input_operand (Pmode, gen_int_mode (riscv_vector::FRM_DYN, Pmode));
  
    return generate_insn (icode);
*************** function_expander::use_widen_ternop_insn
*** 4938,4944 ****
  
    /* The RVV floating-point only support dynamic rounding mode in the
       FRM register.  */
!   if (opno != insn_data[icode].n_generator_args)
      add_input_operand (Pmode, gen_int_mode (riscv_vector::FRM_DYN, Pmode));
  
    return generate_insn (icode);
--- 4940,4947 ----
  
    /* The RVV floating-point only support dynamic rounding mode in the
       FRM register.  */
!   if (base->may_require_frm_p ()
!       && opno < insn_data[icode].n_generator_args)
      add_input_operand (Pmode, gen_int_mode (riscv_vector::FRM_DYN, Pmode));
  
    return generate_insn (icode);
diff -Nrcpad gcc-16-20251130/gcc/config/riscv/riscv-vector-builtins.h gcc-16-20251207/gcc/config/riscv/riscv-vector-builtins.h
*** gcc-16-20251130/gcc/config/riscv/riscv-vector-builtins.h	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/config/riscv/riscv-vector-builtins.h	Sun Dec  7 22:32:07 2025
*************** private:
*** 435,441 ****
    tree get_attributes (const function_instance &);
  
    registered_function &add_function (const function_instance &, const char *,
! 				     tree, tree, bool, const char *,
  				     const vec<tree> &, enum required_ext,
  				     bool);
  
--- 435,441 ----
    tree get_attributes (const function_instance &);
  
    registered_function &add_function (const function_instance &, const char *,
! 				     tree, tree, const char *,
  				     const vec<tree> &, enum required_ext,
  				     bool);
  
diff -Nrcpad gcc-16-20251130/gcc/config/riscv/riscv-vsetvl.cc gcc-16-20251207/gcc/config/riscv/riscv-vsetvl.cc
*** gcc-16-20251130/gcc/config/riscv/riscv-vsetvl.cc	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/config/riscv/riscv-vsetvl.cc	Sun Dec  7 22:32:07 2025
*************** public:
*** 1176,1182 ****
      if (fault_first_load_p (insn->rtl ()))
        {
  	for (insn_info *i = insn->next_nondebug_insn ();
! 	     i->bb () == insn->bb (); i = i->next_nondebug_insn ())
  	  {
  	    if (find_access (i->defs (), VL_REGNUM))
  	      break;
--- 1176,1182 ----
      if (fault_first_load_p (insn->rtl ()))
        {
  	for (insn_info *i = insn->next_nondebug_insn ();
! 	     i && i->bb () == insn->bb (); i = i->next_nondebug_insn ())
  	  {
  	    if (find_access (i->defs (), VL_REGNUM))
  	      break;
diff -Nrcpad gcc-16-20251130/gcc/config/riscv/riscv.cc gcc-16-20251207/gcc/config/riscv/riscv.cc
*** gcc-16-20251130/gcc/config/riscv/riscv.cc	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/config/riscv/riscv.cc	Sun Dec  7 22:32:07 2025
*************** riscv_symbolic_constant_p (rtx x, enum r
*** 1840,1847 ****
    /* Nonzero offsets are only valid for references that don't use the GOT.  */
    switch (*symbol_type)
      {
-     case SYMBOL_ABSOLUTE:
      case SYMBOL_PCREL:
      case SYMBOL_TLS_LE:
        /* GAS rejects offsets outside the range [-2^31, 2^31-1].  */
        return sext_hwi (INTVAL (offset), 32) == INTVAL (offset);
--- 1840,1858 ----
    /* Nonzero offsets are only valid for references that don't use the GOT.  */
    switch (*symbol_type)
      {
      case SYMBOL_PCREL:
+       /* In 64-bit mode, PC-relative offsets with ranges beyond +/-1GiB are
+ 	 more likely than not to end up out of range for an auipc instruction
+ 	 randomly-placed within the 2GB range usable by medany, and such
+ 	 offsets are quite unlikely to come up by chance, so be conservative
+ 	 and separate the offset for them when in 64-bit mode, where they don't
+ 	 wrap around.  */
+       if (TARGET_64BIT)
+ 	return sext_hwi (INTVAL (offset), 30) == INTVAL (offset);
+ 
+       /* Fall through.  */
+ 
+     case SYMBOL_ABSOLUTE:
      case SYMBOL_TLS_LE:
        /* GAS rejects offsets outside the range [-2^31, 2^31-1].  */
        return sext_hwi (INTVAL (offset), 32) == INTVAL (offset);
diff -Nrcpad gcc-16-20251130/gcc/config/riscv/vector.md gcc-16-20251207/gcc/config/riscv/vector.md
*** gcc-16-20251130/gcc/config/riscv/vector.md	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/config/riscv/vector.md	Sun Dec  7 22:32:07 2025
***************
*** 8669,8675 ****
  	     (reg:SI VL_REGNUM)
  	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
  	  (unspec:VT
! 	    [(match_operand 3 "pmode_reg_or_0_operand"   "   rJ,    rJ,    rJ")
  	     (mem:BLK (scratch))] UNSPEC_VLEFF)
  	  (match_operand:VT 2 "vector_merge_operand"     "    0,    vu,    vu")))
     (set (reg:SI VL_REGNUM)
--- 8669,8675 ----
  	     (reg:SI VL_REGNUM)
  	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
  	  (unspec:VT
! 	    [(match_operand:VT 3 "memory_operand"	 "    m,     m,     m")
  	     (mem:BLK (scratch))] UNSPEC_VLEFF)
  	  (match_operand:VT 2 "vector_merge_operand"     "    0,    vu,    vu")))
     (set (reg:SI VL_REGNUM)
***************
*** 8684,8690 ****
  	        [(match_dup 3) (mem:BLK (scratch))] UNSPEC_VLEFF)
  	     (match_dup 2))] UNSPEC_MODIFY_VL))]
    "TARGET_VECTOR"
!   "vlseg<nf>e<sew>ff.v\t%0,(%z3)%p1"
    [(set_attr "type" "vlsegdff")
     (set_attr "mode" "<MODE>")])
  
--- 8684,8690 ----
  	        [(match_dup 3) (mem:BLK (scratch))] UNSPEC_VLEFF)
  	     (match_dup 2))] UNSPEC_MODIFY_VL))]
    "TARGET_VECTOR"
!   "vlseg<nf>e<sew>ff.v\t%0,%3%p1"
    [(set_attr "type" "vlsegdff")
     (set_attr "mode" "<MODE>")])
  
diff -Nrcpad gcc-16-20251130/gcc/config.gcc gcc-16-20251207/gcc/config.gcc
*** gcc-16-20251130/gcc/config.gcc	Sun Nov 30 22:32:06 2025
--- gcc-16-20251207/gcc/config.gcc	Sun Dec  7 22:32:07 2025
*************** aarch64-*-mingw*)
*** 1293,1303 ****
  	tm_file="${tm_file} mingw/winnt.h"
  	tm_file="${tm_file} mingw/winnt-dll.h"
  	tmake_file="${tmake_file} aarch64/t-aarch64"
          native_system_header_dir=/mingw/include
  	target_gtfiles="$target_gtfiles \$(srcdir)/config/mingw/winnt.cc"
  	target_gtfiles="$target_gtfiles \$(srcdir)/config/mingw/winnt-dll.cc"
  	extra_options="${extra_options} mingw/cygming.opt mingw/mingw.opt"
! 	extra_objs="${extra_objs} winnt.o winnt-dll.o"
  	c_target_objs="${c_target_objs} msformat-c.o"
  	cxx_target_objs="${cxx_target_objs} msformat-c.o"
  	d_target_objs="${d_target_objs} winnt-d.o"
--- 1293,1304 ----
  	tm_file="${tm_file} mingw/winnt.h"
  	tm_file="${tm_file} mingw/winnt-dll.h"
  	tmake_file="${tmake_file} aarch64/t-aarch64"
+ 	tmake_file="${tmake_file} aarch64/t-aarch64-mingw"
          native_system_header_dir=/mingw/include
  	target_gtfiles="$target_gtfiles \$(srcdir)/config/mingw/winnt.cc"
  	target_gtfiles="$target_gtfiles \$(srcdir)/config/mingw/winnt-dll.cc"
  	extra_options="${extra_options} mingw/cygming.opt mingw/mingw.opt"
! 	extra_objs="${extra_objs} aarch64-abi-ms.o winnt.o winnt-dll.o"
  	c_target_objs="${c_target_objs} msformat-c.o"
  	cxx_target_objs="${cxx_target_objs} msformat-c.o"
  	d_target_objs="${d_target_objs} winnt-d.o"
diff -Nrcpad gcc-16-20251130/gcc/cp/ChangeLog gcc-16-20251207/gcc/cp/ChangeLog
*** gcc-16-20251130/gcc/cp/ChangeLog	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/cp/ChangeLog	Sun Dec  7 22:32:07 2025
***************
*** 1,3 ****
--- 1,94 ----
+ 2025-12-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* decl2.cc (is_late_template_attribute): Call lookup_attribute_spec
+ 	on TREE_PURPOSE (attr) rather than name.  Only call
+ 	attribute_takes_identifier_p if get_attribute_namespace (attr) is
+ 	gnu_identifier.
+ 	* pt.cc (tsubst_attribute): Only call attribute_takes_identifier_p
+ 	if get_attribute_namespace (t) is gnu_identifier.
+ 
+ 2025-12-05  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* pt.cc (tsubst_omp_clauses): Handle OMP_CLAUSE_DYN_GROUPPRIVATE.
+ 	* semantics.cc (finish_omp_clauses): Likewise.
+ 	* parser.cc (cp_parser_omp_clause_dyn_groupprivate): New.
+ 	(cp_parser_omp_clause_name, cp_parser_omp_all_clauses):
+ 	Handle 'dyn_groupprivate' clause.
+ 	(OMP_TARGET_CLAUSE_MASK): Add PRAGMA_OMP_CLAUSE_DYN_GROUPPRIVATE;
+ 	sort clauses alphabetically.
+ 
+ 2025-12-03  Jason Merrill  <jason@redhat.com>
+ 
+ 	* pt.cc (dependent_implict_conv_p): Rename to...
+ 	(dependent_implicit_conv_p): ...this.
+ 
+ 2025-12-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/122860
+ 	* decl.cc (make_rtl_for_nonlocal_decl): Diagnose taking address
+ 	of a hard register decl in its initializer.
+ 	(cp_finish_decl): Likewise.
+ 
+ 2025-12-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/122836
+ 	* decl.cc (check_array_designated_initializer): Change ce->index to
+ 	error_mark_node after emitting an error for it.
+ 
+ 2025-12-02  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/122171
+ 	PR c++/112632
+ 	* pt.cc (dependent_implict_conv_p): Split out...
+ 	(convert_template_argument): ...from here.
+ 	(tsubst_expr) [IMPLICIT_CONV_EXPR]: Use it.
+ 	(do_auto_deduction): Call mark_single_function.
+ 
+ 2025-12-02  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	* module.cc (module_state::write_using_directives): Correct
+ 	condition.
+ 
+ 2025-12-01  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	* module.cc (trees_out::lang_decl_vals): Stream DECL_CHAIN for
+ 	decl_specialization_friend_p functions.
+ 	(trees_in::lang_decl_vals): Likewise.
+ 
+ 2025-12-01  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/122915
+ 	* module.cc (module_state::write_using_directives): Don't emit
+ 	imported using-directives.
+ 	(module_state::read_using_directives): Rename
+ 	add_using_namespace to add_imported_using_namespace.
+ 	* name-lookup.cc (add_using_namespace): Handle imported
+ 	using-directives.
+ 	(add_imported_using_namespace): Rename to match new
+ 	functionality.
+ 	* name-lookup.h (add_using_namespace): Rename to...
+ 	(add_imported_using_namespace): ...this.
+ 
+ 2025-12-01  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/119864
+ 	PR c++/122939
+ 	* module.cc (trees_out::write_function_def): Don't crash on
+ 	OMP used-defined type reduction function definitions.
+ 
+ 2025-12-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/122905
+ 	* decl.cc (enum_with_enumerator_for_linkage_p): Only return true
+ 	for namespace scope types.
+ 
+ 2025-11-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/122465
+ 	* parser.cc (cp_parser_simple_declaration): Adjust function comment.
+ 	Set *maybe_range_for_decl to error_mark_node instead of keeping it
+ 	NULL_TREE in error cases or when followed by CPP_COLON.
+ 
  2025-11-30  Nathaniel Shead  <nathanieloshead@gmail.com>
  
  	PR c++/119864
diff -Nrcpad gcc-16-20251130/gcc/cp/decl.cc gcc-16-20251207/gcc/cp/decl.cc
*** gcc-16-20251130/gcc/cp/decl.cc	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/cp/decl.cc	Sun Dec  7 22:32:07 2025
*************** check_array_designated_initializer (cons
*** 6981,6986 ****
--- 6981,6987 ----
  	{
  	  error ("name %qD used in a GNU-style designated "
  		 "initializer for an array", ce->index);
+ 	  ce->index = error_mark_node;
  	  return false;
  	}
  
*************** make_rtl_for_nonlocal_decl (tree decl, t
*** 8653,8660 ****
  	 placed in a particular register.  */
        if (VAR_P (decl) && DECL_REGISTER (decl))
  	{
! 	  set_user_assembler_name (decl, asmspec);
! 	  DECL_HARD_REGISTER (decl) = 1;
  	}
        else
  	{
--- 8654,8668 ----
  	 placed in a particular register.  */
        if (VAR_P (decl) && DECL_REGISTER (decl))
  	{
! 	  if (TREE_ADDRESSABLE (decl))
! 	    error_at (DECL_SOURCE_LOCATION (decl),
! 		      "address of explicit register variable %qD requested",
! 		      decl);
! 	  else
! 	    {
! 	      set_user_assembler_name (decl, asmspec);
! 	      DECL_HARD_REGISTER (decl) = 1;
! 	    }
  	}
        else
  	{
*************** cp_finish_decl (tree decl, tree init, bo
*** 9655,9662 ****
  
        if (VAR_P (decl) && DECL_REGISTER (decl) && asmspec)
  	{
! 	  set_user_assembler_name (decl, asmspec);
! 	  DECL_HARD_REGISTER (decl) = 1;
  	}
        return;
      }
--- 9663,9677 ----
  
        if (VAR_P (decl) && DECL_REGISTER (decl) && asmspec)
  	{
! 	  if (TREE_ADDRESSABLE (decl))
! 	    error_at (DECL_SOURCE_LOCATION (decl),
! 		      "address of explicit register variable %qD requested",
! 		      decl);
! 	  else
! 	    {
! 	      set_user_assembler_name (decl, asmspec);
! 	      DECL_HARD_REGISTER (decl) = 1;
! 	    }
  	}
        return;
      }
*************** start_enum (tree name, tree enumtype, tr
*** 18760,18766 ****
  }
  
  /* Returns true if TYPE is an enum that uses an enumerator name for
!    linkage purposes.  */
  
  bool
  enum_with_enumerator_for_linkage_p (tree type)
--- 18775,18785 ----
  }
  
  /* Returns true if TYPE is an enum that uses an enumerator name for
!    linkage purposes at namespace scope.  The term is defined in [dcl.enum]/12
!    for all enums, not just those at namespace scope, but for backward ABI
!    compatibility we want to treat those not at namespace scope the old way
!    and e.g. mangle the class scope ones based on their position within the
!    class rather than the first enumerator.  */
  
  bool
  enum_with_enumerator_for_linkage_p (tree type)
*************** enum_with_enumerator_for_linkage_p (tree
*** 18768,18774 ****
    return (cxx_dialect >= cxx20
  	  && UNSCOPED_ENUM_P (type)
  	  && TYPE_ANON_P (type)
! 	  && TYPE_VALUES (type));
  }
  
  /* After processing and defining all the values of an enumeration type,
--- 18787,18794 ----
    return (cxx_dialect >= cxx20
  	  && UNSCOPED_ENUM_P (type)
  	  && TYPE_ANON_P (type)
! 	  && TYPE_VALUES (type)
! 	  && TYPE_NAMESPACE_SCOPE_P (type));
  }
  
  /* After processing and defining all the values of an enumeration type,
diff -Nrcpad gcc-16-20251130/gcc/cp/decl2.cc gcc-16-20251207/gcc/cp/decl2.cc
*** gcc-16-20251130/gcc/cp/decl2.cc	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/cp/decl2.cc	Sun Dec  7 22:32:07 2025
*************** is_late_template_attribute (tree attr, t
*** 1468,1474 ****
  {
    tree name = get_attribute_name (attr);
    tree args = TREE_VALUE (attr);
!   const struct attribute_spec *spec = lookup_attribute_spec (name);
    tree arg;
  
    if (!spec)
--- 1468,1475 ----
  {
    tree name = get_attribute_name (attr);
    tree args = TREE_VALUE (attr);
!   const struct attribute_spec *spec
!     = lookup_attribute_spec (TREE_PURPOSE (attr));
    tree arg;
  
    if (!spec)
*************** is_late_template_attribute (tree attr, t
*** 1512,1518 ****
  	 second and following arguments.  Attributes like mode, format,
  	 cleanup and several target specific attributes aren't late
  	 just because they have an IDENTIFIER_NODE as first argument.  */
!       if (arg == args && attribute_takes_identifier_p (name)
  	  && identifier_p (t))
  	continue;
  
--- 1513,1521 ----
  	 second and following arguments.  Attributes like mode, format,
  	 cleanup and several target specific attributes aren't late
  	 just because they have an IDENTIFIER_NODE as first argument.  */
!       if (arg == args
! 	  && get_attribute_namespace (attr) == gnu_identifier
! 	  && attribute_takes_identifier_p (name)
  	  && identifier_p (t))
  	continue;
  
diff -Nrcpad gcc-16-20251130/gcc/cp/module.cc gcc-16-20251207/gcc/cp/module.cc
*** gcc-16-20251130/gcc/cp/module.cc	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/cp/module.cc	Sun Dec  7 22:32:07 2025
*************** trees_out::lang_decl_vals (tree t)
*** 7524,7529 ****
--- 7524,7535 ----
  
  	WT (access);
        }
+       /* A friend template specialisation stashes its owning class on its
+ 	 DECL_CHAIN; we need to reconstruct this, but it needs to happen
+ 	 after we stream the template_info so readers can know this is such
+ 	 an entity.  */
+       if (decl_specialization_friend_p (t))
+ 	WT (t->common.chain);
        break;
  
      case lds_ns:  /* lang_decl_ns.  */
*************** trees_in::lang_decl_vals (tree t)
*** 7593,7598 ****
--- 7599,7606 ----
      lds_min:
        RT (lang->u.min.template_info);
        RT (lang->u.min.access);
+       if (decl_specialization_friend_p (t))
+ 	RT (t->common.chain);
        break;
  
      case lds_ns:  /* lang_decl_ns.  */
*************** trees_out::write_function_def (tree decl
*** 12936,12941 ****
--- 12944,12952 ----
  	 on non-templates or we'll crash later in import_export_decl.  */
        gcc_checking_assert (flags || DECL_INTERFACE_KNOWN (decl)
  			   || (DECL_LANG_SPECIFIC (decl)
+ 			       && DECL_LOCAL_DECL_P (decl)
+ 			       && DECL_OMP_DECLARE_REDUCTION_P (decl))
+ 			   || (DECL_LANG_SPECIFIC (decl)
  			       && DECL_TEMPLATE_INFO (decl)
  			       && uses_template_parms (DECL_TI_ARGS (decl))));
  
*************** module_state::write_using_directives (el
*** 17636,17642 ****
  	  bool exported = DECL_MODULE_EXPORT_P (udir);
  	  tree target = USING_DECL_DECLS (udir);
  	  depset *target_dep = table.find_dependency (target);
! 	  gcc_checking_assert (target_dep);
  
  	  dump () && dump ("Writing using-directive in %N for %N",
  			   parent, target);
--- 17647,17662 ----
  	  bool exported = DECL_MODULE_EXPORT_P (udir);
  	  tree target = USING_DECL_DECLS (udir);
  	  depset *target_dep = table.find_dependency (target);
! 
! 	  /* An using-directive imported from a different module might not
! 	     have been walked earlier (PR c++/122915).  But importers will
! 	     be able to just refer to the decl in that module unless it was
! 	     a partition anyway, so we don't have anything to do here.  */
! 	  if (!target_dep)
! 	    {
! 	      gcc_checking_assert (DECL_MODULE_IMPORT_P (udir));
! 	      continue;
! 	    }
  
  	  dump () && dump ("Writing using-directive in %N for %N",
  			   parent, target);
*************** module_state::read_using_directives (uns
*** 17685,17691 ****
  
        dump () && dump ("Read using-directive in %N for %N", parent, target);
        if (exported || is_module () || is_partition ())
! 	add_using_namespace (parent, target);
      }
  
    dump.outdent ();
--- 17705,17711 ----
  
        dump () && dump ("Read using-directive in %N for %N", parent, target);
        if (exported || is_module () || is_partition ())
! 	add_imported_using_namespace (parent, target);
      }
  
    dump.outdent ();
diff -Nrcpad gcc-16-20251130/gcc/cp/name-lookup.cc gcc-16-20251207/gcc/cp/name-lookup.cc
*** gcc-16-20251130/gcc/cp/name-lookup.cc	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/cp/name-lookup.cc	Sun Dec  7 22:32:07 2025
*************** pop_nested_namespace (tree ns)
*** 9015,9021 ****
     unqualified search.  */
  
  static void
! add_using_namespace (vec<tree, va_gc> *&usings, tree target)
  {
    /* Find if this using already exists.  */
    tree old = NULL_TREE;
--- 9015,9022 ----
     unqualified search.  */
  
  static void
! add_using_namespace (vec<tree, va_gc> *&usings, tree target,
! 		     bool imported = false)
  {
    /* Find if this using already exists.  */
    tree old = NULL_TREE;
*************** add_using_namespace (vec<tree, va_gc> *&
*** 9032,9046 ****
      {
        decl = build_lang_decl (USING_DECL, NULL_TREE, NULL_TREE);
        USING_DECL_DECLS (decl) = target;
      }
  
!   /* Update purviewness and exportedness in case that has changed.  */
    if (modules_p ())
      {
        if (module_purview_p ())
  	DECL_MODULE_PURVIEW_P (decl) = true;
        if (module_exporting_p ())
  	DECL_MODULE_EXPORT_P (decl) = true;
      }
  
    if (!old)
--- 9033,9050 ----
      {
        decl = build_lang_decl (USING_DECL, NULL_TREE, NULL_TREE);
        USING_DECL_DECLS (decl) = target;
+       DECL_MODULE_IMPORT_P (decl) = imported;
      }
  
!   /* Update module flags in case that has changed.  */
    if (modules_p ())
      {
        if (module_purview_p ())
  	DECL_MODULE_PURVIEW_P (decl) = true;
        if (module_exporting_p ())
  	DECL_MODULE_EXPORT_P (decl) = true;
+       if (!imported)
+ 	DECL_MODULE_IMPORT_P (decl) = false;
      }
  
    if (!old)
*************** add_using_namespace (vec<tree, va_gc> *&
*** 9048,9060 ****
  }
  
  /* Convenience overload for the above, taking the user as its first
!    parameter.  */
  
  void
! add_using_namespace (tree ns, tree target)
  {
    add_using_namespace (NAMESPACE_LEVEL (ns)->using_directives,
! 		       ORIGINAL_NAMESPACE (target));
  }
  
  /* Tell the debug system of a using directive.  */
--- 9052,9065 ----
  }
  
  /* Convenience overload for the above, taking the user as its first
!    parameter, for use when importing a using-directive.  */
  
  void
! add_imported_using_namespace (tree ns, tree target)
  {
    add_using_namespace (NAMESPACE_LEVEL (ns)->using_directives,
! 		       ORIGINAL_NAMESPACE (target),
! 		       /*imported=*/true);
  }
  
  /* Tell the debug system of a using directive.  */
diff -Nrcpad gcc-16-20251130/gcc/cp/name-lookup.h gcc-16-20251207/gcc/cp/name-lookup.h
*** gcc-16-20251130/gcc/cp/name-lookup.h	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/cp/name-lookup.h	Sun Dec  7 22:32:07 2025
*************** extern cxx_binding *outer_binding (tree,
*** 477,483 ****
  extern void cp_emit_debug_info_for_using (tree, tree);
  
  extern void finish_nonmember_using_decl (tree scope, tree name);
- extern void add_using_namespace (tree, tree);
  extern void finish_using_directive (tree target, tree attribs);
  void push_local_extern_decl_alias (tree decl);
  extern tree pushdecl (tree, bool hiding = false);
--- 477,482 ----
*************** extern bool set_module_binding (tree ctx
*** 508,513 ****
--- 507,513 ----
  				tree value, tree type, tree visible,
  				tree internal);
  extern void add_module_namespace_decl (tree ns, tree decl);
+ extern void add_imported_using_namespace (tree, tree);
  
  enum WMB_Flags
  {
diff -Nrcpad gcc-16-20251130/gcc/cp/parser.cc gcc-16-20251207/gcc/cp/parser.cc
*** gcc-16-20251130/gcc/cp/parser.cc	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/cp/parser.cc	Sun Dec  7 22:32:07 2025
*************** cp_parser_omp_clause_name (cp_parser *pa
*** 40047,40052 ****
--- 40047,40054 ----
  	    result = PRAGMA_OMP_CLAUSE_DIST_SCHEDULE;
  	  else if (!strcmp ("doacross", p))
  	    result = PRAGMA_OMP_CLAUSE_DOACROSS;
+ 	  else if (!strcmp ("dyn_groupprivate", p))
+ 	    result = PRAGMA_OMP_CLAUSE_DYN_GROUPPRIVATE;
  	  break;
  	case 'e':
  	  if (!strcmp ("enter", p))
*************** cp_parser_omp_clause_from_to (cp_parser
*** 43743,43748 ****
--- 43745,43835 ----
    return nl;
  }
  
+ /* OpenMP 6.1:
+    dyn_groupprivate ( [fallback-modifier : ] integer-expression )
+ 
+    fallback-modifier
+       fallback( abort | default_mem | null )  */
+ 
+ static tree
+ cp_parser_omp_clause_dyn_groupprivate (cp_parser *parser, tree list,
+ 				       location_t location)
+ {
+   matching_parens parens;
+   if (!parens.require_open (parser))
+     return list;
+ 
+   enum omp_clause_fallback_kind kind = OMP_CLAUSE_FALLBACK_UNSPECIFIED;
+ 
+   size_t n;
+   if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)
+       && (cp_lexer_nth_token_is (parser->lexer, 2, CPP_COLON)
+ 	  || (cp_lexer_nth_token_is (parser->lexer, 2, CPP_OPEN_PAREN)
+ 	      && (n = cp_parser_skip_balanced_tokens (parser, 2)) != 3
+ 	      && cp_lexer_nth_token_is (parser->lexer, n, CPP_COLON))))
+     {
+       tree id = cp_lexer_peek_token (parser->lexer)->u.value;
+       if (strcmp (IDENTIFIER_POINTER (id), "fallback") != 0)
+ 	{
+ 	  cp_parser_error (parser, "expected %<fallback%> modifier");
+ 	  cp_parser_skip_to_closing_parenthesis (parser,
+ 						 /*recovering=*/true,
+ 						 /*or_comma=*/false,
+ 						 /*consume_paren=*/true);
+ 	  return list;
+ 	}
+       cp_lexer_consume_token (parser->lexer);
+       if (!cp_parser_require (parser, CPP_OPEN_PAREN, RT_OPEN_PAREN))
+ 	return list;
+       const char *p = "";
+       if (cp_lexer_next_token_is (parser->lexer, CPP_NAME))
+ 	{
+ 	  id = cp_lexer_peek_token (parser->lexer)->u.value;
+ 	  p = IDENTIFIER_POINTER (id);
+ 	}
+       if (strcmp (p, "abort") == 0)
+ 	kind = OMP_CLAUSE_FALLBACK_ABORT;
+       else if (strcmp (p, "default_mem") == 0)
+ 	kind = OMP_CLAUSE_FALLBACK_DEFAULT_MEM;
+       else if (strcmp (p, "null") == 0)
+ 	kind = OMP_CLAUSE_FALLBACK_NULL;
+       else
+ 	{
+ 	  cp_parser_error (parser, "expected %<abort%>, %<default_mem%>, or "
+ 				   "%<null%> as fallback mode");
+ 	  cp_parser_skip_to_closing_parenthesis (parser,
+ 						 /*recovering=*/true,
+ 						 /*or_comma=*/false,
+ 						 /*consume_paren=*/true);
+ 	  return list;
+ 	}
+       cp_lexer_consume_token (parser->lexer);
+       if (!cp_parser_require (parser, CPP_CLOSE_PAREN, RT_CLOSE_PAREN))
+ 	return list;
+       if (!cp_parser_require (parser, CPP_COLON, RT_COLON))
+ 	return list;
+     }
+ 
+   tree size = cp_parser_assignment_expression (parser);
+ 
+   if (size == error_mark_node
+       || !parens.require_close (parser))
+     cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true,
+ 					   /*or_comma=*/false,
+ 					   /*consume_paren=*/true);
+ 
+   check_no_duplicate_clause (list, OMP_CLAUSE_DYN_GROUPPRIVATE,
+ 			     "dyn_groupprivate", location);
+ 
+   tree c = build_omp_clause (location, OMP_CLAUSE_DYN_GROUPPRIVATE);
+   OMP_CLAUSE_DYN_GROUPPRIVATE_KIND (c) = kind;
+   OMP_CLAUSE_DYN_GROUPPRIVATE_EXPR (c) = size;
+   OMP_CLAUSE_CHAIN (c) = list;
+   list = c;
+ 
+   return list;
+ }
+ 
  /* OpenMP 4.0:
     map ( map-kind : variable-list )
     map ( variable-list )
*************** cp_parser_omp_all_clauses (cp_parser *pa
*** 45352,45357 ****
--- 45439,45449 ----
  					    clauses);
  	  c_name = "destroy";
  	  break;
+ 	case PRAGMA_OMP_CLAUSE_DYN_GROUPPRIVATE:
+ 	  clauses = cp_parser_omp_clause_dyn_groupprivate (parser, clauses,
+ 							   token->location);
+ 	  c_name = "dyn_groupprivate";
+ 	  break;
  	case PRAGMA_OMP_CLAUSE_INIT:
  	  {
  	    /* prefer_type parsing fails often such that many follow-up errors
*************** cp_parser_omp_target_update (cp_parser *
*** 50230,50248 ****
       structured-block  */
  
  #define OMP_TARGET_CLAUSE_MASK					\
! 	( (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_DEVICE)	\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_MAP)		\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_IF)		\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_DEPEND)	\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_NOWAIT)	\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_PRIVATE)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_FIRSTPRIVATE)	\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_DEFAULTMAP)	\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_ALLOCATE)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_IN_REDUCTION)	\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_THREAD_LIMIT)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_IS_DEVICE_PTR)\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_HAS_DEVICE_ADDR))
  
  static bool
  cp_parser_omp_target (cp_parser *parser, cp_token *pragma_tok,
--- 50322,50341 ----
       structured-block  */
  
  #define OMP_TARGET_CLAUSE_MASK					\
! 	( (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_ALLOCATE)	\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_DEFAULTMAP)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_DEPEND)	\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_DEVICE)	\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_DYN_GROUPPRIVATE) \
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_FIRSTPRIVATE)	\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_HAS_DEVICE_ADDR) \
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_IN_REDUCTION)	\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_IF)		\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_IS_DEVICE_PTR)\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_MAP)		\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_NOWAIT)	\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_PRIVATE)	\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_THREAD_LIMIT))
  
  static bool
  cp_parser_omp_target (cp_parser *parser, cp_token *pragma_tok,
diff -Nrcpad gcc-16-20251130/gcc/cp/pt.cc gcc-16-20251207/gcc/cp/pt.cc
*** gcc-16-20251130/gcc/cp/pt.cc	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/cp/pt.cc	Sun Dec  7 22:32:07 2025
*************** maybe_convert_nontype_argument (tree typ
*** 8646,8651 ****
--- 8646,8664 ----
    return arg;
  }
  
+ /* True if we need an IMPLICIT_CONV_EXPR for converting EXPR to TYPE, possibly
+    in a FORCED context (i.e. alias or concept).  */
+ 
+ static bool
+ dependent_implicit_conv_p (tree type, tree expr, bool forced)
+ {
+   return (dependent_type_p (type) || type_dependent_expression_p (expr)
+ 	  || (forced
+ 	      && !(same_type_ignoring_top_level_qualifiers_p
+ 		   (TREE_TYPE (expr), type))
+ 	      && value_dependent_expression_p (expr)));
+ }
+ 
  /* Convert the indicated template ARG as necessary to match the
     indicated template PARM.  Returns the converted ARG, or
     error_mark_node if the conversion was unsuccessful.  Error and
*************** convert_template_argument (tree parm,
*** 8926,8937 ****
  	  && same_type_p (TREE_TYPE (orig_arg), t))
  	orig_arg = TREE_OPERAND (orig_arg, 0);
  
!       if (!uses_template_parms (t)
! 	  && !type_dependent_expression_p (orig_arg)
! 	  && !(force_conv
! 	       && !(same_type_ignoring_top_level_qualifiers_p
! 		    (TREE_TYPE (orig_arg), t))
! 	       && value_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
--- 8939,8945 ----
  	  && same_type_p (TREE_TYPE (orig_arg), t))
  	orig_arg = TREE_OPERAND (orig_arg, 0);
  
!       if (!dependent_implicit_conv_p (t, orig_arg, force_conv))
  	/* 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_attribute (tree t, tree *decl_p,
*** 12378,12384 ****
       pass it through tsubst.  Attributes like mode, format,
       cleanup and several target specific attributes expect it
       unmodified.  */
!   else if (attribute_takes_identifier_p (get_attribute_name (t)))
      {
        tree chain
  	= tsubst_expr (TREE_CHAIN (val), args, complain, in_decl);
--- 12386,12393 ----
       pass it through tsubst.  Attributes like mode, format,
       cleanup and several target specific attributes expect it
       unmodified.  */
!   else if (get_attribute_namespace (t) == gnu_identifier
! 	   && attribute_takes_identifier_p (get_attribute_name (t)))
      {
        tree chain
  	= tsubst_expr (TREE_CHAIN (val), args, complain, in_decl);
*************** tsubst_omp_clauses (tree clauses, enum c
*** 18206,18211 ****
--- 18215,18221 ----
  	case OMP_CLAUSE_ASYNC:
  	case OMP_CLAUSE_WAIT:
  	case OMP_CLAUSE_DETACH:
+ 	case OMP_CLAUSE_DYN_GROUPPRIVATE:
  	  OMP_CLAUSE_OPERAND (nc, 0)
  	    = tsubst_stmt (OMP_CLAUSE_OPERAND (oc, 0), args, complain, in_decl);
  	  break;
*************** tsubst_expr (tree t, tree args, tsubst_f
*** 21031,21037 ****
  	if (type == error_mark_node)
  	  RETURN (error_mark_node);
  	tree expr = RECUR (TREE_OPERAND (t, 0));
! 	if (dependent_type_p (type) || type_dependent_expression_p (expr))
  	  {
  	    retval = copy_node (t);
  	    TREE_TYPE (retval) = type;
--- 21041,21048 ----
  	if (type == error_mark_node)
  	  RETURN (error_mark_node);
  	tree expr = RECUR (TREE_OPERAND (t, 0));
! 	if (dependent_implicit_conv_p (type, expr,
! 				       IMPLICIT_CONV_EXPR_FORCED (t)))
  	  {
  	    retval = copy_node (t);
  	    TREE_TYPE (retval) = type;
*************** do_auto_deduction (tree type, tree init,
*** 32147,32156 ****
  	 initializer_list.  */
        if (CONSTRUCTOR_ELTS (init))
  	for (constructor_elt &elt : CONSTRUCTOR_ELTS (init))
! 	  elt.value = resolve_nondeduced_context (elt.value, complain);
      }
    else if (init)
!     init = resolve_nondeduced_context (init, complain);
  
    /* In C++23, we must deduce the type to int&& for code like
         decltype(auto) f(int&& x) { return (x); }
--- 32158,32175 ----
  	 initializer_list.  */
        if (CONSTRUCTOR_ELTS (init))
  	for (constructor_elt &elt : CONSTRUCTOR_ELTS (init))
! 	  {
! 	    elt.value = resolve_nondeduced_context (elt.value, complain);
! 	    if (!mark_single_function (elt.value, complain))
! 	      return error_mark_node;
! 	  }
      }
    else if (init)
!     {
!       init = resolve_nondeduced_context (init, complain);
!       if (!mark_single_function (init, complain))
! 	return error_mark_node;
!     }
  
    /* In C++23, we must deduce the type to int&& for code like
         decltype(auto) f(int&& x) { return (x); }
diff -Nrcpad gcc-16-20251130/gcc/cp/semantics.cc gcc-16-20251207/gcc/cp/semantics.cc
*** gcc-16-20251130/gcc/cp/semantics.cc	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/cp/semantics.cc	Sun Dec  7 22:32:07 2025
*************** finish_omp_clauses (tree clauses, enum c
*** 8356,8361 ****
--- 8356,8362 ----
  	case OMP_CLAUSE_NUM_THREADS:
  	case OMP_CLAUSE_NUM_GANGS:
  	case OMP_CLAUSE_NUM_WORKERS:
+ 	case OMP_CLAUSE_DYN_GROUPPRIVATE:
  	case OMP_CLAUSE_VECTOR_LENGTH:
  	  t = OMP_CLAUSE_OPERAND (c, 0);
  	  if (t == error_mark_node)
*************** finish_omp_clauses (tree clauses, enum c
*** 8389,8395 ****
  	      if (!processing_template_decl)
  		{
  		  t = maybe_constant_value (t);
! 		  if (TREE_CODE (t) == INTEGER_CST
  		      && tree_int_cst_sgn (t) != 1)
  		    {
  		      switch (OMP_CLAUSE_CODE (c))
--- 8390,8397 ----
  	      if (!processing_template_decl)
  		{
  		  t = maybe_constant_value (t);
! 		  if (OMP_CLAUSE_CODE (c) != OMP_CLAUSE_DYN_GROUPPRIVATE
! 		      && TREE_CODE (t) == INTEGER_CST
  		      && tree_int_cst_sgn (t) != 1)
  		    {
  		      switch (OMP_CLAUSE_CODE (c))
*************** finish_omp_clauses (tree clauses, enum c
*** 8418,8423 ****
--- 8420,8434 ----
  			}
  		      t = integer_one_node;
  		    }
+ 		  else if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_DYN_GROUPPRIVATE
+ 			   && TREE_CODE (t) == INTEGER_CST
+ 			   && tree_int_cst_sgn (t) < 0)
+ 		    {
+ 		      warning_at (OMP_CLAUSE_LOCATION (c), OPT_Wopenmp,
+ 				  "%<dyn_groupprivate%> value must be "
+ 				  "non-negative");
+ 		      t = integer_zero_node;
+ 		    }
  		  t = fold_build_cleanup_point_expr (TREE_TYPE (t), t);
  		}
  	      OMP_CLAUSE_OPERAND (c, 0) = t;
diff -Nrcpad gcc-16-20251130/gcc/cselib.cc gcc-16-20251207/gcc/cselib.cc
*** gcc-16-20251130/gcc/cselib.cc	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/cselib.cc	Sun Dec  7 22:32:07 2025
*************** cselib_finish (void)
*** 3459,3470 ****
    next_uid = 0;
  }
  
! /* Dump the cselib_val *X to FILE *OUT.  */
  
  int
! dump_cselib_val (cselib_val **x, FILE *out)
  {
-   cselib_val *v = *x;
    bool need_lf = true;
  
    print_inline_rtx (out, v->val_rtx, 0);
--- 3459,3469 ----
    next_uid = 0;
  }
  
! /* Dump the cselib_val V to FILE *OUT.  */
  
  int
! dump_cselib_val (cselib_val *v, FILE *out)
  {
    bool need_lf = true;
  
    print_inline_rtx (out, v->val_rtx, 0);
*************** dump_cselib_val (cselib_val **x, FILE *o
*** 3533,3547 ****
    return 1;
  }
  
  /* Dump to OUT everything in the CSELIB table.  */
  
  void
  dump_cselib_table (FILE *out)
  {
    fprintf (out, "cselib hash table:\n");
!   cselib_hash_table->traverse <FILE *, dump_cselib_val> (out);
!   fprintf (out, "cselib preserved hash table:\n");
!   cselib_preserved_hash_table->traverse <FILE *, dump_cselib_val> (out);
    if (first_containing_mem != &dummy_val)
      {
        fputs ("first mem ", out);
--- 3532,3558 ----
    return 1;
  }
  
+ /* Dump the cselib_val *X to FILE *OUT.  */
+ 
+ static int
+ dump_cselib_val_ptr (cselib_val **x, FILE *out)
+ {
+   cselib_val *v = *x;
+   return dump_cselib_val (v, out);
+ }
+ 
  /* Dump to OUT everything in the CSELIB table.  */
  
  void
  dump_cselib_table (FILE *out)
  {
    fprintf (out, "cselib hash table:\n");
!   cselib_hash_table->traverse <FILE *, dump_cselib_val_ptr> (out);
!   if (cselib_preserved_hash_table)
!     {
!       fprintf (out, "cselib preserved hash table:\n");
!       cselib_preserved_hash_table->traverse <FILE *, dump_cselib_val_ptr> (out);
!     }
    if (first_containing_mem != &dummy_val)
      {
        fputs ("first mem ", out);
diff -Nrcpad gcc-16-20251130/gcc/d/ChangeLog gcc-16-20251207/gcc/d/ChangeLog
*** gcc-16-20251130/gcc/d/ChangeLog	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/d/ChangeLog	Sun Dec  7 22:32:07 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-11-30  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* lang.opt.urls: Regenerate.
+ 
  2025-08-18  Indu Bhagat  <indu.bhagat@oracle.com>
  
  	* d-attribs.cc (d_handle_no_sanitize_attribute): Use
diff -Nrcpad gcc-16-20251130/gcc/doc/install.texi gcc-16-20251207/gcc/doc/install.texi
*** gcc-16-20251130/gcc/doc/install.texi	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/doc/install.texi	Sun Dec  7 22:32:07 2025
*************** Please refer to the @uref{https://gcc.gn
*** 687,699 ****
  for information on how to obtain GCC@.
  
  The source distribution includes the Ada, C, C++, Objective-C, COBOL
! (GCC 15 and later), D (GCC 9 and later), Fortran, Go, and Modula-2
! (GCC 13 and later) compilers, as well as runtime libraries for C++,
! Objective-C, COBOL, and Fortran.  For previous versions these were
! downloadable as separate components such as the core GCC distribution,
! which included the C language front end and shared components, and
! language-specific distributions including the language front end and
! the language runtime (where appropriate).
  
  If you also intend to build binutils (either to upgrade an existing
  installation or for use in place of the corresponding tools of your
--- 687,700 ----
  for information on how to obtain GCC@.
  
  The source distribution includes the Ada, C, C++, Objective-C, COBOL
! (GCC 15 and later), D (GCC 9 and later), Fortran, Go, Modula-2 (GCC 13
! and later) and Algol 68 (GCC 16 and later, experimental) compilers, as
! well as runtime libraries for C++, Objective-C, COBOL, Fortran and
! Algol 68.  For previous versions these were downloadable as separate
! components such as the core GCC distribution, which included the C
! language front end and shared components, and language-specific
! distributions including the language front end and the language
! runtime (where appropriate).
  
  If you also intend to build binutils (either to upgrade an existing
  installation or for use in place of the corresponding tools of your
diff -Nrcpad gcc-16-20251130/gcc/doc/invoke.texi gcc-16-20251207/gcc/doc/invoke.texi
*** gcc-16-20251130/gcc/doc/invoke.texi	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/doc/invoke.texi	Sun Dec  7 22:32:07 2025
*************** Objective-C and Objective-C++ Dialects}.
*** 621,627 ****
  -ffast-math  -ffat-lto-objects  -ffinite-loops
  -ffinite-math-only  -ffloat-store
  -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
--- 621,627 ----
  -ffast-math  -ffat-lto-objects  -ffinite-loops
  -ffinite-math-only  -ffloat-store
  -fforward-propagate  -ffp-contract=@var{style}  -ffp-int-builtin-inexact
! -ffunction-sections -ffuse-ops-with-volatile-access
  -fgcse  -fgcse-after-reload  -fgcse-las  -fgcse-lm  -fgraphite-identity
  -fgcse-sm  -fhoist-adjacent-loads  -fif-conversion
  -fif-conversion2  -findirect-inlining
*************** performed when this option is not used.
*** 13790,13795 ****
--- 13790,13804 ----
  
  The default is @option{-ffunction-cse}
  
+ @opindex ffuse-ops-with-volatile-access
+ @opindex fno-fuse-ops-with-volatile-access
+ @item -ffuse-ops-with-volatile-access
+ Allow limited optimization of operations with volatile memory access
+ when doing so does not change the semantics outlined in
+ @xref{Volatiles,,When is a Volatile Object Accessed?}.
+ 
+ The default is @option{-ffuse-ops-with-volatile-access}
+ 
  @opindex fno-zero-initialized-in-bss
  @opindex fzero-initialized-in-bss
  @item -fno-zero-initialized-in-bss
*************** Increasing the cost multiplier will make
*** 17842,17847 ****
--- 17851,17859 ----
  @item vrp-block-limit
  Maximum number of basic blocks before VRP switches to a lower memory algorithm.
  
+ @item vrp-cstload-limit
+ Maximum number of steps when inferring a value range from a load from a constant aggregate.
+ 
  @item vrp-sparse-threshold
  Maximum number of basic blocks before VRP uses a sparse bitmap cache.
  
*************** uses for scheduling a loop.
*** 17878,17883 ****
--- 17890,17903 ----
  The max number of reload pseudos which are considered during
  spilling a non-reload pseudo.
  
+ @item lra-max-pseudos-points-log2-considered-for-preferences
+ The maximum @code{log2(number of reload pseudos * number of
+ program points)} threshold when preferences for other reload pseudos
+ are still considered. Taking these preferences into account helps to
+ improve register allocation. However, for very large functions, a
+ large value can result in significant compilation time and memory
+ consumption. The default value is 30.
+ 
  @item max-pow-sqrt-depth
  Maximum depth of sqrt chains to use when synthesizing exponentiation
  by a real constant.
*************** The processor names are:
*** 29935,29940 ****
--- 29955,29961 ----
  @samp{vr4100}, @samp{vr4111}, @samp{vr4120}, @samp{vr4130}, @samp{vr4300},
  @samp{vr5000}, @samp{vr5400}, @samp{vr5500},
  @samp{xlr} and @samp{xlp}.
+ @samp{allegrex},
  The special value @samp{from-abi} selects the
  most compatible architecture for the selected ABI (that is,
  @samp{mips1} for 32-bit ABIs and @samp{mips3} for 64-bit ABIs)@.
diff -Nrcpad gcc-16-20251130/gcc/dwarf2out.cc gcc-16-20251207/gcc/dwarf2out.cc
*** gcc-16-20251130/gcc/dwarf2out.cc	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/dwarf2out.cc	Sun Dec  7 22:32:07 2025
*************** gen_compile_unit_die (const char *filena
*** 25820,25834 ****
  	    language = DW_LANG_Go;
  	  else if (strcmp (language_string, "GNU Rust") == 0)
  	    language = DW_LANG_Rust;
! 	}
!       else if (!dwarf_strict)
!         {
!           if (strcmp (language_string, "GNU Algol 68") == 0)
  	    {
  	      language = DW_LANG_Algol68;
  	      lname = DW_LNAME_Algol68;
  	    }
!         }
      }
    /* Use a degraded Fortran setting in strict DWARF2 so is_fortran works.  */
    else if (startswith (language_string, "GNU Fortran"))
--- 25820,25833 ----
  	    language = DW_LANG_Go;
  	  else if (strcmp (language_string, "GNU Rust") == 0)
  	    language = DW_LANG_Rust;
!           else if (strcmp (language_string, "GNU Algol 68") == 0)
  	    {
  	      language = DW_LANG_Algol68;
  	      lname = DW_LNAME_Algol68;
+ 	      lversion = 1978; /* Not a typo.  The revised language of the
+ 				  Revised Report.  */
  	    }
! 	}
      }
    /* Use a degraded Fortran setting in strict DWARF2 so is_fortran works.  */
    else if (startswith (language_string, "GNU Fortran"))
diff -Nrcpad gcc-16-20251130/gcc/fortran/ChangeLog gcc-16-20251207/gcc/fortran/ChangeLog
*** gcc-16-20251130/gcc/fortran/ChangeLog	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/fortran/ChangeLog	Sun Dec  7 22:32:07 2025
***************
*** 1,3 ****
--- 1,95 ----
+ 2025-12-06  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/122693
+ 	* array.cc (gfc_match_array_constructor): Stash and restore
+ 	gfc_current_ns after the call to 'gfc_match_type_spec'.
+ 
+ 2025-12-06  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/122670
+ 	* decl.cc (gfc_get_pdt_instance): Ensure that, in an interface
+ 	body, PDT instances imported implicitly if the template has
+ 	been explicitly imported.
+ 	* module.cc (read_module): If a PDT template appears in a use
+ 	only statement, implicitly add the instances as well.
+ 
+ 2025-12-06  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/122669
+ 	* resolve.cc (resolve_allocate_deallocate): Mold expressions
+ 	with an array reference and a constant size must be resolved
+ 	for each allocate object.
+ 
+ 2025-12-06  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/122578
+ 	* primary.cc (gfc_match_varspec): Try to resolve a typebound
+ 	generic procedure selector expression to provide the associate
+ 	name with a type. Also, resolve component calls. In both cases,
+ 	make a copy of the selector expression to guard against changes
+ 	made by gfc_resolve_expr.
+ 
+ 2025-12-05  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/122977
+ 	* expr.cc (gfc_is_simply_contiguous): For an associate variable
+ 	check whether the associate target is contiguous.
+ 	* resolve.cc (resolve_symbol): Skip array type check for an
+ 	associate variable when	the target has the contiguous attribute.
+ 
+ 2025-12-05  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* openmp.cc (resolve_omp_clauses): Permit zero with
+ 	DYN_GROUPPRIVATE clause.
+ 	* trans-openmp.cc (fallback): Generate TREE code
+ 	for DYN_GROUPPRIVATE and remove 'sorry'.
+ 
+ 2025-12-03  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/103371
+ 	* decl.cc (gfc_get_pdt_instance): Remove the requirement that
+ 	PDT components be of the same type as the enclosing type. Apply
+ 	initializers other than the default to PDT components.
+ 	* primary.cc (gfc_match_rvalue): Make combination of the two
+ 	actual_arglists conditional on 'type_spec_list' having been
+ 	seen as well together with applying component names to all the
+ 	arguments.
+ 	* trans-decl.cc (gfc_init_default_dt): Add 'pdt_ok' to the args
+ 	and use it to signal that a PDT can be default initialized.
+ 	(gfc_init_default_pdt): New function to check that a pdt is OK
+ 	for default intialization before calling gfc_init_default_dt.
+ 	(gfc_trans_deferred_vars): Use gfc_init_default_pdt.
+ 	* trans.h: Add bool 'pdt_ok' to prototype with defaul value of
+ 	false.
+ 
+ 2025-12-01  Christopher Albert  <albert@tugraz.at>
+ 	    Harald Anlauf  <anlauf@gcc.gnu.org>
+ 
+ 	PR fortran/107721
+ 	PR fortran/102417
+ 	* arith.cc (eval_intrinsic): Call gfc_check_constructor_type on
+ 	array constructor operands with explicit type-spec to ensure
+ 	element type conversion before operations.  Resolve character
+ 	array constructors before CONCAT operations.
+ 	(reduce_binary_ac, reduce_binary_ca, reduce_binary_aa): Preserve
+ 	character length info in result arrays.
+ 	* array.cc (check_constructor_type): Simplify non-constant
+ 	expressions before type checking to handle parenthesized elements.
+ 	Handle nested character array constructors with explicit type-spec
+ 	when outer constructor has no type-spec.
+ 	(gfc_resolve_character_array_constructor): Recursively propagate
+ 	type-spec to nested array constructors.  If the nested constructor
+ 	has an explicit type-spec, resolve it first before propagating
+ 	the outer type-spec.
+ 
+ 2025-12-01  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* gfortran.texi (Default exponents): Remove spurious @menu entry.
+ 
+ 2025-11-30  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* lang.opt.urls: Regenerate.
+ 
  2025-11-28  Tobias Burnus  <tburnus@baylibre.com>
  
  	PR c/122892
diff -Nrcpad gcc-16-20251130/gcc/fortran/arith.cc gcc-16-20251207/gcc/fortran/arith.cc
*** gcc-16-20251130/gcc/fortran/arith.cc	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/fortran/arith.cc	Sun Dec  7 22:32:07 2025
*************** reduce_binary_ac (arith (*eval) (gfc_exp
*** 1565,1570 ****
--- 1565,1572 ----
  	  r = gfc_get_array_expr (c->expr->ts.type, c->expr->ts.kind,
  				  &op1->where);
  	  r->shape = gfc_copy_shape (op1->shape, op1->rank);
+ 	  if (c->expr->ts.type == BT_CHARACTER)
+ 	    r->ts.u.cl = c->expr->ts.u.cl;
  	}
        else
  	{
*************** reduce_binary_ac (arith (*eval) (gfc_exp
*** 1572,1577 ****
--- 1574,1581 ----
  	  r = gfc_get_array_expr (op1->ts.type, op1->ts.kind,
  				  &op1->where);
  	  r->shape = gfc_get_shape (op1->rank);
+ 	  if (op1->ts.type == BT_CHARACTER)
+ 	    r->ts.u.cl = op1->ts.u.cl;
  	}
        r->rank = op1->rank;
        r->corank = op1->corank;
*************** reduce_binary_ca (arith (*eval) (gfc_exp
*** 1629,1634 ****
--- 1633,1640 ----
  	  r = gfc_get_array_expr (c->expr->ts.type, c->expr->ts.kind,
  				  &op2->where);
  	  r->shape = gfc_copy_shape (op2->shape, op2->rank);
+ 	  if (c->expr->ts.type == BT_CHARACTER)
+ 	    r->ts.u.cl = c->expr->ts.u.cl;
  	}
        else
  	{
*************** reduce_binary_ca (arith (*eval) (gfc_exp
*** 1636,1641 ****
--- 1642,1649 ----
  	  r = gfc_get_array_expr (op2->ts.type, op2->ts.kind,
  				  &op2->where);
  	  r->shape = gfc_get_shape (op2->rank);
+ 	  if (op2->ts.type == BT_CHARACTER)
+ 	    r->ts.u.cl = op2->ts.u.cl;
  	}
        r->rank = op2->rank;
        r->corank = op2->corank;
*************** reduce_binary_aa (arith (*eval) (gfc_exp
*** 1697,1707 ****
--- 1705,1719 ----
  	{
  	  /* Handle zero-sized arrays.  */
  	  r = gfc_get_array_expr (op1->ts.type, op1->ts.kind, &op1->where);
+ 	  if (op1->ts.type == BT_CHARACTER)
+ 	    r->ts.u.cl = op1->ts.u.cl;
  	}
        else
  	{
  	  r = gfc_get_array_expr (c->expr->ts.type, c->expr->ts.kind,
  				  &op1->where);
+ 	  if (c->expr->ts.type == BT_CHARACTER)
+ 	    r->ts.u.cl = c->expr->ts.u.cl;
  	}
        r->shape = gfc_copy_shape (op1->shape, op1->rank);
        r->rank = op1->rank;
*************** eval_intrinsic (gfc_intrinsic_op op,
*** 1921,1926 ****
--- 1933,1961 ----
  	     || !gfc_is_constant_expr (op2) || !gfc_expanded_ac (op2)))
      goto runtime;
  
+   /* For array constructors with explicit type-spec, ensure elements are
+      converted to the specified type before any operations.  This handles
+      cases like [integer :: ([1.0])] ** 2 where parentheses would otherwise
+      cause the type-spec to be lost during constant folding.  */
+   if (op1->expr_type == EXPR_ARRAY && op1->ts.type != BT_UNKNOWN)
+     gfc_check_constructor_type (op1);
+   if (op2 != NULL && op2->expr_type == EXPR_ARRAY && op2->ts.type != BT_UNKNOWN)
+     gfc_check_constructor_type (op2);
+ 
+   /* For CONCAT operations, also resolve character array constructors to
+      ensure elements are padded to the specified length before concatenation.
+      This ensures [character(16):: 'a','b'] // '|' pads to 16 chars first.  */
+   if (op == INTRINSIC_CONCAT)
+     {
+       if (op1->expr_type == EXPR_ARRAY && op1->ts.type == BT_CHARACTER
+ 	  && op1->ts.u.cl && op1->ts.u.cl->length_from_typespec)
+ 	gfc_resolve_character_array_constructor (op1);
+       if (op2 != NULL && op2->expr_type == EXPR_ARRAY
+ 	  && op2->ts.type == BT_CHARACTER
+ 	  && op2->ts.u.cl && op2->ts.u.cl->length_from_typespec)
+ 	gfc_resolve_character_array_constructor (op2);
+     }
+ 
    if (unary)
      rc = reduce_unary (eval.f2, op1, &result);
    else
diff -Nrcpad gcc-16-20251130/gcc/fortran/array.cc gcc-16-20251207/gcc/fortran/array.cc
*** gcc-16-20251130/gcc/fortran/array.cc	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/fortran/array.cc	Sun Dec  7 22:32:07 2025
*************** gfc_match_array_constructor (gfc_expr **
*** 1344,1349 ****
--- 1344,1350 ----
    match m;
    const char *end_delim;
    bool seen_ts;
+   gfc_namespace *old_ns = gfc_current_ns;
  
    head = NULL;
    seen_ts = false;
*************** gfc_match_array_constructor (gfc_expr **
*** 1368,1373 ****
--- 1369,1376 ----
    /* Try to match an optional "type-spec ::"  */
    gfc_clear_ts (&ts);
    m = gfc_match_type_spec (&ts);
+   gfc_current_ns = old_ns;
+ 
    if (m == MATCH_YES)
      {
        seen_ts = (gfc_match (" ::") == MATCH_YES);
*************** check_constructor_type (gfc_constructor_
*** 1549,1558 ****
      {
        e = c->expr;
  
        if (e->expr_type == EXPR_ARRAY)
  	{
! 	  if (!check_constructor_type (e->value.constructor, convert))
! 	    return false;
  
  	  continue;
  	}
--- 1552,1588 ----
      {
        e = c->expr;
  
+       /* Simplify non-constant expressions (like parenthesized arrays) so type
+ 	 conversion can work on the simplified result.  This handles cases like
+ 	 [integer :: ([1.0])] where ([1.0]) is an EXPR_OP that needs to be
+ 	 simplified to an EXPR_ARRAY before type conversion.  */
+       if (convert && e->expr_type != EXPR_CONSTANT
+ 	  && e->expr_type != EXPR_ARRAY)
+ 	gfc_simplify_expr (e, 0);
+ 
        if (e->expr_type == EXPR_ARRAY)
  	{
! 	  /* If the outer constructor has no type-spec (convert=false) and
! 	     the nested array has an explicit type-spec, process it separately
! 	     so its elements get converted according to its type-spec.  This
! 	     handles cases like [[character(16) :: ['a','b']]] where the outer
! 	     constructor has no type-spec but the inner one does.
! 	     gfc_check_constructor_type will also update the global
! 	     constructor_ts and cons_state which propagates the type info
! 	     to the outer constructor.
! 	     For character types, length_from_typespec indicates an explicit
! 	     type-spec was provided.  */
! 	  if (!convert && e->ts.type == BT_CHARACTER
! 	      && e->ts.u.cl && e->ts.u.cl->length_from_typespec)
! 	    {
! 	      if (!gfc_check_constructor_type (e))
! 		return false;
! 	    }
! 	  else
! 	    {
! 	      if (!check_constructor_type (e->value.constructor, convert))
! 		return false;
! 	    }
  
  	  continue;
  	}
*************** gfc_resolve_character_array_constructor
*** 2261,2270 ****
--- 2291,2304 ----
  {
    gfc_constructor *p;
    HOST_WIDE_INT found_length;
+   bool has_ts;
  
    gcc_assert (expr->expr_type == EXPR_ARRAY);
    gcc_assert (expr->ts.type == BT_CHARACTER);
  
+   /* Check if we have an explicit type-spec with length.  */
+   has_ts = expr->ts.u.cl && expr->ts.u.cl->length_from_typespec;
+ 
    if (expr->ts.u.cl == NULL)
      {
        for (p = gfc_constructor_first (expr->value.constructor);
*************** got_charlen:
*** 2367,2394 ****
        if (found_length != -1)
  	for (p = gfc_constructor_first (expr->value.constructor);
  	     p; p = gfc_constructor_next (p))
! 	  if (p->expr->expr_type == EXPR_CONSTANT)
! 	    {
! 	      gfc_expr *cl = NULL;
! 	      HOST_WIDE_INT current_length = -1;
! 	      bool has_ts;
  
! 	      if (p->expr->ts.u.cl && p->expr->ts.u.cl->length)
  	      {
! 		cl = p->expr->ts.u.cl->length;
! 		gfc_extract_hwi (cl, &current_length);
! 	      }
  
! 	      /* If gfc_extract_int above set current_length, we implicitly
! 		 know the type is BT_INTEGER and it's EXPR_CONSTANT.  */
  
! 	      has_ts = expr->ts.u.cl->length_from_typespec;
  
! 	      if (! cl
! 		  || (current_length != -1 && current_length != found_length))
! 		gfc_set_constant_character_len (found_length, p->expr,
! 						has_ts ? -1 : found_length);
! 	    }
      }
  
    return true;
--- 2401,2456 ----
        if (found_length != -1)
  	for (p = gfc_constructor_first (expr->value.constructor);
  	     p; p = gfc_constructor_next (p))
! 	  {
! 	    /* For non-constant expressions (like EXPR_OP from concatenation),
! 	       try to simplify them first so we can then pad/truncate.  */
! 	    if (p->expr->expr_type != EXPR_CONSTANT
! 		&& p->expr->ts.type == BT_CHARACTER)
! 	      gfc_simplify_expr (p->expr, 0);
  
! 	    if (p->expr->expr_type == EXPR_CONSTANT)
  	      {
! 		gfc_expr *cl = NULL;
! 		HOST_WIDE_INT current_length = -1;
  
! 		if (p->expr->ts.u.cl && p->expr->ts.u.cl->length)
! 		  {
! 		    cl = p->expr->ts.u.cl->length;
! 		    gfc_extract_hwi (cl, &current_length);
! 		  }
  
! 		/* If gfc_extract_int above set current_length, we implicitly
! 		   know the type is BT_INTEGER and it's EXPR_CONSTANT.  */
  
! 		if (! cl
! 		    || (current_length != -1 && current_length != found_length))
! 		  gfc_set_constant_character_len (found_length, p->expr,
! 						  has_ts ? -1 : found_length);
! 	      }
! 	    else if (p->expr->expr_type == EXPR_ARRAY)
! 	      {
! 		/* For nested array constructors, propagate the type-spec and
! 		   recursively resolve.  This handles cases like
! 		   [character(16) :: ['a','b']] // "|".  The inner constructor
! 		   may have BT_UNKNOWN type initially.  */
! 		if (p->expr->ts.type == BT_UNKNOWN
! 		    || p->expr->ts.type == BT_CHARACTER)
! 		  {
! 		    if (p->expr->ts.type == BT_CHARACTER
! 			&& p->expr->ts.u.cl
! 			&& p->expr->ts.u.cl->length_from_typespec)
! 		      {
! 			/* If the inner array has an explicit type-spec, we must
! 			   honor it first (e.g. truncate/pad to its length),
! 			   before coercing it to the outer length.  */
! 			gfc_resolve_character_array_constructor (p->expr);
! 		      }
! 
! 		    p->expr->ts = expr->ts;
! 		    gfc_resolve_character_array_constructor (p->expr);
! 		  }
! 	      }
! 	  }
      }
  
    return true;
diff -Nrcpad gcc-16-20251130/gcc/fortran/decl.cc gcc-16-20251207/gcc/fortran/decl.cc
*** gcc-16-20251130/gcc/fortran/decl.cc	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/fortran/decl.cc	Sun Dec  7 22:32:07 2025
*************** gfc_get_pdt_instance (gfc_actual_arglist
*** 3969,3974 ****
--- 3969,3975 ----
    gfc_expr *kind_expr;
    gfc_component *c1, *c2;
    match m;
+   gfc_symtree *s = NULL;
  
    type_param_spec_list = NULL;
  
*************** gfc_get_pdt_instance (gfc_actual_arglist
*** 3982,3989 ****
    if (gfc_current_state () == COMP_DERIVED
        && !(gfc_state_stack->previous
  	   && gfc_state_stack->previous->state == COMP_DERIVED)
!       && gfc_current_block ()->attr.pdt_template
!       && !strcmp (gfc_current_block ()->name, (*sym)->name))
      {
        if (ext_param_list)
  	*ext_param_list = gfc_copy_actual_arglist (param_list);
--- 3983,3989 ----
    if (gfc_current_state () == COMP_DERIVED
        && !(gfc_state_stack->previous
  	   && gfc_state_stack->previous->state == COMP_DERIVED)
!       && gfc_current_block ()->attr.pdt_template)
      {
        if (ext_param_list)
  	*ext_param_list = gfc_copy_actual_arglist (param_list);
*************** gfc_get_pdt_instance (gfc_actual_arglist
*** 4179,4188 ****
        goto error_return;
      }
  
    m = MATCH_YES;
  
    if (instance->attr.flavor == FL_DERIVED
!       && instance->attr.pdt_type)
      {
        instance->refs++;
        if (ext_param_list)
--- 4179,4207 ----
        goto error_return;
      }
  
+   /* If we are in an interface body, the instance will not have been imported.
+      Make sure that it is imported implicitly.  */
+   s = gfc_find_symtree (gfc_current_ns->sym_root, pdt->name);
+   if (gfc_current_ns->proc_name
+       && gfc_current_ns->proc_name->attr.if_source == IFSRC_IFBODY
+       && s && s->import_only && pdt->attr.imported)
+     {
+       s = gfc_find_symtree (gfc_current_ns->sym_root, instance->name);
+       if (!s)
+ 	{
+ 	  gfc_get_sym_tree (instance->name, gfc_current_ns, &s, false,
+ 			    &gfc_current_locus);
+ 	  s->n.sym = instance;
+ 	}
+       s->n.sym->attr.imported = 1;
+       s->import_only = 1;
+     }
+ 
    m = MATCH_YES;
  
    if (instance->attr.flavor == FL_DERIVED
!       && instance->attr.pdt_type
!       && instance->components)
      {
        instance->refs++;
        if (ext_param_list)
*************** gfc_get_pdt_instance (gfc_actual_arglist
*** 4447,4453 ****
  	  type_param_spec_list = old_param_spec_list;
  
  	  if (!(c2->attr.pointer || c2->attr.allocatable))
! 	    c2->initializer = gfc_default_initializer (&c2->ts);
  
  	  if (c2->attr.allocatable)
  	    instance->attr.alloc_comp = 1;
--- 4466,4490 ----
  	  type_param_spec_list = old_param_spec_list;
  
  	  if (!(c2->attr.pointer || c2->attr.allocatable))
! 	    {
! 	      if (!c1->initializer
! 		  || c1->initializer->expr_type != EXPR_FUNCTION)
! 		c2->initializer = gfc_default_initializer (&c2->ts);
! 	      else
! 		{
! 		  gfc_symtree *s;
! 		  c2->initializer = gfc_copy_expr (c1->initializer);
! 		  s = gfc_find_symtree (pdt->ns->sym_root,
! 				gfc_dt_lower_string (c2->ts.u.derived->name));
! 		  if (s)
! 		    c2->initializer->symtree = s;
! 		  c2->initializer->ts = c2->ts;
! 		  if (!s)
! 		    gfc_insert_parameter_exprs (c2->initializer,
! 						type_param_spec_list);
! 		  gfc_simplify_expr (params->expr, 1);
! 		}
! 	    }
  
  	  if (c2->attr.allocatable)
  	    instance->attr.alloc_comp = 1;
diff -Nrcpad gcc-16-20251130/gcc/fortran/expr.cc gcc-16-20251207/gcc/fortran/expr.cc
*** gcc-16-20251130/gcc/fortran/expr.cc	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/fortran/expr.cc	Sun Dec  7 22:32:07 2025
*************** gfc_is_simply_contiguous (gfc_expr *expr
*** 6406,6411 ****
--- 6406,6419 ----
  	      || (sym->as && sym->as->type == AS_ASSUMED_SHAPE))))
      return false;
  
+   /* An associate variable may point to a non-contiguous target.  */
+   if (ar && ar->type == AR_FULL
+       && sym->attr.associate_var && !sym->attr.contiguous
+       && sym->assoc
+       && sym->assoc->target)
+     return gfc_is_simply_contiguous (sym->assoc->target, strict,
+ 				     permit_element);
+ 
    if (!ar || ar->type == AR_FULL)
      return true;
  
diff -Nrcpad gcc-16-20251130/gcc/fortran/gfortran.texi gcc-16-20251207/gcc/fortran/gfortran.texi
*** gcc-16-20251130/gcc/fortran/gfortran.texi	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/fortran/gfortran.texi	Sun Dec  7 22:32:07 2025
*************** For compatibility, GNU Fortran supports
*** 2535,2544 ****
  constants with @option{-fdec}.  For example, @code{9e} would be
  interpreted as @code{9e0}, rather than an error.
  
- @menu
- * Unsigned integers::
- @end menu
- 
  @node Unsigned integers
  @subsection Unsigned integers
  @cindex Unsigned integers
--- 2535,2540 ----
diff -Nrcpad gcc-16-20251130/gcc/fortran/module.cc gcc-16-20251207/gcc/fortran/module.cc
*** gcc-16-20251130/gcc/fortran/module.cc	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/fortran/module.cc	Sun Dec  7 22:32:07 2025
*************** read_module (void)
*** 5842,5847 ****
--- 5842,5861 ----
  		  || startswith (name, "__vtype_")))
  	    p = name;
  
+ 	  /* Include pdt_types if their associated pdt_template is in a
+ 	     USE, ONLY list.  */
+ 	  if (p == NULL && name[0] == 'P'
+ 	      && startswith (name, "Pdt")
+ 	      && module_list)
+ 	    {
+ 	      gfc_use_list *ml = module_list;
+ 	      for (; ml; ml = ml->next)
+ 		if (ml->rename
+ 		    && !strncmp (&name[3], ml->rename->use_name,
+ 				 strlen (ml->rename->use_name)))
+ 		  p = name;
+ 	    }
+ 
  	  /* Skip symtree nodes not in an ONLY clause, unless there
  	     is an existing symtree loaded from another USE statement.  */
  	  if (p == NULL)
diff -Nrcpad gcc-16-20251130/gcc/fortran/openmp.cc gcc-16-20251207/gcc/fortran/openmp.cc
*** gcc-16-20251130/gcc/fortran/openmp.cc	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/fortran/openmp.cc	Sun Dec  7 22:32:07 2025
*************** resolve_omp_clauses (gfc_code *code, gfc
*** 8977,8984 ****
    if (omp_clauses->num_threads)
      resolve_positive_int_expr (omp_clauses->num_threads, "NUM_THREADS");
    if (omp_clauses->dyn_groupprivate)
!     resolve_positive_int_expr (omp_clauses->dyn_groupprivate,
! 			       "DYN_GROUPPRIVATE");
    if (omp_clauses->chunk_size)
      {
        gfc_expr *expr = omp_clauses->chunk_size;
--- 8977,8984 ----
    if (omp_clauses->num_threads)
      resolve_positive_int_expr (omp_clauses->num_threads, "NUM_THREADS");
    if (omp_clauses->dyn_groupprivate)
!     resolve_nonnegative_int_expr (omp_clauses->dyn_groupprivate,
! 				  "DYN_GROUPPRIVATE");
    if (omp_clauses->chunk_size)
      {
        gfc_expr *expr = omp_clauses->chunk_size;
diff -Nrcpad gcc-16-20251130/gcc/fortran/primary.cc gcc-16-20251207/gcc/fortran/primary.cc
*** gcc-16-20251130/gcc/fortran/primary.cc	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/fortran/primary.cc	Sun Dec  7 22:32:07 2025
*************** gfc_match_varspec (gfc_expr *primary, in
*** 2261,2266 ****
--- 2261,2292 ----
        && !sym->attr.select_rank_temporary)
      inferred_type = true;
  
+   /* Try to resolve a typebound generic procedure so that the associate name
+      has a chance to get a type before being used in a second, nested associate
+      statement. Note that a copy is used for resolution so that failure does
+      not result in a mutilated selector expression further down the line.  */
+   if (tgt_expr && !sym->assoc->dangling
+       && tgt_expr->ts.type == BT_UNKNOWN
+       && tgt_expr->symtree
+       && tgt_expr->symtree->n.sym
+       && gfc_expr_attr (tgt_expr).generic
+       && ((sym->ts.type == BT_DERIVED && sym->ts.u.derived->attr.pdt_template)
+ 	  || (sym->ts.type == BT_CLASS
+ 	      && CLASS_DATA (sym)->ts.u.derived->attr.pdt_template)))
+     {
+ 	gfc_expr *cpy = gfc_copy_expr (tgt_expr);
+ 	if (gfc_resolve_expr (cpy)
+ 	    && cpy->ts.type != BT_UNKNOWN)
+ 	  {
+ 	    gfc_replace_expr (tgt_expr, cpy);
+ 	    sym->ts = tgt_expr->ts;
+ 	  }
+ 	else
+ 	  gfc_free_expr (cpy);
+ 	if (gfc_expr_attr (tgt_expr).generic)
+ 	  inferred_type = true;
+     }
+ 
    /* For associate names, we may not yet know whether they are arrays or not.
       If the selector expression is unambiguously an array; eg. a full array
       or an array section, then the associate name must be an array and we can
*************** gfc_match_varspec (gfc_expr *primary, in
*** 2493,2498 ****
--- 2519,2538 ----
  	       && !gfc_find_derived_types (sym, gfc_current_ns, name))
  	primary->ts.type = BT_UNKNOWN;
  
+       /* Otherwise try resolving a copy of a component call. If it succeeds,
+ 	 use that for the selector expression.  */
+       else if (tgt_expr && tgt_expr->expr_type == EXPR_COMPCALL)
+ 	  {
+ 	     gfc_expr *cpy = gfc_copy_expr (tgt_expr);
+ 	     if (gfc_resolve_expr (cpy))
+ 		{
+ 		  gfc_replace_expr (tgt_expr, cpy);
+ 		  sym->ts = tgt_expr->ts;
+ 		}
+ 	      else
+ 		gfc_free_expr (cpy);
+ 	  }
+ 
        /* An inquiry reference might determine the type, otherwise we have an
  	 error.  */
        if (sym->ts.type == BT_UNKNOWN && !inquiry)
*************** gfc_match_rvalue (gfc_expr **result)
*** 4173,4183 ****
  		  symtree->n.sym->ts.type = BT_DERIVED;
  		}
  
! 	      /* Append the type_params and the component_values.  */
! 	      for (tmp = ctr_arglist; tmp && tmp->next;)
! 		tmp = tmp->next;
! 	      tmp->next = actual_arglist;
! 	      actual_arglist = ctr_arglist;
  	    }
  	}
  
--- 4213,4233 ----
  		  symtree->n.sym->ts.type = BT_DERIVED;
  		}
  
! 	      if (type_spec_list)
! 		{
! 		  /* Append the type_params and the component_values.  */
! 		  for (tmp = ctr_arglist; tmp && tmp->next;)
! 		    tmp = tmp->next;
! 		  tmp->next = actual_arglist;
! 		  actual_arglist = ctr_arglist;
! 		  tmp = actual_arglist;
! 		  /* Can now add all the component names.  */
! 		  for (c = pdt_sym->components; c && tmp; c = c->next)
! 		    {
! 		      tmp->name = c->name;
! 		      tmp = tmp->next;
! 		    }
! 		}
  	    }
  	}
  
diff -Nrcpad gcc-16-20251130/gcc/fortran/resolve.cc gcc-16-20251207/gcc/fortran/resolve.cc
*** gcc-16-20251130/gcc/fortran/resolve.cc	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/fortran/resolve.cc	Sun Dec  7 22:32:07 2025
*************** done_errmsg:
*** 9799,9806 ****
        /* Resolving the expr3 in the loop over all objects to allocate would
  	 execute loop invariant code for each loop item.  Therefore do it just
  	 once here.  */
        if (code->expr3 && code->expr3->mold
! 	  && code->expr3->ts.type == BT_DERIVED)
  	{
  	  /* Default initialization via MOLD (non-polymorphic).  */
  	  gfc_expr *rhs = gfc_default_initializer (&code->expr3->ts);
--- 9799,9808 ----
        /* Resolving the expr3 in the loop over all objects to allocate would
  	 execute loop invariant code for each loop item.  Therefore do it just
  	 once here.  */
+       mpz_t nelem;
        if (code->expr3 && code->expr3->mold
! 	  && code->expr3->ts.type == BT_DERIVED
! 	  && !(code->expr3->ref && gfc_array_size (code->expr3, &nelem)))
  	{
  	  /* Default initialization via MOLD (non-polymorphic).  */
  	  gfc_expr *rhs = gfc_default_initializer (&code->expr3->ts);
*************** skip_interfaces:
*** 18143,18148 ****
--- 18145,18151 ----
  
    /* F2008, C530.  */
    if (sym->attr.contiguous
+       && !sym->attr.associate_var
        && (!class_attr.dimension
  	  || (as->type != AS_ASSUMED_SHAPE && as->type != AS_ASSUMED_RANK
  	      && !class_attr.pointer)))
diff -Nrcpad gcc-16-20251130/gcc/fortran/trans-decl.cc gcc-16-20251207/gcc/fortran/trans-decl.cc
*** gcc-16-20251130/gcc/fortran/trans-decl.cc	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/fortran/trans-decl.cc	Sun Dec  7 22:32:07 2025
*************** gfc_trans_vla_type_sizes (gfc_symbol *sy
*** 4566,4572 ****
     and using trans_assignment to do the work. Set dealloc to false
     if no deallocation prior the assignment is needed.  */
  void
! gfc_init_default_dt (gfc_symbol * sym, stmtblock_t * block, bool dealloc)
  {
    gfc_expr *e;
    tree tmp;
--- 4566,4573 ----
     and using trans_assignment to do the work. Set dealloc to false
     if no deallocation prior the assignment is needed.  */
  void
! gfc_init_default_dt (gfc_symbol * sym, stmtblock_t * block, bool dealloc,
! 		     bool pdt_ok)
  {
    gfc_expr *e;
    tree tmp;
*************** gfc_init_default_dt (gfc_symbol * sym, s
*** 4575,4581 ****
    gcc_assert (block);
  
    /* Initialization of PDTs is done elsewhere.  */
!   if (sym->ts.type == BT_DERIVED && sym->ts.u.derived->attr.pdt_type)
      return;
  
    gcc_assert (!sym->attr.allocatable);
--- 4576,4583 ----
    gcc_assert (block);
  
    /* Initialization of PDTs is done elsewhere.  */
!   if (sym->ts.type == BT_DERIVED && sym->ts.u.derived->attr.pdt_type
!       && !pdt_ok)
      return;
  
    gcc_assert (!sym->attr.allocatable);
*************** gfc_init_default_dt (gfc_symbol * sym, s
*** 4594,4599 ****
--- 4596,4623 ----
  }
  
  
+ /* Initialize a PDT, when all the components have an initializer.  */
+ static void
+ gfc_init_default_pdt (gfc_symbol *sym, stmtblock_t *block, bool dealloc)
+ {
+   /* Allowed in the case where all the components have initializers and
+      there are no LEN components.  */
+   if (sym->ts.type == BT_DERIVED && sym->ts.u.derived->attr.pdt_type)
+     {
+       gfc_component *c = sym->ts.u.derived->components;
+       if (!dealloc || !sym->value || sym->value->expr_type != EXPR_STRUCTURE)
+ 	return;
+       for (; c; c = c->next)
+ 	if (c->attr.pdt_len || !c->initializer)
+ 	  return;
+     }
+   else
+     return;
+   gfc_init_default_dt (sym, block, dealloc, true);
+   return;
+ }
+ 
+ 
  /* Initialize INTENT(OUT) derived type dummies.  As well as giving
     them their default initializer, if they have allocatable
     components, they have their allocatable components deallocated.  */
*************** gfc_trans_deferred_vars (gfc_symbol * pr
*** 4985,4990 ****
--- 5009,5017 ----
  		  gfc_add_expr_to_block (&tmpblock, tmp);
  		}
  
+ 	      if (is_pdt_type)
+ 		gfc_init_default_pdt (sym, &tmpblock, true);
+ 
  	      if (!sym->attr.result && !sym->ts.u.derived->attr.alloc_comp)
  		tmp = gfc_deallocate_pdt_comp (sym->ts.u.derived,
  					       sym->backend_decl,
diff -Nrcpad gcc-16-20251130/gcc/fortran/trans-openmp.cc gcc-16-20251207/gcc/fortran/trans-openmp.cc
*** gcc-16-20251130/gcc/fortran/trans-openmp.cc	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/fortran/trans-openmp.cc	Sun Dec  7 22:32:07 2025
*************** gfc_trans_omp_clauses (stmtblock_t *bloc
*** 5267,5287 ****
  
    if (clauses->dyn_groupprivate)
      {
-       sorry_at (gfc_get_location (&where), "%<dyn_groupprivate%> clause");
- #if 0  /* FIXME: Handle it, including 'fallback(abort/default_mem/null)'  */
-       tree dyn_groupprivate;
- 
        gfc_init_se (&se, NULL);
        gfc_conv_expr (&se, clauses->dyn_groupprivate);
        gfc_add_block_to_block (block, &se.pre);
!       dyn_groupprivate = gfc_evaluate_now (se.expr, block);
        gfc_add_block_to_block (block, &se.post);
  
        c = build_omp_clause (gfc_get_location (&where),
  			    OMP_CLAUSE_DYN_GROUPPRIVATE);
!       OMP_CLAUSE_NUM_THREADS_EXPR (c) = num_threads;
        omp_clauses = gfc_trans_add_clause (c, omp_clauses);
- #endif
      }
  
    chunk_size = NULL_TREE;
--- 5267,5299 ----
  
    if (clauses->dyn_groupprivate)
      {
        gfc_init_se (&se, NULL);
        gfc_conv_expr (&se, clauses->dyn_groupprivate);
        gfc_add_block_to_block (block, &se.pre);
!       tree expr = (CONSTANT_CLASS_P (se.expr) || DECL_P (se.expr)
! 		   ? se.expr : gfc_evaluate_now (se.expr, block));
        gfc_add_block_to_block (block, &se.post);
  
+       enum omp_clause_fallback_kind kind = OMP_CLAUSE_FALLBACK_UNSPECIFIED;
+       switch (clauses->fallback)
+ 	{
+ 	case OMP_FALLBACK_ABORT:
+ 	  kind = OMP_CLAUSE_FALLBACK_ABORT;
+ 	  break;
+ 	case OMP_FALLBACK_DEFAULT_MEM:
+ 	  kind = OMP_CLAUSE_FALLBACK_DEFAULT_MEM;
+ 	  break;
+ 	case OMP_FALLBACK_NULL:
+ 	  kind = OMP_CLAUSE_FALLBACK_NULL;
+ 	  break;
+ 	case OMP_FALLBACK_NONE:
+ 	  break;
+ 	}
        c = build_omp_clause (gfc_get_location (&where),
  			    OMP_CLAUSE_DYN_GROUPPRIVATE);
!       OMP_CLAUSE_DYN_GROUPPRIVATE_KIND (c) = kind;
!       OMP_CLAUSE_DYN_GROUPPRIVATE_EXPR (c) = expr;
        omp_clauses = gfc_trans_add_clause (c, omp_clauses);
      }
  
    chunk_size = NULL_TREE;
diff -Nrcpad gcc-16-20251130/gcc/fortran/trans.h gcc-16-20251207/gcc/fortran/trans.h
*** gcc-16-20251130/gcc/fortran/trans.h	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/fortran/trans.h	Sun Dec  7 22:32:07 2025
*************** tree gfc_get_symbol_decl (gfc_symbol *);
*** 666,672 ****
  tree gfc_conv_initializer (gfc_expr *, gfc_typespec *, tree, bool, bool, bool);
  
  /* Assign a default initializer to a derived type.  */
! void gfc_init_default_dt (gfc_symbol *, stmtblock_t *, bool);
  
  /* Substitute a temporary variable in place of the real one.  */
  void gfc_shadow_sym (gfc_symbol *, tree, gfc_saved_var *);
--- 666,673 ----
  tree gfc_conv_initializer (gfc_expr *, gfc_typespec *, tree, bool, bool, bool);
  
  /* Assign a default initializer to a derived type.  */
! void gfc_init_default_dt (gfc_symbol *, stmtblock_t *, bool,
! 			  bool pdt_ok = false);
  
  /* Substitute a temporary variable in place of the real one.  */
  void gfc_shadow_sym (gfc_symbol *, tree, gfc_saved_var *);
diff -Nrcpad gcc-16-20251130/gcc/gimple-range-fold.cc gcc-16-20251207/gcc/gimple-range-fold.cc
*** gcc-16-20251130/gcc/gimple-range-fold.cc	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/gimple-range-fold.cc	Sun Dec  7 22:32:07 2025
*************** fur_source::query_relation (tree op1 ATT
*** 89,112 ****
    return VREL_VARYING;
  }
  
! // Default registers nothing.
  
! void
  fur_source::register_relation (gimple *s ATTRIBUTE_UNUSED,
  			       relation_kind k ATTRIBUTE_UNUSED,
  			       tree op1 ATTRIBUTE_UNUSED,
  			       tree op2 ATTRIBUTE_UNUSED)
  {
  }
  
! // Default registers nothing.
  
! void
  fur_source::register_relation (edge e ATTRIBUTE_UNUSED,
  			       relation_kind k ATTRIBUTE_UNUSED,
  			       tree op1 ATTRIBUTE_UNUSED,
  			       tree op2 ATTRIBUTE_UNUSED)
  {
  }
  
  // Get the value of EXPR on edge m_edge.
--- 89,114 ----
    return VREL_VARYING;
  }
  
! // Default registers nothing and returns false meaning nothing changed.
  
! bool
  fur_source::register_relation (gimple *s ATTRIBUTE_UNUSED,
  			       relation_kind k ATTRIBUTE_UNUSED,
  			       tree op1 ATTRIBUTE_UNUSED,
  			       tree op2 ATTRIBUTE_UNUSED)
  {
+   return false;
  }
  
! // Default registers nothing and returns false meaning nothing changed.
  
! bool
  fur_source::register_relation (edge e ATTRIBUTE_UNUSED,
  			       relation_kind k ATTRIBUTE_UNUSED,
  			       tree op1 ATTRIBUTE_UNUSED,
  			       tree op2 ATTRIBUTE_UNUSED)
  {
+   return false;
  }
  
  // Get the value of EXPR on edge m_edge.
*************** fur_depend::fur_depend (gimple *s, range
*** 170,181 ****
    m_depend_p = true;
  }
  
! // Register a relation on a stmt if there is an oracle.
  
! void
  fur_depend::register_relation (gimple *s, relation_kind k, tree op1, tree op2)
  {
!   m_query->relation ().record (s, k, op1, op2);
    // This new relation could cause different calculations, so mark the operands
    // with a new timestamp, forcing recalculations.
    if (m_cache)
--- 172,186 ----
    m_depend_p = true;
  }
  
! // Register a relation on a stmt if there is an oracle.  Return false if
! // no new relation is registered.
  
! bool
  fur_depend::register_relation (gimple *s, relation_kind k, tree op1, tree op2)
  {
!   if (!m_query->relation ().record (s, k, op1, op2))
!     return false;
! 
    // This new relation could cause different calculations, so mark the operands
    // with a new timestamp, forcing recalculations.
    if (m_cache)
*************** fur_depend::register_relation (gimple *s
*** 183,196 ****
        m_cache->update_consumers (op1);
        m_cache->update_consumers (op2);
      }
  }
  
! // Register a relation on an edge if there is an oracle.
  
! void
  fur_depend::register_relation (edge e, relation_kind k, tree op1, tree op2)
  {
!   m_query->relation ().record (e, k, op1, op2);
    // This new relation could cause different calculations, so mark the operands
    // with a new timestamp, forcing recalculations.
    if (m_cache)
--- 188,205 ----
        m_cache->update_consumers (op1);
        m_cache->update_consumers (op2);
      }
+   return true;
  }
  
! // Register a relation on an edge if there is an oracle.  Return false if
! // no new relation is registered.
  
! bool
  fur_depend::register_relation (edge e, relation_kind k, tree op1, tree op2)
  {
!   if (!m_query->relation ().record (e, k, op1, op2))
!     return false;
! 
    // This new relation could cause different calculations, so mark the operands
    // with a new timestamp, forcing recalculations.
    if (m_cache)
*************** fur_depend::register_relation (edge e, r
*** 198,203 ****
--- 207,213 ----
        m_cache->update_consumers (op1);
        m_cache->update_consumers (op2);
      }
+   return true;
  }
  
  // This version of fur_source will pick a range up from a list of ranges
*************** class fur_relation : public fur_stmt
*** 400,408 ****
  {
  public:
    fur_relation (gimple *s, range_query *q = NULL);
!   virtual void register_relation (gimple *stmt, relation_kind k, tree op1,
  				  tree op2);
!   virtual void register_relation (edge e, relation_kind k, tree op1,
  				  tree op2);
    relation_trio trio() const;
  private:
--- 410,418 ----
  {
  public:
    fur_relation (gimple *s, range_query *q = NULL);
!   virtual bool register_relation (gimple *stmt, relation_kind k, tree op1,
  				  tree op2);
!   virtual bool register_relation (edge e, relation_kind k, tree op1,
  				  tree op2);
    relation_trio trio() const;
  private:
*************** fur_relation::trio () const
*** 423,437 ****
  }
  
  // Don't support edges, but avoid a compiler warning by providing the routine.
  
! void
  fur_relation::register_relation (edge, relation_kind, tree, tree)
  {
  }
  
! // Register relation K between OP1 and OP2 on STMT.
  
! void
  fur_relation::register_relation (gimple *stmt, relation_kind k, tree op1,
  				 tree op2)
  {
--- 433,450 ----
  }
  
  // Don't support edges, but avoid a compiler warning by providing the routine.
+ // Return false indicating nothing has changed.
  
! bool
  fur_relation::register_relation (edge, relation_kind, tree, tree)
  {
+   return false;
  }
  
! // Register relation K between OP1 and OP2 on STMT.  Return false if there
! // is no relation.
  
! bool
  fur_relation::register_relation (gimple *stmt, relation_kind k, tree op1,
  				 tree op2)
  {
*************** fur_relation::register_relation (gimple
*** 475,480 ****
--- 488,495 ----
        else if (op2 == a1 && op1 == a2)
  	op1_op2 = relation_swap (k);
      }
+   return def_op1 == VREL_VARYING && def_op2 == VREL_VARYING
+ 	 && op1_op2 == VREL_VARYING;
  }
  
  // Return the relation trio for stmt S using query Q.
*************** fold_using_range::fold_stmt (vrange &r,
*** 652,661 ****
    if (!name)
      name = gimple_get_lhs (s);
  
!   // Process addresses.
!   if (gimple_code (s) == GIMPLE_ASSIGN
!       && gimple_assign_rhs_code (s) == ADDR_EXPR)
!     return range_of_address (as_a <prange> (r), s, src);
  
    gimple_range_op_handler handler (s);
    if (handler)
--- 667,680 ----
    if (!name)
      name = gimple_get_lhs (s);
  
!   // Process addresses and loads from static constructors.
!   if (gimple_code (s) == GIMPLE_ASSIGN)
!     {
!       if (gimple_assign_rhs_code (s) == ADDR_EXPR)
! 	return range_of_address (as_a <prange> (r), s, src);
!       if (range_from_readonly_var (r, s))
! 	return true;
!     }
  
    gimple_range_op_handler handler (s);
    if (handler)
*************** fold_using_range::range_of_address (pran
*** 904,909 ****
--- 923,1117 ----
    return true;
  }
  
+ /* If TYPE is a pointer, return false.  Otherwise, add zero of TYPE (which must
+    be an integer) to R and return true.  */
+ 
+ static bool
+ range_from_missing_constructor_part (vrange &r, tree type)
+ {
+   if (POINTER_TYPE_P (type))
+     return false;
+   gcc_checking_assert (irange::supports_p (type));
+   wide_int zero = wi::zero (TYPE_PRECISION (type));
+   r.union_ (int_range<1> (type, zero, zero));
+   return true;
+ }
+ 
+ // One step of fold_using_range::range_from_readonly_var.  Process expressions
+ // in COMPS which together load a value of TYPE, from index I to 0 according to
+ // the corresponding static initializer in CST which should be either a scalar
+ // invariant or a constructor.  Currently TYPE must be either a pointer or an
+ // integer.  If TYPE is a pointer, return true if all potentially loaded values
+ // are known not to be zero and false if any of them can be zero.  Otherwise
+ // return true if it is possible to add all constants which can be loaded from
+ // CST (which must be storable to TYPE) to R and do so.
+ // TODO: Add support for franges.
+ 
+ static bool
+ range_from_readonly_load (vrange &r, tree type, tree cst,
+ 			  const vec <tree> &comps, unsigned i)
+ {
+   if (i == 0)
+     {
+       if (!useless_type_conversion_p (type, TREE_TYPE (cst)))
+ 	return false;
+ 
+       if (POINTER_TYPE_P (type))
+ 	{
+ 	  bool strict_overflow_p;
+ 	  return tree_single_nonzero_warnv_p (cst, &strict_overflow_p);
+ 	}
+ 
+       if (TREE_CODE (cst) != INTEGER_CST)
+ 	return false;
+ 
+       wide_int wi_cst = wi::to_wide (cst);
+       r.union_ (int_range<1> (type, wi_cst, wi_cst));
+       return true;
+     }
+   /* TODO: Perhaps handle RAW_DATA_CST too.  */
+   if (TREE_CODE (cst) != CONSTRUCTOR)
+     return false;
+ 
+   i--;
+   tree expr = comps[i];
+   unsigned ix;
+   tree index, val;
+ 
+   if (TREE_CODE (expr) == COMPONENT_REF)
+     {
+       tree ref_fld = TREE_OPERAND (expr, 1);
+       FOR_EACH_CONSTRUCTOR_ELT (CONSTRUCTOR_ELTS (cst), ix, index, val)
+ 	{
+ 	  if (index != ref_fld)
+ 	    continue;
+ 	  return range_from_readonly_load (r, type, val, comps, i);
+ 	}
+       if (TREE_CODE (TREE_TYPE (cst)) == RECORD_TYPE)
+ 	return range_from_missing_constructor_part (r, type);
+       else
+ 	/* Missing constructor of a union field just isn't like other missing
+ 	   constructor parts.  */
+ 	return false;
+     }
+ 
+   gcc_assert (TREE_CODE (expr) == ARRAY_REF);
+   tree op1 = TREE_OPERAND (expr, 1);
+ 
+   if (TREE_CODE (op1) == INTEGER_CST)
+     {
+       unsigned ctor_idx;
+       val = get_array_ctor_element_at_index (cst, wi::to_offset (op1),
+ 					     &ctor_idx);
+       if (!val)
+ 	{
+ 	  if (ctor_idx < CONSTRUCTOR_NELTS (cst))
+ 	    return false;
+ 	  return range_from_missing_constructor_part (r, type);
+ 	}
+       return range_from_readonly_load (r, type, val, comps, i);
+     }
+ 
+   tree arr_type = TREE_TYPE (cst);
+   tree domain = TYPE_DOMAIN (arr_type);
+   if (!TYPE_MIN_VALUE (domain)
+       || !TYPE_MAX_VALUE (domain)
+       || !tree_fits_uhwi_p (TYPE_MIN_VALUE (domain))
+       || !tree_fits_uhwi_p (TYPE_MAX_VALUE (domain)))
+     return false;
+   unsigned HOST_WIDE_INT needed_count
+     = (tree_to_uhwi (TYPE_MAX_VALUE (domain))
+        - tree_to_uhwi (TYPE_MIN_VALUE (domain)) + 1);
+   if (CONSTRUCTOR_NELTS (cst) < needed_count)
+     {
+       if (!range_from_missing_constructor_part (r, type))
+ 	return false;
+     }
+ 
+   FOR_EACH_CONSTRUCTOR_ELT (CONSTRUCTOR_ELTS (cst), ix, index, val)
+     {
+       /* TODO: If the array index in the expr is an SSA_NAME with a known
+ 	 range, we could use just values loaded from the corresponding array
+ 	 elements.  */
+       if (!range_from_readonly_load (r, type, val, comps, i))
+ 	return false;
+     }
+ 
+   return true;
+ }
+ 
+ // Attempt to calculate the range of value loaded by STMT (which must be an
+ // assignment) if it is a load from a read-only aggregate variable.  If
+ // successful, return true and set the discovered range in R.  Otherwise return
+ // false and leave R untouched.
+ 
+ bool
+ fold_using_range::range_from_readonly_var (vrange &r, gimple *stmt)
+ {
+   gcc_checking_assert (gimple_code (stmt) == GIMPLE_ASSIGN);
+   tree type = TREE_TYPE (gimple_assign_lhs (stmt));
+   /* TODO: Add support for frange.  */
+   if (!irange::supports_p (type)
+       && !prange::supports_p (type))
+     return false;
+ 
+   unsigned HOST_WIDE_INT limit = param_vrp_cstload_limit;
+   if (!limit)
+     return false;
+ 
+   tree t = gimple_assign_rhs1 (stmt);
+   if (!tree_fits_uhwi_p (TYPE_SIZE_UNIT (TREE_TYPE (t))))
+     return false;
+   limit *= tree_to_uhwi (TYPE_SIZE_UNIT (TREE_TYPE (t)));
+ 
+   unsigned count = 0;
+   while (TREE_CODE (t) == ARRAY_REF
+ 	 || TREE_CODE (t) == COMPONENT_REF)
+     {
+       count++;
+       t = TREE_OPERAND (t, 0);
+     }
+   if (!count
+       || (TREE_CODE (t) != VAR_DECL
+ 	  && TREE_CODE (t) != CONST_DECL))
+     return false;
+ 
+   if (!tree_fits_uhwi_p (DECL_SIZE_UNIT (t))
+       || tree_to_uhwi (DECL_SIZE_UNIT (t)) > limit)
+     return false;
+ 
+   /* TODO: We perhaps should try to handle at least some cases when the
+      declaration is wrapped in a MEM_REF, but we need to be careful to look at
+      the right part of the constructor then.  */
+   tree ctor = ctor_for_folding (t);
+   if (!ctor
+       || TREE_CODE (ctor) != CONSTRUCTOR)
+     return false;
+ 
+   t = gimple_assign_rhs1 (stmt);
+   auto_vec <tree, 4> comps;
+   comps.safe_grow (count, true);
+   int i = 0;
+   while (TREE_CODE (t) == ARRAY_REF
+ 	 || TREE_CODE (t) == COMPONENT_REF)
+     {
+       comps[i] = t;
+       t = TREE_OPERAND (t, 0);
+       i++;
+     }
+ 
+   value_range tmp (type);
+   bool res = range_from_readonly_load (tmp, type, ctor, comps, count);
+   if (res)
+     {
+       if (POINTER_TYPE_P (type))
+ 	r.set_nonzero (type);
+       else
+ 	r = tmp;
+     }
+   return res;
+ }
+ 
  // Calculate a range for phi statement S and return it in R.
  // If a range cannot be calculated, return false.
  
diff -Nrcpad gcc-16-20251130/gcc/gimple-range-fold.h gcc-16-20251207/gcc/gimple-range-fold.h
*** gcc-16-20251130/gcc/gimple-range-fold.h	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/gimple-range-fold.h	Sun Dec  7 22:32:07 2025
*************** public:
*** 113,121 ****
    virtual bool get_operand (vrange &r, tree expr);
    virtual bool get_phi_operand (vrange &r, tree expr, edge e);
    virtual relation_kind query_relation (tree op1, tree op2);
!   virtual void register_relation (gimple *stmt, relation_kind k, tree op1,
  				  tree op2);
!   virtual void register_relation (edge e, relation_kind k, tree op1,
  				  tree op2);
    void register_outgoing_edges (gcond *, irange &lhs_range, edge e0, edge e1);
  protected:
--- 113,121 ----
    virtual bool get_operand (vrange &r, tree expr);
    virtual bool get_phi_operand (vrange &r, tree expr, edge e);
    virtual relation_kind query_relation (tree op1, tree op2);
!   virtual bool register_relation (gimple *stmt, relation_kind k, tree op1,
  				  tree op2);
!   virtual bool register_relation (edge e, relation_kind k, tree op1,
  				  tree op2);
    void register_outgoing_edges (gcond *, irange &lhs_range, edge e0, edge e1);
  protected:
*************** class fur_depend : public fur_stmt
*** 144,152 ****
  {
  public:
    fur_depend (gimple *s, range_query *q = NULL, class ranger_cache *c = NULL);
!   virtual void register_relation (gimple *stmt, relation_kind k, tree op1,
  				  tree op2) override;
!   virtual void register_relation (edge e, relation_kind k, tree op1,
  				  tree op2) override;
  private:
    ranger_cache *m_cache;
--- 144,152 ----
  {
  public:
    fur_depend (gimple *s, range_query *q = NULL, class ranger_cache *c = NULL);
!   virtual bool register_relation (gimple *stmt, relation_kind k, tree op1,
  				  tree op2) override;
!   virtual bool register_relation (edge e, relation_kind k, tree op1,
  				  tree op2) override;
  private:
    ranger_cache *m_cache;
*************** protected:
*** 182,187 ****
--- 182,188 ----
    bool range_of_call (vrange &r, gcall *call, fur_source &src);
    bool range_of_cond_expr (vrange &r, gassign* cond, fur_source &src);
    bool range_of_address (prange &r, gimple *s, fur_source &src);
+   bool range_from_readonly_var (vrange &r, gimple *stmt);
    bool range_of_phi (vrange &r, gphi *phi, fur_source &src);
    void range_of_ssa_name_with_loop_info (vrange &, tree, class loop *, gphi *,
  					 fur_source &src);
diff -Nrcpad gcc-16-20251130/gcc/gimple-range-path.cc gcc-16-20251207/gcc/gimple-range-path.cc
*** gcc-16-20251130/gcc/gimple-range-path.cc	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/gimple-range-path.cc	Sun Dec  7 22:32:07 2025
*************** class jt_fur_source : public fur_depend
*** 615,622 ****
  public:
    jt_fur_source (gimple *s, path_range_query *, const vec<basic_block> &);
    relation_kind query_relation (tree op1, tree op2) override;
!   void register_relation (gimple *, relation_kind, tree op1, tree op2) override;
!   void register_relation (edge, relation_kind, tree op1, tree op2) override;
  private:
    basic_block m_entry;
  };
--- 615,622 ----
  public:
    jt_fur_source (gimple *s, path_range_query *, const vec<basic_block> &);
    relation_kind query_relation (tree op1, tree op2) override;
!   bool register_relation (gimple *, relation_kind, tree op1, tree op2) override;
!   bool register_relation (edge, relation_kind, tree op1, tree op2) override;
  private:
    basic_block m_entry;
  };
*************** jt_fur_source::jt_fur_source (gimple *s,
*** 631,650 ****
    m_entry = path[path.length () - 1];
  }
  
! // Ignore statement and register relation on entry to path.
  
! void
  jt_fur_source::register_relation (gimple *, relation_kind k, tree op1, tree op2)
  {
!   m_query->relation ().record (m_entry, k, op1, op2);
  }
  
! // Ignore edge and register relation on entry to path.
  
! void
  jt_fur_source::register_relation (edge, relation_kind k, tree op1, tree op2)
  {
!   m_query->relation ().record (m_entry, k, op1, op2);
  }
  
  relation_kind
--- 631,652 ----
    m_entry = path[path.length () - 1];
  }
  
! // Ignore statement and register relation on entry to path.  Return false if
! // no new relation is registered.
  
! bool
  jt_fur_source::register_relation (gimple *, relation_kind k, tree op1, tree op2)
  {
!   return m_query->relation ().record (m_entry, k, op1, op2);
  }
  
! // Ignore edge and register relation on entry to path.  Return false if no
! // new relation is registered.
  
! bool
  jt_fur_source::register_relation (edge, relation_kind k, tree op1, tree op2)
  {
!   return m_query->relation ().record (m_entry, k, op1, op2);
  }
  
  relation_kind
diff -Nrcpad gcc-16-20251130/gcc/gimplify.cc gcc-16-20251207/gcc/gimplify.cc
*** gcc-16-20251130/gcc/gimplify.cc	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/gimplify.cc	Sun Dec  7 22:32:07 2025
*************** gimplify_scan_omp_clauses (tree *list_p,
*** 14881,14886 ****
--- 14881,14891 ----
  	case OMP_CLAUSE_DESTROY:
  	  break;
  
+ 	case OMP_CLAUSE_DYN_GROUPPRIVATE:
+ 	  remove = true;
+ 	  sorry_at (OMP_CLAUSE_LOCATION (c),"%<dyn_groupprivate%> clause");
+ 	  break;
+ 
  	case OMP_CLAUSE_ORDER:
  	  ctx->order_concurrent = true;
  	  break;
diff -Nrcpad gcc-16-20251130/gcc/go/ChangeLog gcc-16-20251207/gcc/go/ChangeLog
*** gcc-16-20251130/gcc/go/ChangeLog	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/go/ChangeLog	Sun Dec  7 22:32:07 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-11-30  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* lang.opt.urls: Regenerate.
+ 
  2025-11-20  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
  
  	* gospec.cc (lang_specific_driver) [TARGET_SOLARIS]: Replace
diff -Nrcpad gcc-16-20251130/gcc/hard-reg-set.h gcc-16-20251207/gcc/hard-reg-set.h
*** gcc-16-20251130/gcc/hard-reg-set.h	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/hard-reg-set.h	Sun Dec  7 22:32:07 2025
*************** struct hard_reg_set_iterator
*** 342,349 ****
  
  #define HARD_REG_ELT_BITS UHOST_BITS_PER_WIDE_INT
  
! /* The implementation of the iterator functions is fully analogous to
!    the bitmap iterators.  */
  inline void
  hard_reg_set_iter_init (hard_reg_set_iterator *iter, const_hard_reg_set set,
                          unsigned min, unsigned *regno)
--- 342,349 ----
  
  #define HARD_REG_ELT_BITS UHOST_BITS_PER_WIDE_INT
  
! /* The implementation of the iterator functions is a simplified version of
!    those of bitmap iterators.  */
  inline void
  hard_reg_set_iter_init (hard_reg_set_iterator *iter, const_hard_reg_set set,
                          unsigned min, unsigned *regno)
*************** hard_reg_set_iter_init (hard_reg_set_ite
*** 360,370 ****
      {
        iter->bits = iter->pelt[iter->word_no];
        iter->bits >>= min % HARD_REG_ELT_BITS;
! 
!       /* This is required for correct search of the next bit.  */
!       min += !iter->bits;
      }
-   *regno = min;
  }
  
  inline bool
--- 360,367 ----
      {
        iter->bits = iter->pelt[iter->word_no];
        iter->bits >>= min % HARD_REG_ELT_BITS;
!       *regno = min;
      }
  }
  
  inline bool
*************** hard_reg_set_iter_set (hard_reg_set_iter
*** 378,414 ****
  
        if (iter->bits)
          {
!           /* Find the correct bit and return it.  */
!           while (!(iter->bits & 1))
!             {
!               iter->bits >>= 1;
!               *regno += 1;
!             }
            return (*regno < FIRST_PSEUDO_REGISTER);
          }
  
-       /* Round to the beginning of the next word.  */
-       *regno = (*regno + HARD_REG_ELT_BITS - 1);
-       *regno -= *regno % HARD_REG_ELT_BITS;
- 
        /* Find the next non-zero word.  */
        while (++iter->word_no < iter->length)
          {
            iter->bits = iter->pelt[iter->word_no];
            if (iter->bits)
!             break;
!           *regno += HARD_REG_ELT_BITS;
          }
      }
  }
  
  inline void
! hard_reg_set_iter_next (hard_reg_set_iterator *iter, unsigned *regno)
  {
!   iter->bits >>= 1;
!   *regno += 1;
  }
  
  #define EXECUTE_IF_SET_IN_HARD_REG_SET(SET, MIN, REGNUM, ITER)          \
    for (hard_reg_set_iter_init (&(ITER), (SET), (MIN), &(REGNUM));       \
         hard_reg_set_iter_set (&(ITER), &(REGNUM));                      \
--- 375,408 ----
  
        if (iter->bits)
          {
! 	  unsigned skip = ctz_hwi (iter->bits);
! 	  iter->bits >>= skip;
! 	  *regno += skip;
            return (*regno < FIRST_PSEUDO_REGISTER);
          }
  
        /* Find the next non-zero word.  */
        while (++iter->word_no < iter->length)
          {
            iter->bits = iter->pelt[iter->word_no];
            if (iter->bits)
! 	    {
! 	      *regno = iter->word_no * HARD_REG_ELT_BITS;
! 	      break;
! 	    }
          }
      }
  }
  
  inline void
! hard_reg_set_iter_next (hard_reg_set_iterator *iter, unsigned *)
  {
!   /* Only clear the bit, so that we skip it in iter_set.  */
!   iter->bits &= ~ HARD_CONST (1);
  }
  
+ /* SET must not change throughout the iteration.
+    REGNUM (and ITER) may only be changed by the iteration functions.  */
  #define EXECUTE_IF_SET_IN_HARD_REG_SET(SET, MIN, REGNUM, ITER)          \
    for (hard_reg_set_iter_init (&(ITER), (SET), (MIN), &(REGNUM));       \
         hard_reg_set_iter_set (&(ITER), &(REGNUM));                      \
diff -Nrcpad gcc-16-20251130/gcc/ira-color.cc gcc-16-20251207/gcc/ira-color.cc
*** gcc-16-20251130/gcc/ira-color.cc	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/ira-color.cc	Sun Dec  7 22:32:07 2025
*************** improve_allocation (void)
*** 3369,3374 ****
--- 3369,3377 ----
        for (j = 0; j < class_size; j++)
  	{
  	  hregno = ira_class_hard_regs[aclass][j];
+ 	  if (NUM_REGISTER_FILTERS
+ 	      && !test_register_filters (ALLOCNO_REGISTER_FILTERS (a), hregno))
+ 	    continue;
  	  if (check_hard_reg_p (a, hregno,
  				conflicting_regs, profitable_hard_regs)
  	      && min_cost > costs[hregno])
diff -Nrcpad gcc-16-20251130/gcc/lra-assigns.cc gcc-16-20251207/gcc/lra-assigns.cc
*** gcc-16-20251130/gcc/lra-assigns.cc	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/lra-assigns.cc	Sun Dec  7 22:32:07 2025
*************** init_live_reload_and_inheritance_pseudos
*** 419,430 ****
    for (p = 0; p < lra_live_max_point; p++)
      bitmap_initialize (&live_reload_and_inheritance_pseudos[p],
  		       &live_reload_and_inheritance_pseudos_bitmap_obstack);
    for (i = lra_constraint_new_regno_start; i < max_regno; i++)
      {
        for (r = lra_reg_info[i].live_ranges; r != NULL; r = r->next)
! 	for (p = r->start; p <= r->finish; p++)
! 	  bitmap_set_bit (&live_reload_and_inheritance_pseudos[p], i);
      }
  }
  
  /* Finalize data about living reload pseudos at any given program
--- 419,449 ----
    for (p = 0; p < lra_live_max_point; p++)
      bitmap_initialize (&live_reload_and_inheritance_pseudos[p],
  		       &live_reload_and_inheritance_pseudos_bitmap_obstack);
+   if ((unsigned) (max_regno - lra_constraint_new_regno_start)	
+       >= (1U << lra_max_pseudos_points_log2_considered_for_preferences)
+       /  (lra_live_max_point + 1))
+     return;
+   bitmap_head start_points;
+   bitmap_initialize (&start_points,
+ 		     &live_hard_reg_pseudos_bitmap_obstack);
+   for (i = lra_constraint_new_regno_start; i < max_regno; i++)
+     for (r = lra_reg_info[i].live_ranges; r != NULL; r = r->next)
+       bitmap_set_bit (&start_points, r->start);
    for (i = lra_constraint_new_regno_start; i < max_regno; i++)
      {
        for (r = lra_reg_info[i].live_ranges; r != NULL; r = r->next)
! 	{
! 	  bitmap_iterator bi;
! 	  unsigned p;
! 	  EXECUTE_IF_SET_IN_BITMAP (&start_points, r->start, p, bi)
! 	    {
! 	      if (p > (unsigned) r->finish)
! 		break;
! 	      bitmap_set_bit (&live_reload_and_inheritance_pseudos[p], i);
! 	    }
! 	}
      }
+   bitmap_clear (&start_points);
  }
  
  /* Finalize data about living reload pseudos at any given program
diff -Nrcpad gcc-16-20251130/gcc/lra-constraints.cc gcc-16-20251207/gcc/lra-constraints.cc
*** gcc-16-20251130/gcc/lra-constraints.cc	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/lra-constraints.cc	Sun Dec  7 22:32:07 2025
*************** get_reload_reg (enum op_type type, machi
*** 686,692 ****
  	  && (int) REGNO (original) >= new_regno_start
  	  && (INSN_UID (curr_insn) >= new_insn_uid_start
  	      || ira_former_scratch_p (REGNO (original)))
! 	  && in_class_p (original, rclass, &new_class, true))
  	{
  	  unsigned int regno = REGNO (original);
  	  if (lra_dump_file != NULL)
--- 686,696 ----
  	  && (int) REGNO (original) >= new_regno_start
  	  && (INSN_UID (curr_insn) >= new_insn_uid_start
  	      || ira_former_scratch_p (REGNO (original)))
! 	  && in_class_p (original, rclass, &new_class, true)
! 	  && (exclude_start_hard_regs == nullptr
! 	      || hard_reg_set_intersect_p (
! 		  ~lra_reg_info[REGNO (original)].exclude_start_hard_regs,
! 		  ~*exclude_start_hard_regs)))
  	{
  	  unsigned int regno = REGNO (original);
  	  if (lra_dump_file != NULL)
*************** get_reload_reg (enum op_type type, machi
*** 698,703 ****
--- 702,710 ----
  	    lra_change_class (regno, new_class, ", change to", false);
  	  if (lra_dump_file != NULL)
  	    fprintf (lra_dump_file, "\n");
+ 	  if (exclude_start_hard_regs)
+ 	    lra_reg_info[regno].exclude_start_hard_regs
+ 	      |= *exclude_start_hard_regs;
  	  *result_reg = original;
  	  return false;
  	}
*************** get_reload_reg (enum op_type type, machi
*** 734,739 ****
--- 741,758 ----
  		if (reg == NULL_RTX || GET_CODE (reg) != SUBREG)
  		  continue;
  	      }
+ 	    /* If the existing reload and this have no start hard register in
+ 	       common, then skip.  Otherwise update exclude_start_hard_regs.  */
+ 	    if (exclude_start_hard_regs
+ 		&& ! hard_reg_set_empty_p (*exclude_start_hard_regs))
+ 	      {
+ 		HARD_REG_SET r = lra_reg_info[regno].exclude_start_hard_regs
+ 				 | *exclude_start_hard_regs;
+ 		if (hard_reg_set_empty_p (~r))
+ 		  continue;
+ 		else
+ 		  lra_reg_info[regno].exclude_start_hard_regs = r;
+ 	      }
  	    *result_reg = reg;
  	    if (lra_dump_file != NULL)
  	      {
diff -Nrcpad gcc-16-20251130/gcc/m2/ChangeLog gcc-16-20251207/gcc/m2/ChangeLog
*** gcc-16-20251130/gcc/m2/ChangeLog	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/m2/ChangeLog	Sun Dec  7 22:32:08 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-11-30  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* lang.opt.urls: Regenerate.
+ 
  2025-11-02  Gaius Mulley  <gaiusmod2@gmail.com>
  
  	PR modula2/122499
diff -Nrcpad gcc-16-20251130/gcc/match.pd gcc-16-20251207/gcc/match.pd
*** gcc-16-20251130/gcc/match.pd	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/match.pd	Sun Dec  7 22:32:08 2025
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 6617,6622 ****
--- 6617,6638 ----
         (convert (minus { arg; } (convert:type1 @0))))))))))
  #endif
  
+ /* X & C1 ? (X + -C1) : (X | C1) -> X ^ C1
+    X & C1 ? (X & ~C1) : (X | C1) -> X ^ C1
+    when C1 has a single bit set.  */
+ (for op (plus bit_and)
+  (simplify
+   (cond (ne (bit_and @0 INTEGER_CST@1) integer_zerop)
+ 	     (op @0 INTEGER_CST@2) (bit_ior @0 @1))
+    (with {
+      auto c1 = wi::to_wide (@1);
+      auto c2 = wi::to_wide (@2);
+     }
+     (if (wi::popcount (c1) == 1
+ 	  && ((op == PLUS_EXPR && wi::eq_p (wi::neg (c2), c1))
+ 	       || (op == BIT_AND_EXPR && wi::eq_p (wi::bit_not (c2), c1))))
+ 	  (bit_xor @0 @1)))))
+ 
  (simplify
   (convert (cond@0 @1 INTEGER_CST@2 INTEGER_CST@3))
   (if (INTEGRAL_TYPE_P (type)
diff -Nrcpad gcc-16-20251130/gcc/omp-low.cc gcc-16-20251207/gcc/omp-low.cc
*** gcc-16-20251130/gcc/omp-low.cc	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/omp-low.cc	Sun Dec  7 22:32:08 2025
*************** lower_omp_target (gimple_stmt_iterator *
*** 13240,13246 ****
  		unsigned HOST_WIDE_INT tkind2;
  		switch (OMP_CLAUSE_CODE (c))
  		  {
! 		  case OMP_CLAUSE_MAP: tkind2 = OMP_CLAUSE_MAP_KIND (c); break;
  		  case OMP_CLAUSE_FIRSTPRIVATE: tkind2 = GOMP_MAP_TO; break;
  		  case OMP_CLAUSE_TO: tkind2 = GOMP_MAP_TO; break;
  		  case OMP_CLAUSE_FROM: tkind2 = GOMP_MAP_FROM; break;
--- 13240,13259 ----
  		unsigned HOST_WIDE_INT tkind2;
  		switch (OMP_CLAUSE_CODE (c))
  		  {
! 		  case OMP_CLAUSE_MAP:
! 		    tkind2 = OMP_CLAUSE_MAP_KIND (c);
! 		    if (OMP_CLAUSE_MAP_RUNTIME_IMPLICIT_P (c)
! 			&& (((tkind2 & GOMP_MAP_FLAG_SPECIAL_BITS)
! 			     & ~GOMP_MAP_IMPLICIT)
! 			    == 0))
! 		      {
! 			/* If this is an implicit map, and the GOMP_MAP_IMPLICIT
! 			   bits are not interfered by other special bit
! 			   encodings, then turn the GOMP_IMPLICIT_BIT flag on
! 			   for the runtime to see.  */
! 			tkind2 |= GOMP_MAP_IMPLICIT;
! 		      }
! 		    break;
  		  case OMP_CLAUSE_FIRSTPRIVATE: tkind2 = GOMP_MAP_TO; break;
  		  case OMP_CLAUSE_TO: tkind2 = GOMP_MAP_TO; break;
  		  case OMP_CLAUSE_FROM: tkind2 = GOMP_MAP_FROM; break;
diff -Nrcpad gcc-16-20251130/gcc/params.opt gcc-16-20251207/gcc/params.opt
*** gcc-16-20251130/gcc/params.opt	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/params.opt	Sun Dec  7 22:32:08 2025
*************** Minimal fall-through edge probability in
*** 453,458 ****
--- 453,466 ----
  Common Joined UInteger Var(param_lra_max_considered_reload_pseudos) Init(500) Param Optimization
  The max number of reload pseudos which are considered during spilling a non-reload pseudo.
  
+ -param=lra-max-pseudos-points-log2-considered-for-preferences=
+ Common Joined UInteger Var(lra_max_pseudos_points_log2_considered_for_preferences) Init(30) IntegerRange(0, 31) Param Optimization
+ The maximum log2(number of reload pseudos * number of program points) threshold
+ when preferences for other reload pseudos are still considered. Taking these
+ preferences into account helps to improve register allocation. However, for
+ very large functions, a large value can result in significant compilation time
+ and memory consumption. The default value is 30.
+ 
  -param=lto-max-partition=
  Common Joined UInteger Var(param_max_partition_size) Init(1000000) Param
  Maximal size of a partition for LTO (in estimated instructions).
*************** The scaling multiplier as a percentage t
*** 1269,1274 ****
--- 1277,1286 ----
  Common Joined UInteger Var(param_vrp_block_limit) Init(150000) Optimization Param
  Maximum number of basic blocks before VRP switches to a fast model with less memory requirements.
  
+ -param=vrp-cstload-limit=
+ Common Joined UInteger Var(param_vrp_cstload_limit) Init(32) IntegerRange(0, 255) Optimization Param
+ Maximum number of steps when inferring a value range from a load from a constant aggregate.
+ 
  -param=vrp-sparse-threshold=
  Common Joined UInteger Var(param_vrp_sparse_threshold) Init(3000) Optimization Param
  Maximum number of basic blocks before VRP uses a sparse bitmap cache.
diff -Nrcpad gcc-16-20251130/gcc/recog.cc gcc-16-20251207/gcc/recog.cc
*** gcc-16-20251130/gcc/recog.cc	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/recog.cc	Sun Dec  7 22:32:08 2025
*************** general_operand (rtx op, machine_mode mo
*** 1596,1602 ****
      {
        rtx y = XEXP (op, 0);
  
!       if (! volatile_ok && MEM_VOLATILE_P (op))
  	return false;
  
        /* Use the mem's mode, since it will be reloaded thus.  LRA can
--- 1596,1606 ----
      {
        rtx y = XEXP (op, 0);
  
!       /* If -ffuse-ops-with-volatile-access is enabled, allow volatile
! 	 memory reference.  */
!       if (!flag_fuse_ops_with_volatile_access
! 	  && !volatile_ok
! 	  && MEM_VOLATILE_P (op))
  	return false;
  
        /* Use the mem's mode, since it will be reloaded thus.  LRA can
diff -Nrcpad gcc-16-20251130/gcc/rust/ChangeLog gcc-16-20251207/gcc/rust/ChangeLog
*** gcc-16-20251130/gcc/rust/ChangeLog	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/rust/ChangeLog	Sun Dec  7 22:32:08 2025
***************
*** 1,3 ****
--- 1,74 ----
+ 2025-12-03  Marc Poulhiès  <dkm@kataplop.net>
+ 
+ 	* lex/rust-lex.cc (rust_input_source_test): Reindent.
+ 
+ 2025-12-03  Owen Avery  <powerboat9.gamer@gmail.com>
+ 
+ 	* ast/rust-macro.h (MetaNameValueStr::get_name): New function.
+ 	(MetaNameValueStr::get_value): Likewise.
+ 	* checks/errors/feature/rust-feature-gate.cc
+ 	(FeatureGate::visit): Tweak unknown feature detection.
+ 	(FeatureGate::gate): Handle field rename.
+ 	(FeatureGate::note_stability_attribute): New function
+ 	definition.
+ 	* checks/errors/feature/rust-feature-gate.h
+ 	(FeatureGate::note_stability_attribute): New function
+ 	declaration.
+ 	(FeatureGate::Stability): New enum class.
+ 	(FeatureGate::valid_features): Rename field to...
+ 	(FeatureGate::valid_lang_features): ...here.
+ 	(FeatureGate::valid_lib_features): New field.
+ 	(FeatureGate::defined_lib_features): Likewise.
+ 	* checks/errors/feature/rust-feature.cc (Feature::as_name):
+ 	Improve implementation.
+ 
+ 2025-12-03  Raiki Tamura  <tamaron1203@gmail.com>
+ 
+ 	* checks/errors/feature/rust-feature-gate.cc (FeatureGate::visit): Add check for lang_items.
+ 	* checks/errors/feature/rust-feature-gate.h: Likewise.
+ 
+ 2025-12-03  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+ 
+ 	* parse/rust-parse-impl.h (Parser::parse_function): Return a nullptr on
+ 	error instead of a valid function.
+ 	(Parser::parse_let_stmt): Remove non leaf error.
+ 	(Parser::parse_if_expr): Likewise.
+ 	(Parser::parse_loop_expr): Likewise.
+ 	(Parser::parse_expr): Return error on null denotation error.
+ 
+ 2025-12-03  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+ 
+ 	* parse/rust-parse-impl.h (Parser::parse_delim_token_tree):
+ 	Remove error message.
+ 	(Parser::parse_token_tree): Split error message.
+ 
+ 2025-12-03  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+ 
+ 	* backend/rust-constexpr.cc (eval_binary_expression): Set initial value
+ 	equality value to false.
+ 
+ 2025-12-03  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* expand/rust-macro-expand.h: Fix typos in comment.
+ 
+ 2025-12-03  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+ 
+ 	* parse/rust-parse-impl.h (Parser::parse_items): Remove item parsing
+ 	error.
+ 
+ 2025-12-03  Ryutaro Okada  <1015ryu88@gmail.com>
+ 
+ 	* expand/rust-expand-visitor.cc (builtin_derive_item): Collect derived nodes.
+ 	(derive_item): Collect derived nodes.
+ 	* util/rust-hir-map.cc (Mappings::add_derived_nodes): Add derived set to collect derived
+ 	nodes.
+ 	(Mappings::is_derived_node): Add derived set to collect derived nodes.
+ 	* util/rust-hir-map.h: Add derived set to collect derived nodes.
+ 
+ 2025-11-30  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* lang.opt.urls: Regenerate.
+ 
  2025-11-27  Jakub Jelinek  <jakub@redhat.com>
  
  	* lex/rust-lex.cc (rust_input_source_test): Cast char8_t string
diff -Nrcpad gcc-16-20251130/gcc/rust/ast/rust-macro.h gcc-16-20251207/gcc/rust/ast/rust-macro.h
*** gcc-16-20251130/gcc/rust/ast/rust-macro.h	Sun Nov 30 22:32:07 2025
--- gcc-16-20251207/gcc/rust/ast/rust-macro.h	Sun Dec  7 22:32:08 2025
*************** public:
*** 993,998 ****
--- 993,1002 ----
      return ident.as_string () + " = \"" + str + "\"";
    }
  
+   const Identifier &get_name () const { return ident; }
+ 
+   const std::string &get_value () const { return str; }
+ 
    void accept_vis (ASTVisitor &vis) override;
  
    // HACK: used to simplify parsing - creates a copy of this
diff -Nrcpad gcc-16-20251130/gcc/rust/backend/rust-constexpr.cc gcc-16-20251207/gcc/rust/backend/rust-constexpr.cc
*** gcc-16-20251130/gcc/rust/backend/rust-constexpr.cc	Sun Nov 30 22:32:08 2025
--- gcc-16-20251207/gcc/rust/backend/rust-constexpr.cc	Sun Dec  7 22:32:08 2025
*************** eval_binary_expression (const constexpr_
*** 3137,3143 ****
  	{
  	  tree lmem = PTRMEM_CST_MEMBER (lhs);
  	  tree rmem = PTRMEM_CST_MEMBER (rhs);
! 	  bool eq;
  	  if (TREE_CODE (lmem) == TREE_CODE (rmem)
  	      && TREE_CODE (lmem) == FIELD_DECL
  	      && TREE_CODE (DECL_CONTEXT (lmem)) == UNION_TYPE
--- 3137,3143 ----
  	{
  	  tree lmem = PTRMEM_CST_MEMBER (lhs);
  	  tree rmem = PTRMEM_CST_MEMBER (rhs);
! 	  bool eq = false;
  	  if (TREE_CODE (lmem) == TREE_CODE (rmem)
  	      && TREE_CODE (lmem) == FIELD_DECL
  	      && TREE_CODE (DECL_CONTEXT (lmem)) == UNION_TYPE
diff -Nrcpad gcc-16-20251130/gcc/rust/checks/errors/feature/rust-feature-gate.cc gcc-16-20251207/gcc/rust/checks/errors/feature/rust-feature-gate.cc
*** gcc-16-20251130/gcc/rust/checks/errors/feature/rust-feature-gate.cc	Sun Nov 30 22:32:08 2025
--- gcc-16-20251207/gcc/rust/checks/errors/feature/rust-feature-gate.cc	Sun Dec  7 22:32:08 2025
*************** FeatureGate::check (AST::Crate &crate)
*** 34,40 ****
  void
  FeatureGate::visit (AST::Crate &crate)
  {
!   valid_features.clear ();
  
    for (const auto &attr : crate.inner_attrs)
      {
--- 34,43 ----
  void
  FeatureGate::visit (AST::Crate &crate)
  {
!   valid_lang_features.clear ();
!   valid_lib_features.clear ();
! 
!   // avoid clearing defined features (?)
  
    for (const auto &attr : crate.inner_attrs)
      {
*************** FeatureGate::visit (AST::Crate &crate)
*** 58,86 ****
  	      for (const auto &item : meta_item->get_items ())
  		{
  		  const auto &name_str = item->as_string ();
- 		  auto tname = Feature::as_name (name_str);
- 		  if (tname.has_value ())
- 		    {
- 		      auto name = tname.value ();
- 		      valid_features.insert (name);
- 		    }
  
  		  else
! 		    rust_error_at (item->get_locus (), ErrorCode::E0635,
! 				   "unknown feature %qs", name_str.c_str ());
  		}
  	    }
  	}
      }
  
    AST::DefaultASTVisitor::visit (crate);
  }
  
  void
  FeatureGate::gate (Feature::Name name, location_t loc,
  		   const std::string &error_msg)
  {
!   if (!valid_features.count (name))
      {
        auto &feature = Feature::lookup (name);
        if (auto issue = feature.issue ())
--- 61,105 ----
  	      for (const auto &item : meta_item->get_items ())
  		{
  		  const auto &name_str = item->as_string ();
  
+ 		  // TODO: detect duplicates
+ 		  if (auto tname = Feature::as_name (name_str))
+ 		    valid_lang_features.insert (tname.value ());
  		  else
! 		    valid_lib_features.emplace (name_str, item->get_locus ());
  		}
  	    }
  	}
      }
  
    AST::DefaultASTVisitor::visit (crate);
+ 
+   for (auto &ent : valid_lib_features)
+     {
+       const std::string &feature = ent.first;
+       location_t locus = ent.second;
+ 
+       // rustc treats these as valid,
+       // but apparently has special handling for them
+       if (feature == "libc" || feature == "test")
+ 	continue;
+ 
+       if (defined_lib_features.find (feature) != defined_lib_features.end ())
+ 	{
+ 	  // TODO: emit warning if stable
+ 	  continue;
+ 	}
+ 
+       rust_error_at (locus, ErrorCode::E0635, "unknown feature %qs",
+ 		     feature.c_str ());
+     }
  }
  
  void
  FeatureGate::gate (Feature::Name name, location_t loc,
  		   const std::string &error_msg)
  {
!   if (!valid_lang_features.count (name))
      {
        auto &feature = Feature::lookup (name);
        if (auto issue = feature.issue ())
*************** FeatureGate::check_may_dangle_attribute
*** 147,155 ****
--- 166,242 ----
  }
  
  void
+ FeatureGate::check_lang_item_attribute (
+   const std::vector<AST::Attribute> &attributes)
+ {
+   for (const AST::Attribute &attr : attributes)
+     {
+       const auto &str_path = attr.get_path ().as_string ();
+       bool is_lang_item = str_path == Values::Attributes::LANG
+ 			  && attr.has_attr_input ()
+ 			  && attr.get_attr_input ().get_attr_input_type ()
+ 			       == AST::AttrInput::AttrInputType::LITERAL;
+ 
+       if (is_lang_item)
+ 	gate (Feature::Name::LANG_ITEMS, attr.get_locus (),
+ 	      "lang items are subject to change");
+     }
+ }
+ 
+ void
+ FeatureGate::note_stability_attribute (
+   const std::vector<AST::Attribute> &attributes)
+ {
+   for (const AST::Attribute &attr : attributes)
+     {
+       std::string attr_name = attr.get_path ().as_string ();
+ 
+       Stability stability;
+ 
+       if (attr_name == Values::Attributes::STABLE)
+ 	stability = Stability::STABLE;
+       else if (attr_name == Values::Attributes::UNSTABLE)
+ 	stability = Stability::UNSTABLE;
+       else if (attr_name == Values::Attributes::RUSTC_CONST_STABLE)
+ 	stability = Stability::STABLE;
+       else if (attr_name == Values::Attributes::RUSTC_CONST_UNSTABLE)
+ 	stability = Stability::UNSTABLE;
+       else
+ 	continue;
+ 
+       if (attr.empty_input ())
+ 	// TODO: error?
+ 	continue;
+ 
+       auto &attr_input = attr.get_attr_input ();
+       if (attr_input.get_attr_input_type ()
+ 	  != AST::AttrInput::AttrInputType::TOKEN_TREE)
+ 	// TODO: error?
+ 	continue;
+ 
+       std::unique_ptr<AST::AttrInputMetaItemContainer> meta_item (
+ 	static_cast<const AST::DelimTokenTree &> (attr_input)
+ 	  .parse_to_meta_item ());
+ 
+       for (auto &item : meta_item->get_items ())
+ 	{
+ 	  // TODO: more thorough error checking?
+ 	  // ~only the standard libraries should ever exercise this
+ 	  if (item->is_key_value_pair ())
+ 	    {
+ 	      auto &pair = static_cast<const AST::MetaNameValueStr &> (*item);
+ 	      if (pair.get_name ().as_string () == "feature")
+ 		defined_lib_features.emplace (pair.get_value (), stability);
+ 	    }
+ 	}
+     }
+ }
+ 
+ void
  FeatureGate::visit (AST::MacroRulesDefinition &rules_def)
  {
    check_rustc_attri (rules_def.get_outer_attrs ());
+   note_stability_attribute (rules_def.get_outer_attrs ());
  }
  
  void
*************** FeatureGate::visit (AST::Function &funct
*** 158,163 ****
--- 245,254 ----
    if (!function.is_external ())
      check_rustc_attri (function.get_outer_attrs ());
  
+   check_lang_item_attribute (function.get_outer_attrs ());
+ 
+   note_stability_attribute (function.get_outer_attrs ());
+ 
    AST::DefaultASTVisitor::visit (function);
  }
  
*************** FeatureGate::visit (AST::Trait &trait)
*** 186,191 ****
--- 277,283 ----
    if (trait.is_auto ())
      gate (Feature::Name::OPTIN_BUILTIN_TRAITS, trait.get_locus (),
  	  "auto traits are experimental and possibly buggy");
+   check_lang_item_attribute (trait.get_outer_attrs ());
    AST::DefaultASTVisitor::visit (trait);
  }
  
*************** FeatureGate::visit (AST::UseTreeGlob &us
*** 243,246 ****
--- 335,366 ----
    // #[feature(prelude_import)]
  }
  
+ void
+ FeatureGate::visit (AST::StructStruct &struct_item)
+ {
+   check_lang_item_attribute (struct_item.get_outer_attrs ());
+   AST::DefaultASTVisitor::visit (struct_item);
+ }
+ 
+ void
+ FeatureGate::visit (AST::TraitItemType &trait_item_type)
+ {
+   check_lang_item_attribute (trait_item_type.get_outer_attrs ());
+   AST::DefaultASTVisitor::visit (trait_item_type);
+ }
+ 
+ void
+ FeatureGate::visit (AST::Enum &enum_item)
+ {
+   check_lang_item_attribute (enum_item.get_outer_attrs ());
+   AST::DefaultASTVisitor::visit (enum_item);
+ }
+ 
+ void
+ FeatureGate::visit (AST::EnumItem &enum_variant)
+ {
+   check_lang_item_attribute (enum_variant.get_outer_attrs ());
+   AST::DefaultASTVisitor::visit (enum_variant);
+ }
+ 
  } // namespace Rust
diff -Nrcpad gcc-16-20251130/gcc/rust/checks/errors/feature/rust-feature-gate.h gcc-16-20251207/gcc/rust/checks/errors/feature/rust-feature-gate.h
*** gcc-16-20251130/gcc/rust/checks/errors/feature/rust-feature-gate.h	Sun Nov 30 22:32:08 2025
--- gcc-16-20251207/gcc/rust/checks/errors/feature/rust-feature-gate.h	Sun Dec  7 22:32:08 2025
*************** public:
*** 47,59 ****
    void visit (AST::ExternBlock &block) override;
    void visit (AST::MacroRulesDefinition &rules_def) override;
    void visit (AST::RangePattern &pattern) override;
  
  private:
    void gate (Feature::Name name, location_t loc, const std::string &error_msg);
    void check_rustc_attri (const std::vector<AST::Attribute> &attributes);
    void
    check_may_dangle_attribute (const std::vector<AST::Attribute> &attributes);
!   std::set<Feature::Name> valid_features;
  };
  } // namespace Rust
  #endif
--- 47,76 ----
    void visit (AST::ExternBlock &block) override;
    void visit (AST::MacroRulesDefinition &rules_def) override;
    void visit (AST::RangePattern &pattern) override;
+   void visit (AST::StructStruct &struct_item) override;
+   void visit (AST::TraitItemType &trait_item_type) override;
+   void visit (AST::Enum &enum_item) override;
+   void visit (AST::EnumItem &enum_variant) override;
  
  private:
    void gate (Feature::Name name, location_t loc, const std::string &error_msg);
    void check_rustc_attri (const std::vector<AST::Attribute> &attributes);
    void
    check_may_dangle_attribute (const std::vector<AST::Attribute> &attributes);
!   void
!   check_lang_item_attribute (const std::vector<AST::Attribute> &attributes);
!   void note_stability_attribute (const std::vector<AST::Attribute> &attributes);
! 
!   std::set<Feature::Name> valid_lang_features;
!   std::map<std::string, location_t> valid_lib_features;
! 
!   enum class Stability
!   {
!     STABLE,
!     UNSTABLE,
!   };
! 
!   std::map<std::string, Stability> defined_lib_features;
  };
  } // namespace Rust
  #endif
diff -Nrcpad gcc-16-20251130/gcc/rust/checks/errors/feature/rust-feature.cc gcc-16-20251207/gcc/rust/checks/errors/feature/rust-feature.cc
*** gcc-16-20251130/gcc/rust/checks/errors/feature/rust-feature.cc	Sun Nov 30 22:32:08 2025
--- gcc-16-20251207/gcc/rust/checks/errors/feature/rust-feature.cc	Sun Dec  7 22:32:08 2025
*************** const std::map<std::string, Feature::Nam
*** 77,86 ****
  tl::optional<Feature::Name>
  Feature::as_name (const std::string &name)
  {
!   if (Feature::name_hash_map.count (name))
!     return Feature::name_hash_map.at (name);
! 
!   return tl::nullopt;
  }
  
  tl::optional<std::reference_wrapper<const Feature>>
--- 77,87 ----
  tl::optional<Feature::Name>
  Feature::as_name (const std::string &name)
  {
!   auto it = Feature::name_hash_map.find (name);
!   if (it == Feature::name_hash_map.end ())
!     return tl::nullopt;
!   else
!     return it->second;
  }
  
  tl::optional<std::reference_wrapper<const Feature>>
diff -Nrcpad gcc-16-20251130/gcc/rust/expand/rust-expand-visitor.cc gcc-16-20251207/gcc/rust/expand/rust-expand-visitor.cc
*** gcc-16-20251130/gcc/rust/expand/rust-expand-visitor.cc	Sun Nov 30 22:32:08 2025
--- gcc-16-20251207/gcc/rust/expand/rust-expand-visitor.cc	Sun Dec  7 22:32:08 2025
***************
*** 18,23 ****
--- 18,24 ----
  
  #include "rust-expand-visitor.h"
  #include "rust-ast-fragment.h"
+ #include "rust-hir-map.h"
  #include "rust-item.h"
  #include "rust-proc-macro.h"
  #include "rust-attributes.h"
*************** static std::vector<std::unique_ptr<AST::
*** 48,54 ****
  builtin_derive_item (AST::Item &item, const AST::Attribute &derive,
  		     BuiltinMacro to_derive)
  {
!   return AST::DeriveVisitor::derive (item, derive, to_derive);
  }
  
  static std::vector<std::unique_ptr<AST::Item>>
--- 49,58 ----
  builtin_derive_item (AST::Item &item, const AST::Attribute &derive,
  		     BuiltinMacro to_derive)
  {
!   auto items = AST::DeriveVisitor::derive (item, derive, to_derive);
!   for (auto &item : items)
!     Analysis::Mappings::get ().add_derived_node (item->get_node_id ());
!   return items;
  }
  
  static std::vector<std::unique_ptr<AST::Item>>
*************** derive_item (AST::Item &item, AST::Simpl
*** 64,69 ****
--- 68,75 ----
  	  switch (node.get_kind ())
  	    {
  	    case AST::SingleASTNode::Kind::Item:
+ 	      Analysis::Mappings::get ().add_derived_node (
+ 		node.get_item ()->get_node_id ());
  	      result.push_back (node.take_item ());
  	      break;
  	    default:
diff -Nrcpad gcc-16-20251130/gcc/rust/expand/rust-macro-expand.h gcc-16-20251207/gcc/rust/expand/rust-macro-expand.h
*** gcc-16-20251130/gcc/rust/expand/rust-macro-expand.h	Sun Nov 30 22:32:08 2025
--- gcc-16-20251207/gcc/rust/expand/rust-macro-expand.h	Sun Dec  7 22:32:08 2025
*************** struct MacroExpander
*** 358,364 ****
     *
     * @param parser Parser to use for matching
     * @param rep Repetition to try and match
!    * @param match_amount Reference in which to store the ammount of succesful
     * and valid matches
     *
     * @param lo_bound Lower bound of the matcher. When specified, the matcher
--- 358,364 ----
     *
     * @param parser Parser to use for matching
     * @param rep Repetition to try and match
!    * @param match_amount Reference in which to store the amount of successful
     * and valid matches
     *
     * @param lo_bound Lower bound of the matcher. When specified, the matcher
diff -Nrcpad gcc-16-20251130/gcc/rust/lex/rust-lex.cc gcc-16-20251207/gcc/rust/lex/rust-lex.cc
*** gcc-16-20251130/gcc/rust/lex/rust-lex.cc	Sun Nov 30 22:32:08 2025
--- gcc-16-20251207/gcc/rust/lex/rust-lex.cc	Sun Dec  7 22:32:08 2025
*************** rust_input_source_test ()
*** 2640,2647 ****
  {
    // ASCII
    std::string src = (const char *) u8"_abcde\tXYZ\v\f";
!   std::vector<uint32_t> expected
!     = {u'_', u'a', u'b', u'c', u'd', u'e', u'\t', u'X', u'Y', u'Z', u'\v', u'\f'};
    test_buffer_input_source (src, expected);
  
    // BOM
--- 2640,2647 ----
  {
    // ASCII
    std::string src = (const char *) u8"_abcde\tXYZ\v\f";
!   std::vector<uint32_t> expected = {u'_',  u'a', u'b', u'c', u'd',  u'e',
! 				    u'\t', u'X', u'Y', u'Z', u'\v', u'\f'};
    test_buffer_input_source (src, expected);
  
    // BOM
diff -Nrcpad gcc-16-20251130/gcc/rust/parse/rust-parse-impl.h gcc-16-20251207/gcc/rust/parse/rust-parse-impl.h
*** gcc-16-20251130/gcc/rust/parse/rust-parse-impl.h	Sun Nov 30 22:32:08 2025
--- gcc-16-20251207/gcc/rust/parse/rust-parse-impl.h	Sun Dec  7 22:32:08 2025
*************** Parser<ManagedTokenSource>::parse_items
*** 431,440 ****
        std::unique_ptr<AST::Item> item = parse_item (false);
        if (item == nullptr)
  	{
- 	  Error error (lexer.peek_token ()->get_locus (),
- 		       "failed to parse item in crate");
- 	  add_error (std::move (error));
- 
  	  // TODO: should all items be cleared?
  	  items = std::vector<std::unique_ptr<AST::Item>> ();
  	  break;
--- 431,436 ----
*************** Parser<ManagedTokenSource>::parse_delim_
*** 982,997 ****
        std::unique_ptr<AST::TokenTree> tok_tree = parse_token_tree ();
  
        if (tok_tree == nullptr)
! 	{
! 	  // TODO: is this error handling appropriate?
! 	  Error error (
! 	    t->get_locus (),
! 	    "failed to parse token tree in delimited token tree - found %qs",
! 	    t->get_token_description ());
! 	  add_error (std::move (error));
! 
! 	  return AST::DelimTokenTree::create_empty ();
! 	}
  
        token_trees_in_tree.push_back (std::move (tok_tree));
  
--- 978,984 ----
        std::unique_ptr<AST::TokenTree> tok_tree = parse_token_tree ();
  
        if (tok_tree == nullptr)
! 	return AST::DelimTokenTree::create_empty ();
  
        token_trees_in_tree.push_back (std::move (tok_tree));
  
*************** Parser<ManagedTokenSource>::parse_token_
*** 1079,1089 ****
      case RIGHT_SQUARE:
      case RIGHT_CURLY:
        // error - should not be called when this a token
!       add_error (
! 	Error (t->get_locus (),
! 	       "unexpected closing delimiter %qs - token tree requires "
! 	       "either paired delimiters or non-delimiter tokens",
! 	       t->get_token_description ()));
  
        lexer.skip_token ();
        return nullptr;
--- 1066,1077 ----
      case RIGHT_SQUARE:
      case RIGHT_CURLY:
        // error - should not be called when this a token
!       add_error (Error (t->get_locus (), "unexpected closing delimiter %qs",
! 			t->get_token_description ()));
! 
!       add_error (Error (Error::Kind::Hint, t->get_locus (),
! 			"token tree requires either paired delimiters or "
! 			"non-delimiter tokens"));
  
        lexer.skip_token ();
        return nullptr;
*************** Parser<ManagedTokenSource>::parse_macro_
*** 1867,1881 ****
        std::unique_ptr<AST::TokenTree> tree = parse_token_tree ();
  
        if (tree == nullptr)
! 	{
! 	  Error error (t->get_locus (),
! 		       "failed to parse token tree for macro invocation semi "
! 		       "- found %qs",
! 		       t->get_token_description ());
! 	  add_error (std::move (error));
! 
! 	  return nullptr;
! 	}
  
        token_trees.push_back (std::move (tree));
  
--- 1855,1861 ----
        std::unique_ptr<AST::TokenTree> tree = parse_token_tree ();
  
        if (tree == nullptr)
! 	return nullptr;
  
        token_trees.push_back (std::move (tree));
  
*************** Parser<ManagedTokenSource>::parse_functi
*** 3011,3018 ****
    else
      {
        std::unique_ptr<AST::BlockExpr> block_expr = parse_block_expr ();
!       if (block_expr != nullptr)
! 	body = std::move (block_expr);
      }
  
    return std::unique_ptr<AST::Function> (
--- 2991,2999 ----
    else
      {
        std::unique_ptr<AST::BlockExpr> block_expr = parse_block_expr ();
!       if (block_expr == nullptr)
! 	return nullptr;
!       body = std::move (block_expr);
      }
  
    return std::unique_ptr<AST::Function> (
*************** Parser<ManagedTokenSource>::parse_let_st
*** 6238,6247 ****
        expr = parse_expr ();
        if (expr == nullptr)
  	{
- 	  Error error (lexer.peek_token ()->get_locus (),
- 		       "failed to parse expression in let statement");
- 	  add_error (std::move (error));
- 
  	  skip_after_semicolon ();
  	  return nullptr;
  	}
--- 6219,6224 ----
*************** Parser<ManagedTokenSource>::parse_block_
*** 7268,7278 ****
        ExprOrStmt expr_or_stmt = parse_stmt_or_expr ();
        if (expr_or_stmt.is_error ())
  	{
! 	  Error error (
! 	    t->get_locus (),
! 	    "failed to parse statement or expression in block expression");
! 	  add_error (std::move (error));
! 
  	  return nullptr;
  	}
  
--- 7245,7251 ----
        ExprOrStmt expr_or_stmt = parse_stmt_or_expr ();
        if (expr_or_stmt.is_error ())
  	{
! 	  skip_after_end_block ();
  	  return nullptr;
  	}
  
*************** Parser<ManagedTokenSource>::parse_if_exp
*** 7795,7808 ****
    // parse required block expr
    std::unique_ptr<AST::BlockExpr> if_body = parse_block_expr ();
    if (if_body == nullptr)
!     {
!       Error error (lexer.peek_token ()->get_locus (),
! 		   "failed to parse if body block expression in if expression");
!       add_error (std::move (error));
! 
!       // skip somewhere?
!       return nullptr;
!     }
  
    // branch to parse end or else (and then else, else if, or else if let)
    if (lexer.peek_token ()->get_id () != ELSE)
--- 7768,7774 ----
    // parse required block expr
    std::unique_ptr<AST::BlockExpr> if_body = parse_block_expr ();
    if (if_body == nullptr)
!     return nullptr;
  
    // branch to parse end or else (and then else, else if, or else if let)
    if (lexer.peek_token ()->get_id () != ELSE)
*************** Parser<ManagedTokenSource>::parse_loop_e
*** 8125,8137 ****
    // parse loop body, which is required
    std::unique_ptr<AST::BlockExpr> loop_body = parse_block_expr ();
    if (loop_body == nullptr)
!     {
!       Error error (lexer.peek_token ()->get_locus (),
! 		   "could not parse loop body in (infinite) loop expression");
!       add_error (std::move (error));
! 
!       return nullptr;
!     }
  
    return std::unique_ptr<AST::LoopExpr> (
      new AST::LoopExpr (std::move (loop_body), locus, std::move (label),
--- 8091,8097 ----
    // parse loop body, which is required
    std::unique_ptr<AST::BlockExpr> loop_body = parse_block_expr ();
    if (loop_body == nullptr)
!     return nullptr;
  
    return std::unique_ptr<AST::LoopExpr> (
      new AST::LoopExpr (std::move (loop_body), locus, std::move (label),
*************** Parser<ManagedTokenSource>::parse_expr (
*** 12210,12215 ****
--- 12170,12177 ----
    // parse null denotation (unary part of expression)
    std::unique_ptr<AST::Expr> expr
      = null_denotation ({}, null_denotation_restrictions);
+   if (expr == nullptr)
+     return nullptr;
  
    return left_denotations (std::move (expr), right_binding_power,
  			   std::move (outer_attrs), restrictions);
diff -Nrcpad gcc-16-20251130/gcc/rust/util/rust-hir-map.cc gcc-16-20251207/gcc/rust/util/rust-hir-map.cc
*** gcc-16-20251130/gcc/rust/util/rust-hir-map.cc	Sun Nov 30 22:32:08 2025
--- gcc-16-20251207/gcc/rust/util/rust-hir-map.cc	Sun Dec  7 22:32:08 2025
*************** Mappings::lookup_captures (NodeId closur
*** 1358,1362 ****
--- 1358,1374 ----
      return cap->second;
  }
  
+ void
+ Mappings::add_derived_node (NodeId node_id)
+ {
+   derived_nodes.insert (node_id);
+ }
+ 
+ bool
+ Mappings::is_derived_node (NodeId node_id)
+ {
+   return derived_nodes.find (node_id) != derived_nodes.end ();
+ }
+ 
  } // namespace Analysis
  } // namespace Rust
diff -Nrcpad gcc-16-20251130/gcc/rust/util/rust-hir-map.h gcc-16-20251207/gcc/rust/util/rust-hir-map.h
*** gcc-16-20251130/gcc/rust/util/rust-hir-map.h	Sun Nov 30 22:32:08 2025
--- gcc-16-20251207/gcc/rust/util/rust-hir-map.h	Sun Dec  7 22:32:08 2025
*************** public:
*** 350,355 ****
--- 350,358 ----
    void add_capture (NodeId closure, NodeId definition);
    tl::optional<std::vector<NodeId>> lookup_captures (NodeId closure);
  
+   void add_derived_node (NodeId node_id);
+   bool is_derived_node (NodeId node_id);
+ 
  private:
    Mappings ();
  
*************** private:
*** 443,448 ****
--- 446,453 ----
  
    // Closure AST NodeId -> vector of Definition node ids
    std::unordered_map<NodeId, std::vector<NodeId>> captures;
+ 
+   std::set<NodeId> derived_nodes;
  };
  
  } // namespace Analysis
diff -Nrcpad gcc-16-20251130/gcc/simplify-rtx.cc gcc-16-20251207/gcc/simplify-rtx.cc
*** gcc-16-20251130/gcc/simplify-rtx.cc	Sun Nov 30 22:32:08 2025
--- gcc-16-20251207/gcc/simplify-rtx.cc	Sun Dec  7 22:32:08 2025
*************** simplify_context::simplify_binary_operat
*** 3189,3195 ****
  	      rhs = XEXP (rhs, 0);
  	    }
  
! 	  if (rtx_equal_p (lhs, rhs))
  	    {
  	      rtx orig = gen_rtx_PLUS (int_mode, op0, op1);
  	      rtx coeff;
--- 3189,3197 ----
  	      rhs = XEXP (rhs, 0);
  	    }
  
! 	  /* Keep PLUS of 2 volatile memory references.  */
! 	  if (rtx_equal_p (lhs, rhs)
! 	      && (!MEM_P (lhs) || !MEM_VOLATILE_P (lhs)))
  	    {
  	      rtx orig = gen_rtx_PLUS (int_mode, op0, op1);
  	      rtx coeff;
diff -Nrcpad gcc-16-20251130/gcc/testsuite/ChangeLog gcc-16-20251207/gcc/testsuite/ChangeLog
*** gcc-16-20251130/gcc/testsuite/ChangeLog	Sun Nov 30 22:32:08 2025
--- gcc-16-20251207/gcc/testsuite/ChangeLog	Sun Dec  7 22:32:08 2025
***************
*** 1,3 ****
--- 1,1563 ----
+ 2025-12-06  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	PR rtl-optimization/122947
+ 	* gcc.dg/pr122947.c: New.
+ 
+ 2025-12-06  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	PR target/91420
+ 	* gcc.target/riscv/pr91420.c: New.
+ 
+ 2025-12-06  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	PR rtl-optimization/122675
+ 	* gcc.target/riscv/pr122675-1.c: Adjust expected output.
+ 
+ 2025-12-06  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/103414
+ 	* gfortran.dg/pdt_76.f03: New test.
+ 
+ 2025-12-06  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/122693
+ 	* gfortran.dg/pdt_75.f03: New test.
+ 
+ 2025-12-06  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/122670
+ 	* gfortran.dg/pdt_74.f03: New test.
+ 
+ 2025-12-06  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/122669
+ 	* gfortran.dg/pdt_73.f03: New test.
+ 
+ 2025-12-06  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/122578
+ 	* gfortran.dg/pdt_72.f03: New test.
+ 
+ 2025-12-06  Dimitar Dimitrov  <dimitar@dinux.eu>
+ 
+ 	PR rtl-optimization/122675
+ 	* gcc.target/aarch64/pr122675-1.c: New test.
+ 	* gcc.target/i386/pr122675-1.c: New test.
+ 	* gcc.target/riscv/pr122675-1.c: New test.
+ 
+ 2025-12-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/99782
+ 	* gcc.dg/torture/pr99782-1.c: Fix typo, dg-compile -> dg-do compile.
+ 	Use int128 effective target directly on that directive.  Move PR
+ 	comment first.
+ 
+ 2025-12-05  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* gcc.dg/torture/pr99782-1.c: Require intt128 target.
+ 
+ 2025-12-05  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/122215
+ 	* gcc.target/riscv/pr122215.c: New.
+ 	* lib/target-supports.exp (check_effective_target_valgrind): New.
+ 
+ 2025-12-05  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/122977
+ 	* gfortran.dg/contiguous_16.f90: New test.
+ 
+ 2025-12-05  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* gfortran.dg/gomp/dyn_groupprivate-1.f90: Fix
+ 	scan-tree-dump-times regexp to avoid hard-coded 'D.4680'.
+ 
+ 2025-12-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/120939
+ 	* gcc.dg/torture/pr113026-1.c: Skip when -ftracer.
+ 
+ 2025-12-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/123002
+ 	* gcc.dg/vect/vect-pr123002.c: Make global data non-const
+ 	and non-static.
+ 
+ 2025-12-05  Denis Mazzucato  <mazzucato@adacore.com>
+ 
+ 	* gnat.dg/reduce1.adb: Adjust expected error message.
+ 
+ 2025-12-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/123002
+ 	* gcc.dg/vect/vect-pr123002.c: New testcase.
+ 
+ 2025-12-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gcc.dg/gimplefe-58.c: New testcase.
+ 
+ 2025-12-05  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* gfortran.dg/gomp/dyn_groupprivate-1.f90: Add scan-dump test.
+ 	* gfortran.dg/gomp/dyn_groupprivate-2.f90: Extend and update.
+ 	* c-c++-common/gomp/dyn_groupprivate-1.c: New test.
+ 	* c-c++-common/gomp/dyn_groupprivate-2.c: New test.
+ 
+ 2025-12-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122776
+ 	* gcc.dg/vect/vect-simd-clone-24.c: Add -mprefer-vector-width=512.
+ 
+ 2025-12-05  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR middle-end/99782
+ 	* gcc.dg/torture/pr99782-1.c: New test.
+ 
+ 2025-12-05  Daniel Barboza  <dbarboza@ventanamicro.com>
+ 	    Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	* gcc.dg/torture/pr122615.c: New test.
+ 	* gcc.dg/torture/pr122616.c: Likewise.
+ 
+ 2025-12-05  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c: Add asm check
+ 	for vmsltu.vx.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h: Add test
+ 	helper macros.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h: Add test
+ 	data for run test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsltu-run-1-u16.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsltu-run-1-u32.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsltu-run-1-u64.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsltu-run-1-u8.c: New test.
+ 
+ 2025-12-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122776
+ 	* gcc.dg/vect/vect-simd-clone-24.c: New testcase.
+ 	* gcc.dg/gomp/pr110485.c: Adjust.
+ 
+ 2025-12-04  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* gcc.dg/tree-ssa/vrp-from-cst-agg-1.c: New test.
+ 	* gcc.dg/tree-ssa/vrp-from-cst-agg-2.c: Likewise.
+ 	* gcc.dg/tree-ssa/vrp-from-cst-agg-3.c: Likewise.
+ 	* gcc.dg/tree-ssa/vrp-from-cst-agg-4.c: Likewise.
+ 	* gcc.dg/tree-ssa/vrp-from-cst-agg-5.c: Likewise.
+ 	* gcc.dg/tree-ssa/vrp-from-cst-agg-6.c: Likewise.
+ 	* gcc.dg/tree-ssa/vrp-from-cst-agg-7.c: Likewise.
+ 	* gcc.dg/ipa/vrp-from-cst-agg-1.c: Likewise.
+ 
+ 2025-12-04  Stefan Schulze Frielinghaus  <stefansf@gcc.gnu.org>
+ 
+ 	* gcc.dg/asm-hard-reg-9.c: Restrict to lp64 x86_64.
+ 
+ 2025-12-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/122991
+ 	* gcc.dg/pr122991.c: New test.
+ 
+ 2025-12-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/122983
+ 	* g++.dg/cpp26/decomp18.C: Add dg-add-options tls and
+ 	dg-require-effective-target tls_runtime directives.
+ 
+ 2025-12-04  Stefan Schulze Frielinghaus  <stefansf@gcc.gnu.org>
+ 
+ 	* gcc.dg/asm-hard-reg-9.c: New test.
+ 
+ 2025-12-03  Joseph Myers  <josmyers@redhat.com>
+ 
+ 	* lib/gcc-defs.exp (handle-dg-regexps): Also escape \r in output.
+ 
+ 2025-12-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/122943
+ 	* gcc.c-torture/execute/pr122943.c: New test.
+ 
+ 2025-12-03  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/122898
+ 	* gcc.dg/pr122898.c: New.
+ 
+ 2025-12-03  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/122969
+ 	* gcc.dg/vect/pr122969.c: New test.
+ 
+ 2025-12-03  Mathias Krause  <minipli@grsecurity.net>
+ 
+ 	* gcc.target/i386/nop-mcount-m16.c: New test.
+ 	* gcc.target/i386/nop-mcount.c: Adapt to test for 5-byte NOP.
+ 
+ 2025-12-03  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+ 
+ 	* rust/compile/lang_feature_gate.rs: New test.
+ 
+ 2025-12-03  Owen Avery  <powerboat9.gamer@gmail.com>
+ 
+ 	* rust/core/core.exp: Change -frust-compile-until=astvalidation
+ 	to -frust-compile-until=nameresolution.
+ 
+ 2025-12-03  Raiki Tamura  <tamaron1203@gmail.com>
+ 
+ 	* rust/borrowck/reference.rs: Add attributes.
+ 	* rust/borrowck/tmp.rs: Likewise.
+ 	* rust/compile/additional-trait-bounds1.rs: Likewise.
+ 	* rust/compile/additional-trait-bounds2.rs: Likewise.
+ 	* rust/compile/additional-trait-bounds2nr2.rs: Likewise.
+ 	* rust/compile/auto_traits1.rs: Likewise.
+ 	* rust/compile/auto_traits2.rs: Likewise.
+ 	* rust/compile/bad-rpit1.rs: Likewise.
+ 	* rust/compile/black_box.rs: Likewise.
+ 	* rust/compile/bounds1.rs: Likewise.
+ 	* rust/compile/box_syntax_feature_gate.rs: Likewise.
+ 	* rust/compile/bug-with-default-generic.rs: Likewise.
+ 	* rust/compile/canonical_paths1.rs: Likewise.
+ 	* rust/compile/cast_generics.rs: Likewise.
+ 	* rust/compile/closure_no_type_anno.rs: Likewise.
+ 	* rust/compile/cmp1.rs: Likewise.
+ 	* rust/compile/complex_qualified_path_in_expr.rs: Likewise.
+ 	* rust/compile/const-issue1440.rs: Likewise.
+ 	* rust/compile/const_generics_1.rs: Likewise.
+ 	* rust/compile/const_generics_10.rs: Likewise.
+ 	* rust/compile/const_generics_11.rs: Likewise.
+ 	* rust/compile/const_generics_12.rs: Likewise.
+ 	* rust/compile/const_generics_13.rs: Likewise.
+ 	* rust/compile/const_generics_14.rs: Likewise.
+ 	* rust/compile/const_generics_15.rs: Likewise.
+ 	* rust/compile/const_generics_16.rs: Likewise.
+ 	* rust/compile/const_generics_18.rs: Likewise.
+ 	* rust/compile/const_generics_19.rs: Likewise.
+ 	* rust/compile/const_generics_3.rs: Likewise.
+ 	* rust/compile/const_generics_8.rs: Likewise.
+ 	* rust/compile/const_generics_9.rs: Likewise.
+ 	* rust/compile/derive-debug1.rs: Likewise.
+ 	* rust/compile/derive-default1.rs: Likewise.
+ 	* rust/compile/derive-eq-invalid.rs: Likewise.
+ 	* rust/compile/derive-hash1.rs: Likewise.
+ 	* rust/compile/derive-partialeq1.rs: Likewise.
+ 	* rust/compile/derive_clone_enum1.rs: Likewise.
+ 	* rust/compile/derive_clone_enum2.rs: Likewise.
+ 	* rust/compile/derive_clone_enum3.rs: Likewise.
+ 	* rust/compile/derive_macro1.rs: Likewise.
+ 	* rust/compile/derive_macro3.rs: Likewise.
+ 	* rust/compile/derive_macro4.rs: Likewise.
+ 	* rust/compile/derive_macro6.rs: Likewise.
+ 	* rust/compile/derive_partial_ord1.rs: Likewise.
+ 	* rust/compile/expand_macro_qual_path_in_type.rs: Likewise.
+ 	* rust/compile/expected_type_args2.rs: Likewise.
+ 	* rust/compile/expected_type_args3.rs: Likewise.
+ 	* rust/compile/extern_generics.rs: Likewise.
+ 	* rust/compile/for-loop1.rs: Likewise.
+ 	* rust/compile/for-loop2.rs: Likewise.
+ 	* rust/compile/format_args_basic_expansion.rs: Likewise.
+ 	* rust/compile/format_args_concat.rs: Likewise.
+ 	* rust/compile/format_args_extra_comma.rs: Likewise.
+ 	* rust/compile/generics1.rs: Likewise.
+ 	* rust/compile/generics11.rs: Likewise.
+ 	* rust/compile/generics12.rs: Likewise.
+ 	* rust/compile/generics2.rs: Likewise.
+ 	* rust/compile/generics3.rs: Likewise.
+ 	* rust/compile/generics4.rs: Likewise.
+ 	* rust/compile/generics6.rs: Likewise.
+ 	* rust/compile/generics7.rs: Likewise.
+ 	* rust/compile/generics8.rs: Likewise.
+ 	* rust/compile/if_let_expr.rs: Likewise.
+ 	* rust/compile/impl_fnptr.rs: Likewise.
+ 	* rust/compile/impl_trait_diag.rs: Likewise.
+ 	* rust/compile/impl_trait_generic_arg.rs: Likewise.
+ 	* rust/compile/issue-1005.rs: Likewise.
+ 	* rust/compile/issue-1019.rs: Likewise.
+ 	* rust/compile/issue-1031.rs: Likewise.
+ 	* rust/compile/issue-1034.rs: Likewise.
+ 	* rust/compile/issue-1128.rs: Likewise.
+ 	* rust/compile/issue-1129-2.rs: Likewise.
+ 	* rust/compile/issue-1130.rs: Likewise.
+ 	* rust/compile/issue-1131.rs: Likewise.
+ 	* rust/compile/issue-1165.rs: Likewise.
+ 	* rust/compile/issue-1173.rs: Likewise.
+ 	* rust/compile/issue-1235.rs: Likewise.
+ 	* rust/compile/issue-1237.rs: Likewise.
+ 	* rust/compile/issue-1289.rs: Likewise.
+ 	* rust/compile/issue-1383.rs: Likewise.
+ 	* rust/compile/issue-1447.rs: Likewise.
+ 	* rust/compile/issue-1483.rs: Likewise.
+ 	* rust/compile/issue-1485.rs: Likewise.
+ 	* rust/compile/issue-1487.rs: Likewise.
+ 	* rust/compile/issue-1589.rs: Likewise.
+ 	* rust/compile/issue-1725-1.rs: Likewise.
+ 	* rust/compile/issue-1725-2.rs: Likewise.
+ 	* rust/compile/issue-1786.rs: Likewise.
+ 	* rust/compile/issue-1893.rs: Likewise.
+ 	* rust/compile/issue-1901.rs: Likewise.
+ 	* rust/compile/issue-1930.rs: Likewise.
+ 	* rust/compile/issue-1981.rs: Likewise.
+ 	* rust/compile/issue-2015.rs: Likewise.
+ 	* rust/compile/issue-2019-1.rs: Likewise.
+ 	* rust/compile/issue-2019-2.rs: Likewise.
+ 	* rust/compile/issue-2019-3.rs: Likewise.
+ 	* rust/compile/issue-2036.rs: Likewise.
+ 	* rust/compile/issue-2037.rs: Likewise.
+ 	* rust/compile/issue-2070.rs: Likewise.
+ 	* rust/compile/issue-2105.rs: Likewise.
+ 	* rust/compile/issue-2106.rs: Likewise.
+ 	* rust/compile/issue-2135.rs: Likewise.
+ 	* rust/compile/issue-2136-1.rs: Likewise.
+ 	* rust/compile/issue-2136-2.rs: Likewise.
+ 	* rust/compile/issue-2139.rs: Likewise.
+ 	* rust/compile/issue-2142.rs: Likewise.
+ 	* rust/compile/issue-2165.rs: Likewise.
+ 	* rust/compile/issue-2166.rs: Likewise.
+ 	* rust/compile/issue-2190-1.rs: Likewise.
+ 	* rust/compile/issue-2190-2.rs: Likewise.
+ 	* rust/compile/issue-2195.rs: Likewise.
+ 	* rust/compile/issue-2238.rs: Likewise.
+ 	* rust/compile/issue-2304.rs: Likewise.
+ 	* rust/compile/issue-2323.rs: Likewise.
+ 	* rust/compile/issue-2330.rs: Likewise.
+ 	* rust/compile/issue-2369.rs: Likewise.
+ 	* rust/compile/issue-2375.rs: Likewise.
+ 	* rust/compile/issue-2478.rs: Likewise.
+ 	* rust/compile/issue-2499.rs: Likewise.
+ 	* rust/compile/issue-2723-1.rs: Likewise.
+ 	* rust/compile/issue-2723-2.rs: Likewise.
+ 	* rust/compile/issue-2725.rs: Likewise.
+ 	* rust/compile/issue-2747.rs: Likewise.
+ 	* rust/compile/issue-2772-1.rs: Likewise.
+ 	* rust/compile/issue-2772-2.rs: Likewise.
+ 	* rust/compile/issue-2775.rs: Likewise.
+ 	* rust/compile/issue-2782.rs: Likewise.
+ 	* rust/compile/issue-2907.rs: Likewise.
+ 	* rust/compile/issue-2951.rs: Likewise.
+ 	* rust/compile/issue-2953-1.rs: Likewise.
+ 	* rust/compile/issue-2953-2.rs: Likewise.
+ 	* rust/compile/issue-2954.rs: Likewise.
+ 	* rust/compile/issue-2987.rs: Likewise.
+ 	* rust/compile/issue-3009.rs: Likewise.
+ 	* rust/compile/issue-3022.rs: Likewise.
+ 	* rust/compile/issue-3030.rs: Likewise.
+ 	* rust/compile/issue-3032-1.rs: Likewise.
+ 	* rust/compile/issue-3032-2.rs: Likewise.
+ 	* rust/compile/issue-3033.rs: Likewise.
+ 	* rust/compile/issue-3035.rs: Likewise.
+ 	* rust/compile/issue-3036.rs: Likewise.
+ 	* rust/compile/issue-3045-1.rs: Likewise.
+ 	* rust/compile/issue-3045-2.rs: Likewise.
+ 	* rust/compile/issue-3144.rs: Likewise.
+ 	* rust/compile/issue-3242.rs: Likewise.
+ 	* rust/compile/issue-3304.rs: Likewise.
+ 	* rust/compile/issue-3382.rs: Likewise.
+ 	* rust/compile/issue-3402-1.rs: Likewise.
+ 	* rust/compile/issue-3402-2.rs: Likewise.
+ 	* rust/compile/issue-3403.rs: Likewise.
+ 	* rust/compile/issue-3454.rs: Likewise.
+ 	* rust/compile/issue-3551.rs: Likewise.
+ 	* rust/compile/issue-3554-2.rs: Likewise.
+ 	* rust/compile/issue-3599.rs: Likewise.
+ 	* rust/compile/issue-3642.rs: Likewise.
+ 	* rust/compile/issue-3711.rs: Likewise.
+ 	* rust/compile/issue-3836.rs: Likewise.
+ 	* rust/compile/issue-3898.rs: Likewise.
+ 	* rust/compile/issue-3915.rs: Likewise.
+ 	* rust/compile/issue-3916.rs: Likewise.
+ 	* rust/compile/issue-3969.rs: Likewise.
+ 	* rust/compile/issue-402.rs: Likewise.
+ 	* rust/compile/issue-4090-1.rs: Likewise.
+ 	* rust/compile/issue-4090-2.rs: Likewise.
+ 	* rust/compile/issue-850.rs: Likewise.
+ 	* rust/compile/issue-855.rs: Likewise.
+ 	* rust/compile/issue-925.rs: Likewise.
+ 	* rust/compile/iterators1.rs: Likewise.
+ 	* rust/compile/macros/builtin/option_env1.rs: Likewise.
+ 	* rust/compile/macros/builtin/option_env2.rs: Likewise.
+ 	* rust/compile/macros/builtin/option_env3.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro-issue1400.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro-issue3708.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro-issue3709-2.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro20.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro23.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro40.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro49.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro54.rs: Likewise.
+ 	* rust/compile/multiple_bindings1.rs: Likewise.
+ 	* rust/compile/name_resolution2.rs: Likewise.
+ 	* rust/compile/name_resolution4.rs: Likewise.
+ 	* rust/compile/nested_generic.rs: Likewise.
+ 	* rust/compile/parse_associated_type_as_generic_arg.rs: Likewise.
+ 	* rust/compile/parse_associated_type_as_generic_arg2.rs: Likewise.
+ 	* rust/compile/parse_associated_type_as_generic_arg3.rs: Likewise.
+ 	* rust/compile/parse_closure_bind.rs: Likewise.
+ 	* rust/compile/parse_complex_generic_application.rs: Likewise.
+ 	* rust/compile/parse_complex_generic_application2.rs: Likewise.
+ 	* rust/compile/path_as_generic_arg.rs: Likewise.
+ 	* rust/compile/privacy4.rs: Likewise.
+ 	* rust/compile/privacy6.rs: Likewise.
+ 	* rust/compile/silly-order-bug.rs: Likewise.
+ 	* rust/compile/sizeof-stray-infer-var-bug.rs: Likewise.
+ 	* rust/compile/stmt_with_block_dot.rs: Likewise.
+ 	* rust/compile/structural-eq-peq.rs: Likewise.
+ 	* rust/compile/torture/associated_types1.rs: Likewise.
+ 	* rust/compile/torture/forward_decl_5.rs: Likewise.
+ 	* rust/compile/torture/generics1.rs: Likewise.
+ 	* rust/compile/torture/generics10.rs: Likewise.
+ 	* rust/compile/torture/generics11.rs: Likewise.
+ 	* rust/compile/torture/generics12.rs: Likewise.
+ 	* rust/compile/torture/generics13.rs: Likewise.
+ 	* rust/compile/torture/generics14.rs: Likewise.
+ 	* rust/compile/torture/generics15.rs: Likewise.
+ 	* rust/compile/torture/generics16.rs: Likewise.
+ 	* rust/compile/torture/generics17.rs: Likewise.
+ 	* rust/compile/torture/generics18.rs: Likewise.
+ 	* rust/compile/torture/generics19.rs: Likewise.
+ 	* rust/compile/torture/generics2.rs: Likewise.
+ 	* rust/compile/torture/generics20.rs: Likewise.
+ 	* rust/compile/torture/generics21.rs: Likewise.
+ 	* rust/compile/torture/generics22.rs: Likewise.
+ 	* rust/compile/torture/generics23.rs: Likewise.
+ 	* rust/compile/torture/generics24.rs: Likewise.
+ 	* rust/compile/torture/generics25.rs: Likewise.
+ 	* rust/compile/torture/generics26.rs: Likewise.
+ 	* rust/compile/torture/generics27.rs: Likewise.
+ 	* rust/compile/torture/generics28.rs: Likewise.
+ 	* rust/compile/torture/generics29.rs: Likewise.
+ 	* rust/compile/torture/generics3.rs: Likewise.
+ 	* rust/compile/torture/generics30.rs: Likewise.
+ 	* rust/compile/torture/generics31.rs: Likewise.
+ 	* rust/compile/torture/generics32.rs: Likewise.
+ 	* rust/compile/torture/generics4.rs: Likewise.
+ 	* rust/compile/torture/generics5.rs: Likewise.
+ 	* rust/compile/torture/generics6.rs: Likewise.
+ 	* rust/compile/torture/generics7.rs: Likewise.
+ 	* rust/compile/torture/generics8.rs: Likewise.
+ 	* rust/compile/torture/generics9.rs: Likewise.
+ 	* rust/compile/torture/intrinsics-2.rs: Likewise.
+ 	* rust/compile/torture/intrinsics-4.rs: Likewise.
+ 	* rust/compile/torture/intrinsics-5.rs: Likewise.
+ 	* rust/compile/torture/intrinsics-6.rs: Likewise.
+ 	* rust/compile/torture/intrinsics-7.rs: Likewise.
+ 	* rust/compile/torture/intrinsics-8.rs: Likewise.
+ 	* rust/compile/torture/issue-1024.rs: Likewise.
+ 	* rust/compile/torture/issue-1075.rs: Likewise.
+ 	* rust/compile/torture/issue-1432.rs: Likewise.
+ 	* rust/compile/torture/issue-1555.rs: Likewise.
+ 	* rust/compile/torture/issue-368.rs: Likewise.
+ 	* rust/compile/torture/issue-808.rs: Likewise.
+ 	* rust/compile/torture/issue-862.rs: Likewise.
+ 	* rust/compile/torture/issue-893-2.rs: Likewise.
+ 	* rust/compile/torture/issue-893.rs: Likewise.
+ 	* rust/compile/torture/must_use2.rs: Likewise.
+ 	* rust/compile/torture/nested_fn2.rs: Likewise.
+ 	* rust/compile/torture/phantom_data.rs: Likewise.
+ 	* rust/compile/torture/range-lang-item1.rs: Likewise.
+ 	* rust/compile/torture/traits1.rs: Likewise.
+ 	* rust/compile/torture/traits10.rs: Likewise.
+ 	* rust/compile/torture/traits11.rs: Likewise.
+ 	* rust/compile/torture/traits12.rs: Likewise.
+ 	* rust/compile/torture/traits13.rs: Likewise.
+ 	* rust/compile/torture/traits14.rs: Likewise.
+ 	* rust/compile/torture/traits15.rs: Likewise.
+ 	* rust/compile/torture/traits16.rs: Likewise.
+ 	* rust/compile/torture/traits17.rs: Likewise.
+ 	* rust/compile/torture/traits18.rs: Likewise.
+ 	* rust/compile/torture/traits19.rs: Likewise.
+ 	* rust/compile/torture/traits2.rs: Likewise.
+ 	* rust/compile/torture/traits3.rs: Likewise.
+ 	* rust/compile/torture/traits4.rs: Likewise.
+ 	* rust/compile/torture/traits5.rs: Likewise.
+ 	* rust/compile/torture/traits6.rs: Likewise.
+ 	* rust/compile/torture/traits7.rs: Likewise.
+ 	* rust/compile/torture/traits8.rs: Likewise.
+ 	* rust/compile/torture/traits9.rs: Likewise.
+ 	* rust/compile/torture/transmute-size-check-1.rs: Likewise.
+ 	* rust/compile/torture/transmute1.rs: Likewise.
+ 	* rust/compile/torture/uninit-intrinsic-1.rs: Likewise.
+ 	* rust/compile/torture/utf8_identifiers.rs: Likewise.
+ 	* rust/compile/traits1.rs: Likewise.
+ 	* rust/compile/traits10.rs: Likewise.
+ 	* rust/compile/traits11.rs: Likewise.
+ 	* rust/compile/traits12.rs: Likewise.
+ 	* rust/compile/traits2.rs: Likewise.
+ 	* rust/compile/traits3.rs: Likewise.
+ 	* rust/compile/traits4.rs: Likewise.
+ 	* rust/compile/traits5.rs: Likewise.
+ 	* rust/compile/traits6.rs: Likewise.
+ 	* rust/compile/traits7.rs: Likewise.
+ 	* rust/compile/traits8.rs: Likewise.
+ 	* rust/compile/traits9.rs: Likewise.
+ 	* rust/compile/try-expr1.rs: Likewise.
+ 	* rust/compile/try-trait.rs: Likewise.
+ 	* rust/compile/try_block1.rs: Likewise.
+ 	* rust/compile/type-bindings1.rs: Likewise.
+ 	* rust/compile/unconstrained_type_param.rs: Likewise.
+ 	* rust/compile/unify-errors1.rs: Likewise.
+ 	* rust/compile/unsafe10.rs: Likewise.
+ 	* rust/compile/v0-mangle1.rs: Likewise.
+ 	* rust/compile/v0-mangle2.rs: Likewise.
+ 	* rust/compile/while_let1.rs: Likewise.
+ 	* rust/execute/black_box.rs: Likewise.
+ 	* rust/execute/torture/atomic_load.rs: Likewise.
+ 	* rust/execute/torture/atomic_store.rs: Likewise.
+ 	* rust/execute/torture/basic_partial_ord1.rs: Likewise.
+ 	* rust/execute/torture/basic_partial_ord2.rs: Likewise.
+ 	* rust/execute/torture/builtin_macro_option_env.rs: Likewise.
+ 	* rust/execute/torture/closure1.rs: Likewise.
+ 	* rust/execute/torture/closure2.rs: Likewise.
+ 	* rust/execute/torture/closure3.rs: Likewise.
+ 	* rust/execute/torture/closure4.rs: Likewise.
+ 	* rust/execute/torture/coercion1.rs: Likewise.
+ 	* rust/execute/torture/coercion2.rs: Likewise.
+ 	* rust/execute/torture/coercion3.rs: Likewise.
+ 	* rust/execute/torture/const-generics-1.rs: Likewise.
+ 	* rust/execute/torture/const-generics-2.rs: Likewise.
+ 	* rust/execute/torture/const-generics-3.rs: Likewise.
+ 	* rust/execute/torture/const-generics-4.rs: Likewise.
+ 	* rust/execute/torture/const-generics-5.rs: Likewise.
+ 	* rust/execute/torture/const-generics-6.rs: Likewise.
+ 	* rust/execute/torture/const-generics-7.rs: Likewise.
+ 	* rust/execute/torture/copy_nonoverlapping1.rs: Likewise.
+ 	* rust/execute/torture/derive-default1.rs: Likewise.
+ 	* rust/execute/torture/derive-partialeq1.rs: Likewise.
+ 	* rust/execute/torture/derive-partialeq2.rs: Likewise.
+ 	* rust/execute/torture/derive_clone_enum1.rs: Likewise.
+ 	* rust/execute/torture/derive_macro1.rs: Likewise.
+ 	* rust/execute/torture/derive_macro3.rs: Likewise.
+ 	* rust/execute/torture/derive_macro4.rs: Likewise.
+ 	* rust/execute/torture/enum_intrinsics1.rs: Likewise.
+ 	* rust/execute/torture/enum_intrinsics2.rs: Likewise.
+ 	* rust/execute/torture/for-loop1.rs: Likewise.
+ 	* rust/execute/torture/for-loop2.rs: Likewise.
+ 	* rust/execute/torture/gat1.rs: Likewise.
+ 	* rust/execute/torture/impl_desugar-2.rs: Likewise.
+ 	* rust/execute/torture/impl_desugar.rs: Likewise.
+ 	* rust/execute/torture/impl_rpit1.rs: Likewise.
+ 	* rust/execute/torture/impl_rpit2.rs: Likewise.
+ 	* rust/execute/torture/impl_rpit3.rs: Likewise.
+ 	* rust/execute/torture/impl_trait1.rs: Likewise.
+ 	* rust/execute/torture/impl_trait2.rs: Likewise.
+ 	* rust/execute/torture/impl_trait3.rs: Likewise.
+ 	* rust/execute/torture/impl_trait4.rs: Likewise.
+ 	* rust/execute/torture/index1.rs: Likewise.
+ 	* rust/execute/torture/issue-1120.rs: Likewise.
+ 	* rust/execute/torture/issue-1133.rs: Likewise.
+ 	* rust/execute/torture/issue-1198.rs: Likewise.
+ 	* rust/execute/torture/issue-1232.rs: Likewise.
+ 	* rust/execute/torture/issue-1249.rs: Likewise.
+ 	* rust/execute/torture/issue-1436.rs: Likewise.
+ 	* rust/execute/torture/issue-1481.rs: Likewise.
+ 	* rust/execute/torture/issue-1482.rs: Likewise.
+ 	* rust/execute/torture/issue-1496.rs: Likewise.
+ 	* rust/execute/torture/issue-1720-2.rs: Likewise.
+ 	* rust/execute/torture/issue-1720.rs: Likewise.
+ 	* rust/execute/torture/issue-2005.rs: Likewise.
+ 	* rust/execute/torture/issue-2052.rs: Likewise.
+ 	* rust/execute/torture/issue-2179.rs: Likewise.
+ 	* rust/execute/torture/issue-2180.rs: Likewise.
+ 	* rust/execute/torture/issue-2236.rs: Likewise.
+ 	* rust/execute/torture/issue-2583.rs: Likewise.
+ 	* rust/execute/torture/issue-3126.rs: Likewise.
+ 	* rust/execute/torture/issue-3381.rs: Likewise.
+ 	* rust/execute/torture/issue-3502.rs: Likewise.
+ 	* rust/execute/torture/issue-3836.rs: Likewise.
+ 	* rust/execute/torture/issue-647.rs: Likewise.
+ 	* rust/execute/torture/issue-845.rs: Likewise.
+ 	* rust/execute/torture/issue-851.rs: Likewise.
+ 	* rust/execute/torture/issue-858.rs: Likewise.
+ 	* rust/execute/torture/iter1.rs: Likewise.
+ 	* rust/execute/torture/macros23.rs: Likewise.
+ 	* rust/execute/torture/macros28.rs: Likewise.
+ 	* rust/execute/torture/method2.rs: Likewise.
+ 	* rust/execute/torture/method3.rs: Likewise.
+ 	* rust/execute/torture/method4.rs: Likewise.
+ 	* rust/execute/torture/min_specialization2.rs: Likewise.
+ 	* rust/execute/torture/min_specialization3.rs: Likewise.
+ 	* rust/execute/torture/operator_overload_1.rs: Likewise.
+ 	* rust/execute/torture/operator_overload_10.rs: Likewise.
+ 	* rust/execute/torture/operator_overload_11.rs: Likewise.
+ 	* rust/execute/torture/operator_overload_12.rs: Likewise.
+ 	* rust/execute/torture/operator_overload_2.rs: Likewise.
+ 	* rust/execute/torture/operator_overload_3.rs: Likewise.
+ 	* rust/execute/torture/operator_overload_4.rs: Likewise.
+ 	* rust/execute/torture/operator_overload_5.rs: Likewise.
+ 	* rust/execute/torture/operator_overload_6.rs: Likewise.
+ 	* rust/execute/torture/operator_overload_7.rs: Likewise.
+ 	* rust/execute/torture/operator_overload_8.rs: Likewise.
+ 	* rust/execute/torture/operator_overload_9.rs: Likewise.
+ 	* rust/execute/torture/partial-eq-1.rs: Likewise.
+ 	* rust/execute/torture/partial-eq-2.rs: Likewise.
+ 	* rust/execute/torture/partial-eq-3.rs: Likewise.
+ 	* rust/execute/torture/partial-eq-4.rs: Likewise.
+ 	* rust/execute/torture/partial-ord-1.rs: Likewise.
+ 	* rust/execute/torture/partial-ord-2.rs: Likewise.
+ 	* rust/execute/torture/partial-ord-3.rs: Likewise.
+ 	* rust/execute/torture/partial-ord-4.rs: Likewise.
+ 	* rust/execute/torture/partial-ord-5.rs: Likewise.
+ 	* rust/execute/torture/partial-ord-6.rs: Likewise.
+ 	* rust/execute/torture/prefetch_data.rs: Likewise.
+ 	* rust/execute/torture/ref-pattern2.rs: Likewise.
+ 	* rust/execute/torture/sip-hasher.rs: Likewise.
+ 	* rust/execute/torture/slice-magic.rs: Likewise.
+ 	* rust/execute/torture/slice-magic2.rs: Likewise.
+ 	* rust/execute/torture/slice1.rs: Likewise.
+ 	* rust/execute/torture/str-layout1.rs: Likewise.
+ 	* rust/execute/torture/trait1.rs: Likewise.
+ 	* rust/execute/torture/trait10.rs: Likewise.
+ 	* rust/execute/torture/trait11.rs: Likewise.
+ 	* rust/execute/torture/trait12.rs: Likewise.
+ 	* rust/execute/torture/trait13.rs: Likewise.
+ 	* rust/execute/torture/trait14.rs: Likewise.
+ 	* rust/execute/torture/trait15.rs: Likewise.
+ 	* rust/execute/torture/trait2.rs: Likewise.
+ 	* rust/execute/torture/trait3.rs: Likewise.
+ 	* rust/execute/torture/trait4.rs: Likewise.
+ 	* rust/execute/torture/trait5.rs: Likewise.
+ 	* rust/execute/torture/trait6.rs: Likewise.
+ 	* rust/execute/torture/trait7.rs: Likewise.
+ 	* rust/execute/torture/trait8.rs: Likewise.
+ 	* rust/execute/torture/trait9.rs: Likewise.
+ 	* rust/execute/torture/transmute1.rs: Likewise.
+ 	* rust/execute/torture/wrapping_op1.rs: Likewise.
+ 	* rust/execute/torture/wrapping_op2.rs: Likewise.
+ 	* rust/link/generic_function_1.rs: Likewise.
+ 	* rust/link/trait_import_1.rs: Likewise.
+ 
+ 2025-12-03  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+ 
+ 	* rust/compile/braced_macro_arm.rs: Remove parent errors.
+ 	* rust/compile/issue-407-2.rs: Likewise.
+ 	* rust/compile/issue-407.rs: Likewise.
+ 	* rust/compile/issue-4162.rs: Likewise.
+ 	* rust/compile/issue-867.rs: Likewise.
+ 	* rust/compile/raw_ref_op_invalid.rs: Likewise.
+ 
+ 2025-12-03  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+ 
+ 	* rust/compile/macros/mbe/macro-issue3608.rs: Remove error.
+ 
+ 2025-12-03  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+ 
+ 	* rust/compile/braced_macro_arm.rs: Remove superfluous error message
+ 	matching.
+ 	* rust/compile/decl_macro6.rs: Likewise.
+ 	* rust/compile/decl_macro7.rs: Likewise.
+ 	* rust/compile/extern_type_item_missing_semi.rs: Likewise.
+ 	* rust/compile/issue-2187.rs: Likewise.
+ 	* rust/compile/issue-407-2.rs: Likewise.
+ 	* rust/compile/issue-407.rs: Likewise.
+ 	* rust/compile/issue-4162.rs: Likewise.
+ 	* rust/compile/issue-867.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro-issue1053-2.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro-issue1395-2.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro-issue3608.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro27.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro28.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro29.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro30.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro31.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro33.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro35.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro37.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro38.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro39.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro48.rs: Likewise.
+ 	* rust/compile/parse_invalid_specialization.rs: Likewise.
+ 	* rust/compile/parse_simple_path_fail_1.rs: Likewise.
+ 	* rust/compile/parse_simple_path_fail_2.rs: Likewise.
+ 	* rust/compile/raw-string-loc.rs: Likewise.
+ 	* rust/compile/raw-byte-string-loc.rs: Likewise.
+ 	* rust/compile/self_const_ptr.rs: Likewise.
+ 	* rust/compile/self_mut_ptr.rs: Likewise.
+ 	* rust/compile/static_var1.rs: Likewise.
+ 	* rust/compile/self_ptr.rs: Likewise.
+ 	* rust/compile/torture/identifier-missing-impl-1.rs: Likewise.
+ 
+ 2025-12-03  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/103371
+ 	* gfortran.dg/pdt_71.f03: New test.
+ 
+ 2025-12-03  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* g++.target/i386/avx512-pr71921.C: New test.
+ 	* g++.target/i386/pr71921.C: New test.
+ 
+ 2025-12-02  Robin Dapp  <rdapp.gcc@gmail.com>
+ 
+ 	PR target/122656
+ 	* gcc.target/riscv/rvv/base/pr122656-1.c: New test.
+ 	* gcc.target/riscv/rvv/base/pr122656-2.c: New test.`
+ 
+ 2025-12-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/122860
+ 	* g++.dg/ext/pr122860.C: New test.
+ 
+ 2025-12-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/122836
+ 	* g++.dg/ext/pr122836.C: New test.
+ 
+ 2025-12-02  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/122171
+ 	PR c++/112632
+ 	* g++.dg/cpp0x/alias-decl-conv1.C: New test.
+ 
+ 2025-12-02  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/122868
+ 	* gcc.dg/vect/vect-early-break_140-pr122868_1.c: New test.
+ 	* gcc.dg/vect/vect-early-break_140-pr122868_2.c: New test.
+ 	* gcc.dg/vect/vect-early-break_140-pr122868_3.c: New test.
+ 	* gcc.dg/vect/vect-early-break_140-pr122868_4.c: New test.
+ 
+ 2025-12-02  David Guillen Fandos  <david@davidgf.net>
+ 
+ 	* gcc.target/mips/madd-10.c: New test.
+ 	* gcc.target/mips/maddu-5.c: New test.
+ 	* gcc.target/mips/msub-9.c: New test.
+ 	* gcc.target/mips/msubu-5.c: New test.
+ 
+ 2025-12-02  David Guillen Fandos  <david@davidgf.net>
+ 
+ 	* gcc.target/mips/bswap-7.c: New test.
+ 
+ 2025-12-02  David Guillen Fandos  <david@davidgf.net>
+ 
+ 	* gcc.target/mips/max-1.c: New test.
+ 	* gcc.target/mips/min-1.c: New test.
+ 
+ 2025-12-02  Saurabh Jha  <saurabh.jha@arm.com>
+ 	    Radek Barton  <radek.barton@microsoft.com>
+ 
+ 	* gcc.target/aarch64/mingw/variadic_hfa.c: New test.
+ 	* gcc.target/aarch64/mingw/variadic_hva.c: New test.
+ 	* gcc.target/aarch64/mingw/variadic_int.c: New test.
+ 
+ 2025-12-02  Saurabh Jha  <saurabh.jha@arm.com>
+ 	    Radek Barton  <radek.barton@microsoft.com>
+ 	    Martin Vejbora  <mvejbora@microsoft.com>
+ 
+ 	* gcc.target/aarch64/mingw/mingw.exp: New test.
+ 	* gcc.target/aarch64/mingw/long_double_size.c: New test.
+ 
+ 2025-12-02  Saurabh Jha  <saurabh.jha@arm.com>
+ 
+ 	* lib/scanasm.exp: Add support for mingw targets.
+ 
+ 2025-12-01  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	* g++.dg/modules/friend-12_a.C: New test.
+ 	* g++.dg/modules/friend-12_b.C: New test.
+ 
+ 2025-12-01  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/122915
+ 	* g++.dg/modules/namespace-16_a.C: New test.
+ 	* g++.dg/modules/namespace-16_b.C: New test.
+ 	* g++.dg/modules/namespace-16_c.C: New test.
+ 	* g++.dg/modules/namespace-16_d.C: New test.
+ 
+ 2025-12-01  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	PR target/122858
+ 	* gcc.target/arm/mve/pr122858.c: New test.
+ 
+ 2025-12-01  Christopher Albert  <albert@tugraz.at>
+ 	    Harald Anlauf  <anlauf@gcc.gnu.org>
+ 
+ 	PR fortran/107721
+ 	PR fortran/102417
+ 	* gfortran.dg/array_constructor_typespec_1.f90: New test.
+ 
+ 2025-12-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/122905
+ 	* g++.dg/lto/pr122905.h: New file.
+ 	* g++.dg/lto/pr122905_0.C: New test.
+ 	* g++.dg/lto/pr122905_1.C: New test.
+ 
+ 2025-12-01  Robin Dapp  <rdapp@ventanamicro.com>
+ 
+ 	PR target/122652
+ 	* gcc.target/riscv/rvv/base/pr122652.c: New test.
+ 
+ 2025-12-01  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	PR testsuite/122596
+ 	* gfortran.dg/alloc_comp_deep_copy_5.f90: Restrict
+ 	-Wa,--noexecstack, -Wl,-z,noexecstack to gas, gld.
+ 	* gfortran.dg/alloc_comp_deep_copy_6.f90: Likewise.
+ 
+ 2025-12-01  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	PR c++/81337
+ 	PR c++/52477
+ 	* g++.dg/gcov/pr16855.C (Test::~Test): xfail on *-*-solaris2*
+ 	(dg-final): Likewise.
+ 	* g++.dg/gcov/pr16855-priority.C (Test::~Test): Likewise.
+ 	(dg-final): Likewise.
+ 
+ 2025-12-01  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/122906
+ 	* g++.target/i386/pr122906-1.C: New test.
+ 
+ 2025-11-30  Kugan Vivekanandarajah  <kvivekananda@nvidia.com>
+ 
+ 	* gcc.dg/vect/tsvc/vect-tsvc-s293.c: Remove xfail.
+ 	* gcc.target/aarch64/vect-ld1r-compile.c: Add
+ 	-fno-tree-loop-distribute-patterns to prevent memset detection.
+ 
+ 2025-11-30  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	PR fortran/122923
+ 	* gfortran.dg/ISO_Fortran_binding_17.f90: Recognize language
+ 	list in warning regexp.
+ 	* gfortran.dg/c-interop/allocate-errors.f90: Likewise.
+ 	* gfortran.dg/c-interop/establish-errors.f90: Likewise.
+ 	* gfortran.dg/c-interop/pr113338.f90: Likewise.
+ 	* gfortran.dg/c-interop/section-errors.f90: Likewise.
+ 	* gfortran.dg/c-interop/select-errors.f90: Likewise.
+ 	* gfortran.dg/c-interop/setpointer-errors.f90: Likewise.
+ 
+ 2025-11-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/122465
+ 	* g++.dg/cpp0x/pr122465.C: New test.
+ 
+ 2025-11-30  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/115120
+ 	PR tree-optimization/119577
+ 	PR tree-optimization/119860
+ 	* gcc.dg/vect/vect-early-break_39.c: Update.
+ 	* gcc.dg/vect/vect-early-break_139.c: New testcase.
+ 	* gcc.target/aarch64/sve/peel_ind_10.c: Update.
+ 	* gcc.target/aarch64/sve/peel_ind_11.c: Update.
+ 	* gcc.target/aarch64/sve/peel_ind_12.c: Update.
+ 	* gcc.target/aarch64/sve/peel_ind_5.c: Update.
+ 	* gcc.target/aarch64/sve/peel_ind_6.c: Update.
+ 	* gcc.target/aarch64/sve/peel_ind_7.c: Update.
+ 	* gcc.target/aarch64/sve/peel_ind_9.c: Update.
+ 	* gcc.target/aarch64/sve/pr119351.c
+ 
+ 2025-11-30  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* algol68/compile/mcgt-1.3b.a68: New file.
+ 	* algol68/compile/mcgt-7.1.3a-bis.a68: Likewise.
+ 	* algol68/compile/mcgt-7.1.3a.a68: Likewise.
+ 	* algol68/execute/mcgt/execute.exp: Likewise.
+ 	* algol68/execute/mcgt/mcgt-1.3a.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-1.3c.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-2.2.1a.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-2.2.2a.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-2.2.3a.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-2.3a.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-2.3b.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-2.3c.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-2.3e.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-2.4.2a.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-2.4.2b.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-2.4.2c.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-2.4.3a.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-2.6a.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-2.6b.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-2.7d.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-2.7e.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-2.8a.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-2.8b.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-2.9.1a.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-3.5.1a.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-3.5d.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-3.7.2a.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-3.8.2a.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-3.9.1b.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-4.1.2a.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-4.1.3a.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-4.1.6a.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-4.1.6b.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-4.1.6c.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-4.2.6a.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-4.2.6b.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-4.2.6d.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-4.3.1a.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-4.3.1b.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-4.3.2a.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-5.1.2a.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-5.1.3a.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-5.1.3c.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-5.1.5a.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-6.2.2a.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-6.2.2b.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-6.2.2c.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-7.1.1a.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-7.1.1b.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-7.1.3a.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-7.3.2a.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-7.3.6a.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-7.3.6b.a68: Likewise.
+ 	* algol68/execute/mcgt/mcgt-7.5.3a.a68: Likewise.
+ 
+ 2025-11-30  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* algol68/README.mcts: New file.
+ 
+ 2025-11-30  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* algol68/compile/a68includes/goodbye-supper.a68
+ 	* algol68/compile/a68includes/goodbye.a68: Likewise.
+ 	* algol68/compile/a68includes/hello-supper.a68: Likewise.
+ 	* algol68/compile/a68includes/hello.a68: Likewise.
+ 	* algol68/compile/actual-bounds-expected-1.a68: Likewise.
+ 	* algol68/compile/actual-bounds-expected-2.a68: Likewise.
+ 	* algol68/compile/actual-bounds-expected-3.a68: Likewise.
+ 	* algol68/compile/balancing-1.a68: Likewise.
+ 	* algol68/compile/bold-nestable-comment-1.a68: Likewise.
+ 	* algol68/compile/bold-taggle-1.a68: Likewise.
+ 	* algol68/compile/brief-nestable-comment-1.a68: Likewise.
+ 	* algol68/compile/brief-nestable-comment-2.a68: Likewise.
+ 	* algol68/compile/char-break-1.a68: Likewise.
+ 	* algol68/compile/compile.exp: Likewise.
+ 	* algol68/compile/conditional-clause-1.a68: Likewise.
+ 	* algol68/compile/error-bold-taggle-1.a68: Likewise.
+ 	* algol68/compile/error-coercion-1.a68: Likewise.
+ 	* algol68/compile/error-coercion-2.a68: Likewise.
+ 	* algol68/compile/error-coercion-flex-1.a68: Likewise.
+ 	* algol68/compile/error-conformance-clause-1.a68: Likewise.
+ 	* algol68/compile/error-contraction-1.a68: Likewise.
+ 	* algol68/compile/error-contraction-2.a68: Likewise.
+ 	* algol68/compile/error-incestuous-union-1.a68: Likewise.
+ 	* algol68/compile/error-label-after-decl-1.a68: Likewise.
+ 	* algol68/compile/error-nestable-comments-1.a68: Likewise.
+ 	* algol68/compile/error-nested-comment-1.a68: Likewise.
+ 	* algol68/compile/error-no-bounds-allowed-1.a68: Likewise.
+ 	* algol68/compile/error-string-break-1.a68: Likewise.
+ 	* algol68/compile/error-string-break-2.a68: Likewise.
+ 	* algol68/compile/error-string-break-3.a68: Likewise.
+ 	* algol68/compile/error-string-break-4.a68: Likewise.
+ 	* algol68/compile/error-string-break-5.a68: Likewise.
+ 	* algol68/compile/error-string-break-6.a68: Likewise.
+ 	* algol68/compile/error-string-break-7.a68: Likewise.
+ 	* algol68/compile/error-supper-1.a68: Likewise.
+ 	* algol68/compile/error-supper-2.a68: Likewise.
+ 	* algol68/compile/error-supper-3.a68: Likewise.
+ 	* algol68/compile/error-supper-4.a68: Likewise.
+ 	* algol68/compile/error-supper-5.a68: Likewise.
+ 	* algol68/compile/error-supper-6.a68: Likewise.
+ 	* algol68/compile/error-underscore-in-mode-1.a68: Likewise.
+ 	* algol68/compile/error-underscore-in-tag-1.a68: Likewise.
+ 	* algol68/compile/error-upper-1.a68: Likewise.
+ 	* algol68/compile/error-widening-1.a68: Likewise.
+ 	* algol68/compile/error-widening-2.a68: Likewise.
+ 	* algol68/compile/error-widening-3.a68: Likewise.
+ 	* algol68/compile/error-widening-4.a68: Likewise.
+ 	* algol68/compile/error-widening-5.a68: Likewise.
+ 	* algol68/compile/error-widening-6.a68: Likewise.
+ 	* algol68/compile/error-widening-7.a68: Likewise.
+ 	* algol68/compile/error-widening-8.a68: Likewise.
+ 	* algol68/compile/error-widening-9.a68: Likewise.
+ 	* algol68/compile/hidden-operators-1.a68: Likewise.
+ 	* algol68/compile/implicit-widening-1.a68: Likewise.
+ 	* algol68/compile/include-supper.a68: Likewise.
+ 	* algol68/compile/include.a68: Likewise.
+ 	* algol68/compile/labeled-unit-1.a68: Likewise.
+ 	* algol68/compile/nested-comment-1.a68: Likewise.
+ 	* algol68/compile/nested-comment-2.a68: Likewise.
+ 	* algol68/compile/operators-firmly-related.a68: Likewise.
+ 	* algol68/compile/recursive-modes-1.a68: Likewise.
+ 	* algol68/compile/recursive-modes-2.a68: Likewise.
+ 	* algol68/compile/serial-clause-jump-1.a68: Likewise.
+ 	* algol68/compile/snobol.a68: Likewise.
+ 	* algol68/compile/supper-1.a68: Likewise.
+ 	* algol68/compile/supper-10.a68: Likewise.
+ 	* algol68/compile/supper-11.a68: Likewise.
+ 	* algol68/compile/supper-12.a68: Likewise.
+ 	* algol68/compile/supper-13.a68: Likewise.
+ 	* algol68/compile/supper-2.a68: Likewise.
+ 	* algol68/compile/supper-3.a68: Likewise.
+ 	* algol68/compile/supper-4.a68: Likewise.
+ 	* algol68/compile/supper-5.a68: Likewise.
+ 	* algol68/compile/supper-6.a68: Likewise.
+ 	* algol68/compile/supper-7.a68: Likewise.
+ 	* algol68/compile/supper-8.a68: Likewise.
+ 	* algol68/compile/supper-9.a68: Likewise.
+ 	* algol68/compile/uniting-1.a68: Likewise.
+ 	* algol68/compile/upper-1.a68: Likewise.
+ 	* algol68/compile/warning-scope-1.a68: Likewise.
+ 	* algol68/compile/warning-scope-2.a68: Likewise.
+ 	* algol68/compile/warning-scope-3.a68: Likewise.
+ 	* algol68/compile/warning-scope-4.a68: Likewise.
+ 	* algol68/compile/warning-scope-5.a68: Likewise.
+ 	* algol68/compile/warning-scope-6.a68: Likewise.
+ 	* algol68/compile/warning-scope-7.a68: Likewise.
+ 	* algol68/compile/warning-voiding-1.a68: Likewise.
+ 	* algol68/compile/warning-voiding-2.a68: Likewise.
+ 	* algol68/compile/error-compile-unknown-tag-1.a68: New file.
+ 	* algol68/compile/error-def-1.a68: New file.
+ 	* algol68/compile/error-mode-stropping-1.a68: New file.
+ 	* algol68/compile/error-mode-stropping-10.a68: New file.
+ 	* algol68/compile/error-mode-stropping-11.a68: New file.
+ 	* algol68/compile/error-mode-stropping-12.a68: New file.
+ 	* algol68/compile/error-mode-stropping-13.a68: New file.
+ 	* algol68/compile/error-mode-stropping-14.a68: New file.
+ 	* algol68/compile/error-mode-stropping-15.a68: New file.
+ 	* algol68/compile/error-mode-stropping-16.a68: New file.
+ 	* algol68/compile/error-mode-stropping-17.a68: New file.
+ 	* algol68/compile/error-mode-stropping-2.a68: New file.
+ 	* algol68/compile/error-mode-stropping-3.a68: New file.
+ 	* algol68/compile/error-mode-stropping-4.a68: New file.
+ 	* algol68/compile/error-mode-stropping-5.a68: New file.
+ 	* algol68/compile/error-mode-stropping-6.a68: New file.
+ 	* algol68/compile/error-mode-stropping-8.a68: New file.
+ 	* algol68/compile/error-mode-stropping-9.a68: New file.
+ 	* algol68/compile/error-module-coercions-1.a68: New file.
+ 	* algol68/compile/error-module-not-found-1.a68: New file.
+ 	* algol68/compile/error-module-ranges-1.a68: New file.
+ 	* algol68/compile/error-pragmat-1.a68: New file.
+ 	* algol68/compile/error-pragmat-access-1.a68: New file.
+ 	* algol68/compile/error-pragmat-access-2.a68: New file.
+ 	* algol68/compile/error-pub-loc-1.a68: New file.
+ 	* algol68/compile/error-pub-out-of-def-1.a68: New file.
+ 	* algol68/compile/error-pub-out-of-def-2.a68: New file.
+ 	* algol68/compile/error-string-break-8.a68: New file.
+ 	* algol68/compile/error-stropping-5.a68: New file.
+ 	* algol68/compile/error-stropping-6.a68: New file.
+ 	* algol68/compile/error-stropping-keyword-1.a68: New file.
+ 	* algol68/compile/error-stropping-keyword-2.a68: New file.
+ 	* algol68/compile/error-stropping-keyword-3.a68: New file.
+ 	* algol68/compile/error-stropping-keyword-4.a68: New file.
+ 	* algol68/compile/error-vacuum-1.a68: New file.
+ 	* algol68/compile/error-vacuum-2.a68: New file.
+ 	* algol68/compile/error-vacuum-3.a68: New file.
+ 	* algol68/compile/module-1.a68: New file.
+ 	* algol68/compile/module-2.a68: New file.
+ 	* algol68/compile/module-extracts-1.a68: New file.
+ 	* algol68/compile/module-mode-exports-1.a68: New file.
+ 	* algol68/compile/module-mode-exports-2.a68: New file.
+ 	* algol68/compile/module-mode-exports-3.a68: New file.
+ 	* algol68/compile/module-mode-exports-4.a68: New file.
+ 	* algol68/compile/module-mode-exports-5.a68: New file.
+ 	* algol68/compile/module-mode-exports-6.a68: New file.
+ 	* algol68/compile/module-mode-exports-7.a68: New file.
+ 	* algol68/compile/module-mode-exports-8.a68: New file.
+ 	* algol68/compile/module-mode-exports-9.a68: New file.
+ 	* algol68/compile/module-pub-1.a68: New file.
+ 	* algol68/compile/module-pub-mangling-1.a68: New file.
+ 	* algol68/compile/module-pub-mangling-10.a68: New file.
+ 	* algol68/compile/module-pub-mangling-11.a68: New file.
+ 	* algol68/compile/module-pub-mangling-12.a68: New file.
+ 	* algol68/compile/module-pub-mangling-13.a68: New file.
+ 	* algol68/compile/module-pub-mangling-14.a68: New file.
+ 	* algol68/compile/module-pub-mangling-15.a68: New file.
+ 	* algol68/compile/module-pub-mangling-16.a68: New file.
+ 	* algol68/compile/module-pub-mangling-17.a68: New file.
+ 	* algol68/compile/module-pub-mangling-18.a68: New file.
+ 	* algol68/compile/module-pub-mangling-19.a68: New file.
+ 	* algol68/compile/module-pub-mangling-2.a68: New file.
+ 	* algol68/compile/module-pub-mangling-20.a68: New file.
+ 	* algol68/compile/module-pub-mangling-21.a68: New file.
+ 	* algol68/compile/module-pub-mangling-22.a68: New file.
+ 	* algol68/compile/module-pub-mangling-3.a68: New file.
+ 	* algol68/compile/module-pub-mangling-4.a68: New file.
+ 	* algol68/compile/module-pub-mangling-5.a68: New file.
+ 	* algol68/compile/module-pub-mangling-6.a68: New file.
+ 	* algol68/compile/module-pub-mangling-7.a68: New file.
+ 	* algol68/compile/module-pub-mangling-8.a68: New file.
+ 	* algol68/compile/module-pub-mangling-9.a68: New file.
+ 	* algol68/compile/module-top-down-1.a68: New file.
+ 	* algol68/compile/modules/compile.exp: New file.
+ 	* algol68/compile/modules/module1.a68: New file.
+ 	* algol68/compile/modules/module2.a68: New file.
+ 	* algol68/compile/modules/module3.a68: New file.
+ 	* algol68/compile/modules/module4.a68: New file.
+ 	* algol68/compile/modules/module5.a68: New file.
+ 	* algol68/compile/modules/module6.a68: New file.
+ 	* algol68/compile/modules/module7.a68: New file.
+ 	* algol68/compile/modules/module8.a68: New file.
+ 	* algol68/compile/modules/module9.a68: New file.
+ 	* algol68/compile/modules/program-7.a68: New file.
+ 	* algol68/compile/modules/program-8.a68: New file.
+ 	* algol68/compile/modules/program-9.a68: New file.
+ 	* algol68/compile/modules/program-error-no-prio-1.a68: New file.
+ 	* algol68/compile/modules/program-error-outside-access-1.a68: New file.
+ 	* algol68/compile/modules/program-module-accesses-module-1.a68: New file.
+ 	* algol68/compile/modules/program-proc-arg-order-1.a68: New file.
+ 	* algol68/compile/warning-hidding-1.a68: New file.
+ 	* algol68/compile/warning-hidding-2.a68: New file.
+ 	* algol68/compile/warning-hidding-3.a68: New file.
+ 	* algol68/compile/warning-hidding-4.a68: New file.
+ 	* algol68/compile/warning-hidding-5.a68: New file.
+ 	* algol68/compile/warning-hidding-6.a68: New file.
+ 	* algol68/compile/warning-hidding-7.a68: New file.
+ 	* algol68/compile/warning-module-hidding-1.a68: New file.
+ 	* algol68/compile/warning-pub-loc-1.a68: New file.
+ 
+ 2025-11-30  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* algol68/execute/loop-7.a68: New file.
+ 	* algol68/execute/loop-8.a68: Likewise.
+ 	* algol68/execute/loop-9.a68: Likewise.
+ 	* algol68/execute/loop-overflow-underflow.a68: Likewise.
+ 	* algol68/execute/lt-int-1.a68: Likewise.
+ 	* algol68/execute/lt-string-stride-1.a68: Likewise.
+ 	* algol68/execute/lwb-1.a68: Likewise.
+ 	* algol68/execute/minus-int-1.a68: Likewise.
+ 	* algol68/execute/minusab-1.a68: Likewise.
+ 	* algol68/execute/minusab-2.a68: Likewise.
+ 	* algol68/execute/minusab-3.a68: Likewise.
+ 	* algol68/execute/minusab-4.a68: Likewise.
+ 	* algol68/execute/mod-int-1.a68: Likewise.
+ 	* algol68/execute/modab-1.a68: Likewise.
+ 	* algol68/execute/modab-2.a68: Likewise.
+ 	* algol68/execute/mode-indication-1.a68: Likewise.
+ 	* algol68/execute/mult-char-1.a68: Likewise.
+ 	* algol68/execute/mult-int-1.a68: Likewise.
+ 	* algol68/execute/mult-string-1.a68: Likewise.
+ 	* algol68/execute/mult-string-2.a68: Likewise.
+ 	* algol68/execute/mult-string-3.a68: Likewise.
+ 	* algol68/execute/mult-string-4.a68: Likewise.
+ 	* algol68/execute/multab-1.a68: Likewise.
+ 	* algol68/execute/multab-2.a68: Likewise.
+ 	* algol68/execute/multab-3.a68: Likewise.
+ 	* algol68/execute/mutual-recursion-1.a68: Likewise.
+ 	* algol68/execute/ne-bits-1.a68: Likewise.
+ 	* algol68/execute/ne-char-char-1.a68: Likewise.
+ 	* algol68/execute/ne-int-1.a68: Likewise.
+ 	* algol68/execute/ne-string-1.a68: Likewise.
+ 	* algol68/execute/neg-int-1.a68: Likewise.
+ 	* algol68/execute/not-bits-1.a68: Likewise.
+ 	* algol68/execute/odd-1.a68: Likewise.
+ 	* algol68/execute/op-1.a68: Likewise.
+ 	* algol68/execute/op-2.a68: Likewise.
+ 	* algol68/execute/op-3.a68: Likewise.
+ 	* algol68/execute/operator-declaration-1.a68: Likewise.
+ 	* algol68/execute/or-bits-1.a68: Likewise.
+ 	* algol68/execute/orf-1.a68: Likewise.
+ 	* algol68/execute/over-int-1.a68: Likewise.
+ 	* algol68/execute/overab-1.a68: Likewise.
+ 	* algol68/execute/overab-2.a68: Likewise.
+ 	* algol68/execute/particular-program-1.a68: Likewise.
+ 	* algol68/execute/plus-char-1.a68: Likewise.
+ 	* algol68/execute/plus-int-1.a68: Likewise.
+ 	* algol68/execute/plus-string-1.a68: Likewise.
+ 	* algol68/execute/plus-string-2.a68: Likewise.
+ 	* algol68/execute/plus-string-stride-1.a68: Likewise.
+ 	* algol68/execute/plusab-1.a68: Likewise.
+ 	* algol68/execute/plusab-2.a68: Likewise.
+ 	* algol68/execute/plusab-3.a68: Likewise.
+ 	* algol68/execute/plusab-4.a68: Likewise.
+ 	* algol68/execute/plusab-string-1.a68: Likewise.
+ 	* algol68/execute/plusto-char-1.a68: Likewise.
+ 	* algol68/execute/plusto-string-1.a68: Likewise.
+ 	* algol68/execute/posix-argc-argv-1.a68: Likewise.
+ 	* algol68/execute/posix-fopen-1.a68: Likewise.
+ 	* algol68/execute/posix-fputc-fputs-1.a68: Likewise.
+ 	* algol68/execute/posix-getenv-1.a68: Likewise.
+ 	* algol68/execute/posix-perror-1.a68: Likewise.
+ 	* algol68/execute/posix-putchar-1.a68: Likewise.
+ 	* algol68/execute/posix-stdinouterr-1.a68: Likewise.
+ 	* algol68/execute/posix-strerror-1.a68: Likewise.
+ 	* algol68/execute/posix-stride-1.a68: Likewise.
+ 	* algol68/execute/pow-int-1.a68: Likewise.
+ 	* algol68/execute/pow-real-1.a68: Likewise.
+ 	* algol68/execute/proc-1.a68: Likewise.
+ 	* algol68/execute/proc-10.a68: Likewise.
+ 	* algol68/execute/proc-12.a68: Likewise.
+ 	* algol68/execute/proc-13.a68: Likewise.
+ 	* algol68/execute/proc-14.a68: Likewise.
+ 	* algol68/execute/proc-15.a68: Likewise.
+ 	* algol68/execute/proc-16.a68: Likewise.
+ 	* algol68/execute/proc-17.a68: Likewise.
+ 	* algol68/execute/proc-18.a68: Likewise.
+ 	* algol68/execute/proc-19.a68: Likewise.
+ 	* algol68/execute/proc-2.a68: Likewise.
+ 	* algol68/execute/proc-20.a68: Likewise.
+ 	* algol68/execute/proc-21.a68: Likewise.
+ 	* algol68/execute/proc-22.a68: Likewise.
+ 	* algol68/execute/proc-23.a68: Likewise.
+ 	* algol68/execute/proc-25.a68: Likewise.
+ 	* algol68/execute/proc-26.a68: Likewise.
+ 	* algol68/execute/proc-27.a68: Likewise.
+ 	* algol68/execute/proc-28.a68: Likewise.
+ 	* algol68/execute/proc-29.a68: Likewise.
+ 	* algol68/execute/proc-3.a68: Likewise.
+ 	* algol68/execute/proc-4.a68: Likewise.
+ 	* algol68/execute/proc-5.a68: Likewise.
+ 	* algol68/execute/proc-6.a68: Likewise.
+ 	* algol68/execute/proc-7.a68: Likewise.
+ 	* algol68/execute/proc-8.a68: Likewise.
+ 	* algol68/execute/procedured-goto-1.a68: Likewise.
+ 	* algol68/execute/quine.a68: Likewise.
+ 	* algol68/execute/random-1.a68: Likewise.
+ 	* algol68/execute/re-im-1.a68: Likewise.
+ 	* algol68/execute/rela-string-1.a68: Likewise.
+ 	* algol68/execute/repr-1.a68: Likewise.
+ 	* algol68/execute/round-1.a68: Likewise.
+ 	* algol68/execute/row-display-1.a68: Likewise.
+ 	* algol68/execute/row-display-2.a68: Likewise.
+ 	* algol68/execute/row-display-3.a68: Likewise.
+ 	* algol68/execute/row-display-4.a68: Likewise.
+ 	* algol68/execute/row-display-5.a68: Likewise.
+ 	* algol68/execute/rowing-1.a68: Likewise.
+ 	* algol68/execute/rowing-10.a68: Likewise.
+ 	* algol68/execute/rowing-11.a68: Likewise.
+ 	* algol68/execute/rowing-12.a68: Likewise.
+ 	* algol68/execute/rowing-13.a68: Likewise.
+ 	* algol68/execute/rowing-2.a68: Likewise.
+ 	* algol68/execute/rowing-3.a68: Likewise.
+ 	* algol68/execute/rowing-4.a68: Likewise.
+ 	* algol68/execute/rowing-5.a68: Likewise.
+ 	* algol68/execute/rowing-6.a68: Likewise.
+ 	* algol68/execute/rowing-7.a68: Likewise.
+ 	* algol68/execute/rowing-8.a68: Likewise.
+ 	* algol68/execute/rowing-9.a68: Likewise.
+ 	* algol68/execute/selection-1.a68: Likewise.
+ 	* algol68/execute/selection-2.a68: Likewise.
+ 	* algol68/execute/selection-3.a68: Likewise.
+ 	* algol68/execute/selection-4.a68: Likewise.
+ 	* algol68/execute/selection-5.a68: Likewise.
+ 	* algol68/execute/selection-multiple-1.a68: Likewise.
+ 	* algol68/execute/selection-multiple-2.a68: Likewise.
+ 	* algol68/execute/serial-clause-1.a68: Likewise.
+ 	* algol68/execute/serial-clause-10.a68: Likewise.
+ 	* algol68/execute/serial-clause-2.a68: Likewise.
+ 	* algol68/execute/serial-clause-3.a68: Likewise.
+ 	* algol68/execute/serial-clause-4.a68: Likewise.
+ 	* algol68/execute/serial-clause-5.a68: Likewise.
+ 	* algol68/execute/serial-clause-6.a68: Likewise.
+ 	* algol68/execute/serial-clause-7.a68: Likewise.
+ 	* algol68/execute/serial-clause-8.a68: Likewise.
+ 	* algol68/execute/serial-clause-9.a68: Likewise.
+ 	* algol68/execute/serial-dsa-1.a68: Likewise.
+ 	* algol68/execute/serial-dsa-2.a68: Likewise.
+ 	* algol68/execute/serial-dsa-3.a68: Likewise.
+ 	* algol68/execute/serial-dsa-4.a68: Likewise.
+ 	* algol68/execute/serial-dsa-5.a68: Likewise.
+ 	* algol68/execute/serial-dsa-6.a68: Likewise.
+ 	* algol68/execute/sign-int-1.a68: Likewise.
+ 	* algol68/execute/sign-real-1.a68: Likewise.
+ 	* algol68/execute/sin-1.a68: Likewise.
+ 	* algol68/execute/skip-1.a68: Likewise.
+ 	* algol68/execute/skip-2.a68: Likewise.
+ 	* algol68/execute/skip-struct-1.a68: Likewise.
+ 	* algol68/execute/slice-indexing-1.a68: Likewise.
+ 	* algol68/execute/slice-indexing-2.a68: Likewise.
+ 	* algol68/execute/slice-indexing-3.a68: Likewise.
+ 	* algol68/execute/slice-indexing-4.a68: Likewise.
+ 	* algol68/execute/slice-indexing-5.a68: Likewise.
+ 	* algol68/execute/slice-indexing-6.a68: Likewise.
+ 	* algol68/execute/slice-indexing-7.a68: Likewise.
+ 	* algol68/execute/sqrt-1.a68: Likewise.
+ 	* algol68/execute/string-1.a68: Likewise.
+ 	* algol68/execute/string-2.a68: Likewise.
+ 	* algol68/execute/string-4.a68: Likewise.
+ 	* algol68/execute/string-break-1.a68: Likewise.
+ 	* algol68/execute/struct-self-1.a68: Likewise.
+ 	* algol68/execute/struct-self-2.a68: Likewise.
+ 	* algol68/execute/struct-self-3.a68: Likewise.
+ 	* algol68/execute/structure-display-1.a68: Likewise.
+ 	* algol68/execute/structure-display-2.a68: Likewise.
+ 	* algol68/execute/structure-display-3.a68: Likewise.
+ 	* algol68/execute/structure-display-4.a68: Likewise.
+ 	* algol68/execute/structure-display-5.a68: Likewise.
+ 	* algol68/execute/tan-1.a68: Likewise.
+ 	* algol68/execute/timesab-string-1.a68: Likewise.
+ 	* algol68/execute/trimmer-1.a68: Likewise.
+ 	* algol68/execute/trimmer-10.a68: Likewise.
+ 	* algol68/execute/trimmer-2.a68: Likewise.
+ 	* algol68/execute/trimmer-3.a68: Likewise.
+ 	* algol68/execute/trimmer-4.a68: Likewise.
+ 	* algol68/execute/trimmer-5.a68: Likewise.
+ 	* algol68/execute/trimmer-6.a68: Likewise.
+ 	* algol68/execute/trimmer-7.a68: Likewise.
+ 	* algol68/execute/trimmer-8.a68: Likewise.
+ 	* algol68/execute/trimmer-9.a68: Likewise.
+ 	* algol68/execute/trimmer-matrix-1.a68: Likewise.
+ 	* algol68/execute/trimmer-matrix-2.a68: Likewise.
+ 	* algol68/execute/trimmer-matrix-3.a68: Likewise.
+ 	* algol68/execute/trimmer-matrix-4.a68: Likewise.
+ 	* algol68/execute/trimmer-matrix-5.a68: Likewise.
+ 	* algol68/execute/trimmer-matrix-6.a68: Likewise.
+ 	* algol68/execute/trimmer-name-1.a68: Likewise.
+ 	* algol68/execute/undefined-1.a68: Likewise.
+ 	* algol68/execute/undefined-2.a68: Likewise.
+ 	* algol68/execute/undefined-3.a68: Likewise.
+ 	* algol68/execute/undefined-4.a68: Likewise.
+ 	* algol68/execute/undefined-5.a68: Likewise.
+ 	* algol68/execute/uniting-1.a68: Likewise.
+ 	* algol68/execute/uniting-2.a68: Likewise.
+ 	* algol68/execute/uniting-3.a68: Likewise.
+ 	* algol68/execute/uniting-4.a68: Likewise.
+ 	* algol68/execute/up-down-bits-1.a68: Likewise.
+ 	* algol68/execute/upb-1.a68: Likewise.
+ 	* algol68/execute/vacuum-1.a68: Likewise.
+ 	* algol68/execute/variable-declaration-1.a68: Likewise.
+ 	* algol68/execute/variable-declaration-2.a68: Likewise.
+ 	* algol68/execute/variable-declaration-3.a68: Likewise.
+ 	* algol68/execute/variable-declaration-4.a68: Likewise.
+ 	* algol68/execute/variable-declaration-5.a68: Likewise.
+ 	* algol68/execute/variable-declaration-6.a68: Likewise.
+ 	* algol68/execute/variable-declaration-heap-1.a68: Likewise.
+ 	* algol68/execute/variable-declaration-heap-2.a68: Likewise.
+ 	* algol68/execute/variable-declaration-multiple-1.a68: Likewise.
+ 	* algol68/execute/variable-declaration-multiple-2.a68: Likewise.
+ 	* algol68/execute/variable-declaration-multiple-3.a68: Likewise.
+ 	* algol68/execute/variable-declaration-multiple-4.a68: Likewise.
+ 	* algol68/execute/variable-declaration-multiple-5.a68: Likewise.
+ 	* algol68/execute/variable-declaration-multiple-6.a68: Likewise.
+ 	* algol68/execute/variable-declaration-multiple-7.a68: Likewise.
+ 	* algol68/execute/variable-declaration-multiple-8.a68: Likewise.
+ 	* algol68/execute/variable-declaration-multiple-9.a68: Likewise.
+ 	* algol68/execute/voiding-1.a68: Likewise.
+ 	* algol68/execute/widening-1.a68: Likewise.
+ 	* algol68/execute/widening-2.a68: Likewise.
+ 	* algol68/execute/widening-bits-1.a68: Likewise.
+ 	* algol68/execute/widening-bits-2.a68: Likewise.
+ 	* algol68/execute/widening-bits-3.a68: Likewise.
+ 	* algol68/execute/xor-bits-1.a68: Likewise.
+ 	* algol68/execute/environment-enquiries-8.a68: Likewise.
+ 	* algol68/execute/modules/README: New file.
+ 	* algol68/execute/modules/execute.exp: New file.
+ 	* algol68/execute/modules/module1.a68: New file.
+ 	* algol68/execute/modules/module10.a68: New file.
+ 	* algol68/execute/modules/module11.a68: New file.
+ 	* algol68/execute/modules/module12.a68: New file.
+ 	* algol68/execute/modules/module13.a68: New file.
+ 	* algol68/execute/modules/module14.a68: New file.
+ 	* algol68/execute/modules/module15.a68: New file.
+ 	* algol68/execute/modules/module16.a68: New file.
+ 	* algol68/execute/modules/module17.a68: New file.
+ 	* algol68/execute/modules/module3.a68: New file.
+ 	* algol68/execute/modules/module4.a68: New file.
+ 	* algol68/execute/modules/module5.a68: New file.
+ 	* algol68/execute/modules/module6.a68: New file.
+ 	* algol68/execute/modules/module7.a68: New file.
+ 	* algol68/execute/modules/module8.a68: New file.
+ 	* algol68/execute/modules/module9.a68: New file.
+ 	* algol68/execute/modules/program-1.a68: New file.
+ 	* algol68/execute/modules/program-10.a68: New file.
+ 	* algol68/execute/modules/program-11.a68: New file.
+ 	* algol68/execute/modules/program-12.a68: New file.
+ 	* algol68/execute/modules/program-15.a68: New file.
+ 	* algol68/execute/modules/program-16.a68: New file.
+ 	* algol68/execute/modules/program-17.a68: New file.
+ 	* algol68/execute/modules/program-2.a68: New file.
+ 	* algol68/execute/modules/program-3.a68: New file.
+ 	* algol68/execute/modules/program-4.a68: New file.
+ 	* algol68/execute/modules/program-5.a68: New file.
+ 	* algol68/execute/modules/program-6.a68: New file.
+ 	* algol68/execute/modules/program-7.a68: New file.
+ 	* algol68/execute/modules/program-8.a68: New file.
+ 	* algol68/execute/posix-lseek.a68: New file.
+ 
+ 2025-11-30  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* algol68/execute/abs-bits-1.a68: New file.
+ 	* algol68/execute/abs-bool-1.a68: Likewise.
+ 	* algol68/execute/abs-char-1.a68: Likewise.
+ 	* algol68/execute/abs-int-1.a68: Likewise.
+ 	* algol68/execute/abs-int-negative-1.a68: Likewise.
+ 	* algol68/execute/abs-int-negative-gnu-1.a68: Likewise.
+ 	* algol68/execute/acos-1.a68: Likewise.
+ 	* algol68/execute/affirm-int-1.a68: Likewise.
+ 	* algol68/execute/and-bits-1.a68: Likewise.
+ 	* algol68/execute/andf-1.a68: Likewise.
+ 	* algol68/execute/ascription-1.a68: Likewise.
+ 	* algol68/execute/asin-1.a68: Likewise.
+ 	* algol68/execute/assert-1.a68: Likewise.
+ 	* algol68/execute/assignation-char-1.a68: Likewise.
+ 	* algol68/execute/assignation-int-1.a68: Likewise.
+ 	* algol68/execute/assignation-int-2.a68: Likewise.
+ 	* algol68/execute/assignation-int-3.a68: Likewise.
+ 	* algol68/execute/assignation-int-4.a68: Likewise.
+ 	* algol68/execute/assignation-int-5.a68: Likewise.
+ 	* algol68/execute/assignation-multiple-1.a68: Likewise.
+ 	* algol68/execute/assignation-multiple-2.a68: Likewise.
+ 	* algol68/execute/assignation-struct-1.a68: Likewise.
+ 	* algol68/execute/assignation-struct-2.a68: Likewise.
+ 	* algol68/execute/atan-1.a68: Likewise.
+ 	* algol68/execute/balancing-1.a68: Likewise.
+ 	* algol68/execute/balancing-rows-1.a68: Likewise.
+ 	* algol68/execute/bin-1.a68: Likewise.
+ 	* algol68/execute/bin-negative-1.a68: Likewise.
+ 	* algol68/execute/bin-negative-gnu-1.a68: Likewise.
+ 	* algol68/execute/boolops-1.a68: Likewise.
+ 	* algol68/execute/call-1.a68: Likewise.
+ 	* algol68/execute/call-2.a68: Likewise.
+ 	* algol68/execute/case-clause-1.a68: Likewise.
+ 	* algol68/execute/case-clause-2.a68: Likewise.
+ 	* algol68/execute/case-clause-3.a68: Likewise.
+ 	* algol68/execute/case-clause-4.a68: Likewise.
+ 	* algol68/execute/closed-clause-1.a68: Likewise.
+ 	* algol68/execute/closed-clause-2.a68: Likewise.
+ 	* algol68/execute/collateral-clause-1.a68: Likewise.
+ 	* algol68/execute/collateral-clause-2.a68: Likewise.
+ 	* algol68/execute/collateral-clause-3.a68: Likewise.
+ 	* algol68/execute/collateral-clause-4.a68: Likewise.
+ 	* algol68/execute/collateral-clause-5.a68: Likewise.
+ 	* algol68/execute/collateral-clause-6.a68: Likewise.
+ 	* algol68/execute/completer-1.a68: Likewise.
+ 	* algol68/execute/completer-10.a68: Likewise.
+ 	* algol68/execute/completer-2.a68: Likewise.
+ 	* algol68/execute/completer-3.a68: Likewise.
+ 	* algol68/execute/completer-4.a68: Likewise.
+ 	* algol68/execute/completer-5.a68: Likewise.
+ 	* algol68/execute/completer-6.a68: Likewise.
+ 	* algol68/execute/completer-7.a68: Likewise.
+ 	* algol68/execute/completer-8.a68: Likewise.
+ 	* algol68/execute/completer-9.a68: Likewise.
+ 	* algol68/execute/cond-clause-1.a68: Likewise.
+ 	* algol68/execute/cond-clause-2.a68: Likewise.
+ 	* algol68/execute/cond-clause-3.a68: Likewise.
+ 	* algol68/execute/cond-clause-4.a68: Likewise.
+ 	* algol68/execute/cond-clause-5.a68: Likewise.
+ 	* algol68/execute/cond-clause-6.a68: Likewise.
+ 	* algol68/execute/cond-clause-7.a68: Likewise.
+ 	* algol68/execute/cond-clause-8.a68: Likewise.
+ 	* algol68/execute/cond-clause-9.a68: Likewise.
+ 	* algol68/execute/conformity-clause-1.a68: Likewise.
+ 	* algol68/execute/conformity-clause-2.a68: Likewise.
+ 	* algol68/execute/conformity-clause-3.a68: Likewise.
+ 	* algol68/execute/conformity-clause-4.a68: Likewise.
+ 	* algol68/execute/conformity-clause-5.a68: Likewise.
+ 	* algol68/execute/conformity-clause-6.a68: Likewise.
+ 	* algol68/execute/conformity-clause-7.a68: Likewise.
+ 	* algol68/execute/conformity-clause-8.a68: Likewise.
+ 	* algol68/execute/conformity-clause-9.a68: Likewise.
+ 	* algol68/execute/conj-1.a68: Likewise.
+ 	* algol68/execute/cos-1.a68: Likewise.
+ 	* algol68/execute/declarer-1.a68: Likewise.
+ 	* algol68/execute/declarer-2.a68: Likewise.
+ 	* algol68/execute/deprocedure-1.a68: Likewise.
+ 	* algol68/execute/deprocedure-2.a68: Likewise.
+ 	* algol68/execute/deref-1.a68: Likewise.
+ 	* algol68/execute/deref-2.a68: Likewise.
+ 	* algol68/execute/deref-3.a68: Likewise.
+ 	* algol68/execute/deref-4.a68: Likewise.
+ 	* algol68/execute/deref-5.a68: Likewise.
+ 	* algol68/execute/deref-6.a68: Likewise.
+ 	* algol68/execute/deref-7.a68: Likewise.
+ 	* algol68/execute/deref-8.a68: Likewise.
+ 	* algol68/execute/div-int-1.a68: Likewise.
+ 	* algol68/execute/divab-real-1.a68: Likewise.
+ 	* algol68/execute/elem-bits-1.a68: Likewise.
+ 	* algol68/execute/elems-1.a68: Likewise.
+ 	* algol68/execute/elems-2.a68: Likewise.
+ 	* algol68/execute/entier-1.a68: Likewise.
+ 	* algol68/execute/environment-enquiries-1.a68: Likewise.
+ 	* algol68/execute/environment-enquiries-2.a68: Likewise.
+ 	* algol68/execute/environment-enquiries-3.a68: Likewise.
+ 	* algol68/execute/environment-enquiries-4.a68: Likewise.
+ 	* algol68/execute/environment-enquiries-5.a68: Likewise.
+ 	* algol68/execute/environment-enquiries-6.a68: Likewise.
+ 	* algol68/execute/environment-enquiries-7.a68: Likewise.
+ 	* algol68/execute/environment-enquiries-8.a68: Likewise.
+ 	* algol68/execute/eq-bits-1.a68: Likewise.
+ 	* algol68/execute/eq-char-char-1.a68: Likewise.
+ 	* algol68/execute/eq-int-1.a68: Likewise.
+ 	* algol68/execute/eq-string-1.a68: Likewise.
+ 	* algol68/execute/eq-string-stride-1.a68: Likewise.
+ 	* algol68/execute/execute.exp: Likewise.
+ 	* algol68/execute/factorial-1.a68: Likewise.
+ 	* algol68/execute/flat-assignation-1.a68: Likewise.
+ 	* algol68/execute/flat-assignation-2.a68: Likewise.
+ 	* algol68/execute/flex-1.a68: Likewise.
+ 	* algol68/execute/flex-2.a68: Likewise.
+ 	* algol68/execute/flex-3.a68: Likewise.
+ 	* algol68/execute/flex-4.a68: Likewise.
+ 	* algol68/execute/flex-5.a68: Likewise.
+ 	* algol68/execute/formula-1.a68: Likewise.
+ 	* algol68/execute/formula-2.a68: Likewise.
+ 	* algol68/execute/fsize-1.a68: Likewise.
+ 	* algol68/execute/ge-int-1.a68: Likewise.
+ 	* algol68/execute/ge-string-stride-1.a68: Likewise.
+ 	* algol68/execute/gen-flex-1.a68: Likewise.
+ 	* algol68/execute/gen-heap-1.a68: Likewise.
+ 	* algol68/execute/gen-heap-2.a68: Likewise.
+ 	* algol68/execute/gen-heap-3.a68: Likewise.
+ 	* algol68/execute/gen-heap-bool-1.a68: Likewise.
+ 	* algol68/execute/gen-heap-int-1.a68: Likewise.
+ 	* algol68/execute/gen-heap-real-1.a68: Likewise.
+ 	* algol68/execute/gen-heap-struct-1.a68: Likewise.
+ 	* algol68/execute/gen-heap-struct-2.a68: Likewise.
+ 	* algol68/execute/gen-heap-struct-3.a68: Likewise.
+ 	* algol68/execute/gen-loc-1.a68: Likewise.
+ 	* algol68/execute/gen-loc-2.a68: Likewise.
+ 	* algol68/execute/gen-loc-3.a68: Likewise.
+ 	* algol68/execute/gen-loc-4.a68: Likewise.
+ 	* algol68/execute/gen-multiple-1.a68: Likewise.
+ 	* algol68/execute/gen-union-1.a68: Likewise.
+ 	* algol68/execute/gen-union-2.a68: Likewise.
+ 	* algol68/execute/gen-union-3.a68: Likewise.
+ 	* algol68/execute/goto-1.a68: Likewise.
+ 	* algol68/execute/goto-2.a68: Likewise.
+ 	* algol68/execute/goto-3.a68: Likewise.
+ 	* algol68/execute/goto-4.a68: Likewise.
+ 	* algol68/execute/goto-5.a68: Likewise.
+ 	* algol68/execute/gt-int-1.a68: Likewise.
+ 	* algol68/execute/gt-string-stride-1.a68: Likewise.
+ 	* algol68/execute/i-1.a68: Likewise.
+ 	* algol68/execute/i-2.a68: Likewise.
+ 	* algol68/execute/identification-1.a68: Likewise.
+ 	* algol68/execute/identification-2.a68: Likewise.
+ 	* algol68/execute/identity-declaration-1.a68: Likewise.
+ 	* algol68/execute/identity-declaration-2.a68: Likewise.
+ 	* algol68/execute/identity-declaration-3.a68: Likewise.
+ 	* algol68/execute/identity-declaration-4.a68: Likewise.
+ 	* algol68/execute/identity-declaration-5.a68: Likewise.
+ 	* algol68/execute/identity-declaration-multiple-1.a68: Likewise.
+ 	* algol68/execute/identity-declaration-multiple-2.a68: Likewise.
+ 	* algol68/execute/identity-declaration-multiple-3.a68: Likewise.
+ 	* algol68/execute/identity-declaration-multiple-5.a68: Likewise.
+ 	* algol68/execute/identity-declaration-multiple-empty-1.a68: Likewise.
+ 	* algol68/execute/identity-declaration-multiple-empty-2.a68: Likewise.
+ 	* algol68/execute/identity-declaration-multiple-empty-3.a68: Likewise.
+ 	* algol68/execute/identity-declaration-multiple-empty-4.a68: Likewise.
+ 	* algol68/execute/identity-declaration-struct-1.a68: Likewise.
+ 	* algol68/execute/infinity-1.a68: Likewise.
+ 	* algol68/execute/le-ge-bits-1.a68: Likewise.
+ 	* algol68/execute/le-int-1.a68: Likewise.
+ 	* algol68/execute/le-string-stride-1.a68: Likewise.
+ 	* algol68/execute/leng-shorten-bits-1.a68: Likewise.
+ 	* algol68/execute/leng-shorten-ints-1.a68: Likewise.
+ 	* algol68/execute/leng-shorten-reals-1.a68: Likewise.
+ 	* algol68/execute/lengths-shorths-1.a68: Likewise.
+ 	* algol68/execute/lisp-1.a68: Likewise.
+ 	* algol68/execute/lisp-2.a68: Likewise.
+ 	* algol68/execute/ln-1.a68: Likewise.
+ 	* algol68/execute/log-1.a68: Likewise.
+ 	* algol68/execute/loop-1.a68: Likewise.
+ 	* algol68/execute/loop-10.a68: Likewise.
+ 	* algol68/execute/loop-11.a68: Likewise.
+ 	* algol68/execute/loop-12.a68: Likewise.
+ 	* algol68/execute/loop-13.a68: Likewise.
+ 	* algol68/execute/loop-14.a68: Likewise.
+ 	* algol68/execute/loop-2.a68: Likewise.
+ 	* algol68/execute/loop-3.a68: Likewise.
+ 	* algol68/execute/loop-4.a68: Likewise.
+ 	* algol68/execute/loop-5.a68: Likewise.
+ 	* algol68/execute/loop-6.a68: Likewise.
+ 
+ 2025-11-30  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* lib/algol68-dg.exp: New file.
+ 	* lib/algol68-torture.exp: Likewise.
+ 	* lib/algol68.exp: Likewise.
+ 
  2025-11-30  Nathaniel Shead  <nathanieloshead@gmail.com>
  
  	PR c++/119864
diff -Nrcpad gcc-16-20251130/gcc/testsuite/c-c++-common/gomp/dyn_groupprivate-1.c gcc-16-20251207/gcc/testsuite/c-c++-common/gomp/dyn_groupprivate-1.c
*** gcc-16-20251130/gcc/testsuite/c-c++-common/gomp/dyn_groupprivate-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/c-c++-common/gomp/dyn_groupprivate-1.c	Sun Dec  7 22:32:10 2025
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do compile }  */
+ /* { dg-additional-options "-fdump-tree-original" }  */
+ 
+ void f()
+ {
+   int N = 1024;
+ 
+   #pragma omp target dyn_groupprivate(1024)  // { dg-message "sorry, unimplemented: 'dyn_groupprivate' clause" }
+     ;
+ 
+   #pragma omp target dyn_groupprivate (1024 * N)  // { dg-message "sorry, unimplemented: 'dyn_groupprivate' clause" }
+     ;
+ 
+   #pragma omp target dyn_groupprivate ( fallback ( abort ) : N)  // { dg-message "sorry, unimplemented: 'dyn_groupprivate' clause" }
+     ;
+ 
+   #pragma omp target dyn_groupprivate ( fallback ( null ) : N)  // { dg-message "sorry, unimplemented: 'dyn_groupprivate' clause" }
+     ;
+ 
+   #pragma omp target dyn_groupprivate ( fallback ( default_mem ) : N)  // { dg-message "sorry, unimplemented: 'dyn_groupprivate' clause" }
+     ;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "#pragma omp target dyn_groupprivate\\(1024\\)" 1 "original" } }  */
+ /* { dg-final { scan-tree-dump-times "#pragma omp target dyn_groupprivate\\(N \\* 1024\\)" 1 "original" } }  */
+ /* { dg-final { scan-tree-dump-times "#pragma omp target dyn_groupprivate\\(fallback\\(abort\\):N\\)" 1 "original" } }  */
+ /* { dg-final { scan-tree-dump-times "#pragma omp target dyn_groupprivate\\(fallback\\(null\\):N\\)" 1 "original" } }  */
+ /* { dg-final { scan-tree-dump-times "#pragma omp target dyn_groupprivate\\(fallback\\(default_mem\\):N\\)" 1 "original" } }  */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/c-c++-common/gomp/dyn_groupprivate-2.c gcc-16-20251207/gcc/testsuite/c-c++-common/gomp/dyn_groupprivate-2.c
*** gcc-16-20251130/gcc/testsuite/c-c++-common/gomp/dyn_groupprivate-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/c-c++-common/gomp/dyn_groupprivate-2.c	Sun Dec  7 22:32:10 2025
***************
*** 0 ****
--- 1,72 ----
+ /* { dg-do compile }  */
+ 
+ void f()
+ {
+ #if !defined(__cplusplus) || __cplusplus >= 201103L
+   constexpr int M = 1024; // C20 + C++11
+ #endif
+   int N, A[1];
+   N = 1024;
+ 
+   #pragma omp target dyn_groupprivate(0)
+     ;
+ 
+   #pragma omp target dyn_groupprivate(0) dyn_groupprivate(0)  // { dg-error "too many 'dyn_groupprivate' clauses" }
+     ;
+ 
+   #pragma omp target dyn_groupprivate(1,)  // { dg-error "expected '\\)' before ',' token" }
+     ;
+ 
+   #pragma omp target dyn_groupprivate(-123)  // { dg-warning "'dyn_groupprivate' value must be non-negative \\\[-Wopenmp\\\]" }
+     ;
+ 
+ #if !defined(__cplusplus) || __cplusplus >= 201103L
+   #pragma omp target dyn_groupprivate (0 * M - 1)  // { dg-warning "'dyn_groupprivate' value must be non-negative \\\[-Wopenmp\\\]" "" { target { ! c++98_only } } }
+ #endif
+     ;
+ 
+   #pragma omp target dyn_groupprivate (- 4)  // { dg-warning "'dyn_groupprivate' value must be non-negative \\\[-Wopenmp\\\]" }
+     ;
+ 
+   #pragma omp target dyn_groupprivate ( fallback ( other ) : N)  // { dg-error "expected 'abort', 'default_mem', or 'null' as fallback mode before 'other'" }
+     // { dg-error "expected an OpenMP clause before ':' token" "" { target c++ } .-1 }
+     ;
+ 
+   #pragma omp target dyn_groupprivate ( A )
+   // { dg-error "expected integer expression" "" { target c } .-1 }
+   // { dg-error "'dyn_groupprivate' expression must be integral" "" { target c++ } .-2 }
+     ;
+ 
+   #pragma omp target dyn_groupprivate ( 1024. )
+   // { dg-error "expected integer expression" "" { target c } .-1 }
+   // { dg-error "'dyn_groupprivate' expression must be integral" "" { target c++ } .-2 }
+     ;
+ 
+   #pragma omp target dyn_groupprivate ( foo ( 4 ) : 10 )  // { dg-error "expected 'fallback' modifier before 'foo'" }
+     ;
+ 
+   #pragma omp target dyn_groupprivate ( foo2 (  ) : 10 )  // { dg-error "expected 'fallback' modifier before 'foo2'" }
+     ;
+ 
+   #pragma omp target dyn_groupprivate ( fallback (  ) : 10 )  // { dg-error "expected 'abort', 'default_mem', or 'null' as fallback mode before '\\)'" }
+     // { dg-error "expected an OpenMP clause before ':' token" "" { target c++ } .-1 }
+     ;
+ 
+   #pragma omp target dyn_groupprivate ( bar : 10 )  // { dg-error "expected 'fallback' modifier before 'bar'" }
+     ;
+ 
+   #pragma omp target dyn_groupprivate ( fallback : 10 )  // { dg-error "expected '\\(' before ':' token" }
+     // { dg-error "expected an OpenMP clause before ':' token" "" { target c++ } .-1 }
+     ;
+ 
+   #pragma omp target dyn_groupprivate ( fallback ( null,) : 10 )  // { dg-error "expected '\\)' before ',' token" }
+     // { dg-error "expected an OpenMP clause before '\\)' token" "" { target c++ } .-1 }
+     ;
+ }
+ 
+ // { dg-message "sorry, unimplemented: 'dyn_groupprivate' clause" "" { target *-*-* } 11 }
+ // { dg-message "sorry, unimplemented: 'dyn_groupprivate' clause" "" { target *-*-* } 14 }
+ // { dg-message "sorry, unimplemented: 'dyn_groupprivate' clause" "" { target *-*-* } 17 }
+ // { dg-message "sorry, unimplemented: 'dyn_groupprivate' clause" "" { target *-*-* } 20 }
+ // { dg-message "sorry, unimplemented: 'dyn_groupprivate' clause" "" { target { ! c++98_only } } 24 }
+ // { dg-message "sorry, unimplemented: 'dyn_groupprivate' clause" "" { target *-*-* } 28 }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/g++.dg/cpp0x/alias-decl-conv1.C gcc-16-20251207/gcc/testsuite/g++.dg/cpp0x/alias-decl-conv1.C
*** gcc-16-20251130/gcc/testsuite/g++.dg/cpp0x/alias-decl-conv1.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/g++.dg/cpp0x/alias-decl-conv1.C	Sun Dec  7 22:32:10 2025
***************
*** 0 ****
--- 1,17 ----
+ // PR c++/122171
+ // { dg-do compile { target c++11 } }
+ 
+ constexpr unsigned int poly_size(unsigned int bits) {
+   return 1;
+ }
+ 
+ template <unsigned int Deg>
+ using poly_table = char[poly_size(Deg)];
+ 
+ template <int BITS>
+ struct FingerprintTable {
+   static const poly_table<BITS> table;
+ };
+ 
+ template <int BITS>
+ const poly_table<BITS> FingerprintTable<BITS>::table = {};
diff -Nrcpad gcc-16-20251130/gcc/testsuite/g++.dg/cpp26/decomp18.C gcc-16-20251207/gcc/testsuite/g++.dg/cpp26/decomp18.C
*** gcc-16-20251130/gcc/testsuite/g++.dg/cpp26/decomp18.C	Sun Nov 30 22:32:09 2025
--- gcc-16-20251207/gcc/testsuite/g++.dg/cpp26/decomp18.C	Sun Dec  7 22:32:10 2025
***************
*** 1,6 ****
--- 1,8 ----
  // P1061R10 - Structured Bindings can introduce a Pack
  // { dg-do run { target c++11 } }
  // { dg-options "" }
+ // { dg-add-options tls }
+ // { dg-require-effective-target tls_runtime }
  
  struct S { int a, b, c; };
  namespace std {
diff -Nrcpad gcc-16-20251130/gcc/testsuite/g++.dg/ext/pr122836.C gcc-16-20251207/gcc/testsuite/g++.dg/ext/pr122836.C
*** gcc-16-20251130/gcc/testsuite/g++.dg/ext/pr122836.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/g++.dg/ext/pr122836.C	Sun Dec  7 22:32:11 2025
***************
*** 0 ****
--- 1,11 ----
+ // PR c++/122836
+ // { dg-do compile }
+ // { dg-options "" }
+ 
+ struct V { __attribute__ ((__vector_size__ (2 * sizeof (float)))) float v[2]; };
+ 
+ V
+ foo ()
+ {
+   return (V) { { .v = { 0, 0 } } };	// { dg-error "name 'v' used in a GNU-style designated initializer for an array" }
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/g++.dg/ext/pr122860.C gcc-16-20251207/gcc/testsuite/g++.dg/ext/pr122860.C
*** gcc-16-20251130/gcc/testsuite/g++.dg/ext/pr122860.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/g++.dg/ext/pr122860.C	Sun Dec  7 22:32:11 2025
***************
*** 0 ****
--- 1,30 ----
+ // PR c++/122860
+ // { dg-do compile }
+ // { dg-options "-Wno-register" }
+ 
+ void
+ foo ()
+ {
+   register __UINTPTR_TYPE__ val asm ("1") = (__UINTPTR_TYPE__) &val;	// { dg-error "address of explicit register variable 'val' requested" }
+ }
+ 
+ template <typename T>
+ void
+ bar ()
+ {
+   register T val asm ("1") = (T) &val;	// { dg-error "address of explicit register variable 'val' requested" }
+ }
+ 
+ template <typename T>
+ void
+ baz ()
+ {
+   register __UINTPTR_TYPE__ val asm ("1") = (__UINTPTR_TYPE__) &val;	// { dg-error "address of explicit register variable 'val' requested" }
+ }
+ 
+ void
+ qux ()
+ {
+   bar <__UINTPTR_TYPE__> ();
+   baz <int> ();
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/g++.dg/gcov/pr16855-priority.C gcc-16-20251207/gcc/testsuite/g++.dg/gcov/pr16855-priority.C
*** gcc-16-20251130/gcc/testsuite/g++.dg/gcov/pr16855-priority.C	Sun Nov 30 22:32:09 2025
--- gcc-16-20251207/gcc/testsuite/g++.dg/gcov/pr16855-priority.C	Sun Dec  7 22:32:11 2025
*************** class Test
*** 20,26 ****
  public:
    Test (void) { fprintf (stderr, "In Test::Test\n"); /* count(1) */ }
    ~Test (void) {
!    fprintf (stderr, "In Test::~Test\n"); /* count(1) { xfail *-*-dragonfly* } */
    }
  } T1;
  
--- 20,26 ----
  public:
    Test (void) { fprintf (stderr, "In Test::Test\n"); /* count(1) */ }
    ~Test (void) {
!    fprintf (stderr, "In Test::~Test\n"); /* count(1) { xfail *-*-dragonfly* *-*-solaris2* } */
    }
  } T1;
  
*************** static void __attribute__ ((destructor (
*** 78,81 ****
    fprintf (stderr, "in destructor((65535))\n"); /* count(1) */
  }
  
! /* { dg-final { run-gcov branches { -b pr16855-priority.C } { xfail *-*-dragonfly* } } } */
--- 78,81 ----
    fprintf (stderr, "in destructor((65535))\n"); /* count(1) */
  }
  
! /* { dg-final { run-gcov branches { -b pr16855-priority.C } { xfail *-*-dragonfly* *-*-solaris2* } } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/g++.dg/gcov/pr16855.C gcc-16-20251207/gcc/testsuite/g++.dg/gcov/pr16855.C
*** gcc-16-20251130/gcc/testsuite/g++.dg/gcov/pr16855.C	Sun Nov 30 22:32:09 2025
--- gcc-16-20251207/gcc/testsuite/g++.dg/gcov/pr16855.C	Sun Dec  7 22:32:11 2025
***************
*** 1,7 ****
  /* { dg-options "-fprofile-arcs -ftest-coverage" } */
  /* { dg-do run { target native } } */
  
! /* See PR91087 for information on Darwin xfails. */
  
  #include <stdlib.h>
  #include <stdio.h>
--- 1,8 ----
  /* { dg-options "-fprofile-arcs -ftest-coverage" } */
  /* { dg-do run { target native } } */
  
! /* See PR91087 for information on Darwin xfails.  Also PR81337 for Solaris
!    ones.*/
  
  #include <stdlib.h>
  #include <stdio.h>
*************** class Test
*** 21,27 ****
  public:
    Test (void) { fprintf (stderr, "In Test::Test\n"); /* count(1) */ }
    ~Test (void) {
!    fprintf (stderr, "In Test::~Test\n"); /* count(1) { xfail *-*-darwin* *-*-dragonfly* } */
    }
  } T1;
  
--- 22,28 ----
  public:
    Test (void) { fprintf (stderr, "In Test::Test\n"); /* count(1) */ }
    ~Test (void) {
!    fprintf (stderr, "In Test::~Test\n"); /* count(1) { xfail *-*-darwin* *-*-dragonfly* *-*-solaris2* } */
    }
  } T1;
  
*************** static void __attribute__ ((destructor))
*** 49,52 ****
    fprintf (stderr, "in destructor(())\n"); /* count(1) { xfail *-*-darwin* } */
  }
  
! /* { dg-final { run-gcov branches { -b pr16855.C } { xfail *-*-darwin* *-*-dragonfly* } } } */
--- 50,53 ----
    fprintf (stderr, "in destructor(())\n"); /* count(1) { xfail *-*-darwin* } */
  }
  
! /* { dg-final { run-gcov branches { -b pr16855.C } { xfail *-*-darwin* *-*-dragonfly* *-*-solaris2* } } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/g++.dg/lto/pr122905.h gcc-16-20251207/gcc/testsuite/g++.dg/lto/pr122905.h
*** gcc-16-20251130/gcc/testsuite/g++.dg/lto/pr122905.h	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/g++.dg/lto/pr122905.h	Sun Dec  7 22:32:11 2025
***************
*** 0 ****
--- 1,9 ----
+ struct A {
+   typedef char *B;
+   struct C { C (B x) {} };
+   C c;
+   enum { D = 15 };
+   union { char e[16]; };
+   A (const char *x) : c {e} {}
+ };
+ A foo ();
diff -Nrcpad gcc-16-20251130/gcc/testsuite/g++.dg/lto/pr122905_0.C gcc-16-20251207/gcc/testsuite/g++.dg/lto/pr122905_0.C
*** gcc-16-20251130/gcc/testsuite/g++.dg/lto/pr122905_0.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/g++.dg/lto/pr122905_0.C	Sun Dec  7 22:32:11 2025
***************
*** 0 ****
--- 1,16 ----
+ /* PR c++/122905 */
+ /* { dg-lto-do link } */
+ /* { dg-lto-options { { -O2 -flto -std=c++20 } } } */
+ 
+ #include "pr122905.h"
+ 
+ A
+ foo ()
+ {
+   return "foo";
+ }
+ 
+ int
+ main ()
+ {
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/g++.dg/lto/pr122905_1.C gcc-16-20251207/gcc/testsuite/g++.dg/lto/pr122905_1.C
*** gcc-16-20251130/gcc/testsuite/g++.dg/lto/pr122905_1.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/g++.dg/lto/pr122905_1.C	Sun Dec  7 22:32:11 2025
***************
*** 0 ****
--- 1,5 ----
+ // { dg-options "-O2 -flto -std=c++17" }
+ 
+ #include "pr122905.h"
+ 
+ volatile auto v = foo ();
diff -Nrcpad gcc-16-20251130/gcc/testsuite/g++.dg/modules/friend-12_a.C gcc-16-20251207/gcc/testsuite/g++.dg/modules/friend-12_a.C
*** gcc-16-20251130/gcc/testsuite/g++.dg/modules/friend-12_a.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/g++.dg/modules/friend-12_a.C	Sun Dec  7 22:32:11 2025
***************
*** 0 ****
--- 1,11 ----
+ // { dg-additional-options "-fmodules -Wno-global-module" }
+ // { dg-module-cmi M:part }
+ 
+ module;
+ template <typename T> struct basic_streambuf;
+ template <typename T> void __copy_streambufs_eof(basic_streambuf<T>*);
+ template <typename T> struct basic_streambuf {
+   friend void __copy_streambufs_eof<>(basic_streambuf*);
+ };
+ export module M:part;
+ void foo(basic_streambuf<char>&) {}
diff -Nrcpad gcc-16-20251130/gcc/testsuite/g++.dg/modules/friend-12_b.C gcc-16-20251207/gcc/testsuite/g++.dg/modules/friend-12_b.C
*** gcc-16-20251130/gcc/testsuite/g++.dg/modules/friend-12_b.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/g++.dg/modules/friend-12_b.C	Sun Dec  7 22:32:11 2025
***************
*** 0 ****
--- 1,5 ----
+ // { dg-additional-options "-fmodules -Wno-global-module" }
+ // { dg-module-cmi M }
+ 
+ export module M;
+ export import :part;
diff -Nrcpad gcc-16-20251130/gcc/testsuite/g++.dg/modules/namespace-16_a.C gcc-16-20251207/gcc/testsuite/g++.dg/modules/namespace-16_a.C
*** gcc-16-20251130/gcc/testsuite/g++.dg/modules/namespace-16_a.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/g++.dg/modules/namespace-16_a.C	Sun Dec  7 22:32:11 2025
***************
*** 0 ****
--- 1,9 ----
+ // PR c++/122915
+ // { dg-additional-options "-fmodules" }
+ // { dg-module-cmi imagine }
+ 
+ export module imagine;
+ namespace ns {}
+ export namespace ig {
+   using namespace ns;
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/g++.dg/modules/namespace-16_b.C gcc-16-20251207/gcc/testsuite/g++.dg/modules/namespace-16_b.C
*** gcc-16-20251130/gcc/testsuite/g++.dg/modules/namespace-16_b.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/g++.dg/modules/namespace-16_b.C	Sun Dec  7 22:32:11 2025
***************
*** 0 ****
--- 1,9 ----
+ // PR c++/122915
+ // { dg-additional-options "-fmodules" }
+ // { dg-module-cmi tests:part }
+ 
+ export module tests:part;
+ namespace abc {}
+ namespace part {
+   export using namespace abc;
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/g++.dg/modules/namespace-16_c.C gcc-16-20251207/gcc/testsuite/g++.dg/modules/namespace-16_c.C
*** gcc-16-20251130/gcc/testsuite/g++.dg/modules/namespace-16_c.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/g++.dg/modules/namespace-16_c.C	Sun Dec  7 22:32:11 2025
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/122915
+ // { dg-additional-options "-fmodules -fdump-lang-module" }
+ // { dg-module-cmi tests }
+ 
+ export module tests;
+ export import :part;
+ import imagine;
+ using namespace ig;
+ 
+ // { dg-final { scan-lang-dump {Writing using-directive in '::' for '::ig'} module } }
+ // { dg-final { scan-lang-dump {Writing using-directive in '::part' for '::abc'} module } }
+ // { dg-final { scan-lang-dump-not {Writing using-directive in '::ig' for '::ns'} module } }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/g++.dg/modules/namespace-16_d.C gcc-16-20251207/gcc/testsuite/g++.dg/modules/namespace-16_d.C
*** gcc-16-20251130/gcc/testsuite/g++.dg/modules/namespace-16_d.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/g++.dg/modules/namespace-16_d.C	Sun Dec  7 22:32:11 2025
***************
*** 0 ****
--- 1,10 ----
+ // PR c++/122915
+ // { dg-additional-options "-fmodules" }
+ 
+ module tests;
+ 
+ namespace ns { using T = int; };
+ T x = 123;
+ 
+ namespace abc { using U = double; };
+ part::U y = 3.14;
diff -Nrcpad gcc-16-20251130/gcc/testsuite/g++.target/i386/avx512-pr71921.C gcc-16-20251207/gcc/testsuite/g++.target/i386/avx512-pr71921.C
*** gcc-16-20251130/gcc/testsuite/g++.target/i386/avx512-pr71921.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/g++.target/i386/avx512-pr71921.C	Sun Dec  7 22:32:11 2025
***************
*** 0 ****
--- 1,60 ----
+ // PR target/116925
+ // { dg-do compile }
+ // { dg-options "-O2 -march=x86-64-v4" }
+ // { dg-final { scan-assembler-not "vcmpltps" } }
+ // { dg-final { scan-assembler-times "vminps" 2 } }
+ // { dg-final { scan-assembler-times "vmaxps" 2 } }
+ 
+ #include <vector>
+ 
+ void relu(float * __restrict__ output, const float * __restrict__ input, int size)
+ {
+   int i;
+   int s2;
+ 
+   s2 = size / 4;
+   for (i = 0; i < 10000; i++) {
+     float t;
+     t = input[i];
+     output[i] = std::max(t, float(0));
+   }
+ }
+ 
+ void relu1(float * __restrict__ output, const float * __restrict__ input, int size)
+ {
+   int i;
+   int s2;
+ 
+   s2 = size / 4;
+   for (i = 0; i < 10000; i++) {
+     float t;
+     t = input[i];
+     output[i] = std::max(float(0), t);
+   }
+ }
+ 
+ void relu2(float * __restrict__ output, const float * __restrict__ input, int size)
+ {
+   int i;
+   int s2;
+ 
+   s2 = size / 4;
+   for (i = 0; i < 10000; i++) {
+     float t;
+     t = input[i];
+     output[i] = std::min(t, float(0));
+   }
+ }
+ 
+ void relu3(float * __restrict__ output, const float * __restrict__ input, int size)
+ {
+   int i;
+   int s2;
+ 
+   s2 = size / 4;
+   for (i = 0; i < 10000; i++) {
+     float t;
+     t = input[i];
+     output[i] = std::min(float(0), t);
+   }
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/g++.target/i386/pr122906-1.C gcc-16-20251207/gcc/testsuite/g++.target/i386/pr122906-1.C
*** gcc-16-20251130/gcc/testsuite/g++.target/i386/pr122906-1.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/g++.target/i386/pr122906-1.C	Sun Dec  7 22:32:11 2025
***************
*** 0 ****
--- 1,1065 ----
+ // { dg-do compile { target *-*-linux* } }
+ // { dg-options "-O3 -std=c++20 -ftrivial-auto-var-init=zero -march=x86-64-v3 -fPIC -w -mtls-dialect=gnu " }
+ 
+ template <int> using b = int;
+ template <typename, typename> struct e;
+ struct m {};
+ template <class> struct aa;
+ template <typename> struct j;
+ using h = aa<j<int>>;
+ template <typename> using a = h;
+ template <typename> using k = h;
+ template <typename d> struct p {
+   d ad;
+ };
+ struct ac {};
+ template <typename> struct al;
+ template <typename g> struct al<g *> {
+   typedef g &ah;
+ };
+ template <typename z> z ::i q(z);
+ struct w {
+   e<m, m> *l;
+   al<e<m, m> *>::ah operator*() { return *l; }
+   bool operator==(w) { return l; }
+ };
+ template <typename g, int o> struct n {
+   using af = g[o];
+ };
+ template <typename g, int o> struct ak {
+   n<g, o>::af am;
+ };
+ void ab();
+ template <typename ai> void ar(ai r, ac) {
+   ai ag;
+   for (; r != ag; ++r)
+     ab(), *r;
+ }
+ template <typename ai> void as(ai r, ac) { ar(r, q(r)); }
+ struct {
+   template <typename ai> void aj(ai r, ai) { as(r, q(r)); }
+ } ao;
+ namespace ap {
+ template <int at> struct bb {
+   static const bool ax = at;
+ };
+ } // namespace ap
+ using ap::bb;
+ namespace av {
+ template <class aq, aq> struct c;
+ template <bool au> struct c<bool, au> {
+   static const bool ax = au;
+   operator bb<au>() {
+     void *bc;
+     return *reinterpret_cast<bb<au> *>(bc);
+   }
+ };
+ template <class, class> struct ae : c<bool, false> {};
+ template <class aq> struct ae<aq, aq> : c<bool, true> {};
+ namespace aw {
+ using namespace ap;
+ }
+ } // namespace av
+ namespace ap {
+ template <int> struct bd {
+   typedef bd<1> bh;
+ };
+ } // namespace ap
+ namespace av {
+ namespace aw {
+ template <typename, typename = int> struct be;
+ template <int, typename, typename, typename, typename> struct bn : bb<true> {};
+ template <typename bg, typename bj, typename ay, typename az>
+ struct bn<false, bg, bj, ay, az> : bn<bg ::ax, bj, ay, az, bb<false>> {};
+ template <>
+ struct bn<false, bb<false>, bb<false>, bb<false>, bb<false>> : bb<false> {};
+ template <typename bg, typename bj = int, typename ay = bb<false>,
+           typename az = bb<false>, typename bl = bb<false>>
+ struct br : bn<bg ::ax, bj, ay, az, bl> {};
+ } // namespace aw
+ template <class aq> struct bi {
+   typedef aq h;
+ };
+ template <typename aq> bi<aq>::h bf();
+ template <class> struct ba : c<bool, false> {};
+ template <class aq> struct ba<aq const> : c<bool, true> {};
+ template <class aq> struct bk {
+   typedef aq const h;
+ };
+ template <class aq> struct bq {
+   typedef aq h;
+ };
+ template <class aq> struct bu {
+   typedef aq::h h;
+ };
+ template <class bo> struct by {
+   typedef bo ::ah h;
+ };
+ template <class aq> struct bm {
+   typedef aq h;
+ };
+ template <class aq> struct bm<aq const> {
+   typedef aq h;
+ };
+ namespace aw {
+ template <int, typename bg, typename> struct bp {
+   typedef bg h;
+ };
+ template <typename bg, typename bj> struct bp<false, bg, bj> {
+   typedef bj h;
+ };
+ template <typename bg, typename bj, typename ay = int> struct cg {
+   typedef bp<bg::ax, bj, ay>::h h;
+ };
+ template <typename C, typename bt, typename cd = int> struct bs {
+   typedef cg<C, bt, cd>::h ::h h;
+ };
+ template <int, typename, typename, typename, typename> struct bx;
+ template <typename bg, typename bj, typename ay, typename az>
+ struct bx<true, bg, bj, ay, az> : bx<bg ::ax, bj, ay, az, bb<true>> {};
+ template <>
+ struct bx<true, bb<true>, bb<true>, bb<true>, bb<true>> : bb<true> {};
+ template <typename bg, typename bj>
+ struct bw : bx<bg ::ax, bj, bb<true>, bb<true>, bb<true>> {};
+ } // namespace aw
+ template <typename bv, typename bz> struct cb {
+   template <typename cc> static void ca(cc);
+   template <typename ch, typename cc> static decltype(ca<cc>(bf<ch>())) cr(int);
+   template <typename, typename> static int cr(...);
+   static const bool ax = sizeof(cr<bv, bz>(0)) == 1;
+ };
+ template <typename bv, typename bz> struct cm {
+   static const bool ax = cb<bv, bz>::ax;
+ };
+ template <class bv, class bz> struct cl {
+   typedef cm<bv, bz> h;
+ };
+ template <typename bv, typename bz> struct ci {
+   typedef cl<bv, bz>::h h;
+ };
+ template <typename bv, typename bz> struct co : ci<bv, bz>::h {};
+ template <class bv, class bz> struct ce : c<bool, co<bv, bz>::ax> {};
+ namespace aw {
+ template <typename aq> struct cf {
+   typedef aq h;
+ };
+ } // namespace aw
+ template <int> struct arg {
+   template <typename ck, typename> struct apply {
+     typedef ck h;
+   };
+ };
+ template <> struct arg<2> {
+   template <typename, typename cu> struct apply {
+     typedef cu h;
+   };
+ };
+ struct cj {};
+ template <class cq> struct cx : aw::bs<ce<cq, cj>, aw::cf<cq>> {};
+ template <class bo> struct cw : cx<typename bo::i> {};
+ template <class ct, class cp, class dc>
+ struct cn : aw::bs<aw::bw<ce<ct, cj>, ce<dc, cp>>, aw::cf<ac>> {};
+ template <class aq> struct dd : aw::br<ce<aq, ac>, ce<aq, int>> {};
+ template <class cs, class ct> struct cz : cs, ct {};
+ template <class cp, class dc> struct da {
+   typedef cn<cj, cp, dc>::h category;
+   typedef aw::cg<ae<cj, int>, category, cz<category, cj>>::h h;
+ };
+ template <class cy, class cp, class dc>
+ struct s : aw::bs<dd<cy>, aw::cf<cy>, da<cp, dc>> {};
+ namespace aw {
+ template <typename df, typename bg> struct de : df::apply<bg> {};
+ template <typename df, typename bg, typename bj>
+ struct u : df::apply<bg, bj> {};
+ template <typename df, typename bg, typename bj>
+ struct db : df::apply<bg, bj> {};
+ template <typename aq> struct bh {
+   typedef aq::bh h;
+ };
+ template <typename, typename, typename, typename> struct cv;
+ template <int dk, typename ck, typename cu, typename dm>
+ struct cv<arg<dk>, ck, cu, dm> {
+   typedef db<arg<dk>, ck, cu>::h h;
+ };
+ template <typename df, typename bg> struct dh {
+   template <typename ck, typename cu = int> struct apply {
+     typedef de<df, typename cv<bg, ck, cu, int>::h>::h h;
+   };
+ };
+ template <typename df, typename bg, typename ck, typename cu, typename dm>
+ struct cv<dh<df, bg>, ck, cu, dm> {
+   typedef db<dh<df, bg>, ck, cu>::h h;
+ };
+ template <typename df, typename bg, typename bj> struct dg {
+   template <typename ck, typename cu> struct apply {
+     typedef u<df, typename cv<bg, ck, cu, int>::h,
+               typename cv<bj, ck, cu, int>::h>::h h;
+   };
+ };
+ template <typename aq> struct di {
+   typedef aq::h h;
+ };
+ template <template <typename> class df> struct dl {
+   template <typename ck> struct apply : di<df<ck>> {};
+ };
+ template <int dk, typename dn> struct be<arg<dk>, dn> {
+   typedef bb<true> dj;
+   typedef arg<dk> result_;
+ };
+ template <typename, template <typename> class, typename> struct x;
+ template <template <typename> class df, typename L1>
+ struct x<bb<true>, df, L1> {
+   typedef dh<dl<df>, typename L1::result_> h;
+ };
+ template <template <typename> class df, typename bg, typename dn>
+ struct be<df<bg>, dn> {
+   typedef be<bg> l1;
+   typedef x<typename l1::dj, df, l1>::h h;
+ };
+ template <typename df, typename bg, typename bj>
+ struct apply2 : u<df, bg, bj> {};
+ } // namespace aw
+ namespace iterators {
+ struct always_bool2 {
+   template <class, class> struct apply {
+     typedef bool h;
+   };
+ };
+ template <class cp, class cy, class dc> struct y {
+   typedef s<cy, cp, dc>::h i;
+ };
+ template <class, class, class, class, class, bool> class iterator_facade_base;
+ struct iterator_core_access {
+   template <class Facade> static Facade::ah dereference(Facade &r) {
+     return r.dereference();
+   }
+   template <class Facade> static void increment(Facade &r) { r.increment(); }
+   template <class Facade1, class Facade2>
+   static bool equal(Facade1 &r, Facade2 p2) {
+     return r.equal(p2);
+   }
+ };
+ template <class Derived, class Value, class cy, class dc, class Difference>
+ struct iterator_facade_base<Derived, Value, cy, dc, Difference, false> {
+   typedef dc ah;
+   typedef y<Value, cy, dc>::i i;
+   ah operator*() { return iterator_core_access::dereference(derived()); }
+   void operator++() { iterator_core_access::increment(derived()); }
+   Derived &derived() { return *static_cast<Derived *>(this); }
+ };
+ template <class Derived, class Value, class cy, class dc, class = long>
+ struct iterator_facade
+     : iterator_facade_base<Derived, Value, cy, dc, int, ce<cj, int>::ax> {};
+ template <class Derived1, class V1, class TC1, class Reference1,
+           class Difference1, class Derived2, class V2, class TC2,
+           class Reference2, class Difference2>
+ bq<typename aw::apply2<always_bool2, Derived1, Derived2>::h>::h
+ operator==(iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const &r,
+            iterator_facade<Derived2, V2, TC2, Reference2, Difference2> p2) {
+   return iterator_core_access::equal(*static_cast<Derived1 const *>(&r),
+                                      *static_cast<Derived2 *>(&p2));
+ }
+ } // namespace iterators
+ using iterators::iterator_facade;
+ template <class aq, class DefaultNullaryFn>
+ struct ia_dflt_help : aw::bs<ae<aq, int>, DefaultNullaryFn, aw::cf<aq>> {};
+ template <class Derived, class Base, class dc> struct iterator_adaptor_base {
+   typedef iterator_facade<Derived, int, typename ia_dflt_help<int, cw<Base>>::h,
+                           typename ia_dflt_help<dc, int>::h>
+       h;
+ };
+ template <class Derived, class Base, class, class, class dc, class = int>
+ struct iterator_adaptor : iterator_adaptor_base<Derived, Base, dc>::h {
+   Base an() const { return m_iterator; }
+   template <class OtherDerived, class OtherIterator, class V, class C, class R,
+             class D>
+   bool equal(iterator_adaptor<OtherDerived, OtherIterator, V, C, R, D>) const {
+     return m_iterator == an();
+   }
+   void increment() { ++m_iterator; }
+   Base m_iterator;
+ };
+ template <typename> struct result_of;
+ template <typename df, typename... Args> struct result_of<df(Args...)> {
+   typedef decltype(df()(bf<Args>()...)) h;
+ };
+ namespace iterators {
+ template <class> class transform_iterator;
+ template <class UnaryFunc, class bo> struct transform_iterator_base {
+   typedef iterator_adaptor<
+       transform_iterator<UnaryFunc>, bo, UnaryFunc, int,
+       typename ia_dflt_help<int, result_of<UnaryFunc(typename bo::ah)>>::h>
+       h;
+ };
+ template <typename> class zip_iterator;
+ template <class UnaryFunc>
+ struct transform_iterator
+     : transform_iterator_base<UnaryFunc, zip_iterator<int>>::h {
+   void dereference() { m_f(*this->an()); }
+   UnaryFunc m_f;
+ };
+ template <class UnaryFunc>
+ transform_iterator<UnaryFunc> make_transform_iterator(zip_iterator<int>,
+                                                       UnaryFunc);
+ } // namespace iterators
+ namespace tuples {
+ template <class, class> struct cons;
+ template <class = int, class = int, class = int, class = int, class = int,
+           class = int, class = int, class = int, class = int, class = int>
+ class tuple;
+ template <class aq> struct access_traits {
+   typedef const aq &const_type;
+   typedef aq &non_const_type;
+ };
+ template <long, class HT, class TT>
+ access_traits<HT>::const_type get(cons<HT, TT>);
+ template <class aq> struct wrap_non_storeable_type {
+   typedef aq h;
+ };
+ template <class HT, class TT> struct cons {
+   typedef HT head_type;
+   typedef TT tail_type;
+   typedef wrap_non_storeable_type<head_type>::h stored_head_type;
+   stored_head_type head;
+   tail_type tail;
+   access_traits<stored_head_type>::non_const_type get_head() { return head; }
+   access_traits<tail_type>::non_const_type get_tail() { return tail; }
+   access_traits<stored_head_type>::const_type get_head() const { return head; }
+   access_traits<tail_type>::const_type get_tail() const { return tail; }
+ };
+ template <class T0, class bg, class, class, class, class, class, class, class,
+           class>
+ struct map_tuple_to_cons {
+   typedef cons<T0, typename map_tuple_to_cons<bg, int, int, int, int, int, int,
+                                               int, int, int>::h>
+       h;
+ };
+ template <>
+ struct map_tuple_to_cons<int, int, int, int, int, int, int, int, int, int> {
+   typedef int h;
+ };
+ template <class T0, class bg, class, class, class, class, class, class, class,
+           class>
+ struct tuple
+     : map_tuple_to_cons<T0, bg, int, int, int, int, int, int, int, int>::h {};
+ } // namespace tuples
+ using tuples::tuple;
+ } // namespace av
+ template <class R_> struct aa {
+   ak<typename R_::FT, 3> an;
+ };
+ template <typename K> struct Compare_xy_2 {
+   typedef K::Point_2 Point_2;
+   void operator()(Point_2, Point_2);
+ };
+ template <typename K_, typename FT_> struct Cartesian_base {
+   typedef FT_ FT;
+   typedef m Point_2;
+   typedef aa<K_> Line_2;
+ };
+ template <typename K_base> struct Type_equality_wrapper : K_base {};
+ template <typename FT_, typename Kernel_>
+ struct Cartesian_base_no_ref_count : Cartesian_base<Kernel_, FT_> {};
+ template <typename FT_>
+ struct j : Type_equality_wrapper<Cartesian_base_no_ref_count<FT_, j<FT_>>> {};
+ template <class C2E> struct Filtered_predicate {
+   C2E c2e;
+   Compare_xy_2<j<double>> ep;
+   template <typename... Args> void operator()(Args... r) { ep(c2e(r)...); }
+ };
+ struct Mpzf {
+   ~Mpzf();
+ };
+ struct Cartesian_converter {
+   j<Mpzf>::Line_2 operator()(Type_equality_wrapper<j<double>>::Line_2);
+ };
+ namespace av {
+ namespace aw {
+ template <typename> struct begin_impl;
+ template <typename> struct end_impl;
+ template <typename> struct sequence_tag;
+ template <typename Sequence> struct begin {
+   typedef sequence_tag<Sequence>::h tag_;
+   typedef begin_impl<tag_>::template apply<Sequence>::h h;
+ };
+ template <typename Sequence> struct ab {
+   typedef sequence_tag<Sequence>::h tag_;
+   typedef end_impl<tag_>::template apply<Sequence>::h h;
+ };
+ const long ax = -1;
+ template <int, typename, typename, typename, typename> struct fold_impl;
+ template <typename First, typename Last, typename State, typename ForwardOp>
+ struct fold_impl<-1, First, Last, State, ForwardOp>
+     : fold_impl<-1, typename bh<First>::h, Last,
+                 typename apply2<ForwardOp, State, typename First::h>::h,
+                 ForwardOp> {};
+ template <typename Last, typename State, typename ForwardOp>
+ struct fold_impl<-1, Last, Last, State, ForwardOp> {
+   typedef State state;
+ };
+ template <typename Sequence, typename State, typename ForwardOp> struct fold {
+   typedef fold_impl<ax, typename begin<Sequence>::h, typename ab<Sequence>::h,
+                     State, ForwardOp>::state h;
+ };
+ template <typename> struct push_back_impl;
+ template <typename Sequence = int, typename aq = int>
+ struct push_back
+     : push_back_impl<typename sequence_tag<Sequence>::h>::apply<Sequence, aq> {
+ };
+ struct has_push_back {
+   static const bool ax = sizeof(0);
+ };
+ template <> struct push_back<> {
+   template <typename bg, typename bj> struct apply : push_back<bg, bj> {};
+ };
+ template <typename Sequence, typename Operation> struct inserter {
+   typedef Sequence state;
+   typedef Operation operation;
+ };
+ template <typename Sequence>
+ struct back_inserter : inserter<Sequence, push_back<>> {};
+ template <typename> struct clear_impl;
+ template <typename Sequence>
+ struct clear : clear_impl<typename sequence_tag<Sequence>::h>::apply<Sequence> {
+ };
+ template <typename Seq, typename Op, typename In>
+ struct transform1_impl
+     : fold<Seq, typename In::state,
+            dg<typename In::operation, arg<1>, dh<typename be<Op>::h, arg<2>>>> {
+ };
+ template <typename P1>
+ struct transform1
+     : cg<has_push_back,
+          transform1_impl<P1, by<arg<1>>,
+                          back_inserter<typename clear<P1>::h>>>::h {};
+ template <typename Seq1> struct transform {
+   typedef bs<br<bb<true>>, transform1<Seq1>>::h h;
+ };
+ } // namespace aw
+ } // namespace av
+ template <typename, typename, typename> struct Type_mapper_impl;
+ template <typename K1, typename K2>
+ struct Type_mapper_impl<typename K1::Line_2, K1, K2> {
+   typedef K2::Line_2 h;
+ };
+ auto call_once___callable = [] {};
+ struct once_flag {
+   struct _Prepare_execution;
+ } __thread *__once_callable;
+ struct once_flag::_Prepare_execution {
+   template <typename _Callable> _Prepare_execution(_Callable) {
+     __once_callable = nullptr;
+   }
+ };
+ template <typename _Callable> void call_once(_Callable) {
+   once_flag::_Prepare_execution __exec(call_once___callable);
+ }
+ template <typename ET> auto approx(e<aa<j<int>>, ET> r) { return r.approx(); }
+ template <typename ET> ET exact(e<m, ET> r) { return r.exact(); }
+ once_flag once;
+ template <typename AT_, typename ET> struct Lazy_rep {
+   AT_ approx();
+   ET exact_unsafe();
+   ET exact() {
+     call_once(once);
+     return exact_unsafe();
+   }
+ };
+ struct Exact_converter {
+   template <typename aq> auto operator()(aq r) { return exact(r); }
+ };
+ template <typename AT_, typename ET_> struct e {
+   typedef Lazy_rep<AT_, ET_> Self_rep;
+   e(Self_rep *);
+   auto approx() { return ptr()->approx(); }
+   ET_ exact() { return ptr()->exact(); }
+   Self_rep *ptr();
+ };
+ template <typename LK> struct Lazy_construction {
+   auto operator()() {
+     return typename Type_mapper_impl<a<k<int>>, typename LK::Approximate_kernel,
+                                      LK>::h(0);
+   }
+ };
+ template <typename, typename>
+ using Epick_with_filtered_predicates = Type_equality_wrapper<j<double>>;
+ struct Epic_converter {
+   p<Epick_with_filtered_predicates<double, int>::Line_2>
+   operator()(j<int>::Line_2);
+ };
+ template <typename FP, typename EpicP> struct Static_filtered_predicate {
+   FP fp;
+   EpicP epicp;
+   template <typename A1> void operator()(A1 r) {
+     Epic_converter convert;
+     auto __trans_tmp_4 = approx(r), aa1 = convert(__trans_tmp_4);
+     epicp(aa1.ad);
+   }
+   template <typename A1, typename A2> void operator()(A1 r, A2 p2) {
+     fp(r, p2);
+   }
+ };
+ Static_filtered_predicate<Filtered_predicate<Exact_converter>, int>
+ compare_xy_2_object();
+ Static_filtered_predicate<int, Cartesian_converter> is_vertical_2_object();
+ struct Lazy_kernel_base {
+   typedef j<int> Approximate_kernel;
+   typedef e<Approximate_kernel::Line_2, int> Line_2;
+ };
+ template <typename, typename> using Epeck_lazy_base = Lazy_kernel_base;
+ template <typename FT, typename>
+ using Epeck_lazy_base_with_type_equality =
+     Type_equality_wrapper<Epeck_lazy_base<FT, class Epeck>>;
+ struct Epeck : Epeck_lazy_base_with_type_equality<double, Epeck> {};
+ struct Construct_x_monotone_curve_2 {
+   void operator()(e<m, m> r, e<m, m> p2) {
+     Lazy_construction<Epeck> __trans_tmp_9;
+     auto line = __trans_tmp_9();
+     compare_xy_2_object()(r, p2);
+     is_vertical_2_object()(line);
+   }
+ };
+ Construct_x_monotone_curve_2 construct_curve_2_object();
+ namespace av {
+ w last1;
+ typedef e<m, m> *iterator2_t;
+ struct join_iterator_union {
+   iterator2_t &it2() { return m_it2; }
+   e<m, m> &dereference(unsigned r) {
+     if (r)
+       return *m_it2;
+     return *m_it1;
+   }
+   w m_it1;
+   iterator2_t m_it2;
+ };
+ struct join_iterator : iterator_facade<join_iterator, int, int, e<m, m> &> {
+   w __trans_tmp_24;
+   void increment() {
+     if (m_section)
+       ;
+     else if (__trans_tmp_24 == last1)
+       m_it.it2() = 0;
+   }
+   ah dereference() { return m_it.dereference(m_section); }
+   bool equal(join_iterator) const { return m_section; }
+   int m_section;
+   join_iterator_union m_it;
+ };
+ } // namespace av
+ template <typename InputIterator> void construct_polycurve(InputIterator r) {
+   InputIterator begin;
+   ao.aj(begin, r);
+ }
+ struct Polycurve_2 {
+   template <typename InputIterator>
+   Polycurve_2(InputIterator, InputIterator p2) {
+     construct_polycurve(p2);
+   }
+ };
+ struct Arr_polycurve_traits_2 {
+   struct Construct_curve_2 {
+     template <typename ForwardIterator>
+     void operator()(ForwardIterator r, ForwardIterator p2) {
+       Polycurve_2(r, p2);
+     }
+   };
+ };
+ namespace av {
+ namespace fusion {
+ namespace traits {
+ template <typename> struct tag_of;
+ template <class T0, class bg, class bj, class ay, class az, class bl, class T6,
+           class T7, class T8, class T9>
+ struct tag_of<tuple<T0, bg, bj, ay, az, bl, T6, T7, T8, T9>> {
+   typedef int h;
+ };
+ template <class Head, class Tail> struct tag_of<tuples::cons<Head, Tail>> {
+   typedef int h;
+ };
+ } // namespace traits
+ } // namespace fusion
+ namespace aw {
+ template <class T0, class bg, class bj, class ay, class az, class bl, class T6,
+           class T7, class T8, class T9>
+ struct sequence_tag<tuple<T0, bg, bj, ay, az, bl, T6, T7, T8, T9>> {
+   typedef int h;
+ };
+ template <class Head, class Tail>
+ struct sequence_tag<tuples::cons<Head, Tail>> {
+   typedef int h;
+ };
+ } // namespace aw
+ namespace fusion {
+ namespace detail {
+ template <typename Sequence> struct tag_of_impl {
+   typedef Sequence::fusion_tag h;
+ };
+ } // namespace detail
+ namespace traits {
+ template <typename Sequence> struct tag_of : detail::tag_of_impl<Sequence> {};
+ } // namespace traits
+ namespace detail {
+ template <typename aq> struct tag_of : traits::tag_of<typename bm<aq>::h> {};
+ } // namespace detail
+ struct iterator_facade_tag;
+ template <typename> struct next_impl {
+   template <typename bo> struct apply : bo::bh<bo> {};
+ };
+ namespace result_of {
+ template <typename bo>
+ struct bh : next_impl<typename bo::fusion_tag>::apply<bo> {};
+ } // namespace result_of
+ template <typename bo> result_of::bh<bo>::h bh(bo r) {
+   return result_of::bh<bo>::call(r);
+ }
+ template <typename> struct equal_to_impl {
+   template <typename I1, typename I2>
+   struct apply : ae<typename bk<I1>::h, typename bk<I2>::h> {};
+ };
+ template <> struct equal_to_impl<iterator_facade_tag> {
+   template <typename, typename, typename, typename> struct dispatch;
+   template <typename It1, typename It2, typename dn>
+   struct dispatch<It1, It2, dn, dn> : It1::equal_to<It1, It2> {};
+   template <typename It1, typename It2>
+   struct apply
+       : dispatch<It1, It2, typename It1::fusion_tag, typename It2::fusion_tag> {
+   };
+ };
+ namespace result_of {
+ template <typename I1, typename I2>
+ struct equal_to : equal_to_impl<typename I1::fusion_tag>::apply<I1, I2> {};
+ } // namespace result_of
+ struct iterator_facade {
+   typedef iterator_facade_tag fusion_tag;
+ };
+ template <typename Cons = int> struct boost_tuple_iterator : iterator_facade {
+   typedef Cons cons_type;
+   boost_tuple_iterator(Cons &r) : cons(r) {}
+   Cons &cons;
+   template <typename>
+   struct value_of : aw::cf<typename cons_type::head_type> {};
+   template <typename bo> struct deref {
+     typedef value_of<bo>::h element;
+     typedef aw::cg<
+         ba<cons_type>, typename tuples::access_traits<element>::const_type,
+         typename tuples::access_traits<element>::non_const_type>::h h;
+     static h call(bo r) { return r.cons.get_head(); }
+   };
+   template <typename bo> struct bh {
+     typedef cons_type::tail_type tail_type;
+     typedef boost_tuple_iterator<
+         typename aw::bs<ba<cons_type>, bk<tail_type>, aw::cf<tail_type>>::h>
+         h;
+     static h call(bo r) { return r.cons.get_tail(); }
+   };
+   template <typename, typename I2>
+   struct equal_to : ae<Cons, typename I2::cf> {};
+ };
+ struct boost_tuple_null_iterator : iterator_facade {
+   typedef int cf;
+   template <typename, typename> struct equal_to : aw::br<ae<int, int>> {};
+ };
+ template <> struct boost_tuple_iterator<> : boost_tuple_null_iterator {
+   template <typename Cons> boost_tuple_iterator(Cons);
+ };
+ template <> struct boost_tuple_iterator<int const> : boost_tuple_null_iterator {
+   template <typename Cons> boost_tuple_iterator(Cons) {}
+ };
+ template <> struct boost_tuple_iterator<tuple<>> : boost_tuple_null_iterator {};
+ template <typename> struct begin_impl {
+   template <typename Sequence> struct apply {
+     typedef boost_tuple_iterator<Sequence> h;
+     static h call(Sequence r) { return r; }
+   };
+ };
+ template <typename> struct end_impl {
+   template <typename Sequence> struct apply {
+     typedef boost_tuple_iterator<typename aw::cg<ba<Sequence>, int const>::h> h;
+   };
+ };
+ template <typename> struct value_of_impl {
+   template <typename bo> struct apply : bo::value_of<bo> {};
+ };
+ namespace result_of {
+ template <typename bo>
+ struct value_of : value_of_impl<typename bo::fusion_tag>::apply<bo> {};
+ } // namespace result_of
+ template <typename> struct deref_impl {
+   template <typename bo> struct apply : bo::deref<bo> {};
+ };
+ namespace result_of {
+ template <typename bo>
+ struct deref : deref_impl<typename bo::fusion_tag>::apply<bo> {};
+ } // namespace result_of
+ template <typename bo> result_of::deref<bo>::h deref(bo r) {
+   return result_of::deref<bo>::call(r);
+ }
+ template <typename bo> result_of::deref<bo>::h operator*(bo r) {
+   return deref(r);
+ }
+ namespace detail {
+ template <typename First, typename Last,
+           bool = result_of::equal_to<First, Last>::ax>
+ struct build_tuple_cons {
+   typedef int h;
+   static h call(First, Last) { return h(); }
+ };
+ template <typename First, typename Last>
+ struct build_tuple_cons<First, Last, false> {
+   typedef build_tuple_cons<typename result_of::bh<First>::h, Last>
+       next_build_tuple_cons;
+   typedef tuples::cons<typename result_of::value_of<First>::h,
+                        typename next_build_tuple_cons::h>
+       h;
+   static h call(First r, Last p2) {
+     typename result_of::value_of<First>::h v = *r;
+     return h(v, next_build_tuple_cons::call(bh(r), p2));
+   }
+ };
+ } // namespace detail
+ namespace result_of {
+ template <typename Sequence>
+ struct begin
+     : begin_impl<typename detail::tag_of<Sequence>::h>::apply<Sequence> {};
+ template <typename Sequence>
+ struct ab : end_impl<typename detail::tag_of<Sequence>::h>::apply<Sequence> {};
+ } // namespace result_of
+ namespace traits {
+ struct is_view : bb<0> {};
+ } // namespace traits
+ } // namespace fusion
+ namespace aw {
+ template <typename bo> struct fusion_iterator {
+   typedef fusion::result_of::value_of<bo>::h h;
+ };
+ template <typename bo> struct bh<fusion_iterator<bo>> {
+   typedef fusion_iterator<typename fusion::result_of::bh<bo>::h> h;
+ };
+ template <> struct begin_impl<int> {
+   template <typename Sequence> struct apply {
+     typedef fusion_iterator<typename fusion::result_of::begin<Sequence>::h> h;
+   };
+ };
+ template <> struct end_impl<int> {
+   template <typename Sequence> struct apply {
+     typedef fusion_iterator<typename fusion::result_of::ab<Sequence>::h> h;
+   };
+ };
+ } // namespace aw
+ namespace fusion {
+ template <> struct next_impl<int> {
+   template <typename bo> struct apply {
+     typedef aw::cg<
+         result_of::equal_to<typename result_of::bh<typename bo::first_type>::h,
+                             typename bo::last_type>,
+         typename bo::concat_type>::h h;
+   };
+ };
+ template <> struct value_of_impl<int> {
+   template <typename bo> struct apply {
+     typedef result_of::value_of<typename bo::first_type>::h h;
+   };
+ };
+ template <typename First, typename Last, typename Concat>
+ struct joint_view_iterator {
+   typedef First first_type;
+   typedef Last last_type;
+   typedef Concat concat_type;
+   typedef int fusion_tag;
+ };
+ struct joint_view_tag;
+ template <> struct begin_impl<joint_view_tag> {
+   template <typename Sequence> struct apply {
+     typedef Sequence::first_type first_type;
+     typedef Sequence::last_type last_type;
+     typedef Sequence::concat_type concat_type;
+     typedef aw::cg<result_of::equal_to<first_type, last_type>, concat_type,
+                    joint_view_iterator<first_type, last_type, concat_type>>::h
+         h;
+   };
+ };
+ template <> struct end_impl<joint_view_tag> {
+   template <typename Sequence> struct apply {
+     typedef Sequence::concat_last_type h;
+   };
+ };
+ template <typename Sequence1, typename Sequence2> struct joint_view {
+   typedef joint_view_tag fusion_tag;
+   typedef result_of::begin<Sequence1>::h first_type;
+   typedef result_of::ab<Sequence1>::h last_type;
+   typedef result_of::begin<Sequence2>::h concat_type;
+   typedef result_of::ab<Sequence2>::h concat_last_type;
+ };
+ struct single_view_iterator_tag;
+ template <typename SingleView, typename Pos> struct single_view_iterator {
+   typedef single_view_iterator_tag fusion_tag;
+   typedef SingleView::value_type value_type;
+   typedef Pos position;
+   typedef SingleView single_view_type;
+ };
+ template <> struct next_impl<single_view_iterator_tag> {
+   template <typename bo> struct apply {
+     typedef single_view_iterator<typename bo::single_view_type,
+                                  typename aw::bh<typename bo::position>::h>
+         h;
+   };
+ };
+ template <> struct value_of_impl<single_view_iterator_tag> {
+   template <typename bo> struct apply {
+     typedef bo::value_type h;
+   };
+ };
+ struct single_view_tag;
+ template <> struct begin_impl<single_view_tag> {
+   template <typename Sequence> struct apply {
+     typedef single_view_iterator<Sequence, aw::bd<0>> h;
+   };
+ };
+ template <> struct end_impl<single_view_tag> {
+   template <typename Sequence> struct apply {
+     typedef single_view_iterator<Sequence, aw::bd<1>> h;
+   };
+ };
+ template <typename aq> struct single_view {
+   typedef single_view_tag fusion_tag;
+   typedef aq value_type;
+ };
+ namespace result_of {
+ template <typename Sequence, typename aq> struct push_back {
+   typedef joint_view<Sequence, single_view<aq>> h;
+ };
+ } // namespace result_of
+ template <typename Sequence>
+ bu<result_of::begin<Sequence>>::h begin(Sequence r) {
+   return result_of::begin<Sequence>::call(r);
+ }
+ template <typename Sequence> struct apply {
+   typedef detail::build_tuple_cons<typename result_of::begin<Sequence>::h,
+                                    typename result_of::ab<Sequence>::h>
+       build_tuple_cons;
+   typedef build_tuple_cons::h h;
+   static h call(Sequence r) {
+     typename result_of::begin<Sequence>::h __trans_tmp_6 = begin(r);
+     typename result_of::ab<Sequence>::h __trans_tmp_7(r);
+     return build_tuple_cons::call(__trans_tmp_6, __trans_tmp_7);
+   }
+ };
+ namespace detail {
+ template <typename First, typename Last, typename df>
+ void for_each_linear(First, Last, df, bb<true>) {}
+ template <typename First, typename Last, typename df>
+ void for_each_linear(First r, Last p2, df p3, bb<false>) {
+   p3(*r);
+   for_each_linear(
+       bh(r), p2, p3,
+       result_of::equal_to<typename result_of::bh<First>::h, Last>());
+ }
+ template <typename Sequence, typename df, typename dn>
+ void for_each_dispatch(Sequence &r, df p2, dn) {
+   typename result_of::begin<Sequence>::h __trans_tmp_2 = r;
+   typename result_of::ab<Sequence>::h __trans_tmp_3 = 0;
+   for_each_linear(__trans_tmp_2, __trans_tmp_3, p2,
+                   result_of::equal_to<typename result_of::begin<Sequence>::h,
+                                       typename result_of::ab<Sequence>::h>());
+ }
+ template <typename Sequence, typename df> void for_each(Sequence &r, df p2) {
+   for_each_dispatch(r, p2, int());
+ }
+ } // namespace detail
+ template <typename df>
+ void for_each(tuple<join_iterator, join_iterator> &r, df p2) {
+   detail::for_each(r, p2);
+ }
+ struct transform_view_iterator_tag;
+ template <> struct deref_impl<transform_view_iterator_tag> {
+   template <typename bo> struct apply {
+     typedef result_of::deref<typename bo::first_type>::h value_type;
+     typedef bo::transform_type df;
+     typedef typename result_of<df(value_type)>::h h;
+     static h call(bo r) { return r.f(*r.ad); }
+   };
+ };
+ template <typename First, typename df> struct transform_view_iterator {
+   typedef transform_view_iterator_tag fusion_tag;
+   typedef First first_type;
+   typedef df transform_type;
+   first_type ad;
+   transform_type f;
+ };
+ template <> struct next_impl<transform_view_iterator_tag> {
+   template <typename bo> struct apply {
+     typedef transform_view_iterator<
+         typename result_of::bh<typename bo::first_type>::h,
+         typename bo::transform_type>
+         h;
+     static h call(bo r) { return h(bh(r.ad)); }
+   };
+ };
+ template <> struct value_of_impl<transform_view_iterator_tag> {
+   template <typename bo> struct apply {
+     typedef av::result_of<typename bo::transform_type(
+         typename result_of::value_of<typename bo::first_type>::h)>::h h;
+   };
+ };
+ struct transform_view_tag;
+ template <> struct begin_impl<transform_view_tag> {
+   template <typename Sequence> struct apply {
+     typedef transform_view_iterator<typename Sequence::first_type,
+                                     typename Sequence::transform_type>
+         h;
+     static h call(Sequence r) { return h(r.ad()); }
+   };
+ };
+ template <> struct end_impl<transform_view_tag> {
+   template <typename Sequence> struct apply {
+     typedef transform_view_iterator<typename Sequence::last_type,
+                                     typename Sequence::transform_type>
+         h;
+   };
+ };
+ } // namespace fusion
+ namespace aw {
+ template <> struct clear_impl<int> {
+   template <typename> struct apply {
+     typedef tuple<> h;
+   };
+ };
+ } // namespace aw
+ namespace fusion {
+ namespace result_of {
+ template <typename Sequence> struct convert {
+   typedef apply<Sequence> gen;
+   typedef gen::h h;
+ };
+ } // namespace result_of
+ template <typename, typename Sequence>
+ result_of::convert<Sequence>::h convert(Sequence r) {
+   typedef typename result_of::convert<Sequence>::gen gen;
+   return gen::call(r);
+ }
+ } // namespace fusion
+ namespace aw {
+ template <> struct push_back_impl<int> {
+   template <typename Sequence, typename aq> struct apply {
+     typedef fusion::result_of::convert<
+         typename fusion::result_of::push_back<Sequence, aq>::h>::h h;
+   };
+ };
+ } // namespace aw
+ namespace fusion {
+ template <typename, typename df> struct transform_view {
+   typedef transform_view_tag fusion_tag;
+   typedef result_of::begin<const tuple<join_iterator, join_iterator>>::h
+       first_type;
+   typedef result_of::ab<const tuple<>>::h last_type;
+   typedef df transform_type;
+   first_type ad() { return seq; }
+   aw::cg<traits::is_view, int, const tuple<join_iterator, join_iterator> &>::h
+       seq;
+ };
+ namespace result_of {
+ template <typename, typename df> struct transform {
+   typedef transform_view<const tuple<join_iterator, join_iterator>, df> h;
+ };
+ } // namespace result_of
+ template <typename df>
+ result_of::transform<int, df>::h
+ transform(const tuple<join_iterator, join_iterator> &r, df) {
+   return transform_view<const tuple<join_iterator, join_iterator>, df>(r);
+ }
+ namespace detail {
+ struct sequence_equal_to {
+   template <typename I1, typename I2> static bool call(I1, I2, bb<true>);
+   template <typename I1, typename I2> static bool call(I1 r, I2 p2, bb<false>) {
+     return *r == *p2 && call(bh(r), bh(p2));
+   }
+   template <typename I1, typename I2> static bool call(I1 r, I2 p2) {
+     result_of::equal_to<I1, result_of::ab<tuple<>>::h> eq;
+     return call(r, p2, eq);
+   }
+ };
+ } // namespace detail
+ template <typename Seq2>
+ bool equal_to(const tuple<join_iterator, join_iterator> &r, Seq2 p2) {
+   boost_tuple_iterator __trans_tmp_27 = r;
+   return detail::sequence_equal_to::call(__trans_tmp_27, begin(p2));
+ }
+ } // namespace fusion
+ namespace iterators {
+ struct increment_iterator {
+   template <typename bo> void operator()(bo &r) { ++r; }
+ };
+ struct dereference_iterator {
+   template <typename> struct result;
+   template <typename This, typename bo> struct result<This(bo)> {
+     typedef by<bo>::h h;
+   };
+   template <typename bo> result<dereference_iterator(bo)>::h operator()(bo r) {
+     return *r;
+   }
+ };
+ struct minimum_traversal_category_in_iterator_tuple;
+ typedef aw::transform<tuple<join_iterator, join_iterator>>::h ah;
+ static ah call(fusion::transform_view<const tuple<join_iterator, join_iterator>,
+                                       dereference_iterator>
+                    r) {
+   return convert < ah >> (r);
+ }
+ template <typename>
+ struct zip_iterator
+     : iterator_facade<zip_iterator<int>, ah,
+                       minimum_traversal_category_in_iterator_tuple, ah> {
+   const tuple<join_iterator, join_iterator> &get_iterator_tuple() const {
+     return m_iterator_tuple;
+   }
+   ah dereference() {
+     const tuple<join_iterator, join_iterator> &__trans_tmp_21 =
+         get_iterator_tuple();
+     fusion::transform_view __trans_tmp_26 =
+         fusion::transform(__trans_tmp_21, dereference_iterator());
+     return call(__trans_tmp_26);
+   }
+   template <typename OtherIteratorTuple> bool equal(OtherIteratorTuple) const {
+     const tuple<join_iterator, join_iterator> &__trans_tmp_24 =
+         get_iterator_tuple();
+     tuple<join_iterator, join_iterator> __trans_tmp_25;
+     return fusion::equal_to(__trans_tmp_24, __trans_tmp_25);
+   }
+   void increment() { fusion::for_each(m_iterator_tuple, increment_iterator()); }
+   tuple<join_iterator, join_iterator> m_iterator_tuple;
+ };
+ } // namespace iterators
+ using iterators::zip_iterator;
+ } // namespace av
+ struct Construct_curve_2 {
+   template <typename ForwardIterator>
+   void operator()(ForwardIterator r, ForwardIterator p2) const {
+     constructor_impl(r, p2, int());
+   }
+   void operator()(int) {
+     av::join_iterator __trans_tmp_11, __trans_tmp_18;
+     operator()(__trans_tmp_18, __trans_tmp_11);
+   }
+   template <typename ForwardIterator>
+   void constructor_impl(ForwardIterator r, ForwardIterator p2, b<false>) const {
+     Arr_polycurve_traits_2::Construct_curve_2()(r, p2);
+   }
+   void constructor_impl(av::join_iterator, av::join_iterator, b<true>) const {
+     auto point_pair_to_segment = [](av::zip_iterator<av::tuple<>>::ah t) {
+       construct_curve_2_object()(0, get<1>(t));
+     };
+     av::zip_iterator<int> __trans_tmp_20, __trans_tmp_22;
+     operator()(make_transform_iterator(__trans_tmp_22, point_pair_to_segment),
+                make_transform_iterator(__trans_tmp_20, point_pair_to_segment));
+   }
+ };
+ int __trans_tmp_33___trans_tmp_16;
+ int
+ __trans_tmp_33()
+ {
+   Construct_curve_2 __trans_tmp_10;
+   __trans_tmp_10(__trans_tmp_33___trans_tmp_16);
+ }
+ 
+ // { dg-final { scan-assembler-times "call\[ \t\]__tls_get_addr@PLT" 1 { target { ! ia32 } } } }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/g++.target/i386/pr71921.C gcc-16-20251207/gcc/testsuite/g++.target/i386/pr71921.C
*** gcc-16-20251130/gcc/testsuite/g++.target/i386/pr71921.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/g++.target/i386/pr71921.C	Sun Dec  7 22:32:11 2025
***************
*** 0 ****
--- 1,60 ----
+ // PR target/116925
+ // { dg-do compile }
+ // { dg-options "-O2 -march=x86-64-v3" }
+ // { dg-final { scan-assembler-not "vcmpltps" } }
+ // { dg-final { scan-assembler-times "vminps" 2 } }
+ // { dg-final { scan-assembler-times "vmaxps" 2 } }
+ 
+ #include <vector>
+ 
+ void relu(float * __restrict__ output, const float * __restrict__ input, int size)
+ {
+   int i;
+   int s2;
+ 
+   s2 = size / 4;
+   for (i = 0; i < 10000; i++) {
+     float t;
+     t = input[i];
+     output[i] = std::max(t, float(0));
+   }
+ }
+ 
+ void relu1(float * __restrict__ output, const float * __restrict__ input, int size)
+ {
+   int i;
+   int s2;
+ 
+   s2 = size / 4;
+   for (i = 0; i < 10000; i++) {
+     float t;
+     t = input[i];
+     output[i] = std::max(float(0), t);
+   }
+ }
+ 
+ void relu2(float * __restrict__ output, const float * __restrict__ input, int size)
+ {
+   int i;
+   int s2;
+ 
+   s2 = size / 4;
+   for (i = 0; i < 10000; i++) {
+     float t;
+     t = input[i];
+     output[i] = std::min(t, float(0));
+   }
+ }
+ 
+ void relu3(float * __restrict__ output, const float * __restrict__ input, int size)
+ {
+   int i;
+   int s2;
+ 
+   s2 = size / 4;
+   for (i = 0; i < 10000; i++) {
+     float t;
+     t = input[i];
+     output[i] = std::min(float(0), t);
+   }
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.c-torture/execute/pr122943.c gcc-16-20251207/gcc/testsuite/gcc.c-torture/execute/pr122943.c
*** gcc-16-20251130/gcc/testsuite/gcc.c-torture/execute/pr122943.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.c-torture/execute/pr122943.c	Sun Dec  7 22:32:11 2025
***************
*** 0 ****
--- 1,130 ----
+ /* PR tree-optimization/122943 */
+ 
+ __attribute__((noipa)) unsigned char
+ foo (long long val)
+ {
+   unsigned char result = 0;
+   switch (val)
+     {
+     case 0: result = 1; break;
+     case 1: result = 2; break;
+     case 2: result = 3; break;
+     default: break;
+     }
+   return result;
+ }
+ 
+ __attribute__((noipa)) unsigned char
+ bar (long long val)
+ {
+   unsigned char result = 1;
+   switch (val)
+     {
+     case 0: result = 8; break;
+     case 1: result = 31; break;
+     case 2: result = 72; break;
+     default: break;
+     }
+   return result;
+ }
+ 
+ #ifdef __SIZEOF_INT128__
+ __attribute__((noipa)) unsigned char
+ baz (__int128 val)
+ {
+   unsigned char result = 0;
+   switch (val)
+     {
+     case 0: result = 1; break;
+     case 1: result = 2; break;
+     case 2: result = 3; break;
+     default: break;
+     }
+   return result;
+ }
+ 
+ __attribute__((noipa)) unsigned char
+ qux (__int128 val)
+ {
+   unsigned char result = 1;
+   switch (val)
+     {
+     case 0: result = 8; break;
+     case 1: result = 31; break;
+     case 2: result = 72; break;
+     default: break;
+     }
+   return result;
+ }
+ #endif
+ 
+ int
+ main ()
+ {
+   if (foo (-1) != 0)
+     __builtin_abort ();
+   if (foo (0) != 1)
+     __builtin_abort ();
+   if (foo (1) != 2)
+     __builtin_abort ();
+   if (foo (2) != 3)
+     __builtin_abort ();
+   if (foo (3) != 0)
+     __builtin_abort ();
+   if (foo (-__LONG_LONG_MAX__ - 1) != 0)
+     __builtin_abort ();
+   if (foo (-__LONG_LONG_MAX__) != 0)
+     __builtin_abort ();
+   if (foo (-__LONG_LONG_MAX__ + 1) != 0)
+     __builtin_abort ();
+   if (bar (-1) != 1)
+     __builtin_abort ();
+   if (bar (0) != 8)
+     __builtin_abort ();
+   if (bar (1) != 31)
+     __builtin_abort ();
+   if (bar (2) != 72)
+     __builtin_abort ();
+   if (bar (3) != 1)
+     __builtin_abort ();
+   if (bar (-__LONG_LONG_MAX__ - 1) != 1)
+     __builtin_abort ();
+   if (bar (-__LONG_LONG_MAX__) != 1)
+     __builtin_abort ();
+   if (bar (-__LONG_LONG_MAX__ + 1) != 1)
+     __builtin_abort ();
+ #ifdef __SIZEOF_INT128__
+   if (baz (-1) != 0)
+     __builtin_abort ();
+   if (baz (0) != 1)
+     __builtin_abort ();
+   if (baz (1) != 2)
+     __builtin_abort ();
+   if (baz (2) != 3)
+     __builtin_abort ();
+   if (baz (3) != 0)
+     __builtin_abort ();
+   if (baz (((__int128) 1) << 64) != 0)
+     __builtin_abort ();
+   if (baz ((((__int128) 1) << 64) + 1) != 0)
+     __builtin_abort ();
+   if (baz ((((__int128) 1) << 64) + 2) != 0)
+     __builtin_abort ();
+   if (qux (-1) != 1)
+     __builtin_abort ();
+   if (qux (0) != 8)
+     __builtin_abort ();
+   if (qux (1) != 31)
+     __builtin_abort ();
+   if (qux (2) != 72)
+     __builtin_abort ();
+   if (qux (3) != 1)
+     __builtin_abort ();
+   if (qux (((__int128) 1) << 64) != 1)
+     __builtin_abort ();
+   if (qux ((((__int128) 1) << 64) + 1) != 1)
+     __builtin_abort ();
+   if (qux ((((__int128) 1) << 64) + 2) != 1)
+     __builtin_abort ();
+ #endif
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.dg/asm-hard-reg-9.c gcc-16-20251207/gcc/testsuite/gcc.dg/asm-hard-reg-9.c
*** gcc-16-20251130/gcc/testsuite/gcc.dg/asm-hard-reg-9.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.dg/asm-hard-reg-9.c	Sun Dec  7 22:32:12 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do compile { target { s390*-*-* || { x86_64-*-* && lp64 } } } } */
+ /* { dg-options "-O2" } */
+ 
+ /* Ensure that if the reload register for operand 2 is resued for operand 3,
+    that exclude start hard regs coming from operand 3 are taken into account.
+    Otherwise a different register than r8 may be chosen rendering the insn
+    after LRA unsatisfiable.  */
+ 
+ long
+ test ()
+ {
+   long x;
+   __asm__ ("" : "=r" (x) : "0" (1000), "r" (0l), "{r8}" (0l));
+   return x;
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.dg/gimplefe-58.c gcc-16-20251207/gcc/testsuite/gcc.dg/gimplefe-58.c
*** gcc-16-20251130/gcc/testsuite/gcc.dg/gimplefe-58.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.dg/gimplefe-58.c	Sun Dec  7 22:32:12 2025
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-options "-fgimple" } */
+ 
+ int __GIMPLE (ssa)
+ foo (int * restrict p, int * q)
+ {
+   int x;
+   int _1;
+   int _7;
+ 
+   __BB(2):
+   x_4 = __MEM <int> (q_3(D), 1:0);
+   __MEM <int> ((int *)p_5(D), 1 :1) = 1;
+   _1 = __MEM <int> (q_3(D), 1: 0);
+   _7 = _1 + x_4;
+   return _7;
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.dg/gomp/pr110485.c gcc-16-20251207/gcc/testsuite/gcc.dg/gomp/pr110485.c
*** gcc-16-20251130/gcc/testsuite/gcc.dg/gomp/pr110485.c	Sun Nov 30 22:32:10 2025
--- gcc-16-20251207/gcc/testsuite/gcc.dg/gomp/pr110485.c	Sun Dec  7 22:32:12 2025
*************** void foo (int n)
*** 16,19 ****
  }
  
  /* { dg-final { scan-tree-dump-not "MASK_LOAD" "vect" } } */
! /* { dg-final { scan-tree-dump "can't use a fully-masked loop because a non-masked simd clone was selected." "vect" { target x86_64-*-* } } } */
--- 16,19 ----
  }
  
  /* { dg-final { scan-tree-dump-not "MASK_LOAD" "vect" } } */
! /* { dg-final { scan-tree-dump "can't use a fully-masked loop because no masked simd clone was available" "vect" { target x86_64-*-* } } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.dg/ipa/vrp-from-cst-agg-1.c gcc-16-20251207/gcc/testsuite/gcc.dg/ipa/vrp-from-cst-agg-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.dg/ipa/vrp-from-cst-agg-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.dg/ipa/vrp-from-cst-agg-1.c	Sun Dec  7 22:32:12 2025
***************
*** 0 ****
--- 1,33 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -fdump-ipa-cp-details" } */
+ 
+ static const struct {
+     int w;
+     int h;
+ } sizes[7] = {
+     { 16, 16 },
+     { 16,  8 },
+     {  8, 16 },
+     {  8,  8 },
+     {  8,  4 },
+     {  4,  8 },
+     {  4,  4 }
+ };
+ 
+ int baz(int, int);
+ 
+ [[gnu::noinline]] void bar(int w, int h)
+ {
+   for (int i = 0; i < w; i++)
+     for (int j = 0; i < h; j++)
+       baz (i, j);
+ }
+ 
+ void foo (int index)
+ {
+  int w = sizes[index].w;
+  int h = sizes[index].h;
+ 
+  bar (w, h);
+ }
+ /* { dg-final { scan-ipa-dump "irange" "cp" } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.dg/pr122898.c gcc-16-20251207/gcc/testsuite/gcc.dg/pr122898.c
*** gcc-16-20251130/gcc/testsuite/gcc.dg/pr122898.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.dg/pr122898.c	Sun Dec  7 22:32:12 2025
***************
*** 0 ****
--- 1,56 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -fno-tree-forwprop -fno-tree-fre" } */
+ extern void o();
+ int a, b, c, d, e, f, g, h, i, k, l, m, n;
+ volatile int j;
+ static void p() {
+   if (d) {
+   q:
+     if (a) {
+       if (k) {
+         if (!(d && e))
+           goto r;
+         if (i)
+           goto q;
+         o();
+       }
+       h || j;
+     }
+   s:
+     d || j;
+     if (a)
+       goto q;
+   r:
+     if (b) {
+       if (c)
+         goto t;
+       if (b)
+         goto r;
+       if (m)
+         goto q;
+     }
+     while (j)
+       ;
+   u:
+     if (g) {
+       o();
+       goto s;
+     }
+     if (h) {
+     t:
+       if (n)
+         goto v;
+       o();
+       goto r;
+     }
+     int w = i & 1;
+   v:
+     if (w <= l)
+       if (f)
+         goto u;
+     goto q;
+   }
+   if (a)
+     goto v;
+ }
+ int main() { p(); }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.dg/pr122947.c gcc-16-20251207/gcc/testsuite/gcc.dg/pr122947.c
*** gcc-16-20251130/gcc/testsuite/gcc.dg/pr122947.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.dg/pr122947.c	Sun Dec  7 22:32:12 2025
***************
*** 0 ****
--- 1,45 ----
+ /* PR rtl-optimization/122947 based on PR 117239 */
+ /* { dg-do run } */
+ /* { dg-options "-fno-inline -O2" } */
+ /* { dg-additional-options "-fschedule-insns -mno-accumulate-outgoing-args" { target x86 } } */
+ 
+ int c = 1;
+ 
+ struct A {
+   int e, f, g, h;
+   short i;
+   int j;
+ };
+ 
+ void
+ bar (int x, struct A y)
+ {
+   if (y.j == 1)
+     c = 0;
+ }
+ 
+ /* Simplest pure way to force baz's x.j back to memory.  
+    So simple that IPA "inlines" it, so we disable IPA and mark as pure.  */
+ int __attribute__ ((noipa, pure))
+ bad (struct A const *x)
+ {
+   return x->j;
+ }
+ 
+ int
+ baz (struct A x)
+ {
+   x.j = 0;
+   return bad (&x);
+ }
+ 
+ int
+ main ()
+ {
+   struct A k = { 0, 0, 0, 0, 0, 1 };
+   int d = baz (k);
+   bar (0, k);
+   if (c + d != 0)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.dg/pr122991.c gcc-16-20251207/gcc/testsuite/gcc.dg/pr122991.c
*** gcc-16-20251130/gcc/testsuite/gcc.dg/pr122991.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.dg/pr122991.c	Sun Dec  7 22:32:12 2025
***************
*** 0 ****
--- 1,28 ----
+ /* PR target/122991 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ /* { dg-additional-options "-msse4" { target i?86-*-* x86_64-*-* } } */
+ 
+ int
+ foo ()
+ {
+   return __builtin_rev_crc32_data32 (0, 0, 0);
+ }
+ 
+ int
+ bar ()
+ {
+   return __builtin_rev_crc32_data32 (-1U, -1U, -1U);
+ }
+ 
+ int
+ baz ()
+ {
+   return __builtin_crc32_data32 (0, 0, 0);
+ }
+ 
+ int
+ qux ()
+ {
+   return __builtin_crc32_data32 (-1U, -1U, -1U);
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.dg/torture/pr113026-1.c gcc-16-20251207/gcc/testsuite/gcc.dg/torture/pr113026-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.dg/torture/pr113026-1.c	Sun Nov 30 22:32:10 2025
--- gcc-16-20251207/gcc/testsuite/gcc.dg/torture/pr113026-1.c	Sun Dec  7 22:32:12 2025
***************
*** 1,4 ****
! /* { dg-do compile } */ 
  /* { dg-additional-options "-Wall" } */
  
  char dst[16];
--- 1,6 ----
! /* { dg-do compile } */
! /* When tracing the vector epilog we diagnose an unreachable access.  */
! /* { dg-skip-if "" { *-*-* } { "-ftracer" } { "" } } */
  /* { dg-additional-options "-Wall" } */
  
  char dst[16];
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.dg/torture/pr122615.c gcc-16-20251207/gcc/testsuite/gcc.dg/torture/pr122615.c
*** gcc-16-20251130/gcc/testsuite/gcc.dg/torture/pr122615.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.dg/torture/pr122615.c	Sun Dec  7 22:32:12 2025
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do compile } */
+ /* { dg-options "-fdump-tree-original" } */
+ /* { dg-skip-if "" { *-*-* } { "-O0" } { "" } } */
+ 
+ int f1 (int x)
+ {
+   return x & 1 ? (x & ~1) : (x | 1);
+ }
+ 
+ int f2 (int x)
+ {
+   return x & 2 ? (x & ~2) : (x | 2);
+ }
+ 
+ int f3 (int x)
+ {
+   return x & 3 ? (x & ~3) : (x | 3);
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "x \\^ 1" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "x \\^ 2" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "x \\^ 3" 0 "original" } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.dg/torture/pr122616.c gcc-16-20251207/gcc/testsuite/gcc.dg/torture/pr122616.c
*** gcc-16-20251130/gcc/testsuite/gcc.dg/torture/pr122616.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.dg/torture/pr122616.c	Sun Dec  7 22:32:12 2025
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do compile } */
+ /* { dg-options "-fdump-tree-original" } */
+ /* { dg-skip-if "" { *-*-* } { "-O0" } { "" } } */
+ 
+ int f1 (int x)
+ {
+   return x & 1 ? (x - 1) : (x | 1);
+ }
+ 
+ int f2 (int x)
+ {
+   return x & 2 ? (x - 2) : (x | 2);
+ }
+ 
+ int f3 (int x)
+ {
+   return x & 3 ? (x - 3) : (x | 3);
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "x \\^ 1" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "x \\^ 2" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "x \\^ 3" 0 "original" } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.dg/torture/pr99782-1.c gcc-16-20251207/gcc/testsuite/gcc.dg/torture/pr99782-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.dg/torture/pr99782-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.dg/torture/pr99782-1.c	Sun Dec  7 22:32:12 2025
***************
*** 0 ****
--- 1,17 ----
+ /* PR middle-end/99782 */
+ /* { dg-do compile { target int128 } } */
+ /* { dg-additional-options "-mapxf" { target { { i?86-*-* x86_64-*-* } && { ! ia32 } } } } */
+ 
+ int hb;
+ 
+ void
+ w4 (__int128 uv, int ng)
+ {
+   int vh;
+ 
+   for (vh = 0; vh < 14; ++vh)
+     {
+       ++ng;
+       hb = (hb == uv) && ng;
+     }
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.dg/tree-ssa/vrp-from-cst-agg-1.c gcc-16-20251207/gcc/testsuite/gcc.dg/tree-ssa/vrp-from-cst-agg-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.dg/tree-ssa/vrp-from-cst-agg-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.dg/tree-ssa/vrp-from-cst-agg-1.c	Sun Dec  7 22:32:12 2025
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do link } */
+ /* { dg-options "-O2" } */
+ 
+ int ga = 1;
+ int gb = 2;
+ int gc = 3;
+ volatile int gi;
+ 
+ static const int *vars[3] = {&ga, &gb, &gc};
+ 
+ void link_error (void);
+ 
+ [[gnu::noinline]] void foo (int index)
+ {
+   const int *p = vars[index];
+   if (!p)
+     link_error ();
+   else
+     gi = *p;
+ }
+ 
+ [[gnu::noipa]] int
+ get_index (void)
+ {
+   return 1;
+ }
+ 
+ int main (int argc, char **argv)
+ {
+   foo (get_index ());
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.dg/tree-ssa/vrp-from-cst-agg-2.c gcc-16-20251207/gcc/testsuite/gcc.dg/tree-ssa/vrp-from-cst-agg-2.c
*** gcc-16-20251130/gcc/testsuite/gcc.dg/tree-ssa/vrp-from-cst-agg-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.dg/tree-ssa/vrp-from-cst-agg-2.c	Sun Dec  7 22:32:12 2025
***************
*** 0 ****
--- 1,57 ----
+ /* { dg-do run } */
+ /* { dg-options "-O2" } */
+ 
+ enum comp_cat_tag
+ {
+   cc_partial_ordering,
+   cc_weak_ordering,
+   cc_strong_ordering,
+   cc_last
+ };
+ 
+ struct comp_cat_info_t
+ {
+   const char *name;
+   const char *members[4];
+ };
+ 
+ static const struct comp_cat_info_t comp_cat_info[cc_last]
+ = {
+    { "partial_ordering", { "equivalent", "greater", "less", "unordered" } },
+    { "weak_ordering", { "equivalent", "greater", "less" } },
+    { "strong_ordering", { "equal", "greater", "less" } }
+ };
+ 
+ volatile const char *gp;
+ 
+ [[gnu::noipa]] static void
+ check (const char *p)
+ {
+   if (!p)
+     __builtin_abort ();
+   gp = p;
+ }
+ 
+ [[gnu::noinline]] int foo (enum comp_cat_tag tag)
+ {
+   for (int i = 0; i < 4; ++i)
+     {
+       const char *p = comp_cat_info[tag].members[i];
+       if (!p)
+ 	continue;;
+       check (p);
+     }
+   return 0;
+ }
+ 
+ [[gnu::noipa]] enum comp_cat_tag
+ get_index (void)
+ {
+   return cc_strong_ordering;
+ }
+ 
+ int main (int argc, char **argv)
+ {
+   foo (get_index ());
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.dg/tree-ssa/vrp-from-cst-agg-3.c gcc-16-20251207/gcc/testsuite/gcc.dg/tree-ssa/vrp-from-cst-agg-3.c
*** gcc-16-20251130/gcc/testsuite/gcc.dg/tree-ssa/vrp-from-cst-agg-3.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.dg/tree-ssa/vrp-from-cst-agg-3.c	Sun Dec  7 22:32:12 2025
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do link } */
+ /* { dg-options "-O2" } */
+ 
+ volatile int gi;
+ 
+ static const int values[3] = {5, 7, 11};
+ 
+ void link_error (void);
+ 
+ [[gnu::noinline]] void foo (int index)
+ {
+   const int v = values[index];
+   if (v <= 2
+       || v > 11)
+     link_error ();
+   else
+     gi = v;
+ }
+ 
+ [[gnu::noipa]] int
+ get_index (void)
+ {
+   return 1;
+ }
+ 
+ int main (int argc, char **argv)
+ {
+   foo (get_index ());
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.dg/tree-ssa/vrp-from-cst-agg-4.c gcc-16-20251207/gcc/testsuite/gcc.dg/tree-ssa/vrp-from-cst-agg-4.c
*** gcc-16-20251130/gcc/testsuite/gcc.dg/tree-ssa/vrp-from-cst-agg-4.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.dg/tree-ssa/vrp-from-cst-agg-4.c	Sun Dec  7 22:32:12 2025
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do link } */
+ /* { dg-options "-O2" } */
+ 
+ volatile int gi;
+ 
+ static const int values[25] = {5, 7, 11};
+ 
+ void link_error (void);
+ 
+ [[gnu::noinline]] void foo (int index)
+ {
+   const int v = values[index];
+   if (v <= -2
+       || v > 11)
+     link_error ();
+   else
+     gi = v;
+ }
+ 
+ [[gnu::noipa]] int
+ get_index (void)
+ {
+   return 1;
+ }
+ 
+ int main (int argc, char **argv)
+ {
+   foo (get_index ());
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.dg/tree-ssa/vrp-from-cst-agg-5.c gcc-16-20251207/gcc/testsuite/gcc.dg/tree-ssa/vrp-from-cst-agg-5.c
*** gcc-16-20251130/gcc/testsuite/gcc.dg/tree-ssa/vrp-from-cst-agg-5.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.dg/tree-ssa/vrp-from-cst-agg-5.c	Sun Dec  7 22:32:12 2025
***************
*** 0 ****
--- 1,36 ----
+ /* { dg-do link } */
+ /* { dg-options "-O2" } */
+ 
+ volatile int gi;
+ 
+ static const struct {
+     int a;
+     int b;
+ } values[2][2] = {
+   { {1000, 1 }, {1001, 2} },
+   { {1003, 1 }, {1004, 2} }
+ };
+ 
+ void link_error (void);
+ 
+ [[gnu::noinline]] void foo (int i, int j)
+ {
+   const int v = values[i][j].b;
+   if (v <= 0
+       || v > 2)
+     link_error ();
+   else
+     gi = v;
+ }
+ 
+ [[gnu::noipa]] int
+ get_index (void)
+ {
+   return 1;
+ }
+ 
+ int main (int argc, char **argv)
+ {
+   foo (get_index (), get_index ());
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.dg/tree-ssa/vrp-from-cst-agg-6.c gcc-16-20251207/gcc/testsuite/gcc.dg/tree-ssa/vrp-from-cst-agg-6.c
*** gcc-16-20251130/gcc/testsuite/gcc.dg/tree-ssa/vrp-from-cst-agg-6.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.dg/tree-ssa/vrp-from-cst-agg-6.c	Sun Dec  7 22:32:12 2025
***************
*** 0 ****
--- 1,42 ----
+ /* { dg-do run } */
+ /* { dg-options "-O2" } */
+ 
+ volatile int gi;
+ 
+ static const struct {
+     int a;
+     int b;
+ } values[2][2] = {
+   { {0, 1 }, {0, 2} },
+   { {0, 1 }, {0, 2} }
+ };
+ 
+ [[gnu::noipa]] static void
+ check (int v)
+ {
+   if (!v)
+     __builtin_abort ();
+   gi = v;
+ }
+ 
+ 
+ [[gnu::noinline]] void foo (int i, int j)
+ {
+   const int v = values[i][j].a;
+   if (v <= 0
+       || v > 2)
+     return;
+   check (v);
+ }
+ 
+ [[gnu::noipa]] int
+ get_index (void)
+ {
+   return 1;
+ }
+ 
+ int main (int argc, char **argv)
+ {
+   foo (get_index (), get_index ());
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.dg/tree-ssa/vrp-from-cst-agg-7.c gcc-16-20251207/gcc/testsuite/gcc.dg/tree-ssa/vrp-from-cst-agg-7.c
*** gcc-16-20251130/gcc/testsuite/gcc.dg/tree-ssa/vrp-from-cst-agg-7.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.dg/tree-ssa/vrp-from-cst-agg-7.c	Sun Dec  7 22:32:12 2025
***************
*** 0 ****
--- 1,36 ----
+ /* { dg-do link } */
+ /* { dg-options "-O2" } */
+ 
+ volatile int gi;
+ 
+ static const struct {
+     int a;
+     int b;
+ } values[2][2] = {
+   { {1000, 1 }, {1001, 2} },
+   { {1003, 1 }, {1004, 2} }
+ };
+ 
+ void link_error (void);
+ 
+ [[gnu::noinline]] void foo (int i)
+ {
+   const int v = values[0][i].b;
+   if (v <= 0
+       || v > 2)
+     link_error ();
+   else
+     gi = v;
+ }
+ 
+ [[gnu::noipa]] int
+ get_index (void)
+ {
+   return 1;
+ }
+ 
+ int main (int argc, char **argv)
+ {
+   foo (get_index ());
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.dg/vect/pr122969.c gcc-16-20251207/gcc/testsuite/gcc.dg/vect/pr122969.c
*** gcc-16-20251130/gcc/testsuite/gcc.dg/vect/pr122969.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.dg/vect/pr122969.c	Sun Dec  7 22:32:12 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-add-options vect_early_break } */
+ /* { dg-require-effective-target vect_early_break } */
+ /* { dg-require-effective-target vect_int } */
+ /* { dg-additional-options "-w -O3 -fno-tree-dominator-opts -fno-code-hoisting -fno-tree-pre -fno-tree-dce" } */
+ 
+ /* { dg-final { scan-tree-dump "loop vectorized" "vect" } } */
+ 
+ int a, b;
+ int main() {
+   while (a)
+     for (a = 0; a != 1; a--)
+       if (b)
+         break;
+   return 0;
+ }
+ 
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_1.c gcc-16-20251207/gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_1.c
*** gcc-16-20251130/gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_1.c	Sun Dec  7 22:32:12 2025
***************
*** 0 ****
--- 1,39 ----
+ /* { dg-add-options vect_early_break } */
+ /* { dg-require-effective-target vect_sizes_16B_8B } */
+ /* { dg-require-effective-target vect_early_break_hw } */
+ /* { dg-require-effective-target vect_int } */
+ 
+ /* { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" } } */
+ 
+ #include "tree-vect.h"
+ 
+ __attribute__ ((noipa))
+ int f (int a[12], int b[12], int n)
+ {
+ #ifdef __arm__
+     a = __builtin_assume_aligned (a, 8);
+     b = __builtin_assume_aligned (b, 8);
+ #else
+     a = __builtin_assume_aligned (a, 16);
+     b = __builtin_assume_aligned (b, 16);
+ #endif
+     for (int i = 0; i < n; i++)
+       {
+         if (b[i] == 0)
+           return 0;
+         if (a[0] > b[i])
+           return 1;
+       }
+     return 2;
+ }
+ 
+ int main ()
+ {
+    check_vect ();
+ 
+    int *a = 0;
+    int b[12] = {0};
+    return f (a, b, 10);
+ }
+ 
+ /* { dg-final { scan-tree-dump "not hoisting invariant load due to early break" "vect" } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_2.c gcc-16-20251207/gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_2.c
*** gcc-16-20251130/gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_2.c	Sun Dec  7 22:32:12 2025
***************
*** 0 ****
--- 1,31 ----
+ /* { dg-add-options vect_early_break } */
+ /* { dg-require-effective-target vect_early_break_hw } */
+ /* { dg-require-effective-target vect_int } */
+ 
+ /* { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" } } */
+ 
+ #include "tree-vect.h"
+ 
+ __attribute__ ((noipa))
+ int f (int a[12], int b[12], int n)
+ {
+     for (int i = 0; i < n; i++)
+       {
+         if (b[i] == 0)
+           return 0;
+         if (a[0] > b[i])
+           return 1;
+       }
+     return 2;
+ }
+ 
+ int main ()
+ {
+    check_vect ();
+ 
+    int *a = 0;
+    int b[12] = {0};
+    return f (a, b, 10);
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "not hoisting invariant load due to early break" 0 "vect" { xfail *-*-* } } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_3.c gcc-16-20251207/gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_3.c
*** gcc-16-20251130/gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_3.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_3.c	Sun Dec  7 22:32:12 2025
***************
*** 0 ****
--- 1,39 ----
+ /* { dg-add-options vect_early_break } */
+ /* { dg-require-effective-target vect_sizes_16B_8B } */
+ /* { dg-require-effective-target vect_early_break_hw } */
+ /* { dg-require-effective-target vect_int } */
+ 
+ /* { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" } } */
+ 
+ #include "tree-vect.h"
+ 
+ __attribute__ ((noipa))
+ int f (int a[12], int b[12], int n)
+ {
+ #ifdef __arm__
+     a = __builtin_assume_aligned (a, 8);
+     b = __builtin_assume_aligned (b, 8);
+ #else
+     a = __builtin_assume_aligned (a, 16);
+     b = __builtin_assume_aligned (b, 16);
+ #endif
+     for (int i = 0; i < n; i++)
+       {
+         if (a[0] > b[i])
+           return 0;
+         if (b[i] == 0)
+           return 1;
+       }
+     return 2;
+ }
+ 
+ int main ()
+ {
+    check_vect ();
+ 
+    int a[12] = {1};
+    int b[12] = {0};
+    return f (a, b, 10);
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "not hoisting invariant load due to early break" 0 "vect" } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_4.c gcc-16-20251207/gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_4.c
*** gcc-16-20251130/gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_4.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.dg/vect/vect-early-break_140-pr122868_4.c	Sun Dec  7 22:32:12 2025
***************
*** 0 ****
--- 1,31 ----
+ /* { dg-add-options vect_early_break } */
+ /* { dg-require-effective-target vect_early_break_hw } */
+ /* { dg-require-effective-target vect_int } */
+ 
+ /* { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" } } */
+ 
+ #include "tree-vect.h"
+ 
+ __attribute__ ((noipa))
+ int f (int a[12], int b[12], int n)
+ {
+     for (int i = 0; i < n; i++)
+       {
+         if (a[0] > b[i])
+           return 0;
+         if (b[i] == 0)
+           return 0;
+       }
+     return 2;
+ }
+ 
+ int main ()
+ {
+    check_vect ();
+ 
+    int a[12] = {1};
+    int b[12] = {0};
+    return f (a, b, 10);
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "not hoisting invariant load due to early break" 0 "vect" } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.dg/vect/vect-pr123002.c gcc-16-20251207/gcc/testsuite/gcc.dg/vect/vect-pr123002.c
*** gcc-16-20251130/gcc/testsuite/gcc.dg/vect/vect-pr123002.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.dg/vect/vect-pr123002.c	Sun Dec  7 22:32:12 2025
***************
*** 0 ****
--- 1,39 ----
+ /* { dg-additional-options "-mavx2" { target avx2 } } */
+ 
+ #include "tree-vect.h"
+ 
+ unsigned int enc_table_32[8][3] = {
+     {513735U, 77223048U, 437087610U },
+     {0U,      78508U,    646269101U },
+     {0U,      0U,        11997U,    },
+     {0U,      0U,        0U,        },
+     {0U,      0U,        0U,        },
+     {0U,      0U,        0U,        },
+     {0U,      0U,        0U,        },
+     {0U,      0U,        0U,        }};
+ 
+ int __attribute__((noipa)) foo()
+ {
+   unsigned long intermediate[3] = {0};
+ 
+   for (unsigned long i = 0UL; i < 8; i++) {
+       intermediate[0] += 2 * (unsigned long)(enc_table_32)[i][0];
+       intermediate[1] += 2 * (unsigned long)(enc_table_32)[i][1];
+       intermediate[2] += 2 * (unsigned long)(enc_table_32)[i][2];
+   }
+ 
+   if (intermediate[0] == 0xfad8e &&
+       intermediate[1] == 0x9370e68 && intermediate[2] == 0x8125ca08) {
+       return 0;
+   } else {
+       return 1;
+   }
+ }
+ 
+ int main()
+ {
+   check_vect ();
+   if (foo ())
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.dg/vect/vect-simd-clone-24.c gcc-16-20251207/gcc/testsuite/gcc.dg/vect/vect-simd-clone-24.c
*** gcc-16-20251130/gcc/testsuite/gcc.dg/vect/vect-simd-clone-24.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.dg/vect/vect-simd-clone-24.c	Sun Dec  7 22:32:12 2025
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do compile } */
+ /* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
+ /* { dg-require-effective-target vect_simd_clones } */
+ /* { dg-additional-options "-fopenmp-simd --param vect-partial-vector-usage=1 -fdump-tree-dce6 -w" } */
+ /* { dg-additional-options "-mavx512f -mprefer-vector-width=512" { target avx512f } } */
+ 
+ #pragma omp declare simd simdlen(16)
+ int __attribute__((const)) baz (int x);
+ 
+ int a[1024];
+ 
+ void foo (int n, int * __restrict b)
+ {
+   for (int i = 0; i < n; ++i)
+     if (baz (a[i]))
+       b[i] = baz (b[i]);
+ }
+ 
+ /* One notinbranch SIMD call, one inbranch in the main vector loop and two
+    inbranch in the masked epilog.  */
+ /* { dg-final { scan-tree-dump-times "simdclone\.\[0-9\] \\\(\[^,\]\+\\\)" 1 "dce6" { target avx512f } } } */
+ /* { dg-final { scan-tree-dump-times "simdclone\.\[0-9\] \\\(\[^,\]\+,\[^,\]\+\\\)" 3 "dce6" { target avx512f } } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/aarch64/mingw/long_double_size.c gcc-16-20251207/gcc/testsuite/gcc.target/aarch64/mingw/long_double_size.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/aarch64/mingw/long_double_size.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.target/aarch64/mingw/long_double_size.c	Sun Dec  7 22:32:13 2025
***************
*** 0 ****
--- 1,23 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-O2" } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ /**
+  * For aarch64-w64-mingw32 target, long double is 64 bits. Unlike in
+  * aarch64-linux-gnu, where long double is 128 bits. The tests below validate
+  * validate that. In aarch64-linux-gnu, the results would be the opposite.
+  */
+ 
+ /*
+ ** test:
+ **	fmov	d0, 4.0e\+0
+ **	ret
+ */
+ long double
+ test ()
+ {
+   long double i = 4;
+   return i;
+ }
+ 
+ /* { dg-final { scan-assembler-not "ldr\tq\[0-9\]+, \[x\[0-9\]+\]*" } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/aarch64/mingw/mingw.exp gcc-16-20251207/gcc/testsuite/gcc.target/aarch64/mingw/mingw.exp
*** gcc-16-20251130/gcc/testsuite/gcc.target/aarch64/mingw/mingw.exp	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.target/aarch64/mingw/mingw.exp	Sun Dec  7 22:32:13 2025
***************
*** 0 ****
--- 1,41 ----
+ # Copyright (C) 2025 Free Software Foundation, Inc.
+ 
+ # This program 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 of the License, or
+ # (at your option) any later version.
+ #
+ # This program is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ # GNU General Public License for more details.
+ #
+ # You should have received a copy of the GNU General Public License
+ # along with GCC; see the file COPYING3.  If not see
+ # <http://www.gnu.org/licenses/>.
+ 
+ # GCC testsuite that uses the `dg.exp' driver.
+ 
+ # Exit immediately if this isn't an AArch64-Mingw target.
+ if {![istarget aarch64*-*-mingw32] } then {
+     return
+ }
+ 
+ # Load support procs.
+ load_lib gcc-dg.exp
+ 
+ # If a testcase doesn't have special options, use these.
+ global DEFAULT_CFLAGS
+ if ![info exists DEFAULT_CFLAGS] then {
+     set DEFAULT_CFLAGS " -ansi -pedantic-errors"
+ }
+ 
+ # Initialize `dg'.
+ dg-init
+ 
+ # Main loop.
+ dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cCS\]]] \
+ 	"" $DEFAULT_CFLAGS
+ 
+ # All done.
+ dg-finish
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/aarch64/mingw/variadic_hfa.c gcc-16-20251207/gcc/testsuite/gcc.target/aarch64/mingw/variadic_hfa.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/aarch64/mingw/variadic_hfa.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.target/aarch64/mingw/variadic_hfa.c	Sun Dec  7 22:32:13 2025
***************
*** 0 ****
--- 1,71 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-std=c99" } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ #include <stdarg.h>
+ 
+ typedef struct {
+   double x;
+   double y;
+ } point2d;
+ 
+ point2d accumulate(int count, ...) {
+     int i;
+     va_list ap;
+     va_start(ap, count);
+ 
+     point2d acc = {0.0, 0.0};
+     for (i = 0; i < count; ++i) {
+         point2d v = va_arg(ap, point2d);
+         acc.x += v.x;
+         acc.y += v.y;
+     }
+ 
+     va_end(ap);
+     return acc;
+ }
+ 
+ /**
+  * For aarch64-w64-mingw32 target, the Homogeneous Floating-point Aggregate
+  * (HFA) types are not treated specially.
+  *
+  * This is in contrast to to aarch64-linux-gnu target where double float args
+  * would be loaded into 64 bit D registers.
+  */
+ 
+ /*
+ ** main:
+ **	...
+ **	fmov	d\d+, 2.0e\+0
+ **	str	d\d+, \[sp, \d+\]
+ **	fmov	d\d+, 1.0e\+0
+ **	str	d\d+, \[sp, \d+\]
+ **	fmov	d\d+, 4.0e\+0
+ **	str	d\d+, \[sp, \d+\]
+ **	fmov	d\d+, 3.0e\+0
+ **	str	d\d+, \[sp, \d+\]
+ **	fmov	d\d+, 6.0e\+0
+ **	str	d\d+, \[sp, \d+\]
+ **	fmov	d\d+, 5.0e\+0
+ **	str	d\d+, \[sp, \d+\]
+ **	fmov	d\d+, 8.0e\+0
+ **	str	d\d+, \[sp, \d+\]
+ **	fmov	d\d+, 7.0e\+0
+ **	str	d\d+, \[sp, \d+\]
+ **	ldp	x\d+, x\d+, \[sp, \d+\]
+ **	ldp	x\d+, x\d+, \[sp, \d+\]
+ **	ldp	x\d+, x\d+, \[sp, \d+\]
+ **	ldp	x\d+, x\d+, \[sp, \d+\]
+ **  ...
+ */
+ int main()
+ {
+   point2d p1 = {2.0, 1.0};
+   point2d p2 = {4.0, 3.0};
+   point2d p3 = {6.0, 5.0};
+   point2d p4 = {8.0, 7.0};
+ 
+   accumulate (4, p1, p2, p3, p4);
+ 
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/aarch64/mingw/variadic_hva.c gcc-16-20251207/gcc/testsuite/gcc.target/aarch64/mingw/variadic_hva.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/aarch64/mingw/variadic_hva.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.target/aarch64/mingw/variadic_hva.c	Sun Dec  7 22:32:13 2025
***************
*** 0 ****
--- 1,89 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-std=c99" } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ #include <arm_neon.h>
+ #include <stdarg.h>
+ 
+ typedef struct {
+   float32x4_t a;
+   float32x4_t b;
+   float32x4_t c;
+   float32x4_t d;
+ } mat4x4;
+ 
+ mat4x4 accumulate(int count, ...) {
+     va_list va;
+     va_start(va, count);
+ 
+     mat4x4 result = {
+       vdupq_n_f32(0.0f),
+       vdupq_n_f32(0.0f),
+       vdupq_n_f32(0.0f),
+       vdupq_n_f32(0.0f)
+     };
+ 
+     for (int i = 0; i < count; ++i) {
+         mat4x4 v = va_arg(va, mat4x4);
+         result.a = vaddq_f32(result.a, v.a);
+         result.b = vaddq_f32(result.b, v.b);
+         result.c = vaddq_f32(result.c, v.c);
+         result.d = vaddq_f32(result.d, v.d);
+     }
+ 
+     va_end(va);
+     return result;
+ }
+ 
+ 
+ /**
+  * For aarch64-w64-mingw32 target, the Homogeneous Vector Aggregate (HVA) types
+  * are not treated specially.
+  *
+  * This is in contrast to to aarch64-linux-gnu target where float32x4n args
+  * would be loaded into 128 bit Q registers.
+  */
+ 
+ 
+ /*
+ ** main:
+ **	...
+ ** 	ldr	q\d+, \[x\d+, #:lo\d+:\.LC\d+\]
+ ** 	str	q\d+, \[sp, \d+\]
+ **	...
+ ** 	ldr	q\d+, \[x\d+, #:lo\d+:\.LC\d+\]
+ ** 	str	q\d+, \[sp, \d+\]
+ **	...
+ ** 	ldr	q\d+, \[x\d+, #:lo\d+:\.LC\d+\]
+ ** 	str	q\d+, \[sp, \d+\]
+ **	...
+ ** 	ldr	q\d+, \[x\d+, #:lo\d+:\.LC\d+\]
+ ** 	str	q\d+, \[sp, \d+\]
+ **  ...
+ ** 	ldr	x\d+, \[sp, \d+\]
+ **  ...
+ ** 	ldr	x\d+, \[sp, \d+\]
+ **  ...
+ ** 	ldr	x\d+, \[sp, \d+\]
+ **  ...
+ ** 	ldr	x\d+, \[sp, \d+\]
+ **  ...
+ ** 	ldr	x\d+, \[sp, \d+\]
+ **  ...
+ ** 	ldr	x\d+, \[sp, \d+\]
+ **  ...
+ ** 	ldr	x\d+, \[sp, \d+\]
+ **  ...
+ ** 	ldr	x\d+, \[sp, \d+\]
+ **  ...
+ */
+ int main()
+ {
+   float32x4_t x = {1.0, 2.0, 3.0, 4.0};
+   float32x4_t y = {2.0, 3.0, 4.0, 5.0};
+   float32x4_t z = {3.0, 4.0, 5.0, 6.0};
+   float32x4_t w = {4.0, 5.0, 6.0, 7.0};
+ 
+   accumulate (4, x, y, z, w);
+   return 0;
+ }
\ No newline at end of file
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/aarch64/mingw/variadic_int.c gcc-16-20251207/gcc/testsuite/gcc.target/aarch64/mingw/variadic_int.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/aarch64/mingw/variadic_int.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.target/aarch64/mingw/variadic_int.c	Sun Dec  7 22:32:13 2025
***************
*** 0 ****
--- 1,41 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-std=c99" } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ #include <stdarg.h>
+ 
+ /*
+ ** sum:
+ **	...
+ **	str	w0, \[sp, \d+\]
+ **	str	x1, \[sp, \d+\]
+ **	str	x2, \[sp, \d+\]
+ **	str	x3, \[sp, \d+\]
+ **	str	x4, \[sp, \d+\]
+ **	str	x5, \[sp, \d+\]
+ **	str	x6, \[sp, \d+\]
+ **	str	x7, \[sp, \d+\]
+ **	add	x0, sp, \d+
+ **	sub	x0, x0, #\d+
+ **	str	x0, \[sp, \d+\]
+ **	str	wzr, \[sp, \d+\]
+ **	str	wzr, \[sp, \d+\]
+ **	...
+ */
+ int sum(int count, ...) {
+     va_list args;
+ 
+     va_start(args, count);
+ 
+     int total = 0;
+     for (int i = 0; i < count; i++)
+       {
+         total += va_arg(args, int);
+       }
+ 
+     va_end(args);
+ 
+     return total;
+ }
+ 
+ /* { dg-final { scan-assembler-not "str\tq\[0-9\]+, \[sp, \[0-9\]+\]*" } } */
\ No newline at end of file
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/aarch64/pr122675-1.c gcc-16-20251207/gcc/testsuite/gcc.target/aarch64/pr122675-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/aarch64/pr122675-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.target/aarch64/pr122675-1.c	Sun Dec  7 22:32:13 2025
***************
*** 0 ****
--- 1,31 ----
+ /* Verify that the most likely BB edges are optimized as fallthroughs.  */
+ /* { dg-do compile } */
+ /* { dg-options "-O1 -fno-pic -mtune=generic -march=armv8-a" } */
+ /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
+ /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
+ 
+ /*
+ **test:
+ **.LFB[0-9]+:
+ **	.cfi_startproc
+ **...
+ **	cbz	w0, .L[0-9]*
+ **...
+ **	bl	f1
+ **...
+ **	ret
+ **.L[0-9]+:
+ **...
+ **	ret
+ **...
+ */
+ 
+ int f1(void);
+ 
+ int test(int a)
+ {
+   if (__builtin_expect(!!a, 1)) {
+     return f1();
+   }
+   return a;
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/arm/mve/pr122858.c gcc-16-20251207/gcc/testsuite/gcc.target/arm/mve/pr122858.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/arm/mve/pr122858.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.target/arm/mve/pr122858.c	Sun Dec  7 22:32:13 2025
***************
*** 0 ****
--- 1,83 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target arm_mve_hw } */
+ /* { dg-options "-O2" } */
+ /* { dg-add-options arm_v8_1m_mve } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ extern void abort (void);
+ 
+ /*
+ ** ashrl_fn:
+ **...
+ **	asrl	r[0-9]+, r[0-9]+, #31
+ **...
+ */
+ __attribute__ ((noipa))
+ long long ashrl_fn (long long a)
+ {
+   long long c;
+ 
+   c = a >> 31;
+   c += a;
+   return c;
+ }
+ 
+ /*
+ ** ashll_fn:
+ **...
+ **	add	(r[0-9]+), \1, r[0-9]+, lsl #2
+ **...
+ */
+ __attribute__ ((noipa))
+ long long ashll_fn (long long a)
+ {
+   long long c;
+ 
+   /* Use 34, since 33 causes PR122871.  */
+   c = a << 34;
+   c += a;
+   return c;
+ }
+ 
+ /*
+ ** ashll_fn2:
+ **...
+ **	lsll	r[0-9]+, r[0-9]+, #7
+ **...
+ */
+ __attribute__ ((noipa))
+ long long ashll_fn2 (long long a /* unused */, long long x)
+ {
+   return x << 7;
+ }
+ 
+ /*
+ ** ashll_fn3:
+ **...
+ **	lsls	r[0-9]+, (r[0-9]+), #2
+ **	movs	\1, #0
+ **...
+ */
+ __attribute__ ((noipa))
+ long long ashll_fn3 (long long x)
+ {
+   return x << 34;
+ }
+ 
+ int main(void)
+ {
+   long long var1 = 1;
+   long long var2 = ashll_fn (var1);
+   if (var2 != 0x400000001)
+     abort ();
+ 
+   var2 = ashrl_fn (var2);
+   if (var2 != 0x400000009)
+     abort ();
+ 
+   var2 = ashll_fn2 (var2, 0xa987654350000002LL);
+   if (var2 != 0xc3b2a1a800000100LL)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/20040112-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/20040112-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/20040112-1.c	Sun Nov 30 22:32:11 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/20040112-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
! /* { dg-options "-O2" } */
! /* { dg-final { scan-assembler "testb" } } */
  void
  ftn (char *sp)
  {
--- 1,21 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fomit-frame-pointer" } */
! /* { dg-additional-options "-mregparm=1" { target ia32 } } */
! /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
! /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
! 
! /*
! **ftn:
! **...
! **.L[0-9]+:
! **	movb	\$-24, \(%(e|r)(di|ax)\)
! **	cmpb	\$0, \(%(e|r)(di|ax)\)
! **	jns	.L[0-9]+
! **	ret
! **	.cfi_endproc
! **...
! */
! 
  void
  ftn (char *sp)
  {
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx-ne-convert-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx-ne-convert-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx-ne-convert-1.c	Sun Nov 30 22:32:11 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx-ne-convert-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavxneconvert -O2" } */
  /* { dg-final { scan-assembler-times "vbcstnebf162ps\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vbcstnebf162ps\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vbcstnesh2ps\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavxneconvert -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vbcstnebf162ps\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vbcstnebf162ps\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vbcstnesh2ps\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx10_2-bf16-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx10_2-bf16-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx10_2-bf16-1.c	Sun Nov 30 22:32:11 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx10_2-bf16-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-march=x86-64-v3 -mavx10.2 -O2" } */
  /* { dg-final { scan-assembler-times "vaddbf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vaddbf16\[ \\t\]+%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vaddbf16\[ \\t\]+%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-march=x86-64-v3 -mavx10.2 -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vaddbf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vaddbf16\[ \\t\]+%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vaddbf16\[ \\t\]+%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx10_2-convert-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx10_2-convert-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx10_2-convert-1.c	Sun Nov 30 22:32:11 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx10_2-convert-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-march=x86-64-v3 -mavx10.2 -O2" } */
  /* { dg-final { scan-assembler-times "vcvt2ps2phx\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvt2ps2phx\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvt2ps2phx\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-march=x86-64-v3 -mavx10.2 -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvt2ps2phx\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvt2ps2phx\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvt2ps2phx\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx10_2-satcvt-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx10_2-satcvt-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx10_2-satcvt-1.c	Sun Nov 30 22:32:11 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx10_2-satcvt-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -march=x86-64-v3 -mavx10.2" } */
  /* { dg-final { scan-assembler-times "vcvtph2ibs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2  }  } */
  /* { dg-final { scan-assembler-times "vcvtph2ibs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1  }  } */
  /* { dg-final { scan-assembler-times "vcvtph2ibs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1  }  } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fno-fuse-ops-with-volatile-access -march=x86-64-v3 -mavx10.2" } */
  /* { dg-final { scan-assembler-times "vcvtph2ibs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2  }  } */
  /* { dg-final { scan-assembler-times "vcvtph2ibs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1  }  } */
  /* { dg-final { scan-assembler-times "vcvtph2ibs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1  }  } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512bf16-vcvtneps2bf16-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512bf16-vcvtneps2bf16-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512bf16-vcvtneps2bf16-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512bf16-vcvtneps2bf16-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512bf16 -O2" } */
  /* { dg-final { scan-assembler-times "vcvtneps2bf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtneps2bf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vcvtneps2bf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512bf16 -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvtneps2bf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtneps2bf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vcvtneps2bf16\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512bf16vl-vcvtneps2bf16-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512bf16vl-vcvtneps2bf16-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512bf16vl-vcvtneps2bf16-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512bf16vl-vcvtneps2bf16-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512bf16 -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vcvtneps2bf16y\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtneps2bf16y\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtneps2bf16y\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512bf16 -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvtneps2bf16y\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtneps2bf16y\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtneps2bf16y\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512bf16vl-vcvtneps2bf16-1b.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512bf16vl-vcvtneps2bf16-1b.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512bf16vl-vcvtneps2bf16-1b.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512bf16vl-vcvtneps2bf16-1b.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512bf16 -mavx512vl -mavxneconvert -O2" } */
  /* { dg-final { scan-assembler-times "\{vex\} vcvtneps2bf16y\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtneps2bf16y\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtneps2bf16y\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512bf16 -mavx512vl -mavxneconvert -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "\{vex\} vcvtneps2bf16y\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtneps2bf16y\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtneps2bf16y\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512bitalg-vpshufbitqmb.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512bitalg-vpshufbitqmb.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512bitalg-vpshufbitqmb.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512bitalg-vpshufbitqmb.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512bitalg -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vpshufbitqmb\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpshufbitqmb\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpshufbitqmb\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512bitalg -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vpshufbitqmb\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpshufbitqmb\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpshufbitqmb\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512bw-vpcmpb-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512bw-vpcmpb-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512bw-vpcmpb-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512bw-vpcmpb-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mavx512bw -mavx512vl" } */
  /* { dg-final { scan-assembler-times "vpcmpb\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpb\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpb\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fno-fuse-ops-with-volatile-access -mavx512bw -mavx512vl" } */
  /* { dg-final { scan-assembler-times "vpcmpb\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpb\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpb\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512bw-vpcmpub-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512bw-vpcmpub-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512bw-vpcmpub-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512bw-vpcmpub-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mavx512bw -mavx512vl" } */
  /* { dg-final { scan-assembler-times "(?:vpcmpub|vpcmpeqb)\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpub\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpub\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fno-fuse-ops-with-volatile-access -mavx512bw -mavx512vl" } */
  /* { dg-final { scan-assembler-times "(?:vpcmpub|vpcmpeqb)\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpub\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpub\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512bw-vpcmpuw-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512bw-vpcmpuw-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512bw-vpcmpuw-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512bw-vpcmpuw-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mavx512bw -mavx512vl" } */
  /* { dg-final { scan-assembler-times "vpcmpuw\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpuw\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpuw\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fno-fuse-ops-with-volatile-access -mavx512bw -mavx512vl" } */
  /* { dg-final { scan-assembler-times "vpcmpuw\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpuw\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpuw\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512bw-vpcmpw-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512bw-vpcmpw-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512bw-vpcmpw-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512bw-vpcmpw-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mavx512bw -mavx512vl" } */
  /* { dg-final { scan-assembler-times "vpcmpw\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpw\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpw\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fno-fuse-ops-with-volatile-access -mavx512bw -mavx512vl" } */
  /* { dg-final { scan-assembler-times "vpcmpw\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpw\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpw\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512dq-vcvtps2qq-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512dq-vcvtps2qq-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512dq-vcvtps2qq-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512dq-vcvtps2qq-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512dq -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vcvtps2qq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtps2qq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtps2qq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512dq -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvtps2qq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtps2qq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtps2qq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512dq-vcvtps2uqq-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512dq-vcvtps2uqq-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512dq-vcvtps2uqq-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512dq-vcvtps2uqq-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512dq -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vcvtps2uqq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtps2uqq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtps2uqq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512dq -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvtps2uqq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtps2uqq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtps2uqq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512dq-vcvtqq2pd-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512dq-vcvtqq2pd-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512dq-vcvtqq2pd-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512dq-vcvtqq2pd-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512dq -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vcvtqq2pd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtqq2pd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtqq2pd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512dq -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvtqq2pd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtqq2pd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtqq2pd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512dq-vcvtqq2ps-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512dq-vcvtqq2ps-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512dq-vcvtqq2ps-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512dq-vcvtqq2ps-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512dq -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vcvtqq2psx\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtqq2psx\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtqq2psx\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512dq -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvtqq2psx\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtqq2psx\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtqq2psx\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512dq-vcvttps2qq-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512dq-vcvttps2qq-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512dq-vcvttps2qq-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512dq-vcvttps2qq-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512dq -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vcvttps2qq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttps2qq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttps2qq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512dq -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvttps2qq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttps2qq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttps2qq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512dq-vcvttps2uqq-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512dq-vcvttps2uqq-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512dq-vcvttps2uqq-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512dq-vcvttps2uqq-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512dq -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vcvttps2uqq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttps2uqq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttps2uqq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512dq -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvttps2uqq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttps2uqq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttps2uqq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512dq-vcvtuqq2pd-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512dq-vcvtuqq2pd-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512dq-vcvtuqq2pd-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512dq-vcvtuqq2pd-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512dq -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vcvtuqq2pd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtuqq2pd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtuqq2pd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512dq -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvtuqq2pd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtuqq2pd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtuqq2pd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512dq-vcvtuqq2ps-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512dq-vcvtuqq2ps-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512dq-vcvtuqq2ps-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512dq-vcvtuqq2ps-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512dq -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vcvtuqq2psx\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtuqq2psx\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtuqq2psx\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512dq -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvtuqq2psx\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtuqq2psx\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtuqq2psx\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512dq-vextractf32x8-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512dq-vextractf32x8-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512dq-vextractf32x8-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512dq-vextractf32x8-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512dq -O2" } */
  /* { dg-final { scan-assembler-times "vextractf32x8\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)"  1 } } */
  /* { dg-final { scan-assembler-times "vextractf32x8\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vextractf32x8\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512dq -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vextractf32x8\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)"  1 } } */
  /* { dg-final { scan-assembler-times "vextractf32x8\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vextractf32x8\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512dq-vextractf64x2-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512dq-vextractf64x2-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512dq-vextractf64x2-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512dq-vextractf64x2-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512dq -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vextractf64x2\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+.{7}(?:\n|\[ \\t\]+#)"  1 } } */
  /* { dg-final { scan-assembler-times "vextractf64x2\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+.{7}\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)"  1 } } */
  /* { dg-final { scan-assembler-times "vextractf64x2\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+.{7}\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)"  1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512dq -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vextractf64x2\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+.{7}(?:\n|\[ \\t\]+#)"  1 } } */
  /* { dg-final { scan-assembler-times "vextractf64x2\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+.{7}\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)"  1 } } */
  /* { dg-final { scan-assembler-times "vextractf64x2\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+.{7}\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)"  1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512dq-vextracti64x2-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512dq-vextracti64x2-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512dq-vextracti64x2-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512dq-vextracti64x2-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512dq -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vextracti64x2\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+.{7}(?:\n|\[ \\t\]+#)"  1 } } */
  /* { dg-final { scan-assembler-times "vextracti64x2\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+.{7}\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)"  1 } } */
  /* { dg-final { scan-assembler-times "vextracti64x2\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+.{7}\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)"  1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512dq -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vextracti64x2\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+.{7}(?:\n|\[ \\t\]+#)"  1 } } */
  /* { dg-final { scan-assembler-times "vextracti64x2\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+.{7}\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)"  1 } } */
  /* { dg-final { scan-assembler-times "vextracti64x2\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+.{7}\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)"  1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512dq-vfpclasspd-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512dq-vfpclasspd-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512dq-vfpclasspd-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512dq-vfpclasspd-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512dq -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vfpclasspdz\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vfpclasspdy\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vfpclasspdx\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512dq -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vfpclasspdz\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vfpclasspdy\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vfpclasspdx\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512dq-vfpclassps-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512dq-vfpclassps-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512dq-vfpclassps-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512dq-vfpclassps-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512dq -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vfpclasspsz\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vfpclasspsy\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vfpclasspsx\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512dq -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vfpclasspsz\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vfpclasspsy\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vfpclasspsx\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512dq-vfpclasssd-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512dq-vfpclasssd-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512dq-vfpclasssd-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512dq-vfpclasssd-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512dq -O2" } */
  /* { dg-final { scan-assembler-times "vfpclasssd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vfpclasssd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512dq -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vfpclasssd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vfpclasssd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512dq-vfpclassss-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512dq-vfpclassss-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512dq-vfpclassss-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512dq-vfpclassss-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512dq -O2" } */
  /* { dg-final { scan-assembler-times "vfpclassss\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vfpclassss\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512dq -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vfpclassss\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vfpclassss\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512dq-vpmullq-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512dq-vpmullq-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512dq-vpmullq-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512dq-vpmullq-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512dq -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vpmullq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)"  1 } } */
  /* { dg-final { scan-assembler-times "vpmullq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpmullq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512dq -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vpmullq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)"  1 } } */
  /* { dg-final { scan-assembler-times "vpmullq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpmullq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512dq-vpmullq-3.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512dq-vpmullq-3.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512dq-vpmullq-3.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512dq-vpmullq-3.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512dq -O2" } */
  /* { dg-final { scan-assembler-times "vpmullq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*%zmm\[0-9\]+\[^\n\]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)"  1 } } */
  /* { dg-final { scan-assembler-times "vpmullq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*%zmm\[0-9\]+\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512dq -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vpmullq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*%zmm\[0-9\]+\[^\n\]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)"  1 } } */
  /* { dg-final { scan-assembler-times "vpmullq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*%zmm\[0-9\]+\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-pr100267-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-pr100267-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-pr100267-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-pr100267-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2" } */
  /* { dg-final { scan-assembler-times "vpexpandd\[ \\t\]+\[^\{\n\]*\\(\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)"  1 } } */
  /* { dg-final { scan-assembler-times "vpexpandd\[ \\t\]+\[^\{\n\(]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)"  1 } } */
  /* { dg-final { scan-assembler-times "vpexpandq\[ \\t\]+\[^\{\n\]*\\(\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)"  1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vpexpandd\[ \\t\]+\[^\{\n\]*\\(\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)"  1 } } */
  /* { dg-final { scan-assembler-times "vpexpandd\[ \\t\]+\[^\{\n\(]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)"  1 } } */
  /* { dg-final { scan-assembler-times "vpexpandq\[ \\t\]+\[^\{\n\]*\\(\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)"  1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcmppd-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcmppd-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcmppd-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcmppd-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mavx512f" } */
  /* { dg-final { scan-assembler-times "vcmppd\[ \\t\]+\[^\{\n\]*\[^\}\]%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 9 } } */
  /* { dg-final { scan-assembler-times "vcmppd\[ \\t\]+\[^\{\n\]*\[^\}\]%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 9 } } */
  /* { dg-final { scan-assembler-times "vcmppd\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fno-fuse-ops-with-volatile-access -mavx512f" } */
  /* { dg-final { scan-assembler-times "vcmppd\[ \\t\]+\[^\{\n\]*\[^\}\]%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 9 } } */
  /* { dg-final { scan-assembler-times "vcmppd\[ \\t\]+\[^\{\n\]*\[^\}\]%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 9 } } */
  /* { dg-final { scan-assembler-times "vcmppd\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcmpps-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcmpps-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcmpps-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcmpps-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mavx512f" } */
  /* { dg-final { scan-assembler-times "vcmpps\[ \\t\]+\[^\{\n\]*\[^\}\]%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 9 } } */
  /* { dg-final { scan-assembler-times "vcmpps\[ \\t\]+\[^\{\n\]*\[^\}\]%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 9 } } */
  /* { dg-final { scan-assembler-times "vcmpps\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fno-fuse-ops-with-volatile-access -mavx512f" } */
  /* { dg-final { scan-assembler-times "vcmpps\[ \\t\]+\[^\{\n\]*\[^\}\]%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 9 } } */
  /* { dg-final { scan-assembler-times "vcmpps\[ \\t\]+\[^\{\n\]*\[^\}\]%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 9 } } */
  /* { dg-final { scan-assembler-times "vcmpps\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcvtps2pd-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcvtps2pd-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcvtps2pd-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcvtps2pd-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2" } */
  /* { dg-final { scan-assembler-times "vcvtps2pd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)"  1 } } */
  /* { dg-final { scan-assembler-times "vcvtps2pd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)"  1 } } */
  /* { dg-final { scan-assembler-times "vcvtps2pd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)"  1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvtps2pd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)"  1 } } */
  /* { dg-final { scan-assembler-times "vcvtps2pd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)"  1 } } */
  /* { dg-final { scan-assembler-times "vcvtps2pd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)"  1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2si-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2si-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2si-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2si-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mavx512f" } */
  /* { dg-final { scan-assembler-times "vcvtsd2sil?\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtsd2sil?\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  #include <immintrin.h>
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fno-fuse-ops-with-volatile-access -mavx512f" } */
  /* { dg-final { scan-assembler-times "vcvtsd2sil?\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtsd2sil?\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  #include <immintrin.h>
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2si64-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2si64-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2si64-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2si64-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O2 -mavx512f" } */
  /* { dg-final { scan-assembler-times "vcvtsd2siq\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtsd2siq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  
--- 1,5 ----
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O2 -fno-fuse-ops-with-volatile-access -mavx512f" } */
  /* { dg-final { scan-assembler-times "vcvtsd2siq\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtsd2siq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mavx512f" } */
  /* { dg-final { scan-assembler-times "vcvtsd2usi\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtsd2usi\[ \\t\]+\[^\n\]*\{rd-sae\}\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  #include <immintrin.h>
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fno-fuse-ops-with-volatile-access -mavx512f" } */
  /* { dg-final { scan-assembler-times "vcvtsd2usi\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtsd2usi\[ \\t\]+\[^\n\]*\{rd-sae\}\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  #include <immintrin.h>
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi64-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi64-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi64-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2usi64-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O2 -mavx512f" } */
  /* { dg-final { scan-assembler-times "vcvtsd2usi\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtsd2usi\[ \\t\]+\[^\n\]*\{ru-sae\}\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  
--- 1,5 ----
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O2 -fno-fuse-ops-with-volatile-access -mavx512f" } */
  /* { dg-final { scan-assembler-times "vcvtsd2usi\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtsd2usi\[ \\t\]+\[^\n\]*\{ru-sae\}\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2ss-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2ss-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2ss-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2ss-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2" } */
  /* { dg-final { scan-assembler-times "vcvtsi2ssl\[ \\t\]+\[^%\n\]*%e\[^\{\n\]*\{rn-sae\}\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtsi2ssl\[ \\t\]+\[^%\n\]*%e\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvtsi2ssl\[ \\t\]+\[^%\n\]*%e\[^\{\n\]*\{rn-sae\}\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtsi2ssl\[ \\t\]+\[^%\n\]*%e\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcvtss2si-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcvtss2si-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcvtss2si-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcvtss2si-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mavx512f" } */
  /* { dg-final { scan-assembler-times "vcvtss2sil?\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtss2sil?\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  #include <immintrin.h>
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fno-fuse-ops-with-volatile-access -mavx512f" } */
  /* { dg-final { scan-assembler-times "vcvtss2sil?\[ \\t\]+\[^\n\]*\{rn-sae\}\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtss2sil?\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  #include <immintrin.h>
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcvtss2si64-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcvtss2si64-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcvtss2si64-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcvtss2si64-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O2 -mavx512f" } */
  /* { dg-final { scan-assembler-times "vcvtss2siq\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtss2siq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  
--- 1,5 ----
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O2 -fno-fuse-ops-with-volatile-access -mavx512f" } */
  /* { dg-final { scan-assembler-times "vcvtss2siq\[ \\t\]+\[^\n\]*\{rz-sae\}\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtss2siq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcvtss2usi-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcvtss2usi-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcvtss2usi-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcvtss2usi-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mavx512f" } */
  /* { dg-final { scan-assembler-times "vcvtss2usi\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } }*/
  /* { dg-final { scan-assembler-times "vcvtss2usi\[ \\t\]+\[^\n\]*\{rd-sae\}\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  #include <immintrin.h>
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fno-fuse-ops-with-volatile-access -mavx512f" } */
  /* { dg-final { scan-assembler-times "vcvtss2usi\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } }*/
  /* { dg-final { scan-assembler-times "vcvtss2usi\[ \\t\]+\[^\n\]*\{rd-sae\}\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  #include <immintrin.h>
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcvtss2usi64-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcvtss2usi64-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcvtss2usi64-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcvtss2usi64-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O2 -mavx512f" } */
  /* { dg-final { scan-assembler-times "vcvtss2usi\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtss2usi\[ \\t\]+\[^\n\]*\{ru-sae\}\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  
--- 1,5 ----
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O2 -fno-fuse-ops-with-volatile-access -mavx512f" } */
  /* { dg-final { scan-assembler-times "vcvtss2usi\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtss2usi\[ \\t\]+\[^\n\]*\{ru-sae\}\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2si-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2si-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2si-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2si-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mavx512f" } */
  /* { dg-final { scan-assembler-times "vcvttsd2sil?\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttsd2sil?\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  #include <immintrin.h>
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fno-fuse-ops-with-volatile-access -mavx512f" } */
  /* { dg-final { scan-assembler-times "vcvttsd2sil?\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttsd2sil?\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  #include <immintrin.h>
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2si64-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2si64-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2si64-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2si64-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O2 -mavx512f" } */
  /* { dg-final { scan-assembler-times "vcvttsd2siq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttsd2siq\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  
--- 1,5 ----
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O2 -fno-fuse-ops-with-volatile-access -mavx512f" } */
  /* { dg-final { scan-assembler-times "vcvttsd2siq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttsd2siq\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2usi-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2usi-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2usi-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2usi-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mavx512f" } */
  /* { dg-final { scan-assembler-times "vcvttsd2usi\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttsd2usi\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  #include <immintrin.h>
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fno-fuse-ops-with-volatile-access -mavx512f" } */
  /* { dg-final { scan-assembler-times "vcvttsd2usi\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttsd2usi\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  #include <immintrin.h>
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2usi64-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2usi64-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2usi64-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcvttsd2usi64-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O2 -mavx512f" } */
  /* { dg-final { scan-assembler-times "vcvttsd2usi\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttsd2usi\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  
--- 1,5 ----
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O2 -fno-fuse-ops-with-volatile-access -mavx512f" } */
  /* { dg-final { scan-assembler-times "vcvttsd2usi\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttsd2usi\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2si-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2si-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2si-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2si-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mavx512f" } */
  /* { dg-final { scan-assembler-times "vcvttss2sil?\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttss2sil?\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  #include <immintrin.h>
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fno-fuse-ops-with-volatile-access -mavx512f" } */
  /* { dg-final { scan-assembler-times "vcvttss2sil?\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttss2sil?\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  #include <immintrin.h>
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2si64-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2si64-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2si64-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2si64-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O2 -mavx512f" } */
  /* { dg-final { scan-assembler-times "vcvttss2siq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttss2siq\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  
--- 1,5 ----
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O2 -fno-fuse-ops-with-volatile-access -mavx512f" } */
  /* { dg-final { scan-assembler-times "vcvttss2siq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttss2siq\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2usi-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2usi-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2usi-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2usi-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mavx512f" } */
  /* { dg-final { scan-assembler-times "vcvttss2usi\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttss2usi\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  #include <immintrin.h>
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fno-fuse-ops-with-volatile-access -mavx512f" } */
  /* { dg-final { scan-assembler-times "vcvttss2usi\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttss2usi\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  #include <immintrin.h>
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2usi64-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2usi64-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2usi64-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vcvttss2usi64-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O2 -mavx512f" } */
  /* { dg-final { scan-assembler-times "vcvttss2usi\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttss2usi\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  
--- 1,5 ----
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O2 -fno-fuse-ops-with-volatile-access -mavx512f" } */
  /* { dg-final { scan-assembler-times "vcvttss2usi\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttss2usi\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]+.{6}(?:\n|\[ \\t\]+#)" 1 } } */
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vextractf32x4-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vextractf32x4-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vextractf32x4-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vextractf32x4-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2" } */
  /* { dg-final { scan-assembler-times "vextractf32x4\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)"  1 } } */
  /* { dg-final { scan-assembler-times "vextractf32x4\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vextractf32x4\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vextractf32x4\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)"  1 } } */
  /* { dg-final { scan-assembler-times "vextractf32x4\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vextractf32x4\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vextractf64x4-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vextractf64x4-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vextractf64x4-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vextractf64x4-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2" } */
  /* { dg-final { scan-assembler-times "vextractf64x4\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)"  1 } } */
  /* { dg-final { scan-assembler-times "vextractf64x4\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vextractf64x4\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vextractf64x4\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)"  1 } } */
  /* { dg-final { scan-assembler-times "vextractf64x4\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vextractf64x4\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vextracti64x4-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vextracti64x4-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vextracti64x4-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vextracti64x4-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2" } */
  /* { dg-final { scan-assembler-times "vextracti64x4\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)"  1 } } */
  /* { dg-final { scan-assembler-times "vextracti64x4\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vextracti64x4\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vextracti64x4\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)"  1 } } */
  /* { dg-final { scan-assembler-times "vextracti64x4\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vextracti64x4\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vmovapd-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vmovapd-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vmovapd-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vmovapd-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2" } */
  /* { dg-final { scan-assembler-times "vmovapd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vmovapd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vmovapd\[ \\t\]+\[^\{\n\]*\\)\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vmovapd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vmovapd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vmovapd\[ \\t\]+\[^\{\n\]*\\)\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vmovaps-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vmovaps-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vmovaps-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vmovaps-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2" } */
  /* { dg-final { scan-assembler-times "vmovaps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vmovaps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vmovaps\[ \\t\]+\[^\{\n\]*\\)\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vmovaps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vmovaps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vmovaps\[ \\t\]+\[^\{\n\]*\\)\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vmovdqa64-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vmovdqa64-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vmovdqa64-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vmovdqa64-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2" } */
  /* { dg-final { scan-assembler-times "vmovdqa64\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vmovdqa64\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vmovdqa64\[ \\t\]+\[^\{\n\]*\\)\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vmovdqa64\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vmovdqa64\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vmovdqa64\[ \\t\]+\[^\{\n\]*\\)\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpandnq-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpandnq-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpandnq-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpandnq-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2" } */
  /* { dg-final { scan-assembler-times "vpandnq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)"  1 } } */
  /* { dg-final { scan-assembler-times "vpandnq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpandnq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vpandnq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)"  1 } } */
  /* { dg-final { scan-assembler-times "vpandnq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpandnq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpbroadcastd-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpbroadcastd-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpbroadcastd-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpbroadcastd-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2" } */
  /* { dg-final { scan-assembler-times "vpbroadcastd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vpbroadcastd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vpbroadcastd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 2 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vpbroadcastd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vpbroadcastd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vpbroadcastd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 2 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpbroadcastq-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpbroadcastq-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpbroadcastq-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpbroadcastq-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2" } */
  /* { dg-final { scan-assembler-times "vpbroadcastq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2  } } */
  /* { dg-final { scan-assembler-times "vpbroadcastq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vpbroadcastq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 2 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vpbroadcastq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2  } } */
  /* { dg-final { scan-assembler-times "vpbroadcastq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vpbroadcastq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 2 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpd-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpd-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpd-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpd-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mavx512f" } */
  /* { dg-final { scan-assembler-times "vpcmpd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fno-fuse-ops-with-volatile-access -mavx512f" } */
  /* { dg-final { scan-assembler-times "vpcmpd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpeqq-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpeqq-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpeqq-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpeqq-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2" } */
  /* { dg-final { scan-assembler-times "(?:vpcmpeqq\[ \\t\]+|vpcmpq\[ \\t\]+\\\$0)\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "(?:vpcmpeqq\[ \\t\]+|vpcmpq\[ \\t\]+\\\$0)\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "(?:vpcmpeqq\[ \\t\]+|vpcmpq\[ \\t\]+\\\$0)\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "(?:vpcmpeqq\[ \\t\]+|vpcmpq\[ \\t\]+\\\$0)\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpequq-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpequq-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpequq-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpequq-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2" } */
  /* { dg-final { scan-assembler-times "(?:vpcmpuq|vpcmpeqq)\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "(?:vpcmpuq|vpcmpeqq)\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "(?:vpcmpuq|vpcmpeqq)\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "(?:vpcmpuq|vpcmpeqq)\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpged-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpged-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpged-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpged-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2" } */
  /* { dg-final { scan-assembler-times "vpcmpd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vpcmpd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpgeq-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpgeq-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpgeq-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpgeq-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2" } */
  /* { dg-final { scan-assembler-times "vpcmpq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vpcmpq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpgeud-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpgeud-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpgeud-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpgeud-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2" } */
  /* { dg-final { scan-assembler-times "vpcmpud\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpud\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vpcmpud\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpud\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpgeuq-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpgeuq-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpgeuq-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpgeuq-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2" } */
  /* { dg-final { scan-assembler-times "vpcmpuq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpuq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vpcmpuq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpuq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpled-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpled-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpled-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpled-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2" } */
  /* { dg-final { scan-assembler-times "vpcmpd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vpcmpd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpleq-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpleq-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpleq-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpleq-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2" } */
  /* { dg-final { scan-assembler-times "vpcmpq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vpcmpq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpleud-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpleud-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpleud-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpleud-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2" } */
  /* { dg-final { scan-assembler-times "vpcmpud\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpud\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vpcmpud\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpud\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpleuq-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpleuq-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpleuq-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpleuq-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2" } */
  /* { dg-final { scan-assembler-times "vpcmpuq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpuq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vpcmpuq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpuq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpltd-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpltd-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpltd-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpltd-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2" } */
  /* { dg-final { scan-assembler-times "vpcmpd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vpcmpd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpltq-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpltq-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpltq-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpltq-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2" } */
  /* { dg-final { scan-assembler-times "vpcmpq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vpcmpq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpltud-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpltud-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpltud-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpltud-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2" } */
  /* { dg-final { scan-assembler-times "vpcmpud\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpud\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vpcmpud\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpud\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpltuq-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpltuq-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpltuq-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpltuq-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2" } */
  /* { dg-final { scan-assembler-times "vpcmpuq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpuq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vpcmpuq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpuq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpneqd-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpneqd-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpneqd-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpneqd-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2" } */
  /* { dg-final { scan-assembler-times "vpcmpd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vpcmpd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpneqq-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpneqq-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpneqq-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpneqq-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2" } */
  /* { dg-final { scan-assembler-times "vpcmpq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vpcmpq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpnequd-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpnequd-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpnequd-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpnequd-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2" } */
  /* { dg-final { scan-assembler-times "vpcmpud\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpud\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vpcmpud\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpud\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpnequq-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpnequq-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpnequq-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpnequq-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2" } */
  /* { dg-final { scan-assembler-times "vpcmpuq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpuq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vpcmpuq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpuq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpq-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpq-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpq-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpq-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mavx512f" } */
  /* { dg-final { scan-assembler-times "vpcmpq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fno-fuse-ops-with-volatile-access -mavx512f" } */
  /* { dg-final { scan-assembler-times "vpcmpq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpud-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpud-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpud-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpud-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mavx512f" } */
  /* { dg-final { scan-assembler-times "(?:vpcmpud|vpcmpeqd)\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpud\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fno-fuse-ops-with-volatile-access -mavx512f" } */
  /* { dg-final { scan-assembler-times "(?:vpcmpud|vpcmpeqd)\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpud\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpuq-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpuq-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vpcmpuq-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vpcmpuq-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mavx512f" } */
  /* { dg-final { scan-assembler-times "vpcmpuq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpuq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fno-fuse-ops-with-volatile-access -mavx512f" } */
  /* { dg-final { scan-assembler-times "vpcmpuq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpuq\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vrndscalepd-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vrndscalepd-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vrndscalepd-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vrndscalepd-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2" } */
  /* { dg-final { scan-assembler-times "vrndscalepd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)"  3 } } */
  /* { dg-final { scan-assembler-times "vrndscalepd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)"  3 } } */
  /* { dg-final { scan-assembler-times "vrndscalepd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)"  1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vrndscalepd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)"  3 } } */
  /* { dg-final { scan-assembler-times "vrndscalepd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)"  3 } } */
  /* { dg-final { scan-assembler-times "vrndscalepd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)"  1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vrndscaleps-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vrndscaleps-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512f-vrndscaleps-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512f-vrndscaleps-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2" } */
  /* { dg-final { scan-assembler-times "vrndscaleps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)"  3 } } */
  /* { dg-final { scan-assembler-times "vrndscaleps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)"  3 } } */
  /* { dg-final { scan-assembler-times "vrndscaleps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)"  1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vrndscaleps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)"  3 } } */
  /* { dg-final { scan-assembler-times "vrndscaleps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)"  3 } } */
  /* { dg-final { scan-assembler-times "vrndscaleps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)"  1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-complex-fma.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-complex-fma.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-complex-fma.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-complex-fma.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2 -Ofast" } */
  /* { dg-final { scan-assembler-times "vfmaddcph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-not "vaddph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)"} } */
  /* { dg-final { scan-assembler-not "vfmulcph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)"} } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2 -fno-fuse-ops-with-volatile-access -Ofast" } */
  /* { dg-final { scan-assembler-times "vfmaddcph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-not "vaddph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)"} } */
  /* { dg-final { scan-assembler-not "vfmulcph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)"} } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vaddph-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vaddph-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vaddph-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vaddph-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2" } */
  /* { dg-final { scan-assembler-times "vaddph\[ \\t\]+%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vaddph\[ \\t\]+%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vaddph\[ \\t\]+%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vaddph\[ \\t\]+%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vaddph\[ \\t\]+%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vaddph\[ \\t\]+%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtpd2ph-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtpd2ph-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtpd2ph-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtpd2ph-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2" } */
  /* { dg-final { scan-assembler-times "vcvtpd2phz\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vcvtpd2phz\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtpd2phz\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvtpd2phz\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vcvtpd2phz\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtpd2phz\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2dq-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2dq-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2dq-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2dq-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2" } */
  /* { dg-final { scan-assembler-times "vcvtph2dq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vcvtph2dq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2dq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvtph2dq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vcvtph2dq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2dq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2pd-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2pd-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2pd-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2pd-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2" } */
  /* { dg-final { scan-assembler-times "vcvtph2pd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vcvtph2pd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2pd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvtph2pd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vcvtph2pd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2pd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2psx-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2psx-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2psx-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2psx-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2" } */
  /* { dg-final { scan-assembler-times "vcvtph2psx\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vcvtph2psx\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2psx\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvtph2psx\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vcvtph2psx\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2psx\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2qq-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2qq-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2qq-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2qq-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2" } */
  /* { dg-final { scan-assembler-times "vcvtph2qq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vcvtph2qq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2qq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvtph2qq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vcvtph2qq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2qq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2udq-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2udq-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2udq-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2udq-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2" } */
  /* { dg-final { scan-assembler-times "vcvtph2udq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vcvtph2udq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2udq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvtph2udq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vcvtph2udq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2udq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2uqq-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2uqq-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2uqq-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2uqq-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2" } */
  /* { dg-final { scan-assembler-times "vcvtph2uqq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vcvtph2uqq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2uqq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvtph2uqq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vcvtph2uqq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2uqq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2uw-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2uw-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2uw-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2uw-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2" } */
  /* { dg-final { scan-assembler-times "vcvtph2uw\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vcvtph2uw\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2uw\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvtph2uw\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vcvtph2uw\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2uw\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2w-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2w-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2w-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtph2w-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2" } */
  /* { dg-final { scan-assembler-times "vcvtph2w\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vcvtph2w\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2w\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvtph2w\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vcvtph2w\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2w\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtps2ph-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtps2ph-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtps2ph-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtps2ph-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2" } */
  /* { dg-final { scan-assembler-times "vcvtps2phx\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vcvtps2phx\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtps2phx\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvtps2phx\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vcvtps2phx\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtps2phx\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtqq2ph-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtqq2ph-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtqq2ph-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtqq2ph-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2" } */
  /* { dg-final { scan-assembler-times "vcvtqq2phz\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vcvtqq2phz\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtqq2phz\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvtqq2phz\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vcvtqq2phz\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtqq2phz\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2dq-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2dq-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2dq-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2dq-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2" } */
  /* { dg-final { scan-assembler-times "vcvttph2dq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vcvttph2dq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttph2dq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvttph2dq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vcvttph2dq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttph2dq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2qq-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2qq-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2qq-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2qq-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2" } */
  /* { dg-final { scan-assembler-times "vcvttph2qq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vcvttph2qq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttph2qq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvttph2qq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vcvttph2qq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttph2qq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2udq-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2udq-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2udq-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2udq-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2" } */
  /* { dg-final { scan-assembler-times "vcvttph2udq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vcvttph2udq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttph2udq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvttph2udq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vcvttph2udq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttph2udq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2uqq-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2uqq-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2uqq-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2uqq-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2" } */
  /* { dg-final { scan-assembler-times "vcvttph2uqq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vcvttph2uqq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttph2uqq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvttph2uqq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vcvttph2uqq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttph2uqq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2uw-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2uw-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2uw-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2uw-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2" } */
  /* { dg-final { scan-assembler-times "vcvttph2uw\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vcvttph2uw\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttph2uw\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvttph2uw\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vcvttph2uw\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttph2uw\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2w-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2w-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2w-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2w-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2" } */
  /* { dg-final { scan-assembler-times "vcvttph2w\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vcvttph2w\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttph2w\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvttph2w\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vcvttph2w\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttph2w\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtuqq2ph-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtuqq2ph-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtuqq2ph-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vcvtuqq2ph-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2" } */
  /* { dg-final { scan-assembler-times "vcvtuqq2phz\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vcvtuqq2phz\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtuqq2phz\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvtuqq2phz\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vcvtuqq2phz\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtuqq2phz\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vfcmaddcph-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vfcmaddcph-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vfcmaddcph-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vfcmaddcph-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2" } */
  /* { dg-final { scan-assembler-times "vfcmaddcph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vfcmaddcph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vfcmaddcph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vfcmaddcph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vfcmaddcph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vfcmaddcph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vfcmulcph-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vfcmulcph-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vfcmulcph-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vfcmulcph-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2" } */
  /* { dg-final { scan-assembler-times "vfcmulcph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vfcmulcph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vfcmulcph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 2 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vfcmulcph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vfcmulcph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vfcmulcph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 2 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vfmaddcph-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vfmaddcph-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vfmaddcph-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vfmaddcph-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2" } */
  /* { dg-final { scan-assembler-times "vfmaddcph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vfmaddcph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vfmaddcph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vfmaddcph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vfmaddcph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vfmaddcph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vfmulcph-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vfmulcph-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vfmulcph-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vfmulcph-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2" } */
  /* { dg-final { scan-assembler-times "vfmulcph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vfmulcph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vfmulcph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 2 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vfmulcph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vfmulcph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vfmulcph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 2 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vfpclassph-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vfpclassph-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vfpclassph-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vfpclassph-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2" } */
  /* { dg-final { scan-assembler-times "vfpclassphz\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vfpclassphz\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vfpclassphz\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vfpclassphz\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vfpclasssh-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vfpclasssh-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vfpclasssh-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vfpclasssh-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2" } */
  /* { dg-final { scan-assembler-times "vfpclasssh\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vfpclasssh\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vfpclasssh\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vfpclasssh\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[0-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vmulph-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vmulph-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vmulph-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vmulph-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2" } */
  /* { dg-final { scan-assembler-times "vmulph\[ \\t\]+%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vmulph\[ \\t\]+%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vmulph\[ \\t\]+%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vmulph\[ \\t\]+%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vmulph\[ \\t\]+%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vmulph\[ \\t\]+%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vrcpph-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vrcpph-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vrcpph-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vrcpph-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2" } */
  /* { dg-final { scan-assembler-times "vrcpph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vrcpph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vrcpph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vrcpph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vrcpph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vrcpph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vrsqrtph-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vrsqrtph-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vrsqrtph-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vrsqrtph-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2" } */
  /* { dg-final { scan-assembler-times "vrsqrtph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vrsqrtph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vrsqrtph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vrsqrtph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vrsqrtph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vrsqrtph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vsqrtph-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vsqrtph-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16-vsqrtph-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16-vsqrtph-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2" } */
  /* { dg-final { scan-assembler-times "vsqrtph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vsqrtph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vsqrtph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vsqrtph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vsqrtph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vsqrtph\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vaddph-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vaddph-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vaddph-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vaddph-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vaddph\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vaddph\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vaddph\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vaddph\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vaddph\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vaddph\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtpd2ph-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtpd2ph-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtpd2ph-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtpd2ph-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vcvtpd2phy\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtpd2phy\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtpd2phy\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvtpd2phy\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtpd2phy\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtpd2phy\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2dq-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2dq-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2dq-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2dq-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vcvtph2dq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2dq\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2dq\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvtph2dq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2dq\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2dq\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2psx-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2psx-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2psx-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2psx-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vcvtph2psx\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2psx\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2psx\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvtph2psx\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2psx\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2psx\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2qq-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2qq-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2qq-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2qq-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vcvtph2qq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2qq\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2qq\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvtph2qq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2qq\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2qq\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2udq-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2udq-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2udq-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2udq-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vcvtph2udq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2udq\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2udq\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvtph2udq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2udq\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2udq\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2uqq-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2uqq-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2uqq-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2uqq-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vcvtph2uqq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2uqq\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2uqq\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvtph2uqq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2uqq\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2uqq\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2uw-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2uw-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2uw-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2uw-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vcvtph2uw\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2uw\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2uw\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvtph2uw\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2uw\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2uw\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2w-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2w-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2w-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtph2w-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vcvtph2w\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2w\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2w\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvtph2w\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2w\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtph2w\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtps2ph-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtps2ph-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtps2ph-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtps2ph-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vcvtps2phxy\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtps2phxy\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtps2phxy\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvtps2phxy\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtps2phxy\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtps2phxy\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtqq2ph-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtqq2ph-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtqq2ph-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtqq2ph-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vcvtqq2phy\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtqq2phy\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtqq2phy\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvtqq2phy\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtqq2phy\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtqq2phy\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2dq-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2dq-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2dq-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2dq-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vcvttph2dq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttph2dq\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttph2dq\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvttph2dq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttph2dq\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttph2dq\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2udq-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2udq-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2udq-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2udq-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vcvttph2udq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttph2udq\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttph2udq\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvttph2udq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttph2udq\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttph2udq\[ \\t\]+%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2uw-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2uw-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2uw-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2uw-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vcvttph2uw\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttph2uw\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttph2uw\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvttph2uw\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttph2uw\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttph2uw\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2w-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2w-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2w-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvttph2w-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vcvttph2w\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttph2w\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttph2w\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvttph2w\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttph2w\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttph2w\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtuqq2ph-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtuqq2ph-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtuqq2ph-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vcvtuqq2ph-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vcvtuqq2phy\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtuqq2phy\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtuqq2phy\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvtuqq2phy\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtuqq2phy\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtuqq2phy\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vfcmaddcph-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vfcmaddcph-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vfcmaddcph-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vfcmaddcph-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vfcmaddcph\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vfcmaddcph\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vfcmaddcph\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vfcmaddcph\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vfcmaddcph\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vfcmaddcph\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vfcmulcph-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vfcmulcph-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vfcmulcph-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vfcmulcph-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -mavx512fp16 -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vfcmulcph\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vfcmulcph\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vfcmulcph\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 2 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -mavx512fp16 -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vfcmulcph\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vfcmulcph\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vfcmulcph\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 2 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vfmaddcph-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vfmaddcph-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vfmaddcph-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vfmaddcph-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vfmaddcph\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vfmaddcph\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vfmaddcph\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vfmaddcph\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vfmaddcph\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vfmaddcph\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vfmulcph-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vfmulcph-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vfmulcph-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vfmulcph-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -mavx512fp16 -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vfmulcph\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vfmulcph\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vfmulcph\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 2 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -mavx512fp16 -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vfmulcph\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vfmulcph\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vfmulcph\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 2 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vfpclassph-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vfpclassph-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vfpclassph-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vfpclassph-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vfpclassphy\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vfpclassphx\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vfpclassphy\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vfpclassphy\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vfpclassphx\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vfpclassphy\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vmulph-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vmulph-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vmulph-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vmulph-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vmulph\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vmulph\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vmulph\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vmulph\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vmulph\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vmulph\[ \\t\]+%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vrcpph-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vrcpph-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vrcpph-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vrcpph-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vrcpph\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vrcpph\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vrcpph\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vrcpph\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vrcpph\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vrcpph\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vrsqrtph-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vrsqrtph-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vrsqrtph-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vrsqrtph-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vrsqrtph\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vrsqrtph\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vrsqrtph\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vrsqrtph\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vrsqrtph\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vrsqrtph\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vsqrtph-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vsqrtph-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512fp16vl-vsqrtph-1a.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512fp16vl-vsqrtph-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vsqrtph\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vsqrtph\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vsqrtph\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vsqrtph\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vsqrtph\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 2 } } */
  /* { dg-final { scan-assembler-times "vsqrtph\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512vl-pr100267-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512vl-pr100267-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512vl-pr100267-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512vl-pr100267-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vpexpandd\[ \\t\]+\[^\{\n\]*\\(\[^\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)"  1 } } */
  /* { dg-final { scan-assembler-times "vpexpandd\[ \\t\]+\[^\{\n\(]*%ymm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)"  1 } } */
  /* { dg-final { scan-assembler-times "vpexpandq\[ \\t\]+\[^\{\n\]*\\(\[^\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)"  1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512f -mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vpexpandd\[ \\t\]+\[^\{\n\]*\\(\[^\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)"  1 } } */
  /* { dg-final { scan-assembler-times "vpexpandd\[ \\t\]+\[^\{\n\(]*%ymm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)"  1 } } */
  /* { dg-final { scan-assembler-times "vpexpandq\[ \\t\]+\[^\{\n\]*\\(\[^\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)"  1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512vl-vcmppd-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512vl-vcmppd-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512vl-vcmppd-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512vl-vcmppd-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mavx512vl" } */
  /* { dg-final { scan-assembler-times "vcmppd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcmppd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcmppd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fno-fuse-ops-with-volatile-access -mavx512vl" } */
  /* { dg-final { scan-assembler-times "vcmppd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcmppd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcmppd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512vl-vcmpps-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512vl-vcmpps-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512vl-vcmpps-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512vl-vcmpps-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mavx512vl" } */
  /* { dg-final { scan-assembler-times "vcmpps\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcmpps\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcmpps\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fno-fuse-ops-with-volatile-access -mavx512vl" } */
  /* { dg-final { scan-assembler-times "vcmpps\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcmpps\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcmpps\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512vl-vcvtpd2ps-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512vl-vcvtpd2ps-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512vl-vcvtpd2ps-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512vl-vcvtpd2ps-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mavx512vl" } */
  /* { dg-final { scan-assembler-times "vcvtpd2psy\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtpd2psy\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtpd2psx\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fno-fuse-ops-with-volatile-access -mavx512vl" } */
  /* { dg-final { scan-assembler-times "vcvtpd2psy\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtpd2psy\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtpd2psx\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512vl-vcvtpd2udq-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512vl-vcvtpd2udq-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512vl-vcvtpd2udq-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512vl-vcvtpd2udq-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vcvtpd2udqy\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtpd2udqx\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtpd2udqy\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvtpd2udqy\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtpd2udqx\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvtpd2udqy\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512vl-vcvttpd2udq-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512vl-vcvttpd2udq-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512vl-vcvttpd2udq-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512vl-vcvttpd2udq-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vcvttpd2udqy\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttpd2udqx\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttpd2udqy\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvttpd2udqy\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttpd2udqx\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttpd2udqy\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512vl-vcvttps2udq-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512vl-vcvttps2udq-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512vl-vcvttps2udq-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512vl-vcvttps2udq-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vcvttps2udq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttps2udq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttps2udq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vcvttps2udq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttps2udq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vcvttps2udq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512vl-vextractf32x4-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512vl-vextractf32x4-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512vl-vextractf32x4-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512vl-vextractf32x4-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vextractf(?:128|32x4)\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)"  1 } } */
  /* { dg-final { scan-assembler-times "vextractf32x4\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vextractf32x4\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vextractf(?:128|32x4)\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)"  1 } } */
  /* { dg-final { scan-assembler-times "vextractf32x4\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vextractf32x4\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512vl-vmovapd-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512vl-vmovapd-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512vl-vmovapd-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512vl-vmovapd-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vmovapd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vmovapd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vmovapd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vmovapd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vmovapd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vmovapd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512vl-vmovaps-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512vl-vmovaps-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512vl-vmovaps-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512vl-vmovaps-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vmovaps\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vmovaps\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vmovaps\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vmovaps\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vmovaps\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vmovaps\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512vl-vmovdqa64-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512vl-vmovdqa64-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512vl-vmovdqa64-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512vl-vmovdqa64-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "vmovdqa64\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vmovdqa64\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vmovdqa64\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "vmovdqa64\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vmovdqa64\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vmovdqa64\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512vl-vpcmpd-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512vl-vpcmpd-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512vl-vpcmpd-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512vl-vpcmpd-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mavx512vl" } */
  /* { dg-final { scan-assembler-times "vpcmpd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fno-fuse-ops-with-volatile-access -mavx512vl" } */
  /* { dg-final { scan-assembler-times "vpcmpd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512vl-vpcmpeqq-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512vl-vpcmpeqq-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512vl-vpcmpeqq-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512vl-vpcmpeqq-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "(?:vpcmpeqq\[ \\t\]+|vpcmpq\[ \\t\]+\\\$0)\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "(?:vpcmpeqq\[ \\t\]+|vpcmpq\[ \\t\]+\\\$0)\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "(?:vpcmpeqq\[ \\t\]+|vpcmpq\[ \\t\]+\\\$0)\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "(?:vpcmpeqq\[ \\t\]+|vpcmpq\[ \\t\]+\\\$0)\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "(?:vpcmpeqq\[ \\t\]+|vpcmpq\[ \\t\]+\\\$0)\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "(?:vpcmpeqq\[ \\t\]+|vpcmpq\[ \\t\]+\\\$0)\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512vl-vpcmpequq-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512vl-vpcmpequq-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512vl-vpcmpequq-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512vl-vpcmpequq-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512vl -O2" } */
  /* { dg-final { scan-assembler-times "(?:vpcmpuq|vpcmpeqq)\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "(?:vpcmpuq|vpcmpeqq)\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "(?:vpcmpuq|vpcmpeqq)\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512vl -O2 -fno-fuse-ops-with-volatile-access" } */
  /* { dg-final { scan-assembler-times "(?:vpcmpuq|vpcmpeqq)\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "(?:vpcmpuq|vpcmpeqq)\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "(?:vpcmpuq|vpcmpeqq)\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512vl-vpcmpq-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512vl-vpcmpq-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512vl-vpcmpq-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512vl-vpcmpq-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mavx512vl" } */
  /* { dg-final { scan-assembler-times "vpcmpq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fno-fuse-ops-with-volatile-access -mavx512vl" } */
  /* { dg-final { scan-assembler-times "vpcmpq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512vl-vpcmpud-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512vl-vpcmpud-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512vl-vpcmpud-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512vl-vpcmpud-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mavx512vl" } */
  /* { dg-final { scan-assembler-times "vpcmpud\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpud\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpud\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fno-fuse-ops-with-volatile-access -mavx512vl" } */
  /* { dg-final { scan-assembler-times "vpcmpud\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpud\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpud\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512vl-vpcmpuq-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512vl-vpcmpuq-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/avx512vl-vpcmpuq-1.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/avx512vl-vpcmpuq-1.c	Sun Dec  7 22:32:13 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mavx512vl" } */
  /* { dg-final { scan-assembler-times "vpcmpuq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpuq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "(?:vpcmpuq|vpcmpeqq)\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fno-fuse-ops-with-volatile-access -mavx512vl" } */
  /* { dg-final { scan-assembler-times "vpcmpuq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpcmpuq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "(?:vpcmpuq|vpcmpeqq)\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/nop-mcount-m16.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/nop-mcount-m16.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/nop-mcount-m16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/nop-mcount-m16.c	Sun Dec  7 22:32:13 2025
***************
*** 0 ****
--- 1,13 ----
+ /* Test -mnop-mcount for 16-bit code to generate a 3-byte NOP */
+ /* { dg-do compile { target { *-*-linux* && nonpic } } } */
+ /* { dg-require-effective-target mfentry } */
+ /* { dg-options "-pg -mfentry -mnop-mcount -m16" } */
+ /* { dg-final { scan-assembler-not "__fentry__" } } */
+ /* { dg-final { scan-assembler-not "0x0f, 0x1f, 0x44, 0x00, 0x00" } } */
+ /* { dg-final { scan-assembler-times "0x8d, 0x74, 0x00" 1 } } */
+ extern void foobar(char *);
+ 
+ void func(void)
+ {
+   foobar ("Hello world\n");
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/nop-mcount.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/nop-mcount.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/nop-mcount.c	Sun Nov 30 22:32:12 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/nop-mcount.c	Sun Dec  7 22:32:13 2025
***************
*** 1,8 ****
  /* Test -mnop-mcount */
  /* { dg-do compile { target { *-*-linux* && nonpic } } } */
  /* { dg-require-effective-target mfentry } */
! /* { dg-options "-Wno-old-style-definition -pg -mfentry -mrecord-mcount -mnop-mcount" } */
  /* { dg-final { scan-assembler-not "__fentry__" } } */
  /* Origin: Andi Kleen */
  extern void foobar(char *);
  
--- 1,9 ----
  /* Test -mnop-mcount */
  /* { dg-do compile { target { *-*-linux* && nonpic } } } */
  /* { dg-require-effective-target mfentry } */
! /* { dg-options "-pg -mfentry -mrecord-mcount -mnop-mcount" } */
  /* { dg-final { scan-assembler-not "__fentry__" } } */
+ /* { dg-final { scan-assembler-times "0x0f, 0x1f, 0x44, 0x00, 0x00" 3 } } */
  /* Origin: Andi Kleen */
  extern void foobar(char *);
  
*************** void func2(void)
*** 18,25 ****
      foobar ("Hello world");
  }
  
! void func3(a)
! char *a;
  {
    foobar("Hello world");
  }
--- 19,25 ----
      foobar ("Hello world");
  }
  
! void func3(char *a)
  {
    foobar("Hello world");
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/pr122343-1a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/pr122343-1a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/pr122343-1a.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/pr122343-1a.c	Sun Dec  7 22:32:13 2025
***************
*** 0 ****
--- 1,25 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fomit-frame-pointer" } */
+ /* { dg-additional-options "-mregparm=1" { target ia32 } } */
+ /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
+ /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
+ 
+ /*
+ **foo:
+ **.LFB0:
+ **	.cfi_startproc
+ **	imull	\$123, %e(di|ax), %eax
+ **	addl	bar(|\(%rip\)), %eax
+ **	ret
+ **	.cfi_endproc
+ **...
+ */
+ 
+ extern volatile int bar;
+ 
+ int
+ foo (int z)
+ {
+   z *= 123;
+   return bar + z;
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/pr122343-1b.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/pr122343-1b.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/pr122343-1b.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/pr122343-1b.c	Sun Dec  7 22:32:13 2025
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fomit-frame-pointer -fno-fuse-ops-with-volatile-access" } */
+ /* { dg-additional-options "-mregparm=1" { target ia32 } } */
+ /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
+ /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
+ 
+ /*
+ **foo:
+ **.LFB0:
+ **	.cfi_startproc
+ **	imull	\$123, %e(di|ax), %eax
+ **	movl	bar(|\(%rip\)), %edx
+ **	addl	%edx, %eax
+ **	ret
+ **	.cfi_endproc
+ **...
+ */
+ 
+ #include "pr122343-1a.c"
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/pr122343-2a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/pr122343-2a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/pr122343-2a.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/pr122343-2a.c	Sun Dec  7 22:32:13 2025
***************
*** 0 ****
--- 1,23 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fomit-frame-pointer" } */
+ /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
+ /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
+ 
+ /*
+ **foo:
+ **.LFB0:
+ **	.cfi_startproc
+ **	movl	bar1(|\(%rip\)), %eax
+ **	addl	bar2(|\(%rip\)), %eax
+ **	ret
+ **	.cfi_endproc
+ **...
+ */
+ 
+ extern volatile int bar1, bar2;
+ 
+ int
+ foo (void)
+ {
+   return bar1 + bar2;
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/pr122343-2b.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/pr122343-2b.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/pr122343-2b.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/pr122343-2b.c	Sun Dec  7 22:32:13 2025
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fomit-frame-pointer -fno-fuse-ops-with-volatile-access" } */
+ /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
+ /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
+ 
+ /*
+ **foo:
+ **.LFB0:
+ **	.cfi_startproc
+ **	movl	bar1(|\(%rip\)), %eax
+ **	movl	bar2(|\(%rip\)), %edx
+ **	addl	%edx, %eax
+ **	ret
+ **	.cfi_endproc
+ **...
+ */
+ 
+ #include "pr122343-2a.c"
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/pr122343-3.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/pr122343-3.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/pr122343-3.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/pr122343-3.c	Sun Dec  7 22:32:13 2025
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fomit-frame-pointer" } */
+ /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
+ /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
+ 
+ /*
+ **foo:
+ **.LFB0:
+ **	.cfi_startproc
+ **	addl	\$123, bar(|\(%rip\))
+ **	ret
+ **	.cfi_endproc
+ **...
+ */
+ 
+ extern volatile int bar;
+ 
+ void
+ foo (void)
+ {
+   bar += 123;
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/pr122343-4a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/pr122343-4a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/pr122343-4a.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/pr122343-4a.c	Sun Dec  7 22:32:13 2025
***************
*** 0 ****
--- 1,33 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fomit-frame-pointer" } */
+ /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
+ /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
+ 
+ /*
+ **foo:
+ **.LFB0:
+ **	.cfi_startproc
+ **	movl	bar(|\(%rip\)), %eax
+ **	movl	bar(|\(%rip\)), %eax
+ **...
+ **	barrier
+ **...
+ **	addl	bar(|\(%rip\)), %eax
+ **	subl	bar(|\(%rip\)), %eax
+ **	ret
+ **	.cfi_endproc
+ **...
+ */
+ 
+ extern volatile int bar;
+ 
+ int
+ foo (void)
+ {
+   int h = bar;
+   int r = bar;
+   asm volatile ("barrier" ::: "memory");
+   int p = bar;
+   p = p + r;
+   return p - bar;
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/pr122343-4b.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/pr122343-4b.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/pr122343-4b.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/pr122343-4b.c	Sun Dec  7 22:32:13 2025
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fomit-frame-pointer -fno-fuse-ops-with-volatile-access" } */
+ /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
+ /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
+ 
+ /*
+ **foo:
+ **.LFB0:
+ **	.cfi_startproc
+ **	movl	bar(|\(%rip\)), %eax
+ **	movl	bar(|\(%rip\)), %eax
+ **...
+ **	barrier
+ **...
+ **	movl	bar(|\(%rip\)), %ecx
+ **	movl	bar(|\(%rip\)), %edx
+ **	addl	%ecx, %eax
+ **	subl	%edx, %eax
+ **	ret
+ **	.cfi_endproc
+ **...
+ */
+ 
+ #include "pr122343-4a.c"
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/pr122343-5a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/pr122343-5a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/pr122343-5a.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/pr122343-5a.c	Sun Dec  7 22:32:13 2025
***************
*** 0 ****
--- 1,25 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fomit-frame-pointer" } */
+ /* { dg-additional-options "-mregparm=1" { target ia32 } } */
+ /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
+ /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
+ 
+ /*
+ **foo:
+ **.LFB0:
+ **	.cfi_startproc
+ **	imull	\$123, %e(di|ax), %e(di|ax)
+ **	addl	%e(di|ax), bar(|\(%rip\))
+ **	ret
+ **	.cfi_endproc
+ **...
+ */
+ 
+ extern volatile int bar;
+ 
+ void
+ foo (int z)
+ {
+   z *= 123;
+   bar += z;
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/pr122343-5b.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/pr122343-5b.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/pr122343-5b.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/pr122343-5b.c	Sun Dec  7 22:32:13 2025
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fomit-frame-pointer -fno-fuse-ops-with-volatile-access" } */
+ /* { dg-additional-options "-mregparm=1" { target ia32 } } */
+ /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
+ /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
+ 
+ /*
+ **foo:
+ **.LFB0:
+ **	.cfi_startproc
+ **	imull	\$123, %e(di|ax), %e(di|ax)
+ **	movl	bar(|\(%rip\)), %e(dx|ax)
+ **	addl	%e(dx|ax), %e(di|ax)
+ **	movl	%e(di|ax), bar(|\(%rip\))
+ **	ret
+ **	.cfi_endproc
+ **...
+ */
+ 
+ #include "pr122343-5a.c"
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/pr122343-6a.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/pr122343-6a.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/pr122343-6a.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/pr122343-6a.c	Sun Dec  7 22:32:13 2025
***************
*** 0 ****
--- 1,37 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fomit-frame-pointer" } */
+ /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
+ /* { dg-final { check-function-bodies "**" "" "" { target { *-*-* } } {^\t?\.} } } */
+ 
+ /*
+ **foo:
+ **.LFB0:
+ **	.cfi_startproc
+ **	movl	bar(|\(%rip\)), %eax
+ **	movl	bar(|\(%rip\)), %eax
+ **	imull	\$123, %eax, %edx
+ **	movl	%edx, bar(|\(%rip\))
+ **...
+ **	barrier
+ **...
+ **	movl	bar(|\(%rip\)), %edx
+ **	addl	%edx, %eax
+ **	subl	%eax, bar(|\(%rip\))
+ **	ret
+ **	.cfi_endproc
+ **...
+ */
+ 
+ extern volatile int bar;
+ 
+ void
+ foo (void)
+ {
+   int h = bar;
+   int r = bar;
+   bar = r * 123;
+   asm volatile ("barrier" ::: "memory");
+   int p = bar;
+   p = p + r;
+   bar -= p;
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/pr122343-6b.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/pr122343-6b.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/pr122343-6b.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/pr122343-6b.c	Sun Dec  7 22:32:13 2025
***************
*** 0 ****
--- 1,27 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fomit-frame-pointer -fno-fuse-ops-with-volatile-access" } */
+ /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
+ /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
+ 
+ /*
+ **foo:
+ **.LFB0:
+ **	.cfi_startproc
+ **	movl	bar(|\(%rip\)), %eax
+ **	movl	bar(|\(%rip\)), %eax
+ **	imull	\$123, %eax, %edx
+ **	movl	%edx, bar(|\(%rip\))
+ **...
+ **	barrier
+ **...
+ **	movl	bar(|\(%rip\)), %ecx
+ **	movl	bar(|\(%rip\)), %edx
+ **	addl	%ecx, %eax
+ **	subl	%eax, %edx
+ **	movl	%edx, bar(|\(%rip\))
+ **	ret
+ **	.cfi_endproc
+ **...
+ */
+ 
+ #include "pr122343-6a.c"
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/pr122343-7.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/pr122343-7.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/pr122343-7.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/pr122343-7.c	Sun Dec  7 22:32:13 2025
***************
*** 0 ****
--- 1,27 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fomit-frame-pointer" } */
+ /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
+ /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
+ 
+ /*
+ **test:
+ **.LFB0:
+ **	.cfi_startproc
+ **	movzbl	u8(|\(%rip\)), %eax
+ **	addb	%al, u8(|\(%rip\))
+ **	movzbl	u8(|\(%rip\)), %eax
+ **	subb	u8(|\(%rip\)), %al
+ **	movb	%al, u8(|\(%rip\))
+ **	ret
+ **	.cfi_endproc
+ **...
+ */
+ 
+ extern volatile unsigned char u8;
+ 
+ void
+ test (void)
+ {
+   u8 = u8 + u8;
+   u8 = u8 - u8;
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/i386/pr122675-1.c gcc-16-20251207/gcc/testsuite/gcc.target/i386/pr122675-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/i386/pr122675-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.target/i386/pr122675-1.c	Sun Dec  7 22:32:13 2025
***************
*** 0 ****
--- 1,33 ----
+ /* Verify that the most likely BB edges are optimized as fallthroughs.  */
+ /* { dg-do compile } */
+ /* { dg-options "-O1 -fno-pic -march=x86-64 -mtune=generic -mgeneral-regs-only" } */
+ /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
+ /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
+ 
+ /*
+ **test:
+ **.LFB[0-9]+:
+ **	.cfi_startproc
+ **	testl	%edi, %edi
+ **	je	.L[0-9]*
+ **	subq	\$[0-9]*, %rsp
+ **	.cfi_def_cfa_offset [0-9]*
+ **	call	f1
+ **	addq	\$[0-9]*, %rsp
+ **	.cfi_def_cfa_offset [0-9]*
+ **	ret
+ **.L[0-9]+:
+ **	movl	%edi, %eax
+ **	ret
+ **...
+ */
+ 
+ int f1(void);
+ 
+ int test(int a)
+ {
+   if (__builtin_expect(!!a, 1)) {
+     return f1();
+   }
+   return a;
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/mips/bswap-7.c gcc-16-20251207/gcc/testsuite/gcc.target/mips/bswap-7.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/mips/bswap-7.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.target/mips/bswap-7.c	Sun Dec  7 22:32:14 2025
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-options "-march=allegrex" } */
+ 
+ NOMIPS16 unsigned int
+ foo (unsigned int x)
+ {
+   return __builtin_bswap32 (x);
+ }
+ 
+ /* { dg-final { scan-assembler "\twsbw\t" } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/mips/madd-10.c gcc-16-20251207/gcc/testsuite/gcc.target/mips/madd-10.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/mips/madd-10.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.target/mips/madd-10.c	Sun Dec  7 22:32:14 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-options "-march=allegrex -fexpensive-optimizations" } */
+ /* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
+ /* { dg-final { scan-assembler-not "\tmul\t" } } */
+ /* { dg-final { scan-assembler "\tmadd\t" } } */
+ 
+ NOMIPS16 int
+ f1 (int *a, int *b, int n)
+ {
+   int x, i;
+ 
+   x = 0;
+   for (i = 0; i < n; i++)
+     x += a[i] * b[i];
+   return x;
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/mips/maddu-5.c gcc-16-20251207/gcc/testsuite/gcc.target/mips/maddu-5.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/mips/maddu-5.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.target/mips/maddu-5.c	Sun Dec  7 22:32:14 2025
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-options "-march=allegrex -fexpensive-optimizations" } */
+ /* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
+ /* { dg-final { scan-assembler-not "\tmul\t" } } */
+ /* { dg-final { scan-assembler "\tmaddu\t" } } */
+ 
+ typedef unsigned int ui;
+ typedef unsigned long long ull;
+ 
+ NOMIPS16 ull
+ f1 (ui x, ui y, ull z)
+ {
+   return (ull) x * y + z;
+ }
+ 
+ NOMIPS16 ull
+ f2 (ui x, ui y, ull z)
+ {
+   return z + (ull) y * x;
+ }
+ 
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/mips/max-1.c gcc-16-20251207/gcc/testsuite/gcc.target/mips/max-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/mips/max-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.target/mips/max-1.c	Sun Dec  7 22:32:14 2025
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-options "-march=allegrex" } */
+ 
+ NOMIPS16 int
+ foo_max (int a, int b)
+ {
+   return (a > b) ?  a : b;
+ }
+ 
+ /* { dg-final { scan-assembler "\tmax\t" } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/mips/min-1.c gcc-16-20251207/gcc/testsuite/gcc.target/mips/min-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/mips/min-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.target/mips/min-1.c	Sun Dec  7 22:32:14 2025
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-options "-march=allegrex" } */
+ 
+ NOMIPS16 int
+ foo_min (int a, int b)
+ {
+   return (a < b) ?  a : b;
+ }
+ 
+ /* { dg-final { scan-assembler "\tmin\t" } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/mips/msub-9.c gcc-16-20251207/gcc/testsuite/gcc.target/mips/msub-9.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/mips/msub-9.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.target/mips/msub-9.c	Sun Dec  7 22:32:14 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-options "-march=allegrex -fexpensive-optimizations" } */
+ /* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
+ /* { dg-final { scan-assembler-not "\tmul\t" } } */
+ /* { dg-final { scan-assembler "\tmsub\t" } } */
+ 
+ NOMIPS16 int
+ f1 (int *a, int *b, int n)
+ {
+   int x, i;
+ 
+   x = 100;
+   for (i = 0; i < n; i++)
+     x -= a[i] * b[i];
+   return x;
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/mips/msubu-5.c gcc-16-20251207/gcc/testsuite/gcc.target/mips/msubu-5.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/mips/msubu-5.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.target/mips/msubu-5.c	Sun Dec  7 22:32:14 2025
***************
*** 0 ****
--- 1,14 ----
+ /* { dg-options "-march=allegrex -fexpensive-optimizations" } */
+ /* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
+ /* { dg-final { scan-assembler-not "\tmul\t" } } */
+ /* { dg-final { scan-assembler "\tmsubu\t" } } */
+ 
+ typedef unsigned int ui;
+ typedef unsigned long long ull;
+ 
+ NOMIPS16 ull
+ f2 (ui x, ui y, ull z)
+ {
+   return z - (ull) y * x;
+ }
+ 
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/riscv/pr122215.c gcc-16-20251207/gcc/testsuite/gcc.target/riscv/pr122215.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/riscv/pr122215.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.target/riscv/pr122215.c	Sun Dec  7 22:32:14 2025
***************
*** 0 ****
--- 1,46 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target valgrind } */
+ /* { dg-additional-files "sparseset.supp" } */
+ /* { dg-options "-wrapper valgrind,-q,--exit-on-first-error=yes,--error-exitcode=1,--suppressions=${srcdir}/sparseset.supp" } */
+ 
+ typedef signed int int32_t;
+ typedef signed long int int64_t;
+ 
+ int64_t dual_reg_insn(int64_t x) {
+     int64_t res;
+     int64_t zero = 0;
+     asm ("some_custom_insn %0,%1,%2" : "=R" (res) : "R" (x), "R" (zero));
+     return res;
+ }
+ 
+ int32_t single_reg_insn(int32_t x) {
+     int32_t res;
+     int32_t zero = 0;
+     asm ("some_custom_insn %0,%1,%2" : "=r" (res) : "r" (x), "r" (zero));
+     return res;
+ }
+ 
+ int32_t single_reg_insn_explicit_zero(int32_t x) {
+     int32_t res;
+     asm ("some_custom_insn %0,%1,%2" : "=r" (res) : "r" (x), "r" (0));
+     return res;
+ }
+ 
+ int64_t dual_reg_insn2(int64_t x) {
+     int64_t res;
+     int64_t zero = 0;
+     asm ("some_custom_insn %0,%1,%2" : "=R" (res) : "R" (x), "R" (zero));
+     return res;
+     /* This function is IDENTICAL to dual_reg_insn,
+      * but for some obscure reason (alignment?)
+      * it decides to use sX registers instead of aX to store zero,
+      * resulting in a much larger code since it needs to use the stack.
+      * THIS ONLY HAPPENS SOMETIMES!
+      */
+ }
+ 
+ int64_t dual_reg_insn_explicit_zero(int64_t x) {
+     int64_t res;
+     asm ("some_custom_insn %0,%1,%2" : "=R" (res) : "R" (x), "R" (0LL));
+     return res;
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/riscv/pr122675-1.c gcc-16-20251207/gcc/testsuite/gcc.target/riscv/pr122675-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/riscv/pr122675-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.target/riscv/pr122675-1.c	Sun Dec  7 22:32:14 2025
***************
*** 0 ****
--- 1,38 ----
+ /* Verify that the most likely BB edges are optimized as fallthroughs.  */
+ /* { dg-do compile } */
+ /* { dg-options "-O1 -fno-pic -march=rv64gc -mabi=lp64d" } */
+ /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
+ /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
+ 
+ /*
+ **test:
+ **...
+ **	beq	a0,zero,.L[0-9]*
+ **...
+ **	call	f1
+ **...
+ ** (
+ **	jr	ra
+ ** |
+ **	ret
+ ** )
+ **...
+ **.L[0-9]+:
+ **...
+ ** (
+ **	jr	ra
+ ** |
+ **	ret
+ ** )
+ **...
+ */
+ 
+ int f1(void);
+ 
+ int test(int a)
+ {
+   if (__builtin_expect(!!a, 1)) {
+     return f1();
+   }
+   return a;
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/riscv/pr91420.c gcc-16-20251207/gcc/testsuite/gcc.target/riscv/pr91420.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/riscv/pr91420.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.target/riscv/pr91420.c	Sun Dec  7 22:32:14 2025
***************
*** 0 ****
--- 1,46 ----
+ /* { dg-do assemble } */
+ /* { dg-options "-O2 -mcmodel=medany -save-temps" } */
+ 
+ int a[1];
+ 
+ __UINTPTR_TYPE__
+ foo(void)
+ {
+   return (__UINTPTR_TYPE__)a + 0x7fffffff;
+ }
+ 
+ __UINTPTR_TYPE__
+ bfoo(void)
+ {
+   return (__UINTPTR_TYPE__)a + 0x40000000;
+ }
+ 
+ __UINTPTR_TYPE__
+ sfoo(void)
+ {
+   return (__UINTPTR_TYPE__)a + 0x3fffffff;
+ }
+ 
+ __UINTPTR_TYPE__
+ bar(void)
+ {
+   return (__UINTPTR_TYPE__)a - 0x80000000;
+ }
+ 
+ __UINTPTR_TYPE__
+ bbar(void)
+ {
+   return (__UINTPTR_TYPE__)a - 0x40000000;
+ }
+ 
+ __UINTPTR_TYPE__
+ sbar(void)
+ {
+   return (__UINTPTR_TYPE__)a - 0x3fffffff;
+ }
+ 
+ /* /* dg-final { scan-assembler-times "lla\ta[0-9]*, a$" 4 { target riscv64-*-* } } } */
+ /* /* dg-final { scan-assembler-times "lla\ta[0-9]*, a[-+]" 2 { target riscv64-*-* } } } */
+ 
+ /* /* dg-final { scan-assembler-times "lla\ta[0-9]*, a[-+]$" 6 { target riscv32-*-* } } } */
+ /* /* dg-final { scan-assembler-not "lla\ta[0-9]*, a$" { target riscv32-*-* } } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c	Sun Nov 30 22:32:13 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c	Sun Dec  7 22:32:14 2025
*************** TEST_WIDEN_TERNARY_VX_UNSIGNED(T, NT)
*** 38,40 ****
--- 38,41 ----
  /* { dg-final { scan-assembler-not {vwmaccu.vx} } } */
  /* { dg-final { scan-assembler-times {vmseq.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vmsne.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vmsltu.vx} 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c	Sun Nov 30 22:32:13 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c	Sun Dec  7 22:32:14 2025
*************** TEST_WIDEN_TERNARY_VX_UNSIGNED(T, NT)
*** 38,40 ****
--- 38,41 ----
  /* { dg-final { scan-assembler-not {vwmaccu.vx} } } */
  /* { dg-final { scan-assembler-times {vmseq.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vmsne.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vmsltu.vx} 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c	Sun Nov 30 22:32:13 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c	Sun Dec  7 22:32:14 2025
*************** TEST_WIDEN_TERNARY_VX_UNSIGNED(T, NT)
*** 41,43 ****
--- 41,44 ----
  /* { dg-final { scan-assembler-times {vwmaccu.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vmseq.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vmsne.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vmsltu.vx} 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c	Sun Nov 30 22:32:13 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c	Sun Dec  7 22:32:14 2025
*************** TEST_TERNARY_VX_UNSIGNED_0(T)
*** 28,30 ****
--- 28,31 ----
  /* { dg-final { scan-assembler-times {vnmsub.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vmseq.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vmsne.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vmsltu.vx} 1 } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c	Sun Nov 30 22:32:13 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c	Sun Dec  7 22:32:14 2025
*************** TEST_WIDEN_TERNARY_VX_UNSIGNED(T, NT)
*** 38,40 ****
--- 38,41 ----
  /* { dg-final { scan-assembler-not {vwmaccu.vx} } } */
  /* { dg-final { scan-assembler-not {vmseq.vx} } } */
  /* { dg-final { scan-assembler-not {vmsne.vx} } } */
+ /* { dg-final { scan-assembler-not {vmsltu.vx} } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c	Sun Nov 30 22:32:13 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c	Sun Dec  7 22:32:14 2025
*************** TEST_WIDEN_TERNARY_VX_UNSIGNED(T, NT)
*** 38,40 ****
--- 38,41 ----
  /* { dg-final { scan-assembler-not {vwmaccu.vx} } } */
  /* { dg-final { scan-assembler-not {vmseq.vx} } } */
  /* { dg-final { scan-assembler-not {vmsne.vx} } } */
+ /* { dg-final { scan-assembler-not {vmsltu.vx} } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c	Sun Nov 30 22:32:13 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c	Sun Dec  7 22:32:14 2025
*************** TEST_WIDEN_TERNARY_VX_UNSIGNED(T, NT)
*** 38,40 ****
--- 38,41 ----
  /* { dg-final { scan-assembler-not {vwmaccu.vx} } } */
  /* { dg-final { scan-assembler-not {vmseq.vx} } } */
  /* { dg-final { scan-assembler-not {vmsne.vx} } } */
+ /* { dg-final { scan-assembler-not {vmsltu.vx} } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c	Sun Nov 30 22:32:13 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c	Sun Dec  7 22:32:14 2025
*************** TEST_TERNARY_VX_UNSIGNED_0(T)
*** 28,30 ****
--- 28,31 ----
  /* { dg-final { scan-assembler-not {vnmsub.vx} } } */
  /* { dg-final { scan-assembler-not {vmseq.vx} } } */
  /* { dg-final { scan-assembler-not {vmsne.vx} } } */
+ /* { dg-final { scan-assembler-not {vmsltu.vx} } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c	Sun Nov 30 22:32:13 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c	Sun Dec  7 22:32:14 2025
*************** TEST_WIDEN_TERNARY_VX_UNSIGNED(T, NT)
*** 38,40 ****
--- 38,41 ----
  /* { dg-final { scan-assembler-not {vwmaccu.vx} } } */
  /* { dg-final { scan-assembler-not {vmseq.vx} } } */
  /* { dg-final { scan-assembler-not {vmsne.vx} } } */
+ /* { dg-final { scan-assembler-not {vmsltu.vx} } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c	Sun Nov 30 22:32:13 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c	Sun Dec  7 22:32:14 2025
*************** TEST_WIDEN_TERNARY_VX_UNSIGNED(T, NT)
*** 38,40 ****
--- 38,41 ----
  /* { dg-final { scan-assembler-not {vwmaccu.vx} } } */
  /* { dg-final { scan-assembler-not {vmseq.vx} } } */
  /* { dg-final { scan-assembler-not {vmsne.vx} } } */
+ /* { dg-final { scan-assembler-not {vmsltu.vx} } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c	Sun Nov 30 22:32:13 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c	Sun Dec  7 22:32:14 2025
*************** TEST_WIDEN_TERNARY_VX_UNSIGNED(T, NT)
*** 38,40 ****
--- 38,41 ----
  /* { dg-final { scan-assembler-not {vwmaccu.vx} } } */
  /* { dg-final { scan-assembler-not {vmseq.vx} } } */
  /* { dg-final { scan-assembler-not {vmsne.vx} } } */
+ /* { dg-final { scan-assembler-not {vmsltu.vx} } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c	Sun Nov 30 22:32:13 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c	Sun Dec  7 22:32:14 2025
*************** TEST_TERNARY_VX_UNSIGNED_0(T)
*** 28,30 ****
--- 28,31 ----
  /* { dg-final { scan-assembler-not {vnmsub.vx} } } */
  /* { dg-final { scan-assembler-not {vmseq.vx} } } */
  /* { dg-final { scan-assembler-not {vmsne.vx} } } */
+ /* { dg-final { scan-assembler-not {vmsltu.vx} } } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h
*** gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h	Sun Nov 30 22:32:13 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h	Sun Dec  7 22:32:14 2025
*************** DEF_AVG_CEIL(int32_t, int64_t)
*** 424,429 ****
--- 424,430 ----
    DEF_VX_BINARY_CASE_0_WRAP(T, %, rem)                            \
    DEF_VX_BINARY_CASE_0_WRAP(T, ==, eq)                            \
    DEF_VX_BINARY_CASE_0_WRAP(T, !=, ne)                            \
+   DEF_VX_BINARY_CASE_0_WRAP(T, <, ltu)                            \
    DEF_VX_BINARY_CASE_2_WRAP(T, MAX_FUNC_0_WARP(T), max)           \
    DEF_VX_BINARY_CASE_2_WRAP(T, MAX_FUNC_1_WARP(T), max)           \
    DEF_VX_BINARY_CASE_2_WRAP(T, MIN_FUNC_0_WARP(T), min)           \
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h
*** gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h	Sun Nov 30 22:32:13 2025
--- gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h	Sun Dec  7 22:32:14 2025
*************** uint64_t TEST_BINARY_DATA(uint64_t, ne)[
*** 6430,6433 ****
--- 6430,6569 ----
    },
  };
  
+ uint8_t TEST_BINARY_DATA(uint8_t, ltu)[][3][N] =
+ {
+   {
+     { 127 },
+     {
+         0,   0,   0,   0,
+         1,   1,   1,   1,
+       127, 127, 127, 127,
+       128, 128, 128, 128,
+     },
+     {
+         1,   1,   1,   1,
+         1,   1,   1,   1,
+         0,   0,   0,   0,
+         0,   0,   0,   0,
+     },
+   },
+   {
+     { 255 },
+     {
+          0,   0,   0,   0,
+          1,   1,   1,   1,
+          2,   2,   2,   2,
+        255, 255, 255, 255,
+     },
+     {
+          1,   1,   1,   1,
+          1,   1,   1,   1,
+          1,   1,   1,   1,
+          0,   0,   0,   0,
+     },
+   },
+ };
+ 
+ uint16_t TEST_BINARY_DATA(uint16_t, ltu)[][3][N] =
+ {
+   {
+     { 32767 },
+     {
+           0,     0,     0,     0,
+           1,     1,     1,     1,
+       32767, 32767, 32767, 32767,
+       32768, 32768, 32768, 32768,
+     },
+     {
+         1,   1,   1,   1,
+         1,   1,   1,   1,
+         0,   0,   0,   0,
+         0,   0,   0,   0,
+     },
+   },
+   {
+     { 65535 },
+     {
+            0,     0,     0,     0,
+            1,     1,     1,     1,
+            2,     2,     2,     2,
+        65535, 65535, 65535, 65535,
+     },
+     {
+          1,   1,   1,   1,
+          1,   1,   1,   1,
+          1,   1,   1,   1,
+          0,   0,   0,   0,
+     },
+   },
+ };
+ 
+ uint32_t TEST_BINARY_DATA(uint32_t, ltu)[][3][N] =
+ {
+   {
+     { 2147483647 },
+     {
+                0,          0,          0,          0,
+                1,          1,          1,          1,
+       2147483647, 2147483647, 2147483647, 2147483647,
+       2147483648, 2147483648, 2147483648, 2147483648,
+     },
+     {
+         1,   1,   1,   1,
+         1,   1,   1,   1,
+         0,   0,   0,   0,
+         0,   0,   0,   0,
+     },
+   },
+   {
+     { 4294967295 },
+     {
+                 0,          0,          0,          0,
+                 1,          1,          1,          1,
+                 2,          2,          2,          2,
+        4294967295, 4294967295, 4294967295, 4294967295,
+     },
+     {
+          1,   1,   1,   1,
+          1,   1,   1,   1,
+          1,   1,   1,   1,
+          0,   0,   0,   0,
+     },
+   },
+ };
+ 
+ uint64_t TEST_BINARY_DATA(uint64_t, ltu)[][3][N] =
+ {
+   {
+     { 9223372036854775807ull },
+     {
+                            0,                      0,                      0,                      0,
+                            1,                      1,                      1,                      1,
+       9223372036854775807ull, 9223372036854775807ull, 9223372036854775807ull, 9223372036854775807ull,
+       9223372036854775808ull, 9223372036854775808ull, 9223372036854775808ull, 9223372036854775808ull,
+     },
+     {
+         1,   1,   1,   1,
+         1,   1,   1,   1,
+         0,   0,   0,   0,
+         0,   0,   0,   0,
+     },
+   },
+   {
+     { 18446744073709551615ull },
+     {
+                              0,                       0,                       0,                       0,
+                              1,                       1,                       1,                       1,
+                              2,                       2,                       2,                       2,
+        18446744073709551615ull, 18446744073709551615ull, 18446744073709551615ull, 18446744073709551615ull,
+     },
+     {
+          1,   1,   1,   1,
+          1,   1,   1,   1,
+          1,   1,   1,   1,
+          0,   0,   0,   0,
+     },
+   },
+ };
+ 
  #endif
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsltu-run-1-u16.c gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsltu-run-1-u16.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsltu-run-1-u16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsltu-run-1-u16.c	Sun Dec  7 22:32:14 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ #include "vx_binary_data.h"
+ 
+ #define T    uint16_t
+ #define NAME ltu
+ 
+ DEF_VX_BINARY_CASE_0_WRAP(T, <, NAME)
+ 
+ #define TEST_DATA                        TEST_BINARY_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, x, n) RUN_VX_BINARY_CASE_0_WRAP(T, NAME, out, in, x, n)
+ 
+ #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsltu-run-1-u32.c gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsltu-run-1-u32.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsltu-run-1-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsltu-run-1-u32.c	Sun Dec  7 22:32:14 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ #include "vx_binary_data.h"
+ 
+ #define T    uint32_t
+ #define NAME ltu
+ 
+ DEF_VX_BINARY_CASE_0_WRAP(T, <, NAME)
+ 
+ #define TEST_DATA                        TEST_BINARY_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, x, n) RUN_VX_BINARY_CASE_0_WRAP(T, NAME, out, in, x, n)
+ 
+ #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsltu-run-1-u64.c gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsltu-run-1-u64.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsltu-run-1-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsltu-run-1-u64.c	Sun Dec  7 22:32:14 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ #include "vx_binary_data.h"
+ 
+ #define T    uint64_t
+ #define NAME ltu
+ 
+ DEF_VX_BINARY_CASE_0_WRAP(T, <, NAME)
+ 
+ #define TEST_DATA                        TEST_BINARY_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, x, n) RUN_VX_BINARY_CASE_0_WRAP(T, NAME, out, in, x, n)
+ 
+ #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsltu-run-1-u8.c gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsltu-run-1-u8.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsltu-run-1-u8.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsltu-run-1-u8.c	Sun Dec  7 22:32:14 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ #include "vx_binary_data.h"
+ 
+ #define T    uint8_t
+ #define NAME ltu
+ 
+ DEF_VX_BINARY_CASE_0_WRAP(T, <, NAME)
+ 
+ #define TEST_DATA                        TEST_BINARY_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, x, n) RUN_VX_BINARY_CASE_0_WRAP(T, NAME, out, in, x, n)
+ 
+ #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/base/pr122652.c gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/base/pr122652.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/base/pr122652.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/base/pr122652.c	Sun Dec  7 22:32:14 2025
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "riscv_vector.h"
+ 
+ int a;
+ int b();
+ 
+ int c() {
+   if (b())
+     a = 0;
+ }
+ 
+ void d() {
+   for (; c() + d;) {
+     long e, h;
+     char *f;
+     __rvv_uint16mf4_t g;
+     __rvv_uint8mf8x3_t i = __riscv_vlseg3e8ff_v_u8mf8x3(f, &h, e);
+     __riscv_vsoxseg3ei16_v_u8mf8x3(0, g, i, 0);
+   }
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/base/pr122656-1.c gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/base/pr122656-1.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/base/pr122656-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/base/pr122656-1.c	Sun Dec  7 22:32:14 2025
***************
*** 0 ****
--- 1,7 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "riscv_vector.h"
+ int a;
+ long b, c;
+ void d() { __riscv_vlseg2e32ff_v_i32mf2x2(&a, &c, b); } /* { dg-error "invalid argument to built-in function" } */
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/base/pr122656-2.c gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/base/pr122656-2.c
*** gcc-16-20251130/gcc/testsuite/gcc.target/riscv/rvv/base/pr122656-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gcc.target/riscv/rvv/base/pr122656-2.c	Sun Dec  7 22:32:14 2025
***************
*** 0 ****
--- 1,7 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "riscv_vector.h"
+ int a;
+ long b, c;
+ void d() { vint32mf2x2_t v = __riscv_vlseg2e32ff_v_i32mf2x2(&a, &c, b); }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gfortran.dg/alloc_comp_deep_copy_5.f90 gcc-16-20251207/gcc/testsuite/gfortran.dg/alloc_comp_deep_copy_5.f90
*** gcc-16-20251130/gcc/testsuite/gfortran.dg/alloc_comp_deep_copy_5.f90	Sun Nov 30 22:32:13 2025
--- gcc-16-20251207/gcc/testsuite/gfortran.dg/alloc_comp_deep_copy_5.f90	Sun Dec  7 22:32:15 2025
***************
*** 1,6 ****
  ! { dg-do run }
! ! { dg-additional-options "-Wa,--noexecstack" { target { ! *-*-darwin* } } }
! ! { dg-additional-options "-Wl,-z,noexecstack" { target { ! *-*-darwin* } } }
  !
  ! PR fortran/121628
  ! Test deep copy of recursive allocatable array components with multi-level
--- 1,6 ----
  ! { dg-do run }
! ! { dg-additional-options "-Wa,--noexecstack" { target gas } }
! ! { dg-additional-options "-Wl,-z,noexecstack" { target gld } }
  !
  ! PR fortran/121628
  ! Test deep copy of recursive allocatable array components with multi-level
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gfortran.dg/alloc_comp_deep_copy_6.f90 gcc-16-20251207/gcc/testsuite/gfortran.dg/alloc_comp_deep_copy_6.f90
*** gcc-16-20251130/gcc/testsuite/gfortran.dg/alloc_comp_deep_copy_6.f90	Sun Nov 30 22:32:13 2025
--- gcc-16-20251207/gcc/testsuite/gfortran.dg/alloc_comp_deep_copy_6.f90	Sun Dec  7 22:32:15 2025
***************
*** 1,6 ****
  ! { dg-do run }
! ! { dg-additional-options "-Wa,--noexecstack" { target { ! *-*-darwin* } } }
! ! { dg-additional-options "-Wl,-z,noexecstack" { target { ! *-*-darwin* } } }
  !
  ! PR fortran/121628
  ! Test deep copy of recursive allocatable components with both data arrays
--- 1,6 ----
  ! { dg-do run }
! ! { dg-additional-options "-Wa,--noexecstack" { target gas } }
! ! { dg-additional-options "-Wl,-z,noexecstack" { target gld } }
  !
  ! PR fortran/121628
  ! Test deep copy of recursive allocatable components with both data arrays
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gfortran.dg/array_constructor_typespec_1.f90 gcc-16-20251207/gcc/testsuite/gfortran.dg/array_constructor_typespec_1.f90
*** gcc-16-20251130/gcc/testsuite/gfortran.dg/array_constructor_typespec_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gfortran.dg/array_constructor_typespec_1.f90	Sun Dec  7 22:32:15 2025
***************
*** 0 ****
--- 1,326 ----
+ ! { dg-do run }
+ ! PR fortran/107721 - array constructor type-spec lost with parentheses
+ ! PR fortran/102417 - character array constructor type-spec lost
+ !
+ ! Tests type-spec preservation in array constructors with parentheses,
+ ! nested constructors, and CLASS(*) type verification for all intrinsic types.
+ 
+ program array_constructor_typespec_1
+     implicit none
+     integer :: i, iscalar
+     integer, dimension(2) :: iarr
+     real, dimension(2) :: rarr
+     real :: rscalar
+     complex, dimension(2) :: carr
+     complex :: cscalar
+     logical, dimension(2) :: larr
+     character(4), dimension(3) :: charr
+     character(8), dimension(2) :: charr8
+     character(16), dimension(3) :: charr16
+     character(16), dimension(2) :: charr16_2
+     character(:), allocatable :: charr17(:)
+     character :: x = 'a', y = 'b'
+     class(*), allocatable :: res(:)
+     character(10), dimension(1) :: charr10
+     character(4), dimension(1) :: charr4_1
+     character(:), allocatable :: charr0(:)
+     character(4), dimension(0) :: empty4
+ 
+     ! INTEGER - runtime value checks
+     iarr = [integer :: [1.0], [2.0]]
+     if (any(iarr /= [1, 2])) stop 1
+     iarr = [integer :: ([1.0]), ([2.0])]
+     if (any(iarr /= [1, 2])) stop 2
+     iarr = [integer :: ((([1.0]))), [2.0]]
+     if (any(iarr /= [1, 2])) stop 3
+ 
+     ! REAL - runtime value checks
+     rarr = [real :: [2], [3]]
+     if (any(rarr /= [2.0, 3.0])) stop 4
+     rarr = [real :: ([2]), ([3])]
+     if (any(rarr /= [2.0, 3.0])) stop 5
+     rarr = [real :: ((([2]))), [3]]
+     if (any(rarr /= [2.0, 3.0])) stop 6
+ 
+     ! COMPLEX - runtime value checks
+     carr = [complex :: [3], [4]]
+     if (any(carr /= [(3.0, 0.0), (4.0, 0.0)])) stop 7
+     carr = [complex :: ([3]), ([4])]
+     if (any(carr /= [(3.0, 0.0), (4.0, 0.0)])) stop 8
+     carr = [complex :: ((([3]))), [4]]
+     if (any(carr /= [(3.0, 0.0), (4.0, 0.0)])) stop 9
+ 
+     ! LOGICAL - runtime value checks
+     larr = [logical :: [.true.], [.false.]]
+     if (any(larr .neqv. [.true., .false.])) stop 10
+     larr = [logical :: ([.true.]), ([.false.])]
+     if (any(larr .neqv. [.true., .false.])) stop 11
+ 
+     ! CHARACTER - runtime value checks (PR 102417)
+     charr = [character(4) :: 'a', 'b', 'c']
+     if (any(charr /= ['a   ', 'b   ', 'c   '])) stop 12
+     charr = [character(4) :: ('a'), 'b', 'c']
+     if (any(charr /= ['a   ', 'b   ', 'c   '])) stop 13
+     charr = [[character(4) :: 'a', 'b', 'c']]
+     if (any(charr /= ['a   ', 'b   ', 'c   '])) stop 14
+ 
+     ! CHARACTER with nested constructors - length 8
+     charr8 = [character(8) :: 'x', 'y']
+     if (charr8(1) /= 'x       ') stop 15
+     if (charr8(2) /= 'y       ') stop 16
+ 
+     charr8 = [character(8) :: ['a', 'b']]
+     if (charr8(1) /= 'a       ') stop 17
+     if (charr8(2) /= 'b       ') stop 18
+ 
+     ! Outer constructor without type-spec, inner with type-spec.
+     ! With proper type-spec propagation, no length mismatch warning is needed.
+     charr8 = [[character(8) :: ['a', 'b']]]
+     if (charr8(1) /= 'a       ') stop 19
+     if (charr8(2) /= 'b       ') stop 20
+ 
+     ! Triple-nested constructor with type-spec in middle.
+     charr8 = [[[character(8) :: ['a', 'b']]]]
+     if (charr8(1) /= 'a       ') stop 21
+     if (charr8(2) /= 'b       ') stop 22
+ 
+     charr8 = [character(8) :: (x), (y)]
+     if (charr8(1) /= 'a       ') stop 23
+     if (charr8(2) /= 'b       ') stop 24
+ 
+     charr8 = [[character(8) :: (x), (y)]]
+     if (charr8(1) /= 'a       ') stop 25
+     if (charr8(2) /= 'b       ') stop 26
+ 
+     ! CHARACTER concatenation with parentheses (PR 107721 comment 14)
+     charr16_2 = [character(16) :: 'a' // 'c', 'b' // 'de']
+     if (charr16_2(1) /= 'ac              ') stop 101
+     if (charr16_2(2) /= 'bde             ') stop 102
+ 
+     charr16_2 = [character(16) :: 'a' // 'c', ('b' // 'de')]
+     if (charr16_2(1) /= 'ac              ') stop 103
+     if (charr16_2(2) /= 'bde             ') stop 104
+ 
+     charr16_2 = [character(16) :: ('a' // 'c'), 'b' // 'de']
+     if (charr16_2(1) /= 'ac              ') stop 105
+     if (charr16_2(2) /= 'bde             ') stop 106
+ 
+     ! CHARACTER concatenation after constructor - verify length 17
+     charr17 = [character(16) :: 'a' // 'c', 'b' // 'de'] // '|'
+     if (len(charr17) /= 17) stop 107
+     if (charr17(1) /= 'ac              |') stop 108
+     if (charr17(2) /= 'bde             |') stop 109
+ 
+     charr17 = [character(16) :: 'a' // 'c', ('b' // 'de')] // '|'
+     if (len(charr17) /= 17) stop 110
+     if (charr17(1) /= 'ac              |') stop 111
+     if (charr17(2) /= 'bde             |') stop 112
+ 
+     charr17 = [character(16) :: ('a' // 'c'), 'b' // 'de'] // '|'
+     if (len(charr17) /= 17) stop 113
+     if (charr17(1) /= 'ac              |') stop 114
+     if (charr17(2) /= 'bde             |') stop 115
+ 
+     ! CHARACTER - longer length 16
+     charr16 = [character(16) :: 'a', 'b', 'c']
+     if (charr16(1) /= 'a               ') stop 27
+     if (charr16(2) /= 'b               ') stop 28
+     if (charr16(3) /= 'c               ') stop 29
+ 
+     charr16 = [[character(16) :: 'a', 'b', 'c']]
+     if (charr16(1) /= 'a               ') stop 30
+     if (charr16(2) /= 'b               ') stop 31
+     if (charr16(3) /= 'c               ') stop 32
+ 
+     ! CHARACTER - truncation cases
+     charr8 = [character(8) :: 'abcdefghij', 'klmnopqrst']
+     if (charr8(1) /= 'abcdefgh') stop 33
+     if (charr8(2) /= 'klmnopqr') stop 34
+ 
+     charr8 = [[character(8) :: 'abcdefghij', 'klmnopqrst']]
+     if (charr8(1) /= 'abcdefgh') stop 35
+     if (charr8(2) /= 'klmnopqr') stop 36
+ 
+     ! Implied-do with parentheses
+     iarr = [integer :: (/(1.0*i, i=1, 2)/)]
+     if (any(iarr /= [1, 2])) stop 37
+     iarr = [integer :: ((/(1.0*i, i=1, 2)/))]
+     if (any(iarr /= [1, 2])) stop 38
+ 
+     ! Type verification with CLASS(*) - ensure types are actually converted
+     res = [integer :: ([1.0])]
+     call verify_integer (res, 42)
+     deallocate (res)
+ 
+     res = [integer :: ([1.0]), ([2.0])]
+     call verify_integer (res, 43)
+     deallocate (res)
+ 
+     res = [real :: ([2]), [3]]
+     call verify_real (res, 44)
+     deallocate (res)
+ 
+     res = [complex :: ([3])]
+     call verify_complex (res, 45)
+     deallocate (res)
+ 
+     res = [logical :: ([.true.]), [.false.]]
+     call verify_logical (res, 46)
+     deallocate (res)
+ 
+     ! Parenthesized constructors - verify result TYPE not just value
+     res = [integer :: ([1.0])] ** 2
+     call verify_integer (res, 47)
+     deallocate (res)
+ 
+     res = [real :: ([2]), [3]] ** 2
+     call verify_real (res, 48)
+     deallocate (res)
+ 
+     res = [complex :: ([3])] ** 2
+     call verify_complex (res, 49)
+     deallocate (res)
+ 
+     ! Harald's test cases from Comment #17 - scalar // constructor patterns
+     charr17 = '|' // [character(16) :: 'a' // 'c', 'b' // 'de']
+     if (len(charr17) /= 17) stop 116
+     if (charr17(1) /= '|ac              ') stop 117
+     if (charr17(2) /= '|bde             ') stop 118
+ 
+     charr17 = '|' // [character(16) :: 'a' // 'c', ('b' // 'de')]
+     if (len(charr17) /= 17) stop 119
+     if (charr17(1) /= '|ac              ') stop 120
+     if (charr17(2) /= '|bde             ') stop 121
+ 
+     charr17 = '|' // [character(16) :: ('a' // 'c'), 'b' // 'de']
+     if (len(charr17) /= 17) stop 122
+     if (charr17(1) /= '|ac              ') stop 123
+     if (charr17(2) /= '|bde             ') stop 124
+ 
+     ! Comment #11: Nested array constructor with concatenation
+     ! The inner ['a','b'] must be padded to length 16 before concat
+     charr17 = [character(16) :: ['a', 'b']] // '|'
+     if (len(charr17) /= 17) stop 125
+     if (charr17(1) /= 'a               |') stop 126
+     if (charr17(2) /= 'b               |') stop 127
+ 
+     ! Comment #18: Outer constructor without type-spec wrapping inner with
+     ! type-spec.  The type-spec must be propagated when flattening.
+     charr17 = [[character(16) :: ['a', 'b']]] // '|'
+     if (len(charr17) /= 17) stop 128
+     if (charr17(1) /= 'a               |') stop 129
+     if (charr17(2) /= 'b               |') stop 130
+ 
+     charr17 = '|' // [[character(16) :: ['a', 'b']]]
+     if (len(charr17) /= 17) stop 131
+     if (charr17(1) /= '|a               ') stop 132
+     if (charr17(2) /= '|b               ') stop 133
+ 
+     ! Harald's new test cases from Comment #22 - nested truncation and padding
+     ! [ character(2) :: ['abcd','efgh'] ] should truncate to 'ab', 'ef'
+     ! Then [ character(16) :: ... ] should pad to 'ab              ', 'ef              '
+ 
+     charr16_2 = [ character(16) ::  [ character(2) :: ['abcd','efgh'] ] ]
+     if (charr16_2(1) /= 'ab              ') stop 134
+     if (charr16_2(2) /= 'ef              ') stop 135
+ 
+     charr17 = [ character(16) ::  [ character(2) :: ['abcd','efgh'] ] ] // "|"
+     if (len(charr17) /= 17) stop 136
+     if (charr17(1) /= 'ab              |') stop 137
+     if (charr17(2) /= 'ef              |') stop 138
+ 
+     charr17 = "|" // [ character(16) ::  [ character(2) :: ['abcd','efgh'] ] ]
+     if (len(charr17) /= 17) stop 139
+     if (charr17(1) /= '|ab              ') stop 140
+     if (charr17(2) /= '|ef              ') stop 141
+ 
+     charr16_2 = [ character(16) :: ([ character(2) :: ['abcd','efgh'] ])]
+     if (charr16_2(1) /= 'ab              ') stop 142
+     if (charr16_2(2) /= 'ef              ') stop 143
+ 
+     charr17 = [ character(16) :: ([ character(2) :: ['abcd','efgh'] ])] // "|"
+     if (len(charr17) /= 17) stop 144
+     if (charr17(1) /= 'ab              |') stop 145
+     if (charr17(2) /= 'ef              |') stop 146
+ 
+     charr17 = "|" // [ character(16) :: ([ character(2) :: ['abcd','efgh'] ])]
+     if (len(charr17) /= 17) stop 147
+     if (charr17(1) /= '|ab              ') stop 148
+     if (charr17(2) /= '|ef              ') stop 149
+     deallocate (charr17)
+ 
+     ! Additional torture tests
+     ! Triple nesting with explicit types: 'abcde'(5) -> 'ab'(2) -> 'ab        '(10)
+     charr10 = [character(10) :: [character(2) :: [character(5) :: 'abcde']]]
+     if (charr10(1) /= 'ab        ') stop 150
+ 
+     ! Concatenation of constructors
+     ! 'a'(2) // 'b'(3) -> 'a b  '(5) -> 'a b '(4)
+     charr4_1 = [character(4) :: [character(2) :: 'a'] // [character(3) :: 'b']]
+     if (charr4_1(1) /= 'a b ') stop 151
+ 
+     ! Zero length strings
+     ! Inner zero length: 'abc' -> ''(0) -> '    '(4)
+     charr4_1 = [character(4) :: [character(0) :: 'abc']]
+     if (charr4_1(1) /= '    ') stop 152
+ 
+     ! Outer zero length: 'abc' -> 'abc '(4) -> ''(0)
+     charr0 = [character(0) :: [character(4) :: 'abc']]
+     if (len(charr0) /= 0) stop 153
+     if (charr0(1) /= '') stop 154
+     deallocate (charr0)
+ 
+     ! Empty array constructors
+     empty4 = [character(4) :: ]
+     if (size(empty4) /= 0) stop 155
+     
+     empty4 = [character(4) :: [character(2) :: ]]
+     if (size(empty4) /= 0) stop 156
+ 
+ contains
+ 
+     subroutine verify_integer (x, stopcode)
+         class(*), intent(in) :: x(:)
+         integer,  intent(in) :: stopcode
+         select type (x)
+         type is (integer)
+             ! Correct type
+         class default
+             stop stopcode
+         end select
+     end subroutine verify_integer
+ 
+     subroutine verify_real (x, stopcode)
+         class(*), intent(in) :: x(:)
+         integer,  intent(in) :: stopcode
+         select type (x)
+         type is (real)
+             ! Correct type
+         class default
+             stop stopcode
+         end select
+     end subroutine verify_real
+ 
+     subroutine verify_complex (x, stopcode)
+         class(*), intent(in) :: x(:)
+         integer,  intent(in) :: stopcode
+         select type (x)
+         type is (complex)
+             ! Correct type
+         class default
+             stop stopcode
+         end select
+     end subroutine verify_complex
+ 
+     subroutine verify_logical (x, stopcode)
+         class(*), intent(in) :: x(:)
+         integer,  intent(in) :: stopcode
+         select type (x)
+         type is (logical)
+             ! Correct type
+         class default
+             stop stopcode
+         end select
+     end subroutine verify_logical
+ 
+ end program array_constructor_typespec_1
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gfortran.dg/contiguous_16.f90 gcc-16-20251207/gcc/testsuite/gfortran.dg/contiguous_16.f90
*** gcc-16-20251130/gcc/testsuite/gfortran.dg/contiguous_16.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gfortran.dg/contiguous_16.f90	Sun Dec  7 22:32:15 2025
***************
*** 0 ****
--- 1,51 ----
+ ! { dg-do run }
+ ! { dg-options "-O2 -fdump-tree-original" }
+ !
+ ! PR fortran/122977 - associate to a contiguous pointer
+ 
+ program foo
+   integer, dimension(:), pointer, contiguous :: a
+   integer, dimension(:), allocatable         :: u
+   allocate (a(4), u(4))
+   if (.not. is_contiguous(a)) error stop 1      ! optimized
+   if (.not. is_contiguous(u)) error stop 2      ! optimized
+ 
+   associate (b => a)
+     if (.not. is_contiguous(b)) error stop 3    ! optimized
+     associate (c => b)
+       if (.not. is_contiguous(c)) error stop 4  ! optimized
+     end associate
+     associate (c => b(1::2))
+       if (is_contiguous(c)) stop 11             ! runtime check
+     end associate
+   end associate
+ 
+   associate (v => u)
+     if (.not. is_contiguous(v)) error stop 5    ! optimized
+     associate (w => v)
+       if (.not. is_contiguous(w)) error stop 6  ! optimized
+     end associate
+     associate (w => v(1::2))
+       if (is_contiguous(w)) stop 12             ! runtime check
+     end associate
+   end associate
+ 
+   associate (b => a(1::2))
+     if (is_contiguous(b)) stop 13               ! runtime check
+     associate (c => b)
+       if (is_contiguous(c)) stop 14             ! runtime check
+     end associate
+   end associate
+ 
+   associate (v => u(1::2))
+     if (is_contiguous(v)) stop 15               ! runtime check
+     associate (w => v)
+       if (is_contiguous(w)) stop 16             ! runtime check
+     end associate
+   end associate
+ 
+   deallocate (a, u)
+ end program foo
+ 
+ ! { dg-final { scan-tree-dump-not "_gfortran_error_stop_numeric" "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_stop_numeric" 6 "original" } }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gfortran.dg/gomp/dyn_groupprivate-1.f90 gcc-16-20251207/gcc/testsuite/gfortran.dg/gomp/dyn_groupprivate-1.f90
*** gcc-16-20251130/gcc/testsuite/gfortran.dg/gomp/dyn_groupprivate-1.f90	Sun Nov 30 22:32:13 2025
--- gcc-16-20251207/gcc/testsuite/gfortran.dg/gomp/dyn_groupprivate-1.f90	Sun Dec  7 22:32:15 2025
***************
*** 1,3 ****
--- 1,6 ----
+ ! { dg-do compile }
+ ! { dg-additional-options "-fdump-tree-original" }
+ 
  implicit none
  
  integer :: N
*************** N = 1024
*** 18,20 ****
--- 21,29 ----
  !$omp target dyn_groupprivate ( fallback ( default_mem ) : N)  ! { dg-message "sorry, unimplemented: 'dyn_groupprivate' clause" }
  !$omp end target
  end
+ 
+ ! { dg-final { scan-tree-dump-times "#pragma omp target dyn_groupprivate\\(1024\\)" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "#pragma omp target dyn_groupprivate\\(D\\.\[0-9\]+\\)" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "#pragma omp target dyn_groupprivate\\(fallback\\(abort\\):n\\)" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "#pragma omp target dyn_groupprivate\\(fallback\\(null\\):n\\)" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "#pragma omp target dyn_groupprivate\\(fallback\\(default_mem\\):n\\)" 1 "original" } }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gfortran.dg/gomp/dyn_groupprivate-2.f90 gcc-16-20251207/gcc/testsuite/gfortran.dg/gomp/dyn_groupprivate-2.f90
*** gcc-16-20251130/gcc/testsuite/gfortran.dg/gomp/dyn_groupprivate-2.f90	Sun Nov 30 22:32:13 2025
--- gcc-16-20251207/gcc/testsuite/gfortran.dg/gomp/dyn_groupprivate-2.f90	Sun Dec  7 22:32:15 2025
***************
*** 1,3 ****
--- 1,5 ----
+ ! { dg-do compile }
+ 
  implicit none
  
  integer, parameter :: M = 1024
*************** integer :: N, A(1)
*** 5,14 ****
  
  N = 1024
  
! !$omp target dyn_groupprivate(-123)  ! { dg-warning "INTEGER expression of DYN_GROUPPRIVATE clause at .1. must be positive \\\[-Wopenmp\\\]" }
  block; end block
  
! !$omp target dyn_groupprivate (0 * M)  ! { dg-warning "INTEGER expression of DYN_GROUPPRIVATE clause at .1. must be positive \\\[-Wopenmp\\\]" }
  block; end block
  
  !$omp target dyn_groupprivate ( fallback ( other ) : N)  ! { dg-error "Failed to match clause" }
--- 7,22 ----
  
  N = 1024
  
! !$omp target dyn_groupprivate(0)  ! OK, zero is permitted
  block; end block
  
! !$omp target dyn_groupprivate(0)  dyn_groupprivate(0)  ! { dg-error "Duplicated 'dyn_groupprivate' clause" }
! block; end block
! 
! !$omp target dyn_groupprivate(-123)  ! { dg-warning "INTEGER expression of DYN_GROUPPRIVATE clause at .1. must be non-negative \\\[-Wopenmp\\\]" }
! block; end block
! 
! !$omp target dyn_groupprivate (0 * M-1)  ! { dg-warning "INTEGER expression of DYN_GROUPPRIVATE clause at .1. must be non-negative \\\[-Wopenmp\\\]" }
  block; end block
  
  !$omp target dyn_groupprivate ( fallback ( other ) : N)  ! { dg-error "Failed to match clause" }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gfortran.dg/pdt_71.f03 gcc-16-20251207/gcc/testsuite/gfortran.dg/pdt_71.f03
*** gcc-16-20251130/gcc/testsuite/gfortran.dg/pdt_71.f03	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gfortran.dg/pdt_71.f03	Sun Dec  7 22:32:15 2025
***************
*** 0 ****
--- 1,44 ----
+ ! { dg-do compile }
+ ! { dg-options "-fdump-tree-original" }
+ !
+ ! Test the second part of the fix for PR103371.
+ !
+ ! Compiled but gave the wrong result for the component 'z%x%n'.
+ !
+ ! Contributed by Arseny Solokha  <asolokha@gmx.com>
+ !
+ module m1
+   implicit none
+   type t
+     integer :: n
+   end type
+   type t2
+     ! t and t2 must be resolved to types in m1, not components in t2
+     type(t) :: t(10) = t(1)
+     type(t) :: x = t(1)
+     integer :: t2
+     type(t2), pointer :: p => NULL()
+   end type
+ end
+ 
+ module m2
+   type :: t(tn)
+     integer, kind :: tn
+     integer(kind=tn) :: n
+   end type
+   type :: t2(tm)
+     integer, kind :: tm
+     type(t(tm)) :: x = t(tm)(2*tm)
+   end type
+ end
+ 
+   call test_m2
+ contains
+   subroutine test_m2
+     use m2
+     type(t2(KIND (1))) :: z
+     print *, kind (z%x%n), z%x%n
+   end subroutine
+ end
+ ! { dg-final { scan-tree-dump-times "Pdtt2_4.1.x.n = 8" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "z = Pdtt2_4.1" 1 "original" } }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gfortran.dg/pdt_72.f03 gcc-16-20251207/gcc/testsuite/gfortran.dg/pdt_72.f03
*** gcc-16-20251130/gcc/testsuite/gfortran.dg/pdt_72.f03	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gfortran.dg/pdt_72.f03	Sun Dec  7 22:32:15 2025
***************
*** 0 ****
--- 1,110 ----
+ ! { dg-do compile }
+ !
+ ! Tests the fix for pr122578, which failed in compilation with the errors
+ ! shown below.
+ !
+ ! Contributed by Damian Rouson  <damian@archaeologic.codes>
+ !
+ module tensor_map_m
+   use iso_c_binding, only :  c_int
+   implicit none
+ 
+   type tensor_t(k)
+     integer, kind :: k = kind(1.)
+     real(k), allocatable :: values_(:) ! Error: Cannot convert REAL(0) to REAL(4) at (1)
+   contains
+     generic   :: values => default_real_values
+     procedure default_real_values
+   end type
+ 
+   interface
+     pure module function default_real_values(self) result(tensor_values)
+       implicit none
+       class(tensor_t), intent(in) :: self
+       real, allocatable :: tensor_values(:)
+     end function
+   end interface
+ 
+   type tensor_map_t(k)
+     integer, kind :: k = kind(1.)
+     real(k), dimension(:), allocatable :: intercept_, slope_
+   contains
+     generic :: map_to_training_range    => default_real_map_to_training_range
+     procedure :: default_real_map_to_training_range
+     generic :: map_from_training_range  => default_real_map_from_training_range
+     procedure :: default_real_map_from_training_range
+   end type
+ 
+   interface
+     elemental module function default_real_map_to_training_range(self, tensor) result(normalized_tensor)
+       implicit none
+       class(tensor_map_t), intent(in) :: self
+       type(tensor_t), intent(in) :: tensor
+       type(tensor_t) normalized_tensor
+     end function
+ 
+     elemental module function default_real_map_from_training_range(self, tensor) result(unnormalized_tensor)
+       implicit none
+       class(tensor_map_t), intent(in) :: self
+       type(tensor_t), intent(in) :: tensor
+       type(tensor_t) unnormalized_tensor
+     end function
+   end interface
+ 
+   type activation_t
+     integer(c_int) :: selection_
+   contains
+     generic :: evaluate => default_real_evaluate
+     procedure default_real_evaluate
+   end type
+ 
+   interface
+     elemental module function default_real_evaluate(self, x) result(y)
+       implicit none
+       class(activation_t), intent(in) :: self
+       real, intent(in) :: x 
+       real y 
+     end function
+   end interface
+ 
+   type neural_network_t(k)
+     integer, kind :: k = kind(1.)
+     type(tensor_map_t(k)) input_map_, output_map_
+     real(k), allocatable :: weights_(:,:,:), biases_(:,:)
+     integer, allocatable :: nodes_(:)
+     type(activation_t) :: activation_
+   contains
+     generic :: infer => default_real_infer
+     procedure default_real_infer
+   end type
+ 
+   integer, parameter :: input_layer = 0 
+ contains
+   elemental function default_real_infer(self, inputs) result(outputs)
+     class(neural_network_t), intent(in) :: self
+     type(tensor_t), intent(in) :: inputs
+     type(tensor_t) outputs
+     real, allocatable :: a(:,:)
+     integer l
+     associate(w => self%weights_, b => self%biases_, n => self%nodes_, output_layer => ubound(self%nodes_,1))
+       allocate(a(maxval(n), input_layer:output_layer))
+       associate(normalized_inputs => self%input_map_%map_to_training_range(inputs))
+         a(1:n(input_layer),input_layer) = normalized_inputs%values() ! Error: Symbol ‘normalized_inputs’
+                                                                      ! at (1) has no IMPLICIT type
+ 
+       end associate
+       feed_forward: &
+       do l = input_layer+1, output_layer
+         associate(z => matmul(w(1:n(l),1:n(l-1),l), a(1:n(l-1),l-1)) + b(1:n(l),l))
+           a(1:n(l),l) = self%activation_%evaluate(z)
+         end associate
+       end do feed_forward
+       associate(normalized_outputs => tensor_t(a(1:n(output_layer), output_layer)))
+         outputs = self%output_map_%map_from_training_range(normalized_outputs) ! Error: Found no matching specific
+                                                                                ! binding for the call to the GENERIC
+                                                                                ! ‘map_from_training_range’ at (1)
+ 
+       end associate
+     end associate
+   end function
+ end module
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gfortran.dg/pdt_73.f03 gcc-16-20251207/gcc/testsuite/gfortran.dg/pdt_73.f03
*** gcc-16-20251130/gcc/testsuite/gfortran.dg/pdt_73.f03	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gfortran.dg/pdt_73.f03	Sun Dec  7 22:32:15 2025
***************
*** 0 ****
--- 1,18 ----
+ ! { dg-do compile }
+ !
+ ! Tests the fix for pr122669, which falied with the error below.
+ !
+ ! Contributed by Damian Rouson  <damian@archaeologic.codes>
+ !
+   implicit none
+   type tensor_t
+     real, allocatable :: values_
+   end type
+   type(tensor_t) :: random_inputs(1)
+   type(tensor_t), allocatable :: outputs(:)
+ 
+   random_inputs = [tensor_t(1.0)]
+   allocate(outputs, mold=random_inputs) ! Error: Array specification or array-valued
+                                         ! SOURCE= expression required in ALLOCATE statement at (1)
+   print *, size(outputs)
+ end 
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gfortran.dg/pdt_74.f03 gcc-16-20251207/gcc/testsuite/gfortran.dg/pdt_74.f03
*** gcc-16-20251130/gcc/testsuite/gfortran.dg/pdt_74.f03	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gfortran.dg/pdt_74.f03	Sun Dec  7 22:32:15 2025
***************
*** 0 ****
--- 1,48 ----
+ ! { dg-do compile }
+ !
+ ! Tests the fix for pr122670, where use only did not compile for PDTs. Also, it
+ ! was found in the course of developing the fix that import only did not work
+ ! either.
+ !
+ ! Contributed by Damian Rouson  <damian@archaeologic.codes>
+ !
+ module tensor_m
+   implicit none
+ 
+   type tensor_t(k)
+     integer, kind :: k = kind(0.)
+     real(k), allocatable :: value_
+   end type
+ 
+   interface
+     function myfunc (arg)
+       import tensor_t
+       implicit none
+       type (tensor_t) myfunc
+       type (tensor_t), intent(in) :: arg
+     end function
+   end interface
+ 
+ contains
+   function y(x)
+     type(tensor_t) x, y
+     y = tensor_t(x%value_)
+   end function
+ end module
+ 
+ function myfunc (arg)
+   use tensor_m, only : tensor_t
+   implicit none
+   type (tensor_t) myfunc
+   type (tensor_t), intent(in) :: arg
+   myfunc = arg
+   myfunc%value_ = myfunc%value_ * 2.0
+ end function
+ 
+   use tensor_m, only : tensor_t, y, myfunc
+   implicit none
+   type(tensor_t) desired_output
+   desired_output = y(tensor_t(42.))
+   desired_output = myfunc (desired_output)
+   print *, desired_output%value_
+ end
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gfortran.dg/pdt_75.f03 gcc-16-20251207/gcc/testsuite/gfortran.dg/pdt_75.f03
*** gcc-16-20251130/gcc/testsuite/gfortran.dg/pdt_75.f03	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gfortran.dg/pdt_75.f03	Sun Dec  7 22:32:15 2025
***************
*** 0 ****
--- 1,35 ----
+ ! { dg-do compile }
+ !
+ ! Tests the fix for pr122693, which failed in compilation with the errors
+ ! shown below.
+ !
+ ! Contributed by Damian Rouson  <damian@archaeologic.codes>
+ !
+ module tensor_m
+   implicit none
+ 
+   type tensor_t(k)
+     integer, kind :: k = kind(0.)
+   end type
+ 
+   interface tensor_t
+     module function tensor(unused_stuff)
+       implicit none
+       real unused_stuff
+       type(tensor_t) tensor
+     end function
+   end interface
+ 
+ end module
+ 
+   use tensor_m
+   implicit none
+ contains
+   function test_passed()
+     logical test_passed
+     type(tensor_t), allocatable :: tensor_array(:)
+     real, parameter :: junk = 0.
+     tensor_array = [tensor_t(junk)] !Error: Symbol ‘junk’ at (1) has no IMPLICIT type
+     test_passed =  .false.          !Error: ‘test_passed’ at (1) is not a variable
+   end function
+ end
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gfortran.dg/pdt_76.f03 gcc-16-20251207/gcc/testsuite/gfortran.dg/pdt_76.f03
*** gcc-16-20251130/gcc/testsuite/gfortran.dg/pdt_76.f03	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/gfortran.dg/pdt_76.f03	Sun Dec  7 22:32:15 2025
***************
*** 0 ****
--- 1,21 ----
+ ! { dg-do compile }
+ 
+ ! Make sure that pr103414 is fixed.
+ !
+ ! Contributed by Gerhard Steinmetz  <gscfq@t-online.de>
+ !
+ function p ()
+    type t(n)
+       integer, kind :: n
+       character(n) :: c = ''
+    end type
+    type(t(3)) :: x = t(z'1') ! { dg-error "Expected an initialization expression" }
+ end
+ 
+ function q ()
+    type t(n)
+       integer, kind :: n
+       character(n) :: c = ''
+    end type
+    type(t(3)) :: x(1) = [t(z'1')] ! { dg-error "Syntax error in array constructor" }
+ end
diff -Nrcpad gcc-16-20251130/gcc/testsuite/gnat.dg/reduce1.adb gcc-16-20251207/gcc/testsuite/gnat.dg/reduce1.adb
*** gcc-16-20251130/gcc/testsuite/gnat.dg/reduce1.adb	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/gnat.dg/reduce1.adb	Sun Dec  7 22:32:15 2025
*************** procedure Reduce1 is
*** 7,14 ****
  
    A: Arr := (2, 87);
  
!   B: Positive := A'Reduce (1, Positive'Max); -- { dg-error "no suitable" }
! 
  begin
    null;
  end;
--- 7,13 ----
  
    A: Arr := (2, 87);
  
!   B: Positive := A'Reduce (1, Positive'Max); --  { dg-error "reducer must be a subprogram, an operator, or an attribute|possible swap of reducer and initial value" }
  begin
    null;
  end;
diff -Nrcpad gcc-16-20251130/gcc/testsuite/lib/gcc-defs.exp gcc-16-20251207/gcc/testsuite/lib/gcc-defs.exp
*** gcc-16-20251130/gcc/testsuite/lib/gcc-defs.exp	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/lib/gcc-defs.exp	Sun Dec  7 22:32:15 2025
*************** proc handle-dg-regexps { text } {
*** 553,559 ****
  
  	# Escape newlines in $rexp so that we can print them in
  	# pass/fail results.
! 	set escaped_regex [string map {"\n" "\\n"} $rexp]
  	verbose "escaped_regex: ${escaped_regex}" 4
  
  	set title "$testname_with_flags dg-regexp $linenum"
--- 553,559 ----
  
  	# Escape newlines in $rexp so that we can print them in
  	# pass/fail results.
! 	set escaped_regex [string map {"\n" "\\n" "\r" "\\r"} $rexp]
  	verbose "escaped_regex: ${escaped_regex}" 4
  
  	set title "$testname_with_flags dg-regexp $linenum"
diff -Nrcpad gcc-16-20251130/gcc/testsuite/lib/scanasm.exp gcc-16-20251207/gcc/testsuite/lib/scanasm.exp
*** gcc-16-20251130/gcc/testsuite/lib/scanasm.exp	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/lib/scanasm.exp	Sun Dec  7 22:32:15 2025
*************** proc configure_check-function-bodies { c
*** 885,890 ****
--- 885,892 ----
  	set up_config(end) {^\}$}
      } elseif { [istarget *-*-darwin*] } {
  	set up_config(end) {^LFE[0-9]+}
+     } elseif { [istarget aarch64*-*-mingw32] } {
+ 	set up_config(end) {seh_endproc}
      } else {
  	set up_config(end) {^\s*\.size}
      }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/lib/target-supports.exp gcc-16-20251207/gcc/testsuite/lib/target-supports.exp
*** gcc-16-20251130/gcc/testsuite/lib/target-supports.exp	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/lib/target-supports.exp	Sun Dec  7 22:32:15 2025
*************** proc check_effective_target_fentry { } {
*** 14762,14764 ****
--- 14762,14772 ----
  	}
      }]
  }
+ 
+ # Check if valgrind executable exists in PATH on host
+ proc check_effective_target_valgrind { } {
+     if { [which valgrind] != 0 } {
+         return 1
+     }
+     return 0
+ }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/borrowck/reference.rs gcc-16-20251207/gcc/testsuite/rust/borrowck/reference.rs
*** gcc-16-20251130/gcc/testsuite/rust/borrowck/reference.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/borrowck/reference.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,6 ****
--- 1,7 ----
  // { dg-additional-options "-frust-compile-until=compilation -frust-borrowcheck -fdiagnostics-show-caret -fdiagnostics-show-line-numbers" }
  // { dg-enable-nn-line-numbers "" }
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/borrowck/tmp.rs gcc-16-20251207/gcc/testsuite/rust/borrowck/tmp.rs
*** gcc-16-20251130/gcc/testsuite/rust/borrowck/tmp.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/borrowck/tmp.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,6 ****
--- 1,7 ----
  // { dg-additional-options "-frust-compile-until=compilation -frust-borrowcheck -fdiagnostics-show-caret -fdiagnostics-show-line-numbers" }
  // { dg-enable-nn-line-numbers "" }
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/additional-trait-bounds1.rs gcc-16-20251207/gcc/testsuite/rust/compile/additional-trait-bounds1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/additional-trait-bounds1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/additional-trait-bounds1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
! #![feature(optin_builtin_traits)]
  
  pub unsafe auto trait Send {}
  #[lang = "sync"]
--- 1,4 ----
! #![feature(optin_builtin_traits, lang_items)]
  
  pub unsafe auto trait Send {}
  #[lang = "sync"]
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/additional-trait-bounds2.rs gcc-16-20251207/gcc/testsuite/rust/compile/additional-trait-bounds2.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/additional-trait-bounds2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/additional-trait-bounds2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
! #![feature(optin_builtin_traits)]
  
  pub unsafe auto trait Send {}
  #[lang = "sync"]
--- 1,4 ----
! #![feature(optin_builtin_traits, lang_items)]
  
  pub unsafe auto trait Send {}
  #[lang = "sync"]
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/additional-trait-bounds2nr2.rs gcc-16-20251207/gcc/testsuite/rust/compile/additional-trait-bounds2nr2.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/additional-trait-bounds2nr2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/additional-trait-bounds2nr2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
! #![feature(optin_builtin_traits)]
  
  pub unsafe auto trait Send {}
  #[lang = "sync"]
--- 1,4 ----
! #![feature(optin_builtin_traits, lang_items)]
  
  pub unsafe auto trait Send {}
  #[lang = "sync"]
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/auto_traits1.rs gcc-16-20251207/gcc/testsuite/rust/compile/auto_traits1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/auto_traits1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/auto_traits1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,6 ****
  // { dg-additional-options "-frust-compile-until=typecheck" }
  
! #![feature(optin_builtin_traits)]
  
  pub unsafe auto trait Send {}
  #[lang = "sync"]
--- 1,6 ----
  // { dg-additional-options "-frust-compile-until=typecheck" }
  
! #![feature(optin_builtin_traits, lang_items)]
  
  pub unsafe auto trait Send {}
  #[lang = "sync"]
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/auto_traits2.rs gcc-16-20251207/gcc/testsuite/rust/compile/auto_traits2.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/auto_traits2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/auto_traits2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
! #![feature(optin_builtin_traits)]
  
  pub unsafe auto trait Send {}
  #[lang = "sync"]
--- 1,4 ----
! #![feature(optin_builtin_traits, lang_items)]
  
  pub unsafe auto trait Send {}
  #[lang = "sync"]
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/bad-rpit1.rs gcc-16-20251207/gcc/testsuite/rust/compile/bad-rpit1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/bad-rpit1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/bad-rpit1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/black_box.rs gcc-16-20251207/gcc/testsuite/rust/compile/black_box.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/black_box.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/black_box.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
  // { dg-options "-fdump-tree-gimple" }
! #![feature(rustc_attrs)]
  
  #[lang = "sized"]
  pub trait Sized {}
--- 1,5 ----
  // { dg-options "-fdump-tree-gimple" }
! #![feature(rustc_attrs, lang_items)]
  
  #[lang = "sized"]
  pub trait Sized {}
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/bounds1.rs gcc-16-20251207/gcc/testsuite/rust/compile/bounds1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/bounds1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/bounds1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/box_syntax_feature_gate.rs gcc-16-20251207/gcc/testsuite/rust/compile/box_syntax_feature_gate.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/box_syntax_feature_gate.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/box_syntax_feature_gate.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,5 ----
  // { dg-options "-frust-compile-until=lowering" }
+ #![feature(lang_items)]
  #[lang = "owned_box"]
  pub struct Box<T>;
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/braced_macro_arm.rs gcc-16-20251207/gcc/testsuite/rust/compile/braced_macro_arm.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/braced_macro_arm.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/braced_macro_arm.rs	Sun Dec  7 22:32:16 2025
*************** macro_rules! m {
*** 7,18 ****
  
  fn h(c: bool) {
      match c {
-         // { dg-error "failed to parse statement or expression in block expression" "" { target *-*-* } .-1 }
          true => m! {}
          false => ()
          // { dg-error "exprwithoutblock requires comma after match case expression in match arm \\(if not final case\\)" "" { target *-*-* } .-1 }
-         // { dg-error "unrecognised token .false. for start of item" "" { target *-*-* } .-2 }
-         // { dg-error "failed to parse item in crate" "" { target *-*-* } .-3 }
      };
  }
  
--- 7,15 ----
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/bug-with-default-generic.rs gcc-16-20251207/gcc/testsuite/rust/compile/bug-with-default-generic.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/bug-with-default-generic.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/bug-with-default-generic.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/canonical_paths1.rs gcc-16-20251207/gcc/testsuite/rust/compile/canonical_paths1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/canonical_paths1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/canonical_paths1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,5 ----
  // { dg-additional-options "-w -fdump-tree-gimple -frust-crate=example" }
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/cast_generics.rs gcc-16-20251207/gcc/testsuite/rust/compile/cast_generics.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/cast_generics.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/cast_generics.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/closure_no_type_anno.rs gcc-16-20251207/gcc/testsuite/rust/compile/closure_no_type_anno.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/closure_no_type_anno.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/closure_no_type_anno.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/cmp1.rs gcc-16-20251207/gcc/testsuite/rust/compile/cmp1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/cmp1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/cmp1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,6 ****
--- 1,7 ----
  // { dg-options "-w" }
  // taken from https://github.com/rust-lang/rust/blob/e1884a8e3c3e813aada8254edfa120e85bf5ffca/library/core/src/cmp.rs#L98
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/complex_qualified_path_in_expr.rs gcc-16-20251207/gcc/testsuite/rust/compile/complex_qualified_path_in_expr.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/complex_qualified_path_in_expr.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/complex_qualified_path_in_expr.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/const-issue1440.rs gcc-16-20251207/gcc/testsuite/rust/compile/const-issue1440.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/const-issue1440.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/const-issue1440.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,6 ****
--- 1,7 ----
  // { dg-additional-options "-w" }
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/const_generics_1.rs gcc-16-20251207/gcc/testsuite/rust/compile/const_generics_1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/const_generics_1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/const_generics_1.rs	Sun Dec  7 22:32:16 2025
***************
*** 3,8 ****
--- 3,9 ----
  // There are errors about unused generic parameters, but we can't handle that yet.
  // Still, this code is invalid Rust.
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/const_generics_10.rs gcc-16-20251207/gcc/testsuite/rust/compile/const_generics_10.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/const_generics_10.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/const_generics_10.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/const_generics_11.rs gcc-16-20251207/gcc/testsuite/rust/compile/const_generics_11.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/const_generics_11.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/const_generics_11.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
  // { dg-options "-w" }
! 
  #[lang = "sized"]
  trait Sized {}
  
--- 1,5 ----
  // { dg-options "-w" }
! #![feature(lang_items)]
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/const_generics_12.rs gcc-16-20251207/gcc/testsuite/rust/compile/const_generics_12.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/const_generics_12.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/const_generics_12.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
  // { dg-options "-w" }
! 
  #[lang = "sized"]
  trait Sized {}
  
--- 1,5 ----
  // { dg-options "-w" }
! #![feature(lang_items)]
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/const_generics_13.rs gcc-16-20251207/gcc/testsuite/rust/compile/const_generics_13.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/const_generics_13.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/const_generics_13.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/const_generics_14.rs gcc-16-20251207/gcc/testsuite/rust/compile/const_generics_14.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/const_generics_14.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/const_generics_14.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/const_generics_15.rs gcc-16-20251207/gcc/testsuite/rust/compile/const_generics_15.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/const_generics_15.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/const_generics_15.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/const_generics_16.rs gcc-16-20251207/gcc/testsuite/rust/compile/const_generics_16.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/const_generics_16.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/const_generics_16.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/const_generics_18.rs gcc-16-20251207/gcc/testsuite/rust/compile/const_generics_18.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/const_generics_18.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/const_generics_18.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/const_generics_19.rs gcc-16-20251207/gcc/testsuite/rust/compile/const_generics_19.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/const_generics_19.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/const_generics_19.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/const_generics_3.rs gcc-16-20251207/gcc/testsuite/rust/compile/const_generics_3.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/const_generics_3.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/const_generics_3.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/const_generics_8.rs gcc-16-20251207/gcc/testsuite/rust/compile/const_generics_8.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/const_generics_8.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/const_generics_8.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/const_generics_9.rs gcc-16-20251207/gcc/testsuite/rust/compile/const_generics_9.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/const_generics_9.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/const_generics_9.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
  // { dg-options "-w" }
! 
  #[lang = "sized"]
  trait Sized {}
  
--- 1,5 ----
  // { dg-options "-w" }
! #![feature(lang_items)]
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/decl_macro6.rs gcc-16-20251207/gcc/testsuite/rust/compile/decl_macro6.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/decl_macro6.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/decl_macro6.rs	Sun Dec  7 22:32:16 2025
***************
*** 2,5 ****
  macro m {}
  // { dg-error "unexpected token .\}. - expecting delimiters .for a macro matcher." "" { target *-*-* } .-1 }
  // { dg-error "required first macro rule in declarative macro definition could not be parsed" "" { target *-*-* } .-2 }
- // { dg-error "failed to parse item in crate" "" { target *-*-* } .-3 }
--- 2,4 ----
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/decl_macro7.rs gcc-16-20251207/gcc/testsuite/rust/compile/decl_macro7.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/decl_macro7.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/decl_macro7.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
  #![feature(decl_macro)]
  pub macro hello() [ "Hello" ]
  // { dg-error "only braces can be used for a macro transcriber in declarative macro definition" "" { target *-*-* } .-1 }
- // { dg-error "failed to parse item in crate" }
\ No newline at end of file
--- 1,3 ----
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/derive-debug1.rs gcc-16-20251207/gcc/testsuite/rust/compile/derive-debug1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/derive-debug1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/derive-debug1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/derive-default1.rs gcc-16-20251207/gcc/testsuite/rust/compile/derive-default1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/derive-default1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/derive-default1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[derive(Default)]
  struct Foo { _a: i32, _b: i64, _c: u8 }
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/derive-eq-invalid.rs gcc-16-20251207/gcc/testsuite/rust/compile/derive-eq-invalid.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/derive-eq-invalid.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/derive-eq-invalid.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  mod core {
      mod cmp {
          #[lang = "eq"]
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/derive-hash1.rs gcc-16-20251207/gcc/testsuite/rust/compile/derive-hash1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/derive-hash1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/derive-hash1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
! #![feature(intrinsics)]
  
  #[lang = "sized"]
  trait Sized {}
--- 1,4 ----
! #![feature(intrinsics, lang_items)]
  
  #[lang = "sized"]
  trait Sized {}
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/derive-partialeq1.rs gcc-16-20251207/gcc/testsuite/rust/compile/derive-partialeq1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/derive-partialeq1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/derive-partialeq1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
! #![feature(intrinsics)]
  
  #[lang = "sized"]
  trait Sized {}
--- 1,4 ----
! #![feature(intrinsics, lang_items)]
  
  #[lang = "sized"]
  trait Sized {}
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/derive_clone_enum1.rs gcc-16-20251207/gcc/testsuite/rust/compile/derive_clone_enum1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/derive_clone_enum1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/derive_clone_enum1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[lang = "clone"]
  trait Clone {
      pub fn clone(&self) -> Self;
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/derive_clone_enum2.rs gcc-16-20251207/gcc/testsuite/rust/compile/derive_clone_enum2.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/derive_clone_enum2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/derive_clone_enum2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[lang = "clone"]
  trait Clone {
      pub fn clone(&self) -> Self;
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/derive_clone_enum3.rs gcc-16-20251207/gcc/testsuite/rust/compile/derive_clone_enum3.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/derive_clone_enum3.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/derive_clone_enum3.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[lang = "clone"]
  trait Clone {
      pub fn clone(&self) -> Self;
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/derive_macro1.rs gcc-16-20251207/gcc/testsuite/rust/compile/derive_macro1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/derive_macro1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/derive_macro1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/derive_macro3.rs gcc-16-20251207/gcc/testsuite/rust/compile/derive_macro3.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/derive_macro3.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/derive_macro3.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/derive_macro4.rs gcc-16-20251207/gcc/testsuite/rust/compile/derive_macro4.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/derive_macro4.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/derive_macro4.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/derive_macro6.rs gcc-16-20251207/gcc/testsuite/rust/compile/derive_macro6.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/derive_macro6.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/derive_macro6.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/derive_partial_ord1.rs gcc-16-20251207/gcc/testsuite/rust/compile/derive_partial_ord1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/derive_partial_ord1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/derive_partial_ord1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,6 ****
  // { dg-additional-options "-w" }
  
! #![feature(intrinsics)]
  
  mod core {
      mod option {
--- 1,6 ----
  // { dg-additional-options "-w" }
  
! #![feature(intrinsics, lang_items)]
  
  mod core {
      mod option {
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/expand_macro_qual_path_in_type.rs gcc-16-20251207/gcc/testsuite/rust/compile/expand_macro_qual_path_in_type.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/expand_macro_qual_path_in_type.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/expand_macro_qual_path_in_type.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,6 ----
  // this SEGVs in lowering for now
  // { dg-additional-options "-frust-compile-until=nameresolution" }
+ #![feature(lang_items)]
  
  macro_rules! forward_ref_binop {
      (impl $imp:ident, $method:ident for $t:ty, $u:ty) => {
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/expected_type_args2.rs gcc-16-20251207/gcc/testsuite/rust/compile/expected_type_args2.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/expected_type_args2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/expected_type_args2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/expected_type_args3.rs gcc-16-20251207/gcc/testsuite/rust/compile/expected_type_args3.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/expected_type_args3.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/expected_type_args3.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/extern_generics.rs gcc-16-20251207/gcc/testsuite/rust/compile/extern_generics.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/extern_generics.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/extern_generics.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
! #[lang="sized"]
  trait Sized {}
  
  
--- 1,5 ----
! #![feature(lang_items)]
! #[lang = "sized"]
  trait Sized {}
  
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/extern_type_item_missing_semi.rs gcc-16-20251207/gcc/testsuite/rust/compile/extern_type_item_missing_semi.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/extern_type_item_missing_semi.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/extern_type_item_missing_semi.rs	Sun Dec  7 22:32:16 2025
*************** extern "C" {
*** 4,7 ****
      type F;
      type E // { dg-error "failed to parse" }
  } // { dg-error "expecting" }
- // { dg-error "failed to parse item in crate" ""  { target *-*-* } .-1 }
--- 4,6 ----
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/for-loop1.rs gcc-16-20251207/gcc/testsuite/rust/compile/for-loop1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/for-loop1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/for-loop1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
  // { dg-output "loop\r*\nloop\r*\n" }
! #![feature(intrinsics)]
  
  pub use option::Option::{self, None, Some};
  pub use result::Result::{self, Err, Ok};
--- 1,5 ----
  // { dg-output "loop\r*\nloop\r*\n" }
! #![feature(intrinsics, lang_items)]
  
  pub use option::Option::{self, None, Some};
  pub use result::Result::{self, Err, Ok};
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/for-loop2.rs gcc-16-20251207/gcc/testsuite/rust/compile/for-loop2.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/for-loop2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/for-loop2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
  // { dg-output "1\r*\n2\r*\n" }
! #![feature(intrinsics)]
  
  pub use option::Option::{self, None, Some};
  pub use result::Result::{self, Err, Ok};
--- 1,5 ----
  // { dg-output "1\r*\n2\r*\n" }
! #![feature(intrinsics, lang_items)]
  
  pub use option::Option::{self, None, Some};
  pub use result::Result::{self, Err, Ok};
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/format_args_basic_expansion.rs gcc-16-20251207/gcc/testsuite/rust/compile/format_args_basic_expansion.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/format_args_basic_expansion.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/format_args_basic_expansion.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
! #![feature(rustc_attrs)]
  
  #[rustc_builtin_macro]
  macro_rules! format_args {
--- 1,4 ----
! #![feature(rustc_attrs, lang_items)]
  
  #[rustc_builtin_macro]
  macro_rules! format_args {
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/format_args_concat.rs gcc-16-20251207/gcc/testsuite/rust/compile/format_args_concat.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/format_args_concat.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/format_args_concat.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
! #![feature(rustc_attrs)]
  
  #[rustc_builtin_macro]
  macro_rules! format_args {
--- 1,4 ----
! #![feature(rustc_attrs, lang_items)]
  
  #[rustc_builtin_macro]
  macro_rules! format_args {
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/format_args_extra_comma.rs gcc-16-20251207/gcc/testsuite/rust/compile/format_args_extra_comma.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/format_args_extra_comma.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/format_args_extra_comma.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
! #![feature(rustc_attrs)]
  
  #[rustc_builtin_macro]
  macro_rules! format_args {
--- 1,4 ----
! #![feature(rustc_attrs, lang_items)]
  
  #[rustc_builtin_macro]
  macro_rules! format_args {
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/generics1.rs gcc-16-20251207/gcc/testsuite/rust/compile/generics1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/generics1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/generics1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,6 ----
  // { dg-error "mismatched types, expected .i32. but got .i8." "" { target *-*-* } 0 }
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/generics11.rs gcc-16-20251207/gcc/testsuite/rust/compile/generics11.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/generics11.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/generics11.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/generics12.rs gcc-16-20251207/gcc/testsuite/rust/compile/generics12.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/generics12.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/generics12.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/generics2.rs gcc-16-20251207/gcc/testsuite/rust/compile/generics2.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/generics2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/generics2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,6 ----
  // { dg-error "mismatched types, expected .i32. but got .i8." "" { target *-*-* } 0 }
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/generics3.rs gcc-16-20251207/gcc/testsuite/rust/compile/generics3.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/generics3.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/generics3.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,5 ----
  // { dg-error "mismatched types, expected .i32. but got .i8." "" { target *-*-* } 0 }
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/generics4.rs gcc-16-20251207/gcc/testsuite/rust/compile/generics4.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/generics4.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/generics4.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/generics6.rs gcc-16-20251207/gcc/testsuite/rust/compile/generics6.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/generics6.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/generics6.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/generics7.rs gcc-16-20251207/gcc/testsuite/rust/compile/generics7.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/generics7.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/generics7.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/generics8.rs gcc-16-20251207/gcc/testsuite/rust/compile/generics8.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/generics8.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/generics8.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/if_let_expr.rs gcc-16-20251207/gcc/testsuite/rust/compile/if_let_expr.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/if_let_expr.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/if_let_expr.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/impl_fnptr.rs gcc-16-20251207/gcc/testsuite/rust/compile/impl_fnptr.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/impl_fnptr.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/impl_fnptr.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/impl_trait_diag.rs gcc-16-20251207/gcc/testsuite/rust/compile/impl_trait_diag.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/impl_trait_diag.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/impl_trait_diag.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/impl_trait_generic_arg.rs gcc-16-20251207/gcc/testsuite/rust/compile/impl_trait_generic_arg.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/impl_trait_generic_arg.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/impl_trait_generic_arg.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-1005.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-1005.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-1005.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-1005.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,5 ----
  // { dg-additional-options "-w" }
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-1019.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-1019.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-1019.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-1019.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-1031.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-1031.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-1031.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-1031.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,6 ----
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-1034.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-1034.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-1034.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-1034.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-1128.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-1128.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-1128.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-1128.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-1129-2.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-1129-2.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-1129-2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-1129-2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,5 ----
  // { dg-additional-options "-w" }
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-1130.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-1130.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-1130.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-1130.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,6 ****
--- 1,7 ----
  // { dg-additional-options "-w" }
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-1131.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-1131.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-1131.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-1131.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,6 ----
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-1165.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-1165.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-1165.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-1165.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-1173.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-1173.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-1173.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-1173.rs	Sun Dec  7 22:32:16 2025
***************
*** 2,7 ****
--- 2,8 ----
  
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-1235.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-1235.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-1235.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-1235.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,5 ----
  // { dg-additional-options "-w" }
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-1237.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-1237.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-1237.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-1237.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,6 ****
--- 1,7 ----
  // { dg-additional-options "-w" }
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-1289.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-1289.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-1289.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-1289.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,6 ----
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-1383.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-1383.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-1383.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-1383.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-1447.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-1447.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-1447.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-1447.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,5 ----
  // { dg-options "-w" }
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-1483.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-1483.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-1483.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-1483.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-1485.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-1485.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-1485.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-1485.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-1487.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-1487.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-1487.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-1487.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,6 ----
  // { dg-options "-w" }
+ #![feature(lang_items)]
+ 
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-1589.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-1589.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-1589.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-1589.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-1725-1.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-1725-1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-1725-1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-1725-1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-1725-2.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-1725-2.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-1725-2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-1725-2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-1786.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-1786.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-1786.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-1786.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-1893.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-1893.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-1893.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-1893.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-1901.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-1901.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-1901.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-1901.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,6 ----
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-1930.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-1930.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-1930.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-1930.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,5 ----
  // { dg-options "-w" }
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-1981.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-1981.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-1981.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-1981.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,6 ----
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2015.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2015.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2015.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2015.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2019-1.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2019-1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2019-1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2019-1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2019-2.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2019-2.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2019-2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2019-2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2019-3.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2019-3.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2019-3.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2019-3.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2036.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2036.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2036.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2036.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2037.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2037.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2037.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2037.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2070.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2070.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2070.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2070.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2105.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2105.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2105.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2105.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2106.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2106.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2106.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2106.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2135.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2135.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2135.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2135.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2136-1.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2136-1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2136-1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2136-1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2136-2.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2136-2.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2136-2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2136-2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2139.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2139.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2139.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2139.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2142.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2142.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2142.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2142.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2165.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2165.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2165.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2165.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2166.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2166.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2166.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2166.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2187.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2187.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2187.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2187.rs	Sun Dec  7 22:32:16 2025
*************** const D: &'static str = "
*** 8,11 ****
  ";
  ERROR_TIME
  // { dg-error "unrecognised token" "" { target *-*-* } .-1 }
- // { dg-error "failed to parse item in crate" "" { target *-*-* } .-2 }
--- 8,10 ----
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2190-1.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2190-1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2190-1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2190-1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2190-2.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2190-2.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2190-2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2190-2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,5 ----
  // { dg-options "-w" }
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2195.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2195.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2195.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2195.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2238.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2238.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2238.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2238.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2304.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2304.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2304.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2304.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2323.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2323.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2323.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2323.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2330.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2330.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2330.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2330.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
  // { dg-options "-w" }
! #![feature(intrinsics)]
  
  pub use option::Option::{self, None, Some};
  pub use result::Result::{self, Err, Ok};
--- 1,5 ----
  // { dg-options "-w" }
! #![feature(intrinsics, lang_items)]
  
  pub use option::Option::{self, None, Some};
  pub use result::Result::{self, Err, Ok};
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2369.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2369.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2369.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2369.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2375.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2375.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2375.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2375.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2478.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2478.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2478.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2478.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2499.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2499.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2499.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2499.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2723-1.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2723-1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2723-1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2723-1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2723-2.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2723-2.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2723-2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2723-2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2725.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2725.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2725.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2725.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  trait Trait: ?Sized {} // { dg-error ".?Trait. is not permitted in supertraits" }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2747.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2747.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2747.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2747.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2772-1.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2772-1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2772-1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2772-1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,5 ----
  // { dg-options "-w" }
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2772-2.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2772-2.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2772-2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2772-2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,5 ----
  // { dg-options "-w" }
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2775.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2775.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2775.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2775.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,5 ----
  // { dg-options "-w" }
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2782.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2782.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2782.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2782.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2907.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2907.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2907.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2907.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,6 ----
  #![feature(lang_items)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2951.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2951.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2951.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2951.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2953-1.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2953-1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2953-1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2953-1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[lang = "sized"]
  pub trait Sized {
      // Empty.
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2953-2.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2953-2.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2953-2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2953-2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[lang = "sized"]
  pub trait Sized {
      // Empty.
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2954.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2954.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2954.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2954.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-2987.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-2987.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-2987.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-2987.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,6 ----
  // { dg-options "-w" } Currently there are a lot of warnings produced from inside clone/copy
  // builtins
+ #![feature(lang_items)]
  
  #[lang = "copy"]
  trait Copy {}
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-3009.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-3009.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-3009.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-3009.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-3022.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-3022.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-3022.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-3022.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-3030.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-3030.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-3030.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-3030.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,6 ----
  #![feature(negative_impls)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-3032-1.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-3032-1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-3032-1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-3032-1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
! #![feature(negative_impls)]
  
  #[lang = "sized"]
  trait Sized {}
--- 1,4 ----
! #![feature(negative_impls, lang_items)]
  
  #[lang = "sized"]
  trait Sized {}
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-3032-2.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-3032-2.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-3032-2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-3032-2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
! #![feature(negative_impls)]
  
  #[lang = "sized"]
  trait Sized {}
--- 1,4 ----
! #![feature(negative_impls, lang_items)]
  
  #[lang = "sized"]
  trait Sized {}
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-3033.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-3033.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-3033.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-3033.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
! #![feature(negative_impls)]
  
  #[lang = "copy"]
  trait Copy {}
--- 1,4 ----
! #![feature(negative_impls, lang_items)]
  
  #[lang = "copy"]
  trait Copy {}
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-3035.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-3035.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-3035.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-3035.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-3036.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-3036.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-3036.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-3036.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-3045-1.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-3045-1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-3045-1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-3045-1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
! #![feature(dropck_eyepatch)]
  #[allow(dead_code)]
  
  #[lang = "sized"]
--- 1,4 ----
! #![feature(dropck_eyepatch, lang_items)]
  #[allow(dead_code)]
  
  #[lang = "sized"]
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-3045-2.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-3045-2.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-3045-2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-3045-2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
! #![feature(dropck_eyepatch)]
  #[allow(dead_code)]
  
  #[lang = "sized"]
--- 1,4 ----
! #![feature(dropck_eyepatch, lang_items)]
  #[allow(dead_code)]
  
  #[lang = "sized"]
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-3144.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-3144.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-3144.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-3144.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-3242.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-3242.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-3242.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-3242.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-3304.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-3304.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-3304.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-3304.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-3382.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-3382.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-3382.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-3382.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-3402-1.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-3402-1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-3402-1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-3402-1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  pub struct Foo {
      a: i32,
      // { dg-warning "field is never read" "" { target *-*-* } .-1 }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-3402-2.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-3402-2.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-3402-2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-3402-2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  pub struct Bar(i32);
  
  #[lang = "sized"]
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-3403.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-3403.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-3403.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-3403.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  pub struct Foo {
      a: i32,
      // { dg-warning "field is never read" "" { target *-*-* } .-1 }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-3454.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-3454.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-3454.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-3454.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-3551.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-3551.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-3551.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-3551.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-3554-2.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-3554-2.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-3554-2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-3554-2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-3599.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-3599.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-3599.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-3599.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-3642.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-3642.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-3642.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-3642.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-3711.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-3711.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-3711.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-3711.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-3836.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-3836.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-3836.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-3836.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,6 ----
  // { dg-options "-w" }
+ #![feature(lang_items)]
+ 
  mod core {
      mod option {
          pub enum Option<T> {
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-3898.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-3898.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-3898.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-3898.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,5 ----
  // { dg-additional-options "-frust-compile-until=lowering" }
+ #![feature(lang_items)]
  
  #[lang = "sized"]
  trait Sized {}
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-3915.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-3915.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-3915.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-3915.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,6 ----
  // { dg-options "-w" }
+ #![feature(lang_items)]
+ 
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-3916.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-3916.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-3916.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-3916.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
! #![feature(rustc_attrs)]
  
  #[lang = "sized"]
  trait Sized {}
--- 1,4 ----
! #![feature(rustc_attrs, lang_items)]
  
  #[lang = "sized"]
  trait Sized {}
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-3969.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-3969.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-3969.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-3969.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[lang = "sized"]
  pub trait Sized {
      // Empty.
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-402.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-402.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-402.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-402.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-407-2.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-407-2.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-407-2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-407-2.rs	Sun Dec  7 22:32:16 2025
***************
*** 2,16 ****
  pub fn loopy()  {
      let mut a = 1;
      loop {
-         // { dg-error {failed to parse statement or expression in block expression} "" { target *-*-* } .-1 }
          if a < 40 {
-             // { dg-error {failed to parse statement or expression in block expression} "" { target *-*-* } .-1 }
              a + = 1; // { dg-error "found unexpected token '=' in null denotation" }
-             // { dg-error {failed to parse statement or expression in block expression} "" { target *-*-* } .-1 }
-             // { dg-error {failed to parse if body block expression in if expression} "" { target *-*-* } .-2 }
-             // { dg-error {could not parse loop body in \(infinite\) loop expression} "" { target *-*-* } .-3 }
-             // { dg-error {unrecognised token 'integer literal' for start of item} "" { target *-*-* } .-4 }
-             // { dg-error {failed to parse item in crate} "" { target *-*-* } .-5 }
          } else {
              break;
          }
--- 2,9 ----
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-407.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-407.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-407.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-407.rs	Sun Dec  7 22:32:16 2025
***************
*** 2,8 ****
  fn test()  {
      let mut a = 1;
      a + = 1; // { dg-error "found unexpected token '=' in null denotation" }
-     // { dg-error {failed to parse statement or expression in block expression} "" { target *-*-* } .-1 }
-     // { dg-error {unrecognised token 'integer literal' for start of item} "" { target *-*-* } .-2 }
-     // { dg-error {failed to parse item in crate} "" { target *-*-* } .-3 }
  }
--- 2,5 ----
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-4090-1.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-4090-1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-4090-1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-4090-1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  mod core {
      mod marker {
          #[lang = "sized"]
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-4090-2.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-4090-2.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-4090-2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-4090-2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  mod core {
      mod marker {
          #[lang = "sized"]
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-4162.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-4162.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-4162.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-4162.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,9 ****
  pub fn main() {
      while let  = 5
      // { dg-error "should be at least 1 pattern" "" { target *-*-* } .-1 }
-     // { dg-error "failed to parse statement or expression in block expression" "" { target *-*-* } .-2 }
-     // { dg-error "unrecognised token .=. for start of item" "" { target *-*-* } .-3 }
-     // { dg-error "failed to parse item in crate" "" { target *-*-* } .-4 }
      {}
  }
  
--- 1,6 ----
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-850.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-850.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-850.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-850.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-855.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-855.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-855.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-855.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  pub use result::Result::{self, Err, Ok};
  
  #[lang = "sized"]
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-867.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-867.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-867.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-867.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,8 ****
  fn main() {
      let _ = 42;
      let a = _ + 123; // { dg-error "use of '_' is not allowed on the right-side of an assignment" }
-                      // { dg-error {failed to parse expression in let statement} "" { target *-*-* } .-1  }
-                      // { dg-error {failed to parse statement or expression in block expression} "" { target *-*-* } .-2 }
-                      // { dg-error {unrecognised token '\}' for start of item} "" { target *-*-* } .+2 }
-                      // { dg-error {failed to parse item in crate} "" { target *-*-* } .+1 }
  }
--- 1,4 ----
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/issue-925.rs gcc-16-20251207/gcc/testsuite/rust/compile/issue-925.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/issue-925.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/issue-925.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/iterators1.rs gcc-16-20251207/gcc/testsuite/rust/compile/iterators1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/iterators1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/iterators1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
! #![feature(intrinsics)]
  
  pub use option::Option::{self, None, Some};
  pub use result::Result::{self, Err, Ok};
--- 1,4 ----
! #![feature(intrinsics, lang_items)]
  
  pub use option::Option::{self, None, Some};
  pub use result::Result::{self, Err, Ok};
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/lang_feature_gate.rs gcc-16-20251207/gcc/testsuite/rust/compile/lang_feature_gate.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/lang_feature_gate.rs	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/gcc/testsuite/rust/compile/lang_feature_gate.rs	Sun Dec  7 22:32:16 2025
***************
*** 0 ****
--- 1,2 ----
+ #[lang = "sized"] // { dg-error "lang items are subject to change. add .#!.feature.lang_items... to the crate attributes to enable" }
+ pub trait Sized {}
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/macros/builtin/option_env1.rs gcc-16-20251207/gcc/testsuite/rust/compile/macros/builtin/option_env1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/macros/builtin/option_env1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/macros/builtin/option_env1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
! #![feature(rustc_attrs)]
  
  #[rustc_builtin_macro]
  macro_rules! option_env {
--- 1,4 ----
! #![feature(rustc_attrs, lang_items)]
  
  #[rustc_builtin_macro]
  macro_rules! option_env {
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/macros/builtin/option_env2.rs gcc-16-20251207/gcc/testsuite/rust/compile/macros/builtin/option_env2.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/macros/builtin/option_env2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/macros/builtin/option_env2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
! #![feature(rustc_attrs)]
  
  #[rustc_builtin_macro]
  macro_rules! option_env {
--- 1,4 ----
! #![feature(rustc_attrs, lang_items)]
  
  #[rustc_builtin_macro]
  macro_rules! option_env {
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/macros/builtin/option_env3.rs gcc-16-20251207/gcc/testsuite/rust/compile/macros/builtin/option_env3.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/macros/builtin/option_env3.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/macros/builtin/option_env3.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
! #![feature(rustc_attrs)]
  
  #[rustc_builtin_macro]
  macro_rules! option_env {
--- 1,4 ----
! #![feature(rustc_attrs, lang_items)]
  
  #[rustc_builtin_macro]
  macro_rules! option_env {
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro-issue1053-2.rs gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro-issue1053-2.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro-issue1053-2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro-issue1053-2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
  macro_rules! m {
      ($e:expr $(forbidden)*) => {{}}; // { dg-error "token .identifier. is not allowed after .expr. fragment" }
                                       // { dg-error "required first macro rule in macro rules definition could not be parsed" "" { target *-*-* } .-1 }
-                                      // { dg-error "failed to parse item in crate" "" { target *-*-* } .-2 }
  }
--- 1,4 ----
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro-issue1395-2.rs gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro-issue1395-2.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro-issue1395-2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro-issue1395-2.rs	Sun Dec  7 22:32:16 2025
***************
*** 2,7 ****
  
  macro_rules! try {
      // { dg-error "expecting .identifier. but .try. found" "" { target *-*-* } .-1 }
-     // { dg-error "failed to parse item in crate" "" { target *-*-* } .-2 }
      () => {};
  }
--- 2,6 ----
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro-issue1400.rs gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro-issue1400.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro-issue1400.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro-issue1400.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,6 ----
  // { dg-additional-options "-w" }
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro-issue3608.rs gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro-issue3608.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro-issue3608.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro-issue3608.rs	Sun Dec  7 22:32:16 2025
*************** struct Baz {
*** 5,12 ****
  impl Bar for
  
  
! fn main() { )// { dg-error "unexpected closing delimiter .\\). - token tree requires either paired delimiters or non-delimiter tokens" }
!              // { dg-error "failed to parse token tree in delimited token tree - found .\\)." "" { target *-*-* } .-1 }
!              // { dg-error "unexpected token .end of file. - expecting closing delimiter .\}. .for a delimited token tree." "" { target *-*-* } .+3 }
!              // { dg-error "unexpected token .end of file. - expecting closing delimiter .\\). .for a macro invocation semi." "" { target *-*-* } .+2 }
!              // { dg-error "failed to parse item in crate" "" { target *-*-* } .+1 }
--- 5,10 ----
  impl Bar for
  
  
! fn main() { )// { dg-error "unexpected closing delimiter .\\)." }
!              // { dg-error "unexpected token .end of file. - expecting closing delimiter .\}. .for a delimited token tree." "" { target *-*-* } .+2 }
!              // { dg-error "unexpected token .end of file. - expecting closing delimiter .\\). .for a macro invocation semi." "" { target *-*-* } .+1 }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro-issue3708.rs gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro-issue3708.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro-issue3708.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro-issue3708.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,5 ----
  // { dg-additional-options "-frust-compile-until=lowering" }
+ #![feature(lang_items)]
  
  macro_rules! impl_fn_for_zst {
      ($(
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro-issue3709-2.rs gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro-issue3709-2.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro-issue3709-2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro-issue3709-2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,5 ----
  // { dg-additional-options "-frust-compile-until=lowering" }
+ #![feature(lang_items)]
  
  macro_rules! impl_fn_for_zst {
      ($(
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro20.rs gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro20.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro20.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro20.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro23.rs gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro23.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro23.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro23.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro27.rs gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro27.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro27.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro27.rs	Sun Dec  7 22:32:16 2025
*************** macro_rules! m {
*** 2,8 ****
      ($a:expr tok) => {
          // { dg-error "token .identifier. is not allowed after .expr. fragment" "" { target *-*-* } .-1 }
          // { dg-error "required first macro rule in macro rules definition could not be parsed" "" { target *-*-* } .-2 }
-         // { dg-error "failed to parse item in crate" "" { target *-*-* } .-3 }
          $a
      };
  }
--- 2,7 ----
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro28.rs gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro28.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro28.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro28.rs	Sun Dec  7 22:32:16 2025
*************** macro_rules! m {
*** 2,8 ****
      ($a:expr $(tok $es:expr)*) => {
          // { dg-error "token .identifier. is not allowed after .expr. fragment" "" { target *-*-* } .-1 }
          // { dg-error "required first macro rule in macro rules definition could not be parsed" "" { target *-*-* } .-2 }
-         // { dg-error "failed to parse item in crate" "" { target *-*-* } .-3 }
          $a
      };
  }
--- 2,7 ----
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro29.rs gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro29.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro29.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro29.rs	Sun Dec  7 22:32:16 2025
*************** macro_rules! m {
*** 2,8 ****
      ($($es:expr)* tok) => {
          // { dg-error "token .identifier. is not allowed after .expr. fragment" "" { target *-*-* } .-1 }
          // { dg-error "required first macro rule in macro rules definition could not be parsed" "" { target *-*-* } .-2 }
-         // { dg-error "failed to parse item in crate" "" { target *-*-* } .-3 }
          $a
      };
  }
--- 2,7 ----
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro30.rs gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro30.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro30.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro30.rs	Sun Dec  7 22:32:16 2025
*************** macro_rules! m {
*** 2,8 ****
      ($e:expr $f:expr) => {
          // { dg-error "fragment is not allowed after .expr. fragment" "" { target *-*-* } .-1 }
          // { dg-error "required first macro rule in macro rules definition could not be parsed" "" { target *-*-* } .-2 }
-         // { dg-error "failed to parse item in crate" "" { target *-*-* } .-3 }
          $e
      };
  }
--- 2,7 ----
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro31.rs gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro31.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro31.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro31.rs	Sun Dec  7 22:32:16 2025
*************** macro_rules! m {
*** 2,8 ****
      ($($e:expr)* $($f:expr)*) => {
          // { dg-error "fragment is not allowed after .expr. fragment" "" { target *-*-* } .-1 }
          // { dg-error "required first macro rule in macro rules definition could not be parsed" "" { target *-*-* } .-2 }
-         // { dg-error "failed to parse item in crate" "" { target *-*-* } .-3 }
          $e
      };
  }
--- 2,7 ----
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro33.rs gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro33.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro33.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro33.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
  macro_rules! forbidden_frag {
      ($t:ty $not_block:ident) => {{}}; // { dg-error "fragment specifier .ident. is not allowed after .ty. fragments" }
                                        // { dg-error "required first macro rule in macro rules definition could not be parsed" "" { target *-*-* } .-1 }
-                                       // { dg-error "failed to parse item in crate" "" { target *-*-* } .-2 }
  }
--- 1,4 ----
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro35.rs gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro35.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro35.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro35.rs	Sun Dec  7 22:32:16 2025
*************** macro_rules! inside_matcher {
*** 3,7 ****
                                   // { dg-error "failed to parse macro matcher" "" { target *-*-* } .-1 }
                                   // { dg-error "failed to parse macro match" "" { target *-*-* } .-2 }
                                   // { dg-error "required first macro rule" "" { target *-*-* } .-3 }
-                                  // { dg-error "failed to parse item in crate" "" { target *-*-* } .-4 }
  }
--- 3,6 ----
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro37.rs gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro37.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro37.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro37.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
  macro_rules! invalid_after_zeroable {
      ($e:expr $(,)* forbidden) => {{}}; // { dg-error "token .identifier. is not allowed after .expr. fragment" }
                                         // { dg-error "required first macro rule" "" { target *-*-* } .-1 }
-                                        // { dg-error "failed to parse item in crate" "" { target *-*-* } .-2 }
  }
--- 1,4 ----
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro38.rs gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro38.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro38.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro38.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
  macro_rules! invalid_after_zeroable_multi {
      ($e:expr $(,)? $(;)* $(=>)? forbidden) => {{}}; // { dg-error "token .identifier. is not allowed after .expr. fragment" }
                                                      // { dg-error "required first macro rule" "" { target *-*-* } .-1 }
-                                                     // { dg-error "failed to parse item in crate" "" { target *-*-* } .-2 }
  }
--- 1,4 ----
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro39.rs gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro39.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro39.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro39.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
  macro_rules! m {
      ($e:expr (, parenthesis_forbidden)) => {{}}; // { dg-error "token .\\(. at start of matcher is not allowed after .expr. fragment" }
                                                   // { dg-error "required first macro rule" "" { target *-*-* } .-1 }
-                                                  // { dg-error "failed to parse item in crate" "" { target *-*-* } .-2 }
  }
--- 1,4 ----
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro40.rs gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro40.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro40.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro40.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,6 ----
  // { dg-additional-options "-w" }
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro48.rs gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro48.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro48.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro48.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,8 ****
  // Check that "priv" is not in the follow set of :vis.
  
! // { dg-error "token .priv. is not allowed after .vis. fragment" "#359" { target *-*-* } .+4 }
! // { dg-error "required first macro rule in macro rules definition could not be parsed" "" { target *-*-* } .+3 }
! // { dg-error "failed to parse item in crate" "" { target *-*-* } .+2 }
  macro_rules! my_mac {
      ($v:vis priv) => {
          $v struct Foo(i32);
--- 1,7 ----
  // Check that "priv" is not in the follow set of :vis.
  
! // { dg-error "token .priv. is not allowed after .vis. fragment" "#359" { target *-*-* } .+3 }
! // { dg-error "required first macro rule in macro rules definition could not be parsed" "" { target *-*-* } .+2 }
  macro_rules! my_mac {
      ($v:vis priv) => {
          $v struct Foo(i32);
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro49.rs gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro49.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro49.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro49.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro54.rs gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro54.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/macros/mbe/macro54.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/macros/mbe/macro54.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/multiple_bindings1.rs gcc-16-20251207/gcc/testsuite/rust/compile/multiple_bindings1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/multiple_bindings1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/multiple_bindings1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/name_resolution2.rs gcc-16-20251207/gcc/testsuite/rust/compile/name_resolution2.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/name_resolution2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/name_resolution2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/name_resolution4.rs gcc-16-20251207/gcc/testsuite/rust/compile/name_resolution4.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/name_resolution4.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/name_resolution4.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/nested_generic.rs gcc-16-20251207/gcc/testsuite/rust/compile/nested_generic.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/nested_generic.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/nested_generic.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/parse_associated_type_as_generic_arg.rs gcc-16-20251207/gcc/testsuite/rust/compile/parse_associated_type_as_generic_arg.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/parse_associated_type_as_generic_arg.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/parse_associated_type_as_generic_arg.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/parse_associated_type_as_generic_arg2.rs gcc-16-20251207/gcc/testsuite/rust/compile/parse_associated_type_as_generic_arg2.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/parse_associated_type_as_generic_arg2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/parse_associated_type_as_generic_arg2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/parse_associated_type_as_generic_arg3.rs gcc-16-20251207/gcc/testsuite/rust/compile/parse_associated_type_as_generic_arg3.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/parse_associated_type_as_generic_arg3.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/parse_associated_type_as_generic_arg3.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/parse_closure_bind.rs gcc-16-20251207/gcc/testsuite/rust/compile/parse_closure_bind.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/parse_closure_bind.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/parse_closure_bind.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,6 ----
  // { dg-additional-options "-frust-compile-until=typecheck" }
  // TODO: this should typecheck
+ #![feature(lang_items)]
  
  #[lang = "sized"]
  trait Sized {}
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/parse_complex_generic_application.rs gcc-16-20251207/gcc/testsuite/rust/compile/parse_complex_generic_application.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/parse_complex_generic_application.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/parse_complex_generic_application.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/parse_complex_generic_application2.rs gcc-16-20251207/gcc/testsuite/rust/compile/parse_complex_generic_application2.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/parse_complex_generic_application2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/parse_complex_generic_application2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/parse_invalid_specialization.rs gcc-16-20251207/gcc/testsuite/rust/compile/parse_invalid_specialization.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/parse_invalid_specialization.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/parse_invalid_specialization.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
  default fn f() {
      // { dg-error ".default. is only allowed on items within .impl. blocks" "" { target *-*-* } .-1 }
-     // { dg-error "failed to parse item in crate" "" { target *-*-* } .-2 }
  }
--- 1,3 ----
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/parse_simple_path_fail_1.rs gcc-16-20251207/gcc/testsuite/rust/compile/parse_simple_path_fail_1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/parse_simple_path_fail_1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/parse_simple_path_fail_1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
  pub(in crate::) struct S;
  // { dg-error "expecting ... but .::. found" "" { target *-*-* } .-1 }
- // { dg-error "failed to parse item in crate" "" { target *-*-* } .-2 }
--- 1,2 ----
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/parse_simple_path_fail_2.rs gcc-16-20251207/gcc/testsuite/rust/compile/parse_simple_path_fail_2.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/parse_simple_path_fail_2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/parse_simple_path_fail_2.rs	Sun Dec  7 22:32:16 2025
*************** mod A {
*** 5,9 ****
  use A{B};
  // { dg-error "unexpected token" "" { target *-*-* } .-1 }
  // { dg-error "could not parse use tree" "" { target *-*-* } .-2 }
- // { dg-error "failed to parse item in crate" "" { target *-*-* } 10 }
- // ^^^ TODO: should the above error happen at line 10?
--- 5,7 ----
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/path_as_generic_arg.rs gcc-16-20251207/gcc/testsuite/rust/compile/path_as_generic_arg.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/path_as_generic_arg.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/path_as_generic_arg.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/privacy4.rs gcc-16-20251207/gcc/testsuite/rust/compile/privacy4.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/privacy4.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/privacy4.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/privacy6.rs gcc-16-20251207/gcc/testsuite/rust/compile/privacy6.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/privacy6.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/privacy6.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,6 ----
  // { dg-additional-options "-w" }
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/raw-byte-string-loc.rs gcc-16-20251207/gcc/testsuite/rust/compile/raw-byte-string-loc.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/raw-byte-string-loc.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/raw-byte-string-loc.rs	Sun Dec  7 22:32:16 2025
*************** const X: &'static u8 = br#"12
*** 3,6 ****
  
  BREAK
  // { dg-error "unrecognised token" "" { target *-*-* } .-1 }
- // { dg-error "failed to parse item" "" { target *-*-* } .-2 }
--- 3,5 ----
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/raw-string-loc.rs gcc-16-20251207/gcc/testsuite/rust/compile/raw-string-loc.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/raw-string-loc.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/raw-string-loc.rs	Sun Dec  7 22:32:16 2025
*************** const X: &'static str = r#"12
*** 3,6 ****
  
  BREAK
  // { dg-error "unrecognised token" "" { target *-*-* } .-1 }
- // { dg-error "failed to parse item" "" { target *-*-* } .-2 }
--- 3,5 ----
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/raw_ref_op_invalid.rs gcc-16-20251207/gcc/testsuite/rust/compile/raw_ref_op_invalid.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/raw_ref_op_invalid.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/raw_ref_op_invalid.rs	Sun Dec  7 22:32:16 2025
*************** pub struct Toto {
*** 7,12 ****
  
  pub fn test(mut toto: Toto) {
      let _c = &raw toto.u; //{ dg-error "expecting .;. but .identifier. found" "" { target *-*-* }  }
-     //{ dg-excess-errors "Additional errors for parent items" { target *-*-* } }
- 
  }
--- 7,10 ----
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/self_const_ptr.rs gcc-16-20251207/gcc/testsuite/rust/compile/self_const_ptr.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/self_const_ptr.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/self_const_ptr.rs	Sun Dec  7 22:32:16 2025
*************** impl MyStruct {
*** 4,8 ****
      pub fn do_something(*const self) {}
      // { dg-error "cannot pass .self. by raw pointer" "" { target *-*-* } .-1 }
      // { dg-error "failed to parse inherent impl item in inherent impl" "" { target *-*-* } .-2 }
-     // { dg-error "failed to parse item in crate" "" { target *-*-* } .-3 }
  }
--- 4,7 ----
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/self_mut_ptr.rs gcc-16-20251207/gcc/testsuite/rust/compile/self_mut_ptr.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/self_mut_ptr.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/self_mut_ptr.rs	Sun Dec  7 22:32:16 2025
*************** impl MyStruct {
*** 4,8 ****
      pub fn do_something(*mut self) {}
      // { dg-error "cannot pass .self. by raw pointer" "" { target *-*-* } .-1 }
      // { dg-error "failed to parse inherent impl item in inherent impl" "" { target *-*-* } .-2 }
-     // { dg-error "failed to parse item in crate" "" { target *-*-* } .-3 }
  }
--- 4,7 ----
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/self_ptr.rs gcc-16-20251207/gcc/testsuite/rust/compile/self_ptr.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/self_ptr.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/self_ptr.rs	Sun Dec  7 22:32:16 2025
*************** impl MyStruct {
*** 4,8 ****
      pub fn do_something(*self) {}
      // { dg-error "cannot pass .self. by raw pointer" "" { target *-*-* } .-1 }
      // { dg-error "failed to parse inherent impl item in inherent impl" "" { target *-*-* } .-2 }
-     // { dg-error "failed to parse item in crate" "" { target *-*-* } .-3 }
  }
--- 4,7 ----
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/silly-order-bug.rs gcc-16-20251207/gcc/testsuite/rust/compile/silly-order-bug.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/silly-order-bug.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/silly-order-bug.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/sizeof-stray-infer-var-bug.rs gcc-16-20251207/gcc/testsuite/rust/compile/sizeof-stray-infer-var-bug.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/sizeof-stray-infer-var-bug.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/sizeof-stray-infer-var-bug.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,6 ----
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/static_var1.rs gcc-16-20251207/gcc/testsuite/rust/compile/static_var1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/static_var1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/static_var1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
  static x = 3; // { dg-error "expecting ':' but '=' found" }
  
! fn main() {// { dg-error "failed to parse item in crate" }
      let y = x +1;
  }
--- 1,5 ----
  static x = 3; // { dg-error "expecting ':' but '=' found" }
  
! fn main() {
      let y = x +1;
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/stmt_with_block_dot.rs gcc-16-20251207/gcc/testsuite/rust/compile/stmt_with_block_dot.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/stmt_with_block_dot.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/stmt_with_block_dot.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/structural-eq-peq.rs gcc-16-20251207/gcc/testsuite/rust/compile/structural-eq-peq.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/structural-eq-peq.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/structural-eq-peq.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[lang = "structural_peq"]
  pub trait StructuralPartialEq {
      // Empty.
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/associated_types1.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/associated_types1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/associated_types1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/associated_types1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/forward_decl_5.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/forward_decl_5.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/forward_decl_5.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/forward_decl_5.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics1.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics10.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics10.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics10.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics10.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics11.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics11.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics11.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics11.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics12.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics12.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics12.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics12.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics13.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics13.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics13.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics13.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics14.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics14.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics14.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics14.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics15.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics15.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics15.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics15.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics16.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics16.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics16.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics16.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics17.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics17.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics17.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics17.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics18.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics18.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics18.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics18.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics19.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics19.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics19.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics19.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics2.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics2.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics20.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics20.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics20.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics20.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics21.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics21.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics21.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics21.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics22.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics22.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics22.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics22.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics23.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics23.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics23.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics23.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics24.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics24.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics24.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics24.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics25.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics25.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics25.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics25.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics26.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics26.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics26.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics26.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics27.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics27.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics27.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics27.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics28.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics28.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics28.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics28.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics29.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics29.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics29.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics29.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics3.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics3.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics3.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics3.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics30.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics30.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics30.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics30.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics31.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics31.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics31.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics31.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics32.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics32.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics32.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics32.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics4.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics4.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics4.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics4.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics5.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics5.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics5.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics5.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics6.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics6.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics6.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics6.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics7.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics7.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics7.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics7.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics8.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics8.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics8.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics8.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics9.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics9.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/generics9.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/generics9.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/identifier-missing-impl-1.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/identifier-missing-impl-1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/identifier-missing-impl-1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/identifier-missing-impl-1.rs	Sun Dec  7 22:32:16 2025
*************** impl I {
*** 4,10 ****
      fn () {
          // { dg-error {expecting 'identifier' but '\(' found} "" { target *-*-* } .-1 }
          // { dg-error {failed to parse inherent impl item in inherent impl} "" { target *-*-* } .-2 }
-         // { dg-error {failed to parse item in crate} "" { target *-*-* } .-3 }
      }
  }
  
--- 4,9 ----
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/intrinsics-2.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/intrinsics-2.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/intrinsics-2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/intrinsics-2.rs	Sun Dec  7 22:32:16 2025
***************
*** 2,7 ****
--- 2,8 ----
  
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/intrinsics-4.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/intrinsics-4.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/intrinsics-4.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/intrinsics-4.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,6 ----
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/intrinsics-5.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/intrinsics-5.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/intrinsics-5.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/intrinsics-5.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,6 ----
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/intrinsics-6.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/intrinsics-6.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/intrinsics-6.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/intrinsics-6.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,6 ----
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/intrinsics-7.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/intrinsics-7.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/intrinsics-7.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/intrinsics-7.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,6 ----
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/intrinsics-8.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/intrinsics-8.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/intrinsics-8.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/intrinsics-8.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,6 ----
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/issue-1024.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/issue-1024.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/issue-1024.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/issue-1024.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,6 ----
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/issue-1075.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/issue-1075.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/issue-1075.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/issue-1075.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,6 ****
--- 1,7 ----
  // { dg-additional-options "-w" }
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/issue-1432.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/issue-1432.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/issue-1432.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/issue-1432.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,6 ****
--- 1,7 ----
  // { dg-additional-options "-w" }
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/issue-1555.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/issue-1555.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/issue-1555.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/issue-1555.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/issue-368.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/issue-368.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/issue-368.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/issue-368.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/issue-808.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/issue-808.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/issue-808.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/issue-808.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/issue-862.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/issue-862.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/issue-862.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/issue-862.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,6 ----
  // { dg-additional-options "-w" }
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/issue-893-2.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/issue-893-2.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/issue-893-2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/issue-893-2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,5 ----
  // { dg-additional-options "-w" }
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/issue-893.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/issue-893.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/issue-893.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/issue-893.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,5 ----
  // { dg-additional-options "-w" }
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/must_use2.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/must_use2.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/must_use2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/must_use2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/nested_fn2.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/nested_fn2.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/nested_fn2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/nested_fn2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/phantom_data.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/phantom_data.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/phantom_data.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/phantom_data.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,5 ----
  // { dg-options "-w" }
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/range-lang-item1.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/range-lang-item1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/range-lang-item1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/range-lang-item1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,5 ----
  // { dg-additional-options "-w" }
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/traits1.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/traits1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/traits1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/traits1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/traits10.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/traits10.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/traits10.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/traits10.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/traits11.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/traits11.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/traits11.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/traits11.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/traits12.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/traits12.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/traits12.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/traits12.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/traits13.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/traits13.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/traits13.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/traits13.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/traits14.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/traits14.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/traits14.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/traits14.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/traits15.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/traits15.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/traits15.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/traits15.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/traits16.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/traits16.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/traits16.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/traits16.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/traits17.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/traits17.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/traits17.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/traits17.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/traits18.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/traits18.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/traits18.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/traits18.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/traits19.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/traits19.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/traits19.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/traits19.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,5 ----
  // { dg-additional-options "-w" }
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/traits2.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/traits2.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/traits2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/traits2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/traits3.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/traits3.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/traits3.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/traits3.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/traits4.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/traits4.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/traits4.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/traits4.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/traits5.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/traits5.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/traits5.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/traits5.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/traits6.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/traits6.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/traits6.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/traits6.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/traits7.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/traits7.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/traits7.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/traits7.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/traits8.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/traits8.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/traits8.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/traits8.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/traits9.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/traits9.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/traits9.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/traits9.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/transmute-size-check-1.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/transmute-size-check-1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/transmute-size-check-1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/transmute-size-check-1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,6 ----
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/transmute1.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/transmute1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/transmute1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/transmute1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,6 ----
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/uninit-intrinsic-1.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/uninit-intrinsic-1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/uninit-intrinsic-1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/uninit-intrinsic-1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,6 ----
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/torture/utf8_identifiers.rs gcc-16-20251207/gcc/testsuite/rust/compile/torture/utf8_identifiers.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/torture/utf8_identifiers.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/torture/utf8_identifiers.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/traits1.rs gcc-16-20251207/gcc/testsuite/rust/compile/traits1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/traits1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/traits1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/traits10.rs gcc-16-20251207/gcc/testsuite/rust/compile/traits10.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/traits10.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/traits10.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/traits11.rs gcc-16-20251207/gcc/testsuite/rust/compile/traits11.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/traits11.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/traits11.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/traits12.rs gcc-16-20251207/gcc/testsuite/rust/compile/traits12.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/traits12.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/traits12.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/traits2.rs gcc-16-20251207/gcc/testsuite/rust/compile/traits2.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/traits2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/traits2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/traits3.rs gcc-16-20251207/gcc/testsuite/rust/compile/traits3.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/traits3.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/traits3.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/traits4.rs gcc-16-20251207/gcc/testsuite/rust/compile/traits4.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/traits4.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/traits4.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/traits5.rs gcc-16-20251207/gcc/testsuite/rust/compile/traits5.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/traits5.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/traits5.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/traits6.rs gcc-16-20251207/gcc/testsuite/rust/compile/traits6.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/traits6.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/traits6.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/traits7.rs gcc-16-20251207/gcc/testsuite/rust/compile/traits7.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/traits7.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/traits7.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/traits8.rs gcc-16-20251207/gcc/testsuite/rust/compile/traits8.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/traits8.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/traits8.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/traits9.rs gcc-16-20251207/gcc/testsuite/rust/compile/traits9.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/traits9.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/traits9.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/try-expr1.rs gcc-16-20251207/gcc/testsuite/rust/compile/try-expr1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/try-expr1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/try-expr1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,5 ----
  // { dg-additional-options "-frust-compile-until=typecheck" }
+ #![feature(lang_items)]
  
  #[lang = "sized"]
  trait Sized {}
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/try-trait.rs gcc-16-20251207/gcc/testsuite/rust/compile/try-trait.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/try-trait.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/try-trait.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/try_block1.rs gcc-16-20251207/gcc/testsuite/rust/compile/try_block1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/try_block1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/try_block1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,5 ----
  // { dg-additional-options "-frust-edition=2018" }
+ #![feature(lang_items)]
  
  #[lang = "sized"]
  trait Sized {}
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/type-bindings1.rs gcc-16-20251207/gcc/testsuite/rust/compile/type-bindings1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/type-bindings1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/type-bindings1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/unconstrained_type_param.rs gcc-16-20251207/gcc/testsuite/rust/compile/unconstrained_type_param.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/unconstrained_type_param.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/unconstrained_type_param.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/unify-errors1.rs gcc-16-20251207/gcc/testsuite/rust/compile/unify-errors1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/unify-errors1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/unify-errors1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/unsafe10.rs gcc-16-20251207/gcc/testsuite/rust/compile/unsafe10.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/unsafe10.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/unsafe10.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,6 ----
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/v0-mangle1.rs gcc-16-20251207/gcc/testsuite/rust/compile/v0-mangle1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/v0-mangle1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/v0-mangle1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,5 ----
  // { dg-additional-options -frust-mangling=v0 }
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/v0-mangle2.rs gcc-16-20251207/gcc/testsuite/rust/compile/v0-mangle2.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/v0-mangle2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/v0-mangle2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,5 ----
  // { dg-additional-options -frust-mangling=v0 }
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/compile/while_let1.rs gcc-16-20251207/gcc/testsuite/rust/compile/while_let1.rs
*** gcc-16-20251130/gcc/testsuite/rust/compile/while_let1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/compile/while_let1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  // use self::Ordering::*;
  // use Ordering::*;
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/core/core.exp gcc-16-20251207/gcc/testsuite/rust/core/core.exp
*** gcc-16-20251130/gcc/testsuite/rust/core/core.exp	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/core/core.exp	Sun Dec  7 22:32:16 2025
*************** set saved-dg-do-what-default ${dg-do-wha
*** 30,36 ****
  set dg-do-what-default "compile"
  set individual_timeout 600
  dg-additional-files [lsort [glob -nocomplain $srcdir/../../libgrust/rustc-lib/*]]
! dg-runtest $srcdir/../../libgrust/rustc-lib/core/src/lib.rs "-frust-edition=2018 -frust-crate=core -frust-compile-until=astvalidation -w" ""
  set dg-do-what-default ${saved-dg-do-what-default}
  
  # All done.
--- 30,36 ----
  set dg-do-what-default "compile"
  set individual_timeout 600
  dg-additional-files [lsort [glob -nocomplain $srcdir/../../libgrust/rustc-lib/*]]
! dg-runtest $srcdir/../../libgrust/rustc-lib/core/src/lib.rs "-frust-edition=2018 -frust-crate=core -frust-compile-until=nameresolution -w" ""
  set dg-do-what-default ${saved-dg-do-what-default}
  
  # All done.
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/black_box.rs gcc-16-20251207/gcc/testsuite/rust/execute/black_box.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/black_box.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/black_box.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
  /* { dg-output "Value is: 42\r*\n" } */
! #![feature(rustc_attrs)]
  
  extern "C" {
      fn printf(s: *const i8, ...);
--- 1,5 ----
  /* { dg-output "Value is: 42\r*\n" } */
! #![feature(rustc_attrs, lang_items)]
  
  extern "C" {
      fn printf(s: *const i8, ...);
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/atomic_load.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/atomic_load.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/atomic_load.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/atomic_load.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,6 ----
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/atomic_store.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/atomic_store.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/atomic_store.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/atomic_store.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,6 ----
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/basic_partial_ord1.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/basic_partial_ord1.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/basic_partial_ord1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/basic_partial_ord1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,6 ----
  /* { dg-output "less\r*" }*/
+ #![feature(lang_items)]
+ 
  mod core {
      mod option {
          pub enum Option<T> {
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/basic_partial_ord2.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/basic_partial_ord2.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/basic_partial_ord2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/basic_partial_ord2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,7 ----
  /* { dg-output "<><=>=\r*" } */
  /* { dg-options "-w" } */
+ #![feature(lang_items)]
+ 
  mod core {
      mod option {
          pub enum Option<T> {
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/builtin_macro_option_env.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/builtin_macro_option_env.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/builtin_macro_option_env.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/builtin_macro_option_env.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,7 ****
  // { dg-output "VALUE\r*\nVALUE\r*\n" }
  // { dg-set-compiler-env-var ENV_MACRO_TEST "VALUE" }
  
! #![feature(rustc_attrs)]
  
  #[rustc_builtin_macro]
  macro_rules! option_env {
--- 1,7 ----
  // { dg-output "VALUE\r*\nVALUE\r*\n" }
  // { dg-set-compiler-env-var ENV_MACRO_TEST "VALUE" }
  
! #![feature(rustc_attrs, lang_items)]
  
  #[rustc_builtin_macro]
  macro_rules! option_env {
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/closure1.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/closure1.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/closure1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/closure1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/closure2.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/closure2.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/closure2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/closure2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,6 ----
  // { dg-output "3\r*\n" }
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/closure3.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/closure3.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/closure3.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/closure3.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,6 ----
  // { dg-output "3\r*\n" }
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/closure4.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/closure4.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/closure4.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/closure4.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/coercion1.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/coercion1.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/coercion1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/coercion1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,6 ----
  /* { dg-output "123\r*\n123\r*\n" } */
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/coercion2.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/coercion2.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/coercion2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/coercion2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,6 ----
  /* { dg-output "123\r*\n123\r*\n" } */
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/coercion3.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/coercion3.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/coercion3.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/coercion3.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,5 ----
  // { dg-output "123\r*\n" }
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/const-generics-1.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/const-generics-1.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/const-generics-1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/const-generics-1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/const-generics-2.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/const-generics-2.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/const-generics-2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/const-generics-2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/const-generics-3.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/const-generics-3.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/const-generics-3.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/const-generics-3.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/const-generics-4.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/const-generics-4.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/const-generics-4.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/const-generics-4.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/const-generics-5.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/const-generics-5.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/const-generics-5.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/const-generics-5.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/const-generics-6.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/const-generics-6.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/const-generics-6.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/const-generics-6.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/const-generics-7.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/const-generics-7.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/const-generics-7.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/const-generics-7.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,6 ----
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/copy_nonoverlapping1.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/copy_nonoverlapping1.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/copy_nonoverlapping1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/copy_nonoverlapping1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,5 ----
  #![feature(intrinsics)]
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/derive-default1.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/derive-default1.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/derive-default1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/derive-default1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[derive(Default)]
  struct Foo { a: i32  }
  #[derive(Default)]
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/derive-partialeq1.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/derive-partialeq1.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/derive-partialeq1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/derive-partialeq1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,6 ****
  // { dg-output "true\r*\nfalse\r*\nfalse\r*\n" }
  
! #![feature(intrinsics)]
  
  #[lang = "sized"]
  trait Sized {}
--- 1,6 ----
  // { dg-output "true\r*\nfalse\r*\nfalse\r*\n" }
  
! #![feature(intrinsics, lang_items)]
  
  #[lang = "sized"]
  trait Sized {}
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/derive-partialeq2.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/derive-partialeq2.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/derive-partialeq2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/derive-partialeq2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,6 ****
  // { dg-output "true\r*\nfalse\r*\nfalse\r*\nfalse\r*\nfalse\r*\n" }
  
! #![feature(intrinsics)]
  
  pub mod core {
      pub mod intrinsics {
--- 1,6 ----
  // { dg-output "true\r*\nfalse\r*\nfalse\r*\nfalse\r*\nfalse\r*\n" }
  
! #![feature(intrinsics, lang_items)]
  
  pub mod core {
      pub mod intrinsics {
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/derive_clone_enum1.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/derive_clone_enum1.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/derive_clone_enum1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/derive_clone_enum1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[lang = "clone"]
  trait Clone {
      pub fn clone(&self) -> Self;
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/derive_macro1.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/derive_macro1.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/derive_macro1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/derive_macro1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/derive_macro3.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/derive_macro3.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/derive_macro3.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/derive_macro3.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/derive_macro4.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/derive_macro4.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/derive_macro4.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/derive_macro4.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/enum_intrinsics1.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/enum_intrinsics1.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/enum_intrinsics1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/enum_intrinsics1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,6 ****
--- 1,7 ----
  /* { dg-output "0\r*\n2\r*\n" } */
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/enum_intrinsics2.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/enum_intrinsics2.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/enum_intrinsics2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/enum_intrinsics2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,6 ----
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/for-loop1.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/for-loop1.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/for-loop1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/for-loop1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
  // { dg-output "loop\r*\nloop\r*\n" }
! #![feature(intrinsics)]
  
  pub use option::Option::{self, None, Some};
  pub use result::Result::{self, Err, Ok};
--- 1,5 ----
  // { dg-output "loop\r*\nloop\r*\n" }
! #![feature(intrinsics, lang_items)]
  
  pub use option::Option::{self, None, Some};
  pub use result::Result::{self, Err, Ok};
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/for-loop2.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/for-loop2.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/for-loop2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/for-loop2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
  // { dg-output "loop1\r*\nloop2\r*\n" }
! #![feature(intrinsics)]
  
  pub use option::Option::{self, None, Some};
  pub use result::Result::{self, Err, Ok};
--- 1,5 ----
  // { dg-output "loop1\r*\nloop2\r*\n" }
! #![feature(intrinsics, lang_items)]
  
  pub use option::Option::{self, None, Some};
  pub use result::Result::{self, Err, Ok};
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/gat1.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/gat1.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/gat1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/gat1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/impl_desugar-2.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/impl_desugar-2.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/impl_desugar-2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/impl_desugar-2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/impl_desugar.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/impl_desugar.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/impl_desugar.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/impl_desugar.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/impl_rpit1.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/impl_rpit1.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/impl_rpit1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/impl_rpit1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/impl_rpit2.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/impl_rpit2.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/impl_rpit2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/impl_rpit2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/impl_rpit3.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/impl_rpit3.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/impl_rpit3.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/impl_rpit3.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/impl_trait1.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/impl_trait1.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/impl_trait1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/impl_trait1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/impl_trait2.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/impl_trait2.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/impl_trait2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/impl_trait2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/impl_trait3.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/impl_trait3.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/impl_trait3.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/impl_trait3.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,5 ----
  /* { dg-output "Hello from Message\r*\n" } */
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/impl_trait4.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/impl_trait4.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/impl_trait4.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/impl_trait4.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/index1.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/index1.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/index1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/index1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,5 ----
  // { dg-additional-options "-w" }
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-1120.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-1120.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-1120.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-1120.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,6 ****
--- 1,7 ----
  // { dg-additional-options "-w" }
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-1133.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-1133.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-1133.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-1133.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,6 ****
--- 1,7 ----
  // { dg-additional-options "-w" }
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-1198.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-1198.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-1198.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-1198.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,6 ----
  /* { dg-output "foo_deref\r*\nimm_deref\r*\n123\r*\n" } */
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-1232.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-1232.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-1232.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-1232.rs	Sun Dec  7 22:32:16 2025
***************
*** 2,7 ****
--- 2,8 ----
  // { dg-output "slice_access=3\r*\n" }
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-1249.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-1249.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-1249.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-1249.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,6 ****
--- 1,7 ----
  // { dg-options "-w" }
  // { dg-output "1\r*\n2\r*\n" }
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-1436.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-1436.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-1436.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-1436.rs	Sun Dec  7 22:32:16 2025
***************
*** 2,7 ****
--- 2,8 ----
  
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-1481.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-1481.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-1481.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-1481.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,6 ----
  /* { dg-output "called Foo::print\\(\\)\r*" } */
  /* { dg-options "-w" } */
+ #![feature(lang_items)]
  
  #[lang = "sized"]
  trait Sized {}
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-1482.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-1482.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-1482.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-1482.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,5 ----
+ #![feature(lang_items)]
+ 
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-1496.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-1496.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-1496.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-1496.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,6 ----
  /* { dg-output "foo_deref\r*\nimm_deref\r*\n123\r*\n" } */
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-1720-2.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-1720-2.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-1720-2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-1720-2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-1720.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-1720.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-1720.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-1720.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-2005.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-2005.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-2005.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-2005.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,6 ****
  // { dg-additional-options "-w" }
  /* { dg-output "WORKS\r?\n" } */
! #![feature(intrinsics)]
  
  mod core {
      mod option {
--- 1,6 ----
  // { dg-additional-options "-w" }
  /* { dg-output "WORKS\r?\n" } */
! #![feature(intrinsics, lang_items)]
  
  mod core {
      mod option {
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-2052.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-2052.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-2052.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-2052.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-2179.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-2179.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-2179.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-2179.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,5 ----
  // { dg-output "123\r*\n" }
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-2180.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-2180.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-2180.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-2180.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,5 ----
  // { dg-output "123\r*\n" }
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-2236.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-2236.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-2236.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-2236.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,5 ----
  // { dg-options "-w" }
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-2583.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-2583.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-2583.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-2583.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,6 ----
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-3126.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-3126.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-3126.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-3126.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,6 ----
  /* { dg-output "child\r*\n" }*/
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-3381.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-3381.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-3381.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-3381.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,6 ----
  /* { dg-output "Err: 15\r*\n" } */
+ #![feature(lang_items)]
+ 
  #[lang = "sized"]
  trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-3502.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-3502.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-3502.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-3502.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,6 ----
  /* { dg-output "parent 123\r*\nchild\r*\n" } */
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-3836.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-3836.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-3836.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-3836.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,7 ****
  // { dg-options "-w" }
  // { dg-output "less\r*\n" }
  
! #![feature(intrinsics)]
  
  mod core {
      mod option {
--- 1,7 ----
  // { dg-options "-w" }
  // { dg-output "less\r*\n" }
  
! #![feature(intrinsics, lang_items)]
  
  mod core {
      mod option {
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-647.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-647.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-647.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-647.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,6 ----
  /* { dg-output "Hello World 123\r*\n" }*/
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-845.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-845.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-845.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-845.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,7 ----
  // { dg-output "Foo::bar\r*\n" }
  // { dg-additional-options "-w" }
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-851.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-851.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-851.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-851.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,6 ----
  /* { dg-output "Result: 123\r*\n" } */
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-858.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-858.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/issue-858.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/issue-858.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,6 ----
  /* { dg-output "Result: 123\r*\n" } */
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/iter1.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/iter1.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/iter1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/iter1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
  // { dg-output "1\r*\n2\r*\n" }
! #![feature(intrinsics)]
  
  pub use option::Option::{self, None, Some};
  pub use result::Result::{self, Err, Ok};
--- 1,5 ----
  // { dg-output "1\r*\n2\r*\n" }
! #![feature(intrinsics, lang_items)]
  
  pub use option::Option::{self, None, Some};
  pub use result::Result::{self, Err, Ok};
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/macros23.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/macros23.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/macros23.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/macros23.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/macros28.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/macros28.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/macros28.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/macros28.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/method2.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/method2.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/method2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/method2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,7 ----
  // { dg-additional-options "-w" }
  // { dg-output "foo_deref\r*\nimm_deref\r*\n" }
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/method3.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/method3.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/method3.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/method3.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,7 ----
  // { dg-additional-options "-w" }
  // { dg-output "mut_deref\r*\nfoobar: 123\r*\n" }
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/method4.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/method4.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/method4.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/method4.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,7 ----
  // { dg-additional-options "-w" }
  // { dg-output "mut_deref\r*\nfoobar: 123\r*\n" }
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/min_specialization2.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/min_specialization2.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/min_specialization2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/min_specialization2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
! #![feature(min_specialization)]
  
  #[lang = "sized"]
  trait Sized {}
--- 1,4 ----
! #![feature(min_specialization, lang_items)]
  
  #[lang = "sized"]
  trait Sized {}
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/min_specialization3.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/min_specialization3.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/min_specialization3.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/min_specialization3.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
! #![feature(min_specialization)]
  
  #[lang = "sized"]
  trait Sized {}
--- 1,4 ----
! #![feature(min_specialization, lang_items)]
  
  #[lang = "sized"]
  trait Sized {}
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/operator_overload_1.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/operator_overload_1.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/operator_overload_1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/operator_overload_1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,6 ----
  /* { dg-output "3\r*\n" } */
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/operator_overload_10.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/operator_overload_10.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/operator_overload_10.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/operator_overload_10.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,6 ----
  /* { dg-output "foo_deref\r*\n123\r*\n" } */
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/operator_overload_11.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/operator_overload_11.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/operator_overload_11.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/operator_overload_11.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,7 ----
  // { dg-output "1\r*\n" }
  // { dg-additional-options "-w" }
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/operator_overload_12.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/operator_overload_12.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/operator_overload_12.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/operator_overload_12.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,7 ----
  // { dg-output "1\r*\n" }
  // { dg-additional-options "-w" }
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/operator_overload_2.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/operator_overload_2.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/operator_overload_2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/operator_overload_2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,6 ----
  /* { dg-output "3\r*\n" } */
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/operator_overload_3.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/operator_overload_3.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/operator_overload_3.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/operator_overload_3.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,6 ----
  /* { dg-output "3\r*\n3\r*\n" } */
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/operator_overload_4.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/operator_overload_4.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/operator_overload_4.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/operator_overload_4.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,6 ----
  /* { dg-output "neg\r*\n" } */
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/operator_overload_5.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/operator_overload_5.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/operator_overload_5.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/operator_overload_5.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,6 ----
  /* { dg-output "not\r*\n" } */
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/operator_overload_6.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/operator_overload_6.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/operator_overload_6.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/operator_overload_6.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,6 ----
  /* { dg-output "add_assign\r*\n3\r*\n" } */
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/operator_overload_7.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/operator_overload_7.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/operator_overload_7.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/operator_overload_7.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,6 ----
  /* { dg-output "imm_deref\r*\n123\r*\n" } */
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/operator_overload_8.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/operator_overload_8.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/operator_overload_8.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/operator_overload_8.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,6 ----
  /* { dg-output "imm_deref\r*\n123\r*\n" } */
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/operator_overload_9.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/operator_overload_9.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/operator_overload_9.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/operator_overload_9.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,6 ----
  /* { dg-output "mut_deref\r*\n123\r*\n" } */
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/partial-eq-1.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/partial-eq-1.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/partial-eq-1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/partial-eq-1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,6 ----
  /* { dg-output "a == b\r*\na != c\r*\n" }*/
  /* { dg-options "-w" } */
+ #![feature(lang_items)]
  
  mod core {
      mod marker {
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/partial-eq-2.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/partial-eq-2.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/partial-eq-2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/partial-eq-2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,6 ****
--- 1,7 ----
  /* { dg-output "a == b\r*\na != c\r*\n" }*/
  /* { dg-options "-w" } */
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/partial-eq-3.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/partial-eq-3.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/partial-eq-3.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/partial-eq-3.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,7 ****
  /* { dg-output "a == b\r*\na != c\r*\n" }*/
  /* { dg-options "-w" } */
  
! #![feature(intrinsics)]
  
  mod core {
      mod option {
--- 1,7 ----
  /* { dg-output "a == b\r*\na != c\r*\n" }*/
  /* { dg-options "-w" } */
  
! #![feature(intrinsics, lang_items)]
  
  mod core {
      mod option {
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/partial-eq-4.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/partial-eq-4.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/partial-eq-4.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/partial-eq-4.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,7 ****
  /* { dg-output "a == b\r*\na != c\r*\n" }*/
  /* { dg-options "-w" } */
  
! #![feature(intrinsics)]
  
  mod core {
      mod option {
--- 1,7 ----
  /* { dg-output "a == b\r*\na != c\r*\n" }*/
  /* { dg-options "-w" } */
  
! #![feature(intrinsics, lang_items)]
  
  mod core {
      mod option {
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/partial-ord-1.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/partial-ord-1.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/partial-ord-1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/partial-ord-1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,5 ----
  /* { dg-output "x == y\r*\nx > z\r*\n" }*/
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/partial-ord-2.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/partial-ord-2.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/partial-ord-2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/partial-ord-2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,6 ****
  /* { dg-output "x == y\r*\nx > z\r*\n" }*/
  
! #![feature(intrinsics)]
  
  mod core {
      mod option {
--- 1,6 ----
  /* { dg-output "x == y\r*\nx > z\r*\n" }*/
  
! #![feature(intrinsics, lang_items)]
  
  mod core {
      mod option {
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/partial-ord-3.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/partial-ord-3.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/partial-ord-3.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/partial-ord-3.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,7 ****
  /* { dg-output "x == y\r*\nx > z\r*\nx < z\r*\nx >= y\r*\nx <= y\r*\n" } */
  /* { dg-options "-w" } */
  
! #![feature(intrinsics)]
  
  mod core {
      mod option {
--- 1,7 ----
  /* { dg-output "x == y\r*\nx > z\r*\nx < z\r*\nx >= y\r*\nx <= y\r*\n" } */
  /* { dg-options "-w" } */
  
! #![feature(intrinsics, lang_items)]
  
  mod core {
      mod option {
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/partial-ord-4.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/partial-ord-4.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/partial-ord-4.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/partial-ord-4.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,7 ****
  /* { dg-output "a == b\r*\na != c\r*\n" }*/
  /* { dg-options "-w" } */
  
! #![feature(intrinsics)]
  
  mod core {
      mod option {
--- 1,7 ----
  /* { dg-output "a == b\r*\na != c\r*\n" }*/
  /* { dg-options "-w" } */
  
! #![feature(intrinsics, lang_items)]
  
  mod core {
      mod option {
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/partial-ord-5.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/partial-ord-5.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/partial-ord-5.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/partial-ord-5.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,7 ****
  /* { dg-output "a == b\r*\na != c\r*\na >= c\r*\na <= b\r*\na > c\r*\nc < b\r*\n" } */
  /* { dg-options "-w" } */
  
! #![feature(intrinsics)]
  
  mod core {
      mod option {
--- 1,7 ----
  /* { dg-output "a == b\r*\na != c\r*\na >= c\r*\na <= b\r*\na > c\r*\nc < b\r*\n" } */
  /* { dg-options "-w" } */
  
! #![feature(intrinsics, lang_items)]
  
  mod core {
      mod option {
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/partial-ord-6.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/partial-ord-6.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/partial-ord-6.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/partial-ord-6.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,7 ****
  // { dg-additional-options "-w" }
  /* { dg-output "Foo A < B\r?\nFoo B < C\r?\nFoo C == C\r?\nBar x < y\r?\nBarFull s1 < s2\r?\n" } */
  
! #![feature(intrinsics)]
  
  mod core {
      mod option {
--- 1,7 ----
  // { dg-additional-options "-w" }
  /* { dg-output "Foo A < B\r?\nFoo B < C\r?\nFoo C == C\r?\nBar x < y\r?\nBarFull s1 < s2\r?\n" } */
  
! #![feature(intrinsics, lang_items)]
  
  mod core {
      mod option {
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/prefetch_data.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/prefetch_data.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/prefetch_data.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/prefetch_data.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,6 ----
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/ref-pattern2.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/ref-pattern2.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/ref-pattern2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/ref-pattern2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/sip-hasher.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/sip-hasher.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/sip-hasher.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/sip-hasher.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,8 ****
  // { dg-skip-if "" { *-*-* } { "-m32" } { "" } }
  // { dg-options "-w" }
  // { dg-output "Hash: 0x63d53fd2170bbb8c\r*\n" }
! #![feature(intrinsics)]
! #![feature(rustc_attrs)]
  
  #[lang = "sized"]
  trait Sized {}
--- 1,7 ----
  // { dg-skip-if "" { *-*-* } { "-m32" } { "" } }
  // { dg-options "-w" }
  // { dg-output "Hash: 0x63d53fd2170bbb8c\r*\n" }
! #![feature(intrinsics, lang_items, rustc_attrs)]
  
  #[lang = "sized"]
  trait Sized {}
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/slice-magic.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/slice-magic.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/slice-magic.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/slice-magic.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,6 ****
--- 1,7 ----
  // { dg-additional-options "-w" }
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/slice-magic2.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/slice-magic2.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/slice-magic2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/slice-magic2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,6 ****
--- 1,7 ----
  // { dg-additional-options "-w" }
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/slice1.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/slice1.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/slice1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/slice1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,5 ----
  // { dg-additional-options "-w" }
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/str-layout1.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/str-layout1.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/str-layout1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/str-layout1.rs	Sun Dec  7 22:32:16 2025
***************
*** 2,7 ****
--- 2,8 ----
  // { dg-output "t1sz=5 t2sz=10\r*" }
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/trait1.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/trait1.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/trait1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/trait1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,6 ----
  /* { dg-output "S::f\r*\nT1::f\r*\nT2::f\r*\n" } */
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/trait10.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/trait10.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/trait10.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/trait10.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,6 ----
  /* { dg-output "123\r*\n" } */
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/trait11.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/trait11.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/trait11.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/trait11.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,5 ----
  /* { dg-output "3\r*\n" } */
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/trait12.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/trait12.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/trait12.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/trait12.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,6 ----
  /* { dg-output "3\r*\n" } */
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/trait13.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/trait13.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/trait13.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/trait13.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,6 ----
  /* { dg-output "123\r*\n456\r*\n" } */
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/trait14.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/trait14.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/trait14.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/trait14.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,5 ----
  /* { dg-output "parent123\r*\nchild\r*\n" } */
+ #![feature(lang_items)]
  
  extern "C" {
      fn printf(s: *const i8, ...);
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/trait15.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/trait15.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/trait15.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/trait15.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,6 ****
--- 1,8 ----
  /* { dg-output "parent123\r*\nchild\r*\n" } */
  // Testing generics passing with supertraits
  
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/trait2.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/trait2.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/trait2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/trait2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,6 ----
  /* { dg-output "Bar::A = 456\r*\n<Foo as Bar>::A = 456\r*\n" } */
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/trait3.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/trait3.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/trait3.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/trait3.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,6 ----
  /* { dg-output "123, 777\r*" } */
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/trait4.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/trait4.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/trait4.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/trait4.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,6 ----
  /* { dg-output "123\r*\n" }*/
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/trait5.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/trait5.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/trait5.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/trait5.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,6 ----
  /* { dg-output "123\r*\n123\r*\n" } */
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/trait6.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/trait6.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/trait6.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/trait6.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,6 ----
  /* { dg-output "123\r*\n" } */
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/trait7.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/trait7.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/trait7.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/trait7.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,6 ----
  /* { dg-output "123\r*\n" } */
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/trait8.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/trait8.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/trait8.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/trait8.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,6 ----
  /* { dg-output "123\r*\n" } */
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/trait9.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/trait9.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/trait9.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/trait9.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,4 ****
--- 1,6 ----
  /* { dg-output "3\r*\n" } */
+ #![feature(lang_items)]
+ 
  extern "C" {
      fn printf(s: *const i8, ...);
  }
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/transmute1.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/transmute1.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/transmute1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/transmute1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
  // { dg-additional-options "-w" }
! #![feature(intrinsics)]
  
  extern "rust-intrinsic" {
      fn transmute<T, U>(value: T) -> U;
--- 1,5 ----
  // { dg-additional-options "-w" }
! #![feature(intrinsics, lang_items)]
  
  extern "rust-intrinsic" {
      fn transmute<T, U>(value: T) -> U;
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/wrapping_op1.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/wrapping_op1.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/wrapping_op1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/wrapping_op1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,6 ----
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/execute/torture/wrapping_op2.rs gcc-16-20251207/gcc/testsuite/rust/execute/torture/wrapping_op2.rs
*** gcc-16-20251130/gcc/testsuite/rust/execute/torture/wrapping_op2.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/execute/torture/wrapping_op2.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,5 ****
--- 1,6 ----
  #![feature(intrinsics)]
  
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/link/generic_function_1.rs gcc-16-20251207/gcc/testsuite/rust/link/generic_function_1.rs
*** gcc-16-20251130/gcc/testsuite/rust/link/generic_function_1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/link/generic_function_1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/testsuite/rust/link/trait_import_1.rs gcc-16-20251207/gcc/testsuite/rust/link/trait_import_1.rs
*** gcc-16-20251130/gcc/testsuite/rust/link/trait_import_1.rs	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/testsuite/rust/link/trait_import_1.rs	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,4 ----
+ #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
  
diff -Nrcpad gcc-16-20251130/gcc/tree-core.h gcc-16-20251207/gcc/tree-core.h
*** gcc-16-20251130/gcc/tree-core.h	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/tree-core.h	Sun Dec  7 22:32:16 2025
*************** enum omp_clause_code {
*** 596,601 ****
--- 596,603 ----
    /* OpenMP clause: nocontext (scalar-expression).  */
    OMP_CLAUSE_NOCONTEXT,
  
+   /* OpenMP clause: dyn_groupprivate ( [fallback (...)] : integer-expression).  */
+   OMP_CLAUSE_DYN_GROUPPRIVATE,
  };
  
  #undef DEFTREESTRUCT
*************** enum omp_clause_bind_kind {
*** 655,660 ****
--- 657,670 ----
    OMP_CLAUSE_BIND_THREAD
  };
  
+ enum omp_clause_fallback_kind {
+   OMP_CLAUSE_FALLBACK_UNSPECIFIED,
+   OMP_CLAUSE_FALLBACK_ABORT,
+   OMP_CLAUSE_FALLBACK_DEFAULT_MEM,
+   OMP_CLAUSE_FALLBACK_NULL
+ };
+ 
+ 
  /* memory-order-clause on OpenMP atomic/flush constructs or
     argument of atomic_default_mem_order clause.  */
  enum omp_memory_order {
*************** struct GTY(()) tree_omp_clause {
*** 1747,1752 ****
--- 1757,1763 ----
      enum omp_clause_defaultmap_kind defaultmap_kind;
      enum omp_clause_bind_kind      bind_kind;
      enum omp_clause_device_type_kind device_type_kind;
+     enum omp_clause_fallback_kind fallback_kind;
    } GTY ((skip)) subcode;
  
    /* The gimplification of OMP_CLAUSE_REDUCTION_{INIT,MERGE} for omp-low's
diff -Nrcpad gcc-16-20251130/gcc/tree-nested.cc gcc-16-20251207/gcc/tree-nested.cc
*** gcc-16-20251130/gcc/tree-nested.cc	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/tree-nested.cc	Sun Dec  7 22:32:16 2025
*************** convert_nonlocal_omp_clauses (tree *pcla
*** 1411,1416 ****
--- 1411,1417 ----
  	case OMP_CLAUSE_DEPEND:
  	case OMP_CLAUSE_DOACROSS:
  	case OMP_CLAUSE_DEVICE:
+ 	case OMP_CLAUSE_DYN_GROUPPRIVATE:
  	case OMP_CLAUSE_NUM_TEAMS:
  	case OMP_CLAUSE_THREAD_LIMIT:
  	case OMP_CLAUSE_SAFELEN:
*************** convert_local_omp_clauses (tree *pclause
*** 2192,2197 ****
--- 2193,2199 ----
  	case OMP_CLAUSE_DEPEND:
  	case OMP_CLAUSE_DOACROSS:
  	case OMP_CLAUSE_DEVICE:
+ 	case OMP_CLAUSE_DYN_GROUPPRIVATE:
  	case OMP_CLAUSE_NUM_TEAMS:
  	case OMP_CLAUSE_THREAD_LIMIT:
  	case OMP_CLAUSE_SAFELEN:
diff -Nrcpad gcc-16-20251130/gcc/tree-pretty-print.cc gcc-16-20251207/gcc/tree-pretty-print.cc
*** gcc-16-20251130/gcc/tree-pretty-print.cc	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/tree-pretty-print.cc	Sun Dec  7 22:32:16 2025
*************** dump_omp_clause (pretty_printer *pp, tre
*** 1327,1332 ****
--- 1327,1353 ----
        pp_right_paren (pp);
        break;
  
+     case OMP_CLAUSE_DYN_GROUPPRIVATE:
+       pp_string (pp, "dyn_groupprivate(");
+       switch (OMP_CLAUSE_DYN_GROUPPRIVATE_KIND (clause))
+ 	{
+ 	case OMP_CLAUSE_FALLBACK_ABORT:
+ 	  pp_string (pp, "fallback(abort):");
+ 	  break;
+ 	case OMP_CLAUSE_FALLBACK_DEFAULT_MEM:
+ 	  pp_string (pp, "fallback(default_mem):");
+ 	  break;
+ 	case OMP_CLAUSE_FALLBACK_NULL:
+ 	  pp_string (pp, "fallback(null):");
+ 	  break;
+ 	case OMP_CLAUSE_FALLBACK_UNSPECIFIED:
+ 	  break;
+ 	}
+       dump_generic_node (pp, OMP_CLAUSE_DYN_GROUPPRIVATE_EXPR (clause),
+ 			 spc, flags, false);
+       pp_right_paren (pp);
+       break;
+ 
      case OMP_CLAUSE_SAFELEN:
        pp_string (pp, "safelen(");
        dump_generic_node (pp, OMP_CLAUSE_SAFELEN_EXPR (clause),
*************** dump_mem_ref (pretty_printer *pp, tree n
*** 1983,1988 ****
--- 2004,2016 ----
  				 spc, flags | TDF_SLIM, false);
  	    }
  	}
+       if (MR_DEPENDENCE_CLIQUE (node) != 0)
+ 	{
+ 	  pp_string (pp, ", ");
+ 	  pp_decimal_int (pp, MR_DEPENDENCE_CLIQUE (node));
+ 	  pp_colon (pp);
+ 	  pp_decimal_int (pp, MR_DEPENDENCE_BASE (node));
+ 	}
        pp_right_paren (pp);
      }
    else if (TREE_CODE (node) == MEM_REF
diff -Nrcpad gcc-16-20251130/gcc/tree-ssa-loop-niter.cc gcc-16-20251207/gcc/tree-ssa-loop-niter.cc
*** gcc-16-20251130/gcc/tree-ssa-loop-niter.cc	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/tree-ssa-loop-niter.cc	Sun Dec  7 22:32:16 2025
*************** simplify_using_initial_conditions (class
*** 3086,3098 ****
      return expr;
  
    value_range expr_range (TREE_TYPE (expr));
    if (TREE_TYPE (expr) == boolean_type_node
        && get_range_query (cfun)->range_on_edge (expr_range,
  						loop_preheader_edge (loop),
  						expr)
!       && !expr_range.undefined_p ()
!       && !expr_range.varying_p ())
!     return expr_range.nonzero_p () ? boolean_true_node : boolean_false_node;
  
    backup = expanded = expand_simple_operations (expr);
  
--- 3086,3098 ----
      return expr;
  
    value_range expr_range (TREE_TYPE (expr));
+   tree val;
    if (TREE_TYPE (expr) == boolean_type_node
        && get_range_query (cfun)->range_on_edge (expr_range,
  						loop_preheader_edge (loop),
  						expr)
!       && expr_range.singleton_p (&val))
!     return val;
  
    backup = expanded = expand_simple_operations (expr);
  
diff -Nrcpad gcc-16-20251130/gcc/tree-switch-conversion.cc gcc-16-20251207/gcc/tree-switch-conversion.cc
*** gcc-16-20251130/gcc/tree-switch-conversion.cc	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/tree-switch-conversion.cc	Sun Dec  7 22:32:16 2025
*************** void
*** 1074,1080 ****
  switch_conversion::build_arrays ()
  {
    tree arr_index_type;
!   tree tidx, sub, utype, tidxtype;
    gimple *stmt;
    gimple_stmt_iterator gsi;
    gphi_iterator gpi;
--- 1074,1080 ----
  switch_conversion::build_arrays ()
  {
    tree arr_index_type;
!   tree tidx, uidx, sub, utype, tidxtype;
    gimple *stmt;
    gimple_stmt_iterator gsi;
    gphi_iterator gpi;
*************** switch_conversion::build_arrays ()
*** 1099,1117 ****
      tidxtype = utype;
  
    arr_index_type = build_index_type (m_range_size);
!   tidx = make_ssa_name (tidxtype);
    sub = fold_build2_loc (loc, MINUS_EXPR, utype,
  			 fold_convert_loc (loc, utype, m_index_expr),
  			 fold_convert_loc (loc, utype, m_range_min));
-   sub = fold_convert (tidxtype, sub);
    sub = force_gimple_operand_gsi (&gsi, sub,
  				  false, NULL, true, GSI_SAME_STMT);
!   stmt = gimple_build_assign (tidx, sub);
  
    gsi_insert_before (&gsi, stmt, GSI_SAME_STMT);
-   update_stmt (stmt);
    m_arr_ref_first = stmt;
  
    for (gpi = gsi_start_phis (m_final_bb), i = 0;
         !gsi_end_p (gpi); gsi_next (&gpi))
      {
--- 1099,1123 ----
      tidxtype = utype;
  
    arr_index_type = build_index_type (m_range_size);
!   uidx = make_ssa_name (utype);
    sub = fold_build2_loc (loc, MINUS_EXPR, utype,
  			 fold_convert_loc (loc, utype, m_index_expr),
  			 fold_convert_loc (loc, utype, m_range_min));
    sub = force_gimple_operand_gsi (&gsi, sub,
  				  false, NULL, true, GSI_SAME_STMT);
!   stmt = gimple_build_assign (uidx, sub);
  
    gsi_insert_before (&gsi, stmt, GSI_SAME_STMT);
    m_arr_ref_first = stmt;
  
+   tidx = uidx;
+   if (tidxtype != utype)
+     {
+       tidx = make_ssa_name (tidxtype);
+       stmt = gimple_build_assign (tidx, NOP_EXPR, uidx);
+       gsi_insert_before (&gsi, stmt, GSI_SAME_STMT);
+     }
+ 
    for (gpi = gsi_start_phis (m_final_bb), i = 0;
         !gsi_end_p (gpi); gsi_next (&gpi))
      {
diff -Nrcpad gcc-16-20251130/gcc/tree-vect-loop-manip.cc gcc-16-20251207/gcc/tree-vect-loop-manip.cc
*** gcc-16-20251130/gcc/tree-vect-loop-manip.cc	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/tree-vect-loop-manip.cc	Sun Dec  7 22:32:16 2025
*************** vect_update_ivs_after_vectorizer (loop_v
*** 2439,2448 ****
        gimple *use_stmt;
        use_operand_p use_p;
        tree ic_var = PHI_ARG_DEF_FROM_EDGE (phi1, update_e);
!       FOR_EACH_IMM_USE_STMT (use_stmt, imm_iter, ic_var)
! 	if (!flow_bb_inside_loop_p (loop, gimple_bb (use_stmt)))
! 	  FOR_EACH_IMM_USE_ON_STMT (use_p, imm_iter)
! 	    SET_USE (use_p, ni_name);
      }
  }
  
--- 2439,2453 ----
        gimple *use_stmt;
        use_operand_p use_p;
        tree ic_var = PHI_ARG_DEF_FROM_EDGE (phi1, update_e);
!       if (TREE_CODE (ic_var) == SSA_NAME)
! 	{
! 	  FOR_EACH_IMM_USE_STMT (use_stmt, imm_iter, ic_var)
! 	    if (!flow_bb_inside_loop_p (loop, gimple_bb (use_stmt)))
! 	      FOR_EACH_IMM_USE_ON_STMT (use_p, imm_iter)
! 		SET_USE (use_p, ni_name);
! 	}
!       else
! 	adjust_phi_and_debug_stmts (phi1, update_e, ni_name);
      }
  }
  
*************** vect_do_peeling (loop_vec_info loop_vinf
*** 3580,3586 ****
        /* Update IVs of original loop as if they were advanced by
  	 niters_vector_mult_vf steps.  */
        gcc_checking_assert (vect_can_advance_ivs_p (loop_vinfo));
-       update_e = skip_vector ? e : loop_preheader_edge (epilog);
        if (LOOP_VINFO_EARLY_BREAKS (loop_vinfo))
  	update_e = single_succ_edge (LOOP_VINFO_IV_EXIT (loop_vinfo)->dest);
  
--- 3585,3590 ----
*************** vect_do_peeling (loop_vec_info loop_vinf
*** 3639,3644 ****
--- 3643,3653 ----
  	  scale_loop_profile (epilog, prob_epilog, -1);
  	}
  
+       /* Identify the right foward edge for the non-early-break case which must
+ 	 be done after splitting the epilog edge.  */
+       if (!LOOP_VINFO_EARLY_BREAKS (loop_vinfo))
+ 	update_e = skip_vector ? e : loop_preheader_edge (epilog);
+ 
        /* If we have a peeled vector iteration, all exits are the same, leave it
  	 and so the main exit needs to be treated the same as the alternative
  	 exits in that we leave their updates to vectorizable_live_operations.
diff -Nrcpad gcc-16-20251130/gcc/tree-vect-loop.cc gcc-16-20251207/gcc/tree-vect-loop.cc
*** gcc-16-20251130/gcc/tree-vect-loop.cc	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/tree-vect-loop.cc	Sun Dec  7 22:32:16 2025
*************** static bool
*** 941,953 ****
  vect_need_peeling_or_partial_vectors_p (loop_vec_info loop_vinfo)
  {
    unsigned HOST_WIDE_INT const_vf;
-   HOST_WIDE_INT max_niter
-     = likely_max_stmt_executions_int (LOOP_VINFO_LOOP (loop_vinfo));
  
!   unsigned th = LOOP_VINFO_COST_MODEL_THRESHOLD (loop_vinfo);
!   if (!th && LOOP_VINFO_ORIG_LOOP_INFO (loop_vinfo))
!     th = LOOP_VINFO_COST_MODEL_THRESHOLD (LOOP_VINFO_ORIG_LOOP_INFO
! 					  (loop_vinfo));
  
    loop_vec_info main_loop_vinfo
      = (LOOP_VINFO_EPILOGUE_P (loop_vinfo)
--- 941,949 ----
  vect_need_peeling_or_partial_vectors_p (loop_vec_info loop_vinfo)
  {
    unsigned HOST_WIDE_INT const_vf;
  
!   if (LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo))
!     return true;
  
    loop_vec_info main_loop_vinfo
      = (LOOP_VINFO_EPILOGUE_P (loop_vinfo)
*************** vect_need_peeling_or_partial_vectors_p (
*** 959,991 ****
  	 peeled for reasons other than niters.  */
        unsigned int peel_niter
  	= LOOP_VINFO_PEELING_FOR_ALIGNMENT (main_loop_vinfo);
!       if (LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo))
! 	peel_niter += 1;
!       if (!multiple_p (LOOP_VINFO_INT_NITERS (loop_vinfo) - peel_niter,
! 		       LOOP_VINFO_VECT_FACTOR (loop_vinfo)))
! 	return true;
      }
-   else if (LOOP_VINFO_PEELING_FOR_ALIGNMENT (main_loop_vinfo)
-       /* ??? When peeling for gaps but not alignment, we could
- 	 try to check whether the (variable) niters is known to be
- 	 VF * N + 1.  That's something of a niche case though.  */
-       || LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo)
-       || !LOOP_VINFO_VECT_FACTOR (loop_vinfo).is_constant (&const_vf)
-       || ((tree_ctz (LOOP_VINFO_NITERS (loop_vinfo))
- 	   < (unsigned) exact_log2 (const_vf))
- 	  /* In case of versioning, check if the maximum number of
- 	     iterations is greater than th.  If they are identical,
- 	     the epilogue is unnecessary.  */
- 	  && (!LOOP_REQUIRES_VERSIONING (loop_vinfo)
- 	      || ((unsigned HOST_WIDE_INT) max_niter
- 		  /* We'd like to use LOOP_VINFO_VERSIONING_THRESHOLD
- 		     but that's only computed later based on our result.
- 		     The following is the most conservative approximation.  */
- 		  > (std::max ((unsigned HOST_WIDE_INT) th,
- 			       const_vf) / const_vf) * const_vf))))
-     return true;
  
!   return false;
  }
  
  /* Each statement in LOOP_VINFO can be masked where necessary.  Check
--- 955,976 ----
  	 peeled for reasons other than niters.  */
        unsigned int peel_niter
  	= LOOP_VINFO_PEELING_FOR_ALIGNMENT (main_loop_vinfo);
!       return !multiple_p (LOOP_VINFO_INT_NITERS (loop_vinfo) - peel_niter,
! 			  LOOP_VINFO_VECT_FACTOR (loop_vinfo));
      }
  
!   if (!LOOP_VINFO_PEELING_FOR_ALIGNMENT (main_loop_vinfo)
!       && LOOP_VINFO_VECT_FACTOR (loop_vinfo).is_constant (&const_vf))
!     {
!       /* When the number of iterations is a multiple of the vectorization
! 	 factor and we are not doing prologue or forced epilogue peeling
! 	 the epilogue isn't necessary.  */
!       if (tree_ctz (LOOP_VINFO_NITERS (loop_vinfo))
! 	  >= (unsigned) exact_log2 (const_vf))
! 	return false;
!     }
! 
!   return true;
  }
  
  /* Each statement in LOOP_VINFO can be masked where necessary.  Check
diff -Nrcpad gcc-16-20251130/gcc/tree-vect-patterns.cc gcc-16-20251207/gcc/tree-vect-patterns.cc
*** gcc-16-20251130/gcc/tree-vect-patterns.cc	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/tree-vect-patterns.cc	Sun Dec  7 22:32:16 2025
*************** vect_recog_abd_pattern (vec_info *vinfo,
*** 1539,1547 ****
        int dummy_int;
        auto_vec<tree> dummy_vec;
        if (mid_vectype
! 	  && supportable_widening_operation (vinfo, IFN_VEC_WIDEN_ABD,
! 					     stmt_vinfo, mid_vectype,
! 					     vectype_in,
  					     &dummy_code, &dummy_code,
  					     &dummy_int, &dummy_vec))
  	{
--- 1539,1546 ----
        int dummy_int;
        auto_vec<tree> dummy_vec;
        if (mid_vectype
! 	  && supportable_widening_operation (IFN_VEC_WIDEN_ABD,
! 					     mid_vectype, vectype_in, false,
  					     &dummy_code, &dummy_code,
  					     &dummy_int, &dummy_vec))
  	{
*************** vect_recog_widen_op_pattern (vec_info *v
*** 1661,1668 ****
    if (!vectype
        || !vecitype
        || !vecctype
!       || !supportable_widening_operation (vinfo, wide_code, last_stmt_info,
! 					  vecitype, vectype,
  					  &dummy_code, &dummy_code,
  					  &dummy_int, &dummy_vec))
      return NULL;
--- 1660,1666 ----
    if (!vectype
        || !vecitype
        || !vecctype
!       || !supportable_widening_operation (wide_code, vecitype, vectype, true,
  					  &dummy_code, &dummy_code,
  					  &dummy_int, &dummy_vec))
      return NULL;
*************** vect_recog_widen_abd_pattern (vec_info *
*** 1762,1769 ****
    code_helper dummy_code;
    int dummy_int;
    auto_vec<tree> dummy_vec;
!   if (!supportable_widening_operation (vinfo, IFN_VEC_WIDEN_ABD, stmt_vinfo,
! 				       vectype_out, vectype_in,
  				       &dummy_code, &dummy_code,
  				       &dummy_int, &dummy_vec))
      return NULL;
--- 1760,1767 ----
    code_helper dummy_code;
    int dummy_int;
    auto_vec<tree> dummy_vec;
!   if (!supportable_widening_operation (IFN_VEC_WIDEN_ABD, vectype_out,
! 				       vectype_in, false,
  				       &dummy_code, &dummy_code,
  				       &dummy_int, &dummy_vec))
      return NULL;
diff -Nrcpad gcc-16-20251130/gcc/tree-vect-stmts.cc gcc-16-20251207/gcc/tree-vect-stmts.cc
*** gcc-16-20251130/gcc/tree-vect-stmts.cc	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/tree-vect-stmts.cc	Sun Dec  7 22:32:16 2025
*************** static tree
*** 3275,3281 ****
  vect_get_data_ptr_increment (vec_info *vinfo, gimple_stmt_iterator *gsi,
  			     dr_vec_info *dr_info, tree aggr_type,
  			     vect_memory_access_type memory_access_type,
! 			     vec_loop_lens *loop_lens = nullptr)
  {
    if (memory_access_type == VMAT_INVARIANT)
      return size_zero_node;
--- 3275,3281 ----
  vect_get_data_ptr_increment (vec_info *vinfo, gimple_stmt_iterator *gsi,
  			     dr_vec_info *dr_info, tree aggr_type,
  			     vect_memory_access_type memory_access_type,
! 			     vec_loop_lens *loop_lens)
  {
    if (memory_access_type == VMAT_INVARIANT)
      return size_zero_node;
*************** vectorizable_simd_clone_call (vec_info *
*** 4201,4209 ****
    poly_uint64 vf = loop_vinfo ? LOOP_VINFO_VECT_FACTOR (loop_vinfo) : 1;
    unsigned group_size = SLP_TREE_LANES (slp_node);
    unsigned int badness = 0;
    struct cgraph_node *bestn = NULL;
    if (!cost_vec)
!     bestn = cgraph_node::get (simd_clone_info[0]);
    else
      for (struct cgraph_node *n = node->simd_clones; n != NULL;
  	 n = n->simdclone->next_clone)
--- 4201,4212 ----
    poly_uint64 vf = loop_vinfo ? LOOP_VINFO_VECT_FACTOR (loop_vinfo) : 1;
    unsigned group_size = SLP_TREE_LANES (slp_node);
    unsigned int badness = 0;
+   unsigned int badness_inbranch = 0;
    struct cgraph_node *bestn = NULL;
+   struct cgraph_node *bestn_inbranch = NULL;
    if (!cost_vec)
!     bestn = ((loop_vinfo && LOOP_VINFO_FULLY_MASKED_P (loop_vinfo))
! 	     ? data.clone_inbranch : data.clone);
    else
      for (struct cgraph_node *n = node->simd_clones; n != NULL;
  	 n = n->simdclone->next_clone)
*************** vectorizable_simd_clone_call (vec_info *
*** 4334,4347 ****
  			SIMD_CLONE_ARG_TYPE_MASK);
  	    /* Penalize using a masked SIMD clone in a non-masked loop, that is
  	       not in a branch, as we'd have to construct an all-true mask.  */
! 	    if (!loop_vinfo || !LOOP_VINFO_FULLY_MASKED_P (loop_vinfo))
! 	      this_badness += 64;
  	  }
  	if (bestn == NULL || this_badness < badness)
  	  {
  	    bestn = n;
  	    badness = this_badness;
  	  }
        }
  
    if (bestn == NULL)
--- 4337,4355 ----
  			SIMD_CLONE_ARG_TYPE_MASK);
  	    /* Penalize using a masked SIMD clone in a non-masked loop, that is
  	       not in a branch, as we'd have to construct an all-true mask.  */
! 	    this_badness += 64;
  	  }
  	if (bestn == NULL || this_badness < badness)
  	  {
  	    bestn = n;
  	    badness = this_badness;
  	  }
+ 	if (n->simdclone->inbranch
+ 	    && (bestn_inbranch == NULL || this_badness < badness_inbranch))
+ 	  {
+ 	    bestn_inbranch = n;
+ 	    badness_inbranch = this_badness;
+ 	  }
        }
  
    if (bestn == NULL)
*************** vectorizable_simd_clone_call (vec_info *
*** 4377,4382 ****
--- 4385,4401 ----
  			       "incompatible vector types for invariants\n");
  	    return false;
  	  }
+ 
+       if (!bestn_inbranch && loop_vinfo)
+ 	{
+ 	  if (dump_enabled_p ()
+ 	      && LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P (loop_vinfo))
+ 	    dump_printf_loc (MSG_NOTE, vect_location,
+ 			     "can't use a fully-masked loop because no"
+ 			     " masked simd clone was available.\n");
+ 	  LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P (loop_vinfo) = false;
+ 	}
+ 
        /* When the original call is pure or const but the SIMD ABI dictates
  	 an aggregate return we will have to use a virtual definition and
  	 in a loop eventually even need to add a virtual PHI.  That's
*************** vectorizable_simd_clone_call (vec_info *
*** 4390,4464 ****
  	 so automagic virtual operand updating doesn't work.  */
        if (gimple_vuse (stmt))
  	vinfo->any_known_not_updated_vssa = true;
!       simd_clone_info.safe_push (bestn->decl);
!       for (i = 0; i < bestn->simdclone->nargs; i++)
  	{
! 	  switch (bestn->simdclone->args[i].arg_type)
  	    {
! 	    default:
! 	      continue;
! 	    case SIMD_CLONE_ARG_TYPE_LINEAR_CONSTANT_STEP:
! 	    case SIMD_CLONE_ARG_TYPE_LINEAR_REF_CONSTANT_STEP:
! 	      {
! 		simd_clone_info.safe_grow_cleared (i * 3 + 1, true);
! 		simd_clone_info.safe_push (arginfo[i].op);
! 		tree lst = POINTER_TYPE_P (TREE_TYPE (arginfo[i].op))
! 			   ? size_type_node : TREE_TYPE (arginfo[i].op);
! 		tree ls = build_int_cst (lst, arginfo[i].linear_step);
! 		simd_clone_info.safe_push (ls);
! 		tree sll = arginfo[i].simd_lane_linear
! 			   ? boolean_true_node : boolean_false_node;
! 		simd_clone_info.safe_push (sll);
! 	      }
! 	      break;
! 	    case SIMD_CLONE_ARG_TYPE_MASK:
! 	      if (loop_vinfo
! 		  && LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P (loop_vinfo))
  		{
! 		  if (masked_call_offset)
! 		    /* When there is an explicit mask we require the
! 		       number of elements to match up.  */
! 		    vect_record_loop_mask (loop_vinfo,
! 					   &LOOP_VINFO_MASKS (loop_vinfo),
! 					   ncopies_in, vectype, NULL_TREE);
  		  else
  		    {
! 		      /* When there is no explicit mask on the call we have
! 			 more relaxed requirements.  */
! 		      tree masktype;
! 		      poly_uint64 callee_nelements;
! 		      if (SCALAR_INT_MODE_P (bestn->simdclone->mask_mode))
! 			{
! 			  callee_nelements
! 			    = exact_div (bestn->simdclone->simdlen,
! 					 bestn->simdclone->args[i].linear_step);
! 			  masktype = get_related_vectype_for_scalar_type
! 			      (vinfo->vector_mode, TREE_TYPE (vectype),
! 			       callee_nelements);
! 			}
! 		      else
! 			{
! 			  masktype = bestn->simdclone->args[i].vector_type;
! 			  callee_nelements = TYPE_VECTOR_SUBPARTS (masktype);
! 			}
! 		      auto o = vector_unroll_factor (nunits, callee_nelements);
! 		      vect_record_loop_mask (loop_vinfo,
! 					     &LOOP_VINFO_MASKS (loop_vinfo),
! 					     ncopies  * o, masktype, NULL_TREE);
  		    }
  		}
- 	      break;
  	    }
! 	}
! 
!       if (!bestn->simdclone->inbranch && loop_vinfo)
! 	{
! 	  if (dump_enabled_p ()
! 	      && LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P (loop_vinfo))
! 	    dump_printf_loc (MSG_NOTE, vect_location,
! 			     "can't use a fully-masked loop because a"
! 			     " non-masked simd clone was selected.\n");
! 	  LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P (loop_vinfo) = false;
  	}
  
        SLP_TREE_TYPE (slp_node) = call_simd_clone_vec_info_type;
--- 4409,4479 ----
  	 so automagic virtual operand updating doesn't work.  */
        if (gimple_vuse (stmt))
  	vinfo->any_known_not_updated_vssa = true;
! 
!       data.clone = bestn;
!       data.clone_inbranch = bestn_inbranch;
! 
!       simd_clone_info.safe_push (NULL_TREE);
!       for (i = 0;
! 	   i < (bestn_inbranch ? bestn_inbranch : bestn)->simdclone->nargs; i++)
  	{
! 	  if (loop_vinfo
! 	      && LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P (loop_vinfo)
! 	      && (bestn_inbranch->simdclone->args[i].arg_type
! 		  == SIMD_CLONE_ARG_TYPE_MASK))
  	    {
! 	      if (masked_call_offset)
! 		/* When there is an explicit mask we require the
! 		   number of elements to match up.  */
! 		vect_record_loop_mask (loop_vinfo,
! 				       &LOOP_VINFO_MASKS (loop_vinfo),
! 				       ncopies_in, vectype, NULL_TREE);
! 	      else
  		{
! 		  /* When there is no explicit mask on the call we have
! 		     more relaxed requirements.  */
! 		  tree masktype;
! 		  poly_uint64 callee_nelements;
! 		  if (SCALAR_INT_MODE_P (bestn_inbranch->simdclone->mask_mode))
! 		    {
! 		      callee_nelements
! 			  = exact_div (bestn_inbranch->simdclone->simdlen,
! 				       bestn_inbranch->simdclone->args[i].linear_step);
! 		      masktype = get_related_vectype_for_scalar_type
! 			  (vinfo->vector_mode, TREE_TYPE (vectype),
! 			   callee_nelements);
! 		    }
  		  else
  		    {
! 		      masktype = bestn_inbranch->simdclone->args[i].vector_type;
! 		      callee_nelements = TYPE_VECTOR_SUBPARTS (masktype);
  		    }
+ 		  auto o = vector_unroll_factor (nunits, callee_nelements);
+ 		  vect_record_loop_mask (loop_vinfo,
+ 					 &LOOP_VINFO_MASKS (loop_vinfo),
+ 					 ncopies  * o, masktype, NULL_TREE);
  		}
  	    }
! 	  else if ((bestn->simdclone->args[i].arg_type
! 		    == SIMD_CLONE_ARG_TYPE_LINEAR_CONSTANT_STEP)
! 		   || (bestn->simdclone->args[i].arg_type
! 		       == SIMD_CLONE_ARG_TYPE_LINEAR_REF_CONSTANT_STEP)
! 		   || (bestn_inbranch
! 		       && ((bestn_inbranch->simdclone->args[i].arg_type
! 			    == SIMD_CLONE_ARG_TYPE_LINEAR_CONSTANT_STEP)
! 			   || (bestn_inbranch->simdclone->args[i].arg_type
! 			       == SIMD_CLONE_ARG_TYPE_LINEAR_REF_CONSTANT_STEP))))
! 	    {
! 	      simd_clone_info.safe_grow_cleared (i * 3 + 1, true);
! 	      simd_clone_info.safe_push (arginfo[i].op);
! 	      tree lst = (POINTER_TYPE_P (TREE_TYPE (arginfo[i].op))
! 			  ? size_type_node : TREE_TYPE (arginfo[i].op));
! 	      tree ls = build_int_cst (lst, arginfo[i].linear_step);
! 	      simd_clone_info.safe_push (ls);
! 	      tree sll = (arginfo[i].simd_lane_linear
! 			  ? boolean_true_node : boolean_false_node);
! 	      simd_clone_info.safe_push (sll);
! 	    }
  	}
  
        SLP_TREE_TYPE (slp_node) = call_simd_clone_vec_info_type;
*************** vectorizable_conversion (vec_info *vinfo
*** 5409,5414 ****
--- 5424,5430 ----
    scalar_mode rhs_mode = SCALAR_TYPE_MODE (rhs_type);
    opt_scalar_mode rhs_mode_iter;
    auto_vec<std::pair<tree, tree_code>, 2> converts;
+   bool evenodd_ok = false;
  
    /* Supportable by target?  */
    switch (modifier)
*************** vectorizable_conversion (vec_info *vinfo
*** 5456,5465 ****
  	  gcc_assert (!(multi_step_cvt && op_type == binary_op));
  	  break;
  	}
!       if (supportable_widening_operation (vinfo, code, stmt_info,
! 					       vectype_out, vectype_in, &code1,
! 					       &code2, &multi_step_cvt,
! 					       &interm_types))
  	{
  	  /* Binary widening operation can only be supported directly by the
  	     architecture.  */
--- 5472,5499 ----
  	  gcc_assert (!(multi_step_cvt && op_type == binary_op));
  	  break;
  	}
!       /* Elements in a vector can only be reordered if used in a reduction
! 	 operation only.  */
!       if (code == WIDEN_MULT_EXPR
! 	  && loop_vinfo
! 	  && !nested_in_vect_loop_p (LOOP_VINFO_LOOP (loop_vinfo), stmt_info)
! 	  /* For a SLP reduction we cannot swizzle lanes, detecting a
! 	     reduction chain isn't possible here.  */
! 	  && SLP_TREE_LANES (slp_node) == 1)
! 	{
! 	  /* ???  There is no way to look for SLP uses, so work on
! 	     the stmt and what the stmt-based cycle detection gives us.  */
! 	  tree lhs = gimple_get_lhs (vect_orig_stmt (stmt_info)->stmt);
! 	  stmt_vec_info use_stmt_info
! 	    = lhs ? loop_vinfo->lookup_single_use (lhs) : NULL;
! 	  if (use_stmt_info
! 	      && STMT_VINFO_REDUC_DEF (use_stmt_info))
! 	    evenodd_ok = true;
! 	}
!       if (supportable_widening_operation (code, vectype_out, vectype_in,
! 					  evenodd_ok, &code1,
! 					  &code2, &multi_step_cvt,
! 					  &interm_types))
  	{
  	  /* Binary widening operation can only be supported directly by the
  	     architecture.  */
*************** vectorizable_conversion (vec_info *vinfo
*** 5493,5510 ****
  		goto unsupported;
  	      codecvt1 = tc1;
  	    }
! 	  else if (!supportable_widening_operation (vinfo, code,
! 						    stmt_info, vectype_out,
! 						    cvt_type, &codecvt1,
  						    &codecvt2, &multi_step_cvt,
  						    &interm_types))
  	    continue;
  	  else
  	    gcc_assert (multi_step_cvt == 0);
  
! 	  if (supportable_widening_operation (vinfo, NOP_EXPR, stmt_info,
! 					      cvt_type,
! 					      vectype_in, &code1,
  					      &code2, &multi_step_cvt,
  					      &interm_types))
  	    {
--- 5527,5543 ----
  		goto unsupported;
  	      codecvt1 = tc1;
  	    }
! 	  else if (!supportable_widening_operation (code, vectype_out,
! 						    cvt_type, evenodd_ok,
! 						    &codecvt1,
  						    &codecvt2, &multi_step_cvt,
  						    &interm_types))
  	    continue;
  	  else
  	    gcc_assert (multi_step_cvt == 0);
  
! 	  if (supportable_widening_operation (NOP_EXPR, cvt_type,
! 					      vectype_in, evenodd_ok, &code1,
  					      &code2, &multi_step_cvt,
  					      &interm_types))
  	    {
*************** vectorizable_scan_store (vec_info *vinfo
*** 7843,7855 ****
  	perms[i] = vect_gen_perm_mask_checked (vectype, indices);
      }
  
    tree vec_oprnd1 = NULL_TREE;
    tree vec_oprnd2 = NULL_TREE;
    tree vec_oprnd3 = NULL_TREE;
    tree dataref_ptr = DR_BASE_ADDRESS (dr_info->dr);
    tree dataref_offset = build_int_cst (ref_type, 0);
    tree bump = vect_get_data_ptr_increment (vinfo, gsi, dr_info,
! 					   vectype, VMAT_CONTIGUOUS);
    tree ldataref_ptr = NULL_TREE;
    tree orig = NULL_TREE;
    if (STMT_VINFO_SIMD_LANE_ACCESS_P (stmt_info) == 4 && !inscan_var_store)
--- 7876,7894 ----
  	perms[i] = vect_gen_perm_mask_checked (vectype, indices);
      }
  
+   vec_loop_lens *loop_lens
+     = (loop_vinfo && LOOP_VINFO_FULLY_WITH_LENGTH_P (loop_vinfo)
+        ? &LOOP_VINFO_LENS (loop_vinfo)
+        : NULL);
+ 
    tree vec_oprnd1 = NULL_TREE;
    tree vec_oprnd2 = NULL_TREE;
    tree vec_oprnd3 = NULL_TREE;
    tree dataref_ptr = DR_BASE_ADDRESS (dr_info->dr);
    tree dataref_offset = build_int_cst (ref_type, 0);
    tree bump = vect_get_data_ptr_increment (vinfo, gsi, dr_info,
! 					   vectype, VMAT_CONTIGUOUS,
! 					   loop_lens);
    tree ldataref_ptr = NULL_TREE;
    tree orig = NULL_TREE;
    if (STMT_VINFO_SIMD_LANE_ACCESS_P (stmt_info) == 4 && !inscan_var_store)
*************** vectorizable_load (vec_info *vinfo,
*** 9880,9885 ****
--- 9919,9952 ----
  	 transform time.  */
        bool hoist_p = (LOOP_VINFO_NO_DATA_DEPENDENCIES (loop_vinfo)
  		      && !nested_in_vect_loop);
+ 
+       /* It is unsafe to hoist a conditional load over the conditions that make
+ 	 it valid.  When early break this means that any invariant load can't be
+ 	 hoisted unless it's in the loop header or if we know something else has
+ 	 verified the load is valid to do.  Alignment peeling would do this
+ 	 since getting through the prologue means the load was done at least
+ 	 once and so the vector main body is free to hoist it.  However today
+ 	 GCC will hoist the load above the PFA loop.  As such that makes it
+ 	 still invalid and so we can't allow it today.  */
+       auto stmt_bb
+ 	= gimple_bb (STMT_VINFO_STMT (
+ 			vect_orig_stmt (SLP_TREE_SCALAR_STMTS (slp_node)[0])));
+       if (LOOP_VINFO_EARLY_BREAKS (loop_vinfo)
+ 	  && !DR_SCALAR_KNOWN_BOUNDS (dr_info)
+ 	  && stmt_bb != loop->header)
+ 	{
+ 	  if (LOOP_VINFO_PEELING_FOR_ALIGNMENT (loop_vinfo)
+ 	      && dump_enabled_p ())
+ 	    dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
+ 			     "not hoisting invariant load due to early break"
+ 			     "constraints\n");
+ 	  else if (dump_enabled_p ())
+ 	    dump_printf_loc (MSG_NOTE, vect_location,
+ 			     "not hoisting invariant load due to early break"
+ 			     "constraints\n");
+ 	  hoist_p = false;
+ 	}
+ 
        bool uniform_p = true;
        for (stmt_vec_info sinfo : SLP_TREE_SCALAR_STMTS (slp_node))
  	{
*************** vect_maybe_update_slp_op_vectype (slp_tr
*** 13780,13785 ****
--- 13847,13854 ----
     are supported by the target platform either directly (via vector
     tree-codes), or via target builtins.
  
+    When EVENODD_OK then also lane-swizzling operations are considered.
+ 
     Output:
     - CODE1 and CODE2 are codes of vector operations to be used when
     vectorizing the operation, if available.
*************** vect_maybe_update_slp_op_vectype (slp_tr
*** 13790,13806 ****
     widening operation (short in the above example).  */
  
  bool
! supportable_widening_operation (vec_info *vinfo,
! 				code_helper code,
! 				stmt_vec_info stmt_info,
  				tree vectype_out, tree vectype_in,
  				code_helper *code1,
  				code_helper *code2,
                                  int *multi_step_cvt,
                                  vec<tree> *interm_types)
  {
-   loop_vec_info loop_info = dyn_cast <loop_vec_info> (vinfo);
-   class loop *vect_loop = NULL;
    machine_mode vec_mode;
    enum insn_code icode1, icode2;
    optab optab1 = unknown_optab, optab2 = unknown_optab;
--- 13859,13872 ----
     widening operation (short in the above example).  */
  
  bool
! supportable_widening_operation (code_helper code,
  				tree vectype_out, tree vectype_in,
+ 				bool evenodd_ok,
  				code_helper *code1,
  				code_helper *code2,
                                  int *multi_step_cvt,
                                  vec<tree> *interm_types)
  {
    machine_mode vec_mode;
    enum insn_code icode1, icode2;
    optab optab1 = unknown_optab, optab2 = unknown_optab;
*************** supportable_widening_operation (vec_info
*** 13813,13820 ****
    optab optab3, optab4;
  
    *multi_step_cvt = 0;
-   if (loop_info)
-     vect_loop = LOOP_VINFO_LOOP (loop_info);
  
    switch (code.safe_as_tree_code ())
      {
--- 13879,13884 ----
*************** supportable_widening_operation (vec_info
*** 13856,13879 ****
  	 on VEC_WIDEN_MULT_EVEN_EXPR.  If it succeeds, all the return values
  	 are properly set up for the caller.  If we fail, we'll continue with
  	 a VEC_WIDEN_MULT_LO/HI_EXPR check.  */
!       if (vect_loop
! 	  && !nested_in_vect_loop_p (vect_loop, stmt_info)
! 	  && supportable_widening_operation (vinfo, VEC_WIDEN_MULT_EVEN_EXPR,
! 					     stmt_info, vectype_out,
! 					     vectype_in, code1,
  					     code2, multi_step_cvt,
  					     interm_types))
!         {
!           /* Elements in a vector with vect_used_by_reduction property cannot
!              be reordered if the use chain with this property does not have the
!              same operation.  One such an example is s += a * b, where elements
!              in a and b cannot be reordered.  Here we check if the vector defined
!              by STMT is only directly used in the reduction statement.  */
! 	  tree lhs = gimple_assign_lhs (vect_orig_stmt (stmt_info)->stmt);
! 	  stmt_vec_info use_stmt_info = loop_info->lookup_single_use (lhs);
! 	  if (use_stmt_info && STMT_VINFO_REDUC_DEF (use_stmt_info))
! 	    return true;
!         }
        c1 = VEC_WIDEN_MULT_LO_EXPR;
        c2 = VEC_WIDEN_MULT_HI_EXPR;
        break;
--- 13920,13932 ----
  	 on VEC_WIDEN_MULT_EVEN_EXPR.  If it succeeds, all the return values
  	 are properly set up for the caller.  If we fail, we'll continue with
  	 a VEC_WIDEN_MULT_LO/HI_EXPR check.  */
!       if (evenodd_ok
! 	  && supportable_widening_operation (VEC_WIDEN_MULT_EVEN_EXPR,
! 					     vectype_out, vectype_in,
! 					     evenodd_ok, code1,
  					     code2, multi_step_cvt,
  					     interm_types))
! 	return true;
        c1 = VEC_WIDEN_MULT_LO_EXPR;
        c2 = VEC_WIDEN_MULT_HI_EXPR;
        break;
diff -Nrcpad gcc-16-20251130/gcc/tree-vectorizer.h gcc-16-20251207/gcc/tree-vectorizer.h
*** gcc-16-20251130/gcc/tree-vectorizer.h	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/tree-vectorizer.h	Sun Dec  7 22:32:16 2025
*************** struct vect_simd_clone_data : vect_data
*** 265,272 ****
    vect_simd_clone_data () = default;
    vect_simd_clone_data (vect_simd_clone_data &&other) = default;
  
    /* Selected SIMD clone's function info.  First vector element
!      is SIMD clone's function decl, followed by a pair of trees (base + step)
       for linear arguments (pair of NULLs for other arguments).  */
    auto_vec<tree> simd_clone_info;
  };
--- 265,276 ----
    vect_simd_clone_data () = default;
    vect_simd_clone_data (vect_simd_clone_data &&other) = default;
  
+   /* Selected SIMD clone and clone for in-branch.  */
+   cgraph_node *clone;
+   cgraph_node *clone_inbranch;
+ 
    /* Selected SIMD clone's function info.  First vector element
!      is NULL_TREE, followed by a pair of trees (base + step)
       for linear arguments (pair of NULLs for other arguments).  */
    auto_vec<tree> simd_clone_info;
  };
*************** extern bool vect_is_simple_use (vec_info
*** 2492,2499 ****
  				tree *, stmt_vec_info * = NULL);
  extern bool vect_maybe_update_slp_op_vectype (slp_tree, tree);
  extern tree perm_mask_for_reverse (tree);
! extern bool supportable_widening_operation (vec_info*, code_helper,
! 					    stmt_vec_info, tree, tree,
  					    code_helper*, code_helper*,
  					    int*, vec<tree> *);
  extern bool supportable_narrowing_operation (code_helper, tree, tree,
--- 2496,2502 ----
  				tree *, stmt_vec_info * = NULL);
  extern bool vect_maybe_update_slp_op_vectype (slp_tree, tree);
  extern tree perm_mask_for_reverse (tree);
! extern bool supportable_widening_operation (code_helper, tree, tree, bool,
  					    code_helper*, code_helper*,
  					    int*, vec<tree> *);
  extern bool supportable_narrowing_operation (code_helper, tree, tree,
diff -Nrcpad gcc-16-20251130/gcc/tree.cc gcc-16-20251207/gcc/tree.cc
*** gcc-16-20251130/gcc/tree.cc	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/tree.cc	Sun Dec  7 22:32:16 2025
*************** unsigned const char omp_clause_num_ops[]
*** 398,403 ****
--- 398,404 ----
    0, /* OMP_CLAUSE_NOHOST */
    1, /* OMP_CLAUSE_NOVARIANTS */
    1, /* OMP_CLAUSE_NOCONTEXT */
+   1, /* OMP_CLAUSE_DYN_GROUPPRIVATE  */
  };
  
  const char * const omp_clause_code_name[] =
*************** const char * const omp_clause_code_name[
*** 501,506 ****
--- 502,508 ----
    "nohost",
    "novariants",
    "nocontext",
+   "dyn_groupprivate",
  };
  
  /* Unless specific to OpenACC, we tend to internally maintain OpenMP-centric
diff -Nrcpad gcc-16-20251130/gcc/tree.h gcc-16-20251207/gcc/tree.h
*** gcc-16-20251130/gcc/tree.h	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/tree.h	Sun Dec  7 22:32:16 2025
*************** class auto_suppress_location_wrappers
*** 2116,2121 ****
--- 2116,2126 ----
  #define OMP_CLAUSE_BIND_KIND(NODE) \
    (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_BIND)->omp_clause.subcode.bind_kind)
  
+ #define OMP_CLAUSE_DYN_GROUPPRIVATE_EXPR(NODE)                                        \
+   OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_DYN_GROUPPRIVATE), 0)
+ #define OMP_CLAUSE_DYN_GROUPPRIVATE_KIND(NODE) \
+   (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_DYN_GROUPPRIVATE)->omp_clause.subcode.fallback_kind)
+ 
  /* True if ENTER clause is spelled as TO.  */
  #define OMP_CLAUSE_ENTER_TO(NODE) \
    (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_ENTER)->base.public_flag)
diff -Nrcpad gcc-16-20251130/gcc/value-relation.cc gcc-16-20251207/gcc/value-relation.cc
*** gcc-16-20251130/gcc/value-relation.cc	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/value-relation.cc	Sun Dec  7 22:32:16 2025
*************** equiv_oracle::~equiv_oracle ()
*** 334,342 ****
    bitmap_obstack_release (&m_bitmaps);
  }
  
! // Add a partial equivalence R between OP1 and OP2.
  
! void
  equiv_oracle::add_partial_equiv (relation_kind r, tree op1, tree op2)
  {
    int v1 = SSA_NAME_VERSION (op1);
--- 334,343 ----
    bitmap_obstack_release (&m_bitmaps);
  }
  
! // Add a partial equivalence R between OP1 and OP2.  Return false if no
! // new relation is added.
  
! bool
  equiv_oracle::add_partial_equiv (relation_kind r, tree op1, tree op2)
  {
    int v1 = SSA_NAME_VERSION (op1);
*************** equiv_oracle::add_partial_equiv (relatio
*** 359,368 ****
        // being re-evaluated, or the def was used before being registered.
        // In either case, if PE2 has an entry, we simply do nothing.
        if (pe2.members)
! 	return;
        // If there are no uses of op2, do not register.
        if (has_zero_uses (op2))
! 	return;
        // PE1 is the LHS and already has members, so everything in the set
        // should be a slice of PE2 rather than PE1.
        pe2.code = pe_min (r, pe1.code);
--- 360,369 ----
        // being re-evaluated, or the def was used before being registered.
        // In either case, if PE2 has an entry, we simply do nothing.
        if (pe2.members)
! 	return false;
        // If there are no uses of op2, do not register.
        if (has_zero_uses (op2))
! 	return false;
        // PE1 is the LHS and already has members, so everything in the set
        // should be a slice of PE2 rather than PE1.
        pe2.code = pe_min (r, pe1.code);
*************** equiv_oracle::add_partial_equiv (relatio
*** 376,388 ****
  	  m_partial[x].code = pe_min (m_partial[x].code, pe2.code);
  	}
        bitmap_set_bit (pe1.members, v2);
!       return;
      }
    if (pe2.members)
      {
        // If there are no uses of op1, do not register.
        if (has_zero_uses (op1))
! 	return;
        pe1.ssa_base = pe2.ssa_base;
        // If pe2 is a 16 bit value, but only an 8 bit copy, we can't be any
        // more than an 8 bit equivalence here, so choose MIN value.
--- 377,389 ----
  	  m_partial[x].code = pe_min (m_partial[x].code, pe2.code);
  	}
        bitmap_set_bit (pe1.members, v2);
!       return true;
      }
    if (pe2.members)
      {
        // If there are no uses of op1, do not register.
        if (has_zero_uses (op1))
! 	return false;
        pe1.ssa_base = pe2.ssa_base;
        // If pe2 is a 16 bit value, but only an 8 bit copy, we can't be any
        // more than an 8 bit equivalence here, so choose MIN value.
*************** equiv_oracle::add_partial_equiv (relatio
*** 394,404 ****
      {
        // If there are no uses of either operand, do not register.
        if (has_zero_uses (op1) || has_zero_uses (op2))
! 	return;
        // Neither name has an entry, simply create op1 as slice of op2.
        pe2.code = bits_to_pe (TYPE_PRECISION (TREE_TYPE (op2)));
        if (pe2.code == VREL_VARYING)
! 	return;
        pe2.ssa_base = op2;
        pe2.members = BITMAP_ALLOC (&m_bitmaps);
        bitmap_set_bit (pe2.members, v2);
--- 395,405 ----
      {
        // If there are no uses of either operand, do not register.
        if (has_zero_uses (op1) || has_zero_uses (op2))
! 	return false;
        // Neither name has an entry, simply create op1 as slice of op2.
        pe2.code = bits_to_pe (TYPE_PRECISION (TREE_TYPE (op2)));
        if (pe2.code == VREL_VARYING)
! 	return false;
        pe2.ssa_base = op2;
        pe2.members = BITMAP_ALLOC (&m_bitmaps);
        bitmap_set_bit (pe2.members, v2);
*************** equiv_oracle::add_partial_equiv (relatio
*** 407,412 ****
--- 408,414 ----
        pe1.members = pe2.members;
        bitmap_set_bit (pe1.members, v1);
      }
+   return true;
  }
  
  // Return the set of partial equivalences associated with NAME.  The bitmap
*************** equiv_oracle::register_initial_def (tree
*** 621,639 ****
  // a query is made as to what equivalences both names have already, and
  // any preexisting equivalences are merged to create a single equivalence
  // containing all the ssa_names in this basic block.
  
! void
  equiv_oracle::record (basic_block bb, relation_kind k, tree ssa1, tree ssa2)
  {
    // Process partial equivalencies.
    if (relation_partial_equiv_p (k))
!     {
!       add_partial_equiv (k, ssa1, ssa2);
!       return;
!     }
    // Only handle equality relations.
    if (k != VREL_EQ)
!     return;
  
    unsigned v1 = SSA_NAME_VERSION (ssa1);
    unsigned v2 = SSA_NAME_VERSION (ssa2);
--- 623,640 ----
  // a query is made as to what equivalences both names have already, and
  // any preexisting equivalences are merged to create a single equivalence
  // containing all the ssa_names in this basic block.
+ // Return false if no new relation is added.
  
! bool
  equiv_oracle::record (basic_block bb, relation_kind k, tree ssa1, tree ssa2)
  {
    // Process partial equivalencies.
    if (relation_partial_equiv_p (k))
!     return add_partial_equiv (k, ssa1, ssa2);
! 
    // Only handle equality relations.
    if (k != VREL_EQ)
!     return false;
  
    unsigned v1 = SSA_NAME_VERSION (ssa1);
    unsigned v2 = SSA_NAME_VERSION (ssa2);
*************** equiv_oracle::record (basic_block bb, re
*** 650,656 ****
  
    // Check if they are the same set
    if (equiv_1 && equiv_1 == equiv_2)
!     return;
  
    bitmap equiv_set;
  
--- 651,657 ----
  
    // Check if they are the same set
    if (equiv_1 && equiv_1 == equiv_2)
!     return false;
  
    bitmap equiv_set;
  
*************** equiv_oracle::record (basic_block bb, re
*** 674,682 ****
    // A non-null return is a bitmap that is to be added to the current
    // block as a new equivalence.
    if (!equiv_set)
!     return;
  
    add_equiv_to_block (bb, equiv_set);
  }
  
  // Add an equivalency record in block BB containing bitmap EQUIV_SET.
--- 675,684 ----
    // A non-null return is a bitmap that is to be added to the current
    // block as a new equivalence.
    if (!equiv_set)
!     return false;
  
    add_equiv_to_block (bb, equiv_set);
+   return true;
  }
  
  // Add an equivalency record in block BB containing bitmap EQUIV_SET.
*************** dom_oracle::~dom_oracle ()
*** 1073,1080 ****
  }
  
  // Register relation K between ssa_name OP1 and OP2 on STMT.
  
! void
  relation_oracle::record (gimple *stmt, relation_kind k, tree op1, tree op2)
  {
    gcc_checking_assert (TREE_CODE (op1) == SSA_NAME);
--- 1075,1083 ----
  }
  
  // Register relation K between ssa_name OP1 and OP2 on STMT.
+ // Return false if no new relation is added.
  
! bool
  relation_oracle::record (gimple *stmt, relation_kind k, tree op1, tree op2)
  {
    gcc_checking_assert (TREE_CODE (op1) == SSA_NAME);
*************** relation_oracle::record (gimple *stmt, r
*** 1083,1098 ****
  
    // Don't register lack of a relation.
    if (k == VREL_VARYING)
!     return;
! 
!   if (dump_file && (dump_flags & TDF_DETAILS))
!     {
!       value_relation vr (k, op1, op2);
!       fprintf (dump_file, " Registering value_relation ");
!       vr.dump (dump_file);
!       fprintf (dump_file, " (bb%d) at ", gimple_bb (stmt)->index);
!       print_gimple_stmt (dump_file, stmt, 0, TDF_SLIM);
!     }
  
    // If an equivalence is being added between a PHI and one of its arguments
    // make sure that that argument is not defined in the same block.
--- 1086,1092 ----
  
    // Don't register lack of a relation.
    if (k == VREL_VARYING)
!     return false;
  
    // If an equivalence is being added between a PHI and one of its arguments
    // make sure that that argument is not defined in the same block.
*************** relation_oracle::record (gimple *stmt, r
*** 1106,1127 ****
        if (phi_def == op2)
  	arg = op1;
        if (gimple_bb (stmt) == gimple_bb (SSA_NAME_DEF_STMT (arg)))
! 	{
! 	  if (dump_file && (dump_flags & TDF_DETAILS))
! 	    {
! 	      fprintf (dump_file, "  Not registered due to ");
! 	      print_generic_expr (dump_file, arg, TDF_SLIM);
! 	      fprintf (dump_file, " being defined in the same block.\n");
! 	    }
! 	  return;
! 	}
      }
!   record (gimple_bb (stmt), k, op1, op2);
  }
  
  // Register relation K between ssa_name OP1 and OP2 on edge E.
  
! void
  relation_oracle::record (edge e, relation_kind k, tree op1, tree op2)
  {
    gcc_checking_assert (TREE_CODE (op1) == SSA_NAME);
--- 1100,1125 ----
        if (phi_def == op2)
  	arg = op1;
        if (gimple_bb (stmt) == gimple_bb (SSA_NAME_DEF_STMT (arg)))
! 	return false;
      }
! 
!   bool ret = record (gimple_bb (stmt), k, op1, op2);
! 
!   if (ret && dump_file && (dump_flags & TDF_DETAILS))
!     {
!       value_relation vr (k, op1, op2);
!       fprintf (dump_file, " Registering value_relation ");
!       vr.dump (dump_file);
!       fprintf (dump_file, " (bb%d) at ", gimple_bb (stmt)->index);
!       print_gimple_stmt (dump_file, stmt, 0, TDF_SLIM);
!     }
!   return ret;
  }
  
  // Register relation K between ssa_name OP1 and OP2 on edge E.
+ // Return false if no new relation is added.
  
! bool
  relation_oracle::record (edge e, relation_kind k, tree op1, tree op2)
  {
    gcc_checking_assert (TREE_CODE (op1) == SSA_NAME);
*************** relation_oracle::record (edge e, relatio
*** 1130,1163 ****
    // Do not register lack of relation, or blocks which have more than
    // edge E for a predecessor.
    if (k == VREL_VARYING || !single_pred_p (e->dest))
!     return;
  
!   if (dump_file && (dump_flags & TDF_DETAILS))
      {
        value_relation vr (k, op1, op2);
        fprintf (dump_file, " Registering value_relation ");
        vr.dump (dump_file);
        fprintf (dump_file, " on (%d->%d)\n", e->src->index, e->dest->index);
      }
! 
!   record (e->dest, k, op1, op2);
  }
  
  // Register relation K between OP! and OP2 in block BB.
  // This creates the record and searches for existing records in the dominator
! // tree to merge with.
  
! void
  dom_oracle::record (basic_block bb, relation_kind k, tree op1, tree op2)
  {
    // If the 2 ssa_names are the same, do nothing.  An equivalence is implied,
    // and no other relation makes sense.
    if (op1 == op2)
!     return;
  
    // Equivalencies are handled by the equivalence oracle.
    if (relation_equiv_p (k))
!     equiv_oracle::record (bb, k, op1, op2);
    else
      {
        // if neither op1 nor op2 are in a relation before this is registered,
--- 1128,1162 ----
    // Do not register lack of relation, or blocks which have more than
    // edge E for a predecessor.
    if (k == VREL_VARYING || !single_pred_p (e->dest))
!     return false;
  
!   bool ret = record (e->dest, k, op1, op2);
! 
!   if (ret && dump_file && (dump_flags & TDF_DETAILS))
      {
        value_relation vr (k, op1, op2);
        fprintf (dump_file, " Registering value_relation ");
        vr.dump (dump_file);
        fprintf (dump_file, " on (%d->%d)\n", e->src->index, e->dest->index);
      }
!   return ret;
  }
  
  // Register relation K between OP! and OP2 in block BB.
  // This creates the record and searches for existing records in the dominator
! // tree to merge with.  Return false if no new relation is added.
  
! bool
  dom_oracle::record (basic_block bb, relation_kind k, tree op1, tree op2)
  {
    // If the 2 ssa_names are the same, do nothing.  An equivalence is implied,
    // and no other relation makes sense.
    if (op1 == op2)
!     return false;
  
    // Equivalencies are handled by the equivalence oracle.
    if (relation_equiv_p (k))
!     return equiv_oracle::record (bb, k, op1, op2);
    else
      {
        // if neither op1 nor op2 are in a relation before this is registered,
*************** dom_oracle::record (basic_block bb, rela
*** 1169,1174 ****
--- 1168,1174 ----
  	  && (m_relations[bb->index].m_num_relations
  	      < param_relation_block_limit))
  	register_transitives (bb, *ptr);
+       return ptr != NULL;
      }
  }
  
*************** dom_oracle::set_one_relation (basic_bloc
*** 1201,1233 ****
    // There is an existing relation in this block, just intersect with it.
    if (curr != VREL_VARYING)
      {
-       if (dump_file && (dump_flags & TDF_DETAILS))
- 	{
- 	  fprintf (dump_file, "    Intersecting with existing ");
- 	  ptr->dump (dump_file);
- 	}
        // Check into whether we can simply replace the relation rather than
        // intersecting it.  This may help with some optimistic iterative
!       // updating algorithms.
!       bool new_rel = ptr->intersect (vr);
!       if (dump_file && (dump_flags & TDF_DETAILS))
! 	{
! 	  fprintf (dump_file, " to produce ");
! 	  ptr->dump (dump_file);
! 	  fprintf (dump_file, " %s.\n", new_rel ? "Updated" : "No Change");
! 	}
!       // If there was no change, return no record..
!       if (!new_rel)
  	return NULL;
      }
    else
      {
        if (m_relations[bbi].m_num_relations >= param_relation_block_limit)
! 	{
! 	  if (dump_file && (dump_flags & TDF_DETAILS))
! 	    fprintf (dump_file, "  Not registered due to bb being full\n");
! 	  return NULL;
! 	}
        m_relations[bbi].m_num_relations++;
        // Check for an existing relation further up the DOM chain.
        // By including dominating relations, The first one found in any search
--- 1201,1216 ----
    // There is an existing relation in this block, just intersect with it.
    if (curr != VREL_VARYING)
      {
        // Check into whether we can simply replace the relation rather than
        // intersecting it.  This may help with some optimistic iterative
!       // updating algorithms.  If there was no change, return no record..
!       if (!ptr->intersect (vr))
  	return NULL;
      }
    else
      {
        if (m_relations[bbi].m_num_relations >= param_relation_block_limit)
! 	return NULL;
        m_relations[bbi].m_num_relations++;
        // Check for an existing relation further up the DOM chain.
        // By including dominating relations, The first one found in any search
*************** path_oracle::equiv_set (tree ssa, basic_
*** 1585,1593 ****
  }
  
  // Register an equivalence between SSA1 and SSA2 resolving unknowns from
! // block BB.
  
! void
  path_oracle::register_equiv (basic_block bb, tree ssa1, tree ssa2)
  {
    const_bitmap equiv_1 = equiv_set (ssa1, bb);
--- 1568,1576 ----
  }
  
  // Register an equivalence between SSA1 and SSA2 resolving unknowns from
! // block BB.  Return false if no new equivalence was added.
  
! bool
  path_oracle::register_equiv (basic_block bb, tree ssa1, tree ssa2)
  {
    const_bitmap equiv_1 = equiv_set (ssa1, bb);
*************** path_oracle::register_equiv (basic_block
*** 1595,1601 ****
  
    // Check if they are the same set, if so, we're done.
    if (bitmap_equal_p (equiv_1, equiv_2))
!     return;
  
    // Don't mess around, simply create a new record and insert it first.
    bitmap b = BITMAP_ALLOC (&m_bitmaps);
--- 1578,1584 ----
  
    // Check if they are the same set, if so, we're done.
    if (bitmap_equal_p (equiv_1, equiv_2))
!     return false;
  
    // Don't mess around, simply create a new record and insert it first.
    bitmap b = BITMAP_ALLOC (&m_bitmaps);
*************** path_oracle::register_equiv (basic_block
*** 1609,1614 ****
--- 1592,1598 ----
    ptr->m_next = m_equiv.m_next;
    m_equiv.m_next = ptr;
    bitmap_ior_into (m_equiv.m_names, b);
+   return true;
  }
  
  // Register killing definition of an SSA_NAME.
*************** path_oracle::killing_def (tree ssa)
*** 1658,1698 ****
  }
  
  // Register relation K between SSA1 and SSA2, resolving unknowns by
! // querying from BB.
  
! void
  path_oracle::record (basic_block bb, relation_kind k, tree ssa1, tree ssa2)
  {
    // If the 2 ssa_names are the same, do nothing.  An equivalence is implied,
    // and no other relation makes sense.
    if (ssa1 == ssa2)
!     return;
! 
!   if (dump_file && (dump_flags & TDF_DETAILS))
!     {
!       value_relation vr (k, ssa1, ssa2);
!       fprintf (dump_file, " Registering value_relation (path_oracle) ");
!       vr.dump (dump_file);
!       fprintf (dump_file, " (root: bb%d)\n", bb->index);
!     }
  
    relation_kind curr = query (bb, ssa1, ssa2);
    if (curr != VREL_VARYING)
      k = relation_intersect (curr, k);
  
    if (k == VREL_EQ)
      {
!       register_equiv (bb, ssa1, ssa2);
!       return;
      }
  
!   bitmap_set_bit (m_relations.m_names, SSA_NAME_VERSION (ssa1));
!   bitmap_set_bit (m_relations.m_names, SSA_NAME_VERSION (ssa2));
!   relation_chain *ptr = (relation_chain *) obstack_alloc (&m_chain_obstack,
! 						      sizeof (relation_chain));
!   ptr->set_relation (k, ssa1, ssa2);
!   ptr->m_next = m_relations.m_head;
!   m_relations.m_head = ptr;
  }
  
  // Query for a relationship between equiv set B1 and B2, resolving unknowns
--- 1642,1684 ----
  }
  
  // Register relation K between SSA1 and SSA2, resolving unknowns by
! // querying from BB.  Return false if no new relation is registered.
  
! bool
  path_oracle::record (basic_block bb, relation_kind k, tree ssa1, tree ssa2)
  {
    // If the 2 ssa_names are the same, do nothing.  An equivalence is implied,
    // and no other relation makes sense.
    if (ssa1 == ssa2)
!     return false;
  
    relation_kind curr = query (bb, ssa1, ssa2);
    if (curr != VREL_VARYING)
      k = relation_intersect (curr, k);
  
+   bool ret;
    if (k == VREL_EQ)
+     ret = register_equiv (bb, ssa1, ssa2);
+   else
      {
!       bitmap_set_bit (m_relations.m_names, SSA_NAME_VERSION (ssa1));
!       bitmap_set_bit (m_relations.m_names, SSA_NAME_VERSION (ssa2));
!       relation_chain *ptr = (relation_chain *) obstack_alloc (&m_chain_obstack,
! 							  sizeof (relation_chain));
!       ptr->set_relation (k, ssa1, ssa2);
!       ptr->m_next = m_relations.m_head;
!       m_relations.m_head = ptr;
!       ret = true;
      }
  
!   if (ret && dump_file && (dump_flags & TDF_DETAILS))
!     {
!       value_relation vr (k, ssa1, ssa2);
!       fprintf (dump_file, " Registering value_relation (path_oracle) ");
!       vr.dump (dump_file);
!       fprintf (dump_file, " (root: bb%d)\n", bb->index);
!     }
!   return ret;
  }
  
  // Query for a relationship between equiv set B1 and B2, resolving unknowns
diff -Nrcpad gcc-16-20251130/gcc/value-relation.h gcc-16-20251207/gcc/value-relation.h
*** gcc-16-20251130/gcc/value-relation.h	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/gcc/value-relation.h	Sun Dec  7 22:32:16 2025
*************** public:
*** 100,108 ****
    virtual ~relation_oracle () { }
  
    // register a relation between 2 ssa names.
!   void record (gimple *, relation_kind, tree, tree);
!   void record (edge, relation_kind, tree, tree);
!   virtual void record (basic_block, relation_kind, tree, tree) { }
  
    // Query if there is any relation between SSA1 and SSA2.
    relation_kind query (gimple *s, tree ssa1, tree ssa2);
--- 100,108 ----
    virtual ~relation_oracle () { }
  
    // register a relation between 2 ssa names.
!   bool record (gimple *, relation_kind, tree, tree);
!   bool record (edge, relation_kind, tree, tree);
!   virtual bool record (basic_block, relation_kind, tree, tree) { return false; }
  
    // Query if there is any relation between SSA1 and SSA2.
    relation_kind query (gimple *s, tree ssa1, tree ssa2);
*************** public:
*** 166,172 ****
    ~equiv_oracle ();
  
    const_bitmap equiv_set (tree ssa, basic_block bb) final override;
!   void record (basic_block bb, relation_kind k, tree ssa1, tree ssa2) override;
  
    relation_kind partial_equiv (tree ssa1, tree ssa2, tree *base = NULL) const;
    relation_kind query (basic_block, tree, tree) override;
--- 166,172 ----
    ~equiv_oracle ();
  
    const_bitmap equiv_set (tree ssa, basic_block bb) final override;
!   bool record (basic_block bb, relation_kind k, tree ssa1, tree ssa2) override;
  
    relation_kind partial_equiv (tree ssa1, tree ssa2, tree *base = NULL) const;
    relation_kind query (basic_block, tree, tree) override;
*************** public:
*** 175,181 ****
    void dump (FILE *f) const override;
  
  protected:
!   void add_partial_equiv (relation_kind, tree, tree);
    const pe_slice *partial_equiv_set (tree name) final override;
    inline bool has_equiv_p (unsigned v) { return bitmap_bit_p (m_equiv_set, v); }
    bitmap_obstack m_bitmaps;
--- 175,181 ----
    void dump (FILE *f) const override;
  
  protected:
!   bool add_partial_equiv (relation_kind, tree, tree);
    const pe_slice *partial_equiv_set (tree name) final override;
    inline bool has_equiv_p (unsigned v) { return bitmap_bit_p (m_equiv_set, v); }
    bitmap_obstack m_bitmaps;
*************** public:
*** 224,230 ****
    dom_oracle (bool do_trans_p = true);
    ~dom_oracle ();
  
!   void record (basic_block bb, relation_kind k, tree op1, tree op2)
      final override;
  
    relation_kind query (basic_block bb, tree ssa1, tree ssa2) final override;
--- 224,230 ----
    dom_oracle (bool do_trans_p = true);
    ~dom_oracle ();
  
!   bool record (basic_block bb, relation_kind k, tree op1, tree op2)
      final override;
  
    relation_kind query (basic_block bb, tree ssa1, tree ssa2) final override;
*************** public:
*** 273,279 ****
    path_oracle (relation_oracle *oracle = NULL);
    ~path_oracle ();
    const_bitmap equiv_set (tree, basic_block) final override;
!   void record (basic_block, relation_kind, tree, tree) final override;
    void killing_def (tree);
    relation_kind query (basic_block, tree, tree) final override;
    relation_kind query (basic_block, const_bitmap, const_bitmap) final override;
--- 273,279 ----
    path_oracle (relation_oracle *oracle = NULL);
    ~path_oracle ();
    const_bitmap equiv_set (tree, basic_block) final override;
!   bool record (basic_block, relation_kind, tree, tree) final override;
    void killing_def (tree);
    relation_kind query (basic_block, tree, tree) final override;
    relation_kind query (basic_block, const_bitmap, const_bitmap) final override;
*************** public:
*** 282,288 ****
    void dump (FILE *, basic_block) const final override;
    void dump (FILE *) const final override;
  private:
!   void register_equiv (basic_block bb, tree ssa1, tree ssa2);
    equiv_chain m_equiv;
    relation_chain_head m_relations;
    relation_oracle *m_root;
--- 282,288 ----
    void dump (FILE *, basic_block) const final override;
    void dump (FILE *) const final override;
  private:
!   bool register_equiv (basic_block bb, tree ssa1, tree ssa2);
    equiv_chain m_equiv;
    relation_chain_head m_relations;
    relation_oracle *m_root;
diff -Nrcpad gcc-16-20251130/include/ChangeLog gcc-16-20251207/include/ChangeLog
*** gcc-16-20251130/include/ChangeLog	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/include/ChangeLog	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,14 ----
+ 2025-12-01  Andrew Stubbs  <ams@baylibre.com>
+ 
+ 	* hsa.h: Import newer version.
+ 	* hsa_ext_amd.h: Likewise.
+ 	* hsa_ext_image.h: Likewise.
+ 
+ 2025-11-30  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* dwarf2.h (DW_LANG_Algol68): Define.
+ 	(DW_LNAME_Algol68): Likewise.
+ 
  2025-11-13  Andrew Stubbs  <ams@codesourcery.com>
  	    Kwok Cheung Yeung  <kcyeung@baylibre.com>
  	    Thomas Schwinge  <tschwinge@baylibre.com>
diff -Nrcpad gcc-16-20251130/include/hsa.h gcc-16-20251207/include/hsa.h
*** gcc-16-20251130/include/hsa.h	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/include/hsa.h	Sun Dec  7 22:32:16 2025
***************
*** 1,6 ****
  ////////////////////////////////////////////////////////////////////////////////
  //
! // Copyright (C) 2014-2020 Advanced Micro Devices Inc.  All rights reserved.
  //
  // Permission is hereby granted, free of charge, to any person or organization
  // obtaining a copy of the software and accompanying documentation covered by
--- 1,6 ----
  ////////////////////////////////////////////////////////////////////////////////
  //
! // Copyright (C) 2014-2022 Advanced Micro Devices Inc.  All rights reserved.
  //
  // Permission is hereby granted, free of charge, to any person or organization
  // obtaining a copy of the software and accompanying documentation covered by
*************** typedef enum {
*** 467,473 ****
    * String containing the ROCr build identifier.
    */
    HSA_AMD_SYSTEM_INFO_BUILD_VERSION = 0x200,
! 
    HSA_AMD_SYSTEM_INFO_SVM_ACCESSIBLE_BY_DEFAULT = 0x202
  } hsa_system_info_t;
  
--- 467,485 ----
    * String containing the ROCr build identifier.
    */
    HSA_AMD_SYSTEM_INFO_BUILD_VERSION = 0x200,
!   /**
!   * Returns true if hsa_amd_svm_* APIs are supported by the driver.  The type of
!   * this attribute is bool.
!   */
!   HSA_AMD_SYSTEM_INFO_SVM_SUPPORTED = 0x201,
!   // TODO: Should this be per Agent?
!   /**
!   * Returns true if all Agents have access to system allocated memory (such as
!   * that allocated by mmap, malloc, or new) by default.
!   * If false then system allocated memory may only be made SVM accessible to
!   * an Agent by declaration of accessibility with hsa_amd_svm_set_attributes.
!   * The type of this attribute is bool.
!   */
    HSA_AMD_SYSTEM_INFO_SVM_ACCESSIBLE_BY_DEFAULT = 0x202
  } hsa_system_info_t;
  
*************** typedef enum {
*** 986,993 ****
     * Minor version of the HSA runtime specification supported by the
     * agent. The type of this attribute is uint16_t.
     */
!   HSA_AGENT_INFO_VERSION_MINOR = 22
! 
  } hsa_agent_info_t;
  
  /**
--- 998,1013 ----
     * Minor version of the HSA runtime specification supported by the
     * agent. The type of this attribute is uint16_t.
     */
!   HSA_AGENT_INFO_VERSION_MINOR = 22,
!   /**
!    * This enum does not have a fixed underlying type, thus in C++ post D2338:
!    * If the enumeration type does not have a fixed underlying type, the value is
!    * unchanged if the original value is within the range of the enumeration
!    * values (9.7.1 [dcl.enum]), and otherwise, the behavior is
!    * undefined.
!    * Thus increase the range of this enum to encompass vendor extensions.
!    */
!   HSA_AGENT_INFO_LAST = INT32_MAX
  } hsa_agent_info_t;
  
  /**
diff -Nrcpad gcc-16-20251130/include/hsa_ext_amd.h gcc-16-20251207/include/hsa_ext_amd.h
*** gcc-16-20251130/include/hsa_ext_amd.h	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/include/hsa_ext_amd.h	Sun Dec  7 22:32:16 2025
***************
*** 1,6 ****
  ////////////////////////////////////////////////////////////////////////////////
  //
! // Copyright (C) 2014-2020 Advanced Micro Devices Inc.  All rights reserved.
  //
  // Permission is hereby granted, free of charge, to any person or organization
  // obtaining a copy of the software and accompanying documentation covered by
--- 1,6 ----
  ////////////////////////////////////////////////////////////////////////////////
  //
! // Copyright (C) 2014-2022 Advanced Micro Devices Inc.  All rights reserved.
  //
  // Permission is hereby granted, free of charge, to any person or organization
  // obtaining a copy of the software and accompanying documentation covered by
***************
*** 41,46 ****
--- 41,155 ----
  extern "C" {
  #endif
  
+ /** \addtogroup aql Architected Queuing Language
+  *  @{
+  */
+ 
+ /**
+  * @brief A fixed-size type used to represent ::hsa_signal_condition_t constants.
+  */
+ typedef uint32_t hsa_signal_condition32_t;
+ 
+ /**
+  * @brief AMD vendor specific packet type.
+  */
+ typedef enum {
+   /**
+    * Packet used by agents to delay processing of subsequent packets until a
+    * configurable condition is satisfied by an HSA signal.  Only kernel dispatch
+    * queues created from AMD GPU Agents support this packet.
+    */
+   HSA_AMD_PACKET_TYPE_BARRIER_VALUE = 2,
+ } hsa_amd_packet_type_t;
+ 
+ /**
+  * @brief A fixed-size type used to represent ::hsa_amd_packet_type_t constants.
+  */
+ typedef uint8_t hsa_amd_packet_type8_t;
+ 
+ /**
+  * @brief AMD vendor specific AQL packet header
+  */
+ typedef struct hsa_amd_packet_header_s {
+   /**
+    * Packet header. Used to configure multiple packet parameters such as the
+    * packet type. The parameters are described by ::hsa_packet_header_t.
+    */
+   uint16_t header;
+ 
+   /**
+    *Format of the vendor specific packet.
+    */
+   hsa_amd_packet_type8_t AmdFormat;
+ 
+   /**
+    * Reserved. Must be 0.
+    */
+   uint8_t reserved;
+ } hsa_amd_vendor_packet_header_t;
+ 
+ /**
+  * @brief AMD barrier value packet.  Halts packet processing and waits for
+  * (signal_value & ::mask) ::cond ::value to be satisfied, where signal_value
+  * is the value of the signal ::signal.
+  */
+ typedef struct hsa_amd_barrier_value_packet_s {
+   /**
+    * AMD vendor specific packet header.
+    */
+   hsa_amd_vendor_packet_header_t header;
+ 
+   /**
+    * Reserved. Must be 0.
+    */
+   uint32_t reserved0;
+ 
+   /**
+    * Dependent signal object. A signal with a handle value of 0 is
+    * allowed and is interpreted by the packet processor a satisfied
+    * dependency.
+    */
+   hsa_signal_t signal;
+ 
+   /**
+    * Value to compare against.
+    */
+   hsa_signal_value_t value;
+ 
+   /**
+    * Bit mask to be combined by bitwise AND with ::signal's value.
+    */
+   hsa_signal_value_t mask;
+ 
+   /**
+    * Comparison operation.  See ::hsa_signal_condition_t.
+    */
+   hsa_signal_condition32_t cond;
+ 
+   /**
+    * Reserved. Must be 0.
+    */
+   uint32_t reserved1;
+ 
+   /**
+    * Reserved. Must be 0.
+    */
+   uint64_t reserved2;
+ 
+   /**
+    * Reserved. Must be 0.
+    */
+   uint64_t reserved3;
+ 
+   /**
+    * Signal used to indicate completion of the job. The application can use the
+    * special signal handle 0 to indicate that no signal is used.
+    */
+   hsa_signal_t completion_signal;
+ } hsa_amd_barrier_value_packet_t;
+ 
+ /** @} */
+ 
  /**
   * @brief Enumeration constants added to ::hsa_status_t.
   *
*************** enum {
*** 61,66 ****
--- 170,189 ----
     * Agent executed an invalid shader instruction.
     */
    HSA_STATUS_ERROR_ILLEGAL_INSTRUCTION = 42,
+ 
+   /**
+    * Agent attempted to access an inaccessible address.
+    * See hsa_amd_register_system_event_handler and
+    * HSA_AMD_GPU_MEMORY_FAULT_EVENT for more information on illegal accesses.
+    */
+   HSA_STATUS_ERROR_MEMORY_FAULT = 43,
+ 
+   /**
+    * The CU mask was successfully set but the mask attempted to enable a CU
+    * which was disabled for the process.  CUs disabled for the process remain
+    * disabled.
+    */
+   HSA_STATUS_CU_MASK_REDUCED = 44,
  };
  
  /**
*************** hsa_status_t HSA_API hsa_amd_signal_crea
*** 480,485 ****
--- 603,639 ----
                                             hsa_signal_t* signal);
  
  /**
+  * @brief Returns a pointer to the value of a signal.
+  *
+  * Use of this API does not modify the lifetime of ::signal and any
+  * hsa_signal_value_t retrieved by this API has lifetime equal to that of
+  * ::signal.
+  *
+  * This API is intended for partial interoperability with non-HSA compatible
+  * devices and should not be used where HSA interfaces are available.
+  *
+  * Use of the signal value must comply with use restritions of ::signal.
+  * Use may result in data races if the operations performed are not platform
+  * atomic.  Use with HSA_AMD_SIGNAL_AMD_GPU_ONLY or HSA_AMD_SIGNAL_IPC
+  * attributed signals is required.
+  *
+  * @param[in] Signal handle to extract the signal value pointer from.
+  *
+  * @param[out] Location where the extracted signal value pointer will be placed.
+  *
+  * @retval ::HSA_STATUS_SUCCESS The function has been executed successfully.
+  *
+  * @retval ::HSA_STATUS_ERROR_NOT_INITIALIZED The HSA runtime has not been
+  * initialized.
+  *
+  * @retval ::HSA_STATUS_ERROR_INVALID_SIGNAL signal is not a valid hsa_signal_t
+  *
+  * @retval ::HSA_STATUS_ERROR_INVALID_ARGUMENT value_ptr is NULL.
+  */
+ hsa_status_t hsa_amd_signal_value_pointer(hsa_signal_t signal,
+                                           volatile hsa_signal_value_t** value_ptr);
+ 
+ /**
   * @brief Asyncronous signal handler function type.
   *
   * @details Type definition of callback function to be used with
*************** hsa_status_t HSA_API hsa_amd_image_get_i
*** 621,646 ****
                                                      void* value);
  
  /**
!  * @brief Set a CU affinity to specific queues within the process, this function
!  * call is "atomic".
   *
   * @param[in] queue A pointer to HSA queue.
   *
!  * @param[in] num_cu_mask_count Size of CUMask bit array passed in.
   *
   * @param[in] cu_mask Bit-vector representing the CU mask.
   *
   * @retval ::HSA_STATUS_SUCCESS The function has been executed successfully.
   *
   * @retval ::HSA_STATUS_ERROR_NOT_INITIALIZED The HSA runtime has not been
   * initialized.
   *
   * @retval ::HSA_STATUS_ERROR_INVALID_QUEUE @p queue is NULL or invalid.
   *
   * @retval ::HSA_STATUS_ERROR_INVALID_ARGUMENT @p num_cu_mask_count is not
!  * multiple of 32 or @p cu_mask is NULL.
!  *
!  * @retval ::HSA_STATUS_ERROR failed to call thunk api
   *
   */
  hsa_status_t HSA_API hsa_amd_queue_cu_set_mask(const hsa_queue_t* queue,
--- 775,810 ----
                                                      void* value);
  
  /**
!  * @brief Set a queue's CU affinity mask.
!  *
!  * @details Enables the queue to run on only selected CUs.  The given mask is
!  * combined by bitwise AND with any device wide mask in HSA_CU_MASK before
!  * being applied.
!  * If num_cu_mask_count is 0 then the request is interpreted as a request to
!  * enable all CUs and no cu_mask array need be given.
   *
   * @param[in] queue A pointer to HSA queue.
   *
!  * @param[in] num_cu_mask_count Size of CUMask bit array passed in, in bits.
   *
   * @param[in] cu_mask Bit-vector representing the CU mask.
   *
   * @retval ::HSA_STATUS_SUCCESS The function has been executed successfully.
   *
+  * @retval ::HSA_STATUS_CU_MASK_REDUCED The function was successfully executed
+  * but the given mask attempted to enable a CU which was disabled by
+  * HSA_CU_MASK.  CUs disabled by HSA_CU_MASK remain disabled.
+  *
   * @retval ::HSA_STATUS_ERROR_NOT_INITIALIZED The HSA runtime has not been
   * initialized.
   *
   * @retval ::HSA_STATUS_ERROR_INVALID_QUEUE @p queue is NULL or invalid.
   *
   * @retval ::HSA_STATUS_ERROR_INVALID_ARGUMENT @p num_cu_mask_count is not
!  * a multiple of 32 or @p num_cu_mask_count is not 0 and cu_mask is NULL.
!  * Devices with work group processors must even-index contiguous pairwise
!  * CU enable e.g. 0x33(b'110011) is valid while 0x5(0x101) and 0x6(b'0110)
!  * are invalid.
   *
   */
  hsa_status_t HSA_API hsa_amd_queue_cu_set_mask(const hsa_queue_t* queue,
*************** hsa_status_t HSA_API hsa_amd_queue_cu_se
*** 648,653 ****
--- 812,844 ----
                                                 const uint32_t* cu_mask);
  
  /**
+  * @brief Retrieve a queue's CU affinity mask.
+  *
+  * @details Returns the first num_cu_mask_count bits of a queue's CU mask.
+  * Ensure that num_cu_mask_count is at least as large as
+  * HSA_AMD_AGENT_INFO_COMPUTE_UNIT_COUNT to retrieve the entire mask.
+  *
+  * @param[in] queue A pointer to HSA queue.
+  *
+  * @param[in] num_cu_mask_count Size of CUMask bit array passed in, in bits.
+  *
+  * @param[out] cu_mask Bit-vector representing the CU mask.
+  *
+  * @retval ::HSA_STATUS_SUCCESS The function has been executed successfully.
+  *
+  * @retval ::HSA_STATUS_ERROR_NOT_INITIALIZED The HSA runtime has not been
+  * initialized.
+  *
+  * @retval ::HSA_STATUS_ERROR_INVALID_QUEUE @p queue is NULL or invalid.
+  *
+  * @retval ::HSA_STATUS_ERROR_INVALID_ARGUMENT @p num_cu_mask_count is 0, not
+  * a multiple of 32 or @p cu_mask is NULL.
+  *
+  */
+ hsa_status_t HSA_API hsa_amd_queue_cu_get_mask(const hsa_queue_t* queue, uint32_t num_cu_mask_count,
+                                                uint32_t* cu_mask);
+ 
+ /**
   * @brief Memory segments associated with a memory pool.
   */
  typedef enum {
*************** typedef enum {
*** 779,784 ****
--- 970,993 ----
  } hsa_amd_memory_pool_info_t;
  
  /**
+  * @brief Memory pool flag used to specify allocation directives
+  *
+  */
+ typedef enum hsa_amd_memory_pool_flag_s {
+   /**
+    * Allocates memory that conforms to standard HSA memory consistency model
+    */
+   HSA_AMD_MEMORY_POOL_STANDARD_FLAG = 0,
+   /**
+    * Allocates fine grain memory type where memory ordering is per point to point
+    * connection. Atomic memory operations on these memory buffers are not
+    * guaranteed to be visible at system scope.
+    */
+   HSA_AMD_MEMORY_POOL_PCIE_FLAG = 1,
+ 
+ } hsa_amd_memory_pool_flag_t;
+ 
+ /**
   * @brief Get the current value of an attribute of a memory pool.
   *
   * @param[in] memory_pool A valid memory pool.
*************** hsa_status_t HSA_API hsa_amd_agent_itera
*** 846,852 ****
   * ::HSA_AMD_MEMORY_POOL_INFO_RUNTIME_ALLOC_GRANULE in @p memory_pool.
   *
   * @param[in] flags A bit-field that is used to specify allocation
!  * directives. Reserved parameter, must be 0.
   *
   * @param[out] ptr Pointer to the location where to store the base virtual
   * address of
--- 1055,1061 ----
   * ::HSA_AMD_MEMORY_POOL_INFO_RUNTIME_ALLOC_GRANULE in @p memory_pool.
   *
   * @param[in] flags A bit-field that is used to specify allocation
!  * directives.
   *
   * @param[out] ptr Pointer to the location where to store the base virtual
   * address of
*************** hsa_status_t HSA_API hsa_amd_memory_pool
*** 903,908 ****
--- 1112,1119 ----
   *
   * @param[in] dst_agent Agent associated with the @p dst. The agent must be able to directly
   * access both the source and destination buffers in their current locations.
+  * May be zero in which case the runtime will attempt to discover the destination agent.
+  * Discovery may have variable and/or high latency.
   *
   * @param[in] src A valid pointer to the source of data to be copied. The source
   * buffer must not overlap with the destination buffer, otherwise the copy will succeed
*************** hsa_status_t HSA_API hsa_amd_memory_pool
*** 910,915 ****
--- 1121,1128 ----
   *
   * @param[in] src_agent Agent associated with the @p src. The agent must be able to directly
   * access both the source and destination buffers in their current locations.
+  * May be zero in which case the runtime will attempt to discover the destination agent.
+  * Discovery may have variable and/or high latency.
   *
   * @param[in] size Number of bytes to copy. If @p size is 0, no copy is
   * performed and the function returns success. Copying a number of bytes larger
*************** hsa_status_t HSA_API hsa_amd_memory_pool
*** 920,928 ****
   *
   * @param[in] dep_signals List of signals that must be waited on before the copy
   * operation starts. The copy will start after every signal has been observed with
!  * the value 0. The dependent signal should not include completion signal from hsa_amd_memory_async_copy
!  * operation to be issued in future as that can result in a deadlock. If @p num_dep_signals is 0, this
!  * argument is ignored.
   *
   * @param[in] completion_signal Signal used to indicate completion of the copy
   * operation. When the copy operation is finished, the value of the signal is
--- 1133,1141 ----
   *
   * @param[in] dep_signals List of signals that must be waited on before the copy
   * operation starts. The copy will start after every signal has been observed with
!  * the value 0. The dependent signal should not include completion signal from
!  * hsa_amd_memory_async_copy operation to be issued in future as that can result
!  * in a deadlock. If @p num_dep_signals is 0, this argument is ignored.
   *
   * @param[in] completion_signal Signal used to indicate completion of the copy
   * operation. When the copy operation is finished, the value of the signal is
*************** hsa_status_t HSA_API hsa_amd_memory_pool
*** 937,943 ****
   * @retval ::HSA_STATUS_ERROR_NOT_INITIALIZED The HSA runtime has not been
   * initialized.
   *
!  * @retval ::HSA_STATUS_ERROR_INVALID_AGENT The agent is invalid.
   *
   * @retval ::HSA_STATUS_ERROR_INVALID_SIGNAL @p completion_signal is invalid.
   *
--- 1150,1156 ----
   * @retval ::HSA_STATUS_ERROR_NOT_INITIALIZED The HSA runtime has not been
   * initialized.
   *
!  * @retval ::HSA_STATUS_ERROR_INVALID_AGENT An agent is invalid or no discovered agent has access.
   *
   * @retval ::HSA_STATUS_ERROR_INVALID_SIGNAL @p completion_signal is invalid.
   *
*************** typedef struct hsa_amd_pointer_info_s {
*** 1576,1581 ****
--- 1789,1800 ----
    GPU boards) any such agent may be returned.
    */
    hsa_agent_t agentOwner;
+   /*
+   Contains a bitfield of hsa_amd_memory_pool_global_flag_t values.
+   Reports the effective global flags bitmask for the allocation.  This field is not meaningful if
+   the type of the allocation is HSA_EXT_POINTER_TYPE_UNKNOWN.
+   */
+   uint32_t global_flags;
  } hsa_amd_pointer_info_t;
  
  /**
*************** typedef struct hsa_amd_pointer_info_s {
*** 1611,1617 ****
   *
   * @retval HSA_STATUS_ERROR_INVALID_ARGUMENT NULL in @p ptr or @p info.
   */
! hsa_status_t HSA_API hsa_amd_pointer_info(void* ptr,
                                            hsa_amd_pointer_info_t* info,
                                            void* (*alloc)(size_t),
                                            uint32_t* num_agents_accessible,
--- 1830,1836 ----
   *
   * @retval HSA_STATUS_ERROR_INVALID_ARGUMENT NULL in @p ptr or @p info.
   */
! hsa_status_t HSA_API hsa_amd_pointer_info(const void* ptr,
                                            hsa_amd_pointer_info_t* info,
                                            void* (*alloc)(size_t),
                                            uint32_t* num_agents_accessible,
*************** hsa_status_t HSA_API hsa_amd_pointer_inf
*** 1635,1641 ****
   *
   * @retval HSA_STATUS_ERROR_INVALID_ARGUMENT @p ptr is not known to ROCr.
   */
! hsa_status_t HSA_API hsa_amd_pointer_info_set_userdata(void* ptr,
                                                         void* userdata);
  
  /**
--- 1854,1860 ----
   *
   * @retval HSA_STATUS_ERROR_INVALID_ARGUMENT @p ptr is not known to ROCr.
   */
! hsa_status_t HSA_API hsa_amd_pointer_info_set_userdata(const void* ptr,
                                                         void* userdata);
  
  /**
*************** typedef enum {
*** 1809,1819 ****
    // GPU attempted access to a host only page.
    HSA_AMD_MEMORY_FAULT_HOST_ONLY = 1 << 3,
    // DRAM ECC failure.
!   HSA_AMD_MEMORY_FAULT_DRAM_ECC = 1 << 4,
    // Can't determine the exact fault address.
    HSA_AMD_MEMORY_FAULT_IMPRECISE = 1 << 5,
    // SRAM ECC failure (ie registers, no fault address).
!   HSA_AMD_MEMORY_FAULT_SRAM_ECC = 1 << 6,
    // GPU reset following unspecified hang.
    HSA_AMD_MEMORY_FAULT_HANG = 1 << 31
  } hsa_amd_memory_fault_reason_t;
--- 2028,2038 ----
    // GPU attempted access to a host only page.
    HSA_AMD_MEMORY_FAULT_HOST_ONLY = 1 << 3,
    // DRAM ECC failure.
!   HSA_AMD_MEMORY_FAULT_DRAMECC = 1 << 4,
    // Can't determine the exact fault address.
    HSA_AMD_MEMORY_FAULT_IMPRECISE = 1 << 5,
    // SRAM ECC failure (ie registers, no fault address).
!   HSA_AMD_MEMORY_FAULT_SRAMECC = 1 << 6,
    // GPU reset following unspecified hang.
    HSA_AMD_MEMORY_FAULT_HANG = 1 << 31
  } hsa_amd_memory_fault_reason_t;
*************** hsa_status_t HSA_API hsa_amd_register_de
*** 1970,1975 ****
--- 2189,2369 ----
  hsa_status_t HSA_API hsa_amd_deregister_deallocation_callback(void* ptr,
                                                        hsa_amd_deallocation_callback_t callback);
  
+ typedef enum hsa_amd_svm_model_s {
+   /**
+    * Updates to memory with this attribute conform to HSA memory consistency
+    * model.
+    */
+   HSA_AMD_SVM_GLOBAL_FLAG_FINE_GRAINED = 0,
+   /**
+    * Writes to memory with this attribute can be performed by a single agent
+    * at a time.
+    */
+   HSA_AMD_SVM_GLOBAL_FLAG_COARSE_GRAINED = 1,
+   /**
+    * Memory region queried contains subregions with both
+    * HSA_AMD_SVM_GLOBAL_FLAG_COARSE_GRAINED and
+    * HSA_AMD_SVM_GLOBAL_FLAG_FINE_GRAINED attributes.
+    *
+    * This attribute can not be used in hsa_amd_svm_attributes_set.  It is a
+    * possible return from hsa_amd_svm_attributes_get indicating that the query
+    * region contains both coarse and fine grained memory.
+    */
+   HSA_AMD_SVM_GLOBAL_FLAG_INDETERMINATE = 2
+ } hsa_amd_svm_model_t;
+ 
+ typedef enum hsa_amd_svm_attribute_s {
+   // Memory model attribute.
+   // Type of this attribute is hsa_amd_svm_model_t.
+   HSA_AMD_SVM_ATTRIB_GLOBAL_FLAG = 0,
+   // Marks the range read only.  This allows multiple physical copies to be
+   // placed local to each accessing device.
+   // Type of this attribute is bool.
+   HSA_AMD_SVM_ATTRIB_READ_ONLY = 1,
+   // Automatic migrations should attempt to keep the memory within the xgmi hive
+   // containing accessible agents.
+   // Type of this attribute is bool.
+   HSA_AMD_SVM_ATTRIB_HIVE_LOCAL = 2,
+   // Page granularity to migrate at once.  Page granularity is specified as
+   // log2(page_count).
+   // Type of this attribute is uint64_t.
+   HSA_AMD_SVM_ATTRIB_MIGRATION_GRANULARITY = 3,
+   // Physical location to prefer when automatic migration occurs.
+   // Set to the null agent handle (handle == 0) to indicate there
+   // is no preferred location.
+   // Type of this attribute is hsa_agent_t.
+   HSA_AMD_SVM_ATTRIB_PREFERRED_LOCATION = 4,
+   // This attribute can not be used in ::hsa_amd_svm_attributes_set (see
+   // ::hsa_amd_svm_prefetch_async).
+   // Queries the physical location of most recent prefetch command.
+   // If the prefetch location has not been set or is not uniform across the
+   // address range then returned hsa_agent_t::handle will be 0.
+   // Querying this attribute will return the destination agent of the most
+   // recent ::hsa_amd_svm_prefetch_async targeting the address range.  If
+   // multiple async prefetches have been issued targeting the region and the
+   // most recently issued prefetch has completed then the query will return
+   // the location of the most recently completed prefetch.
+   // Type of this attribute is hsa_agent_t.
+   HSA_AMD_SVM_ATTRIB_PREFETCH_LOCATION = 5,
+   // Optimizes with the anticipation that the majority of operations to the
+   // range will be read operations.
+   // Type of this attribute is bool.
+   HSA_AMD_SVM_ATTRIB_READ_MOSTLY = 6,
+   // Allows the execution on GPU.
+   // Type of this attribute is bool.
+   HSA_AMD_SVM_ATTRIB_GPU_EXEC = 7,
+   // This attribute can not be used in ::hsa_amd_svm_attributes_get.
+   // Enables an agent for access to the range.  Access may incur a page fault
+   // and associated memory migration.  Either this or
+   // HSA_AMD_SVM_ATTRIB_AGENT_ACCESSIBLE_IN_PLACE is required prior to SVM
+   // access if HSA_AMD_SYSTEM_INFO_SVM_ACCESSIBLE_BY_DEFAULT is false.
+   // Type of this attribute is hsa_agent_t.
+   HSA_AMD_SVM_ATTRIB_AGENT_ACCESSIBLE = 0x200,
+   // This attribute can not be used in ::hsa_amd_svm_attributes_get.
+   // Enables an agent for access to the range without page faults.  Access
+   // will not incur a page fault and will not cause access based migration.
+   // and associated memory migration.  Either this or
+   // HSA_AMD_SVM_ATTRIB_AGENT_ACCESSIBLE is required prior to SVM access if
+   // HSA_AMD_SYSTEM_INFO_SVM_ACCESSIBLE_BY_DEFAULT is false.
+   // Type of this attribute is hsa_agent_t.
+   HSA_AMD_SVM_ATTRIB_AGENT_ACCESSIBLE_IN_PLACE = 0x201,
+   // This attribute can not be used in ::hsa_amd_svm_attributes_get.
+   // Denies an agent access to the memory range.  Access will cause a terminal
+   // segfault.
+   // Type of this attribute is hsa_agent_t.
+   HSA_AMD_SVM_ATTRIB_AGENT_NO_ACCESS = 0x202,
+   // This attribute can not be used in ::hsa_amd_svm_attributes_set.
+   // Returns the access attribute associated with the agent.
+   // The agent to query must be set in the attribute value field.
+   // The attribute enum will be replaced with the agent's current access
+   // attribute for the address range.
+   // TODO: Clarify KFD return value for non-uniform access attribute.
+   // Type of this attribute is hsa_agent_t.
+   HSA_AMD_SVM_ATTRIB_ACCESS_QUERY = 0x203,
+ } hsa_amd_svm_attribute_t;
+ 
+ // List type for hsa_amd_svm_attributes_set/get. 
+ typedef struct hsa_amd_svm_attribute_pair_s {
+   // hsa_amd_svm_attribute_t value.
+   uint64_t attribute;
+   // Attribute value.  Bit values should be interpreted according to the type
+   // given in the associated attribute description.
+   uint64_t value;
+ } hsa_amd_svm_attribute_pair_t;
+ 
+ /**
+  * @brief Sets SVM memory attributes.
+  *
+  * If HSA_AMD_SYSTEM_INFO_SVM_ACCESSIBLE_BY_DEFAULT returns false then enabling
+  * access to an Agent via this API (setting HSA_AMD_SVM_ATTRIB_AGENT_ACCESSIBLE
+  * or HSA_AMD_SVM_ATTRIB_AGENT_ACCESSIBLE_IN_PLACE) is required prior to SVM
+  * memory access by that Agent.
+  *
+  * Attributes HSA_AMD_SVM_ATTRIB_ACCESS_QUERY and HSA_AMD_SVM_ATTRIB_PREFETCH_LOCATION
+  * may not be used with this API.
+  *
+  * @param[in] ptr Will be aligned down to nearest page boundary.
+  *
+  * @param[in] size Will be aligned up to nearest page boundary.
+  *
+  * @param[in] attribute_list List of attributes to set for the address range.
+  *
+  * @param[in] attribute_count Length of @p attribute_list.
+  */
+ hsa_status_t hsa_amd_svm_attributes_set(void* ptr, size_t size,
+                                         hsa_amd_svm_attribute_pair_t* attribute_list,
+                                         size_t attribute_count);
+ 
+ /**
+  * @brief Gets SVM memory attributes.
+  *
+  * Attributes HSA_AMD_SVM_ATTRIB_AGENT_ACCESSIBLE,
+  * HSA_AMD_SVM_ATTRIB_AGENT_ACCESSIBLE_IN_PLACE and
+  * HSA_AMD_SVM_ATTRIB_PREFETCH_LOCATION may not be used with this API.
+  *
+  * Note that attribute HSA_AMD_SVM_ATTRIB_ACCESS_QUERY takes as input an
+  * hsa_agent_t and returns the current access type through its attribute field.
+  *
+  * @param[in] ptr Will be aligned down to nearest page boundary.
+  *
+  * @param[in] size Will be aligned up to nearest page boundary.
+  *
+  * @param[in] attribute_list List of attributes to set for the address range.
+  *
+  * @param[in] attribute_count Length of @p attribute_list.
+  */
+ hsa_status_t hsa_amd_svm_attributes_get(void* ptr, size_t size,
+                                         hsa_amd_svm_attribute_pair_t* attribute_list,
+                                         size_t attribute_count);
+ 
+ /**
+  * @brief Asynchronously migrates memory to an agent.
+  *
+  * Schedules memory migration to @p agent when @p dep_signals have been observed equal to zero.
+  * @p completion_signal will decrement when the migration is complete.
+  *
+  * @param[in] ptr Will be aligned down to nearest page boundary.
+  *
+  * @param[in] size Will be aligned up to nearest page boundary.
+  *
+  * @param[in] agent Agent to migrate to.
+  *
+  * @param[in] num_dep_signals Number of dependent signals. Can be 0.
+  *
+  * @param[in] dep_signals List of signals that must be waited on before the migration
+  * operation starts. The migration will start after every signal has been observed with
+  * the value 0. If @p num_dep_signals is 0, this argument is ignored.
+  *
+  * @param[in] completion_signal Signal used to indicate completion of the migration
+  * operation. When the migration operation is finished, the value of the signal is
+  * decremented. The runtime indicates that an error has occurred during the copy
+  * operation by setting the value of the completion signal to a negative
+  * number. If no completion signal is required this handle may be null.
+  */
+ hsa_status_t hsa_amd_svm_prefetch_async(void* ptr, size_t size, hsa_agent_t agent,
+                                         uint32_t num_dep_signals, const hsa_signal_t* dep_signals,
+                                         hsa_signal_t completion_signal);
+ 
  #ifdef __cplusplus
  }  // end extern "C" block
  #endif
diff -Nrcpad gcc-16-20251130/include/hsa_ext_image.h gcc-16-20251207/include/hsa_ext_image.h
*** gcc-16-20251130/include/hsa_ext_image.h	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/include/hsa_ext_image.h	Sun Dec  7 22:32:16 2025
***************
*** 1,6 ****
  ////////////////////////////////////////////////////////////////////////////////
  //
! // Copyright (C) 2014-2020 Advanced Micro Devices Inc.  All rights reserved.
  //
  // Permission is hereby granted, free of charge, to any person or organization
  // obtaining a copy of the software and accompanying documentation covered by
--- 1,6 ----
  ////////////////////////////////////////////////////////////////////////////////
  //
! // Copyright (C) 2014-2022 Advanced Micro Devices Inc.  All rights reserved.
  //
  // Permission is hereby granted, free of charge, to any person or organization
  // obtaining a copy of the software and accompanying documentation covered by
diff -Nrcpad gcc-16-20251130/libcc1/ChangeLog gcc-16-20251207/libcc1/ChangeLog
*** gcc-16-20251130/libcc1/ChangeLog	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/libcc1/ChangeLog	Sun Dec  7 22:32:16 2025
***************
*** 1,3 ****
--- 1,12 ----
+ 2025-12-02  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* cc1plugin-config.h.in: Regenerate.
+ 
+ 2025-12-01  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* configure.ac: Check for libgen.h header.
+ 	* configure: Regenerate.
+ 
  2025-11-03  Sam James  <sam@gentoo.org>
  
  	* configure: Regenerate.
diff -Nrcpad gcc-16-20251130/libcc1/cc1plugin-config.h.in gcc-16-20251207/libcc1/cc1plugin-config.h.in
*** gcc-16-20251130/libcc1/cc1plugin-config.h.in	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/libcc1/cc1plugin-config.h.in	Sun Dec  7 22:32:16 2025
***************
*** 10,15 ****
--- 10,18 ----
  /* Define to 1 if you have the <inttypes.h> header file. */
  #undef HAVE_INTTYPES_H
  
+ /* Define to 1 if you have the <libgen.h> header file. */
+ #undef HAVE_LIBGEN_H
+ 
  /* Define to 1 if you have the <memory.h> header file. */
  #undef HAVE_MEMORY_H
  
diff -Nrcpad gcc-16-20251130/libcc1/configure gcc-16-20251207/libcc1/configure
*** gcc-16-20251130/libcc1/configure	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/libcc1/configure	Sun Dec  7 22:32:21 2025
*************** LDFLAGS="$cet_save_LDFLAGS"
*** 15298,15303 ****
--- 15298,15315 ----
  
  
  
+ for ac_header in libgen.h
+ do :
+   ac_fn_c_check_header_mongrel "$LINENO" "libgen.h" "ac_cv_header_libgen_h" "$ac_includes_default"
+ if test "x$ac_cv_header_libgen_h" = xyes; then :
+   cat >>confdefs.h <<_ACEOF
+ #define HAVE_LIBGEN_H 1
+ _ACEOF
+ 
+ fi
+ 
+ done
+ 
  ac_fn_c_check_decl "$LINENO" "basename" "ac_cv_have_decl_basename" "$ac_includes_default"
  if test "x$ac_cv_have_decl_basename" = xyes; then :
    ac_have_decl=1
diff -Nrcpad gcc-16-20251130/libcc1/configure.ac gcc-16-20251207/libcc1/configure.ac
*** gcc-16-20251130/libcc1/configure.ac	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/libcc1/configure.ac	Sun Dec  7 22:32:16 2025
*************** AC_SUBST(visibility)
*** 48,53 ****
--- 48,54 ----
  GCC_CET_HOST_FLAGS(CET_HOST_FLAGS)
  AC_SUBST(CET_HOST_FLAGS)
  
+ AC_CHECK_HEADERS(libgen.h)
  AC_CHECK_DECLS([basename])
  
  GCC_BASE_VER
diff -Nrcpad gcc-16-20251130/libcpp/files.cc gcc-16-20251207/libcpp/files.cc
*** gcc-16-20251130/libcpp/files.cc	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/libcpp/files.cc	Sun Dec  7 22:32:16 2025
*************** _cpp_get_file_name (_cpp_file *file)
*** 2335,2340 ****
--- 2335,2350 ----
    return file->name;
  }
  
+ /* Get the path associated with the _cpp_file F.  The path includes
+    the base name from the include directive and the directory it was
+    found in via the search path.  */
+ 
+ const char *
+ _cpp_get_file_path (_cpp_file *f)
+ {
+   return f->path;
+ }
+ 
  /* Inteface to file statistics record in _cpp_file structure. */
  struct stat *
  _cpp_get_file_stat (_cpp_file *file)
*************** validate_pch (cpp_reader *pfile, _cpp_fi
*** 2574,2597 ****
    return valid;
  }
  
- /* Get the path associated with the _cpp_file F.  The path includes
-    the base name from the include directive and the directory it was
-    found in via the search path.  */
- 
- const char *
- cpp_get_path (struct _cpp_file *f)
- {
-   return f->path;
- }
- 
- /* Get the directory associated with the _cpp_file F.  */
- 
- cpp_dir *
- cpp_get_dir (struct _cpp_file *f)
- {
-   return f->dir;
- }
- 
  /* Get the cpp_buffer currently associated with the cpp_reader
     PFILE.  */
  
--- 2584,2589 ----
diff -Nrcpad gcc-16-20251130/libcpp/include/cpplib.h gcc-16-20251207/libcpp/include/cpplib.h
*** gcc-16-20251130/libcpp/include/cpplib.h	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/libcpp/include/cpplib.h	Sun Dec  7 22:32:16 2025
*************** extern void cpp_make_system_header (cpp_
*** 1563,1570 ****
  extern bool cpp_push_include (cpp_reader *, const char *);
  extern bool cpp_push_default_include (cpp_reader *, const char *);
  extern void cpp_change_file (cpp_reader *, enum lc_reason, const char *);
! extern const char *cpp_get_path (struct _cpp_file *);
! extern cpp_dir *cpp_get_dir (struct _cpp_file *);
  extern cpp_buffer *cpp_get_buffer (cpp_reader *);
  extern struct _cpp_file *cpp_get_file (cpp_buffer *);
  extern cpp_buffer *cpp_get_prev (cpp_buffer *);
--- 1563,1572 ----
  extern bool cpp_push_include (cpp_reader *, const char *);
  extern bool cpp_push_default_include (cpp_reader *, const char *);
  extern void cpp_change_file (cpp_reader *, enum lc_reason, const char *);
! extern const char *_cpp_get_file_path (_cpp_file *);
! extern const char *_cpp_get_file_name (_cpp_file *);
! extern struct stat *_cpp_get_file_stat (_cpp_file *);
! extern struct cpp_dir *_cpp_get_file_dir (_cpp_file *);
  extern cpp_buffer *cpp_get_buffer (cpp_reader *);
  extern struct _cpp_file *cpp_get_file (cpp_buffer *);
  extern cpp_buffer *cpp_get_prev (cpp_buffer *);
diff -Nrcpad gcc-16-20251130/libcpp/internal.h gcc-16-20251207/libcpp/internal.h
*** gcc-16-20251130/libcpp/internal.h	Sun Nov 30 22:32:14 2025
--- gcc-16-20251207/libcpp/internal.h	Sun Dec  7 22:32:16 2025
*************** extern void _cpp_pop_file_buffer (cpp_re
*** 788,796 ****
  				  const unsigned char *);
  extern bool _cpp_save_file_entries (cpp_reader *pfile, FILE *f);
  extern bool _cpp_read_file_entries (cpp_reader *, FILE *);
- extern const char *_cpp_get_file_name (_cpp_file *);
- extern struct stat *_cpp_get_file_stat (_cpp_file *);
- extern struct cpp_dir *_cpp_get_file_dir (_cpp_file *);
  extern bool _cpp_has_header (cpp_reader *, const char *, int,
  			     enum include_type);
  
--- 788,793 ----
diff -Nrcpad gcc-16-20251130/libga68/ChangeLog gcc-16-20251207/libga68/ChangeLog
*** gcc-16-20251130/libga68/ChangeLog	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libga68/ChangeLog	Sun Dec  7 22:32:16 2025
***************
*** 0 ****
--- 1,29 ----
+ 2025-11-30  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* Makefile.am: New file.
+ 	* configure.ac: Likewise.
+ 	* Makefile.in: Generate.
+ 	* aclocal.m4: Likewise.
+ 	* config.h.in: Regenerate.
+ 	* configure: Likewise.
+ 	* Makefile.in: Likewise.
+ 	* aclocal.m4: Likewise.
+ 
+ 2025-11-30  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* README: New file.
+ 	* ga68-alloc.c: Likewise.
+ 	* ga68-error.c: Likewise.
+ 	* ga68-posix.c: Likewise.
+ 	* ga68-standenv.c: Likewise.
+ 	* ga68-unistr.c: Likewise.
+ 	* ga68.h: Likewise.
+ 	* libga68.c: Likewise.
+ 	* libga68.spec.in: Likewise.
+ 
+ 
+ Copyright (C) 2025 Free Software Foundation, Inc.
+ 
+ Copying and distribution of this file, with or without modification,
+ are permitted in any medium without royalty provided the copyright
+ notice and this notice are preserved.
diff -Nrcpad gcc-16-20251130/libgomp/ChangeLog gcc-16-20251207/libgomp/ChangeLog
*** gcc-16-20251130/libgomp/ChangeLog	Sun Nov 30 22:32:15 2025
--- gcc-16-20251207/libgomp/ChangeLog	Sun Dec  7 22:32:17 2025
***************
*** 1,3 ****
--- 1,82 ----
+ 2025-12-04  Andrew Stubbs  <ams@baylibre.com>
+ 
+ 	* plugin/plugin-gcn.c (generic_isa_code): New function.
+ 	(isa_matches_agent): Use generic ISA details to help select an error
+ 	message on ISA mismatch.
+ 	* testsuite/lib/libgomp.exp
+ 	(check_effective_target_offload_target_amdgcn_with_xnack): Use a
+ 	runtime check.
+ 
+ 2025-12-04  Andrew Stubbs  <ams@baylibre.com>
+ 
+ 	* testsuite/libgomp.c-c++-common/requires-4.c: Change dg-excess-errors
+ 	to dg-xfail-if.
+ 	* testsuite/libgomp.c-c++-common/requires-4a.c: Likewise.
+ 	* testsuite/libgomp.c-c++-common/requires-5.c: Likewise.
+ 
+ 2025-12-03  Andrew Stubbs  <ams@baylibre.com>
+ 
+ 	* testsuite/lib/libgomp.exp (libgomp_target_compile): Don't use
+ 	additional sources if there are no primary sources.
+ 
+ 2025-12-01  Andrew Stubbs  <ams@baylibre.com>
+ 
+ 	* libgomp.texi (AMD GCN): Mention HSA_XNACK is set automatically.
+ 
+ 2025-12-01  Andrew Stubbs  <ams@baylibre.com>
+ 
+ 	* Makefile.in: Regenerate.
+ 	* libgomp-plugin.h (gomp_simple_alloc_init_context): New prototype.
+ 	(gomp_simple_alloc_register_memory): New prototype.
+ 	(gomp_simple_alloc): New prototype.
+ 	(gomp_simple_free): New prototype.
+ 	(gomp_simple_realloc): New prototype.
+ 	* libgomp.h (gomp_simple_alloc_init_context): Move to libgomp-plugin.h.
+ 	(gomp_simple_alloc_register_memory): Likewise.
+ 	(gomp_simple_alloc): Likewise.
+ 	(gomp_simple_free): Likewise.
+ 	(gomp_simple_realloc): Likewise.
+ 	* libgomp.texi: Update AMD managed memory description.
+ 	* plugin/Makefrag.am (libgomp_plugin_gcn_la_SOURCES): Add
+ 	simple-allocator.c and plugin/mutex.c.
+ 	* plugin/plugin-gcn.c: Include sys/mman.h and unistd.h.
+ 	(struct hsa_runtime_fn_info): Add hsa_amd_svm_attributes_set_fn.
+ 	(dump_hsa_system_info): Add HSA_AMD_SYSTEM_INFO_SVM_SUPPORTED and
+ 	HSA_AMD_SYSTEM_INFO_SVM_ACCESSIBLE_BY_DEFAULT to the GCN_DEBUG output.
+ 	(init_hsa_runtime_functions): Add hsa_amd_svm_attributes_set.
+ 	(isa_matches_agent): Add a new error message for the case where the
+ 	ISA doesn't match but the name does.
+ 	(managed_ctx): New variable.
+ 	(managed_heap_create): New function.
+ 	(GOMP_OFFLOAD_managed_alloc): Likewise.
+ 	(GOMP_OFFLOAD_managed_free): Likewise.
+ 	* simple-allocator.c (gomp_fatal): New macro.
+ 	* testsuite/lib/libgomp.exp (check_effective_target_omp_managedmem):
+ 	Add amdgcn support checker.
+ 	(check_effective_target_offload_target_amdgcn_with_xnack): New.
+ 	* testsuite/libgomp.c-c++-common/requires-4.c: Ignore xnack warning.
+ 	* testsuite/libgomp.c-c++-common/requires-4a.c: Ignore xnack warning.
+ 	* testsuite/libgomp.c-c++-common/requires-5.c: Ignore xnack warning.
+ 	* testsuite/libgomp.c++/alloc-managed-1.C: Add -mxnack=on, if needed.
+ 	* testsuite/libgomp.c/alloc-managed-1.c: Likewise.
+ 	* testsuite/libgomp.c/alloc-managed-2.c: Likewise.
+ 	* testsuite/libgomp.c/alloc-managed-3.c: Likewise.
+ 	* testsuite/libgomp.c/alloc-managed-4.c: Likewise.
+ 	* testsuite/libgomp.fortran/alloc-managed-1.f90: Likewise.
+ 	* plugin/mutex.c: New file.
+ 
+ 2025-12-01  Paul-Antoine Arras  <parras@baylibre.com>
+ 
+ 	PR fortran/120505
+ 	* target.c (gomp_map_vars_internal): Allow struct mapping from different
+ 	containing array elements as long as adresses are in increasing order.
+ 	* testsuite/libgomp.c-c++-common/map-arrayofstruct-2.c: Adjust
+ 	dg-output.
+ 	* testsuite/libgomp.c-c++-common/map-arrayofstruct-3.c: Likewise.
+ 	* testsuite/libgomp.fortran/map-subarray-5.f90: Likewise.
+ 	* testsuite/libgomp.fortran/map-subarray-10.f90: New test.
+ 	* testsuite/libgomp.fortran/map-subarray-9.f90: New test.
+ 
  2025-11-26  Jakub Jelinek  <jakub@redhat.com>
  
  	* testsuite/libgomp.c++/atomic-12.C (main): Add ()s around array
diff -Nrcpad gcc-16-20251130/libgomp/Makefile.in gcc-16-20251207/libgomp/Makefile.in
*** gcc-16-20251130/libgomp/Makefile.in	Sun Nov 30 22:32:19 2025
--- gcc-16-20251207/libgomp/Makefile.in	Sun Dec  7 22:32:20 2025
*************** am__DEPENDENCIES_1 =
*** 187,193 ****
  @PLUGIN_GCN_TRUE@libgomp_plugin_gcn_la_DEPENDENCIES = libgomp.la \
  @PLUGIN_GCN_TRUE@	$(am__DEPENDENCIES_1)
  @PLUGIN_GCN_TRUE@am_libgomp_plugin_gcn_la_OBJECTS =  \
! @PLUGIN_GCN_TRUE@	libgomp_plugin_gcn_la-plugin-gcn.lo
  libgomp_plugin_gcn_la_OBJECTS = $(am_libgomp_plugin_gcn_la_OBJECTS)
  AM_V_lt = $(am__v_lt_@AM_V@)
  am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
--- 187,195 ----
  @PLUGIN_GCN_TRUE@libgomp_plugin_gcn_la_DEPENDENCIES = libgomp.la \
  @PLUGIN_GCN_TRUE@	$(am__DEPENDENCIES_1)
  @PLUGIN_GCN_TRUE@am_libgomp_plugin_gcn_la_OBJECTS =  \
! @PLUGIN_GCN_TRUE@	libgomp_plugin_gcn_la-plugin-gcn.lo \
! @PLUGIN_GCN_TRUE@	libgomp_plugin_gcn_la-simple-allocator.lo \
! @PLUGIN_GCN_TRUE@	libgomp_plugin_gcn_la-mutex.lo
  libgomp_plugin_gcn_la_OBJECTS = $(am_libgomp_plugin_gcn_la_OBJECTS)
  AM_V_lt = $(am__v_lt_@AM_V@)
  am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
*************** libgomp_la_SOURCES = alloc.c atomic.c ba
*** 584,590 ****
  
  # AMD GCN plugin
  @PLUGIN_GCN_TRUE@libgomp_plugin_gcn_version_info = -version-info $(libtool_VERSION)
! @PLUGIN_GCN_TRUE@libgomp_plugin_gcn_la_SOURCES = plugin/plugin-gcn.c
  @PLUGIN_GCN_TRUE@libgomp_plugin_gcn_la_CPPFLAGS = $(AM_CPPFLAGS) \
  @PLUGIN_GCN_TRUE@	-D_GNU_SOURCE
  
--- 586,594 ----
  
  # AMD GCN plugin
  @PLUGIN_GCN_TRUE@libgomp_plugin_gcn_version_info = -version-info $(libtool_VERSION)
! @PLUGIN_GCN_TRUE@libgomp_plugin_gcn_la_SOURCES = plugin/plugin-gcn.c simple-allocator.c \
! @PLUGIN_GCN_TRUE@				plugin/mutex.c
! 
  @PLUGIN_GCN_TRUE@libgomp_plugin_gcn_la_CPPFLAGS = $(AM_CPPFLAGS) \
  @PLUGIN_GCN_TRUE@	-D_GNU_SOURCE
  
*************** distclean-compile:
*** 760,766 ****
--- 764,772 ----
  @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iter.Plo@am__quote@
  @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iter_ull.Plo@am__quote@
  @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgomp-plugin.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgomp_plugin_gcn_la-mutex.Plo@am__quote@
  @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgomp_plugin_gcn_la-plugin-gcn.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgomp_plugin_gcn_la-simple-allocator.Plo@am__quote@
  @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgomp_plugin_nvptx_la-plugin-nvptx.Plo@am__quote@
  @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lock.Plo@am__quote@
  @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/loop.Plo@am__quote@
*************** libgomp_plugin_gcn_la-plugin-gcn.lo: plu
*** 823,828 ****
--- 829,848 ----
  @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
  @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgomp_plugin_gcn_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgomp_plugin_gcn_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgomp_plugin_gcn_la-plugin-gcn.lo `test -f 'plugin/plugin-gcn.c' || echo '$(srcdir)/'`plugin/plugin-gcn.c
  
+ libgomp_plugin_gcn_la-simple-allocator.lo: simple-allocator.c
+ @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgomp_plugin_gcn_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgomp_plugin_gcn_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgomp_plugin_gcn_la-simple-allocator.lo -MD -MP -MF $(DEPDIR)/libgomp_plugin_gcn_la-simple-allocator.Tpo -c -o libgomp_plugin_gcn_la-simple-allocator.lo `test -f 'simple-allocator.c' || echo '$(srcdir)/'`simple-allocator.c
+ @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgomp_plugin_gcn_la-simple-allocator.Tpo $(DEPDIR)/libgomp_plugin_gcn_la-simple-allocator.Plo
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='simple-allocator.c' object='libgomp_plugin_gcn_la-simple-allocator.lo' libtool=yes @AMDEPBACKSLASH@
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgomp_plugin_gcn_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgomp_plugin_gcn_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgomp_plugin_gcn_la-simple-allocator.lo `test -f 'simple-allocator.c' || echo '$(srcdir)/'`simple-allocator.c
+ 
+ libgomp_plugin_gcn_la-mutex.lo: plugin/mutex.c
+ @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgomp_plugin_gcn_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgomp_plugin_gcn_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgomp_plugin_gcn_la-mutex.lo -MD -MP -MF $(DEPDIR)/libgomp_plugin_gcn_la-mutex.Tpo -c -o libgomp_plugin_gcn_la-mutex.lo `test -f 'plugin/mutex.c' || echo '$(srcdir)/'`plugin/mutex.c
+ @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgomp_plugin_gcn_la-mutex.Tpo $(DEPDIR)/libgomp_plugin_gcn_la-mutex.Plo
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='plugin/mutex.c' object='libgomp_plugin_gcn_la-mutex.lo' libtool=yes @AMDEPBACKSLASH@
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgomp_plugin_gcn_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgomp_plugin_gcn_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgomp_plugin_gcn_la-mutex.lo `test -f 'plugin/mutex.c' || echo '$(srcdir)/'`plugin/mutex.c
+ 
  libgomp_plugin_nvptx_la-plugin-nvptx.lo: plugin/plugin-nvptx.c
  @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgomp_plugin_nvptx_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgomp_plugin_nvptx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgomp_plugin_nvptx_la-plugin-nvptx.lo -MD -MP -MF $(DEPDIR)/libgomp_plugin_nvptx_la-plugin-nvptx.Tpo -c -o libgomp_plugin_nvptx_la-plugin-nvptx.lo `test -f 'plugin/plugin-nvptx.c' || echo '$(srcdir)/'`plugin/plugin-nvptx.c
  @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgomp_plugin_nvptx_la-plugin-nvptx.Tpo $(DEPDIR)/libgomp_plugin_nvptx_la-plugin-nvptx.Plo
diff -Nrcpad gcc-16-20251130/libgomp/libgomp-plugin.h gcc-16-20251207/libgomp/libgomp-plugin.h
*** gcc-16-20251130/libgomp/libgomp-plugin.h	Sun Nov 30 22:32:15 2025
--- gcc-16-20251207/libgomp/libgomp-plugin.h	Sun Dec  7 22:32:17 2025
*************** extern const char *GOMP_OFFLOAD_get_inte
*** 236,241 ****
--- 236,253 ----
  						       omp_interop_property_t);
  #endif
  
+ /* simple-allocator.c  */
+ 
+ typedef struct gomp_simple_alloc_context *gomp_simple_alloc_ctx_p;
+ 
+ gomp_simple_alloc_ctx_p gomp_simple_alloc_init_context ();
+ void gomp_simple_alloc_register_memory (gomp_simple_alloc_ctx_p ctx,
+ 				        char *base, size_t size);
+ void *gomp_simple_alloc (gomp_simple_alloc_ctx_p ctx, size_t size);
+ void gomp_simple_free (gomp_simple_alloc_ctx_p ctx, void *addr);
+ void *gomp_simple_realloc (gomp_simple_alloc_ctx_p ctx, void *addr,
+ 			   size_t newsize);
+ 
  #ifdef __cplusplus
  }
  #endif
diff -Nrcpad gcc-16-20251130/libgomp/libgomp.h gcc-16-20251207/libgomp/libgomp.h
*** gcc-16-20251130/libgomp/libgomp.h	Sun Nov 30 22:32:15 2025
--- gcc-16-20251207/libgomp/libgomp.h	Sun Dec  7 22:32:17 2025
*************** gomp_thread_to_pthread_t (struct gomp_th
*** 1676,1691 ****
  }
  #endif
  
! /* simple-allocator.c  */
! 
! typedef struct gomp_simple_alloc_context *gomp_simple_alloc_ctx_p;
! 
! gomp_simple_alloc_ctx_p gomp_simple_alloc_init_context ();
! void gomp_simple_alloc_register_memory (gomp_simple_alloc_ctx_p ctx,
! 				        char *base, size_t size);
! void *gomp_simple_alloc (gomp_simple_alloc_ctx_p ctx, size_t size);
! void gomp_simple_free (gomp_simple_alloc_ctx_p ctx, void *addr);
! void *gomp_simple_realloc (gomp_simple_alloc_ctx_p ctx, void *addr,
! 			   size_t newsize);
  
  #endif /* LIBGOMP_H */
--- 1676,1682 ----
  }
  #endif
  
! /* simple-allocator.c has its prototypes in libgomp-plugin.h so it's
!    accessible from both.  */
  
  #endif /* LIBGOMP_H */
diff -Nrcpad gcc-16-20251130/libgomp/libgomp.texi gcc-16-20251207/libgomp/libgomp.texi
*** gcc-16-20251130/libgomp/libgomp.texi	Sun Nov 30 22:32:15 2025
--- gcc-16-20251207/libgomp/libgomp.texi	Sun Dec  7 22:32:17 2025
*************** The implementation remark:
*** 7157,7169 ****
        such that the next reverse offload region is only executed after the previous
        one returned.
  @item OpenMP code that has a @code{requires} directive with @code{self_maps} or
!       @code{unified_shared_memory} is only supported if all AMD GPUs have the
!       @code{HSA_AMD_SYSTEM_INFO_SVM_ACCESSIBLE_BY_DEFAULT} property; for
!       discrete GPUs, this may require setting the @code{HSA_XNACK} environment
!       variable to @samp{1}; for systems with both an APU and a discrete GPU that
!       does not support XNACK, consider using @code{ROCR_VISIBLE_DEVICES} to
!       enable only the APU.  If not supported, all AMD GPU devices are removed
!       from the list of available devices (``host fallback'').
  @item The available stack size can be changed using the @code{GCN_STACK_SIZE}
        environment variable; the default is 32 kiB per thread.
  @item Low-latency memory (@code{omp_low_lat_mem_space}) is supported when the
--- 7157,7170 ----
        such that the next reverse offload region is only executed after the previous
        one returned.
  @item OpenMP code that has a @code{requires} directive with @code{self_maps} or
!       @code{unified_shared_memory} is only supported if @emph{all} the AMD GPUs
!       present have the @code{HSA_AMD_SYSTEM_INFO_SVM_ACCESSIBLE_BY_DEFAULT}
!       property; some systems require the "xnack" feature enabled for this to be
!       true, in which case the runtime will attempt to set the @code{HSA_XNACK}
!       environment variable to @samp{1} automatically (user-set values are not
!       overridden, and the setting only affects the executable itself and any
!       child processes).  If any AMD GPU device is not supported, all AMD GPUs
!       are removed from the list of available devices (``host fallback'').
  @item The available stack size can be changed using the @code{GCN_STACK_SIZE}
        environment variable; the default is 32 kiB per thread.
  @item Low-latency memory (@code{omp_low_lat_mem_space}) is supported when the
*************** The implementation remark:
*** 7185,7195 ****
        a performance boost for NVPTX offload code and also allows unlimited use
        of pinned memory regardless of the OS @code{ulimit}/@code{rlimit}
        settings.
! @item Managed memory allocated with the OpenMP
        @code{ompx_gnu_managed_mem_alloc} allocator or in the
!       @code{ompx_gnu_managed_mem_space} is not currently supported for AMD GPU
!       devices; attempting to use it in an allocator will trigger the fall-back
!       trait.
  @item The OpenMP routines @code{omp_target_memcpy_rect} and
        @code{omp_target_memcpy_rect_async} and the @code{target update}
        directive for non-contiguous list items use the 3D memory-copy function
--- 7186,7211 ----
        a performance boost for NVPTX offload code and also allows unlimited use
        of pinned memory regardless of the OS @code{ulimit}/@code{rlimit}
        settings.
! @item Managed memory allocated on the host with the
        @code{ompx_gnu_managed_mem_alloc} allocator or in the
!       @code{ompx_gnu_managed_mem_space} (both GNU extensions) allocate memory
!       equivalent to HIP Managed Memory, although @emph{not} actually allocated
!       using @code{hipMallocManaged}.  This memory is accessible by both the
!       host and the device at the same address, so it need not be mapped with
!       @code{map} clauses.  Instead, use the @code{is_device_ptr} clause or
!       @code{has_device_addr} clause to indicate that the pointer is already
!       accessible on the device.  The ROCm runtime will automatically handle
!       data migration between host and device as needed.  Not all AMD GPU
!       devices support this feature, and many that do require that
!       @code{-mxnack=on} is configured at compile time.  If managed memory is
!       not supported by the default device, as configured at the moment the
!       allocator is called, then the allocator will use the fall-back setting.
!       If the default device is configured differently when the memory is freed,
!       via @code{omp_free} or @code{omp_realloc}, the result may be undefined.
!       If the current device does not support Unified Shared Memory (or it is
!       not enabled with @code{HSA_XNACK=1}) then Managed Memory might still
!       work, but allocations may only be visible to a single device (whichever
!       was the default device when the @emph{first} allocation was made).
  @item The OpenMP routines @code{omp_target_memcpy_rect} and
        @code{omp_target_memcpy_rect_async} and the @code{target update}
        directive for non-contiguous list items use the 3D memory-copy function
diff -Nrcpad gcc-16-20251130/libgomp/plugin/Makefrag.am gcc-16-20251207/libgomp/plugin/Makefrag.am
*** gcc-16-20251130/libgomp/plugin/Makefrag.am	Sun Nov 30 22:32:15 2025
--- gcc-16-20251207/libgomp/plugin/Makefrag.am	Sun Dec  7 22:32:17 2025
*************** if PLUGIN_GCN
*** 57,63 ****
  # AMD GCN plugin
  libgomp_plugin_gcn_version_info = -version-info $(libtool_VERSION)
  toolexeclib_LTLIBRARIES += libgomp-plugin-gcn.la
! libgomp_plugin_gcn_la_SOURCES = plugin/plugin-gcn.c
  libgomp_plugin_gcn_la_CPPFLAGS = $(AM_CPPFLAGS) \
  	-D_GNU_SOURCE
  libgomp_plugin_gcn_la_LDFLAGS = $(libgomp_plugin_gcn_version_info) \
--- 57,64 ----
  # AMD GCN plugin
  libgomp_plugin_gcn_version_info = -version-info $(libtool_VERSION)
  toolexeclib_LTLIBRARIES += libgomp-plugin-gcn.la
! libgomp_plugin_gcn_la_SOURCES = plugin/plugin-gcn.c simple-allocator.c \
! 				plugin/mutex.c
  libgomp_plugin_gcn_la_CPPFLAGS = $(AM_CPPFLAGS) \
  	-D_GNU_SOURCE
  libgomp_plugin_gcn_la_LDFLAGS = $(libgomp_plugin_gcn_version_info) \
diff -Nrcpad gcc-16-20251130/libgomp/plugin/mutex.c gcc-16-20251207/libgomp/plugin/mutex.c
*** gcc-16-20251130/libgomp/plugin/mutex.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libgomp/plugin/mutex.c	Sun Dec  7 22:32:17 2025
***************
*** 0 ****
--- 1,58 ----
+ /* Mutex implementation for libgomp plugins.
+ 
+    Copyright (C) 2025 Free Software Foundation, Inc.
+ 
+    Contributed by BayLibre
+ 
+    This file is part of the GNU Offloading and Multi Processing Library
+    (libgomp).
+ 
+    Libgomp 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.
+ 
+    Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
+    WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+    FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+    more details.
+ 
+    Under Section 7 of GPL version 3, you are granted additional
+    permissions described in the GCC Runtime Library Exception, version
+    3.1, as published by the Free Software Foundation.
+ 
+    You should have received a copy of the GNU General Public License and
+    a copy of the GCC Runtime Library Exception along with this program;
+    see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+ /* This is a minimal implementation of the gomp_mutex_t spinlocks, but
+    without all the dependencies used by the config/linux/mutex implementation.
+ 
+    At the time of writing, this is only used by simple_alloc which has
+    short-lived locks and should be fine with these.  The actual locks are in
+    a header file, so only the fallback "slow" functions are needed here.  */
+ 
+ #include "config.h"
+ #include <unistd.h>
+ #include "libgomp.h"
+ 
+ #ifndef HAVE_SYNC_BUILTINS
+ #error "HAVE_SYNC_BUILTINS is required to build this"
+ #endif
+ 
+ void
+ gomp_mutex_lock_slow (gomp_mutex_t *mutex, int oldval)
+ {
+   while (oldval == 1)
+     {
+       usleep (1);
+       oldval = __atomic_exchange_n (mutex, 1, __ATOMIC_ACQUIRE);
+     }
+ }
+ 
+ void
+ gomp_mutex_unlock_slow (gomp_mutex_t *mutex)
+ {
+   GOMP_PLUGIN_fatal ("gomp_mutex_unlock_slow should be unreachable");
+ }
diff -Nrcpad gcc-16-20251130/libgomp/plugin/plugin-gcn.c gcc-16-20251207/libgomp/plugin/plugin-gcn.c
*** gcc-16-20251130/libgomp/plugin/plugin-gcn.c	Sun Nov 30 22:32:15 2025
--- gcc-16-20251207/libgomp/plugin/plugin-gcn.c	Sun Dec  7 22:32:17 2025
***************
*** 50,55 ****
--- 50,57 ----
  #include "oacc-plugin.h"
  #include "oacc-int.h"
  #include <assert.h>
+ #include <sys/mman.h>
+ #include <unistd.h>
  
  /* Create hash-table for declare target's indirect clause on the host;
     see build-target-indirect-htab.h for details.  */
*************** struct hsa_runtime_fn_info
*** 228,233 ****
--- 230,238 ----
       const hsa_dim3_t *range, hsa_agent_t copy_agent,
       hsa_amd_copy_direction_t dir, uint32_t num_dep_signals,
       const hsa_signal_t *dep_signals, hsa_signal_t completion_signal);
+   hsa_status_t (*hsa_amd_svm_attributes_set_fn)
+     (void* ptr, size_t size, hsa_amd_svm_attribute_pair_t* attribute_list,
+      size_t attribute_count);
  };
  
  /* As an HIP runtime is dlopened, following structure defines function
*************** dump_hsa_system_info (void)
*** 746,751 ****
--- 751,774 ----
      }
    else
      GCN_WARNING ("HSA_SYSTEM_INFO_EXTENSIONS: FAILED\n");
+ 
+   bool svm_supported;
+   status = hsa_fns.hsa_system_get_info_fn
+     (HSA_AMD_SYSTEM_INFO_SVM_SUPPORTED, &svm_supported);
+   if (status == HSA_STATUS_SUCCESS)
+     GCN_DEBUG ("HSA_AMD_SYSTEM_INFO_SVM_SUPPORTED: %s\n",
+ 	       (svm_supported ? "TRUE" : "FALSE"));
+   else
+     GCN_WARNING ("HSA_AMD_SYSTEM_INFO_SVM_SUPPORTED: FAILED\n");
+ 
+   bool svm_accessible;
+   status = hsa_fns.hsa_system_get_info_fn
+     (HSA_AMD_SYSTEM_INFO_SVM_ACCESSIBLE_BY_DEFAULT, &svm_accessible);
+   if (status == HSA_STATUS_SUCCESS)
+     GCN_DEBUG ("HSA_AMD_SYSTEM_INFO_SVM_ACCESSIBLE_BY_DEFAULT: %s\n",
+ 	       (svm_accessible ? "TRUE" : "FALSE"));
+   else
+     GCN_WARNING ("HSA_AMD_SYSTEM_INFO_SVM_ACCESSIBLE_BY_DEFAULT: FAILED\n");
  }
  
  /* Dump information about the available hardware.  */
*************** init_hsa_runtime_functions (void)
*** 1470,1475 ****
--- 1493,1499 ----
    DLSYM_OPT_FN (hsa_amd_memory_lock)
    DLSYM_OPT_FN (hsa_amd_memory_unlock)
    DLSYM_OPT_FN (hsa_amd_memory_async_copy_rect)
+   DLSYM_OPT_FN (hsa_amd_svm_attributes_set)
    return true;
  #undef DLSYM_OPT_FN
  #undef DLSYM_FN
*************** isa_code(const char *isa) {
*** 1752,1757 ****
--- 1776,1797 ----
    return EF_AMDGPU_MACH_UNSUPPORTED;
  }
  
+ /* Returns the code which is used in the GCN object code to identify the
+    generic ISA that corresponds to a specific ISA.  */
+ 
+ static gcn_isa
+ generic_isa_code (int isa) {
+   switch(isa)
+     {
+ #define EF_AMDGPU_MACH_AMDGCN_NONE 0
+ #define GCN_DEVICE(name, NAME, ELF, GCCISA, XNACK, SRAM, WAVE64, CUMODE, \
+ 		   VGPRS, CO, ARCH, GENERIC_ISA, ...) \
+     case ELF: return EF_AMDGPU_MACH_AMDGCN_ ## GENERIC_ISA;
+ #include "../../gcc/config/gcn/gcn-devices.def"
+     }
+   return 0;
+ }
+ 
  /* CDNA2 devices have twice as many VGPRs compared to older devices.  */
  
  static int
*************** isa_matches_agent (struct agent_info *ag
*** 2527,2532 ****
--- 2567,2581 ----
  	      "Consider using ROCR_VISIBLE_DEVICES to disable incompatible "
  	      "devices or run with LOADER_ENABLE_LOGGING=1 for more details.",
  	      device_isa_s, agent_isa_s, agent->device_id);
+   else if (strcmp (device_isa_s, agent_isa_s) == 0
+ 	   || (elf_gcn_isa_is_generic (image)
+ 	       && generic_isa_code (agent->device_isa) == isa_field))
+     snprintf (msg, sizeof msg,
+ 	      "GCN code object features do not match for an unknown reason "
+ 	      "(device %d).\n"
+ 	      "Try to adjust the HSA_XNACK setting (perhaps?), or use\n"
+ 	      "ROCR_VISIBLE_DEVICES to disable incompatible devices.\n",
+ 	      agent->device_id);
    else
      snprintf (msg, sizeof msg,
  	      "GCN code object ISA '%s' is incompatible with GPU ISA '%s' "
*************** wait_queue (struct goacc_asyncqueue *aq)
*** 3188,3193 ****
--- 3237,3361 ----
  }
  
  /* }}}  */
+ /* {{{ Managed Memory
+ 
+    This implements an allocator equivalent to CUDA "Managed" memory, in which
+    the pages automatically migrate between host and device memory, as needed.
+    These allocations are visible from both the host and devices without the
+    need for explicit mappings.  However, OpenMP does need "is_device_ptr" or
+    "has_device_addr" to function properly.
+ 
+    There isn't a high-level HSA/ROCr API to allocate managed memory, so we
+    use regular memory and register it with the driver by setting it to
+    "coarse-grained" mode, and setting the "accessible by default" attribute
+    on devices where HSA_AMD_SYSTEM_INFO_SVM_ACCESSIBLE_BY_DEFAULT isn't set
+    as standard (as it isn't on systems that don't support USM, or when
+    HSA_XNACK != 1).
+ 
+    This is in contrast to GOMP_OFFLOAD_alloc which allocates coarse-grained
+    *GPU memory*, which is not visible on the host.
+ 
+    It would be possible to register memory returned by malloc, but
+    experimentation shows that doing so causes memory faults within the HSA
+    runtime code.  Therefore, the Managed memory space is allocated as a
+    largish block and then subdivided via a custom allocator.  The "simple"
+    allocator is designed specifically to store its free-chain outside of
+    the registered pages so that allocation does not inadvertently cause
+    pages to migrate.
+ 
+    Note: if the user has multiple mismatched devices, and one or more do
+    not support USM (or XNACK is off), then each page of the Managed heap
+    could end up associated with a different device (by calling omp_alloc
+    before and after omp_set_default_device).  This issue remains
+    an *unhandled* edge-case, at present.  */
+ 
+ gomp_simple_alloc_ctx_p managed_ctx = NULL;
+ 
+ /* Initialize or extend the Managed memory space.  This is called whenever
+    allocation fails.  SIZE is the minimum size required for the failed
+    allocation to succeed; the function may choose a larger size.
+    Note that Linux lazy allocation means that the memory returned isn't
+    guaranteed to actually exist.  */
+ 
+ static bool
+ managed_heap_create (struct agent_info *agent, size_t size)
+ {
+   static int lock = 0;
+   while (__atomic_exchange_n (&lock, 1, __ATOMIC_ACQUIRE) != 0)
+     ;
+ 
+   size_t default_size = 1L * 1024 * 1024 * 1024; /* 1GB */
+   if (size < default_size)
+     size = default_size;
+ 
+   /* Round up to a whole page.  */
+   int pagesize = getpagesize ();
+   int misalignment = size % pagesize;
+   if (misalignment > 0)
+     size += pagesize - misalignment;
+ 
+   /* Try to get contiguous memory, but it might not be possible.
+      The most recent previous allocation is at the head of the list.  */
+   static void *addrhint = NULL;
+   void *new_pages = mmap (addrhint, size, PROT_READ | PROT_WRITE,
+ 			  MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+   if (!new_pages)
+     {
+       GCN_DEBUG ("Could not allocate Managed Memory heap.");
+       __atomic_store_n (&lock, 0, __ATOMIC_RELEASE);
+       return false;
+     }
+ 
+   /* Register the heap allocation as coarse grained, "Managed" memory.  */
+   struct hsa_amd_svm_attribute_pair_s attr = {
+     HSA_AMD_SVM_ATTRIB_GLOBAL_FLAG,
+     HSA_AMD_SVM_GLOBAL_FLAG_COARSE_GRAINED
+   };
+   hsa_status_t status = hsa_fns.hsa_amd_svm_attributes_set_fn (new_pages, size,
+ 							       &attr, 1);
+   if (status != HSA_STATUS_SUCCESS)
+     GOMP_PLUGIN_fatal ("Failed to allocate Unified Shared Memory;"
+ 		       " please update your drivers and/or kernel");
+ 
+   /* The HSA_AMD_SVM_ATTRIB_AGENT_ACCESSIBLE setting is required on devices
+      without default SVM.  */
+   static int svm_accessible = 0xff; /* Use 0xff as "undefined".  */
+   if (svm_accessible == 0xff)
+     {
+       status = hsa_fns.hsa_system_get_info_fn
+ 	(HSA_AMD_SYSTEM_INFO_SVM_ACCESSIBLE_BY_DEFAULT, &svm_accessible);
+       if (status != HSA_STATUS_SUCCESS)
+ 	{
+ 	  GCN_DEBUG ("warning: failed to query "
+ 		     " HSA_AMD_SYSTEM_INFO_SVM_ACCESSIBLE_BY_DEFAULT\n");
+ 	  svm_accessible = false;
+ 	}
+     }
+   if (svm_accessible == false)
+     {
+       struct hsa_amd_svm_attribute_pair_s attr2;
+       attr2.attribute = HSA_AMD_SVM_ATTRIB_AGENT_ACCESSIBLE;
+       attr2.value = agent->id.handle;
+       status = hsa_fns.hsa_amd_svm_attributes_set_fn (new_pages, size, &attr2,
+ 						      1);
+       if (status != HSA_STATUS_SUCCESS)
+ 	GOMP_PLUGIN_fatal ("Failed to allocate Unified Shared Memory;"
+ 			   " please update your drivers and/or kernel");
+     }
+ 
+   addrhint = new_pages + size;
+ 
+   /* Initialize a new Managed memory heap, or add the new memory into an
+      existing Managed memory heap.  */
+   if (!managed_ctx)
+     managed_ctx = gomp_simple_alloc_init_context ();
+   gomp_simple_alloc_register_memory (managed_ctx, new_pages, size);
+ 
+   __atomic_store_n (&lock, 0, __ATOMIC_RELEASE);
+   return true;
+ }
+ 
+ /* }}} */
  /* {{{ OpenACC support  */
  
  /* Execute an OpenACC kernel, synchronously or asynchronously.  */
*************** GOMP_OFFLOAD_async_run (int device, void
*** 5061,5066 ****
--- 5229,5263 ----
  		       GOMP_PLUGIN_target_task_completion, async_data);
  }
  
+ /* Allocate memory suitable for Managed Memory.  */
+ 
+ void *
+ GOMP_OFFLOAD_managed_alloc (int device, size_t size)
+ {
+   struct agent_info *agent = get_agent_info (device);
+   while (1)
+     {
+       void *result = gomp_simple_alloc (managed_ctx, size);
+       if (result)
+ 	return result;
+ 
+       /* Allocation failed.  Try again if we can create a new heap block.
+ 	 Note: it's possible another thread could get to the new memory
+ 	 first, so the while loop is necessary. */
+       if (!managed_heap_create (agent, size))
+ 	return NULL;
+     }
+ }
+ 
+ /* Free memory allocated via GOMP_OFFLOAD_managed_alloc.  */
+ 
+ bool
+ GOMP_OFFLOAD_managed_free (int device, void *ptr)
+ {
+   gomp_simple_free (managed_ctx, ptr);
+   return true;
+ }
+ 
  /* }}} */
  /* {{{ OpenACC Plugin API  */
  
diff -Nrcpad gcc-16-20251130/libgomp/simple-allocator.c gcc-16-20251207/libgomp/simple-allocator.c
*** gcc-16-20251130/libgomp/simple-allocator.c	Sun Nov 30 22:32:15 2025
--- gcc-16-20251207/libgomp/simple-allocator.c	Sun Dec  7 22:32:17 2025
*************** gomp_simple_realloc (gomp_simple_alloc_c
*** 312,315 ****
--- 312,316 ----
  /* Include the splay tree code inline, with the prefixes added.  */
  #define splay_tree_prefix simple_alloc
  #define splay_tree_c
+ #define gomp_fatal GOMP_PLUGIN_fatal  /* So it links into a plugin.  */
  #include "splay-tree.h"
diff -Nrcpad gcc-16-20251130/libgomp/target.c gcc-16-20251207/libgomp/target.c
*** gcc-16-20251130/libgomp/target.c	Sun Nov 30 22:32:15 2025
--- gcc-16-20251207/libgomp/target.c	Sun Dec  7 22:32:17 2025
*************** gomp_map_vars_internal (struct gomp_devi
*** 1665,1678 ****
  	      case GOMP_MAP_STRUCT_UNORD:
  		if (sizes[i] > 1)
  		  {
- 		    void *first = hostaddrs[i + 1];
  		    for (size_t j = i + 1; j < i + sizes[i]; j++)
! 		      if (hostaddrs[j + 1] != first)
  			{
  			  gomp_mutex_unlock (&devicep->lock);
! 			  gomp_fatal ("Mapped array elements must be the "
! 				      "same (%p vs %p)", first,
! 				      hostaddrs[j + 1]);
  			}
  		  }
  		/* Fallthrough.  */
--- 1665,1678 ----
  	      case GOMP_MAP_STRUCT_UNORD:
  		if (sizes[i] > 1)
  		  {
  		    for (size_t j = i + 1; j < i + sizes[i]; j++)
! 		      if (hostaddrs[j + 1] < hostaddrs[j])
  			{
  			  gomp_mutex_unlock (&devicep->lock);
! 			  gomp_fatal (
! 			    "Mapped array elements must be the same or in "
! 			    "increasing address order (got %p > %p)",
! 			    hostaddrs[j], hostaddrs[j + 1]);
  			}
  		  }
  		/* Fallthrough.  */
diff -Nrcpad gcc-16-20251130/libgomp/testsuite/lib/libgomp.exp gcc-16-20251207/libgomp/testsuite/lib/libgomp.exp
*** gcc-16-20251130/libgomp/testsuite/lib/libgomp.exp	Sun Nov 30 22:32:15 2025
--- gcc-16-20251207/libgomp/testsuite/lib/libgomp.exp	Sun Dec  7 22:32:17 2025
*************** proc libgomp_target_compile { source des
*** 295,301 ****
  	set options [concat "$ALWAYS_CFLAGS" $options]
      }
  
!     set options [dg-additional-files-options $options $source $dest $type]
  
      set result [target_compile $source $dest $type $options]
  
--- 295,303 ----
  	set options [concat "$ALWAYS_CFLAGS" $options]
      }
  
!     if { $source != "" } {
!         set options [dg-additional-files-options $options $source $dest $type]
!     }
  
      set result [target_compile $source $dest $type $options]
  
*************** proc check_effective_target_omp_managedm
*** 729,733 ****
--- 731,771 ----
      if { [check_effective_target_offload_device_nvptx] } {
  	return 1
      }
+ 
+     if { [libgomp_check_effective_target_offload_target "amdgcn"] } {
+ 	if [check_runtime_nocache managed_available_ {
+ 	    #include <omp.h>
+ 	    #include <stdlib.h>
+ 	    int main ()
+ 	    {
+ 	      const omp_alloctrait_t traits[] = {
+ 		  { omp_atk_fallback, omp_atv_null_fb }
+ 	      };
+ 	      omp_allocator_handle_t managed_no_fallback
+ 	         = omp_init_allocator (ompx_gnu_managed_mem_space, 1, traits);
+ 	      void *a = omp_alloc (16, managed_no_fallback);
+ 	      return a == NULL;
+ 	    }
+ 	} ] {
+ 	  return 1
+ 	}
+     }
+ 
+     return 0
+ }
+ 
+ # return 1 if -mxnack=on is accepted
+ 
+ proc check_effective_target_offload_target_amdgcn_with_xnack { } {
+     if { [libgomp_check_effective_target_offload_target "amdgcn"] } {
+ 	return [check_runtime amd_xnack_ {
+ 	   int main () {
+ 	     #pragma omp target
+ 	       ;
+ 	     return 0;
+ 	   }
+ 	} "-foffload-options=amdgcn-amdhsa=-mxnack=on" ]
+     }
+ 
      return 0
  }
diff -Nrcpad gcc-16-20251130/libgomp/testsuite/libgomp.c/alloc-managed-1.c gcc-16-20251207/libgomp/testsuite/libgomp.c/alloc-managed-1.c
*** gcc-16-20251130/libgomp/testsuite/libgomp.c/alloc-managed-1.c	Sun Nov 30 22:32:15 2025
--- gcc-16-20251207/libgomp/testsuite/libgomp.c/alloc-managed-1.c	Sun Dec  7 22:32:17 2025
***************
*** 1,5 ****
--- 1,6 ----
  /* { dg-do run } */
  /* { dg-require-effective-target omp_managedmem } */
+ /* { dg-additional-options "-foffload-options=amdgcn-amdhsa=-mxnack=on" { target offload_target_amdgcn_with_xnack } } */
  
  /* Check that omp_alloc can allocate Managed Memory, and that host and target
     can see the data, at the same address, without a mapping.  */
diff -Nrcpad gcc-16-20251130/libgomp/testsuite/libgomp.c/alloc-managed-2.c gcc-16-20251207/libgomp/testsuite/libgomp.c/alloc-managed-2.c
*** gcc-16-20251130/libgomp/testsuite/libgomp.c/alloc-managed-2.c	Sun Nov 30 22:32:15 2025
--- gcc-16-20251207/libgomp/testsuite/libgomp.c/alloc-managed-2.c	Sun Dec  7 22:32:17 2025
***************
*** 1,5 ****
--- 1,6 ----
  /* { dg-do run } */
  /* { dg-require-effective-target omp_managedmem } */
+ /* { dg-additional-options -foffload-options=amdgcn-amdhsa=-mxnack=on { target offload_target_amdgcn_with_xnack } } */
  
  /* Check that omp_calloc can allocate Managed Memory, and that host and target
     can see the data, at the same address, without a mapping.  */
diff -Nrcpad gcc-16-20251130/libgomp/testsuite/libgomp.c/alloc-managed-3.c gcc-16-20251207/libgomp/testsuite/libgomp.c/alloc-managed-3.c
*** gcc-16-20251130/libgomp/testsuite/libgomp.c/alloc-managed-3.c	Sun Nov 30 22:32:15 2025
--- gcc-16-20251207/libgomp/testsuite/libgomp.c/alloc-managed-3.c	Sun Dec  7 22:32:17 2025
***************
*** 1,5 ****
--- 1,6 ----
  /* { dg-do run } */
  /* { dg-require-effective-target omp_managedmem } */
+ /* { dg-additional-options -foffload-options=amdgcn-amdhsa=-mxnack=on { target offload_target_amdgcn_with_xnack } } */
  
  /* Check that omp_realloc can allocate Managed Memory, and that host and target
     can see the data, at the same address, without a mapping.  */
diff -Nrcpad gcc-16-20251130/libgomp/testsuite/libgomp.c/alloc-managed-4.c gcc-16-20251207/libgomp/testsuite/libgomp.c/alloc-managed-4.c
*** gcc-16-20251130/libgomp/testsuite/libgomp.c/alloc-managed-4.c	Sun Nov 30 22:32:15 2025
--- gcc-16-20251207/libgomp/testsuite/libgomp.c/alloc-managed-4.c	Sun Dec  7 22:32:17 2025
***************
*** 1,5 ****
--- 1,6 ----
  /* { dg-do run } */
  /* { dg-require-effective-target omp_managedmem } */
+ /* { dg-additional-options -foffload-options=amdgcn-amdhsa=-mxnack=on { target offload_target_amdgcn_with_xnack } } */
  /* { dg-shouldfail "" } */
  /* { dg-output "libgomp: attempted to free managed memory at 0x\[0-9a-f\]+, but the default device is set to the host device" } */
  
diff -Nrcpad gcc-16-20251130/libgomp/testsuite/libgomp.c++/alloc-managed-1.C gcc-16-20251207/libgomp/testsuite/libgomp.c++/alloc-managed-1.C
*** gcc-16-20251130/libgomp/testsuite/libgomp.c++/alloc-managed-1.C	Sun Nov 30 22:32:15 2025
--- gcc-16-20251207/libgomp/testsuite/libgomp.c++/alloc-managed-1.C	Sun Dec  7 22:32:17 2025
***************
*** 1,5 ****
--- 1,6 ----
  // { dg-do run }
  // { dg-require-effective-target omp_managedmem }
+ // { dg-additional-options -foffload-options=amdgcn-amdhsa=-mxnack=on { target offload_target_amdgcn_with_xnack } }
  
  // Check that the ompx::allocator::gnu_managed_mem allocator can allocate
  // Managed Memory, and that host and target can see the data, at the same
diff -Nrcpad gcc-16-20251130/libgomp/testsuite/libgomp.c-c++-common/map-arrayofstruct-2.c gcc-16-20251207/libgomp/testsuite/libgomp.c-c++-common/map-arrayofstruct-2.c
*** gcc-16-20251130/libgomp/testsuite/libgomp.c-c++-common/map-arrayofstruct-2.c	Sun Nov 30 22:32:15 2025
--- gcc-16-20251207/libgomp/testsuite/libgomp.c-c++-common/map-arrayofstruct-2.c	Sun Dec  7 22:32:17 2025
*************** int main (void)
*** 54,58 ****
  }
  
  /* { dg-output "(\n|\r|\r\n)" { target offload_device_nonshared_as } } */
! /* { dg-output "libgomp: Mapped array elements must be the same .*(\n|\r|\r\n)+" { target offload_device_nonshared_as } } */
  /* { dg-shouldfail "" { offload_device_nonshared_as } } */
--- 54,58 ----
  }
  
  /* { dg-output "(\n|\r|\r\n)" { target offload_device_nonshared_as } } */
! /* { dg-output "libgomp: Mapped array elements must be the same or in increasing address order .*(\n|\r|\r\n)+" { target offload_device_nonshared_as } } */
  /* { dg-shouldfail "" { offload_device_nonshared_as } } */
diff -Nrcpad gcc-16-20251130/libgomp/testsuite/libgomp.c-c++-common/map-arrayofstruct-3.c gcc-16-20251207/libgomp/testsuite/libgomp.c-c++-common/map-arrayofstruct-3.c
*** gcc-16-20251130/libgomp/testsuite/libgomp.c-c++-common/map-arrayofstruct-3.c	Sun Nov 30 22:32:15 2025
--- gcc-16-20251207/libgomp/testsuite/libgomp.c-c++-common/map-arrayofstruct-3.c	Sun Dec  7 22:32:17 2025
*************** int main (void)
*** 64,68 ****
  }
  
  /* { dg-output "(\n|\r|\r\n)" { target offload_device_nonshared_as } } */
! /* { dg-output "libgomp: Mapped array elements must be the same .*(\n|\r|\r\n)+" { target offload_device_nonshared_as } } */
  /* { dg-shouldfail "" { offload_device_nonshared_as } } */
--- 64,68 ----
  }
  
  /* { dg-output "(\n|\r|\r\n)" { target offload_device_nonshared_as } } */
! /* { dg-output "libgomp: Mapped array elements must be the same or in increasing address order .*(\n|\r|\r\n)+" { target offload_device_nonshared_as } } */
  /* { dg-shouldfail "" { offload_device_nonshared_as } } */
diff -Nrcpad gcc-16-20251130/libgomp/testsuite/libgomp.c-c++-common/requires-4.c gcc-16-20251207/libgomp/testsuite/libgomp.c-c++-common/requires-4.c
*** gcc-16-20251130/libgomp/testsuite/libgomp.c-c++-common/requires-4.c	Sun Nov 30 22:32:15 2025
--- gcc-16-20251207/libgomp/testsuite/libgomp.c-c++-common/requires-4.c	Sun Dec  7 22:32:17 2025
***************
*** 3,8 ****
--- 3,12 ----
  /* { dg-additional-options "-foffload-options=nvptx-none=-misa=sm_35" { target { offload_target_nvptx } } } */
  /* { dg-additional-sources requires-4-aux.c } */
  
+ /* GCC explicitly disables XNACK for gfx908 (and others) as the hardware
+    support is limited, which results in a diagnostic.  */
+ /* { dg-xfail-if "gfx908 xnack broken" { offload_target_amdgcn } "-foffload=-march=gfx908" } */
+ 
  /* Check no diagnostic by device-compiler's or host compiler's lto1.
     Other file uses: 'requires reverse_offload', but that's inactive as
     there are no declare target directives, device constructs nor device routines  */
diff -Nrcpad gcc-16-20251130/libgomp/testsuite/libgomp.c-c++-common/requires-4a.c gcc-16-20251207/libgomp/testsuite/libgomp.c-c++-common/requires-4a.c
*** gcc-16-20251130/libgomp/testsuite/libgomp.c-c++-common/requires-4a.c	Sun Nov 30 22:32:15 2025
--- gcc-16-20251207/libgomp/testsuite/libgomp.c-c++-common/requires-4a.c	Sun Dec  7 22:32:17 2025
***************
*** 3,8 ****
--- 3,12 ----
  /* { dg-additional-options "-foffload-options=nvptx-none=-misa=sm_35" { target { offload_target_nvptx } } } */
  /* { dg-additional-sources requires-4-aux.c } */
  
+ /* GCC explicitly disables XNACK for gfx908 (and others) as the hardware
+    support is limited, which results in a diagnostic.  */
+ /* { dg-xfail-if "Unified Shared Memory is enabled, but XNACK is disabled" { offload_target_amdgcn } "-foffload=-march=gfx908" } */
+ 
  /* Same as requires-4.c, but uses heap memory for 'a'.  */
  
  /* Check no diagnostic by device-compiler's or host compiler's lto1.
diff -Nrcpad gcc-16-20251130/libgomp/testsuite/libgomp.c-c++-common/requires-5.c gcc-16-20251207/libgomp/testsuite/libgomp.c-c++-common/requires-5.c
*** gcc-16-20251130/libgomp/testsuite/libgomp.c-c++-common/requires-5.c	Sun Nov 30 22:32:15 2025
--- gcc-16-20251207/libgomp/testsuite/libgomp.c-c++-common/requires-5.c	Sun Dec  7 22:32:17 2025
***************
*** 1,6 ****
--- 1,10 ----
  /* { dg-additional-options "-foffload-options=nvptx-none=-misa=sm_35" { target { offload_target_nvptx } } } */
  /* { dg-additional-sources requires-5-aux.c } */
  
+ /* GCC explicitly disables XNACK for gfx908 (and others) as the hardware
+    support is limited, which results in a diagnostic.  */
+ /* { dg-xfail-if "Unified Shared Memory is enabled, but XNACK is disabled" { offload_target_amdgcn } "-foffload=-march=gfx908" } */
+ 
  /* Depending on offload device capabilities, it may print something like the
     following (only) if GOMP_DEBUG=1:
     "devices present but 'omp requires unified_address, unified_shared_memory, reverse_offload' cannot be fulfilled"
diff -Nrcpad gcc-16-20251130/libgomp/testsuite/libgomp.fortran/alloc-managed-1.f90 gcc-16-20251207/libgomp/testsuite/libgomp.fortran/alloc-managed-1.f90
*** gcc-16-20251130/libgomp/testsuite/libgomp.fortran/alloc-managed-1.f90	Sun Nov 30 22:32:15 2025
--- gcc-16-20251207/libgomp/testsuite/libgomp.fortran/alloc-managed-1.f90	Sun Dec  7 22:32:17 2025
***************
*** 1,5 ****
--- 1,6 ----
  ! { dg-do run }
  ! { dg-require-effective-target omp_managedmem }
+ ! { dg-additional-options -foffload-options=amdgcn-amdhsa=-mxnack=on { target offload_target_amdgcn_with_xnack } }
  
  ! Check that omp_alloc can allocate Managed Memory, and that host and target
  ! can see the data, at the same address, without a mapping.
diff -Nrcpad gcc-16-20251130/libgomp/testsuite/libgomp.fortran/map-subarray-10.f90 gcc-16-20251207/libgomp/testsuite/libgomp.fortran/map-subarray-10.f90
*** gcc-16-20251130/libgomp/testsuite/libgomp.fortran/map-subarray-10.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libgomp/testsuite/libgomp.fortran/map-subarray-10.f90	Sun Dec  7 22:32:17 2025
***************
*** 0 ****
--- 1,40 ----
+ ! { dg-do run }
+ 
+ ! PR fortran/120505
+ 
+ ! This test case checks that explicit mapping of allocatable DT components from
+ ! different containing array elements followed by implicit deep mapping works.
+ 
+ module m
+ type t
+  integer, allocatable :: den1(:,:), den2(:,:)
+ end type t
+ 
+ type t2
+  type(t), allocatable :: tiles(:)
+ end type t2
+ 
+ type(t2) :: var
+ end
+ 
+ use m
+ 
+ allocate(var%tiles(2))
+ var%tiles(1)%den1 = reshape([1,2,3,4],[2,2])
+ var%tiles(2)%den2 = reshape([11,22,33,44],[2,2])
+ 
+ !$omp target enter data map(var%tiles(1)%den1, var%tiles(2)%den2)
+ 
+ !$omp target
+  if (any (var%tiles(1)%den1 /= reshape([1,2,3,4],[2,2]))) stop 1
+  if (any (var%tiles(2)%den2 /= reshape([11,22,33,44],[2,2]))) stop 1
+  var%tiles(1)%den1 = var%tiles(1)%den1 + 5
+  var%tiles(2)%den2 = var%tiles(2)%den2 + 7
+ !$omp end target
+ 
+ !$omp target exit data map(var%tiles(1)%den1, var%tiles(2)%den2)
+ 
+ if (any (var%tiles(1)%den1 /= 5 + reshape([1,2,3,4],[2,2]))) stop 1
+ if (any (var%tiles(2)%den2 /= 7 + reshape([11,22,33,44],[2,2]))) stop 1
+ 
+ end
diff -Nrcpad gcc-16-20251130/libgomp/testsuite/libgomp.fortran/map-subarray-5.f90 gcc-16-20251207/libgomp/testsuite/libgomp.fortran/map-subarray-5.f90
*** gcc-16-20251130/libgomp/testsuite/libgomp.fortran/map-subarray-5.f90	Sun Nov 30 22:32:15 2025
--- gcc-16-20251207/libgomp/testsuite/libgomp.fortran/map-subarray-5.f90	Sun Dec  7 22:32:17 2025
*************** end do
*** 50,54 ****
  end
  
  ! { dg-output "(\n|\r|\r\n)" { target offload_device_nonshared_as } }
! ! { dg-output "libgomp: Mapped array elements must be the same .*(\n|\r|\r\n)+" { target offload_device_nonshared_as } }
  ! { dg-shouldfail "" { offload_device_nonshared_as } }
--- 50,54 ----
  end
  
  ! { dg-output "(\n|\r|\r\n)" { target offload_device_nonshared_as } }
! ! { dg-output "libgomp: Mapped array elements must be the same or in increasing address order .*(\n|\r|\r\n)+" { target offload_device_nonshared_as } }
  ! { dg-shouldfail "" { offload_device_nonshared_as } }
diff -Nrcpad gcc-16-20251130/libgomp/testsuite/libgomp.fortran/map-subarray-9.f90 gcc-16-20251207/libgomp/testsuite/libgomp.fortran/map-subarray-9.f90
*** gcc-16-20251130/libgomp/testsuite/libgomp.fortran/map-subarray-9.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libgomp/testsuite/libgomp.fortran/map-subarray-9.f90	Sun Dec  7 22:32:17 2025
***************
*** 0 ****
--- 1,40 ----
+ ! { dg-do run }
+ 
+ ! PR fortran/120505
+ 
+ ! This test case checks that explicit mapping of allocatable DT components
+ ! followed by implicit deep mapping works.
+ 
+ module m
+ type t
+  integer, allocatable :: den1(:,:), den2(:,:)
+ end type t
+ 
+ type t2
+  type(t), allocatable :: tiles(:)
+ end type t2
+ 
+ type(t2) :: var
+ end
+ 
+ use m
+ 
+ allocate(var%tiles(1))
+ var%tiles(1)%den1 = reshape([1,2,3,4],[2,2])
+ var%tiles(1)%den2 = reshape([11,22,33,44],[2,2])
+ 
+ !$omp target enter data map(var%tiles(1)%den1, var%tiles(1)%den2)
+ 
+ !$omp target
+  if (any (var%tiles(1)%den1 /= reshape([1,2,3,4],[2,2]))) stop 1
+  if (any (var%tiles(1)%den2 /= reshape([11,22,33,44],[2,2]))) stop 1
+  var%tiles(1)%den1 = var%tiles(1)%den1 + 5
+  var%tiles(1)%den2 = var%tiles(1)%den2 + 7
+ !$omp end target
+ 
+ !$omp target exit data map(var%tiles(1)%den1, var%tiles(1)%den2)
+ 
+ if (any (var%tiles(1)%den1 /= 5 + reshape([1,2,3,4],[2,2]))) stop 1
+ if (any (var%tiles(1)%den2 /= 7 + reshape([11,22,33,44],[2,2]))) stop 1
+ 
+ end
diff -Nrcpad gcc-16-20251130/libiberty/ChangeLog gcc-16-20251207/libiberty/ChangeLog
*** gcc-16-20251130/libiberty/ChangeLog	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libiberty/ChangeLog	Sun Dec  7 22:32:17 2025
***************
*** 1,3 ****
--- 1,8 ----
+ 2025-11-30  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* simple-object-mach-o.c
+ 	(simple_object_mach_o_segment): Handle non-LTO sections.
+ 
  2025-11-06  Peter Damianov  <peter0x44@disroot.org>
  
  	PR target/122472
diff -Nrcpad gcc-16-20251130/libsanitizer/ChangeLog gcc-16-20251207/libsanitizer/ChangeLog
*** gcc-16-20251130/libsanitizer/ChangeLog	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/ChangeLog	Sun Dec  7 22:32:17 2025
***************
*** 1,3 ****
--- 1,15 ----
+ 2025-12-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* LOCAL_PATCHES: Update.
+ 
+ 2025-12-02  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* configure.tgt: Enable for Darwin22+.
+ 
+ 2025-12-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* MERGE: Merge from master.
+ 
  2025-11-03  Sam James  <sam@gentoo.org>
  
  	* configure: Regenerate.
diff -Nrcpad gcc-16-20251130/libsanitizer/LOCAL_PATCHES gcc-16-20251207/libsanitizer/LOCAL_PATCHES
*** gcc-16-20251130/libsanitizer/LOCAL_PATCHES	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/LOCAL_PATCHES	Sun Dec  7 22:32:17 2025
***************
*** 1,2 ****
! b53f7de3e6205f76a794e159a282193e2afaad16
! 4d2cd304714fddc8a995fc0311090fce7e70c122
--- 1,2 ----
! r16-5832-g89130a50108077e81a11a60007de6830c9f23b34
! r16-5839-g2249f6143717d9d5d6801e25867a2f826b1132de
diff -Nrcpad gcc-16-20251130/libsanitizer/MERGE gcc-16-20251207/libsanitizer/MERGE
*** gcc-16-20251130/libsanitizer/MERGE	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/MERGE	Sun Dec  7 22:32:17 2025
***************
*** 1,4 ****
! 61a6439f35b6de28ff4aff4450d6fca970292fd5
  
  The first line of this file holds the git revision number of the
  last merge done from the master library sources.
--- 1,4 ----
! 8723fe5606de6dfb344afacd667c20f55bb2f5e0
  
  The first line of this file holds the git revision number of the
  last merge done from the master library sources.
diff -Nrcpad gcc-16-20251130/libsanitizer/asan/asan_activation.cpp gcc-16-20251207/libsanitizer/asan/asan_activation.cpp
*** gcc-16-20251130/libsanitizer/asan/asan_activation.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/asan/asan_activation.cpp	Sun Dec  7 22:32:17 2025
*************** static struct AsanDeactivatedFlags {
*** 58,64 ****
      cf.verbosity = Verbosity();
      cf.help = false; // this is activation-specific help
  
!     // Check if activation flags need to be overriden.
      if (const char *env = GetEnv("ASAN_ACTIVATION_OPTIONS")) {
        parser.ParseString(env);
      }
--- 58,64 ----
      cf.verbosity = Verbosity();
      cf.help = false; // this is activation-specific help
  
!     // Check if activation flags need to be overridden.
      if (const char *env = GetEnv("ASAN_ACTIVATION_OPTIONS")) {
        parser.ParseString(env);
      }
diff -Nrcpad gcc-16-20251130/libsanitizer/asan/asan_allocator.cpp gcc-16-20251207/libsanitizer/asan/asan_allocator.cpp
*** gcc-16-20251130/libsanitizer/asan/asan_allocator.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/asan/asan_allocator.cpp	Sun Dec  7 22:32:17 2025
***************
*** 21,26 ****
--- 21,27 ----
  #include "asan_poisoning.h"
  #include "asan_report.h"
  #include "asan_stack.h"
+ #include "asan_suppressions.h"
  #include "asan_thread.h"
  #include "lsan/lsan_common.h"
  #include "sanitizer_common/sanitizer_allocator_checks.h"
*************** struct Allocator {
*** 423,432 ****
      PoisonShadow(chunk, allocated_size, kAsanHeapLeftRedzoneMagic);
    }
  
!   void ReInitialize(const AllocatorOptions &options) {
      SetAllocatorMayReturnNull(options.may_return_null);
      allocator.SetReleaseToOSIntervalMs(options.release_to_os_interval_ms);
      SharedInitCode(options);
  
      // Poison all existing allocation's redzones.
      if (CanPoisonMemory()) {
--- 424,438 ----
      PoisonShadow(chunk, allocated_size, kAsanHeapLeftRedzoneMagic);
    }
  
!   // Apply provided AllocatorOptions to an Allocator
!   void ApplyOptions(const AllocatorOptions &options) {
      SetAllocatorMayReturnNull(options.may_return_null);
      allocator.SetReleaseToOSIntervalMs(options.release_to_os_interval_ms);
      SharedInitCode(options);
+   }
+ 
+   void ReInitialize(const AllocatorOptions &options) {
+     ApplyOptions(options);
  
      // Poison all existing allocation's redzones.
      if (CanPoisonMemory()) {
*************** struct Allocator {
*** 541,546 ****
--- 547,553 ----
          ComputeUserRequestedAlignmentLog(alignment);
      if (alignment < min_alignment)
        alignment = min_alignment;
+     bool upgraded_from_zero = false;
      if (size == 0) {
        // We'd be happy to avoid allocating memory for zero-size requests, but
        // some programs/tests depend on this behavior and assume that malloc
*************** struct Allocator {
*** 549,554 ****
--- 556,562 ----
        // consecutive "new" calls must be different even if the allocated size
        // is zero.
        size = 1;
+       upgraded_from_zero = true;
      }
      CHECK(IsPowerOfTwo(alignment));
      uptr rz_log = ComputeRZLog(size);
*************** struct Allocator {
*** 631,636 ****
--- 639,648 ----
        *shadow = fl.poison_partial ? (size & (ASAN_SHADOW_GRANULARITY - 1)) : 0;
      }
  
+     if (upgraded_from_zero)
+       PoisonShadow(user_beg, ASAN_SHADOW_GRANULARITY,
+                    kAsanHeapLeftRedzoneMagic);
+ 
      AsanStats &thread_stats = GetCurrentThreadStats();
      thread_stats.mallocs++;
      thread_stats.malloced += size;
*************** struct Allocator {
*** 732,738 ****
      if (!AtomicallySetQuarantineFlagIfAllocated(m, ptr, stack)) return;
  
      if (m->alloc_type != alloc_type) {
!       if (atomic_load(&alloc_dealloc_mismatch, memory_order_acquire)) {
          ReportAllocTypeMismatch((uptr)ptr, stack, (AllocType)m->alloc_type,
                                  (AllocType)alloc_type);
        }
--- 744,751 ----
      if (!AtomicallySetQuarantineFlagIfAllocated(m, ptr, stack)) return;
  
      if (m->alloc_type != alloc_type) {
!       if (atomic_load(&alloc_dealloc_mismatch, memory_order_acquire) &&
!           !IsAllocDeallocMismatchSuppressed(stack)) {
          ReportAllocTypeMismatch((uptr)ptr, stack, (AllocType)m->alloc_type,
                                  (AllocType)alloc_type);
        }
*************** void ReInitializeAllocator(const Allocat
*** 975,980 ****
--- 988,998 ----
    instance.ReInitialize(options);
  }
  
+ // Apply provided AllocatorOptions to an Allocator
+ void ApplyAllocatorOptions(const AllocatorOptions &options) {
+   instance.ApplyOptions(options);
+ }
+ 
  void GetAllocatorOptions(AllocatorOptions *options) {
    instance.GetOptions(options);
  }
*************** void PrintInternalAllocatorStats() {
*** 995,1007 ****
    instance.PrintStats();
  }
  
! void asan_free(void *ptr, BufferedStackTrace *stack, AllocType alloc_type) {
!   instance.Deallocate(ptr, 0, 0, stack, alloc_type);
! }
! 
! void asan_delete(void *ptr, uptr size, uptr alignment,
!                  BufferedStackTrace *stack, AllocType alloc_type) {
!   instance.Deallocate(ptr, size, alignment, stack, alloc_type);
  }
  
  void *asan_malloc(uptr size, BufferedStackTrace *stack) {
--- 1013,1020 ----
    instance.PrintStats();
  }
  
! void asan_free(void *ptr, BufferedStackTrace *stack) {
!   instance.Deallocate(ptr, 0, 0, stack, FROM_MALLOC);
  }
  
  void *asan_malloc(uptr size, BufferedStackTrace *stack) {
*************** void *asan_pvalloc(uptr size, BufferedSt
*** 1056,1063 ****
        instance.Allocate(size, PageSize, stack, FROM_MALLOC, true));
  }
  
! void *asan_memalign(uptr alignment, uptr size, BufferedStackTrace *stack,
!                     AllocType alloc_type) {
    if (UNLIKELY(!IsPowerOfTwo(alignment))) {
      errno = errno_EINVAL;
      if (AllocatorMayReturnNull())
--- 1069,1075 ----
        instance.Allocate(size, PageSize, stack, FROM_MALLOC, true));
  }
  
! void *asan_memalign(uptr alignment, uptr size, BufferedStackTrace *stack) {
    if (UNLIKELY(!IsPowerOfTwo(alignment))) {
      errno = errno_EINVAL;
      if (AllocatorMayReturnNull())
*************** void *asan_memalign(uptr alignment, uptr
*** 1065,1071 ****
      ReportInvalidAllocationAlignment(alignment, stack);
    }
    return SetErrnoOnNull(
!       instance.Allocate(size, alignment, stack, alloc_type, true));
  }
  
  void *asan_aligned_alloc(uptr alignment, uptr size, BufferedStackTrace *stack) {
--- 1077,1083 ----
      ReportInvalidAllocationAlignment(alignment, stack);
    }
    return SetErrnoOnNull(
!       instance.Allocate(size, alignment, stack, FROM_MALLOC, true));
  }
  
  void *asan_aligned_alloc(uptr alignment, uptr size, BufferedStackTrace *stack) {
*************** uptr asan_malloc_usable_size(const void
*** 1105,1110 ****
--- 1117,1215 ----
    return usable_size;
  }
  
+ namespace {
+ 
+ void *asan_new(uptr size, BufferedStackTrace *stack, bool array) {
+   return SetErrnoOnNull(
+       instance.Allocate(size, 0, stack, array ? FROM_NEW_BR : FROM_NEW, true));
+ }
+ 
+ void *asan_new_aligned(uptr size, uptr alignment, BufferedStackTrace *stack,
+                        bool array) {
+   if (UNLIKELY(alignment == 0 || !IsPowerOfTwo(alignment))) {
+     errno = errno_EINVAL;
+     if (AllocatorMayReturnNull())
+       return nullptr;
+     ReportInvalidAllocationAlignment(alignment, stack);
+   }
+   return SetErrnoOnNull(instance.Allocate(
+       size, alignment, stack, array ? FROM_NEW_BR : FROM_NEW, true));
+ }
+ 
+ void asan_delete(void *ptr, BufferedStackTrace *stack, bool array) {
+   instance.Deallocate(ptr, 0, 0, stack, array ? FROM_NEW_BR : FROM_NEW);
+ }
+ 
+ void asan_delete_aligned(void *ptr, uptr alignment, BufferedStackTrace *stack,
+                          bool array) {
+   instance.Deallocate(ptr, 0, alignment, stack, array ? FROM_NEW_BR : FROM_NEW);
+ }
+ 
+ void asan_delete_sized(void *ptr, uptr size, BufferedStackTrace *stack,
+                        bool array) {
+   instance.Deallocate(ptr, size, 0, stack, array ? FROM_NEW_BR : FROM_NEW);
+ }
+ 
+ void asan_delete_sized_aligned(void *ptr, uptr size, uptr alignment,
+                                BufferedStackTrace *stack, bool array) {
+   instance.Deallocate(ptr, size, alignment, stack,
+                       array ? FROM_NEW_BR : FROM_NEW);
+ }
+ 
+ }  // namespace
+ 
+ void *asan_new(uptr size, BufferedStackTrace *stack) {
+   return asan_new(size, stack, /*array=*/false);
+ }
+ 
+ void *asan_new_aligned(uptr size, uptr alignment, BufferedStackTrace *stack) {
+   return asan_new_aligned(size, alignment, stack, /*array=*/false);
+ }
+ 
+ void *asan_new_array(uptr size, BufferedStackTrace *stack) {
+   return asan_new(size, stack, /*array=*/true);
+ }
+ 
+ void *asan_new_array_aligned(uptr size, uptr alignment,
+                              BufferedStackTrace *stack) {
+   return asan_new_aligned(size, alignment, stack, /*array=*/true);
+ }
+ 
+ void asan_delete(void *ptr, BufferedStackTrace *stack) {
+   asan_delete(ptr, stack, /*array=*/false);
+ }
+ 
+ void asan_delete_aligned(void *ptr, uptr alignment, BufferedStackTrace *stack) {
+   asan_delete_aligned(ptr, alignment, stack, /*array=*/false);
+ }
+ 
+ void asan_delete_sized(void *ptr, uptr size, BufferedStackTrace *stack) {
+   asan_delete_sized(ptr, size, stack, /*array=*/false);
+ }
+ 
+ void asan_delete_sized_aligned(void *ptr, uptr size, uptr alignment,
+                                BufferedStackTrace *stack) {
+   asan_delete_sized_aligned(ptr, size, alignment, stack, /*array=*/false);
+ }
+ 
+ void asan_delete_array(void *ptr, BufferedStackTrace *stack) {
+   asan_delete(ptr, stack, /*array=*/true);
+ }
+ 
+ void asan_delete_array_aligned(void *ptr, uptr alignment,
+                                BufferedStackTrace *stack) {
+   asan_delete_aligned(ptr, alignment, stack, /*array=*/true);
+ }
+ 
+ void asan_delete_array_sized(void *ptr, uptr size, BufferedStackTrace *stack) {
+   asan_delete_sized(ptr, size, stack, /*array=*/true);
+ }
+ 
+ void asan_delete_array_sized_aligned(void *ptr, uptr size, uptr alignment,
+                                      BufferedStackTrace *stack) {
+   asan_delete_sized_aligned(ptr, size, alignment, stack, /*array=*/true);
+ }
+ 
  uptr asan_mz_size(const void *ptr) {
    return instance.AllocationSize(reinterpret_cast<uptr>(ptr));
  }
diff -Nrcpad gcc-16-20251130/libsanitizer/asan/asan_allocator.h gcc-16-20251207/libsanitizer/asan/asan_allocator.h
*** gcc-16-20251130/libsanitizer/asan/asan_allocator.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/asan/asan_allocator.h	Sun Dec  7 22:32:17 2025
*************** struct AllocatorOptions {
*** 47,52 ****
--- 47,53 ----
  void InitializeAllocator(const AllocatorOptions &options);
  void ReInitializeAllocator(const AllocatorOptions &options);
  void GetAllocatorOptions(AllocatorOptions *options);
+ void ApplyAllocatorOptions(const AllocatorOptions &options);
  
  class AsanChunkView {
   public:
*************** using PrimaryAllocator = PrimaryAllocato
*** 238,244 ****
  typedef CompactSizeClassMap SizeClassMap;
  template <typename AddressSpaceViewTy>
  struct AP32 {
!   static const uptr kSpaceBeg = 0;
    static const u64 kSpaceSize = SANITIZER_MMAP_RANGE_SIZE;
    static const uptr kMetadataSize = 0;
    typedef __asan::SizeClassMap SizeClassMap;
--- 239,245 ----
  typedef CompactSizeClassMap SizeClassMap;
  template <typename AddressSpaceViewTy>
  struct AP32 {
!   static const uptr kSpaceBeg = SANITIZER_MMAP_BEGIN;
    static const u64 kSpaceSize = SANITIZER_MMAP_RANGE_SIZE;
    static const uptr kMetadataSize = 0;
    typedef __asan::SizeClassMap SizeClassMap;
*************** struct AsanThreadLocalMallocStorage {
*** 269,279 ****
    AsanThreadLocalMallocStorage() {}
  };
  
! void *asan_memalign(uptr alignment, uptr size, BufferedStackTrace *stack,
!                     AllocType alloc_type);
! void asan_free(void *ptr, BufferedStackTrace *stack, AllocType alloc_type);
! void asan_delete(void *ptr, uptr size, uptr alignment,
!                  BufferedStackTrace *stack, AllocType alloc_type);
  
  void *asan_malloc(uptr size, BufferedStackTrace *stack);
  void *asan_calloc(uptr nmemb, uptr size, BufferedStackTrace *stack);
--- 270,277 ----
    AsanThreadLocalMallocStorage() {}
  };
  
! void *asan_memalign(uptr alignment, uptr size, BufferedStackTrace *stack);
! void asan_free(void *ptr, BufferedStackTrace *stack);
  
  void *asan_malloc(uptr size, BufferedStackTrace *stack);
  void *asan_calloc(uptr nmemb, uptr size, BufferedStackTrace *stack);
*************** int asan_posix_memalign(void **memptr, u
*** 288,293 ****
--- 286,308 ----
                          BufferedStackTrace *stack);
  uptr asan_malloc_usable_size(const void *ptr, uptr pc, uptr bp);
  
+ void *asan_new(uptr size, BufferedStackTrace *stack);
+ void *asan_new_aligned(uptr size, uptr alignment, BufferedStackTrace *stack);
+ void *asan_new_array(uptr size, BufferedStackTrace *stack);
+ void *asan_new_array_aligned(uptr size, uptr alignment,
+                              BufferedStackTrace *stack);
+ void asan_delete(void *ptr, BufferedStackTrace *stack);
+ void asan_delete_aligned(void *ptr, uptr alignment, BufferedStackTrace *stack);
+ void asan_delete_sized(void *ptr, uptr size, BufferedStackTrace *stack);
+ void asan_delete_sized_aligned(void *ptr, uptr size, uptr alignment,
+                                BufferedStackTrace *stack);
+ void asan_delete_array(void *ptr, BufferedStackTrace *stack);
+ void asan_delete_array_aligned(void *ptr, uptr alignment,
+                                BufferedStackTrace *stack);
+ void asan_delete_array_sized(void *ptr, uptr size, BufferedStackTrace *stack);
+ void asan_delete_array_sized_aligned(void *ptr, uptr size, uptr alignment,
+                                      BufferedStackTrace *stack);
+ 
  uptr asan_mz_size(const void *ptr);
  void asan_mz_force_lock();
  void asan_mz_force_unlock();
diff -Nrcpad gcc-16-20251130/libsanitizer/asan/asan_descriptions.cpp gcc-16-20251207/libsanitizer/asan/asan_descriptions.cpp
*** gcc-16-20251130/libsanitizer/asan/asan_descriptions.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/asan/asan_descriptions.cpp	Sun Dec  7 22:32:17 2025
*************** void DescribeThread(AsanThreadContext *c
*** 45,50 ****
--- 45,53 ----
    }
    context->announced = true;
  
+   InternalScopedString str;
+   str.AppendF("Thread %s", AsanThreadIdAndName(context).c_str());
+ 
    AsanThreadContext *parent_context =
        context->parent_tid == kInvalidTid
            ? nullptr
*************** void DescribeThread(AsanThreadContext *c
*** 52,63 ****
  
    // `context->parent_tid` may point to reused slot. Check `unique_id` which
    // is always smaller for the parent, always greater for a new user.
!   if (context->unique_id <= parent_context->unique_id)
!     parent_context = nullptr;
! 
!   InternalScopedString str;
!   str.AppendF("Thread %s", AsanThreadIdAndName(context).c_str());
!   if (!parent_context) {
      str.Append(" created by unknown thread\n");
      Printf("%s", str.data());
      return;
--- 55,61 ----
  
    // `context->parent_tid` may point to reused slot. Check `unique_id` which
    // is always smaller for the parent, always greater for a new user.
!   if (!parent_context || context->unique_id <= parent_context->unique_id) {
      str.Append(" created by unknown thread\n");
      Printf("%s", str.data());
      return;
*************** bool GetStackAddressInformation(uptr add
*** 213,222 ****
    descr->frame_pc = access.frame_pc;
    descr->frame_descr = access.frame_descr;
  
! #if SANITIZER_PPC64V1
!   // On PowerPC64 ELFv1, the address of a function actually points to a
!   // three-doubleword data structure with the first field containing
!   // the address of the function's code.
    descr->frame_pc = *reinterpret_cast<uptr *>(descr->frame_pc);
  #endif
    descr->frame_pc += 16;
--- 211,220 ----
    descr->frame_pc = access.frame_pc;
    descr->frame_descr = access.frame_descr;
  
! #if SANITIZER_PPC64V1 || SANITIZER_AIX
!   // On PowerPC64 ELFv1 or AIX, the address of a function actually points to a
!   // three-doubleword (or three-word for 32-bit AIX) data structure with
!   // the first field containing the address of the function's code.
    descr->frame_pc = *reinterpret_cast<uptr *>(descr->frame_pc);
  #endif
    descr->frame_pc += 16;
*************** AddressDescription::AddressDescription(u
*** 446,451 ****
--- 444,461 ----
      data.kind = kAddressKindShadow;
      return;
    }
+ 
+   // Check global first. On AIX, some global data defined in shared libraries
+   // are put to the STACK region for unknown reasons. Check global first can
+   // workaround this issue.
+   // TODO: Look into whether there's a different solution to this problem.
+ #if SANITIZER_AIX
+   if (GetGlobalAddressInformation(addr, access_size, &data.global)) {
+     data.kind = kAddressKindGlobal;
+     return;
+   }
+ #endif
+ 
    if (GetHeapAddressInformation(addr, access_size, &data.heap)) {
      data.kind = kAddressKindHeap;
      return;
*************** AddressDescription::AddressDescription(u
*** 463,472 ****
--- 473,486 ----
      return;
    }
  
+ // GetGlobalAddressInformation is called earlier on AIX due to a workaround
+ #if !SANITIZER_AIX
    if (GetGlobalAddressInformation(addr, access_size, &data.global)) {
      data.kind = kAddressKindGlobal;
      return;
    }
+ #endif
+ 
    data.kind = kAddressKindWild;
    data.wild.addr = addr;
    data.wild.access_size = access_size;
diff -Nrcpad gcc-16-20251130/libsanitizer/asan/asan_errors.cpp gcc-16-20251207/libsanitizer/asan/asan_errors.cpp
*** gcc-16-20251130/libsanitizer/asan/asan_errors.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/asan/asan_errors.cpp	Sun Dec  7 22:32:17 2025
***************
*** 12,19 ****
--- 12,21 ----
  //===----------------------------------------------------------------------===//
  
  #include "asan_errors.h"
+ 
  #include "asan_descriptions.h"
  #include "asan_mapping.h"
+ #include "asan_poisoning.h"
  #include "asan_report.h"
  #include "asan_stack.h"
  #include "sanitizer_common/sanitizer_stackdepot.h"
*************** static void PrintShadowMemoryForAddress(
*** 600,605 ****
--- 602,645 ----
    Printf("%s", str.data());
  }
  
+ static void CheckPoisonRecords(uptr addr) {
+   if (!AddrIsInMem(addr))
+     return;
+ 
+   u8 *shadow_addr = (u8 *)MemToShadow(addr);
+   // If we are in the partial right redzone, look at the next shadow byte.
+   if (*shadow_addr > 0 && *shadow_addr < 128)
+     shadow_addr++;
+   u8 shadow_val = *shadow_addr;
+ 
+   if (shadow_val != kAsanUserPoisonedMemoryMagic)
+     return;
+ 
+   Printf("\n");
+ 
+   if (flags()->poison_history_size <= 0) {
+     Printf(
+         "NOTE: the stack trace above identifies the code that *accessed* "
+         "the poisoned memory.\n");
+     Printf(
+         "To identify the code that *poisoned* the memory, try the "
+         "experimental setting ASAN_OPTIONS=poison_history_size=<size>.\n");
+     return;
+   }
+ 
+   PoisonRecord record;
+   if (FindPoisonRecord(addr, record)) {
+     StackTrace poison_stack = StackDepotGet(record.stack_id);
+     if (poison_stack.size > 0) {
+       Printf("Memory was manually poisoned by thread T%u:\n", record.thread_id);
+       poison_stack.Print();
+     }
+   } else {
+     Printf("ERROR: no matching poison tracking record found.\n");
+     Printf("Try a larger value for ASAN_OPTIONS=poison_history_size=<size>.\n");
+   }
+ }
+ 
  void ErrorGeneric::Print() {
    Decorator d;
    Printf("%s", d.Error());
*************** void ErrorGeneric::Print() {
*** 623,628 ****
--- 663,671 ----
      PrintContainerOverflowHint();
    ReportErrorSummary(bug_descr, &stack);
    PrintShadowMemoryForAddress(addr);
+ 
+   // This is an experimental flag, hence we don't make a special handler.
+   CheckPoisonRecords(addr);
  }
  
  }  // namespace __asan
diff -Nrcpad gcc-16-20251130/libsanitizer/asan/asan_errors.h gcc-16-20251207/libsanitizer/asan/asan_errors.h
*** gcc-16-20251130/libsanitizer/asan/asan_errors.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/asan/asan_errors.h	Sun Dec  7 22:32:17 2025
*************** struct ErrorBadParamsToCopyContiguousCon
*** 362,368 ****
        u32 tid, BufferedStackTrace *stack_, uptr old_storage_beg_,
        uptr old_storage_end_, uptr new_storage_beg_, uptr new_storage_end_)
        : ErrorBase(tid, 10,
!                   "bad-__sanitizer_annotate_double_ended_contiguous_container"),
          stack(stack_),
          old_storage_beg(old_storage_beg_),
          old_storage_end(old_storage_end_),
--- 362,368 ----
        u32 tid, BufferedStackTrace *stack_, uptr old_storage_beg_,
        uptr old_storage_end_, uptr new_storage_beg_, uptr new_storage_end_)
        : ErrorBase(tid, 10,
!                   "bad-__sanitizer_copy_contiguous_container_annotations"),
          stack(stack_),
          old_storage_beg(old_storage_beg_),
          old_storage_end(old_storage_end_),
diff -Nrcpad gcc-16-20251130/libsanitizer/asan/asan_fake_stack.cpp gcc-16-20251207/libsanitizer/asan/asan_fake_stack.cpp
*** gcc-16-20251130/libsanitizer/asan/asan_fake_stack.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/asan/asan_fake_stack.cpp	Sun Dec  7 22:32:17 2025
*************** static const u64 kAllocaRedzoneMask = 31
*** 27,33 ****
  
  // For small size classes inline PoisonShadow for better performance.
  ALWAYS_INLINE void SetShadow(uptr ptr, uptr size, uptr class_id, u64 magic) {
!   u64 *shadow = reinterpret_cast<u64*>(MemToShadow(ptr));
    if (ASAN_SHADOW_SCALE == 3 && class_id <= 6) {
      // This code expects ASAN_SHADOW_SCALE=3.
      for (uptr i = 0; i < (((uptr)1) << class_id); i++) {
--- 27,34 ----
  
  // For small size classes inline PoisonShadow for better performance.
  ALWAYS_INLINE void SetShadow(uptr ptr, uptr size, uptr class_id, u64 magic) {
!   CHECK(AddrIsAlignedByGranularity(ptr + size));
!   u64* shadow = reinterpret_cast<u64*>(MemToShadow(ptr));
    if (ASAN_SHADOW_SCALE == 3 && class_id <= 6) {
      // This code expects ASAN_SHADOW_SCALE=3.
      for (uptr i = 0; i < (((uptr)1) << class_id); i++) {
*************** ALWAYS_INLINE void SetShadow(uptr ptr, u
*** 39,65 ****
      // The size class is too big, it's cheaper to poison only size bytes.
      PoisonShadow(ptr, size, static_cast<u8>(magic));
    }
  }
  
! FakeStack *FakeStack::Create(uptr stack_size_log) {
    static uptr kMinStackSizeLog = 16;
    static uptr kMaxStackSizeLog = FIRST_32_SECOND_64(24, 28);
    if (stack_size_log < kMinStackSizeLog)
      stack_size_log = kMinStackSizeLog;
    if (stack_size_log > kMaxStackSizeLog)
      stack_size_log = kMaxStackSizeLog;
    uptr size = RequiredSize(stack_size_log);
!   FakeStack *res = reinterpret_cast<FakeStack *>(
!       flags()->uar_noreserve ? MmapNoReserveOrDie(size, "FakeStack")
!                              : MmapOrDie(size, "FakeStack"));
    res->stack_size_log_ = stack_size_log;
!   u8 *p = reinterpret_cast<u8 *>(res);
    VReport(1,
            "T%d: FakeStack created: %p -- %p stack_size_log: %zd; "
!           "mmapped %zdK, noreserve=%d \n",
!           GetCurrentTidOrInvalid(), (void *)p,
!           (void *)(p + FakeStack::RequiredSize(stack_size_log)), stack_size_log,
!           size >> 10, flags()->uar_noreserve);
    return res;
  }
  
--- 40,87 ----
      // The size class is too big, it's cheaper to poison only size bytes.
      PoisonShadow(ptr, size, static_cast<u8>(magic));
    }
+ 
+   if (magic == 0) {
+     uptr redzone_size = FakeStack::BytesInSizeClass(class_id) - size;
+     PoisonShadow(ptr + size, redzone_size, kAsanStackRightRedzoneMagic);
+   }
  }
  
! FakeStack* FakeStack::Create(uptr stack_size_log) {
    static uptr kMinStackSizeLog = 16;
    static uptr kMaxStackSizeLog = FIRST_32_SECOND_64(24, 28);
    if (stack_size_log < kMinStackSizeLog)
      stack_size_log = kMinStackSizeLog;
    if (stack_size_log > kMaxStackSizeLog)
      stack_size_log = kMaxStackSizeLog;
+   CHECK_LE(kMaxStackFrameSizeLog, stack_size_log);
    uptr size = RequiredSize(stack_size_log);
!   uptr padded_size = size + kMaxStackFrameSize;
!   void* true_res = reinterpret_cast<void*>(
!       flags()->uar_noreserve ? MmapNoReserveOrDie(padded_size, "FakeStack")
!                              : MmapOrDie(padded_size, "FakeStack"));
!   // GetFrame() requires the property that
!   // (res + kFlagsOffset + SizeRequiredForFlags(stack_size_log)) is aligned to
!   // kMaxStackFrameSize.
!   // We didn't use MmapAlignedOrDieOnFatalError, because it requires that the
!   // *size* is a power of 2, which is an overly strong condition.
!   static_assert(alignof(FakeStack) <= kMaxStackFrameSize);
!   FakeStack* res = reinterpret_cast<FakeStack*>(
!       RoundUpTo(
!           (uptr)true_res + kFlagsOffset + SizeRequiredForFlags(stack_size_log),
!           kMaxStackFrameSize) -
!       kFlagsOffset - SizeRequiredForFlags(stack_size_log));
!   res->true_start = true_res;
    res->stack_size_log_ = stack_size_log;
!   u8* p = reinterpret_cast<u8*>(res);
    VReport(1,
            "T%d: FakeStack created: %p -- %p stack_size_log: %zd; "
!           "mmapped %zdK, noreserve=%d, true_start: %p, start of first frame: "
!           "0x%zx\n",
!           GetCurrentTidOrInvalid(), (void*)p,
!           (void*)(p + FakeStack::RequiredSize(stack_size_log)), stack_size_log,
!           size >> 10, flags()->uar_noreserve, res->true_start,
!           res->GetFrame(stack_size_log, /*class_id*/ 0, /*pos*/ 0));
    return res;
  }
  
*************** void FakeStack::Destroy(int tid) {
*** 73,80 ****
      Report("T%d: FakeStack destroyed: %s\n", tid, str.data());
    }
    uptr size = RequiredSize(stack_size_log_);
!   FlushUnneededASanShadowMemory(reinterpret_cast<uptr>(this), size);
!   UnmapOrDie(this, size);
  }
  
  void FakeStack::PoisonAll(u8 magic) {
--- 95,104 ----
      Report("T%d: FakeStack destroyed: %s\n", tid, str.data());
    }
    uptr size = RequiredSize(stack_size_log_);
!   uptr padded_size = size + kMaxStackFrameSize;
!   FlushUnneededASanShadowMemory(reinterpret_cast<uptr>(true_start),
!                                 padded_size);
!   UnmapOrDie(true_start, padded_size);
  }
  
  void FakeStack::PoisonAll(u8 magic) {
*************** void FakeStack::PoisonAll(u8 magic) {
*** 85,98 ****
  #if !defined(_MSC_VER) || defined(__clang__)
  ALWAYS_INLINE USED
  #endif
! FakeFrame *FakeStack::Allocate(uptr stack_size_log, uptr class_id,
!                                uptr real_stack) {
    CHECK_LT(class_id, kNumberOfSizeClasses);
    if (needs_gc_)
      GC(real_stack);
!   uptr &hint_position = hint_position_[class_id];
    const int num_iter = NumberOfFrames(stack_size_log, class_id);
!   u8 *flags = GetFlags(stack_size_log, class_id);
    for (int i = 0; i < num_iter; i++) {
      uptr pos = ModuloNumberOfFrames(stack_size_log, class_id, hint_position++);
      // This part is tricky. On one hand, checking and setting flags[pos]
--- 109,122 ----
  #if !defined(_MSC_VER) || defined(__clang__)
  ALWAYS_INLINE USED
  #endif
!     FakeFrame* FakeStack::Allocate(uptr stack_size_log, uptr class_id,
!                                    uptr real_stack) {
    CHECK_LT(class_id, kNumberOfSizeClasses);
    if (needs_gc_)
      GC(real_stack);
!   uptr& hint_position = hint_position_[class_id];
    const int num_iter = NumberOfFrames(stack_size_log, class_id);
!   u8* flags = GetFlags(stack_size_log, class_id);
    for (int i = 0; i < num_iter; i++) {
      uptr pos = ModuloNumberOfFrames(stack_size_log, class_id, hint_position++);
      // This part is tricky. On one hand, checking and setting flags[pos]
*************** FakeFrame *FakeStack::Allocate(uptr stac
*** 102,123 ****
      // and so will not touch this particular byte. So, it is safe to do this
      // with regular non-atomic load and store (at least I was not able to make
      // this code crash).
!     if (flags[pos]) continue;
      flags[pos] = 1;
!     FakeFrame *res = reinterpret_cast<FakeFrame *>(
!         GetFrame(stack_size_log, class_id, pos));
      res->real_stack = real_stack;
      *SavedFlagPtr(reinterpret_cast<uptr>(res), class_id) = &flags[pos];
      return res;
    }
!   return nullptr; // We are out of fake stack.
  }
  
! uptr FakeStack::AddrIsInFakeStack(uptr ptr, uptr *frame_beg, uptr *frame_end) {
    uptr stack_size_log = this->stack_size_log();
    uptr beg = reinterpret_cast<uptr>(GetFrame(stack_size_log, 0, 0));
    uptr end = reinterpret_cast<uptr>(this) + RequiredSize(stack_size_log);
!   if (ptr < beg || ptr >= end) return 0;
    uptr class_id = (ptr - beg) >> stack_size_log;
    uptr base = beg + (class_id << stack_size_log);
    CHECK_LE(base, ptr);
--- 126,149 ----
      // and so will not touch this particular byte. So, it is safe to do this
      // with regular non-atomic load and store (at least I was not able to make
      // this code crash).
!     if (flags[pos])
!       continue;
      flags[pos] = 1;
!     FakeFrame* res =
!         reinterpret_cast<FakeFrame*>(GetFrame(stack_size_log, class_id, pos));
      res->real_stack = real_stack;
      *SavedFlagPtr(reinterpret_cast<uptr>(res), class_id) = &flags[pos];
      return res;
    }
!   return nullptr;  // We are out of fake stack.
  }
  
! uptr FakeStack::AddrIsInFakeStack(uptr ptr, uptr* frame_beg, uptr* frame_end) {
    uptr stack_size_log = this->stack_size_log();
    uptr beg = reinterpret_cast<uptr>(GetFrame(stack_size_log, 0, 0));
    uptr end = reinterpret_cast<uptr>(this) + RequiredSize(stack_size_log);
!   if (ptr < beg || ptr >= end)
!     return 0;
    uptr class_id = (ptr - beg) >> stack_size_log;
    uptr base = beg + (class_id << stack_size_log);
    CHECK_LE(base, ptr);
*************** uptr FakeStack::AddrIsInFakeStack(uptr p
*** 129,137 ****
    return res;
  }
  
! void FakeStack::HandleNoReturn() {
!   needs_gc_ = true;
! }
  
  // Hack: The statement below is not true if we take into account sigaltstack or
  // makecontext. It should be possible to make GC to discard wrong stack frame if
--- 155,161 ----
    return res;
  }
  
! void FakeStack::HandleNoReturn() { needs_gc_ = true; }
  
  // Hack: The statement below is not true if we take into account sigaltstack or
  // makecontext. It should be possible to make GC to discard wrong stack frame if
*************** void FakeStack::HandleNoReturn() {
*** 146,152 ****
  // We do it based on their 'real_stack' values -- everything that is lower
  // than the current real_stack is garbage.
  NOINLINE void FakeStack::GC(uptr real_stack) {
!   AsanThread *curr_thread = GetCurrentThread();
    if (!curr_thread)
      return;  // Try again when we have a thread.
    auto top = curr_thread->stack_top();
--- 170,176 ----
  // We do it based on their 'real_stack' values -- everything that is lower
  // than the current real_stack is garbage.
  NOINLINE void FakeStack::GC(uptr real_stack) {
!   AsanThread* curr_thread = GetCurrentThread();
    if (!curr_thread)
      return;  // Try again when we have a thread.
    auto top = curr_thread->stack_top();
*************** NOINLINE void FakeStack::GC(uptr real_st
*** 155,166 ****
      return;  // Not the default stack.
  
    for (uptr class_id = 0; class_id < kNumberOfSizeClasses; class_id++) {
!     u8 *flags = GetFlags(stack_size_log(), class_id);
      for (uptr i = 0, n = NumberOfFrames(stack_size_log(), class_id); i < n;
           i++) {
!       if (flags[i] == 0) continue;  // not allocated.
!       FakeFrame *ff = reinterpret_cast<FakeFrame *>(
!           GetFrame(stack_size_log(), class_id, i));
        // GC only on the default stack.
        if (bottom < ff->real_stack && ff->real_stack < real_stack) {
          flags[i] = 0;
--- 179,191 ----
      return;  // Not the default stack.
  
    for (uptr class_id = 0; class_id < kNumberOfSizeClasses; class_id++) {
!     u8* flags = GetFlags(stack_size_log(), class_id);
      for (uptr i = 0, n = NumberOfFrames(stack_size_log(), class_id); i < n;
           i++) {
!       if (flags[i] == 0)
!         continue;  // not allocated.
!       FakeFrame* ff =
!           reinterpret_cast<FakeFrame*>(GetFrame(stack_size_log(), class_id, i));
        // GC only on the default stack.
        if (bottom < ff->real_stack && ff->real_stack < real_stack) {
          flags[i] = 0;
*************** NOINLINE void FakeStack::GC(uptr real_st
*** 173,186 ****
    needs_gc_ = false;
  }
  
! void FakeStack::ForEachFakeFrame(RangeIteratorCallback callback, void *arg) {
    for (uptr class_id = 0; class_id < kNumberOfSizeClasses; class_id++) {
!     u8 *flags = GetFlags(stack_size_log(), class_id);
      for (uptr i = 0, n = NumberOfFrames(stack_size_log(), class_id); i < n;
           i++) {
!       if (flags[i] == 0) continue;  // not allocated.
!       FakeFrame *ff = reinterpret_cast<FakeFrame *>(
!           GetFrame(stack_size_log(), class_id, i));
        uptr begin = reinterpret_cast<uptr>(ff);
        callback(begin, begin + FakeStack::BytesInSizeClass(class_id), arg);
      }
--- 198,212 ----
    needs_gc_ = false;
  }
  
! void FakeStack::ForEachFakeFrame(RangeIteratorCallback callback, void* arg) {
    for (uptr class_id = 0; class_id < kNumberOfSizeClasses; class_id++) {
!     u8* flags = GetFlags(stack_size_log(), class_id);
      for (uptr i = 0, n = NumberOfFrames(stack_size_log(), class_id); i < n;
           i++) {
!       if (flags[i] == 0)
!         continue;  // not allocated.
!       FakeFrame* ff =
!           reinterpret_cast<FakeFrame*>(GetFrame(stack_size_log(), class_id, i));
        uptr begin = reinterpret_cast<uptr>(ff);
        callback(begin, begin + FakeStack::BytesInSizeClass(class_id), arg);
      }
*************** void FakeStack::ForEachFakeFrame(RangeIt
*** 188,231 ****
  }
  
  #if (SANITIZER_LINUX && !SANITIZER_ANDROID) || SANITIZER_FUCHSIA
! static THREADLOCAL FakeStack *fake_stack_tls;
  
! FakeStack *GetTLSFakeStack() {
!   return fake_stack_tls;
! }
! void SetTLSFakeStack(FakeStack *fs) {
!   fake_stack_tls = fs;
! }
  #else
! FakeStack *GetTLSFakeStack() { return 0; }
! void SetTLSFakeStack(FakeStack *fs) { }
  #endif  // (SANITIZER_LINUX && !SANITIZER_ANDROID) || SANITIZER_FUCHSIA
  
! static FakeStack *GetFakeStack() {
!   AsanThread *t = GetCurrentThread();
!   if (!t) return nullptr;
    return t->get_or_create_fake_stack();
  }
  
! static FakeStack *GetFakeStackFast() {
!   if (FakeStack *fs = GetTLSFakeStack())
      return fs;
    if (!__asan_option_detect_stack_use_after_return)
      return nullptr;
!   return GetFakeStack();
  }
  
! static FakeStack *GetFakeStackFastAlways() {
!   if (FakeStack *fs = GetTLSFakeStack())
      return fs;
!   return GetFakeStack();
  }
  
  static ALWAYS_INLINE uptr OnMalloc(uptr class_id, uptr size) {
!   FakeStack *fs = GetFakeStackFast();
    if (!fs)
      return 0;
!   FakeFrame *ff =
        fs->Allocate(fs->stack_size_log(), class_id, GET_CURRENT_FRAME());
    if (!ff)
      return 0;  // Out of fake stack.
--- 214,264 ----
  }
  
  #if (SANITIZER_LINUX && !SANITIZER_ANDROID) || SANITIZER_FUCHSIA
! static THREADLOCAL FakeStack* fake_stack_tls;
  
! static FakeStack* GetTLSFakeStack() { return fake_stack_tls; }
! static void SetTLSFakeStack(FakeStack* fs) { fake_stack_tls = fs; }
! void ResetTLSFakeStack() { fake_stack_tls = nullptr; }
  #else
! static FakeStack* GetTLSFakeStack() { return nullptr; }
! static void SetTLSFakeStack(FakeStack*) {}
! void ResetTLSFakeStack() {}
  #endif  // (SANITIZER_LINUX && !SANITIZER_ANDROID) || SANITIZER_FUCHSIA
  
! static FakeStack* GetFakeStack() {
!   AsanThread* t = GetCurrentThread();
!   if (!t)
!     return nullptr;
    return t->get_or_create_fake_stack();
  }
  
! static FakeStack* GetFakeStackFast() {
!   FakeStack* fs = GetTLSFakeStack();
!   if (LIKELY(fs))
      return fs;
    if (!__asan_option_detect_stack_use_after_return)
      return nullptr;
!   fs = GetFakeStack();
!   if (LIKELY(fs))
!     SetTLSFakeStack(fs);
!   return fs;
  }
  
! static FakeStack* GetFakeStackFastAlways() {
!   FakeStack* fs = GetTLSFakeStack();
!   if (LIKELY(fs))
      return fs;
!   fs = GetFakeStack();
!   if (LIKELY(fs))
!     SetTLSFakeStack(fs);
!   return fs;
  }
  
  static ALWAYS_INLINE uptr OnMalloc(uptr class_id, uptr size) {
!   FakeStack* fs = GetFakeStackFast();
    if (!fs)
      return 0;
!   FakeFrame* ff =
        fs->Allocate(fs->stack_size_log(), class_id, GET_CURRENT_FRAME());
    if (!ff)
      return 0;  // Out of fake stack.
*************** static ALWAYS_INLINE uptr OnMalloc(uptr
*** 235,244 ****
  }
  
  static ALWAYS_INLINE uptr OnMallocAlways(uptr class_id, uptr size) {
!   FakeStack *fs = GetFakeStackFastAlways();
    if (!fs)
      return 0;
!   FakeFrame *ff =
        fs->Allocate(fs->stack_size_log(), class_id, GET_CURRENT_FRAME());
    if (!ff)
      return 0;  // Out of fake stack.
--- 268,277 ----
  }
  
  static ALWAYS_INLINE uptr OnMallocAlways(uptr class_id, uptr size) {
!   FakeStack* fs = GetFakeStackFastAlways();
    if (!fs)
      return 0;
!   FakeFrame* ff =
        fs->Allocate(fs->stack_size_log(), class_id, GET_CURRENT_FRAME());
    if (!ff)
      return 0;  // Out of fake stack.
*************** static ALWAYS_INLINE void OnFree(uptr pt
*** 252,268 ****
    SetShadow(ptr, size, class_id, kMagic8);
  }
  
! } // namespace __asan
  
  // ---------------------- Interface ---------------- {{{1
  using namespace __asan;
  #define DEFINE_STACK_MALLOC_FREE_WITH_CLASS_ID(class_id)                      \
    extern "C" SANITIZER_INTERFACE_ATTRIBUTE uptr                               \
!       __asan_stack_malloc_##class_id(uptr size) {                             \
      return OnMalloc(class_id, size);                                          \
    }                                                                           \
    extern "C" SANITIZER_INTERFACE_ATTRIBUTE uptr                               \
!       __asan_stack_malloc_always_##class_id(uptr size) {                      \
      return OnMallocAlways(class_id, size);                                    \
    }                                                                           \
    extern "C" SANITIZER_INTERFACE_ATTRIBUTE void __asan_stack_free_##class_id( \
--- 285,301 ----
    SetShadow(ptr, size, class_id, kMagic8);
  }
  
! }  // namespace __asan
  
  // ---------------------- Interface ---------------- {{{1
  using namespace __asan;
  #define DEFINE_STACK_MALLOC_FREE_WITH_CLASS_ID(class_id)                      \
    extern "C" SANITIZER_INTERFACE_ATTRIBUTE uptr                               \
!   __asan_stack_malloc_##class_id(uptr size) {                                 \
      return OnMalloc(class_id, size);                                          \
    }                                                                           \
    extern "C" SANITIZER_INTERFACE_ATTRIBUTE uptr                               \
!   __asan_stack_malloc_always_##class_id(uptr size) {                          \
      return OnMallocAlways(class_id, size);                                    \
    }                                                                           \
    extern "C" SANITIZER_INTERFACE_ATTRIBUTE void __asan_stack_free_##class_id( \
*************** extern "C" {
*** 287,307 ****
  // -asan-use-after-return=never, after modal UAR flag lands
  // (https://github.com/google/sanitizers/issues/1394)
  SANITIZER_INTERFACE_ATTRIBUTE
! void *__asan_get_current_fake_stack() { return GetFakeStackFast(); }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! void *__asan_addr_is_in_fake_stack(void *fake_stack, void *addr, void **beg,
!                                    void **end) {
!   FakeStack *fs = reinterpret_cast<FakeStack*>(fake_stack);
!   if (!fs) return nullptr;
    uptr frame_beg, frame_end;
!   FakeFrame *frame = reinterpret_cast<FakeFrame *>(fs->AddrIsInFakeStack(
        reinterpret_cast<uptr>(addr), &frame_beg, &frame_end));
!   if (!frame) return nullptr;
    if (frame->magic != kCurrentStackFrameMagic)
      return nullptr;
!   if (beg) *beg = reinterpret_cast<void*>(frame_beg);
!   if (end) *end = reinterpret_cast<void*>(frame_end);
    return reinterpret_cast<void*>(frame->real_stack);
  }
  
--- 320,344 ----
  // -asan-use-after-return=never, after modal UAR flag lands
  // (https://github.com/google/sanitizers/issues/1394)
  SANITIZER_INTERFACE_ATTRIBUTE
! void* __asan_get_current_fake_stack() { return GetFakeStackFast(); }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! void* __asan_addr_is_in_fake_stack(void* fake_stack, void* addr, void** beg,
!                                    void** end) {
!   FakeStack* fs = reinterpret_cast<FakeStack*>(fake_stack);
!   if (!fs)
!     return nullptr;
    uptr frame_beg, frame_end;
!   FakeFrame* frame = reinterpret_cast<FakeFrame*>(fs->AddrIsInFakeStack(
        reinterpret_cast<uptr>(addr), &frame_beg, &frame_end));
!   if (!frame)
!     return nullptr;
    if (frame->magic != kCurrentStackFrameMagic)
      return nullptr;
!   if (beg)
!     *beg = reinterpret_cast<void*>(frame_beg);
!   if (end)
!     *end = reinterpret_cast<void*>(frame_end);
    return reinterpret_cast<void*>(frame->real_stack);
  }
  
*************** void __asan_alloca_poison(uptr addr, upt
*** 320,328 ****
  
  SANITIZER_INTERFACE_ATTRIBUTE
  void __asan_allocas_unpoison(uptr top, uptr bottom) {
!   if ((!top) || (top > bottom)) return;
!   REAL(memset)
!   (reinterpret_cast<void *>(MemToShadow(top)), 0,
!    (bottom - top) / ASAN_SHADOW_GRANULARITY);
  }
! } // extern "C"
--- 357,365 ----
  
  SANITIZER_INTERFACE_ATTRIBUTE
  void __asan_allocas_unpoison(uptr top, uptr bottom) {
!   if ((!top) || (top > bottom))
!     return;
!   REAL(memset)(reinterpret_cast<void*>(MemToShadow(top)), 0,
!                (bottom - top) / ASAN_SHADOW_GRANULARITY);
  }
! }  // extern "C"
diff -Nrcpad gcc-16-20251130/libsanitizer/asan/asan_fake_stack.h gcc-16-20251207/libsanitizer/asan/asan_fake_stack.h
*** gcc-16-20251130/libsanitizer/asan/asan_fake_stack.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/asan/asan_fake_stack.h	Sun Dec  7 22:32:17 2025
*************** struct FakeFrame {
*** 32,43 ****
  // is not popped but remains there for quite some time until gets used again.
  // So, we poison the objects on the fake stack when function returns.
  // It helps us find use-after-return bugs.
- //
  // The FakeStack objects is allocated by a single mmap call and has no other
  // pointers. The size of the fake stack depends on the actual thread stack size
  // and thus can not be a constant.
  // stack_size is a power of two greater or equal to the thread's stack size;
  // we store it as its logarithm (stack_size_log).
  // FakeStack has kNumberOfSizeClasses (11) size classes, each size class
  // is a power of two, starting from 64 bytes. Each size class occupies
  // stack_size bytes and thus can allocate
--- 32,43 ----
  // is not popped but remains there for quite some time until gets used again.
  // So, we poison the objects on the fake stack when function returns.
  // It helps us find use-after-return bugs.
  // The FakeStack objects is allocated by a single mmap call and has no other
  // pointers. The size of the fake stack depends on the actual thread stack size
  // and thus can not be a constant.
  // stack_size is a power of two greater or equal to the thread's stack size;
  // we store it as its logarithm (stack_size_log).
+ // FakeStack is padded such that GetFrame() is aligned to BytesInSizeClass().
  // FakeStack has kNumberOfSizeClasses (11) size classes, each size class
  // is a power of two, starting from 64 bytes. Each size class occupies
  // stack_size bytes and thus can allocate
*************** struct FakeFrame {
*** 56,61 ****
--- 56,64 ----
  class FakeStack {
    static const uptr kMinStackFrameSizeLog = 6;  // Min frame is 64B.
    static const uptr kMaxStackFrameSizeLog = 16;  // Max stack frame is 64K.
+   static_assert(kMaxStackFrameSizeLog >= kMinStackFrameSizeLog);
+ 
+   static const u64 kMaxStackFrameSize = 1 << kMaxStackFrameSizeLog;
  
   public:
    static const uptr kNumberOfSizeClasses =
*************** class FakeStack {
*** 66,72 ****
  
    void Destroy(int tid);
  
!   // stack_size_log is at least 15 (stack_size >= 32K).
    static uptr SizeRequiredForFlags(uptr stack_size_log) {
      return ((uptr)1) << (stack_size_log + 1 - kMinStackFrameSizeLog);
    }
--- 69,75 ----
  
    void Destroy(int tid);
  
!   // min_uar_stack_size_log is 16 (stack_size >= 64KB)
    static uptr SizeRequiredForFlags(uptr stack_size_log) {
      return ((uptr)1) << (stack_size_log + 1 - kMinStackFrameSizeLog);
    }
*************** class FakeStack {
*** 110,115 ****
--- 113,140 ----
    }
  
    // Get frame by class_id and pos.
+   // Return values are guaranteed to be aligned to BytesInSizeClass(class_id),
+   // which is useful in combination with
+   // ASanStackFrameLayout::ComputeASanStackFrameLayout().
+   //
+   // Note that alignment to 1<<kMaxStackFrameSizeLog (aka
+   // BytesInSizeClass(max_class_id)) implies alignment to BytesInSizeClass()
+   // for any class_id, since the class sizes are increasing powers of 2.
+   //
+   // 1) (this + kFlagsOffset + SizeRequiredForFlags())) is aligned to
+   //    1<<kMaxStackFrameSizeLog (see FakeStack::Create)
+   //
+   //    Note that SizeRequiredForFlags(16) == 2048. If FakeStack::Create() had
+   //    merely returned an address from mmap (4K-aligned), the addition would
+   //    not be 4K-aligned.
+   // 2) We know that stack_size_log >= kMaxStackFrameSizeLog (otherwise you
+   //    couldn't store a single frame of that size in the entire stack)
+   //    hence (1<<stack_size_log) is aligned to 1<<kMaxStackFrameSizeLog
+   //    and   ((1<<stack_size_log) * class_id) is aligned to
+   //          1<<kMaxStackFrameSizeLog
+   // 3) BytesInSizeClass(class_id) * pos is aligned to
+   //    BytesInSizeClass(class_id)
+   // The sum of these is aligned to BytesInSizeClass(class_id).
    u8 *GetFrame(uptr stack_size_log, uptr class_id, uptr pos) {
      return reinterpret_cast<u8 *>(this) + kFlagsOffset +
             SizeRequiredForFlags(stack_size_log) +
*************** class FakeStack {
*** 156,174 ****
  
   private:
    FakeStack() { }
!   static const uptr kFlagsOffset = 4096;  // This is were the flags begin.
    // Must match the number of uses of DEFINE_STACK_MALLOC_FREE_WITH_CLASS_ID
    COMPILER_CHECK(kNumberOfSizeClasses == 11);
    static const uptr kMaxStackMallocSize = ((uptr)1) << kMaxStackFrameSizeLog;
  
    uptr hint_position_[kNumberOfSizeClasses];
    uptr stack_size_log_;
-   // a bit is set if something was allocated from the corresponding size class.
    bool needs_gc_;
  };
  
! FakeStack *GetTLSFakeStack();
! void SetTLSFakeStack(FakeStack *fs);
  
  }  // namespace __asan
  
--- 181,201 ----
  
   private:
    FakeStack() { }
!   static const uptr kFlagsOffset = 4096;  // This is where the flags begin.
    // Must match the number of uses of DEFINE_STACK_MALLOC_FREE_WITH_CLASS_ID
    COMPILER_CHECK(kNumberOfSizeClasses == 11);
    static const uptr kMaxStackMallocSize = ((uptr)1) << kMaxStackFrameSizeLog;
  
    uptr hint_position_[kNumberOfSizeClasses];
    uptr stack_size_log_;
    bool needs_gc_;
+   // We allocated more memory than needed to ensure the FakeStack (and, by
+   // extension, each of the fake stack frames) is aligned. We keep track of the
+   // true start so that we can unmap it.
+   void *true_start;
  };
  
! void ResetTLSFakeStack();
  
  }  // namespace __asan
  
diff -Nrcpad gcc-16-20251130/libsanitizer/asan/asan_flags.cpp gcc-16-20251207/libsanitizer/asan/asan_flags.cpp
*** gcc-16-20251130/libsanitizer/asan/asan_flags.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/asan/asan_flags.cpp	Sun Dec  7 22:32:17 2025
*************** static void InitializeDefaultFlags() {
*** 144,149 ****
--- 144,150 ----
    DisplayHelpMessages(&asan_parser);
  }
  
+ // Validate flags and report incompatible configurations
  static void ProcessFlags() {
    Flags *f = flags();
  
*************** void InitializeFlags() {
*** 217,227 ****
    ProcessFlags();
  
  #if SANITIZER_WINDOWS
!   // On Windows, weak symbols are emulated by having the user program
!   // register which weak functions are defined.
!   // The ASAN DLL will initialize flags prior to user module initialization,
!   // so __asan_default_options will not point to the user definition yet.
!   // We still want to ensure we capture when options are passed via
    // __asan_default_options, so we add a callback to be run
    // when it is registered with the runtime.
  
--- 218,229 ----
    ProcessFlags();
  
  #if SANITIZER_WINDOWS
!   // On Windows, weak symbols (such as the `__asan_default_options` function)
!   // are emulated by having the user program register which weak functions are
!   // defined. The ASAN DLL will initialize flags prior to user module
!   // initialization, so __asan_default_options will not point to the user
!   // definition yet. We still want to ensure we capture when options are passed
!   // via
    // __asan_default_options, so we add a callback to be run
    // when it is registered with the runtime.
  
*************** void InitializeFlags() {
*** 232,245 ****
    // __sanitizer_register_weak_function.
    AddRegisterWeakFunctionCallback(
        reinterpret_cast<uptr>(__asan_default_options), []() {
!         FlagParser asan_parser;
! 
!         RegisterAsanFlags(&asan_parser, flags());
!         RegisterCommonFlags(&asan_parser);
!         asan_parser.ParseString(__asan_default_options());
! 
!         DisplayHelpMessages(&asan_parser);
          ProcessFlags();
        });
  
  #  if CAN_SANITIZE_UB
--- 234,246 ----
    // __sanitizer_register_weak_function.
    AddRegisterWeakFunctionCallback(
        reinterpret_cast<uptr>(__asan_default_options), []() {
!         // We call `InitializeDefaultFlags` again, instead of just parsing
!         // `__asan_default_options` directly, to ensure that flags set through
!         // `ASAN_OPTS` take precedence over those set through
!         // `__asan_default_options`.
!         InitializeDefaultFlags();
          ProcessFlags();
+         ApplyFlags();
        });
  
  #  if CAN_SANITIZE_UB
diff -Nrcpad gcc-16-20251130/libsanitizer/asan/asan_flags.h gcc-16-20251207/libsanitizer/asan/asan_flags.h
*** gcc-16-20251130/libsanitizer/asan/asan_flags.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/asan/asan_flags.h	Sun Dec  7 22:32:17 2025
***************
*** 19,30 ****
  
  // ASan flag values can be defined in four ways:
  // 1) initialized with default values at startup.
! // 2) overriden during compilation of ASan runtime by providing
  //    compile definition ASAN_DEFAULT_OPTIONS.
! // 3) overriden from string returned by user-specified function
  //    __asan_default_options().
! // 4) overriden from env variable ASAN_OPTIONS.
! // 5) overriden during ASan activation (for now used on Android only).
  
  namespace __asan {
  
--- 19,30 ----
  
  // ASan flag values can be defined in four ways:
  // 1) initialized with default values at startup.
! // 2) overridden during compilation of ASan runtime by providing
  //    compile definition ASAN_DEFAULT_OPTIONS.
! // 3) overridden from string returned by user-specified function
  //    __asan_default_options().
! // 4) overridden from env variable ASAN_OPTIONS.
! // 5) overridden during ASan activation (for now used on Android only).
  
  namespace __asan {
  
diff -Nrcpad gcc-16-20251130/libsanitizer/asan/asan_flags.inc gcc-16-20251207/libsanitizer/asan/asan_flags.inc
*** gcc-16-20251130/libsanitizer/asan/asan_flags.inc	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/asan/asan_flags.inc	Sun Dec  7 22:32:17 2025
*************** ASAN_FLAG(bool, poison_partial, true,
*** 116,121 ****
--- 116,124 ----
            "stack buffers.")
  ASAN_FLAG(bool, poison_array_cookie, true,
            "Poison (or not) the array cookie after operator new[].")
+ ASAN_FLAG(int, poison_history_size, 0,
+           "[EXPERIMENTAL] Number of most recent memory poisoning calls for "
+           "which the stack traces will be recorded.")
  
  // Turn off alloc/dealloc mismatch checker on Mac and Windows for now.
  // https://github.com/google/sanitizers/issues/131
diff -Nrcpad gcc-16-20251130/libsanitizer/asan/asan_fuchsia.cpp gcc-16-20251207/libsanitizer/asan/asan_fuchsia.cpp
*** gcc-16-20251130/libsanitizer/asan/asan_fuchsia.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/asan/asan_fuchsia.cpp	Sun Dec  7 22:32:17 2025
***************
*** 25,37 ****
  #  include "asan_thread.h"
  #  include "lsan/lsan_common.h"
  
  namespace __asan {
  
- // The system already set up the shadow memory for us.
- // __sanitizer::GetMaxUserVirtualAddress has already been called by
- // AsanInitInternal->InitializeHighMemEnd (asan_rtl.cpp).
- // Just do some additional sanity checks here.
  void InitializeShadowMemory() {
    if (Verbosity())
      PrintAddressSpaceLayout();
  
--- 25,42 ----
  #  include "asan_thread.h"
  #  include "lsan/lsan_common.h"
  
+ namespace __sanitizer {
+ // ASan doesn't need to do anything else special in the startup hook.
+ void EarlySanitizerInit() {}
+ }  // namespace __sanitizer
+ 
  namespace __asan {
  
  void InitializeShadowMemory() {
+   // Explicitly setup shadow here right beforer any of the ShadowBounds members
+   // are used.
+   InitShadowBounds();
+ 
    if (Verbosity())
      PrintAddressSpaceLayout();
  
diff -Nrcpad gcc-16-20251130/libsanitizer/asan/asan_interceptors.cpp gcc-16-20251207/libsanitizer/asan/asan_interceptors.cpp
*** gcc-16-20251130/libsanitizer/asan/asan_interceptors.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/asan/asan_interceptors.cpp	Sun Dec  7 22:32:17 2025
*************** namespace __asan {
*** 58,70 ****
  
  static inline uptr MaybeRealStrnlen(const char *s, uptr maxlen) {
  #if SANITIZER_INTERCEPT_STRNLEN
!   if (REAL(strnlen)) {
      return REAL(strnlen)(s, maxlen);
!   }
! #endif
    return internal_strnlen(s, maxlen);
  }
  
  void SetThreadName(const char *name) {
    AsanThread *t = GetCurrentThread();
    if (t)
--- 58,77 ----
  
  static inline uptr MaybeRealStrnlen(const char *s, uptr maxlen) {
  #if SANITIZER_INTERCEPT_STRNLEN
!   if (static_cast<bool>(REAL(strnlen)))
      return REAL(strnlen)(s, maxlen);
! #  endif
    return internal_strnlen(s, maxlen);
  }
  
+ static inline uptr MaybeRealWcsnlen(const wchar_t* s, uptr maxlen) {
+ #  if SANITIZER_INTERCEPT_WCSNLEN
+   if (static_cast<bool>(REAL(wcsnlen)))
+     return REAL(wcsnlen)(s, maxlen);
+ #  endif
+   return internal_wcsnlen(s, maxlen);
+ }
+ 
  void SetThreadName(const char *name) {
    AsanThread *t = GetCurrentThread();
    if (t)
*************** INTERCEPTOR(void, makecontext, struct uc
*** 365,371 ****
    va_list ap;
    uptr args[64];
    // We don't know a better way to forward ... into REAL function. We can
!   // increase args size if neccecary.
    CHECK_LE(argc, ARRAY_SIZE(args));
    internal_memset(args, 0, sizeof(args));
    va_start(ap, argc);
--- 372,378 ----
    va_list ap;
    uptr args[64];
    // We don't know a better way to forward ... into REAL function. We can
!   // increase args size if necessary.
    CHECK_LE(argc, ARRAY_SIZE(args));
    internal_memset(args, 0, sizeof(args));
    va_start(ap, argc);
*************** INTERCEPTOR(char *, strcpy, char *to, co
*** 570,575 ****
--- 577,596 ----
    return REAL(strcpy)(to, from);
  }
  
+ INTERCEPTOR(wchar_t*, wcscpy, wchar_t* to, const wchar_t* from) {
+   void* ctx;
+   ASAN_INTERCEPTOR_ENTER(ctx, wcscpy);
+   if (!TryAsanInitFromRtl())
+     return REAL(wcscpy)(to, from);
+   if (flags()->replace_str) {
+     uptr size = (internal_wcslen(from) + 1) * sizeof(wchar_t);
+     CHECK_RANGES_OVERLAP("wcscpy", to, size, from, size);
+     ASAN_READ_RANGE(ctx, from, size);
+     ASAN_WRITE_RANGE(ctx, to, size);
+   }
+   return REAL(wcscpy)(to, from);
+ }
+ 
  // Windows doesn't always define the strdup identifier,
  // and when it does it's a macro defined to either _strdup
  // or _strdup_dbg, _strdup_dbg ends up calling _strdup, so
*************** INTERCEPTOR(char *, strcpy, char *to, co
*** 584,589 ****
--- 605,613 ----
  INTERCEPTOR(char*, strdup, const char *s) {
    void *ctx;
    ASAN_INTERCEPTOR_ENTER(ctx, strdup);
+   // Allowing null input is Windows-specific
+   if (SANITIZER_WINDOWS && UNLIKELY(!s))
+     return nullptr;
    if (UNLIKELY(!TryAsanInitFromRtl()))
      return internal_strdup(s);
    uptr length = internal_strlen(s);
*************** INTERCEPTOR(char*, strncpy, char *to, co
*** 630,635 ****
--- 654,673 ----
    return REAL(strncpy)(to, from, size);
  }
  
+ INTERCEPTOR(wchar_t*, wcsncpy, wchar_t* to, const wchar_t* from, uptr size) {
+   void* ctx;
+   ASAN_INTERCEPTOR_ENTER(ctx, wcsncpy);
+   AsanInitFromRtl();
+   if (flags()->replace_str) {
+     uptr from_size =
+         Min(size, MaybeRealWcsnlen(from, size) + 1) * sizeof(wchar_t);
+     CHECK_RANGES_OVERLAP("wcsncpy", to, from_size, from, from_size);
+     ASAN_READ_RANGE(ctx, from, from_size);
+     ASAN_WRITE_RANGE(ctx, to, size * sizeof(wchar_t));
+   }
+   return REAL(wcsncpy)(to, from, size);
+ }
+ 
  template <typename Fn>
  static ALWAYS_INLINE auto StrtolImpl(void *ctx, Fn real, const char *nptr,
                                       char **endptr, int base)
*************** void InitializeAsanInterceptors() {
*** 806,811 ****
--- 844,854 ----
    ASAN_INTERCEPT_FUNC(strncat);
    ASAN_INTERCEPT_FUNC(strncpy);
    ASAN_INTERCEPT_FUNC(strdup);
+ 
+   // Intercept wcs* functions.
+   ASAN_INTERCEPT_FUNC(wcscpy);
+   ASAN_INTERCEPT_FUNC(wcsncpy);
+ 
  #  if ASAN_INTERCEPT___STRDUP
    ASAN_INTERCEPT_FUNC(__strdup);
  #endif
*************** void InitializeAsanInterceptors() {
*** 823,829 ****
    ASAN_INTERCEPT_FUNC(__isoc23_strtoll);
  #  endif
  
!   // Intecept jump-related functions.
    ASAN_INTERCEPT_FUNC(longjmp);
  
  #  if ASAN_INTERCEPT_SWAPCONTEXT
--- 866,872 ----
    ASAN_INTERCEPT_FUNC(__isoc23_strtoll);
  #  endif
  
!   // Intercept jump-related functions.
    ASAN_INTERCEPT_FUNC(longjmp);
  
  #  if ASAN_INTERCEPT_SWAPCONTEXT
diff -Nrcpad gcc-16-20251130/libsanitizer/asan/asan_interceptors.h gcc-16-20251207/libsanitizer/asan/asan_interceptors.h
*** gcc-16-20251130/libsanitizer/asan/asan_interceptors.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/asan/asan_interceptors.h	Sun Dec  7 22:32:17 2025
*************** DECLARE_REAL(char*, strchr, const char *
*** 134,139 ****
--- 134,140 ----
  DECLARE_REAL(SIZE_T, strlen, const char *s)
  DECLARE_REAL(char*, strncpy, char *to, const char *from, SIZE_T size)
  DECLARE_REAL(SIZE_T, strnlen, const char *s, SIZE_T maxlen)
+ DECLARE_REAL(SIZE_T, wcsnlen, const wchar_t* s, SIZE_T maxlen)
  DECLARE_REAL(char*, strstr, const char *s1, const char *s2)
  
  #  if !SANITIZER_APPLE
diff -Nrcpad gcc-16-20251130/libsanitizer/asan/asan_interceptors_memintrinsics.cpp gcc-16-20251207/libsanitizer/asan/asan_interceptors_memintrinsics.cpp
*** gcc-16-20251130/libsanitizer/asan/asan_interceptors_memintrinsics.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/asan/asan_interceptors_memintrinsics.cpp	Sun Dec  7 22:32:17 2025
*************** using namespace __asan;
*** 55,62 ****
      if (LIKELY(replace_intrin_cached)) {       \
        ASAN_READ_RANGE(ctx, from, size);        \
        ASAN_WRITE_RANGE(ctx, to, size);         \
      }                                          \
!     return internal_memmove(to, from, size);   \
    } while (0)
  
  void *__asan_memcpy(void *to, const void *from, uptr size) {
--- 55,64 ----
      if (LIKELY(replace_intrin_cached)) {       \
        ASAN_READ_RANGE(ctx, from, size);        \
        ASAN_WRITE_RANGE(ctx, to, size);         \
+     } else if (UNLIKELY(!AsanInited())) {      \
+       return internal_memmove(to, from, size); \
      }                                          \
!     return REAL(memmove)(to, from, size);      \
    } while (0)
  
  void *__asan_memcpy(void *to, const void *from, uptr size) {
diff -Nrcpad gcc-16-20251130/libsanitizer/asan/asan_interceptors_memintrinsics.h gcc-16-20251207/libsanitizer/asan/asan_interceptors_memintrinsics.h
*** gcc-16-20251130/libsanitizer/asan/asan_interceptors_memintrinsics.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/asan/asan_interceptors_memintrinsics.h	Sun Dec  7 22:32:17 2025
***************
*** 20,25 ****
--- 20,26 ----
  
  DECLARE_REAL(void *, memcpy, void *to, const void *from, SIZE_T size)
  DECLARE_REAL(void *, memset, void *block, int c, SIZE_T size)
+ DECLARE_REAL(void *, memmove, void *to, const void *from, SIZE_T size)
  
  namespace __asan {
  
diff -Nrcpad gcc-16-20251130/libsanitizer/asan/asan_internal.h gcc-16-20251207/libsanitizer/asan/asan_internal.h
*** gcc-16-20251130/libsanitizer/asan/asan_internal.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/asan/asan_internal.h	Sun Dec  7 22:32:17 2025
*************** using __sanitizer::StackTrace;
*** 61,66 ****
--- 61,67 ----
  
  void AsanInitFromRtl();
  bool TryAsanInitFromRtl();
+ void ApplyFlags();
  
  // asan_win.cpp
  void InitializePlatformExceptionHandlers();
*************** void ReplaceSystemMalloc();
*** 82,87 ****
--- 83,89 ----
  uptr FindDynamicShadowStart();
  void AsanCheckDynamicRTPrereqs();
  void AsanCheckIncompatibleRT();
+ void TryReExecWithoutASLR();
  
  // Unpoisons platform-specific stacks.
  // Returns true if all stacks have been unpoisoned.
diff -Nrcpad gcc-16-20251130/libsanitizer/asan/asan_linux.cpp gcc-16-20251207/libsanitizer/asan/asan_linux.cpp
*** gcc-16-20251130/libsanitizer/asan/asan_linux.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/asan/asan_linux.cpp	Sun Dec  7 22:32:17 2025
***************
*** 13,19 ****
  
  #include "sanitizer_common/sanitizer_platform.h"
  #if SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_NETBSD || \
!     SANITIZER_SOLARIS
  
  #  include <dlfcn.h>
  #  include <fcntl.h>
--- 13,23 ----
  
  #include "sanitizer_common/sanitizer_platform.h"
  #if SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_NETBSD || \
!     SANITIZER_SOLARIS || SANITIZER_HAIKU
! 
! #  if SANITIZER_HAIKU
! #    define _DEFAULT_SOURCE
! #  endif
  
  #  include <dlfcn.h>
  #  include <fcntl.h>
***************
*** 22,28 ****
  #  include <stdio.h>
  #  include <sys/mman.h>
  #  include <sys/resource.h>
! #  include <sys/syscall.h>
  #  include <sys/time.h>
  #  include <sys/types.h>
  #  include <unistd.h>
--- 26,34 ----
  #  include <stdio.h>
  #  include <sys/mman.h>
  #  include <sys/resource.h>
! #  if !SANITIZER_HAIKU
! #    include <sys/syscall.h>
! #  endif
  #  include <sys/time.h>
  #  include <sys/types.h>
  #  include <unistd.h>
***************
*** 37,46 ****
  #  include "sanitizer_common/sanitizer_libc.h"
  #  include "sanitizer_common/sanitizer_procmaps.h"
  
! #  if SANITIZER_FREEBSD
  #    include <sys/link_elf.h>
  #  endif
  
  #  if SANITIZER_SOLARIS
  #    include <link.h>
  #  endif
--- 43,56 ----
  #  include "sanitizer_common/sanitizer_libc.h"
  #  include "sanitizer_common/sanitizer_procmaps.h"
  
! #  if SANITIZER_FREEBSD || SANITIZER_HAIKU
  #    include <sys/link_elf.h>
  #  endif
  
+ #  if SANITIZER_LINUX
+ #    include <sys/personality.h>
+ #  endif
+ 
  #  if SANITIZER_SOLARIS
  #    include <link.h>
  #  endif
***************
*** 50,55 ****
--- 60,67 ----
  #  elif SANITIZER_NETBSD
  #    include <link_elf.h>
  #    include <ucontext.h>
+ #  elif SANITIZER_HAIKU
+ extern "C" void *_DYNAMIC;
  #  else
  #    include <link.h>
  #    include <sys/ucontext.h>
*************** void FlushUnneededASanShadowMemory(uptr
*** 107,112 ****
--- 119,157 ----
    ReleaseMemoryPagesToOS(MemToShadow(p), MemToShadow(p + size));
  }
  
+ void TryReExecWithoutASLR() {
+ #    if SANITIZER_LINUX
+   // ASLR personality check.
+   // Caution: 'personality' is sometimes forbidden by sandboxes, so only call
+   // this function as a last resort (when the memory mapping is incompatible
+   // and ASan would fail anyway).
+   int old_personality = personality(0xffffffff);
+   if (old_personality == -1) {
+     VReport(1, "WARNING: unable to run personality check.\n");
+     return;
+   }
+ 
+   bool aslr_on = (old_personality & ADDR_NO_RANDOMIZE) == 0;
+ 
+   if (aslr_on) {
+     // Disable ASLR if the memory layout was incompatible.
+     // Alternatively, we could just keep re-execing until we get lucky
+     // with a compatible randomized layout, but the risk is that if it's
+     // not an ASLR-related issue, we will be stuck in an infinite loop of
+     // re-execing (unless we change ReExec to pass a parameter of the
+     // number of retries allowed.)
+     VReport(1,
+             "WARNING: AddressSanitizer: memory layout is incompatible, "
+             "possibly due to high-entropy ASLR.\n"
+             "Re-execing with fixed virtual address space.\n"
+             "N.B. reducing ASLR entropy is preferable.\n");
+     CHECK_NE(personality(old_personality | ADDR_NO_RANDOMIZE), -1);
+ 
+     ReExec();
+   }
+ #    endif
+ }
+ 
  #  if SANITIZER_ANDROID
  // FIXME: should we do anything for Android?
  void AsanCheckDynamicRTPrereqs() {}
*************** static int FindFirstDSOCallback(struct d
*** 125,130 ****
--- 170,181 ----
      return 0;
    }
  
+ #    if SANITIZER_HAIKU
+   if (!info->dlpi_name[0] ||
+       internal_strncmp(info->dlpi_name, "/boot/system/runtime_loader",
+                        sizeof("/boot/system/runtime_loader") - 1) == 0)
+     return 0;
+ #    endif
  #    if SANITIZER_LINUX
    // Ignore vDSO. glibc versions earlier than 2.15 (and some patched
    // by distributors) return an empty name for the vDSO entry, so
*************** bool HandleDlopenInit() {
*** 237,240 ****
  }  // namespace __asan
  
  #endif  // SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_NETBSD ||
!         // SANITIZER_SOLARIS
--- 288,291 ----
  }  // namespace __asan
  
  #endif  // SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_NETBSD ||
!         // SANITIZER_SOLARIS || SANITIZER_HAIKU
diff -Nrcpad gcc-16-20251130/libsanitizer/asan/asan_mac.cpp gcc-16-20251207/libsanitizer/asan/asan_mac.cpp
*** gcc-16-20251130/libsanitizer/asan/asan_mac.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/asan/asan_mac.cpp	Sun Dec  7 22:32:17 2025
*************** uptr FindDynamicShadowStart() {
*** 55,60 ****
--- 55,63 ----
                            GetMmapGranularity());
  }
  
+ // Not used.
+ void TryReExecWithoutASLR() {}
+ 
  // No-op. Mac does not support static linkage anyway.
  void AsanCheckDynamicRTPrereqs() {}
  
*************** void FlushUnneededASanShadowMemory(uptr
*** 100,105 ****
--- 103,110 ----
  //   dispatch_after()
  //   dispatch_group_async_f()
  //   dispatch_group_async()
+ //   dispatch_apply()
+ //   dispatch_apply_f()
  // TODO(glider): libdispatch API contains other functions that we don't support
  // yet.
  //
*************** typedef void* dispatch_queue_t;
*** 125,130 ****
--- 130,136 ----
  typedef void* dispatch_source_t;
  typedef u64 dispatch_time_t;
  typedef void (*dispatch_function_t)(void *block);
+ typedef void (*dispatch_apply_function_t)(void *, size_t);
  typedef void* (*worker_t)(void *block);
  typedef unsigned long dispatch_mach_reason;
  typedef void *dispatch_mach_msg_t;
*************** typedef void (^dispatch_mach_handler_t)(
*** 144,150 ****
  // A wrapper for the ObjC blocks used to support libdispatch.
  typedef struct {
    void *block;
!   dispatch_function_t func;
    u32 parent_tid;
  } asan_block_context_t;
  
--- 150,160 ----
  // A wrapper for the ObjC blocks used to support libdispatch.
  typedef struct {
    void *block;
!   union {
!     dispatch_function_t dispatch_func;
!     dispatch_apply_function_t dispatch_apply_func;
!     static_assert(sizeof(dispatch_func) == sizeof(dispatch_apply_func));
!   };
    u32 parent_tid;
  } asan_block_context_t;
  
*************** void asan_dispatch_call_block_and_releas
*** 172,179 ****
            block, (void*)pthread_self());
    asan_register_worker_thread(context->parent_tid, &stack);
    // Call the original dispatcher for the block.
!   context->func(context->block);
!   asan_free(context, &stack, FROM_MALLOC);
  }
  
  }  // namespace __asan
--- 182,189 ----
            block, (void*)pthread_self());
    asan_register_worker_thread(context->parent_tid, &stack);
    // Call the original dispatcher for the block.
!   context->dispatch_func(context->block);
!   asan_free(context, &stack);
  }
  
  }  // namespace __asan
*************** asan_block_context_t *alloc_asan_context
*** 188,194 ****
    asan_block_context_t *asan_ctxt =
        (asan_block_context_t*) asan_malloc(sizeof(asan_block_context_t), stack);
    asan_ctxt->block = ctxt;
!   asan_ctxt->func = func;
    asan_ctxt->parent_tid = GetCurrentTidOrInvalid();
    return asan_ctxt;
  }
--- 198,204 ----
    asan_block_context_t *asan_ctxt =
        (asan_block_context_t*) asan_malloc(sizeof(asan_block_context_t), stack);
    asan_ctxt->block = ctxt;
!   asan_ctxt->dispatch_func = func;
    asan_ctxt->parent_tid = GetCurrentTidOrInvalid();
    return asan_ctxt;
  }
*************** INTERCEPTOR(void, dispatch_group_async_f
*** 240,252 ****
                                 asan_dispatch_call_block_and_release);
  }
  
! #if !defined(MISSING_BLOCKS_SUPPORT)
  extern "C" {
  void dispatch_async(dispatch_queue_t dq, void(^work)(void));
  void dispatch_group_async(dispatch_group_t dg, dispatch_queue_t dq,
                            void(^work)(void));
  void dispatch_after(dispatch_time_t when, dispatch_queue_t queue,
                      void(^work)(void));
  void dispatch_source_set_cancel_handler(dispatch_source_t ds,
                                          void(^work)(void));
  void dispatch_source_set_event_handler(dispatch_source_t ds, void(^work)(void));
--- 250,283 ----
                                 asan_dispatch_call_block_and_release);
  }
  
! extern "C" void asan_dispatch_apply_f_work(void *context, size_t iteration) {
!   GET_STACK_TRACE_THREAD;
!   asan_block_context_t *asan_ctxt = (asan_block_context_t *)context;
!   asan_register_worker_thread(asan_ctxt->parent_tid, &stack);
!   asan_ctxt->dispatch_apply_func(asan_ctxt->block, iteration);
! }
! 
! INTERCEPTOR(void, dispatch_apply_f, size_t iterations, dispatch_queue_t queue,
!             void *ctxt, dispatch_apply_function_t work) {
!   GET_STACK_TRACE_THREAD;
!   asan_block_context_t *asan_ctxt =
!       (asan_block_context_t *)asan_malloc(sizeof(asan_block_context_t), &stack);
!   asan_ctxt->block = ctxt;
!   asan_ctxt->dispatch_apply_func = work;
!   asan_ctxt->parent_tid = GetCurrentTidOrInvalid();
!   REAL(dispatch_apply_f)(iterations, queue, (void *)asan_ctxt,
!                          asan_dispatch_apply_f_work);
! }
! 
! #  if !defined(MISSING_BLOCKS_SUPPORT)
  extern "C" {
  void dispatch_async(dispatch_queue_t dq, void(^work)(void));
  void dispatch_group_async(dispatch_group_t dg, dispatch_queue_t dq,
                            void(^work)(void));
  void dispatch_after(dispatch_time_t when, dispatch_queue_t queue,
                      void(^work)(void));
+ void dispatch_apply(size_t iterations, dispatch_queue_t queue,
+                     void (^block)(size_t iteration));
  void dispatch_source_set_cancel_handler(dispatch_source_t ds,
                                          void(^work)(void));
  void dispatch_source_set_event_handler(dispatch_source_t ds, void(^work)(void));
*************** INTERCEPTOR(void *, dispatch_mach_create
*** 329,334 ****
        });
  }
  
! #endif
  
  #endif  // SANITIZER_APPLE
--- 360,379 ----
        });
  }
  
! INTERCEPTOR(void, dispatch_apply, size_t iterations, dispatch_queue_t queue,
!             void (^block)(size_t iteration)) {
!   ENABLE_FRAME_POINTER;
!   int parent_tid = GetCurrentTidOrInvalid();
! 
!   void (^asan_block)(size_t) = ^(size_t iteration) {
!     GET_STACK_TRACE_THREAD;
!     asan_register_worker_thread(parent_tid, &stack);
!     block(iteration);
!   };
! 
!   REAL(dispatch_apply)(iterations, queue, asan_block);
! }
! 
! #  endif
  
  #endif  // SANITIZER_APPLE
diff -Nrcpad gcc-16-20251130/libsanitizer/asan/asan_malloc_linux.cpp gcc-16-20251207/libsanitizer/asan/asan_malloc_linux.cpp
*** gcc-16-20251130/libsanitizer/asan/asan_malloc_linux.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/asan/asan_malloc_linux.cpp	Sun Dec  7 22:32:17 2025
***************
*** 15,21 ****
  
  #include "sanitizer_common/sanitizer_platform.h"
  #if SANITIZER_FREEBSD || SANITIZER_FUCHSIA || SANITIZER_LINUX || \
!     SANITIZER_NETBSD || SANITIZER_SOLARIS
  
  #  include "asan_allocator.h"
  #  include "asan_interceptors.h"
--- 15,21 ----
  
  #include "sanitizer_common/sanitizer_platform.h"
  #if SANITIZER_FREEBSD || SANITIZER_FUCHSIA || SANITIZER_LINUX || \
!     SANITIZER_NETBSD || SANITIZER_SOLARIS || SANITIZER_HAIKU
  
  #  include "asan_allocator.h"
  #  include "asan_interceptors.h"
*************** INTERCEPTOR(void, free, void *ptr) {
*** 49,55 ****
    if (DlsymAlloc::PointerIsMine(ptr))
      return DlsymAlloc::Free(ptr);
    GET_STACK_TRACE_FREE;
!   asan_free(ptr, &stack, FROM_MALLOC);
  }
  
  #if SANITIZER_INTERCEPT_CFREE
--- 49,55 ----
    if (DlsymAlloc::PointerIsMine(ptr))
      return DlsymAlloc::Free(ptr);
    GET_STACK_TRACE_FREE;
!   asan_free(ptr, &stack);
  }
  
  #if SANITIZER_INTERCEPT_CFREE
*************** INTERCEPTOR(void, cfree, void *ptr) {
*** 57,63 ****
    if (DlsymAlloc::PointerIsMine(ptr))
      return DlsymAlloc::Free(ptr);
    GET_STACK_TRACE_FREE;
!   asan_free(ptr, &stack, FROM_MALLOC);
  }
  #endif // SANITIZER_INTERCEPT_CFREE
  
--- 57,63 ----
    if (DlsymAlloc::PointerIsMine(ptr))
      return DlsymAlloc::Free(ptr);
    GET_STACK_TRACE_FREE;
!   asan_free(ptr, &stack);
  }
  #endif // SANITIZER_INTERCEPT_CFREE
  
*************** INTERCEPTOR(void*, reallocarray, void *p
*** 93,104 ****
  #if SANITIZER_INTERCEPT_MEMALIGN
  INTERCEPTOR(void*, memalign, uptr boundary, uptr size) {
    GET_STACK_TRACE_MALLOC;
!   return asan_memalign(boundary, size, &stack, FROM_MALLOC);
  }
  
  INTERCEPTOR(void*, __libc_memalign, uptr boundary, uptr size) {
    GET_STACK_TRACE_MALLOC;
!   return asan_memalign(boundary, size, &stack, FROM_MALLOC);
  }
  #endif // SANITIZER_INTERCEPT_MEMALIGN
  
--- 93,104 ----
  #if SANITIZER_INTERCEPT_MEMALIGN
  INTERCEPTOR(void*, memalign, uptr boundary, uptr size) {
    GET_STACK_TRACE_MALLOC;
!   return asan_memalign(boundary, size, &stack);
  }
  
  INTERCEPTOR(void*, __libc_memalign, uptr boundary, uptr size) {
    GET_STACK_TRACE_MALLOC;
!   return asan_memalign(boundary, size, &stack);
  }
  #endif // SANITIZER_INTERCEPT_MEMALIGN
  
*************** void ReplaceSystemMalloc() {
*** 217,220 ****
  #endif  // SANITIZER_ANDROID
  
  #endif  // SANITIZER_FREEBSD || SANITIZER_FUCHSIA || SANITIZER_LINUX ||
!         // SANITIZER_NETBSD || SANITIZER_SOLARIS
--- 217,220 ----
  #endif  // SANITIZER_ANDROID
  
  #endif  // SANITIZER_FREEBSD || SANITIZER_FUCHSIA || SANITIZER_LINUX ||
!         // SANITIZER_NETBSD || SANITIZER_SOLARIS || SANITIZER_HAIKU
diff -Nrcpad gcc-16-20251130/libsanitizer/asan/asan_malloc_mac.cpp gcc-16-20251207/libsanitizer/asan/asan_malloc_mac.cpp
*** gcc-16-20251130/libsanitizer/asan/asan_malloc_mac.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/asan/asan_malloc_mac.cpp	Sun Dec  7 22:32:17 2025
*************** using namespace __asan;
*** 31,37 ****
  #  define COMMON_MALLOC_FORCE_UNLOCK() asan_mz_force_unlock()
  #  define COMMON_MALLOC_MEMALIGN(alignment, size) \
      GET_STACK_TRACE_MALLOC;                       \
!     void *p = asan_memalign(alignment, size, &stack, FROM_MALLOC)
  #  define COMMON_MALLOC_MALLOC(size) \
      GET_STACK_TRACE_MALLOC;          \
      void *p = asan_malloc(size, &stack)
--- 31,37 ----
  #  define COMMON_MALLOC_FORCE_UNLOCK() asan_mz_force_unlock()
  #  define COMMON_MALLOC_MEMALIGN(alignment, size) \
      GET_STACK_TRACE_MALLOC;                       \
!     void *p = asan_memalign(alignment, size, &stack)
  #  define COMMON_MALLOC_MALLOC(size) \
      GET_STACK_TRACE_MALLOC;          \
      void *p = asan_malloc(size, &stack)
*************** using namespace __asan;
*** 46,55 ****
      int res = asan_posix_memalign(memptr, alignment, size, &stack);
  #  define COMMON_MALLOC_VALLOC(size) \
      GET_STACK_TRACE_MALLOC;          \
!     void *p = asan_memalign(GetPageSizeCached(), size, &stack, FROM_MALLOC);
  #  define COMMON_MALLOC_FREE(ptr) \
      GET_STACK_TRACE_FREE;         \
!     asan_free(ptr, &stack, FROM_MALLOC);
  #  define COMMON_MALLOC_SIZE(ptr) uptr size = asan_mz_size(ptr);
  #  define COMMON_MALLOC_FILL_STATS(zone, stats)                    \
      AsanMallocStats malloc_stats;                                  \
--- 46,55 ----
      int res = asan_posix_memalign(memptr, alignment, size, &stack);
  #  define COMMON_MALLOC_VALLOC(size) \
      GET_STACK_TRACE_MALLOC;          \
!     void *p = asan_memalign(GetPageSizeCached(), size, &stack);
  #  define COMMON_MALLOC_FREE(ptr) \
      GET_STACK_TRACE_FREE;         \
!     asan_free(ptr, &stack);
  #  define COMMON_MALLOC_SIZE(ptr) uptr size = asan_mz_size(ptr);
  #  define COMMON_MALLOC_FILL_STATS(zone, stats)                    \
      AsanMallocStats malloc_stats;                                  \
diff -Nrcpad gcc-16-20251130/libsanitizer/asan/asan_malloc_win.cpp gcc-16-20251207/libsanitizer/asan/asan_malloc_win.cpp
*** gcc-16-20251130/libsanitizer/asan/asan_malloc_win.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/asan/asan_malloc_win.cpp	Sun Dec  7 22:32:17 2025
*************** __declspec(noinline) size_t _msize_base(
*** 69,75 ****
  
  __declspec(noinline) void free(void *ptr) {
    GET_STACK_TRACE_FREE;
!   return asan_free(ptr, &stack, FROM_MALLOC);
  }
  
  __declspec(noinline) void _free_dbg(void *ptr, int) { free(ptr); }
--- 69,75 ----
  
  __declspec(noinline) void free(void *ptr) {
    GET_STACK_TRACE_FREE;
!   return asan_free(ptr, &stack);
  }
  
  __declspec(noinline) void _free_dbg(void *ptr, int) { free(ptr); }
*************** INTERCEPTOR_WINAPI(BOOL, HeapFree, HANDL
*** 252,258 ****
      CHECK((HEAP_FREE_UNSUPPORTED_FLAGS & dwFlags) != 0 && "unsupported flags");
    }
    GET_STACK_TRACE_FREE;
!   asan_free(lpMem, &stack, FROM_MALLOC);
    return true;
  }
  
--- 252,258 ----
      CHECK((HEAP_FREE_UNSUPPORTED_FLAGS & dwFlags) != 0 && "unsupported flags");
    }
    GET_STACK_TRACE_FREE;
!   asan_free(lpMem, &stack);
    return true;
  }
  
*************** void *SharedReAlloc(ReAllocFunction real
*** 306,312 ****
          if (replacement_alloc) {
            size_t old_size = heapSizeFunc(hHeap, dwFlags, lpMem);
            if (old_size == ((size_t)0) - 1) {
!             asan_free(replacement_alloc, &stack, FROM_MALLOC);
              return nullptr;
            }
            REAL(memcpy)(replacement_alloc, lpMem, old_size);
--- 306,312 ----
          if (replacement_alloc) {
            size_t old_size = heapSizeFunc(hHeap, dwFlags, lpMem);
            if (old_size == ((size_t)0) - 1) {
!             asan_free(replacement_alloc, &stack);
              return nullptr;
            }
            REAL(memcpy)(replacement_alloc, lpMem, old_size);
*************** void *SharedReAlloc(ReAllocFunction real
*** 322,327 ****
--- 322,343 ----
        }
      }
  
+     if (dwFlags & HEAP_REALLOC_IN_PLACE_ONLY) {
+       size_t old_usable_size = asan_malloc_usable_size(lpMem, pc, bp);
+       if (dwBytes == old_usable_size) {
+         // Nothing to change, return the current pointer.
+         return lpMem;
+       } else if (dwBytes >= old_usable_size) {
+         // Growing with HEAP_REALLOC_IN_PLACE_ONLY is not supported.
+         return nullptr;
+       } else {
+         // Shrinking with HEAP_REALLOC_IN_PLACE_ONLY is not yet supported.
+         // For now return the current pointer and
+         // leave the allocation size as it is.
+         return lpMem;
+       }
+     }
+ 
      if (ownershipState == ASAN && !only_asan_supported_flags) {
        // Conversion to unsupported flags allocation,
        // transfer this allocation back to the original allocator.
*************** void *SharedReAlloc(ReAllocFunction real
*** 331,337 ****
          old_usable_size = asan_malloc_usable_size(lpMem, pc, bp);
          REAL(memcpy)(replacement_alloc, lpMem,
                       Min<size_t>(dwBytes, old_usable_size));
!         asan_free(lpMem, &stack, FROM_MALLOC);
        }
        return replacement_alloc;
      }
--- 347,353 ----
          old_usable_size = asan_malloc_usable_size(lpMem, pc, bp);
          REAL(memcpy)(replacement_alloc, lpMem,
                       Min<size_t>(dwBytes, old_usable_size));
!         asan_free(lpMem, &stack);
        }
        return replacement_alloc;
      }
*************** INTERCEPTOR_WINAPI(BOOL, RtlFreeHeap, HA
*** 429,435 ****
      return REAL(RtlFreeHeap)(HeapHandle, Flags, BaseAddress);
    }
    GET_STACK_TRACE_FREE;
!   asan_free(BaseAddress, &stack, FROM_MALLOC);
    return true;
  }
  
--- 445,451 ----
      return REAL(RtlFreeHeap)(HeapHandle, Flags, BaseAddress);
    }
    GET_STACK_TRACE_FREE;
!   asan_free(BaseAddress, &stack);
    return true;
  }
  
diff -Nrcpad gcc-16-20251130/libsanitizer/asan/asan_mapping.h gcc-16-20251207/libsanitizer/asan/asan_mapping.h
*** gcc-16-20251130/libsanitizer/asan/asan_mapping.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/asan/asan_mapping.h	Sun Dec  7 22:32:17 2025
***************
*** 83,100 ****
  // || `[0x0000000000, 0x0d5554ffff]` || LowMem     ||
  //
  // Default Linux/AArch64 (39-bit VMA) mapping:
! // || `[0x2000000000, 0x7fffffffff]` || highmem    ||
! // || `[0x1400000000, 0x1fffffffff]` || highshadow ||
! // || `[0x1200000000, 0x13ffffffff]` || shadowgap  ||
! // || `[0x1000000000, 0x11ffffffff]` || lowshadow  ||
! // || `[0x0000000000, 0x0fffffffff]` || lowmem     ||
  //
  // Default Linux/AArch64 (42-bit VMA) mapping:
! // || `[0x10000000000, 0x3ffffffffff]` || highmem    ||
! // || `[0x0a000000000, 0x0ffffffffff]` || highshadow ||
! // || `[0x09000000000, 0x09fffffffff]` || shadowgap  ||
! // || `[0x08000000000, 0x08fffffffff]` || lowshadow  ||
! // || `[0x00000000000, 0x07fffffffff]` || lowmem     ||
  //
  // Default Linux/S390 mapping:
  // || `[0x30000000, 0x7fffffff]` || HighMem    ||
--- 83,111 ----
  // || `[0x0000000000, 0x0d5554ffff]` || LowMem     ||
  //
  // Default Linux/AArch64 (39-bit VMA) mapping:
! // TODO: this mapping is ok, but the allocator size is too large on non-Android
! //       AArch64 platforms (see asan_allocator.h)
! // || `[0x2000000000, 0x7fffffffff]` || highmem    || 384GB
! // || `[0x1400000000, 0x1fffffffff]` || highshadow || 48GB
! // || `[0x1200000000, 0x13ffffffff]` || shadowgap  || 8GB
! // || `[0x1000000000, 0x11ffffffff]` || lowshadow  || 8GB
! // || `[0x0000000000, 0x0fffffffff]` || lowmem     || 64GB
  //
  // Default Linux/AArch64 (42-bit VMA) mapping:
! // TODO: this mapping is ok, but the allocator size is too large on non-Android
! //       AArch64 platforms (see asan_allocator.h)
! // || `[0x09000000000, 0x03ffffffffff]` || highmem    || 3520GB
! // || `[0x02200000000, 0x008fffffffff]` || highshadow || 440GB
! // || `[0x01200000000, 0x0021ffffffff]` || shadowgap  || 64GB
! // || `[0x01000000000, 0x0011ffffffff]` || lowshadow  || 8GB
! // || `[0x00000000000, 0x000fffffffff]` || lowmem     || 64GB
! //
! // Default Linux/AArch64 (48-bit VMA) mapping:
! // || `[0x201000000000, 0xffffffffffff]` || HighMem    || 229312GB
! // || `[0x041200000000, 0x200fffffffff]` || HighShadow || 28664GB
! // || `[0x001200000000, 0x0411ffffffff]` || ShadowGap  || 4096GB
! // || `[0x001000000000, 0x0011ffffffff]` || LowShadow  || 8GB
! // || `[0x000000000000, 0x000fffffffff]` || LowMem     || 64GB
  //
  // Default Linux/S390 mapping:
  // || `[0x30000000, 0x7fffffff]` || HighMem    ||
diff -Nrcpad gcc-16-20251130/libsanitizer/asan/asan_new_delete.cpp gcc-16-20251207/libsanitizer/asan/asan_new_delete.cpp
*** gcc-16-20251130/libsanitizer/asan/asan_new_delete.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/asan/asan_new_delete.cpp	Sun Dec  7 22:32:17 2025
*************** enum class align_val_t: size_t {};
*** 60,77 ****
  // TODO(alekseyshl): throw std::bad_alloc instead of dying on OOM.
  // For local pool allocation, align to SHADOW_GRANULARITY to match asan
  // allocator behavior.
! #define OPERATOR_NEW_BODY(type, nothrow)            \
!   GET_STACK_TRACE_MALLOC;                           \
!   void *res = asan_memalign(0, size, &stack, type); \
!   if (!nothrow && UNLIKELY(!res))                   \
!     ReportOutOfMemory(size, &stack);                \
!   return res;
! #define OPERATOR_NEW_BODY_ALIGN(type, nothrow)                \
!   GET_STACK_TRACE_MALLOC;                                     \
!   void *res = asan_memalign((uptr)align, size, &stack, type); \
!   if (!nothrow && UNLIKELY(!res))                             \
!     ReportOutOfMemory(size, &stack);                          \
!   return res;
  
  // On OS X it's not enough to just provide our own 'operator new' and
  // 'operator delete' implementations, because they're going to be in the
--- 60,101 ----
  // TODO(alekseyshl): throw std::bad_alloc instead of dying on OOM.
  // For local pool allocation, align to SHADOW_GRANULARITY to match asan
  // allocator behavior.
! #define OPERATOR_NEW_BODY             \
!   GET_STACK_TRACE_MALLOC;             \
!   void *res = asan_new(size, &stack); \
!   if (UNLIKELY(!res))                 \
!     ReportOutOfMemory(size, &stack);  \
!   return res
! #define OPERATOR_NEW_BODY_NOTHROW \
!   GET_STACK_TRACE_MALLOC;         \
!   return asan_new(size, &stack)
! #define OPERATOR_NEW_BODY_ARRAY             \
!   GET_STACK_TRACE_MALLOC;                   \
!   void *res = asan_new_array(size, &stack); \
!   if (UNLIKELY(!res))                       \
!     ReportOutOfMemory(size, &stack);        \
!   return res
! #define OPERATOR_NEW_BODY_ARRAY_NOTHROW \
!   GET_STACK_TRACE_MALLOC;               \
!   return asan_new_array(size, &stack)
! #define OPERATOR_NEW_BODY_ALIGN                                         \
!   GET_STACK_TRACE_MALLOC;                                               \
!   void *res = asan_new_aligned(size, static_cast<uptr>(align), &stack); \
!   if (UNLIKELY(!res))                                                   \
!     ReportOutOfMemory(size, &stack);                                    \
!   return res
! #define OPERATOR_NEW_BODY_ALIGN_NOTHROW \
!   GET_STACK_TRACE_MALLOC;               \
!   return asan_new_aligned(size, static_cast<uptr>(align), &stack)
! #define OPERATOR_NEW_BODY_ALIGN_ARRAY                                         \
!   GET_STACK_TRACE_MALLOC;                                                     \
!   void *res = asan_new_array_aligned(size, static_cast<uptr>(align), &stack); \
!   if (UNLIKELY(!res))                                                         \
!     ReportOutOfMemory(size, &stack);                                          \
!   return res
! #define OPERATOR_NEW_BODY_ALIGN_ARRAY_NOTHROW \
!   GET_STACK_TRACE_MALLOC;                     \
!   return asan_new_array_aligned(size, static_cast<uptr>(align), &stack)
  
  // On OS X it's not enough to just provide our own 'operator new' and
  // 'operator delete' implementations, because they're going to be in the
*************** enum class align_val_t: size_t {};
*** 82,187 ****
  // OS X we need to intercept them using their mangled names.
  #if !SANITIZER_APPLE
  CXX_OPERATOR_ATTRIBUTE
! void *operator new(size_t size)
! { OPERATOR_NEW_BODY(FROM_NEW, false /*nothrow*/); }
  CXX_OPERATOR_ATTRIBUTE
! void *operator new[](size_t size)
! { OPERATOR_NEW_BODY(FROM_NEW_BR, false /*nothrow*/); }
  CXX_OPERATOR_ATTRIBUTE
! void *operator new(size_t size, std::nothrow_t const&)
! { OPERATOR_NEW_BODY(FROM_NEW, true /*nothrow*/); }
  CXX_OPERATOR_ATTRIBUTE
! void *operator new[](size_t size, std::nothrow_t const&)
! { OPERATOR_NEW_BODY(FROM_NEW_BR, true /*nothrow*/); }
  CXX_OPERATOR_ATTRIBUTE
! void *operator new(size_t size, std::align_val_t align)
! { OPERATOR_NEW_BODY_ALIGN(FROM_NEW, false /*nothrow*/); }
  CXX_OPERATOR_ATTRIBUTE
! void *operator new[](size_t size, std::align_val_t align)
! { OPERATOR_NEW_BODY_ALIGN(FROM_NEW_BR, false /*nothrow*/); }
  CXX_OPERATOR_ATTRIBUTE
! void *operator new(size_t size, std::align_val_t align, std::nothrow_t const&)
! { OPERATOR_NEW_BODY_ALIGN(FROM_NEW, true /*nothrow*/); }
  CXX_OPERATOR_ATTRIBUTE
! void *operator new[](size_t size, std::align_val_t align, std::nothrow_t const&)
! { OPERATOR_NEW_BODY_ALIGN(FROM_NEW_BR, true /*nothrow*/); }
  
  #else  // SANITIZER_APPLE
! INTERCEPTOR(void *, _Znwm, size_t size) {
!   OPERATOR_NEW_BODY(FROM_NEW, false /*nothrow*/);
! }
! INTERCEPTOR(void *, _Znam, size_t size) {
!   OPERATOR_NEW_BODY(FROM_NEW_BR, false /*nothrow*/);
! }
  INTERCEPTOR(void *, _ZnwmRKSt9nothrow_t, size_t size, std::nothrow_t const&) {
!   OPERATOR_NEW_BODY(FROM_NEW, true /*nothrow*/);
  }
  INTERCEPTOR(void *, _ZnamRKSt9nothrow_t, size_t size, std::nothrow_t const&) {
!   OPERATOR_NEW_BODY(FROM_NEW_BR, true /*nothrow*/);
  }
  #endif  // !SANITIZER_APPLE
  
! #define OPERATOR_DELETE_BODY(type) \
    GET_STACK_TRACE_FREE;            \
!   asan_delete(ptr, 0, 0, &stack, type);
! 
! #define OPERATOR_DELETE_BODY_SIZE(type) \
!   GET_STACK_TRACE_FREE;                 \
!   asan_delete(ptr, size, 0, &stack, type);
! 
! #define OPERATOR_DELETE_BODY_ALIGN(type) \
    GET_STACK_TRACE_FREE;                  \
!   asan_delete(ptr, 0, static_cast<uptr>(align), &stack, type);
! 
! #define OPERATOR_DELETE_BODY_SIZE_ALIGN(type) \
    GET_STACK_TRACE_FREE;                       \
!   asan_delete(ptr, size, static_cast<uptr>(align), &stack, type);
  
  #if !SANITIZER_APPLE
  CXX_OPERATOR_ATTRIBUTE
! void operator delete(void *ptr) NOEXCEPT
! { OPERATOR_DELETE_BODY(FROM_NEW); }
  CXX_OPERATOR_ATTRIBUTE
! void operator delete[](void *ptr) NOEXCEPT
! { OPERATOR_DELETE_BODY(FROM_NEW_BR); }
  CXX_OPERATOR_ATTRIBUTE
! void operator delete(void *ptr, std::nothrow_t const&)
! { OPERATOR_DELETE_BODY(FROM_NEW); }
  CXX_OPERATOR_ATTRIBUTE
! void operator delete[](void *ptr, std::nothrow_t const&)
! { OPERATOR_DELETE_BODY(FROM_NEW_BR); }
  CXX_OPERATOR_ATTRIBUTE
! void operator delete(void *ptr, size_t size) NOEXCEPT
! { OPERATOR_DELETE_BODY_SIZE(FROM_NEW); }
  CXX_OPERATOR_ATTRIBUTE
! void operator delete[](void *ptr, size_t size) NOEXCEPT
! { OPERATOR_DELETE_BODY_SIZE(FROM_NEW_BR); }
  CXX_OPERATOR_ATTRIBUTE
! void operator delete(void *ptr, std::align_val_t align) NOEXCEPT
! { OPERATOR_DELETE_BODY_ALIGN(FROM_NEW); }
  CXX_OPERATOR_ATTRIBUTE
! void operator delete[](void *ptr, std::align_val_t align) NOEXCEPT
! { OPERATOR_DELETE_BODY_ALIGN(FROM_NEW_BR); }
  CXX_OPERATOR_ATTRIBUTE
! void operator delete(void *ptr, std::align_val_t align, std::nothrow_t const&)
! { OPERATOR_DELETE_BODY_ALIGN(FROM_NEW); }
  CXX_OPERATOR_ATTRIBUTE
! void operator delete[](void *ptr, std::align_val_t align, std::nothrow_t const&)
! { OPERATOR_DELETE_BODY_ALIGN(FROM_NEW_BR); }
  CXX_OPERATOR_ATTRIBUTE
! void operator delete(void *ptr, size_t size, std::align_val_t align) NOEXCEPT
! { OPERATOR_DELETE_BODY_SIZE_ALIGN(FROM_NEW); }
  CXX_OPERATOR_ATTRIBUTE
! void operator delete[](void *ptr, size_t size, std::align_val_t align) NOEXCEPT
! { OPERATOR_DELETE_BODY_SIZE_ALIGN(FROM_NEW_BR); }
  
  #else  // SANITIZER_APPLE
! INTERCEPTOR(void, _ZdlPv, void *ptr)
! { OPERATOR_DELETE_BODY(FROM_NEW); }
! INTERCEPTOR(void, _ZdaPv, void *ptr)
! { OPERATOR_DELETE_BODY(FROM_NEW_BR); }
! INTERCEPTOR(void, _ZdlPvRKSt9nothrow_t, void *ptr, std::nothrow_t const&)
! { OPERATOR_DELETE_BODY(FROM_NEW); }
! INTERCEPTOR(void, _ZdaPvRKSt9nothrow_t, void *ptr, std::nothrow_t const&)
! { OPERATOR_DELETE_BODY(FROM_NEW_BR); }
  #endif  // !SANITIZER_APPLE
--- 106,233 ----
  // OS X we need to intercept them using their mangled names.
  #if !SANITIZER_APPLE
  CXX_OPERATOR_ATTRIBUTE
! void *operator new(size_t size) { OPERATOR_NEW_BODY; }
  CXX_OPERATOR_ATTRIBUTE
! void *operator new[](size_t size) { OPERATOR_NEW_BODY_ARRAY; }
  CXX_OPERATOR_ATTRIBUTE
! void *operator new(size_t size, std::nothrow_t const &) {
!   OPERATOR_NEW_BODY_NOTHROW;
! }
  CXX_OPERATOR_ATTRIBUTE
! void *operator new[](size_t size, std::nothrow_t const &) {
!   OPERATOR_NEW_BODY_ARRAY_NOTHROW;
! }
  CXX_OPERATOR_ATTRIBUTE
! void *operator new(size_t size, std::align_val_t align) {
!   OPERATOR_NEW_BODY_ALIGN;
! }
  CXX_OPERATOR_ATTRIBUTE
! void *operator new[](size_t size, std::align_val_t align) {
!   OPERATOR_NEW_BODY_ALIGN_ARRAY;
! }
  CXX_OPERATOR_ATTRIBUTE
! void *operator new(size_t size, std::align_val_t align,
!                    std::nothrow_t const &) {
!   OPERATOR_NEW_BODY_ALIGN_NOTHROW;
! }
  CXX_OPERATOR_ATTRIBUTE
! void *operator new[](size_t size, std::align_val_t align,
!                      std::nothrow_t const &) {
!   OPERATOR_NEW_BODY_ALIGN_ARRAY_NOTHROW;
! }
  
  #else  // SANITIZER_APPLE
! INTERCEPTOR(void *, _Znwm, size_t size) { OPERATOR_NEW_BODY; }
! INTERCEPTOR(void *, _Znam, size_t size) { OPERATOR_NEW_BODY_ARRAY; }
  INTERCEPTOR(void *, _ZnwmRKSt9nothrow_t, size_t size, std::nothrow_t const&) {
!   OPERATOR_NEW_BODY_NOTHROW;
  }
  INTERCEPTOR(void *, _ZnamRKSt9nothrow_t, size_t size, std::nothrow_t const&) {
!   OPERATOR_NEW_BODY_ARRAY_NOTHROW;
  }
  #endif  // !SANITIZER_APPLE
  
! #define OPERATOR_DELETE_BODY \
!   GET_STACK_TRACE_FREE;      \
!   asan_delete(ptr, &stack)
! #define OPERATOR_DELETE_BODY_ARRAY \
    GET_STACK_TRACE_FREE;            \
!   asan_delete_array(ptr, &stack)
! #define OPERATOR_DELETE_BODY_ALIGN \
!   GET_STACK_TRACE_FREE;            \
!   asan_delete_aligned(ptr, static_cast<uptr>(align), &stack)
! #define OPERATOR_DELETE_BODY_ALIGN_ARRAY \
    GET_STACK_TRACE_FREE;                  \
!   asan_delete_array_aligned(ptr, static_cast<uptr>(align), &stack)
! #define OPERATOR_DELETE_BODY_SIZE \
!   GET_STACK_TRACE_FREE;           \
!   asan_delete_sized(ptr, size, &stack)
! #define OPERATOR_DELETE_BODY_SIZE_ARRAY \
!   GET_STACK_TRACE_FREE;                 \
!   asan_delete_array_sized(ptr, size, &stack)
! #define OPERATOR_DELETE_BODY_SIZE_ALIGN \
!   GET_STACK_TRACE_FREE;                 \
!   asan_delete_sized_aligned(ptr, size, static_cast<uptr>(align), &stack)
! #define OPERATOR_DELETE_BODY_SIZE_ALIGN_ARRAY \
    GET_STACK_TRACE_FREE;                       \
!   asan_delete_array_sized_aligned(ptr, size, static_cast<uptr>(align), &stack)
  
  #if !SANITIZER_APPLE
  CXX_OPERATOR_ATTRIBUTE
! void operator delete(void *ptr) NOEXCEPT { OPERATOR_DELETE_BODY; }
  CXX_OPERATOR_ATTRIBUTE
! void operator delete[](void *ptr) NOEXCEPT { OPERATOR_DELETE_BODY_ARRAY; }
  CXX_OPERATOR_ATTRIBUTE
! void operator delete(void *ptr, std::nothrow_t const &) {
!   OPERATOR_DELETE_BODY;
! }
  CXX_OPERATOR_ATTRIBUTE
! void operator delete[](void *ptr, std::nothrow_t const &) {
!   OPERATOR_DELETE_BODY_ARRAY;
! }
  CXX_OPERATOR_ATTRIBUTE
! void operator delete(void *ptr, size_t size) NOEXCEPT {
!   OPERATOR_DELETE_BODY_SIZE;
! }
  CXX_OPERATOR_ATTRIBUTE
! void operator delete[](void *ptr, size_t size) NOEXCEPT {
!   OPERATOR_DELETE_BODY_SIZE_ARRAY;
! }
  CXX_OPERATOR_ATTRIBUTE
! void operator delete(void *ptr, std::align_val_t align) NOEXCEPT {
!   OPERATOR_DELETE_BODY_ALIGN;
! }
  CXX_OPERATOR_ATTRIBUTE
! void operator delete[](void *ptr, std::align_val_t align) NOEXCEPT {
!   OPERATOR_DELETE_BODY_ALIGN_ARRAY;
! }
  CXX_OPERATOR_ATTRIBUTE
! void operator delete(void *ptr, std::align_val_t align,
!                      std::nothrow_t const &) {
!   OPERATOR_DELETE_BODY_ALIGN;
! }
  CXX_OPERATOR_ATTRIBUTE
! void operator delete[](void *ptr, std::align_val_t align,
!                        std::nothrow_t const &) {
!   OPERATOR_DELETE_BODY_ALIGN_ARRAY;
! }
  CXX_OPERATOR_ATTRIBUTE
! void operator delete(void *ptr, size_t size, std::align_val_t align) NOEXCEPT {
!   OPERATOR_DELETE_BODY_SIZE_ALIGN;
! }
  CXX_OPERATOR_ATTRIBUTE
! void operator delete[](void *ptr, size_t size,
!                        std::align_val_t align) NOEXCEPT {
!   OPERATOR_DELETE_BODY_SIZE_ALIGN_ARRAY;
! }
  
  #else  // SANITIZER_APPLE
! INTERCEPTOR(void, _ZdlPv, void *ptr) { OPERATOR_DELETE_BODY; }
! INTERCEPTOR(void, _ZdaPv, void *ptr) { OPERATOR_DELETE_BODY_ARRAY; }
! INTERCEPTOR(void, _ZdlPvRKSt9nothrow_t, void *ptr, std::nothrow_t const &) {
!   OPERATOR_DELETE_BODY;
! }
! INTERCEPTOR(void, _ZdaPvRKSt9nothrow_t, void *ptr, std::nothrow_t const &) {
!   OPERATOR_DELETE_BODY_ARRAY;
! }
  #endif  // !SANITIZER_APPLE
diff -Nrcpad gcc-16-20251130/libsanitizer/asan/asan_poisoning.cpp gcc-16-20251207/libsanitizer/asan/asan_poisoning.cpp
*** gcc-16-20251130/libsanitizer/asan/asan_poisoning.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/asan/asan_poisoning.cpp	Sun Dec  7 22:32:17 2025
***************
*** 20,30 ****
--- 20,77 ----
  #include "sanitizer_common/sanitizer_flags.h"
  #include "sanitizer_common/sanitizer_interface_internal.h"
  #include "sanitizer_common/sanitizer_libc.h"
+ #include "sanitizer_common/sanitizer_ring_buffer.h"
+ #include "sanitizer_common/sanitizer_stackdepot.h"
  
  namespace __asan {
  
+ using PoisonRecordRingBuffer = RingBuffer<PoisonRecord>;
+ 
  static atomic_uint8_t can_poison_memory;
  
+ static Mutex poison_records_mutex;
+ static PoisonRecordRingBuffer *poison_records
+     SANITIZER_GUARDED_BY(poison_records_mutex) = nullptr;
+ 
+ void AddPoisonRecord(const PoisonRecord &new_record) {
+   if (flags()->poison_history_size <= 0)
+     return;
+ 
+   GenericScopedLock<Mutex> l(&poison_records_mutex);
+ 
+   if (poison_records == nullptr)
+     poison_records = PoisonRecordRingBuffer::New(flags()->poison_history_size);
+ 
+   poison_records->push(new_record);
+ }
+ 
+ bool FindPoisonRecord(uptr addr, PoisonRecord &match) {
+   if (flags()->poison_history_size <= 0)
+     return false;
+ 
+   GenericScopedLock<Mutex> l(&poison_records_mutex);
+ 
+   if (poison_records) {
+     for (unsigned int i = 0; i < poison_records->size(); i++) {
+       PoisonRecord record = (*poison_records)[i];
+       if (record.begin <= addr && addr < record.end) {
+         internal_memcpy(&match, &record, sizeof(record));
+         return true;
+       }
+     }
+   }
+ 
+   return false;
+ }
+ 
+ void SANITIZER_ACQUIRE(poison_records_mutex) AcquirePoisonRecords() {
+   poison_records_mutex.Lock();
+ }
+ 
+ void SANITIZER_RELEASE(poison_records_mutex) ReleasePoisonRecords() {
+   poison_records_mutex.Unlock();
+ }
+ 
  void SetCanPoisonMemory(bool value) {
    atomic_store(&can_poison_memory, value, memory_order_release);
  }
*************** void __asan_poison_memory_region(void co
*** 107,112 ****
--- 154,174 ----
    uptr end_addr = beg_addr + size;
    VPrintf(3, "Trying to poison memory region [%p, %p)\n", (void *)beg_addr,
            (void *)end_addr);
+ 
+   if (flags()->poison_history_size > 0) {
+     GET_STACK_TRACE(/*max_size=*/16, /*fast=*/false);
+     u32 current_tid = GetCurrentTidOrInvalid();
+ 
+     u32 stack_id = StackDepotPut(stack);
+ 
+     PoisonRecord record;
+     record.stack_id = stack_id;
+     record.thread_id = current_tid;
+     record.begin = beg_addr;
+     record.end = end_addr;
+     AddPoisonRecord(record);
+   }
+ 
    ShadowSegmentEndpoint beg(beg_addr);
    ShadowSegmentEndpoint end(end_addr);
    if (beg.chunk == end.chunk) {
*************** void __asan_unpoison_memory_region(void
*** 147,152 ****
--- 209,219 ----
    uptr end_addr = beg_addr + size;
    VPrintf(3, "Trying to unpoison memory region [%p, %p)\n", (void *)beg_addr,
            (void *)end_addr);
+ 
+   // Note: we don't need to update the poison tracking here. Since the shadow
+   // memory will be unpoisoned, the poison tracking ring buffer entries will be
+   // ignored.
+ 
    ShadowSegmentEndpoint beg(beg_addr);
    ShadowSegmentEndpoint end(end_addr);
    if (beg.chunk == end.chunk) {
diff -Nrcpad gcc-16-20251130/libsanitizer/asan/asan_poisoning.h gcc-16-20251207/libsanitizer/asan/asan_poisoning.h
*** gcc-16-20251130/libsanitizer/asan/asan_poisoning.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/asan/asan_poisoning.h	Sun Dec  7 22:32:17 2025
***************
*** 11,16 ****
--- 11,19 ----
  // Shadow memory poisoning by ASan RTL and by user application.
  //===----------------------------------------------------------------------===//
  
+ #ifndef ASAN_POISONING_H
+ #define ASAN_POISONING_H
+ 
  #include "asan_interceptors.h"
  #include "asan_internal.h"
  #include "asan_mapping.h"
***************
*** 19,24 ****
--- 22,40 ----
  
  namespace __asan {
  
+ struct PoisonRecord {
+   u32 stack_id;
+   u32 thread_id;
+   uptr begin;
+   uptr end;
+ };
+ 
+ void AddPoisonRecord(const PoisonRecord& new_record);
+ bool FindPoisonRecord(uptr addr, PoisonRecord& match);
+ 
+ void AcquirePoisonRecords();
+ void ReleasePoisonRecords();
+ 
  // Enable/disable memory poisoning.
  void SetCanPoisonMemory(bool value);
  bool CanPoisonMemory();
*************** ALWAYS_INLINE void FastPoisonShadowParti
*** 96,98 ****
--- 112,116 ----
  void FlushUnneededASanShadowMemory(uptr p, uptr size);
  
  }  // namespace __asan
+ 
+ #endif  // ASAN_POISONING_H
diff -Nrcpad gcc-16-20251130/libsanitizer/asan/asan_posix.cpp gcc-16-20251207/libsanitizer/asan/asan_posix.cpp
*** gcc-16-20251130/libsanitizer/asan/asan_posix.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/asan/asan_posix.cpp	Sun Dec  7 22:32:17 2025
*************** static void BeforeFork() {
*** 157,167 ****
--- 157,173 ----
    // stuff we need.
    __lsan::LockThreads();
    __lsan::LockAllocator();
+ 
+   AcquirePoisonRecords();
+ 
    StackDepotLockBeforeFork();
  }
  
  static void AfterFork(bool fork_child) {
    StackDepotUnlockAfterFork(fork_child);
+ 
+   ReleasePoisonRecords();
+ 
    // `_lsan` functions defined regardless of `CAN_SANITIZE_LEAKS` and unlock
    // the stuff we need.
    __lsan::UnlockAllocator();
*************** static void AfterFork(bool fork_child) {
*** 174,180 ****
  
  void InstallAtForkHandler() {
  #  if SANITIZER_SOLARIS || SANITIZER_NETBSD || SANITIZER_APPLE || \
!       (SANITIZER_LINUX && SANITIZER_SPARC)
    // While other Linux targets use clone in internal_fork which doesn't
    // trigger pthread_atfork handlers, Linux/sparc64 uses __fork, causing a
    // hang.
--- 180,186 ----
  
  void InstallAtForkHandler() {
  #  if SANITIZER_SOLARIS || SANITIZER_NETBSD || SANITIZER_APPLE || \
!       (SANITIZER_LINUX && SANITIZER_SPARC) || SANITIZER_HAIKU
    // While other Linux targets use clone in internal_fork which doesn't
    // trigger pthread_atfork handlers, Linux/sparc64 uses __fork, causing a
    // hang.
diff -Nrcpad gcc-16-20251130/libsanitizer/asan/asan_report.cpp gcc-16-20251207/libsanitizer/asan/asan_report.cpp
*** gcc-16-20251130/libsanitizer/asan/asan_report.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/asan/asan_report.cpp	Sun Dec  7 22:32:17 2025
***************
*** 21,26 ****
--- 21,27 ----
  #include "asan_scariness_score.h"
  #include "asan_stack.h"
  #include "asan_thread.h"
+ #include "lsan/lsan_common.h"
  #include "sanitizer_common/sanitizer_common.h"
  #include "sanitizer_common/sanitizer_flags.h"
  #include "sanitizer_common/sanitizer_interface_internal.h"
*************** class ScopedInErrorReport {
*** 126,131 ****
--- 127,159 ----
   public:
    explicit ScopedInErrorReport(bool fatal = false)
        : halt_on_error_(fatal || flags()->halt_on_error) {
+     // Deadlock Prevention Between ASan and LSan
+     //
+     // Background:
+     // - The `dl_iterate_phdr` function requires holding libdl's internal lock
+     //   (Lock A).
+     // - LSan acquires the ASan thread registry lock (Lock B) *after* calling
+     //   `dl_iterate_phdr`.
+     //
+     // Problem Scenario:
+     // When ASan attempts to call `dl_iterate_phdr` while holding Lock B (e.g.,
+     // during error reporting via `ErrorDescription::Print`), a circular lock
+     // dependency may occur:
+     //   1. Thread 1: Holds Lock B → Requests Lock A (via dl_iterate_phdr)
+     //   2. Thread 2: Holds Lock A → Requests Lock B (via LSan operations)
+     //
+     // Solution:
+     // Proactively load all required modules before acquiring Lock B.
+     // This ensures:
+     // 1. Any `dl_iterate_phdr` calls during module loading complete before
+     //    locking.
+     // 2. Subsequent error reporting avoids nested lock acquisition patterns.
+     // 3. Eliminates the lock order inversion risk between libdl and ASan's
+     //    thread registry.
+ #if CAN_SANITIZE_LEAKS && (SANITIZER_LINUX || SANITIZER_NETBSD)
+     Symbolizer::GetOrInit()->GetRefreshedListOfModules();
+ #endif
+ 
      // Make sure the registry and sanitizer report mutexes are locked while
      // we're printing an error report.
      // We can lock them only here to avoid self-deadlock in case of
*************** void __sanitizer_ptr_cmp(void *a, void *
*** 592,596 ****
  } // extern "C"
  
  // Provide default implementation of __asan_on_error that does nothing
! // and may be overriden by user.
  SANITIZER_INTERFACE_WEAK_DEF(void, __asan_on_error, void) {}
--- 620,624 ----
  } // extern "C"
  
  // Provide default implementation of __asan_on_error that does nothing
! // and may be overridden by user.
  SANITIZER_INTERFACE_WEAK_DEF(void, __asan_on_error, void) {}
diff -Nrcpad gcc-16-20251130/libsanitizer/asan/asan_rtl.cpp gcc-16-20251207/libsanitizer/asan/asan_rtl.cpp
*** gcc-16-20251130/libsanitizer/asan/asan_rtl.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/asan/asan_rtl.cpp	Sun Dec  7 22:32:17 2025
*************** void PrintAddressSpaceLayout() {
*** 390,395 ****
--- 390,428 ----
            kHighShadowBeg > kMidMemEnd);
  }
  
+ // Apply most options specified either through the ASAN_OPTIONS
+ // environment variable, or through the `__asan_default_options` user function.
+ //
+ // This function may be called multiple times, once per weak reference callback
+ // on Windows, so it needs to be idempotent.
+ //
+ // Context:
+ // For maximum compatibility on Windows, it is necessary for ASan options to be
+ // configured/registered/applied inside this method (instead of in
+ // ASanInitInternal, for example). That's because, on Windows, the user-provided
+ // definition for `__asan_default_opts` may not be bound when `ASanInitInternal`
+ // is invoked (it is bound later).
+ //
+ // To work around the late binding on windows, `ApplyOptions` will be called,
+ // again, after binding to the user-provided `__asan_default_opts` function.
+ // Therefore, any flags not configured here are not guaranteed to be
+ // configurable through `__asan_default_opts` on Windows.
+ //
+ //
+ // For more details on this issue, see:
+ // https://github.com/llvm/llvm-project/issues/117925
+ void ApplyFlags() {
+   SetCanPoisonMemory(flags()->poison_heap);
+   SetMallocContextSize(common_flags()->malloc_context_size);
+ 
+   __asan_option_detect_stack_use_after_return =
+       flags()->detect_stack_use_after_return;
+ 
+   AllocatorOptions allocator_options;
+   allocator_options.SetFrom(flags(), common_flags());
+   ApplyAllocatorOptions(allocator_options);
+ }
+ 
  static bool AsanInitInternal() {
    if (LIKELY(AsanInited()))
      return true;
*************** static bool AsanInitInternal() {
*** 397,404 ****
  
    CacheBinaryName();
  
!   // Initialize flags. This must be done early, because most of the
!   // initialization steps look at flags().
    InitializeFlags();
  
    WaitForDebugger(flags()->sleep_before_init, "before init");
--- 430,438 ----
  
    CacheBinaryName();
  
!   // Initialize flags. On Windows it also also register weak function callbacks.
!   // This must be done early, because most of the initialization steps look at
!   // flags().
    InitializeFlags();
  
    WaitForDebugger(flags()->sleep_before_init, "before init");
*************** static bool AsanInitInternal() {
*** 416,424 ****
    AsanCheckDynamicRTPrereqs();
    AvoidCVE_2016_2143();
  
-   SetCanPoisonMemory(flags()->poison_heap);
-   SetMallocContextSize(common_flags()->malloc_context_size);
- 
    InitializePlatformExceptionHandlers();
  
    InitializeHighMemEnd();
--- 450,455 ----
*************** static bool AsanInitInternal() {
*** 429,438 ****
    SetPrintfAndReportCallback(AppendToErrorMessageBuffer);
  
    __sanitizer_set_report_path(common_flags()->log_path);
- 
-   __asan_option_detect_stack_use_after_return =
-       flags()->detect_stack_use_after_return;
- 
    __sanitizer::InitializePlatformEarly();
  
    // Setup internal allocator callback.
--- 460,465 ----
*************** static bool AsanInitInternal() {
*** 451,456 ****
--- 478,495 ----
  
    DisableCoreDumperIfNecessary();
  
+ #if SANITIZER_POSIX
+   if (StackSizeIsUnlimited()) {
+     VPrintf(1,
+             "WARNING: Unlimited stack size detected. This may affect "
+             "compatibility with the shadow mappings.\n");
+     // MSan and TSan re-exec with a fixed size stack. We don't do that because
+     // it may break the program. InitializeShadowMemory() will, if needed,
+     // re-exec without ASLR, which solves most shadow mapping compatibility
+     // issues.
+   }
+ #endif  // SANITIZER_POSIX
+ 
    InitializeShadowMemory();
  
    AsanTSDInit(PlatformTSDDtor);
*************** static bool AsanInitInternal() {
*** 460,465 ****
--- 499,511 ----
    allocator_options.SetFrom(flags(), common_flags());
    InitializeAllocator(allocator_options);
  
+   // Apply ASan flags.
+   // NOTE: In order for options specified through `__asan_default_options` to be
+   // honored on Windows, it is necessary for those options to be configured
+   // inside the `ApplyOptions` method. See the function-level comment for
+   // `ApplyFlags` for more details.
+   ApplyFlags();
+ 
    if (SANITIZER_START_BACKGROUND_THREAD_IN_ASAN_INTERNAL)
      MaybeStartBackgroudThread();
  
*************** static bool AsanInitInternal() {
*** 482,488 ****
    AsanThread *main_thread = CreateMainThread();
    CHECK_EQ(0, main_thread->tid());
    force_interface_symbols();  // no-op.
-   SanitizerInitializeUnwinder();
  
    if (CAN_SANITIZE_LEAKS) {
      __lsan::InitCommonLsan();
--- 528,533 ----
diff -Nrcpad gcc-16-20251130/libsanitizer/asan/asan_rtl_x86_64.S gcc-16-20251207/libsanitizer/asan/asan_rtl_x86_64.S
*** gcc-16-20251130/libsanitizer/asan/asan_rtl_x86_64.S	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/asan/asan_rtl_x86_64.S	Sun Dec  7 22:32:17 2025
***************
*** 5,10 ****
--- 5,11 ----
  #include "sanitizer_common/sanitizer_platform.h"
  
  .file "asan_rtl_x86_64.S"
+ .att_syntax
  
  #define NAME(n, reg, op, s, i) n##_##op##_##i##_##s##_##reg
  
diff -Nrcpad gcc-16-20251130/libsanitizer/asan/asan_shadow_setup.cpp gcc-16-20251207/libsanitizer/asan/asan_shadow_setup.cpp
*** gcc-16-20251130/libsanitizer/asan/asan_shadow_setup.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/asan/asan_shadow_setup.cpp	Sun Dec  7 22:32:17 2025
*************** void InitializeShadowMemory() {
*** 109,114 ****
--- 109,123 ----
      ProtectGap(kShadowGap2Beg, kShadowGap2End - kShadowGap2Beg + 1);
      ProtectGap(kShadowGap3Beg, kShadowGap3End - kShadowGap3Beg + 1);
    } else {
+     // ASan's mappings can usually shadow the entire address space, even with
+     // maximum ASLR entropy. However:
+     // - On 32-bit systems, the maximum ASLR entropy (currently up to 16-bits
+     //   == 256MB) is a significant chunk of the address space; reclaiming it
+     //   by disabling ASLR might allow chonky binaries to run.
+     // - On 64-bit systems, some settings (e.g., for Linux, unlimited stack
+     //   size plus 31+ bits of entropy) can lead to an incompatible layout.
+     TryReExecWithoutASLR();
+ 
      Report(
          "Shadow memory range interleaves with an existing memory mapping. "
          "ASan cannot proceed correctly. ABORTING.\n");
diff -Nrcpad gcc-16-20251130/libsanitizer/asan/asan_suppressions.cpp gcc-16-20251207/libsanitizer/asan/asan_suppressions.cpp
*** gcc-16-20251130/libsanitizer/asan/asan_suppressions.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/asan/asan_suppressions.cpp	Sun Dec  7 22:32:17 2025
*************** static const char kInterceptorName[] = "
*** 26,34 ****
  static const char kInterceptorViaFunction[] = "interceptor_via_fun";
  static const char kInterceptorViaLibrary[] = "interceptor_via_lib";
  static const char kODRViolation[] = "odr_violation";
  static const char *kSuppressionTypes[] = {
      kInterceptorName, kInterceptorViaFunction, kInterceptorViaLibrary,
!     kODRViolation};
  
  SANITIZER_INTERFACE_WEAK_DEF(const char *, __asan_default_suppressions, void) {
    return "";
--- 26,35 ----
  static const char kInterceptorViaFunction[] = "interceptor_via_fun";
  static const char kInterceptorViaLibrary[] = "interceptor_via_lib";
  static const char kODRViolation[] = "odr_violation";
+ static const char kAllocDeallocMismatch[] = "alloc_dealloc_mismatch";
  static const char *kSuppressionTypes[] = {
      kInterceptorName, kInterceptorViaFunction, kInterceptorViaLibrary,
!     kODRViolation, kAllocDeallocMismatch};
  
  SANITIZER_INTERFACE_WEAK_DEF(const char *, __asan_default_suppressions, void) {
    return "";
*************** bool IsODRViolationSuppressed(const char
*** 62,67 ****
--- 63,106 ----
    return suppression_ctx->Match(global_var_name, kODRViolation, &s);
  }
  
+ bool IsAddrSuppressed(const char *suppression, Symbolizer *symbolizer,
+                       uptr addr) {
+   CHECK(suppression_ctx);
+   CHECK(suppression_ctx->HasSuppressionType(suppression));
+   CHECK(symbolizer);
+   SymbolizedStackHolder symbolized_stack(symbolizer->SymbolizePC(addr));
+   const SymbolizedStack *frames = symbolized_stack.get();
+   CHECK(frames);
+   for (const SymbolizedStack *cur = frames; cur; cur = cur->next) {
+     const char *function_name = cur->info.function;
+     if (!function_name) {
+       continue;
+     }
+     // Match suppressions.
+     Suppression *s;
+     if (suppression_ctx->Match(function_name, suppression, &s)) {
+       return true;
+     }
+   }
+   return false;
+ }
+ 
+ bool IsAllocDeallocMismatchSuppressed(const StackTrace *stack) {
+   CHECK(suppression_ctx);
+   if (!suppression_ctx->HasSuppressionType(kAllocDeallocMismatch)) {
+     return false;
+   }
+   Symbolizer *symbolizer = Symbolizer::GetOrInit();
+   for (uptr i = 0; i < stack->size && stack->trace[i]; i++) {
+     uptr addr = stack->trace[i];
+     // Match "alloc_dealloc_mismatch" suppressions.
+     if (IsAddrSuppressed(kAllocDeallocMismatch, symbolizer, addr)) {
+       return true;
+     }
+   }
+   return false;
+ }
+ 
  bool IsStackTraceSuppressed(const StackTrace *stack) {
    if (!HaveStackTraceBasedSuppressions())
      return false;
*************** bool IsStackTraceSuppressed(const StackT
*** 80,98 ****
      }
  
      if (suppression_ctx->HasSuppressionType(kInterceptorViaFunction)) {
!       SymbolizedStackHolder symbolized_stack(symbolizer->SymbolizePC(addr));
!       const SymbolizedStack *frames = symbolized_stack.get();
!       CHECK(frames);
!       for (const SymbolizedStack *cur = frames; cur; cur = cur->next) {
!         const char *function_name = cur->info.function;
!         if (!function_name) {
!           continue;
!         }
!         // Match "interceptor_via_fun" suppressions.
!         if (suppression_ctx->Match(function_name, kInterceptorViaFunction,
!                                    &s)) {
!           return true;
!         }
        }
      }
    }
--- 119,127 ----
      }
  
      if (suppression_ctx->HasSuppressionType(kInterceptorViaFunction)) {
!       // Match "interceptor_via_func" suppressions.
!       if (IsAddrSuppressed(kInterceptorViaFunction, symbolizer, addr)) {
!         return true;
        }
      }
    }
diff -Nrcpad gcc-16-20251130/libsanitizer/asan/asan_suppressions.h gcc-16-20251207/libsanitizer/asan/asan_suppressions.h
*** gcc-16-20251130/libsanitizer/asan/asan_suppressions.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/asan/asan_suppressions.h	Sun Dec  7 22:32:17 2025
*************** bool IsInterceptorSuppressed(const char
*** 23,28 ****
--- 23,29 ----
  bool HaveStackTraceBasedSuppressions();
  bool IsStackTraceSuppressed(const StackTrace *stack);
  bool IsODRViolationSuppressed(const char *global_var_name);
+ bool IsAllocDeallocMismatchSuppressed(const StackTrace *stack);
  
  } // namespace __asan
  
diff -Nrcpad gcc-16-20251130/libsanitizer/asan/asan_thread.cpp gcc-16-20251207/libsanitizer/asan/asan_thread.cpp
*** gcc-16-20251130/libsanitizer/asan/asan_thread.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/asan/asan_thread.cpp	Sun Dec  7 22:32:17 2025
*************** void AsanThread::StartSwitchFiber(FakeSt
*** 163,169 ****
    if (fake_stack_save)
      *fake_stack_save = fake_stack_;
    fake_stack_ = nullptr;
!   SetTLSFakeStack(nullptr);
    // if fake_stack_save is null, the fiber will die, delete the fakestack
    if (!fake_stack_save && current_fake_stack)
      current_fake_stack->Destroy(this->tid());
--- 163,169 ----
    if (fake_stack_save)
      *fake_stack_save = fake_stack_;
    fake_stack_ = nullptr;
!   ResetTLSFakeStack();
    // if fake_stack_save is null, the fiber will die, delete the fakestack
    if (!fake_stack_save && current_fake_stack)
      current_fake_stack->Destroy(this->tid());
*************** void AsanThread::FinishSwitchFiber(FakeS
*** 177,184 ****
    }
  
    if (fake_stack_save) {
-     SetTLSFakeStack(fake_stack_save);
      fake_stack_ = fake_stack_save;
    }
  
    if (bottom_old)
--- 177,184 ----
    }
  
    if (fake_stack_save) {
      fake_stack_ = fake_stack_save;
+     ResetTLSFakeStack();
    }
  
    if (bottom_old)
*************** FakeStack *AsanThread::AsyncSignalSafeLa
*** 242,248 ****
          Max(stack_size_log, static_cast<uptr>(flags()->min_uar_stack_size_log));
      fake_stack_ = FakeStack::Create(stack_size_log);
      DCHECK_EQ(GetCurrentThread(), this);
!     SetTLSFakeStack(fake_stack_);
      return fake_stack_;
    }
    return nullptr;
--- 242,248 ----
          Max(stack_size_log, static_cast<uptr>(flags()->min_uar_stack_size_log));
      fake_stack_ = FakeStack::Create(stack_size_log);
      DCHECK_EQ(GetCurrentThread(), this);
!     ResetTLSFakeStack();
      return fake_stack_;
    }
    return nullptr;
*************** void AsanThread::Init(const InitOptions
*** 282,288 ****
  // asan_fuchsia.c definies CreateMainThread and SetThreadStackAndTls.
  #if !SANITIZER_FUCHSIA
  
! void AsanThread::ThreadStart(tid_t os_id) {
    Init();
    asanThreadRegistry().StartThread(tid(), os_id, ThreadType::Regular, nullptr);
  
--- 282,288 ----
  // asan_fuchsia.c definies CreateMainThread and SetThreadStackAndTls.
  #if !SANITIZER_FUCHSIA
  
! void AsanThread::ThreadStart(ThreadID os_id) {
    Init();
    asanThreadRegistry().StartThread(tid(), os_id, ThreadType::Regular, nullptr);
  
*************** void EnsureMainThreadIDIsCorrect() {
*** 469,475 ****
      context->os_id = GetTid();
  }
  
! __asan::AsanThread *GetAsanThreadByOsIDLocked(tid_t os_id) {
    __asan::AsanThreadContext *context = static_cast<__asan::AsanThreadContext *>(
        __asan::asanThreadRegistry().FindThreadContextByOsIDLocked(os_id));
    if (!context)
--- 469,475 ----
      context->os_id = GetTid();
  }
  
! __asan::AsanThread *GetAsanThreadByOsIDLocked(ThreadID os_id) {
    __asan::AsanThreadContext *context = static_cast<__asan::AsanThreadContext *>(
        __asan::asanThreadRegistry().FindThreadContextByOsIDLocked(os_id));
    if (!context)
*************** static ThreadRegistry *GetAsanThreadRegi
*** 497,503 ****
  
  void EnsureMainThreadIDIsCorrect() { __asan::EnsureMainThreadIDIsCorrect(); }
  
! bool GetThreadRangesLocked(tid_t os_id, uptr *stack_begin, uptr *stack_end,
                             uptr *tls_begin, uptr *tls_end, uptr *cache_begin,
                             uptr *cache_end, DTLS **dtls) {
    __asan::AsanThread *t = __asan::GetAsanThreadByOsIDLocked(os_id);
--- 497,503 ----
  
  void EnsureMainThreadIDIsCorrect() { __asan::EnsureMainThreadIDIsCorrect(); }
  
! bool GetThreadRangesLocked(ThreadID os_id, uptr *stack_begin, uptr *stack_end,
                             uptr *tls_begin, uptr *tls_end, uptr *cache_begin,
                             uptr *cache_end, DTLS **dtls) {
    __asan::AsanThread *t = __asan::GetAsanThreadByOsIDLocked(os_id);
*************** bool GetThreadRangesLocked(tid_t os_id,
*** 516,522 ****
  
  void GetAllThreadAllocatorCachesLocked(InternalMmapVector<uptr> *caches) {}
  
! void GetThreadExtraStackRangesLocked(tid_t os_id,
                                       InternalMmapVector<Range> *ranges) {
    __asan::AsanThread *t = __asan::GetAsanThreadByOsIDLocked(os_id);
    if (!t)
--- 516,522 ----
  
  void GetAllThreadAllocatorCachesLocked(InternalMmapVector<uptr> *caches) {}
  
! void GetThreadExtraStackRangesLocked(ThreadID os_id,
                                       InternalMmapVector<Range> *ranges) {
    __asan::AsanThread *t = __asan::GetAsanThreadByOsIDLocked(os_id);
    if (!t)
*************** void GetAdditionalThreadContextPtrsLocke
*** 546,556 ****
    __asan::asanThreadArgRetval().GetAllPtrsLocked(ptrs);
  }
  
! void GetRunningThreadsLocked(InternalMmapVector<tid_t> *threads) {
    GetAsanThreadRegistryLocked()->RunCallbackForEachThreadLocked(
        [](ThreadContextBase *tctx, void *threads) {
          if (tctx->status == ThreadStatusRunning)
!           reinterpret_cast<InternalMmapVector<tid_t> *>(threads)->push_back(
                tctx->os_id);
        },
        threads);
--- 546,556 ----
    __asan::asanThreadArgRetval().GetAllPtrsLocked(ptrs);
  }
  
! void GetRunningThreadsLocked(InternalMmapVector<ThreadID> *threads) {
    GetAsanThreadRegistryLocked()->RunCallbackForEachThreadLocked(
        [](ThreadContextBase *tctx, void *threads) {
          if (tctx->status == ThreadStatusRunning)
!           reinterpret_cast<InternalMmapVector<ThreadID> *>(threads)->push_back(
                tctx->os_id);
        },
        threads);
diff -Nrcpad gcc-16-20251130/libsanitizer/asan/asan_thread.h gcc-16-20251207/libsanitizer/asan/asan_thread.h
*** gcc-16-20251130/libsanitizer/asan/asan_thread.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/asan/asan_thread.h	Sun Dec  7 22:32:17 2025
*************** class AsanThread {
*** 75,81 ****
    struct InitOptions;
    void Init(const InitOptions *options = nullptr);
  
!   void ThreadStart(tid_t os_id);
    thread_return_t RunThread();
  
    uptr stack_top();
--- 75,81 ----
    struct InitOptions;
    void Init(const InitOptions *options = nullptr);
  
!   void ThreadStart(ThreadID os_id);
    thread_return_t RunThread();
  
    uptr stack_top();
*************** class AsanThread {
*** 104,110 ****
      if (!fake_stack_) return;
      FakeStack *t = fake_stack_;
      fake_stack_ = nullptr;
!     SetTLSFakeStack(nullptr);
      t->Destroy(tid);
    }
  
--- 104,110 ----
      if (!fake_stack_) return;
      FakeStack *t = fake_stack_;
      fake_stack_ = nullptr;
!     ResetTLSFakeStack();
      t->Destroy(tid);
    }
  
diff -Nrcpad gcc-16-20251130/libsanitizer/asan/asan_win.cpp gcc-16-20251207/libsanitizer/asan/asan_win.cpp
*** gcc-16-20251130/libsanitizer/asan/asan_win.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/asan/asan_win.cpp	Sun Dec  7 22:32:17 2025
*************** static thread_return_t THREAD_CALLING_CO
*** 145,151 ****
    t->GetStartData(params);
  
    auto res = (*params.start_routine)(params.arg);
-   t->Destroy();  // POSIX calls this from TSD destructor.
    return res;
  }
  
--- 145,150 ----
*************** INTERCEPTOR_WINAPI(HANDLE, CreateThread,
*** 166,171 ****
--- 165,177 ----
                              thr_flags, tid);
  }
  
+ INTERCEPTOR_WINAPI(void, ExitThread, DWORD dwExitCode) {
+   AsanThread *t = (AsanThread *)__asan::GetCurrentThread();
+   if (t)
+     t->Destroy();
+   REAL(ExitThread)(dwExitCode);
+ }
+ 
  // }}}
  
  namespace __asan {
*************** void InitializePlatformInterceptors() {
*** 181,186 ****
--- 187,193 ----
        (LPCWSTR)&InitializePlatformInterceptors, &pinned));
  
    ASAN_INTERCEPT_FUNC(CreateThread);
+   ASAN_INTERCEPT_FUNC(ExitThread);
    ASAN_INTERCEPT_FUNC(SetUnhandledExceptionFilter);
  
  #ifdef _WIN64
*************** uptr FindDynamicShadowStart() {
*** 272,277 ****
--- 279,287 ----
                            GetMmapGranularity());
  }
  
+ // Not used
+ void TryReExecWithoutASLR() {}
+ 
  void AsanCheckDynamicRTPrereqs() {}
  
  void AsanCheckIncompatibleRT() {}
diff -Nrcpad gcc-16-20251130/libsanitizer/asan/asan_win_static_runtime_thunk.cpp gcc-16-20251207/libsanitizer/asan/asan_win_static_runtime_thunk.cpp
*** gcc-16-20251130/libsanitizer/asan/asan_win_static_runtime_thunk.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/asan/asan_win_static_runtime_thunk.cpp	Sun Dec  7 22:32:17 2025
*************** INTERCEPT_LIBRARY_FUNCTION_ASAN(strpbrk)
*** 63,68 ****
--- 63,72 ----
  INTERCEPT_LIBRARY_FUNCTION_ASAN(strspn);
  INTERCEPT_LIBRARY_FUNCTION_ASAN(strstr);
  INTERCEPT_LIBRARY_FUNCTION_ASAN(strtok);
+ INTERCEPT_LIBRARY_FUNCTION_ASAN(wcscat);
+ INTERCEPT_LIBRARY_FUNCTION_ASAN(wcscpy);
+ INTERCEPT_LIBRARY_FUNCTION_ASAN(wcsncat);
+ INTERCEPT_LIBRARY_FUNCTION_ASAN(wcsncpy);
  INTERCEPT_LIBRARY_FUNCTION_ASAN(wcslen);
  INTERCEPT_LIBRARY_FUNCTION_ASAN(wcsnlen);
  
diff -Nrcpad gcc-16-20251130/libsanitizer/builtins/assembly.h gcc-16-20251207/libsanitizer/builtins/assembly.h
*** gcc-16-20251130/libsanitizer/builtins/assembly.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/builtins/assembly.h	Sun Dec  7 22:32:17 2025
***************
*** 14,20 ****
  #ifndef COMPILERRT_ASSEMBLY_H
  #define COMPILERRT_ASSEMBLY_H
  
! #if defined(__linux__) && defined(__CET__)
  #if __has_include(<cet.h>)
  #include <cet.h>
  #endif
--- 14,20 ----
  #ifndef COMPILERRT_ASSEMBLY_H
  #define COMPILERRT_ASSEMBLY_H
  
! #ifdef __CET__
  #if __has_include(<cet.h>)
  #include <cet.h>
  #endif
***************
*** 61,67 ****
  #define LOCAL_LABEL(name) .L ## name
  #define FILE_LEVEL_DIRECTIVE
  #define SYMBOL_IS_FUNC(name)                                                   \
!   .def name SEPARATOR                                                          \
      .scl 2 SEPARATOR                                                           \
      .type 32 SEPARATOR                                                         \
    .endef
--- 61,67 ----
  #define LOCAL_LABEL(name) .L ## name
  #define FILE_LEVEL_DIRECTIVE
  #define SYMBOL_IS_FUNC(name)                                                   \
!   .def FUNC_SYMBOL(name) SEPARATOR                                             \
      .scl 2 SEPARATOR                                                           \
      .type 32 SEPARATOR                                                         \
    .endef
***************
*** 71,89 ****
  
  #endif
  
! #if defined(__arm__) || defined(__aarch64__)
  #define FUNC_ALIGN                                                             \
-   .text SEPARATOR                                                              \
    .balign 16 SEPARATOR
  #else
  #define FUNC_ALIGN
  #endif
  
! // BTI and PAC gnu property note
  #define NT_GNU_PROPERTY_TYPE_0 5
  #define GNU_PROPERTY_AARCH64_FEATURE_1_AND 0xc0000000
  #define GNU_PROPERTY_AARCH64_FEATURE_1_BTI 1
  #define GNU_PROPERTY_AARCH64_FEATURE_1_PAC 2
  
  #if defined(__ARM_FEATURE_BTI_DEFAULT)
  #define BTI_FLAG GNU_PROPERTY_AARCH64_FEATURE_1_BTI
--- 71,105 ----
  
  #endif
  
! #if defined(__aarch64__) && defined(__ELF__) &&                                \
!     defined(COMPILER_RT_EXECUTE_ONLY_CODE)
! // The assembler always creates an implicit '.text' section with default flags
! // (SHF_ALLOC | SHF_EXECINSTR), which is incompatible with the execute-only
! // '.text' section we want to create here because of the missing
! // SHF_AARCH64_PURECODE section flag. To solve this, we use 'unique,0' to
! // differentiate the two sections. The output will therefore have two separate
! // sections named '.text', where code will be placed into the execute-only
! // '.text' section, and the implicitly-created one will be empty.
! #define TEXT_SECTION                                                           \
!   .section .text,"axy",@progbits,unique,0
! #else
! #define TEXT_SECTION                                                           \
!   .text
! #endif
! 
! #if defined(__arm__) || defined(__aarch64__) || defined(__arm64ec__)
  #define FUNC_ALIGN                                                             \
    .balign 16 SEPARATOR
  #else
  #define FUNC_ALIGN
  #endif
  
! // BTI, PAC, and GCS gnu property note
  #define NT_GNU_PROPERTY_TYPE_0 5
  #define GNU_PROPERTY_AARCH64_FEATURE_1_AND 0xc0000000
  #define GNU_PROPERTY_AARCH64_FEATURE_1_BTI 1
  #define GNU_PROPERTY_AARCH64_FEATURE_1_PAC 2
+ #define GNU_PROPERTY_AARCH64_FEATURE_1_GCS 4
  
  #if defined(__ARM_FEATURE_BTI_DEFAULT)
  #define BTI_FLAG GNU_PROPERTY_AARCH64_FEATURE_1_BTI
***************
*** 97,102 ****
--- 113,124 ----
  #define PAC_FLAG 0
  #endif
  
+ #if defined(__ARM_FEATURE_GCS_DEFAULT)
+ #define GCS_FLAG GNU_PROPERTY_AARCH64_FEATURE_1_GCS
+ #else
+ #define GCS_FLAG 0
+ #endif
+ 
  #define GNU_PROPERTY(type, value)                                              \
    .pushsection .note.gnu.property, "a" SEPARATOR                               \
    .p2align 3 SEPARATOR                                                         \
***************
*** 118,128 ****
  #define BTI_J
  #endif
  
! #if (BTI_FLAG | PAC_FLAG) != 0
! #define GNU_PROPERTY_BTI_PAC                                                   \
!   GNU_PROPERTY(GNU_PROPERTY_AARCH64_FEATURE_1_AND, BTI_FLAG | PAC_FLAG)
  #else
! #define GNU_PROPERTY_BTI_PAC
  #endif
  
  #if defined(__clang__) || defined(__GCC_HAVE_DWARF2_CFI_ASM)
--- 140,151 ----
  #define BTI_J
  #endif
  
! #if (BTI_FLAG | PAC_FLAG | GCS_FLAG) != 0
! #define GNU_PROPERTY_BTI_PAC_GCS                                               \
!   GNU_PROPERTY(GNU_PROPERTY_AARCH64_FEATURE_1_AND,                             \
!                BTI_FLAG | PAC_FLAG | GCS_FLAG)
  #else
! #define GNU_PROPERTY_BTI_PAC_GCS
  #endif
  
  #if defined(__clang__) || defined(__GCC_HAVE_DWARF2_CFI_ASM)
***************
*** 194,199 ****
--- 217,239 ----
  #else
  #define WIDE(op) op
  #endif
+ 
+ #if defined(__ARM_FEATURE_PAC_DEFAULT) && defined(__ARM_FEATURE_BTI_DEFAULT)
+ #define PACBTI_LANDING pacbti r12, lr, sp
+ #elif defined(__ARM_FEATURE_PAC_DEFAULT)
+ #define PACBTI_LANDING pac r12, lr, sp
+ #elif defined(__ARM_FEATURE_BTI_DEFAULT)
+ #define PACBTI_LANDING bti
+ #else
+ #define PACBTI_LANDING
+ #endif
+ 
+ #if defined(__ARM_FEATURE_PAUTH)
+ #define PAC_RETURN bxaut r12, lr, sp
+ #else
+ #define PAC_RETURN aut r12, lr, sp SEPARATOR bx lr
+ #endif
+ 
  #else // !defined(__arm)
  #define DECLARE_FUNC_ENCODING
  #define DEFINE_CODE_STATE
***************
*** 208,213 ****
--- 248,263 ----
  #define GLUE4(a, b, c, d) GLUE4_(a, b, c, d)
  
  #define SYMBOL_NAME(name) GLUE(__USER_LABEL_PREFIX__, name)
+ #ifndef __arm64ec__
+ #define FUNC_SYMBOL(name) name
+ #else
+ // On ARM64EC, function names and calls (but not address-taking or data symbol
+ // references) use symbols prefixed with "#".
+ #define QUOTE(a) #a
+ #define STR(a) QUOTE(a)
+ #define HASH #
+ #define FUNC_SYMBOL(name) STR(GLUE2(HASH, name))
+ #endif
  
  #ifdef VISIBILITY_HIDDEN
  #define DECLARE_SYMBOL_VISIBILITY(name)                                        \
***************
*** 220,275 ****
  #endif
  
  #define DEFINE_COMPILERRT_FUNCTION(name)                                       \
    DEFINE_CODE_STATE                                                            \
    FILE_LEVEL_DIRECTIVE SEPARATOR                                               \
!   .globl SYMBOL_NAME(name) SEPARATOR                                           \
    SYMBOL_IS_FUNC(SYMBOL_NAME(name)) SEPARATOR                                  \
    DECLARE_SYMBOL_VISIBILITY(name)                                              \
    DECLARE_FUNC_ENCODING                                                        \
!   SYMBOL_NAME(name):
  
  #define DEFINE_COMPILERRT_THUMB_FUNCTION(name)                                 \
    DEFINE_CODE_STATE                                                            \
    FILE_LEVEL_DIRECTIVE SEPARATOR                                               \
!   .globl SYMBOL_NAME(name) SEPARATOR                                           \
    SYMBOL_IS_FUNC(SYMBOL_NAME(name)) SEPARATOR                                  \
    DECLARE_SYMBOL_VISIBILITY(name) SEPARATOR                                    \
    .thumb_func SEPARATOR                                                        \
!   SYMBOL_NAME(name):
  
  #define DEFINE_COMPILERRT_PRIVATE_FUNCTION(name)                               \
    DEFINE_CODE_STATE                                                            \
    FILE_LEVEL_DIRECTIVE SEPARATOR                                               \
!   .globl SYMBOL_NAME(name) SEPARATOR                                           \
    SYMBOL_IS_FUNC(SYMBOL_NAME(name)) SEPARATOR                                  \
    HIDDEN(SYMBOL_NAME(name)) SEPARATOR                                          \
    DECLARE_FUNC_ENCODING                                                        \
!   SYMBOL_NAME(name):
  
  #define DEFINE_COMPILERRT_PRIVATE_FUNCTION_UNMANGLED(name)                     \
    DEFINE_CODE_STATE                                                            \
!   .globl name SEPARATOR                                                        \
    SYMBOL_IS_FUNC(name) SEPARATOR                                               \
    HIDDEN(name) SEPARATOR                                                       \
    DECLARE_FUNC_ENCODING                                                        \
!   name:
  
  #define DEFINE_COMPILERRT_OUTLINE_FUNCTION_UNMANGLED(name)                     \
    DEFINE_CODE_STATE                                                            \
    FUNC_ALIGN                                                                   \
!   .globl name SEPARATOR                                                        \
    SYMBOL_IS_FUNC(name) SEPARATOR                                               \
!   DECLARE_SYMBOL_VISIBILITY_UNMANGLED(name) SEPARATOR                          \
    DECLARE_FUNC_ENCODING                                                        \
!   name:                                                                        \
    SEPARATOR CFI_START                                                          \
    SEPARATOR BTI_C
  
  #define DEFINE_COMPILERRT_FUNCTION_ALIAS(name, target)                         \
!   .globl SYMBOL_NAME(name) SEPARATOR                                           \
    SYMBOL_IS_FUNC(SYMBOL_NAME(name)) SEPARATOR                                  \
    DECLARE_SYMBOL_VISIBILITY(name) SEPARATOR                                    \
!   .set SYMBOL_NAME(name), SYMBOL_NAME(target) SEPARATOR
  
  #if defined(__ARM_EABI__)
  #define DEFINE_AEABI_FUNCTION_ALIAS(aeabi_name, name)                          \
--- 270,330 ----
  #endif
  
  #define DEFINE_COMPILERRT_FUNCTION(name)                                       \
+   TEXT_SECTION SEPARATOR                                                       \
    DEFINE_CODE_STATE                                                            \
    FILE_LEVEL_DIRECTIVE SEPARATOR                                               \
!   .globl FUNC_SYMBOL(SYMBOL_NAME(name)) SEPARATOR                              \
    SYMBOL_IS_FUNC(SYMBOL_NAME(name)) SEPARATOR                                  \
    DECLARE_SYMBOL_VISIBILITY(name)                                              \
    DECLARE_FUNC_ENCODING                                                        \
!   FUNC_SYMBOL(SYMBOL_NAME(name)):
  
  #define DEFINE_COMPILERRT_THUMB_FUNCTION(name)                                 \
+   TEXT_SECTION SEPARATOR                                                       \
    DEFINE_CODE_STATE                                                            \
    FILE_LEVEL_DIRECTIVE SEPARATOR                                               \
!   .globl FUNC_SYMBOL(SYMBOL_NAME(name)) SEPARATOR                              \
    SYMBOL_IS_FUNC(SYMBOL_NAME(name)) SEPARATOR                                  \
    DECLARE_SYMBOL_VISIBILITY(name) SEPARATOR                                    \
    .thumb_func SEPARATOR                                                        \
!   FUNC_SYMBOL(SYMBOL_NAME(name)):
  
  #define DEFINE_COMPILERRT_PRIVATE_FUNCTION(name)                               \
+   TEXT_SECTION SEPARATOR                                                       \
    DEFINE_CODE_STATE                                                            \
    FILE_LEVEL_DIRECTIVE SEPARATOR                                               \
!   .globl FUNC_SYMBOL(SYMBOL_NAME(name)) SEPARATOR                              \
    SYMBOL_IS_FUNC(SYMBOL_NAME(name)) SEPARATOR                                  \
    HIDDEN(SYMBOL_NAME(name)) SEPARATOR                                          \
    DECLARE_FUNC_ENCODING                                                        \
!   FUNC_SYMBOL(SYMBOL_NAME(name)):
  
  #define DEFINE_COMPILERRT_PRIVATE_FUNCTION_UNMANGLED(name)                     \
+   TEXT_SECTION SEPARATOR                                                       \
    DEFINE_CODE_STATE                                                            \
!   .globl FUNC_SYMBOL(name) SEPARATOR                                           \
    SYMBOL_IS_FUNC(name) SEPARATOR                                               \
    HIDDEN(name) SEPARATOR                                                       \
    DECLARE_FUNC_ENCODING                                                        \
!   FUNC_SYMBOL(name):
  
  #define DEFINE_COMPILERRT_OUTLINE_FUNCTION_UNMANGLED(name)                     \
+   TEXT_SECTION SEPARATOR                                                       \
    DEFINE_CODE_STATE                                                            \
    FUNC_ALIGN                                                                   \
!   .globl FUNC_SYMBOL(name) SEPARATOR                                           \
    SYMBOL_IS_FUNC(name) SEPARATOR                                               \
!   DECLARE_SYMBOL_VISIBILITY_UNMANGLED(FUNC_SYMBOL(name)) SEPARATOR             \
    DECLARE_FUNC_ENCODING                                                        \
!   FUNC_SYMBOL(name):                                                           \
    SEPARATOR CFI_START                                                          \
    SEPARATOR BTI_C
  
  #define DEFINE_COMPILERRT_FUNCTION_ALIAS(name, target)                         \
!   .globl FUNC_SYMBOL(SYMBOL_NAME(name)) SEPARATOR                              \
    SYMBOL_IS_FUNC(SYMBOL_NAME(name)) SEPARATOR                                  \
    DECLARE_SYMBOL_VISIBILITY(name) SEPARATOR                                    \
!   .set FUNC_SYMBOL(SYMBOL_NAME(name)), FUNC_SYMBOL(SYMBOL_NAME(target)) SEPARATOR
  
  #if defined(__ARM_EABI__)
  #define DEFINE_AEABI_FUNCTION_ALIAS(aeabi_name, name)                          \
***************
*** 290,293 ****
--- 345,365 ----
    CFI_END
  #endif
  
+ #ifdef __arm__
+ #include "int_endianness.h"
+ 
+ #if _YUGA_BIG_ENDIAN
+ #define VMOV_TO_DOUBLE(dst, src0, src1) vmov dst, src1, src0 SEPARATOR
+ #define VMOV_FROM_DOUBLE(dst0, dst1, src) vmov dst1, dst0, src SEPARATOR
+ #else
+ #define VMOV_TO_DOUBLE(dst, src0, src1) vmov dst, src0, src1 SEPARATOR
+ #define VMOV_FROM_DOUBLE(dst0, dst1, src) vmov dst0, dst1, src SEPARATOR
+ #endif
+ #endif
+ 
+ #if defined(__ASSEMBLER__) && (defined(__i386__) || defined(__amd64__)) &&     \
+     !defined(__arm64ec__)
+ .att_syntax
+ #endif
+ 
  #endif // COMPILERRT_ASSEMBLY_H
diff -Nrcpad gcc-16-20251130/libsanitizer/configure.tgt gcc-16-20251207/libsanitizer/configure.tgt
*** gcc-16-20251130/libsanitizer/configure.tgt	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/configure.tgt	Sun Dec  7 22:32:17 2025
*************** case "${target}" in
*** 65,71 ****
  		HWASAN_SUPPORTED=yes
  	fi
  	;;
!   x86_64-*-darwin2[01]* | x86_64-*-darwin1[6-9]* | i?86-*-darwin1[6-8]*)
  	TSAN_SUPPORTED=no
  	EXTRA_CXXFLAGS="${EXTRA_CXXFLAGS} -Wl,-undefined,dynamic_lookup"
  	;;
--- 65,71 ----
  		HWASAN_SUPPORTED=yes
  	fi
  	;;
!   x86_64-*-darwin2* | x86_64-*-darwin1[6-9]* | i?86-*-darwin1[6-8]*)
  	TSAN_SUPPORTED=no
  	EXTRA_CXXFLAGS="${EXTRA_CXXFLAGS} -Wl,-undefined,dynamic_lookup"
  	;;
diff -Nrcpad gcc-16-20251130/libsanitizer/hwasan/hwasan.cpp gcc-16-20251207/libsanitizer/hwasan/hwasan.cpp
*** gcc-16-20251130/libsanitizer/hwasan/hwasan.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/hwasan/hwasan.cpp	Sun Dec  7 22:32:17 2025
*************** static void HwasanFormatMemoryUsage(Inte
*** 176,182 ****
        "HWASAN pid: %d rss: %zd threads: %zd stacks: %zd"
        " thr_aux: %zd stack_depot: %zd uniq_stacks: %zd"
        " heap: %zd",
!       internal_getpid(), GetRSS(), thread_stats.n_live_threads,
        thread_stats.total_stack_size,
        thread_stats.n_live_threads * thread_list.MemoryUsedPerThread(),
        sds.allocated, sds.n_uniq_ids, asc[AllocatorStatMapped]);
--- 176,182 ----
        "HWASAN pid: %d rss: %zd threads: %zd stacks: %zd"
        " thr_aux: %zd stack_depot: %zd uniq_stacks: %zd"
        " heap: %zd",
!       (int)internal_getpid(), GetRSS(), thread_stats.n_live_threads,
        thread_stats.total_stack_size,
        thread_stats.n_live_threads * thread_list.MemoryUsedPerThread(),
        sds.allocated, sds.n_uniq_ids, asc[AllocatorStatMapped]);
*************** void __hwasan_handle_longjmp(const void
*** 692,698 ****
          "WARNING: HWASan is ignoring requested __hwasan_handle_longjmp: "
          "stack top: %p; target %p; distance: %p (%zd)\n"
          "False positive error reports may follow\n",
!         (void *)sp, (void *)dst, dst - sp, dst - sp);
      return;
    }
    TagMemory(sp, dst - sp, 0);
--- 692,698 ----
          "WARNING: HWASan is ignoring requested __hwasan_handle_longjmp: "
          "stack top: %p; target %p; distance: %p (%zd)\n"
          "False positive error reports may follow\n",
!         (void *)sp, (void *)dst, (void *)(dst - sp), dst - sp);
      return;
    }
    TagMemory(sp, dst - sp, 0);
diff -Nrcpad gcc-16-20251130/libsanitizer/hwasan/hwasan_fuchsia.cpp gcc-16-20251207/libsanitizer/hwasan/hwasan_fuchsia.cpp
*** gcc-16-20251130/libsanitizer/hwasan/hwasan_fuchsia.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/hwasan/hwasan_fuchsia.cpp	Sun Dec  7 22:32:17 2025
***************
*** 31,36 ****
--- 31,45 ----
  SANITIZER_INTERFACE_ATTRIBUTE
  THREADLOCAL uptr __hwasan_tls;
  
+ namespace __sanitizer {
+ void EarlySanitizerInit() {
+   // Setup the hwasan runtime before any `__libc_extensions_init`s are called.
+   // This is needed because libraries which define this function (like fdio)
+   // may be instrumented and either access `__hwasan_tls` or make runtime calls.
+   __hwasan_init();
+ }
+ }  // namespace __sanitizer
+ 
  namespace __hwasan {
  
  bool InitShadow() {
diff -Nrcpad gcc-16-20251130/libsanitizer/hwasan/hwasan_globals.cpp gcc-16-20251207/libsanitizer/hwasan/hwasan_globals.cpp
*** gcc-16-20251130/libsanitizer/hwasan/hwasan_globals.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/hwasan/hwasan_globals.cpp	Sun Dec  7 22:32:17 2025
*************** ArrayRef<const hwasan_global> HwasanGlob
*** 73,88 ****
          continue;
        }
  
-       // Only libraries with instrumented globals need to be checked against the
-       // code model since they use relocations that aren't checked at link time.
-       CheckCodeModel(base, phdr, phnum);
- 
        auto *global_note = reinterpret_cast<const hwasan_global_note *>(desc);
        auto *globals_begin = reinterpret_cast<const hwasan_global *>(
            note + global_note->begin_relptr);
        auto *globals_end = reinterpret_cast<const hwasan_global *>(
            note + global_note->end_relptr);
  
        return {globals_begin, globals_end};
      }
    }
--- 73,93 ----
          continue;
        }
  
        auto *global_note = reinterpret_cast<const hwasan_global_note *>(desc);
        auto *globals_begin = reinterpret_cast<const hwasan_global *>(
            note + global_note->begin_relptr);
        auto *globals_end = reinterpret_cast<const hwasan_global *>(
            note + global_note->end_relptr);
  
+       // Only libraries with instrumented globals need to be checked against the
+       // code model since they use relocations that aren't checked at link time.
+       //
+       // There is always a HWASan globals note ("Create the note even if we
+       // aren't instrumenting globals." - HWAddressSanitizer.cpp), but we can
+       // elide the code model check if there are no globals.
+       if (globals_begin != globals_end)
+         CheckCodeModel(base, phdr, phnum);
+ 
        return {globals_begin, globals_end};
      }
    }
diff -Nrcpad gcc-16-20251130/libsanitizer/hwasan/hwasan_interceptors_vfork.S gcc-16-20251207/libsanitizer/hwasan/hwasan_interceptors_vfork.S
*** gcc-16-20251130/libsanitizer/hwasan/hwasan_interceptors_vfork.S	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/hwasan/hwasan_interceptors_vfork.S	Sun Dec  7 22:32:17 2025
***************
*** 11,14 ****
  
  NO_EXEC_STACK_DIRECTIVE
  
! GNU_PROPERTY_BTI_PAC
--- 11,14 ----
  
  NO_EXEC_STACK_DIRECTIVE
  
! GNU_PROPERTY_BTI_PAC_GCS
diff -Nrcpad gcc-16-20251130/libsanitizer/hwasan/hwasan_interface_internal.h gcc-16-20251207/libsanitizer/hwasan/hwasan_interface_internal.h
*** gcc-16-20251130/libsanitizer/hwasan/hwasan_interface_internal.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/hwasan/hwasan_interface_internal.h	Sun Dec  7 22:32:17 2025
*************** void *__hwasan_memmove_match_all(void *d
*** 247,252 ****
--- 247,259 ----
  
  SANITIZER_INTERFACE_ATTRIBUTE
  void __hwasan_set_error_report_callback(void (*callback)(const char *));
+ 
+ // hwasan does not need fake stack, so we leave it empty here.
+ SANITIZER_INTERFACE_ATTRIBUTE
+ void __sanitizer_start_switch_fiber(void **, const void *bottom, uptr size);
+ SANITIZER_INTERFACE_ATTRIBUTE
+ void __sanitizer_finish_switch_fiber(void *, const void **bottom_old,
+                                      uptr *size_old);
  }  // extern "C"
  
  #endif  // HWASAN_INTERFACE_INTERNAL_H
diff -Nrcpad gcc-16-20251130/libsanitizer/hwasan/hwasan_malloc_bisect.h gcc-16-20251207/libsanitizer/hwasan/hwasan_malloc_bisect.h
*** gcc-16-20251130/libsanitizer/hwasan/hwasan_malloc_bisect.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/hwasan/hwasan_malloc_bisect.h	Sun Dec  7 22:32:17 2025
*************** static inline bool malloc_bisect(StackTr
*** 41,47 ****
    if (h < left || h > right)
      return false;
    if (flags()->malloc_bisect_dump) {
!     Printf("[alloc] %u %zu\n", h, orig_size);
      stack->Print();
    }
    return true;
--- 41,47 ----
    if (h < left || h > right)
      return false;
    if (flags()->malloc_bisect_dump) {
!     Printf("[alloc] %u %zu\n", (u32)h, orig_size);
      stack->Print();
    }
    return true;
diff -Nrcpad gcc-16-20251130/libsanitizer/hwasan/hwasan_new_delete.cpp gcc-16-20251207/libsanitizer/hwasan/hwasan_new_delete.cpp
*** gcc-16-20251130/libsanitizer/hwasan/hwasan_new_delete.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/hwasan/hwasan_new_delete.cpp	Sun Dec  7 22:32:17 2025
***************
*** 22,44 ****
  #if HWASAN_REPLACE_OPERATORS_NEW_AND_DELETE
  
  // TODO(alekseys): throw std::bad_alloc instead of dying on OOM.
! #  define OPERATOR_NEW_BODY(nothrow)         \
      GET_MALLOC_STACK_TRACE;                  \
      void *res = hwasan_malloc(size, &stack); \
!     if (!nothrow && UNLIKELY(!res))          \
        ReportOutOfMemory(size, &stack);       \
      return res
! #  define OPERATOR_NEW_ALIGN_BODY(nothrow)                               \
      GET_MALLOC_STACK_TRACE;                                              \
      void *res = hwasan_memalign(static_cast<uptr>(align), size, &stack); \
!     if (!nothrow && UNLIKELY(!res))                                      \
        ReportOutOfMemory(size, &stack);                                   \
      return res
  
  #  define OPERATOR_DELETE_BODY \
      GET_MALLOC_STACK_TRACE;    \
      if (ptr)                   \
      hwasan_free(ptr, &stack)
  
  #elif defined(__ANDROID__)
  
--- 22,96 ----
  #if HWASAN_REPLACE_OPERATORS_NEW_AND_DELETE
  
  // TODO(alekseys): throw std::bad_alloc instead of dying on OOM.
! #  define OPERATOR_NEW_BODY                  \
      GET_MALLOC_STACK_TRACE;                  \
      void *res = hwasan_malloc(size, &stack); \
!     if (UNLIKELY(!res))                      \
        ReportOutOfMemory(size, &stack);       \
      return res
! #  define OPERATOR_NEW_BODY_NOTHROW \
!     GET_MALLOC_STACK_TRACE;         \
!     return hwasan_malloc(size, &stack)
! #  define OPERATOR_NEW_BODY_ARRAY            \
!     GET_MALLOC_STACK_TRACE;                  \
!     void *res = hwasan_malloc(size, &stack); \
!     if (UNLIKELY(!res))                      \
!       ReportOutOfMemory(size, &stack);       \
!     return res
! #  define OPERATOR_NEW_BODY_ARRAY_NOTHROW \
!     GET_MALLOC_STACK_TRACE;               \
!     return hwasan_malloc(size, &stack)
! #  define OPERATOR_NEW_BODY_ALIGN                                        \
      GET_MALLOC_STACK_TRACE;                                              \
      void *res = hwasan_memalign(static_cast<uptr>(align), size, &stack); \
!     if (UNLIKELY(!res))                                                  \
!       ReportOutOfMemory(size, &stack);                                   \
!     return res
! #  define OPERATOR_NEW_BODY_ALIGN_NOTHROW \
!     GET_MALLOC_STACK_TRACE;               \
!     return hwasan_memalign(static_cast<uptr>(align), size, &stack)
! #  define OPERATOR_NEW_BODY_ALIGN_ARRAY                                  \
!     GET_MALLOC_STACK_TRACE;                                              \
!     void *res = hwasan_memalign(static_cast<uptr>(align), size, &stack); \
!     if (UNLIKELY(!res))                                                  \
        ReportOutOfMemory(size, &stack);                                   \
      return res
+ #  define OPERATOR_NEW_BODY_ALIGN_ARRAY_NOTHROW \
+     GET_MALLOC_STACK_TRACE;                     \
+     return hwasan_memalign(static_cast<uptr>(align), size, &stack)
  
  #  define OPERATOR_DELETE_BODY \
      GET_MALLOC_STACK_TRACE;    \
      if (ptr)                   \
      hwasan_free(ptr, &stack)
+ #  define OPERATOR_DELETE_BODY_ARRAY \
+     GET_MALLOC_STACK_TRACE;          \
+     if (ptr)                         \
+     hwasan_free(ptr, &stack)
+ #  define OPERATOR_DELETE_BODY_ALIGN \
+     GET_MALLOC_STACK_TRACE;          \
+     if (ptr)                         \
+     hwasan_free(ptr, &stack)
+ #  define OPERATOR_DELETE_BODY_ALIGN_ARRAY \
+     GET_MALLOC_STACK_TRACE;                \
+     if (ptr)                               \
+     hwasan_free(ptr, &stack)
+ #  define OPERATOR_DELETE_BODY_SIZE \
+     GET_MALLOC_STACK_TRACE;         \
+     if (ptr)                        \
+     hwasan_free(ptr, &stack)
+ #  define OPERATOR_DELETE_BODY_SIZE_ARRAY \
+     GET_MALLOC_STACK_TRACE;               \
+     if (ptr)                              \
+     hwasan_free(ptr, &stack)
+ #  define OPERATOR_DELETE_BODY_SIZE_ALIGN \
+     GET_MALLOC_STACK_TRACE;               \
+     if (ptr)                              \
+     hwasan_free(ptr, &stack)
+ #  define OPERATOR_DELETE_BODY_SIZE_ALIGN_ARRAY \
+     GET_MALLOC_STACK_TRACE;                     \
+     if (ptr)                                    \
+     hwasan_free(ptr, &stack)
  
  #elif defined(__ANDROID__)
  
***************
*** 46,53 ****
  // since we previously released a runtime that intercepted these functions,
  // removing the interceptors would break ABI. Therefore we simply forward to
  // malloc and free.
! #  define OPERATOR_NEW_BODY(nothrow) return malloc(size)
  #  define OPERATOR_DELETE_BODY free(ptr)
  
  #endif
  
--- 98,111 ----
  // since we previously released a runtime that intercepted these functions,
  // removing the interceptors would break ABI. Therefore we simply forward to
  // malloc and free.
! #  define OPERATOR_NEW_BODY return malloc(size)
! #  define OPERATOR_NEW_BODY_NOTHROW return malloc(size)
! #  define OPERATOR_NEW_BODY_ARRAY return malloc(size)
! #  define OPERATOR_NEW_BODY_ARRAY_NOTHROW return malloc(size)
  #  define OPERATOR_DELETE_BODY free(ptr)
+ #  define OPERATOR_DELETE_BODY_ARRAY free(ptr)
+ #  define OPERATOR_DELETE_BODY_SIZE free(ptr)
+ #  define OPERATOR_DELETE_BODY_SIZE_ARRAY free(ptr)
  
  #endif
  
*************** struct nothrow_t {};
*** 61,79 ****
  }  // namespace std
  
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void *operator new(size_t size) {
!   OPERATOR_NEW_BODY(false /*nothrow*/);
  }
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void *operator new[](
      size_t size) {
!   OPERATOR_NEW_BODY(false /*nothrow*/);
  }
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void *operator new(
      size_t size, std::nothrow_t const &) {
!   OPERATOR_NEW_BODY(true /*nothrow*/);
  }
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void *operator new[](
      size_t size, std::nothrow_t const &) {
!   OPERATOR_NEW_BODY(true /*nothrow*/);
  }
  
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void operator delete(
--- 119,137 ----
  }  // namespace std
  
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void *operator new(size_t size) {
!   OPERATOR_NEW_BODY;
  }
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void *operator new[](
      size_t size) {
!   OPERATOR_NEW_BODY_ARRAY;
  }
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void *operator new(
      size_t size, std::nothrow_t const &) {
!   OPERATOR_NEW_BODY_NOTHROW;
  }
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void *operator new[](
      size_t size, std::nothrow_t const &) {
!   OPERATOR_NEW_BODY_ARRAY_NOTHROW;
  }
  
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void operator delete(
*************** INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATT
*** 82,88 ****
  }
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void operator delete[](
      void *ptr) NOEXCEPT {
!   OPERATOR_DELETE_BODY;
  }
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void operator delete(
      void *ptr, std::nothrow_t const &) {
--- 140,146 ----
  }
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void operator delete[](
      void *ptr) NOEXCEPT {
!   OPERATOR_DELETE_BODY_ARRAY;
  }
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void operator delete(
      void *ptr, std::nothrow_t const &) {
*************** INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATT
*** 90,109 ****
  }
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void operator delete[](
      void *ptr, std::nothrow_t const &) {
!   OPERATOR_DELETE_BODY;
  }
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void operator delete(
      void *ptr, size_t) NOEXCEPT {
!   OPERATOR_DELETE_BODY;
  }
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void operator delete[](
      void *ptr, size_t) NOEXCEPT {
!   OPERATOR_DELETE_BODY;
  }
  
  #endif  // OPERATOR_NEW_BODY
  
! #ifdef OPERATOR_NEW_ALIGN_BODY
  
  namespace std {
  enum class align_val_t : size_t {};
--- 148,167 ----
  }
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void operator delete[](
      void *ptr, std::nothrow_t const &) {
!   OPERATOR_DELETE_BODY_ARRAY;
  }
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void operator delete(
      void *ptr, size_t) NOEXCEPT {
!   OPERATOR_DELETE_BODY_SIZE;
  }
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void operator delete[](
      void *ptr, size_t) NOEXCEPT {
!   OPERATOR_DELETE_BODY_SIZE_ARRAY;
  }
  
  #endif  // OPERATOR_NEW_BODY
  
! #ifdef OPERATOR_NEW_BODY_ALIGN
  
  namespace std {
  enum class align_val_t : size_t {};
*************** enum class align_val_t : size_t {};
*** 111,162 ****
  
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void *operator new(
      size_t size, std::align_val_t align) {
!   OPERATOR_NEW_ALIGN_BODY(false /*nothrow*/);
  }
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void *operator new[](
      size_t size, std::align_val_t align) {
!   OPERATOR_NEW_ALIGN_BODY(false /*nothrow*/);
  }
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void *operator new(
      size_t size, std::align_val_t align, std::nothrow_t const &) {
!   OPERATOR_NEW_ALIGN_BODY(true /*nothrow*/);
  }
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void *operator new[](
      size_t size, std::align_val_t align, std::nothrow_t const &) {
!   OPERATOR_NEW_ALIGN_BODY(true /*nothrow*/);
  }
  
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void operator delete(
      void *ptr, std::align_val_t align) NOEXCEPT {
!   OPERATOR_DELETE_BODY;
  }
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void operator delete[](
      void *ptr, std::align_val_t) NOEXCEPT {
!   OPERATOR_DELETE_BODY;
  }
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void operator delete(
      void *ptr, std::align_val_t, std::nothrow_t const &) NOEXCEPT {
!   OPERATOR_DELETE_BODY;
  }
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void operator delete[](
      void *ptr, std::align_val_t, std::nothrow_t const &) NOEXCEPT {
!   OPERATOR_DELETE_BODY;
  }
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void operator delete(
      void *ptr, size_t, std::align_val_t) NOEXCEPT {
!   OPERATOR_DELETE_BODY;
  }
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void operator delete[](
      void *ptr, size_t, std::align_val_t) NOEXCEPT {
!   OPERATOR_DELETE_BODY;
  }
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void operator delete(
      void *ptr, size_t, std::align_val_t, std::nothrow_t const &) NOEXCEPT {
!   OPERATOR_DELETE_BODY;
  }
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void operator delete[](
      void *ptr, size_t, std::align_val_t, std::nothrow_t const &) NOEXCEPT {
!   OPERATOR_DELETE_BODY;
  }
  
! #endif  // OPERATOR_NEW_ALIGN_BODY
--- 169,220 ----
  
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void *operator new(
      size_t size, std::align_val_t align) {
!   OPERATOR_NEW_BODY_ALIGN;
  }
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void *operator new[](
      size_t size, std::align_val_t align) {
!   OPERATOR_NEW_BODY_ALIGN_ARRAY;
  }
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void *operator new(
      size_t size, std::align_val_t align, std::nothrow_t const &) {
!   OPERATOR_NEW_BODY_ALIGN_NOTHROW;
  }
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void *operator new[](
      size_t size, std::align_val_t align, std::nothrow_t const &) {
!   OPERATOR_NEW_BODY_ALIGN_ARRAY_NOTHROW;
  }
  
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void operator delete(
      void *ptr, std::align_val_t align) NOEXCEPT {
!   OPERATOR_DELETE_BODY_ALIGN;
  }
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void operator delete[](
      void *ptr, std::align_val_t) NOEXCEPT {
!   OPERATOR_DELETE_BODY_ALIGN_ARRAY;
  }
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void operator delete(
      void *ptr, std::align_val_t, std::nothrow_t const &) NOEXCEPT {
!   OPERATOR_DELETE_BODY_ALIGN;
  }
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void operator delete[](
      void *ptr, std::align_val_t, std::nothrow_t const &) NOEXCEPT {
!   OPERATOR_DELETE_BODY_ALIGN_ARRAY;
  }
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void operator delete(
      void *ptr, size_t, std::align_val_t) NOEXCEPT {
!   OPERATOR_DELETE_BODY_SIZE_ALIGN;
  }
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void operator delete[](
      void *ptr, size_t, std::align_val_t) NOEXCEPT {
!   OPERATOR_DELETE_BODY_SIZE_ALIGN_ARRAY;
  }
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void operator delete(
      void *ptr, size_t, std::align_val_t, std::nothrow_t const &) NOEXCEPT {
!   OPERATOR_DELETE_BODY_SIZE_ALIGN;
  }
  INTERCEPTOR_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void operator delete[](
      void *ptr, size_t, std::align_val_t, std::nothrow_t const &) NOEXCEPT {
!   OPERATOR_DELETE_BODY_SIZE_ALIGN_ARRAY;
  }
  
! #endif  // OPERATOR_NEW_BODY_ALIGN
diff -Nrcpad gcc-16-20251130/libsanitizer/hwasan/hwasan_platform_interceptors.h gcc-16-20251207/libsanitizer/hwasan/hwasan_platform_interceptors.h
*** gcc-16-20251130/libsanitizer/hwasan/hwasan_platform_interceptors.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/hwasan/hwasan_platform_interceptors.h	Sun Dec  7 22:32:17 2025
***************
*** 200,211 ****
--- 200,217 ----
  #undef SANITIZER_INTERCEPT_CLOCK_GETCPUCLOCKID
  #define SANITIZER_INTERCEPT_CLOCK_GETCPUCLOCKID 0
  
+ #undef SANITIZER_INTERCEPT_TIMER_CREATE
+ #define SANITIZER_INTERCEPT_TIMER_CREATE 0
+ 
  #undef SANITIZER_INTERCEPT_GETITIMER
  #define SANITIZER_INTERCEPT_GETITIMER 0
  
  #undef SANITIZER_INTERCEPT_TIME
  #define SANITIZER_INTERCEPT_TIME 0
  
+ #undef SANITIZER_INTERCEPT_TIMESPEC_GET
+ #define SANITIZER_INTERCEPT_TIMESPEC_GET 0
+ 
  #undef SANITIZER_INTERCEPT_GLOB
  #define SANITIZER_INTERCEPT_GLOB 0
  
diff -Nrcpad gcc-16-20251130/libsanitizer/hwasan/hwasan_report.cpp gcc-16-20251207/libsanitizer/hwasan/hwasan_report.cpp
*** gcc-16-20251130/libsanitizer/hwasan/hwasan_report.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/hwasan/hwasan_report.cpp	Sun Dec  7 22:32:17 2025
*************** static void PrintStackAllocations(const
*** 306,313 ****
            "%p is located %zd bytes %s a %zd-byte local variable %s "
            "[%p,%p) "
            "in %s %s\n",
!           untagged_addr, offset, whence, local.size, local.name, best_beg,
!           best_beg + local.size, local.function_name, location.data());
        location.clear();
        Printf("%s\n", d.Default());
      }
--- 306,314 ----
            "%p is located %zd bytes %s a %zd-byte local variable %s "
            "[%p,%p) "
            "in %s %s\n",
!           (void *)untagged_addr, offset, whence, local.size, local.name,
!           (void *)best_beg, (void *)(best_beg + local.size),
!           local.function_name, location.data());
        location.clear();
        Printf("%s\n", d.Default());
      }
*************** void BaseReport::PrintHeapOrGlobalCandid
*** 737,745 ****
      Printf("%s", d.Default());
      Printf("%s", d.Location());
      Printf("%p is located %zd bytes %s a %zd-byte region [%p,%p)\n",
!            untagged_addr, offset, whence,
!            candidate.heap.end - candidate.heap.begin, candidate.heap.begin,
!            candidate.heap.end);
      Printf("%s", d.Allocation());
      Printf("allocated by thread T%u here:\n", candidate.heap.thread_id);
      Printf("%s", d.Default());
--- 738,746 ----
      Printf("%s", d.Default());
      Printf("%s", d.Location());
      Printf("%p is located %zd bytes %s a %zd-byte region [%p,%p)\n",
!            (void*)untagged_addr, offset, whence,
!            candidate.heap.end - candidate.heap.begin,
!            (void*)candidate.heap.begin, (void*)candidate.heap.end);
      Printf("%s", d.Allocation());
      Printf("allocated by thread T%u here:\n", candidate.heap.thread_id);
      Printf("%s", d.Default());
*************** void BaseReport::PrintHeapOrGlobalCandid
*** 762,772 ****
        Printf(
            "%p is located %zd bytes %s a %zd-byte global variable "
            "%s [%p,%p) in %s\n",
!           untagged_addr,
            candidate.after ? untagged_addr - (info.start + info.size)
                            : info.start - untagged_addr,
            candidate.after ? "after" : "before", info.size, info.name,
!           info.start, info.start + info.size, module_name);
      } else {
        uptr size = GetGlobalSizeFromDescriptor(candidate.untagged_addr);
        if (size == 0)
--- 763,773 ----
        Printf(
            "%p is located %zd bytes %s a %zd-byte global variable "
            "%s [%p,%p) in %s\n",
!           (void *)untagged_addr,
            candidate.after ? untagged_addr - (info.start + info.size)
                            : info.start - untagged_addr,
            candidate.after ? "after" : "before", info.size, info.name,
!           (void *)info.start, (void *)(info.start + info.size), module_name);
      } else {
        uptr size = GetGlobalSizeFromDescriptor(candidate.untagged_addr);
        if (size == 0)
*************** void BaseReport::PrintHeapOrGlobalCandid
*** 774,787 ****
          Printf(
              "%p is located %s a global variable in "
              "\n    #0 0x%x (%s+0x%x)\n",
!             untagged_addr, candidate.after ? "after" : "before",
!             candidate.untagged_addr, module_name, module_address);
        else
          Printf(
              "%p is located %s a %zd-byte global variable in "
              "\n    #0 0x%x (%s+0x%x)\n",
!             untagged_addr, candidate.after ? "after" : "before", size,
!             candidate.untagged_addr, module_name, module_address);
      }
      Printf("%s", d.Default());
    }
--- 775,788 ----
          Printf(
              "%p is located %s a global variable in "
              "\n    #0 0x%x (%s+0x%x)\n",
!             (void*)untagged_addr, candidate.after ? "after" : "before",
!             (u32)candidate.untagged_addr, module_name, (u32)module_address);
        else
          Printf(
              "%p is located %s a %zd-byte global variable in "
              "\n    #0 0x%x (%s+0x%x)\n",
!             (void*)untagged_addr, candidate.after ? "after" : "before", size,
!             (u32)candidate.untagged_addr, module_name, (u32)module_address);
      }
      Printf("%s", d.Default());
    }
*************** void BaseReport::PrintAddressDescription
*** 792,799 ****
    int num_descriptions_printed = 0;
  
    if (MemIsShadow(untagged_addr)) {
!     Printf("%s%p is HWAsan shadow memory.\n%s", d.Location(), untagged_addr,
!            d.Default());
      return;
    }
  
--- 793,800 ----
    int num_descriptions_printed = 0;
  
    if (MemIsShadow(untagged_addr)) {
!     Printf("%s%p is HWAsan shadow memory.\n%s", d.Location(),
!            (void *)untagged_addr, d.Default());
      return;
    }
  
*************** void BaseReport::PrintAddressDescription
*** 802,808 ****
      Printf(
          "%s[%p,%p) is a %s %s heap chunk; "
          "size: %zd offset: %zd\n%s",
!         d.Location(), heap.begin, heap.begin + heap.size,
          heap.from_small_heap ? "small" : "large",
          heap.is_allocated ? "allocated" : "unallocated", heap.size,
          untagged_addr - heap.begin, d.Default());
--- 803,809 ----
      Printf(
          "%s[%p,%p) is a %s %s heap chunk; "
          "size: %zd offset: %zd\n%s",
!         d.Location(), (void *)heap.begin, (void *)(heap.begin + heap.size),
          heap.from_small_heap ? "small" : "large",
          heap.is_allocated ? "allocated" : "unallocated", heap.size,
          untagged_addr - heap.begin, d.Default());
*************** void BaseReport::PrintAddressDescription
*** 821,828 ****
      Printf("%s", d.Error());
      Printf("\nCause: stack tag-mismatch\n");
      Printf("%s", d.Location());
!     Printf("Address %p is located in stack of thread T%zd\n", untagged_addr,
!            sa.thread_id());
      Printf("%s", d.Default());
      announce_by_id(sa.thread_id());
      PrintStackAllocations(sa.get(), ptr_tag, untagged_addr);
--- 822,829 ----
      Printf("%s", d.Error());
      Printf("\nCause: stack tag-mismatch\n");
      Printf("%s", d.Location());
!     Printf("Address %p is located in stack of thread T%zd\n",
!            (void *)untagged_addr, (ssize)sa.thread_id());
      Printf("%s", d.Default());
      announce_by_id(sa.thread_id());
      PrintStackAllocations(sa.get(), ptr_tag, untagged_addr);
*************** void BaseReport::PrintAddressDescription
*** 842,850 ****
      Printf("\nCause: use-after-free\n");
      Printf("%s", d.Location());
      Printf("%p is located %zd bytes inside a %zd-byte region [%p,%p)\n",
!            untagged_addr, untagged_addr - UntagAddr(har.tagged_addr),
!            har.requested_size, UntagAddr(har.tagged_addr),
!            UntagAddr(har.tagged_addr) + har.requested_size);
      Printf("%s", d.Allocation());
      Printf("freed by thread T%u here:\n", ha.free_thread_id);
      Printf("%s", d.Default());
--- 843,851 ----
      Printf("\nCause: use-after-free\n");
      Printf("%s", d.Location());
      Printf("%p is located %zd bytes inside a %zd-byte region [%p,%p)\n",
!            (void*)untagged_addr, untagged_addr - UntagAddr(har.tagged_addr),
!            (ssize)har.requested_size, (void*)UntagAddr(har.tagged_addr),
!            (void*)(UntagAddr(har.tagged_addr) + har.requested_size));
      Printf("%s", d.Allocation());
      Printf("freed by thread T%u here:\n", ha.free_thread_id);
      Printf("%s", d.Default());
*************** void BaseReport::PrintAddressDescription
*** 858,864 ****
      // Print a developer note: the index of this heap object
      // in the thread's deallocation ring buffer.
      Printf("hwasan_dev_note_heap_rb_distance: %zd %zd\n", ha.ring_index + 1,
!            flags()->heap_history_size);
      Printf("hwasan_dev_note_num_matching_addrs: %zd\n", ha.num_matching_addrs);
      Printf("hwasan_dev_note_num_matching_addrs_4b: %zd\n",
             ha.num_matching_addrs_4b);
--- 859,865 ----
      // Print a developer note: the index of this heap object
      // in the thread's deallocation ring buffer.
      Printf("hwasan_dev_note_heap_rb_distance: %zd %zd\n", ha.ring_index + 1,
!            (ssize)flags()->heap_history_size);
      Printf("hwasan_dev_note_num_matching_addrs: %zd\n", ha.num_matching_addrs);
      Printf("hwasan_dev_note_num_matching_addrs_4b: %zd\n",
             ha.num_matching_addrs_4b);
*************** InvalidFreeReport::~InvalidFreeReport()
*** 915,924 ****
    const Thread *thread = GetCurrentThread();
    if (thread) {
      Report("ERROR: %s: %s on address %p at pc %p on thread T%zd\n",
!            SanitizerToolName, bug_type, untagged_addr, pc, thread->unique_id());
    } else {
      Report("ERROR: %s: %s on address %p at pc %p on unknown thread\n",
!            SanitizerToolName, bug_type, untagged_addr, pc);
    }
    Printf("%s", d.Access());
    if (shadow.addr) {
--- 916,926 ----
    const Thread *thread = GetCurrentThread();
    if (thread) {
      Report("ERROR: %s: %s on address %p at pc %p on thread T%zd\n",
!            SanitizerToolName, bug_type, (void *)untagged_addr, (void *)pc,
!            (ssize)thread->unique_id());
    } else {
      Report("ERROR: %s: %s on address %p at pc %p on unknown thread\n",
!            SanitizerToolName, bug_type, (void *)untagged_addr, (void *)pc);
    }
    Printf("%s", d.Access());
    if (shadow.addr) {
*************** TailOverwrittenReport::~TailOverwrittenR
*** 967,973 ****
    Printf("%s", d.Error());
    const char *bug_type = "allocation-tail-overwritten";
    Report("ERROR: %s: %s; heap object [%p,%p) of size %zd\n", SanitizerToolName,
!          bug_type, untagged_addr, untagged_addr + orig_size, orig_size);
    Printf("\n%s", d.Default());
    Printf(
        "Stack of invalid access unknown. Issue detected at deallocation "
--- 969,976 ----
    Printf("%s", d.Error());
    const char *bug_type = "allocation-tail-overwritten";
    Report("ERROR: %s: %s; heap object [%p,%p) of size %zd\n", SanitizerToolName,
!          bug_type, (void *)untagged_addr, (void *)(untagged_addr + orig_size),
!          orig_size);
    Printf("\n%s", d.Default());
    Printf(
        "Stack of invalid access unknown. Issue detected at deallocation "
*************** TagMismatchReport::~TagMismatchReport()
*** 1037,1043 ****
    uptr pc = GetTopPc(stack);
    Printf("%s", d.Error());
    Report("ERROR: %s: %s on address %p at pc %p\n", SanitizerToolName, bug_type,
!          untagged_addr, pc);
  
    Thread *t = GetCurrentThread();
  
--- 1040,1046 ----
    uptr pc = GetTopPc(stack);
    Printf("%s", d.Error());
    Report("ERROR: %s: %s on address %p at pc %p\n", SanitizerToolName, bug_type,
!          (void *)untagged_addr, (void *)pc);
  
    Thread *t = GetCurrentThread();
  
*************** TagMismatchReport::~TagMismatchReport()
*** 1049,1060 ****
          GetShortTagCopy(MemToShadow(untagged_addr + mismatch_offset));
      Printf(
          "%s of size %zu at %p tags: %02x/%02x(%02x) (ptr/mem) in thread T%zd\n",
!         is_store ? "WRITE" : "READ", access_size, untagged_addr, ptr_tag,
!         mem_tag, short_tag, t->unique_id());
    } else {
      Printf("%s of size %zu at %p tags: %02x/%02x (ptr/mem) in thread T%zd\n",
!            is_store ? "WRITE" : "READ", access_size, untagged_addr, ptr_tag,
!            mem_tag, t->unique_id());
    }
    if (mismatch_offset)
      Printf("Invalid access starting at offset %zu\n", mismatch_offset);
--- 1052,1063 ----
          GetShortTagCopy(MemToShadow(untagged_addr + mismatch_offset));
      Printf(
          "%s of size %zu at %p tags: %02x/%02x(%02x) (ptr/mem) in thread T%zd\n",
!         is_store ? "WRITE" : "READ", access_size, (void *)untagged_addr,
!         ptr_tag, mem_tag, short_tag, (ssize)t->unique_id());
    } else {
      Printf("%s of size %zu at %p tags: %02x/%02x (ptr/mem) in thread T%zd\n",
!            is_store ? "WRITE" : "READ", access_size, (void *)untagged_addr,
!            ptr_tag, mem_tag, (ssize)t->unique_id());
    }
    if (mismatch_offset)
      Printf("Invalid access starting at offset %zu\n", mismatch_offset);
*************** void ReportTagMismatch(StackTrace *stack
*** 1093,1099 ****
  // See the frame breakdown defined in __hwasan_tag_mismatch (from
  // hwasan_tag_mismatch_{aarch64,riscv64}.S).
  void ReportRegisters(const uptr *frame, uptr pc) {
!   Printf("\nRegisters where the failure occurred (pc %p):\n", pc);
  
    // We explicitly print a single line (4 registers/line) each iteration to
    // reduce the amount of logcat error messages printed. Each Printf() will
--- 1096,1102 ----
  // See the frame breakdown defined in __hwasan_tag_mismatch (from
  // hwasan_tag_mismatch_{aarch64,riscv64}.S).
  void ReportRegisters(const uptr *frame, uptr pc) {
!   Printf("\nRegisters where the failure occurred (pc %p):\n", (void *)pc);
  
    // We explicitly print a single line (4 registers/line) each iteration to
    // reduce the amount of logcat error messages printed. Each Printf() will
diff -Nrcpad gcc-16-20251130/libsanitizer/hwasan/hwasan_setjmp_aarch64.S gcc-16-20251207/libsanitizer/hwasan/hwasan_setjmp_aarch64.S
*** gcc-16-20251130/libsanitizer/hwasan/hwasan_setjmp_aarch64.S	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/hwasan/hwasan_setjmp_aarch64.S	Sun Dec  7 22:32:17 2025
***************
*** 28,34 ****
  // stack pointer when compiling a C function.
  // Hence we have to write this function in assembly.
  
! .section .text
  .file "hwasan_setjmp_aarch64.S"
  
  .global ASM_WRAPPER_NAME(setjmp)
--- 28,34 ----
  // stack pointer when compiling a C function.
  // Hence we have to write this function in assembly.
  
! TEXT_SECTION
  .file "hwasan_setjmp_aarch64.S"
  
  .global ASM_WRAPPER_NAME(setjmp)
*************** ASM_TRAMPOLINE_ALIAS(_setjmp, setjmp)
*** 99,102 ****
  // We do not need executable stack.
  NO_EXEC_STACK_DIRECTIVE
  
! GNU_PROPERTY_BTI_PAC
--- 99,102 ----
  // We do not need executable stack.
  NO_EXEC_STACK_DIRECTIVE
  
! GNU_PROPERTY_BTI_PAC_GCS
diff -Nrcpad gcc-16-20251130/libsanitizer/hwasan/hwasan_setjmp_x86_64.S gcc-16-20251207/libsanitizer/hwasan/hwasan_setjmp_x86_64.S
*** gcc-16-20251130/libsanitizer/hwasan/hwasan_setjmp_x86_64.S	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/hwasan/hwasan_setjmp_x86_64.S	Sun Dec  7 22:32:17 2025
***************
*** 30,35 ****
--- 30,36 ----
  
  .section .text
  .file "hwasan_setjmp_x86_64.S"
+ .att_syntax
  
  .global ASM_WRAPPER_NAME(setjmp)
  ASM_TYPE_FUNCTION(ASM_WRAPPER_NAME(setjmp))
diff -Nrcpad gcc-16-20251130/libsanitizer/hwasan/hwasan_tag_mismatch_aarch64.S gcc-16-20251207/libsanitizer/hwasan/hwasan_tag_mismatch_aarch64.S
*** gcc-16-20251130/libsanitizer/hwasan/hwasan_tag_mismatch_aarch64.S	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/hwasan/hwasan_tag_mismatch_aarch64.S	Sun Dec  7 22:32:17 2025
***************
*** 70,76 ****
  // clobbering the x17 register in error reports, and that the program will have
  // a runtime dependency on the __hwasan_tag_mismatch_v2 symbol therefore it will
  // fail to start up given an older (i.e. incompatible) runtime.
! .section .text
  .file "hwasan_tag_mismatch_aarch64.S"
  .global __hwasan_tag_mismatch
  .type __hwasan_tag_mismatch, %function
--- 70,76 ----
  // clobbering the x17 register in error reports, and that the program will have
  // a runtime dependency on the __hwasan_tag_mismatch_v2 symbol therefore it will
  // fail to start up given an older (i.e. incompatible) runtime.
! TEXT_SECTION
  .file "hwasan_tag_mismatch_aarch64.S"
  .global __hwasan_tag_mismatch
  .type __hwasan_tag_mismatch, %function
*************** mismatch:
*** 157,160 ****
  // We do not need executable stack.
  NO_EXEC_STACK_DIRECTIVE
  
! GNU_PROPERTY_BTI_PAC
--- 157,160 ----
  // We do not need executable stack.
  NO_EXEC_STACK_DIRECTIVE
  
! GNU_PROPERTY_BTI_PAC_GCS
diff -Nrcpad gcc-16-20251130/libsanitizer/hwasan/hwasan_thread.cpp gcc-16-20251207/libsanitizer/hwasan/hwasan_thread.cpp
*** gcc-16-20251130/libsanitizer/hwasan/hwasan_thread.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/hwasan/hwasan_thread.cpp	Sun Dec  7 22:32:17 2025
*************** void Thread::Destroy() {
*** 119,128 ****
    *GetCurrentThreadLongPtr() = 0;
  }
  
  void Thread::Print(const char *Prefix) {
!   Printf("%sT%zd %p stack: [%p,%p) sz: %zd tls: [%p,%p)\n", Prefix, unique_id_,
!          (void *)this, stack_bottom(), stack_top(),
!          stack_top() - stack_bottom(), tls_begin(), tls_end());
  }
  
  static u32 xorshift(u32 state) {
--- 119,182 ----
    *GetCurrentThreadLongPtr() = 0;
  }
  
+ void Thread::StartSwitchFiber(uptr bottom, uptr size) {
+   if (atomic_load(&stack_switching_, memory_order_acquire)) {
+     Report("ERROR: starting fiber switch while in fiber switch\n");
+     Die();
+   }
+ 
+   next_stack_bottom_ = bottom;
+   next_stack_top_ = bottom + size;
+   atomic_store(&stack_switching_, 1, memory_order_release);
+ }
+ 
+ void Thread::FinishSwitchFiber(uptr *bottom_old, uptr *size_old) {
+   if (!atomic_load(&stack_switching_, memory_order_acquire)) {
+     Report("ERROR: finishing a fiber switch that has not started\n");
+     Die();
+   }
+ 
+   if (bottom_old)
+     *bottom_old = stack_bottom_;
+   if (size_old)
+     *size_old = stack_top_ - stack_bottom_;
+   stack_bottom_ = next_stack_bottom_;
+   stack_top_ = next_stack_top_;
+   atomic_store(&stack_switching_, 0, memory_order_release);
+   next_stack_top_ = 0;
+   next_stack_bottom_ = 0;
+ }
+ 
+ inline Thread::StackBounds Thread::GetStackBounds() const {
+   if (!atomic_load(&stack_switching_, memory_order_acquire)) {
+     // Make sure the stack bounds are fully initialized.
+     if (stack_bottom_ >= stack_top_)
+       return {0, 0};
+     return {stack_bottom_, stack_top_};
+   }
+   const uptr cur_stack = (uptr)__builtin_frame_address(0);
+   // Note: need to check next stack first, because FinishSwitchFiber
+   // may be in process of overwriting stack_top_/bottom_. But in such case
+   // we are already on the next stack.
+   if (cur_stack >= next_stack_bottom_ && cur_stack < next_stack_top_)
+     return {next_stack_bottom_, next_stack_top_};
+   return {stack_bottom_, stack_top_};
+ }
+ 
+ uptr Thread::stack_top() { return GetStackBounds().top; }
+ 
+ uptr Thread::stack_bottom() { return GetStackBounds().bottom; }
+ 
+ uptr Thread::stack_size() {
+   const auto bounds = GetStackBounds();
+   return bounds.top - bounds.bottom;
+ }
+ 
  void Thread::Print(const char *Prefix) {
!   Printf("%sT%zd %p stack: [%p,%p) sz: %zd tls: [%p,%p)\n", Prefix,
!          (ssize)unique_id_, (void *)this, (void *)stack_bottom(),
!          (void *)stack_top(), stack_top() - stack_bottom(), (void *)tls_begin(),
!          (void *)tls_end());
  }
  
  static u32 xorshift(u32 state) {
*************** static __hwasan::HwasanThreadList *GetHw
*** 174,180 ****
    return &tl;
  }
  
! static __hwasan::Thread *GetThreadByOsIDLocked(tid_t os_id) {
    return GetHwasanThreadListLocked()->FindThreadLocked(
        [os_id](__hwasan::Thread *t) { return t->os_id() == os_id; });
  }
--- 228,234 ----
    return &tl;
  }
  
! static __hwasan::Thread *GetThreadByOsIDLocked(ThreadID os_id) {
    return GetHwasanThreadListLocked()->FindThreadLocked(
        [os_id](__hwasan::Thread *t) { return t->os_id() == os_id; });
  }
*************** void UnlockThreads() {
*** 191,197 ****
  
  void EnsureMainThreadIDIsCorrect() { __hwasan::EnsureMainThreadIDIsCorrect(); }
  
! bool GetThreadRangesLocked(tid_t os_id, uptr *stack_begin, uptr *stack_end,
                             uptr *tls_begin, uptr *tls_end, uptr *cache_begin,
                             uptr *cache_end, DTLS **dtls) {
    auto *t = GetThreadByOsIDLocked(os_id);
--- 245,251 ----
  
  void EnsureMainThreadIDIsCorrect() { __hwasan::EnsureMainThreadIDIsCorrect(); }
  
! bool GetThreadRangesLocked(ThreadID os_id, uptr *stack_begin, uptr *stack_end,
                             uptr *tls_begin, uptr *tls_end, uptr *cache_begin,
                             uptr *cache_end, DTLS **dtls) {
    auto *t = GetThreadByOsIDLocked(os_id);
*************** bool GetThreadRangesLocked(tid_t os_id,
*** 210,216 ****
  
  void GetAllThreadAllocatorCachesLocked(InternalMmapVector<uptr> *caches) {}
  
! void GetThreadExtraStackRangesLocked(tid_t os_id,
                                       InternalMmapVector<Range> *ranges) {}
  void GetThreadExtraStackRangesLocked(InternalMmapVector<Range> *ranges) {}
  
--- 264,270 ----
  
  void GetAllThreadAllocatorCachesLocked(InternalMmapVector<uptr> *caches) {}
  
! void GetThreadExtraStackRangesLocked(ThreadID os_id,
                                       InternalMmapVector<Range> *ranges) {}
  void GetThreadExtraStackRangesLocked(InternalMmapVector<Range> *ranges) {}
  
*************** void GetAdditionalThreadContextPtrsLocke
*** 218,224 ****
    __hwasan::hwasanThreadArgRetval().GetAllPtrsLocked(ptrs);
  }
  
! void GetRunningThreadsLocked(InternalMmapVector<tid_t> *threads) {
    // TODO: implement.
  }
  void PrintThreads() {
--- 272,278 ----
    __hwasan::hwasanThreadArgRetval().GetAllPtrsLocked(ptrs);
  }
  
! void GetRunningThreadsLocked(InternalMmapVector<ThreadID> *threads) {
    // TODO: implement.
  }
  void PrintThreads() {
*************** void PrintThreads() {
*** 226,228 ****
--- 280,304 ----
  }
  
  }  // namespace __lsan
+ 
+ // ---------------------- Interface ---------------- {{{1
+ using namespace __hwasan;
+ 
+ extern "C" {
+ SANITIZER_INTERFACE_ATTRIBUTE
+ void __sanitizer_start_switch_fiber(void **, const void *bottom, uptr size) {
+   if (auto *t = GetCurrentThread())
+     t->StartSwitchFiber((uptr)bottom, size);
+   else
+     VReport(1, "__hwasan_start_switch_fiber called from unknown thread\n");
+ }
+ 
+ SANITIZER_INTERFACE_ATTRIBUTE
+ void __sanitizer_finish_switch_fiber(void *, const void **bottom_old,
+                                      uptr *size_old) {
+   if (auto *t = GetCurrentThread())
+     t->FinishSwitchFiber((uptr *)bottom_old, size_old);
+   else
+     VReport(1, "__hwasan_finish_switch_fiber called from unknown thread\n");
+ }
+ }
diff -Nrcpad gcc-16-20251130/libsanitizer/hwasan/hwasan_thread.h gcc-16-20251207/libsanitizer/hwasan/hwasan_thread.h
*** gcc-16-20251130/libsanitizer/hwasan/hwasan_thread.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/hwasan/hwasan_thread.h	Sun Dec  7 22:32:17 2025
*************** class Thread {
*** 41,49 ****
  
    void Destroy();
  
!   uptr stack_top() { return stack_top_; }
!   uptr stack_bottom() { return stack_bottom_; }
!   uptr stack_size() { return stack_top() - stack_bottom(); }
    uptr tls_begin() { return tls_begin_; }
    uptr tls_end() { return tls_end_; }
    DTLS *dtls() { return dtls_; }
--- 41,49 ----
  
    void Destroy();
  
!   uptr stack_top();
!   uptr stack_bottom();
!   uptr stack_size();
    uptr tls_begin() { return tls_begin_; }
    uptr tls_end() { return tls_end_; }
    DTLS *dtls() { return dtls_; }
*************** class Thread {
*** 53,58 ****
--- 53,61 ----
      return addr >= stack_bottom_ && addr < stack_top_;
    }
  
+   void StartSwitchFiber(uptr bottom, uptr size);
+   void FinishSwitchFiber(uptr *bottom_old, uptr *size_old);
+ 
    AllocatorCache *allocator_cache() { return &allocator_cache_; }
    HeapAllocationsRingBuffer *heap_allocations() { return heap_allocations_; }
    StackAllocationsRingBuffer *stack_allocations() { return stack_allocations_; }
*************** class Thread {
*** 69,76 ****
      Print("Thread: ");
    }
  
!   tid_t os_id() const { return os_id_; }
!   void set_os_id(tid_t os_id) { os_id_ = os_id; }
  
    uptr &vfork_spill() { return vfork_spill_; }
  
--- 72,79 ----
      Print("Thread: ");
    }
  
!   ThreadID os_id() const { return os_id_; }
!   void set_os_id(ThreadID os_id) { os_id_ = os_id; }
  
    uptr &vfork_spill() { return vfork_spill_; }
  
*************** class Thread {
*** 80,88 ****
--- 83,104 ----
    void ClearShadowForThreadStackAndTLS();
    void Print(const char *prefix);
    void InitRandomState();
+ 
+   struct StackBounds {
+     uptr bottom;
+     uptr top;
+   };
+   StackBounds GetStackBounds() const;
+ 
    uptr vfork_spill_;
    uptr stack_top_;
    uptr stack_bottom_;
+   // these variables are used when the thread is about to switch stack
+   uptr next_stack_top_;
+   uptr next_stack_bottom_;
+   // true if switching is in progress
+   atomic_uint8_t stack_switching_;
+ 
    uptr tls_begin_;
    uptr tls_end_;
    DTLS *dtls_;
*************** class Thread {
*** 96,102 ****
  
    u32 unique_id_;  // counting from zero.
  
!   tid_t os_id_;
  
    u32 tagging_disabled_;  // if non-zero, malloc uses zero tag in this thread.
  
--- 112,118 ----
  
    u32 unique_id_;  // counting from zero.
  
!   ThreadID os_id_;
  
    u32 tagging_disabled_;  // if non-zero, malloc uses zero tag in this thread.
  
diff -Nrcpad gcc-16-20251130/libsanitizer/include/sanitizer/memprof_interface.h gcc-16-20251207/libsanitizer/include/sanitizer/memprof_interface.h
*** gcc-16-20251130/libsanitizer/include/sanitizer/memprof_interface.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/include/sanitizer/memprof_interface.h	Sun Dec  7 22:32:17 2025
*************** void SANITIZER_CDECL __memprof_print_acc
*** 47,55 ****
  
  /// User-provided default option settings.
  ///
! /// You can provide your own implementation of this function to return a string
! /// containing MemProf runtime options (for example,
! /// <c>verbosity=1:print_stats=1</c>).
  ///
  /// \returns Default options string.
  const char *SANITIZER_CDECL __memprof_default_options(void);
--- 47,55 ----
  
  /// User-provided default option settings.
  ///
! /// You can set these options via the -memprof-runtime-default-options LLVM flag
! /// or you can provide your own implementation of this function. See
! /// memprof_flags.h for more info.
  ///
  /// \returns Default options string.
  const char *SANITIZER_CDECL __memprof_default_options(void);
diff -Nrcpad gcc-16-20251130/libsanitizer/include/sanitizer/tsan_interface_atomic.h gcc-16-20251207/libsanitizer/include/sanitizer/tsan_interface_atomic.h
*** gcc-16-20251130/libsanitizer/include/sanitizer/tsan_interface_atomic.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/include/sanitizer/tsan_interface_atomic.h	Sun Dec  7 22:32:17 2025
*************** typedef enum {
*** 43,225 ****
  } __tsan_memory_order;
  
  __tsan_atomic8 SANITIZER_CDECL
! __tsan_atomic8_load(const volatile __tsan_atomic8 *a, __tsan_memory_order mo);
  __tsan_atomic16 SANITIZER_CDECL
! __tsan_atomic16_load(const volatile __tsan_atomic16 *a, __tsan_memory_order mo);
  __tsan_atomic32 SANITIZER_CDECL
! __tsan_atomic32_load(const volatile __tsan_atomic32 *a, __tsan_memory_order mo);
  __tsan_atomic64 SANITIZER_CDECL
! __tsan_atomic64_load(const volatile __tsan_atomic64 *a, __tsan_memory_order mo);
  #if __TSAN_HAS_INT128
! __tsan_atomic128 SANITIZER_CDECL __tsan_atomic128_load(
!     const volatile __tsan_atomic128 *a, __tsan_memory_order mo);
  #endif
  
  void SANITIZER_CDECL __tsan_atomic8_store(volatile __tsan_atomic8 *a,
!                                           __tsan_atomic8 v,
!                                           __tsan_memory_order mo);
  void SANITIZER_CDECL __tsan_atomic16_store(volatile __tsan_atomic16 *a,
!                                            __tsan_atomic16 v,
!                                            __tsan_memory_order mo);
  void SANITIZER_CDECL __tsan_atomic32_store(volatile __tsan_atomic32 *a,
!                                            __tsan_atomic32 v,
!                                            __tsan_memory_order mo);
  void SANITIZER_CDECL __tsan_atomic64_store(volatile __tsan_atomic64 *a,
!                                            __tsan_atomic64 v,
!                                            __tsan_memory_order mo);
  #if __TSAN_HAS_INT128
  void SANITIZER_CDECL __tsan_atomic128_store(volatile __tsan_atomic128 *a,
!                                             __tsan_atomic128 v,
!                                             __tsan_memory_order mo);
  #endif
  
! __tsan_atomic8 SANITIZER_CDECL __tsan_atomic8_exchange(
!     volatile __tsan_atomic8 *a, __tsan_atomic8 v, __tsan_memory_order mo);
  __tsan_atomic16 SANITIZER_CDECL __tsan_atomic16_exchange(
!     volatile __tsan_atomic16 *a, __tsan_atomic16 v, __tsan_memory_order mo);
  __tsan_atomic32 SANITIZER_CDECL __tsan_atomic32_exchange(
!     volatile __tsan_atomic32 *a, __tsan_atomic32 v, __tsan_memory_order mo);
  __tsan_atomic64 SANITIZER_CDECL __tsan_atomic64_exchange(
!     volatile __tsan_atomic64 *a, __tsan_atomic64 v, __tsan_memory_order mo);
  #if __TSAN_HAS_INT128
  __tsan_atomic128 SANITIZER_CDECL __tsan_atomic128_exchange(
!     volatile __tsan_atomic128 *a, __tsan_atomic128 v, __tsan_memory_order mo);
  #endif
  
! __tsan_atomic8 SANITIZER_CDECL __tsan_atomic8_fetch_add(
!     volatile __tsan_atomic8 *a, __tsan_atomic8 v, __tsan_memory_order mo);
  __tsan_atomic16 SANITIZER_CDECL __tsan_atomic16_fetch_add(
!     volatile __tsan_atomic16 *a, __tsan_atomic16 v, __tsan_memory_order mo);
  __tsan_atomic32 SANITIZER_CDECL __tsan_atomic32_fetch_add(
!     volatile __tsan_atomic32 *a, __tsan_atomic32 v, __tsan_memory_order mo);
  __tsan_atomic64 SANITIZER_CDECL __tsan_atomic64_fetch_add(
!     volatile __tsan_atomic64 *a, __tsan_atomic64 v, __tsan_memory_order mo);
  #if __TSAN_HAS_INT128
  __tsan_atomic128 SANITIZER_CDECL __tsan_atomic128_fetch_add(
!     volatile __tsan_atomic128 *a, __tsan_atomic128 v, __tsan_memory_order mo);
  #endif
  
! __tsan_atomic8 SANITIZER_CDECL __tsan_atomic8_fetch_sub(
!     volatile __tsan_atomic8 *a, __tsan_atomic8 v, __tsan_memory_order mo);
  __tsan_atomic16 SANITIZER_CDECL __tsan_atomic16_fetch_sub(
!     volatile __tsan_atomic16 *a, __tsan_atomic16 v, __tsan_memory_order mo);
  __tsan_atomic32 SANITIZER_CDECL __tsan_atomic32_fetch_sub(
!     volatile __tsan_atomic32 *a, __tsan_atomic32 v, __tsan_memory_order mo);
  __tsan_atomic64 SANITIZER_CDECL __tsan_atomic64_fetch_sub(
!     volatile __tsan_atomic64 *a, __tsan_atomic64 v, __tsan_memory_order mo);
  #if __TSAN_HAS_INT128
  __tsan_atomic128 SANITIZER_CDECL __tsan_atomic128_fetch_sub(
!     volatile __tsan_atomic128 *a, __tsan_atomic128 v, __tsan_memory_order mo);
  #endif
  
! __tsan_atomic8 SANITIZER_CDECL __tsan_atomic8_fetch_and(
!     volatile __tsan_atomic8 *a, __tsan_atomic8 v, __tsan_memory_order mo);
  __tsan_atomic16 SANITIZER_CDECL __tsan_atomic16_fetch_and(
!     volatile __tsan_atomic16 *a, __tsan_atomic16 v, __tsan_memory_order mo);
  __tsan_atomic32 SANITIZER_CDECL __tsan_atomic32_fetch_and(
!     volatile __tsan_atomic32 *a, __tsan_atomic32 v, __tsan_memory_order mo);
  __tsan_atomic64 SANITIZER_CDECL __tsan_atomic64_fetch_and(
!     volatile __tsan_atomic64 *a, __tsan_atomic64 v, __tsan_memory_order mo);
  #if __TSAN_HAS_INT128
  __tsan_atomic128 SANITIZER_CDECL __tsan_atomic128_fetch_and(
!     volatile __tsan_atomic128 *a, __tsan_atomic128 v, __tsan_memory_order mo);
  #endif
  
! __tsan_atomic8 SANITIZER_CDECL __tsan_atomic8_fetch_or(
!     volatile __tsan_atomic8 *a, __tsan_atomic8 v, __tsan_memory_order mo);
  __tsan_atomic16 SANITIZER_CDECL __tsan_atomic16_fetch_or(
!     volatile __tsan_atomic16 *a, __tsan_atomic16 v, __tsan_memory_order mo);
  __tsan_atomic32 SANITIZER_CDECL __tsan_atomic32_fetch_or(
!     volatile __tsan_atomic32 *a, __tsan_atomic32 v, __tsan_memory_order mo);
  __tsan_atomic64 SANITIZER_CDECL __tsan_atomic64_fetch_or(
!     volatile __tsan_atomic64 *a, __tsan_atomic64 v, __tsan_memory_order mo);
  #if __TSAN_HAS_INT128
  __tsan_atomic128 SANITIZER_CDECL __tsan_atomic128_fetch_or(
!     volatile __tsan_atomic128 *a, __tsan_atomic128 v, __tsan_memory_order mo);
  #endif
  
! __tsan_atomic8 SANITIZER_CDECL __tsan_atomic8_fetch_xor(
!     volatile __tsan_atomic8 *a, __tsan_atomic8 v, __tsan_memory_order mo);
  __tsan_atomic16 SANITIZER_CDECL __tsan_atomic16_fetch_xor(
!     volatile __tsan_atomic16 *a, __tsan_atomic16 v, __tsan_memory_order mo);
  __tsan_atomic32 SANITIZER_CDECL __tsan_atomic32_fetch_xor(
!     volatile __tsan_atomic32 *a, __tsan_atomic32 v, __tsan_memory_order mo);
  __tsan_atomic64 SANITIZER_CDECL __tsan_atomic64_fetch_xor(
!     volatile __tsan_atomic64 *a, __tsan_atomic64 v, __tsan_memory_order mo);
  #if __TSAN_HAS_INT128
  __tsan_atomic128 SANITIZER_CDECL __tsan_atomic128_fetch_xor(
!     volatile __tsan_atomic128 *a, __tsan_atomic128 v, __tsan_memory_order mo);
  #endif
  
! __tsan_atomic8 SANITIZER_CDECL __tsan_atomic8_fetch_nand(
!     volatile __tsan_atomic8 *a, __tsan_atomic8 v, __tsan_memory_order mo);
  __tsan_atomic16 SANITIZER_CDECL __tsan_atomic16_fetch_nand(
!     volatile __tsan_atomic16 *a, __tsan_atomic16 v, __tsan_memory_order mo);
  __tsan_atomic32 SANITIZER_CDECL __tsan_atomic32_fetch_nand(
!     volatile __tsan_atomic32 *a, __tsan_atomic32 v, __tsan_memory_order mo);
  __tsan_atomic64 SANITIZER_CDECL __tsan_atomic64_fetch_nand(
!     volatile __tsan_atomic64 *a, __tsan_atomic64 v, __tsan_memory_order mo);
  #if __TSAN_HAS_INT128
  __tsan_atomic128 SANITIZER_CDECL __tsan_atomic128_fetch_nand(
!     volatile __tsan_atomic128 *a, __tsan_atomic128 v, __tsan_memory_order mo);
  #endif
  
  int SANITIZER_CDECL __tsan_atomic8_compare_exchange_weak(
!     volatile __tsan_atomic8 *a, __tsan_atomic8 *c, __tsan_atomic8 v,
!     __tsan_memory_order mo, __tsan_memory_order fail_mo);
  int SANITIZER_CDECL __tsan_atomic16_compare_exchange_weak(
!     volatile __tsan_atomic16 *a, __tsan_atomic16 *c, __tsan_atomic16 v,
!     __tsan_memory_order mo, __tsan_memory_order fail_mo);
  int SANITIZER_CDECL __tsan_atomic32_compare_exchange_weak(
!     volatile __tsan_atomic32 *a, __tsan_atomic32 *c, __tsan_atomic32 v,
!     __tsan_memory_order mo, __tsan_memory_order fail_mo);
  int SANITIZER_CDECL __tsan_atomic64_compare_exchange_weak(
!     volatile __tsan_atomic64 *a, __tsan_atomic64 *c, __tsan_atomic64 v,
!     __tsan_memory_order mo, __tsan_memory_order fail_mo);
  #if __TSAN_HAS_INT128
  int SANITIZER_CDECL __tsan_atomic128_compare_exchange_weak(
      volatile __tsan_atomic128 *a, __tsan_atomic128 *c, __tsan_atomic128 v,
!     __tsan_memory_order mo, __tsan_memory_order fail_mo);
  #endif
  
  int SANITIZER_CDECL __tsan_atomic8_compare_exchange_strong(
!     volatile __tsan_atomic8 *a, __tsan_atomic8 *c, __tsan_atomic8 v,
!     __tsan_memory_order mo, __tsan_memory_order fail_mo);
  int SANITIZER_CDECL __tsan_atomic16_compare_exchange_strong(
!     volatile __tsan_atomic16 *a, __tsan_atomic16 *c, __tsan_atomic16 v,
!     __tsan_memory_order mo, __tsan_memory_order fail_mo);
  int SANITIZER_CDECL __tsan_atomic32_compare_exchange_strong(
!     volatile __tsan_atomic32 *a, __tsan_atomic32 *c, __tsan_atomic32 v,
!     __tsan_memory_order mo, __tsan_memory_order fail_mo);
  int SANITIZER_CDECL __tsan_atomic64_compare_exchange_strong(
!     volatile __tsan_atomic64 *a, __tsan_atomic64 *c, __tsan_atomic64 v,
!     __tsan_memory_order mo, __tsan_memory_order fail_mo);
  #if __TSAN_HAS_INT128
  int SANITIZER_CDECL __tsan_atomic128_compare_exchange_strong(
      volatile __tsan_atomic128 *a, __tsan_atomic128 *c, __tsan_atomic128 v,
!     __tsan_memory_order mo, __tsan_memory_order fail_mo);
  #endif
  
  __tsan_atomic8 SANITIZER_CDECL __tsan_atomic8_compare_exchange_val(
!     volatile __tsan_atomic8 *a, __tsan_atomic8 c, __tsan_atomic8 v,
!     __tsan_memory_order mo, __tsan_memory_order fail_mo);
  __tsan_atomic16 SANITIZER_CDECL __tsan_atomic16_compare_exchange_val(
!     volatile __tsan_atomic16 *a, __tsan_atomic16 c, __tsan_atomic16 v,
!     __tsan_memory_order mo, __tsan_memory_order fail_mo);
  __tsan_atomic32 SANITIZER_CDECL __tsan_atomic32_compare_exchange_val(
!     volatile __tsan_atomic32 *a, __tsan_atomic32 c, __tsan_atomic32 v,
!     __tsan_memory_order mo, __tsan_memory_order fail_mo);
  __tsan_atomic64 SANITIZER_CDECL __tsan_atomic64_compare_exchange_val(
!     volatile __tsan_atomic64 *a, __tsan_atomic64 c, __tsan_atomic64 v,
!     __tsan_memory_order mo, __tsan_memory_order fail_mo);
  #if __TSAN_HAS_INT128
  __tsan_atomic128 SANITIZER_CDECL __tsan_atomic128_compare_exchange_val(
      volatile __tsan_atomic128 *a, __tsan_atomic128 c, __tsan_atomic128 v,
!     __tsan_memory_order mo, __tsan_memory_order fail_mo);
  #endif
  
! void SANITIZER_CDECL __tsan_atomic_thread_fence(__tsan_memory_order mo);
! void SANITIZER_CDECL __tsan_atomic_signal_fence(__tsan_memory_order mo);
  
  #ifdef __cplusplus
  } // extern "C"
--- 43,220 ----
  } __tsan_memory_order;
  
  __tsan_atomic8 SANITIZER_CDECL
! __tsan_atomic8_load(const volatile __tsan_atomic8 *a, int mo);
  __tsan_atomic16 SANITIZER_CDECL
! __tsan_atomic16_load(const volatile __tsan_atomic16 *a, int mo);
  __tsan_atomic32 SANITIZER_CDECL
! __tsan_atomic32_load(const volatile __tsan_atomic32 *a, int mo);
  __tsan_atomic64 SANITIZER_CDECL
! __tsan_atomic64_load(const volatile __tsan_atomic64 *a, int mo);
  #if __TSAN_HAS_INT128
! __tsan_atomic128 SANITIZER_CDECL
! __tsan_atomic128_load(const volatile __tsan_atomic128 *a, int mo);
  #endif
  
  void SANITIZER_CDECL __tsan_atomic8_store(volatile __tsan_atomic8 *a,
!                                           __tsan_atomic8 v, int mo);
  void SANITIZER_CDECL __tsan_atomic16_store(volatile __tsan_atomic16 *a,
!                                            __tsan_atomic16 v, int mo);
  void SANITIZER_CDECL __tsan_atomic32_store(volatile __tsan_atomic32 *a,
!                                            __tsan_atomic32 v, int mo);
  void SANITIZER_CDECL __tsan_atomic64_store(volatile __tsan_atomic64 *a,
!                                            __tsan_atomic64 v, int mo);
  #if __TSAN_HAS_INT128
  void SANITIZER_CDECL __tsan_atomic128_store(volatile __tsan_atomic128 *a,
!                                             __tsan_atomic128 v, int mo);
  #endif
  
! __tsan_atomic8 SANITIZER_CDECL
! __tsan_atomic8_exchange(volatile __tsan_atomic8 *a, __tsan_atomic8 v, int mo);
  __tsan_atomic16 SANITIZER_CDECL __tsan_atomic16_exchange(
!     volatile __tsan_atomic16 *a, __tsan_atomic16 v, int mo);
  __tsan_atomic32 SANITIZER_CDECL __tsan_atomic32_exchange(
!     volatile __tsan_atomic32 *a, __tsan_atomic32 v, int mo);
  __tsan_atomic64 SANITIZER_CDECL __tsan_atomic64_exchange(
!     volatile __tsan_atomic64 *a, __tsan_atomic64 v, int mo);
  #if __TSAN_HAS_INT128
  __tsan_atomic128 SANITIZER_CDECL __tsan_atomic128_exchange(
!     volatile __tsan_atomic128 *a, __tsan_atomic128 v, int mo);
  #endif
  
! __tsan_atomic8 SANITIZER_CDECL
! __tsan_atomic8_fetch_add(volatile __tsan_atomic8 *a, __tsan_atomic8 v, int mo);
  __tsan_atomic16 SANITIZER_CDECL __tsan_atomic16_fetch_add(
!     volatile __tsan_atomic16 *a, __tsan_atomic16 v, int mo);
  __tsan_atomic32 SANITIZER_CDECL __tsan_atomic32_fetch_add(
!     volatile __tsan_atomic32 *a, __tsan_atomic32 v, int mo);
  __tsan_atomic64 SANITIZER_CDECL __tsan_atomic64_fetch_add(
!     volatile __tsan_atomic64 *a, __tsan_atomic64 v, int mo);
  #if __TSAN_HAS_INT128
  __tsan_atomic128 SANITIZER_CDECL __tsan_atomic128_fetch_add(
!     volatile __tsan_atomic128 *a, __tsan_atomic128 v, int mo);
  #endif
  
! __tsan_atomic8 SANITIZER_CDECL
! __tsan_atomic8_fetch_sub(volatile __tsan_atomic8 *a, __tsan_atomic8 v, int mo);
  __tsan_atomic16 SANITIZER_CDECL __tsan_atomic16_fetch_sub(
!     volatile __tsan_atomic16 *a, __tsan_atomic16 v, int mo);
  __tsan_atomic32 SANITIZER_CDECL __tsan_atomic32_fetch_sub(
!     volatile __tsan_atomic32 *a, __tsan_atomic32 v, int mo);
  __tsan_atomic64 SANITIZER_CDECL __tsan_atomic64_fetch_sub(
!     volatile __tsan_atomic64 *a, __tsan_atomic64 v, int mo);
  #if __TSAN_HAS_INT128
  __tsan_atomic128 SANITIZER_CDECL __tsan_atomic128_fetch_sub(
!     volatile __tsan_atomic128 *a, __tsan_atomic128 v, int mo);
  #endif
  
! __tsan_atomic8 SANITIZER_CDECL
! __tsan_atomic8_fetch_and(volatile __tsan_atomic8 *a, __tsan_atomic8 v, int mo);
  __tsan_atomic16 SANITIZER_CDECL __tsan_atomic16_fetch_and(
!     volatile __tsan_atomic16 *a, __tsan_atomic16 v, int mo);
  __tsan_atomic32 SANITIZER_CDECL __tsan_atomic32_fetch_and(
!     volatile __tsan_atomic32 *a, __tsan_atomic32 v, int mo);
  __tsan_atomic64 SANITIZER_CDECL __tsan_atomic64_fetch_and(
!     volatile __tsan_atomic64 *a, __tsan_atomic64 v, int mo);
  #if __TSAN_HAS_INT128
  __tsan_atomic128 SANITIZER_CDECL __tsan_atomic128_fetch_and(
!     volatile __tsan_atomic128 *a, __tsan_atomic128 v, int mo);
  #endif
  
! __tsan_atomic8 SANITIZER_CDECL
! __tsan_atomic8_fetch_or(volatile __tsan_atomic8 *a, __tsan_atomic8 v, int mo);
  __tsan_atomic16 SANITIZER_CDECL __tsan_atomic16_fetch_or(
!     volatile __tsan_atomic16 *a, __tsan_atomic16 v, int mo);
  __tsan_atomic32 SANITIZER_CDECL __tsan_atomic32_fetch_or(
!     volatile __tsan_atomic32 *a, __tsan_atomic32 v, int mo);
  __tsan_atomic64 SANITIZER_CDECL __tsan_atomic64_fetch_or(
!     volatile __tsan_atomic64 *a, __tsan_atomic64 v, int mo);
  #if __TSAN_HAS_INT128
  __tsan_atomic128 SANITIZER_CDECL __tsan_atomic128_fetch_or(
!     volatile __tsan_atomic128 *a, __tsan_atomic128 v, int mo);
  #endif
  
! __tsan_atomic8 SANITIZER_CDECL
! __tsan_atomic8_fetch_xor(volatile __tsan_atomic8 *a, __tsan_atomic8 v, int mo);
  __tsan_atomic16 SANITIZER_CDECL __tsan_atomic16_fetch_xor(
!     volatile __tsan_atomic16 *a, __tsan_atomic16 v, int mo);
  __tsan_atomic32 SANITIZER_CDECL __tsan_atomic32_fetch_xor(
!     volatile __tsan_atomic32 *a, __tsan_atomic32 v, int mo);
  __tsan_atomic64 SANITIZER_CDECL __tsan_atomic64_fetch_xor(
!     volatile __tsan_atomic64 *a, __tsan_atomic64 v, int mo);
  #if __TSAN_HAS_INT128
  __tsan_atomic128 SANITIZER_CDECL __tsan_atomic128_fetch_xor(
!     volatile __tsan_atomic128 *a, __tsan_atomic128 v, int mo);
  #endif
  
! __tsan_atomic8 SANITIZER_CDECL
! __tsan_atomic8_fetch_nand(volatile __tsan_atomic8 *a, __tsan_atomic8 v, int mo);
  __tsan_atomic16 SANITIZER_CDECL __tsan_atomic16_fetch_nand(
!     volatile __tsan_atomic16 *a, __tsan_atomic16 v, int mo);
  __tsan_atomic32 SANITIZER_CDECL __tsan_atomic32_fetch_nand(
!     volatile __tsan_atomic32 *a, __tsan_atomic32 v, int mo);
  __tsan_atomic64 SANITIZER_CDECL __tsan_atomic64_fetch_nand(
!     volatile __tsan_atomic64 *a, __tsan_atomic64 v, int mo);
  #if __TSAN_HAS_INT128
  __tsan_atomic128 SANITIZER_CDECL __tsan_atomic128_fetch_nand(
!     volatile __tsan_atomic128 *a, __tsan_atomic128 v, int mo);
  #endif
  
  int SANITIZER_CDECL __tsan_atomic8_compare_exchange_weak(
!     volatile __tsan_atomic8 *a, __tsan_atomic8 *c, __tsan_atomic8 v, int mo,
!     int fail_mo);
  int SANITIZER_CDECL __tsan_atomic16_compare_exchange_weak(
!     volatile __tsan_atomic16 *a, __tsan_atomic16 *c, __tsan_atomic16 v, int mo,
!     int fail_mo);
  int SANITIZER_CDECL __tsan_atomic32_compare_exchange_weak(
!     volatile __tsan_atomic32 *a, __tsan_atomic32 *c, __tsan_atomic32 v, int mo,
!     int fail_mo);
  int SANITIZER_CDECL __tsan_atomic64_compare_exchange_weak(
!     volatile __tsan_atomic64 *a, __tsan_atomic64 *c, __tsan_atomic64 v, int mo,
!     int fail_mo);
  #if __TSAN_HAS_INT128
  int SANITIZER_CDECL __tsan_atomic128_compare_exchange_weak(
      volatile __tsan_atomic128 *a, __tsan_atomic128 *c, __tsan_atomic128 v,
!     int mo, int fail_mo);
  #endif
  
  int SANITIZER_CDECL __tsan_atomic8_compare_exchange_strong(
!     volatile __tsan_atomic8 *a, __tsan_atomic8 *c, __tsan_atomic8 v, int mo,
!     int fail_mo);
  int SANITIZER_CDECL __tsan_atomic16_compare_exchange_strong(
!     volatile __tsan_atomic16 *a, __tsan_atomic16 *c, __tsan_atomic16 v, int mo,
!     int fail_mo);
  int SANITIZER_CDECL __tsan_atomic32_compare_exchange_strong(
!     volatile __tsan_atomic32 *a, __tsan_atomic32 *c, __tsan_atomic32 v, int mo,
!     int fail_mo);
  int SANITIZER_CDECL __tsan_atomic64_compare_exchange_strong(
!     volatile __tsan_atomic64 *a, __tsan_atomic64 *c, __tsan_atomic64 v, int mo,
!     int fail_mo);
  #if __TSAN_HAS_INT128
  int SANITIZER_CDECL __tsan_atomic128_compare_exchange_strong(
      volatile __tsan_atomic128 *a, __tsan_atomic128 *c, __tsan_atomic128 v,
!     int mo, int fail_mo);
  #endif
  
  __tsan_atomic8 SANITIZER_CDECL __tsan_atomic8_compare_exchange_val(
!     volatile __tsan_atomic8 *a, __tsan_atomic8 c, __tsan_atomic8 v, int mo,
!     int fail_mo);
  __tsan_atomic16 SANITIZER_CDECL __tsan_atomic16_compare_exchange_val(
!     volatile __tsan_atomic16 *a, __tsan_atomic16 c, __tsan_atomic16 v, int mo,
!     int fail_mo);
  __tsan_atomic32 SANITIZER_CDECL __tsan_atomic32_compare_exchange_val(
!     volatile __tsan_atomic32 *a, __tsan_atomic32 c, __tsan_atomic32 v, int mo,
!     int fail_mo);
  __tsan_atomic64 SANITIZER_CDECL __tsan_atomic64_compare_exchange_val(
!     volatile __tsan_atomic64 *a, __tsan_atomic64 c, __tsan_atomic64 v, int mo,
!     int fail_mo);
  #if __TSAN_HAS_INT128
  __tsan_atomic128 SANITIZER_CDECL __tsan_atomic128_compare_exchange_val(
      volatile __tsan_atomic128 *a, __tsan_atomic128 c, __tsan_atomic128 v,
!     int mo, int fail_mo);
  #endif
  
! void SANITIZER_CDECL __tsan_atomic_thread_fence(int mo);
! void SANITIZER_CDECL __tsan_atomic_signal_fence(int mo);
  
  #ifdef __cplusplus
  } // extern "C"
diff -Nrcpad gcc-16-20251130/libsanitizer/interception/interception.h gcc-16-20251207/libsanitizer/interception/interception.h
*** gcc-16-20251130/libsanitizer/interception/interception.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/interception/interception.h	Sun Dec  7 22:32:17 2025
***************
*** 19,25 ****
  
  #if !SANITIZER_LINUX && !SANITIZER_FREEBSD && !SANITIZER_APPLE &&    \
      !SANITIZER_NETBSD && !SANITIZER_WINDOWS && !SANITIZER_FUCHSIA && \
!     !SANITIZER_SOLARIS
  #  error "Interception doesn't work on this operating system."
  #endif
  
--- 19,25 ----
  
  #if !SANITIZER_LINUX && !SANITIZER_FREEBSD && !SANITIZER_APPLE &&    \
      !SANITIZER_NETBSD && !SANITIZER_WINDOWS && !SANITIZER_FUCHSIA && \
!     !SANITIZER_SOLARIS && !SANITIZER_HAIKU && !SANITIZER_AIX
  #  error "Interception doesn't work on this operating system."
  #endif
  
*************** const interpose_substitution substitutio
*** 168,173 ****
--- 168,183 ----
      extern "C" ret_type func(__VA_ARGS__);
  # define DECLARE_WRAPPER_WINAPI(ret_type, func, ...)  \
      extern "C" __declspec(dllimport) ret_type __stdcall func(__VA_ARGS__);
+ #elif SANITIZER_AIX
+ #  define WRAP(x) __interceptor_##x
+ #  define TRAMPOLINE(x) WRAP(x)
+ // # define WRAPPER_NAME(x) "__interceptor_" #x
+ #  define INTERCEPTOR_ATTRIBUTE __attribute__((visibility("default")))
+ // AIX's linker will not select the weak symbol, so don't use weak for the
+ // interceptors.
+ #  define DECLARE_WRAPPER(ret_type, func, ...) \
+     extern "C" ret_type func(__VA_ARGS__)      \
+         __attribute__((alias("__interceptor_" #func), visibility("default")));
  #elif !SANITIZER_FUCHSIA  // LINUX, FREEBSD, NETBSD, SOLARIS
  # define INTERCEPTOR_ATTRIBUTE __attribute__((visibility("default")))
  # if ASM_INTERCEPTOR_TRAMPOLINE_SUPPORT
*************** inline void DoesNotSupportStaticLinking(
*** 367,378 ****
  
  #define INCLUDED_FROM_INTERCEPTION_LIB
  
! #if SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD || \
!     SANITIZER_SOLARIS
  
! # include "interception_linux.h"
! # define INTERCEPT_FUNCTION(func) INTERCEPT_FUNCTION_LINUX_OR_FREEBSD(func)
! # define INTERCEPT_FUNCTION_VER(func, symver) \
      INTERCEPT_FUNCTION_VER_LINUX_OR_FREEBSD(func, symver)
  #elif SANITIZER_APPLE
  # include "interception_mac.h"
--- 377,393 ----
  
  #define INCLUDED_FROM_INTERCEPTION_LIB
  
! #if SANITIZER_AIX
! #  include "interception_aix.h"
! #  define INTERCEPT_FUNCTION(func) INTERCEPT_FUNCTION_AIX(func)
! #  define INTERCEPT_FUNCTION_VER(func, symver) INTERCEPT_FUNCTION_AIX(func)
  
! #elif SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD || \
!     SANITIZER_SOLARIS || SANITIZER_HAIKU
! 
! #  include "interception_linux.h"
! #  define INTERCEPT_FUNCTION(func) INTERCEPT_FUNCTION_LINUX_OR_FREEBSD(func)
! #  define INTERCEPT_FUNCTION_VER(func, symver) \
      INTERCEPT_FUNCTION_VER_LINUX_OR_FREEBSD(func, symver)
  #elif SANITIZER_APPLE
  # include "interception_mac.h"
diff -Nrcpad gcc-16-20251130/libsanitizer/interception/interception_linux.cpp gcc-16-20251207/libsanitizer/interception/interception_linux.cpp
*** gcc-16-20251130/libsanitizer/interception/interception_linux.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/interception/interception_linux.cpp	Sun Dec  7 22:32:17 2025
***************
*** 14,20 ****
  #include "interception.h"
  
  #if SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD || \
!     SANITIZER_SOLARIS
  
  #include <dlfcn.h>   // for dlsym() and dlvsym()
  
--- 14,20 ----
  #include "interception.h"
  
  #if SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD || \
!     SANITIZER_SOLARIS || SANITIZER_HAIKU
  
  #include <dlfcn.h>   // for dlsym() and dlvsym()
  
*************** bool InterceptFunction(const char *name,
*** 80,83 ****
  }  // namespace __interception
  
  #endif  // SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD ||
!         // SANITIZER_SOLARIS
--- 80,83 ----
  }  // namespace __interception
  
  #endif  // SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD ||
!         // SANITIZER_SOLARIS || SANITIZER_HAIKU
diff -Nrcpad gcc-16-20251130/libsanitizer/interception/interception_linux.h gcc-16-20251207/libsanitizer/interception/interception_linux.h
*** gcc-16-20251130/libsanitizer/interception/interception_linux.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/interception/interception_linux.h	Sun Dec  7 22:32:17 2025
***************
*** 12,18 ****
  //===----------------------------------------------------------------------===//
  
  #if SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD || \
!     SANITIZER_SOLARIS
  
  #if !defined(INCLUDED_FROM_INTERCEPTION_LIB)
  # error interception_linux.h should be included from interception library only
--- 12,18 ----
  //===----------------------------------------------------------------------===//
  
  #if SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD || \
!     SANITIZER_SOLARIS || SANITIZER_HAIKU
  
  #if !defined(INCLUDED_FROM_INTERCEPTION_LIB)
  # error interception_linux.h should be included from interception library only
*************** bool InterceptFunction(const char *name,
*** 52,55 ****
  
  #endif  // INTERCEPTION_LINUX_H
  #endif  // SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD ||
!         // SANITIZER_SOLARIS
--- 52,55 ----
  
  #endif  // INTERCEPTION_LINUX_H
  #endif  // SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD ||
!         // SANITIZER_SOLARIS || SANITIZER_HAIKU
diff -Nrcpad gcc-16-20251130/libsanitizer/interception/interception_win.cpp gcc-16-20251207/libsanitizer/interception/interception_win.cpp
*** gcc-16-20251130/libsanitizer/interception/interception_win.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/interception/interception_win.cpp	Sun Dec  7 22:32:17 2025
*************** static uptr GetMmapGranularity() {
*** 187,194 ****
    return si.dwAllocationGranularity;
  }
  
  UNUSED static uptr RoundUpTo(uptr size, uptr boundary) {
!   return (size + boundary - 1) & ~(boundary - 1);
  }
  
  // FIXME: internal_str* and internal_mem* functions should be moved from the
--- 187,198 ----
    return si.dwAllocationGranularity;
  }
  
+ UNUSED static uptr RoundDownTo(uptr size, uptr boundary) {
+   return size & ~(boundary - 1);
+ }
+ 
  UNUSED static uptr RoundUpTo(uptr size, uptr boundary) {
!   return RoundDownTo(size + boundary - 1, boundary);
  }
  
  // FIXME: internal_str* and internal_mem* functions should be moved from the
*************** static char* _strchr(char* str, char c)
*** 209,214 ****
--- 213,230 ----
    return nullptr;
  }
  
+ static int _strcmp(const char *s1, const char *s2) {
+   while (true) {
+     unsigned c1 = *s1;
+     unsigned c2 = *s2;
+     if (c1 != c2) return (c1 < c2) ? -1 : 1;
+     if (c1 == 0) break;
+     s1++;
+     s2++;
+   }
+   return 0;
+ }
+ 
  static void _memset(void *p, int value, size_t sz) {
    for (size_t i = 0; i < sz; ++i)
      ((char*)p)[i] = (char)value;
*************** static void WriteJumpInstruction(uptr fr
*** 285,292 ****
  
  static void WriteShortJumpInstruction(uptr from, uptr target) {
    sptr offset = target - from - kShortJumpInstructionLength;
!   if (offset < -128 || offset > 127)
      InterceptionFailed();
    *(u8*)from = 0xEB;
    *(u8*)(from + 1) = (u8)offset;
  }
--- 301,311 ----
  
  static void WriteShortJumpInstruction(uptr from, uptr target) {
    sptr offset = target - from - kShortJumpInstructionLength;
!   if (offset < -128 || offset > 127) {
!     ReportError("interception_win: cannot write short jmp from %p to %p\n",
!                 (void *)from, (void *)target);
      InterceptionFailed();
+   }
    *(u8*)from = 0xEB;
    *(u8*)(from + 1) = (u8)offset;
  }
*************** struct TrampolineMemoryRegion {
*** 340,371 ****
    uptr max_size;
  };
  
! UNUSED static const uptr kTrampolineScanLimitRange = 1ull << 31;  // 2 gig
  static const int kMaxTrampolineRegion = 1024;
  static TrampolineMemoryRegion TrampolineRegions[kMaxTrampolineRegion];
  
! static void *AllocateTrampolineRegion(uptr image_address, size_t granularity) {
! #if SANITIZER_WINDOWS64
!   uptr address = image_address;
!   uptr scanned = 0;
!   while (scanned < kTrampolineScanLimitRange) {
      MEMORY_BASIC_INFORMATION info;
!     if (!::VirtualQuery((void*)address, &info, sizeof(info)))
        return nullptr;
  
!     // Check whether a region can be allocated at |address|.
      if (info.State == MEM_FREE && info.RegionSize >= granularity) {
!       void *page = ::VirtualAlloc((void*)RoundUpTo(address, granularity),
!                                   granularity,
!                                   MEM_RESERVE | MEM_COMMIT,
!                                   PAGE_EXECUTE_READWRITE);
        return page;
      }
  
!     // Move to the next region.
!     address = (uptr)info.BaseAddress + info.RegionSize;
!     scanned += info.RegionSize;
    }
    return nullptr;
  #else
    return ::VirtualAlloc(nullptr,
--- 359,436 ----
    uptr max_size;
  };
  
! UNUSED static const uptr kTrampolineRangeLimit = 1ull << 31;  // 2 gig
  static const int kMaxTrampolineRegion = 1024;
  static TrampolineMemoryRegion TrampolineRegions[kMaxTrampolineRegion];
  
! static void *AllocateTrampolineRegion(uptr min_addr, uptr max_addr,
!                                       uptr func_addr, size_t granularity) {
! #  if SANITIZER_WINDOWS64
!   // Clamp {min,max}_addr to the accessible address space.
!   SYSTEM_INFO system_info;
!   ::GetSystemInfo(&system_info);
!   uptr min_virtual_addr =
!       RoundUpTo((uptr)system_info.lpMinimumApplicationAddress, granularity);
!   uptr max_virtual_addr =
!       RoundDownTo((uptr)system_info.lpMaximumApplicationAddress, granularity);
!   if (min_addr < min_virtual_addr)
!     min_addr = min_virtual_addr;
!   if (max_addr > max_virtual_addr)
!     max_addr = max_virtual_addr;
! 
!   // This loop probes the virtual address space to find free memory in the
!   // [min_addr, max_addr] interval. The search starts from func_addr and
!   // proceeds "outwards" towards the interval bounds using two probes, lo_addr
!   // and hi_addr, for addresses lower/higher than func_addr. At each step, it
!   // considers the probe closest to func_addr. If that address is not free, the
!   // probe is advanced (lower or higher depending on the probe) to the next
!   // memory block and the search continues.
!   uptr lo_addr = RoundDownTo(func_addr, granularity);
!   uptr hi_addr = RoundUpTo(func_addr, granularity);
!   while (lo_addr >= min_addr || hi_addr <= max_addr) {
!     // Consider the in-range address closest to func_addr.
!     uptr addr;
!     if (lo_addr < min_addr)
!       addr = hi_addr;
!     else if (hi_addr > max_addr)
!       addr = lo_addr;
!     else
!       addr = (hi_addr - func_addr < func_addr - lo_addr) ? hi_addr : lo_addr;
! 
      MEMORY_BASIC_INFORMATION info;
!     if (!::VirtualQuery((void *)addr, &info, sizeof(info))) {
!       ReportError(
!           "interception_win: VirtualQuery in AllocateTrampolineRegion failed "
!           "for %p\n",
!           (void *)addr);
        return nullptr;
+     }
  
!     // Check whether a region can be allocated at |addr|.
      if (info.State == MEM_FREE && info.RegionSize >= granularity) {
!       void *page =
!           ::VirtualAlloc((void *)addr, granularity, MEM_RESERVE | MEM_COMMIT,
!                          PAGE_EXECUTE_READWRITE);
!       if (page == nullptr)
!         ReportError(
!             "interception_win: VirtualAlloc in AllocateTrampolineRegion failed "
!             "for %p\n",
!             (void *)addr);
        return page;
      }
  
!     if (addr == lo_addr)
!       lo_addr =
!           RoundDownTo((uptr)info.AllocationBase - granularity, granularity);
!     if (addr == hi_addr)
!       hi_addr =
!           RoundUpTo((uptr)info.BaseAddress + info.RegionSize, granularity);
    }
+ 
+   ReportError(
+       "interception_win: AllocateTrampolineRegion failed to find free memory; "
+       "min_addr: %p, max_addr: %p, func_addr: %p, granularity: %zu\n",
+       (void *)min_addr, (void *)max_addr, (void *)func_addr, granularity);
    return nullptr;
  #else
    return ::VirtualAlloc(nullptr,
*************** void TestOnlyReleaseTrampolineRegions()
*** 387,403 ****
  }
  
  static uptr AllocateMemoryForTrampoline(uptr func_address, size_t size) {
!   uptr image_address = func_address;
  
! #if SANITIZER_WINDOWS64
!   // Allocate memory after the module (DLL or EXE file), but within 2GB
!   // of the start of the module so that any address within the module can be
!   // referenced with PC-relative operands.
    // This allows us to not just jump to the trampoline with a PC-relative
    // offset, but to relocate any instructions that we copy to the trampoline
    // which have references to the original module. If we can't find the base
    // address of the module (e.g. if func_address is in mmap'ed memory), just
!   // use func_address as is.
    HMODULE module;
    if (::GetModuleHandleExW(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS |
                             GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT,
--- 452,468 ----
  }
  
  static uptr AllocateMemoryForTrampoline(uptr func_address, size_t size) {
! #  if SANITIZER_WINDOWS64
!   uptr min_addr = func_address - kTrampolineRangeLimit;
!   uptr max_addr = func_address + kTrampolineRangeLimit - size;
  
!   // Allocate memory within 2GB of the module (DLL or EXE file) so that any
!   // address within the module can be referenced with PC-relative operands.
    // This allows us to not just jump to the trampoline with a PC-relative
    // offset, but to relocate any instructions that we copy to the trampoline
    // which have references to the original module. If we can't find the base
    // address of the module (e.g. if func_address is in mmap'ed memory), just
!   // stay within 2GB of func_address.
    HMODULE module;
    if (::GetModuleHandleExW(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS |
                             GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT,
*************** static uptr AllocateMemoryForTrampoline(
*** 405,423 ****
      MODULEINFO module_info;
      if (::GetModuleInformation(::GetCurrentProcess(), module,
                                  &module_info, sizeof(module_info))) {
!       image_address = (uptr)module_info.lpBaseOfDll;
      }
    }
- #endif
  
!   // Find a region within 2G with enough space to allocate |size| bytes.
    TrampolineMemoryRegion *region = nullptr;
    for (size_t bucket = 0; bucket < kMaxTrampolineRegion; ++bucket) {
      TrampolineMemoryRegion* current = &TrampolineRegions[bucket];
      if (current->content == 0) {
        // No valid region found, allocate a new region.
        size_t bucket_size = GetMmapGranularity();
!       void *content = AllocateTrampolineRegion(image_address, bucket_size);
        if (content == nullptr)
          return 0U;
  
--- 470,501 ----
      MODULEINFO module_info;
      if (::GetModuleInformation(::GetCurrentProcess(), module,
                                  &module_info, sizeof(module_info))) {
!       min_addr = (uptr)module_info.lpBaseOfDll + module_info.SizeOfImage -
!                  kTrampolineRangeLimit;
!       max_addr = (uptr)module_info.lpBaseOfDll + kTrampolineRangeLimit - size;
      }
    }
  
!   // Check for overflow.
!   if (min_addr > func_address)
!     min_addr = 0;
!   if (max_addr < func_address)
!     max_addr = ~(uptr)0;
! #  else
!   uptr min_addr = 0;
!   uptr max_addr = ~min_addr;
! #  endif
! 
!   // Find a region within [min_addr,max_addr] with enough space to allocate
!   // |size| bytes.
    TrampolineMemoryRegion *region = nullptr;
    for (size_t bucket = 0; bucket < kMaxTrampolineRegion; ++bucket) {
      TrampolineMemoryRegion* current = &TrampolineRegions[bucket];
      if (current->content == 0) {
        // No valid region found, allocate a new region.
        size_t bucket_size = GetMmapGranularity();
!       void *content = AllocateTrampolineRegion(min_addr, max_addr, func_address,
!                                                bucket_size);
        if (content == nullptr)
          return 0U;
  
*************** static uptr AllocateMemoryForTrampoline(
*** 427,439 ****
        region = current;
        break;
      } else if (current->max_size - current->allocated_size > size) {
! #if SANITIZER_WINDOWS64
!         // In 64-bits, the memory space must be allocated within 2G boundary.
!         uptr next_address = current->content + current->allocated_size;
!         if (next_address < image_address ||
!             next_address - image_address >= 0x7FFF0000)
!           continue;
! #endif
        // The space can be allocated in the current region.
        region = current;
        break;
--- 505,513 ----
        region = current;
        break;
      } else if (current->max_size - current->allocated_size > size) {
!       uptr next_address = current->content + current->allocated_size;
!       if (next_address < min_addr || next_address > max_addr)
!         continue;
        // The space can be allocated in the current region.
        region = current;
        break;
*************** static const u8 kPrologueWithShortJump2[
*** 482,487 ****
--- 556,565 ----
  
  // Returns 0 on error.
  static size_t GetInstructionSize(uptr address, size_t* rel_offset = nullptr) {
+   if (rel_offset) {
+     *rel_offset = 0;
+   }
+ 
  #if SANITIZER_ARM64
    // An ARM64 instruction is 4 bytes long.
    return 4;
*************** static size_t GetInstructionSize(uptr ad
*** 528,533 ****
--- 606,612 ----
  
      case 0xb8:  // b8 XX XX XX XX : mov eax, XX XX XX XX
      case 0xB9:  // b9 XX XX XX XX : mov ecx, XX XX XX XX
+     case 0xBA:  // ba XX XX XX XX : mov edx, XX XX XX XX
        return 5;
  
      // Cannot overwrite control-instruction. Return 0 to indicate failure.
*************** static size_t GetInstructionSize(uptr ad
*** 558,582 ****
      case 0xFF8B:  // 8B FF : mov edi, edi
      case 0xEC8B:  // 8B EC : mov ebp, esp
      case 0xc889:  // 89 C8 : mov eax, ecx
      case 0xE589:  // 89 E5 : mov ebp, esp
      case 0xC18B:  // 8B C1 : mov eax, ecx
      case 0xC033:  // 33 C0 : xor eax, eax
      case 0xC933:  // 33 C9 : xor ecx, ecx
      case 0xD233:  // 33 D2 : xor edx, edx
      case 0xDB84:  // 84 DB : test bl,bl
      case 0xC984:  // 84 C9 : test cl,cl
      case 0xD284:  // 84 D2 : test dl,dl
        return 2;
  
      // Cannot overwrite control-instruction. Return 0 to indicate failure.
!     case 0x25FF:  // FF 25 XX XX XX XX : jmp [XXXXXXXX]
        return 0;
    }
  
!   switch (0x00FFFFFF & *(u32*)address) {
!     case 0xF8E483:  // 83 E4 F8 : and esp, 0xFFFFFFF8
!     case 0x64EC83:  // 83 EC 64 : sub esp, 64h
!       return 3;
      case 0x24A48D:  // 8D A4 24 XX XX XX XX : lea esp, [esp + XX XX XX XX]
        return 7;
    }
--- 637,681 ----
      case 0xFF8B:  // 8B FF : mov edi, edi
      case 0xEC8B:  // 8B EC : mov ebp, esp
      case 0xc889:  // 89 C8 : mov eax, ecx
+     case 0xD189:  // 89 D1 : mov ecx, edx
      case 0xE589:  // 89 E5 : mov ebp, esp
      case 0xC18B:  // 8B C1 : mov eax, ecx
+     case 0xC031:  // 31 C0 : xor eax, eax
+     case 0xC931:  // 31 C9 : xor ecx, ecx
+     case 0xD231:  // 31 D2 : xor edx, edx
      case 0xC033:  // 33 C0 : xor eax, eax
      case 0xC933:  // 33 C9 : xor ecx, ecx
      case 0xD233:  // 33 D2 : xor edx, edx
+     case 0xFF33:  // 33 FF : xor edi, edi
+     case 0x9066:  // 66 90 : xchg %ax,%ax (Two-byte NOP)
      case 0xDB84:  // 84 DB : test bl,bl
+     case 0xC084:  // 84 C0 : test al,al
      case 0xC984:  // 84 C9 : test cl,cl
      case 0xD284:  // 84 D2 : test dl,dl
        return 2;
  
+     case 0x3980:  // 80 39 XX : cmp BYTE PTR [rcx], XX
+     case 0x4D8B:  // 8B 4D XX : mov XX(%ebp), ecx
+     case 0x558B:  // 8B 55 XX : mov XX(%ebp), edx
+     case 0x758B:  // 8B 75 XX : mov XX(%ebp), esp
+     case 0xE483:  // 83 E4 XX : and esp, XX
+     case 0xEC83:  // 83 EC XX : sub esp, XX
+     case 0xC1F6:  // F6 C1 XX : test cl, XX
+       return 3;
+ 
+     case 0x89FF:  // FF 89 XX XX XX XX : dec dword ptr [ecx + XX XX XX XX]
+     case 0xEC81:  // 81 EC XX XX XX XX : sub esp, XX XX XX XX
+       return 6;
+ 
      // Cannot overwrite control-instruction. Return 0 to indicate failure.
!     case 0x25FF:  // FF 25 XX YY ZZ WW : jmp dword ptr ds:[WWZZYYXX]
        return 0;
    }
  
!   switch (0x00FFFFFF & *(u32 *)address) {
!     case 0x244C8D:  // 8D 4C 24 XX : lea ecx, [esp + XX]
!     case 0x2474FF:  // FF 74 24 XX : push qword ptr [rsp + XX]
!       return 4;
      case 0x24A48D:  // 8D A4 24 XX XX XX XX : lea esp, [esp + XX XX XX XX]
        return 7;
    }
*************** static size_t GetInstructionSize(uptr ad
*** 629,640 ****
      case 0x5541:  // push r13
      case 0x5641:  // push r14
      case 0x5741:  // push r15
-     case 0x9066:  // Two-byte NOP
      case 0xc084:  // test al, al
      case 0x018a:  // mov al, byte ptr [rcx]
        return 2;
  
-     case 0x058A:  // 8A 05 XX XX XX XX : mov al, byte ptr [XX XX XX XX]
      case 0x7E80:  // 80 7E YY XX  cmp BYTE PTR [rsi+YY], XX
      case 0x7D80:  // 80 7D YY XX  cmp BYTE PTR [rbp+YY], XX
      case 0x7A80:  // 80 7A YY XX  cmp BYTE PTR [rdx+YY], XX
--- 728,737 ----
*************** static size_t GetInstructionSize(uptr ad
*** 643,651 ****
--- 740,751 ----
      case 0x7980:  // 80 79 YY XX  cmp BYTE ptr [rcx+YY], XX
        return 4;
  
+     case 0x058A:  // 8A 05 XX XX XX XX : mov al, byte ptr [XX XX XX XX]
      case 0x058B:  // 8B 05 XX XX XX XX : mov eax, dword ptr [XX XX XX XX]
        if (rel_offset)
          *rel_offset = 2;
+       FALLTHROUGH;
+     case 0xB841:  // 41 B8 XX XX XX XX : mov r8d, XX XX XX XX
        return 6;
  
      case 0x7E81:  // 81 7E YY XX XX XX XX  cmp DWORD PTR [rsi+YY], XX XX XX XX
*************** static size_t GetInstructionSize(uptr ad
*** 655,665 ****
      case 0x7B81:  // 81 7B YY XX XX XX XX  cmp DWORD PTR [rbx+YY], XX XX XX XX
      case 0x7981:  // 81 79 YY XX XX XX XX  cmp dword ptr [rcx+YY], XX XX XX XX
        return 7;
    }
  
!   switch (0x00FFFFFF & *(u32*)address) {
!     case 0x07c1f6:    // f6 c1 07 : test cl, 0x7
      case 0x10b70f:    // 0f b7 10 : movzx edx, WORD PTR [rax]
      case 0xc00b4d:    // 4d 0b c0 : or r8, r8
      case 0xc03345:    // 45 33 c0 : xor r8d, r8d
      case 0xc08548:    // 48 85 c0 : test rax, rax
--- 755,771 ----
      case 0x7B81:  // 81 7B YY XX XX XX XX  cmp DWORD PTR [rbx+YY], XX XX XX XX
      case 0x7981:  // 81 79 YY XX XX XX XX  cmp dword ptr [rcx+YY], XX XX XX XX
        return 7;
+ 
+     case 0xb848:  // 48 b8 XX XX XX XX XX XX XX XX :
+                   //   movabsq XX XX XX XX XX XX XX XX, rax
+     case 0xba48:  // 48 ba XX XX XX XX XX XX XX XX :
+                   //   movabsq XX XX XX XX XX XX XX XX, rdx
+       return 10;
    }
  
!   switch (0x00FFFFFF & *(u32 *)address) {
      case 0x10b70f:    // 0f b7 10 : movzx edx, WORD PTR [rax]
+     case 0x02b70f:    // 0f b7 02 : movzx eax, WORD PTR [rdx]
      case 0xc00b4d:    // 4d 0b c0 : or r8, r8
      case 0xc03345:    // 45 33 c0 : xor r8d, r8d
      case 0xc08548:    // 48 85 c0 : test rax, rax
*************** static size_t GetInstructionSize(uptr ad
*** 673,678 ****
--- 779,787 ----
      case 0xc1ff48:    // 48 ff c1 : inc rcx
      case 0xc1ff49:    // 49 ff c1 : inc r9
      case 0xc28b41:    // 41 8b c2 : mov eax, r10d
+     case 0x01b60f:    // 0f b6 01 : movzx eax, BYTE PTR [rcx]
+     case 0x09b60f:    // 0f b6 09 : movzx ecx, BYTE PTR [rcx]
+     case 0x11b60f:    // 0f b6 11 : movzx edx, BYTE PTR [rcx]
      case 0xc2b60f:    // 0f b6 c2 : movzx eax, dl
      case 0xc2ff48:    // 48 ff c2 : inc rdx
      case 0xc2ff49:    // 49 ff c2 : inc r10
*************** static size_t GetInstructionSize(uptr ad
*** 691,696 ****
--- 800,807 ----
      case 0xc98548:    // 48 85 c9 : test rcx, rcx
      case 0xc9854d:    // 4d 85 c9 : test r9, r9
      case 0xc98b4c:    // 4c 8b c9 : mov r9, rcx
+     case 0xd12948:    // 48 29 d1 : sub rcx, rdx
+     case 0xc22b4c:    // 4c 2b c2 : sub r8, rdx
      case 0xca2b48:    // 48 2b ca : sub rcx, rdx
      case 0xca3b48:    // 48 3b ca : cmp rcx, rdx
      case 0xd12b48:    // 48 2b d1 : sub rdx, rcx
*************** static size_t GetInstructionSize(uptr ad
*** 700,716 ****
      case 0xd2854d:    // 4d 85 d2 : test r10, r10
      case 0xd28b4c:    // 4c 8b d2 : mov r10, rdx
      case 0xd2b60f:    // 0f b6 d2 : movzx edx, dl
      case 0xd98b4c:    // 4c 8b d9 : mov r11, rcx
      case 0xd9f748:    // 48 f7 d9 : neg rcx
      case 0xdb3345:    // 45 33 db : xor r11d, r11d
      case 0xdb8548:    // 48 85 db : test rbx, rbx
      case 0xdb854d:    // 4d 85 db : test r11, r11
      case 0xdc8b4c:    // 4c 8b dc : mov r11, rsp
-     case 0xe0e483:    // 83 e4 e0 : and esp, 0xFFFFFFE0
      case 0xe48548:    // 48 85 e4 : test rsp, rsp
      case 0xe4854d:    // 4d 85 e4 : test r12, r12
      case 0xe58948:    // 48 89 e5 : mov rbp, rsp
      case 0xed8548:    // 48 85 ed : test rbp, rbp
      case 0xed854d:    // 4d 85 ed : test r13, r13
      case 0xf6854d:    // 4d 85 f6 : test r14, r14
      case 0xff854d:    // 4d 85 ff : test r15, r15
--- 811,844 ----
      case 0xd2854d:    // 4d 85 d2 : test r10, r10
      case 0xd28b4c:    // 4c 8b d2 : mov r10, rdx
      case 0xd2b60f:    // 0f b6 d2 : movzx edx, dl
+     case 0xd2be0f:    // 0f be d2 : movsx edx, dl
      case 0xd98b4c:    // 4c 8b d9 : mov r11, rcx
      case 0xd9f748:    // 48 f7 d9 : neg rcx
+     case 0xc03145:    // 45 31 c0 : xor r8d,r8d
+     case 0xc93145:    // 45 31 c9 : xor r9d,r9d
+     case 0xd23345:    // 45 33 d2 : xor r10d, r10d
      case 0xdb3345:    // 45 33 db : xor r11d, r11d
+     case 0xc08445:    // 45 84 c0 : test r8b,r8b
+     case 0xd28445:    // 45 84 d2 : test r10b,r10b
      case 0xdb8548:    // 48 85 db : test rbx, rbx
      case 0xdb854d:    // 4d 85 db : test r11, r11
      case 0xdc8b4c:    // 4c 8b dc : mov r11, rsp
      case 0xe48548:    // 48 85 e4 : test rsp, rsp
      case 0xe4854d:    // 4d 85 e4 : test r12, r12
+     case 0xc88948:    // 48 89 c8 : mov rax,rcx
+     case 0xcb8948:    // 48 89 cb : mov rbx,rcx
+     case 0xd08948:    // 48 89 d0 : mov rax,rdx
+     case 0xd18948:    // 48 89 d1 : mov rcx,rdx
+     case 0xd38948:    // 48 89 d3 : mov rbx,rdx
      case 0xe58948:    // 48 89 e5 : mov rbp, rsp
      case 0xed8548:    // 48 85 ed : test rbp, rbp
+     case 0xc88949:    // 49 89 c8 : mov r8, rcx
+     case 0xc98949:    // 49 89 c9 : mov r9, rcx
+     case 0xca8949:    // 49 89 ca : mov r10,rcx
+     case 0xd08949:    // 49 89 d0 : mov r8, rdx
+     case 0xd18949:    // 49 89 d1 : mov r9, rdx
+     case 0xd28949:    // 49 89 d2 : mov r10, rdx
+     case 0xd38949:    // 49 89 d3 : mov r11, rdx
      case 0xed854d:    // 4d 85 ed : test r13, r13
      case 0xf6854d:    // 4d 85 f6 : test r14, r14
      case 0xff854d:    // 4d 85 ff : test r15, r15
*************** static size_t GetInstructionSize(uptr ad
*** 721,728 ****
--- 849,861 ----
      case 0x588948:    // 48 89 58 XX : mov QWORD PTR[rax + XX], rbx
      case 0xec8348:    // 48 83 ec XX : sub rsp, XX
      case 0xf88349:    // 49 83 f8 XX : cmp r8, XX
+     case 0x488d49:    // 49 8d 48 XX : lea rcx, [...]
+     case 0x048d4c:    // 4c 8d 04 XX : lea r8, [...]
+     case 0x148d4e:    // 4e 8d 14 XX : lea r10, [...]
+     case 0x398366:    // 66 83 39 XX : cmp WORD PTR [rcx], XX
        return 4;
  
+     case 0x441F0F:  // 0F 1F 44 XX XX :   nop DWORD PTR [...]
      case 0x246483:  // 83 64 24 XX YY :   and    DWORD PTR [rsp+XX], YY
        return 5;
  
*************** static size_t GetInstructionSize(uptr ad
*** 735,740 ****
--- 868,874 ----
        return 6;
  
      case 0xec8148:    // 48 81 EC XX XX XX XX : sub rsp, XXXXXXXX
+     case 0xc0c748:    // 48 C7 C0 XX XX XX XX : mov rax, XX XX XX XX
        return 7;
  
      // clang-format off
*************** static size_t GetInstructionSize(uptr ad
*** 742,748 ****
      case 0x798141:  // 41 81 79 XX YY YY YY YY : cmp DWORD PTR [r9+YY], XX XX XX XX
      case 0x7a8141:  // 41 81 7a XX YY YY YY YY : cmp DWORD PTR [r10+YY], XX XX XX XX
      case 0x7b8141:  // 41 81 7b XX YY YY YY YY : cmp DWORD PTR [r11+YY], XX XX XX XX
-     case 0x7c8141:  // 41 81 7c XX YY YY YY YY : cmp DWORD PTR [r12+YY], XX XX XX XX
      case 0x7d8141:  // 41 81 7d XX YY YY YY YY : cmp DWORD PTR [r13+YY], XX XX XX XX
      case 0x7e8141:  // 41 81 7e XX YY YY YY YY : cmp DWORD PTR [r14+YY], XX XX XX XX
      case 0x7f8141:  // 41 81 7f YY XX XX XX XX : cmp DWORD PTR [r15+YY], XX XX XX XX
--- 876,881 ----
*************** static size_t GetInstructionSize(uptr ad
*** 754,759 ****
--- 887,896 ----
                        //   mov rax, QWORD PTR [rip + XXXXXXXX]
      case 0x058d48:    // 48 8d 05 XX XX XX XX :
                        //   lea rax, QWORD PTR [rip + XXXXXXXX]
+     case 0x0d8948:    // 48 89 0d XX XX XX XX :
+                       //   mov QWORD PTR [rip + XXXXXXXX], rcx
+     case 0x158948:    // 48 89 15 XX XX XX XX :
+                       //   mov QWORD PTR [rip + XXXXXXXX], rdx
      case 0x25ff48:    // 48 ff 25 XX XX XX XX :
                        //   rex.W jmp QWORD PTR [rip + XXXXXXXX]
      case 0x158D4C:    // 4c 8d 15 XX XX XX XX : lea r10, [rip + XX]
*************** static size_t GetInstructionSize(uptr ad
*** 765,773 ****
--- 902,918 ----
      case 0x2444c7:    // C7 44 24 XX YY YY YY YY
                        //   mov dword ptr [rsp + XX], YYYYYYYY
        return 8;
+ 
+     case 0x7c8141:  // 41 81 7c ZZ YY XX XX XX XX
+                     // cmp DWORD PTR [reg+reg*n+YY], XX XX XX XX
+       return 9;
    }
  
    switch (*(u32*)(address)) {
+     case 0x01b60f44:  // 44 0f b6 01 : movzx r8d, BYTE PTR [rcx]
+     case 0x09b60f44:  // 44 0f b6 09 : movzx r9d, BYTE PTR [rcx]
+     case 0x0ab60f44:  // 44 0f b6 0a : movzx r8d, BYTE PTR [rdx]
+     case 0x11b60f44:  // 44 0f b6 11 : movzx r10d, BYTE PTR [rcx]
      case 0x1ab60f44:  // 44 0f b6 1a : movzx r11d, BYTE PTR [rdx]
        return 4;
      case 0x24448b48:  // 48 8b 44 24 XX : mov rax, QWORD ptr [rsp + XX]
*************** static size_t GetInstructionSize(uptr ad
*** 785,790 ****
--- 930,942 ----
        return 5;
      case 0x24648348:  // 48 83 64 24 XX YY : and QWORD PTR [rsp + XX], YY
        return 6;
+     case 0x24A48D48:  // 48 8D A4 24 XX XX XX XX : lea rsp, [rsp + XX XX XX XX]
+       return 8;
+   }
+ 
+   switch (0xFFFFFFFFFFULL & *(u64 *)(address)) {
+     case 0xC07E0F4866:  // 66 48 0F 7E C0 : movq rax, xmm0
+       return 5;
    }
  
  #else
*************** static size_t GetInstructionSize(uptr ad
*** 798,808 ****
      case 0x5D8B:  // 8B 5D XX : mov ebx, dword ptr [ebp + XX]
      case 0x7D8B:  // 8B 7D XX : mov edi, dword ptr [ebp + XX]
      case 0x758B:  // 8B 75 XX : mov esi, dword ptr [ebp + XX]
-     case 0xEC83:  // 83 EC XX : sub esp, XX
      case 0x75FF:  // FF 75 XX : push dword ptr [ebp + XX]
        return 3;
      case 0xC1F7:  // F7 C1 XX YY ZZ WW : test ecx, WWZZYYXX
-     case 0x25FF:  // FF 25 XX YY ZZ WW : jmp dword ptr ds:[WWZZYYXX]
        return 6;
      case 0x3D83:  // 83 3D XX YY ZZ WW TT : cmp TT, WWZZYYXX
        return 7;
--- 950,958 ----
*************** static size_t GetInstructionSize(uptr ad
*** 845,850 ****
--- 995,1004 ----
    return 0;
  }
  
+ size_t TestOnlyGetInstructionSize(uptr address, size_t *rel_offset) {
+   return GetInstructionSize(address, rel_offset);
+ }
+ 
  // Returns 0 on error.
  static size_t RoundUpToInstrBoundary(size_t size, uptr address) {
    size_t cursor = 0;
*************** static bool CopyInstructions(uptr to, up
*** 872,879 ****
        // this will be untrue if relocated_offset \notin [-2**31, 2**31)
        s64 delta = to - from;
        s64 relocated_offset = *(s32 *)(to + cursor + rel_offset) - delta;
!       if (-0x8000'0000ll > relocated_offset || relocated_offset > 0x7FFF'FFFFll)
          return false;
  #  else
        // on 32-bit, the relative offset will always be correct
        s32 delta = to - from;
--- 1026,1039 ----
        // this will be untrue if relocated_offset \notin [-2**31, 2**31)
        s64 delta = to - from;
        s64 relocated_offset = *(s32 *)(to + cursor + rel_offset) - delta;
!       if (-0x8000'0000ll > relocated_offset ||
!           relocated_offset > 0x7FFF'FFFFll) {
!         ReportError(
!             "interception_win: CopyInstructions relocated_offset %lld outside "
!             "32-bit range\n",
!             (long long)relocated_offset);
          return false;
+       }
  #  else
        // on 32-bit, the relative offset will always be correct
        s32 delta = to - from;
*************** static void **InterestingDLLsAvailable()
*** 1096,1103 ****
      "libc++.dll",     // libc++
      "libunwind.dll",  // libunwind
  #  endif
!     // NTDLL should go last as it exports some functions that we should
!     // override in the CRT [presumably only used internally].
      "ntdll.dll",
      NULL
    };
--- 1256,1262 ----
      "libc++.dll",     // libc++
      "libunwind.dll",  // libunwind
  #  endif
!     // NTDLL must go last as it gets special treatment in OverrideFunction.
      "ntdll.dll",
      NULL
    };
*************** uptr InternalGetProcAddress(void *module
*** 1154,1160 ****
  
    for (DWORD i = 0; i < exports->NumberOfNames; i++) {
      RVAPtr<char> name(module, names[i]);
!     if (!strcmp(func_name, name)) {
        DWORD index = ordinals[i];
        RVAPtr<char> func(module, functions[index]);
  
--- 1313,1319 ----
  
    for (DWORD i = 0; i < exports->NumberOfNames; i++) {
      RVAPtr<char> name(module, names[i]);
!     if (!_strcmp(func_name, name)) {
        DWORD index = ordinals[i];
        RVAPtr<char> func(module, functions[index]);
  
*************** uptr InternalGetProcAddress(void *module
*** 1167,1185 ****
          // exported directory.
          char function_name[256];
          size_t funtion_name_length = _strlen(func);
!         if (funtion_name_length >= sizeof(function_name) - 1)
            InterceptionFailed();
  
          _memcpy(function_name, func, funtion_name_length);
          function_name[funtion_name_length] = '\0';
          char* separator = _strchr(function_name, '.');
!         if (!separator)
            InterceptionFailed();
          *separator = '\0';
  
          void* redirected_module = GetModuleHandleA(function_name);
!         if (!redirected_module)
            InterceptionFailed();
          return InternalGetProcAddress(redirected_module, separator + 1);
        }
  
--- 1326,1352 ----
          // exported directory.
          char function_name[256];
          size_t funtion_name_length = _strlen(func);
!         if (funtion_name_length >= sizeof(function_name) - 1) {
!           ReportError("interception_win: func too long: '%s'\n", (char *)func);
            InterceptionFailed();
+         }
  
          _memcpy(function_name, func, funtion_name_length);
          function_name[funtion_name_length] = '\0';
          char* separator = _strchr(function_name, '.');
!         if (!separator) {
!           ReportError("interception_win: no separator in '%s'\n",
!                       function_name);
            InterceptionFailed();
+         }
          *separator = '\0';
  
          void* redirected_module = GetModuleHandleA(function_name);
!         if (!redirected_module) {
!           ReportError("interception_win: GetModuleHandleA failed for '%s'\n",
!                       function_name);
            InterceptionFailed();
+         }
          return InternalGetProcAddress(redirected_module, separator + 1);
        }
  
*************** uptr InternalGetProcAddress(void *module
*** 1192,1200 ****
--- 1359,1380 ----
  
  bool OverrideFunction(
      const char *func_name, uptr new_func, uptr *orig_old_func) {
+   static const char *kNtDllIgnore[] = {
+     "memcmp", "memcpy", "memmove", "memset"
+   };
+ 
    bool hooked = false;
    void **DLLs = InterestingDLLsAvailable();
    for (size_t i = 0; DLLs[i]; ++i) {
+     if (DLLs[i + 1] == nullptr) {
+       // This is the last DLL, i.e. NTDLL. It exports some functions that
+       // we only want to override in the CRT.
+       for (const char *ignored : kNtDllIgnore) {
+         if (_strcmp(func_name, ignored) == 0)
+           return hooked;
+       }
+     }
+ 
      uptr func_addr = InternalGetProcAddress(DLLs[i], func_name);
      if (func_addr &&
          OverrideFunction(func_addr, new_func, orig_old_func)) {
*************** bool OverrideImportedFunction(const char
*** 1248,1254 ****
        RVAPtr<IMAGE_IMPORT_BY_NAME> import_by_name(
            module, name_table->u1.ForwarderString);
        const char *funcname = &import_by_name->Name[0];
!       if (strcmp(funcname, function_name) == 0)
          break;
      }
    }
--- 1428,1434 ----
        RVAPtr<IMAGE_IMPORT_BY_NAME> import_by_name(
            module, name_table->u1.ForwarderString);
        const char *funcname = &import_by_name->Name[0];
!       if (_strcmp(funcname, function_name) == 0)
          break;
      }
    }
diff -Nrcpad gcc-16-20251130/libsanitizer/interception/interception_win.h gcc-16-20251207/libsanitizer/interception/interception_win.h
*** gcc-16-20251130/libsanitizer/interception/interception_win.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/interception/interception_win.h	Sun Dec  7 22:32:17 2025
*************** bool OverrideFunctionWithTrampoline(
*** 63,68 ****
--- 63,71 ----
  // Exposed for unittests
  void TestOnlyReleaseTrampolineRegions();
  
+ // Exposed for unittests
+ SIZE_T TestOnlyGetInstructionSize(uptr address, SIZE_T *rel_offset);
+ 
  }  // namespace __interception
  
  #if defined(INTERCEPTION_DYNAMIC_CRT)
diff -Nrcpad gcc-16-20251130/libsanitizer/lsan/lsan_allocator.cpp gcc-16-20251207/libsanitizer/lsan/lsan_allocator.cpp
*** gcc-16-20251130/libsanitizer/lsan/lsan_allocator.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/lsan/lsan_allocator.cpp	Sun Dec  7 22:32:17 2025
*************** void lsan_free(void *p) {
*** 220,225 ****
--- 220,229 ----
    Deallocate(p);
  }
  
+ void lsan_free_sized(void *p, uptr) { Deallocate(p); }
+ 
+ void lsan_free_aligned_sized(void *p, uptr, uptr) { Deallocate(p); }
+ 
  void *lsan_realloc(void *p, uptr size, const StackTrace &stack) {
    return SetErrnoOnNull(Reallocate(stack, p, size, 1));
  }
diff -Nrcpad gcc-16-20251130/libsanitizer/lsan/lsan_allocator.h gcc-16-20251207/libsanitizer/lsan/lsan_allocator.h
*** gcc-16-20251130/libsanitizer/lsan/lsan_allocator.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/lsan/lsan_allocator.h	Sun Dec  7 22:32:17 2025
*************** struct ChunkMetadata {
*** 53,59 ****
  #if !SANITIZER_CAN_USE_ALLOCATOR64
  template <typename AddressSpaceViewTy>
  struct AP32 {
!   static const uptr kSpaceBeg = 0;
    static const u64 kSpaceSize = SANITIZER_MMAP_RANGE_SIZE;
    static const uptr kMetadataSize = sizeof(ChunkMetadata);
    typedef __sanitizer::CompactSizeClassMap SizeClassMap;
--- 53,59 ----
  #if !SANITIZER_CAN_USE_ALLOCATOR64
  template <typename AddressSpaceViewTy>
  struct AP32 {
!   static const uptr kSpaceBeg = SANITIZER_MMAP_BEGIN;
    static const u64 kSpaceSize = SANITIZER_MMAP_RANGE_SIZE;
    static const uptr kMetadataSize = sizeof(ChunkMetadata);
    typedef __sanitizer::CompactSizeClassMap SizeClassMap;
*************** using LSanSizeClassMap = DefaultSizeClas
*** 93,98 ****
--- 93,102 ----
  const uptr kAllocatorSpace = 0x600000000000ULL;
  const uptr kAllocatorSize  = 0x40000000000ULL;  // 4T.
  using LSanSizeClassMap = DefaultSizeClassMap;
+ #  elif SANITIZER_ANDROID && defined(__aarch64__)
+ const uptr kAllocatorSpace = 0x3000000000ULL;
+ const uptr kAllocatorSize = 0x2000000000ULL;
+ using LSanSizeClassMap = VeryCompactSizeClassMap;
  #  else
  const uptr kAllocatorSpace = 0x500000000000ULL;
  const uptr kAllocatorSize = 0x40000000000ULL;  // 4T.
*************** void *lsan_aligned_alloc(uptr alignment,
*** 127,132 ****
--- 131,138 ----
  void *lsan_memalign(uptr alignment, uptr size, const StackTrace &stack);
  void *lsan_malloc(uptr size, const StackTrace &stack);
  void lsan_free(void *p);
+ void lsan_free_sized(void *p, uptr size);
+ void lsan_free_aligned_sized(void *p, uptr alignment, uptr size);
  void *lsan_realloc(void *p, uptr size, const StackTrace &stack);
  void *lsan_reallocarray(void *p, uptr nmemb, uptr size,
                          const StackTrace &stack);
diff -Nrcpad gcc-16-20251130/libsanitizer/lsan/lsan_common.cpp gcc-16-20251207/libsanitizer/lsan/lsan_common.cpp
*** gcc-16-20251130/libsanitizer/lsan/lsan_common.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/lsan/lsan_common.cpp	Sun Dec  7 22:32:17 2025
*************** static const char kStdSuppressions[] =
*** 124,130 ****
  #  endif
      // TLS leak in some glibc versions, described in
      // https://sourceware.org/bugzilla/show_bug.cgi?id=12650.
!     "leak:*tls_get_addr*\n";
  
  void InitializeSuppressions() {
    CHECK_EQ(nullptr, suppression_ctx);
--- 124,131 ----
  #  endif
      // TLS leak in some glibc versions, described in
      // https://sourceware.org/bugzilla/show_bug.cgi?id=12650.
!     "leak:*tls_get_addr*\n"
!     "leak:*dlerror*\n";
  
  void InitializeSuppressions() {
    CHECK_EQ(nullptr, suppression_ctx);
*************** void ScanExtraStackRanges(const Internal
*** 411,417 ****
  #  if SANITIZER_FUCHSIA
  
  // Fuchsia handles all threads together with its own callback.
! static void ProcessThreads(SuspendedThreadsList const &, Frontier *, tid_t,
                             uptr) {}
  
  #  else
--- 412,418 ----
  #  if SANITIZER_FUCHSIA
  
  // Fuchsia handles all threads together with its own callback.
! static void ProcessThreads(SuspendedThreadsList const &, Frontier *, ThreadID,
                             uptr) {}
  
  #  else
*************** static void ProcessThreadRegistry(Fronti
*** 444,450 ****
  
  // Scans thread data (stacks and TLS) for heap pointers.
  template <class Accessor>
! static void ProcessThread(tid_t os_id, uptr sp,
                            const InternalMmapVector<uptr> &registers,
                            InternalMmapVector<Range> &extra_ranges,
                            Frontier *frontier, Accessor &accessor) {
--- 445,451 ----
  
  // Scans thread data (stacks and TLS) for heap pointers.
  template <class Accessor>
! static void ProcessThread(ThreadID os_id, uptr sp,
                            const InternalMmapVector<uptr> &registers,
                            InternalMmapVector<Range> &extra_ranges,
                            Frontier *frontier, Accessor &accessor) {
*************** static void ProcessThread(tid_t os_id, u
*** 555,575 ****
  }
  
  static void ProcessThreads(SuspendedThreadsList const &suspended_threads,
!                            Frontier *frontier, tid_t caller_tid,
                             uptr caller_sp) {
!   InternalMmapVector<tid_t> done_threads;
    InternalMmapVector<uptr> registers;
    InternalMmapVector<Range> extra_ranges;
    for (uptr i = 0; i < suspended_threads.ThreadCount(); i++) {
      registers.clear();
      extra_ranges.clear();
  
!     const tid_t os_id = suspended_threads.GetThreadID(i);
      uptr sp = 0;
      PtraceRegistersStatus have_registers =
          suspended_threads.GetRegistersAndSP(i, &registers, &sp);
      if (have_registers != REGISTERS_AVAILABLE) {
!       Report("Unable to get registers from thread %llu.\n", os_id);
        // If unable to get SP, consider the entire stack to be reachable unless
        // GetRegistersAndSP failed with ESRCH.
        if (have_registers == REGISTERS_UNAVAILABLE_FATAL)
--- 556,576 ----
  }
  
  static void ProcessThreads(SuspendedThreadsList const &suspended_threads,
!                            Frontier *frontier, ThreadID caller_tid,
                             uptr caller_sp) {
!   InternalMmapVector<ThreadID> done_threads;
    InternalMmapVector<uptr> registers;
    InternalMmapVector<Range> extra_ranges;
    for (uptr i = 0; i < suspended_threads.ThreadCount(); i++) {
      registers.clear();
      extra_ranges.clear();
  
!     const ThreadID os_id = suspended_threads.GetThreadID(i);
      uptr sp = 0;
      PtraceRegistersStatus have_registers =
          suspended_threads.GetRegistersAndSP(i, &registers, &sp);
      if (have_registers != REGISTERS_AVAILABLE) {
!       VReport(1, "Unable to get registers from thread %llu.\n", os_id);
        // If unable to get SP, consider the entire stack to be reachable unless
        // GetRegistersAndSP failed with ESRCH.
        if (have_registers == REGISTERS_UNAVAILABLE_FATAL)
*************** static void ProcessThreads(SuspendedThre
*** 588,597 ****
  
    if (flags()->use_detached) {
      CopyMemoryAccessor accessor;
!     InternalMmapVector<tid_t> known_threads;
      GetRunningThreadsLocked(&known_threads);
      Sort(done_threads.data(), done_threads.size());
!     for (tid_t os_id : known_threads) {
        registers.clear();
        extra_ranges.clear();
  
--- 589,598 ----
  
    if (flags()->use_detached) {
      CopyMemoryAccessor accessor;
!     InternalMmapVector<ThreadID> known_threads;
      GetRunningThreadsLocked(&known_threads);
      Sort(done_threads.data(), done_threads.size());
!     for (ThreadID os_id : known_threads) {
        registers.clear();
        extra_ranges.clear();
  
*************** static void CollectIgnoredCb(uptr chunk,
*** 711,717 ****
  
  // Sets the appropriate tag on each chunk.
  static void ClassifyAllChunks(SuspendedThreadsList const &suspended_threads,
!                               Frontier *frontier, tid_t caller_tid,
                                uptr caller_sp) {
    const InternalMmapVector<u32> &suppressed_stacks =
        GetSuppressionContext()->GetSortedSuppressedStacks();
--- 712,718 ----
  
  // Sets the appropriate tag on each chunk.
  static void ClassifyAllChunks(SuspendedThreadsList const &suspended_threads,
!                               Frontier *frontier, ThreadID caller_tid,
                                uptr caller_sp) {
    const InternalMmapVector<u32> &suppressed_stacks =
        GetSuppressionContext()->GetSortedSuppressedStacks();
*************** static bool ReportUnsuspendedThreads(con
*** 789,801 ****
  
  static bool ReportUnsuspendedThreads(
      const SuspendedThreadsList &suspended_threads) {
!   InternalMmapVector<tid_t> threads(suspended_threads.ThreadCount());
    for (uptr i = 0; i < suspended_threads.ThreadCount(); ++i)
      threads[i] = suspended_threads.GetThreadID(i);
  
    Sort(threads.data(), threads.size());
  
!   InternalMmapVector<tid_t> known_threads;
    GetRunningThreadsLocked(&known_threads);
  
    bool succeded = true;
--- 790,802 ----
  
  static bool ReportUnsuspendedThreads(
      const SuspendedThreadsList &suspended_threads) {
!   InternalMmapVector<ThreadID> threads(suspended_threads.ThreadCount());
    for (uptr i = 0; i < suspended_threads.ThreadCount(); ++i)
      threads[i] = suspended_threads.GetThreadID(i);
  
    Sort(threads.data(), threads.size());
  
!   InternalMmapVector<ThreadID> known_threads;
    GetRunningThreadsLocked(&known_threads);
  
    bool succeded = true;
*************** static bool ReportUnsuspendedThreads(
*** 805,811 ****
        succeded = false;
        Report(
            "Running thread %zu was not suspended. False leaks are possible.\n",
!           os_id);
      }
    }
    return succeded;
--- 806,812 ----
        succeded = false;
        Report(
            "Running thread %zu was not suspended. False leaks are possible.\n",
!           (usize)os_id);
      }
    }
    return succeded;
diff -Nrcpad gcc-16-20251130/libsanitizer/lsan/lsan_common.h gcc-16-20251207/libsanitizer/lsan/lsan_common.h
*** gcc-16-20251130/libsanitizer/lsan/lsan_common.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/lsan/lsan_common.h	Sun Dec  7 22:32:17 2025
*************** void UnlockThreads() SANITIZER_NO_THREAD
*** 102,116 ****
  // where leak checking is initiated from a non-main thread).
  void EnsureMainThreadIDIsCorrect();
  
! bool GetThreadRangesLocked(tid_t os_id, uptr *stack_begin, uptr *stack_end,
                             uptr *tls_begin, uptr *tls_end, uptr *cache_begin,
                             uptr *cache_end, DTLS **dtls);
  void GetAllThreadAllocatorCachesLocked(InternalMmapVector<uptr> *caches);
  void GetThreadExtraStackRangesLocked(InternalMmapVector<Range> *ranges);
! void GetThreadExtraStackRangesLocked(tid_t os_id,
                                       InternalMmapVector<Range> *ranges);
  void GetAdditionalThreadContextPtrsLocked(InternalMmapVector<uptr> *ptrs);
! void GetRunningThreadsLocked(InternalMmapVector<tid_t> *threads);
  void PrintThreads();
  
  //// --------------------------------------------------------------------------
--- 102,116 ----
  // where leak checking is initiated from a non-main thread).
  void EnsureMainThreadIDIsCorrect();
  
! bool GetThreadRangesLocked(ThreadID os_id, uptr *stack_begin, uptr *stack_end,
                             uptr *tls_begin, uptr *tls_end, uptr *cache_begin,
                             uptr *cache_end, DTLS **dtls);
  void GetAllThreadAllocatorCachesLocked(InternalMmapVector<uptr> *caches);
  void GetThreadExtraStackRangesLocked(InternalMmapVector<Range> *ranges);
! void GetThreadExtraStackRangesLocked(ThreadID os_id,
                                       InternalMmapVector<Range> *ranges);
  void GetAdditionalThreadContextPtrsLocked(InternalMmapVector<uptr> *ptrs);
! void GetRunningThreadsLocked(InternalMmapVector<ThreadID> *threads);
  void PrintThreads();
  
  //// --------------------------------------------------------------------------
*************** void ProcessPlatformSpecificAllocations(
*** 247,253 ****
  struct CheckForLeaksParam {
    Frontier frontier;
    LeakedChunks leaks;
!   tid_t caller_tid;
    uptr caller_sp;
    bool success = false;
  };
--- 247,253 ----
  struct CheckForLeaksParam {
    Frontier frontier;
    LeakedChunks leaks;
!   ThreadID caller_tid;
    uptr caller_sp;
    bool success = false;
  };
diff -Nrcpad gcc-16-20251130/libsanitizer/lsan/lsan_common_linux.cpp gcc-16-20251207/libsanitizer/lsan/lsan_common_linux.cpp
*** gcc-16-20251130/libsanitizer/lsan/lsan_common_linux.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/lsan/lsan_common_linux.cpp	Sun Dec  7 22:32:17 2025
*************** static int ProcessGlobalRegionsCallback(
*** 93,103 ****
    return 0;
  }
  
- #if SANITIZER_ANDROID && __ANDROID_API__ < 21
- extern "C" __attribute__((weak)) int dl_iterate_phdr(
-     int (*)(struct dl_phdr_info *, size_t, void *), void *);
- #endif
- 
  // Scans global variables for heap pointers.
  void ProcessGlobalRegions(Frontier *frontier) {
    if (!flags()->use_globals) return;
--- 93,98 ----
diff -Nrcpad gcc-16-20251130/libsanitizer/lsan/lsan_fuchsia.cpp gcc-16-20251207/libsanitizer/lsan/lsan_fuchsia.cpp
*** gcc-16-20251130/libsanitizer/lsan/lsan_fuchsia.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/lsan/lsan_fuchsia.cpp	Sun Dec  7 22:32:17 2025
***************
*** 21,26 ****
--- 21,31 ----
  
  using namespace __lsan;
  
+ namespace __sanitizer {
+ // LSan doesn't need to do anything else special in the startup hook.
+ void EarlySanitizerInit() {}
+ }  // namespace __sanitizer
+ 
  namespace __lsan {
  
  void LsanOnDeadlySignal(int signo, void *siginfo, void *context) {}
diff -Nrcpad gcc-16-20251130/libsanitizer/lsan/lsan_interceptors.cpp gcc-16-20251207/libsanitizer/lsan/lsan_interceptors.cpp
*** gcc-16-20251130/libsanitizer/lsan/lsan_interceptors.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/lsan/lsan_interceptors.cpp	Sun Dec  7 22:32:17 2025
*************** INTERCEPTOR(void, free, void *p) {
*** 84,89 ****
--- 84,118 ----
    lsan_free(p);
  }
  
+ #  if SANITIZER_INTERCEPT_FREE_SIZED
+ INTERCEPTOR(void, free_sized, void *p, uptr size) {
+   if (UNLIKELY(!p))
+     return;
+   if (DlsymAlloc::PointerIsMine(p))
+     return DlsymAlloc::Free(p);
+   ENSURE_LSAN_INITED;
+   lsan_free_sized(p, size);
+ }
+ #    define LSAN_MAYBE_INTERCEPT_FREE_SIZED INTERCEPT_FUNCTION(free_sized)
+ #  else
+ #    define LSAN_MAYBE_INTERCEPT_FREE_SIZED
+ #  endif
+ 
+ #  if SANITIZER_INTERCEPT_FREE_ALIGNED_SIZED
+ INTERCEPTOR(void, free_aligned_sized, void *p, uptr alignment, uptr size) {
+   if (UNLIKELY(!p))
+     return;
+   if (DlsymAlloc::PointerIsMine(p))
+     return DlsymAlloc::Free(p);
+   ENSURE_LSAN_INITED;
+   lsan_free_aligned_sized(p, alignment, size);
+ }
+ #    define LSAN_MAYBE_INTERCEPT_FREE_ALIGNED_SIZED \
+       INTERCEPT_FUNCTION(free_aligned_sized)
+ #  else
+ #    define LSAN_MAYBE_INTERCEPT_FREE_ALIGNED_SIZED
+ #  endif
+ 
  INTERCEPTOR(void*, calloc, uptr nmemb, uptr size) {
    if (DlsymAlloc::Use())
      return DlsymAlloc::Callocate(nmemb, size);
*************** INTERCEPTOR(void*, valloc, uptr size) {
*** 117,122 ****
--- 146,154 ----
    GET_STACK_TRACE_MALLOC;
    return lsan_valloc(size, stack);
  }
+ #else
+ #  define LSAN_MAYBE_INTERCEPT_FREE_SIZED
+ #  define LSAN_MAYBE_INTERCEPT_FREE_ALIGNED_SIZED
  #endif  // !SANITIZER_APPLE
  
  #if SANITIZER_INTERCEPT_MEMALIGN
*************** INTERCEPTOR(void, _lwp_exit) {
*** 353,364 ****
  #endif
  
  #if SANITIZER_INTERCEPT_THR_EXIT
! INTERCEPTOR(void, thr_exit, tid_t *state) {
    ENSURE_LSAN_INITED;
    ThreadFinish();
    REAL(thr_exit)(state);
  }
! #define LSAN_MAYBE_INTERCEPT_THR_EXIT INTERCEPT_FUNCTION(thr_exit)
  #else
  #define LSAN_MAYBE_INTERCEPT_THR_EXIT
  #endif
--- 385,396 ----
  #endif
  
  #if SANITIZER_INTERCEPT_THR_EXIT
! INTERCEPTOR(void, thr_exit, ThreadID *state) {
    ENSURE_LSAN_INITED;
    ThreadFinish();
    REAL(thr_exit)(state);
  }
! #  define LSAN_MAYBE_INTERCEPT_THR_EXIT INTERCEPT_FUNCTION(thr_exit)
  #else
  #define LSAN_MAYBE_INTERCEPT_THR_EXIT
  #endif
*************** void InitializeInterceptors() {
*** 547,552 ****
--- 579,586 ----
  
    INTERCEPT_FUNCTION(malloc);
    INTERCEPT_FUNCTION(free);
+   LSAN_MAYBE_INTERCEPT_FREE_SIZED;
+   LSAN_MAYBE_INTERCEPT_FREE_ALIGNED_SIZED;
    LSAN_MAYBE_INTERCEPT_CFREE;
    INTERCEPT_FUNCTION(calloc);
    INTERCEPT_FUNCTION(realloc);
diff -Nrcpad gcc-16-20251130/libsanitizer/lsan/lsan_malloc_mac.cpp gcc-16-20251207/libsanitizer/lsan/lsan_malloc_mac.cpp
*** gcc-16-20251130/libsanitizer/lsan/lsan_malloc_mac.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/lsan/lsan_malloc_mac.cpp	Sun Dec  7 22:32:17 2025
*************** using namespace __lsan;
*** 44,59 ****
    void *p = lsan_valloc(size, stack)
  #define COMMON_MALLOC_FREE(ptr) \
    lsan_free(ptr)
! #define COMMON_MALLOC_SIZE(ptr) \
!   uptr size = lsan_mz_size(ptr)
! #define COMMON_MALLOC_FILL_STATS(zone, stats)
! #define COMMON_MALLOC_REPORT_UNKNOWN_REALLOC(ptr, zone_ptr, zone_name) \
!   (void)zone_name; \
!   Report("mz_realloc(%p) -- attempting to realloc unallocated memory.\n", ptr);
! #define COMMON_MALLOC_NAMESPACE __lsan
! #define COMMON_MALLOC_HAS_ZONE_ENUMERATOR 0
! #define COMMON_MALLOC_HAS_EXTRA_INTROSPECTION_INIT 0
  
! #include "sanitizer_common/sanitizer_malloc_mac.inc"
  
  #endif // SANITIZER_APPLE
--- 44,62 ----
    void *p = lsan_valloc(size, stack)
  #define COMMON_MALLOC_FREE(ptr) \
    lsan_free(ptr)
! #  define COMMON_MALLOC_FREE_SIZED(ptr, size) lsan_free_sized(ptr, size)
! #  define COMMON_MALLOC_FREE_ALIGNED_SIZED(ptr, alignment, size) \
!     lsan_free_aligned_sized(ptr, alignment, size)
! #  define COMMON_MALLOC_SIZE(ptr) uptr size = lsan_mz_size(ptr)
! #  define COMMON_MALLOC_FILL_STATS(zone, stats)
! #  define COMMON_MALLOC_REPORT_UNKNOWN_REALLOC(ptr, zone_ptr, zone_name)    \
!     (void)zone_name;                                                        \
!     Report("mz_realloc(%p) -- attempting to realloc unallocated memory.\n", \
!            ptr);
! #  define COMMON_MALLOC_NAMESPACE __lsan
! #  define COMMON_MALLOC_HAS_ZONE_ENUMERATOR 0
! #  define COMMON_MALLOC_HAS_EXTRA_INTROSPECTION_INIT 0
  
! #  include "sanitizer_common/sanitizer_malloc_mac.inc"
  
  #endif // SANITIZER_APPLE
diff -Nrcpad gcc-16-20251130/libsanitizer/lsan/lsan_posix.cpp gcc-16-20251207/libsanitizer/lsan/lsan_posix.cpp
*** gcc-16-20251130/libsanitizer/lsan/lsan_posix.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/lsan/lsan_posix.cpp	Sun Dec  7 22:32:17 2025
*************** void ThreadContext::OnStarted(void *arg)
*** 48,54 ****
    dtls_ = args->dtls;
  }
  
! void ThreadStart(u32 tid, tid_t os_id, ThreadType thread_type) {
    OnStartedArgs args;
    GetThreadStackAndTls(tid == kMainTid, &args.stack_begin, &args.stack_end,
                         &args.tls_begin, &args.tls_end);
--- 48,54 ----
    dtls_ = args->dtls;
  }
  
! void ThreadStart(u32 tid, ThreadID os_id, ThreadType thread_type) {
    OnStartedArgs args;
    GetThreadStackAndTls(tid == kMainTid, &args.stack_begin, &args.stack_end,
                         &args.tls_begin, &args.tls_end);
*************** void ThreadStart(u32 tid, tid_t os_id, T
*** 57,63 ****
    ThreadContextLsanBase::ThreadStart(tid, os_id, thread_type, &args);
  }
  
! bool GetThreadRangesLocked(tid_t os_id, uptr *stack_begin, uptr *stack_end,
                             uptr *tls_begin, uptr *tls_end, uptr *cache_begin,
                             uptr *cache_end, DTLS **dtls) {
    ThreadContext *context = static_cast<ThreadContext *>(
--- 57,63 ----
    ThreadContextLsanBase::ThreadStart(tid, os_id, thread_type, &args);
  }
  
! bool GetThreadRangesLocked(ThreadID os_id, uptr *stack_begin, uptr *stack_end,
                             uptr *tls_begin, uptr *tls_end, uptr *cache_begin,
                             uptr *cache_end, DTLS **dtls) {
    ThreadContext *context = static_cast<ThreadContext *>(
diff -Nrcpad gcc-16-20251130/libsanitizer/lsan/lsan_posix.h gcc-16-20251207/libsanitizer/lsan/lsan_posix.h
*** gcc-16-20251130/libsanitizer/lsan/lsan_posix.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/lsan/lsan_posix.h	Sun Dec  7 22:32:17 2025
*************** class ThreadContext final : public Threa
*** 41,47 ****
    DTLS *dtls_ = nullptr;
  };
  
! void ThreadStart(u32 tid, tid_t os_id,
                   ThreadType thread_type = ThreadType::Regular);
  
  }  // namespace __lsan
--- 41,47 ----
    DTLS *dtls_ = nullptr;
  };
  
! void ThreadStart(u32 tid, ThreadID os_id,
                   ThreadType thread_type = ThreadType::Regular);
  
  }  // namespace __lsan
diff -Nrcpad gcc-16-20251130/libsanitizer/lsan/lsan_thread.cpp gcc-16-20251207/libsanitizer/lsan/lsan_thread.cpp
*** gcc-16-20251130/libsanitizer/lsan/lsan_thread.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/lsan/lsan_thread.cpp	Sun Dec  7 22:32:17 2025
*************** u32 ThreadCreate(u32 parent_tid, bool de
*** 66,72 ****
    return thread_registry->CreateThread(0, detached, parent_tid, arg);
  }
  
! void ThreadContextLsanBase::ThreadStart(u32 tid, tid_t os_id,
                                          ThreadType thread_type, void *arg) {
    thread_registry->StartThread(tid, os_id, thread_type, arg);
  }
--- 66,72 ----
    return thread_registry->CreateThread(0, detached, parent_tid, arg);
  }
  
! void ThreadContextLsanBase::ThreadStart(u32 tid, ThreadID os_id,
                                          ThreadType thread_type, void *arg) {
    thread_registry->StartThread(tid, os_id, thread_type, arg);
  }
*************** void EnsureMainThreadIDIsCorrect() {
*** 80,86 ****
  
  ///// Interface to the common LSan module. /////
  
! void GetThreadExtraStackRangesLocked(tid_t os_id,
                                       InternalMmapVector<Range> *ranges) {}
  void GetThreadExtraStackRangesLocked(InternalMmapVector<Range> *ranges) {}
  
--- 80,86 ----
  
  ///// Interface to the common LSan module. /////
  
! void GetThreadExtraStackRangesLocked(ThreadID os_id,
                                       InternalMmapVector<Range> *ranges) {}
  void GetThreadExtraStackRangesLocked(InternalMmapVector<Range> *ranges) {}
  
*************** ThreadRegistry *GetLsanThreadRegistryLoc
*** 99,109 ****
    return thread_registry;
  }
  
! void GetRunningThreadsLocked(InternalMmapVector<tid_t> *threads) {
    GetLsanThreadRegistryLocked()->RunCallbackForEachThreadLocked(
        [](ThreadContextBase *tctx, void *threads) {
          if (tctx->status == ThreadStatusRunning) {
!           reinterpret_cast<InternalMmapVector<tid_t> *>(threads)->push_back(
                tctx->os_id);
          }
        },
--- 99,109 ----
    return thread_registry;
  }
  
! void GetRunningThreadsLocked(InternalMmapVector<ThreadID> *threads) {
    GetLsanThreadRegistryLocked()->RunCallbackForEachThreadLocked(
        [](ThreadContextBase *tctx, void *threads) {
          if (tctx->status == ThreadStatusRunning) {
!           reinterpret_cast<InternalMmapVector<ThreadID> *>(threads)->push_back(
                tctx->os_id);
          }
        },
diff -Nrcpad gcc-16-20251130/libsanitizer/lsan/lsan_thread.h gcc-16-20251207/libsanitizer/lsan/lsan_thread.h
*** gcc-16-20251130/libsanitizer/lsan/lsan_thread.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/lsan/lsan_thread.h	Sun Dec  7 22:32:17 2025
*************** class ThreadContextLsanBase : public Thr
*** 30,36 ****
    uptr cache_end() { return cache_end_; }
  
    // The argument is passed on to the subclass's OnStarted member function.
!   static void ThreadStart(u32 tid, tid_t os_id, ThreadType thread_type,
                            void *onstarted_arg);
  
   protected:
--- 30,36 ----
    uptr cache_end() { return cache_end_; }
  
    // The argument is passed on to the subclass's OnStarted member function.
!   static void ThreadStart(u32 tid, ThreadID os_id, ThreadType thread_type,
                            void *onstarted_arg);
  
   protected:
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_allocator_dlsym.h gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_allocator_dlsym.h
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_allocator_dlsym.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_allocator_dlsym.h	Sun Dec  7 22:32:17 2025
*************** struct DlSymAllocator {
*** 36,56 ****
    static void *Allocate(uptr size_in_bytes, uptr align = kWordSize) {
      void *ptr = InternalAlloc(size_in_bytes, nullptr, align);
      CHECK(internal_allocator()->FromPrimary(ptr));
!     Details::OnAllocate(ptr,
!                         internal_allocator()->GetActuallyAllocatedSize(ptr));
      return ptr;
    }
  
    static void *Callocate(usize nmemb, usize size) {
      void *ptr = InternalCalloc(nmemb, size);
      CHECK(internal_allocator()->FromPrimary(ptr));
!     Details::OnAllocate(ptr,
!                         internal_allocator()->GetActuallyAllocatedSize(ptr));
      return ptr;
    }
  
    static void Free(void *ptr) {
!     uptr size = internal_allocator()->GetActuallyAllocatedSize(ptr);
      Details::OnFree(ptr, size);
      InternalFree(ptr);
    }
--- 36,54 ----
    static void *Allocate(uptr size_in_bytes, uptr align = kWordSize) {
      void *ptr = InternalAlloc(size_in_bytes, nullptr, align);
      CHECK(internal_allocator()->FromPrimary(ptr));
!     Details::OnAllocate(ptr, GetSize(ptr));
      return ptr;
    }
  
    static void *Callocate(usize nmemb, usize size) {
      void *ptr = InternalCalloc(nmemb, size);
      CHECK(internal_allocator()->FromPrimary(ptr));
!     Details::OnAllocate(ptr, GetSize(ptr));
      return ptr;
    }
  
    static void Free(void *ptr) {
!     uptr size = GetSize(ptr);
      Details::OnFree(ptr, size);
      InternalFree(ptr);
    }
*************** struct DlSymAllocator {
*** 63,69 ****
        Free(ptr);
        return nullptr;
      }
!     uptr size = internal_allocator()->GetActuallyAllocatedSize(ptr);
      uptr memcpy_size = Min(new_size, size);
      void *new_ptr = Allocate(new_size);
      if (new_ptr)
--- 61,67 ----
        Free(ptr);
        return nullptr;
      }
!     uptr size = GetSize(ptr);
      uptr memcpy_size = Min(new_size, size);
      void *new_ptr = Allocate(new_size);
      if (new_ptr)
*************** struct DlSymAllocator {
*** 77,82 ****
--- 75,84 ----
      return Realloc(ptr, count * size);
    }
  
+   static uptr GetSize(void *ptr) {
+     return internal_allocator()->GetActuallyAllocatedSize(ptr);
+   }
+ 
    static void OnAllocate(const void *ptr, uptr size) {}
    static void OnFree(const void *ptr, uptr size) {}
  };
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_allocator_internal.h gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_allocator_internal.h
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_allocator_internal.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_allocator_internal.h	Sun Dec  7 22:32:17 2025
*************** namespace __sanitizer {
*** 23,29 ****
  typedef CompactSizeClassMap InternalSizeClassMap;
  
  struct AP32 {
!   static const uptr kSpaceBeg = 0;
    static const u64 kSpaceSize = SANITIZER_MMAP_RANGE_SIZE;
    static const uptr kMetadataSize = 0;
    typedef InternalSizeClassMap SizeClassMap;
--- 23,29 ----
  typedef CompactSizeClassMap InternalSizeClassMap;
  
  struct AP32 {
!   static const uptr kSpaceBeg = SANITIZER_MMAP_BEGIN;
    static const u64 kSpaceSize = SANITIZER_MMAP_RANGE_SIZE;
    static const uptr kMetadataSize = 0;
    typedef InternalSizeClassMap SizeClassMap;
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_allocator_local_cache.h gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_allocator_local_cache.h
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_allocator_local_cache.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_allocator_local_cache.h	Sun Dec  7 22:32:17 2025
*************** struct SizeClassAllocator32LocalCache {
*** 166,172 ****
        DCHECK_GT(c->count, 0);
      }
      void *res = c->batch[--c->count];
!     PREFETCH(c->batch[c->count - 1]);
      stats_.Add(AllocatorStatAllocated, c->class_size);
      return res;
    }
--- 166,172 ----
        DCHECK_GT(c->count, 0);
      }
      void *res = c->batch[--c->count];
!     PREFETCH(c->batch[c->count > 0 ? c->count - 1 : 0]);
      stats_.Add(AllocatorStatAllocated, c->class_size);
      return res;
    }
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_allocator_primary64.h gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_allocator_primary64.h
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_allocator_primary64.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_allocator_primary64.h	Sun Dec  7 22:32:17 2025
*************** class SizeClassAllocator64 {
*** 113,118 ****
--- 113,136 ----
    // ~(uptr)0.
    void Init(s32 release_to_os_interval_ms, uptr heap_start = 0) {
      uptr TotalSpaceSize = kSpaceSize + AdditionalSize();
+ 
+     uptr MaxAddr = GetMaxUserVirtualAddress();
+     // VReport does not call the sanitizer allocator.
+     VReport(3, "Max user virtual address: 0x%zx\n", MaxAddr);
+     VReport(3, "Total space size for primary allocator: 0x%zx\n",
+             TotalSpaceSize);
+     // TODO: revise the check if we ever configure sanitizers to deliberately
+     //       map beyond the 2**48 barrier (note that Linux pretends the VMA is
+     //       limited to 48-bit for backwards compatibility, but allows apps to
+     //       explicitly specify an address beyond that).
+     if (heap_start + TotalSpaceSize >= MaxAddr) {
+       // We can't easily adjust the requested heap size, because kSpaceSize is
+       // const (for optimization) and used throughout the code.
+       VReport(0, "Error: heap size %zx exceeds max user virtual address %zx\n",
+               TotalSpaceSize, MaxAddr);
+       VReport(
+           0, "Try using a kernel that allows a larger virtual address space\n");
+     }
      PremappedHeap = heap_start != 0;
      if (PremappedHeap) {
        CHECK(!kUsingConstantSpaceBeg);
*************** class SizeClassAllocator64 {
*** 185,193 ****
      // recoverable.
      if (UNLIKELY(!EnsureFreeArraySpace(region, region_beg,
                                         new_num_freed_chunks))) {
!       Report("FATAL: Internal error: %s's allocator exhausted the free list "
!              "space for size class %zd (%zd bytes).\n", SanitizerToolName,
!              class_id, ClassIdToSize(class_id));
        Die();
      }
      for (uptr i = 0; i < n_chunks; i++)
--- 203,212 ----
      // recoverable.
      if (UNLIKELY(!EnsureFreeArraySpace(region, region_beg,
                                         new_num_freed_chunks))) {
!       Report(
!           "FATAL: Internal error: %s's allocator exhausted the free list "
!           "space for size class %zu (%zu bytes).\n",
!           SanitizerToolName, class_id, ClassIdToSize(class_id));
        Die();
      }
      for (uptr i = 0; i < n_chunks; i++)
*************** class SizeClassAllocator64 {
*** 763,770 ****
      if (!region->exhausted) {
        region->exhausted = true;
        Printf("%s: Out of memory. ", SanitizerToolName);
!       Printf("The process has exhausted %zuMB for size class %zu.\n",
!              kRegionSize >> 20, ClassIdToSize(class_id));
      }
      return true;
    }
--- 782,790 ----
      if (!region->exhausted) {
        region->exhausted = true;
        Printf("%s: Out of memory. ", SanitizerToolName);
!       Printf(
!           "The process has exhausted %zu MB for size class %zu (%zu bytes).\n",
!           kRegionSize >> 20, class_id, ClassIdToSize(class_id));
      }
      return true;
    }
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_atomic_clang.h gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_atomic_clang.h
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_atomic_clang.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_atomic_clang.h	Sun Dec  7 22:32:17 2025
***************
*** 14,19 ****
--- 14,31 ----
  #ifndef SANITIZER_ATOMIC_CLANG_H
  #define SANITIZER_ATOMIC_CLANG_H
  
+ // Helper to suppress warnings related to 8-byte atomic accesses when the target
+ // is 32-bit AIX (where such accesses use libatomic).
+ #if defined(_AIX) && !defined(__powerpc64__) && defined(__clang__)
+ #  define SANITIZER_IGNORE_ATOMIC_ALIGNMENT_BEGIN \
+     _Pragma("clang diagnostic push")              \
+         _Pragma("clang diagnostic ignored \"-Watomic-alignment\"")
+ #  define SANITIZER_IGNORE_ATOMIC_ALIGNMENT_END _Pragma("clang diagnostic pop")
+ #else
+ #  define SANITIZER_IGNORE_ATOMIC_ALIGNMENT_BEGIN
+ #  define SANITIZER_IGNORE_ATOMIC_ALIGNMENT_END
+ #endif
+ 
  namespace __sanitizer {
  
  // We use the compiler builtin atomic operations for loads and stores, which
*************** inline void proc_yield(int cnt) {
*** 35,40 ****
--- 47,53 ----
  #endif
  }
  
+ SANITIZER_IGNORE_ATOMIC_ALIGNMENT_BEGIN
  template <typename T>
  inline typename T::Type atomic_load(const volatile T *a, memory_order mo) {
    DCHECK(mo == memory_order_relaxed || mo == memory_order_consume ||
*************** inline bool atomic_compare_exchange_weak
*** 92,97 ****
--- 105,112 ----
    return atomic_compare_exchange_strong(a, cmp, xchg, mo);
  }
  
+ SANITIZER_IGNORE_ATOMIC_ALIGNMENT_END
+ 
  }  // namespace __sanitizer
  
  #undef ATOMIC_ORDER
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_common.h gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_common.h
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_common.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_common.h	Sun Dec  7 22:32:17 2025
*************** uptr GetMmapGranularity();
*** 78,85 ****
  uptr GetMaxVirtualAddress();
  uptr GetMaxUserVirtualAddress();
  // Threads
! tid_t GetTid();
! int TgKill(pid_t pid, tid_t tid, int sig);
  uptr GetThreadSelf();
  void GetThreadStackTopAndBottom(bool at_initialization, uptr *stack_top,
                                  uptr *stack_bottom);
--- 78,85 ----
  uptr GetMaxVirtualAddress();
  uptr GetMaxUserVirtualAddress();
  // Threads
! ThreadID GetTid();
! int TgKill(pid_t pid, ThreadID tid, int sig);
  uptr GetThreadSelf();
  void GetThreadStackTopAndBottom(bool at_initialization, uptr *stack_top,
                                  uptr *stack_bottom);
*************** uptr FindAvailableMemoryRange(uptr size,
*** 166,172 ****
  
  // Used to check if we can map shadow memory to a fixed location.
  bool MemoryRangeIsAvailable(uptr range_start, uptr range_end);
! // Releases memory pages entirely within the [beg, end] address range. Noop if
  // the provided range does not contain at least one entire page.
  void ReleaseMemoryPagesToOS(uptr beg, uptr end);
  void IncreaseTotalMmap(uptr size);
--- 166,172 ----
  
  // Used to check if we can map shadow memory to a fixed location.
  bool MemoryRangeIsAvailable(uptr range_start, uptr range_end);
! // Releases memory pages entirely within the [beg, end) address range. Noop if
  // the provided range does not contain at least one entire page.
  void ReleaseMemoryPagesToOS(uptr beg, uptr end);
  void IncreaseTotalMmap(uptr size);
*************** void ReportDeadlySignal(const SignalCont
*** 390,395 ****
--- 390,398 ----
  void SetAlternateSignalStack();
  void UnsetAlternateSignalStack();
  
+ bool IsSignalHandlerFromSanitizer(int signum);
+ bool SetSignalHandlerFromSanitizer(int signum, bool new_state);
+ 
  // Construct a one-line string:
  //   SUMMARY: SanitizerToolName: error_message
  // and pass it to __sanitizer_report_error_summary.
*************** inline uptr Log2(uptr x) {
*** 484,489 ****
--- 487,499 ----
    return LeastSignificantSetBitIndex(x);
  }
  
+ inline bool IntervalsAreSeparate(uptr start1, uptr end1, uptr start2,
+                                  uptr end2) {
+   CHECK_LE(start1, end1);
+   CHECK_LE(start2, end2);
+   return (end1 < start2) || (end2 < start1);
+ }
+ 
  // Don't use std::min, std::max or std::swap, to minimize dependency
  // on libstdc++.
  template <class T>
*************** enum ModuleArch {
*** 734,739 ****
--- 744,750 ----
    kModuleArchARMV7S,
    kModuleArchARMV7K,
    kModuleArchARM64,
+   kModuleArchARM64E,
    kModuleArchLoongArch64,
    kModuleArchRISCV64,
    kModuleArchHexagon
*************** inline const char *ModuleArchToString(Mo
*** 807,812 ****
--- 818,825 ----
        return "armv7k";
      case kModuleArchARM64:
        return "arm64";
+     case kModuleArchARM64E:
+       return "arm64e";
      case kModuleArchLoongArch64:
        return "loongarch64";
      case kModuleArchRISCV64:
*************** class ListOfModules {
*** 925,937 ****
  // Callback type for iterating over a set of memory ranges.
  typedef void (*RangeIteratorCallback)(uptr begin, uptr end, void *arg);
  
- enum AndroidApiLevel {
-   ANDROID_NOT_ANDROID = 0,
-   ANDROID_KITKAT = 19,
-   ANDROID_LOLLIPOP_MR1 = 22,
-   ANDROID_POST_LOLLIPOP = 23
- };
- 
  void WriteToSyslog(const char *buffer);
  
  #if defined(SANITIZER_WINDOWS) && defined(_MSC_VER) && !defined(__clang__)
--- 938,943 ----
*************** inline void AndroidLogInit() {}
*** 964,982 ****
  inline void SetAbortMessage(const char *) {}
  #endif
  
- #if SANITIZER_ANDROID
- void SanitizerInitializeUnwinder();
- AndroidApiLevel AndroidGetApiLevel();
- #else
- inline void AndroidLogWrite(const char *buffer_unused) {}
- inline void SanitizerInitializeUnwinder() {}
- inline AndroidApiLevel AndroidGetApiLevel() { return ANDROID_NOT_ANDROID; }
- #endif
- 
  inline uptr GetPthreadDestructorIterations() {
! #if SANITIZER_ANDROID
!   return (AndroidGetApiLevel() == ANDROID_LOLLIPOP_MR1) ? 8 : 4;
! #elif SANITIZER_POSIX
    return 4;
  #else
  // Unused on Windows.
--- 970,977 ----
  inline void SetAbortMessage(const char *) {}
  #endif
  
  inline uptr GetPthreadDestructorIterations() {
! #if SANITIZER_POSIX
    return 4;
  #else
  // Unused on Windows.
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc	Sun Dec  7 22:32:18 2025
*************** INTERCEPTOR(char*, textdomain, const cha
*** 481,487 ****
  #endif
  
  #if SANITIZER_INTERCEPT_STRCMP || SANITIZER_INTERCEPT_MEMCMP
! static inline int CharCmpX(unsigned char c1, unsigned char c2) {
    return (c1 == c2) ? 0 : (c1 < c2) ? -1 : 1;
  }
  #endif
--- 481,488 ----
  #endif
  
  #if SANITIZER_INTERCEPT_STRCMP || SANITIZER_INTERCEPT_MEMCMP
! [[maybe_unused]] static inline int CharCmpX(unsigned char c1,
!                                             unsigned char c2) {
    return (c1 == c2) ? 0 : (c1 < c2) ? -1 : 1;
  }
  #endif
*************** INTERCEPTOR(double, frexp, double x, int
*** 953,959 ****
  #define INIT_FREXP
  #endif  // SANITIZER_INTERCEPT_FREXP
  
! #if SANITIZER_INTERCEPT_FREXPF_FREXPL
  INTERCEPTOR(float, frexpf, float x, int *exp) {
    void *ctx;
    COMMON_INTERCEPTOR_ENTER(ctx, frexpf, x, exp);
--- 954,960 ----
  #define INIT_FREXP
  #endif  // SANITIZER_INTERCEPT_FREXP
  
! #if SANITIZER_INTERCEPT_FREXPF
  INTERCEPTOR(float, frexpf, float x, int *exp) {
    void *ctx;
    COMMON_INTERCEPTOR_ENTER(ctx, frexpf, x, exp);
*************** INTERCEPTOR(float, frexpf, float x, int
*** 963,968 ****
--- 964,975 ----
    return res;
  }
  
+ #  define INIT_FREXPF COMMON_INTERCEPT_FUNCTION(frexpf);
+ #else
+ #  define INIT_FREXPF
+ #endif
+ 
+ #if SANITIZER_INTERCEPT_FREXPL
  INTERCEPTOR(long double, frexpl, long double x, int *exp) {
    void *ctx;
    COMMON_INTERCEPTOR_ENTER(ctx, frexpl, x, exp);
*************** INTERCEPTOR(long double, frexpl, long do
*** 972,983 ****
    return res;
  }
  
! #define INIT_FREXPF_FREXPL           \
!   COMMON_INTERCEPT_FUNCTION(frexpf); \
!   COMMON_INTERCEPT_FUNCTION_LDBL(frexpl)
  #else
! #define INIT_FREXPF_FREXPL
! #endif  // SANITIZER_INTERCEPT_FREXPF_FREXPL
  
  #if SI_POSIX
  static void write_iovec(void *ctx, struct __sanitizer_iovec *iovec,
--- 979,988 ----
    return res;
  }
  
! #  define INIT_FREXPL COMMON_INTERCEPT_FUNCTION_LDBL(frexpl)
  #else
! #  define INIT_FREXPL
! #endif
  
  #if SI_POSIX
  static void write_iovec(void *ctx, struct __sanitizer_iovec *iovec,
*************** INTERCEPTOR(int, puts, char *s) {
*** 1280,1287 ****
  #endif
  
  #if SANITIZER_INTERCEPT_PRCTL
! INTERCEPTOR(int, prctl, int option, unsigned long arg2, unsigned long arg3,
!             unsigned long arg4, unsigned long arg5) {
    void *ctx;
    COMMON_INTERCEPTOR_ENTER(ctx, prctl, option, arg2, arg3, arg4, arg5);
    static const int PR_SET_NAME = 15;
--- 1285,1318 ----
  #endif
  
  #if SANITIZER_INTERCEPT_PRCTL
! 
! #  if defined(__aarch64__)
! // https://llvm.org/docs/PointerAuth.html
! // AArch64 is currently the only architecture with full PAC support.
! // Avoid adding PAC instructions to prevent crashes caused by
! // prctl(PR_PAC_RESET_KEYS, ...). Since PR_PAC_RESET_KEYS resets the
! // authentication key, using the old key afterward will lead to a crash.
! 
! #    if defined(__ARM_FEATURE_BTI_DEFAULT)
! #      define BRANCH_PROTECTION_ATTRIBUTE \
!         __attribute__((target("branch-protection=bti")))
! #    else
! #      define BRANCH_PROTECTION_ATTRIBUTE \
!         __attribute__((target("branch-protection=none")))
! #    endif
! 
! #    define PRCTL_INTERCEPTOR(ret_type, func, ...)                          \
!       DEFINE_REAL(ret_type, func, __VA_ARGS__)                              \
!       DECLARE_WRAPPER(ret_type, func, __VA_ARGS__)                          \
!       extern "C" INTERCEPTOR_ATTRIBUTE BRANCH_PROTECTION_ATTRIBUTE ret_type \
!       WRAP(func)(__VA_ARGS__)
! 
! #  else
! #    define PRCTL_INTERCEPTOR INTERCEPTOR
! #  endif
! 
! PRCTL_INTERCEPTOR(int, prctl, int option, unsigned long arg2,
!                   unsigned long arg3, unsigned long arg4, unsigned long arg5) {
    void *ctx;
    COMMON_INTERCEPTOR_ENTER(ctx, prctl, option, arg2, arg3, arg4, arg5);
    static const int PR_SET_NAME = 15;
*************** INTERCEPTOR(int, prctl, int option, unsi
*** 1295,1301 ****
    static const int PR_SET_SECCOMP = 22;
    static const int SECCOMP_MODE_FILTER = 2;
  #  endif
!   if (option == PR_SET_VMA && arg2 == 0UL) {
      char *name = (char *)arg5;
      COMMON_INTERCEPTOR_READ_RANGE(ctx, name, internal_strlen(name) + 1);
    }
--- 1326,1332 ----
    static const int PR_SET_SECCOMP = 22;
    static const int SECCOMP_MODE_FILTER = 2;
  #  endif
!   if (option == PR_SET_VMA && arg2 == 0UL && arg5 != 0UL) {
      char *name = (char *)arg5;
      COMMON_INTERCEPTOR_READ_RANGE(ctx, name, internal_strlen(name) + 1);
    }
*************** INTERCEPTOR(int, prctl, int option, unsi
*** 1313,1319 ****
      COMMON_INTERCEPTOR_WRITE_RANGE(ctx, (u64 *)(arg5), sizeof(u64));
    } else if (res != -1 && option == PR_GET_PDEATHSIG) {
      COMMON_INTERCEPTOR_WRITE_RANGE(ctx, (u64 *)(arg2), sizeof(int));
! #  if !SANITIZER_ANDROID
    } else if (res != -1 && option == PR_SET_SECCOMP &&
               arg2 == SECCOMP_MODE_FILTER) {
      COMMON_INTERCEPTOR_WRITE_RANGE(ctx, (u64 *)(arg3), struct_sock_fprog_sz);
--- 1344,1350 ----
      COMMON_INTERCEPTOR_WRITE_RANGE(ctx, (u64 *)(arg5), sizeof(u64));
    } else if (res != -1 && option == PR_GET_PDEATHSIG) {
      COMMON_INTERCEPTOR_WRITE_RANGE(ctx, (u64 *)(arg2), sizeof(int));
! #  if SANITIZER_GLIBC
    } else if (res != -1 && option == PR_SET_SECCOMP &&
               arg2 == SECCOMP_MODE_FILTER) {
      COMMON_INTERCEPTOR_WRITE_RANGE(ctx, (u64 *)(arg3), struct_sock_fprog_sz);
*************** INTERCEPTOR(int, prctl, int option, unsi
*** 1321,1327 ****
    }
    return res;
  }
! #define INIT_PRCTL COMMON_INTERCEPT_FUNCTION(prctl)
  #else
  #define INIT_PRCTL
  #endif  // SANITIZER_INTERCEPT_PRCTL
--- 1352,1358 ----
    }
    return res;
  }
! #  define INIT_PRCTL COMMON_INTERCEPT_FUNCTION(prctl)
  #else
  #define INIT_PRCTL
  #endif  // SANITIZER_INTERCEPT_PRCTL
*************** INTERCEPTOR(unsigned long, time, unsigne
*** 1346,1352 ****
  #if SANITIZER_INTERCEPT_LOCALTIME_AND_FRIENDS
  static void unpoison_tm(void *ctx, __sanitizer_tm *tm) {
    COMMON_INTERCEPTOR_WRITE_RANGE(ctx, tm, sizeof(*tm));
! #if !SANITIZER_SOLARIS
    if (tm->tm_zone) {
      // Can not use COMMON_INTERCEPTOR_WRITE_RANGE here, because tm->tm_zone
      // can point to shared memory and tsan would report a data race.
--- 1377,1384 ----
  #if SANITIZER_INTERCEPT_LOCALTIME_AND_FRIENDS
  static void unpoison_tm(void *ctx, __sanitizer_tm *tm) {
    COMMON_INTERCEPTOR_WRITE_RANGE(ctx, tm, sizeof(*tm));
! // AIX tm struct does not have tm_zone field.
! #  if !SANITIZER_SOLARIS && !SANITIZER_AIX
    if (tm->tm_zone) {
      // Can not use COMMON_INTERCEPTOR_WRITE_RANGE here, because tm->tm_zone
      // can point to shared memory and tsan would report a data race.
*************** INTERCEPTOR(int, __vsprintf_chk, char *s
*** 1731,1740 ****
  VSPRINTF_INTERCEPTOR_IMPL(vsprintf, str, format, ap)
  #endif
  
  INTERCEPTOR(int, vasprintf, char **strp, const char *format, va_list ap)
  VASPRINTF_INTERCEPTOR_IMPL(vasprintf, strp, format, ap)
  
! #if SANITIZER_INTERCEPT_ISOC99_PRINTF
  INTERCEPTOR(int, __isoc99_vprintf, const char *format, va_list ap)
  VPRINTF_INTERCEPTOR_IMPL(__isoc99_vprintf, format, ap)
  
--- 1763,1774 ----
  VSPRINTF_INTERCEPTOR_IMPL(vsprintf, str, format, ap)
  #endif
  
+ #  if SANITIZER_INTERCEPT_VASPRINTF
  INTERCEPTOR(int, vasprintf, char **strp, const char *format, va_list ap)
  VASPRINTF_INTERCEPTOR_IMPL(vasprintf, strp, format, ap)
+ #  endif
  
! #  if SANITIZER_INTERCEPT_ISOC99_PRINTF
  INTERCEPTOR(int, __isoc99_vprintf, const char *format, va_list ap)
  VPRINTF_INTERCEPTOR_IMPL(__isoc99_vprintf, format, ap)
  
*************** INTERCEPTOR(int, __snprintf_chk, char *s
*** 1783,1792 ****
  FORMAT_INTERCEPTOR_IMPL(__snprintf_chk, vsnprintf, str, size, format)
  #endif
  
  INTERCEPTOR(int, asprintf, char **strp, const char *format, ...)
  FORMAT_INTERCEPTOR_IMPL(asprintf, vasprintf, strp, format)
  
! #if SANITIZER_INTERCEPT_ISOC99_PRINTF
  INTERCEPTOR(int, __isoc99_printf, const char *format, ...)
  FORMAT_INTERCEPTOR_IMPL(__isoc99_printf, __isoc99_vprintf, format)
  
--- 1817,1828 ----
  FORMAT_INTERCEPTOR_IMPL(__snprintf_chk, vsnprintf, str, size, format)
  #endif
  
+ #  if SANITIZER_INTERCEPT_ASPRINTF
  INTERCEPTOR(int, asprintf, char **strp, const char *format, ...)
  FORMAT_INTERCEPTOR_IMPL(asprintf, vasprintf, strp, format)
+ #  endif
  
! #  if SANITIZER_INTERCEPT_ISOC99_PRINTF
  INTERCEPTOR(int, __isoc99_printf, const char *format, ...)
  FORMAT_INTERCEPTOR_IMPL(__isoc99_printf, __isoc99_vprintf, format)
  
*************** FORMAT_INTERCEPTOR_IMPL(__isoc99_snprint
*** 1807,1823 ****
  #endif  // SANITIZER_INTERCEPT_PRINTF
  
  #if SANITIZER_INTERCEPT_PRINTF
! #define INIT_PRINTF                     \
!   COMMON_INTERCEPT_FUNCTION_LDBL(printf);    \
!   COMMON_INTERCEPT_FUNCTION_LDBL(sprintf);   \
!   COMMON_INTERCEPT_FUNCTION_LDBL(snprintf);  \
!   COMMON_INTERCEPT_FUNCTION_LDBL(asprintf);  \
!   COMMON_INTERCEPT_FUNCTION_LDBL(fprintf);   \
!   COMMON_INTERCEPT_FUNCTION_LDBL(vprintf);   \
!   COMMON_INTERCEPT_FUNCTION_LDBL(vsprintf);  \
!   COMMON_INTERCEPT_FUNCTION_LDBL(vsnprintf); \
!   COMMON_INTERCEPT_FUNCTION_LDBL(vasprintf); \
!   COMMON_INTERCEPT_FUNCTION_LDBL(vfprintf);
  #else
  #define INIT_PRINTF
  #endif
--- 1843,1866 ----
  #endif  // SANITIZER_INTERCEPT_PRINTF
  
  #if SANITIZER_INTERCEPT_PRINTF
! #  define INIT_PRINTF_COMMON                   \
!     COMMON_INTERCEPT_FUNCTION_LDBL(printf);    \
!     COMMON_INTERCEPT_FUNCTION_LDBL(sprintf);   \
!     COMMON_INTERCEPT_FUNCTION_LDBL(snprintf);  \
!     COMMON_INTERCEPT_FUNCTION_LDBL(fprintf);   \
!     COMMON_INTERCEPT_FUNCTION_LDBL(vprintf);   \
!     COMMON_INTERCEPT_FUNCTION_LDBL(vsprintf);  \
!     COMMON_INTERCEPT_FUNCTION_LDBL(vsnprintf); \
!     COMMON_INTERCEPT_FUNCTION_LDBL(vfprintf);
! #  if !SANITIZER_AIX
! // AIX does not have [v]asprintf.
! #    define INIT_PRINTF_EXTRA                   \
!       COMMON_INTERCEPT_FUNCTION_LDBL(asprintf); \
!       COMMON_INTERCEPT_FUNCTION_LDBL(vasprintf);
! #  else
! #    define INIT_PRINTF_EXTRA
! #  endif
! #  define INIT_PRINTF INIT_PRINTF_COMMON INIT_PRINTF_EXTRA
  #else
  #define INIT_PRINTF
  #endif
*************** FORMAT_INTERCEPTOR_IMPL(__isoc99_snprint
*** 1855,1860 ****
--- 1898,1919 ----
  #define INIT_ISOC99_PRINTF
  #endif
  
+ #if SANITIZER_INTERCEPT_SETPROCTITLE
+ INTERCEPTOR(void, setproctitle, const char *fmt, ...) {
+   void *ctx;
+   va_list ap;
+   va_start(ap, fmt);
+   COMMON_INTERCEPTOR_ENTER(ctx, setproctitle, fmt, ap);
+   if (common_flags()->check_printf)
+     printf_common(ctx, fmt, ap);
+   REAL(setproctitle)(fmt, ap);
+   va_end(ap);
+ }
+ #  define INIT_SETPROCTITLE COMMON_INTERCEPT_FUNCTION(setproctitle);
+ #else
+ #  define INIT_SETPROCTITLE
+ #endif
+ 
  #if SANITIZER_INTERCEPT_IOCTL
  #include "sanitizer_common_interceptors_ioctl.inc"
  #include "sanitizer_interceptors_ioctl_netbsd.inc"
*************** INTERCEPTOR(int, pthread_getcpuclockid,
*** 2289,2294 ****
--- 2348,2408 ----
  #define INIT_CLOCK_GETCPUCLOCKID
  #endif
  
+ #if SANITIZER_INTERCEPT_TIMER_CREATE
+ INTERCEPTOR(int, timer_create, __sanitizer_clockid_t clockid, void *sevp,
+             __sanitizer_timer_t *timer) {
+   void *ctx;
+   COMMON_INTERCEPTOR_ENTER(ctx, timer_create, clockid, sevp, timer);
+   int res = REAL(timer_create)(clockid, sevp, timer);
+   if (!res && timer) {
+     COMMON_INTERCEPTOR_WRITE_RANGE(ctx, timer, sizeof *timer);
+   }
+   return res;
+ }
+ 
+ INTERCEPTOR(int, timer_delete, __sanitizer_timer_t timer) {
+   void *ctx;
+   COMMON_INTERCEPTOR_ENTER(ctx, timer_delete, timer);
+   int res = REAL(timer_delete)(timer);
+   return res;
+ }
+ 
+ INTERCEPTOR(int, timer_gettime, __sanitizer_timer_t timer,
+             struct __sanitizer_itimerspec *curr_value) {
+   void *ctx;
+   COMMON_INTERCEPTOR_ENTER(ctx, timer_gettime, timer, curr_value);
+   int res = REAL(timer_gettime)(timer, curr_value);
+   if (!res && curr_value) {
+     COMMON_INTERCEPTOR_WRITE_RANGE(ctx, curr_value, sizeof *curr_value);
+   }
+   return res;
+ }
+ 
+ INTERCEPTOR(int, timer_settime, __sanitizer_timer_t timer, int flags,
+             const struct __sanitizer_itimerspec *new_value,
+             struct __sanitizer_itimerspec *old_value) {
+   void *ctx;
+   COMMON_INTERCEPTOR_ENTER(ctx, timer_settime, timer, flags, new_value,
+                            old_value);
+   int res = REAL(timer_settime)(timer, flags, new_value, old_value);
+   if (!res) {
+     if (new_value)
+       COMMON_INTERCEPTOR_READ_RANGE(ctx, new_value, sizeof *new_value);
+     if (old_value)
+       COMMON_INTERCEPTOR_WRITE_RANGE(ctx, old_value, sizeof *old_value);
+   }
+   return res;
+ }
+ 
+ #  define INIT_TIMER_CREATE                                                \
+     COMMON_INTERCEPT_FUNCTION_GLIBC_VER_MIN(timer_create, "GLIBC_2.3.3");  \
+     COMMON_INTERCEPT_FUNCTION_GLIBC_VER_MIN(timer_delete, "GLIBC_2.3.3");  \
+     COMMON_INTERCEPT_FUNCTION_GLIBC_VER_MIN(timer_gettime, "GLIBC_2.3.3"); \
+     COMMON_INTERCEPT_FUNCTION_GLIBC_VER_MIN(timer_settime, "GLIBC_2.3.3");
+ #else
+ #  define INIT_TIMER_CREATE
+ #endif
+ 
  #if SANITIZER_INTERCEPT_GETITIMER
  INTERCEPTOR(int, getitimer, int which, void *curr_value) {
    void *ctx;
*************** INTERCEPTOR(int, setitimer, int which, c
*** 2334,2339 ****
--- 2448,2472 ----
  #define INIT_GETITIMER
  #endif
  
+ #if SANITIZER_INTERCEPT_TIMESPEC_GET
+ INTERCEPTOR(int, timespec_get, struct __sanitizer_timespec *ts, int base) {
+   void *ctx;
+   COMMON_INTERCEPTOR_ENTER(ctx, timespec_get, ts, base);
+   // We don't yet know if ts is addressable, so we use our own scratch buffer
+   struct __sanitizer_timespec ts_local;
+   int res = REAL(timespec_get)(&ts_local, base);
+   if (res) {
+     COMMON_INTERCEPTOR_WRITE_RANGE(ctx, ts,
+                                    sizeof(struct __sanitizer_timespec));
+     internal_memcpy(ts, &ts_local, sizeof(struct __sanitizer_timespec));
+   }
+   return res;
+ }
+ #  define INIT_TIMESPEC_GET COMMON_INTERCEPT_FUNCTION(timespec_get);
+ #else
+ #  define INIT_TIMESPEC_GET
+ #endif
+ 
  #if SANITIZER_INTERCEPT_GLOB
  static void unpoison_glob_t(void *ctx, __sanitizer_glob_t *pglob) {
    COMMON_INTERCEPTOR_WRITE_RANGE(ctx, pglob, sizeof(*pglob));
*************** INTERCEPTOR(SIZE_T, wcrtomb, char *dest,
*** 3827,3833 ****
    if (res != ((SIZE_T)-1)) {
      CHECK_LE(res, sizeof(local_dest));
      COMMON_INTERCEPTOR_WRITE_RANGE(ctx, dest, res);
!     REAL(memcpy)(dest, local_dest, res);
    }
    return res;
  }
--- 3960,3966 ----
    if (res != ((SIZE_T)-1)) {
      CHECK_LE(res, sizeof(local_dest));
      COMMON_INTERCEPTOR_WRITE_RANGE(ctx, dest, res);
!     internal_memcpy(dest, local_dest, res);
    }
    return res;
  }
*************** INTERCEPTOR(int, wctomb, char *dest, wch
*** 3849,3855 ****
    if (res != -1) {
      CHECK_LE(res, sizeof(local_dest));
      COMMON_INTERCEPTOR_WRITE_RANGE(ctx, dest, res);
!     REAL(memcpy)(dest, local_dest, res);
    }
    return res;
  }
--- 3982,3988 ----
    if (res != -1) {
      CHECK_LE(res, sizeof(local_dest));
      COMMON_INTERCEPTOR_WRITE_RANGE(ctx, dest, res);
!     internal_memcpy(dest, local_dest, res);
    }
    return res;
  }
*************** INTERCEPTOR(SSIZE_T, freadlink, int fd,
*** 10189,10194 ****
--- 10322,10392 ----
  #  define INIT_FREADLINK
  #endif
  
+ #if SANITIZER_INTERCEPT_GETSERVENT_R || SANITIZER_INTERCEPT_GETSERVBYNAME_R || \
+     SANITIZER_INTERCEPT_GETSERVBYPORT_R
+ 
+ UNUSED static void HandleGetServentReentrantResult(
+     void *ctx, int res, struct __sanitizer_servent *result_buf, char *buf,
+     SIZE_T buflen, struct __sanitizer_servent **result) {
+   COMMON_INTERCEPTOR_WRITE_RANGE(ctx, (char *)result, sizeof(void *));
+   if (res)
+     return;
+   if (*result) {
+     COMMON_INTERCEPTOR_WRITE_RANGE(ctx, (char *)*result,
+                                    sizeof(__sanitizer_servent));
+     COMMON_INTERCEPTOR_WRITE_RANGE(ctx, buf, buflen);
+   }
+ }
+ 
+ #endif
+ 
+ #if SANITIZER_INTERCEPT_GETSERVENT_R
+ INTERCEPTOR(int, getservent_r, struct __sanitizer_servent *result_buf,
+             char *buf, SIZE_T buflen, struct __sanitizer_servent **result) {
+   void *ctx;
+   COMMON_INTERCEPTOR_ENTER(ctx, getservent_r, result_buf, buf, buflen, result);
+   int res = REAL(getservent_r)(result_buf, buf, buflen, result);
+   HandleGetServentReentrantResult(ctx, res, result_buf, buf, buflen, result);
+   return res;
+ }
+ #  define INIT_GETSERVENT_R COMMON_INTERCEPT_FUNCTION(getservent_r)
+ #else
+ #  define INIT_GETSERVENT_R
+ #endif
+ 
+ #if SANITIZER_INTERCEPT_GETSERVBYNAME_R
+ INTERCEPTOR(int, getservbyname_r, const char *name, const char *proto,
+             struct __sanitizer_servent *result_buf, char *buf, SIZE_T buflen,
+             struct __sanitizer_servent **result) {
+   void *ctx;
+   COMMON_INTERCEPTOR_ENTER(ctx, getservbyname_r, name, proto, result_buf, buf,
+                            buflen, result);
+   COMMON_INTERCEPTOR_READ_STRING(ctx, name, internal_strlen(name));
+   int res = REAL(getservbyname_r)(name, proto, result_buf, buf, buflen, result);
+   HandleGetServentReentrantResult(ctx, res, result_buf, buf, buflen, result);
+   return res;
+ }
+ #  define INIT_GETSERVBYNAME_R COMMON_INTERCEPT_FUNCTION(getservbyname_r)
+ #else
+ #  define INIT_GETSERVBYNAME_R
+ #endif
+ 
+ #if SANITIZER_INTERCEPT_GETSERVBYPORT_R
+ INTERCEPTOR(int, getservbyport_r, int port, const char *proto,
+             struct __sanitizer_servent *result_buf, char *buf, SIZE_T buflen,
+             struct __sanitizer_servent **result) {
+   void *ctx;
+   COMMON_INTERCEPTOR_ENTER(ctx, getservbyport_r, port, proto, result_buf, buf,
+                            buflen, result);
+   int res = REAL(getservbyport_r)(port, proto, result_buf, buf, buflen, result);
+   HandleGetServentReentrantResult(ctx, res, result_buf, buf, buflen, result);
+   return res;
+ }
+ #  define INIT_GETSERVBYPORT_R COMMON_INTERCEPT_FUNCTION(getservbyport_r)
+ #else
+ #  define INIT_GETSERVBYPORT_R
+ #endif
+ 
  #include "sanitizer_common_interceptors_netbsd_compat.inc"
  
  namespace __sanitizer {
*************** static void InitializeCommonInterceptors
*** 10254,10261 ****
    INIT_PRINTF;
    INIT_PRINTF_L;
    INIT_ISOC99_PRINTF;
    INIT_FREXP;
!   INIT_FREXPF_FREXPL;
    INIT_GETPWNAM_AND_FRIENDS;
    INIT_GETPWNAM_R_AND_FRIENDS;
    INIT_GETPWENT;
--- 10452,10461 ----
    INIT_PRINTF;
    INIT_PRINTF_L;
    INIT_ISOC99_PRINTF;
+   INIT_SETPROCTITLE;
    INIT_FREXP;
!   INIT_FREXPF;
!   INIT_FREXPL;
    INIT_GETPWNAM_AND_FRIENDS;
    INIT_GETPWNAM_R_AND_FRIENDS;
    INIT_GETPWENT;
*************** static void InitializeCommonInterceptors
*** 10266,10273 ****
--- 10466,10475 ----
    INIT_SETPWENT;
    INIT_CLOCK_GETTIME;
    INIT_CLOCK_GETCPUCLOCKID;
+   INIT_TIMER_CREATE;
    INIT_GETITIMER;
    INIT_TIME;
+   INIT_TIMESPEC_GET;
    INIT_GLOB;
    INIT_GLOB64;
    INIT___B64_TO;
*************** static void InitializeCommonInterceptors
*** 10511,10514 ****
--- 10713,10719 ----
    INIT_FREADLINK;
  
    INIT___PRINTF_CHK;
+   INIT_GETSERVENT_R;
+   INIT_GETSERVBYNAME_R;
+   INIT_GETSERVBYPORT_R;
  }
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_common_interceptors_format.inc gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_common_interceptors_format.inc
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_common_interceptors_format.inc	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_common_interceptors_format.inc	Sun Dec  7 22:32:18 2025
*************** static const char *maybe_parse_length_mo
*** 67,72 ****
--- 67,76 ----
  
  // Returns true if the character is an integer conversion specifier.
  static bool format_is_integer_conv(char c) {
+ #if SANITIZER_GLIBC
+   if (char_is_one_of(c, "bB"))
+     return true;
+ #endif
    return char_is_one_of(c, "diouxXn");
  }
  
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc	Sun Dec  7 22:32:18 2025
*************** static void ioctl_table_fill() {
*** 48,82 ****
      ++ioctl_table_size;                                  \
    }
  
    _(FIOASYNC, READ, sizeof(int));
    _(FIOCLEX, NONE, 0);
    _(FIOGETOWN, WRITE, sizeof(int));
-   _(FIONBIO, READ, sizeof(int));
    _(FIONCLEX, NONE, 0);
    _(FIOSETOWN, READ, sizeof(int));
    _(SIOCATMARK, WRITE, sizeof(int));
    _(SIOCGIFCONF, CUSTOM, 0);
    _(SIOCGPGRP, WRITE, sizeof(int));
    _(SIOCSPGRP, READ, sizeof(int));
! #if !SANITIZER_SOLARIS
    _(TIOCCONS, NONE, 0);
  #endif
!   _(TIOCEXCL, NONE, 0);
    _(TIOCGETD, WRITE, sizeof(int));
    _(TIOCGPGRP, WRITE, pid_t_sz);
    _(TIOCGWINSZ, WRITE, struct_winsize_sz);
    _(TIOCMBIC, READ, sizeof(int));
    _(TIOCMBIS, READ, sizeof(int));
    _(TIOCMGET, WRITE, sizeof(int));
    _(TIOCMSET, READ, sizeof(int));
-   _(TIOCNOTTY, NONE, 0);
    _(TIOCNXCL, NONE, 0);
    _(TIOCOUTQ, WRITE, sizeof(int));
!   _(TIOCPKT, READ, sizeof(int));
    _(TIOCSCTTY, NONE, 0);
!   _(TIOCSETD, READ, sizeof(int));
    _(TIOCSPGRP, READ, pid_t_sz);
-   _(TIOCSTI, READ, sizeof(char));
    _(TIOCSWINSZ, READ, struct_winsize_sz);
  
  #if !SANITIZER_IOS
--- 48,88 ----
      ++ioctl_table_size;                                  \
    }
  
+   _(FIONBIO, READ, sizeof(int));
+ #if !SANITIZER_HAIKU
    _(FIOASYNC, READ, sizeof(int));
    _(FIOCLEX, NONE, 0);
    _(FIOGETOWN, WRITE, sizeof(int));
    _(FIONCLEX, NONE, 0);
    _(FIOSETOWN, READ, sizeof(int));
+ #endif
    _(SIOCATMARK, WRITE, sizeof(int));
    _(SIOCGIFCONF, CUSTOM, 0);
    _(SIOCGPGRP, WRITE, sizeof(int));
    _(SIOCSPGRP, READ, sizeof(int));
! #if !SANITIZER_SOLARIS && !SANITIZER_HAIKU
    _(TIOCCONS, NONE, 0);
  #endif
! #if !SANITIZER_HAIKU
    _(TIOCGETD, WRITE, sizeof(int));
+   _(TIOCNOTTY, NONE, 0);
+   _(TIOCPKT, READ, sizeof(int));
+   _(TIOCSETD, READ, sizeof(int));
+   _(TIOCSTI, READ, sizeof(char));
+ #endif
+   _(TIOCEXCL, NONE, 0);
    _(TIOCGPGRP, WRITE, pid_t_sz);
    _(TIOCGWINSZ, WRITE, struct_winsize_sz);
    _(TIOCMBIC, READ, sizeof(int));
    _(TIOCMBIS, READ, sizeof(int));
    _(TIOCMGET, WRITE, sizeof(int));
    _(TIOCMSET, READ, sizeof(int));
    _(TIOCNXCL, NONE, 0);
    _(TIOCOUTQ, WRITE, sizeof(int));
! #  if !SANITIZER_AIX
    _(TIOCSCTTY, NONE, 0);
! #  endif
    _(TIOCSPGRP, READ, pid_t_sz);
    _(TIOCSWINSZ, READ, struct_winsize_sz);
  
  #if !SANITIZER_IOS
*************** static void ioctl_table_fill() {
*** 338,349 ****
--- 344,359 ----
    _(SOUND_PCM_WRITE_CHANNELS, WRITE, sizeof(int));
    _(SOUND_PCM_WRITE_FILTER, WRITE, sizeof(int));
    _(TCFLSH, NONE, 0);
+ #    if SANITIZER_TERMIOS_IOCTL_CONSTANTS
    _(TCGETS, WRITE, struct_termios_sz);
+ #    endif
    _(TCSBRK, NONE, 0);
    _(TCSBRKP, NONE, 0);
+ #    if SANITIZER_TERMIOS_IOCTL_CONSTANTS
    _(TCSETS, READ, struct_termios_sz);
    _(TCSETSF, READ, struct_termios_sz);
    _(TCSETSW, READ, struct_termios_sz);
+ #    endif
    _(TCXONC, NONE, 0);
    _(TIOCGLCKTRMIOS, WRITE, struct_termios_sz);
    _(TIOCGSOFTCAR, WRITE, sizeof(int));
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_common_interceptors_memintrinsics.inc gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_common_interceptors_memintrinsics.inc
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_common_interceptors_memintrinsics.inc	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_common_interceptors_memintrinsics.inc	Sun Dec  7 22:32:18 2025
***************
*** 33,43 ****
  
  // Platform-specific options.
  #if SANITIZER_APPLE
! #define PLATFORM_HAS_DIFFERENT_MEMCPY_AND_MEMMOVE 0
  #elif SANITIZER_WINDOWS64
! #define PLATFORM_HAS_DIFFERENT_MEMCPY_AND_MEMMOVE 0
  #else
! #define PLATFORM_HAS_DIFFERENT_MEMCPY_AND_MEMMOVE 1
  #endif  // SANITIZER_APPLE
  
  #ifndef COMMON_INTERCEPTOR_MEMSET_IMPL
--- 33,45 ----
  
  // Platform-specific options.
  #if SANITIZER_APPLE
! #  define PLATFORM_HAS_DIFFERENT_MEMCPY_AND_MEMMOVE 0
  #elif SANITIZER_WINDOWS64
! #  define PLATFORM_HAS_DIFFERENT_MEMCPY_AND_MEMMOVE 0
! #elif SANITIZER_AIX
! #  define PLATFORM_HAS_DIFFERENT_MEMCPY_AND_MEMMOVE 0
  #else
! #  define PLATFORM_HAS_DIFFERENT_MEMCPY_AND_MEMMOVE 1
  #endif  // SANITIZER_APPLE
  
  #ifndef COMMON_INTERCEPTOR_MEMSET_IMPL
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_aarch64.inc.S gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_aarch64.inc.S
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_aarch64.inc.S	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_aarch64.inc.S	Sun Dec  7 22:32:18 2025
***************
*** 5,10 ****
--- 5,11 ----
  
  ASM_HIDDEN(COMMON_INTERCEPTOR_SPILL_AREA)
  
+ TEXT_SECTION
  .comm _ZN14__interception10real_vforkE,8,8
  .globl ASM_WRAPPER_NAME(vfork)
  ASM_TYPE_FUNCTION(ASM_WRAPPER_NAME(vfork))
*************** ASM_SIZE(vfork)
*** 43,48 ****
  ASM_INTERCEPTOR_TRAMPOLINE(vfork)
  ASM_TRAMPOLINE_ALIAS(vfork, vfork)
  
! GNU_PROPERTY_BTI_PAC
  
  #endif
--- 44,49 ----
  ASM_INTERCEPTOR_TRAMPOLINE(vfork)
  ASM_TRAMPOLINE_ALIAS(vfork, vfork)
  
! GNU_PROPERTY_BTI_PAC_GCS
  
  #endif
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_i386.inc.S gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_i386.inc.S
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_i386.inc.S	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_i386.inc.S	Sun Dec  7 22:32:18 2025
***************
*** 2,7 ****
--- 2,9 ----
  
  #include "sanitizer_common/sanitizer_asm.h"
  
+ .att_syntax
+ 
  .comm _ZN14__interception10real_vforkE,4,4
  .globl ASM_WRAPPER_NAME(vfork)
  ASM_TYPE_FUNCTION(ASM_WRAPPER_NAME(vfork))
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_x86_64.inc.S gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_x86_64.inc.S
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_x86_64.inc.S	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_x86_64.inc.S	Sun Dec  7 22:32:18 2025
***************
*** 2,7 ****
--- 2,9 ----
  
  #include "sanitizer_common/sanitizer_asm.h"
  
+ .att_syntax
+ 
  .comm _ZN14__interception10real_vforkE,8,8
  .globl ASM_WRAPPER_NAME(vfork)
  ASM_TYPE_FUNCTION(ASM_WRAPPER_NAME(vfork))
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_common_syscalls.inc gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_common_syscalls.inc
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_common_syscalls.inc	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_common_syscalls.inc	Sun Dec  7 22:32:18 2025
*************** struct sanitizer_kernel_sockaddr {
*** 143,148 ****
--- 143,154 ----
    char sa_data[14];
  };
  
+ struct sanitizer_kernel_open_how {
+   u64 flags;
+   u64 mode;
+   u64 resolve;
+ };
+ 
  // Real sigset size is always passed as a syscall argument.
  // Declare it "void" to catch sizeof(kernel_sigset_t).
  typedef void kernel_sigset_t;
*************** PRE_SYSCALL(openat)(long dfd, const void
*** 2843,2848 ****
--- 2849,2866 ----
  POST_SYSCALL(openat)
  (long res, long dfd, const void *filename, long flags, long mode) {}
  
+ PRE_SYSCALL(openat2)(long dfd, const void* filename,
+                      const sanitizer_kernel_open_how* how, uptr howlen) {
+   if (filename)
+     PRE_READ(filename, __sanitizer::internal_strlen((const char*)filename) + 1);
+ 
+   if (how)
+     PRE_READ(how, howlen);
+ }
+ 
+ POST_SYSCALL(openat2)(long res, long dfd, const void* filename,
+                       const sanitizer_kernel_open_how* how, uptr howlen) {}
+ 
  PRE_SYSCALL(newfstatat)
  (long dfd, const void *filename, void *statbuf, long flag) {
    if (filename)
*************** POST_SYSCALL(futex)
*** 3205,3210 ****
--- 3223,3250 ----
    COMMON_SYSCALL_BLOCKING_END();
  }
  
+ PRE_SYSCALL(copy_file_range)
+ (int fdin, __sanitizer___kernel_off_t *offin, int fdout,
+  __sanitizer___kernel_off_t *offout, SIZE_T size, unsigned int flags) {
+   if (offin != nullptr) {
+     PRE_READ(offin, sizeof(*offin));
+   }
+   if (offout != nullptr) {
+     PRE_READ(offout, sizeof(*offout));
+   }
+ }
+ 
+ POST_SYSCALL(copy_file_range)
+ (SSIZE_T, int fdin, __sanitizer___kernel_off_t *offin, int fdout,
+  __sanitizer___kernel_off_t *offout, SIZE_T size, unsigned int flags) {
+   if (offin != nullptr) {
+     POST_WRITE(offin, sizeof(*offin));
+   }
+   if (offout != nullptr) {
+     POST_WRITE(offout, sizeof(*offout));
+   }
+ }
+ 
  }  // extern "C"
  
  #  undef PRE_SYSCALL
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_deadlock_detector.h gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_deadlock_detector.h
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_deadlock_detector.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_deadlock_detector.h	Sun Dec  7 22:32:18 2025
*************** class DeadlockDetectorTLS {
*** 120,126 ****
      u32 lock;
      u32 stk;
    };
!   LockWithContext all_locks_with_contexts_[64];
    uptr n_all_locks_;
  };
  
--- 120,126 ----
      u32 lock;
      u32 stk;
    };
!   LockWithContext all_locks_with_contexts_[128];
    uptr n_all_locks_;
  };
  
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_errno.h gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_errno.h
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_errno.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_errno.h	Sun Dec  7 22:32:18 2025
***************
*** 29,34 ****
--- 29,36 ----
  #  define __errno_location ___errno
  #elif SANITIZER_WINDOWS
  #  define __errno_location _errno
+ #elif SANITIZER_HAIKU
+ #  define __errno_location _errnop
  #endif
  
  extern "C" int *__errno_location();
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_errno_codes.h gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_errno_codes.h
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_errno_codes.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_errno_codes.h	Sun Dec  7 22:32:18 2025
***************
*** 21,32 ****
  
  namespace __sanitizer {
  
! #define errno_ENOMEM 12
! #define errno_EBUSY 16
! #define errno_EINVAL 22
! #define errno_ERANGE 34
! #define errno_ENAMETOOLONG 36
! #define errno_ENOSYS 38
  
  // Those might not present or their value differ on different platforms.
  extern const int errno_EOWNERDEAD;
--- 21,41 ----
  
  namespace __sanitizer {
  
! #ifdef __HAIKU__
! #  define errno_ENOMEM (0x80000000)
! #  define errno_EBUSY (0x80000000 + 14)
! #  define errno_EINVAL (0x80000000 + 5)
! #  define errno_ERANGE (0x80007000 + 17)
! #  define errno_ENAMETOOLONG (0x80000000 + 0x6004)
! #  define errno_ENOSYS (0x80007009)
! #else
! #  define errno_ENOMEM 12
! #  define errno_EBUSY 16
! #  define errno_EINVAL 22
! #  define errno_ERANGE 34
! #  define errno_ENAMETOOLONG 36
! #  define errno_ENOSYS 38
! #endif
  
  // Those might not present or their value differ on different platforms.
  extern const int errno_EOWNERDEAD;
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_file.cpp gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_file.cpp
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_file.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_file.cpp	Sun Dec  7 22:32:18 2025
*************** void RawWrite(const char *buffer) {
*** 36,44 ****
  
  void ReportFile::ReopenIfNecessary() {
    mu->CheckLocked();
-   if (fd == kStdoutFd || fd == kStderrFd) return;
- 
    uptr pid = internal_getpid();
    // If in tracer, use the parent's file.
    if (pid == stoptheworld_tracer_pid)
      pid = stoptheworld_tracer_ppid;
--- 36,52 ----
  
  void ReportFile::ReopenIfNecessary() {
    mu->CheckLocked();
    uptr pid = internal_getpid();
+   if (fallbackToStderrActive && fd_pid != pid) {
+     // If fallbackToStderrActive is set then we fellback to stderr. If this is a
+     // new process, mark fd as invalid so we attempt to open again.
+     CHECK_EQ(fd, kStderrFd);
+     fd = kInvalidFd;
+     fallbackToStderrActive = false;
+   }
+   if (fd == kStdoutFd || fd == kStderrFd)
+     return;
+ 
    // If in tracer, use the parent's file.
    if (pid == stoptheworld_tracer_pid)
      pid = stoptheworld_tracer_ppid;
*************** void ReportFile::ReopenIfNecessary() {
*** 48,55 ****
      // process, close it now.
      if (fd_pid == pid)
        return;
!     else
!       CloseFile(fd);
    }
  
    const char *exe_name = GetProcessName();
--- 56,62 ----
      // process, close it now.
      if (fd_pid == pid)
        return;
!     CloseFile(fd);
    }
  
    const char *exe_name = GetProcessName();
*************** void ReportFile::ReopenIfNecessary() {
*** 65,82 ****
    error_t err;
    fd = OpenFile(full_path, WrOnly, &err);
    if (fd == kInvalidFd) {
!     const char *ErrorMsgPrefix = "ERROR: Can't open file: ";
      WriteToFile(kStderrFd, ErrorMsgPrefix, internal_strlen(ErrorMsgPrefix));
      WriteToFile(kStderrFd, full_path, internal_strlen(full_path));
      char errmsg[100];
      internal_snprintf(errmsg, sizeof(errmsg), " (reason: %d)\n", err);
      WriteToFile(kStderrFd, errmsg, internal_strlen(errmsg));
!     Die();
    }
    fd_pid = pid;
  }
  
! static void RecursiveCreateParentDirs(char *path) {
    if (path[0] == '\0')
      return;
    for (int i = 1; path[i] != '\0'; ++i) {
--- 72,95 ----
    error_t err;
    fd = OpenFile(full_path, WrOnly, &err);
    if (fd == kInvalidFd) {
!     bool fallback = common_flags()->log_fallback_to_stderr;
!     const char *ErrorMsgPrefix =
!         fallback ? "WARNING: Can't open file, falling back to stderr: "
!                  : "ERROR: Can't open file: ";
      WriteToFile(kStderrFd, ErrorMsgPrefix, internal_strlen(ErrorMsgPrefix));
      WriteToFile(kStderrFd, full_path, internal_strlen(full_path));
      char errmsg[100];
      internal_snprintf(errmsg, sizeof(errmsg), " (reason: %d)\n", err);
      WriteToFile(kStderrFd, errmsg, internal_strlen(errmsg));
!     if (!fallback)
!       Die();
!     fallbackToStderrActive = true;
!     fd = kStderrFd;
    }
    fd_pid = pid;
  }
  
! static void RecursiveCreateParentDirs(char *path, fd_t &fd) {
    if (path[0] == '\0')
      return;
    for (int i = 1; path[i] != '\0'; ++i) {
*************** static void RecursiveCreateParentDirs(ch
*** 85,108 ****
        continue;
      path[i] = '\0';
      if (!DirExists(path) && !CreateDir(path)) {
!       const char *ErrorMsgPrefix = "ERROR: Can't create directory: ";
        WriteToFile(kStderrFd, ErrorMsgPrefix, internal_strlen(ErrorMsgPrefix));
        WriteToFile(kStderrFd, path, internal_strlen(path));
        const char *ErrorMsgSuffix = "\n";
        WriteToFile(kStderrFd, ErrorMsgSuffix, internal_strlen(ErrorMsgSuffix));
!       Die();
      }
      path[i] = save;
    }
  }
  
  void ReportFile::SetReportPath(const char *path) {
    if (path) {
      uptr len = internal_strlen(path);
      if (len > sizeof(path_prefix) - 100) {
!       Report("ERROR: Path is too long: %c%c%c%c%c%c%c%c...\n", path[0], path[1],
!              path[2], path[3], path[4], path[5], path[6], path[7]);
!       Die();
      }
    }
  
--- 98,200 ----
        continue;
      path[i] = '\0';
      if (!DirExists(path) && !CreateDir(path)) {
!       bool fallback = common_flags()->log_fallback_to_stderr;
!       const char *ErrorMsgPrefix =
!           fallback ? "WARNING: Can't create directory, falling back to stderr: "
!                    : "ERROR: Can't create directory: ";
        WriteToFile(kStderrFd, ErrorMsgPrefix, internal_strlen(ErrorMsgPrefix));
        WriteToFile(kStderrFd, path, internal_strlen(path));
        const char *ErrorMsgSuffix = "\n";
        WriteToFile(kStderrFd, ErrorMsgSuffix, internal_strlen(ErrorMsgSuffix));
!       if (!fallback)
!         Die();
!       path[i] = save;
!       fd = kStderrFd;
!       return;
      }
      path[i] = save;
    }
  }
  
+ /// Parse the report path \p pattern and copy the parsed path to \p dest.
+ ///
+ /// * `%%` becomes `%`
+ /// * `%H` expands to the environment variable `HOME`
+ /// * `%t` expands to the environment variable `TMPDIR`
+ /// * `%p` expands to the process ID (PID)
+ static void ParseAndSetPath(const char *pattern, char *dest,
+                             const uptr dest_size) {
+   CHECK(pattern);
+   CHECK(dest);
+   CHECK_GE(dest_size, 1);
+   dest[0] = '\0';
+   // Return empty string if empty string was passed
+   if (internal_strlen(pattern) == 0)
+     return;
+   uptr next_substr_start_idx = 0;
+   for (uptr i = 0; i < internal_strlen(pattern) - 1; i++) {
+     if (pattern[i] != '%')
+       continue;
+     int bytes_to_copy = i - next_substr_start_idx;
+     // Copy over previous substring.
+     CHECK_LT(internal_strlcat(dest, pattern + next_substr_start_idx,
+                               internal_strlen(dest) + bytes_to_copy + 1),
+              dest_size);
+     const char *str_to_concat;
+     switch (pattern[++i]) {
+       case '%':
+         str_to_concat = "%";
+         break;
+       case 'H':
+         str_to_concat = GetEnv("HOME");
+         break;
+       case 't':
+         str_to_concat = GetEnv("TMPDIR");
+         break;
+       case 'p': {
+         // Use printf directly to write the PID since it's not a static string.
+         int remaining_capacity = dest_size - internal_strlen(dest);
+         int bytes_copied =
+             internal_snprintf(dest + internal_strlen(dest), remaining_capacity,
+                               "%ld", internal_getpid());
+         CHECK_GT(bytes_copied, 0);
+         CHECK_LT(bytes_copied, remaining_capacity);
+         str_to_concat = "";
+         break;
+       }
+       default: {
+         // Invalid pattern: fallback to original pattern.
+         const char *message = "ERROR: Unexpected pattern: ";
+         WriteToFile(kStderrFd, message, internal_strlen(message));
+         WriteToFile(kStderrFd, pattern, internal_strlen(pattern));
+         WriteToFile(kStderrFd, "\n", internal_strlen("\n"));
+         CHECK_LT(internal_strlcpy(dest, pattern, dest_size), dest_size);
+         return;
+       }
+     }
+     CHECK(str_to_concat);
+     CHECK_LT(internal_strlcat(dest, str_to_concat, dest_size), dest_size);
+     next_substr_start_idx = i + 1;
+   }
+   CHECK_LT(internal_strlcat(dest, pattern + next_substr_start_idx, dest_size),
+            dest_size);
+ }
+ 
  void ReportFile::SetReportPath(const char *path) {
    if (path) {
      uptr len = internal_strlen(path);
      if (len > sizeof(path_prefix) - 100) {
!       bool fallback = common_flags()->log_fallback_to_stderr;
!       const char *message =
!           fallback ? "WARNING: Path is too long, falling back to stderr: "
!                    : "ERROR: Path is too long: ";
!       WriteToFile(kStderrFd, message, internal_strlen(message));
!       WriteToFile(kStderrFd, path, 8);
!       message = "...\n";
!       WriteToFile(kStderrFd, message, internal_strlen(message));
!       if (!fallback)
!         Die();
!       path = "stderr";
      }
    }
  
*************** void ReportFile::SetReportPath(const cha
*** 115,122 ****
    } else if (internal_strcmp(path, "stdout") == 0) {
      fd = kStdoutFd;
    } else {
!     internal_snprintf(path_prefix, kMaxPathLength, "%s", path);
!     RecursiveCreateParentDirs(path_prefix);
    }
  }
  
--- 207,214 ----
    } else if (internal_strcmp(path, "stdout") == 0) {
      fd = kStdoutFd;
    } else {
!     ParseAndSetPath(path, path_prefix, kMaxPathLength);
!     RecursiveCreateParentDirs(path_prefix, fd);
    }
  }
  
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_file.h gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_file.h
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_file.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_file.h	Sun Dec  7 22:32:18 2025
*************** struct ReportFile {
*** 43,48 ****
--- 43,51 ----
    // PID of the process that opened fd. If a fork() occurs,
    // the PID of child will be different from fd_pid.
    uptr fd_pid;
+   // Set to true if the last attempt to open the logfile failed, perhaps due to
+   // permission errors
+   bool fallbackToStderrActive = false;
  
   private:
    void ReopenIfNecessary();
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_flags.inc gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_flags.inc
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_flags.inc	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_flags.inc	Sun Dec  7 22:32:18 2025
*************** COMMON_FLAG(
*** 65,70 ****
--- 65,72 ----
      bool, log_to_syslog, (bool)SANITIZER_ANDROID || (bool)SANITIZER_APPLE,
      "Write all sanitizer output to syslog in addition to other means of "
      "logging.")
+ COMMON_FLAG(bool, log_fallback_to_stderr, false,
+             "When set, fallback to stderr if we are unable to open log path.")
  COMMON_FLAG(
      int, verbosity, 0,
      "Verbosity level (0 - silent, 1 - a bit of output, 2+ - more output).")
*************** COMMON_FLAG(HandleSignalMode, handle_sig
*** 111,116 ****
--- 113,123 ----
  COMMON_FLAG(bool, allow_user_segv_handler, true,
              "Deprecated. True has no effect, use handle_sigbus=1. If false, "
              "handle_*=1 will be upgraded to handle_*=2.")
+ COMMON_FLAG(bool, cloak_sanitizer_signal_handlers, false,
+             "If set, signal/sigaction will pretend that sanitizers did not "
+             "preinstall any signal handlers. If the user subsequently installs "
+             "a signal handler, this will disable cloaking for the respective "
+             "signal.")
  COMMON_FLAG(bool, use_sigaltstack, true,
              "If set, uses alternate stack for signal handling.")
  COMMON_FLAG(bool, detect_deadlocks, true,
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_fuchsia.cpp gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_fuchsia.cpp
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_fuchsia.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_fuchsia.cpp	Sun Dec  7 22:32:18 2025
***************
*** 14,19 ****
--- 14,20 ----
  #include "sanitizer_fuchsia.h"
  #if SANITIZER_FUCHSIA
  
+ #  include <limits.h>
  #  include <pthread.h>
  #  include <stdlib.h>
  #  include <unistd.h>
*************** int internal_dlinfo(void *handle, int re
*** 68,74 ****
  
  uptr GetThreadSelf() { return reinterpret_cast<uptr>(thrd_current()); }
  
! tid_t GetTid() { return GetThreadSelf(); }
  
  void Abort() { abort(); }
  
--- 69,75 ----
  
  uptr GetThreadSelf() { return reinterpret_cast<uptr>(thrd_current()); }
  
! ThreadID GetTid() { return GetThreadSelf(); }
  
  void Abort() { abort(); }
  
*************** uptr GetMmapGranularity() { return _zx_s
*** 117,127 ****
  
  sanitizer_shadow_bounds_t ShadowBounds;
  
  void InitShadowBounds() { ShadowBounds = __sanitizer_shadow_bounds(); }
  
  uptr GetMaxUserVirtualAddress() {
!   InitShadowBounds();
!   return ShadowBounds.memory_limit - 1;
  }
  
  uptr GetMaxVirtualAddress() { return GetMaxUserVirtualAddress(); }
--- 118,154 ----
  
  sanitizer_shadow_bounds_t ShadowBounds;
  
+ // Any sanitizer that utilizes shadow should explicitly call whenever it's
+ // appropriate for that sanitizer to reference shadow bounds. For ASan, this is
+ // done in `InitializeShadowMemory` and for HWASan, this is done in
+ // `InitShadow`.
  void InitShadowBounds() { ShadowBounds = __sanitizer_shadow_bounds(); }
  
+ // TODO(leonardchan): It's not immediately clear from a user perspective if
+ // `GetMaxUserVirtualAddress` should be called exatly once on runtime startup
+ // or can be called multiple times. Currently it looks like most instances of
+ // `GetMaxUserVirtualAddress` are meant to be called once, but if someone
+ // decides to call this multiple times in the future, we should have a separate
+ // function that's ok to call multiple times. Ideally we would just invoke this
+ // syscall once. Also for Fuchsia, this syscall technically gets invoked twice
+ // since `__sanitizer_shadow_bounds` also invokes this syscall under the hood.
  uptr GetMaxUserVirtualAddress() {
!   zx_info_vmar_t info;
!   zx_status_t status = _zx_object_get_info(_zx_vmar_root_self(), ZX_INFO_VMAR,
!                                            &info, sizeof(info), NULL, NULL);
!   CHECK_EQ(status, ZX_OK);
! 
!   // Find the top of the accessible address space.
!   uintptr_t top = info.base + info.len;
! 
!   // Round it up to a power-of-two size.  There may be some pages at
!   // the top that can't actually be mapped, but for purposes of the
!   // the shadow, we'll pretend they could be.
!   int bit = (sizeof(uintptr_t) * CHAR_BIT) - __builtin_clzl(top);
!   if (top != (uintptr_t)1 << bit)
!     top = (uintptr_t)1 << (bit + 1);
! 
!   return top - 1;
  }
  
  uptr GetMaxVirtualAddress() { return GetMaxUserVirtualAddress(); }
*************** void __sanitizer_startup_hook(int argc,
*** 547,552 ****
--- 574,581 ----
    __sanitizer::StoredEnviron = envp;
    __sanitizer::MainThreadStackBase = reinterpret_cast<uintptr_t>(stack_base);
    __sanitizer::MainThreadStackSize = stack_size;
+ 
+   EarlySanitizerInit();
  }
  
  void __sanitizer_set_report_path(const char *path) {
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_fuchsia.h gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_fuchsia.h
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_fuchsia.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_fuchsia.h	Sun Dec  7 22:32:18 2025
*************** struct MemoryMappingLayoutData {
*** 32,37 ****
--- 32,44 ----
  
  void InitShadowBounds();
  
+ // Individual sanitizers can define this to explicitly run something at the end
+ // of `__sanitizer_startup_hook`. This can be useful if a sanitizer needs to do
+ // extra work after the common startup hook code is called and before module
+ // ctors are invoked. For example, hwasan can explicitly call its initializing
+ // function here so it can be set up before libc extensions are initialized.
+ void EarlySanitizerInit();
+ 
  }  // namespace __sanitizer
  
  #endif  // SANITIZER_FUCHSIA
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_getauxval.h gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_getauxval.h
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_getauxval.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_getauxval.h	Sun Dec  7 22:32:18 2025
***************
*** 21,42 ****
  
  #if SANITIZER_LINUX || SANITIZER_FUCHSIA
  
! # if (__GLIBC_PREREQ(2, 16) || (SANITIZER_ANDROID && __ANDROID_API__ >= 21) || \
!       SANITIZER_FUCHSIA) &&                                                    \
!      !SANITIZER_GO
! #  define SANITIZER_USE_GETAUXVAL 1
! # else
! #  define SANITIZER_USE_GETAUXVAL 0
! # endif
  
! # if SANITIZER_USE_GETAUXVAL
! #  include <sys/auxv.h>
! # else
  // The weak getauxval definition allows to check for the function at runtime.
  // This is useful for Android, when compiled at a lower API level yet running
  // on a more recent platform that offers the function.
  extern "C" SANITIZER_WEAK_ATTRIBUTE unsigned long getauxval(unsigned long type);
! # endif
  
  #elif SANITIZER_NETBSD
  
--- 21,41 ----
  
  #if SANITIZER_LINUX || SANITIZER_FUCHSIA
  
! #  if (__GLIBC_PREREQ(2, 16) || SANITIZER_ANDROID || SANITIZER_FUCHSIA) && \
!       !SANITIZER_GO
! #    define SANITIZER_USE_GETAUXVAL 1
! #  else
! #    define SANITIZER_USE_GETAUXVAL 0
! #  endif
  
! #  if SANITIZER_USE_GETAUXVAL
! #    include <sys/auxv.h>
! #  else
  // The weak getauxval definition allows to check for the function at runtime.
  // This is useful for Android, when compiled at a lower API level yet running
  // on a more recent platform that offers the function.
  extern "C" SANITIZER_WEAK_ATTRIBUTE unsigned long getauxval(unsigned long type);
! #  endif
  
  #elif SANITIZER_NETBSD
  
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_internal_defs.h gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_internal_defs.h
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_internal_defs.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_internal_defs.h	Sun Dec  7 22:32:18 2025
*************** typedef long ssize;
*** 209,215 ****
  typedef sptr ssize;
  #endif
  
! typedef u64 tid_t;
  
  // ----------- ATTENTION -------------
  // This header should NOT include any other headers to avoid portability issues.
--- 209,215 ----
  typedef sptr ssize;
  #endif
  
! typedef u64 ThreadID;
  
  // ----------- ATTENTION -------------
  // This header should NOT include any other headers to avoid portability issues.
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_linux.cpp gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_linux.cpp
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_linux.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_linux.cpp	Sun Dec  7 22:32:18 2025
***************
*** 14,20 ****
  #include "sanitizer_platform.h"
  
  #if SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_NETBSD || \
!     SANITIZER_SOLARIS
  
  #  include "sanitizer_common.h"
  #  include "sanitizer_flags.h"
--- 14,20 ----
  #include "sanitizer_platform.h"
  
  #if SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_NETBSD || \
!     SANITIZER_SOLARIS || SANITIZER_HAIKU
  
  #  include "sanitizer_common.h"
  #  include "sanitizer_flags.h"
***************
*** 63,77 ****
  #  include <sched.h>
  #  include <signal.h>
  #  include <sys/mman.h>
! #  if !SANITIZER_SOLARIS
  #    include <sys/ptrace.h>
  #  endif
  #  include <sys/resource.h>
  #  include <sys/stat.h>
! #  include <sys/syscall.h>
  #  include <sys/time.h>
  #  include <sys/types.h>
- #  include <ucontext.h>
  #  include <unistd.h>
  
  #  if SANITIZER_LINUX
--- 63,79 ----
  #  include <sched.h>
  #  include <signal.h>
  #  include <sys/mman.h>
! #  if !SANITIZER_SOLARIS && !SANITIZER_HAIKU
  #    include <sys/ptrace.h>
  #  endif
  #  include <sys/resource.h>
  #  include <sys/stat.h>
! #  if !SANITIZER_HAIKU
! #    include <sys/syscall.h>
! #    include <ucontext.h>
! #  endif
  #  include <sys/time.h>
  #  include <sys/types.h>
  #  include <unistd.h>
  
  #  if SANITIZER_LINUX
***************
*** 82,87 ****
--- 84,95 ----
  #    include <sys/personality.h>
  #  endif
  
+ #  if SANITIZER_ANDROID && __ANDROID_API__ < 35
+ // The weak `strerrorname_np` (introduced in API level 35) definition,
+ // allows for checking the API level at runtime.
+ extern "C" SANITIZER_WEAK_ATTRIBUTE const char *strerrorname_np(int);
+ #  endif
+ 
  #  if SANITIZER_LINUX && defined(__loongarch__)
  #    include <sys/sysmacros.h>
  #  endif
*************** extern struct ps_strings *__ps_strings;
*** 118,123 ****
--- 126,138 ----
  #    define environ _environ
  #  endif
  
+ #  if SANITIZER_HAIKU
+ #    include <OS.h>
+ #    include <elf.h>
+ #    include <image.h>
+ extern "C" char **__libc_argv;
+ #  endif
+ 
  extern char **environ;
  
  #  if SANITIZER_LINUX
*************** const int FUTEX_WAKE_PRIVATE = FUTEX_WAK
*** 138,146 ****
  // Are we using 32-bit or 64-bit Linux syscalls?
  // x32 (which defines __x86_64__) has SANITIZER_WORDSIZE == 32
  // but it still needs to use 64-bit syscalls.
! #  if SANITIZER_LINUX && (defined(__x86_64__) || defined(__powerpc64__) || \
!                           SANITIZER_WORDSIZE == 64 ||                      \
!                           (defined(__mips__) && _MIPS_SIM == _ABIN32))
  #    define SANITIZER_LINUX_USES_64BIT_SYSCALLS 1
  #  else
  #    define SANITIZER_LINUX_USES_64BIT_SYSCALLS 0
--- 153,162 ----
  // Are we using 32-bit or 64-bit Linux syscalls?
  // x32 (which defines __x86_64__) has SANITIZER_WORDSIZE == 32
  // but it still needs to use 64-bit syscalls.
! #  if SANITIZER_LINUX &&                                \
!       (defined(__x86_64__) || defined(__powerpc64__) || \
!        SANITIZER_WORDSIZE == 64 ||                      \
!        (defined(__mips__) && defined(_ABIN32) && _MIPS_SIM == _ABIN32))
  #    define SANITIZER_LINUX_USES_64BIT_SYSCALLS 1
  #  else
  #    define SANITIZER_LINUX_USES_64BIT_SYSCALLS 0
*************** void SetSigProcMask(__sanitizer_sigset_t
*** 168,200 ****
    CHECK_EQ(0, internal_sigprocmask(SIG_SETMASK, set, oldset));
  }
  
  // Block asynchronous signals
  void BlockSignals(__sanitizer_sigset_t *oldset) {
!   __sanitizer_sigset_t set;
!   internal_sigfillset(&set);
! #  if SANITIZER_LINUX && !SANITIZER_ANDROID
    // Glibc uses SIGSETXID signal during setuid call. If this signal is blocked
    // on any thread, setuid call hangs.
    // See test/sanitizer_common/TestCases/Linux/setuid.c.
!   internal_sigdelset(&set, 33);
! #  endif
! #  if SANITIZER_LINUX
    // Seccomp-BPF-sandboxed processes rely on SIGSYS to handle trapped syscalls.
    // If this signal is blocked, such calls cannot be handled and the process may
    // hang.
!   internal_sigdelset(&set, 31);
  
    // Don't block synchronous signals
!   internal_sigdelset(&set, SIGSEGV);
!   internal_sigdelset(&set, SIGBUS);
!   internal_sigdelset(&set, SIGILL);
!   internal_sigdelset(&set, SIGTRAP);
!   internal_sigdelset(&set, SIGABRT);
!   internal_sigdelset(&set, SIGFPE);
!   internal_sigdelset(&set, SIGPIPE);
! #  endif
  
!   SetSigProcMask(&set, oldset);
  }
  
  ScopedBlockSignals::ScopedBlockSignals(__sanitizer_sigset_t *copy) {
--- 184,239 ----
    CHECK_EQ(0, internal_sigprocmask(SIG_SETMASK, set, oldset));
  }
  
+ #  if SANITIZER_LINUX
+ // Deletes the specified signal from newset, if it is not present in oldset
+ // Equivalently: newset[signum] = newset[signum] & oldset[signum]
+ static void KeepUnblocked(__sanitizer_sigset_t &newset,
+                           __sanitizer_sigset_t &oldset, int signum) {
+   // FIXME: https://github.com/google/sanitizers/issues/1816
+   if (SANITIZER_ANDROID || !internal_sigismember(&oldset, signum))
+     internal_sigdelset(&newset, signum);
+ }
+ #  endif
+ 
  // Block asynchronous signals
  void BlockSignals(__sanitizer_sigset_t *oldset) {
!   __sanitizer_sigset_t newset;
!   internal_sigfillset(&newset);
! 
! #  if SANITIZER_LINUX
!   __sanitizer_sigset_t currentset;
! 
! #    if !SANITIZER_ANDROID
!   // FIXME: https://github.com/google/sanitizers/issues/1816
!   SetSigProcMask(NULL, &currentset);
! 
    // Glibc uses SIGSETXID signal during setuid call. If this signal is blocked
    // on any thread, setuid call hangs.
    // See test/sanitizer_common/TestCases/Linux/setuid.c.
!   KeepUnblocked(newset, currentset, 33);
! #    endif  // !SANITIZER_ANDROID
! 
    // Seccomp-BPF-sandboxed processes rely on SIGSYS to handle trapped syscalls.
    // If this signal is blocked, such calls cannot be handled and the process may
    // hang.
!   KeepUnblocked(newset, currentset, 31);
  
+ #    if !SANITIZER_ANDROID
    // Don't block synchronous signals
!   // but also don't unblock signals that the user had deliberately blocked.
!   // FIXME: https://github.com/google/sanitizers/issues/1816
!   KeepUnblocked(newset, currentset, SIGSEGV);
!   KeepUnblocked(newset, currentset, SIGBUS);
!   KeepUnblocked(newset, currentset, SIGILL);
!   KeepUnblocked(newset, currentset, SIGTRAP);
!   KeepUnblocked(newset, currentset, SIGABRT);
!   KeepUnblocked(newset, currentset, SIGFPE);
!   KeepUnblocked(newset, currentset, SIGPIPE);
! #    endif  //! SANITIZER_ANDROID
  
! #  endif  // SANITIZER_LINUX
! 
!   SetSigProcMask(&newset, oldset);
  }
  
  ScopedBlockSignals::ScopedBlockSignals(__sanitizer_sigset_t *copy) {
*************** ScopedBlockSignals::~ScopedBlockSignals(
*** 222,228 ****
  #  endif
  
  // --------------- sanitizer_libc.h
! #  if !SANITIZER_SOLARIS && !SANITIZER_NETBSD
  #    if !SANITIZER_S390
  uptr internal_mmap(void *addr, uptr length, int prot, int flags, int fd,
                     u64 offset) {
--- 261,267 ----
  #  endif
  
  // --------------- sanitizer_libc.h
! #  if !SANITIZER_SOLARIS && !SANITIZER_NETBSD && !SANITIZER_HAIKU
  #    if !SANITIZER_S390
  uptr internal_mmap(void *addr, uptr length, int prot, int flags, int fd,
                     u64 offset) {
*************** uptr internal_stat(const char *path, voi
*** 410,417 ****
                               AT_NO_AUTOMOUNT, STATX_BASIC_STATS, (uptr)&bufx);
    statx_to_stat(&bufx, (struct stat *)buf);
    return res;
! #      elif (SANITIZER_WORDSIZE == 64 || SANITIZER_X32 ||    \
!              (defined(__mips__) && _MIPS_SIM == _ABIN32)) && \
            !SANITIZER_SPARC
    return internal_syscall(SYSCALL(newfstatat), AT_FDCWD, (uptr)path, (uptr)buf,
                            0);
--- 449,457 ----
                               AT_NO_AUTOMOUNT, STATX_BASIC_STATS, (uptr)&bufx);
    statx_to_stat(&bufx, (struct stat *)buf);
    return res;
! #      elif (                                                                 \
!           SANITIZER_WORDSIZE == 64 || SANITIZER_X32 ||                        \
!           (defined(__mips__) && defined(_ABIN32) && _MIPS_SIM == _ABIN32)) && \
            !SANITIZER_SPARC
    return internal_syscall(SYSCALL(newfstatat), AT_FDCWD, (uptr)path, (uptr)buf,
                            0);
*************** uptr internal_lstat(const char *path, vo
*** 448,455 ****
                               STATX_BASIC_STATS, (uptr)&bufx);
    statx_to_stat(&bufx, (struct stat *)buf);
    return res;
! #      elif (defined(_LP64) || SANITIZER_X32 ||              \
!              (defined(__mips__) && _MIPS_SIM == _ABIN32)) && \
            !SANITIZER_SPARC
    return internal_syscall(SYSCALL(newfstatat), AT_FDCWD, (uptr)path, (uptr)buf,
                            AT_SYMLINK_NOFOLLOW);
--- 488,496 ----
                               STATX_BASIC_STATS, (uptr)&bufx);
    statx_to_stat(&bufx, (struct stat *)buf);
    return res;
! #      elif (                                                                 \
!           defined(_LP64) || SANITIZER_X32 ||                                  \
!           (defined(__mips__) && defined(_ABIN32) && _MIPS_SIM == _ABIN32)) && \
            !SANITIZER_SPARC
    return internal_syscall(SYSCALL(newfstatat), AT_FDCWD, (uptr)path, (uptr)buf,
                            AT_SYMLINK_NOFOLLOW);
*************** uptr internal_execve(const char *filenam
*** 565,573 ****
    return internal_syscall(SYSCALL(execve), (uptr)filename, (uptr)argv,
                            (uptr)envp);
  }
! #  endif  // !SANITIZER_SOLARIS && !SANITIZER_NETBSD
  
! #  if !SANITIZER_NETBSD
  void internal__exit(int exitcode) {
  #    if SANITIZER_FREEBSD || SANITIZER_SOLARIS
    internal_syscall(SYSCALL(exit), exitcode);
--- 606,614 ----
    return internal_syscall(SYSCALL(execve), (uptr)filename, (uptr)argv,
                            (uptr)envp);
  }
! #  endif  // !SANITIZER_SOLARIS && !SANITIZER_NETBSD && !SANITIZER_HAIKU
  
! #  if !SANITIZER_NETBSD && !SANITIZER_HAIKU
  void internal__exit(int exitcode) {
  #    if SANITIZER_FREEBSD || SANITIZER_SOLARIS
    internal_syscall(SYSCALL(exit), exitcode);
*************** void internal__exit(int exitcode) {
*** 576,582 ****
  #    endif
    Die();  // Unreachable.
  }
! #  endif  // !SANITIZER_NETBSD
  
  // ----------------- sanitizer_common.h
  bool FileExists(const char *filename) {
--- 617,623 ----
  #    endif
    Die();  // Unreachable.
  }
! #  endif  // !SANITIZER_NETBSD && !SANITIZER_HAIKU
  
  // ----------------- sanitizer_common.h
  bool FileExists(const char *filename) {
*************** bool DirExists(const char *path) {
*** 597,615 ****
  }
  
  #  if !SANITIZER_NETBSD
! tid_t GetTid() {
  #    if SANITIZER_FREEBSD
    long Tid;
    thr_self(&Tid);
    return Tid;
  #    elif SANITIZER_SOLARIS
    return thr_self();
  #    else
    return internal_syscall(SYSCALL(gettid));
  #    endif
  }
  
! int TgKill(pid_t pid, tid_t tid, int sig) {
  #    if SANITIZER_LINUX
    return internal_syscall(SYSCALL(tgkill), pid, tid, sig);
  #    elif SANITIZER_FREEBSD
--- 638,658 ----
  }
  
  #  if !SANITIZER_NETBSD
! ThreadID GetTid() {
  #    if SANITIZER_FREEBSD
    long Tid;
    thr_self(&Tid);
    return Tid;
  #    elif SANITIZER_SOLARIS
    return thr_self();
+ #    elif SANITIZER_HAIKU
+   return find_thread(NULL);
  #    else
    return internal_syscall(SYSCALL(gettid));
  #    endif
  }
  
! int TgKill(pid_t pid, ThreadID tid, int sig) {
  #    if SANITIZER_LINUX
    return internal_syscall(SYSCALL(tgkill), pid, tid, sig);
  #    elif SANITIZER_FREEBSD
*************** int TgKill(pid_t pid, tid_t tid, int sig
*** 619,624 ****
--- 662,669 ----
    errno = thr_kill(tid, sig);
    // TgKill is expected to return -1 on error, not an errno.
    return errno != 0 ? -1 : 0;
+ #    elif SANITIZER_HAIKU
+   return kill_thread(tid);
  #    endif
  }
  #  endif
*************** u64 NanoTime() {
*** 646,652 ****
  // 'environ' array (on some others) and does not use libc. This function
  // should be called first inside __asan_init.
  const char *GetEnv(const char *name) {
! #  if SANITIZER_FREEBSD || SANITIZER_NETBSD || SANITIZER_SOLARIS
    if (::environ != 0) {
      uptr NameLen = internal_strlen(name);
      for (char **Env = ::environ; *Env != 0; Env++) {
--- 691,698 ----
  // 'environ' array (on some others) and does not use libc. This function
  // should be called first inside __asan_init.
  const char *GetEnv(const char *name) {
! #  if SANITIZER_FREEBSD || SANITIZER_NETBSD || SANITIZER_SOLARIS || \
!       SANITIZER_HAIKU
    if (::environ != 0) {
      uptr NameLen = internal_strlen(name);
      for (char **Env = ::environ; *Env != 0; Env++) {
*************** const char *GetEnv(const char *name) {
*** 684,696 ****
  #  endif
  }
  
! #  if !SANITIZER_FREEBSD && !SANITIZER_NETBSD && !SANITIZER_GO
  extern "C" {
  SANITIZER_WEAK_ATTRIBUTE extern void *__libc_stack_end;
  }
  #  endif
  
! #  if !SANITIZER_FREEBSD && !SANITIZER_NETBSD
  static void ReadNullSepFileToArray(const char *path, char ***arr,
                                     int arr_size) {
    char *buff;
--- 730,743 ----
  #  endif
  }
  
! #  if !SANITIZER_HAIKU && !SANITIZER_FREEBSD && !SANITIZER_NETBSD && \
!       !SANITIZER_GO
  extern "C" {
  SANITIZER_WEAK_ATTRIBUTE extern void *__libc_stack_end;
  }
  #  endif
  
! #  if !SANITIZER_HAIKU && !SANITIZER_FREEBSD && !SANITIZER_NETBSD
  static void ReadNullSepFileToArray(const char *path, char ***arr,
                                     int arr_size) {
    char *buff;
*************** static void ReadNullSepFileToArray(const
*** 717,723 ****
  #  endif
  
  static void GetArgsAndEnv(char ***argv, char ***envp) {
! #  if SANITIZER_FREEBSD
    // On FreeBSD, retrieving the argument and environment arrays is done via the
    // kern.ps_strings sysctl, which returns a pointer to a structure containing
    // this information. See also <sys/exec.h>.
--- 764,773 ----
  #  endif
  
  static void GetArgsAndEnv(char ***argv, char ***envp) {
! #  if SANITIZER_HAIKU
!   *argv = __libc_argv;
!   *envp = environ;
! #  elif SANITIZER_FREEBSD
    // On FreeBSD, retrieving the argument and environment arrays is done via the
    // kern.ps_strings sysctl, which returns a pointer to a structure containing
    // this information. See also <sys/exec.h>.
*************** static void GetArgsAndEnv(char ***argv,
*** 757,763 ****
  #    if !SANITIZER_GO
    }
  #    endif  // !SANITIZER_GO
! #  endif    // SANITIZER_FREEBSD
  }
  
  char **GetArgv() {
--- 807,813 ----
  #    if !SANITIZER_GO
    }
  #    endif  // !SANITIZER_GO
! #  endif    // SANITIZER_HAIKU
  }
  
  char **GetArgv() {
*************** char **GetEnviron() {
*** 776,782 ****
  void FutexWait(atomic_uint32_t *p, u32 cmp) {
  #    if SANITIZER_FREEBSD
    _umtx_op(p, UMTX_OP_WAIT_UINT, cmp, 0, 0);
! #    elif SANITIZER_NETBSD
    sched_yield(); /* No userspace futex-like synchronization */
  #    else
    internal_syscall(SYSCALL(futex), (uptr)p, FUTEX_WAIT_PRIVATE, cmp, 0, 0, 0);
--- 826,832 ----
  void FutexWait(atomic_uint32_t *p, u32 cmp) {
  #    if SANITIZER_FREEBSD
    _umtx_op(p, UMTX_OP_WAIT_UINT, cmp, 0, 0);
! #    elif SANITIZER_NETBSD || SANITIZER_HAIKU
    sched_yield(); /* No userspace futex-like synchronization */
  #    else
    internal_syscall(SYSCALL(futex), (uptr)p, FUTEX_WAIT_PRIVATE, cmp, 0, 0, 0);
*************** void FutexWait(atomic_uint32_t *p, u32 c
*** 786,792 ****
  void FutexWake(atomic_uint32_t *p, u32 count) {
  #    if SANITIZER_FREEBSD
    _umtx_op(p, UMTX_OP_WAKE, count, 0, 0);
! #    elif SANITIZER_NETBSD
    /* No userspace futex-like synchronization */
  #    else
    internal_syscall(SYSCALL(futex), (uptr)p, FUTEX_WAKE_PRIVATE, count, 0, 0, 0);
--- 836,842 ----
  void FutexWake(atomic_uint32_t *p, u32 count) {
  #    if SANITIZER_FREEBSD
    _umtx_op(p, UMTX_OP_WAKE, count, 0, 0);
! #    elif SANITIZER_NETBSD || SANITIZER_HAIKU
    /* No userspace futex-like synchronization */
  #    else
    internal_syscall(SYSCALL(futex), (uptr)p, FUTEX_WAKE_PRIVATE, count, 0, 0, 0);
*************** struct linux_dirent {
*** 818,824 ****
  };
  #  endif
  
! #  if !SANITIZER_SOLARIS && !SANITIZER_NETBSD
  // Syscall wrappers.
  uptr internal_ptrace(int request, int pid, void *addr, void *data) {
    return internal_syscall(SYSCALL(ptrace), request, pid, (uptr)addr,
--- 868,874 ----
  };
  #  endif
  
! #  if !SANITIZER_SOLARIS && !SANITIZER_NETBSD && !SANITIZER_HAIKU
  // Syscall wrappers.
  uptr internal_ptrace(int request, int pid, void *addr, void *data) {
    return internal_syscall(SYSCALL(ptrace), request, pid, (uptr)addr,
*************** bool internal_sigismember(__sanitizer_si
*** 1032,1045 ****
  #    endif
  #  endif  // !SANITIZER_SOLARIS
  
! #  if !SANITIZER_NETBSD
  // ThreadLister implementation.
  ThreadLister::ThreadLister(pid_t pid) : buffer_(4096) {
    task_path_.AppendF("/proc/%d/task", pid);
  }
  
  ThreadLister::Result ThreadLister::ListThreads(
!     InternalMmapVector<tid_t> *threads) {
    int descriptor = internal_open(task_path_.data(), O_RDONLY | O_DIRECTORY);
    if (internal_iserror(descriptor)) {
      Report("Can't open %s for reading.\n", task_path_.data());
--- 1082,1095 ----
  #    endif
  #  endif  // !SANITIZER_SOLARIS
  
! #  if !SANITIZER_NETBSD && !SANITIZER_HAIKU
  // ThreadLister implementation.
  ThreadLister::ThreadLister(pid_t pid) : buffer_(4096) {
    task_path_.AppendF("/proc/%d/task", pid);
  }
  
  ThreadLister::Result ThreadLister::ListThreads(
!     InternalMmapVector<ThreadID> *threads) {
    int descriptor = internal_open(task_path_.data(), O_RDONLY | O_DIRECTORY);
    if (internal_iserror(descriptor)) {
      Report("Can't open %s for reading.\n", task_path_.data());
*************** ThreadLister::Result ThreadLister::ListT
*** 1094,1100 ****
    }
  }
  
! const char *ThreadLister::LoadStatus(tid_t tid) {
    status_path_.clear();
    status_path_.AppendF("%s/%llu/status", task_path_.data(), tid);
    auto cleanup = at_scope_exit([&] {
--- 1144,1150 ----
    }
  }
  
! const char *ThreadLister::LoadStatus(ThreadID tid) {
    status_path_.clear();
    status_path_.AppendF("%s/%llu/status", task_path_.data(), tid);
    auto cleanup = at_scope_exit([&] {
*************** const char *ThreadLister::LoadStatus(tid
*** 1107,1113 ****
    return buffer_.data();
  }
  
! bool ThreadLister::IsAlive(tid_t tid) {
    // /proc/%d/task/%d/status uses same call to detect alive threads as
    // proc_task_readdir. See task_state implementation in Linux.
    static const char kPrefix[] = "\nPPid:";
--- 1157,1163 ----
    return buffer_.data();
  }
  
! bool ThreadLister::IsAlive(ThreadID tid) {
    // /proc/%d/task/%d/status uses same call to detect alive threads as
    // proc_task_readdir. See task_state implementation in Linux.
    static const char kPrefix[] = "\nPPid:";
*************** uptr GetPageSize() {
*** 1218,1223 ****
--- 1268,1283 ----
    CHECK_EQ(rv, 0);
    return (uptr)pz;
  #    elif SANITIZER_USE_GETAUXVAL
+ #      if SANITIZER_ANDROID && __ANDROID_API__ < 35
+   // The 16 KB page size was introduced in Android 15 (API level 35), while
+   // earlier versions of Android always used a 4 KB page size.
+   // We are checking the weak definition of `strerrorname_np` (introduced in API
+   // level 35) because some earlier API levels crashed when
+   // `getauxval(AT_PAGESZ)` was called from the `.preinit_array`.
+   if (!strerrorname_np)
+     return 4096;
+ #      endif
+ 
    return getauxval(AT_PAGESZ);
  #    else
    return sysconf(_SC_PAGESIZE);  // EXEC_PAGESIZE may not be trustworthy.
*************** uptr GetPageSize() {
*** 1226,1232 ****
  #  endif
  
  uptr ReadBinaryName(/*out*/ char *buf, uptr buf_len) {
! #  if SANITIZER_SOLARIS
    const char *default_module_name = getexecname();
    CHECK_NE(default_module_name, NULL);
    return internal_snprintf(buf, buf_len, "%s", default_module_name);
--- 1286,1304 ----
  #  endif
  
  uptr ReadBinaryName(/*out*/ char *buf, uptr buf_len) {
! #  if SANITIZER_HAIKU
!   int cookie = 0;
!   image_info info;
!   const char *argv0 = "<UNKNOWN>";
!   while (get_next_image_info(B_CURRENT_TEAM, &cookie, &info) == B_OK) {
!     if (info.type != B_APP_IMAGE)
!       continue;
!     argv0 = info.name;
!     break;
!   }
!   internal_strncpy(buf, argv0, buf_len);
!   return internal_strlen(buf);
! #  elif SANITIZER_SOLARIS
    const char *default_module_name = getexecname();
    CHECK_NE(default_module_name, NULL);
    return internal_snprintf(buf, buf_len, "%s", default_module_name);
*************** bool LibraryNameIs(const char *full_name
*** 1292,1302 ****
    return (name[base_name_length] == '-' || name[base_name_length] == '.');
  }
  
! #  if !SANITIZER_ANDROID
  // Call cb for each region mapped by map.
  void ForEachMappedRegion(link_map *map, void (*cb)(const void *, uptr)) {
    CHECK_NE(map, nullptr);
! #    if !SANITIZER_FREEBSD
    typedef ElfW(Phdr) Elf_Phdr;
    typedef ElfW(Ehdr) Elf_Ehdr;
  #    endif  // !SANITIZER_FREEBSD
--- 1364,1374 ----
    return (name[base_name_length] == '-' || name[base_name_length] == '.');
  }
  
! #  if !SANITIZER_ANDROID && !SANITIZER_HAIKU
  // Call cb for each region mapped by map.
  void ForEachMappedRegion(link_map *map, void (*cb)(const void *, uptr)) {
    CHECK_NE(map, nullptr);
! #    if !SANITIZER_FREEBSD && !SANITIZER_HAIKU
    typedef ElfW(Phdr) Elf_Phdr;
    typedef ElfW(Ehdr) Elf_Ehdr;
  #    endif  // !SANITIZER_FREEBSD
*************** int internal_uname(struct utsname *buf)
*** 1829,1891 ****
  }
  #  endif
  
- #  if SANITIZER_ANDROID
- #    if __ANDROID_API__ < 21
- extern "C" __attribute__((weak)) int dl_iterate_phdr(
-     int (*)(struct dl_phdr_info *, size_t, void *), void *);
- #    endif
- 
- static int dl_iterate_phdr_test_cb(struct dl_phdr_info *info, size_t size,
-                                    void *data) {
-   // Any name starting with "lib" indicates a bug in L where library base names
-   // are returned instead of paths.
-   if (info->dlpi_name && info->dlpi_name[0] == 'l' &&
-       info->dlpi_name[1] == 'i' && info->dlpi_name[2] == 'b') {
-     *(bool *)data = true;
-     return 1;
-   }
-   return 0;
- }
- 
- static atomic_uint32_t android_api_level;
- 
- static AndroidApiLevel AndroidDetectApiLevelStatic() {
- #    if __ANDROID_API__ <= 19
-   return ANDROID_KITKAT;
- #    elif __ANDROID_API__ <= 22
-   return ANDROID_LOLLIPOP_MR1;
- #    else
-   return ANDROID_POST_LOLLIPOP;
- #    endif
- }
- 
- static AndroidApiLevel AndroidDetectApiLevel() {
-   if (!&dl_iterate_phdr)
-     return ANDROID_KITKAT;  // K or lower
-   bool base_name_seen = false;
-   dl_iterate_phdr(dl_iterate_phdr_test_cb, &base_name_seen);
-   if (base_name_seen)
-     return ANDROID_LOLLIPOP_MR1;  // L MR1
-   return ANDROID_POST_LOLLIPOP;   // post-L
-   // Plain L (API level 21) is completely broken wrt ASan and not very
-   // interesting to detect.
- }
- 
- extern "C" __attribute__((weak)) void *_DYNAMIC;
- 
- AndroidApiLevel AndroidGetApiLevel() {
-   AndroidApiLevel level =
-       (AndroidApiLevel)atomic_load(&android_api_level, memory_order_relaxed);
-   if (level)
-     return level;
-   level = &_DYNAMIC == nullptr ? AndroidDetectApiLevelStatic()
-                                : AndroidDetectApiLevel();
-   atomic_store(&android_api_level, level, memory_order_relaxed);
-   return level;
- }
- 
- #  endif
- 
  static HandleSignalMode GetHandleSignalModeImpl(int signum) {
    switch (signum) {
      case SIGABRT:
--- 1901,1906 ----
*************** using Context = ucontext_t;
*** 1964,1974 ****
--- 1979,1993 ----
  SignalContext::WriteFlag SignalContext::GetWriteFlag() const {
    Context *ucontext = (Context *)context;
  #  if defined(__x86_64__) || defined(__i386__)
+ #    if !SANITIZER_HAIKU
    static const uptr PF_WRITE = 1U << 1;
+ #    endif
  #    if SANITIZER_FREEBSD
    uptr err = ucontext->uc_mcontext.mc_err;
  #    elif SANITIZER_NETBSD
    uptr err = ucontext->uc_mcontext.__gregs[_REG_ERR];
+ #    elif SANITIZER_HAIKU
+   uptr err = ucontext->uc_mcontext.r13;
  #    elif SANITIZER_SOLARIS && defined(__i386__)
    const int Err = 13;
    uptr err = ucontext->uc_mcontext.gregs[Err];
*************** static void GetPcSpBp(void *context, upt
*** 2581,2586 ****
--- 2600,2610 ----
    *pc = ucontext->uc_mcontext.mc_rip;
    *bp = ucontext->uc_mcontext.mc_rbp;
    *sp = ucontext->uc_mcontext.mc_rsp;
+ #    elif SANITIZER_HAIKU
+   ucontext_t *ucontext = (ucontext_t *)context;
+   *pc = ucontext->uc_mcontext.rip;
+   *bp = ucontext->uc_mcontext.rbp;
+   *sp = ucontext->uc_mcontext.rsp;
  #    else
    ucontext_t *ucontext = (ucontext_t *)context;
    *pc = ucontext->uc_mcontext.gregs[REG_RIP];
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_linux.h gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_linux.h
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_linux.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_linux.h	Sun Dec  7 22:32:18 2025
***************
*** 14,20 ****
  
  #include "sanitizer_platform.h"
  #if SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_NETBSD || \
!     SANITIZER_SOLARIS
  #  include "sanitizer_common.h"
  #  include "sanitizer_internal_defs.h"
  #  include "sanitizer_platform_limits_freebsd.h"
--- 14,20 ----
  
  #include "sanitizer_platform.h"
  #if SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_NETBSD || \
!     SANITIZER_SOLARIS || SANITIZER_HAIKU
  #  include "sanitizer_common.h"
  #  include "sanitizer_internal_defs.h"
  #  include "sanitizer_platform_limits_freebsd.h"
*************** namespace __sanitizer {
*** 31,36 ****
--- 31,41 ----
  // the one in <dirent.h>, which is used by readdir().
  struct linux_dirent;
  
+ #  if SANITIZER_HAIKU
+ struct MemoryMappingLayoutData {
+   long signed int cookie;
+ };
+ #  else
  struct ProcSelfMapsBuff {
    char *data;
    uptr mmaped_size;
*************** struct MemoryMappingLayoutData {
*** 43,48 ****
--- 48,54 ----
  };
  
  void ReadProcMaps(ProcSelfMapsBuff *proc_maps);
+ #  endif  // SANITIZER_HAIKU
  
  // Syscall wrappers.
  uptr internal_getdents(fd_t fd, struct linux_dirent *dirp, unsigned int count);
*************** class ThreadLister {
*** 102,112 ****
      Incomplete,
      Ok,
    };
!   Result ListThreads(InternalMmapVector<tid_t> *threads);
!   const char *LoadStatus(tid_t tid);
  
   private:
!   bool IsAlive(tid_t tid);
  
    InternalScopedString task_path_;
    InternalScopedString status_path_;
--- 108,118 ----
      Incomplete,
      Ok,
    };
!   Result ListThreads(InternalMmapVector<ThreadID> *threads);
!   const char *LoadStatus(ThreadID tid);
  
   private:
!   bool IsAlive(ThreadID tid);
  
    InternalScopedString task_path_;
    InternalScopedString status_path_;
*************** bool LibraryNameIs(const char *full_name
*** 124,130 ****
  // Call cb for each region mapped by map.
  void ForEachMappedRegion(link_map *map, void (*cb)(const void *, uptr));
  
! // Releases memory pages entirely within the [beg, end] address range.
  // The pages no longer count toward RSS; reads are guaranteed to return 0.
  // Requires (but does not verify!) that pages are MAP_PRIVATE.
  inline void ReleaseMemoryPagesToOSAndZeroFill(uptr beg, uptr end) {
--- 130,136 ----
  // Call cb for each region mapped by map.
  void ForEachMappedRegion(link_map *map, void (*cb)(const void *, uptr));
  
! // Releases memory pages entirely within the [beg, end) address range.
  // The pages no longer count toward RSS; reads are guaranteed to return 0.
  // Requires (but does not verify!) that pages are MAP_PRIVATE.
  inline void ReleaseMemoryPagesToOSAndZeroFill(uptr beg, uptr end) {
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp	Sun Dec  7 22:32:18 2025
***************
*** 14,20 ****
  #include "sanitizer_platform.h"
  
  #if SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_NETBSD || \
!     SANITIZER_SOLARIS
  
  #  include "sanitizer_allocator_internal.h"
  #  include "sanitizer_atomic.h"
--- 14,20 ----
  #include "sanitizer_platform.h"
  
  #if SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_NETBSD || \
!     SANITIZER_SOLARIS || SANITIZER_HAIKU
  
  #  include "sanitizer_allocator_internal.h"
  #  include "sanitizer_atomic.h"
***************
*** 28,35 ****
  #  include "sanitizer_procmaps.h"
  #  include "sanitizer_solaris.h"
  
  #  if SANITIZER_NETBSD
! #    define _RTLD_SOURCE  // for __lwp_gettcb_fast() / __lwp_getprivate_fast()
  #  endif
  
  #  include <dlfcn.h>  // for dlsym()
--- 28,47 ----
  #  include "sanitizer_procmaps.h"
  #  include "sanitizer_solaris.h"
  
+ #  if SANITIZER_HAIKU
+ #    define _GNU_SOURCE
+ #    define _DEFAULT_SOURCE
+ #  endif
+ 
  #  if SANITIZER_NETBSD
! #    // for __lwp_gettcb_fast() / __lwp_getprivate_fast()
! #    define _RTLD_SOURCE
! #    include <machine/mcontext.h>
! #    undef _RTLD_SOURCE
! #    include <sys/param.h>
! #    if __NetBSD_Version__ >= 1099001200
! #      include <machine/lwp_private.h>
! #    endif
  #  endif
  
  #  include <dlfcn.h>  // for dlsym()
***************
*** 57,63 ****
  // that, it was never implemented. So just define it to zero.
  #    undef MAP_NORESERVE
  #    define MAP_NORESERVE 0
! extern const Elf_Auxinfo *__elf_aux_vector;
  extern "C" int __sys_sigaction(int signum, const struct sigaction *act,
                                 struct sigaction *oldact);
  #  endif
--- 69,75 ----
  // that, it was never implemented. So just define it to zero.
  #    undef MAP_NORESERVE
  #    define MAP_NORESERVE 0
! extern const Elf_Auxinfo *__elf_aux_vector __attribute__((weak));
  extern "C" int __sys_sigaction(int signum, const struct sigaction *act,
                                 struct sigaction *oldact);
  #  endif
*************** extern "C" int __sys_sigaction(int signu
*** 74,91 ****
  #    include <thread.h>
  #  endif
  
! #  if SANITIZER_ANDROID
! #    include <android/api-level.h>
! #    if !defined(CPU_COUNT) && !defined(__aarch64__)
! #      include <dirent.h>
! #      include <fcntl.h>
! struct __sanitizer::linux_dirent {
!   long d_ino;
!   off_t d_off;
!   unsigned short d_reclen;
!   char d_name[];
! };
! #    endif
  #  endif
  
  #  if !SANITIZER_ANDROID
--- 86,94 ----
  #    include <thread.h>
  #  endif
  
! #  if SANITIZER_HAIKU
! #    include <kernel/OS.h>
! #    include <sys/link_elf.h>
  #  endif
  
  #  if !SANITIZER_ANDROID
*************** static void GetTls(uptr *addr, uptr *siz
*** 651,656 ****
--- 654,660 ----
        *addr = (uptr)tcb->tcb_dtv[1];
      }
    }
+ #    elif SANITIZER_HAIKU
  #    else
  #      error "Unknown OS"
  #    endif
*************** static int AddModuleSegments(const char
*** 721,728 ****
--- 725,737 ----
      if (phdr->p_type == PT_LOAD) {
        uptr cur_beg = info->dlpi_addr + phdr->p_vaddr;
        uptr cur_end = cur_beg + phdr->p_memsz;
+ #  if SANITIZER_HAIKU
+       bool executable = phdr->p_flags & PF_EXECUTE;
+       bool writable = phdr->p_flags & PF_WRITE;
+ #  else
        bool executable = phdr->p_flags & PF_X;
        bool writable = phdr->p_flags & PF_W;
+ #  endif
        cur_module.addAddressRange(cur_beg, cur_end, executable, writable);
      } else if (phdr->p_type == PT_NOTE) {
  #  ifdef NT_GNU_BUILD_ID
*************** static int dl_iterate_phdr_cb(dl_phdr_in
*** 774,820 ****
    return 0;
  }
  
- #  if SANITIZER_ANDROID && __ANDROID_API__ < 21
- extern "C" __attribute__((weak)) int dl_iterate_phdr(
-     int (*)(struct dl_phdr_info *, size_t, void *), void *);
- #  endif
- 
- static bool requiresProcmaps() {
- #  if SANITIZER_ANDROID && __ANDROID_API__ <= 22
-   // Fall back to /proc/maps if dl_iterate_phdr is unavailable or broken.
-   // The runtime check allows the same library to work with
-   // both K and L (and future) Android releases.
-   return AndroidGetApiLevel() <= ANDROID_LOLLIPOP_MR1;
- #  else
-   return false;
- #  endif
- }
- 
- static void procmapsInit(InternalMmapVectorNoCtor<LoadedModule> *modules) {
-   MemoryMappingLayout memory_mapping(/*cache_enabled*/ true);
-   memory_mapping.DumpListOfModules(modules);
- }
- 
  void ListOfModules::init() {
    clearOrInit();
!   if (requiresProcmaps()) {
!     procmapsInit(&modules_);
!   } else {
!     DlIteratePhdrData data = {&modules_, true};
!     dl_iterate_phdr(dl_iterate_phdr_cb, &data);
!   }
  }
  
! // When a custom loader is used, dl_iterate_phdr may not contain the full
! // list of modules. Allow callers to fall back to using procmaps.
! void ListOfModules::fallbackInit() {
!   if (!requiresProcmaps()) {
!     clearOrInit();
!     procmapsInit(&modules_);
!   } else {
!     clear();
!   }
! }
  
  // getrusage does not give us the current RSS, only the max RSS.
  // Still, this is better than nothing if /proc/self/statm is not available
--- 783,795 ----
    return 0;
  }
  
  void ListOfModules::init() {
    clearOrInit();
!   DlIteratePhdrData data = {&modules_, true};
!   dl_iterate_phdr(dl_iterate_phdr_cb, &data);
  }
  
! void ListOfModules::fallbackInit() { clear(); }
  
  // getrusage does not give us the current RSS, only the max RSS.
  // Still, this is better than nothing if /proc/self/statm is not available
*************** u32 GetNumberOfCPUs() {
*** 860,904 ****
    int req[2];
    uptr len = sizeof(ncpu);
    req[0] = CTL_HW;
    req[1] = HW_NCPU;
    CHECK_EQ(internal_sysctl(req, 2, &ncpu, &len, NULL, 0), 0);
    return ncpu;
! #  elif SANITIZER_ANDROID && !defined(CPU_COUNT) && !defined(__aarch64__)
!   // Fall back to /sys/devices/system/cpu on Android when cpu_set_t doesn't
!   // exist in sched.h. That is the case for toolchains generated with older
!   // NDKs.
!   // This code doesn't work on AArch64 because internal_getdents makes use of
!   // the 64bit getdents syscall, but cpu_set_t seems to always exist on AArch64.
!   uptr fd = internal_open("/sys/devices/system/cpu", O_RDONLY | O_DIRECTORY);
!   if (internal_iserror(fd))
!     return 0;
!   InternalMmapVector<u8> buffer(4096);
!   uptr bytes_read = buffer.size();
!   uptr n_cpus = 0;
!   u8 *d_type;
!   struct linux_dirent *entry = (struct linux_dirent *)&buffer[bytes_read];
!   while (true) {
!     if ((u8 *)entry >= &buffer[bytes_read]) {
!       bytes_read = internal_getdents(fd, (struct linux_dirent *)buffer.data(),
!                                      buffer.size());
!       if (internal_iserror(bytes_read) || !bytes_read)
!         break;
!       entry = (struct linux_dirent *)buffer.data();
!     }
!     d_type = (u8 *)entry + entry->d_reclen - 1;
!     if (d_type >= &buffer[bytes_read] ||
!         (u8 *)&entry->d_name[3] >= &buffer[bytes_read])
!       break;
!     if (entry->d_ino != 0 && *d_type == DT_DIR) {
!       if (entry->d_name[0] == 'c' && entry->d_name[1] == 'p' &&
!           entry->d_name[2] == 'u' && entry->d_name[3] >= '0' &&
!           entry->d_name[3] <= '9')
!         n_cpus++;
!     }
!     entry = (struct linux_dirent *)(((u8 *)entry) + entry->d_reclen);
!   }
!   internal_close(fd);
!   return n_cpus;
  #  elif SANITIZER_SOLARIS
    return sysconf(_SC_NPROCESSORS_ONLN);
  #  else
--- 835,851 ----
    int req[2];
    uptr len = sizeof(ncpu);
    req[0] = CTL_HW;
+ #    ifdef HW_NCPUONLINE
+   req[1] = HW_NCPUONLINE;
+ #    else
    req[1] = HW_NCPU;
+ #    endif
    CHECK_EQ(internal_sysctl(req, 2, &ncpu, &len, NULL, 0), 0);
    return ncpu;
! #  elif SANITIZER_HAIKU
!   system_info info;
!   get_system_info(&info);
!   return info.cpu_count;
  #  elif SANITIZER_SOLARIS
    return sysconf(_SC_NPROCESSORS_ONLN);
  #  else
*************** extern "C" SANITIZER_WEAK_ATTRIBUTE int
*** 945,955 ****
  void WriteOneLineToSyslog(const char *s) {
    if (&async_safe_write_log) {
      async_safe_write_log(SANITIZER_ANDROID_LOG_INFO, GetProcessName(), s);
-   } else if (AndroidGetApiLevel() > ANDROID_KITKAT) {
-     syslog(LOG_INFO, "%s", s);
    } else {
!     CHECK(&__android_log_write);
!     __android_log_write(SANITIZER_ANDROID_LOG_INFO, nullptr, s);
    }
  }
  
--- 892,899 ----
  void WriteOneLineToSyslog(const char *s) {
    if (&async_safe_write_log) {
      async_safe_write_log(SANITIZER_ANDROID_LOG_INFO, GetProcessName(), s);
    } else {
!     syslog(LOG_INFO, "%s", s);
    }
  }
  
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_mac.cpp gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_mac.cpp
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_mac.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_mac.cpp	Sun Dec  7 22:32:18 2025
***************
*** 22,27 ****
--- 22,32 ----
  #  endif
  #  include <stdio.h>
  
+ // Start searching for available memory region past PAGEZERO, which is
+ // 4KB on 32-bit and 4GB on 64-bit.
+ #  define GAP_SEARCH_START_ADDRESS \
+     ((SANITIZER_WORDSIZE == 32) ? 0x000000001000 : 0x000100000000)
+ 
  #  include "sanitizer_common.h"
  #  include "sanitizer_file.h"
  #  include "sanitizer_flags.h"
***************
*** 38,51 ****
  extern char **environ;
  #  endif
  
! #  if defined(__has_include) && __has_include(<os/trace.h>) && defined(__BLOCKS__)
! #    define SANITIZER_OS_TRACE 1
! #    include <os/trace.h>
! #  else
! #    define SANITIZER_OS_TRACE 0
! #  endif
! 
! // import new crash reporting api
  #  if defined(__has_include) && __has_include(<CrashReporterClient.h>)
  #    define HAVE_CRASHREPORTERCLIENT_H 1
  #    include <CrashReporterClient.h>
--- 43,49 ----
  extern char **environ;
  #  endif
  
! // Integrate with CrashReporter library if available
  #  if defined(__has_include) && __has_include(<CrashReporterClient.h>)
  #    define HAVE_CRASHREPORTERCLIENT_H 1
  #    include <CrashReporterClient.h>
*************** extern char ***_NSGetArgv(void);
*** 65,73 ****
--- 63,73 ----
  #  include <dlfcn.h>  // for dladdr()
  #  include <errno.h>
  #  include <fcntl.h>
+ #  include <inttypes.h>
  #  include <libkern/OSAtomic.h>
  #  include <mach-o/dyld.h>
  #  include <mach/mach.h>
+ #  include <mach/mach_error.h>
  #  include <mach/mach_time.h>
  #  include <mach/vm_statistics.h>
  #  include <malloc/malloc.h>
*************** extern char ***_NSGetArgv(void);
*** 78,84 ****
          method.  */
  #    define OS_LOG_DEFAULT 0
  #    define os_log_error(A,B,C) \
!        asl_log(nullptr, nullptr, ASL_LEVEL_ERR, "%s", (C));
  #  endif
  #  include <pthread.h>
  #  include <pthread/introspection.h>
--- 78,84 ----
          method.  */
  #    define OS_LOG_DEFAULT 0
  #    define os_log_error(A,B,C) \
!        asl_log(nullptr, nullptr, ASL_LEVEL_ERR, "%s", (C))
  #  endif
  #  include <pthread.h>
  #  include <pthread/introspection.h>
*************** extern "C" {
*** 111,118 ****
--- 111,126 ----
      natural_t *nesting_depth,
      vm_region_recurse_info_t info,
      mach_msg_type_number_t *infoCnt);
+ 
+   extern const void* _dyld_get_shared_cache_range(size_t* length);
  }
  
+ #  if !SANITIZER_GO
+ // Weak symbol no-op when TSan is not linked
+ SANITIZER_WEAK_ATTRIBUTE extern void __tsan_set_in_internal_write_call(
+     bool value) {}
+ #  endif
+ 
  namespace __sanitizer {
  
  #include "sanitizer_syscall_generic.inc"
*************** uptr internal_read(fd_t fd, void *buf, u
*** 183,189 ****
--- 191,205 ----
  }
  
  uptr internal_write(fd_t fd, const void *buf, uptr count) {
+ #  if SANITIZER_GO
    return write(fd, buf, count);
+ #  else
+   // We need to disable interceptors when writing in TSan
+   __tsan_set_in_internal_write_call(true);
+   uptr res = write(fd, buf, count);
+   __tsan_set_in_internal_write_call(false);
+   return res;
+ #  endif
  }
  
  uptr internal_stat(const char *path, void *buf) {
*************** bool DirExists(const char *path) {
*** 409,416 ****
    return S_ISDIR(st.st_mode);
  }
  
! tid_t GetTid() {
!   tid_t tid;
    pthread_threadid_np(nullptr, &tid);
    return tid;
  }
--- 425,432 ----
    return S_ISDIR(st.st_mode);
  }
  
! ThreadID GetTid() {
!   ThreadID tid;
    pthread_threadid_np(nullptr, &tid);
    return tid;
  }
*************** void internal_join_thread(void *th) { pt
*** 784,794 ****
  static Mutex syslog_lock;
  #  endif
  
  void WriteOneLineToSyslog(const char *s) {
  #if !SANITIZER_GO
    syslog_lock.CheckLocked();
    if (GetMacosAlignedVersion() >= MacosVersion(10, 12)) {
!     os_log_error(OS_LOG_DEFAULT, "%{public}s", s);
    } else {
  #pragma clang diagnostic push
  // as_log is deprecated.
--- 800,816 ----
  static Mutex syslog_lock;
  #  endif
  
+ #  if SANITIZER_DRIVERKIT
+ #    define SANITIZER_OS_LOG os_log
+ #  else
+ #    define SANITIZER_OS_LOG os_log_error
+ #  endif
+ 
  void WriteOneLineToSyslog(const char *s) {
  #if !SANITIZER_GO
    syslog_lock.CheckLocked();
    if (GetMacosAlignedVersion() >= MacosVersion(10, 12)) {
!     SANITIZER_OS_LOG(OS_LOG_DEFAULT, "%{public}s", s);
    } else {
  #pragma clang diagnostic push
  // as_log is deprecated.
*************** static char crashreporter_info_buff[__sa
*** 804,811 ****
  static Mutex crashreporter_info_mutex;
  
  extern "C" {
! // Integrate with crash reporter libraries.
  #if HAVE_CRASHREPORTERCLIENT_H
  CRASH_REPORTER_CLIENT_HIDDEN
  struct crashreporter_annotations_t gCRAnnotations
      __attribute__((section("__DATA," CRASHREPORTER_ANNOTATIONS_SECTION))) = {
--- 826,838 ----
  static Mutex crashreporter_info_mutex;
  
  extern "C" {
! 
  #if HAVE_CRASHREPORTERCLIENT_H
+ // Available in CRASHREPORTER_ANNOTATIONS_VERSION 5+
+ #    ifdef CRASHREPORTER_ANNOTATIONS_INITIALIZER
+ CRASHREPORTER_ANNOTATIONS_INITIALIZER()
+ #    else
+ // Support for older CrashRerporter annotiations
  CRASH_REPORTER_CLIENT_HIDDEN
  struct crashreporter_annotations_t gCRAnnotations
      __attribute__((section("__DATA," CRASHREPORTER_ANNOTATIONS_SECTION))) = {
*************** struct crashreporter_annotations_t gCRAn
*** 816,832 ****
          0,
          0,
          0,
! #if CRASHREPORTER_ANNOTATIONS_VERSION > 4
          0,
! #endif
  };
! 
! #else
! // fall back to old crashreporter api
  static const char *__crashreporter_info__ __attribute__((__used__)) =
      &crashreporter_info_buff[0];
  asm(".desc ___crashreporter_info__, 0x10");
! #endif
  
  }  // extern "C"
  
--- 843,859 ----
          0,
          0,
          0,
! #      if CRASHREPORTER_ANNOTATIONS_VERSION > 4
          0,
! #      endif
  };
! #    endif
! #  else
! // Revert to previous crash reporter API if client header is not available
  static const char *__crashreporter_info__ __attribute__((__used__)) =
      &crashreporter_info_buff[0];
  asm(".desc ___crashreporter_info__, 0x10");
! #endif  // HAVE_CRASHREPORTERCLIENT_H
  
  }  // extern "C"
  
*************** void LogMessageOnPrintf(const char *str)
*** 846,876 ****
  }
  
  void LogFullErrorReport(const char *buffer) {
! #if !SANITIZER_GO
!   // Log with os_trace. This will make it into the crash log.
! #if SANITIZER_OS_TRACE
! #pragma clang diagnostic push
! // os_trace is deprecated.
! #pragma clang diagnostic ignored "-Wdeprecated-declarations"
!   if (GetMacosAlignedVersion() >= MacosVersion(10, 10)) {
!     // os_trace requires the message (format parameter) to be a string literal.
!     if (internal_strncmp(SanitizerToolName, "AddressSanitizer",
!                          sizeof("AddressSanitizer") - 1) == 0)
!       os_trace("Address Sanitizer reported a failure.");
!     else if (internal_strncmp(SanitizerToolName, "UndefinedBehaviorSanitizer",
!                               sizeof("UndefinedBehaviorSanitizer") - 1) == 0)
!       os_trace("Undefined Behavior Sanitizer reported a failure.");
!     else if (internal_strncmp(SanitizerToolName, "ThreadSanitizer",
!                               sizeof("ThreadSanitizer") - 1) == 0)
!       os_trace("Thread Sanitizer reported a failure.");
!     else
!       os_trace("Sanitizer tool reported a failure.");
  
!     if (common_flags()->log_to_syslog)
!       os_trace("Consult syslog for more information.");
!   }
! #pragma clang diagnostic pop
! #endif
  
    // Log to syslog.
    // The logging on OS X may call pthread_create so we need the threading
--- 873,899 ----
  }
  
  void LogFullErrorReport(const char *buffer) {
! #  if !SANITIZER_GO
!   // When logging with os_log_error this will make it into the crash log.
!   if (internal_strncmp(SanitizerToolName, "AddressSanitizer",
!                        sizeof("AddressSanitizer") - 1) == 0)
!     SANITIZER_OS_LOG(OS_LOG_DEFAULT, "%{public}s",
!                      "Address Sanitizer reported a failure.");
!   else if (internal_strncmp(SanitizerToolName, "UndefinedBehaviorSanitizer",
!                             sizeof("UndefinedBehaviorSanitizer") - 1) == 0)
!     SANITIZER_OS_LOG(OS_LOG_DEFAULT, "%{public}s",
!                      "Undefined Behavior Sanitizer reported a failure.");
!   else if (internal_strncmp(SanitizerToolName, "ThreadSanitizer",
!                             sizeof("ThreadSanitizer") - 1) == 0)
!     SANITIZER_OS_LOG(OS_LOG_DEFAULT, "%{public}s",
!                      "Thread Sanitizer reported a failure.");
!   else
!     SANITIZER_OS_LOG(OS_LOG_DEFAULT, "%{public}s",
!                      "Sanitizer tool reported a failure.");
  
!   if (common_flags()->log_to_syslog)
!     SANITIZER_OS_LOG(OS_LOG_DEFAULT, "%{public}s",
!                      "Consult syslog for more information.");
  
    // Log to syslog.
    // The logging on OS X may call pthread_create so we need the threading
*************** void LogFullErrorReport(const char *buff
*** 884,890 ****
      WriteToSyslog(buffer);
  
    // The report is added to CrashLog as part of logging all of Printf output.
! #endif
  }
  
  SignalContext::WriteFlag SignalContext::GetWriteFlag() const {
--- 907,913 ----
      WriteToSyslog(buffer);
  
    // The report is added to CrashLog as part of logging all of Printf output.
! #  endif  // !SANITIZER_GO
  }
  
  SignalContext::WriteFlag SignalContext::GetWriteFlag() const {
*************** void SignalContext::InitPcSpBp() {
*** 941,946 ****
--- 964,973 ----
    GetPcSpBp(context, &pc, &sp, &bp);
  }
  
+ #ifndef KERN_DENIED
+ #define KERN_DENIED 53
+ #endif
+ 
  // ASan/TSan use mmap in a way that creates “deallocation gaps” which triggers
  // EXC_GUARD exceptions on macOS 10.15+ (XNU 19.0+).
  static void DisableMmapExcGuardExceptions() {
*************** static void DisableMmapExcGuardException
*** 951,957 ****
        RTLD_DEFAULT, "task_set_exc_guard_behavior");
    if (set_behavior == nullptr) return;
    const task_exc_guard_behavior_t task_exc_guard_none = 0;
!   set_behavior(mach_task_self(), task_exc_guard_none);
  }
  
  static void VerifyInterceptorsWorking();
--- 978,994 ----
        RTLD_DEFAULT, "task_set_exc_guard_behavior");
    if (set_behavior == nullptr) return;
    const task_exc_guard_behavior_t task_exc_guard_none = 0;
!   kern_return_t res = set_behavior(mach_task_self(), task_exc_guard_none);
!   if (res != KERN_SUCCESS) {
!     Report(
!         "WARN: task_set_exc_guard_behavior returned %d (%s), "
!         "mmap may fail unexpectedly.\n",
!         res, mach_error_string(res));
!     if (res == KERN_DENIED)
!       Report(
!           "HINT: Check that task_set_exc_guard_behavior is allowed by "
!           "sandbox.\n");
!   }
  }
  
  static void VerifyInterceptorsWorking();
*************** static const char kDyldInsertLibraries[]
*** 980,987 ****
  LowLevelAllocator allocator_for_env;
  
  static bool ShouldCheckInterceptors() {
!   // Restrict "interceptors working?" check to ASan and TSan.
!   const char *sanitizer_names[] = {"AddressSanitizer", "ThreadSanitizer"};
    size_t count = sizeof(sanitizer_names) / sizeof(sanitizer_names[0]);
    for (size_t i = 0; i < count; i++) {
      if (internal_strcmp(sanitizer_names[i], SanitizerToolName) == 0)
--- 1017,1025 ----
  LowLevelAllocator allocator_for_env;
  
  static bool ShouldCheckInterceptors() {
!   // Restrict "interceptors working?" check
!   const char *sanitizer_names[] = {"AddressSanitizer", "ThreadSanitizer",
!                                    "RealtimeSanitizer"};
    size_t count = sizeof(sanitizer_names) / sizeof(sanitizer_names[0]);
    for (size_t i = 0; i < count; i++) {
      if (internal_strcmp(sanitizer_names[i], SanitizerToolName) == 0)
*************** static void StripEnv() {
*** 1117,1122 ****
--- 1155,1221 ----
  }
  #endif  // SANITIZER_GO
  
+ // Prints out a consolidated memory map: contiguous regions
+ // are merged together.
+ static void PrintVmmap() {
+   const mach_vm_address_t max_vm_address = GetMaxVirtualAddress() + 1;
+   mach_vm_address_t address = GAP_SEARCH_START_ADDRESS;
+   kern_return_t kr = KERN_SUCCESS;
+ 
+   Report("Memory map:\n");
+   mach_vm_address_t last = 0;
+   mach_vm_address_t lastsz = 0;
+ 
+   while (1) {
+     mach_vm_size_t vmsize = 0;
+     natural_t depth = 0;
+     vm_region_submap_short_info_data_64_t vminfo;
+     mach_msg_type_number_t count = VM_REGION_SUBMAP_SHORT_INFO_COUNT_64;
+     kr = mach_vm_region_recurse(mach_task_self(), &address, &vmsize, &depth,
+                                 (vm_region_info_t)&vminfo, &count);
+ 
+     if (kr == KERN_DENIED) {
+       Report(
+           "ERROR: mach_vm_region_recurse got KERN_DENIED when printing memory "
+           "map.\n");
+       Report(
+           "HINT: Check whether mach_vm_region_recurse is allowed by "
+           "sandbox.\n");
+     }
+ 
+     if (kr == KERN_SUCCESS && address < max_vm_address) {
+       if (last + lastsz == address) {
+         // This region is contiguous with the last; merge together.
+         lastsz += vmsize;
+       } else {
+         if (lastsz)
+           Printf("|| `[%p, %p]` || size=0x%016" PRIx64 " ||\n", (void*)last,
+                  (void*)(last + lastsz), lastsz);
+ 
+         last = address;
+         lastsz = vmsize;
+       }
+       address += vmsize;
+     } else {
+       // We've reached the end of the memory map. Print the last remaining
+       // region, if there is one.
+       if (lastsz)
+         Printf("|| `[%p, %p]` || size=0x%016" PRIx64 " ||\n", (void*)last,
+                (void*)(last + lastsz), lastsz);
+ 
+       break;
+     }
+   }
+ }
+ 
+ static void ReportShadowAllocFail(uptr shadow_size_bytes, uptr alignment) {
+   Report(
+       "FATAL: Failed to allocate shadow memory. Tried to allocate %p bytes "
+       "(alignment=%p).\n",
+       (void*)shadow_size_bytes, (void*)alignment);
+   PrintVmmap();
+ }
+ 
  char **GetArgv() {
    return *_NSGetArgv();
  }
*************** uptr MapDynamicShadow(uptr shadow_size_b
*** 1205,1217 ****
    const uptr left_padding =
        Max<uptr>(granularity, 1ULL << min_shadow_base_alignment);
  
!   uptr space_size = shadow_size_bytes + left_padding;
  
    uptr largest_gap_found = 0;
    uptr max_occupied_addr = 0;
    VReport(2, "FindDynamicShadowStart, space_size = %p\n", (void *)space_size);
    uptr shadow_start =
!       FindAvailableMemoryRange(space_size, alignment, granularity,
                                 &largest_gap_found, &max_occupied_addr);
    // If the shadow doesn't fit, restrict the address space to make it fit.
    if (shadow_start == 0) {
--- 1304,1317 ----
    const uptr left_padding =
        Max<uptr>(granularity, 1ULL << min_shadow_base_alignment);
  
!   uptr space_size = shadow_size_bytes;
  
    uptr largest_gap_found = 0;
    uptr max_occupied_addr = 0;
+ 
    VReport(2, "FindDynamicShadowStart, space_size = %p\n", (void *)space_size);
    uptr shadow_start =
!       FindAvailableMemoryRange(space_size, alignment, left_padding,
                                 &largest_gap_found, &max_occupied_addr);
    // If the shadow doesn't fit, restrict the address space to make it fit.
    if (shadow_start == 0) {
*************** uptr MapDynamicShadow(uptr shadow_size_b
*** 1223,1242 ****
      if (new_max_vm < max_occupied_addr) {
        Report("Unable to find a memory range for dynamic shadow.\n");
        Report(
!           "space_size = %p, largest_gap_found = %p, max_occupied_addr = %p, "
!           "new_max_vm = %p\n",
!           (void *)space_size, (void *)largest_gap_found,
!           (void *)max_occupied_addr, (void *)new_max_vm);
        CHECK(0 && "cannot place shadow");
      }
      RestrictMemoryToMaxAddress(new_max_vm);
      high_mem_end = new_max_vm - 1;
!     space_size = (high_mem_end >> shadow_scale) + left_padding;
      VReport(2, "FindDynamicShadowStart, space_size = %p\n", (void *)space_size);
!     shadow_start = FindAvailableMemoryRange(space_size, alignment, granularity,
                                              nullptr, nullptr);
      if (shadow_start == 0) {
        Report("Unable to find a memory range after restricting VM.\n");
        CHECK(0 && "cannot place shadow after restricting vm");
      }
    }
--- 1323,1344 ----
      if (new_max_vm < max_occupied_addr) {
        Report("Unable to find a memory range for dynamic shadow.\n");
        Report(
!           "\tspace_size = %p\n\tlargest_gap_found = %p\n\tmax_occupied_addr "
!           "= %p\n\tnew_max_vm = %p\n",
!           (void*)space_size, (void*)largest_gap_found, (void*)max_occupied_addr,
!           (void*)new_max_vm);
!       ReportShadowAllocFail(shadow_size_bytes, alignment);
        CHECK(0 && "cannot place shadow");
      }
      RestrictMemoryToMaxAddress(new_max_vm);
      high_mem_end = new_max_vm - 1;
!     space_size = (high_mem_end >> shadow_scale);
      VReport(2, "FindDynamicShadowStart, space_size = %p\n", (void *)space_size);
!     shadow_start = FindAvailableMemoryRange(space_size, alignment, left_padding,
                                              nullptr, nullptr);
      if (shadow_start == 0) {
        Report("Unable to find a memory range after restricting VM.\n");
+       ReportShadowAllocFail(shadow_size_bytes, alignment);
        CHECK(0 && "cannot place shadow after restricting vm");
      }
    }
*************** uptr MapDynamicShadowAndAliases(uptr sha
*** 1252,1286 ****
  }
  
  uptr FindAvailableMemoryRange(uptr size, uptr alignment, uptr left_padding,
!                               uptr *largest_gap_found,
!                               uptr *max_occupied_addr) {
!   typedef vm_region_submap_short_info_data_64_t RegionInfo;
!   enum { kRegionInfoSize = VM_REGION_SUBMAP_SHORT_INFO_COUNT_64 };
!   // Start searching for available memory region past PAGEZERO, which is
!   // 4KB on 32-bit and 4GB on 64-bit.
!   mach_vm_address_t start_address =
!     (SANITIZER_WORDSIZE == 32) ? 0x000000001000 : 0x000100000000;
! 
    const mach_vm_address_t max_vm_address = GetMaxVirtualAddress() + 1;
!   mach_vm_address_t address = start_address;
!   mach_vm_address_t free_begin = start_address;
    kern_return_t kr = KERN_SUCCESS;
    if (largest_gap_found) *largest_gap_found = 0;
    if (max_occupied_addr) *max_occupied_addr = 0;
    while (kr == KERN_SUCCESS) {
      mach_vm_size_t vmsize = 0;
      natural_t depth = 0;
!     RegionInfo vminfo;
!     mach_msg_type_number_t count = kRegionInfoSize;
      kr = mach_vm_region_recurse(mach_task_self(), &address, &vmsize, &depth,
                                  (vm_region_info_t)&vminfo, &count);
!     if (kr == KERN_INVALID_ADDRESS) {
        // No more regions beyond "address", consider the gap at the end of VM.
        address = max_vm_address;
!       vmsize = 0;
      } else {
!       if (max_occupied_addr) *max_occupied_addr = address + vmsize;
      }
      if (free_begin != address) {
        // We found a free region [free_begin..address-1].
        uptr gap_start = RoundUpTo((uptr)free_begin + left_padding, alignment);
--- 1354,1404 ----
  }
  
  uptr FindAvailableMemoryRange(uptr size, uptr alignment, uptr left_padding,
!                               uptr* largest_gap_found,
!                               uptr* max_occupied_addr) {
    const mach_vm_address_t max_vm_address = GetMaxVirtualAddress() + 1;
!   mach_vm_address_t address = GAP_SEARCH_START_ADDRESS;
!   mach_vm_address_t free_begin = GAP_SEARCH_START_ADDRESS;
    kern_return_t kr = KERN_SUCCESS;
    if (largest_gap_found) *largest_gap_found = 0;
    if (max_occupied_addr) *max_occupied_addr = 0;
    while (kr == KERN_SUCCESS) {
      mach_vm_size_t vmsize = 0;
      natural_t depth = 0;
!     vm_region_submap_short_info_data_64_t vminfo;
!     mach_msg_type_number_t count = VM_REGION_SUBMAP_SHORT_INFO_COUNT_64;
      kr = mach_vm_region_recurse(mach_task_self(), &address, &vmsize, &depth,
                                  (vm_region_info_t)&vminfo, &count);
! 
!     if (kr == KERN_SUCCESS) {
!       // There are cases where going beyond the processes' max vm does
!       // not return KERN_INVALID_ADDRESS so we check for going beyond that
!       // max address as well.
!       if (address > max_vm_address) {
!         address = max_vm_address;
!         kr = -1;  // break after this iteration.
!       }
! 
!       if (max_occupied_addr)
!         *max_occupied_addr = address + vmsize;
!     } else if (kr == KERN_INVALID_ADDRESS) {
        // No more regions beyond "address", consider the gap at the end of VM.
        address = max_vm_address;
! 
!       // We will break after this iteration anyway since kr != KERN_SUCCESS
!     } else if (kr == KERN_DENIED) {
!       Report("ERROR: Unable to find a memory range for dynamic shadow.\n");
!       Report("HINT: Ensure mach_vm_region_recurse is allowed under sandbox.\n");
!       Die();
      } else {
!       Report(
!           "WARNING: mach_vm_region_recurse returned unexpected code %d (%s)\n",
!           kr, mach_error_string(kr));
!       DCHECK(false && "mach_vm_region_recurse returned unexpected code");
!       break;  // address is not valid unless KERN_SUCCESS, therefore we must not
!               // use it.
      }
+ 
      if (free_begin != address) {
        // We found a free region [free_begin..address-1].
        uptr gap_start = RoundUpTo((uptr)free_begin + left_padding, alignment);
*************** uptr FindAvailableMemoryRange(uptr size,
*** 1303,1308 ****
--- 1421,1478 ----
    return 0;
  }
  
+ // This function (when used during initialization when there is
+ // only a single thread), can be used to verify that a range
+ // of memory hasn't already been mapped, and won't be mapped
+ // later in the shared cache.
+ //
+ // If the syscall mach_vm_region_recurse fails (due to sandbox),
+ // we assume that the memory is not mapped so that execution can continue.
+ //
+ // NOTE: range_end is inclusive
+ //
+ // WARNING: This function must NOT allocate memory, since it is
+ // used in InitializeShadowMemory between where we search for
+ // space for shadow and where we actually allocate it.
+ bool MemoryRangeIsAvailable(uptr range_start, uptr range_end) {
+   mach_vm_size_t vmsize = 0;
+   natural_t depth = 0;
+   vm_region_submap_short_info_data_64_t vminfo;
+   mach_msg_type_number_t count = VM_REGION_SUBMAP_SHORT_INFO_COUNT_64;
+   mach_vm_address_t address = range_start;
+ 
+   // First, check if the range is already mapped.
+   kern_return_t kr =
+       mach_vm_region_recurse(mach_task_self(), &address, &vmsize, &depth,
+                              (vm_region_info_t)&vminfo, &count);
+ 
+   if (kr == KERN_DENIED) {
+     Report(
+         "WARN: mach_vm_region_recurse returned KERN_DENIED when checking "
+         "whether an address is mapped.\n");
+     Report("HINT: Is mach_vm_region_recurse allowed by sandbox?\n");
+   }
+ 
+   if (kr == KERN_SUCCESS && !IntervalsAreSeparate(address, address + vmsize - 1,
+                                                   range_start, range_end)) {
+     // Overlaps with already-mapped memory
+     return false;
+   }
+ 
+   size_t cacheLength;
+   uptr cacheStart = (uptr)_dyld_get_shared_cache_range(&cacheLength);
+ 
+   if (cacheStart &&
+       !IntervalsAreSeparate(cacheStart, cacheStart + cacheLength - 1,
+                             range_start, range_end)) {
+     // Overlaps with shared cache region
+     return false;
+   }
+ 
+   // We believe this address is available.
+   return true;
+ }
+ 
  // FIXME implement on this platform.
  void GetMemoryProfile(fill_profile_f cb, uptr *stats) {}
  
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_mac.h gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_mac.h
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_mac.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_mac.h	Sun Dec  7 22:32:18 2025
*************** struct VersionBase {
*** 57,65 ****
  
    VersionBase(u16 major, u16 minor) : major(major), minor(minor) {}
  
-   bool operator==(const VersionType &other) const {
-     return major == other.major && minor == other.minor;
-   }
    bool operator>=(const VersionType &other) const {
      return major > other.major ||
             (major == other.major && minor >= other.minor);
--- 57,62 ----
*************** struct VersionBase {
*** 67,72 ****
--- 64,75 ----
    bool operator<(const VersionType &other) const { return !(*this >= other); }
  };
  
+ template <typename VersionType>
+ bool operator==(const VersionBase<VersionType> &self,
+                 const VersionBase<VersionType> &other) {
+   return self.major == other.major && self.minor == other.minor;
+ }
+ 
  struct MacosVersion : VersionBase<MacosVersion> {
    MacosVersion(u16 major, u16 minor) : VersionBase(major, minor) {}
  };
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_malloc_mac.inc gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_malloc_mac.inc
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_malloc_mac.inc	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_malloc_mac.inc	Sun Dec  7 22:32:18 2025
*************** INTERCEPTOR(void, free, void *ptr) {
*** 144,149 ****
--- 144,165 ----
    COMMON_MALLOC_FREE(ptr);
  }
  
+ #if SANITIZER_INTERCEPT_FREE_SIZED && defined(COMMON_MALLOC_FREE_SIZED)
+ INTERCEPTOR(void, free_sized, void *ptr, size_t size) {
+   COMMON_MALLOC_ENTER();
+   COMMON_MALLOC_FREE_SIZED(ptr, size);
+ }
+ #endif
+ 
+ #if SANITIZER_INTERCEPT_FREE_ALIGNED_SIZED && \
+     defined(COMMON_MALLOC_FREE_ALIGNED_SIZED)
+ INTERCEPTOR(void, free_aligned_sized, void *ptr, size_t alignment,
+             size_t size) {
+   COMMON_MALLOC_ENTER();
+   COMMON_MALLOC_FREE_ALIGNED_SIZED(ptr, alignment, size);
+ }
+ #endif
+ 
  INTERCEPTOR(void *, realloc, void *ptr, size_t size) {
    COMMON_MALLOC_ENTER();
    COMMON_MALLOC_REALLOC(ptr, size);
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_netbsd.cpp gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_netbsd.cpp
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_netbsd.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_netbsd.cpp	Sun Dec  7 22:32:18 2025
*************** uptr internal_execve(const char *filenam
*** 229,240 ****
    return _sys_execve(filename, argv, envp);
  }
  
! tid_t GetTid() {
    DEFINE__REAL(int, _lwp_self);
    return _REAL(_lwp_self);
  }
  
! int TgKill(pid_t pid, tid_t tid, int sig) {
    DEFINE__REAL(int, _lwp_kill, int a, int b);
    (void)pid;
    return _REAL(_lwp_kill, tid, sig);
--- 229,240 ----
    return _sys_execve(filename, argv, envp);
  }
  
! ThreadID GetTid() {
    DEFINE__REAL(int, _lwp_self);
    return _REAL(_lwp_self);
  }
  
! int TgKill(pid_t pid, ThreadID tid, int sig) {
    DEFINE__REAL(int, _lwp_kill, int a, int b);
    (void)pid;
    return _REAL(_lwp_kill, tid, sig);
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_platform.h gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_platform.h
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_platform.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_platform.h	Sun Dec  7 22:32:18 2025
***************
*** 14,20 ****
  
  #if !defined(__linux__) && !defined(__FreeBSD__) && !defined(__NetBSD__) && \
      !defined(__APPLE__) && !defined(_WIN32) && !defined(__Fuchsia__) &&     \
!     !(defined(__sun__) && defined(__svr4__))
  #  error "This operating system is not supported"
  #endif
  
--- 14,21 ----
  
  #if !defined(__linux__) && !defined(__FreeBSD__) && !defined(__NetBSD__) && \
      !defined(__APPLE__) && !defined(_WIN32) && !defined(__Fuchsia__) &&     \
!     !(defined(__sun__) && defined(__svr4__)) && !defined(__HAIKU__) &&      \
!     !defined(__wasi__)
  #  error "This operating system is not supported"
  #endif
  
***************
*** 55,60 ****
--- 56,73 ----
  #  define SANITIZER_SOLARIS 0
  #endif
  
+ #if defined(__HAIKU__)
+ #  define SANITIZER_HAIKU 1
+ #else
+ #  define SANITIZER_HAIKU 0
+ #endif
+ 
+ #if defined(__wasi__)
+ #  define SANITIZER_WASI 1
+ #else
+ #  define SANITIZER_WASI 0
+ #endif
+ 
  // - SANITIZER_APPLE: all Apple code
  //   - TARGET_OS_OSX: macOS
  //   - SANITIZER_IOS: devices (iOS and iOS-like)
***************
*** 136,144 ****
  #  define SANITIZER_MUSL 0
  #endif
  
! #define SANITIZER_POSIX                                     \
    (SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_APPLE || \
!    SANITIZER_NETBSD || SANITIZER_SOLARIS)
  
  #if __LP64__ || defined(_WIN64)
  #  define SANITIZER_WORDSIZE 64
--- 149,157 ----
  #  define SANITIZER_MUSL 0
  #endif
  
! #define SANITIZER_POSIX                                       \
    (SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_APPLE || \
!    SANITIZER_NETBSD || SANITIZER_SOLARIS || SANITIZER_HAIKU)
  
  #if __LP64__ || defined(_WIN64)
  #  define SANITIZER_WORDSIZE 64
***************
*** 305,310 ****
--- 318,326 ----
  #  endif
  #endif
  
+ // The first address that can be returned by mmap.
+ #define SANITIZER_MMAP_BEGIN 0
+ 
  // The range of addresses which can be returned my mmap.
  // FIXME: this value should be different on different platforms.  Larger values
  // will still work but will consume more memory for TwoLevelByteMap.
***************
*** 410,416 ****
  #  define SANITIZER_SUPPRESS_LEAK_ON_PTHREAD_EXIT 0
  #endif
  
! #if SANITIZER_FREEBSD || SANITIZER_APPLE || SANITIZER_NETBSD || SANITIZER_SOLARIS
  #  define SANITIZER_MADVISE_DONTNEED MADV_FREE
  #else
  #  define SANITIZER_MADVISE_DONTNEED MADV_DONTNEED
--- 426,433 ----
  #  define SANITIZER_SUPPRESS_LEAK_ON_PTHREAD_EXIT 0
  #endif
  
! #if SANITIZER_FREEBSD || SANITIZER_APPLE || SANITIZER_NETBSD || \
!     SANITIZER_SOLARIS || SANITIZER_HAIKU
  #  define SANITIZER_MADVISE_DONTNEED MADV_FREE
  #else
  #  define SANITIZER_MADVISE_DONTNEED MADV_DONTNEED
***************
*** 465,468 ****
--- 482,500 ----
  #  define SANITIZER_START_BACKGROUND_THREAD_IN_ASAN_INTERNAL 0
  #endif
  
+ #if SANITIZER_LINUX
+ #  if SANITIZER_GLIBC
+ // Workaround for
+ // glibc/commit/3d3572f59059e2b19b8541ea648a6172136ec42e
+ // Linux: Keep termios ioctl constants strictly internal
+ #    if __GLIBC_PREREQ(2, 41)
+ #      define SANITIZER_TERMIOS_IOCTL_CONSTANTS 0
+ #    else
+ #      define SANITIZER_TERMIOS_IOCTL_CONSTANTS 1
+ #    endif
+ #  else
+ #    define SANITIZER_TERMIOS_IOCTL_CONSTANTS 1
+ #  endif
+ #endif
+ 
  #endif  // SANITIZER_PLATFORM_H
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h	Sun Dec  7 22:32:18 2025
*************** SANITIZER_WEAK_IMPORT void *aligned_allo
*** 129,136 ****
--- 129,138 ----
  
  #if SANITIZER_FUCHSIA
  #define SI_NOT_FUCHSIA 0
+ #define SI_FUCHSIA 1
  #else
  #define SI_NOT_FUCHSIA 1
+ #define SI_FUCHSIA 0
  #endif
  
  #if SANITIZER_SOLARIS
*************** SANITIZER_WEAK_IMPORT void *aligned_allo
*** 139,144 ****
--- 141,152 ----
  #define SI_SOLARIS 0
  #endif
  
+ #if SANITIZER_AIX
+ #  define SI_NOT_AIX 0
+ #else
+ #  define SI_NOT_AIX 1
+ #endif
+ 
  #if SANITIZER_SOLARIS32
  #define SI_SOLARIS32 1
  #else
*************** SANITIZER_WEAK_IMPORT void *aligned_allo
*** 159,178 ****
  
  #define SANITIZER_INTERCEPT_STRLEN SI_NOT_FUCHSIA
  #define SANITIZER_INTERCEPT_STRNLEN (SI_NOT_MAC && SI_NOT_FUCHSIA)
! #define SANITIZER_INTERCEPT_STRCMP SI_NOT_FUCHSIA
  #define SANITIZER_INTERCEPT_STRSTR SI_NOT_FUCHSIA
! #define SANITIZER_INTERCEPT_STRCASESTR SI_POSIX
  #define SANITIZER_INTERCEPT_STRTOK SI_NOT_FUCHSIA
  #define SANITIZER_INTERCEPT_STRCHR SI_NOT_FUCHSIA
! #define SANITIZER_INTERCEPT_STRCHRNUL SI_POSIX_NOT_MAC
  #define SANITIZER_INTERCEPT_STRRCHR SI_NOT_FUCHSIA
  #define SANITIZER_INTERCEPT_STRSPN SI_NOT_FUCHSIA
  #define SANITIZER_INTERCEPT_STRPBRK SI_NOT_FUCHSIA
  #define SANITIZER_INTERCEPT_TEXTDOMAIN SI_LINUX_NOT_ANDROID || SI_SOLARIS
  #define SANITIZER_INTERCEPT_STRCASECMP SI_POSIX
  #define SANITIZER_INTERCEPT_MEMSET 1
! #define SANITIZER_INTERCEPT_MEMMOVE 1
! #define SANITIZER_INTERCEPT_MEMCPY 1
  #define SANITIZER_INTERCEPT_MEMCMP SI_NOT_FUCHSIA
  #define SANITIZER_INTERCEPT_BCMP \
    SANITIZER_INTERCEPT_MEMCMP &&  \
--- 167,186 ----
  
  #define SANITIZER_INTERCEPT_STRLEN SI_NOT_FUCHSIA
  #define SANITIZER_INTERCEPT_STRNLEN (SI_NOT_MAC && SI_NOT_FUCHSIA)
! #define SANITIZER_INTERCEPT_STRCMP (SI_NOT_FUCHSIA && SI_NOT_AIX)
  #define SANITIZER_INTERCEPT_STRSTR SI_NOT_FUCHSIA
! #define SANITIZER_INTERCEPT_STRCASESTR (SI_POSIX && SI_NOT_AIX)
  #define SANITIZER_INTERCEPT_STRTOK SI_NOT_FUCHSIA
  #define SANITIZER_INTERCEPT_STRCHR SI_NOT_FUCHSIA
! #define SANITIZER_INTERCEPT_STRCHRNUL (SI_POSIX_NOT_MAC && SI_NOT_AIX)
  #define SANITIZER_INTERCEPT_STRRCHR SI_NOT_FUCHSIA
  #define SANITIZER_INTERCEPT_STRSPN SI_NOT_FUCHSIA
  #define SANITIZER_INTERCEPT_STRPBRK SI_NOT_FUCHSIA
  #define SANITIZER_INTERCEPT_TEXTDOMAIN SI_LINUX_NOT_ANDROID || SI_SOLARIS
  #define SANITIZER_INTERCEPT_STRCASECMP SI_POSIX
  #define SANITIZER_INTERCEPT_MEMSET 1
! #define SANITIZER_INTERCEPT_MEMMOVE SI_NOT_AIX
! #define SANITIZER_INTERCEPT_MEMCPY SI_NOT_AIX
  #define SANITIZER_INTERCEPT_MEMCMP SI_NOT_FUCHSIA
  #define SANITIZER_INTERCEPT_BCMP \
    SANITIZER_INTERCEPT_MEMCMP &&  \
*************** SANITIZER_WEAK_IMPORT void *aligned_allo
*** 210,215 ****
--- 218,225 ----
  #define SANITIZER_INTERCEPT_PREAD64 (SI_GLIBC || SI_SOLARIS32)
  #define SANITIZER_INTERCEPT_PWRITE64 (SI_GLIBC || SI_SOLARIS32)
  
+ #define SANITIZER_INTERCEPT_LSEEK64 (SI_GLIBC || SI_SOLARIS32)
+ 
  #define SANITIZER_INTERCEPT_READV SI_POSIX
  #define SANITIZER_INTERCEPT_WRITEV SI_POSIX
  
*************** SANITIZER_WEAK_IMPORT void *aligned_allo
*** 229,244 ****
  #define SANITIZER_INTERCEPT_ISOC99_SCANF SI_GLIBC
  
  #ifndef SANITIZER_INTERCEPT_PRINTF
! #define SANITIZER_INTERCEPT_PRINTF SI_POSIX
! #define SANITIZER_INTERCEPT_PRINTF_L (SI_FREEBSD || SI_NETBSD)
! #define SANITIZER_INTERCEPT_ISOC99_PRINTF SI_GLIBC
  #endif
  
  #define SANITIZER_INTERCEPT___PRINTF_CHK \
    (SANITIZER_INTERCEPT_PRINTF && SI_GLIBC)
  
! #define SANITIZER_INTERCEPT_FREXP SI_NOT_FUCHSIA
! #define SANITIZER_INTERCEPT_FREXPF_FREXPL SI_POSIX
  
  #define SANITIZER_INTERCEPT_GETPWNAM_AND_FRIENDS SI_POSIX
  #define SANITIZER_INTERCEPT_GETPWNAM_R_AND_FRIENDS \
--- 239,260 ----
  #define SANITIZER_INTERCEPT_ISOC99_SCANF SI_GLIBC
  
  #ifndef SANITIZER_INTERCEPT_PRINTF
! #  define SANITIZER_INTERCEPT_ASPRINTF SI_NOT_AIX
! #  define SANITIZER_INTERCEPT_VASPRINTF SI_NOT_AIX
! #  define SANITIZER_INTERCEPT_PRINTF SI_POSIX
! #  define SANITIZER_INTERCEPT_PRINTF_L (SI_FREEBSD || SI_NETBSD)
! #  define SANITIZER_INTERCEPT_ISOC99_PRINTF SI_GLIBC
  #endif
  
+ #define SANITIZER_INTERCEPT_SETPROCTITLE (SI_FREEBSD || SI_NETBSD)
+ 
  #define SANITIZER_INTERCEPT___PRINTF_CHK \
    (SANITIZER_INTERCEPT_PRINTF && SI_GLIBC)
  
! // AIX libc does not export FREXP and FREXPF.
! #define SANITIZER_INTERCEPT_FREXP (SI_NOT_FUCHSIA && SI_NOT_AIX)
! #define SANITIZER_INTERCEPT_FREXPF (SI_POSIX && SI_NOT_AIX)
! #define SANITIZER_INTERCEPT_FREXPL SI_POSIX
  
  #define SANITIZER_INTERCEPT_GETPWNAM_AND_FRIENDS SI_POSIX
  #define SANITIZER_INTERCEPT_GETPWNAM_R_AND_FRIENDS \
*************** SANITIZER_WEAK_IMPORT void *aligned_allo
*** 256,263 ****
--- 272,283 ----
    (SI_FREEBSD || SI_NETBSD || SI_LINUX || SI_SOLARIS)
  #define SANITIZER_INTERCEPT_CLOCK_GETCPUCLOCKID \
    (SI_LINUX || SI_FREEBSD || SI_NETBSD)
+ // TODO: This should be SI_POSIX, adding glibc first until I have time
+ // to verify all timer_t typedefs on other platforms.
+ #define SANITIZER_INTERCEPT_TIMER_CREATE SI_GLIBC
  #define SANITIZER_INTERCEPT_GETITIMER SI_POSIX
  #define SANITIZER_INTERCEPT_TIME SI_POSIX
+ #define SANITIZER_INTERCEPT_TIMESPEC_GET SI_LINUX
  #define SANITIZER_INTERCEPT_GLOB (SI_GLIBC || SI_SOLARIS)
  #define SANITIZER_INTERCEPT_GLOB64 SI_GLIBC
  #define SANITIZER_INTERCEPT___B64_TO SI_LINUX_NOT_ANDROID
*************** SANITIZER_WEAK_IMPORT void *aligned_allo
*** 283,289 ****
  #define SANITIZER_INTERCEPT_ACCEPT4 \
    (SI_LINUX_NOT_ANDROID || SI_NETBSD || SI_FREEBSD)
  #define SANITIZER_INTERCEPT_PACCEPT SI_NETBSD
! #define SANITIZER_INTERCEPT_MODF SI_POSIX
  #define SANITIZER_INTERCEPT_RECVMSG SI_POSIX
  #define SANITIZER_INTERCEPT_SENDMSG SI_POSIX
  #define SANITIZER_INTERCEPT_RECVMMSG SI_LINUX
--- 303,309 ----
  #define SANITIZER_INTERCEPT_ACCEPT4 \
    (SI_LINUX_NOT_ANDROID || SI_NETBSD || SI_FREEBSD)
  #define SANITIZER_INTERCEPT_PACCEPT SI_NETBSD
! #define SANITIZER_INTERCEPT_MODF (SI_POSIX && SI_NOT_AIX)
  #define SANITIZER_INTERCEPT_RECVMSG SI_POSIX
  #define SANITIZER_INTERCEPT_SENDMSG SI_POSIX
  #define SANITIZER_INTERCEPT_RECVMMSG SI_LINUX
*************** SANITIZER_WEAK_IMPORT void *aligned_allo
*** 318,325 ****
  #define SANITIZER_INTERCEPT___WCSXFRM_L SI_LINUX
  #define SANITIZER_INTERCEPT_WCSNRTOMBS \
    (SI_FREEBSD || SI_NETBSD || SI_MAC || SI_LINUX_NOT_ANDROID || SI_SOLARIS)
! #define SANITIZER_INTERCEPT_WCRTOMB \
!   (SI_FREEBSD || SI_NETBSD || SI_MAC || SI_LINUX_NOT_ANDROID || SI_SOLARIS)
  #define SANITIZER_INTERCEPT_WCTOMB \
    (SI_FREEBSD || SI_NETBSD || SI_MAC || SI_LINUX_NOT_ANDROID || SI_SOLARIS)
  #define SANITIZER_INTERCEPT_TCGETATTR SI_LINUX_NOT_ANDROID || SI_SOLARIS
--- 338,346 ----
  #define SANITIZER_INTERCEPT___WCSXFRM_L SI_LINUX
  #define SANITIZER_INTERCEPT_WCSNRTOMBS \
    (SI_FREEBSD || SI_NETBSD || SI_MAC || SI_LINUX_NOT_ANDROID || SI_SOLARIS)
! #define SANITIZER_INTERCEPT_WCRTOMB                                           \
!   (SI_FREEBSD || SI_NETBSD || SI_MAC || SI_LINUX_NOT_ANDROID || SI_SOLARIS || \
!    !SI_NOT_AIX)
  #define SANITIZER_INTERCEPT_WCTOMB \
    (SI_FREEBSD || SI_NETBSD || SI_MAC || SI_LINUX_NOT_ANDROID || SI_SOLARIS)
  #define SANITIZER_INTERCEPT_TCGETATTR SI_LINUX_NOT_ANDROID || SI_SOLARIS
*************** SANITIZER_WEAK_IMPORT void *aligned_allo
*** 339,344 ****
--- 360,367 ----
  #define SANITIZER_INTERCEPT_GETGROUPS SI_POSIX
  #define SANITIZER_INTERCEPT_POLL SI_POSIX
  #define SANITIZER_INTERCEPT_PPOLL SI_LINUX_NOT_ANDROID || SI_SOLARIS
+ #define SANITIZER_INTERCEPT_EPOLL (SI_LINUX)
+ #define SANITIZER_INTERCEPT_KQUEUE (SI_FREEBSD || SI_NETBSD || SI_MAC)
  #define SANITIZER_INTERCEPT_WORDEXP                                          \
    (SI_FREEBSD || SI_NETBSD || (SI_MAC && !SI_IOS) || SI_LINUX_NOT_ANDROID || \
     SI_SOLARIS)
*************** SANITIZER_WEAK_IMPORT void *aligned_allo
*** 357,363 ****
  #define SANITIZER_INTERCEPT_GETMNTENT_R SI_LINUX_NOT_ANDROID
  #define SANITIZER_INTERCEPT_STATFS \
    (SI_FREEBSD || SI_MAC || SI_LINUX_NOT_ANDROID || SI_SOLARIS)
! #define SANITIZER_INTERCEPT_STATFS64 SI_GLIBC && SANITIZER_HAS_STATFS64
  #define SANITIZER_INTERCEPT_STATVFS \
    (SI_FREEBSD || SI_NETBSD || SI_LINUX_NOT_ANDROID)
  #define SANITIZER_INTERCEPT_STATVFS64 SI_GLIBC
--- 380,387 ----
  #define SANITIZER_INTERCEPT_GETMNTENT_R SI_LINUX_NOT_ANDROID
  #define SANITIZER_INTERCEPT_STATFS \
    (SI_FREEBSD || SI_MAC || SI_LINUX_NOT_ANDROID || SI_SOLARIS)
! #define SANITIZER_INTERCEPT_STATFS64 \
!   ((SI_GLIBC || !SI_NOT_AIX) && SANITIZER_HAS_STATFS64)
  #define SANITIZER_INTERCEPT_STATVFS \
    (SI_FREEBSD || SI_NETBSD || SI_LINUX_NOT_ANDROID)
  #define SANITIZER_INTERCEPT_STATVFS64 SI_GLIBC
*************** SANITIZER_WEAK_IMPORT void *aligned_allo
*** 406,415 ****
  #define SANITIZER_INTERCEPT_TTYNAME_R SI_POSIX
  #define SANITIZER_INTERCEPT_TEMPNAM SI_POSIX
  #define SANITIZER_INTERCEPT_SINCOS SI_LINUX || SI_SOLARIS
! #define SANITIZER_INTERCEPT_REMQUO SI_POSIX
! #define SANITIZER_INTERCEPT_REMQUOL (SI_POSIX && !SI_NETBSD)
! #define SANITIZER_INTERCEPT_LGAMMA SI_POSIX
! #define SANITIZER_INTERCEPT_LGAMMAL (SI_POSIX && !SI_NETBSD)
  #define SANITIZER_INTERCEPT_LGAMMA_R (SI_FREEBSD || SI_LINUX || SI_SOLARIS)
  #define SANITIZER_INTERCEPT_LGAMMAL_R SI_LINUX_NOT_ANDROID || SI_SOLARIS
  #define SANITIZER_INTERCEPT_DRAND48_R SI_GLIBC
--- 430,439 ----
  #define SANITIZER_INTERCEPT_TTYNAME_R SI_POSIX
  #define SANITIZER_INTERCEPT_TEMPNAM SI_POSIX
  #define SANITIZER_INTERCEPT_SINCOS SI_LINUX || SI_SOLARIS
! #define SANITIZER_INTERCEPT_REMQUO (SI_POSIX && SI_NOT_AIX)
! #define SANITIZER_INTERCEPT_REMQUOL (SI_POSIX && !SI_NETBSD && SI_NOT_AIX)
! #define SANITIZER_INTERCEPT_LGAMMA (SI_POSIX && SI_NOT_AIX)
! #define SANITIZER_INTERCEPT_LGAMMAL (SI_POSIX && !SI_NETBSD && SI_NOT_AIX)
  #define SANITIZER_INTERCEPT_LGAMMA_R (SI_FREEBSD || SI_LINUX || SI_SOLARIS)
  #define SANITIZER_INTERCEPT_LGAMMAL_R SI_LINUX_NOT_ANDROID || SI_SOLARIS
  #define SANITIZER_INTERCEPT_DRAND48_R SI_GLIBC
*************** SANITIZER_WEAK_IMPORT void *aligned_allo
*** 492,502 ****
  #define SANITIZER_INTERCEPT_EVENTFD_READ_WRITE (SI_LINUX || SI_FREEBSD)
  
  #define SI_STAT_LINUX (SI_LINUX && __GLIBC_PREREQ(2, 33))
! #define SANITIZER_INTERCEPT_STAT                                        \
!   (SI_FREEBSD || SI_MAC || SI_ANDROID || SI_NETBSD || SI_SOLARIS ||     \
!    SI_STAT_LINUX)
! #define SANITIZER_INTERCEPT_STAT64 SI_STAT_LINUX && SANITIZER_HAS_STAT64
! #define SANITIZER_INTERCEPT_LSTAT (SI_NETBSD || SI_FREEBSD || SI_STAT_LINUX)
  #define SANITIZER_INTERCEPT___XSTAT \
    ((!SANITIZER_INTERCEPT_STAT && SI_POSIX) || SI_STAT_LINUX)
  #define SANITIZER_INTERCEPT___XSTAT64 SI_GLIBC
--- 516,528 ----
  #define SANITIZER_INTERCEPT_EVENTFD_READ_WRITE (SI_LINUX || SI_FREEBSD)
  
  #define SI_STAT_LINUX (SI_LINUX && __GLIBC_PREREQ(2, 33))
! #define SANITIZER_INTERCEPT_STAT                                    \
!   (SI_FREEBSD || SI_MAC || SI_ANDROID || SI_NETBSD || SI_SOLARIS || \
!    SI_STAT_LINUX || !SI_NOT_AIX)
! #define SANITIZER_INTERCEPT_STAT64 \
!   ((SI_STAT_LINUX || !SI_NOT_AIX) && SANITIZER_HAS_STAT64)
! #define SANITIZER_INTERCEPT_LSTAT \
!   (SI_NETBSD || SI_FREEBSD || SI_STAT_LINUX || !SI_NOT_AIX)
  #define SANITIZER_INTERCEPT___XSTAT \
    ((!SANITIZER_INTERCEPT_STAT && SI_POSIX) || SI_STAT_LINUX)
  #define SANITIZER_INTERCEPT___XSTAT64 SI_GLIBC
*************** SANITIZER_WEAK_IMPORT void *aligned_allo
*** 513,519 ****
  
  #define SANITIZER_INTERCEPT_MMAP SI_POSIX
  #define SANITIZER_INTERCEPT_MMAP64 SI_GLIBC || SI_SOLARIS
! #define SANITIZER_INTERCEPT_MALLOPT_AND_MALLINFO (SI_GLIBC || SI_ANDROID)
  #define SANITIZER_INTERCEPT_MEMALIGN (!SI_FREEBSD && !SI_MAC && !SI_NETBSD)
  #define SANITIZER_INTERCEPT___LIBC_MEMALIGN SI_GLIBC
  #define SANITIZER_INTERCEPT_PVALLOC (SI_GLIBC || SI_ANDROID)
--- 539,546 ----
  
  #define SANITIZER_INTERCEPT_MMAP SI_POSIX
  #define SANITIZER_INTERCEPT_MMAP64 SI_GLIBC || SI_SOLARIS
! #define SANITIZER_INTERCEPT_MALLOPT_AND_MALLINFO \
!   (SI_GLIBC || SI_ANDROID || SI_FUCHSIA)
  #define SANITIZER_INTERCEPT_MEMALIGN (!SI_FREEBSD && !SI_MAC && !SI_NETBSD)
  #define SANITIZER_INTERCEPT___LIBC_MEMALIGN SI_GLIBC
  #define SANITIZER_INTERCEPT_PVALLOC (SI_GLIBC || SI_ANDROID)
*************** SANITIZER_WEAK_IMPORT void *aligned_allo
*** 524,530 ****
  #define SANITIZER_INTERCEPT_MALLOC_USABLE_SIZE (!SI_MAC && !SI_NETBSD)
  #define SANITIZER_INTERCEPT_MCHECK_MPROBE SI_LINUX_NOT_ANDROID
  #define SANITIZER_INTERCEPT_WCSLEN 1
! #define SANITIZER_INTERCEPT_WCSCAT SI_POSIX
  #define SANITIZER_INTERCEPT_WCSDUP SI_POSIX
  #define SANITIZER_INTERCEPT_SIGNAL_AND_SIGACTION (!SI_WINDOWS && SI_NOT_FUCHSIA)
  #define SANITIZER_INTERCEPT_BSD_SIGNAL SI_ANDROID
--- 551,558 ----
  #define SANITIZER_INTERCEPT_MALLOC_USABLE_SIZE (!SI_MAC && !SI_NETBSD)
  #define SANITIZER_INTERCEPT_MCHECK_MPROBE SI_LINUX_NOT_ANDROID
  #define SANITIZER_INTERCEPT_WCSLEN 1
! #define SANITIZER_INTERCEPT_WCSNLEN 1
! #define SANITIZER_INTERCEPT_WCSCAT (SI_POSIX || SI_WINDOWS)
  #define SANITIZER_INTERCEPT_WCSDUP SI_POSIX
  #define SANITIZER_INTERCEPT_SIGNAL_AND_SIGACTION (!SI_WINDOWS && SI_NOT_FUCHSIA)
  #define SANITIZER_INTERCEPT_BSD_SIGNAL SI_ANDROID
*************** SANITIZER_WEAK_IMPORT void *aligned_allo
*** 564,570 ****
  #define SANITIZER_INTERCEPT_PROTOENT_R SI_GLIBC
  #define SANITIZER_INTERCEPT_NETENT (SI_LINUX || SI_NETBSD || SI_FREEBSD)
  #define SANITIZER_INTERCEPT_SETVBUF \
!   (SI_NETBSD || SI_FREEBSD || SI_LINUX || SI_MAC)
  #define SANITIZER_INTERCEPT_GETMNTINFO (SI_NETBSD || SI_FREEBSD || SI_MAC)
  #define SANITIZER_INTERCEPT_MI_VECTOR_HASH SI_NETBSD
  #define SANITIZER_INTERCEPT_GETVFSSTAT SI_NETBSD
--- 592,598 ----
  #define SANITIZER_INTERCEPT_PROTOENT_R SI_GLIBC
  #define SANITIZER_INTERCEPT_NETENT (SI_LINUX || SI_NETBSD || SI_FREEBSD)
  #define SANITIZER_INTERCEPT_SETVBUF \
!   (SI_NETBSD || SI_FREEBSD || SI_LINUX || SI_MAC || !SI_NOT_AIX)
  #define SANITIZER_INTERCEPT_GETMNTINFO (SI_NETBSD || SI_FREEBSD || SI_MAC)
  #define SANITIZER_INTERCEPT_MI_VECTOR_HASH SI_NETBSD
  #define SANITIZER_INTERCEPT_GETVFSSTAT SI_NETBSD
*************** SANITIZER_WEAK_IMPORT void *aligned_allo
*** 585,591 ****
  #define SANITIZER_INTERCEPT_SHA1 SI_NETBSD
  #define SANITIZER_INTERCEPT_MD4 SI_NETBSD
  #define SANITIZER_INTERCEPT_RMD160 SI_NETBSD
! #define SANITIZER_INTERCEPT_FSEEK (SI_NETBSD || SI_FREEBSD)
  #define SANITIZER_INTERCEPT_MD2 SI_NETBSD
  #define SANITIZER_INTERCEPT_CDB SI_NETBSD
  #define SANITIZER_INTERCEPT_VIS (SI_NETBSD || SI_FREEBSD)
--- 613,619 ----
  #define SANITIZER_INTERCEPT_SHA1 SI_NETBSD
  #define SANITIZER_INTERCEPT_MD4 SI_NETBSD
  #define SANITIZER_INTERCEPT_RMD160 SI_NETBSD
! #define SANITIZER_INTERCEPT_FSEEK SI_POSIX
  #define SANITIZER_INTERCEPT_MD2 SI_NETBSD
  #define SANITIZER_INTERCEPT_CDB SI_NETBSD
  #define SANITIZER_INTERCEPT_VIS (SI_NETBSD || SI_FREEBSD)
*************** SANITIZER_WEAK_IMPORT void *aligned_allo
*** 632,637 ****
--- 660,680 ----
  #  define SI_MAC_OS_DEPLOYMENT_MIN_13_00 0
  #endif
  #define SANITIZER_INTERCEPT_FREADLINK (SI_MAC && SI_MAC_OS_DEPLOYMENT_MIN_13_00)
+ #define SANITIZER_INTERCEPT_GETSERVENT_R SI_GLIBC
+ #define SANITIZER_INTERCEPT_GETSERVBYNAME_R SI_GLIBC
+ #define SANITIZER_INTERCEPT_GETSERVBYPORT_R SI_GLIBC
+ 
+ // Until free_sized and free_aligned_sized are more generally available,
+ // we can only unconditionally intercept on ELF-based platforms where it
+ // is okay to have undefined weak symbols.
+ #ifdef __ELF__
+ #  define SANITIZER_INTERCEPT_FREE_SIZED 1
+ #  define SANITIZER_INTERCEPT_FREE_ALIGNED_SIZED 1
+ #else
+ #  define SANITIZER_INTERCEPT_FREE_SIZED 0
+ #  define SANITIZER_INTERCEPT_FREE_ALIGNED_SIZED 0
+ #endif
+ 
  // This macro gives a way for downstream users to override the above
  // interceptor macros irrespective of the platform they are on. They have
  // to do two things:
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_platform_limits_freebsd.cpp gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_platform_limits_freebsd.cpp
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_platform_limits_freebsd.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_platform_limits_freebsd.cpp	Sun Dec  7 22:32:18 2025
***************
*** 29,34 ****
--- 29,35 ----
  #include <sys/mtio.h>
  #include <sys/ptrace.h>
  #include <sys/resource.h>
+ #include <sys/shm.h>
  #include <sys/signal.h>
  #include <sys/socket.h>
  #include <sys/sockio.h>
***************
*** 70,83 ****
  #include <semaphore.h>
  #include <signal.h>
  #include <stddef.h>
- #include <md5.h>
- #include <sha224.h>
- #include <sha256.h>
- #include <sha384.h>
- #include <sha512.h>
  #include <stdio.h>
  #include <stringlist.h>
- #include <term.h>
  #include <termios.h>
  #include <time.h>
  #include <ttyent.h>
--- 71,78 ----
***************
*** 87,96 ****
  #include <wchar.h>
  #include <wordexp.h>
  
- #define _KERNEL  // to declare 'shminfo' structure
- #include <sys/shm.h>
- #undef _KERNEL
- 
  #undef IOC_DIRMASK
  
  // Include these after system headers to avoid name clashes and ambiguities.
--- 82,87 ----
*************** unsigned struct_timeb_sz = sizeof(struct
*** 141,148 ****
  unsigned struct_msqid_ds_sz = sizeof(struct msqid_ds);
  unsigned struct_mq_attr_sz = sizeof(struct mq_attr);
  unsigned struct_statvfs_sz = sizeof(struct statvfs);
- unsigned struct_shminfo_sz = sizeof(struct shminfo);
- unsigned struct_shm_info_sz = sizeof(struct shm_info);
  unsigned struct_regmatch_sz = sizeof(regmatch_t);
  unsigned struct_regex_sz = sizeof(regex_t);
  unsigned struct_fstab_sz = sizeof(struct fstab);
--- 132,137 ----
*************** const uptr sig_err = (uptr)SIG_ERR;
*** 156,164 ****
  const uptr sa_siginfo = (uptr)SA_SIGINFO;
  
  int shmctl_ipc_stat = (int)IPC_STAT;
- int shmctl_ipc_info = (int)IPC_INFO;
- int shmctl_shm_info = (int)SHM_INFO;
- int shmctl_shm_stat = (int)SHM_STAT;
  unsigned struct_utmpx_sz = sizeof(struct utmpx);
  
  int map_fixed = MAP_FIXED;
--- 145,150 ----
*************** const int si_SEGV_MAPERR = SEGV_MAPERR;
*** 378,399 ****
  const int si_SEGV_ACCERR = SEGV_ACCERR;
  const int unvis_valid = UNVIS_VALID;
  const int unvis_validpush = UNVIS_VALIDPUSH;
- 
- const unsigned MD5_CTX_sz = sizeof(MD5_CTX);
- const unsigned MD5_return_length = MD5_DIGEST_STRING_LENGTH;
- 
- #define SHA2_CONST(LEN)                                                      \
-   const unsigned SHA##LEN##_CTX_sz = sizeof(SHA##LEN##_CTX);                 \
-   const unsigned SHA##LEN##_return_length = SHA##LEN##_DIGEST_STRING_LENGTH; \
-   const unsigned SHA##LEN##_block_length = SHA##LEN##_BLOCK_LENGTH;          \
-   const unsigned SHA##LEN##_digest_length = SHA##LEN##_DIGEST_LENGTH
- 
- SHA2_CONST(224);
- SHA2_CONST(256);
- SHA2_CONST(384);
- SHA2_CONST(512);
- 
- #undef SHA2_CONST
  }  // namespace __sanitizer
  
  using namespace __sanitizer;
--- 364,369 ----
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_platform_limits_freebsd.h gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_platform_limits_freebsd.h
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_platform_limits_freebsd.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_platform_limits_freebsd.h	Sun Dec  7 22:32:18 2025
*************** struct __sanitizer_wordexp_t {
*** 419,430 ****
  
  typedef void __sanitizer_FILE;
  
- extern unsigned struct_shminfo_sz;
- extern unsigned struct_shm_info_sz;
  extern int shmctl_ipc_stat;
! extern int shmctl_ipc_info;
! extern int shmctl_shm_info;
! extern int shmctl_shm_stat;
  
  extern unsigned struct_utmpx_sz;
  
--- 419,432 ----
  
  typedef void __sanitizer_FILE;
  
  extern int shmctl_ipc_stat;
! 
! // This simplifies generic code
! #define struct_shminfo_sz -1
! #define struct_shm_info_sz -1
! #define shmctl_shm_stat -1
! #define shmctl_ipc_info -1
! #define shmctl_shm_info -1
  
  extern unsigned struct_utmpx_sz;
  
*************** extern unsigned IOCTL_KDSKBMODE;
*** 708,729 ****
  extern const int si_SEGV_MAPERR;
  extern const int si_SEGV_ACCERR;
  
- extern const unsigned MD5_CTX_sz;
- extern const unsigned MD5_return_length;
- 
- #define SHA2_EXTERN(LEN)                          \
-   extern const unsigned SHA##LEN##_CTX_sz;        \
-   extern const unsigned SHA##LEN##_return_length; \
-   extern const unsigned SHA##LEN##_block_length;  \
-   extern const unsigned SHA##LEN##_digest_length
- 
- SHA2_EXTERN(224);
- SHA2_EXTERN(256);
- SHA2_EXTERN(384);
- SHA2_EXTERN(512);
- 
- #undef SHA2_EXTERN
- 
  struct __sanitizer_cap_rights {
    u64 cr_rights[2];
  };
--- 710,715 ----
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_platform_limits_netbsd.cpp gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_platform_limits_netbsd.cpp
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_platform_limits_netbsd.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_platform_limits_netbsd.cpp	Sun Dec  7 22:32:18 2025
*************** struct urio_command {
*** 498,504 ****
  #include <md5.h>
  #include <rmd160.h>
  #include <soundcard.h>
- #include <term.h>
  #include <termios.h>
  #include <time.h>
  #include <ttyent.h>
--- 498,503 ----
*************** struct urio_command {
*** 515,521 ****
  #include <stringlist.h>
  
  #if defined(__x86_64__)
! #include <nvmm.h>
  #endif
  // clang-format on
  
--- 514,520 ----
  #include <stringlist.h>
  
  #if defined(__x86_64__)
! #include <dev/nvmm/nvmm_ioctl.h>
  #endif
  // clang-format on
  
*************** unsigned pid_t_sz = sizeof(pid_t);
*** 547,552 ****
--- 546,552 ----
  unsigned timeval_sz = sizeof(timeval);
  unsigned uid_t_sz = sizeof(uid_t);
  unsigned gid_t_sz = sizeof(gid_t);
+ unsigned fpos_t_sz = sizeof(fpos_t);
  unsigned mbstate_t_sz = sizeof(mbstate_t);
  unsigned sigset_t_sz = sizeof(sigset_t);
  unsigned struct_timezone_sz = sizeof(struct timezone);
*************** const unsigned RMD160_return_length = RM
*** 2487,2494 ****
  const unsigned MD5_CTX_sz = sizeof(MD5_CTX);
  const unsigned MD5_return_length = MD5_DIGEST_STRING_LENGTH;
  
- const unsigned fpos_t_sz = sizeof(fpos_t);
- 
  const unsigned MD2_CTX_sz = sizeof(MD2_CTX);
  const unsigned MD2_return_length = MD2_DIGEST_STRING_LENGTH;
  
--- 2487,2492 ----
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_platform_limits_netbsd.h gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_platform_limits_netbsd.h
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_platform_limits_netbsd.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_platform_limits_netbsd.h	Sun Dec  7 22:32:18 2025
*************** extern unsigned pid_t_sz;
*** 36,41 ****
--- 36,42 ----
  extern unsigned timeval_sz;
  extern unsigned uid_t_sz;
  extern unsigned gid_t_sz;
+ extern unsigned fpos_t_sz;
  extern unsigned mbstate_t_sz;
  extern unsigned struct_timezone_sz;
  extern unsigned struct_tms_sz;
*************** extern const unsigned RMD160_return_leng
*** 2335,2342 ****
  extern const unsigned MD5_CTX_sz;
  extern const unsigned MD5_return_length;
  
- extern const unsigned fpos_t_sz;
- 
  extern const unsigned MD2_CTX_sz;
  extern const unsigned MD2_return_length;
  
--- 2336,2341 ----
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp	Sun Dec  7 22:32:18 2025
***************
*** 24,30 ****
  // Must go after undef _FILE_OFFSET_BITS.
  #include "sanitizer_platform.h"
  
! #if SANITIZER_LINUX || SANITIZER_APPLE
  // Must go after undef _FILE_OFFSET_BITS.
  #include "sanitizer_glibc_version.h"
  
--- 24,30 ----
  // Must go after undef _FILE_OFFSET_BITS.
  #include "sanitizer_platform.h"
  
! #if SANITIZER_LINUX || SANITIZER_APPLE || SANITIZER_HAIKU
  // Must go after undef _FILE_OFFSET_BITS.
  #include "sanitizer_glibc_version.h"
  
***************
*** 52,58 ****
  #include <time.h>
  #include <wchar.h>
  #include <regex.h>
! #if !SANITIZER_APPLE
  #include <utmp.h>
  #endif
  
--- 52,58 ----
  #include <time.h>
  #include <wchar.h>
  #include <regex.h>
! #if !SANITIZER_APPLE && !SANITIZER_HAIKU
  #include <utmp.h>
  #endif
  
***************
*** 61,67 ****
--- 61,69 ----
  #endif
  
  #if !SANITIZER_ANDROID
+ #if !SANITIZER_HAIKU
  #include <sys/mount.h>
+ #endif
  #include <sys/timeb.h>
  #include <utmpx.h>
  #endif
*************** typedef struct user_fpregs elf_fpregset_
*** 111,119 ****
--- 113,123 ----
  
  #if !SANITIZER_ANDROID
  #include <ifaddrs.h>
+ #if !SANITIZER_HAIKU
  #include <sys/ucontext.h>
  #include <wordexp.h>
  #endif
+ #endif
  
  #if SANITIZER_LINUX
  #if SANITIZER_GLIBC
*************** typedef struct user_fpregs elf_fpregset_
*** 163,169 ****
  #include <sys/vfs.h>
  #include <sys/epoll.h>
  #include <linux/capability.h>
! #else
  #include <fstab.h>
  #endif // SANITIZER_LINUX
  
--- 167,173 ----
  #include <sys/vfs.h>
  #include <sys/epoll.h>
  #include <linux/capability.h>
! #elif !SANITIZER_HAIKU
  #include <fstab.h>
  #endif // SANITIZER_LINUX
  
*************** typedef struct user_fpregs elf_fpregset_
*** 173,178 ****
--- 177,187 ----
  #include <sys/sockio.h>
  #endif
  
+ #if SANITIZER_HAIKU
+ #include <sys/sockio.h>
+ #include <sys/ioctl.h>
+ #endif
+ 
  // Include these after system headers to avoid name clashes and ambiguities.
  #  include "sanitizer_common.h"
  #  include "sanitizer_internal_defs.h"
*************** namespace __sanitizer {
*** 217,223 ****
    unsigned struct_fstab_sz = sizeof(struct fstab);
  #endif  // SANITIZER_GLIBC || SANITIZER_FREEBSD || SANITIZER_NETBSD ||
          // SANITIZER_APPLE
! #if !SANITIZER_ANDROID
    unsigned struct_statfs_sz = sizeof(struct statfs);
    unsigned struct_sockaddr_sz = sizeof(struct sockaddr);
  
--- 226,232 ----
    unsigned struct_fstab_sz = sizeof(struct fstab);
  #endif  // SANITIZER_GLIBC || SANITIZER_FREEBSD || SANITIZER_NETBSD ||
          // SANITIZER_APPLE
! #if !SANITIZER_ANDROID && !SANITIZER_HAIKU
    unsigned struct_statfs_sz = sizeof(struct statfs);
    unsigned struct_sockaddr_sz = sizeof(struct sockaddr);
  
*************** namespace __sanitizer {
*** 324,330 ****
    int shmctl_shm_stat = (int)SHM_STAT;
  #endif
  
! #if !SANITIZER_APPLE && !SANITIZER_FREEBSD
    unsigned struct_utmp_sz = sizeof(struct utmp);
  #endif
  #if !SANITIZER_ANDROID
--- 333,339 ----
    int shmctl_shm_stat = (int)SHM_STAT;
  #endif
  
! #if !SANITIZER_APPLE && !SANITIZER_FREEBSD && !SANITIZER_HAIKU
    unsigned struct_utmp_sz = sizeof(struct utmp);
  #endif
  #if !SANITIZER_ANDROID
*************** unsigned struct_ElfW_Phdr_sz = sizeof(El
*** 356,364 ****
    int glob_altdirfunc = GLOB_ALTDIRFUNC;
  #endif
  
! #  if !SANITIZER_ANDROID
    const int wordexp_wrde_dooffs = WRDE_DOOFFS;
! #  endif  // !SANITIZER_ANDROID
  
  #  if SANITIZER_LINUX && !SANITIZER_ANDROID &&                               \
        (defined(__i386) || defined(__x86_64) || defined(__mips64) ||          \
--- 365,373 ----
    int glob_altdirfunc = GLOB_ALTDIRFUNC;
  #endif
  
! #  if !SANITIZER_ANDROID && !SANITIZER_HAIKU
    const int wordexp_wrde_dooffs = WRDE_DOOFFS;
! #  endif  // !SANITIZER_ANDROID && !SANITIZER_HAIKU
  
  #  if SANITIZER_LINUX && !SANITIZER_ANDROID &&                               \
        (defined(__i386) || defined(__x86_64) || defined(__mips64) ||          \
*************** unsigned struct_ElfW_Phdr_sz = sizeof(El
*** 537,557 ****
    unsigned struct_sock_fprog_sz = sizeof(struct sock_fprog);
  #  endif  // SANITIZER_GLIBC
  
! #  if !SANITIZER_ANDROID && !SANITIZER_APPLE
    unsigned struct_sioc_sg_req_sz = sizeof(struct sioc_sg_req);
    unsigned struct_sioc_vif_req_sz = sizeof(struct sioc_vif_req);
  #endif
  
    const unsigned long __sanitizer_bufsiz = BUFSIZ;
  
    const unsigned IOCTL_NOT_PRESENT = 0;
  
    unsigned IOCTL_FIOASYNC = FIOASYNC;
    unsigned IOCTL_FIOCLEX = FIOCLEX;
    unsigned IOCTL_FIOGETOWN = FIOGETOWN;
-   unsigned IOCTL_FIONBIO = FIONBIO;
    unsigned IOCTL_FIONCLEX = FIONCLEX;
    unsigned IOCTL_FIOSETOWN = FIOSETOWN;
    unsigned IOCTL_SIOCADDMULTI = SIOCADDMULTI;
    unsigned IOCTL_SIOCATMARK = SIOCATMARK;
    unsigned IOCTL_SIOCDELMULTI = SIOCDELMULTI;
--- 546,570 ----
    unsigned struct_sock_fprog_sz = sizeof(struct sock_fprog);
  #  endif  // SANITIZER_GLIBC
  
! #  if !SANITIZER_ANDROID && !SANITIZER_APPLE && !SANITIZER_HAIKU
    unsigned struct_sioc_sg_req_sz = sizeof(struct sioc_sg_req);
    unsigned struct_sioc_vif_req_sz = sizeof(struct sioc_vif_req);
  #endif
  
+   unsigned fpos_t_sz = sizeof(fpos_t);
+ 
    const unsigned long __sanitizer_bufsiz = BUFSIZ;
  
    const unsigned IOCTL_NOT_PRESENT = 0;
  
+   unsigned IOCTL_FIONBIO = FIONBIO;
+ #if !SANITIZER_HAIKU
    unsigned IOCTL_FIOASYNC = FIOASYNC;
    unsigned IOCTL_FIOCLEX = FIOCLEX;
    unsigned IOCTL_FIOGETOWN = FIOGETOWN;
    unsigned IOCTL_FIONCLEX = FIONCLEX;
    unsigned IOCTL_FIOSETOWN = FIOSETOWN;
+ #endif
    unsigned IOCTL_SIOCADDMULTI = SIOCADDMULTI;
    unsigned IOCTL_SIOCATMARK = SIOCATMARK;
    unsigned IOCTL_SIOCDELMULTI = SIOCDELMULTI;
*************** unsigned struct_ElfW_Phdr_sz = sizeof(El
*** 572,594 ****
    unsigned IOCTL_SIOCSIFMTU = SIOCSIFMTU;
    unsigned IOCTL_SIOCSIFNETMASK = SIOCSIFNETMASK;
    unsigned IOCTL_SIOCSPGRP = SIOCSPGRP;
    unsigned IOCTL_TIOCCONS = TIOCCONS;
-   unsigned IOCTL_TIOCEXCL = TIOCEXCL;
    unsigned IOCTL_TIOCGETD = TIOCGETD;
    unsigned IOCTL_TIOCGPGRP = TIOCGPGRP;
    unsigned IOCTL_TIOCGWINSZ = TIOCGWINSZ;
    unsigned IOCTL_TIOCMBIC = TIOCMBIC;
    unsigned IOCTL_TIOCMBIS = TIOCMBIS;
    unsigned IOCTL_TIOCMGET = TIOCMGET;
    unsigned IOCTL_TIOCMSET = TIOCMSET;
-   unsigned IOCTL_TIOCNOTTY = TIOCNOTTY;
    unsigned IOCTL_TIOCNXCL = TIOCNXCL;
    unsigned IOCTL_TIOCOUTQ = TIOCOUTQ;
-   unsigned IOCTL_TIOCPKT = TIOCPKT;
    unsigned IOCTL_TIOCSCTTY = TIOCSCTTY;
-   unsigned IOCTL_TIOCSETD = TIOCSETD;
    unsigned IOCTL_TIOCSPGRP = TIOCSPGRP;
-   unsigned IOCTL_TIOCSTI = TIOCSTI;
    unsigned IOCTL_TIOCSWINSZ = TIOCSWINSZ;
  #if SANITIZER_LINUX && !SANITIZER_ANDROID
    unsigned IOCTL_SIOCGETSGCNT = SIOCGETSGCNT;
--- 585,611 ----
    unsigned IOCTL_SIOCSIFMTU = SIOCSIFMTU;
    unsigned IOCTL_SIOCSIFNETMASK = SIOCSIFNETMASK;
    unsigned IOCTL_SIOCSPGRP = SIOCSPGRP;
+ 
+ #if !SANITIZER_HAIKU
    unsigned IOCTL_TIOCCONS = TIOCCONS;
    unsigned IOCTL_TIOCGETD = TIOCGETD;
+   unsigned IOCTL_TIOCNOTTY = TIOCNOTTY;
+   unsigned IOCTL_TIOCPKT = TIOCPKT;
+   unsigned IOCTL_TIOCSETD = TIOCSETD;
+   unsigned IOCTL_TIOCSTI = TIOCSTI;
+ #endif
+ 
+   unsigned IOCTL_TIOCEXCL = TIOCEXCL;
    unsigned IOCTL_TIOCGPGRP = TIOCGPGRP;
    unsigned IOCTL_TIOCGWINSZ = TIOCGWINSZ;
    unsigned IOCTL_TIOCMBIC = TIOCMBIC;
    unsigned IOCTL_TIOCMBIS = TIOCMBIS;
    unsigned IOCTL_TIOCMGET = TIOCMGET;
    unsigned IOCTL_TIOCMSET = TIOCMSET;
    unsigned IOCTL_TIOCNXCL = TIOCNXCL;
    unsigned IOCTL_TIOCOUTQ = TIOCOUTQ;
    unsigned IOCTL_TIOCSCTTY = TIOCSCTTY;
    unsigned IOCTL_TIOCSPGRP = TIOCSPGRP;
    unsigned IOCTL_TIOCSWINSZ = TIOCSWINSZ;
  #if SANITIZER_LINUX && !SANITIZER_ANDROID
    unsigned IOCTL_SIOCGETSGCNT = SIOCGETSGCNT;
*************** unsigned struct_ElfW_Phdr_sz = sizeof(El
*** 762,773 ****
--- 779,794 ----
    unsigned IOCTL_SOUND_PCM_WRITE_FILTER = SOUND_PCM_WRITE_FILTER;
  #endif // SOUND_VERSION
    unsigned IOCTL_TCFLSH = TCFLSH;
+ #    if SANITIZER_TERMIOS_IOCTL_CONSTANTS
    unsigned IOCTL_TCGETS = TCGETS;
+ #    endif
    unsigned IOCTL_TCSBRK = TCSBRK;
    unsigned IOCTL_TCSBRKP = TCSBRKP;
+ #    if SANITIZER_TERMIOS_IOCTL_CONSTANTS
    unsigned IOCTL_TCSETS = TCSETS;
    unsigned IOCTL_TCSETSF = TCSETSF;
    unsigned IOCTL_TCSETSW = TCSETSW;
+ #    endif
    unsigned IOCTL_TCXONC = TCXONC;
    unsigned IOCTL_TIOCGLCKTRMIOS = TIOCGLCKTRMIOS;
    unsigned IOCTL_TIOCGSOFTCAR = TIOCGSOFTCAR;
*************** CHECK_SIZE_AND_OFFSET(cmsghdr, cmsg_len)
*** 1084,1090 ****
  CHECK_SIZE_AND_OFFSET(cmsghdr, cmsg_level);
  CHECK_SIZE_AND_OFFSET(cmsghdr, cmsg_type);
  
! #if SANITIZER_LINUX && (__ANDROID_API__ >= 21 || __GLIBC_PREREQ (2, 14))
  CHECK_TYPE_SIZE(mmsghdr);
  CHECK_SIZE_AND_OFFSET(mmsghdr, msg_hdr);
  CHECK_SIZE_AND_OFFSET(mmsghdr, msg_len);
--- 1105,1111 ----
  CHECK_SIZE_AND_OFFSET(cmsghdr, cmsg_level);
  CHECK_SIZE_AND_OFFSET(cmsghdr, cmsg_type);
  
! #  if SANITIZER_LINUX && (SANITIZER_ANDROID || __GLIBC_PREREQ(2, 14))
  CHECK_TYPE_SIZE(mmsghdr);
  CHECK_SIZE_AND_OFFSET(mmsghdr, msg_hdr);
  CHECK_SIZE_AND_OFFSET(mmsghdr, msg_len);
*************** COMPILER_CHECK(sizeof(__sanitizer_dirent
*** 1094,1100 ****
  CHECK_SIZE_AND_OFFSET(dirent, d_ino);
  #if SANITIZER_APPLE
  CHECK_SIZE_AND_OFFSET(dirent, d_seekoff);
! #elif SANITIZER_FREEBSD
  // There is no 'd_off' field on FreeBSD.
  #else
  CHECK_SIZE_AND_OFFSET(dirent, d_off);
--- 1115,1121 ----
  CHECK_SIZE_AND_OFFSET(dirent, d_ino);
  #if SANITIZER_APPLE
  CHECK_SIZE_AND_OFFSET(dirent, d_seekoff);
! #elif SANITIZER_FREEBSD || SANITIZER_HAIKU
  // There is no 'd_off' field on FreeBSD.
  #else
  CHECK_SIZE_AND_OFFSET(dirent, d_off);
*************** CHECK_SIZE_AND_OFFSET(dirent64, d_reclen
*** 1110,1116 ****
--- 1131,1139 ----
  
  CHECK_TYPE_SIZE(ifconf);
  CHECK_SIZE_AND_OFFSET(ifconf, ifc_len);
+ #if !SANITIZER_HAIKU
  CHECK_SIZE_AND_OFFSET(ifconf, ifc_ifcu);
+ #endif
  
  CHECK_TYPE_SIZE(pollfd);
  CHECK_SIZE_AND_OFFSET(pollfd, fd);
*************** CHECK_TYPE_SIZE(__kernel_loff_t);
*** 1165,1171 ****
  CHECK_TYPE_SIZE(__kernel_fd_set);
  #endif
  
! #if !SANITIZER_ANDROID
  CHECK_TYPE_SIZE(wordexp_t);
  CHECK_SIZE_AND_OFFSET(wordexp_t, we_wordc);
  CHECK_SIZE_AND_OFFSET(wordexp_t, we_wordv);
--- 1188,1194 ----
  CHECK_TYPE_SIZE(__kernel_fd_set);
  #endif
  
! #if !SANITIZER_ANDROID && !SANITIZER_HAIKU
  CHECK_TYPE_SIZE(wordexp_t);
  CHECK_SIZE_AND_OFFSET(wordexp_t, we_wordc);
  CHECK_SIZE_AND_OFFSET(wordexp_t, we_wordv);
*************** CHECK_SIZE_AND_OFFSET(mntent, mnt_freq);
*** 1195,1201 ****
--- 1218,1226 ----
  CHECK_SIZE_AND_OFFSET(mntent, mnt_passno);
  #endif
  
+ #if !SANITIZER_HAIKU
  CHECK_TYPE_SIZE(ether_addr);
+ #endif
  
  #if SANITIZER_GLIBC || SANITIZER_FREEBSD
  CHECK_TYPE_SIZE(ipc_perm);
*************** CHECK_TYPE_SIZE(clock_t);
*** 1233,1239 ****
  CHECK_TYPE_SIZE(clockid_t);
  #endif
  
! #if !SANITIZER_ANDROID
  CHECK_TYPE_SIZE(ifaddrs);
  CHECK_SIZE_AND_OFFSET(ifaddrs, ifa_next);
  CHECK_SIZE_AND_OFFSET(ifaddrs, ifa_name);
--- 1258,1264 ----
  CHECK_TYPE_SIZE(clockid_t);
  #endif
  
! #if !SANITIZER_ANDROID && !SANITIZER_HAIKU
  CHECK_TYPE_SIZE(ifaddrs);
  CHECK_SIZE_AND_OFFSET(ifaddrs, ifa_next);
  CHECK_SIZE_AND_OFFSET(ifaddrs, ifa_name);
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h	Sun Dec  7 22:32:18 2025
***************
*** 14,52 ****
  #ifndef SANITIZER_PLATFORM_LIMITS_POSIX_H
  #define SANITIZER_PLATFORM_LIMITS_POSIX_H
  
! #if SANITIZER_LINUX || SANITIZER_APPLE
  
! #include "sanitizer_internal_defs.h"
! #include "sanitizer_platform.h"
! #include "sanitizer_mallinfo.h"
  
! #if SANITIZER_APPLE
! #include <sys/cdefs.h>
! #if !__DARWIN_ONLY_64_BIT_INO_T
! #define SANITIZER_HAS_STAT64 1
! #define SANITIZER_HAS_STATFS64 1
! #else
! #define SANITIZER_HAS_STAT64 0
! #define SANITIZER_HAS_STATFS64 0
! #endif
! #elif SANITIZER_GLIBC || SANITIZER_ANDROID
! #define SANITIZER_HAS_STAT64 1
! #define SANITIZER_HAS_STATFS64 1
! #endif
  
! #if defined(__sparc__)
  // FIXME: This can't be included from tsan which does not support sparc yet.
! #include "sanitizer_glibc_version.h"
! #endif
  
! # define GET_LINK_MAP_BY_DLOPEN_HANDLE(handle) ((link_map*)(handle))
  
  namespace __sanitizer {
  extern unsigned struct_utsname_sz;
  extern unsigned struct_stat_sz;
! #if SANITIZER_HAS_STAT64
  extern unsigned struct_stat64_sz;
! #endif
  extern unsigned struct_rusage_sz;
  extern unsigned siginfo_t_sz;
  extern unsigned struct_itimerval_sz;
--- 14,52 ----
  #ifndef SANITIZER_PLATFORM_LIMITS_POSIX_H
  #define SANITIZER_PLATFORM_LIMITS_POSIX_H
  
! #if SANITIZER_LINUX || SANITIZER_APPLE || SANITIZER_HAIKU
  
! #  include "sanitizer_internal_defs.h"
! #  include "sanitizer_mallinfo.h"
! #  include "sanitizer_platform.h"
  
! #  if SANITIZER_APPLE
! #    include <sys/cdefs.h>
! #    if !__DARWIN_ONLY_64_BIT_INO_T
! #      define SANITIZER_HAS_STAT64 1
! #      define SANITIZER_HAS_STATFS64 1
! #    else
! #      define SANITIZER_HAS_STAT64 0
! #      define SANITIZER_HAS_STATFS64 0
! #    endif
! #  elif SANITIZER_GLIBC || SANITIZER_ANDROID
! #    define SANITIZER_HAS_STAT64 1
! #    define SANITIZER_HAS_STATFS64 1
! #  endif
  
! #  if defined(__sparc__)
  // FIXME: This can't be included from tsan which does not support sparc yet.
! #    include "sanitizer_glibc_version.h"
! #  endif
  
! #  define GET_LINK_MAP_BY_DLOPEN_HANDLE(handle) ((link_map *)(handle))
  
  namespace __sanitizer {
  extern unsigned struct_utsname_sz;
  extern unsigned struct_stat_sz;
! #  if SANITIZER_HAS_STAT64
  extern unsigned struct_stat64_sz;
! #  endif
  extern unsigned struct_rusage_sz;
  extern unsigned siginfo_t_sz;
  extern unsigned struct_itimerval_sz;
*************** extern unsigned struct_itimerspec_sz;
*** 64,76 ****
  extern unsigned struct_sigevent_sz;
  extern unsigned struct_stack_t_sz;
  extern unsigned struct_sched_param_sz;
! #if SANITIZER_HAS_STATFS64
  extern unsigned struct_statfs64_sz;
! #endif
  extern unsigned struct_regex_sz;
  extern unsigned struct_regmatch_sz;
  
! #if !SANITIZER_ANDROID
  extern unsigned struct_fstab_sz;
  extern unsigned struct_statfs_sz;
  extern unsigned struct_sockaddr_sz;
--- 64,76 ----
  extern unsigned struct_sigevent_sz;
  extern unsigned struct_stack_t_sz;
  extern unsigned struct_sched_param_sz;
! #  if SANITIZER_HAS_STATFS64
  extern unsigned struct_statfs64_sz;
! #  endif
  extern unsigned struct_regex_sz;
  extern unsigned struct_regmatch_sz;
  
! #  if !SANITIZER_ANDROID
  extern unsigned struct_fstab_sz;
  extern unsigned struct_statfs_sz;
  extern unsigned struct_sockaddr_sz;
*************** unsigned ucontext_t_sz(void *uctx);
*** 82,123 ****
  #    if defined(__x86_64__)
  const unsigned struct_kernel_stat_sz = 144;
  const unsigned struct_kernel_stat64_sz = 0;
! #elif defined(__i386__)
  const unsigned struct_kernel_stat_sz = 64;
  const unsigned struct_kernel_stat64_sz = 96;
! #elif defined(__arm__)
  const unsigned struct_kernel_stat_sz = 64;
  const unsigned struct_kernel_stat64_sz = 104;
! #elif defined(__aarch64__)
  const unsigned struct_kernel_stat_sz = 128;
  const unsigned struct_kernel_stat64_sz = 104;
! #elif defined(__powerpc__) && !defined(__powerpc64__)
  const unsigned struct_kernel_stat_sz = 72;
  const unsigned struct_kernel_stat64_sz = 104;
! #elif defined(__powerpc64__)
  const unsigned struct_kernel_stat_sz = 144;
  const unsigned struct_kernel_stat64_sz = 104;
! #elif defined(__mips__)
! const unsigned struct_kernel_stat_sz =
!     SANITIZER_ANDROID
!         ? FIRST_32_SECOND_64(104, 128)
!         : FIRST_32_SECOND_64((_MIPS_SIM == _ABIN32) ? 176 : 160, 216);
  const unsigned struct_kernel_stat64_sz = 104;
! #elif defined(__s390__) && !defined(__s390x__)
  const unsigned struct_kernel_stat_sz = 64;
  const unsigned struct_kernel_stat64_sz = 104;
! #elif defined(__s390x__)
  const unsigned struct_kernel_stat_sz = 144;
  const unsigned struct_kernel_stat64_sz = 0;
! #elif defined(__sparc__) && defined(__arch64__)
  const unsigned struct___old_kernel_stat_sz = 0;
  const unsigned struct_kernel_stat_sz = 104;
  const unsigned struct_kernel_stat64_sz = 144;
! #elif defined(__sparc__) && !defined(__arch64__)
  const unsigned struct___old_kernel_stat_sz = 0;
  const unsigned struct_kernel_stat_sz = 64;
  const unsigned struct_kernel_stat64_sz = 104;
! #elif SANITIZER_RISCV64
  const unsigned struct_kernel_stat_sz = 128;
  const unsigned struct_kernel_stat64_sz = 0;  // RISCV64 does not use stat64
  #    elif defined(__hexagon__)
--- 82,128 ----
  #    if defined(__x86_64__)
  const unsigned struct_kernel_stat_sz = 144;
  const unsigned struct_kernel_stat64_sz = 0;
! #    elif defined(__i386__)
  const unsigned struct_kernel_stat_sz = 64;
  const unsigned struct_kernel_stat64_sz = 96;
! #    elif defined(__arm__)
  const unsigned struct_kernel_stat_sz = 64;
  const unsigned struct_kernel_stat64_sz = 104;
! #    elif defined(__aarch64__)
  const unsigned struct_kernel_stat_sz = 128;
  const unsigned struct_kernel_stat64_sz = 104;
! #    elif defined(__powerpc__) && !defined(__powerpc64__)
  const unsigned struct_kernel_stat_sz = 72;
  const unsigned struct_kernel_stat64_sz = 104;
! #    elif defined(__powerpc64__)
  const unsigned struct_kernel_stat_sz = 144;
  const unsigned struct_kernel_stat64_sz = 104;
! #    elif defined(__mips__)
! const unsigned struct_kernel_stat_sz = SANITIZER_ANDROID
!                                            ? FIRST_32_SECOND_64(104, 128)
! #      if defined(_ABIN32) && _MIPS_SIM == _ABIN32
!                                            : FIRST_32_SECOND_64(176, 216);
! #      elif SANITIZER_MUSL
!                                            : FIRST_32_SECOND_64(160, 208);
! #      else
!                                            : FIRST_32_SECOND_64(160, 216);
! #      endif
  const unsigned struct_kernel_stat64_sz = 104;
! #    elif defined(__s390__) && !defined(__s390x__)
  const unsigned struct_kernel_stat_sz = 64;
  const unsigned struct_kernel_stat64_sz = 104;
! #    elif defined(__s390x__)
  const unsigned struct_kernel_stat_sz = 144;
  const unsigned struct_kernel_stat64_sz = 0;
! #    elif defined(__sparc__) && defined(__arch64__)
  const unsigned struct___old_kernel_stat_sz = 0;
  const unsigned struct_kernel_stat_sz = 104;
  const unsigned struct_kernel_stat64_sz = 144;
! #    elif defined(__sparc__) && !defined(__arch64__)
  const unsigned struct___old_kernel_stat_sz = 0;
  const unsigned struct_kernel_stat_sz = 64;
  const unsigned struct_kernel_stat64_sz = 104;
! #    elif SANITIZER_RISCV64
  const unsigned struct_kernel_stat_sz = 128;
  const unsigned struct_kernel_stat64_sz = 0;  // RISCV64 does not use stat64
  #    elif defined(__hexagon__)
*************** extern unsigned struct_old_utsname_sz;
*** 142,156 ****
  extern unsigned struct_oldold_utsname_sz;
  
  const unsigned struct_kexec_segment_sz = 4 * sizeof(unsigned long);
! #endif  // SANITIZER_LINUX
  
! #if SANITIZER_LINUX
  
! #if defined(__powerpc64__) || defined(__s390__) || defined(__loongarch__)
  const unsigned struct___old_kernel_stat_sz = 0;
! #elif !defined(__sparc__)
  const unsigned struct___old_kernel_stat_sz = 32;
! #endif
  
  extern unsigned struct_rlimit_sz;
  extern unsigned struct_utimbuf_sz;
--- 147,161 ----
  extern unsigned struct_oldold_utsname_sz;
  
  const unsigned struct_kexec_segment_sz = 4 * sizeof(unsigned long);
! #  endif  // SANITIZER_LINUX
  
! #  if SANITIZER_LINUX
  
! #    if defined(__powerpc64__) || defined(__s390__) || defined(__loongarch__)
  const unsigned struct___old_kernel_stat_sz = 0;
! #    elif !defined(__sparc__)
  const unsigned struct___old_kernel_stat_sz = 32;
! #    endif
  
  extern unsigned struct_rlimit_sz;
  extern unsigned struct_utimbuf_sz;
*************** struct __sanitizer___sysctl_args {
*** 195,211 ****
  const unsigned old_sigset_t_sz = sizeof(unsigned long);
  
  struct __sanitizer_sem_t {
! #if SANITIZER_ANDROID && defined(_LP64)
    int data[4];
! #elif SANITIZER_ANDROID && !defined(_LP64)
    int data;
! #elif SANITIZER_LINUX
    uptr data[4];
! #endif
  };
! #endif // SANITIZER_LINUX
  
! #if SANITIZER_LINUX && !SANITIZER_ANDROID
  extern unsigned struct_ustat_sz;
  extern unsigned struct_rlimit64_sz;
  extern unsigned struct_statvfs64_sz;
--- 200,216 ----
  const unsigned old_sigset_t_sz = sizeof(unsigned long);
  
  struct __sanitizer_sem_t {
! #    if SANITIZER_ANDROID && defined(_LP64)
    int data[4];
! #    elif SANITIZER_ANDROID && !defined(_LP64)
    int data;
! #    elif SANITIZER_LINUX
    uptr data[4];
! #    endif
  };
! #  endif  // SANITIZER_LINUX
  
! #  if SANITIZER_LINUX && !SANITIZER_ANDROID
  extern unsigned struct_ustat_sz;
  extern unsigned struct_rlimit64_sz;
  extern unsigned struct_statvfs64_sz;
*************** struct __sanitizer_ipc_perm {
*** 216,260 ****
    int gid;
    int cuid;
    int cgid;
! #ifdef __powerpc__
    unsigned mode;
    unsigned __seq;
    u64 __unused1;
    u64 __unused2;
! #elif defined(__sparc__)
    unsigned mode;
    unsigned short __pad2;
    unsigned short __seq;
    unsigned long long __unused1;
    unsigned long long __unused2;
! #else
    unsigned int mode;
    unsigned short __seq;
    unsigned short __pad2;
! #if defined(__x86_64__) && !defined(_LP64)
    u64 __unused1;
    u64 __unused2;
! #else
    unsigned long __unused1;
    unsigned long __unused2;
! #endif
! #endif
  };
  
  struct __sanitizer_shmid_ds {
    __sanitizer_ipc_perm shm_perm;
! #if defined(__sparc__)
! #if !defined(__arch64__)
    u32 __pad1;
! #endif
    long shm_atime;
! #if !defined(__arch64__)
    u32 __pad2;
! #endif
    long shm_dtime;
! #if !defined(__arch64__)
    u32 __pad3;
! #endif
    long shm_ctime;
    uptr shm_segsz;
    int shm_cpid;
--- 221,265 ----
    int gid;
    int cuid;
    int cgid;
! #    ifdef __powerpc__
    unsigned mode;
    unsigned __seq;
    u64 __unused1;
    u64 __unused2;
! #    elif defined(__sparc__)
    unsigned mode;
    unsigned short __pad2;
    unsigned short __seq;
    unsigned long long __unused1;
    unsigned long long __unused2;
! #    else
    unsigned int mode;
    unsigned short __seq;
    unsigned short __pad2;
! #      if defined(__x86_64__) && !defined(_LP64)
    u64 __unused1;
    u64 __unused2;
! #      else
    unsigned long __unused1;
    unsigned long __unused2;
! #      endif
! #    endif
  };
  
  struct __sanitizer_shmid_ds {
    __sanitizer_ipc_perm shm_perm;
! #    if defined(__sparc__)
! #      if !defined(__arch64__)
    u32 __pad1;
! #      endif
    long shm_atime;
! #      if !defined(__arch64__)
    u32 __pad2;
! #      endif
    long shm_dtime;
! #      if !defined(__arch64__)
    u32 __pad3;
! #      endif
    long shm_ctime;
    uptr shm_segsz;
    int shm_cpid;
*************** struct __sanitizer_shmid_ds {
*** 262,322 ****
    unsigned long shm_nattch;
    unsigned long __glibc_reserved1;
    unsigned long __glibc_reserved2;
! #else
! #ifndef __powerpc__
    uptr shm_segsz;
! #elif !defined(__powerpc64__)
    uptr __unused0;
! #endif
! #if defined(__x86_64__) && !defined(_LP64)
    u64 shm_atime;
    u64 shm_dtime;
    u64 shm_ctime;
! #else
    uptr shm_atime;
! #if !defined(_LP64) && !defined(__mips__)
    uptr __unused1;
! #endif
    uptr shm_dtime;
! #if !defined(_LP64) && !defined(__mips__)
    uptr __unused2;
! #endif
    uptr shm_ctime;
! #if !defined(_LP64) && !defined(__mips__)
    uptr __unused3;
! #endif
! #endif
! #ifdef __powerpc__
    uptr shm_segsz;
! #endif
    int shm_cpid;
    int shm_lpid;
! #if defined(__x86_64__) && !defined(_LP64)
    u64 shm_nattch;
    u64 __unused4;
    u64 __unused5;
! #else
    uptr shm_nattch;
    uptr __unused4;
    uptr __unused5;
! #endif
! #endif
  };
! #endif
  
! #if SANITIZER_LINUX && !SANITIZER_ANDROID
  extern unsigned struct_msqid_ds_sz;
  extern unsigned struct_mq_attr_sz;
  extern unsigned struct_timex_sz;
  extern unsigned struct_statvfs_sz;
! #endif  // SANITIZER_LINUX && !SANITIZER_ANDROID
  
  struct __sanitizer_iovec {
    void *iov_base;
    usize iov_len;
  };
  
! #if !SANITIZER_ANDROID
  struct __sanitizer_ifaddrs {
    struct __sanitizer_ifaddrs *ifa_next;
    char *ifa_name;
--- 267,327 ----
    unsigned long shm_nattch;
    unsigned long __glibc_reserved1;
    unsigned long __glibc_reserved2;
! #    else
! #      ifndef __powerpc__
    uptr shm_segsz;
! #      elif !defined(__powerpc64__)
    uptr __unused0;
! #      endif
! #      if defined(__x86_64__) && !defined(_LP64)
    u64 shm_atime;
    u64 shm_dtime;
    u64 shm_ctime;
! #      else
    uptr shm_atime;
! #        if !defined(_LP64) && !defined(__mips__)
    uptr __unused1;
! #        endif
    uptr shm_dtime;
! #        if !defined(_LP64) && !defined(__mips__)
    uptr __unused2;
! #        endif
    uptr shm_ctime;
! #        if !defined(_LP64) && !defined(__mips__)
    uptr __unused3;
! #        endif
! #      endif
! #      ifdef __powerpc__
    uptr shm_segsz;
! #      endif
    int shm_cpid;
    int shm_lpid;
! #      if defined(__x86_64__) && !defined(_LP64)
    u64 shm_nattch;
    u64 __unused4;
    u64 __unused5;
! #      else
    uptr shm_nattch;
    uptr __unused4;
    uptr __unused5;
! #      endif
! #    endif
  };
! #  endif
  
! #  if SANITIZER_LINUX && !SANITIZER_ANDROID
  extern unsigned struct_msqid_ds_sz;
  extern unsigned struct_mq_attr_sz;
  extern unsigned struct_timex_sz;
  extern unsigned struct_statvfs_sz;
! #  endif  // SANITIZER_LINUX && !SANITIZER_ANDROID
  
  struct __sanitizer_iovec {
    void *iov_base;
    usize iov_len;
  };
  
! #  if !SANITIZER_ANDROID
  struct __sanitizer_ifaddrs {
    struct __sanitizer_ifaddrs *ifa_next;
    char *ifa_name;
*************** struct __sanitizer_ifaddrs {
*** 324,344 ****
    void *ifa_addr;     // (struct sockaddr *)
    void *ifa_netmask;  // (struct sockaddr *)
    // This is a union on Linux.
! # ifdef ifa_dstaddr
! # undef ifa_dstaddr
! # endif
    void *ifa_dstaddr;  // (struct sockaddr *)
    void *ifa_data;
  };
! #endif  // !SANITIZER_ANDROID
  
! #if SANITIZER_APPLE
  typedef unsigned long __sanitizer_pthread_key_t;
! #else
  typedef unsigned __sanitizer_pthread_key_t;
! #endif
  
! #if SANITIZER_LINUX && !SANITIZER_ANDROID
  
  struct __sanitizer_XDR {
    int x_op;
--- 329,349 ----
    void *ifa_addr;     // (struct sockaddr *)
    void *ifa_netmask;  // (struct sockaddr *)
    // This is a union on Linux.
! #    ifdef ifa_dstaddr
! #      undef ifa_dstaddr
! #    endif
    void *ifa_dstaddr;  // (struct sockaddr *)
    void *ifa_data;
  };
! #  endif  // !SANITIZER_ANDROID
  
! #  if SANITIZER_APPLE
  typedef unsigned long __sanitizer_pthread_key_t;
! #  else
  typedef unsigned __sanitizer_pthread_key_t;
! #  endif
  
! #  if SANITIZER_LINUX && !SANITIZER_ANDROID
  
  struct __sanitizer_XDR {
    int x_op;
*************** struct __sanitizer_XDR {
*** 352,376 ****
  const int __sanitizer_XDR_ENCODE = 0;
  const int __sanitizer_XDR_DECODE = 1;
  const int __sanitizer_XDR_FREE = 2;
! #endif
  
  struct __sanitizer_passwd {
    char *pw_name;
    char *pw_passwd;
    int pw_uid;
    int pw_gid;
! #if SANITIZER_APPLE
    long pw_change;
    char *pw_class;
! #endif
! #if !(SANITIZER_ANDROID && (SANITIZER_WORDSIZE == 32))
    char *pw_gecos;
! #endif
    char *pw_dir;
    char *pw_shell;
! #if SANITIZER_APPLE
    long pw_expire;
! #endif
  };
  
  struct __sanitizer_group {
--- 357,384 ----
  const int __sanitizer_XDR_ENCODE = 0;
  const int __sanitizer_XDR_DECODE = 1;
  const int __sanitizer_XDR_FREE = 2;
! #  endif
  
  struct __sanitizer_passwd {
    char *pw_name;
    char *pw_passwd;
    int pw_uid;
    int pw_gid;
! #  if SANITIZER_APPLE
    long pw_change;
    char *pw_class;
! #  endif
! #  if !(SANITIZER_ANDROID && (SANITIZER_WORDSIZE == 32)) && !SANITIZER_HAIKU
    char *pw_gecos;
! #  endif
    char *pw_dir;
    char *pw_shell;
! #  if SANITIZER_APPLE
    long pw_expire;
! #  endif
! #  if SANITIZER_HAIKU
!   char *pw_gecos;
! #  endif
  };
  
  struct __sanitizer_group {
*************** struct __sanitizer_group {
*** 383,394 ****
  #  if (SANITIZER_LINUX && !SANITIZER_GLIBC && !SANITIZER_ANDROID) || \
        (defined(__x86_64__) && !defined(_LP64)) || defined(__hexagon__)
  typedef long long __sanitizer_time_t;
! #else
  typedef long __sanitizer_time_t;
! #endif
  
  typedef long __sanitizer_suseconds_t;
  
  struct __sanitizer_timeval {
    __sanitizer_time_t tv_sec;
    __sanitizer_suseconds_t tv_usec;
--- 391,412 ----
  #  if (SANITIZER_LINUX && !SANITIZER_GLIBC && !SANITIZER_ANDROID) || \
        (defined(__x86_64__) && !defined(_LP64)) || defined(__hexagon__)
  typedef long long __sanitizer_time_t;
! #  else
  typedef long __sanitizer_time_t;
! #  endif
  
  typedef long __sanitizer_suseconds_t;
  
+ struct __sanitizer_timespec {
+   __sanitizer_time_t tv_sec; /* seconds */
+   u64 tv_nsec;               /* nanoseconds */
+ };
+ 
+ struct __sanitizer_itimerspec {
+   struct __sanitizer_timespec it_interval; /* timer period */
+   struct __sanitizer_timespec it_value;    /* timer expiration */
+ };
+ 
  struct __sanitizer_timeval {
    __sanitizer_time_t tv_sec;
    __sanitizer_suseconds_t tv_usec;
*************** struct __sanitizer_tm {
*** 420,430 ****
    int tm_wday;
    int tm_yday;
    int tm_isdst;
    long int tm_gmtoff;
    const char *tm_zone;
  };
  
! #if SANITIZER_LINUX
  struct __sanitizer_mntent {
    char *mnt_fsname;
    char *mnt_dir;
--- 438,452 ----
    int tm_wday;
    int tm_yday;
    int tm_isdst;
+ #  if SANITIZER_HAIKU
+   int tm_gmtoff;
+ #  else
    long int tm_gmtoff;
+ #  endif
    const char *tm_zone;
  };
  
! #  if SANITIZER_LINUX
  struct __sanitizer_mntent {
    char *mnt_fsname;
    char *mnt_dir;
*************** struct __sanitizer_file_handle {
*** 439,447 ****
    int handle_type;
    unsigned char f_handle[1];  // variable sized
  };
! #endif
  
! #if SANITIZER_APPLE
  struct __sanitizer_msghdr {
    void *msg_name;
    unsigned msg_namelen;
--- 461,469 ----
    int handle_type;
    unsigned char f_handle[1];  // variable sized
  };
! #  endif
  
! #  if SANITIZER_APPLE || SANITIZER_HAIKU
  struct __sanitizer_msghdr {
    void *msg_name;
    unsigned msg_namelen;
*************** struct __sanitizer_cmsghdr {
*** 456,462 ****
    int cmsg_level;
    int cmsg_type;
  };
! #else
  // In POSIX, int msg_iovlen; socklen_t msg_controllen; socklen_t cmsg_len; but
  // many implementations don't conform to the standard.
  struct __sanitizer_msghdr {
--- 478,508 ----
    int cmsg_level;
    int cmsg_type;
  };
! #  elif SANITIZER_MUSL
! struct __sanitizer_msghdr {
!   void *msg_name;
!   unsigned msg_namelen;
!   struct __sanitizer_iovec *msg_iov;
!   int msg_iovlen;
! #    if SANITIZER_WORDSIZE == 64
!   int __pad1;
! #    endif
!   void *msg_control;
!   unsigned msg_controllen;
! #    if SANITIZER_WORDSIZE == 64
!   int __pad2;
! #    endif
!   int msg_flags;
! };
! struct __sanitizer_cmsghdr {
!   unsigned cmsg_len;
! #    if SANITIZER_WORDSIZE == 64
!   int __pad1;
! #    endif
!   int cmsg_level;
!   int cmsg_type;
! };
! #  else
  // In POSIX, int msg_iovlen; socklen_t msg_controllen; socklen_t cmsg_len; but
  // many implementations don't conform to the standard.
  struct __sanitizer_msghdr {
*************** struct __sanitizer_cmsghdr {
*** 473,494 ****
    int cmsg_level;
    int cmsg_type;
  };
! #endif
  
! #if SANITIZER_LINUX
  struct __sanitizer_mmsghdr {
    __sanitizer_msghdr msg_hdr;
    unsigned int msg_len;
  };
! #endif
  
! #if SANITIZER_APPLE
  struct __sanitizer_dirent {
    unsigned long long d_ino;
    unsigned long long d_seekoff;
    unsigned short d_reclen;
    // more fields that we don't care about
  };
  #  elif (SANITIZER_LINUX && !SANITIZER_GLIBC) || defined(__x86_64__) || \
        defined(__hexagon__)
  struct __sanitizer_dirent {
--- 519,549 ----
    int cmsg_level;
    int cmsg_type;
  };
! #  endif
  
! #  if SANITIZER_LINUX
  struct __sanitizer_mmsghdr {
    __sanitizer_msghdr msg_hdr;
    unsigned int msg_len;
  };
! #  endif
  
! #  if SANITIZER_APPLE
  struct __sanitizer_dirent {
    unsigned long long d_ino;
    unsigned long long d_seekoff;
    unsigned short d_reclen;
    // more fields that we don't care about
  };
+ #  elif SANITIZER_HAIKU
+ struct __sanitizer_dirent {
+   int d_dev;
+   int d_pdev;
+   unsigned long long d_ino;
+   unsigned long long d_pino;
+   unsigned short d_reclen;
+   // more fields that we don't care about
+ };
  #  elif (SANITIZER_LINUX && !SANITIZER_GLIBC) || defined(__x86_64__) || \
        defined(__hexagon__)
  struct __sanitizer_dirent {
*************** struct __sanitizer_dirent64 {
*** 513,559 ****
    unsigned short d_reclen;
    // more fields that we don't care about
  };
! #endif
  
! #if defined(__x86_64__) && !defined(_LP64)
  typedef long long __sanitizer_clock_t;
! #else
  typedef long __sanitizer_clock_t;
! #endif
  
! #if SANITIZER_LINUX
  typedef int __sanitizer_clockid_t;
  typedef unsigned long long __sanitizer_eventfd_t;
! #endif
  
! #if SANITIZER_LINUX
  #    if defined(_LP64) || defined(__x86_64__) || defined(__powerpc__) || \
          defined(__mips__) || defined(__hexagon__)
  typedef unsigned __sanitizer___kernel_uid_t;
  typedef unsigned __sanitizer___kernel_gid_t;
! #else
  typedef unsigned short __sanitizer___kernel_uid_t;
  typedef unsigned short __sanitizer___kernel_gid_t;
! #endif
! #if defined(__x86_64__) && !defined(_LP64)
  typedef long long __sanitizer___kernel_off_t;
! #else
  typedef long __sanitizer___kernel_off_t;
! #endif
  
! #if defined(__powerpc__) || defined(__mips__)
  typedef unsigned int __sanitizer___kernel_old_uid_t;
  typedef unsigned int __sanitizer___kernel_old_gid_t;
! #else
  typedef unsigned short __sanitizer___kernel_old_uid_t;
  typedef unsigned short __sanitizer___kernel_old_gid_t;
! #endif
  
  typedef long long __sanitizer___kernel_loff_t;
  typedef struct {
    unsigned long fds_bits[1024 / (8 * sizeof(long))];
  } __sanitizer___kernel_fd_set;
! #endif
  
  // This thing depends on the platform. We are only interested in the upper
  // limit. Verified with a compiler assert in .cpp.
--- 568,617 ----
    unsigned short d_reclen;
    // more fields that we don't care about
  };
! extern unsigned struct_sock_fprog_sz;
! #  endif
  
! #  if SANITIZER_HAIKU
! typedef int __sanitizer_clock_t;
! #  elif defined(__x86_64__) && !defined(_LP64)
  typedef long long __sanitizer_clock_t;
! #  else
  typedef long __sanitizer_clock_t;
! #  endif
  
! #  if SANITIZER_LINUX || SANITIZER_HAIKU
  typedef int __sanitizer_clockid_t;
  typedef unsigned long long __sanitizer_eventfd_t;
! #  endif
  
! #  if SANITIZER_LINUX
  #    if defined(_LP64) || defined(__x86_64__) || defined(__powerpc__) || \
          defined(__mips__) || defined(__hexagon__)
  typedef unsigned __sanitizer___kernel_uid_t;
  typedef unsigned __sanitizer___kernel_gid_t;
! #    else
  typedef unsigned short __sanitizer___kernel_uid_t;
  typedef unsigned short __sanitizer___kernel_gid_t;
! #    endif
! #    if defined(__x86_64__) && !defined(_LP64)
  typedef long long __sanitizer___kernel_off_t;
! #    else
  typedef long __sanitizer___kernel_off_t;
! #    endif
  
! #    if defined(__powerpc__) || defined(__mips__)
  typedef unsigned int __sanitizer___kernel_old_uid_t;
  typedef unsigned int __sanitizer___kernel_old_gid_t;
! #    else
  typedef unsigned short __sanitizer___kernel_old_uid_t;
  typedef unsigned short __sanitizer___kernel_old_gid_t;
! #    endif
  
  typedef long long __sanitizer___kernel_loff_t;
  typedef struct {
    unsigned long fds_bits[1024 / (8 * sizeof(long))];
  } __sanitizer___kernel_fd_set;
! #  endif
  
  // This thing depends on the platform. We are only interested in the upper
  // limit. Verified with a compiler assert in .cpp.
*************** union __sanitizer_pthread_attr_t {
*** 562,611 ****
    void *align;
  };
  
! #if SANITIZER_ANDROID
! # if SANITIZER_MIPS
  typedef unsigned long __sanitizer_sigset_t[16 / sizeof(unsigned long)];
! # else
  typedef unsigned long __sanitizer_sigset_t;
! # endif
! #elif SANITIZER_APPLE
  typedef unsigned __sanitizer_sigset_t;
! #elif SANITIZER_LINUX
  struct __sanitizer_sigset_t {
    // The size is determined by looking at sizeof of real sigset_t on linux.
    uptr val[128 / sizeof(uptr)];
  };
! #endif
  
  struct __sanitizer_siginfo_pad {
! #if SANITIZER_X32
    // x32 siginfo_t is aligned to 8 bytes.
    u64 pad[128 / sizeof(u64)];
! #else
    // Require uptr, because siginfo_t is always pointer-size aligned on Linux.
    uptr pad[128 / sizeof(uptr)];
! #endif
  };
  
! #if SANITIZER_LINUX
! # define SANITIZER_HAS_SIGINFO 1
  union __sanitizer_siginfo {
!   struct {
      int si_signo;
! # if SANITIZER_MIPS
      int si_code;
      int si_errno;
! # else
      int si_errno;
      int si_code;
! # endif
    };
    __sanitizer_siginfo_pad pad;
  };
! #else
! # define SANITIZER_HAS_SIGINFO 0
  typedef __sanitizer_siginfo_pad __sanitizer_siginfo;
! #endif
  
  using __sanitizer_sighandler_ptr = void (*)(int sig);
  using __sanitizer_sigactionhandler_ptr = void (*)(int sig,
--- 620,671 ----
    void *align;
  };
  
! #  if SANITIZER_ANDROID
! #    if SANITIZER_MIPS
  typedef unsigned long __sanitizer_sigset_t[16 / sizeof(unsigned long)];
! #    else
  typedef unsigned long __sanitizer_sigset_t;
! #    endif
! #  elif SANITIZER_APPLE
  typedef unsigned __sanitizer_sigset_t;
! #  elif SANITIZER_HAIKU
! typedef unsigned long __sanitizer_sigset_t;
! #  elif SANITIZER_LINUX
  struct __sanitizer_sigset_t {
    // The size is determined by looking at sizeof of real sigset_t on linux.
    uptr val[128 / sizeof(uptr)];
  };
! #  endif
  
  struct __sanitizer_siginfo_pad {
! #  if SANITIZER_X32
    // x32 siginfo_t is aligned to 8 bytes.
    u64 pad[128 / sizeof(u64)];
! #  else
    // Require uptr, because siginfo_t is always pointer-size aligned on Linux.
    uptr pad[128 / sizeof(uptr)];
! #  endif
  };
  
! #  if SANITIZER_LINUX
! #    define SANITIZER_HAS_SIGINFO 1
  union __sanitizer_siginfo {
!   __extension__ struct {
      int si_signo;
! #    if SANITIZER_MIPS
      int si_code;
      int si_errno;
! #    else
      int si_errno;
      int si_code;
! #    endif
    };
    __sanitizer_siginfo_pad pad;
  };
! #  else
! #    define SANITIZER_HAS_SIGINFO 0
  typedef __sanitizer_siginfo_pad __sanitizer_siginfo;
! #  endif
  
  using __sanitizer_sighandler_ptr = void (*)(int sig);
  using __sanitizer_sigactionhandler_ptr = void (*)(int sig,
*************** using __sanitizer_sigactionhandler_ptr =
*** 613,619 ****
                                                    void *uctx);
  
  // Linux system headers define the 'sa_handler' and 'sa_sigaction' macros.
! #if SANITIZER_ANDROID && (SANITIZER_WORDSIZE == 64)
  struct __sanitizer_sigaction {
    unsigned sa_flags;
    union {
--- 673,679 ----
                                                    void *uctx);
  
  // Linux system headers define the 'sa_handler' and 'sa_sigaction' macros.
! #  if SANITIZER_ANDROID && (SANITIZER_WORDSIZE == 64)
  struct __sanitizer_sigaction {
    unsigned sa_flags;
    union {
*************** struct __sanitizer_sigaction {
*** 623,629 ****
    __sanitizer_sigset_t sa_mask;
    void (*sa_restorer)();
  };
! #elif SANITIZER_ANDROID && SANITIZER_MIPS32  // check this before WORDSIZE == 32
  struct __sanitizer_sigaction {
    unsigned sa_flags;
    union {
--- 683,690 ----
    __sanitizer_sigset_t sa_mask;
    void (*sa_restorer)();
  };
! #  elif SANITIZER_ANDROID && \
!       SANITIZER_MIPS32  // check this before WORDSIZE == 32
  struct __sanitizer_sigaction {
    unsigned sa_flags;
    union {
*************** struct __sanitizer_sigaction {
*** 632,638 ****
    };
    __sanitizer_sigset_t sa_mask;
  };
! #elif SANITIZER_ANDROID && (SANITIZER_WORDSIZE == 32)
  struct __sanitizer_sigaction {
    union {
      __sanitizer_sigactionhandler_ptr sigaction;
--- 693,699 ----
    };
    __sanitizer_sigset_t sa_mask;
  };
! #  elif SANITIZER_ANDROID && (SANITIZER_WORDSIZE == 32)
  struct __sanitizer_sigaction {
    union {
      __sanitizer_sigactionhandler_ptr sigaction;
*************** struct __sanitizer_sigaction {
*** 642,707 ****
    uptr sa_flags;
    void (*sa_restorer)();
  };
! #else // !SANITIZER_ANDROID
  struct __sanitizer_sigaction {
! #if defined(__mips__) && !SANITIZER_FREEBSD
    unsigned int sa_flags;
! #endif
    union {
      __sanitizer_sigactionhandler_ptr sigaction;
      __sanitizer_sighandler_ptr handler;
    };
! #if SANITIZER_FREEBSD
    int sa_flags;
    __sanitizer_sigset_t sa_mask;
! #else
! #if defined(__s390x__)
    int sa_resv;
! #else
    __sanitizer_sigset_t sa_mask;
! #endif
! #ifndef __mips__
! #if defined(__sparc__)
! #if __GLIBC_PREREQ (2, 20)
    // On sparc glibc 2.19 and earlier sa_flags was unsigned long.
! #if defined(__arch64__)
    // To maintain ABI compatibility on sparc64 when switching to an int,
    // __glibc_reserved0 was added.
    int __glibc_reserved0;
! #endif
    int sa_flags;
! #else
    unsigned long sa_flags;
! #endif
! #else
    int sa_flags;
! #endif
! #endif
! #endif
! #if SANITIZER_LINUX
    void (*sa_restorer)();
! #endif
! #if defined(__mips__) && (SANITIZER_WORDSIZE == 32)
    int sa_resv[1];
! #endif
! #if defined(__s390x__)
    __sanitizer_sigset_t sa_mask;
! #endif
  };
! #endif // !SANITIZER_ANDROID
  
! #if defined(__mips__)
! #define __SANITIZER_KERNEL_NSIG 128
! #else
! #define __SANITIZER_KERNEL_NSIG 64
! #endif
  
  struct __sanitizer_kernel_sigset_t {
    uptr sig[__SANITIZER_KERNEL_NSIG / (sizeof(uptr) * 8)];
  };
  
  // Linux system headers define the 'sa_handler' and 'sa_sigaction' macros.
! #if SANITIZER_MIPS
  struct __sanitizer_kernel_sigaction_t {
    unsigned int sa_flags;
    union {
--- 703,768 ----
    uptr sa_flags;
    void (*sa_restorer)();
  };
! #  else  // !SANITIZER_ANDROID
  struct __sanitizer_sigaction {
! #    if defined(__mips__) && !SANITIZER_FREEBSD && !SANITIZER_MUSL
    unsigned int sa_flags;
! #    endif
    union {
      __sanitizer_sigactionhandler_ptr sigaction;
      __sanitizer_sighandler_ptr handler;
    };
! #    if SANITIZER_FREEBSD
    int sa_flags;
    __sanitizer_sigset_t sa_mask;
! #    else
! #      if defined(__s390x__)
    int sa_resv;
! #      else
    __sanitizer_sigset_t sa_mask;
! #      endif
! #      if !defined(__mips__) || SANITIZER_MUSL
! #        if defined(__sparc__)
! #          if __GLIBC_PREREQ(2, 20)
    // On sparc glibc 2.19 and earlier sa_flags was unsigned long.
! #            if defined(__arch64__)
    // To maintain ABI compatibility on sparc64 when switching to an int,
    // __glibc_reserved0 was added.
    int __glibc_reserved0;
! #            endif
    int sa_flags;
! #          else
    unsigned long sa_flags;
! #          endif
! #        else
    int sa_flags;
! #        endif
! #      endif
! #    endif
! #    if SANITIZER_LINUX || SANITIZER_HAIKU
    void (*sa_restorer)();
! #    endif
! #    if defined(__mips__) && (SANITIZER_WORDSIZE == 32) && !SANITIZER_MUSL
    int sa_resv[1];
! #    endif
! #    if defined(__s390x__)
    __sanitizer_sigset_t sa_mask;
! #    endif
  };
! #  endif  // !SANITIZER_ANDROID
  
! #  if defined(__mips__)
! #    define __SANITIZER_KERNEL_NSIG 128
! #  else
! #    define __SANITIZER_KERNEL_NSIG 64
! #  endif
  
  struct __sanitizer_kernel_sigset_t {
    uptr sig[__SANITIZER_KERNEL_NSIG / (sizeof(uptr) * 8)];
  };
  
  // Linux system headers define the 'sa_handler' and 'sa_sigaction' macros.
! #  if SANITIZER_MIPS
  struct __sanitizer_kernel_sigaction_t {
    unsigned int sa_flags;
    union {
*************** struct __sanitizer_kernel_sigaction_t {
*** 711,717 ****
    __sanitizer_kernel_sigset_t sa_mask;
    void (*sa_restorer)(void);
  };
! #else
  struct __sanitizer_kernel_sigaction_t {
    union {
      void (*handler)(int signo);
--- 772,778 ----
    __sanitizer_kernel_sigset_t sa_mask;
    void (*sa_restorer)(void);
  };
! #  else
  struct __sanitizer_kernel_sigaction_t {
    union {
      void (*handler)(int signo);
*************** struct __sanitizer_kernel_sigaction_t {
*** 721,742 ****
    void (*sa_restorer)(void);
    __sanitizer_kernel_sigset_t sa_mask;
  };
! #endif
  
  extern const uptr sig_ign;
  extern const uptr sig_dfl;
  extern const uptr sig_err;
  extern const uptr sa_siginfo;
  
! #if SANITIZER_LINUX
  extern int e_tabsz;
! #endif
  
  extern int af_inet;
  extern int af_inet6;
  uptr __sanitizer_in_addr_sz(int af);
  
! #if SANITIZER_LINUX
  struct __sanitizer_dl_phdr_info {
    uptr dlpi_addr;
    const char *dlpi_name;
--- 782,803 ----
    void (*sa_restorer)(void);
    __sanitizer_kernel_sigset_t sa_mask;
  };
! #  endif
  
  extern const uptr sig_ign;
  extern const uptr sig_dfl;
  extern const uptr sig_err;
  extern const uptr sa_siginfo;
  
! #  if SANITIZER_LINUX
  extern int e_tabsz;
! #  endif
  
  extern int af_inet;
  extern int af_inet6;
  uptr __sanitizer_in_addr_sz(int af);
  
! #  if SANITIZER_LINUX
  struct __sanitizer_dl_phdr_info {
    uptr dlpi_addr;
    const char *dlpi_name;
*************** struct __sanitizer_dl_phdr_info {
*** 745,751 ****
  };
  
  extern unsigned struct_ElfW_Phdr_sz;
! #endif
  
  struct __sanitizer_protoent {
    char *p_name;
--- 806,812 ----
  };
  
  extern unsigned struct_ElfW_Phdr_sz;
! #  endif
  
  struct __sanitizer_protoent {
    char *p_name;
*************** struct __sanitizer_addrinfo {
*** 765,779 ****
    int ai_family;
    int ai_socktype;
    int ai_protocol;
! #if SANITIZER_ANDROID || SANITIZER_APPLE
    unsigned ai_addrlen;
    char *ai_canonname;
    void *ai_addr;
! #else // LINUX
    unsigned ai_addrlen;
    void *ai_addr;
    char *ai_canonname;
! #endif
    struct __sanitizer_addrinfo *ai_next;
  };
  
--- 826,840 ----
    int ai_family;
    int ai_socktype;
    int ai_protocol;
! #  if SANITIZER_ANDROID || SANITIZER_APPLE || SANITIZER_HAIKU
    unsigned ai_addrlen;
    char *ai_canonname;
    void *ai_addr;
! #  else  // LINUX
    unsigned ai_addrlen;
    void *ai_addr;
    char *ai_canonname;
! #  endif
    struct __sanitizer_addrinfo *ai_next;
  };
  
*************** struct __sanitizer_pollfd {
*** 791,804 ****
    short revents;
  };
  
! #if SANITIZER_ANDROID || SANITIZER_APPLE
  typedef unsigned __sanitizer_nfds_t;
! #else
  typedef unsigned long __sanitizer_nfds_t;
! #endif
  
! #if !SANITIZER_ANDROID
! # if SANITIZER_LINUX
  struct __sanitizer_glob_t {
    uptr gl_pathc;
    char **gl_pathv;
--- 852,865 ----
    short revents;
  };
  
! #  if SANITIZER_ANDROID || SANITIZER_APPLE
  typedef unsigned __sanitizer_nfds_t;
! #  else
  typedef unsigned long __sanitizer_nfds_t;
! #  endif
  
! #  if !SANITIZER_ANDROID
! #    if SANITIZER_LINUX
  struct __sanitizer_glob_t {
    uptr gl_pathc;
    char **gl_pathv;
*************** struct __sanitizer_glob_t {
*** 811,823 ****
    int (*gl_lstat)(const char *, void *);
    int (*gl_stat)(const char *, void *);
  };
! # endif  // SANITIZER_LINUX
  
! # if SANITIZER_LINUX
  extern int glob_nomatch;
  extern int glob_altdirfunc;
! # endif
! #endif  // !SANITIZER_ANDROID
  
  extern unsigned path_max;
  
--- 872,884 ----
    int (*gl_lstat)(const char *, void *);
    int (*gl_stat)(const char *, void *);
  };
! #    endif  // SANITIZER_LINUX
  
! #    if SANITIZER_LINUX
  extern int glob_nomatch;
  extern int glob_altdirfunc;
! #    endif
! #  endif  // !SANITIZER_ANDROID
  
  extern unsigned path_max;
  
*************** struct __sanitizer_wordexp_t {
*** 831,837 ****
    uptr we_offs;
  };
  
! #if SANITIZER_LINUX && !SANITIZER_ANDROID
  struct __sanitizer_FILE {
    int _flags;
    char *_IO_read_ptr;
--- 892,898 ----
    uptr we_offs;
  };
  
! #  if SANITIZER_LINUX && !SANITIZER_ANDROID
  struct __sanitizer_FILE {
    int _flags;
    char *_IO_read_ptr;
*************** struct __sanitizer_FILE {
*** 849,859 ****
    __sanitizer_FILE *_chain;
    int _fileno;
  };
! # define SANITIZER_HAS_STRUCT_FILE 1
! #else
  typedef void __sanitizer_FILE;
! # define SANITIZER_HAS_STRUCT_FILE 0
! #endif
  
  #  if SANITIZER_LINUX && !SANITIZER_ANDROID &&                               \
        (defined(__i386) || defined(__x86_64) || defined(__mips64) ||          \
--- 910,920 ----
    __sanitizer_FILE *_chain;
    int _fileno;
  };
! #    define SANITIZER_HAS_STRUCT_FILE 1
! #  else
  typedef void __sanitizer_FILE;
! #    define SANITIZER_HAS_STRUCT_FILE 0
! #  endif
  
  #  if SANITIZER_LINUX && !SANITIZER_ANDROID &&                               \
        (defined(__i386) || defined(__x86_64) || defined(__mips64) ||          \
*************** extern int shmctl_ipc_stat;
*** 905,918 ****
  extern int shmctl_ipc_info;
  extern int shmctl_shm_info;
  extern int shmctl_shm_stat;
! #endif
  
! #if !SANITIZER_APPLE && !SANITIZER_FREEBSD
  extern unsigned struct_utmp_sz;
! #endif
! #if !SANITIZER_ANDROID
  extern unsigned struct_utmpx_sz;
! #endif
  
  extern int map_fixed;
  
--- 966,979 ----
  extern int shmctl_ipc_info;
  extern int shmctl_shm_info;
  extern int shmctl_shm_stat;
! #  endif
  
! #  if !SANITIZER_APPLE && !SANITIZER_FREEBSD
  extern unsigned struct_utmp_sz;
! #  endif
! #  if !SANITIZER_ANDROID
  extern unsigned struct_utmpx_sz;
! #  endif
  
  extern int map_fixed;
  
*************** struct __sanitizer_ifconf {
*** 922,934 ****
    union {
      void *ifcu_req;
    } ifc_ifcu;
! #if SANITIZER_APPLE
  } __attribute__((packed));
! #else
  };
! #endif
  
! #if SANITIZER_LINUX && !SANITIZER_ANDROID
  struct __sanitizer__obstack_chunk {
    char *limit;
    struct __sanitizer__obstack_chunk *prev;
--- 983,995 ----
    union {
      void *ifcu_req;
    } ifc_ifcu;
! #  if SANITIZER_APPLE
  } __attribute__((packed));
! #  else
  };
! #  endif
  
! #  if SANITIZER_LINUX && !SANITIZER_ANDROID
  struct __sanitizer__obstack_chunk {
    char *limit;
    struct __sanitizer__obstack_chunk *prev;
*************** struct __sanitizer_cookie_io_functions_t
*** 955,1011 ****
    __sanitizer_cookie_io_seek seek;
    __sanitizer_cookie_io_close close;
  };
! #endif
  
! #define IOC_NRBITS 8
! #define IOC_TYPEBITS 8
! #if defined(__powerpc__) || defined(__powerpc64__) || defined(__mips__) || \
!     defined(__sparc__)
! #define IOC_SIZEBITS 13
! #define IOC_DIRBITS 3
! #define IOC_NONE 1U
! #define IOC_WRITE 4U
! #define IOC_READ 2U
! #else
! #define IOC_SIZEBITS 14
! #define IOC_DIRBITS 2
! #define IOC_NONE 0U
! #define IOC_WRITE 1U
! #define IOC_READ 2U
! #endif
! #define IOC_NRMASK ((1 << IOC_NRBITS) - 1)
! #define IOC_TYPEMASK ((1 << IOC_TYPEBITS) - 1)
! #define IOC_SIZEMASK ((1 << IOC_SIZEBITS) - 1)
! #if defined(IOC_DIRMASK)
! #undef IOC_DIRMASK
! #endif
! #define IOC_DIRMASK ((1 << IOC_DIRBITS) - 1)
! #define IOC_NRSHIFT 0
! #define IOC_TYPESHIFT (IOC_NRSHIFT + IOC_NRBITS)
! #define IOC_SIZESHIFT (IOC_TYPESHIFT + IOC_TYPEBITS)
! #define IOC_DIRSHIFT (IOC_SIZESHIFT + IOC_SIZEBITS)
! #define EVIOC_EV_MAX 0x1f
! #define EVIOC_ABS_MAX 0x3f
  
! #define IOC_DIR(nr) (((nr) >> IOC_DIRSHIFT) & IOC_DIRMASK)
! #define IOC_TYPE(nr) (((nr) >> IOC_TYPESHIFT) & IOC_TYPEMASK)
! #define IOC_NR(nr) (((nr) >> IOC_NRSHIFT) & IOC_NRMASK)
  
! #if defined(__sparc__)
  // In sparc the 14 bits SIZE field overlaps with the
  // least significant bit of DIR, so either IOC_READ or
  // IOC_WRITE shall be 1 in order to get a non-zero SIZE.
! #define IOC_SIZE(nr) \
!   ((((((nr) >> 29) & 0x7) & (4U | 2U)) == 0) ? 0 : (((nr) >> 16) & 0x3fff))
! #else
! #define IOC_SIZE(nr) (((nr) >> IOC_SIZESHIFT) & IOC_SIZEMASK)
! #endif
  
  extern unsigned struct_ifreq_sz;
  extern unsigned struct_termios_sz;
  extern unsigned struct_winsize_sz;
  
! #if SANITIZER_LINUX
  extern unsigned struct_arpreq_sz;
  extern unsigned struct_cdrom_msf_sz;
  extern unsigned struct_cdrom_multisession_sz;
--- 1016,1072 ----
    __sanitizer_cookie_io_seek seek;
    __sanitizer_cookie_io_close close;
  };
! #  endif
  
! #  define IOC_NRBITS 8
! #  define IOC_TYPEBITS 8
! #  if defined(__powerpc__) || defined(__powerpc64__) || defined(__mips__) || \
!       defined(__sparc__)
! #    define IOC_SIZEBITS 13
! #    define IOC_DIRBITS 3
! #    define IOC_NONE 1U
! #    define IOC_WRITE 4U
! #    define IOC_READ 2U
! #  else
! #    define IOC_SIZEBITS 14
! #    define IOC_DIRBITS 2
! #    define IOC_NONE 0U
! #    define IOC_WRITE 1U
! #    define IOC_READ 2U
! #  endif
! #  define IOC_NRMASK ((1 << IOC_NRBITS) - 1)
! #  define IOC_TYPEMASK ((1 << IOC_TYPEBITS) - 1)
! #  define IOC_SIZEMASK ((1 << IOC_SIZEBITS) - 1)
! #  if defined(IOC_DIRMASK)
! #    undef IOC_DIRMASK
! #  endif
! #  define IOC_DIRMASK ((1 << IOC_DIRBITS) - 1)
! #  define IOC_NRSHIFT 0
! #  define IOC_TYPESHIFT (IOC_NRSHIFT + IOC_NRBITS)
! #  define IOC_SIZESHIFT (IOC_TYPESHIFT + IOC_TYPEBITS)
! #  define IOC_DIRSHIFT (IOC_SIZESHIFT + IOC_SIZEBITS)
! #  define EVIOC_EV_MAX 0x1f
! #  define EVIOC_ABS_MAX 0x3f
  
! #  define IOC_DIR(nr) (((nr) >> IOC_DIRSHIFT) & IOC_DIRMASK)
! #  define IOC_TYPE(nr) (((nr) >> IOC_TYPESHIFT) & IOC_TYPEMASK)
! #  define IOC_NR(nr) (((nr) >> IOC_NRSHIFT) & IOC_NRMASK)
  
! #  if defined(__sparc__)
  // In sparc the 14 bits SIZE field overlaps with the
  // least significant bit of DIR, so either IOC_READ or
  // IOC_WRITE shall be 1 in order to get a non-zero SIZE.
! #    define IOC_SIZE(nr) \
!       ((((((nr) >> 29) & 0x7) & (4U | 2U)) == 0) ? 0 : (((nr) >> 16) & 0x3fff))
! #  else
! #    define IOC_SIZE(nr) (((nr) >> IOC_SIZESHIFT) & IOC_SIZEMASK)
! #  endif
  
  extern unsigned struct_ifreq_sz;
  extern unsigned struct_termios_sz;
  extern unsigned struct_winsize_sz;
  
! #  if SANITIZER_LINUX
  extern unsigned struct_arpreq_sz;
  extern unsigned struct_cdrom_msf_sz;
  extern unsigned struct_cdrom_multisession_sz;
*************** extern unsigned struct_mtpos_sz;
*** 1032,1040 ****
  extern unsigned struct_vt_consize_sz;
  extern unsigned struct_vt_sizes_sz;
  extern unsigned struct_vt_stat_sz;
! #endif  // SANITIZER_LINUX
  
! #if SANITIZER_LINUX
  extern unsigned struct_copr_buffer_sz;
  extern unsigned struct_copr_debug_buf_sz;
  extern unsigned struct_copr_msg_sz;
--- 1093,1101 ----
  extern unsigned struct_vt_consize_sz;
  extern unsigned struct_vt_sizes_sz;
  extern unsigned struct_vt_stat_sz;
! #  endif  // SANITIZER_LINUX
  
! #  if SANITIZER_LINUX
  extern unsigned struct_copr_buffer_sz;
  extern unsigned struct_copr_debug_buf_sz;
  extern unsigned struct_copr_msg_sz;
*************** extern unsigned struct_sbi_instrument_sz
*** 1046,1054 ****
  extern unsigned struct_seq_event_rec_sz;
  extern unsigned struct_synth_info_sz;
  extern unsigned struct_vt_mode_sz;
! #endif // SANITIZER_LINUX
  
! #if SANITIZER_LINUX && !SANITIZER_ANDROID
  extern unsigned struct_ax25_parms_struct_sz;
  extern unsigned struct_input_keymap_entry_sz;
  extern unsigned struct_ipx_config_data_sz;
--- 1107,1115 ----
  extern unsigned struct_seq_event_rec_sz;
  extern unsigned struct_synth_info_sz;
  extern unsigned struct_vt_mode_sz;
! #  endif  // SANITIZER_LINUX
  
! #  if SANITIZER_LINUX && !SANITIZER_ANDROID
  extern unsigned struct_ax25_parms_struct_sz;
  extern unsigned struct_input_keymap_entry_sz;
  extern unsigned struct_ipx_config_data_sz;
*************** extern unsigned struct_serial_struct_sz;
*** 1065,1084 ****
  extern unsigned struct_sockaddr_ax25_sz;
  extern unsigned struct_unimapdesc_sz;
  extern unsigned struct_unimapinit_sz;
- extern unsigned struct_sock_fprog_sz;
  #  endif  // SANITIZER_LINUX && !SANITIZER_ANDROID
  
  extern const unsigned long __sanitizer_bufsiz;
  
! #if SANITIZER_LINUX && !SANITIZER_ANDROID
  extern unsigned struct_audio_buf_info_sz;
  extern unsigned struct_ppp_stats_sz;
! #endif  // (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID
  
! #if !SANITIZER_ANDROID && !SANITIZER_APPLE
  extern unsigned struct_sioc_sg_req_sz;
  extern unsigned struct_sioc_vif_req_sz;
! #endif
  
  // ioctl request identifiers
  
--- 1126,1146 ----
  extern unsigned struct_sockaddr_ax25_sz;
  extern unsigned struct_unimapdesc_sz;
  extern unsigned struct_unimapinit_sz;
  #  endif  // SANITIZER_LINUX && !SANITIZER_ANDROID
  
  extern const unsigned long __sanitizer_bufsiz;
  
! #  if SANITIZER_LINUX && !SANITIZER_ANDROID
  extern unsigned struct_audio_buf_info_sz;
  extern unsigned struct_ppp_stats_sz;
! #  endif  // (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID
  
! #  if !SANITIZER_ANDROID && !SANITIZER_APPLE
  extern unsigned struct_sioc_sg_req_sz;
  extern unsigned struct_sioc_vif_req_sz;
! #  endif
! 
! extern unsigned fpos_t_sz;
  
  // ioctl request identifiers
  
*************** extern unsigned IOCTL_SIOCSIFMETRIC;
*** 1112,1140 ****
  extern unsigned IOCTL_SIOCSIFMTU;
  extern unsigned IOCTL_SIOCSIFNETMASK;
  extern unsigned IOCTL_SIOCSPGRP;
  extern unsigned IOCTL_TIOCCONS;
- extern unsigned IOCTL_TIOCEXCL;
  extern unsigned IOCTL_TIOCGETD;
  extern unsigned IOCTL_TIOCGPGRP;
  extern unsigned IOCTL_TIOCGWINSZ;
  extern unsigned IOCTL_TIOCMBIC;
  extern unsigned IOCTL_TIOCMBIS;
  extern unsigned IOCTL_TIOCMGET;
  extern unsigned IOCTL_TIOCMSET;
- extern unsigned IOCTL_TIOCNOTTY;
  extern unsigned IOCTL_TIOCNXCL;
  extern unsigned IOCTL_TIOCOUTQ;
- extern unsigned IOCTL_TIOCPKT;
  extern unsigned IOCTL_TIOCSCTTY;
- extern unsigned IOCTL_TIOCSETD;
  extern unsigned IOCTL_TIOCSPGRP;
- extern unsigned IOCTL_TIOCSTI;
  extern unsigned IOCTL_TIOCSWINSZ;
! #if SANITIZER_LINUX && !SANITIZER_ANDROID
  extern unsigned IOCTL_SIOCGETSGCNT;
  extern unsigned IOCTL_SIOCGETVIFCNT;
! #endif
! #if SANITIZER_LINUX
  extern unsigned IOCTL_EVIOCGABS;
  extern unsigned IOCTL_EVIOCGBIT;
  extern unsigned IOCTL_EVIOCGEFFECTS;
--- 1174,1204 ----
  extern unsigned IOCTL_SIOCSIFMTU;
  extern unsigned IOCTL_SIOCSIFNETMASK;
  extern unsigned IOCTL_SIOCSPGRP;
+ #  if !SANITIZER_HAIKU
  extern unsigned IOCTL_TIOCCONS;
  extern unsigned IOCTL_TIOCGETD;
+ extern unsigned IOCTL_TIOCNOTTY;
+ extern unsigned IOCTL_TIOCPKT;
+ extern unsigned IOCTL_TIOCSETD;
+ extern unsigned IOCTL_TIOCSTI;
+ #  endif
+ extern unsigned IOCTL_TIOCEXCL;
  extern unsigned IOCTL_TIOCGPGRP;
  extern unsigned IOCTL_TIOCGWINSZ;
  extern unsigned IOCTL_TIOCMBIC;
  extern unsigned IOCTL_TIOCMBIS;
  extern unsigned IOCTL_TIOCMGET;
  extern unsigned IOCTL_TIOCMSET;
  extern unsigned IOCTL_TIOCNXCL;
  extern unsigned IOCTL_TIOCOUTQ;
  extern unsigned IOCTL_TIOCSCTTY;
  extern unsigned IOCTL_TIOCSPGRP;
  extern unsigned IOCTL_TIOCSWINSZ;
! #  if SANITIZER_LINUX && !SANITIZER_ANDROID
  extern unsigned IOCTL_SIOCGETSGCNT;
  extern unsigned IOCTL_SIOCGETVIFCNT;
! #  endif
! #  if SANITIZER_LINUX
  extern unsigned IOCTL_EVIOCGABS;
  extern unsigned IOCTL_EVIOCGBIT;
  extern unsigned IOCTL_EVIOCGEFFECTS;
*************** extern unsigned IOCTL_SNDCTL_COPR_SENDMS
*** 1274,1285 ****
  extern unsigned IOCTL_SNDCTL_COPR_WCODE;
  extern unsigned IOCTL_SNDCTL_COPR_WDATA;
  extern unsigned IOCTL_TCFLSH;
- extern unsigned IOCTL_TCGETS;
  extern unsigned IOCTL_TCSBRK;
  extern unsigned IOCTL_TCSBRKP;
  extern unsigned IOCTL_TCSETS;
  extern unsigned IOCTL_TCSETSF;
  extern unsigned IOCTL_TCSETSW;
  extern unsigned IOCTL_TCXONC;
  extern unsigned IOCTL_TIOCGLCKTRMIOS;
  extern unsigned IOCTL_TIOCGSOFTCAR;
--- 1338,1351 ----
  extern unsigned IOCTL_SNDCTL_COPR_WCODE;
  extern unsigned IOCTL_SNDCTL_COPR_WDATA;
  extern unsigned IOCTL_TCFLSH;
  extern unsigned IOCTL_TCSBRK;
  extern unsigned IOCTL_TCSBRKP;
+ #    if SANITIZER_TERMIOS_IOCTL_CONSTANTS
+ extern unsigned IOCTL_TCGETS;
  extern unsigned IOCTL_TCSETS;
  extern unsigned IOCTL_TCSETSF;
  extern unsigned IOCTL_TCSETSW;
+ #    endif
  extern unsigned IOCTL_TCXONC;
  extern unsigned IOCTL_TIOCGLCKTRMIOS;
  extern unsigned IOCTL_TIOCGSOFTCAR;
*************** extern unsigned IOCTL_VT_OPENQRY;
*** 1396,1404 ****
  extern unsigned IOCTL_VT_RELDISP;
  extern unsigned IOCTL_VT_SETMODE;
  extern unsigned IOCTL_VT_WAITACTIVE;
! #endif  // SANITIZER_LINUX
  
! #if SANITIZER_LINUX && !SANITIZER_ANDROID
  extern unsigned IOCTL_EQL_EMANCIPATE;
  extern unsigned IOCTL_EQL_ENSLAVE;
  extern unsigned IOCTL_EQL_GETMASTRCFG;
--- 1462,1470 ----
  extern unsigned IOCTL_VT_RELDISP;
  extern unsigned IOCTL_VT_SETMODE;
  extern unsigned IOCTL_VT_WAITACTIVE;
! #  endif  // SANITIZER_LINUX
  
! #  if SANITIZER_LINUX && !SANITIZER_ANDROID
  extern unsigned IOCTL_EQL_EMANCIPATE;
  extern unsigned IOCTL_EQL_ENSLAVE;
  extern unsigned IOCTL_EQL_GETMASTRCFG;
*************** extern unsigned IOCTL_KDSETMODE;
*** 1487,1517 ****
  extern unsigned IOCTL_KDSKBMODE;
  extern unsigned IOCTL_KIOCSOUND;
  extern unsigned IOCTL_PIO_SCRNMAP;
! #endif
  
  extern const int si_SEGV_MAPERR;
  extern const int si_SEGV_ACCERR;
  }  // namespace __sanitizer
  
! #define CHECK_TYPE_SIZE(TYPE) \
!   COMPILER_CHECK(sizeof(__sanitizer_##TYPE) == sizeof(TYPE))
  
! #define CHECK_SIZE_AND_OFFSET(CLASS, MEMBER)                      \
!   COMPILER_CHECK(sizeof(((__sanitizer_##CLASS *)NULL)->MEMBER) == \
!                  sizeof(((CLASS *)NULL)->MEMBER));                \
!   COMPILER_CHECK(offsetof(__sanitizer_##CLASS, MEMBER) ==         \
!                  offsetof(CLASS, MEMBER))
  
  // For sigaction, which is a function and struct at the same time,
  // and thus requires explicit "struct" in sizeof() expression.
! #define CHECK_STRUCT_SIZE_AND_OFFSET(CLASS, MEMBER)                      \
!   COMPILER_CHECK(sizeof(((struct __sanitizer_##CLASS *)NULL)->MEMBER) == \
!                  sizeof(((struct CLASS *)NULL)->MEMBER));                \
!   COMPILER_CHECK(offsetof(struct __sanitizer_##CLASS, MEMBER) ==         \
!                  offsetof(struct CLASS, MEMBER))
  
! #define SIGACTION_SYMNAME sigaction
  
! #endif  // SANITIZER_LINUX || SANITIZER_APPLE
  
  #endif
--- 1553,1596 ----
  extern unsigned IOCTL_KDSKBMODE;
  extern unsigned IOCTL_KIOCSOUND;
  extern unsigned IOCTL_PIO_SCRNMAP;
! #  endif
! 
! #  if SANITIZER_GLIBC
! struct __sanitizer_servent {
!   char *s_name;
!   char **s_aliases;
!   int s_port;
!   char *s_proto;
! };
! #  endif
  
  extern const int si_SEGV_MAPERR;
  extern const int si_SEGV_ACCERR;
  }  // namespace __sanitizer
  
! #  define CHECK_TYPE_SIZE(TYPE) \
!     COMPILER_CHECK(sizeof(__sanitizer_##TYPE) == sizeof(TYPE))
  
! #  define CHECK_SIZE_AND_OFFSET(CLASS, MEMBER)                      \
!     COMPILER_CHECK(sizeof(((__sanitizer_##CLASS *)NULL)->MEMBER) == \
!                    sizeof(((CLASS *)NULL)->MEMBER));                \
!     COMPILER_CHECK(offsetof(__sanitizer_##CLASS, MEMBER) ==         \
!                    offsetof(CLASS, MEMBER))
  
  // For sigaction, which is a function and struct at the same time,
  // and thus requires explicit "struct" in sizeof() expression.
! #  define CHECK_STRUCT_SIZE_AND_OFFSET(CLASS, MEMBER)                      \
!     COMPILER_CHECK(sizeof(((struct __sanitizer_##CLASS *)NULL)->MEMBER) == \
!                    sizeof(((struct CLASS *)NULL)->MEMBER));                \
!     COMPILER_CHECK(offsetof(struct __sanitizer_##CLASS, MEMBER) ==         \
!                    offsetof(struct CLASS, MEMBER))
  
! #  define SIGACTION_SYMNAME sigaction
  
! #  if SANITIZER_LINUX
! typedef void *__sanitizer_timer_t;
! #  endif
! 
! #endif  // SANITIZER_LINUX || SANITIZER_APPLE || SANITIZER_HAIKU
  
  #endif
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_platform_limits_solaris.cpp gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_platform_limits_solaris.cpp
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_platform_limits_solaris.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_platform_limits_solaris.cpp	Sun Dec  7 22:32:18 2025
***************
*** 32,37 ****
--- 32,38 ----
  #include <semaphore.h>
  #include <signal.h>
  #include <stddef.h>
+ #include <stdio.h>
  #include <sys/ethernet.h>
  #include <sys/filio.h>
  #include <sys/ipc.h>
*************** namespace __sanitizer {
*** 135,140 ****
--- 136,143 ----
    unsigned struct_sioc_sg_req_sz = sizeof(struct sioc_sg_req);
    unsigned struct_sioc_vif_req_sz = sizeof(struct sioc_vif_req);
  
+   unsigned fpos_t_sz = sizeof(fpos_t);
+ 
    const unsigned IOCTL_NOT_PRESENT = 0;
  
    unsigned IOCTL_FIOASYNC = FIOASYNC;
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_platform_limits_solaris.h gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_platform_limits_solaris.h
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_platform_limits_solaris.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_platform_limits_solaris.h	Sun Dec  7 22:32:18 2025
*************** extern unsigned struct_winsize_sz;
*** 418,423 ****
--- 418,425 ----
  extern unsigned struct_sioc_sg_req_sz;
  extern unsigned struct_sioc_vif_req_sz;
  
+ extern unsigned fpos_t_sz;
+ 
  // ioctl request identifiers
  
  // A special value to mark ioctls that are not present on the target platform,
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_posix.cpp gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_posix.cpp
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_posix.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_posix.cpp	Sun Dec  7 22:32:18 2025
*************** void *MapWritableFileToMemory(void *addr
*** 225,241 ****
    return (void *)p;
  }
  
! static inline bool IntervalsAreSeparate(uptr start1, uptr end1,
!                                         uptr start2, uptr end2) {
!   CHECK(start1 <= end1);
!   CHECK(start2 <= end2);
!   return (end1 < start2) || (end2 < start1);
! }
! 
  // FIXME: this is thread-unsafe, but should not cause problems most of the time.
! // When the shadow is mapped only a single thread usually exists (plus maybe
! // several worker threads on Mac, which aren't expected to map big chunks of
! // memory).
  bool MemoryRangeIsAvailable(uptr range_start, uptr range_end) {
    MemoryMappingLayout proc_maps(/*cache_enabled*/true);
    if (proc_maps.Error())
--- 225,233 ----
    return (void *)p;
  }
  
! #  if !SANITIZER_APPLE
  // FIXME: this is thread-unsafe, but should not cause problems most of the time.
! // When the shadow is mapped only a single thread usually exists
  bool MemoryRangeIsAvailable(uptr range_start, uptr range_end) {
    MemoryMappingLayout proc_maps(/*cache_enabled*/true);
    if (proc_maps.Error())
*************** bool MemoryRangeIsAvailable(uptr range_s
*** 251,257 ****
    return true;
  }
  
- #if !SANITIZER_APPLE
  void DumpProcessMap() {
    MemoryMappingLayout proc_maps(/*cache_enabled*/true);
    const sptr kBufSize = 4095;
--- 243,248 ----
*************** void DumpProcessMap() {
*** 265,271 ****
    Report("End of process memory map.\n");
    UnmapOrDie(filename, kBufSize);
  }
! #endif
  
  const char *GetPwd() {
    return GetEnv("PWD");
--- 256,262 ----
    Report("End of process memory map.\n");
    UnmapOrDie(filename, kBufSize);
  }
! #  endif
  
  const char *GetPwd() {
    return GetEnv("PWD");
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cpp gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cpp
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cpp	Sun Dec  7 22:32:18 2025
*************** typedef void (*sa_sigaction_t)(int, sigi
*** 47,52 ****
--- 47,54 ----
  
  namespace __sanitizer {
  
+ [[maybe_unused]] static atomic_uint8_t signal_handler_is_from_sanitizer[64];
+ 
  u32 GetUid() {
    return getuid();
  }
*************** void UnsetAlternateSignalStack() {
*** 210,215 ****
--- 212,231 ----
    UnmapOrDie(oldstack.ss_sp, oldstack.ss_size);
  }
  
+ bool IsSignalHandlerFromSanitizer(int signum) {
+   return atomic_load(&signal_handler_is_from_sanitizer[signum],
+                      memory_order_relaxed);
+ }
+ 
+ bool SetSignalHandlerFromSanitizer(int signum, bool new_state) {
+   if (signum < 0 || static_cast<unsigned>(signum) >=
+                         ARRAY_SIZE(signal_handler_is_from_sanitizer))
+     return false;
+ 
+   return atomic_exchange(&signal_handler_is_from_sanitizer[signum], new_state,
+                          memory_order_relaxed);
+ }
+ 
  static void MaybeInstallSigaction(int signum,
                                    SignalHandlerType handler) {
    if (GetHandleSignalMode(signum) == kHandleSignalNo) return;
*************** static void MaybeInstallSigaction(int si
*** 223,228 ****
--- 239,247 ----
    if (common_flags()->use_sigaltstack) sigact.sa_flags |= SA_ONSTACK;
    CHECK_EQ(0, internal_sigaction(signum, &sigact, nullptr));
    VReport(1, "Installed the sigaction for signal %d\n", signum);
+ 
+   if (common_flags()->cloak_sanitizer_signal_handlers)
+     SetSignalHandlerFromSanitizer(signum, true);
  }
  
  void InstallDeadlySignalHandlers(SignalHandlerType handler) {
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_procmaps.h gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_procmaps.h
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_procmaps.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_procmaps.h	Sun Dec  7 22:32:18 2025
***************
*** 16,22 ****
  #include "sanitizer_platform.h"
  
  #if SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD || \
!     SANITIZER_APPLE || SANITIZER_SOLARIS ||  \
      SANITIZER_FUCHSIA
  
  #include "sanitizer_common.h"
--- 16,22 ----
  #include "sanitizer_platform.h"
  
  #if SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD || \
!     SANITIZER_APPLE || SANITIZER_SOLARIS || SANITIZER_HAIKU ||  \
      SANITIZER_FUCHSIA
  
  #include "sanitizer_common.h"
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_procmaps_mac.cpp gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_procmaps_mac.cpp
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_procmaps_mac.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_procmaps_mac.cpp	Sun Dec  7 22:32:18 2025
***************
*** 20,37 ****
  #include <mach/mach.h>
  
  // These are not available in older macOS SDKs.
! #ifndef CPU_SUBTYPE_X86_64_H
! #define CPU_SUBTYPE_X86_64_H  ((cpu_subtype_t)8)   /* Haswell */
! #endif
! #ifndef CPU_SUBTYPE_ARM_V7S
! #define CPU_SUBTYPE_ARM_V7S   ((cpu_subtype_t)11)  /* Swift */
! #endif
! #ifndef CPU_SUBTYPE_ARM_V7K
! #define CPU_SUBTYPE_ARM_V7K   ((cpu_subtype_t)12)
! #endif
! #ifndef CPU_TYPE_ARM64
! #define CPU_TYPE_ARM64        (CPU_TYPE_ARM | CPU_ARCH_ABI64)
! #endif
  
  namespace __sanitizer {
  
--- 20,40 ----
  #include <mach/mach.h>
  
  // These are not available in older macOS SDKs.
! #  ifndef CPU_SUBTYPE_X86_64_H
! #    define CPU_SUBTYPE_X86_64_H ((cpu_subtype_t)8) /* Haswell */
! #  endif
! #  ifndef CPU_SUBTYPE_ARM_V7S
! #    define CPU_SUBTYPE_ARM_V7S ((cpu_subtype_t)11) /* Swift */
! #  endif
! #  ifndef CPU_SUBTYPE_ARM_V7K
! #    define CPU_SUBTYPE_ARM_V7K ((cpu_subtype_t)12)
! #  endif
! #  ifndef CPU_TYPE_ARM64
! #    define CPU_TYPE_ARM64 (CPU_TYPE_ARM | CPU_ARCH_ABI64)
! #  endif
! #  ifndef CPU_SUBTYPE_ARM64E
! #    define CPU_SUBTYPE_ARM64E ((cpu_subtype_t)2)
! #  endif
  
  namespace __sanitizer {
  
*************** struct MemoryMappedSegmentData {
*** 42,48 ****
    const char *current_load_cmd_addr;
    u32 lc_type;
    uptr base_virt_addr;
-   uptr addr_mask;
  };
  
  template <typename Section>
--- 45,50 ----
*************** static void NextSectionLoad(LoadedModule
*** 51,62 ****
    const Section *sc = (const Section *)data->current_load_cmd_addr;
    data->current_load_cmd_addr += sizeof(Section);
  
!   uptr sec_start = (sc->addr & data->addr_mask) + data->base_virt_addr;
    uptr sec_end = sec_start + sc->size;
    module->addAddressRange(sec_start, sec_end, /*executable=*/false, isWritable,
                            sc->sectname);
  }
  
  void MemoryMappedSegment::AddAddressRanges(LoadedModule *module) {
    // Don't iterate over sections when the caller hasn't set up the
    // data pointer, when there are no sections, or when the segment
--- 53,112 ----
    const Section *sc = (const Section *)data->current_load_cmd_addr;
    data->current_load_cmd_addr += sizeof(Section);
  
!   uptr sec_start = sc->addr + data->base_virt_addr;
    uptr sec_end = sec_start + sc->size;
    module->addAddressRange(sec_start, sec_end, /*executable=*/false, isWritable,
                            sc->sectname);
  }
  
+ static bool VerifyMemoryMapping(MemoryMappingLayout* mapping) {
+   InternalMmapVector<LoadedModule> modules;
+   modules.reserve(128);  // matches DumpProcessMap
+   mapping->DumpListOfModules(&modules);
+ 
+   InternalMmapVector<LoadedModule::AddressRange> segments;
+   for (uptr i = 0; i < modules.size(); ++i) {
+     for (auto& range : modules[i].ranges()) {
+       segments.push_back(range);
+     }
+   }
+ 
+   // Verify that none of the segments overlap:
+   // 1. Sort the segments by the start address
+   // 2. Check that every segment starts after the previous one ends.
+   Sort(segments.data(), segments.size(),
+        [](LoadedModule::AddressRange& a, LoadedModule::AddressRange& b) {
+          return a.beg < b.beg;
+        });
+ 
+   // To avoid spam, we only print the report message once-per-process.
+   static bool invalid_module_map_reported = false;
+   bool well_formed = true;
+ 
+   for (size_t i = 1; i < segments.size(); i++) {
+     uptr cur_start = segments[i].beg;
+     uptr prev_end = segments[i - 1].end;
+     if (cur_start < prev_end) {
+       well_formed = false;
+       VReport(2, "Overlapping mappings: %s start = %p, %s end = %p\n",
+               segments[i].name, (void*)cur_start, segments[i - 1].name,
+               (void*)prev_end);
+       if (!invalid_module_map_reported) {
+         Report(
+             "WARN: Invalid dyld module map detected. This is most likely a bug "
+             "in the sanitizer.\n");
+         Report("WARN: Backtraces may be unreliable.\n");
+         invalid_module_map_reported = true;
+       }
+     }
+   }
+ 
+   for (auto& m : modules) m.clear();
+ 
+   mapping->Reset();
+   return well_formed;
+ }
+ 
  void MemoryMappedSegment::AddAddressRanges(LoadedModule *module) {
    // Don't iterate over sections when the caller hasn't set up the
    // data pointer, when there are no sections, or when the segment
*************** void MemoryMappedSegment::AddAddressRang
*** 82,87 ****
--- 132,138 ----
  
  MemoryMappingLayout::MemoryMappingLayout(bool cache_enabled) {
    Reset();
+   VerifyMemoryMapping(this);
  }
  
  MemoryMappingLayout::~MemoryMappingLayout() {
*************** static bool IsDyldHdr(const mach_header
*** 146,158 ****
  // until we hit a Mach header matching dyld instead. These recurse
  // calls are expensive, but the first memory map generation occurs
  // early in the process, when dyld is one of the only images loaded,
! // so it will be hit after only a few iterations.  These assumptions don't
! // hold on macOS 13+ anymore (dyld itself has moved into the shared cache).
! 
! // FIXME: Unfortunately, the upstream revised version to deal with macOS 13+
! // is incompatible with GCC and also uses APIs not available on earlier
! // systems which we support; backed out for now.
! 
  static mach_header *GetDyldImageHeaderViaVMRegion() {
    vm_address_t address = 0;
  
--- 197,204 ----
  // until we hit a Mach header matching dyld instead. These recurse
  // calls are expensive, but the first memory map generation occurs
  // early in the process, when dyld is one of the only images loaded,
! // so it will be hit after only a few iterations.  These assumptions don't hold
! // on macOS 13+ anymore (dyld itself has moved into the shared cache).
  static mach_header *GetDyldImageHeaderViaVMRegion() {
    vm_address_t address = 0;
  
*************** static mach_header *GetDyldImageHeaderVi
*** 176,192 ****
    }
  }
  
  const mach_header *get_dyld_hdr() {
    if (!dyld_hdr) {
      // On macOS 13+, dyld itself has moved into the shared cache.  Looking it up
      // via vm_region_recurse_64() causes spins/hangs/crashes.
-     // FIXME: find a way to do this compatible with GCC.
      if (GetMacosAlignedVersion() >= MacosVersion(13, 0)) {
          VReport(1,
!                 "looking up the dyld image header in the shared cache on "
!                 "macOS 13+ is not yet supported.  Falling back to "
                  "lookup via vm_region_recurse_64().\n");
          dyld_hdr = GetDyldImageHeaderViaVMRegion();
      } else {
        dyld_hdr = GetDyldImageHeaderViaVMRegion();
      }
--- 222,399 ----
    }
  }
  
+ extern "C" {
+ struct dyld_shared_cache_dylib_text_info {
+   uint64_t version;  // current version 2
+   // following fields all exist in version 1
+   uint64_t loadAddressUnslid;
+   uint64_t textSegmentSize;
+   uuid_t dylibUuid;
+   const char *path;  // pointer invalid at end of iterations
+   // following fields all exist in version 2
+   uint64_t textSegmentOffset;  // offset from start of cache
+ };
+ typedef struct dyld_shared_cache_dylib_text_info
+     dyld_shared_cache_dylib_text_info;
+ 
+ extern bool _dyld_get_shared_cache_uuid(uuid_t uuid);
+ extern const void *_dyld_get_shared_cache_range(size_t *length);
+ extern intptr_t _dyld_get_image_slide(const struct mach_header* mh);
+ } // extern "C"
+ 
+ #ifdef __BLOCKS__
+ extern "C" {
+ extern int dyld_shared_cache_iterate_text(
+     const uuid_t cacheUuid,
+     void (^callback)(const dyld_shared_cache_dylib_text_info *info));
+ }  // extern "C"
+ 
+ static mach_header *GetDyldImageHeaderViaSharedCache(uuid_t uuid) {
+   size_t cacheLength;
+   const uptr cacheStart = (uptr)_dyld_get_shared_cache_range(&cacheLength);
+   CHECK(cacheStart && cacheLength);
+ 
+   __block mach_header *dyldHdr = nullptr;
+   int res = dyld_shared_cache_iterate_text(
+       uuid, ^(const dyld_shared_cache_dylib_text_info *info) {
+         CHECK_GE(info->version, 2);
+         mach_header *hdr =
+             (mach_header *)(cacheStart + info->textSegmentOffset);
+         if (IsDyldHdr(hdr))
+           dyldHdr = hdr;
+       });
+   CHECK_EQ(res, 0);
+ 
+   return dyldHdr;
+ }
+ 
+ #else
+ 
+ /* Here we implement a manual emulation of the Blocks closure and callback
+    that is needed by dyld_shared_cache_iterate_text ().  In the compiler-
+    generated code, the [local] names are mangled differently, but that
+    should not matter to the function (since all the entities are TU-local).  */
+ 
+ extern "C" {
+ /* Some descriptions of the blocks interfaces/runtime that we need.  */
+ extern void *_NSConcreteStackBlock;
+ extern void _Block_object_assign(void *, void *, int);
+ extern void _Block_object_dispose(void *, int);
+ enum {
+   BLOCK_FIELD_IS_OBJECT   =  3,  /* id, NSObject, __attribute__((NSObject)), block, ... */
+   BLOCK_FIELD_IS_BLOCK    =  7,  /* a block variable */
+   BLOCK_FIELD_IS_BYREF    =  8,  /* the on stack structure holding the __block variable */
+   BLOCK_FIELD_IS_WEAK     = 16,  /* declared __weak, only used in byref copy helpers */
+   BLOCK_BYREF_CALLER      = 128  /* called from __block (byref) copy/dispose support routines. */
+ };
+ 
+ /* 1. __block mach_header *dyldHdr; Uses this on-stack object.  */
+ typedef struct __block_byref_dyldHdr {
+     void *__isa;
+     struct __block_byref_dyldHdr *forwarding;
+     int flags;   // 1<<25 iff we need copy helper;
+     int size;
+     mach_header *dyldHdr_cp;
+ } dyldHdr_type;
+ 
+ /* The closure, support functions and the actuall callback code.  */
+ /* 1. closure descriptor.  A constant instance of this will be created.  */
+ struct Block_descriptor_cb {
+   unsigned long int reserved;     // NULL
+   unsigned long int size;         // sizeof(struct Block_literal_cb)
+   // optional helper functions
+   void (*copy_helper)(struct Block_literal_cb *dst, struct Block_literal_cb *src);     // IFF (1<<25)
+   void (*dispose_helper)(struct Block_literal_cb *src);             // IFF (1<<25)
+   // required ABI.2010.3.16
+   const char *signature;                         // IFF (1<<30)
+   void *no_idea; // not documented in the current ABI
+ };
+ 
+ /* 2. This is the closure object.  In this case, it will be allocated on the
+       stack and does not need to be moved (since the closure never escapes
+       from its enclosing scope).  However, the infrastructure still provides
+       support for moving it to the heap if required.  */
+ typedef struct Block_literal_cb {
+   void *__isa;
+   int flags;
+   int reserved;
+   void (*invoke) (Block_literal_cb*, const dyld_shared_cache_dylib_text_info *info);
+   const struct Block_descriptor_cb *descriptor;
+   dyldHdr_type *h_holder;
+   uptr cache_start;
+ } CallbackBlk;
+ 
+ /* 3. Supporting functions to allow for the closure to be copied to the heap on
+    demand.  */
+ static void
+ __block_copy_cb (struct Block_literal_cb *dst, struct Block_literal_cb *src)
+ {
+   //_Block_byref_assign_copy(&dst->captured_i, src->captured_i);
+   _Block_object_assign(&dst->h_holder, src->h_holder, BLOCK_FIELD_IS_BYREF);
+ }
+ 
+ static void
+ __block_dispose_cb (struct Block_literal_cb *src) {
+    //_Block_byref_release(src->captured_i);
+   _Block_object_dispose(src->h_holder, BLOCK_FIELD_IS_BYREF);
+ }
+ 
+ /* 4. Here is the actual code implementing the callback.  */
+ static void
+ __block_invoke_cb (struct Block_literal_cb *_block,
+ 		   const dyld_shared_cache_dylib_text_info *info)
+ {
+   mach_header *hdr = (mach_header *)(_block->cache_start + info->textSegmentOffset);
+   if (IsDyldHdr(hdr))
+     _block->h_holder->forwarding->dyldHdr_cp = hdr;
+ }
+ 
+ /* 6. The constant instance of the descriptor mentioned in 1 above.  */
+ static const struct Block_descriptor_cb cb_descr = {
+     0, sizeof (struct Block_literal_cb), __block_copy_cb, __block_dispose_cb,
+     "v16@?0r^{dyld_shared_cache_dylib_text_info=QQQ[16C]*Q}8", nullptr
+ };
+ 
+ /* Declare dyld_shared_cache_iterate_text () as taking a regular pointer to
+    the closure; we cannot use the ^ syntax yet in GCC.  */
+ extern int dyld_shared_cache_iterate_text(const uuid_t cacheUuid, CallbackBlk*);
+ }  // extern "C"
+ 
+ /* The non-blocks version of GetDyldImageHeaderViaSharedCache ().  */
+ static mach_header *GetDyldImageHeaderViaSharedCache(uuid_t uuid) {
+   size_t cacheLength;
+   const uptr cacheStart = (uptr)_dyld_get_shared_cache_range(&cacheLength);
+   CHECK(cacheStart && cacheLength);
+   /* __block mach_header *dyldHdr = nullptr; */
+   dyldHdr_type dyldHdr
+     = { nullptr, &dyldHdr, 0, sizeof (struct __block_byref_dyldHdr), nullptr };
+   /* Callback cb = ^(const dyld_shared_cache_dylib_text_info *info... */
+   CallbackBlk cb
+     = { _NSConcreteStackBlock, 0x42000000, 0, __block_invoke_cb,
+         &cb_descr, &dyldHdr, cacheStart };
+   int res = dyld_shared_cache_iterate_text ( uuid, &cb );
+   CHECK_EQ(res, 0);
+   return dyldHdr.forwarding->dyldHdr_cp;
+ }
+ #endif
+ 
  const mach_header *get_dyld_hdr() {
    if (!dyld_hdr) {
      // On macOS 13+, dyld itself has moved into the shared cache.  Looking it up
      // via vm_region_recurse_64() causes spins/hangs/crashes.
      if (GetMacosAlignedVersion() >= MacosVersion(13, 0)) {
+       uuid_t uuid;
+       if (!_dyld_get_shared_cache_uuid(uuid))
+         VReport(1, "Failed get the shared cache on macOS 13+\n");
+       else
+         dyld_hdr = GetDyldImageHeaderViaSharedCache(uuid);
+       if (!dyld_hdr) {
          VReport(1,
!                 "Failed to lookup the dyld image header in the shared cache on "
!                 "macOS 13+ (or no shared cache in use).  Falling back to "
                  "lookup via vm_region_recurse_64().\n");
          dyld_hdr = GetDyldImageHeaderViaVMRegion();
+       }
      } else {
        dyld_hdr = GetDyldImageHeaderViaVMRegion();
      }
*************** static bool NextSegmentLoad(MemoryMapped
*** 213,235 ****
    layout_data->current_load_cmd_count--;
    if (((const load_command *)lc)->cmd == kLCSegment) {
      const SegmentCommand* sc = (const SegmentCommand *)lc;
!     uptr base_virt_addr, addr_mask;
!     if (layout_data->current_image == kDyldImageIdx) {
!       base_virt_addr = (uptr)get_dyld_hdr();
!       // vmaddr is masked with 0xfffff because on macOS versions < 10.12,
!       // it contains an absolute address rather than an offset for dyld.
!       // To make matters even more complicated, this absolute address
!       // isn't actually the absolute segment address, but the offset portion
!       // of the address is accurate when combined with the dyld base address,
!       // and the mask will give just this offset.
!       addr_mask = 0xfffff;
!     } else {
        base_virt_addr =
            (uptr)_dyld_get_image_vmaddr_slide(layout_data->current_image);
-       addr_mask = ~0;
-     }
  
!     segment->start = (sc->vmaddr & addr_mask) + base_virt_addr;
      segment->end = segment->start + sc->vmsize;
      // Most callers don't need section information, so only fill this struct
      // when required.
--- 420,440 ----
    layout_data->current_load_cmd_count--;
    if (((const load_command *)lc)->cmd == kLCSegment) {
      const SegmentCommand* sc = (const SegmentCommand *)lc;
!     if (internal_strcmp(sc->segname, "__LINKEDIT") == 0) {
!       // The LINKEDIT sections are for internal linker use, and may alias
!       // with the LINKEDIT section for other modules. (If we included them,
!       // our memory map would contain overlappping sections.)
!       return false;
!     }
! 
!     uptr base_virt_addr;
!     if (layout_data->current_image == kDyldImageIdx)
!       base_virt_addr = (uptr)_dyld_get_image_slide(get_dyld_hdr());
!     else
        base_virt_addr =
            (uptr)_dyld_get_image_vmaddr_slide(layout_data->current_image);
  
!     segment->start = sc->vmaddr + base_virt_addr;
      segment->end = segment->start + sc->vmsize;
      // Most callers don't need section information, so only fill this struct
      // when required.
*************** static bool NextSegmentLoad(MemoryMapped
*** 239,247 ****
            (const char *)lc + sizeof(SegmentCommand);
        seg_data->lc_type = kLCSegment;
        seg_data->base_virt_addr = base_virt_addr;
-       seg_data->addr_mask = addr_mask;
        internal_strncpy(seg_data->name, sc->segname,
                         ARRAY_SIZE(seg_data->name));
      }
  
      // Return the initial protection.
--- 444,452 ----
            (const char *)lc + sizeof(SegmentCommand);
        seg_data->lc_type = kLCSegment;
        seg_data->base_virt_addr = base_virt_addr;
        internal_strncpy(seg_data->name, sc->segname,
                         ARRAY_SIZE(seg_data->name));
+       seg_data->name[ARRAY_SIZE(seg_data->name) - 1] = 0;
      }
  
      // Return the initial protection.
*************** static bool NextSegmentLoad(MemoryMapped
*** 255,260 ****
--- 460,466 ----
                              ? kDyldPath
                              : _dyld_get_image_name(layout_data->current_image);
        internal_strncpy(segment->filename, src, segment->filename_size);
+       segment->filename[segment->filename_size - 1] = 0;
      }
      segment->arch = layout_data->current_arch;
      internal_memcpy(segment->uuid, layout_data->current_uuid, kModuleUUIDSize);
*************** ModuleArch ModuleArchFromCpuType(cpu_typ
*** 269,286 ****
      case CPU_TYPE_I386:
        return kModuleArchI386;
      case CPU_TYPE_X86_64:
!       if (cpusubtype == CPU_SUBTYPE_X86_64_ALL) return kModuleArchX86_64;
!       if (cpusubtype == CPU_SUBTYPE_X86_64_H) return kModuleArchX86_64H;
        CHECK(0 && "Invalid subtype of x86_64");
        return kModuleArchUnknown;
      case CPU_TYPE_ARM:
!       if (cpusubtype == CPU_SUBTYPE_ARM_V6) return kModuleArchARMV6;
!       if (cpusubtype == CPU_SUBTYPE_ARM_V7) return kModuleArchARMV7;
!       if (cpusubtype == CPU_SUBTYPE_ARM_V7S) return kModuleArchARMV7S;
!       if (cpusubtype == CPU_SUBTYPE_ARM_V7K) return kModuleArchARMV7K;
        CHECK(0 && "Invalid subtype of ARM");
        return kModuleArchUnknown;
      case CPU_TYPE_ARM64:
        return kModuleArchARM64;
      default:
        CHECK(0 && "Invalid CPU type");
--- 475,500 ----
      case CPU_TYPE_I386:
        return kModuleArchI386;
      case CPU_TYPE_X86_64:
!       if (cpusubtype == CPU_SUBTYPE_X86_64_ALL)
!         return kModuleArchX86_64;
!       if (cpusubtype == CPU_SUBTYPE_X86_64_H)
!         return kModuleArchX86_64H;
        CHECK(0 && "Invalid subtype of x86_64");
        return kModuleArchUnknown;
      case CPU_TYPE_ARM:
!       if (cpusubtype == CPU_SUBTYPE_ARM_V6)
!         return kModuleArchARMV6;
!       if (cpusubtype == CPU_SUBTYPE_ARM_V7)
!         return kModuleArchARMV7;
!       if (cpusubtype == CPU_SUBTYPE_ARM_V7S)
!         return kModuleArchARMV7S;
!       if (cpusubtype == CPU_SUBTYPE_ARM_V7K)
!         return kModuleArchARMV7K;
        CHECK(0 && "Invalid subtype of ARM");
        return kModuleArchUnknown;
      case CPU_TYPE_ARM64:
+       if (cpusubtype == CPU_SUBTYPE_ARM64E)
+         return kModuleArchARM64E;
        return kModuleArchARM64;
      default:
        CHECK(0 && "Invalid CPU type");
*************** static const load_command *NextCommand(c
*** 292,300 ****
    return (const load_command *)((const char *)lc + lc->cmdsize);
  }
  
! static void FindUUID(const load_command *first_lc, u8 *uuid_output) {
!   for (const load_command *lc = first_lc; lc->cmd != 0; lc = NextCommand(lc)) {
!     if (lc->cmd != LC_UUID) continue;
  
      const uuid_command *uuid_lc = (const uuid_command *)lc;
      const uint8_t *uuid = &uuid_lc->uuid[0];
--- 506,527 ----
    return (const load_command *)((const char *)lc + lc->cmdsize);
  }
  
! #  ifdef MH_MAGIC_64
! static constexpr size_t header_size = sizeof(mach_header_64);
! #  else
! static constexpr size_t header_size = sizeof(mach_header);
! #  endif
! 
! static void FindUUID(const load_command *first_lc, const mach_header *hdr,
!                      u8 *uuid_output) {
!   uint32_t curcmd = 0;
!   for (const load_command *lc = first_lc; curcmd < hdr->ncmds;
!        curcmd++, lc = NextCommand(lc)) {
!     CHECK_LT((const char *)lc,
!              (const char *)hdr + header_size + hdr->sizeofcmds);
! 
!     if (lc->cmd != LC_UUID)
!       continue;
  
      const uuid_command *uuid_lc = (const uuid_command *)lc;
      const uint8_t *uuid = &uuid_lc->uuid[0];
*************** static void FindUUID(const load_command
*** 303,311 ****
    }
  }
  
! static bool IsModuleInstrumented(const load_command *first_lc) {
!   for (const load_command *lc = first_lc; lc->cmd != 0; lc = NextCommand(lc)) {
!     if (lc->cmd != LC_LOAD_DYLIB) continue;
  
      const dylib_command *dylib_lc = (const dylib_command *)lc;
      uint32_t dylib_name_offset = dylib_lc->dylib.name.offset;
--- 530,545 ----
    }
  }
  
! static bool IsModuleInstrumented(const load_command *first_lc,
!                                  const mach_header *hdr) {
!   uint32_t curcmd = 0;
!   for (const load_command *lc = first_lc; curcmd < hdr->ncmds;
!        curcmd++, lc = NextCommand(lc)) {
!     CHECK_LT((const char *)lc,
!              (const char *)hdr + header_size + hdr->sizeofcmds);
! 
!     if (lc->cmd != LC_LOAD_DYLIB)
!       continue;
  
      const dylib_command *dylib_lc = (const dylib_command *)lc;
      uint32_t dylib_name_offset = dylib_lc->dylib.name.offset;
*************** bool MemoryMappingLayout::Next(MemoryMap
*** 351,360 ****
            continue;
          }
        }
!       FindUUID((const load_command *)data_.current_load_cmd_addr,
                 data_.current_uuid);
        data_.current_instrumented = IsModuleInstrumented(
!           (const load_command *)data_.current_load_cmd_addr);
      }
  
      while (data_.current_load_cmd_count > 0) {
--- 585,594 ----
            continue;
          }
        }
!       FindUUID((const load_command *)data_.current_load_cmd_addr, hdr,
                 data_.current_uuid);
        data_.current_instrumented = IsModuleInstrumented(
!           (const load_command *)data_.current_load_cmd_addr, hdr);
      }
  
      while (data_.current_load_cmd_count > 0) {
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_procmaps_solaris.cpp gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_procmaps_solaris.cpp
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_procmaps_solaris.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_procmaps_solaris.cpp	Sun Dec  7 22:32:18 2025
***************
*** 9,17 ****
  // Information about the process mappings (Solaris-specific parts).
  //===----------------------------------------------------------------------===//
  
- // Before Solaris 11.4, <procfs.h> doesn't work in a largefile environment.
- #undef _FILE_OFFSET_BITS
- 
  // Avoid conflict between `_TIME_BITS` defined vs. `_FILE_OFFSET_BITS`
  // undefined in some Linux configurations.
  #undef _TIME_BITS
--- 9,14 ----
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_redefine_builtins.h gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_redefine_builtins.h
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_redefine_builtins.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_redefine_builtins.h	Sun Dec  7 22:32:18 2025
***************
*** 15,21 ****
  #    define SANITIZER_REDEFINE_BUILTINS_H
  
  // The asm hack only works with GCC and Clang.
! #    if !defined(_WIN32) && defined(HAVE_AS_SYM_ASSIGN)
  
  asm(R"(
      .set memcpy, __sanitizer_internal_memcpy
--- 15,21 ----
  #    define SANITIZER_REDEFINE_BUILTINS_H
  
  // The asm hack only works with GCC and Clang.
! #    if !defined(_WIN32) && !defined(_AIX) && !defined(__APPLE__)
  
  asm(R"(
      .set memcpy, __sanitizer_internal_memcpy
*************** using vector = Define_SANITIZER_COMMON_N
*** 52,58 ****
  }  // namespace std
  
  #      endif  // __cpluplus
! #    endif    // !_WIN32 && HAVE_AS_SYM_ASSIGN
  
  #  endif  // SANITIZER_REDEFINE_BUILTINS_H
  #endif    // SANITIZER_COMMON_NO_REDEFINE_BUILTINS
--- 52,58 ----
  }  // namespace std
  
  #      endif  // __cpluplus
! #    endif    // !_WIN32
  
  #  endif  // SANITIZER_REDEFINE_BUILTINS_H
  #endif    // SANITIZER_COMMON_NO_REDEFINE_BUILTINS
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_signal_interceptors.inc gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_signal_interceptors.inc
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_signal_interceptors.inc	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_signal_interceptors.inc	Sun Dec  7 22:32:18 2025
*************** using namespace __sanitizer;
*** 45,50 ****
--- 45,52 ----
  INTERCEPTOR(uptr, bsd_signal, int signum, uptr handler) {
    SIGNAL_INTERCEPTOR_ENTER();
    if (GetHandleSignalMode(signum) == kHandleSignalExclusive) return 0;
+ 
+   // TODO: support cloak_sanitizer_signal_handlers
    SIGNAL_INTERCEPTOR_SIGNAL_IMPL(bsd_signal, signum, handler);
  }
  #define INIT_BSD_SIGNAL COMMON_INTERCEPT_FUNCTION(bsd_signal)
*************** INTERCEPTOR(uptr, bsd_signal, int signum
*** 56,74 ****
  INTERCEPTOR(uptr, signal, int signum, uptr handler) {
    SIGNAL_INTERCEPTOR_ENTER();
    if (GetHandleSignalMode(signum) == kHandleSignalExclusive)
      return (uptr) nullptr;
!   SIGNAL_INTERCEPTOR_SIGNAL_IMPL(signal, signum, handler);
  }
  #define INIT_SIGNAL COMMON_INTERCEPT_FUNCTION(signal)
  
  INTERCEPTOR(int, sigaction_symname, int signum,
              const __sanitizer_sigaction *act, __sanitizer_sigaction *oldact) {
    SIGNAL_INTERCEPTOR_ENTER();
    if (GetHandleSignalMode(signum) == kHandleSignalExclusive) {
      if (!oldact) return 0;
      act = nullptr;
    }
!   SIGNAL_INTERCEPTOR_SIGACTION_IMPL(signum, act, oldact);
  }
  #define INIT_SIGACTION COMMON_INTERCEPT_FUNCTION(sigaction_symname)
  
--- 58,112 ----
  INTERCEPTOR(uptr, signal, int signum, uptr handler) {
    SIGNAL_INTERCEPTOR_ENTER();
    if (GetHandleSignalMode(signum) == kHandleSignalExclusive)
+     // The user can neither view nor change the signal handler, regardless of
+     // the cloak_sanitizer_signal_handlers setting. This differs from
+     // sigaction().
      return (uptr) nullptr;
! 
!   uptr ret = +[](auto signal, int signum, uptr handler) {
!     SIGNAL_INTERCEPTOR_SIGNAL_IMPL(signal, signum, handler);
!   }(signal, signum, handler);
! 
!   if (ret != sig_err && SetSignalHandlerFromSanitizer(signum, false))
!     // If the user sets a signal handler, it becomes uncloaked, even if they
!     // reuse a sanitizer's signal handler.
!     ret = sig_dfl;
! 
!   return ret;
  }
  #define INIT_SIGNAL COMMON_INTERCEPT_FUNCTION(signal)
  
  INTERCEPTOR(int, sigaction_symname, int signum,
              const __sanitizer_sigaction *act, __sanitizer_sigaction *oldact) {
    SIGNAL_INTERCEPTOR_ENTER();
+ 
    if (GetHandleSignalMode(signum) == kHandleSignalExclusive) {
      if (!oldact) return 0;
      act = nullptr;
+     // If cloak_sanitizer_signal_handlers=true, the user can neither view nor
+     // change the signal handle.
+     // If false, the user can view but not change the signal handler. This
+     // differs from signal().
    }
! 
!   int ret = +[](int signum, const __sanitizer_sigaction* act,
!                 __sanitizer_sigaction* oldact) {
!     SIGNAL_INTERCEPTOR_SIGACTION_IMPL(signum, act, oldact);
!   }(signum, act, oldact);
! 
!   if (act) {
!     if (ret == 0 && SetSignalHandlerFromSanitizer(signum, false)) {
!       // If the user sets a signal handler, it becomes uncloaked, even if they
!       // reuse a sanitizer's signal handler.
! 
!       if (oldact)
!         oldact->handler = reinterpret_cast<__sanitizer_sighandler_ptr>(sig_dfl);
!     }
!   } else if (ret == 0 && oldact && IsSignalHandlerFromSanitizer(signum)) {
!     oldact->handler = reinterpret_cast<__sanitizer_sighandler_ptr>(sig_dfl);
!   }
! 
!   return ret;
  }
  #define INIT_SIGACTION COMMON_INTERCEPT_FUNCTION(sigaction_symname)
  
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_stoptheworld.h gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_stoptheworld.h
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_stoptheworld.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_stoptheworld.h	Sun Dec  7 22:32:18 2025
*************** class SuspendedThreadsList {
*** 38,44 ****
    }
  
    virtual uptr ThreadCount() const { UNIMPLEMENTED(); }
!   virtual tid_t GetThreadID(uptr index) const { UNIMPLEMENTED(); }
  
   protected:
    ~SuspendedThreadsList() {}
--- 38,44 ----
    }
  
    virtual uptr ThreadCount() const { UNIMPLEMENTED(); }
!   virtual ThreadID GetThreadID(uptr index) const { UNIMPLEMENTED(); }
  
   protected:
    ~SuspendedThreadsList() {}
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp	Sun Dec  7 22:32:18 2025
***************
*** 38,62 ****
  # include <asm/ptrace.h>
  #endif
  #include <sys/user.h>  // for user_regs_struct
! #if SANITIZER_ANDROID && SANITIZER_MIPS
! # include <asm/reg.h>  // for mips SP register in sys/user.h
! #endif
! #include <sys/wait.h> // for signal-related stuff
  
! #ifdef sa_handler
! # undef sa_handler
! #endif
  
! #ifdef sa_sigaction
! # undef sa_sigaction
! #endif
  
! #include "sanitizer_common.h"
! #include "sanitizer_flags.h"
! #include "sanitizer_libc.h"
! #include "sanitizer_linux.h"
! #include "sanitizer_mutex.h"
! #include "sanitizer_placement_new.h"
  
  // Sufficiently old kernel headers don't provide this value, but we can still
  // call prctl with it. If the runtime kernel is new enough, the prctl call will
--- 38,65 ----
  # include <asm/ptrace.h>
  #endif
  #include <sys/user.h>  // for user_regs_struct
! #  if SANITIZER_MIPS
! // clang-format off
! # include <asm/sgidefs.h>  // <asm/sgidefs.h> must be included before <asm/reg.h>
! # include <asm/reg.h>      // for mips SP register
! // clang-format on
! #  endif
! #  include <sys/wait.h>  // for signal-related stuff
  
! #  ifdef sa_handler
! #    undef sa_handler
! #  endif
  
! #  ifdef sa_sigaction
! #    undef sa_sigaction
! #  endif
  
! #  include "sanitizer_common.h"
! #  include "sanitizer_flags.h"
! #  include "sanitizer_libc.h"
! #  include "sanitizer_linux.h"
! #  include "sanitizer_mutex.h"
! #  include "sanitizer_placement_new.h"
  
  // Sufficiently old kernel headers don't provide this value, but we can still
  // call prctl with it. If the runtime kernel is new enough, the prctl call will
*************** class SuspendedThreadsListLinux final :
*** 91,107 ****
   public:
    SuspendedThreadsListLinux() { thread_ids_.reserve(1024); }
  
!   tid_t GetThreadID(uptr index) const override;
    uptr ThreadCount() const override;
!   bool ContainsTid(tid_t thread_id) const;
!   void Append(tid_t tid);
  
    PtraceRegistersStatus GetRegistersAndSP(uptr index,
                                            InternalMmapVector<uptr> *buffer,
                                            uptr *sp) const override;
  
   private:
!   InternalMmapVector<tid_t> thread_ids_;
  };
  
  // Structure for passing arguments into the tracer thread.
--- 94,110 ----
   public:
    SuspendedThreadsListLinux() { thread_ids_.reserve(1024); }
  
!   ThreadID GetThreadID(uptr index) const override;
    uptr ThreadCount() const override;
!   bool ContainsTid(ThreadID thread_id) const;
!   void Append(ThreadID tid);
  
    PtraceRegistersStatus GetRegistersAndSP(uptr index,
                                            InternalMmapVector<uptr> *buffer,
                                            uptr *sp) const override;
  
   private:
!   InternalMmapVector<ThreadID> thread_ids_;
  };
  
  // Structure for passing arguments into the tracer thread.
*************** class ThreadSuspender {
*** 134,143 ****
   private:
    SuspendedThreadsListLinux suspended_threads_list_;
    pid_t pid_;
!   bool SuspendThread(tid_t thread_id);
  };
  
! bool ThreadSuspender::SuspendThread(tid_t tid) {
    int pterrno;
    if (internal_iserror(internal_ptrace(PTRACE_ATTACH, tid, nullptr, nullptr),
                         &pterrno)) {
--- 137,146 ----
   private:
    SuspendedThreadsListLinux suspended_threads_list_;
    pid_t pid_;
!   bool SuspendThread(ThreadID thread_id);
  };
  
! bool ThreadSuspender::SuspendThread(ThreadID tid) {
    int pterrno;
    if (internal_iserror(internal_ptrace(PTRACE_ATTACH, tid, nullptr, nullptr),
                         &pterrno)) {
*************** void ThreadSuspender::KillAllThreads() {
*** 207,213 ****
  bool ThreadSuspender::SuspendAllThreads() {
    ThreadLister thread_lister(pid_);
    bool retry = true;
!   InternalMmapVector<tid_t> threads;
    threads.reserve(128);
    for (int i = 0; i < 30 && retry; ++i) {
      retry = false;
--- 210,216 ----
  bool ThreadSuspender::SuspendAllThreads() {
    ThreadLister thread_lister(pid_);
    bool retry = true;
!   InternalMmapVector<ThreadID> threads;
    threads.reserve(128);
    for (int i = 0; i < 30 && retry; ++i) {
      retry = false;
*************** bool ThreadSuspender::SuspendAllThreads(
*** 223,229 ****
        case ThreadLister::Ok:
          break;
      }
!     for (tid_t tid : threads) {
        // Are we already attached to this thread?
        // Currently this check takes linear time, however the number of threads
        // is usually small.
--- 226,232 ----
        case ThreadLister::Ok:
          break;
      }
!     for (ThreadID tid : threads) {
        // Are we already attached to this thread?
        // Currently this check takes linear time, however the number of threads
        // is usually small.
*************** struct ScopedSetTracerPID {
*** 400,406 ****
--- 403,479 ----
    }
  };
  
+ // This detects whether ptrace is blocked (e.g., by seccomp), by forking and
+ // then attempting ptrace.
+ // This separate check is necessary because StopTheWorld() creates a thread
+ // with a shared virtual address space and shared TLS, and therefore
+ // cannot use waitpid() due to the shared errno.
+ static void TestPTrace() {
+ #  if SANITIZER_SPARC
+   // internal_fork() on SPARC actually calls __fork(). We can't safely fork,
+   // because it's possible seccomp has been configured to disallow fork() but
+   // allow clone().
+   VReport(1, "WARNING: skipping TestPTrace() because this is SPARC\n");
+   VReport(1,
+           "If seccomp blocks ptrace, LeakSanitizer may hang without further "
+           "notice\n");
+   VReport(
+       1,
+       "If seccomp does not block ptrace, you can safely ignore this warning\n");
+ #  else
+   // Heuristic: only check the first time this is called. This is not always
+   // correct (e.g., user manually triggers leak detection, then updates
+   // seccomp, then leak detection is triggered again).
+   static bool checked = false;
+   if (checked)
+     return;
+   checked = true;
+ 
+   // Hopefully internal_fork() is not too expensive, thanks to copy-on-write.
+   // Besides, this is only called the first time.
+   // Note that internal_fork() on non-SPARC Linux actually calls
+   // SYSCALL(clone); thus, it is reasonable to use it because if seccomp kills
+   // TestPTrace(), it would have killed StopTheWorld() anyway.
+   int pid = internal_fork();
+ 
+   if (pid < 0) {
+     int rverrno;
+     if (internal_iserror(pid, &rverrno))
+       VReport(0, "WARNING: TestPTrace() failed to fork (errno %d)\n", rverrno);
+ 
+     // We don't abort the sanitizer - it's still worth letting the sanitizer
+     // try.
+     return;
+   }
+ 
+   if (pid == 0) {
+     // Child subprocess
+ 
+     // TODO: consider checking return value of internal_ptrace, to handle
+     //       SCMP_ACT_ERRNO. However, be careful not to consume too many
+     //       resources performing a proper ptrace.
+     internal_ptrace(PTRACE_ATTACH, 0, nullptr, nullptr);
+     internal__exit(0);
+   } else {
+     int wstatus;
+     internal_waitpid(pid, &wstatus, 0);
+ 
+     // Handle SCMP_ACT_KILL
+     if (WIFSIGNALED(wstatus)) {
+       VReport(0,
+               "WARNING: ptrace appears to be blocked (is seccomp enabled?). "
+               "LeakSanitizer may hang.\n");
+       VReport(0, "Child exited with signal %d.\n", WTERMSIG(wstatus));
+       // We don't abort the sanitizer - it's still worth letting the sanitizer
+       // try.
+     }
+   }
+ #  endif
+ }
+ 
  void StopTheWorld(StopTheWorldCallback callback, void *argument) {
+   TestPTrace();
+ 
    StopTheWorldScope in_stoptheworld;
    // Prepare the arguments for TracerThread.
    struct TracerThreadArgument tracer_thread_argument;
*************** void StopTheWorld(StopTheWorldCallback c
*** 454,460 ****
      internal_prctl(PR_SET_PTRACER, tracer_pid, 0, 0, 0);
      // Allow the tracer thread to start.
      tracer_thread_argument.mutex.Unlock();
!     // NOTE: errno is shared between this thread and the tracer thread.
      // internal_waitpid() may call syscall() which can access/spoil errno,
      // so we can't call it now. Instead we for the tracer thread to finish using
      // the spin loop below. Man page for sched_yield() says "In the Linux
--- 527,534 ----
      internal_prctl(PR_SET_PTRACER, tracer_pid, 0, 0, 0);
      // Allow the tracer thread to start.
      tracer_thread_argument.mutex.Unlock();
!     // NOTE: errno is shared between this thread and the tracer thread
!     //       (clone was called without CLONE_SETTLS / newtls).
      // internal_waitpid() may call syscall() which can access/spoil errno,
      // so we can't call it now. Instead we for the tracer thread to finish using
      // the spin loop below. Man page for sched_yield() says "In the Linux
*************** typedef pt_regs regs_struct;
*** 511,521 ****
  
  #elif defined(__mips__)
  typedef struct user regs_struct;
! # if SANITIZER_ANDROID
! #  define REG_SP regs[EF_R29]
! # else
! #  define REG_SP regs[EF_REG29]
! # endif
  
  #elif defined(__aarch64__)
  typedef struct user_pt_regs regs_struct;
--- 585,591 ----
  
  #elif defined(__mips__)
  typedef struct user regs_struct;
! #    define REG_SP regs[EF_R29]
  
  #elif defined(__aarch64__)
  typedef struct user_pt_regs regs_struct;
*************** static constexpr uptr kExtraRegs[] = {0}
*** 547,553 ****
  #error "Unsupported architecture"
  #endif // SANITIZER_ANDROID && defined(__arm__)
  
! tid_t SuspendedThreadsListLinux::GetThreadID(uptr index) const {
    CHECK_LT(index, thread_ids_.size());
    return thread_ids_[index];
  }
--- 617,623 ----
  #error "Unsupported architecture"
  #endif // SANITIZER_ANDROID && defined(__arm__)
  
! ThreadID SuspendedThreadsListLinux::GetThreadID(uptr index) const {
    CHECK_LT(index, thread_ids_.size());
    return thread_ids_[index];
  }
*************** uptr SuspendedThreadsListLinux::ThreadCo
*** 556,569 ****
    return thread_ids_.size();
  }
  
! bool SuspendedThreadsListLinux::ContainsTid(tid_t thread_id) const {
    for (uptr i = 0; i < thread_ids_.size(); i++) {
      if (thread_ids_[i] == thread_id) return true;
    }
    return false;
  }
  
! void SuspendedThreadsListLinux::Append(tid_t tid) {
    thread_ids_.push_back(tid);
  }
  
--- 626,639 ----
    return thread_ids_.size();
  }
  
! bool SuspendedThreadsListLinux::ContainsTid(ThreadID thread_id) const {
    for (uptr i = 0; i < thread_ids_.size(); i++) {
      if (thread_ids_[i] == thread_id) return true;
    }
    return false;
  }
  
! void SuspendedThreadsListLinux::Append(ThreadID tid) {
    thread_ids_.push_back(tid);
  }
  
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_stoptheworld_mac.cpp gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_stoptheworld_mac.cpp
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_stoptheworld_mac.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_stoptheworld_mac.cpp	Sun Dec  7 22:32:18 2025
***************
*** 23,29 ****
  
  namespace __sanitizer {
  typedef struct {
!   tid_t tid;
    thread_t thread;
  } SuspendedThreadInfo;
  
--- 23,29 ----
  
  namespace __sanitizer {
  typedef struct {
!   ThreadID tid;
    thread_t thread;
  } SuspendedThreadInfo;
  
*************** class SuspendedThreadsListMac final : pu
*** 31,37 ****
   public:
    SuspendedThreadsListMac() = default;
  
!   tid_t GetThreadID(uptr index) const override;
    thread_t GetThread(uptr index) const;
    uptr ThreadCount() const override;
    bool ContainsThread(thread_t thread) const;
--- 31,37 ----
   public:
    SuspendedThreadsListMac() = default;
  
!   ThreadID GetThreadID(uptr index) const override;
    thread_t GetThread(uptr index) const;
    uptr ThreadCount() const override;
    bool ContainsThread(thread_t thread) const;
*************** typedef x86_thread_state32_t regs_struct
*** 111,117 ****
  #error "Unsupported architecture"
  #endif
  
! tid_t SuspendedThreadsListMac::GetThreadID(uptr index) const {
    CHECK_LT(index, threads_.size());
    return threads_[index].tid;
  }
--- 111,117 ----
  #error "Unsupported architecture"
  #endif
  
! ThreadID SuspendedThreadsListMac::GetThreadID(uptr index) const {
    CHECK_LT(index, threads_.size());
    return threads_[index].tid;
  }
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cpp gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cpp
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cpp	Sun Dec  7 22:32:18 2025
*************** class SuspendedThreadsListNetBSD final :
*** 52,68 ****
   public:
    SuspendedThreadsListNetBSD() { thread_ids_.reserve(1024); }
  
!   tid_t GetThreadID(uptr index) const;
    uptr ThreadCount() const;
!   bool ContainsTid(tid_t thread_id) const;
!   void Append(tid_t tid);
  
    PtraceRegistersStatus GetRegistersAndSP(uptr index,
                                            InternalMmapVector<uptr> *buffer,
                                            uptr *sp) const;
  
   private:
!   InternalMmapVector<tid_t> thread_ids_;
  };
  
  struct TracerThreadArgument {
--- 52,68 ----
   public:
    SuspendedThreadsListNetBSD() { thread_ids_.reserve(1024); }
  
!   ThreadID GetThreadID(uptr index) const;
    uptr ThreadCount() const;
!   bool ContainsTid(ThreadID thread_id) const;
!   void Append(ThreadID tid);
  
    PtraceRegistersStatus GetRegistersAndSP(uptr index,
                                            InternalMmapVector<uptr> *buffer,
                                            uptr *sp) const;
  
   private:
!   InternalMmapVector<ThreadID> thread_ids_;
  };
  
  struct TracerThreadArgument {
*************** void StopTheWorld(StopTheWorldCallback c
*** 313,319 ****
    }
  }
  
! tid_t SuspendedThreadsListNetBSD::GetThreadID(uptr index) const {
    CHECK_LT(index, thread_ids_.size());
    return thread_ids_[index];
  }
--- 313,319 ----
    }
  }
  
! ThreadID SuspendedThreadsListNetBSD::GetThreadID(uptr index) const {
    CHECK_LT(index, thread_ids_.size());
    return thread_ids_[index];
  }
*************** uptr SuspendedThreadsListNetBSD::ThreadC
*** 322,328 ****
    return thread_ids_.size();
  }
  
! bool SuspendedThreadsListNetBSD::ContainsTid(tid_t thread_id) const {
    for (uptr i = 0; i < thread_ids_.size(); i++) {
      if (thread_ids_[i] == thread_id)
        return true;
--- 322,328 ----
    return thread_ids_.size();
  }
  
! bool SuspendedThreadsListNetBSD::ContainsTid(ThreadID thread_id) const {
    for (uptr i = 0; i < thread_ids_.size(); i++) {
      if (thread_ids_[i] == thread_id)
        return true;
*************** bool SuspendedThreadsListNetBSD::Contain
*** 330,336 ****
    return false;
  }
  
! void SuspendedThreadsListNetBSD::Append(tid_t tid) {
    thread_ids_.push_back(tid);
  }
  
--- 330,336 ----
    return false;
  }
  
! void SuspendedThreadsListNetBSD::Append(ThreadID tid) {
    thread_ids_.push_back(tid);
  }
  
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_stoptheworld_win.cpp gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_stoptheworld_win.cpp
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_stoptheworld_win.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_stoptheworld_win.cpp	Sun Dec  7 22:32:18 2025
*************** struct SuspendedThreadsListWindows final
*** 38,44 ****
                                            InternalMmapVector<uptr> *buffer,
                                            uptr *sp) const override;
  
!   tid_t GetThreadID(uptr index) const override;
    uptr ThreadCount() const override;
  };
  
--- 38,44 ----
                                            InternalMmapVector<uptr> *buffer,
                                            uptr *sp) const override;
  
!   ThreadID GetThreadID(uptr index) const override;
    uptr ThreadCount() const override;
  };
  
*************** struct SuspendedThreadsListWindows final
*** 49,54 ****
--- 49,56 ----
  #    define SP_REG Esp
  #  elif SANITIZER_ARM | SANITIZER_ARM64
  #    define SP_REG Sp
+ #  elif SANITIZER_MIPS32
+ #    define SP_REG IntSp
  #  else
  #    error Architecture not supported!
  #  endif
*************** PtraceRegistersStatus SuspendedThreadsLi
*** 66,72 ****
    return REGISTERS_AVAILABLE;
  }
  
! tid_t SuspendedThreadsListWindows::GetThreadID(uptr index) const {
    CHECK_LT(index, threadIds.size());
    return threadIds[index];
  }
--- 68,74 ----
    return REGISTERS_AVAILABLE;
  }
  
! ThreadID SuspendedThreadsListWindows::GetThreadID(uptr index) const {
    CHECK_LT(index, threadIds.size());
    return threadIds[index];
  }
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_symbolizer_libcdep.cpp gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_symbolizer_libcdep.cpp
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_symbolizer_libcdep.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_symbolizer_libcdep.cpp	Sun Dec  7 22:32:18 2025
*************** Symbolizer *Symbolizer::GetOrInit() {
*** 31,41 ****
  
  const char *ExtractToken(const char *str, const char *delims, char **result) {
    uptr prefix_len = internal_strcspn(str, delims);
!   *result = (char*)InternalAlloc(prefix_len + 1);
    internal_memcpy(*result, str, prefix_len);
    (*result)[prefix_len] = '\0';
    const char *prefix_end = str + prefix_len;
!   if (*prefix_end != '\0') prefix_end++;
    return prefix_end;
  }
  
--- 31,42 ----
  
  const char *ExtractToken(const char *str, const char *delims, char **result) {
    uptr prefix_len = internal_strcspn(str, delims);
!   *result = (char *)InternalAlloc(prefix_len + 1);
    internal_memcpy(*result, str, prefix_len);
    (*result)[prefix_len] = '\0';
    const char *prefix_end = str + prefix_len;
!   if (*prefix_end != '\0')
!     prefix_end++;
    return prefix_end;
  }
  
*************** const char *ExtractTokenUpToDelimiter(co
*** 78,84 ****
    internal_memcpy(*result, str, prefix_len);
    (*result)[prefix_len] = '\0';
    const char *prefix_end = str + prefix_len;
!   if (*prefix_end != '\0') prefix_end += internal_strlen(delimiter);
    return prefix_end;
  }
  
--- 79,86 ----
    internal_memcpy(*result, str, prefix_len);
    (*result)[prefix_len] = '\0';
    const char *prefix_end = str + prefix_len;
!   if (*prefix_end != '\0')
!     prefix_end += internal_strlen(delimiter);
    return prefix_end;
  }
  
*************** const LoadedModule *Symbolizer::FindModu
*** 215,232 ****
      modules_were_reloaded = true;
    }
    const LoadedModule *module = SearchForModule(modules_, address);
!   if (module) return module;
  
    // dlopen/dlclose interceptors invalidate the module list, but when
    // interception is disabled, we need to retry if the lookup fails in
    // case the module list changed.
! #if !SANITIZER_INTERCEPT_DLOPEN_DLCLOSE
    if (!modules_were_reloaded) {
      RefreshModules();
      module = SearchForModule(modules_, address);
!     if (module) return module;
    }
! #endif
  
    if (fallback_modules_.size()) {
      module = SearchForModule(fallback_modules_, address);
--- 217,236 ----
      modules_were_reloaded = true;
    }
    const LoadedModule *module = SearchForModule(modules_, address);
!   if (module)
!     return module;
  
    // dlopen/dlclose interceptors invalidate the module list, but when
    // interception is disabled, we need to retry if the lookup fails in
    // case the module list changed.
! #  if !SANITIZER_INTERCEPT_DLOPEN_DLCLOSE
    if (!modules_were_reloaded) {
      RefreshModules();
      module = SearchForModule(modules_, address);
!     if (module)
!       return module;
    }
! #  endif
  
    if (fallback_modules_.size()) {
      module = SearchForModule(fallback_modules_, address);
*************** class LLVMSymbolizerProcess final : publ
*** 260,290 ****
    // script/asan_symbolize.py and sanitizer_common.h.
    void GetArgV(const char *path_to_binary,
                 const char *(&argv)[kArgVMax]) const override {
! #if defined(__x86_64h__)
!     const char* const kSymbolizerArch = "--default-arch=x86_64h";
! #elif defined(__x86_64__)
!     const char* const kSymbolizerArch = "--default-arch=x86_64";
! #elif defined(__i386__)
!     const char* const kSymbolizerArch = "--default-arch=i386";
! #elif SANITIZER_LOONGARCH64
      const char *const kSymbolizerArch = "--default-arch=loongarch64";
! #elif SANITIZER_RISCV64
      const char *const kSymbolizerArch = "--default-arch=riscv64";
! #elif defined(__aarch64__)
!     const char* const kSymbolizerArch = "--default-arch=arm64";
! #elif defined(__arm__)
!     const char* const kSymbolizerArch = "--default-arch=arm";
! #elif defined(__powerpc64__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
!     const char* const kSymbolizerArch = "--default-arch=powerpc64";
! #elif defined(__powerpc64__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
!     const char* const kSymbolizerArch = "--default-arch=powerpc64le";
! #elif defined(__s390x__)
!     const char* const kSymbolizerArch = "--default-arch=s390x";
! #elif defined(__s390__)
!     const char* const kSymbolizerArch = "--default-arch=s390";
! #else
!     const char* const kSymbolizerArch = "--default-arch=unknown";
! #endif
  
      const char *const demangle_flag =
          common_flags()->demangle ? "--demangle" : "--no-demangle";
--- 264,294 ----
    // script/asan_symbolize.py and sanitizer_common.h.
    void GetArgV(const char *path_to_binary,
                 const char *(&argv)[kArgVMax]) const override {
! #  if defined(__x86_64h__)
!     const char *const kSymbolizerArch = "--default-arch=x86_64h";
! #  elif defined(__x86_64__)
!     const char *const kSymbolizerArch = "--default-arch=x86_64";
! #  elif defined(__i386__)
!     const char *const kSymbolizerArch = "--default-arch=i386";
! #  elif SANITIZER_LOONGARCH64
      const char *const kSymbolizerArch = "--default-arch=loongarch64";
! #  elif SANITIZER_RISCV64
      const char *const kSymbolizerArch = "--default-arch=riscv64";
! #  elif defined(__aarch64__)
!     const char *const kSymbolizerArch = "--default-arch=arm64";
! #  elif defined(__arm__)
!     const char *const kSymbolizerArch = "--default-arch=arm";
! #  elif defined(__powerpc64__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
!     const char *const kSymbolizerArch = "--default-arch=powerpc64";
! #  elif defined(__powerpc64__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
!     const char *const kSymbolizerArch = "--default-arch=powerpc64le";
! #  elif defined(__s390x__)
!     const char *const kSymbolizerArch = "--default-arch=s390x";
! #  elif defined(__s390__)
!     const char *const kSymbolizerArch = "--default-arch=s390";
! #  else
!     const char *const kSymbolizerArch = "--default-arch=unknown";
! #  endif
  
      const char *const demangle_flag =
          common_flags()->demangle ? "--demangle" : "--no-demangle";
*************** static const char *ParseFileLineInfo(Add
*** 315,321 ****
      char *back = file_line_info + size - 1;
      for (int i = 0; i < 2; ++i) {
        while (back > file_line_info && IsDigit(*back)) --back;
!       if (*back != ':' || !IsDigit(back[1])) break;
        info->column = info->line;
        info->line = internal_atoll(back + 1);
        // Truncate the string at the colon to keep only filename.
--- 319,326 ----
      char *back = file_line_info + size - 1;
      for (int i = 0; i < 2; ++i) {
        while (back > file_line_info && IsDigit(*back)) --back;
!       if (*back != ':' || !IsDigit(back[1]))
!         break;
        info->column = info->line;
        info->line = internal_atoll(back + 1);
        // Truncate the string at the colon to keep only filename.
*************** bool LLVMSymbolizer::SymbolizeData(uptr
*** 436,442 ****
    if (!buf)
      return false;
    ParseSymbolizeDataOutput(buf, info);
!   info->start += (addr - info->module_offset); // Add the base address.
    return true;
  }
  
--- 441,447 ----
    if (!buf)
      return false;
    ParseSymbolizeDataOutput(buf, info);
!   info->start += (addr - info->module_offset);  // Add the base address.
    return true;
  }
  
*************** const char *LLVMSymbolizer::FormatAndSen
*** 459,468 ****
      size_needed = internal_snprintf(buffer_, kBufferSize, "%s \"%s\" 0x%zx\n",
                                      command_prefix, module_name, module_offset);
    else
!     size_needed = internal_snprintf(buffer_, kBufferSize,
!                                     "%s \"%s:%s\" 0x%zx\n", command_prefix,
!                                     module_name, ModuleArchToString(arch),
!                                     module_offset);
  
    if (size_needed >= static_cast<int>(kBufferSize)) {
      Report("WARNING: Command buffer too small");
--- 464,472 ----
      size_needed = internal_snprintf(buffer_, kBufferSize, "%s \"%s\" 0x%zx\n",
                                      command_prefix, module_name, module_offset);
    else
!     size_needed = internal_snprintf(
!         buffer_, kBufferSize, "%s \"%s:%s\" 0x%zx\n", command_prefix,
!         module_name, ModuleArchToString(arch), module_offset);
  
    if (size_needed >= static_cast<int>(kBufferSize)) {
      Report("WARNING: Command buffer too small");
*************** SymbolizerProcess::SymbolizerProcess(con
*** 484,492 ****
    CHECK_NE(path_[0], '\0');
  }
  
! static bool IsSameModule(const char* path) {
!   if (const char* ProcessName = GetProcessName()) {
!     if (const char* SymbolizerName = StripModuleName(path)) {
        return !internal_strcmp(ProcessName, SymbolizerName);
      }
    }
--- 488,496 ----
    CHECK_NE(path_[0], '\0');
  }
  
! static bool IsSameModule(const char *path) {
!   if (const char *ProcessName = GetProcessName()) {
!     if (const char *SymbolizerName = StripModuleName(path)) {
        return !internal_strcmp(ProcessName, SymbolizerName);
      }
    }
*************** const char *SymbolizerProcess::SendComma
*** 516,524 ****
  
  const char *SymbolizerProcess::SendCommandImpl(const char *command) {
    if (input_fd_ == kInvalidFd || output_fd_ == kInvalidFd)
!       return nullptr;
    if (!WriteToSymbolizer(command, internal_strlen(command)))
!       return nullptr;
    if (!ReadFromSymbolizer())
      return nullptr;
    return buffer_.data();
--- 520,528 ----
  
  const char *SymbolizerProcess::SendCommandImpl(const char *command) {
    if (input_fd_ == kInvalidFd || output_fd_ == kInvalidFd)
!     return nullptr;
    if (!WriteToSymbolizer(command, internal_strlen(command)))
!     return nullptr;
    if (!ReadFromSymbolizer())
      return nullptr;
    return buffer_.data();
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp	Sun Dec  7 22:32:18 2025
***************
*** 38,46 ****
  // because we do not require a C++ ABI library to be linked to a program
  // using sanitizers; if it's not present, we'll just use the mangled name.
  namespace __cxxabiv1 {
!   extern "C" SANITIZER_WEAK_ATTRIBUTE
!   char *__cxa_demangle(const char *mangled, char *buffer,
!                                   size_t *length, int *status);
  }
  
  namespace __sanitizer {
--- 38,47 ----
  // because we do not require a C++ ABI library to be linked to a program
  // using sanitizers; if it's not present, we'll just use the mangled name.
  namespace __cxxabiv1 {
! extern "C" SANITIZER_WEAK_ATTRIBUTE char *__cxa_demangle(const char *mangled,
!                                                          char *buffer,
!                                                          size_t *length,
!                                                          int *status);
  }
  
  namespace __sanitizer {
*************** const char *DemangleCXXABI(const char *n
*** 53,60 ****
    // it does not allocate). For now, we just call it anyway, and we leak
    // the returned value.
    if (&__cxxabiv1::__cxa_demangle)
!     if (const char *demangled_name =
!           __cxxabiv1::__cxa_demangle(name, 0, 0, 0))
        return demangled_name;
  
    return nullptr;
--- 54,60 ----
    // it does not allocate). For now, we just call it anyway, and we leak
    // the returned value.
    if (&__cxxabiv1::__cxa_demangle)
!     if (const char *demangled_name = __cxxabiv1::__cxa_demangle(name, 0, 0, 0))
        return demangled_name;
  
    return nullptr;
*************** const char *DemangleSwift(const char *na
*** 85,91 ****
  }
  
  const char *DemangleSwiftAndCXX(const char *name) {
!   if (!name) return nullptr;
    if (const char *swift_demangled_name = DemangleSwift(name))
      return swift_demangled_name;
    return DemangleCXXABI(name);
--- 85,92 ----
  }
  
  const char *DemangleSwiftAndCXX(const char *name) {
!   if (!name)
!     return nullptr;
    if (const char *swift_demangled_name = DemangleSwift(name))
      return swift_demangled_name;
    return DemangleCXXABI(name);
*************** static bool CreateTwoHighNumberedPipes(i
*** 114,120 ****
        } else {
          outfd = sock_pair[i];
          for (int j = 0; j < i; j++) {
!           if (sock_pair[j] == infd) continue;
            internal_close(sock_pair[j][0]);
            internal_close(sock_pair[j][1]);
          }
--- 115,122 ----
        } else {
          outfd = sock_pair[i];
          for (int j = 0; j < i; j++) {
!           if (sock_pair[j] == infd)
!             continue;
            internal_close(sock_pair[j][0]);
            internal_close(sock_pair[j][1]);
          }
*************** bool SymbolizerProcess::StartSymbolizerS
*** 155,161 ****
    }
  
    if (use_posix_spawn_) {
! #if SANITIZER_APPLE
      fd_t fd = internal_spawn(argv, const_cast<const char **>(GetEnvP()), &pid);
      if (fd == kInvalidFd) {
        Report("WARNING: failed to spawn external symbolizer (errno: %d)\n",
--- 157,163 ----
    }
  
    if (use_posix_spawn_) {
! #  if SANITIZER_APPLE
      fd_t fd = internal_spawn(argv, const_cast<const char **>(GetEnvP()), &pid);
      if (fd == kInvalidFd) {
        Report("WARNING: failed to spawn external symbolizer (errno: %d)\n",
*************** bool SymbolizerProcess::StartSymbolizerS
*** 165,178 ****
  
      input_fd_ = fd;
      output_fd_ = fd;
! #else  // SANITIZER_APPLE
      UNIMPLEMENTED();
! #endif  // SANITIZER_APPLE
    } else {
      fd_t infd[2] = {}, outfd[2] = {};
      if (!CreateTwoHighNumberedPipes(infd, outfd)) {
!       Report("WARNING: Can't create a socket pair to start "
!              "external symbolizer (errno: %d)\n", errno);
        return false;
      }
  
--- 167,182 ----
  
      input_fd_ = fd;
      output_fd_ = fd;
! #  else   // SANITIZER_APPLE
      UNIMPLEMENTED();
! #  endif  // SANITIZER_APPLE
    } else {
      fd_t infd[2] = {}, outfd[2] = {};
      if (!CreateTwoHighNumberedPipes(infd, outfd)) {
!       Report(
!           "WARNING: Can't create a socket pair to start "
!           "external symbolizer (errno: %d)\n",
!           errno);
        return false;
      }
  
*************** bool Addr2LineProcess::ReachedEndOfOutpu
*** 260,269 ****
    // 1. First one, corresponding to given offset to be symbolized
    // (may be equal to output_terminator_, if offset is not valid).
    // 2. Second one for output_terminator_, itself to mark the end of output.
!   if (length <= kTerminatorLen) return false;
    // Addr2Line output should end up with output_terminator_.
!   return !internal_memcmp(buffer + length - kTerminatorLen,
!                           output_terminator_, kTerminatorLen);
  }
  
  class Addr2LinePool final : public SymbolizerTool {
--- 264,274 ----
    // 1. First one, corresponding to given offset to be symbolized
    // (may be equal to output_terminator_, if offset is not valid).
    // 2. Second one for output_terminator_, itself to mark the end of output.
!   if (length <= kTerminatorLen)
!     return false;
    // Addr2Line output should end up with output_terminator_.
!   return !internal_memcmp(buffer + length - kTerminatorLen, output_terminator_,
!                           kTerminatorLen);
  }
  
  class Addr2LinePool final : public SymbolizerTool {
*************** class Addr2LinePool final : public Symbo
*** 283,291 ****
      return false;
    }
  
!   bool SymbolizeData(uptr addr, DataInfo *info) override {
!     return false;
!   }
  
   private:
    const char *SendCommand(const char *module_name, uptr module_offset) {
--- 288,294 ----
      return false;
    }
  
!   bool SymbolizeData(uptr addr, DataInfo *info) override { return false; }
  
   private:
    const char *SendCommand(const char *module_name, uptr module_offset) {
*************** class Addr2LinePool final : public Symbo
*** 299,320 ****
      }
      if (!addr2line) {
        addr2line =
!           new(*allocator_) Addr2LineProcess(addr2line_path_, module_name);
        addr2line_pool_.push_back(addr2line);
      }
      CHECK_EQ(0, internal_strcmp(module_name, addr2line->module_name()));
      char buffer[kBufferSize];
!     internal_snprintf(buffer, kBufferSize, "0x%zx\n0x%zx\n",
!                       module_offset, dummy_address_);
      return addr2line->SendCommand(buffer);
    }
  
    static const uptr kBufferSize = 64;
    const char *addr2line_path_;
    LowLevelAllocator *allocator_;
!   InternalMmapVector<Addr2LineProcess*> addr2line_pool_;
!   static const uptr dummy_address_ =
!       FIRST_32_SECOND_64(UINT32_MAX, UINT64_MAX);
  };
  
  #  if SANITIZER_SUPPORTS_WEAK_HOOKS
--- 302,322 ----
      }
      if (!addr2line) {
        addr2line =
!           new (*allocator_) Addr2LineProcess(addr2line_path_, module_name);
        addr2line_pool_.push_back(addr2line);
      }
      CHECK_EQ(0, internal_strcmp(module_name, addr2line->module_name()));
      char buffer[kBufferSize];
!     internal_snprintf(buffer, kBufferSize, "0x%zx\n0x%zx\n", module_offset,
!                       dummy_address_);
      return addr2line->SendCommand(buffer);
    }
  
    static const uptr kBufferSize = 64;
    const char *addr2line_path_;
    LowLevelAllocator *allocator_;
!   InternalMmapVector<Addr2LineProcess *> addr2line_pool_;
!   static const uptr dummy_address_ = FIRST_32_SECOND_64(UINT32_MAX, UINT64_MAX);
  };
  
  #  if SANITIZER_SUPPORTS_WEAK_HOOKS
*************** class InternalSymbolizer final : public
*** 352,359 ****
    }
  
    bool SymbolizePC(uptr addr, SymbolizedStack *stack) override {
!     bool result = __sanitizer_symbolize_code(
!         stack->info.module, stack->info.module_offset, buffer_, sizeof(buffer_));
      if (result)
        ParseSymbolizePCOutput(buffer_, stack);
      return result;
--- 354,362 ----
    }
  
    bool SymbolizePC(uptr addr, SymbolizedStack *stack) override {
!     bool result = __sanitizer_symbolize_code(stack->info.module,
!                                              stack->info.module_offset, buffer_,
!                                              sizeof(buffer_));
      if (result)
        ParseSymbolizePCOutput(buffer_, stack);
      return result;
*************** static SymbolizerTool *ChooseExternalSym
*** 423,466 ****
    } else if (!internal_strncmp(binary_name, kLLVMSymbolizerPrefix,
                                 internal_strlen(kLLVMSymbolizerPrefix))) {
      VReport(2, "Using llvm-symbolizer at user-specified path: %s\n", path);
!     return new(*allocator) LLVMSymbolizer(path, allocator);
    } else if (!internal_strcmp(binary_name, "atos")) {
! #if SANITIZER_APPLE
      VReport(2, "Using atos at user-specified path: %s\n", path);
!     return new(*allocator) AtosSymbolizer(path, allocator);
! #else  // SANITIZER_APPLE
      Report("ERROR: Using `atos` is only supported on Darwin.\n");
      Die();
! #endif  // SANITIZER_APPLE
    } else if (!internal_strcmp(binary_name, "addr2line")) {
      VReport(2, "Using addr2line at user-specified path: %s\n", path);
!     return new(*allocator) Addr2LinePool(path, allocator);
    } else if (path) {
!     Report("ERROR: External symbolizer path is set to '%s' which isn't "
!            "a known symbolizer. Please set the path to the llvm-symbolizer "
!            "binary or other known tool.\n", path);
      Die();
    }
  
    // Otherwise symbolizer program is unknown, let's search $PATH
    CHECK(path == nullptr);
! #if SANITIZER_APPLE
    if (const char *found_path = FindPathToBinary("atos")) {
      VReport(2, "Using atos found at: %s\n", found_path);
!     return new(*allocator) AtosSymbolizer(found_path, allocator);
    }
! #endif  // SANITIZER_APPLE
    if (const char *found_path = FindPathToBinary("llvm-symbolizer")) {
      VReport(2, "Using llvm-symbolizer found at: %s\n", found_path);
!     return new(*allocator) LLVMSymbolizer(found_path, allocator);
    }
    if (common_flags()->allow_addr2line) {
      if (const char *found_path = FindPathToBinary("addr2line")) {
        VReport(2, "Using addr2line found at: %s\n", found_path);
!       return new(*allocator) Addr2LinePool(found_path, allocator);
      }
    }
    return nullptr;
  }
  
  static void ChooseSymbolizerTools(IntrusiveList<SymbolizerTool> *list,
--- 426,478 ----
    } else if (!internal_strncmp(binary_name, kLLVMSymbolizerPrefix,
                                 internal_strlen(kLLVMSymbolizerPrefix))) {
      VReport(2, "Using llvm-symbolizer at user-specified path: %s\n", path);
!     return new (*allocator) LLVMSymbolizer(path, allocator);
    } else if (!internal_strcmp(binary_name, "atos")) {
! #  if SANITIZER_APPLE
      VReport(2, "Using atos at user-specified path: %s\n", path);
!     return new (*allocator) AtosSymbolizer(path, allocator);
! #  else   // SANITIZER_APPLE
      Report("ERROR: Using `atos` is only supported on Darwin.\n");
      Die();
! #  endif  // SANITIZER_APPLE
    } else if (!internal_strcmp(binary_name, "addr2line")) {
      VReport(2, "Using addr2line at user-specified path: %s\n", path);
!     return new (*allocator) Addr2LinePool(path, allocator);
    } else if (path) {
!     Report(
!         "ERROR: External symbolizer path is set to '%s' which isn't "
!         "a known symbolizer. Please set the path to the llvm-symbolizer "
!         "binary or other known tool.\n",
!         path);
      Die();
    }
  
    // Otherwise symbolizer program is unknown, let's search $PATH
+ #  ifdef SANITIZER_DISABLE_SYMBOLIZER_PATH_SEARCH
+   VReport(2,
+           "Symbolizer path search is disabled in the runtime "
+           "build configuration.\n");
+   return nullptr;
+ #  else
    CHECK(path == nullptr);
! #    if SANITIZER_APPLE
    if (const char *found_path = FindPathToBinary("atos")) {
      VReport(2, "Using atos found at: %s\n", found_path);
!     return new (*allocator) AtosSymbolizer(found_path, allocator);
    }
! #    endif  // SANITIZER_APPLE
    if (const char *found_path = FindPathToBinary("llvm-symbolizer")) {
      VReport(2, "Using llvm-symbolizer found at: %s\n", found_path);
!     return new (*allocator) LLVMSymbolizer(found_path, allocator);
    }
    if (common_flags()->allow_addr2line) {
      if (const char *found_path = FindPathToBinary("addr2line")) {
        VReport(2, "Using addr2line found at: %s\n", found_path);
!       return new (*allocator) Addr2LinePool(found_path, allocator);
      }
    }
    return nullptr;
+ #  endif    // SANITIZER_DISABLE_SYMBOLIZER_PATH_SEARCH
  }
  
  static void ChooseSymbolizerTools(IntrusiveList<SymbolizerTool> *list,
*************** static void ChooseSymbolizerTools(Intrus
*** 492,508 ****
      list->push_back(tool);
    }
  
! #if SANITIZER_APPLE
    VReport(2, "Using dladdr symbolizer.\n");
!   list->push_back(new(*allocator) DlAddrSymbolizer());
! #endif  // SANITIZER_APPLE
  }
  
  Symbolizer *Symbolizer::PlatformInit() {
    IntrusiveList<SymbolizerTool> list;
    list.clear();
    ChooseSymbolizerTools(&list, &symbolizer_allocator_);
!   return new(symbolizer_allocator_) Symbolizer(list);
  }
  
  void Symbolizer::LateInitialize() {
--- 504,527 ----
      list->push_back(tool);
    }
  
! #  if SANITIZER_APPLE
!   if (list->empty()) {
!     Report(
!         "WARN: No external symbolizers found. Symbols may be missing or "
!         "unreliable.\n");
!     Report(
!         "HINT: Is PATH set? Does sandbox allow file-read of /usr/bin/atos?\n");
!   }
    VReport(2, "Using dladdr symbolizer.\n");
!   list->push_back(new (*allocator) DlAddrSymbolizer());
! #  endif  // SANITIZER_APPLE
  }
  
  Symbolizer *Symbolizer::PlatformInit() {
    IntrusiveList<SymbolizerTool> list;
    list.clear();
    ChooseSymbolizerTools(&list, &symbolizer_allocator_);
!   return new (symbolizer_allocator_) Symbolizer(list);
  }
  
  void Symbolizer::LateInitialize() {
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_thread_registry.cpp gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_thread_registry.cpp
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_thread_registry.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_thread_registry.cpp	Sun Dec  7 22:32:18 2025
*************** void ThreadContextBase::SetFinished() {
*** 80,86 ****
    OnFinished();
  }
  
! void ThreadContextBase::SetStarted(tid_t _os_id, ThreadType _thread_type,
                                     void *arg) {
    status = ThreadStatusRunning;
    os_id = _os_id;
--- 80,86 ----
    OnFinished();
  }
  
! void ThreadContextBase::SetStarted(ThreadID _os_id, ThreadType _thread_type,
                                     void *arg) {
    status = ThreadStatusRunning;
    os_id = _os_id;
*************** static bool FindThreadContextByOsIdCallb
*** 228,234 ****
            tctx->status != ThreadStatusDead);
  }
  
! ThreadContextBase *ThreadRegistry::FindThreadContextByOsIDLocked(tid_t os_id) {
    return FindThreadContextLocked(FindThreadContextByOsIdCallback,
                                   (void *)os_id);
  }
--- 228,235 ----
            tctx->status != ThreadStatusDead);
  }
  
! ThreadContextBase *ThreadRegistry::FindThreadContextByOsIDLocked(
!     ThreadID os_id) {
    return FindThreadContextLocked(FindThreadContextByOsIdCallback,
                                   (void *)os_id);
  }
*************** ThreadStatus ThreadRegistry::FinishThrea
*** 322,329 ****
    return prev_status;
  }
  
! void ThreadRegistry::StartThread(u32 tid, tid_t os_id, ThreadType thread_type,
!                                  void *arg) {
    ThreadRegistryLock l(this);
    running_threads_++;
    ThreadContextBase *tctx = threads_[tid];
--- 323,330 ----
    return prev_status;
  }
  
! void ThreadRegistry::StartThread(u32 tid, ThreadID os_id,
!                                  ThreadType thread_type, void *arg) {
    ThreadRegistryLock l(this);
    running_threads_++;
    ThreadContextBase *tctx = threads_[tid];
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_thread_registry.h gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_thread_registry.h
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_thread_registry.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_thread_registry.h	Sun Dec  7 22:32:18 2025
*************** class ThreadContextBase {
*** 43,49 ****
    const u32 tid;  // Thread ID. Main thread should have tid = 0.
    u64 unique_id;  // Unique thread ID.
    u32 reuse_count;  // Number of times this tid was reused.
!   tid_t os_id;     // PID (used for reporting).
    uptr user_id;   // Some opaque user thread id (e.g. pthread_t).
    char name[64];  // As annotated by user.
  
--- 43,49 ----
    const u32 tid;  // Thread ID. Main thread should have tid = 0.
    u64 unique_id;  // Unique thread ID.
    u32 reuse_count;  // Number of times this tid was reused.
!   ThreadID os_id;   // PID (used for reporting).
    uptr user_id;   // Some opaque user thread id (e.g. pthread_t).
    char name[64];  // As annotated by user.
  
*************** class ThreadContextBase {
*** 62,68 ****
    void SetDead();
    void SetJoined(void *arg);
    void SetFinished();
!   void SetStarted(tid_t _os_id, ThreadType _thread_type, void *arg);
    void SetCreated(uptr _user_id, u64 _unique_id, bool _detached,
                    u32 _parent_tid, u32 _stack_tid, void *arg);
    void Reset();
--- 62,68 ----
    void SetDead();
    void SetJoined(void *arg);
    void SetFinished();
!   void SetStarted(ThreadID _os_id, ThreadType _thread_type, void *arg);
    void SetCreated(uptr _user_id, u64 _unique_id, bool _detached,
                    u32 _parent_tid, u32 _stack_tid, void *arg);
    void Reset();
*************** class SANITIZER_MUTEX ThreadRegistry {
*** 126,132 ****
    // is found.
    ThreadContextBase *FindThreadContextLocked(FindThreadCallback cb,
                                               void *arg);
!   ThreadContextBase *FindThreadContextByOsIDLocked(tid_t os_id);
  
    void SetThreadName(u32 tid, const char *name);
    void SetThreadNameByUserId(uptr user_id, const char *name);
--- 126,132 ----
    // is found.
    ThreadContextBase *FindThreadContextLocked(FindThreadCallback cb,
                                               void *arg);
!   ThreadContextBase *FindThreadContextByOsIDLocked(ThreadID os_id);
  
    void SetThreadName(u32 tid, const char *name);
    void SetThreadNameByUserId(uptr user_id, const char *name);
*************** class SANITIZER_MUTEX ThreadRegistry {
*** 134,140 ****
    void JoinThread(u32 tid, void *arg);
    // Finishes thread and returns previous status.
    ThreadStatus FinishThread(u32 tid);
!   void StartThread(u32 tid, tid_t os_id, ThreadType thread_type, void *arg);
    u32 ConsumeThreadUserId(uptr user_id);
    void SetThreadUserId(u32 tid, uptr user_id);
  
--- 134,140 ----
    void JoinThread(u32 tid, void *arg);
    // Finishes thread and returns previous status.
    ThreadStatus FinishThread(u32 tid);
!   void StartThread(u32 tid, ThreadID os_id, ThreadType thread_type, void *arg);
    u32 ConsumeThreadUserId(uptr user_id);
    void SetThreadUserId(u32 tid, uptr user_id);
  
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_unwind_linux_libcdep.cpp gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_unwind_linux_libcdep.cpp
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_unwind_linux_libcdep.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_unwind_linux_libcdep.cpp	Sun Dec  7 22:32:18 2025
***************
*** 12,18 ****
  
  #include "sanitizer_platform.h"
  #if SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_NETBSD || \
!     SANITIZER_SOLARIS
  #include "sanitizer_common.h"
  #include "sanitizer_stacktrace.h"
  
--- 12,18 ----
  
  #include "sanitizer_platform.h"
  #if SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_NETBSD || \
!     SANITIZER_SOLARIS || SANITIZER_HAIKU
  #include "sanitizer_common.h"
  #include "sanitizer_stacktrace.h"
  
*************** _Unwind_Reason_Code Unwind_Trace(struct
*** 91,128 ****
  
  }  // namespace
  
- #if SANITIZER_ANDROID
- void SanitizerInitializeUnwinder() {
-   if (AndroidGetApiLevel() >= ANDROID_LOLLIPOP_MR1) return;
- 
-   // Pre-lollipop Android can not unwind through signal handler frames with
-   // libgcc unwinder, but it has a libcorkscrew.so library with the necessary
-   // workarounds.
-   void *p = dlopen("libcorkscrew.so", RTLD_LAZY);
-   if (!p) {
-     VReport(1,
-             "Failed to open libcorkscrew.so. You may see broken stack traces "
-             "in SEGV reports.");
-     return;
-   }
-   acquire_my_map_info_list =
-       (acquire_my_map_info_list_func)(uptr)dlsym(p, "acquire_my_map_info_list");
-   release_my_map_info_list =
-       (release_my_map_info_list_func)(uptr)dlsym(p, "release_my_map_info_list");
-   unwind_backtrace_signal_arch = (unwind_backtrace_signal_arch_func)(uptr)dlsym(
-       p, "unwind_backtrace_signal_arch");
-   if (!acquire_my_map_info_list || !release_my_map_info_list ||
-       !unwind_backtrace_signal_arch) {
-     VReport(1,
-             "Failed to find one of the required symbols in libcorkscrew.so. "
-             "You may see broken stack traces in SEGV reports.");
-     acquire_my_map_info_list = 0;
-     unwind_backtrace_signal_arch = 0;
-     release_my_map_info_list = 0;
-   }
- }
- #endif
- 
  void BufferedStackTrace::UnwindSlow(uptr pc, u32 max_depth) {
    CHECK_GE(max_depth, 2);
    size = 0;
--- 91,96 ----
*************** void BufferedStackTrace::UnwindSlow(uptr
*** 171,174 ****
  }  // namespace __sanitizer
  
  #endif  // SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_NETBSD ||
!         // SANITIZER_SOLARIS
--- 139,142 ----
  }  // namespace __sanitizer
  
  #endif  // SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_NETBSD ||
!         // SANITIZER_SOLARIS || SANITIZER_HAIKU
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_unwind_win.cpp gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_unwind_win.cpp
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_unwind_win.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_unwind_win.cpp	Sun Dec  7 22:32:18 2025
*************** void BufferedStackTrace::UnwindSlow(uptr
*** 75,80 ****
--- 75,85 ----
    stack_frame.AddrPC.Offset = ctx.Pc;
    stack_frame.AddrFrame.Offset = ctx.R11;
    stack_frame.AddrStack.Offset = ctx.Sp;
+ #      elif SANITIZER_MIPS32
+   int machine_type = IMAGE_FILE_MACHINE_R4000;
+   stack_frame.AddrPC.Offset = ctx.Fir;
+   stack_frame.AddrFrame.Offset = ctx.IntS8;
+   stack_frame.AddrStack.Offset = ctx.IntSp;
  #      else
    int machine_type = IMAGE_FILE_MACHINE_I386;
    stack_frame.AddrPC.Offset = ctx.Eip;
diff -Nrcpad gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_win.cpp gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_win.cpp
*** gcc-16-20251130/libsanitizer/sanitizer_common/sanitizer_win.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/sanitizer_common/sanitizer_win.cpp	Sun Dec  7 22:32:18 2025
*************** int internal_dlinfo(void *handle, int re
*** 108,116 ****
  
  // In contrast to POSIX, on Windows GetCurrentThreadId()
  // returns a system-unique identifier.
! tid_t GetTid() {
!   return GetCurrentThreadId();
! }
  
  uptr GetThreadSelf() {
    return GetTid();
--- 108,114 ----
  
  // In contrast to POSIX, on Windows GetCurrentThreadId()
  // returns a system-unique identifier.
! ThreadID GetTid() { return GetCurrentThreadId(); }
  
  uptr GetThreadSelf() {
    return GetTid();
*************** void UnmapOrDie(void *addr, uptr size, b
*** 164,170 ****
  static void *ReturnNullptrOnOOMOrDie(uptr size, const char *mem_type,
                                       const char *mmap_type) {
    error_t last_error = GetLastError();
!   if (last_error == ERROR_NOT_ENOUGH_MEMORY)
      return nullptr;
    ReportMmapFailureAndDie(size, mem_type, mmap_type, last_error);
  }
--- 162,185 ----
  static void *ReturnNullptrOnOOMOrDie(uptr size, const char *mem_type,
                                       const char *mmap_type) {
    error_t last_error = GetLastError();
! 
!   // Assumption: VirtualAlloc is the last system call that was invoked before
!   //   this method.
!   // VirtualAlloc emits one of 3 error codes when running out of memory
!   // 1. ERROR_NOT_ENOUGH_MEMORY:
!   //  There's not enough memory to execute the command
!   // 2. ERROR_INVALID_PARAMETER:
!   //  VirtualAlloc will return this if the request would allocate memory at an
!   //  address exceeding or being very close to the maximum application address
!   //  (the `lpMaximumApplicationAddress` field within the `SystemInfo` struct).
!   //  This does not seem to be officially documented, but is corroborated here:
!   //  https://stackoverflow.com/questions/45833674/why-does-virtualalloc-fail-for-lpaddress-greater-than-0x6ffffffffff
!   // 3. ERROR_COMMITMENT_LIMIT:
!   //  VirtualAlloc will return this if e.g. the pagefile is too small to commit
!   //  the requested amount of memory.
!   if (last_error == ERROR_NOT_ENOUGH_MEMORY ||
!       last_error == ERROR_INVALID_PARAMETER ||
!       last_error == ERROR_COMMITMENT_LIMIT)
      return nullptr;
    ReportMmapFailureAndDie(size, mem_type, mmap_type, last_error);
  }
*************** void SignalContext::InitPcSpBp() {
*** 994,999 ****
--- 1009,1017 ----
  #    if SANITIZER_ARM
    bp = (uptr)context_record->R11;
    sp = (uptr)context_record->Sp;
+ #    elif SANITIZER_MIPS32
+   bp = (uptr)context_record->IntS8;
+   sp = (uptr)context_record->IntSp;
  #    else
    bp = (uptr)context_record->Ebp;
    sp = (uptr)context_record->Esp;
diff -Nrcpad gcc-16-20251130/libsanitizer/tsan/tsan_debugging.cpp gcc-16-20251207/libsanitizer/tsan/tsan_debugging.cpp
*** gcc-16-20251130/libsanitizer/tsan/tsan_debugging.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/tsan/tsan_debugging.cpp	Sun Dec  7 22:32:18 2025
*************** int __tsan_get_report_mutex(void *report
*** 165,171 ****
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! int __tsan_get_report_thread(void *report, uptr idx, int *tid, tid_t *os_id,
                               int *running, const char **name, int *parent_tid,
                               void **trace, uptr trace_size) {
    const ReportDesc *rep = (ReportDesc *)report;
--- 165,171 ----
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! int __tsan_get_report_thread(void *report, uptr idx, int *tid, ThreadID *os_id,
                               int *running, const char **name, int *parent_tid,
                               void **trace, uptr trace_size) {
    const ReportDesc *rep = (ReportDesc *)report;
*************** const char *__tsan_locate_address(uptr a
*** 242,248 ****
  
  SANITIZER_INTERFACE_ATTRIBUTE
  int __tsan_get_alloc_stack(uptr addr, uptr *trace, uptr size, int *thread_id,
!                            tid_t *os_id) {
    MBlock *b = 0;
    Allocator *a = allocator();
    if (a->PointerIsMine((void *)addr)) {
--- 242,248 ----
  
  SANITIZER_INTERFACE_ATTRIBUTE
  int __tsan_get_alloc_stack(uptr addr, uptr *trace, uptr size, int *thread_id,
!                            ThreadID *os_id) {
    MBlock *b = 0;
    Allocator *a = allocator();
    if (a->PointerIsMine((void *)addr)) {
diff -Nrcpad gcc-16-20251130/libsanitizer/tsan/tsan_flags.cpp gcc-16-20251207/libsanitizer/tsan/tsan_flags.cpp
*** gcc-16-20251130/libsanitizer/tsan/tsan_flags.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/tsan/tsan_flags.cpp	Sun Dec  7 22:32:18 2025
***************
*** 20,25 ****
--- 20,62 ----
  #include "tsan_rtl.h"
  #include "ubsan/ubsan_flags.h"
  
+ #if SANITIZER_APPLE && !SANITIZER_GO
+ namespace __sanitizer {
+ 
+ template <>
+ inline bool FlagHandler<LockDuringWriteSetting>::Parse(const char *value) {
+   if (internal_strcmp(value, "on") == 0) {
+     *t_ = kLockDuringAllWrites;
+     return true;
+   }
+   if (internal_strcmp(value, "disable_for_current_process") == 0) {
+     *t_ = kNoLockDuringWritesCurrentProcess;
+     return true;
+   }
+   if (internal_strcmp(value, "disable_for_all_processes") == 0) {
+     *t_ = kNoLockDuringWritesAllProcesses;
+     return true;
+   }
+   Printf("ERROR: Invalid value for signal handler option: '%s'\n", value);
+   return false;
+ }
+ 
+ template <>
+ inline bool FlagHandler<LockDuringWriteSetting>::Format(char *buffer,
+                                                         uptr size) {
+   switch (*t_) {
+     case kLockDuringAllWrites:
+       return FormatString(buffer, size, "on");
+     case kNoLockDuringWritesCurrentProcess:
+       return FormatString(buffer, size, "disable_for_current_process");
+     case kNoLockDuringWritesAllProcesses:
+       return FormatString(buffer, size, "disable_for_all_processes");
+   }
+ }
+ 
+ }  // namespace __sanitizer
+ #endif  // SANITIZER_APPLE && !SANITIZER_GO
+ 
  namespace __tsan {
  
  // Can be overriden in frontend.
diff -Nrcpad gcc-16-20251130/libsanitizer/tsan/tsan_flags.h gcc-16-20251207/libsanitizer/tsan/tsan_flags.h
*** gcc-16-20251130/libsanitizer/tsan/tsan_flags.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/tsan/tsan_flags.h	Sun Dec  7 22:32:18 2025
***************
*** 16,21 ****
--- 16,29 ----
  #include "sanitizer_common/sanitizer_flags.h"
  #include "sanitizer_common/sanitizer_deadlock_detector_interface.h"
  
+ #if SANITIZER_APPLE && !SANITIZER_GO
+ enum LockDuringWriteSetting {
+   kLockDuringAllWrites,
+   kNoLockDuringWritesCurrentProcess,
+   kNoLockDuringWritesAllProcesses,
+ };
+ #endif
+ 
  namespace __tsan {
  
  struct Flags : DDFlags {
diff -Nrcpad gcc-16-20251130/libsanitizer/tsan/tsan_flags.inc gcc-16-20251207/libsanitizer/tsan/tsan_flags.inc
*** gcc-16-20251130/libsanitizer/tsan/tsan_flags.inc	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/tsan/tsan_flags.inc	Sun Dec  7 22:32:18 2025
*************** TSAN_FLAG(bool, shared_ptr_interceptor,
*** 80,82 ****
--- 80,94 ----
  TSAN_FLAG(bool, print_full_thread_history, false,
            "If set, prints thread creation stacks for the threads involved in "
            "the report and their ancestors up to the main thread.")
+ 
+ #if SANITIZER_APPLE && !SANITIZER_GO
+ TSAN_FLAG(LockDuringWriteSetting, lock_during_write, kLockDuringAllWrites,
+           "Determines whether to obtain a lock while writing logs or error "
+           "reports. "
+           "\"on\" - [default] lock during all writes. "
+           "\"disable_for_current_process\" - don't lock during all writes in "
+           "the current process, but do lock for all writes in child "
+           "processes."
+           "\"disable_for_all_processes\" - don't lock during all writes in "
+           "the current process and it's children processes.")
+ #endif
diff -Nrcpad gcc-16-20251130/libsanitizer/tsan/tsan_interceptors.h gcc-16-20251207/libsanitizer/tsan/tsan_interceptors.h
*** gcc-16-20251130/libsanitizer/tsan/tsan_interceptors.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/tsan/tsan_interceptors.h	Sun Dec  7 22:32:18 2025
***************
*** 1,6 ****
--- 1,9 ----
  #ifndef TSAN_INTERCEPTORS_H
  #define TSAN_INTERCEPTORS_H
  
+ #if SANITIZER_APPLE && !SANITIZER_GO
+ #  include "sanitizer_common/sanitizer_mac.h"
+ #endif
  #include "sanitizer_common/sanitizer_stacktrace.h"
  #include "tsan_rtl.h"
  
*************** inline bool in_symbolizer() {
*** 43,49 ****
  #endif
  
  inline bool MustIgnoreInterceptor(ThreadState *thr) {
!   return !thr->is_inited || thr->ignore_interceptors || thr->in_ignored_lib;
  }
  
  }  // namespace __tsan
--- 46,57 ----
  #endif
  
  inline bool MustIgnoreInterceptor(ThreadState *thr) {
!   return !thr->is_inited || thr->ignore_interceptors || thr->in_ignored_lib
! #if SANITIZER_APPLE && !SANITIZER_GO
!          || (flags()->lock_during_write != kLockDuringAllWrites &&
!              thr->in_internal_write_call)
! #endif
!       ;
  }
  
  }  // namespace __tsan
diff -Nrcpad gcc-16-20251130/libsanitizer/tsan/tsan_interceptors_mac.cpp gcc-16-20251207/libsanitizer/tsan/tsan_interceptors_mac.cpp
*** gcc-16-20251130/libsanitizer/tsan/tsan_interceptors_mac.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/tsan/tsan_interceptors_mac.cpp	Sun Dec  7 22:32:18 2025
***************
*** 14,35 ****
  #include "sanitizer_common/sanitizer_platform.h"
  #if SANITIZER_APPLE
  
! #include "interception/interception.h"
! #include "tsan_interceptors.h"
! #include "tsan_interface.h"
! #include "tsan_interface_ann.h"
! #include "tsan_spinlock_defs_mac.h"
! #include "sanitizer_common/sanitizer_addrhashmap.h"
  
! #include <errno.h>
! #include <libkern/OSAtomic.h>
! #include <objc/objc-sync.h>
! #include <os/lock.h>
! #include <sys/ucontext.h>
  
! #if defined(__has_include) && __has_include(<xpc/xpc.h>)
! #include <xpc/xpc.h>
! #endif  // #if defined(__has_include) && __has_include(<xpc/xpc.h>)
  
  typedef long long_t;
  
--- 14,34 ----
  #include "sanitizer_common/sanitizer_platform.h"
  #if SANITIZER_APPLE
  
! #  include <errno.h>
! #  include <libkern/OSAtomic.h>
! #  include <objc/objc-sync.h>
! #  include <os/lock.h>
! #  include <sys/ucontext.h>
  
! #  include "interception/interception.h"
! #  include "sanitizer_common/sanitizer_addrhashmap.h"
! #  include "tsan_interceptors.h"
! #  include "tsan_interface.h"
! #  include "tsan_interface_ann.h"
  
! #  if defined(__has_include) && __has_include(<xpc/xpc.h>)
! #    include <xpc/xpc.h>
! #  endif  // #if defined(__has_include) && __has_include(<xpc/xpc.h>)
  
  typedef long long_t;
  
*************** static constexpr morder kMacOrderBarrier
*** 49,103 ****
  static constexpr morder kMacOrderNonBarrier = mo_acq_rel;
  static constexpr morder kMacFailureOrder = mo_relaxed;
  
! #define OSATOMIC_INTERCEPTOR(return_t, t, tsan_t, f, tsan_atomic_f, mo) \
!   TSAN_INTERCEPTOR(return_t, f, t x, volatile t *ptr) {                 \
!     SCOPED_TSAN_INTERCEPTOR(f, x, ptr);                                 \
!     return tsan_atomic_f((volatile tsan_t *)ptr, x, mo);                \
!   }
! 
! #define OSATOMIC_INTERCEPTOR_PLUS_X(return_t, t, tsan_t, f, tsan_atomic_f, mo) \
!   TSAN_INTERCEPTOR(return_t, f, t x, volatile t *ptr) {                        \
!     SCOPED_TSAN_INTERCEPTOR(f, x, ptr);                                        \
!     return tsan_atomic_f((volatile tsan_t *)ptr, x, mo) + x;                   \
!   }
  
! #define OSATOMIC_INTERCEPTOR_PLUS_1(return_t, t, tsan_t, f, tsan_atomic_f, mo) \
!   TSAN_INTERCEPTOR(return_t, f, volatile t *ptr) {                             \
!     SCOPED_TSAN_INTERCEPTOR(f, ptr);                                           \
!     return tsan_atomic_f((volatile tsan_t *)ptr, 1, mo) + 1;                   \
!   }
  
! #define OSATOMIC_INTERCEPTOR_MINUS_1(return_t, t, tsan_t, f, tsan_atomic_f, \
!                                      mo)                                    \
!   TSAN_INTERCEPTOR(return_t, f, volatile t *ptr) {                          \
!     SCOPED_TSAN_INTERCEPTOR(f, ptr);                                        \
!     return tsan_atomic_f((volatile tsan_t *)ptr, 1, mo) - 1;                \
!   }
  
! #define OSATOMIC_INTERCEPTORS_ARITHMETIC(f, tsan_atomic_f, m)                  \
!   m(int32_t, int32_t, a32, f##32, __tsan_atomic32_##tsan_atomic_f,             \
!     kMacOrderNonBarrier)                                                       \
!   m(int32_t, int32_t, a32, f##32##Barrier, __tsan_atomic32_##tsan_atomic_f,    \
!     kMacOrderBarrier)                                                          \
!   m(int64_t, int64_t, a64, f##64, __tsan_atomic64_##tsan_atomic_f,             \
!     kMacOrderNonBarrier)                                                       \
!   m(int64_t, int64_t, a64, f##64##Barrier, __tsan_atomic64_##tsan_atomic_f,    \
!     kMacOrderBarrier)
  
! #define OSATOMIC_INTERCEPTORS_BITWISE(f, tsan_atomic_f, m, m_orig)             \
!   m(int32_t, uint32_t, a32, f##32, __tsan_atomic32_##tsan_atomic_f,            \
!     kMacOrderNonBarrier)                                                       \
!   m(int32_t, uint32_t, a32, f##32##Barrier, __tsan_atomic32_##tsan_atomic_f,   \
!     kMacOrderBarrier)                                                          \
!   m_orig(int32_t, uint32_t, a32, f##32##Orig, __tsan_atomic32_##tsan_atomic_f, \
!     kMacOrderNonBarrier)                                                       \
!   m_orig(int32_t, uint32_t, a32, f##32##OrigBarrier,                           \
!     __tsan_atomic32_##tsan_atomic_f, kMacOrderBarrier)
  
  
! #pragma clang diagnostic push
! // OSAtomic* functions are deprecated.
! #pragma clang diagnostic ignored "-Wdeprecated-declarations"
  OSATOMIC_INTERCEPTORS_ARITHMETIC(OSAtomicAdd, fetch_add,
                                   OSATOMIC_INTERCEPTOR_PLUS_X)
  OSATOMIC_INTERCEPTORS_ARITHMETIC(OSAtomicIncrement, fetch_add,
--- 48,102 ----
  static constexpr morder kMacOrderNonBarrier = mo_acq_rel;
  static constexpr morder kMacFailureOrder = mo_relaxed;
  
! #  define OSATOMIC_INTERCEPTOR(return_t, t, tsan_t, f, tsan_atomic_f, mo) \
!     TSAN_INTERCEPTOR(return_t, f, t x, volatile t *ptr) {                 \
!       SCOPED_TSAN_INTERCEPTOR(f, x, ptr);                                 \
!       return tsan_atomic_f((volatile tsan_t *)ptr, x, mo);                \
!     }
  
! #  define OSATOMIC_INTERCEPTOR_PLUS_X(return_t, t, tsan_t, f, tsan_atomic_f, \
!                                       mo)                                    \
!     TSAN_INTERCEPTOR(return_t, f, t x, volatile t *ptr) {                    \
!       SCOPED_TSAN_INTERCEPTOR(f, x, ptr);                                    \
!       return tsan_atomic_f((volatile tsan_t *)ptr, x, mo) + x;               \
!     }
  
! #  define OSATOMIC_INTERCEPTOR_PLUS_1(return_t, t, tsan_t, f, tsan_atomic_f, \
!                                       mo)                                    \
!     TSAN_INTERCEPTOR(return_t, f, volatile t *ptr) {                         \
!       SCOPED_TSAN_INTERCEPTOR(f, ptr);                                       \
!       return tsan_atomic_f((volatile tsan_t *)ptr, 1, mo) + 1;               \
!     }
  
! #  define OSATOMIC_INTERCEPTOR_MINUS_1(return_t, t, tsan_t, f, tsan_atomic_f, \
!                                        mo)                                    \
!     TSAN_INTERCEPTOR(return_t, f, volatile t *ptr) {                          \
!       SCOPED_TSAN_INTERCEPTOR(f, ptr);                                        \
!       return tsan_atomic_f((volatile tsan_t *)ptr, 1, mo) - 1;                \
!     }
  
! #  define OSATOMIC_INTERCEPTORS_ARITHMETIC(f, tsan_atomic_f, m)              \
!     m(int32_t, int32_t, a32, f##32, __tsan_atomic32_##tsan_atomic_f,         \
!       kMacOrderNonBarrier)                                                   \
!         m(int32_t, int32_t, a32, f##32##Barrier,                             \
!           __tsan_atomic32_##tsan_atomic_f, kMacOrderBarrier)                 \
!             m(int64_t, int64_t, a64, f##64, __tsan_atomic64_##tsan_atomic_f, \
!               kMacOrderNonBarrier)                                           \
!                 m(int64_t, int64_t, a64, f##64##Barrier,                     \
!                   __tsan_atomic64_##tsan_atomic_f, kMacOrderBarrier)
  
+ #  define OSATOMIC_INTERCEPTORS_BITWISE(f, tsan_atomic_f, m, m_orig)     \
+     m(int32_t, uint32_t, a32, f##32, __tsan_atomic32_##tsan_atomic_f,    \
+       kMacOrderNonBarrier)                                               \
+         m(int32_t, uint32_t, a32, f##32##Barrier,                        \
+           __tsan_atomic32_##tsan_atomic_f, kMacOrderBarrier)             \
+             m_orig(int32_t, uint32_t, a32, f##32##Orig,                  \
+                    __tsan_atomic32_##tsan_atomic_f, kMacOrderNonBarrier) \
+                 m_orig(int32_t, uint32_t, a32, f##32##OrigBarrier,       \
+                        __tsan_atomic32_##tsan_atomic_f, kMacOrderBarrier)
  
! #  pragma clang diagnostic push  // OSAtomic* deprecation
! #  pragma clang diagnostic ignored "-Wdeprecated-declarations"
  OSATOMIC_INTERCEPTORS_ARITHMETIC(OSAtomicAdd, fetch_add,
                                   OSATOMIC_INTERCEPTOR_PLUS_X)
  OSATOMIC_INTERCEPTORS_ARITHMETIC(OSAtomicIncrement, fetch_add,
*************** OSATOMIC_INTERCEPTORS_BITWISE(OSAtomicAn
*** 110,135 ****
                                OSATOMIC_INTERCEPTOR_PLUS_X, OSATOMIC_INTERCEPTOR)
  OSATOMIC_INTERCEPTORS_BITWISE(OSAtomicXor, fetch_xor,
                                OSATOMIC_INTERCEPTOR_PLUS_X, OSATOMIC_INTERCEPTOR)
  
! #define OSATOMIC_INTERCEPTORS_CAS(f, tsan_atomic_f, tsan_t, t)              \
!   TSAN_INTERCEPTOR(bool, f, t old_value, t new_value, t volatile *ptr) {    \
!     SCOPED_TSAN_INTERCEPTOR(f, old_value, new_value, ptr);                  \
!     return tsan_atomic_f##_compare_exchange_strong(                         \
!         (volatile tsan_t *)ptr, (tsan_t *)&old_value, (tsan_t)new_value,    \
!         kMacOrderNonBarrier, kMacFailureOrder);                             \
!   }                                                                         \
!                                                                             \
!   TSAN_INTERCEPTOR(bool, f##Barrier, t old_value, t new_value,              \
!                    t volatile *ptr) {                                       \
!     SCOPED_TSAN_INTERCEPTOR(f##Barrier, old_value, new_value, ptr);         \
!     return tsan_atomic_f##_compare_exchange_strong(                         \
!         (volatile tsan_t *)ptr, (tsan_t *)&old_value, (tsan_t)new_value,    \
!         kMacOrderBarrier, kMacFailureOrder);                                \
!   }
  
! #pragma clang diagnostic push
! // OSAtomicCompareAndSwap* functions are deprecated.
! #pragma clang diagnostic ignored "-Wdeprecated-declarations"
  OSATOMIC_INTERCEPTORS_CAS(OSAtomicCompareAndSwapInt, __tsan_atomic32, a32, int)
  OSATOMIC_INTERCEPTORS_CAS(OSAtomicCompareAndSwapLong, __tsan_atomic64, a64,
                            long_t)
--- 109,134 ----
                                OSATOMIC_INTERCEPTOR_PLUS_X, OSATOMIC_INTERCEPTOR)
  OSATOMIC_INTERCEPTORS_BITWISE(OSAtomicXor, fetch_xor,
                                OSATOMIC_INTERCEPTOR_PLUS_X, OSATOMIC_INTERCEPTOR)
+ #  pragma clang diagnostic pop  // OSAtomic* deprecation
  
! #  define OSATOMIC_INTERCEPTORS_CAS(f, tsan_atomic_f, tsan_t, t)           \
!     TSAN_INTERCEPTOR(bool, f, t old_value, t new_value, t volatile *ptr) { \
!       SCOPED_TSAN_INTERCEPTOR(f, old_value, new_value, ptr);               \
!       return tsan_atomic_f##_compare_exchange_strong(                      \
!           (volatile tsan_t *)ptr, (tsan_t *)&old_value, (tsan_t)new_value, \
!           kMacOrderNonBarrier, kMacFailureOrder);                          \
!     }                                                                      \
!                                                                            \
!     TSAN_INTERCEPTOR(bool, f##Barrier, t old_value, t new_value,           \
!                      t volatile *ptr) {                                    \
!       SCOPED_TSAN_INTERCEPTOR(f##Barrier, old_value, new_value, ptr);      \
!       return tsan_atomic_f##_compare_exchange_strong(                      \
!           (volatile tsan_t *)ptr, (tsan_t *)&old_value, (tsan_t)new_value, \
!           kMacOrderBarrier, kMacFailureOrder);                             \
!     }
  
! #  pragma clang diagnostic push  // OSAtomicCompareAndSwap* deprecation
! #  pragma clang diagnostic ignored "-Wdeprecated-declarations"
  OSATOMIC_INTERCEPTORS_CAS(OSAtomicCompareAndSwapInt, __tsan_atomic32, a32, int)
  OSATOMIC_INTERCEPTORS_CAS(OSAtomicCompareAndSwapLong, __tsan_atomic64, a64,
                            long_t)
*************** OSATOMIC_INTERCEPTORS_CAS(OSAtomicCompar
*** 139,163 ****
                            int32_t)
  OSATOMIC_INTERCEPTORS_CAS(OSAtomicCompareAndSwap64, __tsan_atomic64, a64,
                            int64_t)
! #pragma clang diagnostic pop
  
! #define OSATOMIC_INTERCEPTOR_BITOP(f, op, clear, mo)             \
!   TSAN_INTERCEPTOR(bool, f, uint32_t n, volatile void *ptr) {    \
!     SCOPED_TSAN_INTERCEPTOR(f, n, ptr);                          \
!     volatile char *byte_ptr = ((volatile char *)ptr) + (n >> 3); \
!     char bit = 0x80u >> (n & 7);                                 \
!     char mask = clear ? ~bit : bit;                              \
!     char orig_byte = op((volatile a8 *)byte_ptr, mask, mo);      \
!     return orig_byte & bit;                                      \
!   }
  
! #define OSATOMIC_INTERCEPTORS_BITOP(f, op, clear)               \
!   OSATOMIC_INTERCEPTOR_BITOP(f, op, clear, kMacOrderNonBarrier) \
!   OSATOMIC_INTERCEPTOR_BITOP(f##Barrier, op, clear, kMacOrderBarrier)
  
  OSATOMIC_INTERCEPTORS_BITOP(OSAtomicTestAndSet, __tsan_atomic8_fetch_or, false)
  OSATOMIC_INTERCEPTORS_BITOP(OSAtomicTestAndClear, __tsan_atomic8_fetch_and,
                              true)
  
  TSAN_INTERCEPTOR(void, OSAtomicEnqueue, OSQueueHead *list, void *item,
                   size_t offset) {
--- 138,165 ----
                            int32_t)
  OSATOMIC_INTERCEPTORS_CAS(OSAtomicCompareAndSwap64, __tsan_atomic64, a64,
                            int64_t)
! #  pragma clang diagnostic pop  // OSAtomicCompareAndSwap* deprecation
  
! #  define OSATOMIC_INTERCEPTOR_BITOP(f, op, clear, mo)             \
!     TSAN_INTERCEPTOR(bool, f, uint32_t n, volatile void *ptr) {    \
!       SCOPED_TSAN_INTERCEPTOR(f, n, ptr);                          \
!       volatile char *byte_ptr = ((volatile char *)ptr) + (n >> 3); \
!       char bit = 0x80u >> (n & 7);                                 \
!       char mask = clear ? ~bit : bit;                              \
!       char orig_byte = op((volatile a8 *)byte_ptr, mask, mo);      \
!       return orig_byte & bit;                                      \
!     }
  
! #  define OSATOMIC_INTERCEPTORS_BITOP(f, op, clear)               \
!     OSATOMIC_INTERCEPTOR_BITOP(f, op, clear, kMacOrderNonBarrier) \
!     OSATOMIC_INTERCEPTOR_BITOP(f##Barrier, op, clear, kMacOrderBarrier)
  
+ #  pragma clang diagnostic push  // OSAtomicTestAnd* deprecation
+ #  pragma clang diagnostic ignored "-Wdeprecated-declarations"
  OSATOMIC_INTERCEPTORS_BITOP(OSAtomicTestAndSet, __tsan_atomic8_fetch_or, false)
  OSATOMIC_INTERCEPTORS_BITOP(OSAtomicTestAndClear, __tsan_atomic8_fetch_and,
                              true)
+ #  pragma clang diagnostic pop  // OSAtomicTestAnd* deprecation
  
  TSAN_INTERCEPTOR(void, OSAtomicEnqueue, OSQueueHead *list, void *item,
                   size_t offset) {
*************** TSAN_INTERCEPTOR(void, OSAtomicEnqueue,
*** 169,180 ****
  TSAN_INTERCEPTOR(void *, OSAtomicDequeue, OSQueueHead *list, size_t offset) {
    SCOPED_TSAN_INTERCEPTOR(OSAtomicDequeue, list, offset);
    void *item = REAL(OSAtomicDequeue)(list, offset);
!   if (item) __tsan_acquire(item);
    return item;
  }
  
  // OSAtomicFifoEnqueue and OSAtomicFifoDequeue are only on OS X.
! #if !SANITIZER_IOS
  
  TSAN_INTERCEPTOR(void, OSAtomicFifoEnqueue, OSFifoQueueHead *list, void *item,
                   size_t offset) {
--- 171,183 ----
  TSAN_INTERCEPTOR(void *, OSAtomicDequeue, OSQueueHead *list, size_t offset) {
    SCOPED_TSAN_INTERCEPTOR(OSAtomicDequeue, list, offset);
    void *item = REAL(OSAtomicDequeue)(list, offset);
!   if (item)
!     __tsan_acquire(item);
    return item;
  }
  
  // OSAtomicFifoEnqueue and OSAtomicFifoDequeue are only on OS X.
! #  if !SANITIZER_IOS
  
  TSAN_INTERCEPTOR(void, OSAtomicFifoEnqueue, OSFifoQueueHead *list, void *item,
                   size_t offset) {
*************** TSAN_INTERCEPTOR(void *, OSAtomicFifoDeq
*** 187,197 ****
                   size_t offset) {
    SCOPED_TSAN_INTERCEPTOR(OSAtomicFifoDequeue, list, offset);
    void *item = REAL(OSAtomicFifoDequeue)(list, offset);
!   if (item) __tsan_acquire(item);
    return item;
  }
  
! #endif
  
  TSAN_INTERCEPTOR(void, OSSpinLockLock, volatile OSSpinLock *lock) {
    CHECK(!cur_thread()->is_dead);
--- 190,211 ----
                   size_t offset) {
    SCOPED_TSAN_INTERCEPTOR(OSAtomicFifoDequeue, list, offset);
    void *item = REAL(OSAtomicFifoDequeue)(list, offset);
!   if (item)
!     __tsan_acquire(item);
    return item;
  }
  
! #  endif
! 
! // If `OSSPINLOCK_USE_INLINED=1` is set, then SDK headers don't declare these
! // as functions, but macros that call non-deprecated APIs.  Undefine these
! // macros so they don't interfere with the interceptor machinery.
! #  undef OSSpinLockLock
! #  undef OSSpinLockTry
! #  undef OSSpinLockUnlock
! 
! #  pragma clang diagnostic push  // OSSpinLock* deprecation
! #  pragma clang diagnostic ignored "-Wdeprecated-declarations"
  
  TSAN_INTERCEPTOR(void, OSSpinLockLock, volatile OSSpinLock *lock) {
    CHECK(!cur_thread()->is_dead);
*************** TSAN_INTERCEPTOR(void, OSSpinLockUnlock,
*** 224,229 ****
--- 238,244 ----
    Release(thr, pc, (uptr)lock);
    REAL(OSSpinLockUnlock)(lock);
  }
+ #  pragma clang diagnostic pop  // OSSpinLock* deprecation
  
  TSAN_INTERCEPTOR(void, os_lock_lock, void *lock) {
    CHECK(!cur_thread()->is_dead);
*************** TSAN_INTERCEPTOR(void, os_unfair_lock_lo
*** 266,271 ****
--- 281,305 ----
    Acquire(thr, pc, (uptr)lock);
  }
  
+ // os_unfair_lock_lock_with_flags was introduced in macOS 15
+ #  if defined(__MAC_15_0) || defined(__IPHONE_18_0) || defined(__TVOS_18_0) || \
+       defined(__VISIONOS_2_0) || defined(__WATCHOS_11_0)
+ #    pragma clang diagnostic push
+ #    pragma clang diagnostic ignored "-Wunguarded-availability-new"
+ // We're just intercepting this - if it doesn't exist on the platform, then the
+ // process shouldn't have called it in the first place.
+ TSAN_INTERCEPTOR(void, os_unfair_lock_lock_with_flags, os_unfair_lock_t lock,
+                  os_unfair_lock_flags_t flags) {
+   if (!cur_thread()->is_inited || cur_thread()->is_dead) {
+     return REAL(os_unfair_lock_lock_with_flags)(lock, flags);
+   }
+   SCOPED_TSAN_INTERCEPTOR(os_unfair_lock_lock_with_flags, lock, flags);
+   REAL(os_unfair_lock_lock_with_flags)(lock, flags);
+   Acquire(thr, pc, (uptr)lock);
+ }
+ #    pragma clang diagnostic pop
+ #  endif
+ 
  TSAN_INTERCEPTOR(void, os_unfair_lock_lock_with_options, os_unfair_lock_t lock,
                   u32 options) {
    if (!cur_thread()->is_inited || cur_thread()->is_dead) {
*************** TSAN_INTERCEPTOR(void, os_unfair_lock_un
*** 296,302 ****
    REAL(os_unfair_lock_unlock)(lock);
  }
  
! #if defined(__has_include) && __has_include(<xpc/xpc.h>)
  
  TSAN_INTERCEPTOR(void, xpc_connection_set_event_handler,
                   xpc_connection_t connection, xpc_handler_t handler) {
--- 330,336 ----
    REAL(os_unfair_lock_unlock)(lock);
  }
  
! #  if defined(__has_include) && __has_include(<xpc/xpc.h>)
  
  TSAN_INTERCEPTOR(void, xpc_connection_set_event_handler,
                   xpc_connection_t connection, xpc_handler_t handler) {
*************** TSAN_INTERCEPTOR(void, xpc_connection_ca
*** 350,356 ****
    REAL(xpc_connection_cancel)(connection);
  }
  
! #endif  // #if defined(__has_include) && __has_include(<xpc/xpc.h>)
  
  // Determines whether the Obj-C object pointer is a tagged pointer. Tagged
  // pointers encode the object data directly in their pointer bits and do not
--- 384,390 ----
    REAL(xpc_connection_cancel)(connection);
  }
  
! #  endif  // #if defined(__has_include) && __has_include(<xpc/xpc.h>)
  
  // Determines whether the Obj-C object pointer is a tagged pointer. Tagged
  // pointers encode the object data directly in their pointer bits and do not
*************** static uptr GetOrCreateSyncAddress(uptr
*** 373,379 ****
    Map::Handle h(&Addresses, addr);
    if (h.created()) {
      ThreadIgnoreBegin(thr, pc);
!     *h = (uptr) user_alloc(thr, pc, /*size=*/1);
      ThreadIgnoreEnd(thr);
    }
    return *h;
--- 407,413 ----
    Map::Handle h(&Addresses, addr);
    if (h.created()) {
      ThreadIgnoreBegin(thr, pc);
!     *h = (uptr)user_alloc(thr, pc, /*size=*/1);
      ThreadIgnoreEnd(thr);
    }
    return *h;
*************** static uptr SyncAddressForObjCObject(id
*** 391,397 ****
  
  TSAN_INTERCEPTOR(int, objc_sync_enter, id obj) {
    SCOPED_TSAN_INTERCEPTOR(objc_sync_enter, obj);
!   if (!obj) return REAL(objc_sync_enter)(obj);
    uptr addr = SyncAddressForObjCObject(obj, thr, pc);
    MutexPreLock(thr, pc, addr, MutexFlagWriteReentrant);
    int result = REAL(objc_sync_enter)(obj);
--- 425,432 ----
  
  TSAN_INTERCEPTOR(int, objc_sync_enter, id obj) {
    SCOPED_TSAN_INTERCEPTOR(objc_sync_enter, obj);
!   if (!obj)
!     return REAL(objc_sync_enter)(obj);
    uptr addr = SyncAddressForObjCObject(obj, thr, pc);
    MutexPreLock(thr, pc, addr, MutexFlagWriteReentrant);
    int result = REAL(objc_sync_enter)(obj);
*************** TSAN_INTERCEPTOR(int, objc_sync_enter, i
*** 402,412 ****
  
  TSAN_INTERCEPTOR(int, objc_sync_exit, id obj) {
    SCOPED_TSAN_INTERCEPTOR(objc_sync_exit, obj);
!   if (!obj) return REAL(objc_sync_exit)(obj);
    uptr addr = SyncAddressForObjCObject(obj, thr, pc);
    MutexUnlock(thr, pc, addr);
    int result = REAL(objc_sync_exit)(obj);
!   if (result != OBJC_SYNC_SUCCESS) MutexInvalidAccess(thr, pc, addr);
    return result;
  }
  
--- 437,449 ----
  
  TSAN_INTERCEPTOR(int, objc_sync_exit, id obj) {
    SCOPED_TSAN_INTERCEPTOR(objc_sync_exit, obj);
!   if (!obj)
!     return REAL(objc_sync_exit)(obj);
    uptr addr = SyncAddressForObjCObject(obj, thr, pc);
    MutexUnlock(thr, pc, addr);
    int result = REAL(objc_sync_exit)(obj);
!   if (result != OBJC_SYNC_SUCCESS)
!     MutexInvalidAccess(thr, pc, addr);
    return result;
  }
  
*************** TSAN_INTERCEPTOR(int, swapcontext, ucont
*** 437,443 ****
  
  // On macOS, libc++ is always linked dynamically, so intercepting works the
  // usual way.
! #define STDCXX_INTERCEPTOR TSAN_INTERCEPTOR
  
  namespace {
  struct fake_shared_weak_count {
--- 474,480 ----
  
  // On macOS, libc++ is always linked dynamically, so intercepting works the
  // usual way.
! #  define STDCXX_INTERCEPTOR TSAN_INTERCEPTOR
  
  namespace {
  struct fake_shared_weak_count {
diff -Nrcpad gcc-16-20251130/libsanitizer/tsan/tsan_interceptors_posix.cpp gcc-16-20251207/libsanitizer/tsan/tsan_interceptors_posix.cpp
*** gcc-16-20251130/libsanitizer/tsan/tsan_interceptors_posix.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/tsan/tsan_interceptors_posix.cpp	Sun Dec  7 22:32:18 2025
***************
*** 12,17 ****
--- 12,20 ----
  // sanitizer_common/sanitizer_common_interceptors.inc
  //===----------------------------------------------------------------------===//
  
+ #include <stdarg.h>
+ 
+ #include "interception/interception.h"
  #include "sanitizer_common/sanitizer_allocator_dlsym.h"
  #include "sanitizer_common/sanitizer_atomic.h"
  #include "sanitizer_common/sanitizer_errno.h"
***************
*** 19,39 ****
  #include "sanitizer_common/sanitizer_internal_defs.h"
  #include "sanitizer_common/sanitizer_libc.h"
  #include "sanitizer_common/sanitizer_linux.h"
  #include "sanitizer_common/sanitizer_platform_limits_netbsd.h"
  #include "sanitizer_common/sanitizer_platform_limits_posix.h"
  #include "sanitizer_common/sanitizer_posix.h"
  #include "sanitizer_common/sanitizer_stacktrace.h"
  #include "sanitizer_common/sanitizer_tls_get_addr.h"
! #include "interception/interception.h"
  #include "tsan_interceptors.h"
  #include "tsan_interface.h"
  #include "tsan_platform.h"
- #include "tsan_suppressions.h"
  #include "tsan_rtl.h"
! #include "tsan_mman.h"
! #include "tsan_fd.h"
! 
! #include <stdarg.h>
  
  using namespace __tsan;
  
--- 22,45 ----
  #include "sanitizer_common/sanitizer_internal_defs.h"
  #include "sanitizer_common/sanitizer_libc.h"
  #include "sanitizer_common/sanitizer_linux.h"
+ #include "sanitizer_common/sanitizer_placement_new.h"
+ #include "sanitizer_common/sanitizer_platform_interceptors.h"
  #include "sanitizer_common/sanitizer_platform_limits_netbsd.h"
  #include "sanitizer_common/sanitizer_platform_limits_posix.h"
  #include "sanitizer_common/sanitizer_posix.h"
  #include "sanitizer_common/sanitizer_stacktrace.h"
  #include "sanitizer_common/sanitizer_tls_get_addr.h"
! #include "sanitizer_common/sanitizer_vector.h"
! #include "tsan_fd.h"
! #if SANITIZER_APPLE && !SANITIZER_GO
! #  include "tsan_flags.h"
! #endif
  #include "tsan_interceptors.h"
  #include "tsan_interface.h"
+ #include "tsan_mman.h"
  #include "tsan_platform.h"
  #include "tsan_rtl.h"
! #include "tsan_suppressions.h"
  
  using namespace __tsan;
  
*************** struct ucontext_t {
*** 76,92 ****
  };
  #endif
  
- #if defined(__x86_64__) || defined(__mips__) || SANITIZER_PPC64V1 || \
-     defined(__s390x__)
- #define PTHREAD_ABI_BASE  "GLIBC_2.3.2"
- #elif defined(__aarch64__) || SANITIZER_PPC64V2
- #define PTHREAD_ABI_BASE  "GLIBC_2.17"
- #elif SANITIZER_LOONGARCH64
- #define PTHREAD_ABI_BASE  "GLIBC_2.36"
- #elif SANITIZER_RISCV64
- #  define PTHREAD_ABI_BASE "GLIBC_2.27"
- #endif
- 
  extern "C" int pthread_attr_init(void *attr);
  extern "C" int pthread_attr_destroy(void *attr);
  DECLARE_REAL(int, pthread_attr_getdetachstate, void *, void *)
--- 82,87 ----
*************** struct ThreadSignalContext {
*** 177,183 ****
    SignalDesc pending_signals[kSigCount];
    // emptyset and oldset are too big for stack.
    __sanitizer_sigset_t emptyset;
!   __sanitizer_sigset_t oldset;
  };
  
  void EnterBlockingFunc(ThreadState *thr) {
--- 172,178 ----
    SignalDesc pending_signals[kSigCount];
    // emptyset and oldset are too big for stack.
    __sanitizer_sigset_t emptyset;
!   __sanitizer::Vector<__sanitizer_sigset_t> oldset;
  };
  
  void EnterBlockingFunc(ThreadState *thr) {
*************** void ScopedInterceptor::DisableIgnoresIm
*** 338,348 ****
  }
  
  #define TSAN_INTERCEPT(func) INTERCEPT_FUNCTION(func)
- #if SANITIZER_FREEBSD || SANITIZER_NETBSD
- #  define TSAN_INTERCEPT_VER(func, ver) INTERCEPT_FUNCTION(func)
- #else
- #  define TSAN_INTERCEPT_VER(func, ver) INTERCEPT_FUNCTION_VER(func, ver)
- #endif
  #if SANITIZER_FREEBSD
  #  define TSAN_MAYBE_INTERCEPT_FREEBSD_ALIAS(func) \
      INTERCEPT_FUNCTION(_pthread_##func)
--- 333,338 ----
*************** static void SetJmp(ThreadState *thr, upt
*** 558,563 ****
--- 548,554 ----
    buf->shadow_stack_pos = thr->shadow_stack_pos;
    ThreadSignalContext *sctx = SigCtx(thr);
    buf->int_signal_send = sctx ? sctx->int_signal_send : 0;
+   buf->oldset_stack_size = sctx ? sctx->oldset.Size() : 0;
    buf->in_blocking_func = atomic_load(&thr->in_blocking_func, memory_order_relaxed);
    buf->in_signal_handler = atomic_load(&thr->in_signal_handler,
        memory_order_relaxed);
*************** static void LongJmp(ThreadState *thr, up
*** 574,581 ****
        while (thr->shadow_stack_pos > buf->shadow_stack_pos)
          FuncExit(thr);
        ThreadSignalContext *sctx = SigCtx(thr);
!       if (sctx)
          sctx->int_signal_send = buf->int_signal_send;
        atomic_store(&thr->in_blocking_func, buf->in_blocking_func,
            memory_order_relaxed);
        atomic_store(&thr->in_signal_handler, buf->in_signal_handler,
--- 565,575 ----
        while (thr->shadow_stack_pos > buf->shadow_stack_pos)
          FuncExit(thr);
        ThreadSignalContext *sctx = SigCtx(thr);
!       if (sctx) {
          sctx->int_signal_send = buf->int_signal_send;
+         while (sctx->oldset.Size() > buf->oldset_stack_size)
+           sctx->oldset.PopBack();
+       }
        atomic_store(&thr->in_blocking_func, buf->in_blocking_func,
            memory_order_relaxed);
        atomic_store(&thr->in_signal_handler, buf->in_signal_handler,
*************** TSAN_INTERCEPTOR(void, free, void *p) {
*** 742,747 ****
--- 736,776 ----
    user_free(thr, pc, p);
  }
  
+ #  if SANITIZER_INTERCEPT_FREE_SIZED
+ TSAN_INTERCEPTOR(void, free_sized, void *p, uptr size) {
+   if (UNLIKELY(!p))
+     return;
+   if (in_symbolizer())
+     return InternalFree(p);
+   if (DlsymAlloc::PointerIsMine(p))
+     return DlsymAlloc::Free(p);
+   invoke_free_hook(p);
+   SCOPED_INTERCEPTOR_RAW(free_sized, p, size);
+   user_free(thr, pc, p);
+ }
+ #    define TSAN_MAYBE_INTERCEPT_FREE_SIZED INTERCEPT_FUNCTION(free_sized)
+ #  else
+ #    define TSAN_MAYBE_INTERCEPT_FREE_SIZED
+ #  endif
+ 
+ #  if SANITIZER_INTERCEPT_FREE_ALIGNED_SIZED
+ TSAN_INTERCEPTOR(void, free_aligned_sized, void *p, uptr alignment, uptr size) {
+   if (UNLIKELY(!p))
+     return;
+   if (in_symbolizer())
+     return InternalFree(p);
+   if (DlsymAlloc::PointerIsMine(p))
+     return DlsymAlloc::Free(p);
+   invoke_free_hook(p);
+   SCOPED_INTERCEPTOR_RAW(free_aligned_sized, p, alignment, size);
+   user_free(thr, pc, p);
+ }
+ #    define TSAN_MAYBE_INTERCEPT_FREE_ALIGNED_SIZED \
+       INTERCEPT_FUNCTION(free_aligned_sized)
+ #  else
+ #    define TSAN_MAYBE_INTERCEPT_FREE_ALIGNED_SIZED
+ #  endif
+ 
  TSAN_INTERCEPTOR(void, cfree, void *p) {
    if (UNLIKELY(!p))
      return;
*************** TSAN_INTERCEPTOR(uptr, malloc_usable_siz
*** 758,763 ****
--- 787,795 ----
    SCOPED_INTERCEPTOR_RAW(malloc_usable_size, p);
    return user_alloc_usable_size(p);
  }
+ #else
+ #  define TSAN_MAYBE_INTERCEPT_FREE_SIZED
+ #  define TSAN_MAYBE_INTERCEPT_FREE_ALIGNED_SIZED
  #endif
  
  TSAN_INTERCEPTOR(char *, strcpy, char *dst, const char *src) {
*************** constexpr u32 kGuardWaiter = 1 << 17;
*** 892,901 ****
  
  static int guard_acquire(ThreadState *thr, uptr pc, atomic_uint32_t *g,
                           bool blocking_hooks = true) {
!   if (blocking_hooks)
!     OnPotentiallyBlockingRegionBegin();
!   auto on_exit = at_scope_exit([blocking_hooks] {
!     if (blocking_hooks)
        OnPotentiallyBlockingRegionEnd();
    });
  
--- 924,932 ----
  
  static int guard_acquire(ThreadState *thr, uptr pc, atomic_uint32_t *g,
                           bool blocking_hooks = true) {
!   bool in_potentially_blocking_region = false;
!   auto on_exit = at_scope_exit([&] {
!     if (in_potentially_blocking_region)
        OnPotentiallyBlockingRegionEnd();
    });
  
*************** static int guard_acquire(ThreadState *th
*** 912,919 ****
      } else {
        if ((cmp & kGuardWaiter) ||
            atomic_compare_exchange_strong(g, &cmp, cmp | kGuardWaiter,
!                                          memory_order_relaxed))
          FutexWait(g, cmp | kGuardWaiter);
      }
    }
  }
--- 943,955 ----
      } else {
        if ((cmp & kGuardWaiter) ||
            atomic_compare_exchange_strong(g, &cmp, cmp | kGuardWaiter,
!                                          memory_order_relaxed)) {
!         if (blocking_hooks && !in_potentially_blocking_region) {
!           in_potentially_blocking_region = true;
!           OnPotentiallyBlockingRegionBegin();
!         }
          FutexWait(g, cmp | kGuardWaiter);
+       }
      }
    }
  }
*************** void PlatformCleanUpThreadState(ThreadSt
*** 976,981 ****
--- 1012,1018 ----
        &thr->signal_ctx, memory_order_relaxed);
    if (sctx) {
      atomic_store(&thr->signal_ctx, 0, memory_order_relaxed);
+     sctx->oldset.Reset();
      UnmapOrDie(sctx, sizeof(*sctx));
    }
  }
*************** TSAN_INTERCEPTOR(int, pthread_create,
*** 1096,1101 ****
--- 1133,1154 ----
  
  TSAN_INTERCEPTOR(int, pthread_join, void *th, void **ret) {
    SCOPED_INTERCEPTOR_RAW(pthread_join, th, ret);
+ #if SANITIZER_ANDROID
+   {
+     // In Bionic, if the target thread has already exited when pthread_detach is
+     // called, pthread_detach will call pthread_join internally to clean it up.
+     // In that case, the thread has already been consumed by the pthread_detach
+     // interceptor.
+     Tid tid = ctx->thread_registry.FindThread(
+         [](ThreadContextBase* tctx, void* arg) {
+           return tctx->user_id == (uptr)arg;
+         },
+         th);
+     if (tid == kInvalidTid) {
+       return REAL(pthread_join)(th, ret);
+     }
+   }
+ #endif
    Tid tid = ThreadConsumeTid(thr, pc, (uptr)th);
    ThreadIgnoreBegin(thr, pc);
    int res = BLOCK_REAL(pthread_join)(th, ret);
*************** TSAN_INTERCEPTOR(int, pthread_barrier_wa
*** 1615,1620 ****
--- 1668,1681 ----
  
  TSAN_INTERCEPTOR(int, pthread_once, void *o, void (*f)()) {
    SCOPED_INTERCEPTOR_RAW(pthread_once, o, f);
+ #if SANITIZER_APPLE && !SANITIZER_GO
+   if (flags()->lock_during_write != kLockDuringAllWrites &&
+       cur_thread_init()->in_internal_write_call) {
+     // This is needed to make it through process launch without hanging
+     f();
+     return 0;
+   }
+ #endif
    if (o == 0 || f == 0)
      return errno_EINVAL;
    atomic_uint32_t *a;
*************** static void ReportErrnoSpoiling(ThreadSt
*** 2092,2104 ****
    // StackTrace::GetNestInstructionPc(pc) is used because return address is
    // expected, OutputReport() will undo this.
    ObtainCurrentStack(thr, StackTrace::GetNextInstructionPc(pc), &stack);
!   ThreadRegistryLock l(&ctx->thread_registry);
!   ScopedReport rep(ReportTypeErrnoInSignal);
!   rep.SetSigNum(sig);
!   if (!IsFiredSuppression(ctx, ReportTypeErrnoInSignal, stack)) {
!     rep.AddStack(stack, true);
!     OutputReport(thr, rep);
    }
  }
  
  static void CallUserSignalHandler(ThreadState *thr, bool sync, bool acquire,
--- 2153,2181 ----
    // StackTrace::GetNestInstructionPc(pc) is used because return address is
    // expected, OutputReport() will undo this.
    ObtainCurrentStack(thr, StackTrace::GetNextInstructionPc(pc), &stack);
!   // Use alloca, because malloc during signal handling deadlocks
!   ScopedReport *rep = (ScopedReport *)__builtin_alloca(sizeof(ScopedReport));
!   bool suppressed;
!   // Take a new scope as Apple platforms require the below locks released
!   // before symbolizing in order to avoid a deadlock
!   {
!     ThreadRegistryLock l(&ctx->thread_registry);
!     new (rep) ScopedReport(ReportTypeErrnoInSignal);
!     rep->SetSigNum(sig);
!     suppressed = IsFiredSuppression(ctx, ReportTypeErrnoInSignal, stack);
!     if (!suppressed)
!       rep->AddStack(stack, true);
! #if SANITIZER_APPLE
!   }  // Close this scope to release the locks before writing report
! #endif
!     if (!suppressed)
!       OutputReport(thr, *rep);
! 
!     // Need to manually destroy this because we used placement new to allocate
!     rep->~ScopedReport();
! #if !SANITIZER_APPLE
    }
+ #endif
  }
  
  static void CallUserSignalHandler(ThreadState *thr, bool sync, bool acquire,
*************** void ProcessPendingSignalsImpl(ThreadSta
*** 2172,2178 ****
      return;
    atomic_fetch_add(&thr->in_signal_handler, 1, memory_order_relaxed);
    internal_sigfillset(&sctx->emptyset);
!   int res = REAL(pthread_sigmask)(SIG_SETMASK, &sctx->emptyset, &sctx->oldset);
    CHECK_EQ(res, 0);
    for (int sig = 0; sig < kSigCount; sig++) {
      SignalDesc *signal = &sctx->pending_signals[sig];
--- 2249,2256 ----
      return;
    atomic_fetch_add(&thr->in_signal_handler, 1, memory_order_relaxed);
    internal_sigfillset(&sctx->emptyset);
!   __sanitizer_sigset_t *oldset = sctx->oldset.PushBack();
!   int res = REAL(pthread_sigmask)(SIG_SETMASK, &sctx->emptyset, oldset);
    CHECK_EQ(res, 0);
    for (int sig = 0; sig < kSigCount; sig++) {
      SignalDesc *signal = &sctx->pending_signals[sig];
*************** void ProcessPendingSignalsImpl(ThreadSta
*** 2182,2189 ****
                              &signal->ctx);
      }
    }
!   res = REAL(pthread_sigmask)(SIG_SETMASK, &sctx->oldset, 0);
    CHECK_EQ(res, 0);
    atomic_fetch_add(&thr->in_signal_handler, -1, memory_order_relaxed);
  }
  
--- 2260,2268 ----
                              &signal->ctx);
      }
    }
!   res = REAL(pthread_sigmask)(SIG_SETMASK, oldset, 0);
    CHECK_EQ(res, 0);
+   sctx->oldset.PopBack();
    atomic_fetch_add(&thr->in_signal_handler, -1, memory_order_relaxed);
  }
  
*************** TSAN_INTERCEPTOR(int, vfork, int fake) {
*** 2360,2366 ****
  }
  #endif
  
! #if SANITIZER_LINUX
  TSAN_INTERCEPTOR(int, clone, int (*fn)(void *), void *stack, int flags,
                   void *arg, int *parent_tid, void *tls, pid_t *child_tid) {
    SCOPED_INTERCEPTOR_RAW(clone, fn, stack, flags, arg, parent_tid, tls,
--- 2439,2449 ----
  }
  #endif
  
! #if SANITIZER_LINUX && !SANITIZER_ANDROID
! // Bionic's pthread_create internally calls clone. When the CLONE_THREAD flag is
! // set, clone does not create a new process but a new thread. This is a
! // workaround for Android. Disabling the interception of clone solves the
! // problem in most scenarios.
  TSAN_INTERCEPTOR(int, clone, int (*fn)(void *), void *stack, int flags,
                   void *arg, int *parent_tid, void *tls, pid_t *child_tid) {
    SCOPED_INTERCEPTOR_RAW(clone, fn, stack, flags, arg, parent_tid, tls,
*************** TSAN_INTERCEPTOR(void, _lwp_exit) {
*** 2837,2848 ****
  #endif
  
  #if SANITIZER_FREEBSD
! TSAN_INTERCEPTOR(void, thr_exit, tid_t *state) {
    SCOPED_TSAN_INTERCEPTOR(thr_exit, state);
    DestroyThreadState();
    REAL(thr_exit(state));
  }
! #define TSAN_MAYBE_INTERCEPT_THR_EXIT TSAN_INTERCEPT(thr_exit)
  #else
  #define TSAN_MAYBE_INTERCEPT_THR_EXIT
  #endif
--- 2920,2931 ----
  #endif
  
  #if SANITIZER_FREEBSD
! TSAN_INTERCEPTOR(void, thr_exit, ThreadID *state) {
    SCOPED_TSAN_INTERCEPTOR(thr_exit, state);
    DestroyThreadState();
    REAL(thr_exit(state));
  }
! #  define TSAN_MAYBE_INTERCEPT_THR_EXIT TSAN_INTERCEPT(thr_exit)
  #else
  #define TSAN_MAYBE_INTERCEPT_THR_EXIT
  #endif
*************** void InitializeInterceptors() {
*** 2951,2956 ****
--- 3034,3041 ----
    TSAN_INTERCEPT(realloc);
    TSAN_INTERCEPT(reallocarray);
    TSAN_INTERCEPT(free);
+   TSAN_MAYBE_INTERCEPT_FREE_SIZED;
+   TSAN_MAYBE_INTERCEPT_FREE_ALIGNED_SIZED;
    TSAN_INTERCEPT(cfree);
    TSAN_INTERCEPT(munmap);
    TSAN_MAYBE_INTERCEPT_MEMALIGN;
*************** void InitializeInterceptors() {
*** 2971,2982 ****
    TSAN_INTERCEPT(pthread_timedjoin_np);
    #endif
  
!   TSAN_INTERCEPT_VER(pthread_cond_init, PTHREAD_ABI_BASE);
!   TSAN_INTERCEPT_VER(pthread_cond_signal, PTHREAD_ABI_BASE);
!   TSAN_INTERCEPT_VER(pthread_cond_broadcast, PTHREAD_ABI_BASE);
!   TSAN_INTERCEPT_VER(pthread_cond_wait, PTHREAD_ABI_BASE);
!   TSAN_INTERCEPT_VER(pthread_cond_timedwait, PTHREAD_ABI_BASE);
!   TSAN_INTERCEPT_VER(pthread_cond_destroy, PTHREAD_ABI_BASE);
  
    TSAN_MAYBE_PTHREAD_COND_CLOCKWAIT;
  
--- 3056,3081 ----
    TSAN_INTERCEPT(pthread_timedjoin_np);
    #endif
  
!   // In glibc versions older than 2.36, dlsym(RTLD_NEXT, "pthread_cond_init")
!   // may return an outdated symbol (max(2.2,base_version)) if the port was
!   // introduced before 2.3.2 (when the new pthread_cond_t was introduced).
! #if SANITIZER_GLIBC && !__GLIBC_PREREQ(2, 36) &&                      \
!     (defined(__x86_64__) || defined(__mips__) || SANITIZER_PPC64V1 || \
!      defined(__s390x__))
!   INTERCEPT_FUNCTION_VER(pthread_cond_init, "GLIBC_2.3.2");
!   INTERCEPT_FUNCTION_VER(pthread_cond_signal, "GLIBC_2.3.2");
!   INTERCEPT_FUNCTION_VER(pthread_cond_broadcast, "GLIBC_2.3.2");
!   INTERCEPT_FUNCTION_VER(pthread_cond_wait, "GLIBC_2.3.2");
!   INTERCEPT_FUNCTION_VER(pthread_cond_timedwait, "GLIBC_2.3.2");
!   INTERCEPT_FUNCTION_VER(pthread_cond_destroy, "GLIBC_2.3.2");
! #else
!   INTERCEPT_FUNCTION(pthread_cond_init);
!   INTERCEPT_FUNCTION(pthread_cond_signal);
!   INTERCEPT_FUNCTION(pthread_cond_broadcast);
!   INTERCEPT_FUNCTION(pthread_cond_wait);
!   INTERCEPT_FUNCTION(pthread_cond_timedwait);
!   INTERCEPT_FUNCTION(pthread_cond_destroy);
! #endif
  
    TSAN_MAYBE_PTHREAD_COND_CLOCKWAIT;
  
*************** void InitializeInterceptors() {
*** 3067,3078 ****
  
    TSAN_INTERCEPT(fork);
    TSAN_INTERCEPT(vfork);
! #if SANITIZER_LINUX
    TSAN_INTERCEPT(clone);
  #endif
  #if !SANITIZER_ANDROID
    TSAN_INTERCEPT(dl_iterate_phdr);
  #endif
    TSAN_MAYBE_INTERCEPT_ON_EXIT;
    TSAN_INTERCEPT(__cxa_atexit);
    TSAN_INTERCEPT(_exit);
--- 3166,3181 ----
  
    TSAN_INTERCEPT(fork);
    TSAN_INTERCEPT(vfork);
! #if SANITIZER_LINUX && !SANITIZER_ANDROID
    TSAN_INTERCEPT(clone);
  #endif
  #if !SANITIZER_ANDROID
    TSAN_INTERCEPT(dl_iterate_phdr);
  #endif
+ 
+   // Symbolization indirectly calls dl_iterate_phdr
+   ready_to_symbolize = true;
+ 
    TSAN_MAYBE_INTERCEPT_ON_EXIT;
    TSAN_INTERCEPT(__cxa_atexit);
    TSAN_INTERCEPT(_exit);
diff -Nrcpad gcc-16-20251130/libsanitizer/tsan/tsan_interface.h gcc-16-20251207/libsanitizer/tsan/tsan_interface.h
*** gcc-16-20251130/libsanitizer/tsan/tsan_interface.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/tsan/tsan_interface.h	Sun Dec  7 22:32:18 2025
***************
*** 16,23 ****
  #define TSAN_INTERFACE_H
  
  #include <sanitizer_common/sanitizer_internal_defs.h>
  using __sanitizer::uptr;
- using __sanitizer::tid_t;
  
  // This header should NOT include any other headers.
  // All functions in this header are extern "C" and start with __tsan_.
--- 16,23 ----
  #define TSAN_INTERFACE_H
  
  #include <sanitizer_common/sanitizer_internal_defs.h>
+ using __sanitizer::ThreadID;
  using __sanitizer::uptr;
  
  // This header should NOT include any other headers.
  // All functions in this header are extern "C" and start with __tsan_.
*************** int __tsan_get_report_mutex(void *report
*** 175,181 ****
  
  // Returns information about threads included in the report.
  SANITIZER_INTERFACE_ATTRIBUTE
! int __tsan_get_report_thread(void *report, uptr idx, int *tid, tid_t *os_id,
                               int *running, const char **name, int *parent_tid,
                               void **trace, uptr trace_size);
  
--- 175,181 ----
  
  // Returns information about threads included in the report.
  SANITIZER_INTERFACE_ATTRIBUTE
! int __tsan_get_report_thread(void *report, uptr idx, int *tid, ThreadID *os_id,
                               int *running, const char **name, int *parent_tid,
                               void **trace, uptr trace_size);
  
*************** const char *__tsan_locate_address(uptr a
*** 192,198 ****
  // Returns the allocation stack for a heap pointer.
  SANITIZER_INTERFACE_ATTRIBUTE
  int __tsan_get_alloc_stack(uptr addr, uptr *trace, uptr size, int *thread_id,
!                            tid_t *os_id);
  
  #endif  // SANITIZER_GO
  
--- 192,198 ----
  // Returns the allocation stack for a heap pointer.
  SANITIZER_INTERFACE_ATTRIBUTE
  int __tsan_get_alloc_stack(uptr addr, uptr *trace, uptr size, int *thread_id,
!                            ThreadID *os_id);
  
  #endif  // SANITIZER_GO
  
*************** int __tsan_get_alloc_stack(uptr addr, up
*** 203,219 ****
  namespace __tsan {
  
  // These should match declarations from public tsan_interface_atomic.h header.
! typedef unsigned char      a8;
  typedef unsigned short a16;
! typedef unsigned int       a32;
  typedef unsigned long long a64;
! #if !SANITIZER_GO && (defined(__SIZEOF_INT128__) \
!     || (__clang_major__ * 100 + __clang_minor__ >= 302)) && \
      !defined(__mips64) && !defined(__s390x__)
  __extension__ typedef __int128 a128;
! # define __TSAN_HAS_INT128 1
  #else
! # define __TSAN_HAS_INT128 0
  #endif
  
  // Part of ABI, do not change.
--- 203,220 ----
  namespace __tsan {
  
  // These should match declarations from public tsan_interface_atomic.h header.
! typedef unsigned char a8;
  typedef unsigned short a16;
! typedef unsigned int a32;
  typedef unsigned long long a64;
! #if !SANITIZER_GO &&                                      \
!     (defined(__SIZEOF_INT128__) ||                        \
!      (__clang_major__ * 100 + __clang_minor__ >= 302)) && \
      !defined(__mips64) && !defined(__s390x__)
  __extension__ typedef __int128 a128;
! #  define __TSAN_HAS_INT128 1
  #else
! #  define __TSAN_HAS_INT128 0
  #endif
  
  // Part of ABI, do not change.
*************** struct ThreadState;
*** 231,410 ****
  
  extern "C" {
  SANITIZER_INTERFACE_ATTRIBUTE
! a8 __tsan_atomic8_load(const volatile a8 *a, morder mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a16 __tsan_atomic16_load(const volatile a16 *a, morder mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a32 __tsan_atomic32_load(const volatile a32 *a, morder mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a64 __tsan_atomic64_load(const volatile a64 *a, morder mo);
  #if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
! a128 __tsan_atomic128_load(const volatile a128 *a, morder mo);
  #endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! void __tsan_atomic8_store(volatile a8 *a, a8 v, morder mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! void __tsan_atomic16_store(volatile a16 *a, a16 v, morder mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! void __tsan_atomic32_store(volatile a32 *a, a32 v, morder mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! void __tsan_atomic64_store(volatile a64 *a, a64 v, morder mo);
  #if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
! void __tsan_atomic128_store(volatile a128 *a, a128 v, morder mo);
  #endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a8 __tsan_atomic8_exchange(volatile a8 *a, a8 v, morder mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a16 __tsan_atomic16_exchange(volatile a16 *a, a16 v, morder mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a32 __tsan_atomic32_exchange(volatile a32 *a, a32 v, morder mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a64 __tsan_atomic64_exchange(volatile a64 *a, a64 v, morder mo);
  #if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
! a128 __tsan_atomic128_exchange(volatile a128 *a, a128 v, morder mo);
  #endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a8 __tsan_atomic8_fetch_add(volatile a8 *a, a8 v, morder mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a16 __tsan_atomic16_fetch_add(volatile a16 *a, a16 v, morder mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a32 __tsan_atomic32_fetch_add(volatile a32 *a, a32 v, morder mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a64 __tsan_atomic64_fetch_add(volatile a64 *a, a64 v, morder mo);
  #if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
! a128 __tsan_atomic128_fetch_add(volatile a128 *a, a128 v, morder mo);
  #endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a8 __tsan_atomic8_fetch_sub(volatile a8 *a, a8 v, morder mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a16 __tsan_atomic16_fetch_sub(volatile a16 *a, a16 v, morder mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a32 __tsan_atomic32_fetch_sub(volatile a32 *a, a32 v, morder mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a64 __tsan_atomic64_fetch_sub(volatile a64 *a, a64 v, morder mo);
  #if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
! a128 __tsan_atomic128_fetch_sub(volatile a128 *a, a128 v, morder mo);
  #endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a8 __tsan_atomic8_fetch_and(volatile a8 *a, a8 v, morder mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a16 __tsan_atomic16_fetch_and(volatile a16 *a, a16 v, morder mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a32 __tsan_atomic32_fetch_and(volatile a32 *a, a32 v, morder mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a64 __tsan_atomic64_fetch_and(volatile a64 *a, a64 v, morder mo);
  #if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
! a128 __tsan_atomic128_fetch_and(volatile a128 *a, a128 v, morder mo);
  #endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a8 __tsan_atomic8_fetch_or(volatile a8 *a, a8 v, morder mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a16 __tsan_atomic16_fetch_or(volatile a16 *a, a16 v, morder mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a32 __tsan_atomic32_fetch_or(volatile a32 *a, a32 v, morder mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a64 __tsan_atomic64_fetch_or(volatile a64 *a, a64 v, morder mo);
  #if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
! a128 __tsan_atomic128_fetch_or(volatile a128 *a, a128 v, morder mo);
  #endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a8 __tsan_atomic8_fetch_xor(volatile a8 *a, a8 v, morder mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a16 __tsan_atomic16_fetch_xor(volatile a16 *a, a16 v, morder mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a32 __tsan_atomic32_fetch_xor(volatile a32 *a, a32 v, morder mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a64 __tsan_atomic64_fetch_xor(volatile a64 *a, a64 v, morder mo);
  #if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
! a128 __tsan_atomic128_fetch_xor(volatile a128 *a, a128 v, morder mo);
  #endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a8 __tsan_atomic8_fetch_nand(volatile a8 *a, a8 v, morder mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a16 __tsan_atomic16_fetch_nand(volatile a16 *a, a16 v, morder mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a32 __tsan_atomic32_fetch_nand(volatile a32 *a, a32 v, morder mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a64 __tsan_atomic64_fetch_nand(volatile a64 *a, a64 v, morder mo);
  #if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
! a128 __tsan_atomic128_fetch_nand(volatile a128 *a, a128 v, morder mo);
  #endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! int __tsan_atomic8_compare_exchange_strong(volatile a8 *a, a8 *c, a8 v,
!                                            morder mo, morder fmo);
  SANITIZER_INTERFACE_ATTRIBUTE
  int __tsan_atomic16_compare_exchange_strong(volatile a16 *a, a16 *c, a16 v,
!                                             morder mo, morder fmo);
  SANITIZER_INTERFACE_ATTRIBUTE
  int __tsan_atomic32_compare_exchange_strong(volatile a32 *a, a32 *c, a32 v,
!                                             morder mo, morder fmo);
  SANITIZER_INTERFACE_ATTRIBUTE
  int __tsan_atomic64_compare_exchange_strong(volatile a64 *a, a64 *c, a64 v,
!                                             morder mo, morder fmo);
  #if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
  int __tsan_atomic128_compare_exchange_strong(volatile a128 *a, a128 *c, a128 v,
!                                              morder mo, morder fmo);
  #endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! int __tsan_atomic8_compare_exchange_weak(volatile a8 *a, a8 *c, a8 v, morder mo,
!                                          morder fmo);
  SANITIZER_INTERFACE_ATTRIBUTE
  int __tsan_atomic16_compare_exchange_weak(volatile a16 *a, a16 *c, a16 v,
!                                           morder mo, morder fmo);
  SANITIZER_INTERFACE_ATTRIBUTE
  int __tsan_atomic32_compare_exchange_weak(volatile a32 *a, a32 *c, a32 v,
!                                           morder mo, morder fmo);
  SANITIZER_INTERFACE_ATTRIBUTE
  int __tsan_atomic64_compare_exchange_weak(volatile a64 *a, a64 *c, a64 v,
!                                           morder mo, morder fmo);
  #if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
  int __tsan_atomic128_compare_exchange_weak(volatile a128 *a, a128 *c, a128 v,
!                                            morder mo, morder fmo);
  #endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a8 __tsan_atomic8_compare_exchange_val(volatile a8 *a, a8 c, a8 v, morder mo,
!                                        morder fmo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a16 __tsan_atomic16_compare_exchange_val(volatile a16 *a, a16 c, a16 v,
!                                          morder mo, morder fmo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a32 __tsan_atomic32_compare_exchange_val(volatile a32 *a, a32 c, a32 v,
!                                          morder mo, morder fmo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a64 __tsan_atomic64_compare_exchange_val(volatile a64 *a, a64 c, a64 v,
!                                          morder mo, morder fmo);
  #if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
  a128 __tsan_atomic128_compare_exchange_val(volatile a128 *a, a128 c, a128 v,
!                                            morder mo, morder fmo);
  #endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! void __tsan_atomic_thread_fence(morder mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! void __tsan_atomic_signal_fence(morder mo);
  
  SANITIZER_INTERFACE_ATTRIBUTE
  void __tsan_go_atomic32_load(ThreadState *thr, uptr cpc, uptr pc, u8 *a);
--- 232,411 ----
  
  extern "C" {
  SANITIZER_INTERFACE_ATTRIBUTE
! a8 __tsan_atomic8_load(const volatile a8 *a, int mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a16 __tsan_atomic16_load(const volatile a16 *a, int mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a32 __tsan_atomic32_load(const volatile a32 *a, int mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a64 __tsan_atomic64_load(const volatile a64 *a, int mo);
  #if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
! a128 __tsan_atomic128_load(const volatile a128 *a, int mo);
  #endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! void __tsan_atomic8_store(volatile a8 *a, a8 v, int mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! void __tsan_atomic16_store(volatile a16 *a, a16 v, int mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! void __tsan_atomic32_store(volatile a32 *a, a32 v, int mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! void __tsan_atomic64_store(volatile a64 *a, a64 v, int mo);
  #if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
! void __tsan_atomic128_store(volatile a128 *a, a128 v, int mo);
  #endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a8 __tsan_atomic8_exchange(volatile a8 *a, a8 v, int mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a16 __tsan_atomic16_exchange(volatile a16 *a, a16 v, int mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a32 __tsan_atomic32_exchange(volatile a32 *a, a32 v, int mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a64 __tsan_atomic64_exchange(volatile a64 *a, a64 v, int mo);
  #if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
! a128 __tsan_atomic128_exchange(volatile a128 *a, a128 v, int mo);
  #endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a8 __tsan_atomic8_fetch_add(volatile a8 *a, a8 v, int mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a16 __tsan_atomic16_fetch_add(volatile a16 *a, a16 v, int mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a32 __tsan_atomic32_fetch_add(volatile a32 *a, a32 v, int mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a64 __tsan_atomic64_fetch_add(volatile a64 *a, a64 v, int mo);
  #if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
! a128 __tsan_atomic128_fetch_add(volatile a128 *a, a128 v, int mo);
  #endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a8 __tsan_atomic8_fetch_sub(volatile a8 *a, a8 v, int mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a16 __tsan_atomic16_fetch_sub(volatile a16 *a, a16 v, int mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a32 __tsan_atomic32_fetch_sub(volatile a32 *a, a32 v, int mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a64 __tsan_atomic64_fetch_sub(volatile a64 *a, a64 v, int mo);
  #if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
! a128 __tsan_atomic128_fetch_sub(volatile a128 *a, a128 v, int mo);
  #endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a8 __tsan_atomic8_fetch_and(volatile a8 *a, a8 v, int mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a16 __tsan_atomic16_fetch_and(volatile a16 *a, a16 v, int mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a32 __tsan_atomic32_fetch_and(volatile a32 *a, a32 v, int mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a64 __tsan_atomic64_fetch_and(volatile a64 *a, a64 v, int mo);
  #if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
! a128 __tsan_atomic128_fetch_and(volatile a128 *a, a128 v, int mo);
  #endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a8 __tsan_atomic8_fetch_or(volatile a8 *a, a8 v, int mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a16 __tsan_atomic16_fetch_or(volatile a16 *a, a16 v, int mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a32 __tsan_atomic32_fetch_or(volatile a32 *a, a32 v, int mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a64 __tsan_atomic64_fetch_or(volatile a64 *a, a64 v, int mo);
  #if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
! a128 __tsan_atomic128_fetch_or(volatile a128 *a, a128 v, int mo);
  #endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a8 __tsan_atomic8_fetch_xor(volatile a8 *a, a8 v, int mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a16 __tsan_atomic16_fetch_xor(volatile a16 *a, a16 v, int mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a32 __tsan_atomic32_fetch_xor(volatile a32 *a, a32 v, int mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a64 __tsan_atomic64_fetch_xor(volatile a64 *a, a64 v, int mo);
  #if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
! a128 __tsan_atomic128_fetch_xor(volatile a128 *a, a128 v, int mo);
  #endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a8 __tsan_atomic8_fetch_nand(volatile a8 *a, a8 v, int mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a16 __tsan_atomic16_fetch_nand(volatile a16 *a, a16 v, int mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a32 __tsan_atomic32_fetch_nand(volatile a32 *a, a32 v, int mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a64 __tsan_atomic64_fetch_nand(volatile a64 *a, a64 v, int mo);
  #if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
! a128 __tsan_atomic128_fetch_nand(volatile a128 *a, a128 v, int mo);
  #endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! int __tsan_atomic8_compare_exchange_strong(volatile a8 *a, a8 *c, a8 v, int mo,
!                                            int fmo);
  SANITIZER_INTERFACE_ATTRIBUTE
  int __tsan_atomic16_compare_exchange_strong(volatile a16 *a, a16 *c, a16 v,
!                                             int mo, int fmo);
  SANITIZER_INTERFACE_ATTRIBUTE
  int __tsan_atomic32_compare_exchange_strong(volatile a32 *a, a32 *c, a32 v,
!                                             int mo, int fmo);
  SANITIZER_INTERFACE_ATTRIBUTE
  int __tsan_atomic64_compare_exchange_strong(volatile a64 *a, a64 *c, a64 v,
!                                             int mo, int fmo);
  #if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
  int __tsan_atomic128_compare_exchange_strong(volatile a128 *a, a128 *c, a128 v,
!                                              int mo, int fmo);
  #endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! int __tsan_atomic8_compare_exchange_weak(volatile a8 *a, a8 *c, a8 v, int mo,
!                                          int fmo);
  SANITIZER_INTERFACE_ATTRIBUTE
  int __tsan_atomic16_compare_exchange_weak(volatile a16 *a, a16 *c, a16 v,
!                                           int mo, int fmo);
  SANITIZER_INTERFACE_ATTRIBUTE
  int __tsan_atomic32_compare_exchange_weak(volatile a32 *a, a32 *c, a32 v,
!                                           int mo, int fmo);
  SANITIZER_INTERFACE_ATTRIBUTE
  int __tsan_atomic64_compare_exchange_weak(volatile a64 *a, a64 *c, a64 v,
!                                           int mo, int fmo);
  #if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
  int __tsan_atomic128_compare_exchange_weak(volatile a128 *a, a128 *c, a128 v,
!                                            int mo, int fmo);
  #endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a8 __tsan_atomic8_compare_exchange_val(volatile a8 *a, a8 c, a8 v, int mo,
!                                        int fmo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a16 __tsan_atomic16_compare_exchange_val(volatile a16 *a, a16 c, a16 v, int mo,
!                                          int fmo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a32 __tsan_atomic32_compare_exchange_val(volatile a32 *a, a32 c, a32 v, int mo,
!                                          int fmo);
  SANITIZER_INTERFACE_ATTRIBUTE
! a64 __tsan_atomic64_compare_exchange_val(volatile a64 *a, a64 c, a64 v, int mo,
!                                          int fmo);
  #if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
  a128 __tsan_atomic128_compare_exchange_val(volatile a128 *a, a128 c, a128 v,
!                                            int mo, int fmo);
  #endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! void __tsan_atomic_thread_fence(int mo);
  SANITIZER_INTERFACE_ATTRIBUTE
! void __tsan_atomic_signal_fence(int mo);
  
  SANITIZER_INTERFACE_ATTRIBUTE
  void __tsan_go_atomic32_load(ThreadState *thr, uptr cpc, uptr pc, u8 *a);
diff -Nrcpad gcc-16-20251130/libsanitizer/tsan/tsan_interface_ann.cpp gcc-16-20251207/libsanitizer/tsan/tsan_interface_ann.cpp
*** gcc-16-20251130/libsanitizer/tsan/tsan_interface_ann.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/tsan/tsan_interface_ann.cpp	Sun Dec  7 22:32:18 2025
*************** void __tsan_mutex_post_divert(void *addr
*** 437,452 ****
  }
  
  static void ReportMutexHeldWrongContext(ThreadState *thr, uptr pc) {
!   ThreadRegistryLock l(&ctx->thread_registry);
!   ScopedReport rep(ReportTypeMutexHeldWrongContext);
!   for (uptr i = 0; i < thr->mset.Size(); ++i) {
!     MutexSet::Desc desc = thr->mset.Get(i);
!     rep.AddMutex(desc.addr, desc.stack_id);
    }
!   VarSizeStackTrace trace;
!   ObtainCurrentStack(thr, pc, &trace);
!   rep.AddStack(trace, true);
!   OutputReport(thr, rep);
  }
  
  INTERFACE_ATTRIBUTE
--- 437,466 ----
  }
  
  static void ReportMutexHeldWrongContext(ThreadState *thr, uptr pc) {
!   // Use alloca, because malloc during signal handling deadlocks
!   ScopedReport *rep = (ScopedReport *)__builtin_alloca(sizeof(ScopedReport));
!   // Take a new scope as Apple platforms require the below locks released
!   // before symbolizing in order to avoid a deadlock
!   {
!     ThreadRegistryLock l(&ctx->thread_registry);
!     new (rep) ScopedReport(ReportTypeMutexHeldWrongContext);
!     for (uptr i = 0; i < thr->mset.Size(); ++i) {
!       MutexSet::Desc desc = thr->mset.Get(i);
!       rep->AddMutex(desc.addr, desc.stack_id);
!     }
!     VarSizeStackTrace trace;
!     ObtainCurrentStack(thr, pc, &trace);
!     rep->AddStack(trace, true);
! #if SANITIZER_APPLE
!   }  // Close this scope to release the locks
! #endif
!     OutputReport(thr, *rep);
! 
!     // Need to manually destroy this because we used placement new to allocate
!     rep->~ScopedReport();
! #if !SANITIZER_APPLE
    }
! #endif
  }
  
  INTERFACE_ATTRIBUTE
diff -Nrcpad gcc-16-20251130/libsanitizer/tsan/tsan_interface_atomic.cpp gcc-16-20251207/libsanitizer/tsan/tsan_interface_atomic.cpp
*** gcc-16-20251130/libsanitizer/tsan/tsan_interface_atomic.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/tsan/tsan_interface_atomic.cpp	Sun Dec  7 22:32:18 2025
***************
*** 18,26 ****
  // The following page contains more background information:
  // http://www.hpl.hp.com/personal/Hans_Boehm/c++mm/
  
  #include "sanitizer_common/sanitizer_placement_new.h"
  #include "sanitizer_common/sanitizer_stacktrace.h"
- #include "sanitizer_common/sanitizer_mutex.h"
  #include "tsan_flags.h"
  #include "tsan_interface.h"
  #include "tsan_rtl.h"
--- 18,26 ----
  // The following page contains more background information:
  // http://www.hpl.hp.com/personal/Hans_Boehm/c++mm/
  
+ #include "sanitizer_common/sanitizer_mutex.h"
  #include "sanitizer_common/sanitizer_placement_new.h"
  #include "sanitizer_common/sanitizer_stacktrace.h"
  #include "tsan_flags.h"
  #include "tsan_interface.h"
  #include "tsan_rtl.h"
*************** static StaticSpinMutex mutex128;
*** 34,41 ****
  
  #if SANITIZER_DEBUG
  static bool IsLoadOrder(morder mo) {
!   return mo == mo_relaxed || mo == mo_consume
!       || mo == mo_acquire || mo == mo_seq_cst;
  }
  
  static bool IsStoreOrder(morder mo) {
--- 34,41 ----
  
  #if SANITIZER_DEBUG
  static bool IsLoadOrder(morder mo) {
!   return mo == mo_relaxed || mo == mo_consume || mo == mo_acquire ||
!          mo == mo_seq_cst;
  }
  
  static bool IsStoreOrder(morder mo) {
*************** static bool IsReleaseOrder(morder mo) {
*** 48,89 ****
  }
  
  static bool IsAcquireOrder(morder mo) {
!   return mo == mo_consume || mo == mo_acquire
!       || mo == mo_acq_rel || mo == mo_seq_cst;
  }
  
  static bool IsAcqRelOrder(morder mo) {
    return mo == mo_acq_rel || mo == mo_seq_cst;
  }
  
! template<typename T> T func_xchg(volatile T *v, T op) {
    T res = __sync_lock_test_and_set(v, op);
    // __sync_lock_test_and_set does not contain full barrier.
    __sync_synchronize();
    return res;
  }
  
! template<typename T> T func_add(volatile T *v, T op) {
    return __sync_fetch_and_add(v, op);
  }
  
! template<typename T> T func_sub(volatile T *v, T op) {
    return __sync_fetch_and_sub(v, op);
  }
  
! template<typename T> T func_and(volatile T *v, T op) {
    return __sync_fetch_and_and(v, op);
  }
  
! template<typename T> T func_or(volatile T *v, T op) {
    return __sync_fetch_and_or(v, op);
  }
  
! template<typename T> T func_xor(volatile T *v, T op) {
    return __sync_fetch_and_xor(v, op);
  }
  
! template<typename T> T func_nand(volatile T *v, T op) {
    // clang does not support __sync_fetch_and_nand.
    T cmp = *v;
    for (;;) {
--- 48,96 ----
  }
  
  static bool IsAcquireOrder(morder mo) {
!   return mo == mo_consume || mo == mo_acquire || mo == mo_acq_rel ||
!          mo == mo_seq_cst;
  }
  
  static bool IsAcqRelOrder(morder mo) {
    return mo == mo_acq_rel || mo == mo_seq_cst;
  }
  
! template <typename T>
! T func_xchg(volatile T *v, T op) {
    T res = __sync_lock_test_and_set(v, op);
    // __sync_lock_test_and_set does not contain full barrier.
    __sync_synchronize();
    return res;
  }
  
! template <typename T>
! T func_add(volatile T *v, T op) {
    return __sync_fetch_and_add(v, op);
  }
  
! template <typename T>
! T func_sub(volatile T *v, T op) {
    return __sync_fetch_and_sub(v, op);
  }
  
! template <typename T>
! T func_and(volatile T *v, T op) {
    return __sync_fetch_and_and(v, op);
  }
  
! template <typename T>
! T func_or(volatile T *v, T op) {
    return __sync_fetch_and_or(v, op);
  }
  
! template <typename T>
! T func_xor(volatile T *v, T op) {
    return __sync_fetch_and_xor(v, op);
  }
  
! template <typename T>
! T func_nand(volatile T *v, T op) {
    // clang does not support __sync_fetch_and_nand.
    T cmp = *v;
    for (;;) {
*************** template<typename T> T func_nand(volatil
*** 95,101 ****
    }
  }
  
! template<typename T> T func_cas(volatile T *v, T cmp, T xch) {
    return __sync_val_compare_and_swap(v, cmp, xch);
  }
  
--- 102,109 ----
    }
  }
  
! template <typename T>
! T func_cas(volatile T *v, T cmp, T xch) {
    return __sync_val_compare_and_swap(v, cmp, xch);
  }
  
*************** template<typename T> T func_cas(volatile
*** 103,110 ****
  // Atomic ops are executed under tsan internal mutex,
  // here we assume that the atomic variables are not accessed
  // from non-instrumented code.
! #if !defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16) && !SANITIZER_GO \
!     && __TSAN_HAS_INT128
  a128 func_xchg(volatile a128 *v, a128 op) {
    SpinMutexLock lock(&mutex128);
    a128 cmp = *v;
--- 111,118 ----
  // Atomic ops are executed under tsan internal mutex,
  // here we assume that the atomic variables are not accessed
  // from non-instrumented code.
! #if !defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16) && !SANITIZER_GO && \
!     __TSAN_HAS_INT128
  a128 func_xchg(volatile a128 *v, a128 op) {
    SpinMutexLock lock(&mutex128);
    a128 cmp = *v;
*************** static atomic_uint64_t *to_atomic(const
*** 197,285 ****
  
  static memory_order to_mo(morder mo) {
    switch (mo) {
!   case mo_relaxed: return memory_order_relaxed;
!   case mo_consume: return memory_order_consume;
!   case mo_acquire: return memory_order_acquire;
!   case mo_release: return memory_order_release;
!   case mo_acq_rel: return memory_order_acq_rel;
!   case mo_seq_cst: return memory_order_seq_cst;
    }
    DCHECK(0);
    return memory_order_seq_cst;
  }
  
! template<typename T>
! static T NoTsanAtomicLoad(const volatile T *a, morder mo) {
!   return atomic_load(to_atomic(a), to_mo(mo));
! }
! 
! #if __TSAN_HAS_INT128 && !SANITIZER_GO
! static a128 NoTsanAtomicLoad(const volatile a128 *a, morder mo) {
!   SpinMutexLock lock(&mutex128);
!   return *a;
! }
! #endif
! 
! template <typename T>
! static T AtomicLoad(ThreadState *thr, uptr pc, const volatile T *a, morder mo) {
!   DCHECK(IsLoadOrder(mo));
!   // This fast-path is critical for performance.
!   // Assume the access is atomic.
!   if (!IsAcquireOrder(mo)) {
!     MemoryAccess(thr, pc, (uptr)a, AccessSize<T>(),
!                  kAccessRead | kAccessAtomic);
!     return NoTsanAtomicLoad(a, mo);
!   }
!   // Don't create sync object if it does not exist yet. For example, an atomic
!   // pointer is initialized to nullptr and then periodically acquire-loaded.
!   T v = NoTsanAtomicLoad(a, mo);
!   SyncVar *s = ctx->metamap.GetSyncIfExists((uptr)a);
!   if (s) {
!     SlotLocker locker(thr);
!     ReadLock lock(&s->mtx);
!     thr->clock.Acquire(s->clock);
!     // Re-read under sync mutex because we need a consistent snapshot
!     // of the value and the clock we acquire.
!     v = NoTsanAtomicLoad(a, mo);
!   }
!   MemoryAccess(thr, pc, (uptr)a, AccessSize<T>(), kAccessRead | kAccessAtomic);
!   return v;
! }
! 
! template<typename T>
! static void NoTsanAtomicStore(volatile T *a, T v, morder mo) {
!   atomic_store(to_atomic(a), v, to_mo(mo));
! }
! 
! #if __TSAN_HAS_INT128 && !SANITIZER_GO
! static void NoTsanAtomicStore(volatile a128 *a, a128 v, morder mo) {
!   SpinMutexLock lock(&mutex128);
!   *a = v;
! }
! #endif
! 
! template <typename T>
! static void AtomicStore(ThreadState *thr, uptr pc, volatile T *a, T v,
!                         morder mo) {
!   DCHECK(IsStoreOrder(mo));
!   MemoryAccess(thr, pc, (uptr)a, AccessSize<T>(), kAccessWrite | kAccessAtomic);
!   // This fast-path is critical for performance.
!   // Assume the access is atomic.
!   // Strictly saying even relaxed store cuts off release sequence,
!   // so must reset the clock.
!   if (!IsReleaseOrder(mo)) {
!     NoTsanAtomicStore(a, v, mo);
!     return;
!   }
!   SlotLocker locker(thr);
!   {
!     auto s = ctx->metamap.GetSyncOrCreate(thr, pc, (uptr)a, false);
!     Lock lock(&s->mtx);
!     thr->clock.ReleaseStore(&s->clock);
!     NoTsanAtomicStore(a, v, mo);
!   }
!   IncrementEpoch(thr);
! }
  
  template <typename T, T (*F)(volatile T *v, T op)>
  static T AtomicRMW(ThreadState *thr, uptr pc, volatile T *a, T v, morder mo) {
--- 205,228 ----
  
  static memory_order to_mo(morder mo) {
    switch (mo) {
!     case mo_relaxed:
!       return memory_order_relaxed;
!     case mo_consume:
!       return memory_order_consume;
!     case mo_acquire:
!       return memory_order_acquire;
!     case mo_release:
!       return memory_order_release;
!     case mo_acq_rel:
!       return memory_order_acq_rel;
!     case mo_seq_cst:
!       return memory_order_seq_cst;
    }
    DCHECK(0);
    return memory_order_seq_cst;
  }
  
! namespace {
  
  template <typename T, T (*F)(volatile T *v, T op)>
  static T AtomicRMW(ThreadState *thr, uptr pc, volatile T *a, T v, morder mo) {
*************** static T AtomicRMW(ThreadState *thr, upt
*** 303,477 ****
    return v;
  }
  
! template<typename T>
! static T NoTsanAtomicExchange(volatile T *a, T v, morder mo) {
!   return func_xchg(a, v);
! }
  
! template<typename T>
! static T NoTsanAtomicFetchAdd(volatile T *a, T v, morder mo) {
!   return func_add(a, v);
! }
  
! template<typename T>
! static T NoTsanAtomicFetchSub(volatile T *a, T v, morder mo) {
!   return func_sub(a, v);
! }
  
! template<typename T>
! static T NoTsanAtomicFetchAnd(volatile T *a, T v, morder mo) {
!   return func_and(a, v);
! }
  
! template<typename T>
! static T NoTsanAtomicFetchOr(volatile T *a, T v, morder mo) {
!   return func_or(a, v);
! }
  
! template<typename T>
! static T NoTsanAtomicFetchXor(volatile T *a, T v, morder mo) {
!   return func_xor(a, v);
! }
  
! template<typename T>
! static T NoTsanAtomicFetchNand(volatile T *a, T v, morder mo) {
!   return func_nand(a, v);
! }
  
! template<typename T>
! static T AtomicExchange(ThreadState *thr, uptr pc, volatile T *a, T v,
!     morder mo) {
!   return AtomicRMW<T, func_xchg>(thr, pc, a, v, mo);
! }
  
! template<typename T>
! static T AtomicFetchAdd(ThreadState *thr, uptr pc, volatile T *a, T v,
!     morder mo) {
!   return AtomicRMW<T, func_add>(thr, pc, a, v, mo);
! }
  
! template<typename T>
! static T AtomicFetchSub(ThreadState *thr, uptr pc, volatile T *a, T v,
!     morder mo) {
!   return AtomicRMW<T, func_sub>(thr, pc, a, v, mo);
! }
  
! template<typename T>
! static T AtomicFetchAnd(ThreadState *thr, uptr pc, volatile T *a, T v,
!     morder mo) {
!   return AtomicRMW<T, func_and>(thr, pc, a, v, mo);
! }
  
! template<typename T>
! static T AtomicFetchOr(ThreadState *thr, uptr pc, volatile T *a, T v,
!     morder mo) {
!   return AtomicRMW<T, func_or>(thr, pc, a, v, mo);
! }
  
! template<typename T>
! static T AtomicFetchXor(ThreadState *thr, uptr pc, volatile T *a, T v,
!     morder mo) {
!   return AtomicRMW<T, func_xor>(thr, pc, a, v, mo);
! }
  
! template<typename T>
! static T AtomicFetchNand(ThreadState *thr, uptr pc, volatile T *a, T v,
!     morder mo) {
!   return AtomicRMW<T, func_nand>(thr, pc, a, v, mo);
! }
  
! template<typename T>
! static bool NoTsanAtomicCAS(volatile T *a, T *c, T v, morder mo, morder fmo) {
!   return atomic_compare_exchange_strong(to_atomic(a), c, v, to_mo(mo));
! }
  
! #if __TSAN_HAS_INT128
! static bool NoTsanAtomicCAS(volatile a128 *a, a128 *c, a128 v,
!     morder mo, morder fmo) {
!   a128 old = *c;
!   a128 cur = func_cas(a, old, v);
!   if (cur == old)
!     return true;
!   *c = cur;
!   return false;
! }
! #endif
  
! template<typename T>
! static T NoTsanAtomicCAS(volatile T *a, T c, T v, morder mo, morder fmo) {
!   NoTsanAtomicCAS(a, &c, v, mo, fmo);
!   return c;
! }
  
! template <typename T>
! static bool AtomicCAS(ThreadState *thr, uptr pc, volatile T *a, T *c, T v,
!                       morder mo, morder fmo) {
!   // 31.7.2.18: "The failure argument shall not be memory_order_release
!   // nor memory_order_acq_rel". LLVM (2021-05) fallbacks to Monotonic
!   // (mo_relaxed) when those are used.
!   DCHECK(IsLoadOrder(fmo));
  
!   MemoryAccess(thr, pc, (uptr)a, AccessSize<T>(), kAccessWrite | kAccessAtomic);
!   if (LIKELY(mo == mo_relaxed && fmo == mo_relaxed)) {
!     T cc = *c;
!     T pr = func_cas(a, cc, v);
!     if (pr == cc)
        return true;
!     *c = pr;
      return false;
    }
!   SlotLocker locker(thr);
!   bool release = IsReleaseOrder(mo);
!   bool success;
!   {
!     auto s = ctx->metamap.GetSyncOrCreate(thr, pc, (uptr)a, false);
!     RWLock lock(&s->mtx, release);
!     T cc = *c;
!     T pr = func_cas(a, cc, v);
!     success = pr == cc;
!     if (!success) {
        *c = pr;
!       mo = fmo;
      }
!     if (success && IsAcqRelOrder(mo))
!       thr->clock.ReleaseAcquire(&s->clock);
!     else if (success && IsReleaseOrder(mo))
!       thr->clock.Release(&s->clock);
!     else if (IsAcquireOrder(mo))
!       thr->clock.Acquire(s->clock);
    }
-   if (success && release)
-     IncrementEpoch(thr);
-   return success;
- }
  
! template<typename T>
! static T AtomicCAS(ThreadState *thr, uptr pc,
!     volatile T *a, T c, T v, morder mo, morder fmo) {
!   AtomicCAS(thr, pc, a, &c, v, mo, fmo);
!   return c;
! }
  
  #if !SANITIZER_GO
! static void NoTsanAtomicFence(morder mo) {
!   __sync_synchronize();
! }
  
! static void AtomicFence(ThreadState *thr, uptr pc, morder mo) {
!   // FIXME(dvyukov): not implemented.
!   __sync_synchronize();
! }
  #endif
  
  // Interface functions follow.
  #if !SANITIZER_GO
  
  // C/C++
  
  static morder convert_morder(morder mo) {
!   if (flags()->force_seq_cst_atomics)
!     return (morder)mo_seq_cst;
  
    // Filter out additional memory order flags:
    // MEMMODEL_SYNC        = 1 << 15
    // __ATOMIC_HLE_ACQUIRE = 1 << 16
--- 246,510 ----
    return v;
  }
  
! struct OpLoad {
!   template <typename T>
!   static T NoTsanAtomic(morder mo, const volatile T *a) {
!     return atomic_load(to_atomic(a), to_mo(mo));
!   }
  
! #if __TSAN_HAS_INT128 && !SANITIZER_GO
!   static a128 NoTsanAtomic(morder mo, const volatile a128 *a) {
!     SpinMutexLock lock(&mutex128);
!     return *a;
!   }
! #endif
  
!   template <typename T>
!   static T Atomic(ThreadState *thr, uptr pc, morder mo, const volatile T *a) {
!     DCHECK(IsLoadOrder(mo));
!     // This fast-path is critical for performance.
!     // Assume the access is atomic.
!     if (!IsAcquireOrder(mo)) {
!       MemoryAccess(thr, pc, (uptr)a, AccessSize<T>(),
!                    kAccessRead | kAccessAtomic);
!       return NoTsanAtomic(mo, a);
!     }
!     // Don't create sync object if it does not exist yet. For example, an atomic
!     // pointer is initialized to nullptr and then periodically acquire-loaded.
!     T v = NoTsanAtomic(mo, a);
!     SyncVar *s = ctx->metamap.GetSyncIfExists((uptr)a);
!     if (s) {
!       SlotLocker locker(thr);
!       ReadLock lock(&s->mtx);
!       thr->clock.Acquire(s->clock);
!       // Re-read under sync mutex because we need a consistent snapshot
!       // of the value and the clock we acquire.
!       v = NoTsanAtomic(mo, a);
!     }
!     MemoryAccess(thr, pc, (uptr)a, AccessSize<T>(),
!                  kAccessRead | kAccessAtomic);
!     return v;
!   }
! };
  
! struct OpStore {
!   template <typename T>
!   static void NoTsanAtomic(morder mo, volatile T *a, T v) {
!     atomic_store(to_atomic(a), v, to_mo(mo));
!   }
  
! #if __TSAN_HAS_INT128 && !SANITIZER_GO
!   static void NoTsanAtomic(morder mo, volatile a128 *a, a128 v) {
!     SpinMutexLock lock(&mutex128);
!     *a = v;
!   }
! #endif
  
!   template <typename T>
!   static void Atomic(ThreadState *thr, uptr pc, morder mo, volatile T *a, T v) {
!     DCHECK(IsStoreOrder(mo));
!     MemoryAccess(thr, pc, (uptr)a, AccessSize<T>(),
!                  kAccessWrite | kAccessAtomic);
!     // This fast-path is critical for performance.
!     // Assume the access is atomic.
!     // Strictly saying even relaxed store cuts off release sequence,
!     // so must reset the clock.
!     if (!IsReleaseOrder(mo)) {
!       NoTsanAtomic(mo, a, v);
!       return;
!     }
!     SlotLocker locker(thr);
!     {
!       auto s = ctx->metamap.GetSyncOrCreate(thr, pc, (uptr)a, false);
!       Lock lock(&s->mtx);
!       thr->clock.ReleaseStore(&s->clock);
!       NoTsanAtomic(mo, a, v);
!     }
!     IncrementEpoch(thr);
!   }
! };
  
! struct OpExchange {
!   template <typename T>
!   static T NoTsanAtomic(morder mo, volatile T *a, T v) {
!     return func_xchg(a, v);
!   }
!   template <typename T>
!   static T Atomic(ThreadState *thr, uptr pc, morder mo, volatile T *a, T v) {
!     return AtomicRMW<T, func_xchg>(thr, pc, a, v, mo);
!   }
! };
  
! struct OpFetchAdd {
!   template <typename T>
!   static T NoTsanAtomic(morder mo, volatile T *a, T v) {
!     return func_add(a, v);
!   }
  
!   template <typename T>
!   static T Atomic(ThreadState *thr, uptr pc, morder mo, volatile T *a, T v) {
!     return AtomicRMW<T, func_add>(thr, pc, a, v, mo);
!   }
! };
  
! struct OpFetchSub {
!   template <typename T>
!   static T NoTsanAtomic(morder mo, volatile T *a, T v) {
!     return func_sub(a, v);
!   }
  
!   template <typename T>
!   static T Atomic(ThreadState *thr, uptr pc, morder mo, volatile T *a, T v) {
!     return AtomicRMW<T, func_sub>(thr, pc, a, v, mo);
!   }
! };
  
! struct OpFetchAnd {
!   template <typename T>
!   static T NoTsanAtomic(morder mo, volatile T *a, T v) {
!     return func_and(a, v);
!   }
  
!   template <typename T>
!   static T Atomic(ThreadState *thr, uptr pc, morder mo, volatile T *a, T v) {
!     return AtomicRMW<T, func_and>(thr, pc, a, v, mo);
!   }
! };
  
! struct OpFetchOr {
!   template <typename T>
!   static T NoTsanAtomic(morder mo, volatile T *a, T v) {
!     return func_or(a, v);
!   }
  
!   template <typename T>
!   static T Atomic(ThreadState *thr, uptr pc, morder mo, volatile T *a, T v) {
!     return AtomicRMW<T, func_or>(thr, pc, a, v, mo);
!   }
! };
  
! struct OpFetchXor {
!   template <typename T>
!   static T NoTsanAtomic(morder mo, volatile T *a, T v) {
!     return func_xor(a, v);
!   }
  
!   template <typename T>
!   static T Atomic(ThreadState *thr, uptr pc, morder mo, volatile T *a, T v) {
!     return AtomicRMW<T, func_xor>(thr, pc, a, v, mo);
!   }
! };
  
! struct OpFetchNand {
!   template <typename T>
!   static T NoTsanAtomic(morder mo, volatile T *a, T v) {
!     return func_nand(a, v);
!   }
  
!   template <typename T>
!   static T Atomic(ThreadState *thr, uptr pc, morder mo, volatile T *a, T v) {
!     return AtomicRMW<T, func_nand>(thr, pc, a, v, mo);
!   }
! };
! 
! struct OpCAS {
!   template <typename T>
!   static bool NoTsanAtomic(morder mo, morder fmo, volatile T *a, T *c, T v) {
!     return atomic_compare_exchange_strong(to_atomic(a), c, v, to_mo(mo));
!   }
! 
! #if __TSAN_HAS_INT128
!   static bool NoTsanAtomic(morder mo, morder fmo, volatile a128 *a, a128 *c,
!                            a128 v) {
!     a128 old = *c;
!     a128 cur = func_cas(a, old, v);
!     if (cur == old)
        return true;
!     *c = cur;
      return false;
    }
! #endif
! 
!   template <typename T>
!   static T NoTsanAtomic(morder mo, morder fmo, volatile T *a, T c, T v) {
!     NoTsanAtomic(mo, fmo, a, &c, v);
!     return c;
!   }
! 
!   template <typename T>
!   static bool Atomic(ThreadState *thr, uptr pc, morder mo, morder fmo,
!                      volatile T *a, T *c, T v) {
!     // 31.7.2.18: "The failure argument shall not be memory_order_release
!     // nor memory_order_acq_rel". LLVM (2021-05) fallbacks to Monotonic
!     // (mo_relaxed) when those are used.
!     DCHECK(IsLoadOrder(fmo));
! 
!     MemoryAccess(thr, pc, (uptr)a, AccessSize<T>(),
!                  kAccessWrite | kAccessAtomic);
!     if (LIKELY(mo == mo_relaxed && fmo == mo_relaxed)) {
!       T cc = *c;
!       T pr = func_cas(a, cc, v);
!       if (pr == cc)
!         return true;
        *c = pr;
!       return false;
      }
!     SlotLocker locker(thr);
!     bool release = IsReleaseOrder(mo);
!     bool success;
!     {
!       auto s = ctx->metamap.GetSyncOrCreate(thr, pc, (uptr)a, false);
!       RWLock lock(&s->mtx, release);
!       T cc = *c;
!       T pr = func_cas(a, cc, v);
!       success = pr == cc;
!       if (!success) {
!         *c = pr;
!         mo = fmo;
!       }
!       if (success && IsAcqRelOrder(mo))
!         thr->clock.ReleaseAcquire(&s->clock);
!       else if (success && IsReleaseOrder(mo))
!         thr->clock.Release(&s->clock);
!       else if (IsAcquireOrder(mo))
!         thr->clock.Acquire(s->clock);
!     }
!     if (success && release)
!       IncrementEpoch(thr);
!     return success;
    }
  
!   template <typename T>
!   static T Atomic(ThreadState *thr, uptr pc, morder mo, morder fmo,
!                   volatile T *a, T c, T v) {
!     Atomic(thr, pc, mo, fmo, a, &c, v);
!     return c;
!   }
! };
  
  #if !SANITIZER_GO
! struct OpFence {
!   static void NoTsanAtomic(morder mo) { __sync_synchronize(); }
  
!   static void Atomic(ThreadState *thr, uptr pc, morder mo) {
!     // FIXME(dvyukov): not implemented.
!     __sync_synchronize();
!   }
! };
  #endif
  
+ }  // namespace
+ 
  // Interface functions follow.
  #if !SANITIZER_GO
  
  // C/C++
  
  static morder convert_morder(morder mo) {
!   return flags()->force_seq_cst_atomics ? mo_seq_cst : mo;
! }
  
+ static morder to_morder(int mo) {
    // Filter out additional memory order flags:
    // MEMMODEL_SYNC        = 1 << 15
    // __ATOMIC_HLE_ACQUIRE = 1 << 16
*************** static morder convert_morder(morder mo)
*** 482,949 ****
    // since we use __sync_ atomics for actual atomic operations,
    // we can safely ignore it as well. It also subtly affects semantics,
    // but we don't model the difference.
!   return (morder)(mo & 0x7fff);
  }
  
! #  define ATOMIC_IMPL(func, ...)                                \
!     ThreadState *const thr = cur_thread();                      \
!     ProcessPendingSignals(thr);                                 \
!     if (UNLIKELY(thr->ignore_sync || thr->ignore_interceptors)) \
!       return NoTsanAtomic##func(__VA_ARGS__);                   \
!     mo = convert_morder(mo);                                    \
!     return Atomic##func(thr, GET_CALLER_PC(), __VA_ARGS__);
  
  extern "C" {
  SANITIZER_INTERFACE_ATTRIBUTE
! a8 __tsan_atomic8_load(const volatile a8 *a, morder mo) {
!   ATOMIC_IMPL(Load, a, mo);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a16 __tsan_atomic16_load(const volatile a16 *a, morder mo) {
!   ATOMIC_IMPL(Load, a, mo);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a32 __tsan_atomic32_load(const volatile a32 *a, morder mo) {
!   ATOMIC_IMPL(Load, a, mo);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a64 __tsan_atomic64_load(const volatile a64 *a, morder mo) {
!   ATOMIC_IMPL(Load, a, mo);
  }
  
! #if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
! a128 __tsan_atomic128_load(const volatile a128 *a, morder mo) {
!   ATOMIC_IMPL(Load, a, mo);
  }
! #endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! void __tsan_atomic8_store(volatile a8 *a, a8 v, morder mo) {
!   ATOMIC_IMPL(Store, a, v, mo);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! void __tsan_atomic16_store(volatile a16 *a, a16 v, morder mo) {
!   ATOMIC_IMPL(Store, a, v, mo);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! void __tsan_atomic32_store(volatile a32 *a, a32 v, morder mo) {
!   ATOMIC_IMPL(Store, a, v, mo);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! void __tsan_atomic64_store(volatile a64 *a, a64 v, morder mo) {
!   ATOMIC_IMPL(Store, a, v, mo);
  }
  
! #if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
! void __tsan_atomic128_store(volatile a128 *a, a128 v, morder mo) {
!   ATOMIC_IMPL(Store, a, v, mo);
  }
! #endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a8 __tsan_atomic8_exchange(volatile a8 *a, a8 v, morder mo) {
!   ATOMIC_IMPL(Exchange, a, v, mo);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a16 __tsan_atomic16_exchange(volatile a16 *a, a16 v, morder mo) {
!   ATOMIC_IMPL(Exchange, a, v, mo);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a32 __tsan_atomic32_exchange(volatile a32 *a, a32 v, morder mo) {
!   ATOMIC_IMPL(Exchange, a, v, mo);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a64 __tsan_atomic64_exchange(volatile a64 *a, a64 v, morder mo) {
!   ATOMIC_IMPL(Exchange, a, v, mo);
  }
  
! #if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
! a128 __tsan_atomic128_exchange(volatile a128 *a, a128 v, morder mo) {
!   ATOMIC_IMPL(Exchange, a, v, mo);
  }
! #endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a8 __tsan_atomic8_fetch_add(volatile a8 *a, a8 v, morder mo) {
!   ATOMIC_IMPL(FetchAdd, a, v, mo);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a16 __tsan_atomic16_fetch_add(volatile a16 *a, a16 v, morder mo) {
!   ATOMIC_IMPL(FetchAdd, a, v, mo);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a32 __tsan_atomic32_fetch_add(volatile a32 *a, a32 v, morder mo) {
!   ATOMIC_IMPL(FetchAdd, a, v, mo);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a64 __tsan_atomic64_fetch_add(volatile a64 *a, a64 v, morder mo) {
!   ATOMIC_IMPL(FetchAdd, a, v, mo);
  }
  
! #if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
! a128 __tsan_atomic128_fetch_add(volatile a128 *a, a128 v, morder mo) {
!   ATOMIC_IMPL(FetchAdd, a, v, mo);
  }
! #endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a8 __tsan_atomic8_fetch_sub(volatile a8 *a, a8 v, morder mo) {
!   ATOMIC_IMPL(FetchSub, a, v, mo);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a16 __tsan_atomic16_fetch_sub(volatile a16 *a, a16 v, morder mo) {
!   ATOMIC_IMPL(FetchSub, a, v, mo);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a32 __tsan_atomic32_fetch_sub(volatile a32 *a, a32 v, morder mo) {
!   ATOMIC_IMPL(FetchSub, a, v, mo);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a64 __tsan_atomic64_fetch_sub(volatile a64 *a, a64 v, morder mo) {
!   ATOMIC_IMPL(FetchSub, a, v, mo);
  }
  
! #if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
! a128 __tsan_atomic128_fetch_sub(volatile a128 *a, a128 v, morder mo) {
!   ATOMIC_IMPL(FetchSub, a, v, mo);
  }
! #endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a8 __tsan_atomic8_fetch_and(volatile a8 *a, a8 v, morder mo) {
!   ATOMIC_IMPL(FetchAnd, a, v, mo);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a16 __tsan_atomic16_fetch_and(volatile a16 *a, a16 v, morder mo) {
!   ATOMIC_IMPL(FetchAnd, a, v, mo);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a32 __tsan_atomic32_fetch_and(volatile a32 *a, a32 v, morder mo) {
!   ATOMIC_IMPL(FetchAnd, a, v, mo);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a64 __tsan_atomic64_fetch_and(volatile a64 *a, a64 v, morder mo) {
!   ATOMIC_IMPL(FetchAnd, a, v, mo);
  }
  
! #if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
! a128 __tsan_atomic128_fetch_and(volatile a128 *a, a128 v, morder mo) {
!   ATOMIC_IMPL(FetchAnd, a, v, mo);
  }
! #endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a8 __tsan_atomic8_fetch_or(volatile a8 *a, a8 v, morder mo) {
!   ATOMIC_IMPL(FetchOr, a, v, mo);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a16 __tsan_atomic16_fetch_or(volatile a16 *a, a16 v, morder mo) {
!   ATOMIC_IMPL(FetchOr, a, v, mo);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a32 __tsan_atomic32_fetch_or(volatile a32 *a, a32 v, morder mo) {
!   ATOMIC_IMPL(FetchOr, a, v, mo);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a64 __tsan_atomic64_fetch_or(volatile a64 *a, a64 v, morder mo) {
!   ATOMIC_IMPL(FetchOr, a, v, mo);
  }
  
! #if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
! a128 __tsan_atomic128_fetch_or(volatile a128 *a, a128 v, morder mo) {
!   ATOMIC_IMPL(FetchOr, a, v, mo);
  }
! #endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a8 __tsan_atomic8_fetch_xor(volatile a8 *a, a8 v, morder mo) {
!   ATOMIC_IMPL(FetchXor, a, v, mo);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a16 __tsan_atomic16_fetch_xor(volatile a16 *a, a16 v, morder mo) {
!   ATOMIC_IMPL(FetchXor, a, v, mo);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a32 __tsan_atomic32_fetch_xor(volatile a32 *a, a32 v, morder mo) {
!   ATOMIC_IMPL(FetchXor, a, v, mo);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a64 __tsan_atomic64_fetch_xor(volatile a64 *a, a64 v, morder mo) {
!   ATOMIC_IMPL(FetchXor, a, v, mo);
  }
  
! #if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
! a128 __tsan_atomic128_fetch_xor(volatile a128 *a, a128 v, morder mo) {
!   ATOMIC_IMPL(FetchXor, a, v, mo);
  }
! #endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a8 __tsan_atomic8_fetch_nand(volatile a8 *a, a8 v, morder mo) {
!   ATOMIC_IMPL(FetchNand, a, v, mo);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a16 __tsan_atomic16_fetch_nand(volatile a16 *a, a16 v, morder mo) {
!   ATOMIC_IMPL(FetchNand, a, v, mo);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a32 __tsan_atomic32_fetch_nand(volatile a32 *a, a32 v, morder mo) {
!   ATOMIC_IMPL(FetchNand, a, v, mo);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a64 __tsan_atomic64_fetch_nand(volatile a64 *a, a64 v, morder mo) {
!   ATOMIC_IMPL(FetchNand, a, v, mo);
  }
  
! #if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
! a128 __tsan_atomic128_fetch_nand(volatile a128 *a, a128 v, morder mo) {
!   ATOMIC_IMPL(FetchNand, a, v, mo);
  }
! #endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! int __tsan_atomic8_compare_exchange_strong(volatile a8 *a, a8 *c, a8 v,
!     morder mo, morder fmo) {
!   ATOMIC_IMPL(CAS, a, c, v, mo, fmo);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
  int __tsan_atomic16_compare_exchange_strong(volatile a16 *a, a16 *c, a16 v,
!     morder mo, morder fmo) {
!   ATOMIC_IMPL(CAS, a, c, v, mo, fmo);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
  int __tsan_atomic32_compare_exchange_strong(volatile a32 *a, a32 *c, a32 v,
!     morder mo, morder fmo) {
!   ATOMIC_IMPL(CAS, a, c, v, mo, fmo);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
  int __tsan_atomic64_compare_exchange_strong(volatile a64 *a, a64 *c, a64 v,
!     morder mo, morder fmo) {
!   ATOMIC_IMPL(CAS, a, c, v, mo, fmo);
  }
  
! #if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
  int __tsan_atomic128_compare_exchange_strong(volatile a128 *a, a128 *c, a128 v,
!     morder mo, morder fmo) {
!   ATOMIC_IMPL(CAS, a, c, v, mo, fmo);
  }
! #endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! int __tsan_atomic8_compare_exchange_weak(volatile a8 *a, a8 *c, a8 v,
!     morder mo, morder fmo) {
!   ATOMIC_IMPL(CAS, a, c, v, mo, fmo);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
  int __tsan_atomic16_compare_exchange_weak(volatile a16 *a, a16 *c, a16 v,
!     morder mo, morder fmo) {
!   ATOMIC_IMPL(CAS, a, c, v, mo, fmo);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
  int __tsan_atomic32_compare_exchange_weak(volatile a32 *a, a32 *c, a32 v,
!     morder mo, morder fmo) {
!   ATOMIC_IMPL(CAS, a, c, v, mo, fmo);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
  int __tsan_atomic64_compare_exchange_weak(volatile a64 *a, a64 *c, a64 v,
!     morder mo, morder fmo) {
!   ATOMIC_IMPL(CAS, a, c, v, mo, fmo);
  }
  
! #if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
  int __tsan_atomic128_compare_exchange_weak(volatile a128 *a, a128 *c, a128 v,
!     morder mo, morder fmo) {
!   ATOMIC_IMPL(CAS, a, c, v, mo, fmo);
  }
! #endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a8 __tsan_atomic8_compare_exchange_val(volatile a8 *a, a8 c, a8 v,
!     morder mo, morder fmo) {
!   ATOMIC_IMPL(CAS, a, c, v, mo, fmo);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a16 __tsan_atomic16_compare_exchange_val(volatile a16 *a, a16 c, a16 v,
!     morder mo, morder fmo) {
!   ATOMIC_IMPL(CAS, a, c, v, mo, fmo);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a32 __tsan_atomic32_compare_exchange_val(volatile a32 *a, a32 c, a32 v,
!     morder mo, morder fmo) {
!   ATOMIC_IMPL(CAS, a, c, v, mo, fmo);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a64 __tsan_atomic64_compare_exchange_val(volatile a64 *a, a64 c, a64 v,
!     morder mo, morder fmo) {
!   ATOMIC_IMPL(CAS, a, c, v, mo, fmo);
  }
  
! #if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
  a128 __tsan_atomic128_compare_exchange_val(volatile a128 *a, a128 c, a128 v,
!     morder mo, morder fmo) {
!   ATOMIC_IMPL(CAS, a, c, v, mo, fmo);
  }
! #endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! void __tsan_atomic_thread_fence(morder mo) { ATOMIC_IMPL(Fence, mo); }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! void __tsan_atomic_signal_fence(morder mo) {
! }
  }  // extern "C"
  
  #else  // #if !SANITIZER_GO
  
  // Go
  
! #  define ATOMIC(func, ...)               \
!     if (thr->ignore_sync) {               \
!       NoTsanAtomic##func(__VA_ARGS__);    \
!     } else {                              \
!       FuncEntry(thr, cpc);                \
!       Atomic##func(thr, pc, __VA_ARGS__); \
!       FuncExit(thr);                      \
!     }
  
! #  define ATOMIC_RET(func, ret, ...)              \
!     if (thr->ignore_sync) {                       \
!       (ret) = NoTsanAtomic##func(__VA_ARGS__);    \
!     } else {                                      \
!       FuncEntry(thr, cpc);                        \
!       (ret) = Atomic##func(thr, pc, __VA_ARGS__); \
!       FuncExit(thr);                              \
!     }
  
  extern "C" {
  SANITIZER_INTERFACE_ATTRIBUTE
  void __tsan_go_atomic32_load(ThreadState *thr, uptr cpc, uptr pc, u8 *a) {
!   ATOMIC_RET(Load, *(a32*)(a+8), *(a32**)a, mo_acquire);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
  void __tsan_go_atomic64_load(ThreadState *thr, uptr cpc, uptr pc, u8 *a) {
!   ATOMIC_RET(Load, *(a64*)(a+8), *(a64**)a, mo_acquire);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
  void __tsan_go_atomic32_store(ThreadState *thr, uptr cpc, uptr pc, u8 *a) {
!   ATOMIC(Store, *(a32**)a, *(a32*)(a+8), mo_release);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
  void __tsan_go_atomic64_store(ThreadState *thr, uptr cpc, uptr pc, u8 *a) {
!   ATOMIC(Store, *(a64**)a, *(a64*)(a+8), mo_release);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
  void __tsan_go_atomic32_fetch_add(ThreadState *thr, uptr cpc, uptr pc, u8 *a) {
!   ATOMIC_RET(FetchAdd, *(a32*)(a+16), *(a32**)a, *(a32*)(a+8), mo_acq_rel);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
  void __tsan_go_atomic64_fetch_add(ThreadState *thr, uptr cpc, uptr pc, u8 *a) {
!   ATOMIC_RET(FetchAdd, *(a64*)(a+16), *(a64**)a, *(a64*)(a+8), mo_acq_rel);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
  void __tsan_go_atomic32_fetch_and(ThreadState *thr, uptr cpc, uptr pc, u8 *a) {
!   ATOMIC_RET(FetchAnd, *(a32 *)(a + 16), *(a32 **)a, *(a32 *)(a + 8),
!              mo_acq_rel);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
  void __tsan_go_atomic64_fetch_and(ThreadState *thr, uptr cpc, uptr pc, u8 *a) {
!   ATOMIC_RET(FetchAnd, *(a64 *)(a + 16), *(a64 **)a, *(a64 *)(a + 8),
!              mo_acq_rel);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
  void __tsan_go_atomic32_fetch_or(ThreadState *thr, uptr cpc, uptr pc, u8 *a) {
!   ATOMIC_RET(FetchOr, *(a32 *)(a + 16), *(a32 **)a, *(a32 *)(a + 8),
!              mo_acq_rel);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
  void __tsan_go_atomic64_fetch_or(ThreadState *thr, uptr cpc, uptr pc, u8 *a) {
!   ATOMIC_RET(FetchOr, *(a64 *)(a + 16), *(a64 **)a, *(a64 *)(a + 8),
!              mo_acq_rel);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
  void __tsan_go_atomic32_exchange(ThreadState *thr, uptr cpc, uptr pc, u8 *a) {
!   ATOMIC_RET(Exchange, *(a32*)(a+16), *(a32**)a, *(a32*)(a+8), mo_acq_rel);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
  void __tsan_go_atomic64_exchange(ThreadState *thr, uptr cpc, uptr pc, u8 *a) {
!   ATOMIC_RET(Exchange, *(a64*)(a+16), *(a64**)a, *(a64*)(a+8), mo_acq_rel);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! void __tsan_go_atomic32_compare_exchange(
!     ThreadState *thr, uptr cpc, uptr pc, u8 *a) {
!   a32 cur = 0;
!   a32 cmp = *(a32*)(a+8);
!   ATOMIC_RET(CAS, cur, *(a32**)a, cmp, *(a32*)(a+12), mo_acq_rel, mo_acquire);
!   *(bool*)(a+16) = (cur == cmp);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! void __tsan_go_atomic64_compare_exchange(
!     ThreadState *thr, uptr cpc, uptr pc, u8 *a) {
!   a64 cur = 0;
!   a64 cmp = *(a64*)(a+8);
!   ATOMIC_RET(CAS, cur, *(a64**)a, cmp, *(a64*)(a+16), mo_acq_rel, mo_acquire);
!   *(bool*)(a+24) = (cur == cmp);
  }
  }  // extern "C"
  #endif  // #if !SANITIZER_GO
--- 515,995 ----
    // since we use __sync_ atomics for actual atomic operations,
    // we can safely ignore it as well. It also subtly affects semantics,
    // but we don't model the difference.
!   morder res = static_cast<morder>(static_cast<u8>(mo));
!   DCHECK_LE(res, mo_seq_cst);
!   return res;
  }
  
! template <class Op, class... Types>
! ALWAYS_INLINE auto AtomicImpl(morder mo, Types... args) {
!   ThreadState *const thr = cur_thread();
!   ProcessPendingSignals(thr);
!   if (UNLIKELY(thr->ignore_sync || thr->ignore_interceptors))
!     return Op::NoTsanAtomic(mo, args...);
!   return Op::Atomic(thr, GET_CALLER_PC(), convert_morder(mo), args...);
! }
  
  extern "C" {
  SANITIZER_INTERFACE_ATTRIBUTE
! a8 __tsan_atomic8_load(const volatile a8 *a, int mo) {
!   return AtomicImpl<OpLoad>(to_morder(mo), a);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a16 __tsan_atomic16_load(const volatile a16 *a, int mo) {
!   return AtomicImpl<OpLoad>(to_morder(mo), a);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a32 __tsan_atomic32_load(const volatile a32 *a, int mo) {
!   return AtomicImpl<OpLoad>(to_morder(mo), a);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a64 __tsan_atomic64_load(const volatile a64 *a, int mo) {
!   return AtomicImpl<OpLoad>(to_morder(mo), a);
  }
  
! #  if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
! a128 __tsan_atomic128_load(const volatile a128 *a, int mo) {
!   return AtomicImpl<OpLoad>(to_morder(mo), a);
  }
! #  endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! void __tsan_atomic8_store(volatile a8 *a, a8 v, int mo) {
!   return AtomicImpl<OpStore>(to_morder(mo), a, v);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! void __tsan_atomic16_store(volatile a16 *a, a16 v, int mo) {
!   return AtomicImpl<OpStore>(to_morder(mo), a, v);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! void __tsan_atomic32_store(volatile a32 *a, a32 v, int mo) {
!   return AtomicImpl<OpStore>(to_morder(mo), a, v);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! void __tsan_atomic64_store(volatile a64 *a, a64 v, int mo) {
!   return AtomicImpl<OpStore>(to_morder(mo), a, v);
  }
  
! #  if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
! void __tsan_atomic128_store(volatile a128 *a, a128 v, int mo) {
!   return AtomicImpl<OpStore>(to_morder(mo), a, v);
  }
! #  endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a8 __tsan_atomic8_exchange(volatile a8 *a, a8 v, int mo) {
!   return AtomicImpl<OpExchange>(to_morder(mo), a, v);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a16 __tsan_atomic16_exchange(volatile a16 *a, a16 v, int mo) {
!   return AtomicImpl<OpExchange>(to_morder(mo), a, v);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a32 __tsan_atomic32_exchange(volatile a32 *a, a32 v, int mo) {
!   return AtomicImpl<OpExchange>(to_morder(mo), a, v);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a64 __tsan_atomic64_exchange(volatile a64 *a, a64 v, int mo) {
!   return AtomicImpl<OpExchange>(to_morder(mo), a, v);
  }
  
! #  if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
! a128 __tsan_atomic128_exchange(volatile a128 *a, a128 v, int mo) {
!   return AtomicImpl<OpExchange>(to_morder(mo), a, v);
  }
! #  endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a8 __tsan_atomic8_fetch_add(volatile a8 *a, a8 v, int mo) {
!   return AtomicImpl<OpFetchAdd>(to_morder(mo), a, v);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a16 __tsan_atomic16_fetch_add(volatile a16 *a, a16 v, int mo) {
!   return AtomicImpl<OpFetchAdd>(to_morder(mo), a, v);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a32 __tsan_atomic32_fetch_add(volatile a32 *a, a32 v, int mo) {
!   return AtomicImpl<OpFetchAdd>(to_morder(mo), a, v);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a64 __tsan_atomic64_fetch_add(volatile a64 *a, a64 v, int mo) {
!   return AtomicImpl<OpFetchAdd>(to_morder(mo), a, v);
  }
  
! #  if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
! a128 __tsan_atomic128_fetch_add(volatile a128 *a, a128 v, int mo) {
!   return AtomicImpl<OpFetchAdd>(to_morder(mo), a, v);
  }
! #  endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a8 __tsan_atomic8_fetch_sub(volatile a8 *a, a8 v, int mo) {
!   return AtomicImpl<OpFetchSub>(to_morder(mo), a, v);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a16 __tsan_atomic16_fetch_sub(volatile a16 *a, a16 v, int mo) {
!   return AtomicImpl<OpFetchSub>(to_morder(mo), a, v);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a32 __tsan_atomic32_fetch_sub(volatile a32 *a, a32 v, int mo) {
!   return AtomicImpl<OpFetchSub>(to_morder(mo), a, v);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a64 __tsan_atomic64_fetch_sub(volatile a64 *a, a64 v, int mo) {
!   return AtomicImpl<OpFetchSub>(to_morder(mo), a, v);
  }
  
! #  if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
! a128 __tsan_atomic128_fetch_sub(volatile a128 *a, a128 v, int mo) {
!   return AtomicImpl<OpFetchSub>(to_morder(mo), a, v);
  }
! #  endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a8 __tsan_atomic8_fetch_and(volatile a8 *a, a8 v, int mo) {
!   return AtomicImpl<OpFetchAnd>(to_morder(mo), a, v);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a16 __tsan_atomic16_fetch_and(volatile a16 *a, a16 v, int mo) {
!   return AtomicImpl<OpFetchAnd>(to_morder(mo), a, v);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a32 __tsan_atomic32_fetch_and(volatile a32 *a, a32 v, int mo) {
!   return AtomicImpl<OpFetchAnd>(to_morder(mo), a, v);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a64 __tsan_atomic64_fetch_and(volatile a64 *a, a64 v, int mo) {
!   return AtomicImpl<OpFetchAnd>(to_morder(mo), a, v);
  }
  
! #  if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
! a128 __tsan_atomic128_fetch_and(volatile a128 *a, a128 v, int mo) {
!   return AtomicImpl<OpFetchAnd>(to_morder(mo), a, v);
  }
! #  endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a8 __tsan_atomic8_fetch_or(volatile a8 *a, a8 v, int mo) {
!   return AtomicImpl<OpFetchOr>(to_morder(mo), a, v);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a16 __tsan_atomic16_fetch_or(volatile a16 *a, a16 v, int mo) {
!   return AtomicImpl<OpFetchOr>(to_morder(mo), a, v);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a32 __tsan_atomic32_fetch_or(volatile a32 *a, a32 v, int mo) {
!   return AtomicImpl<OpFetchOr>(to_morder(mo), a, v);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a64 __tsan_atomic64_fetch_or(volatile a64 *a, a64 v, int mo) {
!   return AtomicImpl<OpFetchOr>(to_morder(mo), a, v);
  }
  
! #  if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
! a128 __tsan_atomic128_fetch_or(volatile a128 *a, a128 v, int mo) {
!   return AtomicImpl<OpFetchOr>(to_morder(mo), a, v);
  }
! #  endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a8 __tsan_atomic8_fetch_xor(volatile a8 *a, a8 v, int mo) {
!   return AtomicImpl<OpFetchXor>(to_morder(mo), a, v);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a16 __tsan_atomic16_fetch_xor(volatile a16 *a, a16 v, int mo) {
!   return AtomicImpl<OpFetchXor>(to_morder(mo), a, v);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a32 __tsan_atomic32_fetch_xor(volatile a32 *a, a32 v, int mo) {
!   return AtomicImpl<OpFetchXor>(to_morder(mo), a, v);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a64 __tsan_atomic64_fetch_xor(volatile a64 *a, a64 v, int mo) {
!   return AtomicImpl<OpFetchXor>(to_morder(mo), a, v);
  }
  
! #  if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
! a128 __tsan_atomic128_fetch_xor(volatile a128 *a, a128 v, int mo) {
!   return AtomicImpl<OpFetchXor>(to_morder(mo), a, v);
  }
! #  endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a8 __tsan_atomic8_fetch_nand(volatile a8 *a, a8 v, int mo) {
!   return AtomicImpl<OpFetchNand>(to_morder(mo), a, v);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a16 __tsan_atomic16_fetch_nand(volatile a16 *a, a16 v, int mo) {
!   return AtomicImpl<OpFetchNand>(to_morder(mo), a, v);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a32 __tsan_atomic32_fetch_nand(volatile a32 *a, a32 v, int mo) {
!   return AtomicImpl<OpFetchNand>(to_morder(mo), a, v);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a64 __tsan_atomic64_fetch_nand(volatile a64 *a, a64 v, int mo) {
!   return AtomicImpl<OpFetchNand>(to_morder(mo), a, v);
  }
  
! #  if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
! a128 __tsan_atomic128_fetch_nand(volatile a128 *a, a128 v, int mo) {
!   return AtomicImpl<OpFetchNand>(to_morder(mo), a, v);
  }
! #  endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! int __tsan_atomic8_compare_exchange_strong(volatile a8 *a, a8 *c, a8 v, int mo,
!                                            int fmo) {
!   return AtomicImpl<OpCAS>(to_morder(mo), to_morder(fmo), a, c, v);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
  int __tsan_atomic16_compare_exchange_strong(volatile a16 *a, a16 *c, a16 v,
!                                             int mo, int fmo) {
!   return AtomicImpl<OpCAS>(to_morder(mo), to_morder(fmo), a, c, v);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
  int __tsan_atomic32_compare_exchange_strong(volatile a32 *a, a32 *c, a32 v,
!                                             int mo, int fmo) {
!   return AtomicImpl<OpCAS>(to_morder(mo), to_morder(fmo), a, c, v);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
  int __tsan_atomic64_compare_exchange_strong(volatile a64 *a, a64 *c, a64 v,
!                                             int mo, int fmo) {
!   return AtomicImpl<OpCAS>(to_morder(mo), to_morder(fmo), a, c, v);
  }
  
! #  if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
  int __tsan_atomic128_compare_exchange_strong(volatile a128 *a, a128 *c, a128 v,
!                                              int mo, int fmo) {
!   return AtomicImpl<OpCAS>(to_morder(mo), to_morder(fmo), a, c, v);
  }
! #  endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! int __tsan_atomic8_compare_exchange_weak(volatile a8 *a, a8 *c, a8 v, int mo,
!                                          int fmo) {
!   return AtomicImpl<OpCAS>(to_morder(mo), to_morder(fmo), a, c, v);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
  int __tsan_atomic16_compare_exchange_weak(volatile a16 *a, a16 *c, a16 v,
!                                           int mo, int fmo) {
!   return AtomicImpl<OpCAS>(to_morder(mo), to_morder(fmo), a, c, v);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
  int __tsan_atomic32_compare_exchange_weak(volatile a32 *a, a32 *c, a32 v,
!                                           int mo, int fmo) {
!   return AtomicImpl<OpCAS>(to_morder(mo), to_morder(fmo), a, c, v);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
  int __tsan_atomic64_compare_exchange_weak(volatile a64 *a, a64 *c, a64 v,
!                                           int mo, int fmo) {
!   return AtomicImpl<OpCAS>(to_morder(mo), to_morder(fmo), a, c, v);
  }
  
! #  if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
  int __tsan_atomic128_compare_exchange_weak(volatile a128 *a, a128 *c, a128 v,
!                                            int mo, int fmo) {
!   return AtomicImpl<OpCAS>(to_morder(mo), to_morder(fmo), a, c, v);
  }
! #  endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a8 __tsan_atomic8_compare_exchange_val(volatile a8 *a, a8 c, a8 v, int mo,
!                                        int fmo) {
!   return AtomicImpl<OpCAS>(to_morder(mo), to_morder(fmo), a, c, v);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a16 __tsan_atomic16_compare_exchange_val(volatile a16 *a, a16 c, a16 v, int mo,
!                                          int fmo) {
!   return AtomicImpl<OpCAS>(to_morder(mo), to_morder(fmo), a, c, v);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a32 __tsan_atomic32_compare_exchange_val(volatile a32 *a, a32 c, a32 v, int mo,
!                                          int fmo) {
!   return AtomicImpl<OpCAS>(to_morder(mo), to_morder(fmo), a, c, v);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! a64 __tsan_atomic64_compare_exchange_val(volatile a64 *a, a64 c, a64 v, int mo,
!                                          int fmo) {
!   return AtomicImpl<OpCAS>(to_morder(mo), to_morder(fmo), a, c, v);
  }
  
! #  if __TSAN_HAS_INT128
  SANITIZER_INTERFACE_ATTRIBUTE
  a128 __tsan_atomic128_compare_exchange_val(volatile a128 *a, a128 c, a128 v,
!                                            int mo, int fmo) {
!   return AtomicImpl<OpCAS>(to_morder(mo), to_morder(fmo), a, c, v);
  }
! #  endif
  
  SANITIZER_INTERFACE_ATTRIBUTE
! void __tsan_atomic_thread_fence(int mo) {
!   return AtomicImpl<OpFence>(to_morder(mo));
! }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! void __tsan_atomic_signal_fence(int mo) {}
  }  // extern "C"
  
  #else  // #if !SANITIZER_GO
  
  // Go
  
! template <class Op, class... Types>
! void AtomicGo(ThreadState *thr, uptr cpc, uptr pc, Types... args) {
!   if (thr->ignore_sync) {
!     (void)Op::NoTsanAtomic(args...);
!   } else {
!     FuncEntry(thr, cpc);
!     (void)Op::Atomic(thr, pc, args...);
!     FuncExit(thr);
!   }
! }
  
! template <class Op, class... Types>
! auto AtomicGoRet(ThreadState *thr, uptr cpc, uptr pc, Types... args) {
!   if (thr->ignore_sync) {
!     return Op::NoTsanAtomic(args...);
!   } else {
!     FuncEntry(thr, cpc);
!     auto ret = Op::Atomic(thr, pc, args...);
!     FuncExit(thr);
!     return ret;
!   }
! }
  
  extern "C" {
  SANITIZER_INTERFACE_ATTRIBUTE
  void __tsan_go_atomic32_load(ThreadState *thr, uptr cpc, uptr pc, u8 *a) {
!   *(a32 *)(a + 8) = AtomicGoRet<OpLoad>(thr, cpc, pc, mo_acquire, *(a32 **)a);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
  void __tsan_go_atomic64_load(ThreadState *thr, uptr cpc, uptr pc, u8 *a) {
!   *(a64 *)(a + 8) = AtomicGoRet<OpLoad>(thr, cpc, pc, mo_acquire, *(a64 **)a);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
  void __tsan_go_atomic32_store(ThreadState *thr, uptr cpc, uptr pc, u8 *a) {
!   AtomicGo<OpStore>(thr, cpc, pc, mo_release, *(a32 **)a, *(a32 *)(a + 8));
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
  void __tsan_go_atomic64_store(ThreadState *thr, uptr cpc, uptr pc, u8 *a) {
!   AtomicGo<OpStore>(thr, cpc, pc, mo_release, *(a64 **)a, *(a64 *)(a + 8));
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
  void __tsan_go_atomic32_fetch_add(ThreadState *thr, uptr cpc, uptr pc, u8 *a) {
!   *(a32 *)(a + 16) = AtomicGoRet<OpFetchAdd>(thr, cpc, pc, mo_acq_rel,
!                                              *(a32 **)a, *(a32 *)(a + 8));
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
  void __tsan_go_atomic64_fetch_add(ThreadState *thr, uptr cpc, uptr pc, u8 *a) {
!   *(a64 *)(a + 16) = AtomicGoRet<OpFetchAdd>(thr, cpc, pc, mo_acq_rel,
!                                              *(a64 **)a, *(a64 *)(a + 8));
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
  void __tsan_go_atomic32_fetch_and(ThreadState *thr, uptr cpc, uptr pc, u8 *a) {
!   *(a32 *)(a + 16) = AtomicGoRet<OpFetchAnd>(thr, cpc, pc, mo_acq_rel,
!                                              *(a32 **)a, *(a32 *)(a + 8));
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
  void __tsan_go_atomic64_fetch_and(ThreadState *thr, uptr cpc, uptr pc, u8 *a) {
!   *(a64 *)(a + 16) = AtomicGoRet<OpFetchAnd>(thr, cpc, pc, mo_acq_rel,
!                                              *(a64 **)a, *(a64 *)(a + 8));
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
  void __tsan_go_atomic32_fetch_or(ThreadState *thr, uptr cpc, uptr pc, u8 *a) {
!   *(a32 *)(a + 16) = AtomicGoRet<OpFetchOr>(thr, cpc, pc, mo_acq_rel,
!                                             *(a32 **)a, *(a32 *)(a + 8));
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
  void __tsan_go_atomic64_fetch_or(ThreadState *thr, uptr cpc, uptr pc, u8 *a) {
!   *(a64 *)(a + 16) = AtomicGoRet<OpFetchOr>(thr, cpc, pc, mo_acq_rel,
!                                             *(a64 **)a, *(a64 *)(a + 8));
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
  void __tsan_go_atomic32_exchange(ThreadState *thr, uptr cpc, uptr pc, u8 *a) {
!   *(a32 *)(a + 16) = AtomicGoRet<OpExchange>(thr, cpc, pc, mo_acq_rel,
!                                              *(a32 **)a, *(a32 *)(a + 8));
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
  void __tsan_go_atomic64_exchange(ThreadState *thr, uptr cpc, uptr pc, u8 *a) {
!   *(a64 *)(a + 16) = AtomicGoRet<OpExchange>(thr, cpc, pc, mo_acq_rel,
!                                              *(a64 **)a, *(a64 *)(a + 8));
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! void __tsan_go_atomic32_compare_exchange(ThreadState *thr, uptr cpc, uptr pc,
!                                          u8 *a) {
!   a32 cmp = *(a32 *)(a + 8);
!   a32 cur = AtomicGoRet<OpCAS>(thr, cpc, pc, mo_acq_rel, mo_acquire, *(a32 **)a,
!                                cmp, *(a32 *)(a + 12));
!   *(bool *)(a + 16) = (cur == cmp);
  }
  
  SANITIZER_INTERFACE_ATTRIBUTE
! void __tsan_go_atomic64_compare_exchange(ThreadState *thr, uptr cpc, uptr pc,
!                                          u8 *a) {
!   a64 cmp = *(a64 *)(a + 8);
!   a64 cur = AtomicGoRet<OpCAS>(thr, cpc, pc, mo_acq_rel, mo_acquire, *(a64 **)a,
!                                cmp, *(a64 *)(a + 16));
!   *(bool *)(a + 24) = (cur == cmp);
  }
  }  // extern "C"
  #endif  // #if !SANITIZER_GO
diff -Nrcpad gcc-16-20251130/libsanitizer/tsan/tsan_interface_java.cpp gcc-16-20251207/libsanitizer/tsan/tsan_interface_java.cpp
*** gcc-16-20251130/libsanitizer/tsan/tsan_interface_java.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/tsan/tsan_interface_java.cpp	Sun Dec  7 22:32:18 2025
*************** void __tsan_java_move(jptr src, jptr dst
*** 122,128 ****
    DCHECK_GE(dst, jctx->heap_begin);
    DCHECK_LE(dst + size, jctx->heap_begin + jctx->heap_size);
    DCHECK_NE(dst, src);
-   DCHECK_NE(size, 0);
  
    // Assuming it's not running concurrently with threads that do
    // memory accesses and mutex operations (stop-the-world phase).
--- 122,127 ----
diff -Nrcpad gcc-16-20251130/libsanitizer/tsan/tsan_malloc_mac.cpp gcc-16-20251207/libsanitizer/tsan/tsan_malloc_mac.cpp
*** gcc-16-20251130/libsanitizer/tsan/tsan_malloc_mac.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/tsan/tsan_malloc_mac.cpp	Sun Dec  7 22:32:18 2025
*************** using namespace __tsan;
*** 73,87 ****
    invoke_free_hook(ptr);                                     \
    SCOPED_INTERCEPTOR_RAW(free, ptr);                         \
    user_free(thr, pc, ptr)
! #define COMMON_MALLOC_SIZE(ptr) uptr size = user_alloc_usable_size(ptr);
! #define COMMON_MALLOC_FILL_STATS(zone, stats)
! #define COMMON_MALLOC_REPORT_UNKNOWN_REALLOC(ptr, zone_ptr, zone_name) \
!   (void)zone_name; \
!   Report("mz_realloc(%p) -- attempting to realloc unallocated memory.\n", ptr);
! #define COMMON_MALLOC_NAMESPACE __tsan
! #define COMMON_MALLOC_HAS_ZONE_ENUMERATOR 0
! #define COMMON_MALLOC_HAS_EXTRA_INTROSPECTION_INIT 0
  
! #include "sanitizer_common/sanitizer_malloc_mac.inc"
  
  #endif
--- 73,91 ----
    invoke_free_hook(ptr);                                     \
    SCOPED_INTERCEPTOR_RAW(free, ptr);                         \
    user_free(thr, pc, ptr)
! #  define COMMON_MALLOC_FREE_SIZED(ptr, size) COMMON_MALLOC_FREE(ptr)
! #  define COMMON_MALLOC_FREE_ALIGNED_SIZED(ptr, alignment, size) \
!     COMMON_MALLOC_FREE(ptr)
! #  define COMMON_MALLOC_SIZE(ptr) uptr size = user_alloc_usable_size(ptr);
! #  define COMMON_MALLOC_FILL_STATS(zone, stats)
! #  define COMMON_MALLOC_REPORT_UNKNOWN_REALLOC(ptr, zone_ptr, zone_name)    \
!     (void)zone_name;                                                        \
!     Report("mz_realloc(%p) -- attempting to realloc unallocated memory.\n", \
!            ptr);
! #  define COMMON_MALLOC_NAMESPACE __tsan
! #  define COMMON_MALLOC_HAS_ZONE_ENUMERATOR 0
! #  define COMMON_MALLOC_HAS_EXTRA_INTROSPECTION_INIT 0
  
! #  include "sanitizer_common/sanitizer_malloc_mac.inc"
  
  #endif
diff -Nrcpad gcc-16-20251130/libsanitizer/tsan/tsan_mman.cpp gcc-16-20251207/libsanitizer/tsan/tsan_mman.cpp
*** gcc-16-20251130/libsanitizer/tsan/tsan_mman.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/tsan/tsan_mman.cpp	Sun Dec  7 22:32:18 2025
*************** static void SignalUnsafeCall(ThreadState
*** 182,191 ****
    ObtainCurrentStack(thr, pc, &stack);
    if (IsFiredSuppression(ctx, ReportTypeSignalUnsafe, stack))
      return;
!   ThreadRegistryLock l(&ctx->thread_registry);
!   ScopedReport rep(ReportTypeSignalUnsafe);
!   rep.AddStack(stack, true);
!   OutputReport(thr, rep);
  }
  
  
--- 182,205 ----
    ObtainCurrentStack(thr, pc, &stack);
    if (IsFiredSuppression(ctx, ReportTypeSignalUnsafe, stack))
      return;
!   // Use alloca, because malloc during signal handling deadlocks
!   ScopedReport *rep = (ScopedReport *)__builtin_alloca(sizeof(ScopedReport));
!   // Take a new scope as Apple platforms require the below locks released
!   // before symbolizing in order to avoid a deadlock
!   {
!     ThreadRegistryLock l(&ctx->thread_registry);
!     new (rep) ScopedReport(ReportTypeSignalUnsafe);
!     rep->AddStack(stack, true);
! #if SANITIZER_APPLE
!   }  // Close this scope to release the locks
! #endif
!     OutputReport(thr, *rep);
! 
!     // Need to manually destroy this because we used placement new to allocate
!     rep->~ScopedReport();
! #if !SANITIZER_APPLE
!   }
! #endif
  }
  
  
diff -Nrcpad gcc-16-20251130/libsanitizer/tsan/tsan_platform.h gcc-16-20251207/libsanitizer/tsan/tsan_platform.h
*** gcc-16-20251130/libsanitizer/tsan/tsan_platform.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/tsan/tsan_platform.h	Sun Dec  7 22:32:18 2025
*************** struct MappingGoMips64_47 {
*** 681,686 ****
--- 681,739 ----
    static const uptr kShadowAdd = 0x200000000000ull;
  };
  
+ /* Go on linux/riscv64 (39-bit VMA)
+ 0000 0001 0000 - 000f 0000 0000: executable and heap (60 GiB)
+ 000f 0000 0000 - 0010 0000 0000: -
+ 0010 0000 0000 - 0030 0000 0000: shadow - 128 GiB ( ~ 2 * app)
+ 0030 0000 0000 - 0038 0000 0000: metainfo - 32 GiB ( ~ 0.5 * app)
+ 0038 0000 0000 - 0040 0000 0000: -
+ */
+ struct MappingGoRiscv64_39 {
+   static const uptr kMetaShadowBeg = 0x003000000000ull;
+   static const uptr kMetaShadowEnd = 0x003800000000ull;
+   static const uptr kShadowBeg = 0x001000000000ull;
+   static const uptr kShadowEnd = 0x003000000000ull;
+   static const uptr kLoAppMemBeg = 0x000000010000ull;
+   static const uptr kLoAppMemEnd = 0x000f00000000ull;
+   static const uptr kMidAppMemBeg = 0;
+   static const uptr kMidAppMemEnd = 0;
+   static const uptr kHiAppMemBeg = 0;
+   static const uptr kHiAppMemEnd = 0;
+   static const uptr kHeapMemBeg = 0;
+   static const uptr kHeapMemEnd = 0;
+   static const uptr kVdsoBeg = 0;
+   static const uptr kShadowMsk = 0;
+   static const uptr kShadowXor = 0;
+   static const uptr kShadowAdd = 0x001000000000ull;
+ };
+ 
+ /* Go on linux/riscv64 (48-bit VMA)
+ 0000 0001 0000 - 00e0 0000 0000: executable and heap (896 GiB)
+ 00e0 0000 0000 - 2000 0000 0000: -
+ 2000 0000 0000 - 2400 0000 0000: shadow - 4 TiB ( ~ 4 * app)
+ 2400 0000 0000 - 3000 0000 0000: -
+ 3000 0000 0000 - 3100 0000 0000: metainfo - 1 TiB ( ~ 1 * app)
+ 3100 0000 0000 - 8000 0000 0000: -
+ */
+ struct MappingGoRiscv64_48 {
+   static const uptr kMetaShadowBeg = 0x300000000000ull;
+   static const uptr kMetaShadowEnd = 0x310000000000ull;
+   static const uptr kShadowBeg = 0x200000000000ull;
+   static const uptr kShadowEnd = 0x240000000000ull;
+   static const uptr kLoAppMemBeg = 0x000000010000ull;
+   static const uptr kLoAppMemEnd = 0x00e000000000ull;
+   static const uptr kMidAppMemBeg = 0;
+   static const uptr kMidAppMemEnd = 0;
+   static const uptr kHiAppMemBeg = 0;
+   static const uptr kHiAppMemEnd = 0;
+   static const uptr kHeapMemBeg = 0;
+   static const uptr kHeapMemEnd = 0;
+   static const uptr kVdsoBeg = 0;
+   static const uptr kShadowMsk = 0;
+   static const uptr kShadowXor = 0;
+   static const uptr kShadowAdd = 0x200000000000ull;
+ };
+ 
  /*
  Go on linux/s390x
  0000 0000 1000 - 1000 0000 0000: executable and heap - 16 TiB
*************** ALWAYS_INLINE auto SelectMapping(Arg arg
*** 728,733 ****
--- 781,793 ----
    return Func::template Apply<MappingGoAarch64>(arg);
  #  elif defined(__loongarch_lp64)
    return Func::template Apply<MappingGoLoongArch64_47>(arg);
+ #  elif SANITIZER_RISCV64
+   switch (vmaSize) {
+     case 39:
+       return Func::template Apply<MappingGoRiscv64_39>(arg);
+     case 48:
+       return Func::template Apply<MappingGoRiscv64_48>(arg);
+   }
  #  elif SANITIZER_WINDOWS
    return Func::template Apply<MappingGoWindows>(arg);
  #  else
*************** void ForEachMapping() {
*** 798,803 ****
--- 858,865 ----
    Func::template Apply<MappingGoAarch64>();
    Func::template Apply<MappingGoLoongArch64_47>();
    Func::template Apply<MappingGoMips64_47>();
+   Func::template Apply<MappingGoRiscv64_39>();
+   Func::template Apply<MappingGoRiscv64_48>();
    Func::template Apply<MappingGoS390x>();
  }
  
*************** bool IsAppMem(uptr mem) { return SelectM
*** 901,907 ****
  struct IsShadowMemImpl {
    template <typename Mapping>
    static bool Apply(uptr mem) {
!     return mem >= Mapping::kShadowBeg && mem <= Mapping::kShadowEnd;
    }
  };
  
--- 963,969 ----
  struct IsShadowMemImpl {
    template <typename Mapping>
    static bool Apply(uptr mem) {
!     return mem >= Mapping::kShadowBeg && mem < Mapping::kShadowEnd;
    }
  };
  
*************** bool IsShadowMem(RawShadow *p) {
*** 913,919 ****
  struct IsMetaMemImpl {
    template <typename Mapping>
    static bool Apply(uptr mem) {
!     return mem >= Mapping::kMetaShadowBeg && mem <= Mapping::kMetaShadowEnd;
    }
  };
  
--- 975,981 ----
  struct IsMetaMemImpl {
    template <typename Mapping>
    static bool Apply(uptr mem) {
!     return mem >= Mapping::kMetaShadowBeg && mem < Mapping::kMetaShadowEnd;
    }
  };
  
diff -Nrcpad gcc-16-20251130/libsanitizer/tsan/tsan_platform_linux.cpp gcc-16-20251207/libsanitizer/tsan/tsan_platform_linux.cpp
*** gcc-16-20251130/libsanitizer/tsan/tsan_platform_linux.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/tsan/tsan_platform_linux.cpp	Sun Dec  7 22:32:18 2025
*************** static void ReExecIfNeeded(bool ignore_h
*** 259,265 ****
              "WARNING: Program is run with randomized virtual address "
              "space, which wouldn't work with ThreadSanitizer on Android.\n"
              "Re-execing with fixed virtual address space.\n");
!     CHECK_NE(personality(old_personality | ADDR_NO_RANDOMIZE), -1);
      reexec = true;
    }
  #      endif
--- 259,273 ----
              "WARNING: Program is run with randomized virtual address "
              "space, which wouldn't work with ThreadSanitizer on Android.\n"
              "Re-execing with fixed virtual address space.\n");
! 
!     if (personality(old_personality | ADDR_NO_RANDOMIZE) == -1) {
!       Printf(
!           "FATAL: ThreadSanitizer: unable to disable ASLR (perhaps "
!           "sandboxing is enabled?).\n");
!       Printf("FATAL: Please rerun without sandboxing and/or ASLR.\n");
!       Die();
!     }
! 
      reexec = true;
    }
  #      endif
*************** static void ReExecIfNeeded(bool ignore_h
*** 287,293 ****
                "possibly due to high-entropy ASLR.\n"
                "Re-execing with fixed virtual address space.\n"
                "N.B. reducing ASLR entropy is preferable.\n");
!       CHECK_NE(personality(old_personality | ADDR_NO_RANDOMIZE), -1);
        reexec = true;
      } else {
        Printf(
--- 295,312 ----
                "possibly due to high-entropy ASLR.\n"
                "Re-execing with fixed virtual address space.\n"
                "N.B. reducing ASLR entropy is preferable.\n");
! 
!       if (personality(old_personality | ADDR_NO_RANDOMIZE) == -1) {
!         Printf(
!             "FATAL: ThreadSanitizer: encountered an incompatible memory "
!             "layout but was unable to disable ASLR (perhaps sandboxing is "
!             "enabled?).\n");
!         Printf(
!             "FATAL: Please rerun with lower ASLR entropy, ASLR disabled, "
!             "and/or sandboxing disabled.\n");
!         Die();
!       }
! 
        reexec = true;
      } else {
        Printf(
*************** void InitializePlatformEarly() {
*** 373,378 ****
--- 392,403 ----
      Printf("FATAL: Found %zd - Supported 39 and 48\n", vmaSize);
      Die();
    }
+ #    else
+   if (vmaSize != 39 && vmaSize != 48) {
+     Printf("FATAL: ThreadSanitizer: unsupported VMA range\n");
+     Printf("FATAL: Found %zd - Supported 39 and 48\n", vmaSize);
+     Die();
+   }
  #    endif
  #  endif
  
*************** void InitializePlatform() {
*** 390,396 ****
    // is not compiled with -pie.
  #if !SANITIZER_GO
    {
! #    if SANITIZER_LINUX && (defined(__aarch64__) || defined(__loongarch_lp64))
      // Initialize the xor key used in {sig}{set,long}jump.
      InitializeLongjmpXorKey();
  #    endif
--- 415,421 ----
    // is not compiled with -pie.
  #if !SANITIZER_GO
    {
! #    if INIT_LONGJMP_XOR_KEY
      // Initialize the xor key used in {sig}{set,long}jump.
      InitializeLongjmpXorKey();
  #    endif
*************** int ExtractRecvmsgFDs(void *msgp, int *f
*** 461,468 ****
  
  // Reverse operation of libc stack pointer mangling
  static uptr UnmangleLongJmpSp(uptr mangled_sp) {
! #if defined(__x86_64__)
! # if SANITIZER_LINUX
    // Reverse of:
    //   xor  %fs:0x30, %rsi
    //   rol  $0x11, %rsi
--- 486,505 ----
  
  // Reverse operation of libc stack pointer mangling
  static uptr UnmangleLongJmpSp(uptr mangled_sp) {
! #    if SANITIZER_ANDROID && INIT_LONGJMP_XOR_KEY
!   if (longjmp_xor_key == 0) {
!     // bionic libc initialization process: __libc_init_globals ->
!     // __libc_init_vdso (calls strcmp) -> __libc_init_setjmp_cookie. strcmp is
!     // intercepted by TSan, so during TSan initialization the setjmp_cookie
!     // remains uninitialized. On Android, longjmp_xor_key must be set on first
!     // use.
!     InitializeLongjmpXorKey();
!     CHECK_NE(longjmp_xor_key, 0);
!   }
! #    endif
! 
! #    if defined(__x86_64__)
! #      if SANITIZER_LINUX
    // Reverse of:
    //   xor  %fs:0x30, %rsi
    //   rol  $0x11, %rsi
*************** static uptr UnmangleLongJmpSp(uptr mangl
*** 517,529 ****
  # else
  #  define LONG_JMP_SP_ENV_SLOT 2
  # endif
! #elif SANITIZER_LINUX
! # ifdef __aarch64__
! #  define LONG_JMP_SP_ENV_SLOT 13
! # elif defined(__loongarch__)
! #  define LONG_JMP_SP_ENV_SLOT 1
! # elif defined(__mips64)
! #  define LONG_JMP_SP_ENV_SLOT 1
  #      elif SANITIZER_RISCV64
  #        define LONG_JMP_SP_ENV_SLOT 13
  #      elif defined(__s390x__)
--- 554,576 ----
  # else
  #  define LONG_JMP_SP_ENV_SLOT 2
  # endif
! #    elif SANITIZER_ANDROID
! #      ifdef __aarch64__
! #        define LONG_JMP_SP_ENV_SLOT 3
! #      elif SANITIZER_RISCV64
! #        define LONG_JMP_SP_ENV_SLOT 3
! #      elif defined(__x86_64__)
! #        define LONG_JMP_SP_ENV_SLOT 6
! #      else
! #        error unsupported
! #      endif
! #    elif SANITIZER_LINUX
! #      ifdef __aarch64__
! #        define LONG_JMP_SP_ENV_SLOT 13
! #      elif defined(__loongarch__)
! #        define LONG_JMP_SP_ENV_SLOT 1
! #      elif defined(__mips64)
! #        define LONG_JMP_SP_ENV_SLOT 1
  #      elif SANITIZER_RISCV64
  #        define LONG_JMP_SP_ENV_SLOT 13
  #      elif defined(__s390x__)
*************** static uptr UnmangleLongJmpSp(uptr mangl
*** 531,537 ****
  #      else
  #        define LONG_JMP_SP_ENV_SLOT 6
  #      endif
! #endif
  
  uptr ExtractLongJmpSp(uptr *env) {
    uptr mangled_sp = env[LONG_JMP_SP_ENV_SLOT];
--- 578,584 ----
  #      else
  #        define LONG_JMP_SP_ENV_SLOT 6
  #      endif
! #    endif
  
  uptr ExtractLongJmpSp(uptr *env) {
    uptr mangled_sp = env[LONG_JMP_SP_ENV_SLOT];
*************** ThreadState *cur_thread() {
*** 628,634 ****
      }
      CHECK_EQ(0, internal_sigprocmask(SIG_SETMASK, &oldset, nullptr));
    }
!   return thr;
  }
  
  void set_cur_thread(ThreadState *thr) {
--- 675,687 ----
      }
      CHECK_EQ(0, internal_sigprocmask(SIG_SETMASK, &oldset, nullptr));
    }
! 
!   // Skia calls mallopt(M_THREAD_DISABLE_MEM_INIT, 1), which sets the least
!   // significant bit of TLS_SLOT_SANITIZER to 1. Scudo allocator uses this bit
!   // as a flag to disable memory initialization. This is a workaround to get the
!   // correct ThreadState pointer.
!   uptr addr = reinterpret_cast<uptr>(thr);
!   return reinterpret_cast<ThreadState*>(addr & ~1ULL);
  }
  
  void set_cur_thread(ThreadState *thr) {
diff -Nrcpad gcc-16-20251130/libsanitizer/tsan/tsan_platform_mac.cpp gcc-16-20251207/libsanitizer/tsan/tsan_platform_mac.cpp
*** gcc-16-20251130/libsanitizer/tsan/tsan_platform_mac.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/tsan/tsan_platform_mac.cpp	Sun Dec  7 22:32:18 2025
*************** static void ThreadTerminateCallback(uptr
*** 226,234 ****
  void InitializePlatformEarly() {
  #  if !SANITIZER_GO && SANITIZER_IOS
    uptr max_vm = GetMaxUserVirtualAddress() + 1;
!   if (max_vm != HiAppMemEnd()) {
!     Printf("ThreadSanitizer: unsupported vm address limit %p, expected %p.\n",
!            (void *)max_vm, (void *)HiAppMemEnd());
      Die();
    }
  #endif
--- 226,245 ----
  void InitializePlatformEarly() {
  #  if !SANITIZER_GO && SANITIZER_IOS
    uptr max_vm = GetMaxUserVirtualAddress() + 1;
!   if (max_vm < HiAppMemEnd()) {
!     Report(
!         "ThreadSanitizer: Unsupported virtual memory layout:\n\tVM address "
!         "limit = %p\n\tExpected %p.\n",
!         (void*)max_vm, (void*)HiAppMemEnd());
!     Die();
!   }
!   // In some configurations, the max_vm is expanded, but much of this space is
!   // already mapped. TSAN will not work in this configuration.
!   if (!MemoryRangeIsAvailable(HiAppMemEnd() - 1, HiAppMemEnd())) {
!     Report(
!         "ThreadSanitizer: Unsupported virtual memory layout: Address %p is "
!         "already mapped.\n",
!         (void*)(HiAppMemEnd() - 1));
      Die();
    }
  #endif
*************** void InitializePlatform() {
*** 248,254 ****
--- 259,267 ----
  
    ThreadEventCallbacks callbacks = {
        .create = ThreadCreateCallback,
+       .start = nullptr,
        .terminate = ThreadTerminateCallback,
+       .destroy = nullptr,
    };
    InstallPthreadIntrospectionHook(callbacks);
  #endif
diff -Nrcpad gcc-16-20251130/libsanitizer/tsan/tsan_report.h gcc-16-20251207/libsanitizer/tsan/tsan_report.h
*** gcc-16-20251130/libsanitizer/tsan/tsan_report.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/tsan/tsan_report.h	Sun Dec  7 22:32:18 2025
***************
*** 12,17 ****
--- 12,19 ----
  #ifndef TSAN_REPORT_H
  #define TSAN_REPORT_H
  
+ #include "sanitizer_common/sanitizer_internal_defs.h"
+ #include "sanitizer_common/sanitizer_stacktrace.h"
  #include "sanitizer_common/sanitizer_symbolizer.h"
  #include "sanitizer_common/sanitizer_thread_registry.h"
  #include "sanitizer_common/sanitizer_vector.h"
*************** struct ReportMop {
*** 56,61 ****
--- 58,64 ----
    bool atomic;
    uptr external_tag;
    Vector<ReportMopMutex> mset;
+   StackTrace stack_trace;
    ReportStack *stack;
  
    ReportMop();
*************** struct ReportLocation {
*** 79,103 ****
    int fd = 0;
    bool fd_closed = false;
    bool suppressable = false;
    ReportStack *stack = nullptr;
  };
  
  struct ReportThread {
    Tid id;
!   tid_t os_id;
    bool running;
    ThreadType thread_type;
    char *name;
    Tid parent_tid;
    ReportStack *stack;
  };
  
  struct ReportMutex {
    int id;
    uptr addr;
    ReportStack *stack;
  };
  
  class ReportDesc {
   public:
    ReportType typ;
--- 82,115 ----
    int fd = 0;
    bool fd_closed = false;
    bool suppressable = false;
+   StackID stack_id = 0;
    ReportStack *stack = nullptr;
  };
  
  struct ReportThread {
    Tid id;
!   ThreadID os_id;
    bool running;
    ThreadType thread_type;
    char *name;
    Tid parent_tid;
+   StackID stack_id;
    ReportStack *stack;
+   bool suppressable;
  };
  
  struct ReportMutex {
    int id;
    uptr addr;
+   StackID stack_id;
    ReportStack *stack;
  };
  
+ struct AddedLocationAddr {
+   uptr addr;
+   usize locs_idx;
+ };
+ 
  class ReportDesc {
   public:
    ReportType typ;
*************** class ReportDesc {
*** 105,110 ****
--- 117,123 ----
    Vector<ReportStack*> stacks;
    Vector<ReportMop*> mops;
    Vector<ReportLocation*> locs;
+   Vector<AddedLocationAddr> added_location_addrs;
    Vector<ReportMutex*> mutexes;
    Vector<ReportThread*> threads;
    Vector<Tid> unique_tids;
diff -Nrcpad gcc-16-20251130/libsanitizer/tsan/tsan_rtl.cpp gcc-16-20251207/libsanitizer/tsan/tsan_rtl.cpp
*** gcc-16-20251130/libsanitizer/tsan/tsan_rtl.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/tsan/tsan_rtl.cpp	Sun Dec  7 22:32:18 2025
*************** SANITIZER_WEAK_DEFAULT_IMPL
*** 40,45 ****
--- 40,52 ----
  void __tsan_test_only_on_fork() {}
  #endif
  
+ #if SANITIZER_APPLE && !SANITIZER_GO
+ // Override weak symbol from sanitizer_common
+ extern void __tsan_set_in_internal_write_call(bool value) {
+   __tsan::cur_thread_init()->in_internal_write_call = value;
+ }
+ #endif
+ 
  namespace __tsan {
  
  #if !SANITIZER_GO
*************** static bool IsValidMmapRange(uptr addr,
*** 566,582 ****
    return false;
  }
  
! void UnmapShadow(ThreadState *thr, uptr addr, uptr size) {
    if (size == 0 || !IsValidMmapRange(addr, size))
      return;
!   DontNeedShadowFor(addr, size);
    ScopedGlobalProcessor sgp;
    SlotLocker locker(thr, true);
!   ctx->metamap.ResetRange(thr->proc(), addr, size, true);
  }
  #endif
  
  void MapShadow(uptr addr, uptr size) {
    // Ensure thead registry lock held, so as to synchronize
    // with DoReset, which also access the mapped_shadow_* ctxt fields.
    ThreadRegistryLock lock0(&ctx->thread_registry);
--- 573,604 ----
    return false;
  }
  
! void UnmapShadow(ThreadState* thr, uptr addr, uptr size) {
    if (size == 0 || !IsValidMmapRange(addr, size))
      return;
!   // unmap shadow is related to semantic of mmap/munmap, so we
!   // should clear the whole shadow range, including the tail shadow
!   // while addr + size % kShadowCell != 0.
!   uptr rounded_size_shadow = RoundUp(addr + size, kShadowCell) - addr;
!   DontNeedShadowFor(addr, rounded_size_shadow);
    ScopedGlobalProcessor sgp;
    SlotLocker locker(thr, true);
!   uptr rounded_size_meta = RoundUp(addr + size, kMetaShadowCell) - addr;
!   ctx->metamap.ResetRange(thr->proc(), addr, rounded_size_meta, true);
  }
  #endif
  
  void MapShadow(uptr addr, uptr size) {
+   // Although named MapShadow, this function's semantic is unrelated to
+   // UnmapShadow. This function currently only used for Go's lazy allocation
+   // of shadow, whose targets are program section (e.g., bss, data, etc.).
+   // Therefore, we can guarantee that the addr and size align to kShadowCell
+   // and kMetaShadowCell by the following assertions.
+   DCHECK_EQ(addr % kShadowCell, 0);
+   DCHECK_EQ(size % kShadowCell, 0);
+   DCHECK_EQ(addr % kMetaShadowCell, 0);
+   DCHECK_EQ(size % kMetaShadowCell, 0);
+ 
    // Ensure thead registry lock held, so as to synchronize
    // with DoReset, which also access the mapped_shadow_* ctxt fields.
    ThreadRegistryLock lock0(&ctx->thread_registry);
*************** void MapShadow(uptr addr, uptr size) {
*** 624,629 ****
--- 646,652 ----
    static uptr mapped_meta_end = 0;
    uptr meta_begin = (uptr)MemToMeta(addr);
    uptr meta_end = (uptr)MemToMeta(addr + size);
+   // Windows wants 64K alignment.
    meta_begin = RoundDownTo(meta_begin, 64 << 10);
    meta_end = RoundUpTo(meta_end, 64 << 10);
    if (!data_mapped) {
*************** void MapShadow(uptr addr, uptr size) {
*** 634,642 ****
        Die();
    } else {
      // Mapping continuous heap.
-     // Windows wants 64K alignment.
-     meta_begin = RoundDownTo(meta_begin, 64 << 10);
-     meta_end = RoundUpTo(meta_end, 64 << 10);
      CHECK_GT(meta_end, mapped_meta_end);
      if (meta_begin < mapped_meta_end)
        meta_begin = mapped_meta_end;
--- 657,662 ----
*************** void CheckUnwind() {
*** 673,683 ****
    thr->ignore_reads_and_writes++;
    atomic_store_relaxed(&thr->in_signal_handler, 0);
  #endif
!   PrintCurrentStackSlow(StackTrace::GetCurrentPc());
  }
  
  bool is_initialized;
  
  void Initialize(ThreadState *thr) {
    // Thread safe because done before all threads exist.
    if (is_initialized)
--- 693,710 ----
    thr->ignore_reads_and_writes++;
    atomic_store_relaxed(&thr->in_signal_handler, 0);
  #endif
!   PrintCurrentStack(StackTrace::GetCurrentPc(),
!                     common_flags()->fast_unwind_on_fatal);
  }
  
  bool is_initialized;
  
+ // Symbolization indirectly calls dl_iterate_phdr. If a CHECK() fails early on
+ // (prior to the dl_iterate_phdr interceptor setup), resulting in an attempted
+ // symbolization, it will segfault.
+ // dl_iterate_phdr is not intercepted for Android.
+ bool ready_to_symbolize = SANITIZER_ANDROID;
+ 
  void Initialize(ThreadState *thr) {
    // Thread safe because done before all threads exist.
    if (is_initialized)
*************** void ForkChildAfter(ThreadState* thr, up
*** 873,878 ****
--- 900,912 ----
      ThreadIgnoreBegin(thr, pc);
      ThreadIgnoreSyncBegin(thr, pc);
    }
+ 
+ #  if SANITIZER_APPLE && !SANITIZER_GO
+   // This flag can have inheritance disabled - we are the child so act
+   // accordingly
+   if (flags()->lock_during_write == kNoLockDuringWritesCurrentProcess)
+     flags()->lock_during_write = kLockDuringAllWrites;
+ #  endif
  }
  #endif
  
diff -Nrcpad gcc-16-20251130/libsanitizer/tsan/tsan_rtl.h gcc-16-20251207/libsanitizer/tsan/tsan_rtl.h
*** gcc-16-20251130/libsanitizer/tsan/tsan_rtl.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/tsan/tsan_rtl.h	Sun Dec  7 22:32:18 2025
***************
*** 54,66 ****
  
  namespace __tsan {
  
  #if !SANITIZER_GO
  struct MapUnmapCallback;
  #  if defined(__mips64) || defined(__aarch64__) || defined(__loongarch__) || \
        defined(__powerpc__) || SANITIZER_RISCV64
  
  struct AP32 {
!   static const uptr kSpaceBeg = 0;
    static const u64 kSpaceSize = SANITIZER_MMAP_RANGE_SIZE;
    static const uptr kMetadataSize = 0;
    typedef __sanitizer::CompactSizeClassMap SizeClassMap;
--- 54,68 ----
  
  namespace __tsan {
  
+ extern bool ready_to_symbolize;
+ 
  #if !SANITIZER_GO
  struct MapUnmapCallback;
  #  if defined(__mips64) || defined(__aarch64__) || defined(__loongarch__) || \
        defined(__powerpc__) || SANITIZER_RISCV64
  
  struct AP32 {
!   static const uptr kSpaceBeg = SANITIZER_MMAP_BEGIN;
    static const u64 kSpaceSize = SANITIZER_MMAP_RANGE_SIZE;
    static const uptr kMetadataSize = 0;
    typedef __sanitizer::CompactSizeClassMap SizeClassMap;
*************** struct JmpBuf {
*** 98,103 ****
--- 100,106 ----
    uptr sp;
    int int_signal_send;
    bool in_blocking_func;
+   uptr oldset_stack_size;
    uptr in_signal_handler;
    uptr *shadow_stack_pos;
  };
*************** struct alignas(SANITIZER_CACHE_LINE_SIZE
*** 233,238 ****
--- 236,245 ----
  
    const ReportDesc *current_report;
  
+ #if SANITIZER_APPLE && !SANITIZER_GO
+   bool in_internal_write_call;
+ #endif
+ 
    explicit ThreadState(Tid tid);
  };
  
*************** class ScopedReportBase {
*** 417,422 ****
--- 424,430 ----
    void AddSleep(StackID stack_id);
    void SetCount(int count);
    void SetSigNum(int sig);
+   void SymbolizeStackElems(void);
  
    const ReportDesc *GetReport() const;
  
*************** void ForkChildAfter(ThreadState *thr, up
*** 495,501 ****
  
  void ReportRace(ThreadState *thr, RawShadow *shadow_mem, Shadow cur, Shadow old,
                  AccessType typ);
! bool OutputReport(ThreadState *thr, const ScopedReport &srep);
  bool IsFiredSuppression(Context *ctx, ReportType type, StackTrace trace);
  bool IsExpectedReport(uptr addr, uptr size);
  
--- 503,509 ----
  
  void ReportRace(ThreadState *thr, RawShadow *shadow_mem, Shadow cur, Shadow old,
                  AccessType typ);
! bool OutputReport(ThreadState *thr, ScopedReport &srep);
  bool IsFiredSuppression(Context *ctx, ReportType type, StackTrace trace);
  bool IsExpectedReport(uptr addr, uptr size);
  
*************** bool IsExpectedReport(uptr addr, uptr si
*** 514,520 ****
  StackID CurrentStackId(ThreadState *thr, uptr pc);
  ReportStack *SymbolizeStackId(StackID stack_id);
  void PrintCurrentStack(ThreadState *thr, uptr pc);
! void PrintCurrentStackSlow(uptr pc);  // uses libunwind
  MBlock *JavaHeapBlock(uptr addr, uptr *start);
  
  void Initialize(ThreadState *thr);
--- 522,528 ----
  StackID CurrentStackId(ThreadState *thr, uptr pc);
  ReportStack *SymbolizeStackId(StackID stack_id);
  void PrintCurrentStack(ThreadState *thr, uptr pc);
! void PrintCurrentStack(uptr pc, bool fast);  // may uses libunwind
  MBlock *JavaHeapBlock(uptr addr, uptr *start);
  
  void Initialize(ThreadState *thr);
*************** void ThreadIgnoreSyncBegin(ThreadState *
*** 556,562 ****
  void ThreadIgnoreSyncEnd(ThreadState *thr);
  
  Tid ThreadCreate(ThreadState *thr, uptr pc, uptr uid, bool detached);
! void ThreadStart(ThreadState *thr, Tid tid, tid_t os_id,
                   ThreadType thread_type);
  void ThreadFinish(ThreadState *thr);
  Tid ThreadConsumeTid(ThreadState *thr, uptr pc, uptr uid);
--- 564,570 ----
  void ThreadIgnoreSyncEnd(ThreadState *thr);
  
  Tid ThreadCreate(ThreadState *thr, uptr pc, uptr uid, bool detached);
! void ThreadStart(ThreadState *thr, Tid tid, ThreadID os_id,
                   ThreadType thread_type);
  void ThreadFinish(ThreadState *thr);
  Tid ThreadConsumeTid(ThreadState *thr, uptr pc, uptr uid);
diff -Nrcpad gcc-16-20251130/libsanitizer/tsan/tsan_rtl_aarch64.S gcc-16-20251207/libsanitizer/tsan/tsan_rtl_aarch64.S
*** gcc-16-20251130/libsanitizer/tsan/tsan_rtl_aarch64.S	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/tsan/tsan_rtl_aarch64.S	Sun Dec  7 22:32:18 2025
***************
*** 4,13 ****
  #include "sanitizer_common/sanitizer_asm.h"
  #include "builtins/assembly.h"
  
! #if !defined(__APPLE__)
! .section .text
! #else
! .section __TEXT,__text
  .align 3
  #endif
  
--- 4,11 ----
  #include "sanitizer_common/sanitizer_asm.h"
  #include "builtins/assembly.h"
  
! TEXT_SECTION
! #if defined(__APPLE__)
  .align 3
  #endif
  
*************** ASM_SIZE(ASM_SYMBOL_INTERCEPTOR(__sigset
*** 222,227 ****
  
  NO_EXEC_STACK_DIRECTIVE
  
! GNU_PROPERTY_BTI_PAC
  
  #endif
--- 220,225 ----
  
  NO_EXEC_STACK_DIRECTIVE
  
! GNU_PROPERTY_BTI_PAC_GCS
  
  #endif
diff -Nrcpad gcc-16-20251130/libsanitizer/tsan/tsan_rtl_access.cpp gcc-16-20251207/libsanitizer/tsan/tsan_rtl_access.cpp
*** gcc-16-20251130/libsanitizer/tsan/tsan_rtl_access.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/tsan/tsan_rtl_access.cpp	Sun Dec  7 22:32:18 2025
*************** NOINLINE void TraceRestartMemoryAccess(T
*** 419,424 ****
--- 419,429 ----
  
  ALWAYS_INLINE USED void MemoryAccess(ThreadState* thr, uptr pc, uptr addr,
                                       uptr size, AccessType typ) {
+ #if SANITIZER_APPLE && !SANITIZER_GO
+   // Swift symbolizer can be intercepted and deadlock without this
+   if (thr->in_symbolizer)
+     return;
+ #endif
    RawShadow* shadow_mem = MemToShadow(addr);
    UNUSED char memBuf[4][64];
    DPrintf2("#%d: Access: %d@%d %p/%zd typ=0x%x {%s, %s, %s, %s}\n", thr->tid,
*************** SECOND:
*** 523,531 ****
  }
  
  void ShadowSet(RawShadow* p, RawShadow* end, RawShadow v) {
!   DCHECK_LE(p, end);
    DCHECK(IsShadowMem(p));
!   DCHECK(IsShadowMem(end));
    UNUSED const uptr kAlign = kShadowCnt * kShadowSize;
    DCHECK_EQ(reinterpret_cast<uptr>(p) % kAlign, 0);
    DCHECK_EQ(reinterpret_cast<uptr>(end) % kAlign, 0);
--- 528,536 ----
  }
  
  void ShadowSet(RawShadow* p, RawShadow* end, RawShadow v) {
!   DCHECK_LT(p, end);
    DCHECK(IsShadowMem(p));
!   DCHECK(IsShadowMem(end - 1));
    UNUSED const uptr kAlign = kShadowCnt * kShadowSize;
    DCHECK_EQ(reinterpret_cast<uptr>(p) % kAlign, 0);
    DCHECK_EQ(reinterpret_cast<uptr>(end) % kAlign, 0);
*************** static void MemoryRangeSet(uptr addr, up
*** 569,574 ****
--- 574,580 ----
    RawShadow* mid1 =
        Min(end, reinterpret_cast<RawShadow*>(RoundUp(
                     reinterpret_cast<uptr>(begin) + kPageSize / 2, kPageSize)));
+   // begin must < mid1
    ShadowSet(begin, mid1, val);
    // Reset middle part.
    RawShadow* mid2 = RoundDown(end, kPageSize);
*************** static void MemoryRangeSet(uptr addr, up
*** 577,583 ****
        Die();
    }
    // Set the ending.
!   ShadowSet(mid2, end, val);
  }
  
  void MemoryResetRange(ThreadState* thr, uptr pc, uptr addr, uptr size) {
--- 583,592 ----
        Die();
    }
    // Set the ending.
!   if (mid2 < end)
!     ShadowSet(mid2, end, val);
!   else
!     DCHECK_EQ(mid2, end);
  }
  
  void MemoryResetRange(ThreadState* thr, uptr pc, uptr addr, uptr size) {
*************** void MemoryAccessRangeT(ThreadState* thr
*** 669,675 ****
    RawShadow* shadow_mem = MemToShadow(addr);
    DPrintf2("#%d: MemoryAccessRange: @%p %p size=%d is_read=%d\n", thr->tid,
             (void*)pc, (void*)addr, (int)size, is_read);
! 
  #if SANITIZER_DEBUG
    if (!IsAppMem(addr)) {
      Printf("Access to non app mem start: %p\n", (void*)addr);
--- 678,684 ----
    RawShadow* shadow_mem = MemToShadow(addr);
    DPrintf2("#%d: MemoryAccessRange: @%p %p size=%d is_read=%d\n", thr->tid,
             (void*)pc, (void*)addr, (int)size, is_read);
!   DCHECK_NE(size, 0);
  #if SANITIZER_DEBUG
    if (!IsAppMem(addr)) {
      Printf("Access to non app mem start: %p\n", (void*)addr);
*************** void MemoryAccessRangeT(ThreadState* thr
*** 680,699 ****
      DCHECK(IsAppMem(addr + size - 1));
    }
    if (!IsShadowMem(shadow_mem)) {
!     Printf("Bad shadow start addr: %p (%p)\n", shadow_mem, (void*)addr);
      DCHECK(IsShadowMem(shadow_mem));
    }
  
!   RawShadow* shadow_mem_end = reinterpret_cast<RawShadow*>(
!       reinterpret_cast<uptr>(shadow_mem) + size * kShadowMultiplier - 1);
!   if (!IsShadowMem(shadow_mem_end)) {
!     Printf("Bad shadow end addr: %p (%p)\n", shadow_mem_end,
             (void*)(addr + size - 1));
      Printf(
!         "Shadow start addr (ok): %p (%p); size: 0x%zx; kShadowMultiplier: "
!         "%zx\n",
!         shadow_mem, (void*)addr, size, kShadowMultiplier);
!     DCHECK(IsShadowMem(shadow_mem_end));
    }
  #endif
  
--- 689,710 ----
      DCHECK(IsAppMem(addr + size - 1));
    }
    if (!IsShadowMem(shadow_mem)) {
!     Printf("Bad shadow start addr: %p (%p)\n", (void*)shadow_mem, (void*)addr);
      DCHECK(IsShadowMem(shadow_mem));
    }
  
!   uptr rounded_size =
!       (RoundUpTo(addr + size, kShadowCell) - RoundDownTo(addr, kShadowCell));
!   RawShadow* shadow_mem_end =
!       shadow_mem + rounded_size / kShadowCell * kShadowCnt;
!   if (!IsShadowMem(shadow_mem_end - 1)) {
!     Printf("Bad shadow end addr: %p (%p)\n", (void*)(shadow_mem_end - 1),
             (void*)(addr + size - 1));
      Printf(
!         "Shadow start addr (ok): %p (%p); size: 0x%zx; rounded_size: 0x%zx; "
!         "kShadowMultiplier: %zx\n",
!         (void*)shadow_mem, (void*)addr, size, rounded_size, kShadowMultiplier);
!     DCHECK(IsShadowMem(shadow_mem_end - 1));
    }
  #endif
  
diff -Nrcpad gcc-16-20251130/libsanitizer/tsan/tsan_rtl_amd64.S gcc-16-20251207/libsanitizer/tsan/tsan_rtl_amd64.S
*** gcc-16-20251130/libsanitizer/tsan/tsan_rtl_amd64.S	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/tsan/tsan_rtl_amd64.S	Sun Dec  7 22:32:18 2025
***************
*** 3,8 ****
--- 3,10 ----
  
  #include "sanitizer_common/sanitizer_asm.h"
  
+ .att_syntax
+ 
  #if !defined(__APPLE__)
  .section .text
  #else
diff -Nrcpad gcc-16-20251130/libsanitizer/tsan/tsan_rtl_mutex.cpp gcc-16-20251207/libsanitizer/tsan/tsan_rtl_mutex.cpp
*** gcc-16-20251130/libsanitizer/tsan/tsan_rtl_mutex.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/tsan/tsan_rtl_mutex.cpp	Sun Dec  7 22:32:18 2025
***************
*** 11,24 ****
  //===----------------------------------------------------------------------===//
  
  #include <sanitizer_common/sanitizer_deadlock_detector_interface.h>
  #include <sanitizer_common/sanitizer_stackdepot.h>
  
- #include "tsan_rtl.h"
  #include "tsan_flags.h"
! #include "tsan_sync.h"
  #include "tsan_report.h"
  #include "tsan_symbolize.h"
! #include "tsan_platform.h"
  
  namespace __tsan {
  
--- 11,25 ----
  //===----------------------------------------------------------------------===//
  
  #include <sanitizer_common/sanitizer_deadlock_detector_interface.h>
+ #include <sanitizer_common/sanitizer_placement_new.h>
  #include <sanitizer_common/sanitizer_stackdepot.h>
  
  #include "tsan_flags.h"
! #include "tsan_platform.h"
  #include "tsan_report.h"
+ #include "tsan_rtl.h"
  #include "tsan_symbolize.h"
! #include "tsan_sync.h"
  
  namespace __tsan {
  
*************** static void ReportMutexMisuse(ThreadStat
*** 55,68 ****
      return;
    if (!ShouldReport(thr, typ))
      return;
!   ThreadRegistryLock l(&ctx->thread_registry);
!   ScopedReport rep(typ);
!   rep.AddMutex(addr, creation_stack_id);
!   VarSizeStackTrace trace;
!   ObtainCurrentStack(thr, pc, &trace);
!   rep.AddStack(trace, true);
!   rep.AddLocation(addr, 1);
!   OutputReport(thr, rep);
  }
  
  static void RecordMutexLock(ThreadState *thr, uptr pc, uptr addr,
--- 56,83 ----
      return;
    if (!ShouldReport(thr, typ))
      return;
!   // Use alloca, because malloc during signal handling deadlocks
!   ScopedReport *rep = (ScopedReport *)__builtin_alloca(sizeof(ScopedReport));
!   // Take a new scope as Apple platforms require the below locks released
!   // before symbolizing in order to avoid a deadlock
!   {
!     ThreadRegistryLock l(&ctx->thread_registry);
!     new (rep) ScopedReport(typ);
!     rep->AddMutex(addr, creation_stack_id);
!     VarSizeStackTrace trace;
!     ObtainCurrentStack(thr, pc, &trace);
!     rep->AddStack(trace, true);
!     rep->AddLocation(addr, 1);
! #if SANITIZER_APPLE
!   }  // Close this scope to release the locks
! #endif
!     OutputReport(thr, *rep);
! 
!     // Need to manually destroy this because we used placement new to allocate
!     rep->~ScopedReport();
! #if !SANITIZER_APPLE
!   }
! #endif
  }
  
  static void RecordMutexLock(ThreadState *thr, uptr pc, uptr addr,
*************** void AfterSleep(ThreadState *thr, uptr p
*** 528,578 ****
  void ReportDeadlock(ThreadState *thr, uptr pc, DDReport *r) {
    if (r == 0 || !ShouldReport(thr, ReportTypeDeadlock))
      return;
!   ThreadRegistryLock l(&ctx->thread_registry);
!   ScopedReport rep(ReportTypeDeadlock);
!   for (int i = 0; i < r->n; i++) {
!     rep.AddMutex(r->loop[i].mtx_ctx0, r->loop[i].stk[0]);
!     rep.AddUniqueTid((int)r->loop[i].thr_ctx);
!     rep.AddThread((int)r->loop[i].thr_ctx);
!   }
!   uptr dummy_pc = 0x42;
!   for (int i = 0; i < r->n; i++) {
!     for (int j = 0; j < (flags()->second_deadlock_stack ? 2 : 1); j++) {
!       u32 stk = r->loop[i].stk[j];
!       if (stk && stk != kInvalidStackID) {
!         rep.AddStack(StackDepotGet(stk), true);
!       } else {
!         // Sometimes we fail to extract the stack trace (FIXME: investigate),
!         // but we should still produce some stack trace in the report.
!         rep.AddStack(StackTrace(&dummy_pc, 1), true);
        }
      }
    }
!   OutputReport(thr, rep);
  }
  
  void ReportDestroyLocked(ThreadState *thr, uptr pc, uptr addr,
                           FastState last_lock, StackID creation_stack_id) {
!   // We need to lock the slot during RestoreStack because it protects
!   // the slot journal.
!   Lock slot_lock(&ctx->slots[static_cast<uptr>(last_lock.sid())].mtx);
!   ThreadRegistryLock l0(&ctx->thread_registry);
!   Lock slots_lock(&ctx->slot_mtx);
!   ScopedReport rep(ReportTypeMutexDestroyLocked);
!   rep.AddMutex(addr, creation_stack_id);
!   VarSizeStackTrace trace;
!   ObtainCurrentStack(thr, pc, &trace);
!   rep.AddStack(trace, true);
  
!   Tid tid;
!   DynamicMutexSet mset;
!   uptr tag;
!   if (!RestoreStack(EventType::kLock, last_lock.sid(), last_lock.epoch(), addr,
!                     0, kAccessWrite, &tid, &trace, mset, &tag))
!     return;
!   rep.AddStack(trace, true);
!   rep.AddLocation(addr, 1);
!   OutputReport(thr, rep);
  }
  
  }  // namespace __tsan
--- 543,623 ----
  void ReportDeadlock(ThreadState *thr, uptr pc, DDReport *r) {
    if (r == 0 || !ShouldReport(thr, ReportTypeDeadlock))
      return;
!   // Use alloca, because malloc during signal handling deadlocks
!   ScopedReport *rep = (ScopedReport *)__builtin_alloca(sizeof(ScopedReport));
!   // Take a new scope as Apple platforms require the below locks released
!   // before symbolizing in order to avoid a deadlock
!   {
!     ThreadRegistryLock l(&ctx->thread_registry);
!     new (rep) ScopedReport(ReportTypeDeadlock);
!     for (int i = 0; i < r->n; i++) {
!       rep->AddMutex(r->loop[i].mtx_ctx0, r->loop[i].stk[0]);
!       rep->AddUniqueTid((int)r->loop[i].thr_ctx);
!       rep->AddThread((int)r->loop[i].thr_ctx);
!     }
!     uptr dummy_pc = 0x42;
!     for (int i = 0; i < r->n; i++) {
!       for (int j = 0; j < (flags()->second_deadlock_stack ? 2 : 1); j++) {
!         u32 stk = r->loop[i].stk[j];
!         StackTrace stack;
!         if (stk && stk != kInvalidStackID) {
!           stack = StackDepotGet(stk);
!         } else {
!           // Sometimes we fail to extract the stack trace (FIXME: investigate),
!           // but we should still produce some stack trace in the report.
!           stack = StackTrace(&dummy_pc, 1);
!         }
!         rep->AddStack(stack, true);
        }
      }
+ #if SANITIZER_APPLE
+   }  // Close this scope to release the locks
+ #endif
+     OutputReport(thr, *rep);
+ 
+     // Need to manually destroy this because we used placement new to allocate
+     rep->~ScopedReport();
+ #if !SANITIZER_APPLE
    }
! #endif
  }
  
  void ReportDestroyLocked(ThreadState *thr, uptr pc, uptr addr,
                           FastState last_lock, StackID creation_stack_id) {
!   // Use alloca, because malloc during signal handling deadlocks
!   ScopedReport *rep = (ScopedReport *)__builtin_alloca(sizeof(ScopedReport));
!   // Take a new scope as Apple platforms require the below locks released
!   // before symbolizing in order to avoid a deadlock
!   {
!     // We need to lock the slot during RestoreStack because it protects
!     // the slot journal.
!     Lock slot_lock(&ctx->slots[static_cast<uptr>(last_lock.sid())].mtx);
!     ThreadRegistryLock l0(&ctx->thread_registry);
!     Lock slots_lock(&ctx->slot_mtx);
!     new (rep) ScopedReport(ReportTypeMutexDestroyLocked);
!     rep->AddMutex(addr, creation_stack_id);
!     VarSizeStackTrace trace;
!     ObtainCurrentStack(thr, pc, &trace);
!     rep->AddStack(trace, true);
  
!     Tid tid;
!     DynamicMutexSet mset;
!     uptr tag;
!     if (!RestoreStack(EventType::kLock, last_lock.sid(), last_lock.epoch(),
!                       addr, 0, kAccessWrite, &tid, &trace, mset, &tag))
!       return;
!     rep->AddStack(trace, true);
!     rep->AddLocation(addr, 1);
! #if SANITIZER_APPLE
!   }  // Close this scope to release the locks
! #endif
!     OutputReport(thr, *rep);
! 
!     // Need to manually destroy this because we used placement new to allocate
!     rep->~ScopedReport();
! #if !SANITIZER_APPLE
!   }
! #endif
  }
  
  }  // namespace __tsan
diff -Nrcpad gcc-16-20251130/libsanitizer/tsan/tsan_rtl_report.cpp gcc-16-20251207/libsanitizer/tsan/tsan_rtl_report.cpp
*** gcc-16-20251130/libsanitizer/tsan/tsan_rtl_report.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/tsan/tsan_rtl_report.cpp	Sun Dec  7 22:32:18 2025
***************
*** 11,20 ****
--- 11,22 ----
  //===----------------------------------------------------------------------===//
  
  #include "sanitizer_common/sanitizer_common.h"
+ #include "sanitizer_common/sanitizer_internal_defs.h"
  #include "sanitizer_common/sanitizer_libc.h"
  #include "sanitizer_common/sanitizer_placement_new.h"
  #include "sanitizer_common/sanitizer_stackdepot.h"
  #include "sanitizer_common/sanitizer_stacktrace.h"
+ #include "tsan_defs.h"
  #include "tsan_fd.h"
  #include "tsan_flags.h"
  #include "tsan_mman.h"
*************** void ScopedReportBase::AddMemoryAccess(u
*** 187,196 ****
    mop->size = size;
    mop->write = !(typ & kAccessRead);
    mop->atomic = typ & kAccessAtomic;
-   mop->stack = SymbolizeStack(stack);
    mop->external_tag = external_tag;
!   if (mop->stack)
!     mop->stack->suppressable = true;
    for (uptr i = 0; i < mset->Size(); i++) {
      MutexSet::Desc d = mset->Get(i);
      int id = this->AddMutex(d.addr, d.stack_id);
--- 189,196 ----
    mop->size = size;
    mop->write = !(typ & kAccessRead);
    mop->atomic = typ & kAccessAtomic;
    mop->external_tag = external_tag;
!   mop->stack_trace = stack;
    for (uptr i = 0; i < mset->Size(); i++) {
      MutexSet::Desc d = mset->Get(i);
      int id = this->AddMutex(d.addr, d.stack_id);
*************** void ScopedReportBase::AddMemoryAccess(u
*** 199,204 ****
--- 199,254 ----
    }
  }
  
+ void ScopedReportBase::SymbolizeStackElems() {
+   // symbolize memory ops
+   for (usize i = 0, size = rep_->mops.Size(); i < size; i++) {
+     ReportMop *mop = rep_->mops[i];
+     mop->stack = SymbolizeStack(mop->stack_trace);
+     if (mop->stack)
+       mop->stack->suppressable = true;
+   }
+ 
+   // symbolize locations
+   for (usize i = 0, size = rep_->locs.Size(); i < size; i++) {
+     // added locations have a NULL placeholder - don't dereference them
+     if (ReportLocation *loc = rep_->locs[i])
+       loc->stack = SymbolizeStackId(loc->stack_id);
+   }
+ 
+   // symbolize any added locations
+   for (usize i = 0, size = rep_->added_location_addrs.Size(); i < size; i++) {
+     AddedLocationAddr *added_loc = &rep_->added_location_addrs[i];
+     if (ReportLocation *loc = SymbolizeData(added_loc->addr)) {
+       loc->suppressable = true;
+       rep_->locs[added_loc->locs_idx] = loc;
+     }
+   }
+ 
+   // Filter out any added location placeholders that could not be symbolized
+   usize j = 0;
+   for (usize i = 0, size = rep_->locs.Size(); i < size; i++) {
+     if (rep_->locs[i] != nullptr) {
+       rep_->locs[j] = rep_->locs[i];
+       j++;
+     }
+   }
+   rep_->locs.Resize(j);
+ 
+   // symbolize threads
+   for (usize i = 0, size = rep_->threads.Size(); i < size; i++) {
+     ReportThread *rt = rep_->threads[i];
+     rt->stack = SymbolizeStackId(rt->stack_id);
+     if (rt->stack)
+       rt->stack->suppressable = rt->suppressable;
+   }
+ 
+   // symbolize mutexes
+   for (usize i = 0, size = rep_->mutexes.Size(); i < size; i++) {
+     ReportMutex *rm = rep_->mutexes[i];
+     rm->stack = SymbolizeStackId(rm->stack_id);
+   }
+ }
+ 
  void ScopedReportBase::AddUniqueTid(Tid unique_tid) {
    rep_->unique_tids.PushBack(unique_tid);
  }
*************** void ScopedReportBase::AddThread(const T
*** 216,225 ****
    rt->name = internal_strdup(tctx->name);
    rt->parent_tid = tctx->parent_tid;
    rt->thread_type = tctx->thread_type;
!   rt->stack = 0;
!   rt->stack = SymbolizeStackId(tctx->creation_stack_id);
!   if (rt->stack)
!     rt->stack->suppressable = suppressable;
  }
  
  #if !SANITIZER_GO
--- 266,273 ----
    rt->name = internal_strdup(tctx->name);
    rt->parent_tid = tctx->parent_tid;
    rt->thread_type = tctx->thread_type;
!   rt->stack_id = tctx->creation_stack_id;
!   rt->suppressable = suppressable;
  }
  
  #if !SANITIZER_GO
*************** int ScopedReportBase::AddMutex(uptr addr
*** 270,276 ****
    rep_->mutexes.PushBack(rm);
    rm->id = rep_->mutexes.Size() - 1;
    rm->addr = addr;
!   rm->stack = SymbolizeStackId(creation_stack_id);
    return rm->id;
  }
  
--- 318,324 ----
    rep_->mutexes.PushBack(rm);
    rm->id = rep_->mutexes.Size() - 1;
    rm->addr = addr;
!   rm->stack_id = creation_stack_id;
    return rm->id;
  }
  
*************** void ScopedReportBase::AddLocation(uptr
*** 288,294 ****
      loc->fd_closed = closed;
      loc->fd = fd;
      loc->tid = creat_tid;
!     loc->stack = SymbolizeStackId(creat_stack);
      rep_->locs.PushBack(loc);
      AddThread(creat_tid);
      return;
--- 336,342 ----
      loc->fd_closed = closed;
      loc->fd = fd;
      loc->tid = creat_tid;
!     loc->stack_id = creat_stack;
      rep_->locs.PushBack(loc);
      AddThread(creat_tid);
      return;
*************** void ScopedReportBase::AddLocation(uptr
*** 310,316 ****
      loc->heap_chunk_size = b->siz;
      loc->external_tag = b->tag;
      loc->tid = b->tid;
!     loc->stack = SymbolizeStackId(b->stk);
      rep_->locs.PushBack(loc);
      AddThread(b->tid);
      return;
--- 358,364 ----
      loc->heap_chunk_size = b->siz;
      loc->external_tag = b->tag;
      loc->tid = b->tid;
!     loc->stack_id = b->stk;
      rep_->locs.PushBack(loc);
      AddThread(b->tid);
      return;
*************** void ScopedReportBase::AddLocation(uptr
*** 324,334 ****
      AddThread(tctx);
    }
  #endif
!   if (ReportLocation *loc = SymbolizeData(addr)) {
!     loc->suppressable = true;
!     rep_->locs.PushBack(loc);
!     return;
!   }
  }
  
  #if !SANITIZER_GO
--- 372,379 ----
      AddThread(tctx);
    }
  #endif
!   rep_->added_location_addrs.PushBack({addr, rep_->locs.Size()});
!   rep_->locs.PushBack(nullptr);
  }
  
  #if !SANITIZER_GO
*************** static bool HandleRacyStacks(ThreadState
*** 628,638 ****
    return false;
  }
  
! bool OutputReport(ThreadState *thr, const ScopedReport &srep) {
    // These should have been checked in ShouldReport.
    // It's too late to check them here, we have already taken locks.
    CHECK(flags()->report_bugs);
    CHECK(!thr->suppress_reports);
    atomic_store_relaxed(&ctx->last_symbolize_time_ns, NanoTime());
    const ReportDesc *rep = srep.GetReport();
    CHECK_EQ(thr->current_report, nullptr);
--- 673,684 ----
    return false;
  }
  
! bool OutputReport(ThreadState *thr, ScopedReport &srep) {
    // These should have been checked in ShouldReport.
    // It's too late to check them here, we have already taken locks.
    CHECK(flags()->report_bugs);
    CHECK(!thr->suppress_reports);
+   srep.SymbolizeStackElems();
    atomic_store_relaxed(&ctx->last_symbolize_time_ns, NanoTime());
    const ReportDesc *rep = srep.GetReport();
    CHECK_EQ(thr->current_report, nullptr);
*************** void ReportRace(ThreadState *thr, RawSha
*** 761,825 ****
    DynamicMutexSet mset1;
    MutexSet *mset[kMop] = {&thr->mset, mset1};
  
!   // We need to lock the slot during RestoreStack because it protects
!   // the slot journal.
!   Lock slot_lock(&ctx->slots[static_cast<uptr>(s[1].sid())].mtx);
!   ThreadRegistryLock l0(&ctx->thread_registry);
!   Lock slots_lock(&ctx->slot_mtx);
!   if (SpuriousRace(old))
!     return;
!   if (!RestoreStack(EventType::kAccessExt, s[1].sid(), s[1].epoch(), addr1,
!                     size1, typ1, &tids[1], &traces[1], mset[1], &tags[1])) {
!     StoreShadow(&ctx->last_spurious_race, old.raw());
!     return;
!   }
  
!   if (IsFiredSuppression(ctx, rep_typ, traces[1]))
!     return;
  
!   if (HandleRacyStacks(thr, traces))
!     return;
  
!   // If any of the accesses has a tag, treat this as an "external" race.
!   uptr tag = kExternalTagNone;
!   for (uptr i = 0; i < kMop; i++) {
!     if (tags[i] != kExternalTagNone) {
!       rep_typ = ReportTypeExternalRace;
!       tag = tags[i];
!       break;
      }
-   }
  
!   ScopedReport rep(rep_typ, tag);
!   for (uptr i = 0; i < kMop; i++)
!     rep.AddMemoryAccess(addr, tags[i], s[i], tids[i], traces[i], mset[i]);
  
!   for (uptr i = 0; i < kMop; i++) {
!     ThreadContext *tctx = static_cast<ThreadContext *>(
!         ctx->thread_registry.GetThreadLocked(tids[i]));
!     rep.AddThread(tctx);
!   }
  
!   rep.AddLocation(addr_min, addr_max - addr_min);
  
!   if (flags()->print_full_thread_history) {
!     const ReportDesc *rep_desc = rep.GetReport();
!     for (uptr i = 0; i < rep_desc->threads.Size(); i++) {
!       Tid parent_tid = rep_desc->threads[i]->parent_tid;
!       if (parent_tid == kMainTid || parent_tid == kInvalidTid)
!         continue;
!       ThreadContext *parent_tctx = static_cast<ThreadContext *>(
!           ctx->thread_registry.GetThreadLocked(parent_tid));
!       rep.AddThread(parent_tctx);
      }
-   }
  
  #if !SANITIZER_GO
!   if (!((typ0 | typ1) & kAccessFree) &&
!       s[1].epoch() <= thr->last_sleep_clock.Get(s[1].sid()))
!     rep.AddSleep(thr->last_sleep_stack_id);
  #endif
-   OutputReport(thr, rep);
  }
  
  void PrintCurrentStack(ThreadState *thr, uptr pc) {
--- 807,886 ----
    DynamicMutexSet mset1;
    MutexSet *mset[kMop] = {&thr->mset, mset1};
  
!   // Use alloca, because malloc during signal handling deadlocks
!   ScopedReport *rep = (ScopedReport *)__builtin_alloca(sizeof(ScopedReport));
!   // Take a new scope as Apple platforms require the below locks released
!   // before symbolizing in order to avoid a deadlock
!   {
!     // We need to lock the slot during RestoreStack because it protects
!     // the slot journal.
!     Lock slot_lock(&ctx->slots[static_cast<uptr>(s[1].sid())].mtx);
!     ThreadRegistryLock l0(&ctx->thread_registry);
!     Lock slots_lock(&ctx->slot_mtx);
!     if (SpuriousRace(old))
!       return;
!     if (!RestoreStack(EventType::kAccessExt, s[1].sid(), s[1].epoch(), addr1,
!                       size1, typ1, &tids[1], &traces[1], mset[1], &tags[1])) {
!       StoreShadow(&ctx->last_spurious_race, old.raw());
!       return;
!     }
  
!     if (IsFiredSuppression(ctx, rep_typ, traces[1]))
!       return;
  
!     if (HandleRacyStacks(thr, traces))
!       return;
  
!     // If any of the accesses has a tag, treat this as an "external" race.
!     uptr tag = kExternalTagNone;
!     for (uptr i = 0; i < kMop; i++) {
!       if (tags[i] != kExternalTagNone) {
!         rep_typ = ReportTypeExternalRace;
!         tag = tags[i];
!         break;
!       }
      }
  
!     new (rep) ScopedReport(rep_typ, tag);
!     for (uptr i = 0; i < kMop; i++)
!       rep->AddMemoryAccess(addr, tags[i], s[i], tids[i], traces[i], mset[i]);
  
!     for (uptr i = 0; i < kMop; i++) {
!       ThreadContext *tctx = static_cast<ThreadContext *>(
!           ctx->thread_registry.GetThreadLocked(tids[i]));
!       rep->AddThread(tctx);
!     }
  
!     rep->AddLocation(addr_min, addr_max - addr_min);
  
!     if (flags()->print_full_thread_history) {
!       const ReportDesc *rep_desc = rep->GetReport();
!       for (uptr i = 0; i < rep_desc->threads.Size(); i++) {
!         Tid parent_tid = rep_desc->threads[i]->parent_tid;
!         if (parent_tid == kMainTid || parent_tid == kInvalidTid)
!           continue;
!         ThreadContext *parent_tctx = static_cast<ThreadContext *>(
!             ctx->thread_registry.GetThreadLocked(parent_tid));
!         rep->AddThread(parent_tctx);
!       }
      }
  
  #if !SANITIZER_GO
!     if (!((typ0 | typ1) & kAccessFree) &&
!         s[1].epoch() <= thr->last_sleep_clock.Get(s[1].sid()))
!       rep->AddSleep(thr->last_sleep_stack_id);
! #endif
! 
! #if SANITIZER_APPLE
!   }  // Close this scope to release the locks
! #endif
!     OutputReport(thr, *rep);
! 
!     // Need to manually destroy this because we used placement new to allocate
!     rep->~ScopedReport();
! #if !SANITIZER_APPLE
!   }
  #endif
  }
  
  void PrintCurrentStack(ThreadState *thr, uptr pc) {
*************** void PrintCurrentStack(ThreadState *thr,
*** 828,852 ****
    PrintStack(SymbolizeStack(trace));
  }
  
! // Always inlining PrintCurrentStackSlow, because LocatePcInTrace assumes
  // __sanitizer_print_stack_trace exists in the actual unwinded stack, but
! // tail-call to PrintCurrentStackSlow breaks this assumption because
  // __sanitizer_print_stack_trace disappears after tail-call.
  // However, this solution is not reliable enough, please see dvyukov's comment
  // http://reviews.llvm.org/D19148#406208
  // Also see PR27280 comment 2 and 3 for breaking examples and analysis.
! ALWAYS_INLINE USED void PrintCurrentStackSlow(uptr pc) {
  #if !SANITIZER_GO
    uptr bp = GET_CURRENT_FRAME();
    auto *ptrace = New<BufferedStackTrace>();
!   ptrace->Unwind(pc, bp, nullptr, false);
  
    for (uptr i = 0; i < ptrace->size / 2; i++) {
      uptr tmp = ptrace->trace_buffer[i];
      ptrace->trace_buffer[i] = ptrace->trace_buffer[ptrace->size - i - 1];
      ptrace->trace_buffer[ptrace->size - i - 1] = tmp;
    }
!   PrintStack(SymbolizeStack(*ptrace));
  #endif
  }
  
--- 889,922 ----
    PrintStack(SymbolizeStack(trace));
  }
  
! // Always inlining PrintCurrentStack, because LocatePcInTrace assumes
  // __sanitizer_print_stack_trace exists in the actual unwinded stack, but
! // tail-call to PrintCurrentStack breaks this assumption because
  // __sanitizer_print_stack_trace disappears after tail-call.
  // However, this solution is not reliable enough, please see dvyukov's comment
  // http://reviews.llvm.org/D19148#406208
  // Also see PR27280 comment 2 and 3 for breaking examples and analysis.
! ALWAYS_INLINE USED void PrintCurrentStack(uptr pc, bool fast) {
  #if !SANITIZER_GO
    uptr bp = GET_CURRENT_FRAME();
    auto *ptrace = New<BufferedStackTrace>();
!   ptrace->Unwind(pc, bp, nullptr, fast);
  
    for (uptr i = 0; i < ptrace->size / 2; i++) {
      uptr tmp = ptrace->trace_buffer[i];
      ptrace->trace_buffer[i] = ptrace->trace_buffer[ptrace->size - i - 1];
      ptrace->trace_buffer[ptrace->size - i - 1] = tmp;
    }
! 
!   if (ready_to_symbolize) {
!     PrintStack(SymbolizeStack(*ptrace));
!   } else {
!     Printf(
!         "WARNING: PrintCurrentStack() has been called too early, before "
!         "symbolization is possible. Printing unsymbolized stack trace:\n");
!     for (unsigned int i = 0; i < ptrace->size; i++)
!       Printf("    #%u: 0x%zx\n", i, ptrace->trace[i]);
!   }
  #endif
  }
  
*************** using namespace __tsan;
*** 857,862 ****
  extern "C" {
  SANITIZER_INTERFACE_ATTRIBUTE
  void __sanitizer_print_stack_trace() {
!   PrintCurrentStackSlow(StackTrace::GetCurrentPc());
  }
  }  // extern "C"
--- 927,932 ----
  extern "C" {
  SANITIZER_INTERFACE_ATTRIBUTE
  void __sanitizer_print_stack_trace() {
!   PrintCurrentStack(StackTrace::GetCurrentPc(), false);
  }
  }  // extern "C"
diff -Nrcpad gcc-16-20251130/libsanitizer/tsan/tsan_rtl_thread.cpp gcc-16-20251207/libsanitizer/tsan/tsan_rtl_thread.cpp
*** gcc-16-20251130/libsanitizer/tsan/tsan_rtl_thread.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/tsan/tsan_rtl_thread.cpp	Sun Dec  7 22:32:18 2025
*************** void ThreadFinalize(ThreadState *thr) {
*** 88,102 ****
  #if !SANITIZER_GO
    if (!ShouldReport(thr, ReportTypeThreadLeak))
      return;
-   ThreadRegistryLock l(&ctx->thread_registry);
    Vector<ThreadLeak> leaks;
!   ctx->thread_registry.RunCallbackForEachThreadLocked(CollectThreadLeaks,
!                                                       &leaks);
    for (uptr i = 0; i < leaks.Size(); i++) {
!     ScopedReport rep(ReportTypeThreadLeak);
!     rep.AddThread(leaks[i].tctx, true);
!     rep.SetCount(leaks[i].count);
!     OutputReport(thr, rep);
    }
  #endif
  }
--- 88,120 ----
  #if !SANITIZER_GO
    if (!ShouldReport(thr, ReportTypeThreadLeak))
      return;
    Vector<ThreadLeak> leaks;
!   {
!     ThreadRegistryLock l(&ctx->thread_registry);
!     ctx->thread_registry.RunCallbackForEachThreadLocked(CollectThreadLeaks,
!                                                         &leaks);
!   }
! 
    for (uptr i = 0; i < leaks.Size(); i++) {
!     // Use alloca, because malloc during signal handling deadlocks
!     ScopedReport *rep = (ScopedReport *)__builtin_alloca(sizeof(ScopedReport));
!     // Take a new scope as Apple platforms require the below locks released
!     // before symbolizing in order to avoid a deadlock
!     {
!       ThreadRegistryLock l(&ctx->thread_registry);
!       new (rep) ScopedReport(ReportTypeThreadLeak);
!       rep->AddThread(leaks[i].tctx, true);
!       rep->SetCount(leaks[i].count);
! #  if SANITIZER_APPLE
!     }  // Close this scope to release the locks
! #  endif
!       OutputReport(thr, *rep);
! 
!       // Need to manually destroy this because we used placement new to allocate
!       rep->~ScopedReport();
! #  if !SANITIZER_APPLE
!     }
! #  endif
    }
  #endif
  }
*************** struct OnStartedArgs {
*** 149,155 ****
    uptr tls_size;
  };
  
! void ThreadStart(ThreadState *thr, Tid tid, tid_t os_id,
                   ThreadType thread_type) {
    ctx->thread_registry.StartThread(tid, os_id, thread_type, thr);
    if (!thr->ignore_sync) {
--- 167,173 ----
    uptr tls_size;
  };
  
! void ThreadStart(ThreadState *thr, Tid tid, ThreadID os_id,
                   ThreadType thread_type) {
    ctx->thread_registry.StartThread(tid, os_id, thread_type, thr);
    if (!thr->ignore_sync) {
*************** void ThreadStart(ThreadState *thr, Tid t
*** 188,197 ****
    }
  #endif
  
! #if !SANITIZER_GO
    // Don't imitate stack/TLS writes for the main thread,
    // because its initialization is synchronized with all
    // subsequent threads anyway.
    if (tid != kMainTid) {
      if (stk_addr && stk_size) {
        const uptr pc = StackTrace::GetNextInstructionPc(
--- 206,219 ----
    }
  #endif
  
! #if !SANITIZER_GO && !SANITIZER_ANDROID
    // Don't imitate stack/TLS writes for the main thread,
    // because its initialization is synchronized with all
    // subsequent threads anyway.
+   // Because thr is created by MmapOrDie, the thr object
+   // is not in tls, the pointer to the thr object is in
+   // TLS_SLOT_SANITIZER slot. So skip this check on
+   // Android platform.
    if (tid != kMainTid) {
      if (stk_addr && stk_size) {
        const uptr pc = StackTrace::GetNextInstructionPc(
diff -Nrcpad gcc-16-20251130/libsanitizer/tsan/tsan_sync.cpp gcc-16-20251207/libsanitizer/tsan/tsan_sync.cpp
*** gcc-16-20251130/libsanitizer/tsan/tsan_sync.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/tsan/tsan_sync.cpp	Sun Dec  7 22:32:18 2025
*************** void MetaMap::MoveMemory(uptr src, uptr
*** 246,257 ****
    // there are no concurrent accesses to the regions (e.g. stop-the-world).
    CHECK_NE(src, dst);
    CHECK_NE(sz, 0);
    uptr diff = dst - src;
!   u32 *src_meta = MemToMeta(src);
!   u32 *dst_meta = MemToMeta(dst);
!   u32 *src_meta_end = MemToMeta(src + sz);
!   uptr inc = 1;
!   if (dst > src) {
      src_meta = MemToMeta(src + sz) - 1;
      dst_meta = MemToMeta(dst + sz) - 1;
      src_meta_end = MemToMeta(src) - 1;
--- 246,274 ----
    // there are no concurrent accesses to the regions (e.g. stop-the-world).
    CHECK_NE(src, dst);
    CHECK_NE(sz, 0);
+ 
+   // The current MoveMemory implementation behaves incorrectly when src, dst,
+   // and sz are not aligned to kMetaShadowCell.
+   // For example, with kMetaShadowCell == 8:
+   // - src = 4: unexpectedly clears the metadata for the range [0, 4).
+   // - src = 16, dst = 4, size = 8: A sync variable for addr = 20, which should
+   //   be moved to the metadata for address 8, is incorrectly moved to the
+   //   metadata for address 0 instead.
+   // - src = 0, sz = 4: fails to move the tail metadata.
+   // Therefore, the following assertions is needed.
+   DCHECK_EQ(src % kMetaShadowCell, 0);
+   DCHECK_EQ(dst % kMetaShadowCell, 0);
+   DCHECK_EQ(sz % kMetaShadowCell, 0);
+ 
    uptr diff = dst - src;
!   u32 *src_meta, *dst_meta, *src_meta_end;
!   uptr inc;
!   if (dst < src) {
!     src_meta = MemToMeta(src);
!     dst_meta = MemToMeta(dst);
!     src_meta_end = MemToMeta(src + sz);
!     inc = 1;
!   } else {
      src_meta = MemToMeta(src + sz) - 1;
      dst_meta = MemToMeta(dst + sz) - 1;
      src_meta_end = MemToMeta(src) - 1;
diff -Nrcpad gcc-16-20251130/libsanitizer/ubsan/ubsan_checks.inc gcc-16-20251207/libsanitizer/ubsan/ubsan_checks.inc
*** gcc-16-20251130/libsanitizer/ubsan/ubsan_checks.inc	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/ubsan/ubsan_checks.inc	Sun Dec  7 22:32:18 2025
*************** UBSAN_CHECK(ImplicitSignedIntegerTruncat
*** 53,58 ****
--- 53,59 ----
  UBSAN_CHECK(InvalidShiftBase, "invalid-shift-base", "shift-base")
  UBSAN_CHECK(InvalidShiftExponent, "invalid-shift-exponent", "shift-exponent")
  UBSAN_CHECK(OutOfBoundsIndex, "out-of-bounds-index", "bounds")
+ UBSAN_CHECK(LocalOutOfBounds, "local-out-of-bounds", "local-bounds")
  UBSAN_CHECK(UnreachableCall, "unreachable-call", "unreachable")
  UBSAN_CHECK(MissingReturn, "missing-return", "return")
  UBSAN_CHECK(NonPositiveVLAIndex, "non-positive-vla-index", "vla-bound")
diff -Nrcpad gcc-16-20251130/libsanitizer/ubsan/ubsan_handlers.cpp gcc-16-20251207/libsanitizer/ubsan/ubsan_handlers.cpp
*** gcc-16-20251130/libsanitizer/ubsan/ubsan_handlers.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/ubsan/ubsan_handlers.cpp	Sun Dec  7 22:32:18 2025
*************** void __ubsan::__ubsan_handle_out_of_boun
*** 405,410 ****
--- 405,432 ----
    Die();
  }
  
+ static void handleLocalOutOfBoundsImpl(ReportOptions Opts) {
+   // FIXME: Pass more diagnostic info.
+   SymbolizedStackHolder CallerLoc;
+   CallerLoc.reset(getCallerLocation(Opts.pc));
+   Location Loc;
+   Loc = CallerLoc;
+   ErrorType ET = ErrorType::LocalOutOfBounds;
+   ScopedReport R(Opts, Loc, ET);
+   Diag(Loc, DL_Error, ET, "access out of bounds");
+ }
+ 
+ void __ubsan::__ubsan_handle_local_out_of_bounds() {
+   GET_REPORT_OPTIONS(false);
+   handleLocalOutOfBoundsImpl(Opts);
+ }
+ 
+ void __ubsan::__ubsan_handle_local_out_of_bounds_abort() {
+   GET_REPORT_OPTIONS(true);
+   handleLocalOutOfBoundsImpl(Opts);
+   Die();
+ }
+ 
  static void handleBuiltinUnreachableImpl(UnreachableData *Data,
                                           ReportOptions Opts) {
    ErrorType ET = ErrorType::UnreachableCall;
*************** static void handleCFIBadIcall(CFICheckFa
*** 877,886 ****
  
  namespace __ubsan {
  
- #ifdef UBSAN_CAN_USE_CXXABI
- 
  #ifdef _WIN32
- 
  extern "C" void __ubsan_handle_cfi_bad_type_default(CFICheckFailData *Data,
                                                      ValueHandle Vtable,
                                                      bool ValidVtable,
--- 899,905 ----
*************** extern "C" void __ubsan_handle_cfi_bad_t
*** 889,908 ****
  }
  
  WIN_WEAK_ALIAS(__ubsan_handle_cfi_bad_type, __ubsan_handle_cfi_bad_type_default)
- #else
- SANITIZER_WEAK_ATTRIBUTE
- #endif
  void __ubsan_handle_cfi_bad_type(CFICheckFailData *Data, ValueHandle Vtable,
                                   bool ValidVtable, ReportOptions Opts);
- 
  #else
  void __ubsan_handle_cfi_bad_type(CFICheckFailData *Data, ValueHandle Vtable,
                                   bool ValidVtable, ReportOptions Opts) {
    Die();
  }
  #endif
  
! }  // namespace __ubsan
  
  void __ubsan::__ubsan_handle_cfi_bad_icall(CFIBadIcallData *CallData,
                                             ValueHandle Function) {
--- 908,924 ----
  }
  
  WIN_WEAK_ALIAS(__ubsan_handle_cfi_bad_type, __ubsan_handle_cfi_bad_type_default)
  void __ubsan_handle_cfi_bad_type(CFICheckFailData *Data, ValueHandle Vtable,
                                   bool ValidVtable, ReportOptions Opts);
  #else
+ SANITIZER_WEAK_ATTRIBUTE
  void __ubsan_handle_cfi_bad_type(CFICheckFailData *Data, ValueHandle Vtable,
                                   bool ValidVtable, ReportOptions Opts) {
    Die();
  }
  #endif
  
! } // namespace __ubsan
  
  void __ubsan::__ubsan_handle_cfi_bad_icall(CFIBadIcallData *CallData,
                                             ValueHandle Function) {
diff -Nrcpad gcc-16-20251130/libsanitizer/ubsan/ubsan_handlers.h gcc-16-20251207/libsanitizer/ubsan/ubsan_handlers.h
*** gcc-16-20251130/libsanitizer/ubsan/ubsan_handlers.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/ubsan/ubsan_handlers.h	Sun Dec  7 22:32:18 2025
*************** struct OutOfBoundsData {
*** 90,95 ****
--- 90,98 ----
  /// \brief Handle an array index out of bounds error.
  RECOVERABLE(out_of_bounds, OutOfBoundsData *Data, ValueHandle Index)
  
+ /// \brief Handle an local object access out of bounds error.
+ RECOVERABLE(local_out_of_bounds)
+ 
  struct UnreachableData {
    SourceLocation Loc;
  };
diff -Nrcpad gcc-16-20251130/libsanitizer/ubsan/ubsan_init_standalone.cpp gcc-16-20251207/libsanitizer/ubsan/ubsan_init_standalone.cpp
*** gcc-16-20251130/libsanitizer/ubsan/ubsan_init_standalone.cpp	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/ubsan/ubsan_init_standalone.cpp	Sun Dec  7 22:32:18 2025
***************
*** 19,24 ****
--- 19,31 ----
  #include "ubsan_init.h"
  #include "ubsan_signals_standalone.h"
  
+ #if SANITIZER_FUCHSIA
+ namespace __sanitizer {
+ // UBSan doesn't need to do anything else special in the startup hook.
+ void EarlySanitizerInit() {}
+ } // namespace __sanitizer
+ #endif // SANITIZER_FUCHSIA
+ 
  namespace __ubsan {
  
  class UbsanStandaloneInitializer {
diff -Nrcpad gcc-16-20251130/libsanitizer/ubsan/ubsan_interface.inc gcc-16-20251207/libsanitizer/ubsan/ubsan_interface.inc
*** gcc-16-20251130/libsanitizer/ubsan/ubsan_interface.inc	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/ubsan/ubsan_interface.inc	Sun Dec  7 22:32:18 2025
*************** INTERFACE_FUNCTION(__ubsan_handle_nullab
*** 48,53 ****
--- 48,55 ----
  INTERFACE_FUNCTION(__ubsan_handle_nullability_return_v1_abort)
  INTERFACE_FUNCTION(__ubsan_handle_out_of_bounds)
  INTERFACE_FUNCTION(__ubsan_handle_out_of_bounds_abort)
+ INTERFACE_FUNCTION(__ubsan_handle_local_out_of_bounds)
+ INTERFACE_FUNCTION(__ubsan_handle_local_out_of_bounds_abort)
  INTERFACE_FUNCTION(__ubsan_handle_pointer_overflow)
  INTERFACE_FUNCTION(__ubsan_handle_pointer_overflow_abort)
  INTERFACE_FUNCTION(__ubsan_handle_shift_out_of_bounds)
diff -Nrcpad gcc-16-20251130/libsanitizer/ubsan/ubsan_platform.h gcc-16-20251207/libsanitizer/ubsan/ubsan_platform.h
*** gcc-16-20251130/libsanitizer/ubsan/ubsan_platform.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/ubsan/ubsan_platform.h	Sun Dec  7 22:32:18 2025
***************
*** 17,23 ****
  #if defined(__linux__) || defined(__FreeBSD__) || defined(__APPLE__) ||        \
      defined(__NetBSD__) || defined(__DragonFly__) ||                           \
      (defined(__sun__) && defined(__svr4__)) || defined(_WIN32) ||              \
!     defined(__Fuchsia__)
  #define CAN_SANITIZE_UB 1
  #else
  # define CAN_SANITIZE_UB 0
--- 17,23 ----
  #if defined(__linux__) || defined(__FreeBSD__) || defined(__APPLE__) ||        \
      defined(__NetBSD__) || defined(__DragonFly__) ||                           \
      (defined(__sun__) && defined(__svr4__)) || defined(_WIN32) ||              \
!     defined(__Fuchsia__) || defined(__HAIKU__)
  #define CAN_SANITIZE_UB 1
  #else
  # define CAN_SANITIZE_UB 0
diff -Nrcpad gcc-16-20251130/libsanitizer/ubsan/ubsan_value.h gcc-16-20251207/libsanitizer/ubsan/ubsan_value.h
*** gcc-16-20251130/libsanitizer/ubsan/ubsan_value.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libsanitizer/ubsan/ubsan_value.h	Sun Dec  7 22:32:18 2025
*************** public:
*** 150,158 ****
  
    unsigned getIntegerBitCount() const {
      DCHECK(isIntegerTy());
!     if (isSignedBitIntTy())
!       return *reinterpret_cast<const u32 *>(getBitIntBitCountPointer());
!     else
        return getIntegerBitWidth();
    }
  
--- 150,161 ----
  
    unsigned getIntegerBitCount() const {
      DCHECK(isIntegerTy());
!     if (isSignedBitIntTy()) {
!       u32 BitCountValue;
!       internal_memcpy(&BitCountValue, getBitIntBitCountPointer(),
!                       sizeof(BitCountValue));
!       return BitCountValue;
!     } else
        return getIntegerBitWidth();
    }
  
diff -Nrcpad gcc-16-20251130/libstdc++-v3/ChangeLog gcc-16-20251207/libstdc++-v3/ChangeLog
*** gcc-16-20251130/libstdc++-v3/ChangeLog	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libstdc++-v3/ChangeLog	Sun Dec  7 22:32:18 2025
***************
*** 1,3 ****
--- 1,280 ----
+ 2025-12-06  Jason Merrill  <jason@redhat.com>
+ 
+ 	* src/c++23/std.cc.in: Add more #if.
+ 
+ 2025-12-06  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR libstdc++/80564
+ 	* include/std/functional (__cv_like): New.
+ 	(_Bind::_Res_type): Don't define when not needed.
+ 	(_Bind::__dependent): Likewise.
+ 	(_Bind::_Res_type_cv): Likewise.
+ 	(_Bind::operator()) [_GLIBCXX_EXPLICIT_THIS_PARAMETER]:
+ 	Define as two instead of four overloads using deducing
+ 	this.
+ 	* testsuite/20_util/bind/cv_quals_2.cc: Ignore SFINAE
+ 	diagnostics inside headers.
+ 	* testsuite/20_util/bind/ref_neg.cc: Likewise.
+ 	* testsuite/20_util/bind/80564.cc: New test.
+ 
+ 2025-12-06  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/atomic_wait.h (__detail::__atomic_eq): Use
+ 	std::addressof instead of &.
+ 	* include/std/atomic (atomic::wait, atomic::notify_one)
+ 	(atomic::notify_all): Likewise.
+ 
+ 2025-12-05  Patrick Palka  <ppalka@redhat.com>
+ 	    Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	PR libstdc++/120446
+ 	* include/bits/refwrap.h (__detail::__is_ref_wrapper):
+ 	Define as per P2655R3 for C++20.
+ 	(__detail::__ref_wrap_common_reference_exists_with): Likewise.
+ 	(basic_common_reference): Define partial specializations using
+ 	the above as per P2655R3 for C++20.
+ 	* include/bits/version.def (common_reference_wrapper): New.
+ 	* include/bits/version.h: Regenerate.
+ 	* include/std/functional (__glibcxx_want_common_reference_wrapper):
+ 	Define.
+ 	* testsuite/20_util/reference_wrapper/p2655r3.cc: New test.
+ 
+ 2025-12-05  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR libstdc++/120446
+ 	* include/bits/version.def (common_reference): New.
+ 	* include/bits/version.h: Regenerate.
+ 	* include/std/type_traits (__glibcxx_want_common_reference):
+ 	Define.
+ 	(__common_reference_impl<T1, T2, 1>): Add pointer convertibility
+ 	constraints as per P2655R3.
+ 	* testsuite/20_util/common_reference/p2655r3.cc: New test.
+ 
+ 2025-12-05  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/120446
+ 	* include/std/type_traits (__common_reference_impl): Rewrite
+ 	partial specializations to use requires-clause instead of
+ 	an additional void_t template parameter.  Consolidate the
+ 	partial specializations corresponding to bullet 1.
+ 
+ 2025-12-05  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* testsuite/20_util/function_objects/bind_front/111327.cc:
+ 	Add missing space before } ending a dg-error directive.
+ 
+ 2025-12-05  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR libstdc++/111550
+ 	* include/std/ranges (views::__adaptor::_Partial::operator())
+ 	[_GLIBCXX_EXPLICIT_THIS_PARAMETER]: Also use deducing this
+ 	in C++20 mode when possible.
+ 	(views::__adaptor::_Pipe::Operator())
+ 	[_GLIBCXX_EXPLICIT_THIS_PARAMETER]: Likewise.
+ 	* testsuite/std/ranges/adaptors/take.cc (test07): New test.
+ 
+ 2025-12-05  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR libstdc++/111327
+ 	* include/bits/binders.h (_Binder::operator())
+ 	[_GLIBCXX_EXPLICIT_THIS_PARAMETER]: Also use deducing this in
+ 	C++20 mode when possible.
+ 	* testsuite/20_util/function_objects/bind_front/111327.cc:
+ 	Expect error inside header even in C++20 mode.
+ 
+ 2025-12-05  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR libstdc++/111327
+ 	* include/std/functional (_Not_fn::operator())
+ 	[_GLIBCXX_EXPLICIT_THIS_PARAMETER]: Define as a single
+ 	overload using deducing this.
+ 	* testsuite/20_util/function_objects/not_fn/111327.cc: Extend test.
+ 
+ 2025-12-05  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* include/bits/c++config (_GLIBCXX_EXPLICIT_THIS_PARAMETER):
+ 	New.
+ 
+ 2025-12-04  François Dumont  <frs.dumont@gmail.com>
+ 
+ 	* include/debug/deque
+ 	(std::erase_if<>(std::__debug::deque<>&, _Pred)): New.
+ 	(std::erase<>(std::__debug::deque<>&, const _Up&)): New.
+ 	* include/std/deque (std::erase_if(std::deque<>&, _Pred)): Remove
+ 	_GLIBCXX_DEBUG code.
+ 	* testsuite/23_containers/deque/debug/erase.cc: New test case.
+ 	* testsuite/23_containers/deque/debug/invalidation/erase.cc: New test case.
+ 
+ 2025-12-04  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/debug/safe_unordered_base.h
+ 	(_Safe_unordered_container_base::operator=): Define as
+ 	defaulted, inherit behavior of _Safe_sequence_base.
+ 
+ 2025-12-04  Luc Grosheintz  <luc.grosheintz@gmail.com>
+ 	    Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/std/mdspan (layout_left): Apply LWG4272.
+ 	(layout_right, layout_left_padded, layout_right_padded): Ditto.
+ 	* testsuite/23_containers/mdspan/layouts/ctors.cc: Add
+ 	test to check ctor uniformity at rank == 0. Update test
+ 	for new behavior.
+ 	* testsuite/23_containers/mdspan/layouts/padded.cc: Update test
+ 	for new behavior.
+ 
+ 2025-12-04  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/debug/safe_sequence.h
+ 	(_Safe_node_sequence::_Safe_node_sequence): Define as defaulted.
+ 
+ 2025-12-03  Vladimir Bespalov  <vlad.bespalov@jetstreamsoft.com>
+ 
+ 	PR libstdc++/122812
+ 	* python/libstdcxx/v6/printers.py (lookup_templ_spec): Use
+ 	gdb.Type.tag if present.
+ 
+ 2025-12-03  Yuao Ma  <c8ef@outlook.com>
+ 
+ 	* include/bits/basic_string.h: Add subview.
+ 	* include/bits/cow_string.h: Add subview.
+ 	* include/std/string: Add FTM.
+ 	* testsuite/21_strings/basic_string/operations/subview/char.cc: New test.
+ 	* testsuite/21_strings/basic_string/operations/subview/wchar_t.cc: New test.
+ 
+ 2025-12-03  Yuao Ma  <c8ef@outlook.com>
+ 
+ 	* include/bits/version.def: Add string_subview FTM.
+ 	* include/bits/version.h: Regenerate.
+ 	* include/std/string_view: Add subview.
+ 	* testsuite/21_strings/basic_string_view/operations/subview/char.cc: New test.
+ 	* testsuite/21_strings/basic_string_view/operations/subview/wchar_t.cc: New test.
+ 
+ 2025-12-03  François Dumont  <frs.dumont@gmail.com>
+ 
+ 	* include/Makefile.am (debug_headers): Add inplace_vector.
+ 	* include/Makefile.in: Regenerate.
+ 	* include/debug/functions.h (__check_valid_range): Add C++20 constexpr.
+ 	* include/debug/helper_functions.h (__valid_range): Likewise.
+ 	* include/debug/inplace_vector: New.
+ 	* include/debug/safe_base.h (~_Safe_sequence_base()): Add C++11 noexcept.
+ 	(_Safe_sequence_base::operator=(const _Safe_sequence_base&)): New.
+ 	(_Safe_sequence_base::operator=(_Safe_sequence_base&&)): New.
+ 	(_Safe_sequence_base::_M_invalidate_all): Add C++20 constexpr.
+ 	* include/debug/safe_container.h
+ 	(_Safe_container<>::operator=(const _Safe_container<>&)): Implement using
+ 	_Safe_sequence_base same operator.
+ 	* include/debug/safe_iterator.h (__valid_range): Add C++20 constexpr.
+ 	* include/debug/safe_sequence.h
+ 	(_Not_equal_to(const _Type&)): Add C++20 constexpr.
+ 	(_Equal_to(const _Type&)): Add C++20 constexpr.
+ 	(_After_nth_from(const difference_type&, const _Iterator&)): Add C++20 constexpr.
+ 	(_Safe_sequence<>::_M_invalidate_if): Add C++20 constexpr.
+ 	(_Safe_node_sequence::operator=(const _Safe_node_sequence&)): New.
+ 	(_Safe_node_sequence::operator=(_Safe_node_sequence&&)): New.
+ 	(_Safe_node_sequence<>::_M_invalidate_all()): Add C++20 constexpr.
+ 	* include/debug/safe_sequence.tcc
+ 	(_Safe_sequence<>::_M_invalidate_if): Add C++20 constexpr.
+ 	* include/std/inplace_vector [_GLIBCXX_DEBUG](std::inplace_vector<>): Move
+ 	implementation into __cxx1998 namespace.
+ 	(erase, erase_if): Limit to non-debug inplace_vector<>, cleanup code.
+ 	[_GLIBCXX_DEBUG]: Add include <debug/inplace_vector>.
+ 	* testsuite/23_containers/inplace_vector/cons/1.cc: Adapt, skip several
+ 	is_trivially_xxx checks when in _GLIBCXX_DEBUG mode.
+ 	* testsuite/23_containers/inplace_vector/copy.cc: Likewise.
+ 	* testsuite/23_containers/inplace_vector/move.cc: Likewise.
+ 	* testsuite/23_containers/inplace_vector/debug/assign1_neg.cc: New test case.
+ 	* testsuite/23_containers/inplace_vector/debug/assign2_neg.cc: New test case.
+ 	* testsuite/23_containers/inplace_vector/debug/assign3_neg.cc: New test case.
+ 	* testsuite/23_containers/inplace_vector/debug/assign4_backtrace_neg.cc: New test case.
+ 	* testsuite/23_containers/inplace_vector/debug/assign4_neg.cc: New test case.
+ 	* testsuite/23_containers/inplace_vector/debug/construct1_neg.cc: New test case.
+ 	* testsuite/23_containers/inplace_vector/debug/construct2_neg.cc: New test case.
+ 	* testsuite/23_containers/inplace_vector/debug/construct3_neg.cc: New test case.
+ 	* testsuite/23_containers/inplace_vector/debug/construct4_neg.cc: New test case.
+ 	* testsuite/23_containers/inplace_vector/debug/debug_functions.cc: New test case.
+ 	* testsuite/23_containers/inplace_vector/debug/erase.cc: New test case.
+ 	* testsuite/23_containers/inplace_vector/debug/insert1_neg.cc: New test case.
+ 	* testsuite/23_containers/inplace_vector/debug/insert2_neg.cc: New test case.
+ 	* testsuite/23_containers/inplace_vector/debug/insert3_neg.cc: New test case.
+ 	* testsuite/23_containers/inplace_vector/debug/insert4_neg.cc: New test case.
+ 	* testsuite/23_containers/inplace_vector/debug/insert5_neg.cc: New test case.
+ 	* testsuite/23_containers/inplace_vector/debug/insert7_neg.cc: New test case.
+ 	* testsuite/23_containers/inplace_vector/debug/invalidation/1.cc: New test case.
+ 	* testsuite/23_containers/inplace_vector/debug/invalidation/2.cc: New test case.
+ 	* testsuite/23_containers/inplace_vector/debug/invalidation/3.cc: New test case.
+ 	* testsuite/23_containers/inplace_vector/debug/invalidation/4.cc: New test case.
+ 	* testsuite/23_containers/inplace_vector/debug/invalidation/append_range.cc:
+ 	New test case.
+ 	* testsuite/23_containers/inplace_vector/debug/invalidation/erase.cc:
+ 	New test case.
+ 	* testsuite/23_containers/inplace_vector/debug/invalidation/pop_back.cc:
+ 	New test case.
+ 	* testsuite/23_containers/inplace_vector/debug/invalidation/push_back.cc:
+ 	New test case.
+ 	* testsuite/23_containers/inplace_vector/debug/invalidation/swap.cc:
+ 	New test case.
+ 	* testsuite/23_containers/inplace_vector/debug/invalidation/try_append_range.cc:
+ 	New test case.
+ 	* testsuite/23_containers/inplace_vector/debug/invalidation/try_emplace_back.cc:
+ 	New test case.
+ 	* testsuite/23_containers/inplace_vector/debug/invalidation/try_push_back.cc:
+ 	New test case.
+ 	* testsuite/23_containers/inplace_vector/debug/invalidation/unchecked_emplace_back.cc:
+ 	New test case.
+ 	* testsuite/util/debug/checks.h: Avoid using _GLIBCXX_DEBUG containers in test
+ 	implementations.
+ 
+ 2025-12-02  Luc Grosheintz  <luc.grosheintz@gmail.com>
+ 
+ 	PR libstdc++/110352
+ 	* include/std/mdspan (submdspan_extents): New function.
+ 	* src/c++23/std.cc.in: Add submdspan_extents.
+ 	* testsuite/23_containers/mdspan/int_like.h: Add StructuralInt.
+ 	* testsuite/23_containers/mdspan/submdspan/submdspan_extents.cc: New test.
+ 	* testsuite/23_containers/mdspan/submdspan/submdspan_extents_neg.cc: New test.
+ 
+ 2025-12-02  Luc Grosheintz  <luc.grosheintz@gmail.com>
+ 
+ 	PR libstdc++/110352
+ 	* include/std/mdspan (submdspan_canonicalize_slices): New
+ 	function.
+ 	* src/c++23/std.cc.in (submdspan_canonicalize_slices): Add.
+ 	* testsuite/23_containers/mdspan/submdspan/submdspan_canonicalize_slices.cc: New test.
+ 	* testsuite/23_containers/mdspan/submdspan/submdspan_canonicalize_slices_neg.cc: New test.
+ 
+ 2025-12-01  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR libstdc++/122921
+ 	* include/std/flat_map (_Flat_map_impl::_Iterator::value_type):
+ 	Remove const from key_type to make consistent with the
+ 	container's value_type.
+ 	* testsuite/23_containers/flat_map/1.cc (test09): New test.
+ 	* testsuite/23_containers/flat_multimap/1.cc (test09): New test.
+ 
+ 2025-12-01  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/atomic_timed_wait.h (__wait_until_impl): Use
+ 	chrono::nanoseconds for parameter.
+ 	* src/c++20/atomic.cc (__wait_until_impl): Likewise.
+ 
+ 2025-12-01  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/122878
+ 	* src/c++20/atomic.cc (__spin_until_impl): Remove.
+ 	(__wait_until_impl): Use __spin_impl instead of
+ 	__spin_until_impl and return if timeout is reached after
+ 	spinning.
+ 
+ 2025-12-01  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* src/c++20/atomic.cc: Document platform wait API.
+ 	(__futex_wait_flags): Remove enumeration type.
+ 	(futex_private_flag): Define constant for FUTEX_PRIVATE_FLAG.
+ 	(__platform_wait): Use local variables for futex op constants.
+ 	(__platform_notify): Likewise.
+ 	(__platform_wait_until): Likewise. Adjust parameter types for
+ 	consistency with __platform_wait.
+ 
  2025-11-28  Patrick Palka  <ppalka@redhat.com>
  
  	PR libstdc++/122842
diff -Nrcpad gcc-16-20251130/libstdc++-v3/include/Makefile.am gcc-16-20251207/libstdc++-v3/include/Makefile.am
*** gcc-16-20251130/libstdc++-v3/include/Makefile.am	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libstdc++-v3/include/Makefile.am	Sun Dec  7 22:32:18 2025
*************** debug_headers = \
*** 971,976 ****
--- 971,977 ----
  	${debug_srcdir}/forward_list \
  	${debug_srcdir}/functions.h \
  	${debug_srcdir}/helper_functions.h \
+ 	${debug_srcdir}/inplace_vector \
  	${debug_srcdir}/list \
  	${debug_srcdir}/map \
  	${debug_srcdir}/macros.h \
diff -Nrcpad gcc-16-20251130/libstdc++-v3/include/Makefile.in gcc-16-20251207/libstdc++-v3/include/Makefile.in
*** gcc-16-20251130/libstdc++-v3/include/Makefile.in	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libstdc++-v3/include/Makefile.in	Sun Dec  7 22:32:18 2025
*************** debug_freestanding = \
*** 1308,1313 ****
--- 1308,1314 ----
  @GLIBCXX_HOSTED_TRUE@	${debug_srcdir}/forward_list \
  @GLIBCXX_HOSTED_TRUE@	${debug_srcdir}/functions.h \
  @GLIBCXX_HOSTED_TRUE@	${debug_srcdir}/helper_functions.h \
+ @GLIBCXX_HOSTED_TRUE@	${debug_srcdir}/inplace_vector \
  @GLIBCXX_HOSTED_TRUE@	${debug_srcdir}/list \
  @GLIBCXX_HOSTED_TRUE@	${debug_srcdir}/map \
  @GLIBCXX_HOSTED_TRUE@	${debug_srcdir}/macros.h \
diff -Nrcpad gcc-16-20251130/libstdc++-v3/include/bits/atomic_timed_wait.h gcc-16-20251207/libstdc++-v3/include/bits/atomic_timed_wait.h
*** gcc-16-20251130/libstdc++-v3/include/bits/atomic_timed_wait.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libstdc++-v3/include/bits/atomic_timed_wait.h	Sun Dec  7 22:32:18 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 75,83 ****
  	  return chrono::ceil<__w_dur>(__atime);
        }
  
      __wait_result_type
      __wait_until_impl(const void* __addr, __wait_args_base& __args,
! 		      const __wait_clock_t::duration& __atime);
  
      template<typename _Clock, typename _Dur>
        __wait_result_type
--- 75,88 ----
  	  return chrono::ceil<__w_dur>(__atime);
        }
  
+     // This uses a nanoseconds duration for the timeout argument.
+     // For __abi_version=0 that is the time since the steady_clock's epoch.
+     // It's possible that in future we will add new __wait_flags constants
+     // to indicate that the timeout is the time since the system_clock epoch,
+     // or is a relative timeout not an absolute time.
      __wait_result_type
      __wait_until_impl(const void* __addr, __wait_args_base& __args,
! 		      const chrono::nanoseconds& __timeout);
  
      template<typename _Clock, typename _Dur>
        __wait_result_type
diff -Nrcpad gcc-16-20251130/libstdc++-v3/include/bits/atomic_wait.h gcc-16-20251207/libstdc++-v3/include/bits/atomic_wait.h
*** gcc-16-20251130/libstdc++-v3/include/bits/atomic_wait.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libstdc++-v3/include/bits/atomic_wait.h	Sun Dec  7 22:32:18 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 118,124 ****
        __atomic_eq(const _Tp& __a, const _Tp& __b)
        {
  	// TODO make this do the correct padding bit ignoring comparison
! 	return __builtin_memcmp(&__a, &__b, sizeof(_Tp)) == 0;
        }
  
      // Storage for up to 64 bits of value, should be considered opaque bits.
--- 118,125 ----
        __atomic_eq(const _Tp& __a, const _Tp& __b)
        {
  	// TODO make this do the correct padding bit ignoring comparison
! 	return __builtin_memcmp(std::addressof(__a), std::addressof(__b),
! 				sizeof(_Tp)) == 0;
        }
  
      // Storage for up to 64 bits of value, should be considered opaque bits.
diff -Nrcpad gcc-16-20251130/libstdc++-v3/include/bits/basic_string.h gcc-16-20251207/libstdc++-v3/include/bits/basic_string.h
*** gcc-16-20251130/libstdc++-v3/include/bits/basic_string.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libstdc++-v3/include/bits/basic_string.h	Sun Dec  7 22:32:18 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 3442,3447 ****
--- 3442,3466 ----
        { return basic_string(*this,
  			    _M_check(__pos, "basic_string::substr"), __n); }
  
+ #ifdef __glibcxx_string_subview // >= C++26
+       /**
+        *  @brief  Get a subview.
+        *  @param __pos  Index of first character (default 0).
+        *  @param __n  Number of characters in subview (default remainder).
+        *  @return  The subview.
+        *  @throw  std::out_of_range  If __pos > size().
+        *
+        *  Construct and return a subview using the `__n` characters starting at
+        *  `__pos`.  If the string is too short, use the remainder of the
+        *  characters.  If `__pos` is beyond the end of the string, out_of_range
+        *  is thrown.
+       */
+       [[nodiscard]]
+       constexpr basic_string_view<_CharT, _Traits>
+       subview(size_type __pos = 0, size_type __n = npos) const
+       { return __sv_type(*this).subview(__pos, __n); }
+ #endif
+ 
        /**
         *  @brief  Compare to a string.
         *  @param __str  String to compare against.
diff -Nrcpad gcc-16-20251130/libstdc++-v3/include/bits/binders.h gcc-16-20251207/libstdc++-v3/include/bits/binders.h
*** gcc-16-20251130/libstdc++-v3/include/bits/binders.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libstdc++-v3/include/bits/binders.h	Sun Dec  7 22:32:18 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 125,131 ****
  	  _M_bound_args(__make_bound_args<_BoundArgs...>(std::forward<_Args>(__args)...))
  	{ static_assert(sizeof...(_Args) == sizeof...(_BoundArgs)); }
  
! #if __cpp_explicit_this_parameter
        template<typename _Self, typename... _CallArgs>
  	constexpr _Result_t<_Self, _CallArgs...>
  	operator()(this _Self&& __self, _CallArgs&&... __call_args)
--- 125,133 ----
  	  _M_bound_args(__make_bound_args<_BoundArgs...>(std::forward<_Args>(__args)...))
  	{ static_assert(sizeof...(_Args) == sizeof...(_BoundArgs)); }
  
! #if _GLIBCXX_EXPLICIT_THIS_PARAMETER
! # pragma GCC diagnostic push
! # pragma GCC diagnostic ignored "-Wc++23-extensions" // deducing this
        template<typename _Self, typename... _CallArgs>
  	constexpr _Result_t<_Self, _CallArgs...>
  	operator()(this _Self&& __self, _CallArgs&&... __call_args)
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 134,139 ****
--- 136,142 ----
  	  return _S_call(__like_t<_Self, _Binder>(__self),
  			 std::forward<_CallArgs>(__call_args)...);
  	}
+ # pragma GCC diagnostic pop
  #else
        template<typename... _CallArgs>
  	requires true
diff -Nrcpad gcc-16-20251130/libstdc++-v3/include/bits/c++config gcc-16-20251207/libstdc++-v3/include/bits/c++config
*** gcc-16-20251130/libstdc++-v3/include/bits/c++config	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libstdc++-v3/include/bits/c++config	Sun Dec  7 22:32:18 2025
*************** namespace __gnu_cxx
*** 927,932 ****
--- 927,939 ----
  # define _GLIBCXX_USE_BUILTIN_TRAIT(BT) 0
  #endif
  
+ // Whether deducing this is usable either officially, if in C++23 mode, or
+ // as an extension (Clang doesn't support the latter).
+ #if __cpp_explicit_this_parameter \
+   || (__cplusplus >= 201103L && __GNUC__ >= 14 && !defined(_GLIBCXX_CLANG))
+ # define _GLIBCXX_EXPLICIT_THIS_PARAMETER 202110L
+ #endif
+ 
  // Mark code that should be ignored by the compiler, but seen by Doxygen.
  #define _GLIBCXX_DOXYGEN_ONLY(X)
  
diff -Nrcpad gcc-16-20251130/libstdc++-v3/include/bits/cow_string.h gcc-16-20251207/libstdc++-v3/include/bits/cow_string.h
*** gcc-16-20251130/libstdc++-v3/include/bits/cow_string.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libstdc++-v3/include/bits/cow_string.h	Sun Dec  7 22:32:18 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2919,2924 ****
--- 2919,2943 ----
        { return basic_string(*this,
  			    _M_check(__pos, "basic_string::substr"), __n); }
  
+ #ifdef __glibcxx_string_subview // >= C++26
+       /**
+        *  @brief  Get a subview.
+        *  @param __pos  Index of first character (default 0).
+        *  @param __n  Number of characters in subview (default remainder).
+        *  @return  The subview.
+        *  @throw  std::out_of_range  If __pos > size().
+        *
+        *  Construct and return a subview using the `__n` characters starting at
+        *  `__pos`.  If the string is too short, use the remainder of the
+        *  characters.  If `__pos` is beyond the end of the string, out_of_range
+        *  is thrown.
+       */
+       [[nodiscard]]
+       constexpr basic_string_view<_CharT, _Traits>
+       subview(size_type __pos = 0, size_type __n = npos) const
+       { return __sv_type(*this).subview(__pos, __n); }
+ #endif
+ 
        /**
         *  @brief  Compare to a string.
         *  @param __str  String to compare against.
diff -Nrcpad gcc-16-20251130/libstdc++-v3/include/bits/refwrap.h gcc-16-20251207/libstdc++-v3/include/bits/refwrap.h
*** gcc-16-20251130/libstdc++-v3/include/bits/refwrap.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libstdc++-v3/include/bits/refwrap.h	Sun Dec  7 22:32:18 2025
*************** _GLIBCXX_MEM_FN_TRAITS(&& noexcept, fals
*** 457,462 ****
--- 457,496 ----
  
    /// @}
  
+ #if __glibcxx_common_reference_wrapper // C++ >= 20
+   namespace __detail
+   {
+     template<typename _Tp>
+       constexpr bool __is_ref_wrapper = false;
+ 
+     template<typename _Tp>
+       constexpr bool __is_ref_wrapper<reference_wrapper<_Tp>> = true;
+ 
+     template<typename _Rp, typename _Tp, typename _RQual, typename _TQual>
+       concept __ref_wrap_common_reference_exists_with = __is_ref_wrapper<_Rp>
+ 	&& requires { typename common_reference_t<typename _Rp::type&, _TQual>; }
+ 	&& convertible_to<_RQual, common_reference_t<typename _Rp::type&, _TQual>>;
+   } // namespace __detail
+ 
+   template<typename _Rp, typename _Tp,
+ 	   template<typename> class _RQual, template<typename> class _TQual>
+     requires __detail::__ref_wrap_common_reference_exists_with<_Rp, _Tp,
+ 							       _RQual<_Rp>, _TQual<_Tp>>
+       && (!__detail::__ref_wrap_common_reference_exists_with<_Tp, _Rp,
+ 							     _TQual<_Tp>, _RQual<_Rp>>)
+   struct basic_common_reference<_Rp, _Tp, _RQual, _TQual>
+   { using type = common_reference_t<typename _Rp::type&, _TQual<_Tp>>; };
+ 
+   template<typename _Tp, typename _Rp,
+ 	   template<typename> class _TQual, template<typename> class _RQual>
+     requires __detail::__ref_wrap_common_reference_exists_with<_Rp, _Tp,
+ 							       _RQual<_Rp>, _TQual<_Tp>>
+       && (!__detail::__ref_wrap_common_reference_exists_with<_Tp, _Rp,
+ 							     _TQual<_Tp>, _RQual<_Rp>>)
+   struct basic_common_reference<_Tp, _Rp, _TQual, _RQual>
+   { using type = common_reference_t<typename _Rp::type&, _TQual<_Tp>>; };
+ #endif
+ 
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
  
diff -Nrcpad gcc-16-20251130/libstdc++-v3/include/bits/version.def gcc-16-20251207/libstdc++-v3/include/bits/version.def
*** gcc-16-20251130/libstdc++-v3/include/bits/version.def	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libstdc++-v3/include/bits/version.def	Sun Dec  7 22:32:18 2025
*************** ftms = {
*** 1822,1827 ****
--- 1822,1843 ----
  };
  
  ftms = {
+   name = common_reference;
+   values = {
+     v = 202302;
+     cxxmin = 20; // We treat P2655R3 as a DR against C++20.
+   };
+ };
+ 
+ ftms = {
+   name = common_reference_wrapper;
+   values = {
+     v = 202302;
+     cxxmin = 20; // We treat P2655R3 as a DR against C++20.
+   };
+ };
+ 
+ ftms = {
    name = formatters;
    values = {
      v = 202302;
*************** ftms = {
*** 1945,1950 ****
--- 1961,1974 ----
    };
  };
  
+ ftms = {
+   name = string_subview;
+   values = {
+     v = 202506;
+     cxxmin = 26;
+   };
+ };
+ 
  ftms = {
    name = to_underlying;
    values = {
diff -Nrcpad gcc-16-20251130/libstdc++-v3/include/bits/version.h gcc-16-20251207/libstdc++-v3/include/bits/version.h
*** gcc-16-20251130/libstdc++-v3/include/bits/version.h	Sun Nov 30 22:32:19 2025
--- gcc-16-20251207/libstdc++-v3/include/bits/version.h	Sun Dec  7 22:32:18 2025
***************
*** 2030,2035 ****
--- 2030,2055 ----
  #endif /* !defined(__cpp_lib_flat_set) */
  #undef __glibcxx_want_flat_set
  
+ #if !defined(__cpp_lib_common_reference)
+ # if (__cplusplus >= 202002L)
+ #  define __glibcxx_common_reference 202302L
+ #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_common_reference)
+ #   define __cpp_lib_common_reference 202302L
+ #  endif
+ # endif
+ #endif /* !defined(__cpp_lib_common_reference) && defined(__glibcxx_want_common_reference) */
+ #undef __glibcxx_want_common_reference
+ 
+ #if !defined(__cpp_lib_common_reference_wrapper)
+ # if (__cplusplus >= 202002L)
+ #  define __glibcxx_common_reference_wrapper 202302L
+ #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_common_reference_wrapper)
+ #   define __cpp_lib_common_reference_wrapper 202302L
+ #  endif
+ # endif
+ #endif /* !defined(__cpp_lib_common_reference_wrapper) && defined(__glibcxx_want_common_reference_wrapper) */
+ #undef __glibcxx_want_common_reference_wrapper
+ 
  #if !defined(__cpp_lib_formatters)
  # if (__cplusplus >= 202100L) && _GLIBCXX_HOSTED
  #  define __glibcxx_formatters 202302L
***************
*** 2170,2175 ****
--- 2190,2205 ----
  #endif /* !defined(__cpp_lib_string_resize_and_overwrite) */
  #undef __glibcxx_want_string_resize_and_overwrite
  
+ #if !defined(__cpp_lib_string_subview)
+ # if (__cplusplus >  202302L)
+ #  define __glibcxx_string_subview 202506L
+ #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_string_subview)
+ #   define __cpp_lib_string_subview 202506L
+ #  endif
+ # endif
+ #endif /* !defined(__cpp_lib_string_subview) */
+ #undef __glibcxx_want_string_subview
+ 
  #if !defined(__cpp_lib_to_underlying)
  # if (__cplusplus >= 202100L)
  #  define __glibcxx_to_underlying 202102L
diff -Nrcpad gcc-16-20251130/libstdc++-v3/include/debug/deque gcc-16-20251207/libstdc++-v3/include/debug/deque
*** gcc-16-20251130/libstdc++-v3/include/debug/deque	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libstdc++-v3/include/debug/deque	Sun Dec  7 22:32:18 2025
*************** namespace __debug
*** 771,776 ****
--- 771,804 ----
      { __lhs.swap(__rhs); }
  
  } // namespace __debug
+ 
+ #ifdef __glibcxx_erase_if // C++ >= 20 && HOSTED
+ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+   template<typename _Tp, typename _Alloc, typename _Predicate>
+     inline typename __debug::deque<_Tp, _Alloc>::size_type
+     erase_if(__debug::deque<_Tp, _Alloc>& __cont, _Predicate __pred)
+     {
+       _GLIBCXX_STD_C::deque<_Tp, _Alloc>& __unsafe_cont = __cont;
+       const auto __osz = __cont.size();
+       const auto __end = __unsafe_cont.end();
+       auto __removed = std::__remove_if(__unsafe_cont.begin(), __end,
+ 					std::move(__pred));
+       if (__removed != __end)
+ 	{
+ 	  __cont.erase(__niter_wrap(__cont.begin(), __removed),
+ 		       __cont.end());
+ 	  return __osz - __cont.size();
+ 	}
+ 
+       return 0;
+     }
+ 
+   template<typename _Tp, typename _Alloc, typename _Up = _Tp>
+     inline typename __debug::deque<_Tp, _Alloc>::size_type
+     erase(__debug::deque<_Tp, _Alloc>& __cont, const _Up& __value)
+     { return std::erase_if(__cont, __gnu_cxx::__ops::__equal_to(__value)); }
+ _GLIBCXX_END_NAMESPACE_VERSION
+ #endif // __cpp_lib_erase_if
  } // namespace std
  
  #endif
diff -Nrcpad gcc-16-20251130/libstdc++-v3/include/debug/functions.h gcc-16-20251207/libstdc++-v3/include/debug/functions.h
*** gcc-16-20251130/libstdc++-v3/include/debug/functions.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libstdc++-v3/include/debug/functions.h	Sun Dec  7 22:32:18 2025
*************** namespace __gnu_debug
*** 53,67 ****
     * assertion statement because, e.g., we are in a constructor.
    */
    template<typename _InputIterator>
!     inline _InputIterator
      __check_valid_range(const _InputIterator& __first,
  			const _InputIterator& __last,
  			const char* __file,
  			unsigned int __line,
  			const char* __function)
      {
!       __glibcxx_check_valid_range_at(__first, __last,
! 				     __file, __line, __function);
        return __first;
      }
  
--- 53,71 ----
     * assertion statement because, e.g., we are in a constructor.
    */
    template<typename _InputIterator>
!     _GLIBCXX20_CONSTEXPR inline _InputIterator
      __check_valid_range(const _InputIterator& __first,
  			const _InputIterator& __last,
  			const char* __file,
  			unsigned int __line,
  			const char* __function)
      {
!       if (!std::__is_constant_evaluated())
! 	{
! 	  __glibcxx_check_valid_range_at(__first, __last,
! 					 __file, __line, __function);
! 	}
! 
        return __first;
      }
  
diff -Nrcpad gcc-16-20251130/libstdc++-v3/include/debug/helper_functions.h gcc-16-20251207/libstdc++-v3/include/debug/helper_functions.h
*** gcc-16-20251130/libstdc++-v3/include/debug/helper_functions.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libstdc++-v3/include/debug/helper_functions.h	Sun Dec  7 22:32:18 2025
*************** namespace __gnu_debug
*** 249,255 ****
      }
  
    template<typename _Iterator, typename _Sequence, typename _Category>
!     bool
      __valid_range(const _Safe_iterator<_Iterator, _Sequence, _Category>&,
  		  const _Safe_iterator<_Iterator, _Sequence, _Category>&,
  		  typename _Distance_traits<_Iterator>::__type&);
--- 249,255 ----
      }
  
    template<typename _Iterator, typename _Sequence, typename _Category>
!     _GLIBCXX20_CONSTEXPR bool
      __valid_range(const _Safe_iterator<_Iterator, _Sequence, _Category>&,
  		  const _Safe_iterator<_Iterator, _Sequence, _Category>&,
  		  typename _Distance_traits<_Iterator>::__type&);
*************** namespace __gnu_debug
*** 272,278 ****
      }
  
    template<typename _Iterator, typename _Sequence, typename _Category>
!     bool
      __valid_range(const _Safe_iterator<_Iterator, _Sequence, _Category>&,
  		  const _Safe_iterator<_Iterator, _Sequence, _Category>&);
  
--- 272,278 ----
      }
  
    template<typename _Iterator, typename _Sequence, typename _Category>
!     _GLIBCXX20_CONSTEXPR bool
      __valid_range(const _Safe_iterator<_Iterator, _Sequence, _Category>&,
  		  const _Safe_iterator<_Iterator, _Sequence, _Category>&);
  
diff -Nrcpad gcc-16-20251130/libstdc++-v3/include/debug/inplace_vector gcc-16-20251207/libstdc++-v3/include/debug/inplace_vector
*** gcc-16-20251130/libstdc++-v3/include/debug/inplace_vector	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/include/debug/inplace_vector	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,691 ----
+ // Debugging inplace_vector implementation -*- C++ -*-
+ 
+ // Copyright The GNU Toolchain Authors.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // Under Section 7 of GPL version 3, you are granted additional
+ // permissions described in the GCC Runtime Library Exception, version
+ // 3.1, as published by the Free Software Foundation.
+ 
+ // You should have received a copy of the GNU General Public License and
+ // a copy of the GCC Runtime Library Exception along with this program;
+ // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+ // <http://www.gnu.org/licenses/>.
+ 
+ /** @file debug/inplace_vector
+  *  This file is a GNU debug extension to the Standard C++ Library.
+  */
+ 
+ #ifndef _GLIBCXX_DEBUG_INPLACE_VECTOR
+ #define _GLIBCXX_DEBUG_INPLACE_VECTOR 1
+ 
+ #ifdef _GLIBCXX_SYSHDR
+ #pragma GCC system_header
+ #endif
+ 
+ #include <debug/debug.h>
+ 
+ namespace std _GLIBCXX_VISIBILITY(default) { namespace __debug {
+   template<typename _Tp, size_t _Nm> class inplace_vector;
+ } } // namespace std::__debug
+ 
+ #include <inplace_vector>
+ 
+ #ifdef __glibcxx_inplace_vector // C++ >= 26
+ 
+ #include <debug/safe_sequence.h>
+ #include <debug/safe_iterator.h>
+ 
+ namespace std _GLIBCXX_VISIBILITY(default)
+ {
+ namespace __debug
+ {
+   /// Class std::inplace_vector with safety/checking/debug instrumentation.
+   template<typename _Tp, size_t _Nm>
+     class inplace_vector
+     : public __gnu_debug::_Safe_sequence<inplace_vector<_Tp, _Nm>>
+     , public _GLIBCXX_STD_C::inplace_vector<_Tp, _Nm>
+     {
+       using _Base = _GLIBCXX_STD_C::inplace_vector<_Tp, _Nm>;
+       using _Base_iterator = typename _Base::iterator;
+       using _Base_const_iterator = typename _Base::const_iterator;
+       using _Equal = __gnu_debug::_Equal_to<_Base_const_iterator>;
+ 
+       template<typename _ItT, typename _SeqT, typename _CatT>
+ 	friend class ::__gnu_debug::_Safe_iterator;
+ 
+     public:
+       // types:
+       using value_type = _Base::value_type;
+       using pointer = _Base::pointer;
+       using const_pointer = _Base::const_pointer;
+       using reference = _Base::reference;
+       using const_reference = _Base::const_reference;
+       using size_type = _Base::size_type;
+       using difference_type = _Base::difference_type;
+       using iterator
+ 	= __gnu_debug::_Safe_iterator<_Base_iterator, inplace_vector>;
+       using const_iterator
+ 	= __gnu_debug::_Safe_iterator<_Base_const_iterator, inplace_vector>;
+       using reverse_iterator       = std::reverse_iterator<iterator>;
+       using const_reverse_iterator = std::reverse_iterator<const_iterator>;
+ 
+       constexpr
+       inplace_vector() noexcept = default;
+ 
+       constexpr explicit
+       inplace_vector(size_type __n)
+       : _Base(__n) { }
+ 
+       constexpr
+       inplace_vector(size_type __n, const _Tp& __value)
+ 	: _Base(__n, __value) { }
+ 
+       template<__any_input_iterator _InputIterator>
+ 	constexpr
+ 	inplace_vector(_InputIterator __first, _InputIterator __last)
+ 	: _Base(__gnu_debug::__base(
+ 		  __glibcxx_check_valid_constructor_range(__first, __last)),
+ 		__gnu_debug::__base(__last)) { }
+ 
+       template<__detail::__container_compatible_range<_Tp> _Rg>
+ 	constexpr
+ 	inplace_vector(from_range_t, _Rg&& __rg)
+ 	  : _Base(from_range_t{}, std::forward<_Rg>(__rg)) { }
+ 
+       constexpr
+       inplace_vector(initializer_list<_Tp> __il)
+       : _Base(__il) { }
+ 
+       inplace_vector(const inplace_vector&) = default;
+       inplace_vector(inplace_vector&&) = default;
+       ~inplace_vector() = default;
+ 
+       inplace_vector&
+       operator=(const inplace_vector&) = default;
+ 
+       inplace_vector&
+       operator=(inplace_vector&&) = default;
+ 
+       constexpr inplace_vector&
+       operator=(initializer_list<_Tp> __il)
+       {
+ 	_Base::operator=(__il);
+ 	this->_M_invalidate_all();
+ 	return *this;
+       }
+ 
+       template<__any_input_iterator _InputIterator>
+ 	constexpr void
+ 	assign(_InputIterator __first, _InputIterator __last)
+ 	{
+ 	  typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist;
+ 	  __glibcxx_check_valid_range2(__first, __last, __dist);
+ 
+ 	  const auto __size = size();
+ 	  const auto __end = _Base::end();
+ 	  if (__dist.second >= __gnu_debug::__dp_sign)
+ 	    _Base::assign(__gnu_debug::__unsafe(__first),
+ 			  __gnu_debug::__unsafe(__last));
+ 	  else
+ 	    _Base::assign(__first, __last);
+ 
+ 	  if (size() < __size)
+ 	    _M_invalidate_after_nth(size());
+ 	  else if (size() > __size)
+ 	    this->_M_invalidate_if(_Equal(__end));
+ 	}
+ 
+       template<__detail::__container_compatible_range<_Tp> _Rg>
+ 	constexpr void
+ 	assign_range(_Rg&& __rg)
+ 	{
+ 	  _Base::assign_range(std::forward<_Rg>(__rg));
+ 	  this->_M_invalidate_all();
+ 	}
+ 
+       constexpr void
+       assign(size_type __n, const _Tp& __u)
+       {
+ 	_Base::assign(__n, __u);
+ 	this->_M_invalidate_all();
+       }
+ 
+       constexpr void
+       assign(initializer_list<_Tp> __il)
+       {
+ 	_Base::assign(__il);
+ 	this->_M_invalidate_all();
+       }
+ 
+       // iterators
+       [[nodiscard]]
+       constexpr iterator
+       begin() noexcept
+       { return { _Base::begin(), this }; }
+ 
+       [[nodiscard]]
+       constexpr const_iterator
+       begin() const noexcept
+       { return { _Base::begin(), this }; }
+ 
+       [[nodiscard]]
+       constexpr iterator
+       end() noexcept
+       { return { _Base::end(), this }; }
+ 
+       [[nodiscard]]
+       constexpr const_iterator
+       end() const noexcept
+       { return { _Base::end(), this }; }
+ 
+       [[nodiscard]]
+       constexpr reverse_iterator
+       rbegin() noexcept
+       { return reverse_iterator(end()); }
+ 
+       [[nodiscard]]
+       constexpr const_reverse_iterator
+       rbegin() const noexcept
+       { return const_reverse_iterator(end()); }
+ 
+       [[nodiscard]]
+       constexpr reverse_iterator
+       rend() noexcept { return reverse_iterator(begin()); }
+ 
+       [[nodiscard]]
+       constexpr const_reverse_iterator
+       rend() const noexcept { return const_reverse_iterator(begin()); }
+ 
+       [[nodiscard]]
+       constexpr const_iterator
+       cbegin() const noexcept
+       { return { _Base::cbegin(), this }; }
+ 
+       [[nodiscard]]
+       constexpr const_iterator
+       cend() const noexcept
+       { return { _Base::cend(), this }; }
+ 
+       [[nodiscard]]
+       constexpr const_reverse_iterator
+       crbegin() const noexcept { return rbegin(); }
+ 
+       [[nodiscard]]
+       constexpr const_reverse_iterator
+       crend() const noexcept { return rend(); }
+ 
+       using _Base::empty;
+       using _Base::size;
+       using _Base::max_size;
+       using _Base::capacity;
+ 
+       constexpr void
+       resize(size_type __n)
+       {
+ 	_Base::resize(__n);
+ 	_M_invalidate_after_nth(__n);
+       }
+ 
+       constexpr void
+       resize(size_type __n, const _Tp& __c)
+       {
+ 	_Base::resize(__n, __c);
+ 	_M_invalidate_after_nth(__n);
+       }
+ 
+       using _Base::reserve;
+       using _Base::shrink_to_fit;
+ 
+       // element access
+       [[nodiscard]]
+       constexpr reference
+       operator[](size_type __n)
+       {
+ 	__glibcxx_check_subscript(__n);
+ 	return _Base::operator[](__n);
+       }
+ 
+       [[nodiscard]]
+       constexpr const_reference
+       operator[](size_type __n) const
+       {
+ 	__glibcxx_check_subscript(__n);
+ 	return _Base::operator[](__n);
+       }
+ 
+       using _Base::at;
+ 
+       [[nodiscard]]
+       constexpr reference
+       front()
+       {
+ 	__glibcxx_check_nonempty();
+ 	return data()[0];
+       }
+ 
+       [[nodiscard]]
+       constexpr const_reference
+       front() const
+       {
+ 	__glibcxx_check_nonempty();
+ 	return data()[0];
+       }
+ 
+       [[nodiscard]]
+       constexpr reference
+       back()
+       {
+ 	__glibcxx_check_nonempty();
+ 	return data()[size() - 1];
+       }
+ 
+       [[nodiscard]]
+       constexpr const_reference
+       back() const
+       {
+ 	__glibcxx_check_nonempty();
+ 	return data()[size() - 1];
+       }
+ 
+       using _Base::data;
+ 
+       template<typename... _Args>
+ 	constexpr _Tp&
+ 	emplace_back(_Args&&... __args)
+ 	{
+ 	  const auto __end = _Base::cend();
+ 	  _Tp& __res =  _Base::emplace_back(std::forward<_Args>(__args)...);
+ 	  this->_M_invalidate_if(_Equal(__end));
+ 	  return __res;
+ 	}
+ 
+       constexpr _Tp&
+       push_back(const _Tp& __x)
+       { return emplace_back(__x); }
+ 
+       constexpr _Tp&
+       push_back(_Tp&& __x)
+       { return emplace_back(std::move(__x)); }
+ 
+       template<__detail::__container_compatible_range<_Tp> _Rg>
+ 	constexpr void
+ 	append_range(_Rg&& __rg)
+ 	{
+ 	  const auto __size = size();
+ 	  const auto __end = _Base::cend();
+ 	  _Base::append_range(__rg);
+ 	  if (size() != __size)
+ 	    this->_M_invalidate_if(_Equal(__end));
+ 	}
+ 
+       constexpr void
+       pop_back()
+       {
+ 	__glibcxx_check_nonempty();
+ 	_M_invalidate_after_nth(_Base::size() - 1);
+ 	_Base::pop_back();
+       }
+ 
+       template<typename... _Args>
+ 	constexpr _Tp*
+ 	try_emplace_back(_Args&&... __args)
+ 	{
+ 	  auto __end = _Base::cend();
+ 	  _Tp* __res = _Base::try_emplace_back(std::forward<_Args>(__args)...);
+ 
+ 	  if (__res)
+ 	    this->_M_invalidate_if(_Equal(__end));
+ 
+ 	  return __res;
+ 	}
+ 
+       constexpr _Tp*
+       try_push_back(const _Tp& __x)
+       {
+ 	const auto __end = _Base::cend();
+ 	_Tp* __res = _Base::try_push_back(__x);
+ 
+ 	if (__res)
+ 	  this->_M_invalidate_if(_Equal(__end));
+ 
+ 	return __res;
+       }
+ 
+       constexpr _Tp*
+       try_push_back(_Tp&& __x)
+       {
+ 	const auto __end = _Base::cend();
+ 	_Tp* __res = _Base::try_push_back(std::move(__x));
+ 
+ 	if (__res)
+ 	  this->_M_invalidate_if(_Equal(__end));
+ 
+ 	return __res;
+       }
+ 
+       template<__detail::__container_compatible_range<_Tp> _Rg>
+ 	constexpr ranges::borrowed_iterator_t<_Rg>
+ 	try_append_range(_Rg&& __rg)
+ 	{
+ 	  const auto __size = size();
+ 	  const auto __end = _Base::cend();
+ 	  auto __res = _Base::try_append_range(__rg);
+ 	  if (size() != __size)
+ 	    this->_M_invalidate_if(_Equal(__end));
+ 
+ 	  return __res;
+ 	}
+ 
+       template<typename... _Args>
+ 	constexpr _Tp&
+ 	unchecked_emplace_back(_Args&&... __args)
+ 	{
+ 	  const auto __end = _Base::cend();
+ 	  _Tp& __res =
+ 	    _Base::unchecked_emplace_back(std::forward<_Args>(__args)...);
+ 
+ 	  this->_M_invalidate_if(_Equal(__end));
+ 
+ 	  return __res;
+ 	}
+ 
+       constexpr _Tp&
+       unchecked_push_back(const _Tp& __x)
+       { return unchecked_emplace_back(__x); }
+ 
+       constexpr _Tp&
+       unchecked_push_back(_Tp&& __x)
+       { return unchecked_emplace_back(std::move(__x)); }
+ 
+       template<typename... _Args>
+ 	constexpr iterator
+ 	emplace(const_iterator __position, _Args&&... __args)
+ 	{
+ 	  if (std::is_constant_evaluated())
+ 	    return iterator(_Base::emplace(__position.base(),
+ 					   std::forward<_Args>(__args)...),
+ 			    this);
+ 
+ 	  __glibcxx_check_insert(__position);
+ 	  const difference_type __offset = __position.base() - _Base::cbegin();
+ 	  _Base_iterator __res = _Base::emplace(__position.base(),
+ 						std::forward<_Args>(__args)...);
+ 	  _M_invalidate_after_nth(__offset);
+ 	  return { __res, this };
+ 	}
+ 
+       constexpr iterator
+       insert(const_iterator __position, const _Tp& __x)
+       { return emplace(__position, __x); }
+ 
+       constexpr iterator
+       insert(const_iterator __position, _Tp&& __x)
+       { return emplace(__position, std::move(__x)); }
+ 
+       constexpr iterator
+       insert(const_iterator __position, size_type __n, const _Tp& __x)
+       {
+ 	if (std::is_constant_evaluated())
+ 	  return iterator(_Base::insert(__position.base(), __n, __x), this);
+ 
+ 	  __glibcxx_check_insert(__position);
+ 	const difference_type __offset = __position.base() - _Base::cbegin();
+ 	_Base_iterator __res = _Base::insert(__position.base(), __n, __x);
+ 	_M_invalidate_after_nth(__offset);
+ 	return { __res, this };
+       }
+ 
+       template<__any_input_iterator _InputIterator>
+ 	constexpr iterator
+ 	insert(const_iterator __position, _InputIterator __first,
+ 	       _InputIterator __last)
+ 	{
+ 	  if (std::is_constant_evaluated())
+ 	    return iterator(_Base::insert(__position.base(),
+ 					  __gnu_debug::__unsafe(__first),
+ 					  __gnu_debug::__unsafe(__last)), this);
+ 
+ 	  typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist;
+ 	  __glibcxx_check_insert_range(__position, __first, __last, __dist);
+ 
+ 	  const difference_type __offset = __position.base() - _Base::cbegin();
+ 	  _Base_iterator __res;
+ 	  if (__dist.second >= __gnu_debug::__dp_sign)
+ 	    __res = _Base::insert(__position.base(),
+ 				  __gnu_debug::__unsafe(__first),
+ 				  __gnu_debug::__unsafe(__last));
+ 	  else
+ 	    __res = _Base::insert(__position.base(), __first, __last);
+ 
+ 	  _M_invalidate_after_nth(__offset);
+ 	  return { __res, this };
+ 	}
+ 
+       template<__detail::__container_compatible_range<_Tp> _Rg>
+ 	constexpr iterator
+ 	insert_range(const_iterator __position, _Rg&& __rg)
+ 	{
+ 	  const auto __size = size();
+ 	  const difference_type __offset = __position.base() - _Base::cbegin();
+ 	  auto __res = _Base::insert_range(__position.base(), __rg);
+ 	  if (size() > __size)
+ 	    this->_M_invalidate_after_nth(__offset);
+ 
+ 	  return iterator(__res, this);
+ 	}
+ 
+       constexpr iterator
+       insert(const_iterator __position, initializer_list<_Tp> __il)
+       {
+ 	if (std::is_constant_evaluated())
+ 	  return iterator(_Base::insert(__position.base(), __il), this);
+ 
+ 	__glibcxx_check_insert(__position);
+ 	const auto __size = size();
+ 	difference_type __offset = __position.base() - _Base::begin();
+ 	_Base_iterator __res = _Base::insert(__position.base(), __il);
+ 	if (size() > __size)
+ 	  this->_M_invalidate_after_nth(__offset);
+ 	return iterator(__res, this);
+       }
+ 
+       constexpr iterator
+       erase(const_iterator __position)
+       {
+ 	if (std::is_constant_evaluated())
+ 	  return iterator(_Base::erase(__position.base()), this);
+ 
+ 	__glibcxx_check_erase(__position);
+ 	difference_type __offset = __position.base() - _Base::cbegin();
+ 	_Base_iterator __res = _Base::erase(__position.base());
+ 	this->_M_invalidate_after_nth(__offset);
+ 	return iterator(__res, this);
+       }
+ 
+       constexpr iterator
+       erase(const_iterator __first, const_iterator __last)
+       {
+ 	if (std::is_constant_evaluated())
+ 	  return iterator(_Base::erase(__first.base(), __last.base()),
+ 			  this);
+ 
+ 	__glibcxx_check_erase_range(__first, __last);
+ 
+ 	if (__first.base() != __last.base())
+ 	  {
+ 	    difference_type __offset = __first.base() - _Base::cbegin();
+ 	    _Base_iterator __res = _Base::erase(__first.base(),
+ 						__last.base());
+ 	    this->_M_invalidate_after_nth(__offset);
+ 	    return { __res, this };
+ 	  }
+ 	else
+ 	  return { _Base::begin() + (__first.base() - _Base::cbegin()), this };
+       }
+ 
+       constexpr void
+       swap(inplace_vector& __x)
+       noexcept(is_nothrow_swappable_v<_Tp> && is_nothrow_move_constructible_v<_Tp>)
+       {
+ 	this->_M_invalidate_all();
+ 	__x._M_invalidate_all();
+ 	_Base::swap(__x);
+       }
+ 
+       constexpr void
+       clear() noexcept
+       {
+ 	_Base::clear();
+ 	this->_M_invalidate_all();
+       }
+ 
+       constexpr friend bool
+       operator==(const inplace_vector& __x, const inplace_vector& __y)
+       { return __x._M_base() == __y._M_base(); }
+ 
+       constexpr friend auto
+       operator<=>(const inplace_vector& __x, const inplace_vector& __y)
+       requires requires (const _Tp __t) {
+ 	{ __t < __t } -> __detail::__boolean_testable;
+       }
+       { return __x._M_base() <=> __y._M_base(); }
+ 
+       constexpr friend void
+       swap(inplace_vector& __x, inplace_vector& __y)
+       noexcept( noexcept(__x.swap(__y)) )
+       { __x.swap(__y); }
+ 
+     private:
+       constexpr _Base&
+       _M_base() noexcept { return *this; }
+ 
+       constexpr const _Base&
+       _M_base() const noexcept { return *this; }
+ 
+       constexpr void
+       _M_invalidate_after_nth(difference_type __n) noexcept
+       {
+ 	using _After_nth
+ 	  = __gnu_debug::_After_nth_from<_Base_const_iterator>;
+ 	this->_M_invalidate_if(_After_nth(__n, _Base::cbegin()));
+       }
+     };
+ 
+   // specialization for zero capacity, that is required to be trivally copyable
+   // and empty regardless of _Tp.
+   template<typename _Tp>
+     class inplace_vector<_Tp, 0>
+     : public _GLIBCXX_STD_C::inplace_vector<_Tp, 0>
+     {
+       using _Base = _GLIBCXX_STD_C::inplace_vector<_Tp, 0>;
+ 
+     public:
+       // types:
+       using value_type = _Base::value_type;
+       using pointer = _Base::pointer;
+       using const_pointer = _Base::const_pointer;
+       using reference = _Base::reference;
+       using const_reference = _Base::const_reference;
+       using size_type = _Base::size_type;
+       using difference_type = _Base::difference_type;
+       using iterator = _Base::iterator;
+       using const_iterator = _Base::const_iterator;
+       using reverse_iterator = _Base::reverse_iterator;
+       using const_reverse_iterator = _Base::const_reverse_iterator;
+ 
+       inplace_vector() = default;
+ 
+       constexpr explicit
+       inplace_vector(size_type __n) : _Base(__n) { }
+ 
+       constexpr
+       inplace_vector(size_type __n, const _Tp& __value)
+ 	: _Base(__n, __value) { }
+ 
+       template<__any_input_iterator _InputIterator>
+ 	constexpr
+ 	inplace_vector(_InputIterator __first, _InputIterator __last)
+ 	: _Base(__gnu_debug::__base(
+ 		  __glibcxx_check_valid_constructor_range(__first, __last)),
+ 		__gnu_debug::__base(__last)) { }
+ 
+       template <__detail::__container_compatible_range<_Tp> _Rg>
+ 	constexpr
+ 	inplace_vector(from_range_t, _Rg&& __rg)
+ 	  : _Base(from_range_t{}, std::forward<_Rg>(__rg)) { }
+ 
+       constexpr
+       inplace_vector(initializer_list<_Tp> __il)
+ 	: _Base(__il) { }
+ 
+       inplace_vector(const inplace_vector&) = default;
+       inplace_vector(inplace_vector&&) = default;
+ 
+       constexpr
+       ~inplace_vector() = default;
+ 
+       inplace_vector&
+       operator=(const inplace_vector&) = default;
+ 
+       inplace_vector&
+       operator=(inplace_vector&&) = default;
+ 
+       constexpr inplace_vector&
+       operator=(initializer_list<_Tp> __il)
+       {
+ 	_Base::operator=(__il);
+ 	return *this;
+       }
+ 
+       constexpr void
+       swap(inplace_vector& __x)
+       noexcept
+       { }
+     };
+ } // namespace __debug
+ 
+ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+ 
+   template<typename _Tp, size_t _Nm, typename _Predicate>
+     constexpr size_t
+     erase_if(__debug::inplace_vector<_Tp, _Nm>& __cont, _Predicate __pred)
+     {
+       if constexpr (_Nm != 0)
+ 	{
+ 	  _GLIBCXX_STD_C::inplace_vector<_Tp, _Nm>& __ucont = __cont;
+ 	  const auto __osz = __cont.size();
+ 	  const auto __end = __ucont.end();
+ 	  auto __removed = std::__remove_if(__ucont.begin(), __end,
+ 					    std::move(__pred));
+ 	  if (__removed != __end)
+ 	    {
+ 	      __cont.erase(__niter_wrap(__cont.cbegin(), __removed),
+ 			   __cont.cend());
+ 	      return __osz - __cont.size();
+ 	    }
+ 	}
+ 
+       return 0;
+     }
+ 
+   template<typename _Tp, size_t _Nm, typename _Up = _Tp>
+     constexpr size_t
+     erase(__debug::inplace_vector<_Tp, _Nm>& __cont, const _Up& __value)
+     { return std::erase_if(__cont, __gnu_cxx::__ops::__equal_to(__value)); }
+ 
+ _GLIBCXX_END_NAMESPACE_VERSION
+ } // namespace std
+ 
+ #endif // __glibcxx_inplace_vector
+ #endif // _GLIBCXX_DEBUG_INPLACE_VECTOR
diff -Nrcpad gcc-16-20251130/libstdc++-v3/include/debug/safe_base.h gcc-16-20251207/libstdc++-v3/include/debug/safe_base.h
*** gcc-16-20251130/libstdc++-v3/include/debug/safe_base.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libstdc++-v3/include/debug/safe_base.h	Sun Dec  7 22:32:18 2025
*************** namespace __gnu_debug
*** 254,265 ****
      /** Notify all iterators that reference this sequence that the
  	sequence is being destroyed. */
      _GLIBCXX20_CONSTEXPR
!     ~_Safe_sequence_base()
      {
        if (!std::__is_constant_evaluated())
  	this->_M_detach_all();
      }
  
      /** Detach all iterators, leaving them singular. */
      void
      _M_detach_all() const;
--- 254,283 ----
      /** Notify all iterators that reference this sequence that the
  	sequence is being destroyed. */
      _GLIBCXX20_CONSTEXPR
!     ~_Safe_sequence_base() _GLIBCXX_NOEXCEPT
      {
        if (!std::__is_constant_evaluated())
  	this->_M_detach_all();
      }
  
+     // Copy assignment invalidate all iterators.
+     _GLIBCXX20_CONSTEXPR _Safe_sequence_base&
+     operator=(const _Safe_sequence_base&) _GLIBCXX_NOEXCEPT
+     {
+       _M_invalidate_all();
+       return *this;
+     }
+ 
+ #if __cplusplus >= 201103L
+     _GLIBCXX20_CONSTEXPR _Safe_sequence_base&
+     operator=(_Safe_sequence_base&& __x) noexcept
+     {
+       _M_invalidate_all();
+       __x._M_invalidate_all();
+       return *this;
+     }
+ #endif
+ 
      /** Detach all iterators, leaving them singular. */
      void
      _M_detach_all() const;
*************** namespace __gnu_debug
*** 292,298 ****
      _M_get_mutex() const _GLIBCXX_USE_NOEXCEPT;
  
      /** Invalidates all iterators. */
!     void
      _M_invalidate_all() const
      { if (++_M_version == 0) _M_version = 1; }
  
--- 310,316 ----
      _M_get_mutex() const _GLIBCXX_USE_NOEXCEPT;
  
      /** Invalidates all iterators. */
!     _GLIBCXX20_CONSTEXPR void
      _M_invalidate_all() const
      { if (++_M_version == 0) _M_version = 1; }
  
diff -Nrcpad gcc-16-20251130/libstdc++-v3/include/debug/safe_container.h gcc-16-20251207/libstdc++-v3/include/debug/safe_container.h
*** gcc-16-20251130/libstdc++-v3/include/debug/safe_container.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libstdc++-v3/include/debug/safe_container.h	Sun Dec  7 22:32:18 2025
*************** namespace __gnu_debug
*** 86,102 ****
        { }
  #endif
  
!       // Copy assignment invalidate all iterators.
!       _GLIBCXX20_CONSTEXPR
        _Safe_container&
!       operator=(const _Safe_container&) _GLIBCXX_NOEXCEPT
        {
! 	if (!std::__is_constant_evaluated())
! 	  this->_M_invalidate_all();
  	return *this;
        }
  
! #if __cplusplus >= 201103L
        _GLIBCXX20_CONSTEXPR
        _Safe_container&
        operator=(_Safe_container&& __x) noexcept
--- 86,107 ----
        { }
  #endif
  
! #if __cplusplus < 201103L
        _Safe_container&
!       operator=(const _Safe_container& __x)
        {
! 	_Base::operator=(__x);
  	return *this;
        }
  
!       void
!       _M_swap(const _Safe_container& __x) const throw()
!       { _Base::_M_swap(__x); }
! #else
!       _GLIBCXX20_CONSTEXPR
!       _Safe_container&
!       operator=(const _Safe_container&) noexcept = default;
! 
        _GLIBCXX20_CONSTEXPR
        _Safe_container&
        operator=(_Safe_container&& __x) noexcept
*************** namespace __gnu_debug
*** 146,155 ****
  
  	_M_swap_base(__x);
        }
- #else
-       void
-       _M_swap(const _Safe_container& __x) const throw()
-       { _Base::_M_swap(__x); }
  #endif
      };
  
--- 151,156 ----
diff -Nrcpad gcc-16-20251130/libstdc++-v3/include/debug/safe_iterator.h gcc-16-20251207/libstdc++-v3/include/debug/safe_iterator.h
*** gcc-16-20251130/libstdc++-v3/include/debug/safe_iterator.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libstdc++-v3/include/debug/safe_iterator.h	Sun Dec  7 22:32:18 2025
*************** namespace __gnu_debug
*** 1114,1134 ****
  
    /** Safe iterators know how to check if they form a valid range. */
    template<typename _Iterator, typename _Sequence, typename _Category>
      inline bool
      __valid_range(const _Safe_iterator<_Iterator, _Sequence,
  				       _Category>& __first,
  		  const _Safe_iterator<_Iterator, _Sequence,
  				       _Category>& __last,
  		  typename _Distance_traits<_Iterator>::__type& __dist)
!     { return __first._M_valid_range(__last, __dist); }
  
    template<typename _Iterator, typename _Sequence, typename _Category>
      inline bool
      __valid_range(const _Safe_iterator<_Iterator, _Sequence,
  				       _Category>& __first,
  		  const _Safe_iterator<_Iterator, _Sequence,
  				       _Category>& __last)
      {
        typename _Distance_traits<_Iterator>::__type __dist;
        return __first._M_valid_range(__last, __dist);
      }
--- 1114,1144 ----
  
    /** Safe iterators know how to check if they form a valid range. */
    template<typename _Iterator, typename _Sequence, typename _Category>
+     _GLIBCXX20_CONSTEXPR
      inline bool
      __valid_range(const _Safe_iterator<_Iterator, _Sequence,
  				       _Category>& __first,
  		  const _Safe_iterator<_Iterator, _Sequence,
  				       _Category>& __last,
  		  typename _Distance_traits<_Iterator>::__type& __dist)
!     {
!       if (std::__is_constant_evaluated())
! 	return true;
! 
!       return __first._M_valid_range(__last, __dist);
!     }
  
    template<typename _Iterator, typename _Sequence, typename _Category>
+     _GLIBCXX20_CONSTEXPR
      inline bool
      __valid_range(const _Safe_iterator<_Iterator, _Sequence,
  				       _Category>& __first,
  		  const _Safe_iterator<_Iterator, _Sequence,
  				       _Category>& __last)
      {
+       if (std::__is_constant_evaluated())
+ 	return true;
+ 
        typename _Distance_traits<_Iterator>::__type __dist;
        return __first._M_valid_range(__last, __dist);
      }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/include/debug/safe_sequence.h gcc-16-20251207/libstdc++-v3/include/debug/safe_sequence.h
*** gcc-16-20251130/libstdc++-v3/include/debug/safe_sequence.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libstdc++-v3/include/debug/safe_sequence.h	Sun Dec  7 22:32:18 2025
*************** namespace __gnu_debug
*** 46,51 ****
--- 46,52 ----
        _Type __value;
  
      public:
+       _GLIBCXX20_CONSTEXPR
        explicit _Not_equal_to(const _Type& __v) : __value(__v) { }
  
        bool
*************** namespace __gnu_debug
*** 61,66 ****
--- 62,68 ----
        _Type __value;
  
      public:
+       _GLIBCXX20_CONSTEXPR
        explicit _Equal_to(const _Type& __v) : __value(__v) { }
  
        bool
*************** namespace __gnu_debug
*** 80,85 ****
--- 82,88 ----
        difference_type _M_n;
  
      public:
+       _GLIBCXX20_CONSTEXPR
        _After_nth_from(const difference_type& __n, const _Iterator& __base)
        : _M_base(__base), _M_n(__n) { }
  
*************** namespace __gnu_debug
*** 113,119 ****
  	  true. @c __pred will be invoked with the normal iterators nested
  	  in the safe ones. */
        template<typename _Predicate>
! 	void
  	_M_invalidate_if(_Predicate __pred) const;
  
        /** Transfers all iterators @c x that reference @c from sequence,
--- 116,122 ----
  	  true. @c __pred will be invoked with the normal iterators nested
  	  in the safe ones. */
        template<typename _Predicate>
! 	_GLIBCXX20_CONSTEXPR void
  	_M_invalidate_if(_Predicate __pred) const;
  
        /** Transfers all iterators @c x that reference @c from sequence,
*************** namespace __gnu_debug
*** 132,141 ****
      class _Safe_node_sequence
      : public _Safe_sequence<_Sequence>
      {
      protected:
!       void
        _M_invalidate_all() const
        {
  	typedef typename _Sequence::const_iterator _Const_iterator;
  	typedef typename _Const_iterator::iterator_type _Base_const_iterator;
  	typedef __gnu_debug::_Not_equal_to<_Base_const_iterator> _Not_equal;
--- 135,169 ----
      class _Safe_node_sequence
      : public _Safe_sequence<_Sequence>
      {
+     public:
+ #if __cplusplus >= 201103L
+     _Safe_node_sequence() = default;
+     _Safe_node_sequence(_Safe_node_sequence&&) = default;
+     _Safe_node_sequence(_Safe_node_sequence const&) = default;
+ 
+     _GLIBCXX20_CONSTEXPR _Safe_node_sequence&
+     operator=(_Safe_node_sequence&& __x) noexcept
+     {
+       _M_invalidate_all();
+       __x._M_invalidate_all();
+       return *this;
+     }
+ #endif
+ 
+     _GLIBCXX20_CONSTEXPR _Safe_node_sequence&
+     operator=(const _Safe_node_sequence&) _GLIBCXX_NOEXCEPT
+     {
+       _M_invalidate_all();
+       return *this;
+     }
+ 
      protected:
!       _GLIBCXX20_CONSTEXPR void
        _M_invalidate_all() const
        {
+ 	if (std::__is_constant_evaluated())
+ 	  return;
+ 
  	typedef typename _Sequence::const_iterator _Const_iterator;
  	typedef typename _Const_iterator::iterator_type _Base_const_iterator;
  	typedef __gnu_debug::_Not_equal_to<_Base_const_iterator> _Not_equal;
diff -Nrcpad gcc-16-20251130/libstdc++-v3/include/debug/safe_sequence.tcc gcc-16-20251207/libstdc++-v3/include/debug/safe_sequence.tcc
*** gcc-16-20251130/libstdc++-v3/include/debug/safe_sequence.tcc	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libstdc++-v3/include/debug/safe_sequence.tcc	Sun Dec  7 22:32:18 2025
*************** namespace __gnu_debug
*** 33,42 ****
  {
    template<typename _Sequence>
      template<typename _Predicate>
!       void
        _Safe_sequence<_Sequence>::
        _M_invalidate_if(_Predicate __pred) const
        {
  	typedef typename _Sequence::iterator iterator;
  	typedef typename _Sequence::const_iterator const_iterator;
  
--- 33,45 ----
  {
    template<typename _Sequence>
      template<typename _Predicate>
!       _GLIBCXX20_CONSTEXPR void
        _Safe_sequence<_Sequence>::
        _M_invalidate_if(_Predicate __pred) const
        {
+ 	if (std::__is_constant_evaluated())
+ 	  return;
+ 
  	typedef typename _Sequence::iterator iterator;
  	typedef typename _Sequence::const_iterator const_iterator;
  
diff -Nrcpad gcc-16-20251130/libstdc++-v3/include/debug/safe_unordered_base.h gcc-16-20251207/libstdc++-v3/include/debug/safe_unordered_base.h
*** gcc-16-20251130/libstdc++-v3/include/debug/safe_unordered_base.h	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libstdc++-v3/include/debug/safe_unordered_base.h	Sun Dec  7 22:32:18 2025
*************** namespace __gnu_debug
*** 162,167 ****
--- 162,173 ----
      : _Safe_unordered_container_base()
      { this->_M_swap(__x); }
  
+     _Safe_unordered_container_base&
+     operator=(_Safe_unordered_container_base const&) = default;
+     
+     _Safe_unordered_container_base&
+     operator=(_Safe_unordered_container_base&&) = default;
+ 
      /** Notify all iterators that reference this container that the
  	container is being destroyed. */
      ~_Safe_unordered_container_base() noexcept
diff -Nrcpad gcc-16-20251130/libstdc++-v3/include/std/atomic gcc-16-20251207/libstdc++-v3/include/std/atomic
*** gcc-16-20251130/libstdc++-v3/include/std/atomic	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libstdc++-v3/include/std/atomic	Sun Dec  7 22:32:18 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 406,426 ****
        void
        wait(_Tp __old, memory_order __m = memory_order_seq_cst) const noexcept
        {
! 	std::__atomic_wait_address_v(&_M_i, __old,
! 			   [__m, this] { return this->load(__m); });
        }
  
        // TODO add const volatile overload
  
        void
        notify_one() noexcept
!       { std::__atomic_notify_address(&_M_i, false); }
  
        void
        notify_all() noexcept
!       { std::__atomic_notify_address(&_M_i, true); }
  #endif // __cpp_lib_atomic_wait
- 
      };
  
    /// Partial specialization for pointer types.
--- 406,425 ----
        void
        wait(_Tp __old, memory_order __m = memory_order_seq_cst) const noexcept
        {
! 	std::__atomic_wait_address_v(std::addressof(_M_i), __old,
! 				     [__m, this] { return this->load(__m); });
        }
  
        // TODO add const volatile overload
  
        void
        notify_one() noexcept
!       { std::__atomic_notify_address(std::addressof(_M_i), false); }
  
        void
        notify_all() noexcept
!       { std::__atomic_notify_address(std::addressof(_M_i), true); }
  #endif // __cpp_lib_atomic_wait
      };
  
    /// Partial specialization for pointer types.
diff -Nrcpad gcc-16-20251130/libstdc++-v3/include/std/deque gcc-16-20251207/libstdc++-v3/include/std/deque
*** gcc-16-20251130/libstdc++-v3/include/std/deque	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libstdc++-v3/include/std/deque	Sun Dec  7 22:32:18 2025
*************** namespace std _GLIBCXX_VISIBILITY(defaul
*** 100,118 ****
  _GLIBCXX_BEGIN_NAMESPACE_VERSION
  
    template<typename _Tp, typename _Alloc, typename _Predicate>
!     inline typename deque<_Tp, _Alloc>::size_type
!     erase_if(deque<_Tp, _Alloc>& __cont, _Predicate __pred)
      {
-       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,
  					std::move(__pred));
        if (__removed != __end)
  	{
! 	  __cont.erase(__niter_wrap(__cont.begin(), __removed),
! 		       __cont.end());
  	  return __osz - __cont.size();
  	}
  
--- 100,115 ----
  _GLIBCXX_BEGIN_NAMESPACE_VERSION
  
    template<typename _Tp, typename _Alloc, typename _Predicate>
!     inline typename _GLIBCXX_STD_C::deque<_Tp, _Alloc>::size_type
!     erase_if(_GLIBCXX_STD_C::deque<_Tp, _Alloc>& __cont, _Predicate __pred)
      {
        const auto __osz = __cont.size();
!       const auto __end = __cont.end();
!       auto __removed = std::__remove_if(__cont.begin(), __end,
  					std::move(__pred));
        if (__removed != __end)
  	{
! 	  __cont.erase(__removed, __end);
  	  return __osz - __cont.size();
  	}
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 121,128 ****
  
    template<typename _Tp, typename _Alloc,
  	   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
--- 118,125 ----
  
    template<typename _Tp, typename _Alloc,
  	   typename _Up _GLIBCXX26_DEF_VAL_T(_Tp)>
!     inline typename _GLIBCXX_STD_C::deque<_Tp, _Alloc>::size_type
!     erase(_GLIBCXX_STD_C::deque<_Tp, _Alloc>& __cont, const _Up& __value)
      { return std::erase_if(__cont, __gnu_cxx::__ops::__equal_to(__value)); }
  
  _GLIBCXX_END_NAMESPACE_VERSION
diff -Nrcpad gcc-16-20251130/libstdc++-v3/include/std/flat_map gcc-16-20251207/libstdc++-v3/include/std/flat_map
*** gcc-16-20251130/libstdc++-v3/include/std/flat_map	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libstdc++-v3/include/std/flat_map	Sun Dec  7 22:32:18 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 953,959 ****
      public:
        using iterator_category = input_iterator_tag;
        using iterator_concept  = random_access_iterator_tag;
!       using value_type        = pair<const key_type, mapped_type>;
        using reference         = pair<const key_type&,
  				     ranges::__maybe_const_t<_Const, mapped_type>&>;
        using difference_type   = ptrdiff_t;
--- 953,959 ----
      public:
        using iterator_category = input_iterator_tag;
        using iterator_concept  = random_access_iterator_tag;
!       using value_type        = pair<key_type, mapped_type>;
        using reference         = pair<const key_type&,
  				     ranges::__maybe_const_t<_Const, mapped_type>&>;
        using difference_type   = ptrdiff_t;
diff -Nrcpad gcc-16-20251130/libstdc++-v3/include/std/functional gcc-16-20251207/libstdc++-v3/include/std/functional
*** gcc-16-20251130/libstdc++-v3/include/std/functional	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libstdc++-v3/include/std/functional	Sun Dec  7 22:32:18 2025
***************
*** 64,69 ****
--- 64,70 ----
  #define __glibcxx_want_not_fn
  #define __glibcxx_want_ranges
  #define __glibcxx_want_reference_wrapper
+ #define __glibcxx_want_common_reference_wrapper
  #define __glibcxx_want_transparent_operators
  #include <bits/version.h>
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 495,500 ****
--- 496,523 ----
  # define _GLIBCXX_DEPR_BIND
  #endif
  
+ #if _GLIBCXX_EXPLICIT_THIS_PARAMETER
+   // Return a _Up that has the same cv-quals as _Tp.
+   template<typename _Tp, typename _Up> // _Up should be cv-unqualified
+     struct __cv_like
+     { using type = _Up; };
+ 
+   template<typename _Tp, typename _Up>
+     struct __cv_like<const _Tp, _Up>
+     { using type = const _Up; };
+ 
+   template<typename _Tp, typename _Up>
+     struct __cv_like<volatile _Tp, _Up>
+     { using type = volatile _Up; };
+ 
+   template<typename _Tp, typename _Up>
+     struct __cv_like<const volatile _Tp, _Up>
+     { using type = const volatile _Up; };
+ 
+   template<typename _Tp, typename _Up>
+     using __cv_like_t = typename __cv_like<_Tp, _Up>::type;
+ #endif
+ 
    /// Type of the function object returned from bind().
    template<typename _Signature>
      class _Bind;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 564,569 ****
--- 587,593 ----
  	using _Res_type_impl
  	  = __invoke_result_t<_Fn&, _Mu_type<_BArgs, _CallArgs>&&...>;
  
+ #if !_GLIBCXX_EXPLICIT_THIS_PARAMETER
        template<typename _CallArgs>
  	using _Res_type = _Res_type_impl<_Functor, _CallArgs, _Bound_args...>;
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 576,581 ****
--- 600,606 ----
  	  typename __cv_quals<__dependent<_CallArgs>>::type,
  	  _CallArgs,
  	  typename __cv_quals<_Bound_args>::type...>;
+ #endif
  
       public:
        template<typename... _Args>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 593,598 ****
--- 618,680 ----
        _Bind(const _Bind&) = default;
        _Bind(_Bind&&) = default;
  
+ #if _GLIBCXX_EXPLICIT_THIS_PARAMETER
+ # pragma GCC diagnostic push
+ # pragma GCC diagnostic ignored "-Wc++17-extensions" // if constexpr
+ # pragma GCC diagnostic ignored "-Wc++23-extensions" // deducing this
+       template<typename... _Args,
+ 	       typename _Self,
+ 	       typename _Self_nonref = typename remove_reference<_Self>::type,
+ 	       __enable_if_t<!is_volatile<_Self_nonref>::value, int> = 0,
+ 	       typename _Result
+ 		 = _Res_type_impl<__cv_like_t<_Self_nonref, _Functor>,
+ 				  tuple<_Args...>,
+ 				  __cv_like_t<_Self_nonref, _Bound_args>...>>
+ 	_GLIBCXX20_CONSTEXPR
+ 	_Result
+ 	operator()(this _Self&& __self, _Args&&... __args)
+ 	{
+ 	  using _Bind_ref = __cv_like_t<_Self_nonref, _Bind>&;
+ 	  if constexpr (is_const<_Self_nonref>::value)
+ 	    return _Bind_ref(__self)
+ 	      .template __call_c<_Result>(std::forward_as_tuple
+ 					  (std::forward<_Args>(__args)...),
+ 					  _Bound_indexes());
+ 	  else
+ 	    return _Bind_ref(__self)
+ 	      .template __call<_Result>(std::forward_as_tuple
+ 					(std::forward<_Args>(__args)...),
+ 					_Bound_indexes());
+ 	}
+ 
+ # if defined(_GLIBCXX_VOLATILE_BIND)
+       template<typename... _Args,
+ 	       typename _Self,
+ 	       typename _Self_nonref = typename remove_reference<_Self>::type,
+ 	       __enable_if_t<is_volatile<_Self_nonref>::value, int> = 0,
+ 	       typename _Result
+ 		 = _Res_type_impl<__cv_like_t<_Self_nonref, _Functor>,
+ 				  tuple<_Args...>,
+ 				  __cv_like_t<_Self_nonref, _Bound_args>...>>
+ 	_GLIBCXX_DEPR_BIND
+ 	_Result
+ 	operator()(this _Self&& __self, _Args&&... __args)
+ 	{
+ 	  using _Bind_ref = __cv_like_t<_Self_nonref, _Bind>&;
+ 	  if constexpr (is_const<_Self_nonref>::value)
+ 	    return _Bind_ref(__self)
+ 	      .template __call_c_v<_Result>(std::forward_as_tuple
+ 					    (std::forward<_Args>(__args)...),
+ 					    _Bound_indexes());
+ 	  else
+ 	    return _Bind_ref(__self)
+ 	      .template __call_v<_Result>(std::forward_as_tuple
+ 					  (std::forward<_Args>(__args)...),
+ 					  _Bound_indexes());
+ 	}
+ # endif
+ # pragma GCC diagnostic pop
+ #else
        // Call unqualified
        template<typename... _Args,
  	       typename _Result = _Res_type<tuple<_Args...>>>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 642,647 ****
--- 724,730 ----
  	      _Bound_indexes());
  	}
  #endif // volatile
+ #endif
      };
  
    /// Type of the function object returned from bind<R>().
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1056,1061 ****
--- 1139,1159 ----
        _Not_fn(_Not_fn&& __fn) = default;
        ~_Not_fn() = default;
  
+ #if _GLIBCXX_EXPLICIT_THIS_PARAMETER
+ # pragma GCC diagnostic push
+ # pragma GCC diagnostic ignored "-Wc++23-extensions" // deducing this
+       template<typename _Self, typename... _Args>
+       _GLIBCXX20_CONSTEXPR
+       decltype(_S_not<__inv_res_t<__like_t<_Self, _Fn>, _Args...>>())
+       operator()(this _Self&& __self, _Args&&... __args)
+       noexcept(__is_nothrow_invocable<__like_t<_Self, _Fn>, _Args...>::value
+ 	       && noexcept(_S_not<__inv_res_t<__like_t<_Self, _Fn>, _Args...>>()))
+       {
+ 	return !std::__invoke(__like_t<_Self, _Not_fn>(__self)._M_fn,
+ 			      std::forward<_Args>(__args)...);
+       }
+ # pragma GCC diagnostic pop
+ #else
        // Macro to define operator() with given cv-qualifiers ref-qualifiers,
        // forwarding _M_fn and the function arguments with the same qualifiers,
        // and deducing the return type and exception-specification.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1081,1086 ****
--- 1179,1185 ----
        _GLIBCXX_NOT_FN_CALL_OP( && )
        _GLIBCXX_NOT_FN_CALL_OP( const && )
  #undef _GLIBCXX_NOT_FN_CALL_OP
+ #endif
  
      private:
        _Fn _M_fn;
diff -Nrcpad gcc-16-20251130/libstdc++-v3/include/std/inplace_vector gcc-16-20251207/libstdc++-v3/include/std/inplace_vector
*** gcc-16-20251130/libstdc++-v3/include/std/inplace_vector	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libstdc++-v3/include/std/inplace_vector	Sun Dec  7 22:32:18 2025
***************
*** 35,41 ****
  #define __glibcxx_want_inplace_vector
  #include <bits/version.h>
  
! #ifdef __glibcxx_inplace_vector // C++ >= 26 
  #include <compare>
  #include <initializer_list>
  #include <bits/range_access.h>
--- 35,41 ----
  #define __glibcxx_want_inplace_vector
  #include <bits/version.h>
  
! #ifdef __glibcxx_inplace_vector // C++ >= 26
  #include <compare>
  #include <initializer_list>
  #include <bits/range_access.h>
***************
*** 49,54 ****
--- 49,55 ----
  namespace std _GLIBCXX_VISIBILITY(default)
  {
  _GLIBCXX_BEGIN_NAMESPACE_VERSION
+ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
  
    // [indirect], class template indirect
    template<typename _Tp, size_t _Nm>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1329,1360 ****
        { }
      };
  
    template<typename _Tp, size_t _Nm, typename _Predicate>
      constexpr size_t
!     erase_if(inplace_vector<_Tp, _Nm>& __cont, _Predicate __pred)
      {
!       using namespace __gnu_cxx;
!       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),
! 		       __cont.end());
! 	  return __osz - __cont.size();
  	}
        return 0;
      }
  
- 
    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
  
  #endif // __glibcxx_inplace_vector
  #endif // _GLIBCXX_INPLACE_VECTOR
--- 1330,1369 ----
        { }
      };
  
+ _GLIBCXX_END_NAMESPACE_CONTAINER
+ 
    template<typename _Tp, size_t _Nm, typename _Predicate>
      constexpr size_t
!     erase_if(_GLIBCXX_STD_C::inplace_vector<_Tp, _Nm>& __cont,
! 	     _Predicate __pred)
      {
!       if constexpr (_Nm != 0)
  	{
! 	  const auto __osz = __cont.size();
! 	  const auto __end = __cont.end();
! 	  auto __removed = std::__remove_if(__cont.begin(), __end,
! 					    std::move(__pred));
! 	  if (__removed != __end)
! 	    {
! 	      __cont.erase(__removed, __end);
! 	      return __osz - __cont.size();
! 	    }
  	}
+ 
        return 0;
      }
  
    template<typename _Tp, size_t _Nm, typename _Up = _Tp>
      constexpr  size_t
!     erase(_GLIBCXX_STD_C::inplace_vector<_Tp, _Nm>& __cont, const _Up& __value)
      { return std::erase_if(__cont, __gnu_cxx::__ops::__equal_to(__value)); }
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
  
+ #ifdef _GLIBCXX_DEBUG
+ # include <debug/inplace_vector>
+ #endif
+ 
  #endif // __glibcxx_inplace_vector
  #endif // _GLIBCXX_INPLACE_VECTOR
diff -Nrcpad gcc-16-20251130/libstdc++-v3/include/std/mdspan gcc-16-20251207/libstdc++-v3/include/std/mdspan
*** gcc-16-20251130/libstdc++-v3/include/std/mdspan	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libstdc++-v3/include/std/mdspan	Sun Dec  7 22:32:18 2025
***************
*** 38,52 ****
  #include <type_traits>
  #include <utility>
  
- #if __cplusplus > 202302L
- #include <bits/align.h>
- #endif
- 
  #define __glibcxx_want_mdspan
  #define __glibcxx_want_aligned_accessor
  #define __glibcxx_want_submdspan
  #include <bits/version.h>
  
  #ifdef __glibcxx_mdspan
  
  namespace std _GLIBCXX_VISIBILITY(default)
--- 38,57 ----
  #include <type_traits>
  #include <utility>
  
  #define __glibcxx_want_mdspan
  #define __glibcxx_want_aligned_accessor
  #define __glibcxx_want_submdspan
  #include <bits/version.h>
  
+ #if __glibcxx_aligned_accessor
+ #include <bits/align.h>
+ #endif
+ 
+ #if __glibcxx_submdspan
+ #include <tuple>
+ #endif
+ 
+ 
  #ifdef __glibcxx_mdspan
  
  namespace std _GLIBCXX_VISIBILITY(default)
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 826,831 ****
--- 831,896 ----
  	    return __impl(make_index_sequence<__rank>());
  	  }
        }
+ 
+ #ifdef __glibcxx_submdspan
+     template<typename _Tp>
+       constexpr bool __is_strided_slice = false;
+ 
+     template<typename _OffsetType, typename _ExtentType, typename _StrideType>
+       constexpr bool __is_strided_slice<strided_slice<_OffsetType,
+ 	  _ExtentType, _StrideType>> = true;
+ 
+     template<typename _IndexType, typename _OIndexType>
+       consteval bool
+       __is_representable_integer(_OIndexType __value)
+       {
+ 	constexpr auto __min = __gnu_cxx::__int_traits<_IndexType>::__min;
+ 	constexpr auto __max = __gnu_cxx::__int_traits<_IndexType>::__max;
+ 	return std::cmp_less_equal(__min, __value)
+ 	    && std::cmp_less_equal(__value, __max);
+       }
+ 
+     template<typename _Tp>
+       constexpr bool __is_constant_wrapper = false;
+ 
+     template<_CwFixedValue _Xv, typename _Tp>
+       constexpr bool __is_constant_wrapper<constant_wrapper<_Xv, _Tp>>
+ 	= true;
+ 
+     template<size_t _Index, typename _Extents>
+       constexpr auto
+       __extract_extent(const _Extents& __exts)
+       {
+ 	using _IndexType = typename _Extents::index_type;
+ 	return extents<_IndexType, _Extents::static_extent(_Index)>{
+ 	  __exts.extent(_Index)};
+       }
+ 
+     template<typename _IndexType, typename... _Slices>
+       consteval auto
+       __subrank()
+       {
+ 	return (static_cast<size_t>(!convertible_to<_Slices, _IndexType>)
+ 		+ ... + 0);
+       }
+ 
+     template<typename _IndexType, typename... _Slices>
+       consteval auto
+       __inv_map_rank()
+       {
+ 	constexpr auto __rank = sizeof...(_Slices);
+ 	constexpr auto __sub_rank = __subrank<_IndexType, _Slices...>();
+ 	auto __map = std::array<size_t, __sub_rank>{};
+ 	auto __is_int_like = std::array<bool, __rank>{
+ 	  convertible_to<_Slices, _IndexType>...};
+ 
+ 	size_t __i = 0;
+ 	for (size_t __k = 0; __k < __rank; ++__k)
+ 	  if (!__is_int_like[__k])
+ 	    __map[__i++] = __k;
+ 	return __map;
+       }
+ #endif // __glibcxx_submdspan
    }
  
    template<typename _Extents>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 870,876 ****
        // noexcept for consistency with other layouts.
        template<typename _OExtents>
  	requires is_constructible_v<extents_type, _OExtents>
! 	constexpr explicit(extents_type::rank() > 0)
  	mapping(const layout_stride::mapping<_OExtents>& __other) noexcept
  	: mapping(__other.extents(), __mdspan::__internal_ctor{})
  	{ __glibcxx_assert(*this == __other); }
--- 935,942 ----
        // noexcept for consistency with other layouts.
        template<typename _OExtents>
  	requires is_constructible_v<extents_type, _OExtents>
! 	constexpr explicit(!(extents_type::rank() == 0
! 	                     && is_convertible_v<_OExtents, extents_type>))
  	mapping(const layout_stride::mapping<_OExtents>& __other) noexcept
  	: mapping(__other.extents(), __mdspan::__internal_ctor{})
  	{ __glibcxx_assert(*this == __other); }
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1037,1043 ****
  
        template<typename _OExtents>
  	requires is_constructible_v<extents_type, _OExtents>
! 	constexpr explicit(extents_type::rank() > 0)
  	mapping(const layout_stride::mapping<_OExtents>& __other) noexcept
  	: mapping(__other.extents(), __mdspan::__internal_ctor{})
  	{ __glibcxx_assert(*this == __other); }
--- 1103,1110 ----
  
        template<typename _OExtents>
  	requires is_constructible_v<extents_type, _OExtents>
! 	constexpr explicit(!(extents_type::rank() == 0
! 	                     && is_convertible_v<_OExtents, extents_type>))
  	mapping(const layout_stride::mapping<_OExtents>& __other) noexcept
  	: mapping(__other.extents(), __mdspan::__internal_ctor{})
  	{ __glibcxx_assert(*this == __other); }
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1855,1872 ****
  
  	template<typename _OExtents>
  	  requires is_constructible_v<_OExtents, extents_type>
! 	  constexpr explicit(_OExtents::rank() > 0)
  	  mapping(const typename layout_stride::mapping<_OExtents>& __other)
  	  : _M_storage(__other)
  	  { __glibcxx_assert(*this == __other); }
  
! 	template<typename _LeftpadMapping>
! 	  requires __mdspan::__is_left_padded_mapping<_LeftpadMapping>
  	      && is_constructible_v<extents_type,
! 				    typename _LeftpadMapping::extents_type>
! 	  constexpr explicit(_S_rank > 1 && (padding_value != dynamic_extent
! 		|| _LeftpadMapping::padding_value == dynamic_extent))
! 	  mapping(const _LeftpadMapping& __other)
  	  : _M_storage(layout_left{}, __other)
  	  { }
  
--- 1922,1943 ----
  
  	template<typename _OExtents>
  	  requires is_constructible_v<_OExtents, extents_type>
! 	  constexpr explicit(!(_OExtents::rank() == 0
! 			       && is_convertible_v<_OExtents, extents_type>))
  	  mapping(const typename layout_stride::mapping<_OExtents>& __other)
  	  : _M_storage(__other)
  	  { __glibcxx_assert(*this == __other); }
  
! 	template<typename _LeftPaddedMapping>
! 	  requires __mdspan::__is_left_padded_mapping<_LeftPaddedMapping>
  	      && is_constructible_v<extents_type,
! 				    typename _LeftPaddedMapping::extents_type>
! 	  constexpr explicit(
! 	   !is_convertible_v<typename _LeftPaddedMapping::extents_type,
! 			     extents_type>
! 	   || _S_rank > 1 && (padding_value != dynamic_extent
! 		|| _LeftPaddedMapping::padding_value == dynamic_extent))
! 	  mapping(const _LeftPaddedMapping& __other)
  	  : _M_storage(layout_left{}, __other)
  	  { }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2016,2022 ****
  
  	template<typename _OExtents>
  	  requires is_constructible_v<_OExtents, extents_type>
! 	  constexpr explicit(_OExtents::rank() > 0)
  	  mapping(const typename layout_stride::mapping<_OExtents>& __other)
  	  : _M_storage(__other)
  	  { __glibcxx_assert(*this == __other); }
--- 2087,2094 ----
  
  	template<typename _OExtents>
  	  requires is_constructible_v<_OExtents, extents_type>
! 	  constexpr explicit(!(_OExtents::rank() == 0
! 			       && is_convertible_v<_OExtents, extents_type>))
  	  mapping(const typename layout_stride::mapping<_OExtents>& __other)
  	  : _M_storage(__other)
  	  { __glibcxx_assert(*this == __other); }
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2025,2032 ****
  	  requires __mdspan::__is_right_padded_mapping<_RightPaddedMapping>
  	      && is_constructible_v<extents_type,
  				    typename _RightPaddedMapping::extents_type>
! 	  constexpr explicit(_S_rank > 1 && (padding_value != dynamic_extent
! 		|| _RightPaddedMapping::padding_value == dynamic_extent))
  	  mapping(const _RightPaddedMapping& __other)
  	  : _M_storage(layout_right{}, __other)
  	  { }
--- 2097,2107 ----
  	  requires __mdspan::__is_right_padded_mapping<_RightPaddedMapping>
  	      && is_constructible_v<extents_type,
  				    typename _RightPaddedMapping::extents_type>
! 	  constexpr explicit(
! 	    !is_convertible_v<typename _RightPaddedMapping::extents_type,
! 			      extents_type>
! 	    || _S_rank > 1 && (padding_value != dynamic_extent
! 		 || _RightPaddedMapping::padding_value == dynamic_extent))
  	  mapping(const _RightPaddedMapping& __other)
  	  : _M_storage(layout_right{}, __other)
  	  { }
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2498,2503 ****
--- 2573,2799 ----
  	      typename _MappingType::extents_type,
  	      typename _MappingType::layout_type, _AccessorType>;
  
+ #if __glibcxx_submdspan
+   namespace __mdspan
+   {
+     template<typename _IndexType, typename _Slice>
+       constexpr auto
+       __canonical_index(_Slice&& __slice)
+       {
+ 	if constexpr (__detail::__integral_constant_like<_Slice>)
+ 	  {
+ 	    static_assert(__is_representable_integer<_IndexType>(_Slice::value));
+ 	    static_assert(_Slice::value >= 0);
+ 	    return std::cw<_IndexType(_Slice::value)>;
+ 	  }
+ 	else
+ 	  return __mdspan::__index_type_cast<_IndexType>(std::move(__slice));
+       }
+ 
+     template<typename _IndexType, typename _Slice>
+       constexpr auto
+       __slice_cast(_Slice&& __slice)
+       {
+ 	using _SliceType = remove_cvref_t<_Slice>;
+ 	if constexpr (is_convertible_v<_SliceType, full_extent_t>)
+ 	  return static_cast<full_extent_t>(std::move(__slice));
+ 	else if constexpr (is_convertible_v<_SliceType, _IndexType>)
+ 	  return __mdspan::__canonical_index<_IndexType>(std::move(__slice));
+ 	else if constexpr (__is_strided_slice<_SliceType>)
+ 	  {
+ 	    auto __extent
+ 	      = __mdspan::__canonical_index<_IndexType>(std::move(__slice.extent));
+ 	    auto __offset
+ 	      = __mdspan::__canonical_index<_IndexType>(std::move(__slice.offset));
+ 	    if constexpr (is_same_v<decltype(__extent),
+ 				    constant_wrapper<_IndexType(0)>>)
+ 	      return strided_slice{
+ 		.offset = __offset,
+ 		.extent = __extent,
+ 		.stride = cw<_IndexType(1)>
+ 	      };
+ 	    else
+ 	      return strided_slice{
+ 		.offset = __offset,
+ 		.extent = __extent,
+ 		.stride
+ 		  = __mdspan::__canonical_index<_IndexType>(std::move(__slice.stride))
+ 	      };
+ 	  }
+ 	else
+ 	  {
+ 	    auto [__sbegin, __send] = std::move(__slice);
+ 	    auto __offset
+ 	      = __mdspan::__canonical_index<_IndexType>(std::move(__sbegin));
+ 	    auto __end
+ 	      = __mdspan::__canonical_index<_IndexType>(std::move(__send));
+ 	    return strided_slice{
+ 	      .offset = __offset,
+ 	      .extent = __mdspan::__canonical_index<_IndexType>(__end - __offset),
+ 	      .stride = cw<_IndexType(1)>
+ 	    };
+ 	  }
+       }
+ 
+     template<typename _IndexType, size_t _Extent, typename _OIndexType>
+       constexpr void
+       __check_valid_index(const extents<_IndexType, _Extent>& __ext,
+ 			   const _OIndexType& __idx)
+       {
+ 	if constexpr (__is_constant_wrapper<_OIndexType>
+ 		      && _Extent != dynamic_extent)
+ 	  {
+ 	    static_assert(_OIndexType::value >= 0);
+ 	    static_assert(std::cmp_less_equal(_OIndexType::value, _Extent));
+ 	  }
+ 	else
+ 	  __glibcxx_assert(__idx <= __ext.extent(0));
+ }
+ 
+     template<typename _IndexType, size_t _Extent, typename _Slice>
+       constexpr void
+       __check_valid_slice(const extents<_IndexType, _Extent>& __ext,
+ 			   const _Slice& __slice)
+       {
+ 	if constexpr (__is_strided_slice<_Slice>)
+ 	  {
+ 	    // DEVIATION: For empty slices, P3663r3 does not allow us to check
+ 	    // that this is less than or equal to the k-th extent (at runtime).
+ 	    // We're only allowed to check if __slice.offset, __slice.extent
+ 	    // are constant wrappers and __ext is a static extent.
+ 	    __mdspan::__check_valid_index(__ext, __slice.offset);
+ 	    __mdspan::__check_valid_index(__ext, __slice.extent);
+ 
+ 	    if constexpr (__is_constant_wrapper<typename _Slice::extent_type>
+ 			  && __is_constant_wrapper<typename _Slice::stride_type>)
+ 	      static_assert(_Slice::stride_type::value > 0);
+ 	    else
+ 	      __glibcxx_assert(__slice.extent == 0 || __slice.stride > 0);
+ 
+ 	    if constexpr (__is_constant_wrapper<typename _Slice::offset_type>
+ 		&& __is_constant_wrapper<typename _Slice::extent_type>
+ 		&& _Extent != dynamic_extent)
+ 	      static_assert(std::cmp_greater_equal(
+ 		  _Extent - _Slice::offset_type::value,
+ 		  _Slice::extent_type::value));
+ 	    else
+ 	      __glibcxx_assert(__ext.extent(0) - __slice.offset
+ 			       >= __slice.extent);
+ 	  }
+ 	else if constexpr (__is_constant_wrapper<_Slice>
+ 			   && _Extent != dynamic_extent)
+ 	  static_assert(std::cmp_less(_Slice::value, _Extent));
+ 	else if constexpr (convertible_to<_Slice, _IndexType>)
+ 	  __glibcxx_assert(__slice < __ext.extent(0));
+       }
+ 
+     template<typename _Extents, typename... _Slices>
+       constexpr void
+       __check_valid_slices(const _Extents& __exts, const _Slices&... __slices)
+       {
+ 	constexpr auto __rank = _Extents::rank();
+ 	auto __impl = [&]<size_t... _Is>(index_sequence<_Is...>)
+ 	{
+ 	  ((__mdspan::__check_valid_slice(__extract_extent<_Is>(__exts),
+ 					  __slices...[_Is])),...);
+ 	};
+ 	__impl(make_index_sequence<__rank>());
+       }
+ 
+     template<typename _IndexType, size_t _Extent, typename _Slice>
+       consteval size_t
+       __static_slice_extent()
+       {
+ 	if constexpr (same_as<_Slice, full_extent_t>)
+ 	  return _Extent;
+ 	else if constexpr (same_as<_Slice, constant_wrapper<_IndexType(0)>>)
+ 	  return 0;
+ 	else if constexpr (__is_constant_wrapper<typename _Slice::extent_type>
+ 			&& __is_constant_wrapper<typename _Slice::stride_type>)
+ 	  return 1 + ((typename _Slice::extent_type{}) - 1)
+ 		   / (typename _Slice::stride_type{});
+ 	else
+ 	  return dynamic_extent;
+       }
+ 
+     template<size_t _K, typename _Extents, typename _Slice>
+       constexpr typename _Extents::index_type
+       __dynamic_slice_extent(const _Extents& __exts, _Slice __slice)
+       {
+ 	if constexpr (__is_strided_slice<_Slice>)
+ 	  return __slice.extent == 0 ? 0 : 1 + (__slice.extent - 1) / __slice.stride;
+ 	else
+ 	  return __exts.extent(_K);
+       }
+ 
+     template<typename _IndexType, size_t... _Extents, typename... _Slices>
+       requires (sizeof...(_Slices) == sizeof...(_Extents))
+       constexpr auto
+       __subextents(const extents<_IndexType, _Extents...>& __exts,
+ 		   _Slices... __slices)
+       {
+ 	constexpr auto __inv_map = __mdspan::__inv_map_rank<_IndexType, _Slices...>();
+ 	auto __impl = [&]<size_t... _Indices>(index_sequence<_Indices...>)
+ 	{
+ 	  using _SubExtents = extents<_IndexType,
+ 	      (__mdspan::__static_slice_extent<_IndexType,
+ 		 _Extents...[__inv_map[_Indices]],
+ 		 _Slices...[__inv_map[_Indices]]>())...>;
+ 	  if constexpr (_SubExtents::rank_dynamic() == 0)
+ 	    return _SubExtents{};
+ 	  else
+ 	    {
+ 	      using _StaticSubExtents = __mdspan::_StaticExtents<
+ 		__mdspan::__static_extents<_SubExtents>()>;
+ 	      auto __create = [&]<size_t... _Is>(index_sequence<_Is...>)
+ 	      {
+ 		constexpr auto __slice_idx = [__inv_map](size_t __i) consteval
+ 		{
+ 		  return __inv_map[_StaticSubExtents::_S_dynamic_index_inv(__i)];
+ 		};
+ 
+ 		return _SubExtents{
+ 		  (__mdspan::__dynamic_slice_extent<__slice_idx(_Is)>(
+ 		     __exts, __slices...[__slice_idx(_Is)]))...};
+ 	      };
+ 	      constexpr auto __dyn_subrank = _SubExtents::rank_dynamic();
+ 	      return __create(make_index_sequence<__dyn_subrank>());
+ 	    }
+ 	};
+ 
+ 	return __impl(make_index_sequence<__inv_map.size()>());
+       }
+   }
+ 
+   template<typename _IndexType, size_t... _Extents, typename... _RawSlices>
+     requires (sizeof...(_RawSlices) == sizeof...(_Extents))
+     constexpr auto
+     submdspan_extents(const extents<_IndexType, _Extents...>& __exts,
+ 		      _RawSlices... __raw_slices)
+     {
+       auto __impl = [&__exts](auto... __slices)
+       {
+ 	__mdspan::__check_valid_slices(__exts, __slices...);
+ 	return __mdspan::__subextents(__exts, __slices...);
+       };
+       return __impl(__mdspan::__slice_cast<_IndexType>(__raw_slices)...);
+     }
+ 
+   template<typename _IndexType, size_t... _Extents, typename... _RawSlices>
+     requires (sizeof...(_Extents) == sizeof...(_RawSlices))
+     constexpr auto
+     submdspan_canonicalize_slices(const extents<_IndexType, _Extents...>& __exts,
+ 				  _RawSlices... __raw_slices)
+     {
+       auto __impl = [&__exts](auto... __slices)
+       {
+ 	__mdspan::__check_valid_slices(__exts, __slices...);
+ 	return std::make_tuple(__slices...);
+       };
+       return __impl(__mdspan::__slice_cast<_IndexType>(__raw_slices)...);
+     }
+ #endif // __glibcxx_submdspan
+ 
  _GLIBCXX_END_NAMESPACE_VERSION
  }
  #endif
diff -Nrcpad gcc-16-20251130/libstdc++-v3/include/std/ranges gcc-16-20251207/libstdc++-v3/include/std/ranges
*** gcc-16-20251130/libstdc++-v3/include/std/ranges	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libstdc++-v3/include/std/ranges	Sun Dec  7 22:32:18 2025
*************** namespace views::__adaptor
*** 1259,1265 ****
  
        // Invoke _Adaptor with arguments __r, _M_args... according to the
        // value category of this _Partial object.
! #if __cpp_explicit_this_parameter
        template<typename _Self, typename _Range>
  	requires __adaptor_invocable<_Adaptor, _Range, __like_t<_Self, _Args>...>
  	constexpr auto
--- 1259,1267 ----
  
        // Invoke _Adaptor with arguments __r, _M_args... according to the
        // value category of this _Partial object.
! #if _GLIBCXX_EXPLICIT_THIS_PARAMETER
! # pragma GCC diagnostic push
! # pragma GCC diagnostic ignored "-Wc++23-extensions" // deducing this
        template<typename _Self, typename _Range>
  	requires __adaptor_invocable<_Adaptor, _Range, __like_t<_Self, _Args>...>
  	constexpr auto
*************** namespace views::__adaptor
*** 1268,1273 ****
--- 1270,1276 ----
  	  return _Binder::_S_call(__like_t<_Self, _Partial>(__self)._M_binder,
  				  std::forward<_Range>(__r));
  	}
+ # pragma GCC diagnostic pop
  #else
        template<typename _Range>
  	requires __adaptor_invocable<_Adaptor, _Range, const _Args&...>
*************** namespace views::__adaptor
*** 1336,1342 ****
  
        // Invoke _M_rhs(_M_lhs(__r)) according to the value category of this
        // range adaptor closure object.
! #if __cpp_explicit_this_parameter
        template<typename _Self, typename _Range>
  	requires __pipe_invocable<__like_t<_Self, _Lhs>, __like_t<_Self, _Rhs>, _Range>
  	constexpr auto
--- 1339,1347 ----
  
        // Invoke _M_rhs(_M_lhs(__r)) according to the value category of this
        // range adaptor closure object.
! #if _GLIBCXX_EXPLICIT_THIS_PARAMETER
! # pragma GCC diagnostic push
! # pragma GCC diagnostic ignored "-Wc++23-extensions" // deducing this
        template<typename _Self, typename _Range>
  	requires __pipe_invocable<__like_t<_Self, _Lhs>, __like_t<_Self, _Rhs>, _Range>
  	constexpr auto
*************** namespace views::__adaptor
*** 1346,1351 ****
--- 1351,1357 ----
  		  (__like_t<_Self, _Pipe>(__self)._M_lhs
  		   (std::forward<_Range>(__r))));
  	}
+ # pragma GCC diagnostic pop
  #else
        template<typename _Range>
  	requires __pipe_invocable<const _Lhs&, const _Rhs&, _Range>
diff -Nrcpad gcc-16-20251130/libstdc++-v3/include/std/string gcc-16-20251207/libstdc++-v3/include/std/string
*** gcc-16-20251130/libstdc++-v3/include/std/string	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libstdc++-v3/include/std/string	Sun Dec  7 22:32:18 2025
***************
*** 63,68 ****
--- 63,69 ----
  #define __glibcxx_want_erase_if
  #define __glibcxx_want_nonmember_container_access
  #define __glibcxx_want_string_resize_and_overwrite
+ #define __glibcxx_want_string_subview
  #define __glibcxx_want_string_udls
  #define __glibcxx_want_to_string
  #include <bits/version.h>
diff -Nrcpad gcc-16-20251130/libstdc++-v3/include/std/string_view gcc-16-20251207/libstdc++-v3/include/std/string_view
*** gcc-16-20251130/libstdc++-v3/include/std/string_view	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libstdc++-v3/include/std/string_view	Sun Dec  7 22:32:18 2025
***************
*** 40,48 ****
  #define __glibcxx_want_constexpr_char_traits
  #define __glibcxx_want_constexpr_string_view
  #define __glibcxx_want_freestanding_string_view
- #define __glibcxx_want_string_view
  #define __glibcxx_want_starts_ends_with
  #define __glibcxx_want_string_contains
  #include <bits/version.h>
  
  #if __cplusplus >= 201703L
--- 40,49 ----
  #define __glibcxx_want_constexpr_char_traits
  #define __glibcxx_want_constexpr_string_view
  #define __glibcxx_want_freestanding_string_view
  #define __glibcxx_want_starts_ends_with
  #define __glibcxx_want_string_contains
+ #define __glibcxx_want_string_subview
+ #define __glibcxx_want_string_view
  #include <bits/version.h>
  
  #if __cplusplus >= 201703L
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 342,347 ****
--- 343,355 ----
  	return basic_string_view{_M_str + __pos, __rlen};
        }
  
+ #ifdef __glibcxx_string_subview // >= C++26
+       [[nodiscard]]
+       constexpr basic_string_view
+       subview(size_type __pos = 0, size_type __n = npos) const
+       { return substr(__pos, __n); }
+ #endif
+ 
        [[nodiscard]]
        constexpr int
        compare(basic_string_view __str) const noexcept
diff -Nrcpad gcc-16-20251130/libstdc++-v3/include/std/type_traits gcc-16-20251207/libstdc++-v3/include/std/type_traits
*** gcc-16-20251130/libstdc++-v3/include/std/type_traits	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libstdc++-v3/include/std/type_traits	Sun Dec  7 22:32:18 2025
***************
*** 41,46 ****
--- 41,47 ----
  
  #define __glibcxx_want_bool_constant
  #define __glibcxx_want_bounded_array_traits
+ #define __glibcxx_want_common_reference
  #define __glibcxx_want_constant_wrapper
  #define __glibcxx_want_has_unique_object_representations
  #define __glibcxx_want_integral_constant_callable
*************** template<typename _Ret, typename _Fn, ty
*** 4225,4231 ****
      { using type = _Tp0; };
  
    /// @cond undocumented
!   template<typename _Tp1, typename _Tp2, int _Bullet = 1, typename = void>
      struct __common_reference_impl
      : __common_reference_impl<_Tp1, _Tp2, _Bullet + 1>
      { };
--- 4226,4232 ----
      { using type = _Tp0; };
  
    /// @cond undocumented
!   template<typename _Tp1, typename _Tp2, int _Bullet = 1>
      struct __common_reference_impl
      : __common_reference_impl<_Tp1, _Tp2, _Bullet + 1>
      { };
*************** template<typename _Ret, typename _Fn, ty
*** 4238,4283 ****
  
    // If T1 and T2 are reference types and COMMON-REF(T1, T2) is well-formed, ...
    template<typename _Tp1, typename _Tp2>
!     struct __common_reference_impl<_Tp1&, _Tp2&, 1,
! 				   void_t<__common_ref<_Tp1&, _Tp2&>>>
!     { using type = __common_ref<_Tp1&, _Tp2&>; };
! 
!   template<typename _Tp1, typename _Tp2>
!     struct __common_reference_impl<_Tp1&&, _Tp2&&, 1,
! 				   void_t<__common_ref<_Tp1&&, _Tp2&&>>>
!     { using type = __common_ref<_Tp1&&, _Tp2&&>; };
! 
!   template<typename _Tp1, typename _Tp2>
!     struct __common_reference_impl<_Tp1&, _Tp2&&, 1,
! 				   void_t<__common_ref<_Tp1&, _Tp2&&>>>
!     { using type = __common_ref<_Tp1&, _Tp2&&>; };
! 
!   template<typename _Tp1, typename _Tp2>
!     struct __common_reference_impl<_Tp1&&, _Tp2&, 1,
! 				   void_t<__common_ref<_Tp1&&, _Tp2&>>>
!     { using type = __common_ref<_Tp1&&, _Tp2&>; };
  
    // Otherwise, if basic_common_reference<...>::type is well-formed, ...
    template<typename _Tp1, typename _Tp2>
!     struct __common_reference_impl<_Tp1, _Tp2, 2,
! 				   void_t<__basic_common_ref<_Tp1, _Tp2>>>
      { using type = __basic_common_ref<_Tp1, _Tp2>; };
  
    // Otherwise, if COND-RES(T1, T2) is well-formed, ...
    template<typename _Tp1, typename _Tp2>
!     struct __common_reference_impl<_Tp1, _Tp2, 3,
! 				   void_t<__cond_res<_Tp1, _Tp2>>>
      { using type = __cond_res<_Tp1, _Tp2>; };
  
    // Otherwise, if common_type_t<T1, T2> is well-formed, ...
    template<typename _Tp1, typename _Tp2>
!     struct __common_reference_impl<_Tp1, _Tp2, 4,
! 				   void_t<common_type_t<_Tp1, _Tp2>>>
      { using type = common_type_t<_Tp1, _Tp2>; };
  
    // Otherwise, there shall be no member type.
    template<typename _Tp1, typename _Tp2>
!     struct __common_reference_impl<_Tp1, _Tp2, 5, void>
      { };
  
    // Otherwise, if sizeof...(T) is greater than two, ...
--- 4239,4276 ----
  
    // If T1 and T2 are reference types and COMMON-REF(T1, T2) is well-formed, ...
    template<typename _Tp1, typename _Tp2>
!     requires is_reference_v<_Tp1> && is_reference_v<_Tp2>
!       && requires { typename __common_ref<_Tp1, _Tp2>; }
! #if __cpp_lib_common_reference // C++ >= 20
!       && is_convertible_v<add_pointer_t<_Tp1>,
! 			  add_pointer_t<__common_ref<_Tp1, _Tp2>>>
!       && is_convertible_v<add_pointer_t<_Tp2>,
! 			  add_pointer_t<__common_ref<_Tp1, _Tp2>>>
! #endif
!     struct __common_reference_impl<_Tp1, _Tp2, 1>
!     { using type = __common_ref<_Tp1, _Tp2>; };
  
    // Otherwise, if basic_common_reference<...>::type is well-formed, ...
    template<typename _Tp1, typename _Tp2>
!     requires requires { typename __basic_common_ref<_Tp1, _Tp2>; }
!     struct __common_reference_impl<_Tp1, _Tp2, 2>
      { using type = __basic_common_ref<_Tp1, _Tp2>; };
  
    // Otherwise, if COND-RES(T1, T2) is well-formed, ...
    template<typename _Tp1, typename _Tp2>
!     requires requires { typename __cond_res<_Tp1, _Tp2>; }
!     struct __common_reference_impl<_Tp1, _Tp2, 3>
      { using type = __cond_res<_Tp1, _Tp2>; };
  
    // Otherwise, if common_type_t<T1, T2> is well-formed, ...
    template<typename _Tp1, typename _Tp2>
!     requires requires { typename common_type_t<_Tp1, _Tp2>; }
!     struct __common_reference_impl<_Tp1, _Tp2, 4>
      { using type = common_type_t<_Tp1, _Tp2>; };
  
    // Otherwise, there shall be no member type.
    template<typename _Tp1, typename _Tp2>
!     struct __common_reference_impl<_Tp1, _Tp2, 5>
      { };
  
    // Otherwise, if sizeof...(T) is greater than two, ...
*************** template<typename _Ret, typename _Fn, ty
*** 4296,4302 ****
      { };
    /// @endcond
  
! #endif // C++2a
  
  #if __cplusplus >= 201103L
    // Stores a tuple of indices.  Used by tuple and pair, and by bind() to
--- 4289,4295 ----
      { };
    /// @endcond
  
! #endif // C++20
  
  #if __cplusplus >= 201103L
    // Stores a tuple of indices.  Used by tuple and pair, and by bind() to
diff -Nrcpad gcc-16-20251130/libstdc++-v3/python/libstdcxx/v6/printers.py gcc-16-20251207/libstdc++-v3/python/libstdcxx/v6/printers.py
*** gcc-16-20251130/libstdc++-v3/python/libstdcxx/v6/printers.py	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libstdc++-v3/python/libstdcxx/v6/printers.py	Sun Dec  7 22:32:18 2025
*************** def lookup_templ_spec(templ, *args):
*** 133,139 ****
      """
      Lookup template specialization templ<args...>.
      """
!     t = '{}<{}>'.format(templ, ', '.join([str(a) for a in args]))
      try:
          return gdb.lookup_type(t)
      except gdb.error as e:
--- 133,143 ----
      """
      Lookup template specialization templ<args...>.
      """
!     # Similar to PR67440, str(a) might contain unexpected type qualifiers.
!     t = '{}<{}>'.format(templ, ', '.join([ \
!             a.tag if isinstance(a, gdb.Type) and a.tag \
!             else str(a) \
!         for a in args]))
      try:
          return gdb.lookup_type(t)
      except gdb.error as e:
diff -Nrcpad gcc-16-20251130/libstdc++-v3/src/c++20/atomic.cc gcc-16-20251207/libstdc++-v3/src/c++20/atomic.cc
*** gcc-16-20251130/libstdc++-v3/src/c++20/atomic.cc	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libstdc++-v3/src/c++20/atomic.cc	Sun Dec  7 22:32:18 2025
***************
*** 35,42 ****
  #include <bits/functional_hash.h>
  
  #ifdef _GLIBCXX_HAVE_LINUX_FUTEX
  # include <unistd.h>
- # include <syscall.h>
  # include <sys/time.h> // timespec
  # define _GLIBCXX_HAVE_PLATFORM_WAIT 1
  #endif
--- 35,42 ----
  #include <bits/functional_hash.h>
  
  #ifdef _GLIBCXX_HAVE_LINUX_FUTEX
+ # include <sys/syscall.h> // SYS_futex
  # include <unistd.h>
  # include <sys/time.h> // timespec
  # define _GLIBCXX_HAVE_PLATFORM_WAIT 1
  #endif
*************** namespace __detail
*** 50,105 ****
  {
  namespace
  {
! #ifdef _GLIBCXX_HAVE_LINUX_FUTEX
!   enum class __futex_wait_flags : int
!   {
! #ifdef _GLIBCXX_HAVE_LINUX_FUTEX_PRIVATE
!     __private_flag = 128,
! #else
!     __private_flag = 0,
! #endif
!     __wait = 0,
!     __wake = 1,
!     __wait_bitset = 9,
!     __wake_bitset = 10,
!     __wait_private = __wait | __private_flag,
!     __wake_private = __wake | __private_flag,
!     __wait_bitset_private = __wait_bitset | __private_flag,
!     __wake_bitset_private = __wake_bitset | __private_flag,
!     __bitset_match_any = -1
!   };
  
    void
    __platform_wait(const int* addr, int val, int /* obj_size */) noexcept
    {
!     if (syscall(SYS_futex, addr,
! 		static_cast<int>(__futex_wait_flags::__wait_private),
! 		val, nullptr))
        if (errno != EAGAIN && errno != EINTR)
  	__throw_system_error(errno);
    }
  
    void
!   __platform_notify(const int* addr, bool all, int) noexcept
    {
!     syscall(SYS_futex, addr,
! 	    static_cast<int>(__futex_wait_flags::__wake_private),
! 	    all ? INT_MAX : 1);
    }
  
    // returns true if wait ended before timeout
    bool
!   __platform_wait_until(const __platform_wait_t* addr,
! 			__platform_wait_t val,
! 			const __wait_clock_t::time_point& __atime,
  			int /* obj_size */) noexcept
    {
!     struct timespec timeout = chrono::__to_timeout_timespec(__atime);
  
!     if (syscall(SYS_futex, addr,
! 		static_cast<int>(__futex_wait_flags::__wait_bitset_private),
! 		val, &timeout, nullptr,
! 		static_cast<int>(__futex_wait_flags::__bitset_match_any)))
        {
  	if (errno == ETIMEDOUT)
  	  return false;
--- 50,133 ----
  {
  namespace
  {
! #ifndef _GLIBCXX_HAVE_PLATFORM_WAIT
! 
!   // If _GLIBCXX_HAVE_PLATFORM_WAIT is defined then the following three
!   // functions should be defined in terms of platform-specific wait/wake
!   // primitives. The `obj_size` parameter is the size in bytes of the object
!   // at `*addr` (used if the platform supports waiting on more than one size,
!   // in which case `addr` would be cast to a different type).
! 
!   // Deleted definitions are here to give better errors if these functions
!   // are used when _GLIBCXX_HAVE_PLATFORM_WAIT is not defined.
! 
!   // Wait until *addr != curr_val.
!   // Once a thread is waiting, it will not unblock and notice the value
!   // has changed unless explicitly notified using `__platform_notify`.
!   void
!   __platform_wait(const __platform_wait_t* addr,
! 		  __platform_wait_t curr_val,
! 		  int obj_size) = delete;
! 
!   // Wake one thread that is waiting for `*addr` to change,
!   // or all waiting threads if `wake_all` is true.
!   void
!   __platform_notify(const __platform_wait_t* addr,
! 		    bool wake_all,
! 		    int obj_size) = delete;
! 
!   // As `__platform_wait` but with timeout.
!   // Returns true if the wait ended before the timeout (which could be because
!   // the value changed and __platform_notify was called, but could be because
!   // the wait was interrupted by a signal, or just a spurious wake).
!   // Returns false if the timeout was reached.
!   bool
!   __platform_wait_until(const __platform_wait_t* addr,
! 			__platform_wait_t curr_val,
! 			__wait_clock_t::time_point timeout,
! 			int obj_size) = delete;
! 
! #elif defined _GLIBCXX_HAVE_LINUX_FUTEX
! 
!   const int futex_private_flag = 128;
  
    void
    __platform_wait(const int* addr, int val, int /* obj_size */) noexcept
    {
!     const int futex_op_wait = 0;
!     const int futex_op_wait_private = futex_op_wait | futex_private_flag;
! 
!     if (syscall(SYS_futex, addr, futex_op_wait_private, val, nullptr))
        if (errno != EAGAIN && errno != EINTR)
  	__throw_system_error(errno);
    }
  
    void
!   __platform_notify(const int* addr, bool all, int /* obj_size */) noexcept
    {
!     const int futex_op_wake = 1;
!     const int futex_op_wake_private = futex_op_wake | futex_private_flag;
! 
!     syscall(SYS_futex, addr, futex_op_wake_private, all ? INT_MAX : 1);
    }
  
    // returns true if wait ended before timeout
    bool
!   __platform_wait_until(const int* addr, int val,
! 			const __wait_clock_t::time_point& abs_time,
  			int /* obj_size */) noexcept
    {
!     // FUTEX_WAIT expects a relative timeout, so must use FUTEX_WAIT_BITSET
!     // for an absolute timeout.
!     const int futex_op_wait_bitset = 9;
!     const int futex_op_wait_bitset_private
!       = futex_op_wait_bitset | futex_private_flag;
!     const int futex_bitset_match_any = 0xffffffff;
  
!     struct timespec timeout = chrono::__to_timeout_timespec(abs_time);
! 
!     if (syscall(SYS_futex, addr, futex_op_wait_bitset_private, val,
! 		&timeout, nullptr, futex_bitset_match_any))
        {
  	if (errno == ETIMEDOUT)
  	  return false;
*************** namespace
*** 108,114 ****
        }
      return true;
    }
! #endif // HAVE_LINUX_FUTEX
  
    // The state used by atomic waiting and notifying functions.
    struct __waitable_state
--- 136,142 ----
        }
      return true;
    }
! #endif // HAVE_PLATFORM_WAIT
  
    // The state used by atomic waiting and notifying functions.
    struct __waitable_state
*************** __cond_wait_until(__condvar& __cv, mutex
*** 427,491 ****
    return __wait_clock_t::now() < __atime;
  }
  #endif // ! HAVE_PLATFORM_WAIT
- 
- // Unlike __spin_impl, does not always return _M_has_val == true.
- // If the deadline has already passed then no fresh value is loaded.
- __wait_result_type
- __spin_until_impl(const __platform_wait_t* __addr,
- 		  const __wait_args_base& __args,
- 		  const __wait_clock_t::time_point& __deadline)
- {
-   using namespace literals::chrono_literals;
- 
-   __wait_result_type __res{};
-   auto __t0 = __wait_clock_t::now();
-   auto __now = __t0;
-   for (; __now < __deadline; __now = __wait_clock_t::now())
-     {
-       auto __elapsed = __now - __t0;
- #ifndef _GLIBCXX_NO_SLEEP
-       if (__elapsed > 128ms)
- 	this_thread::sleep_for(64ms);
-       else if (__elapsed > 64us)
- 	this_thread::sleep_for(__elapsed / 2);
-       else
- #endif
-       if (__elapsed > 4us)
- 	__thread_yield();
-       else
- 	{
- 	  __res = __detail::__spin_impl(__addr, __args);
- 	  if (!__res._M_timeout)
- 	    return __res;
- 	}
- 
-       __res._M_val = __atomic_load_n(__addr, __args._M_order);
-       __res._M_has_val = true;
-       if (__res._M_val != __args._M_old)
- 	{
- 	  __res._M_timeout = false;
- 	  return __res;
- 	}
-     }
-   __res._M_timeout = true;
-   return __res;
- }
  } // namespace
  
  __wait_result_type
  __wait_until_impl([[maybe_unused]] const void* __addr, __wait_args_base& __args,
! 		  const __wait_clock_t::duration& __time)
  {
    const __wait_clock_t::time_point __atime(__time);
    auto* __wait_addr = static_cast<const __platform_wait_t*>(__args._M_obj);
  
    if (__args & __wait_flags::__do_spin)
      {
!       auto __res = __detail::__spin_until_impl(__wait_addr, __args, __atime);
        if (!__res._M_timeout)
  	return __res;
        if (__args & __wait_flags::__spin_only)
  	return __res;
      }
  
  #ifdef _GLIBCXX_HAVE_PLATFORM_WAIT
--- 455,478 ----
    return __wait_clock_t::now() < __atime;
  }
  #endif // ! HAVE_PLATFORM_WAIT
  } // namespace
  
  __wait_result_type
  __wait_until_impl([[maybe_unused]] const void* __addr, __wait_args_base& __args,
! 		  const chrono::nanoseconds& __time)
  {
    const __wait_clock_t::time_point __atime(__time);
    auto* __wait_addr = static_cast<const __platform_wait_t*>(__args._M_obj);
  
    if (__args & __wait_flags::__do_spin)
      {
!       auto __res = __detail::__spin_impl(__wait_addr, __args);
        if (!__res._M_timeout)
  	return __res;
        if (__args & __wait_flags::__spin_only)
  	return __res;
+       if (__wait_clock_t::now() >= __atime)
+ 	return __res;
      }
  
  #ifdef _GLIBCXX_HAVE_PLATFORM_WAIT
diff -Nrcpad gcc-16-20251130/libstdc++-v3/src/c++23/std.cc.in gcc-16-20251207/libstdc++-v3/src/c++23/std.cc.in
*** gcc-16-20251130/libstdc++-v3/src/c++23/std.cc.in	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libstdc++-v3/src/c++23/std.cc.in	Sun Dec  7 22:32:18 2025
*************** export namespace std
*** 573,586 ****
--- 573,592 ----
    using std::atomic_flag;
    using std::atomic_flag_clear;
    using std::atomic_flag_clear_explicit;
+ #if __cpp_lib_atomic_wait
    using std::atomic_flag_notify_all;
    using std::atomic_flag_notify_one;
+ #endif
+ #if __cpp_lib_atomic_flag_test
    using std::atomic_flag_test;
    using std::atomic_flag_test_and_set;
    using std::atomic_flag_test_and_set_explicit;
    using std::atomic_flag_test_explicit;
+ #endif
+ #if __cpp_lib_atomic_wait
    using std::atomic_flag_wait;
    using std::atomic_flag_wait_explicit;
+ #endif
    using std::atomic_init;
    using std::atomic_int;
    using std::atomic_int16_t;
*************** export namespace std
*** 602,609 ****
--- 608,617 ----
    using std::atomic_load;
    using std::atomic_load_explicit;
    using std::atomic_long;
+ #if __cpp_lib_atomic_wait
    using std::atomic_notify_all;
    using std::atomic_notify_one;
+ #endif
    using std::atomic_ptrdiff_t;
    using std::atomic_ref;
    using std::atomic_schar;
*************** export namespace std
*** 638,645 ****
--- 646,655 ----
    using std::atomic_unsigned_lock_free;
  #endif
    using std::atomic_ushort;
+ #if __cpp_lib_atomic_wait
    using std::atomic_wait;
    using std::atomic_wait_explicit;
+ #endif
    using std::atomic_wchar_t;
    using std::kill_dependency;
    using std::memory_order;
*************** export namespace std
*** 997,1002 ****
--- 1007,1013 ----
  }
  
  // 33.7 <condition_variable>
+ #if _GLIBCXX_HAS_GTHREADS
  export namespace std
  {
    using std::condition_variable;
*************** export namespace std
*** 1004,1009 ****
--- 1015,1021 ----
    using std::cv_status;
    using std::notify_all_at_thread_exit;
  }
+ #endif
  
  // 17.12.2 <coroutine>
  #if __cpp_lib_coroutine
*************** export namespace std
*** 1762,1771 ****
--- 1774,1785 ----
  }
  
  // <latch>
+ #if __cpp_lib_latch
  export namespace std
  {
    using std::latch;
  }
+ #endif
  
  // 17.3.3 <limits> [limits.syn]
  export namespace std
*************** export namespace std
*** 1877,1888 ****
  #if __glibcxx_padded_layouts
    using std::layout_left_padded;
    using std::layout_right_padded;
    using std::strided_slice;
    using std::full_extent_t;
    using std::full_extent;
    using std::submdspan_mapping_result;
  #endif
!   // FIXME submdspan_extents, mdsubspan
  }
  #endif
  
--- 1891,1906 ----
  #if __glibcxx_padded_layouts
    using std::layout_left_padded;
    using std::layout_right_padded;
+ #endif
+ #if __glibcxx_submdspan
    using std::strided_slice;
    using std::full_extent_t;
    using std::full_extent;
    using std::submdspan_mapping_result;
+   using std::submdspan_canonicalize_slices;
+   using std::submdspan_extents;
  #endif
!   // FIXME mdsubspan
  }
  #endif
  
*************** export namespace std::pmr
*** 2033,2039 ****
--- 2051,2059 ----
    using std::pmr::polymorphic_allocator;
    using std::pmr::pool_options;
    using std::pmr::set_default_resource;
+ #if _GLIBCXX_HAS_GTHREADS
    using std::pmr::synchronized_pool_resource;
+ #endif
    using std::pmr::unsynchronized_pool_resource;
  }
  
*************** export namespace std
*** 2047,2059 ****
--- 2067,2085 ----
    using std::defer_lock_t;
    using std::lock;
    using std::lock_guard;
+ #if _GLIBCXX_HAS_GTHREADS
    using std::mutex;
+ #endif
    using std::once_flag;
+ #if _GLIBCXX_HAS_GTHREADS
    using std::recursive_mutex;
    using std::recursive_timed_mutex;
+ #endif
    using std::scoped_lock;
    using std::swap;
+ #if _GLIBCXX_HAS_GTHREADS
    using std::timed_mutex;
+ #endif
    using std::try_lock;
    using std::try_to_lock;
    using std::try_to_lock_t;
*************** export namespace std
*** 2641,2651 ****
--- 2667,2679 ----
  }
  
  // <semaphore>
+ #if __cpp_lib_semaphore
  export namespace std
  {
    using std::binary_semaphore;
    using std::counting_semaphore;
  }
+ #endif
  
  // <set>
  export namespace std
*************** export namespace std
*** 2667,2674 ****
--- 2695,2704 ----
  export namespace std
  {
    using std::shared_lock;
+ #if _GLIBCXX_HAS_GTHREADS
    using std::shared_mutex;
    using std::shared_timed_mutex;
+ #endif
    using std::swap;
  }
  
*************** export namespace std
*** 2953,2959 ****
--- 2983,2991 ----
  {
    using std::swap;
    using std::thread;
+ #if __cpp_lib_jthread
    using std::jthread;
+ #endif
    namespace this_thread
    {
      using std::this_thread::get_id;
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/20_util/bind/80564.cc gcc-16-20251207/libstdc++-v3/testsuite/20_util/bind/80564.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/20_util/bind/80564.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/20_util/bind/80564.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,50 ----
+ // PR libstdc++/80564 - bind on SFINAE unfriendly generic lambda
+ // { dg-do compile { target c++14 } }
+ 
+ #include <functional>
+ 
+ struct A
+ {
+   template<typename T>
+   auto operator()(T&)
+   { }
+ 
+   template<typename T>
+   auto operator()(T&) const
+   { T::fail; }
+ };
+ 
+ void
+ test01()
+ {
+   A a;
+   std::bind(a, 0)(); // doesn't consider the const overload
+   std::bind<void>(a, 0)();
+ }
+ 
+ void
+ test02()
+ {
+   auto f = [] (auto& x) { x = 1; };
+   int i;
+   std::bind(f, i)(); // doesn't try const-invoking the lambda
+   std::bind<void>(f, i)();
+ }
+ 
+ #if __cpp_variadic_using
+ template<typename... Ts>
+ struct overloaded : private Ts...
+ {
+   overloaded(Ts... ts) : Ts(ts)... { }
+   using Ts::operator()...;
+ };
+ 
+ void
+ test03()
+ {
+   A a;
+   auto f = std::bind(a, 0);
+   overloaded<decltype(f)> g(f);
+   g();
+ }
+ #endif
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/20_util/bind/cv_quals_2.cc gcc-16-20251207/libstdc++-v3/testsuite/20_util/bind/cv_quals_2.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/20_util/bind/cv_quals_2.cc	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libstdc++-v3/testsuite/20_util/bind/cv_quals_2.cc	Sun Dec  7 22:32:18 2025
*************** void test01()
*** 44,49 ****
--- 44,52 ----
  		       // { dg-error "no match" "" { target c++20 } 43 }
  }
  
+ // Ignore the reasons for deduction/substitution failure in the headers.
+ // { dg-prune-output "no type named 'type' in 'struct std::enable_if<false" }
+ 
  int main()
  {
    test01();
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/20_util/bind/ref_neg.cc gcc-16-20251207/libstdc++-v3/testsuite/20_util/bind/ref_neg.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/20_util/bind/ref_neg.cc	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libstdc++-v3/testsuite/20_util/bind/ref_neg.cc	Sun Dec  7 22:32:18 2025
*************** void test02()
*** 51,56 ****
--- 51,57 ----
  // Ignore the reasons for deduction/substitution failure in the headers.
  // Arrange for the match to work on installed trees as well as build trees.
  // { dg-prune-output "no type named 'type' in 'struct std::__invoke_result" }
+ // { dg-prune-output "no type named 'type' in 'struct std::enable_if<false" }
  
  int main()
  {
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/20_util/common_reference/p2655r3.cc gcc-16-20251207/libstdc++-v3/testsuite/20_util/common_reference/p2655r3.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/20_util/common_reference/p2655r3.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/20_util/common_reference/p2655r3.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,15 ----
+ // P2655R3 - common_reference_t of reference_wrapper Should Be a Reference Type
+ // Implemented as a DR against C++20
+ // { dg-do compile { target c++20 } }
+ 
+ #include <type_traits>
+ 
+ #if __cpp_lib_common_reference != 202302L
+ # error "Feature-test macro __cpp_lib_common_reference has wrong value in <type_traits>"
+ #endif
+ 
+ struct A { };
+ struct B { operator A&() const; };
+ 
+ static_assert( std::is_same_v<std::common_reference_t<A&, const B&>, A&> );
+ static_assert( std::is_same_v<std::common_reference_t<const B&, A&>, A&> );
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/20_util/function_objects/bind_front/111327.cc gcc-16-20251207/libstdc++-v3/testsuite/20_util/function_objects/bind_front/111327.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/20_util/function_objects/bind_front/111327.cc	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libstdc++-v3/testsuite/20_util/function_objects/bind_front/111327.cc	Sun Dec  7 22:32:18 2025
*************** int main() {
*** 50,53 ****
    std::move(std::as_const(g2))();
  }
  
! // { dg-error "no type named 'type' in 'std::__conditional_t<false, std::invoke_result<" "" { target c++23 } 0 }
--- 50,53 ----
    std::move(std::as_const(g2))();
  }
  
! // { dg-error "no type named 'type' in 'std::__conditional_t<false, std::invoke_result<" "" { target *-*-* } 0 }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/20_util/function_objects/not_fn/111327.cc gcc-16-20251207/libstdc++-v3/testsuite/20_util/function_objects/not_fn/111327.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/20_util/function_objects/not_fn/111327.cc	Sun Nov 30 22:32:16 2025
--- gcc-16-20251207/libstdc++-v3/testsuite/20_util/function_objects/not_fn/111327.cc	Sun Dec  7 22:32:18 2025
*************** struct G {
*** 15,29 ****
    bool operator()(...) const &&;
  };
  
  int main() {
    auto f = std::not_fn(F{});
!   f(); // { dg-error "deleted" }
    std::move(f)();
    std::as_const(f)();
    std::move(std::as_const(f))();
  
    auto g = std::not_fn(G{});
!   g(); // { dg-error "deleted" }
!   std::move(g)(); // { dg-error "deleted" }
    std::move(std::as_const(g))();
  }
--- 15,42 ----
    bool operator()(...) const &&;
  };
  
+ struct Weird {
+   void operator()();
+   bool operator()() const { return true; }
+ };
+ 
  int main() {
    auto f = std::not_fn(F{});
!   f(); // { dg-error "no match" }
    std::move(f)();
    std::as_const(f)();
    std::move(std::as_const(f))();
  
    auto g = std::not_fn(G{});
!   g(); // { dg-error "no match" }
!   std::move(g)(); // { dg-error "no match" }
    std::move(std::as_const(g))();
+ 
+   auto h = std::not_fn(Weird{});
+   h(); // { dg-error "no match" }
  }
+ 
+ // { dg-error "no type named 'type' in 'struct std::__invoke_result<" "" { target *-*-* } 0 }
+ // { dg-error "no matching function for call to 'std::_Not_fn<Weird>" "" { target *-*-* } 0 }
+ // { dg-error "could not convert 'std::declval<void>\\(\\)' from 'void' to 'bool'" "" { target *-*-* } 0 }
+ // { dg-error "in argument to unary !" "" { target *-*-* } 0 }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/20_util/reference_wrapper/p2655r3.cc gcc-16-20251207/libstdc++-v3/testsuite/20_util/reference_wrapper/p2655r3.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/20_util/reference_wrapper/p2655r3.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/20_util/reference_wrapper/p2655r3.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,75 ----
+ // P2655R3 - common_reference_t of reference_wrapper Should Be a Reference Type
+ // Implemented as a DR against C++20
+ // { dg-do compile { target c++20 } }
+ 
+ #include <functional>
+ 
+ #if __cpp_lib_common_reference_wrapper != 202302L
+ # error "Feature-test macro __cpp_lib_common_reference_wrapper has wrong value in <functional>"
+ #endif
+ 
+ using std::is_same_v;
+ using std::common_reference_t;
+ using std::reference_wrapper;
+ 
+ static_assert( is_same_v<common_reference_t<const reference_wrapper<int>&, int&>, int&> );
+ static_assert( is_same_v<common_reference_t<int&, const reference_wrapper<int>&>, int&> );
+ 
+ static_assert( is_same_v<common_reference_t<reference_wrapper<int>, int&>,
+ 			 common_reference_t<int&, int&>> );
+ static_assert( is_same_v<common_reference_t<reference_wrapper<int>, const int&>,
+ 			 common_reference_t<int&, const int&>> );
+ static_assert( is_same_v<common_reference_t<reference_wrapper<const int>, int&>,
+ 			 common_reference_t<const int&, int&>> );
+ 
+ static_assert( is_same_v<common_reference_t<int&, reference_wrapper<int>>,
+ 			 common_reference_t<int&, int&>> );
+ static_assert( is_same_v<common_reference_t<const int&, reference_wrapper<int>>,
+ 			 common_reference_t<int&, const int&>> );
+ static_assert( is_same_v<common_reference_t<int&, reference_wrapper<const int>>,
+ 			 common_reference_t<const int&, int&>> );
+ 
+ static_assert( is_same_v<common_reference_t<reference_wrapper<int>&, reference_wrapper<int>&>,
+ 			 reference_wrapper<int>&> );
+ 
+ static_assert( is_same_v<common_reference_t<reference_wrapper<char>,
+ 					    reference_wrapper<int>>,
+ 			 int> );
+ static_assert( is_same_v<common_reference_t<reference_wrapper<reference_wrapper<int>>,
+ 					    reference_wrapper<int>>,
+ 			 reference_wrapper<int>> );
+ static_assert( is_same_v<common_reference_t<reference_wrapper<int>,
+ 					    reference_wrapper<reference_wrapper<int>>>,
+ 			 reference_wrapper<int>> );
+ 
+ struct A { };
+ struct B { operator A&() const; };
+ 
+ template<typename T, typename U>
+ concept has_common_reference = requires {
+   typename std::common_reference_t<T, U>;
+ };
+ 
+ static_assert( is_same_v<common_reference_t<reference_wrapper<A>, const B&>, A&> );
+ // reference_wrapper<const B> is not convertible to A&, as it would require two user
+ // defined conversions.
+ static_assert( !has_common_reference<A, reference_wrapper<const B>> );
+ static_assert( !has_common_reference<reference_wrapper<A>, reference_wrapper<const B>> );
+ 
+ struct D1 : A {};
+ struct D2 : A {};
+ 
+ template<template<class> typename Qual1, template<class> typename Qual2>
+ struct std::basic_common_reference<D1, D2, Qual1, Qual2>
+  : std::common_reference<Qual1<A>, Qual2<A>>
+ { };
+ 
+ template<template<class> typename Qual1, template<class> typename Qual2>
+ struct std::basic_common_reference<D2, D1, Qual1, Qual2>
+  : std::common_reference<Qual1<A>, Qual2<A>>
+ { };
+ 
+ static_assert( is_same_v<common_reference_t<D1&, D2&>, A&> );
+ static_assert( is_same_v<common_reference_t<reference_wrapper<D1>, D2&>, A&> );
+ static_assert( is_same_v<common_reference_t<D1&, reference_wrapper<D2>>, A&> );
+ static_assert( !has_common_reference<reference_wrapper<D1>, reference_wrapper<D2>> );
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/21_strings/basic_string/operations/subview/char.cc gcc-16-20251207/libstdc++-v3/testsuite/21_strings/basic_string/operations/subview/char.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/21_strings/basic_string/operations/subview/char.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/21_strings/basic_string/operations/subview/char.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,46 ----
+ // { dg-do run { target c++26 } }
+ 
+ #include <stdexcept>
+ #include <string>
+ #include <string_view>
+ #include <testsuite_hooks.h>
+ 
+ void test01(void) {
+   typedef std::string::size_type csize_type;
+   typedef std::string::const_reference cref;
+   typedef std::string::reference ref;
+   csize_type csz01;
+ 
+   const char str_lit01[] = "rockaway, pacifica";
+   const std::string str01(str_lit01);
+   std::string_view str02;
+ 
+   csz01 = str01.size();
+   str02 = str01.subview(0, 1);
+   VERIFY(str02 == "r");
+   str02 = str01.subview(10);
+   VERIFY(str02 == "pacifica");
+ 
+   try {
+     str02 = str01.subview(csz01 + 1);
+     VERIFY(false);
+   } catch (std::out_of_range &fail) {
+     VERIFY(true);
+   } catch (...) {
+     VERIFY(false);
+   }
+ 
+   try {
+     str02 = str01.subview(csz01);
+     VERIFY(str02.size() == 0);
+   } catch (std::out_of_range &fail) {
+     VERIFY(false);
+   } catch (...) {
+     VERIFY(false);
+   }
+ }
+ 
+ int main() {
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/21_strings/basic_string/operations/subview/wchar_t.cc gcc-16-20251207/libstdc++-v3/testsuite/21_strings/basic_string/operations/subview/wchar_t.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/21_strings/basic_string/operations/subview/wchar_t.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/21_strings/basic_string/operations/subview/wchar_t.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,46 ----
+ // { dg-do run { target c++26 } }
+ 
+ #include <stdexcept>
+ #include <string>
+ #include <string_view>
+ #include <testsuite_hooks.h>
+ 
+ void test01(void) {
+   typedef std::wstring::size_type csize_type;
+   typedef std::wstring::const_reference cref;
+   typedef std::wstring::reference ref;
+   csize_type csz01;
+ 
+   const wchar_t str_lit01[] = L"rockaway, pacifica";
+   const std::wstring str01(str_lit01);
+   std::wstring_view str02;
+ 
+   csz01 = str01.size();
+   str02 = str01.subview(0, 1);
+   VERIFY(str02 == L"r");
+   str02 = str01.subview(10);
+   VERIFY(str02 == L"pacifica");
+ 
+   try {
+     str02 = str01.subview(csz01 + 1);
+     VERIFY(false);
+   } catch (std::out_of_range &fail) {
+     VERIFY(true);
+   } catch (...) {
+     VERIFY(false);
+   }
+ 
+   try {
+     str02 = str01.subview(csz01);
+     VERIFY(str02.size() == 0);
+   } catch (std::out_of_range &fail) {
+     VERIFY(false);
+   } catch (...) {
+     VERIFY(false);
+   }
+ }
+ 
+ int main() {
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/subview/char.cc gcc-16-20251207/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/subview/char.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/subview/char.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/subview/char.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,51 ----
+ // { dg-do run { target c++26 } }
+ 
+ #include <string_view>
+ #include <testsuite_hooks.h>
+ 
+ #if __STDC_HOSTED__
+ #include <stdexcept>
+ #endif
+ 
+ void test01() {
+   typedef std::string_view::size_type csize_type;
+   typedef std::string_view::const_reference cref;
+   typedef std::string_view::reference ref;
+   csize_type csz01;
+ 
+   const char str_lit01[] = "rockaway, pacifica";
+   const std::string_view str01(str_lit01);
+   std::string_view str02;
+ 
+   csz01 = str01.size();
+   str02 = str01.subview(0, 1);
+   VERIFY(str02 == "r");
+   str02 = str01.subview(10);
+   VERIFY(str02 == "pacifica");
+ 
+ #if __STDC_HOSTED__
+   try {
+     str02 = str01.subview(csz01 + 1);
+     VERIFY(false);
+   } catch (std::out_of_range &fail) {
+     VERIFY(true);
+   } catch (...) {
+     VERIFY(false);
+   }
+ 
+   try {
+     str02 = str01.subview(csz01);
+     VERIFY(str02.size() == 0);
+     VERIFY(str02.begin() == str01.end());
+     VERIFY(true);
+   } catch (...) {
+     VERIFY(false);
+   }
+ #endif // HOSTED
+ }
+ 
+ int main() {
+   test01();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/subview/wchar_t.cc gcc-16-20251207/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/subview/wchar_t.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/subview/wchar_t.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/subview/wchar_t.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,51 ----
+ // { dg-do run { target c++26 } }
+ 
+ #include <string_view>
+ #include <testsuite_hooks.h>
+ 
+ #if __STDC_HOSTED__
+ #include <stdexcept>
+ #endif
+ 
+ void test01() {
+   typedef std::wstring_view::size_type csize_type;
+   typedef std::wstring_view::const_reference cref;
+   typedef std::wstring_view::reference ref;
+   csize_type csz01;
+ 
+   const wchar_t str_lit01[] = L"rockaway, pacifica";
+   const std::wstring_view str01(str_lit01);
+   std::wstring_view str02;
+ 
+   csz01 = str01.size();
+   str02 = str01.subview(0, 1);
+   VERIFY(str02 == L"r");
+   str02 = str01.subview(10);
+   VERIFY(str02 == L"pacifica");
+ 
+ #if __STDC_HOSTED__
+   try {
+     str02 = str01.subview(csz01 + 1);
+     VERIFY(false);
+   } catch (std::out_of_range &fail) {
+     VERIFY(true);
+   } catch (...) {
+     VERIFY(false);
+   }
+ 
+   try {
+     str02 = str01.subview(csz01);
+     VERIFY(str02.size() == 0);
+     VERIFY(str02.begin() == str01.end());
+     VERIFY(true);
+   } catch (...) {
+     VERIFY(false);
+   }
+ #endif // HOSTED
+ }
+ 
+ int main() {
+   test01();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/deque/debug/erase.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/deque/debug/erase.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/deque/debug/erase.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/deque/debug/erase.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,27 ----
+ // { dg-do run { target c++20 } }
+ // { dg-require-debug-mode "" }
+ 
+ #include <deque>
+ #include <testsuite_hooks.h>
+ 
+ void test01()
+ {
+   std::deque<int> d;
+ 
+   for (int i = 0; i != 10; ++i)
+     d.push_back(i);
+ 
+   auto before = d.begin() + 4;
+   auto last = d.end() - 1;
+ 
+   VERIFY( std::erase(d, 6) == 1 );
+ 
+   VERIFY(before._M_dereferenceable());
+   VERIFY(last._M_singular());
+ }
+ 
+ int main()
+ {
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/deque/debug/invalidation/erase.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/deque/debug/invalidation/erase.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/deque/debug/invalidation/erase.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/deque/debug/invalidation/erase.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,28 ----
+ // { dg-do run { target c++20 } }
+ 
+ #include <debug/deque>
+ #include <testsuite_hooks.h>
+ 
+ using __gnu_debug::deque;
+ 
+ void test01()
+ {
+   deque<int> d;
+ 
+   for (int i = 0; i != 10; ++i)
+     d.push_back(i);
+ 
+   auto before = d.begin() + 4;
+   auto last = d.end() -1;
+ 
+   VERIFY( std::erase(d, 6) == 1 );
+ 
+   VERIFY(before._M_dereferenceable());
+   VERIFY(last._M_singular());
+ }
+ 
+ int main()
+ {
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/flat_map/1.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/flat_map/1.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/flat_map/1.cc	Sun Nov 30 22:32:17 2025
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/flat_map/1.cc	Sun Dec  7 22:32:18 2025
*************** test08()
*** 263,268 ****
--- 263,279 ----
    m[k] = 0;
  }
  
+ void
+ test09()
+ {
+   // PR libstdc++/122921 - The value_type of flat_map's iterator should be
+   // pair<Key, T> instead of pair<const Key, T>
+   using type = std::flat_map<int, int>;
+   using value_type = std::ranges::range_value_t<type>;
+   using value_type = type::value_type;
+   using value_type = std::pair<int, int>;
+ }
+ 
  int
  main()
  {
*************** main()
*** 277,280 ****
--- 288,292 ----
    test06();
    test07();
    test08();
+   test09();
  }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/flat_multimap/1.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/flat_multimap/1.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/flat_multimap/1.cc	Sun Nov 30 22:32:17 2025
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/flat_multimap/1.cc	Sun Dec  7 22:32:18 2025
*************** test07()
*** 232,237 ****
--- 232,248 ----
    VERIFY( std::ranges::equal(m, (std::pair<int,int>[]){{3,4},{3,3}}) );
  }
  
+ void
+ test09()
+ {
+   // PR libstdc++/122921 - The value_type of flat_map's iterator should be
+   // pair<Key, T> instead of pair<const Key, T>
+   using type = std::flat_multimap<int, int>;
+   using value_type = std::ranges::range_value_t<type>;
+   using value_type = type::value_type;
+   using value_type = std::pair<int, int>;
+ }
+ 
  int
  main()
  {
*************** main()
*** 245,248 ****
--- 256,260 ----
    test05();
    test06();
    test07();
+   test09();
  }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/1.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/1.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/1.cc	Sun Nov 30 22:32:17 2025
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/cons/1.cc	Sun Dec  7 22:32:18 2025
*************** struct U
*** 24,30 ****
  };
  
  // n5008 inplace.vector.overview says for inplace_vector<T, 0>
! // provides trivial copy/move/default cosntructpr regardless of T
  struct Z
  {
    constexpr Z(int) {}
--- 24,30 ----
  };
  
  // n5008 inplace.vector.overview says for inplace_vector<T, 0>
! // provides trivial copy/move/default constructor regardless of T
  struct Z
  {
    constexpr Z(int) {}
*************** static_assert(!std::is_trivially_default
*** 52,62 ****
--- 52,64 ----
  static_assert(!std::is_trivially_default_constructible_v<std::inplace_vector<D, 2>>);
  static_assert(!std::is_trivially_default_constructible_v<std::inplace_vector<U, 2>>);
  
+ #if !_GLIBCXX_DEBUG
  static_assert(std::is_trivially_destructible_v<std::inplace_vector<int, 2>>);
  static_assert(std::is_trivially_destructible_v<std::inplace_vector<X, 2>>);
  static_assert(std::is_trivially_destructible_v<std::inplace_vector<N, 2>>);
  static_assert(!std::is_trivially_destructible_v<std::inplace_vector<D, 2>>);
  static_assert(std::is_trivially_destructible_v<std::inplace_vector<U, 2>>);
+ #endif
  
  static_assert(std::is_nothrow_default_constructible_v<std::inplace_vector<int, 0>>);
  static_assert(std::is_nothrow_default_constructible_v<std::inplace_vector<X, 0>>);
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/copy.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/copy.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/copy.cc	Sun Nov 30 22:32:17 2025
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/copy.cc	Sun Dec  7 22:32:18 2025
*************** static_assert(!std::is_nothrow_copy_cons
*** 72,83 ****
--- 72,85 ----
  static_assert(std::is_nothrow_copy_constructible_v<std::inplace_vector<D, 2>>);
  static_assert(!std::is_nothrow_copy_constructible_v<std::inplace_vector<U, 2>>);
  
+ #if !_GLIBCXX_DEBUG
  static_assert(std::is_trivially_copy_constructible_v<std::inplace_vector<int, 2>>);
  static_assert(!std::is_trivially_copy_constructible_v<std::inplace_vector<X, 2>>);
  static_assert(!std::is_trivially_copy_constructible_v<std::inplace_vector<N<true, true>, 2>>);
  // is_trivially_copy_constructible_v checks destructor
  static_assert(!std::is_trivially_copy_constructible_v<std::inplace_vector<D, 2>>);
  static_assert(std::is_trivially_copy_constructible_v<std::inplace_vector<U, 2>>);
+ #endif
  
  static_assert(std::is_copy_assignable_v<std::inplace_vector<int, 2>>);
  static_assert(std::is_copy_assignable_v<std::inplace_vector<X, 2>>);
*************** static_assert(!std::is_nothrow_copy_assi
*** 96,101 ****
--- 98,104 ----
  static_assert(std::is_nothrow_copy_assignable_v<std::inplace_vector<D, 2>>);
  static_assert(!std::is_nothrow_copy_assignable_v<std::inplace_vector<U, 2>>);
  
+ #if !_GLIBCXX_DEBUG
  // conditional noexcept here is libstdc++ extension,
  static_assert(std::is_trivially_copy_assignable_v<std::inplace_vector<int, 2>>);
  static_assert(!std::is_trivially_copy_assignable_v<std::inplace_vector<X, 2>>);
*************** static_assert(!std::is_trivially_copy_as
*** 103,108 ****
--- 106,112 ----
  // destructor is not trivial
  static_assert(!std::is_trivially_copy_assignable_v<std::inplace_vector<D, 2>>);
  static_assert(std::is_trivially_copy_assignable_v<std::inplace_vector<U, 2>>);
+ #endif
  
  static_assert(std::is_nothrow_copy_constructible_v<std::inplace_vector<int, 0>>);
  static_assert(std::is_nothrow_copy_constructible_v<std::inplace_vector<X, 0>>);
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/assign1_neg.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/assign1_neg.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/assign1_neg.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/assign1_neg.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,16 ----
+ // { dg-do run { target c++26 xfail *-*-* } }
+ // { dg-require-debug-mode "" }
+ 
+ #include <inplace_vector>
+ #include <debug/checks.h>
+ 
+ void test01()
+ {
+   __gnu_test::check_assign1<std::inplace_vector<int, 10> >();
+ }
+ 
+ int main()
+ {
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/assign2_neg.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/assign2_neg.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/assign2_neg.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/assign2_neg.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,16 ----
+ // { dg-do run { target c++26 xfail *-*-* } }
+ // { dg-require-debug-mode "" }
+ 
+ #include <inplace_vector>
+ #include <debug/checks.h>
+ 
+ void test01()
+ {
+   __gnu_test::check_assign2<std::inplace_vector<int, 10>>();
+ }
+ 
+ int main()
+ {
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/assign3_neg.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/assign3_neg.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/assign3_neg.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/assign3_neg.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,16 ----
+ // { dg-do run { target c++26 xfail *-*-* } }
+ // { dg-require-debug-mode "" }
+ 
+ #include <inplace_vector>
+ #include <debug/checks.h>
+ 
+ void test01()
+ {
+   __gnu_test::check_assign3<std::inplace_vector<int, 10>>();
+ }
+ 
+ int main()
+ {
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/assign4_backtrace_neg.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/assign4_backtrace_neg.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/assign4_backtrace_neg.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/assign4_backtrace_neg.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,17 ----
+ // { dg-do run { target c++26 xfail *-*-* } }
+ // { dg-options "-D_GLIBCXX_DEBUG_BACKTRACE -lstdc++exp" }
+ // { dg-require-cpp-feature-test __cpp_lib_stacktrace }
+ 
+ #include <debug/inplace_vector>
+ #include <debug/checks.h>
+ 
+ void test01()
+ {
+   __gnu_test::check_assign1<__gnu_debug::inplace_vector<int, 10>>();
+ }
+ 
+ int main()
+ {
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/assign4_neg.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/assign4_neg.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/assign4_neg.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/assign4_neg.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,15 ----
+ // { dg-do run { target c++26 xfail *-*-* } }
+ 
+ #include <debug/inplace_vector>
+ #include <debug/checks.h>
+ 
+ void test01()
+ {
+   __gnu_test::check_assign1<__gnu_debug::inplace_vector<int, 10>>();
+ }
+ 
+ int main()
+ {
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/construct1_neg.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/construct1_neg.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/construct1_neg.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/construct1_neg.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,16 ----
+ // { dg-do run { target c++26 xfail *-*-* } }
+ // { dg-require-debug-mode "" }
+ 
+ #include <inplace_vector>
+ #include <debug/checks.h>
+ 
+ void test01()
+ {
+   __gnu_test::check_construct1<std::inplace_vector<int, 10> >();
+ }
+ 
+ int main()
+ {
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/construct2_neg.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/construct2_neg.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/construct2_neg.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/construct2_neg.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,16 ----
+ // { dg-do run { target c++26 xfail *-*-* } }
+ // { dg-require-debug-mode "" }
+ 
+ #include <inplace_vector>
+ #include <debug/checks.h>
+ 
+ void test01()
+ {
+   __gnu_test::check_construct2<std::inplace_vector<int, 10> >();
+ }
+ 
+ int main()
+ {
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/construct3_neg.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/construct3_neg.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/construct3_neg.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/construct3_neg.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,16 ----
+ // { dg-do run { target c++26 xfail *-*-* } }
+ // { dg-require-debug-mode "" }
+ 
+ #include <inplace_vector>
+ #include <debug/checks.h>
+ 
+ void test01()
+ {
+   __gnu_test::check_construct3<std::inplace_vector<int, 10> >();
+ }
+ 
+ int main()
+ {
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/construct4_neg.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/construct4_neg.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/construct4_neg.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/construct4_neg.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,15 ----
+ // { dg-do run { target c++26 xfail *-*-* } }
+ 
+ #include <debug/inplace_vector>
+ #include <debug/checks.h>
+ 
+ void test01()
+ {
+   __gnu_test::check_construct1<__gnu_debug::inplace_vector<int, 10> >();
+ }
+ 
+ int main()
+ {
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/debug_functions.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/debug_functions.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/debug_functions.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/debug_functions.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,34 ----
+ // { dg-do run { target c++26 } }
+ // { dg-require-debug-mode "" }
+ 
+ #include <inplace_vector>
+ #include <testsuite_hooks.h>
+ 
+ void test02()
+ {
+   using namespace __gnu_debug;
+ 
+   std::inplace_vector<int, 10> v1(3, 1);
+   VERIFY( !__check_singular(v1.begin()) );
+   auto it = v1.begin();
+   VERIFY( !__check_singular(it) );
+ 
+   VERIFY( !__check_singular(v1.end()) );
+   it = v1.end();
+   VERIFY( !__check_singular(it) );
+ 
+   v1.clear();
+ 
+   VERIFY( it._M_singular() );
+   VERIFY( __check_singular(it) );
+ 
+   it = v1.end();
+   VERIFY( !it._M_singular() );
+   VERIFY( !__check_singular(it) );
+ }
+ 
+ int main()
+ {
+   test02();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/erase.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/erase.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/erase.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/erase.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,35 ----
+ // { dg-do run { target c++26 } }
+ // { dg-require-debug-mode "" }
+ 
+ #include <inplace_vector>
+ #include <testsuite_hooks.h>
+ 
+ void test01()
+ {
+   std::inplace_vector<int, 10> v;
+ 
+   for (int i = 0; i != 10; ++i)
+     v.push_back(i);
+ 
+   auto before = v.begin() + 4;
+   auto last = v.end() - 1;
+ 
+   VERIFY( std::erase(v, 6) == 1 );
+ 
+   VERIFY(before._M_dereferenceable());
+   VERIFY(last._M_singular());
+ }
+ 
+ void test02()
+ {
+   std::inplace_vector<int, 0> v;
+ 
+   VERIFY( std::erase(v, 6) == 0 );
+ }
+ 
+ int main()
+ {
+   test01();
+   test02();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/insert1_neg.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/insert1_neg.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/insert1_neg.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/insert1_neg.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,16 ----
+ // { dg-do run { target c++26 xfail *-*-* } }
+ // { dg-require-debug-mode "" }
+ 
+ #include <inplace_vector>
+ #include <debug/checks.h>
+ 
+ void test01()
+ {
+   __gnu_test::check_insert1<std::inplace_vector<int, 10>>();
+ }
+ 
+ int main()
+ {
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/insert2_neg.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/insert2_neg.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/insert2_neg.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/insert2_neg.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,16 ----
+ // { dg-do run { target c++26 xfail *-*-* } }
+ // { dg-require-debug-mode "" }
+ 
+ #include <inplace_vector>
+ #include <debug/checks.h>
+ 
+ void test01()
+ {
+   __gnu_test::check_insert2<std::inplace_vector<int, 10>>();
+ }
+ 
+ int main()
+ {
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/insert3_neg.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/insert3_neg.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/insert3_neg.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/insert3_neg.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,16 ----
+ // { dg-do run { target c++26 xfail *-*-* } }
+ // { dg-require-debug-mode "" }
+ 
+ #include <inplace_vector>
+ #include <debug/checks.h>
+ 
+ void test01()
+ {
+   __gnu_test::check_insert3<std::inplace_vector<int, 10>>();
+ }
+ 
+ int main()
+ {
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/insert4_neg.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/insert4_neg.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/insert4_neg.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/insert4_neg.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,15 ----
+ // { dg-do run { target c++26 xfail *-*-* } }
+ 
+ #include <debug/inplace_vector>
+ #include <debug/checks.h>
+ 
+ void test01()
+ {
+   __gnu_test::check_insert1<__gnu_debug::inplace_vector<int, 10>>();
+ }
+ 
+ int main()
+ {
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/insert5_neg.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/insert5_neg.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/insert5_neg.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/insert5_neg.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,16 ----
+ // { dg-do run { target c++26 xfail *-*-* } }
+ // { dg-require-debug-mode "" }
+ 
+ #include <inplace_vector>
+ #include <debug/checks.h>
+ 
+ void test01()
+ {
+   __gnu_test::check_insert4<std::inplace_vector<int, 10>>();
+ }
+ 
+ int main()
+ {
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/insert7_neg.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/insert7_neg.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/insert7_neg.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/insert7_neg.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,24 ----
+ // { dg-do run { target c++26 xfail *-*-* } }
+ 
+ #include <memory>
+ #include <iterator>
+ #include <debug/inplace_vector>
+ 
+ void
+ test01()
+ {
+   __gnu_debug::inplace_vector<std::unique_ptr<int>, 10> v;
+ 
+   v.emplace_back(new int(0));
+   v.emplace_back(new int(1));
+ 
+   v.insert(begin(v) + 1,
+ 	   make_move_iterator(begin(v)),
+ 	   make_move_iterator(end(v)));
+ }
+ 
+ int
+ main()
+ {
+   test01();
+ }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/1.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/1.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/1.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/1.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,33 ----
+ // { dg-do run { target c++26 } }
+ 
+ #include <debug/inplace_vector>
+ #include <testsuite_hooks.h>
+ 
+ using __gnu_debug::inplace_vector;
+ 
+ // Assignment
+ void test01()
+ {
+   inplace_vector<int, 30> v1;
+   inplace_vector<int, 30> v2;
+ 
+   auto i = v1.end();
+   VERIFY(!i._M_dereferenceable() && !i._M_singular());
+ 
+   v1 = v2;
+   VERIFY(i._M_singular());
+ 
+   i = v1.end();
+   v1.assign(v2.begin(), v2.end());
+   VERIFY( !i._M_singular() );
+ 
+   i = v1.end();
+   v1.assign(17, 42);
+   VERIFY(i._M_singular());
+ }
+ 
+ int main()
+ {
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/2.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/2.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/2.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/2.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,34 ----
+ // { dg-do run { target c++26 } }
+ 
+ #include <debug/inplace_vector>
+ #include <testsuite_hooks.h>
+ 
+ using __gnu_debug::inplace_vector;
+ 
+ // Resize
+ void test01()
+ {
+   inplace_vector<int, 50> v(10, 17);
+   v.reserve(20);
+ 
+   auto before = v.begin() + 6;
+   auto at = before + 1;
+   auto after = at + 1;
+ 
+   // Shrink.
+   v.resize(7);
+   VERIFY(before._M_dereferenceable());
+   VERIFY(at._M_singular());
+   VERIFY(after._M_singular());
+ 
+   // Grow.
+   before = v.begin() + 6;
+   v.resize(17);
+   VERIFY(before._M_dereferenceable());
+ }
+ 
+ int main()
+ {
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/3.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/3.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/3.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/3.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,43 ----
+ // { dg-do run { target c++26 } }
+ 
+ #include <debug/inplace_vector>
+ #include <testsuite_hooks.h>
+ 
+ using __gnu_debug::inplace_vector;
+ 
+ // Insert
+ void test01()
+ {
+   inplace_vector<int, 100> v(10, 17);
+   v.reserve(30);
+ 
+   // Insert a single element
+   auto before = v.begin() + 6;
+   auto at = before + 1;
+   auto after = at;
+   at = v.insert(at, 42);
+   VERIFY(before._M_dereferenceable());
+   VERIFY(at._M_dereferenceable());
+   VERIFY(after._M_singular());
+ 
+   // Insert multiple copies
+   before = v.begin() + 6;
+   at = before + 1;
+   v.insert(at, 3, 42);
+   VERIFY(before._M_dereferenceable());
+   VERIFY(at._M_singular());
+ 
+   // Insert iterator range
+   static int data[] = { 2, 3, 5, 7 };
+   before = v.begin() + 6;
+   at = before + 1;
+   v.insert(at, &data[0], &data[0] + 4);
+   VERIFY(before._M_dereferenceable());
+   VERIFY(at._M_singular());
+ }
+ 
+ int main()
+ {
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/4.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/4.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/4.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/4.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,40 ----
+ // { dg-do run { target c++26 } }
+ 
+ #include <debug/inplace_vector>
+ #include <testsuite_hooks.h>
+ 
+ using __gnu_debug::inplace_vector;
+ 
+ // Erase
+ void test04()
+ {
+   inplace_vector<int, 30> v(20, 42);
+ 
+   // Single element erase
+   auto before = v.begin();
+   auto at = before + 3;
+   auto after = at;
+   at = v.erase(at);
+   VERIFY(before._M_dereferenceable());
+   VERIFY(at._M_dereferenceable());
+   VERIFY(after._M_singular());
+ 
+   // Multiple element erase
+   before = v.begin();
+   at = before + 3;
+   v.erase(at, at + 3);
+   VERIFY(before._M_dereferenceable());
+   VERIFY(at._M_singular());
+ 
+   // clear()
+   before = v.begin();
+   VERIFY(before._M_dereferenceable());
+   v.clear();
+   VERIFY(before._M_singular());
+ }
+ 
+ int main()
+ {
+   test04();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/append_range.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/append_range.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/append_range.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/append_range.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,45 ----
+ // { dg-do run { target c++26 } }
+ 
+ #include <debug/inplace_vector>
+ #include <testsuite_hooks.h>
+ 
+ using __gnu_debug::inplace_vector;
+ 
+ void test01()
+ {
+   inplace_vector<int, 100> v(10, 17);
+   inplace_vector<int, 10> v1(10, 19);
+ 
+   auto before = v.begin() + 6;
+   auto last = v.end();
+   auto end = last--;
+ 
+   v.append_range(v1);
+ 
+   VERIFY(before._M_dereferenceable());
+   VERIFY(last._M_dereferenceable());
+   VERIFY(end._M_singular());
+ }
+ 
+ void test02()
+ {
+   inplace_vector<int, 100> v(10, 17);
+   inplace_vector<int, 0> v1;
+ 
+   auto before = v.begin() + 6;
+   auto last = v.end();
+   auto end = last--;
+ 
+   v.append_range(v1);
+ 
+   VERIFY(before._M_dereferenceable());
+   VERIFY(last._M_dereferenceable());
+   VERIFY(!end._M_singular());
+ }
+ 
+ int main()
+ {
+   test01();
+   test02();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/erase.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/erase.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/erase.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/erase.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,36 ----
+ // { dg-do run { target c++26 } }
+ 
+ #include <debug/inplace_vector>
+ #include <testsuite_hooks.h>
+ 
+ using __gnu_debug::inplace_vector;
+ 
+ void test01()
+ {
+   inplace_vector<int, 10> v;
+ 
+   for (int i = 0; i != 10; ++i)
+     v.push_back(i);
+ 
+   auto before = v.begin() + 4;
+   auto last = v.end() - 1;
+ 
+   VERIFY( std::erase(v, 6) == 1 );
+ 
+   VERIFY(before._M_dereferenceable());
+   VERIFY(last._M_singular());
+ }
+ 
+ void test02()
+ {
+   inplace_vector<int, 0> v;
+ 
+   VERIFY( std::erase(v, 6) == 0 );
+ }
+ 
+ int main()
+ {
+   test01();
+   test02();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/pop_back.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/pop_back.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/pop_back.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/pop_back.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,27 ----
+ // { dg-do run { target c++26 } }
+ 
+ #include <debug/inplace_vector>
+ #include <testsuite_hooks.h>
+ 
+ using __gnu_debug::inplace_vector;
+ 
+ void test01()
+ {
+   inplace_vector<int, 100> v(10, 17);
+ 
+   auto before = v.begin() + 6;
+   auto last = v.end();
+   auto end = last--;
+ 
+   v.pop_back();
+ 
+   VERIFY(before._M_dereferenceable());
+   VERIFY(last._M_singular());
+   VERIFY(end._M_singular());
+ }
+ 
+ int main()
+ {
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/push_back.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/push_back.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/push_back.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/push_back.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,53 ----
+ // { dg-do run { target c++26 } }
+ 
+ #include <debug/inplace_vector>
+ #include <testsuite_hooks.h>
+ 
+ using __gnu_debug::inplace_vector;
+ 
+ void test01()
+ {
+   inplace_vector<int, 100> v(10, 17);
+ 
+   auto before = v.begin() + 6;
+   auto last = v.end();
+   auto end = last--;
+ 
+   v.push_back(42);
+ 
+   VERIFY(before._M_dereferenceable());
+   VERIFY(last._M_dereferenceable());
+   VERIFY(end._M_singular());
+ }
+ 
+ #if __cpp_exceptions
+ void test02()
+ {
+   inplace_vector<int, 10> v(10, 17);
+ 
+   auto before = v.begin() + 6;
+   auto last = v.end();
+   auto end = last--;
+   try
+     {
+       v.push_back(42);
+       VERIFY( false );
+     }
+   catch (std::bad_alloc&)
+     {
+     }
+ 
+   VERIFY(before._M_dereferenceable());
+   VERIFY(last._M_dereferenceable());
+   VERIFY(!end._M_singular());
+ }
+ #endif
+ 
+ int main()
+ {
+   test01();
+ #if __cpp_exceptions
+   test02();
+ #endif
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/swap.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/swap.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/swap.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/swap.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,53 ----
+ // { dg-do run { target c++26 } }
+ 
+ #include <debug/inplace_vector>
+ #include <testsuite_hooks.h>
+ 
+ using __gnu_debug::inplace_vector;
+ 
+ void test01()
+ {
+   inplace_vector<int, 10> v1;
+   inplace_vector<int, 10> v2;
+ 
+   for (int i = 0; i != 10; ++i)
+     {
+       v1.push_back(i);
+       v2.push_back(i);
+     }
+ 
+   auto it1 = v1.begin();
+   auto it2 = v2.begin();
+ 
+   std::swap(v1, v2);
+ 
+   VERIFY(it1._M_singular());
+   VERIFY(it2._M_singular());
+ }
+ 
+ void test02()
+ {
+   inplace_vector<int, 10> v1;
+   inplace_vector<int, 10> v2;
+ 
+   for (int i = 0; i != 10; ++i)
+     {
+       v1.push_back(i);
+       v2.push_back(i);
+     }
+ 
+   auto it1 = v1.begin();
+   auto it2 = v2.begin();
+ 
+   swap(v1, v2);
+ 
+   VERIFY(it1._M_singular());
+   VERIFY(it2._M_singular());
+ }
+ 
+ int main()
+ {
+   test01();
+   test02();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/try_append_range.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/try_append_range.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/try_append_range.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/try_append_range.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,45 ----
+ // { dg-do run { target c++26 } }
+ 
+ #include <debug/inplace_vector>
+ #include <testsuite_hooks.h>
+ 
+ using __gnu_debug::inplace_vector;
+ 
+ void test01()
+ {
+   inplace_vector<int, 100> v(10, 17);
+   inplace_vector<int, 10> v1(10, 19);
+ 
+   auto before = v.begin() + 6;
+   auto last = v.end();
+   auto end = last--;
+ 
+   v.try_append_range(v1);
+ 
+   VERIFY(before._M_dereferenceable());
+   VERIFY(last._M_dereferenceable());
+   VERIFY(end._M_singular());
+ }
+ 
+ void test02()
+ {
+   inplace_vector<int, 100> v(10, 17);
+   inplace_vector<int, 0> v1;
+ 
+   auto before = v.begin() + 6;
+   auto last = v.end();
+   auto end = last--;
+ 
+   v.try_append_range(v1);
+ 
+   VERIFY(before._M_dereferenceable());
+   VERIFY(last._M_dereferenceable());
+   VERIFY(!end._M_singular());
+ }
+ 
+ int main()
+ {
+   test01();
+   test02();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/try_emplace_back.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/try_emplace_back.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/try_emplace_back.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/try_emplace_back.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,27 ----
+ // { dg-do run { target c++26 } }
+ 
+ #include <debug/inplace_vector>
+ #include <testsuite_hooks.h>
+ 
+ using __gnu_debug::inplace_vector;
+ 
+ void test01()
+ {
+   inplace_vector<int, 100> v(10, 17);
+ 
+   auto before = v.begin() + 6;
+   auto last = v.end();
+   auto end = last--;
+ 
+   VERIFY( v.try_emplace_back(42) != nullptr );
+ 
+   VERIFY(before._M_dereferenceable());
+   VERIFY(last._M_dereferenceable());
+   VERIFY(end._M_singular());
+ }
+ 
+ int main()
+ {
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/try_push_back.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/try_push_back.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/try_push_back.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/try_push_back.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,45 ----
+ // { dg-do run { target c++26 } }
+ 
+ #include <debug/inplace_vector>
+ #include <vector>
+ #include <testsuite_hooks.h>
+ 
+ using __gnu_debug::inplace_vector;
+ 
+ void test01()
+ {
+   inplace_vector<int, 100> v(10, 17);
+ 
+   auto before = v.begin() + 6;
+   auto last = v.end();
+   auto end = last--;
+ 
+   VERIFY( v.try_push_back(42) != nullptr );
+ 
+   VERIFY(before._M_dereferenceable());
+   VERIFY(last._M_dereferenceable());
+   VERIFY(end._M_singular());
+ }
+ 
+ void test02()
+ {
+   std::vector<int> vv { 0, 1, 2, 3, 4, 5 };
+   inplace_vector<std::vector<int>, 100> v(10, vv);
+ 
+   auto before = v.begin() + 6;
+   auto last = v.end();
+   auto end = last--;
+ 
+   VERIFY( v.try_push_back(std::move(vv)) != nullptr );
+ 
+   VERIFY(before._M_dereferenceable());
+   VERIFY(last._M_dereferenceable());
+   VERIFY(end._M_singular());
+ }
+ 
+ int main()
+ {
+   test01();
+   test02();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/unchecked_emplace_back.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/unchecked_emplace_back.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/unchecked_emplace_back.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/debug/invalidation/unchecked_emplace_back.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,27 ----
+ // { dg-do run { target c++26 } }
+ 
+ #include <debug/inplace_vector>
+ #include <testsuite_hooks.h>
+ 
+ using __gnu_debug::inplace_vector;
+ 
+ void test01()
+ {
+   inplace_vector<int, 100> v(10, 17);
+ 
+   auto before = v.begin() + 6;
+   auto last = v.end();
+   auto end = last--;
+ 
+   v.unchecked_emplace_back(42);
+ 
+   VERIFY(before._M_dereferenceable());
+   VERIFY(last._M_dereferenceable());
+   VERIFY(end._M_singular());
+ }
+ 
+ int main()
+ {
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/move.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/move.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/inplace_vector/move.cc	Sun Nov 30 22:32:17 2025
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/inplace_vector/move.cc	Sun Dec  7 22:32:18 2025
*************** static_assert(!std::is_nothrow_move_cons
*** 91,102 ****
--- 91,104 ----
  static_assert(std::is_nothrow_move_constructible_v<std::inplace_vector<D, 2>>);
  static_assert(!std::is_nothrow_move_constructible_v<std::inplace_vector<U, 2>>);
  
+ #if !_GLIBCXX_DEBUG
  static_assert(std::is_trivially_move_constructible_v<std::inplace_vector<int, 2>>);
  static_assert(!std::is_trivially_move_constructible_v<std::inplace_vector<X, 2>>);
  static_assert(!std::is_trivially_move_constructible_v<std::inplace_vector<N<true, true>, 2>>);
  // is_trivially_move_constructible_v checks destructor
  static_assert(!std::is_trivially_move_constructible_v<std::inplace_vector<D, 2>>);
  static_assert(std::is_trivially_move_constructible_v<std::inplace_vector<U, 2>>);
+ #endif
  
  static_assert(std::is_move_assignable_v<std::inplace_vector<int, 2>>);
  static_assert(std::is_move_assignable_v<std::inplace_vector<X, 2>>);
*************** static_assert(!std::is_nothrow_move_assi
*** 115,126 ****
--- 117,130 ----
  static_assert(std::is_nothrow_move_assignable_v<std::inplace_vector<D, 2>>);
  static_assert(!std::is_nothrow_move_assignable_v<std::inplace_vector<U, 2>>);
  
+ #if !_GLIBCXX_DEBUG
  static_assert(std::is_trivially_move_assignable_v<std::inplace_vector<int, 2>>);
  static_assert(!std::is_trivially_move_assignable_v<std::inplace_vector<X, 2>>);
  static_assert(!std::is_trivially_move_assignable_v<std::inplace_vector<N<true, true>, 2>>);
  // destructor is not trivial
  static_assert(!std::is_trivially_move_assignable_v<std::inplace_vector<D, 2>>);
  static_assert(std::is_trivially_move_assignable_v<std::inplace_vector<U, 2>>);
+ #endif
  
  static_assert(std::is_nothrow_swappable_v<std::inplace_vector<int, 2>>);
  static_assert(!std::is_nothrow_swappable_v<std::inplace_vector<X, 2>>);
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/mdspan/int_like.h gcc-16-20251207/libstdc++-v3/testsuite/23_containers/mdspan/int_like.h
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/mdspan/int_like.h	Sun Nov 30 22:32:17 2025
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/mdspan/int_like.h	Sun Dec  7 22:32:18 2025
*************** using RValueInt = CustomIndexType<Custom
*** 69,72 ****
--- 69,81 ----
  struct NotIntLike
  { };
  
+ struct StructuralInt
+ {
+   constexpr
+   operator int() const noexcept
+   { return value; }
+ 
+   int value;
+ };
+ 
  #endif // TEST_MDSPAN_INT_LIKE_H
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/mdspan/layouts/ctors.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/mdspan/layouts/ctors.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/mdspan/layouts/ctors.cc	Sun Nov 30 22:32:17 2025
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/mdspan/layouts/ctors.cc	Sun Dec  7 22:32:18 2025
*************** namespace from_same_layout
*** 239,250 ****
        verify_nothrow_convertible<Layout, std::extents<unsigned int>>(
  	std::extents<int>{});
  
!       if constexpr (!is_padded_layout<Layout>)
! 	verify_nothrow_constructible<Layout, std::extents<int>>(
! 	  std::extents<unsigned int>{});
!       else
! 	verify_convertible<Layout, std::extents<int>>(
! 	  std::extents<unsigned int>{});
  
        assert_not_constructible<
  	typename Layout::mapping<std::extents<int>>,
--- 239,246 ----
        verify_nothrow_convertible<Layout, std::extents<unsigned int>>(
  	std::extents<int>{});
  
!       verify_nothrow_constructible<Layout, std::extents<int>>(
! 	std::extents<unsigned int>{});
  
        assert_not_constructible<
  	typename Layout::mapping<std::extents<int>>,
*************** namespace from_same_layout
*** 254,265 ****
  	typename Layout::mapping<std::extents<int, 1>>,
  	typename Layout::mapping<std::extents<int>>>();
  
!       if constexpr (!is_padded_layout<Layout>)
! 	verify_nothrow_constructible<Layout, std::extents<int, 1>>(
! 	  std::extents<int, dyn>{1});
!       else
! 	verify_convertible<Layout, std::extents<int, 1>>(
! 	  std::extents<int, dyn>{1});
  
        verify_nothrow_convertible<Layout, std::extents<int, dyn>>(
  	std::extents<int, 1>{});
--- 250,257 ----
  	typename Layout::mapping<std::extents<int, 1>>,
  	typename Layout::mapping<std::extents<int>>>();
  
!       verify_nothrow_constructible<Layout, std::extents<int, 1>>(
! 	std::extents<int, dyn>{1});
  
        verify_nothrow_convertible<Layout, std::extents<int, dyn>>(
  	std::extents<int, 1>{});
*************** namespace from_left_or_right
*** 349,354 ****
--- 341,407 ----
      }
  }
  
+ // checks: convertibility of rank == 0 mappings.
+ namespace from_rank0
+ {
+   template<typename SLayout, typename OLayout, typename SExtents,
+ 	   typename OExtents>
+     constexpr void
+     verify_ctor()
+     {
+       using SMapping = typename SLayout::mapping<SExtents>;
+       using OMapping = typename OLayout::mapping<OExtents>;
+ 
+       constexpr bool expected = std::is_convertible_v<OExtents, SExtents>;
+       if constexpr (expected)
+ 	verify_nothrow_convertible<SMapping>(OMapping{});
+       else
+ 	verify_nothrow_constructible<SMapping>(OMapping{});
+     }
+ 
+   template<typename Layout, typename OLayout>
+     constexpr void
+     test_rank0_convertibility()
+     {
+       using E1 = std::extents<int>;
+       using E2 = std::extents<unsigned int>;
+ 
+       verify_ctor<Layout, OLayout, E1, E2>();
+       verify_ctor<Layout, OLayout, E2, E1>();
+ 
+       verify_ctor<Layout, OLayout, E2, E2>();
+       verify_ctor<Layout, OLayout, E1, E1>();
+     }
+ 
+   constexpr void
+   test_all()
+   {
+     auto run = []<typename Layout>(Layout)
+       {
+ 	test_rank0_convertibility<Layout, std::layout_left>();
+ 	test_rank0_convertibility<Layout, std::layout_right>();
+ 	test_rank0_convertibility<Layout, std::layout_stride>();
+       };
+ 
+     auto run_all = [run]()
+       {
+ 	run(std::layout_left{});
+ 	run(std::layout_right{});
+ 	run(std::layout_stride{});
+ #if __cplusplus >  202302L
+ 	run(std::layout_left_padded<0>{});
+ 	run(std::layout_left_padded<1>{});
+ 	run(std::layout_left_padded<6>{});
+ 	run(std::layout_left_padded<dyn>{});
+ #endif
+ 	return true;
+       };
+ 
+     run_all();
+     static_assert(run_all());
+   }
+ }
+ 
  // ctor: mapping(layout_stride::mapping<OExtents>)
  namespace from_stride
  {
*************** namespace from_stride
*** 409,416 ****
        verify_nothrow_convertible<Layout, std::extents<unsigned int>>(
  	std::extents<int>{});
  
!       // Rank ==  0 doesn't check IndexType for convertibility.
!       verify_nothrow_convertible<Layout, std::extents<int>>(
  	std::extents<unsigned int>{});
  
        verify_nothrow_constructible<Layout, std::extents<int, 3>>(
--- 462,468 ----
        verify_nothrow_convertible<Layout, std::extents<unsigned int>>(
  	std::extents<int>{});
  
!       verify_nothrow_constructible<Layout, std::extents<int>>(
  	std::extents<unsigned int>{});
  
        verify_nothrow_constructible<Layout, std::extents<int, 3>>(
*************** main()
*** 474,478 ****
--- 526,532 ----
  
    from_left_or_right::test_all<std::layout_left, std::layout_right>();
    from_left_or_right::test_all<std::layout_right, std::layout_left>();
+ 
+   from_rank0::test_all();
    return 0;
  }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded.cc	Sun Nov 30 22:32:17 2025
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded.cc	Sun Dec  7 22:32:18 2025
*************** is_same_mapping(const auto& lhs, const a
*** 149,155 ****
  enum class ConversionRule
  {
    Never,
-   Always,
    Regular
  };
  
--- 149,154 ----
*************** should_convert(auto rule)
*** 159,166 ****
  {
    if constexpr (rule == ConversionRule::Never)
      return false;
-   if constexpr (rule == ConversionRule::Always)
-     return true;
    else
      return std::is_convertible_v<typename From::extents_type,
  				 typename To::extents_type>;
--- 158,163 ----
*************** template<typename LayoutTo, typename Est
*** 184,190 ****
  
      // There's a twist when both mappings are left-padded. There's two distinct
      // ctors: a defaulted copy ctor and a constrained template that enables
!     // construction from left-padded mappings even if their layout_type is
      // different. The two ctors have different rules regarding conversion.
  
      if constexpr (!std::same_as<LayoutTo, LayoutFrom>)
--- 181,187 ----
  
      // There's a twist when both mappings are left-padded. There's two distinct
      // ctors: a defaulted copy ctor and a constrained template that enables
!     // construction from left-padded mappings even if their layout_type (padding) is
      // different. The two ctors have different rules regarding conversion.
  
      if constexpr (!std::same_as<LayoutTo, LayoutFrom>)
*************** template<template<size_t> typename Layou
*** 329,335 ****
  
      auto check = []<typename To>(To, auto m)
      {
!       constexpr auto cr = std::cw<ConversionRule::Always>;
        check_convertible_variants<To, E1, E2, E3>(m, cr);
      };
  
--- 326,332 ----
  
      auto check = []<typename To>(To, auto m)
      {
!       constexpr auto cr = std::cw<ConversionRule::Regular>;
        check_convertible_variants<To, E1, E2, E3>(m, cr);
      };
  
*************** template<template<size_t> typename Layou
*** 350,356 ****
  
      auto check = []<typename To>(To, auto m)
      {
!       constexpr auto cr = std::cw<ConversionRule::Always>;
        check_convertible_variants<To, E1, E2, E3>(m, cr);
      };
  
--- 347,353 ----
  
      auto check = []<typename To>(To, auto m)
      {
!       constexpr auto cr = std::cw<ConversionRule::Regular>;
        check_convertible_variants<To, E1, E2, E3>(m, cr);
      };
  
*************** template<template<size_t> typename Layou
*** 373,379 ****
      typename Layout<6>::mapping<E1> msta{E1{}};
      typename Layout<dyn>::mapping<E1> mdyn{E1{}};
  
!     constexpr auto calways = std::cw<ConversionRule::Always>;
      constexpr auto cnever = std::cw<ConversionRule::Never>;
  
      auto check = []<typename To>(To, auto m, auto cr)
--- 370,376 ----
      typename Layout<6>::mapping<E1> msta{E1{}};
      typename Layout<dyn>::mapping<E1> mdyn{E1{}};
  
!     constexpr auto cregular = std::cw<ConversionRule::Regular>;
      constexpr auto cnever = std::cw<ConversionRule::Never>;
  
      auto check = []<typename To>(To, auto m, auto cr)
*************** template<template<size_t> typename Layou
*** 381,387 ****
  
      check(Layout<6>{}, msta, cnever);
      check(Layout<6>{}, mdyn, cnever);
!     check(Layout<dyn>{}, msta, calways);
      check(Layout<dyn>{}, mdyn, cnever);
    }
  
--- 378,384 ----
  
      check(Layout<6>{}, msta, cnever);
      check(Layout<6>{}, mdyn, cnever);
!     check(Layout<dyn>{}, msta, cregular);
      check(Layout<dyn>{}, mdyn, cnever);
    }
  
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_canonicalize_slices.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_canonicalize_slices.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_canonicalize_slices.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_canonicalize_slices.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,220 ----
+ // { dg-do run { target c++26 } }
+ #include <mdspan>
+ 
+ #include <testsuite_hooks.h>
+ #include <cstddef>
+ #include <cstdint>
+ 
+ constexpr size_t dyn = std::dynamic_extent;
+ 
+ template<typename Extents, typename CInt>
+   constexpr bool
+   check_collapsing(Extents exts, CInt ci_raw)
+   {
+     using IndexType = typename Extents::index_type;
+     auto ci_expected = std::cw<IndexType{ci_raw.value}>;
+     auto [ci] = std::submdspan_canonicalize_slices(exts, ci_raw);
+     static_assert(std::same_as<decltype(ci), decltype(ci_expected)>);
+     VERIFY(std::cmp_equal(ci.value, ci_raw.value));
+ 
+     auto [i] = std::submdspan_canonicalize_slices(exts, ci_raw.value);
+     static_assert(std::same_as<decltype(i), IndexType>);
+     VERIFY(std::cmp_equal(i, ci_raw.value));
+     return true;
+   }
+ 
+ template<typename Extents>
+   constexpr bool
+   test_scalar(Extents exts)
+   {
+     using IndexType = typename Extents::index_type;
+ 
+     check_collapsing(exts, std::cw<uint8_t{0}>);
+     check_collapsing(exts, std::cw<IndexType{0}>);
+ 
+     check_collapsing(exts, std::cw<uint8_t{4}>);
+     check_collapsing(exts, std::cw<IndexType{4}>);
+     return true;
+   }
+ 
+ constexpr bool
+ test_scalar()
+ {
+   test_scalar(std::extents<int, dyn>{5});
+   test_scalar(std::extents<int, 5>{});
+   test_scalar(std::extents<unsigned int, dyn>{5});
+   test_scalar(std::extents<unsigned int, 5>{});
+   return true;
+ }
+ 
+ constexpr void
+ assert_same(auto lhs, auto rhs)
+ {
+   static_assert(std::same_as<decltype(lhs), decltype(rhs)>);
+   VERIFY(lhs == rhs);
+ }
+ 
+ template<template<typename, typename> typename Pair>
+   constexpr bool
+   test_pair(auto exts, auto cbegin, auto cend, auto coffset, auto cextent)
+   {
+     using IndexType = typename decltype(exts)::index_type;
+     auto c1 = std::cw<IndexType{1}>;
+ 
+     auto raw_cc = Pair{cbegin, cend};
+     auto [cc] = std::submdspan_canonicalize_slices(exts, raw_cc);
+     assert_same(cc.offset, coffset);
+     assert_same(cc.extent, cextent);
+     assert_same(cc.stride, c1);
+ 
+     auto raw_cd = Pair{cbegin, cend.value};
+     auto [cd] = std::submdspan_canonicalize_slices(exts, raw_cd);
+     assert_same(cd.offset, coffset);
+     assert_same(cd.extent, cextent.value);
+     assert_same(cd.stride, c1);
+ 
+     auto raw_dc = Pair{cbegin.value, cend};
+     auto [dc] = std::submdspan_canonicalize_slices(exts, raw_dc);
+     assert_same(dc.offset, coffset.value);
+     assert_same(dc.extent, cextent.value);
+     assert_same(dc.stride, c1);
+ 
+     auto raw_dd = Pair{cbegin.value, cend.value};
+     auto [dd] = std::submdspan_canonicalize_slices(exts, raw_dd);
+     assert_same(dd.offset, coffset.value);
+     assert_same(dd.extent, cextent.value);
+     assert_same(dd.stride, c1);
+     return true;
+   }
+ 
+ template<template<typename, typename> typename Pair>
+   constexpr bool
+   test_pair()
+   {
+     test_pair<Pair>(std::extents<int, dyn>{5}, std::cw<uint8_t{2}>,
+ 	std::cw<uint8_t{5}>, std::cw<2>, std::cw<3>);
+     test_pair<Pair>(std::extents<int, 5>{}, std::cw<uint8_t{2}>,
+ 	std::cw<uint8_t{5}>, std::cw<2>, std::cw<3>);
+     test_pair<Pair>(std::extents<int, 0>{}, std::cw<uint8_t{0}>,
+ 	std::cw<uint8_t{0}>, std::cw<0>, std::cw<0>);
+     test_pair<Pair>(std::extents<int, dyn>{0}, std::cw<uint8_t{0}>,
+ 	std::cw<uint8_t{0}>, std::cw<0>, std::cw<0>);
+     return true;
+   }
+ 
+ template<typename Lower, typename Upper>
+ struct Range
+ {
+   Lower lower;
+   Upper upper;
+ };
+ 
+ constexpr bool
+ test_pair_all()
+ {
+   test_pair<std::pair>();
+   test_pair<std::tuple>();
+   test_pair<Range>();
+   return true;
+ }
+ 
+ constexpr bool
+ test_strided_slice(auto exts, auto co, auto ce, auto cs)
+ {
+   using IndexType = decltype(exts)::index_type;
+ 
+   auto coffset = std::cw<IndexType{co.value}>;
+   auto cextent = std::cw<IndexType{ce.value}>;
+   auto cstride = std::cw<IndexType{cs.value}>;
+ 
+   auto raw_ccc = std::strided_slice{co, ce, cs};
+   auto [ccc] = std::submdspan_canonicalize_slices(exts, raw_ccc);
+   assert_same(ccc.offset, coffset);
+   assert_same(ccc.extent, cextent);
+   assert_same(ccc.stride, cstride);
+ 
+   auto raw_dcc = std::strided_slice{co.value, ce, cs};
+   auto [dcc] = std::submdspan_canonicalize_slices(exts, raw_dcc);
+   assert_same(dcc.offset, coffset.value);
+   assert_same(dcc.extent, cextent);
+   assert_same(dcc.stride, cstride);
+ 
+   auto raw_cdc = std::strided_slice{co, ce.value, cs};
+   auto [cdc] = std::submdspan_canonicalize_slices(exts, raw_cdc);
+   assert_same(cdc.offset, coffset);
+   assert_same(cdc.extent, cextent.value);
+   assert_same(cdc.stride, cstride);
+ 
+   auto raw_ccd = std::strided_slice{co, ce, cs.value};
+   auto [ccd] = std::submdspan_canonicalize_slices(exts, raw_ccd);
+   assert_same(ccd.offset, coffset);
+   assert_same(ccd.extent, cextent);
+   assert_same(ccd.stride, cstride.value);
+   return true;
+ }
+ 
+ constexpr bool
+ test_strided_slice()
+ {
+   auto run = [](auto exts)
+   {
+     auto cs = std::cw<uint8_t{9}>;
+     test_strided_slice(exts, std::cw<uint8_t{2}>, std::cw<uint8_t{3}>, cs);
+     test_strided_slice(exts, std::cw<uint8_t{0}>, std::cw<uint8_t{5}>, cs);
+   };
+ 
+   run(std::extents<int, 5>{});
+   run(std::extents<int, dyn>{5});
+   return true;
+ }
+ 
+ constexpr bool
+ test_strided_slice_zero_extent(auto exts, auto cs)
+ {
+   using IndexType = typename decltype(exts)::index_type;
+   auto c0 = std::cw<uint8_t{0}>;
+   auto raw_ccc = std::strided_slice{c0, c0, cs};
+   auto [ccc] = std::submdspan_canonicalize_slices(exts, raw_ccc);
+   assert_same(ccc.stride, std::cw<IndexType{1}>);
+ 
+   auto raw_ccd = std::strided_slice{c0, c0, cs.value};
+   auto [ccd] = std::submdspan_canonicalize_slices(exts, raw_ccd);
+   assert_same(ccd.stride, std::cw<IndexType{1}>);
+   return true;
+ }
+ 
+ constexpr bool
+ test_strided_slice_zero_extent(auto exts)
+ {
+   test_strided_slice_zero_extent(exts, std::cw<uint8_t{0}>);
+   test_strided_slice_zero_extent(exts, std::cw<uint8_t{9}>);
+   return true;
+ }
+ 
+ constexpr bool
+ test_strided_slice_zero_extent()
+ {
+   test_strided_slice_zero_extent(std::extents<int, 0>{});
+   test_strided_slice_zero_extent(std::extents<int, dyn>{0});
+   test_strided_slice_zero_extent(std::extents<int, 5>{});
+   test_strided_slice_zero_extent(std::extents<int, dyn>{5});
+   return true;
+ }
+ 
+ constexpr bool
+ test_all()
+ {
+   test_scalar();
+   test_pair_all();
+   test_strided_slice();
+   test_strided_slice_zero_extent();
+   return true;
+ }
+ 
+ int
+ main()
+ {
+   test_all();
+   static_assert(test_all());
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_canonicalize_slices_neg.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_canonicalize_slices_neg.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_canonicalize_slices_neg.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_canonicalize_slices_neg.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,208 ----
+ // { dg-do compile { target c++26 } }
+ #include <mdspan>
+ 
+ #include <cstdint>
+ 
+ constexpr size_t dyn = std::dynamic_extent;
+ 
+ constexpr auto dyn_empty = std::extents<int32_t, dyn>{0};
+ constexpr auto sta_empty = std::extents<uint32_t, 0>{};
+ 
+ constexpr auto dyn_uexts = std::extents<uint8_t, dyn>{5};
+ constexpr auto sta_uexts = std::extents<uint16_t, 5>{5};
+ constexpr auto dyn_sexts = std::extents<int8_t, dyn>{5};
+ constexpr auto sta_sexts = std::extents<int16_t, 5>{5};
+ 
+ constexpr bool
+ test_rank_mismatch()
+ {
+   auto exts = std::extents(1);
+   std::submdspan_canonicalize_slices(exts, 0, 0); // { dg-error "no matching" }
+   return true;
+ }
+ 
+ template<typename Int, typename Extents>
+ constexpr bool
+ test_under1(Int i1, Extents exts)
+ {
+   auto [s1] = std::submdspan_canonicalize_slices(exts, i1);
+   return true;
+ }
+ 
+ static_assert(test_under1(-1, dyn_sexts));   // { dg-error "expansion of" }
+ static_assert(test_under1(-1, dyn_uexts));   // { dg-error "expansion of" }
+ static_assert(test_under1(-1, sta_sexts));   // { dg-error "expansion of" }
+ static_assert(test_under1(-1, sta_uexts));   // { dg-error "expansion of" }
+ 
+ static_assert(test_under1(std::cw<-1>, dyn_sexts));   // { dg-error "required from" }
+ static_assert(test_under1(std::cw<-1>, dyn_uexts));   // { dg-error "required from" }
+ static_assert(test_under1(std::cw<-1>, sta_sexts));   // { dg-error "required from" }
+ static_assert(test_under1(std::cw<-1>, sta_uexts));   // { dg-error "required from" }
+ 
+ template<typename Int, typename Extents>
+ constexpr bool
+ test_over1(Int i1, Extents exts)
+ {
+   auto [s1] = std::submdspan_canonicalize_slices(exts, i1);
+   return true;
+ }
+ 
+ static_assert(test_over1(0, dyn_empty));   // { dg-error "expansion of" }
+ static_assert(test_over1(0, sta_empty));   // { dg-error "expansion of" }
+ static_assert(test_over1(5, dyn_sexts));   // { dg-error "expansion of" }
+ static_assert(test_over1(5, dyn_uexts));   // { dg-error "expansion of" }
+ static_assert(test_over1(5, sta_sexts));   // { dg-error "expansion of" }
+ static_assert(test_over1(5, sta_uexts));   // { dg-error "expansion of" }
+ 
+ static_assert(test_over1(std::cw<0>, dyn_empty));   // { dg-error "expansion of" }
+ static_assert(test_over1(std::cw<0>, sta_empty));   // { dg-error "expansion of" }
+ static_assert(test_over1(std::cw<5>, dyn_sexts));   // { dg-error "expansion of" }
+ static_assert(test_over1(std::cw<5>, dyn_uexts));   // { dg-error "expansion of" }
+ static_assert(test_over1(std::cw<5>, sta_sexts));   // { dg-error "expansion of" }
+ static_assert(test_over1(std::cw<5>, sta_uexts));   // { dg-error "expansion of" }
+ 
+ template<typename Offset, typename Extent, typename Stride, typename Extents>
+   constexpr bool
+   test_under2(Offset o, Extent e, Stride s, Extents exts)
+   {
+     std::submdspan_canonicalize_slices(exts, std::strided_slice{o, e, s});
+     return true;
+   }
+ 
+ constexpr auto i8_1 = int8_t{1};
+ 
+ static_assert(test_under2(-i8_1, 0, 1, dyn_uexts));   // { dg-error "expansion of" }
+ static_assert(test_under2(0, -i8_1, 1, dyn_uexts));   // { dg-error "expansion of" }
+ static_assert(test_under2(0, 1, -i8_1, dyn_uexts));   // { dg-error "expansion of" }
+ static_assert(test_under2(-i8_1, 0, 1, dyn_sexts));   // { dg-error "expansion of" }
+ static_assert(test_under2(0, -i8_1, 1, dyn_sexts));   // { dg-error "expansion of" }
+ static_assert(test_under2(0, 1, -i8_1, dyn_sexts));   // { dg-error "expansion of" }
+ static_assert(test_under2(-i8_1, 0, 1, sta_uexts));   // { dg-error "expansion of" }
+ static_assert(test_under2(0, -i8_1, 1, sta_uexts));   // { dg-error "expansion of" }
+ static_assert(test_under2(0, 1, -i8_1, sta_uexts));   // { dg-error "expansion of" }
+ static_assert(test_under2(-i8_1, 0, 1, sta_sexts));   // { dg-error "expansion of" }
+ static_assert(test_under2(0, -i8_1, 1, sta_sexts));   // { dg-error "expansion of" }
+ static_assert(test_under2(0, 1, -i8_1, sta_sexts));   // { dg-error "expansion of" }
+ 
+ constexpr auto c_i8_m1 = std::cw<int8_t{-1}>;
+ constexpr auto c_i16_m1 = std::cw<int16_t{-1}>;
+ constexpr auto c_i64_m1 = std::cw<int64_t{-1}>;
+ 
+ static_assert(test_under2(c_i8_m1, 0, 1, dyn_uexts));   // { dg-error "required from" }
+ static_assert(test_under2(0, c_i16_m1, 1, dyn_uexts));  // { dg-error "required from" }
+ static_assert(test_under2(0, 1, c_i64_m1, dyn_uexts));  // { dg-error "required from" }
+ static_assert(test_under2(c_i8_m1, 0, 1, dyn_sexts));   // { dg-error "required from" }
+ static_assert(test_under2(0, c_i16_m1, 1, dyn_sexts));  // { dg-error "required from" }
+ static_assert(test_under2(0, 1, c_i64_m1, dyn_sexts));  // { dg-error "required from" }
+ static_assert(test_under2(c_i8_m1, 0, 1, sta_uexts));   // { dg-error "required from" }
+ static_assert(test_under2(0, c_i16_m1, 1, sta_uexts));  // { dg-error "required from" }
+ static_assert(test_under2(0, 1, c_i64_m1, sta_uexts));  // { dg-error "required from" }
+ static_assert(test_under2(c_i8_m1, 0, 1, sta_sexts));   // { dg-error "required from" }
+ static_assert(test_under2(0, c_i16_m1, 1, sta_sexts));  // { dg-error "required from" }
+ static_assert(test_under2(0, 1, c_i64_m1, sta_sexts));  // { dg-error "required from" }
+ 
+ template<typename Offset, typename Extent, typename Stride, typename Extents>
+   constexpr bool
+   test_over2(Offset o, Extent e, Stride s, Extents exts)
+   {
+     std::submdspan_canonicalize_slices(exts, std::strided_slice{o, e, s});
+     return true;
+   }
+ 
+ constexpr auto i8_6 = int8_t{6};
+ constexpr auto c_i8_6 = std::cw<int8_t{6}>;
+ constexpr auto c2 = std::cw<2>;
+ constexpr auto c4 = std::cw<4>;
+ 
+ static_assert(test_over2(i8_6, 0, 1, dyn_uexts));    // { dg-error "expansion of" }
+ static_assert(test_over2(0, i8_6, 1, dyn_uexts));    // { dg-error "expansion of" }
+ static_assert(test_over2(2, 4, 0, dyn_uexts));       // { dg-error "expansion of" }
+ static_assert(test_over2(c_i8_6, 0, 1, dyn_uexts));  // { dg-error "expansion of" }
+ static_assert(test_over2(0, c_i8_6, 1, dyn_uexts));  // { dg-error "expansion of" }
+ static_assert(test_over2(c2, 4, 1, dyn_uexts));      // { dg-error "expansion of" }
+ static_assert(test_over2(2, c4, 1, dyn_uexts));      // { dg-error "expansion of" }
+ static_assert(test_over2(c2, c4, 1, dyn_uexts));     // { dg-error "expansion of" }
+ 
+ static_assert(test_over2(i8_6, 0, 1, dyn_sexts));    // { dg-error "expansion of" }
+ static_assert(test_over2(0, i8_6, 1, dyn_sexts));    // { dg-error "expansion of" }
+ static_assert(test_over2(2, 4, 0, dyn_sexts));       // { dg-error "expansion of" }
+ static_assert(test_over2(c_i8_6, 0, 1, dyn_sexts));  // { dg-error "expansion of" }
+ static_assert(test_over2(0, c_i8_6, 1, dyn_sexts));  // { dg-error "expansion of" }
+ static_assert(test_over2(c2, 4, 1, dyn_sexts));      // { dg-error "expansion of" }
+ static_assert(test_over2(2, c4, 1, dyn_sexts));      // { dg-error "expansion of" }
+ static_assert(test_over2(c2, c4, 1, dyn_sexts));     // { dg-error "expansion of" }
+ 
+ static_assert(test_over2(i8_6, 0, 1, sta_uexts));    // { dg-error "expansion of" }
+ static_assert(test_over2(0, i8_6, 1, sta_uexts));    // { dg-error "expansion of" }
+ static_assert(test_over2(2, 4, 0, sta_uexts));       // { dg-error "expansion of" }
+ static_assert(test_over2(c_i8_6, 0, 1, sta_uexts));  // { dg-error "expansion of" }
+ static_assert(test_over2(0, c_i8_6, 1, sta_uexts));  // { dg-error "expansion of" }
+ static_assert(test_over2(c2, 4, 1, sta_uexts));      // { dg-error "expansion of" }
+ static_assert(test_over2(2, c4, 1, sta_uexts));      // { dg-error "expansion of" }
+ static_assert(test_over2(c2, c4, 1, sta_uexts));     // { dg-error "expansion of" }
+ 
+ static_assert(test_over2(i8_6, 0, 1, sta_sexts));    // { dg-error "expansion of" }
+ static_assert(test_over2(0, i8_6, 1, sta_sexts));    // { dg-error "expansion of" }
+ static_assert(test_over2(2, 4, 0, sta_sexts));       // { dg-error "expansion of" }
+ static_assert(test_over2(c_i8_6, 0, 1, sta_sexts));  // { dg-error "expansion of" }
+ static_assert(test_over2(0, c_i8_6, 1, sta_sexts));  // { dg-error "expansion of" }
+ static_assert(test_over2(c2, 4, 1, sta_sexts));      // { dg-error "expansion of" }
+ static_assert(test_over2(2, c4, 1, sta_sexts));      // { dg-error "expansion of" }
+ static_assert(test_over2(c2, c4, 1, sta_sexts));     // { dg-error "expansion of" }
+ 
+ // Checks the precondition: offset + extent <= exts.extent(0) for unsigned
+ // index_type when offset + extent overflows.
+ constexpr bool
+ test_overflow1(auto o, auto e)
+ {
+   auto exts = std::extents<uint8_t, dyn>{255};
+   auto slice = std::strided_slice{o, e, 1};
+   std::submdspan_canonicalize_slices(exts, slice);
+   return true;
+ }
+ 
+ static_assert(test_overflow1(128, 128));                    // { dg-error "expansion of" }
+ static_assert(test_overflow1(std::cw<128>, 128));           // { dg-error "expansion of" }
+ static_assert(test_overflow1(128, std::cw<128>));           // { dg-error "expansion of" }
+ static_assert(test_overflow1(std::cw<128>, std::cw<128>));  // { dg-error "expansion of" }
+ 
+ constexpr bool
+ test_overflow2(auto b, auto e)
+ {
+   auto exts = std::extents<uint8_t, dyn>{255};
+   auto slice = std::pair{b, e};
+   std::submdspan_canonicalize_slices(exts, slice);
+   return true;
+ }
+ 
+ static_assert(test_overflow2(5, 4));                    // { dg-error "expansion of" }
+ static_assert(test_overflow2(std::cw<5>, 4));           // { dg-error "expansion of" }
+ static_assert(test_overflow2(5, std::cw<4>));           // { dg-error "expansion of" }
+ static_assert(test_overflow2(std::cw<5>, std::cw<4>));  // { dg-error "expansion of" }
+ 
+ constexpr auto u8_4 = uint8_t{4};
+ constexpr auto u8_5 = uint8_t{5};
+ static_assert(test_overflow2(u8_5, u8_4));                    // { dg-error "expansion of" }
+ static_assert(test_overflow2(std::cw<u8_5>, u8_4));           // { dg-error "expansion of" }
+ static_assert(test_overflow2(u8_5, std::cw<u8_4>));           // { dg-error "expansion of" }
+ static_assert(test_overflow2(std::cw<u8_5>, std::cw<u8_4>));  // { dg-error "expansion of" }
+ 
+ constexpr bool
+ test_invalid(auto e, auto s)
+ {
+   auto exts = std::extents(5);
+   auto slice = std::strided_slice(0, e, s);
+   std::submdspan_canonicalize_slices(exts, slice);
+   return true;
+ }
+ 
+ static_assert(test_invalid(3, 0));                   // { dg-error "expansion of" }
+ static_assert(test_invalid(3, std::cw<0>));          // { dg-error "expansion of" }
+ static_assert(test_invalid(3, std::cw<0>));          // { dg-error "expansion of" }
+ static_assert(test_invalid(std::cw<3>, std::cw<0>)); // { dg-error "expansion of" }
+ 
+ 
+ // { dg-prune-output "static assertion failed" }
+ // { dg-prune-output "__glibcxx_assert_fail" }
+ // { dg-prune-output "__glibcxx_assert" }
+ // { dg-prune-output "non-constant condition" }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_extents.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_extents.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_extents.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_extents.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,169 ----
+ // { dg-do run { target c++26 } }
+ #include <mdspan>
+ 
+ #include "../int_like.h"
+ #include <testsuite_hooks.h>
+ 
+ constexpr size_t dyn = std::dynamic_extent;
+ constexpr auto all = std::full_extent;
+ 
+ constexpr bool
+ test_from_full_extent()
+ {
+   auto exts = std::extents<int, 3, dyn, 7>{};
+   auto sub_exts = submdspan_extents(exts, 1, all, all);
+   VERIFY(sub_exts.rank() == 2);
+   VERIFY(sub_exts.static_extent(0) == dyn);
+   VERIFY(sub_exts.extent(0) == exts.extent(1));
+   VERIFY(std::cmp_equal(sub_exts.static_extent(1), exts.extent(2)));
+   return true;
+ }
+ 
+ template<template<typename, typename> typename Pair, template<int> typename Cw>
+   constexpr bool
+   test_from_tuple()
+   {
+     auto exts = std::extents<int, 3, 5, 7>{};
+     auto s0 = Cw<1>{};
+     auto s1 = Pair{Cw<1>{}, Cw<2>{}};
+     auto s2 = Pair{Cw<1>{}, 4};
+     auto sub_exts = submdspan_extents(exts, s0, s1, s2);
+     VERIFY(sub_exts.rank() == 2);
+     VERIFY(sub_exts.static_extent(0) == size_t(get<1>(s1) - get<0>(s1)));
+     VERIFY(sub_exts.static_extent(1) == dyn);
+     VERIFY(std::cmp_equal(sub_exts.extent(1), get<1>(s2) - get<0>(s2)));
+     return true;
+   }
+ 
+ template<template<int> typename Cw>
+   constexpr bool
+   test_from_tuple_all()
+   {
+     test_from_tuple<std::tuple, Cw>();
+     test_from_tuple<std::pair, Cw>();
+     return true;
+   }
+ 
+ 
+ template<typename Int>
+   void
+   test_from_int_like_as_scalar()
+   {
+     auto exts = std::extents<int, 3, 5>{};
+     auto sub_exts = submdspan_extents(exts, Int(1), std::tuple{1, 3});
+     VERIFY(sub_exts.rank() == 1);
+     VERIFY(sub_exts.static_extent(0) == dyn);
+     VERIFY(sub_exts.extent(0) == 2);
+   }
+ 
+ template<template<int> typename Cw>
+   constexpr bool
+   test_from_const_int()
+   {
+     auto exts = std::extents<int, 3, 5>{};
+     auto sub_exts = submdspan_extents(exts, Cw<1>{}, std::tuple{1, 3});
+     VERIFY(sub_exts.rank() == 1);
+     VERIFY(sub_exts.static_extent(0) == dyn);
+     VERIFY(sub_exts.extent(0) == 2);
+     return true;
+   }
+ 
+ template<typename Int>
+   constexpr bool
+   test_from_int_like_in_tuple()
+   {
+     auto exts = std::extents<int, 3, 5>{};
+     auto sub_exts = submdspan_extents(exts, Int(1), std::tuple{Int(1), Int(3)});
+     VERIFY(sub_exts.rank() == 1);
+     VERIFY(sub_exts.static_extent(0) == dyn);
+     VERIFY(sub_exts.extent(0) == 2);
+     return true;
+   }
+ 
+ template<template<int> typename Cw>
+   constexpr bool
+   test_from_strided_slice()
+   {
+     auto exts = std::extents<int, 5, 7, 11>{};
+     {
+       auto s0 = 1;
+       auto s1 = std::strided_slice{0, 0, 0};
+       auto s2 = std::strided_slice{1, Cw<0>{}, 0};
+       auto sub_exts = submdspan_extents(exts, s0, s1, s2);
+       VERIFY(sub_exts.rank() == 2);
+       VERIFY(sub_exts.static_extent(0) == dyn);
+       VERIFY(sub_exts.extent(0) == 0);
+       VERIFY(sub_exts.static_extent(1) == 0);
+     }
+ 
+     {
+       auto s0 = 1;
+       auto s1 = std::strided_slice{0, 2, Cw<1>{}};
+       auto s2 = std::strided_slice{1, Cw<2>{}, 1};
+       auto sub_exts = submdspan_extents(exts, s0, s1, s2);
+       VERIFY(sub_exts.rank() == 2);
+       VERIFY(sub_exts.static_extent(0) == dyn);
+       VERIFY(sub_exts.extent(0) == 2);
+       VERIFY(sub_exts.static_extent(1) == dyn);
+       VERIFY(sub_exts.extent(1) == 2);
+     }
+ 
+     {
+       // selected = 1 x [1, 3] x [1, 4, 7, 10]
+       auto s0 = 1;
+       auto s1 = std::strided_slice{1, Cw<4>{}, 2};
+       auto s2 = std::strided_slice{1, Cw<10>{}, Cw<3>{}};
+       auto sub_exts = submdspan_extents(exts, s0, s1, s2);
+       VERIFY(sub_exts.rank() == 2);
+       VERIFY(sub_exts.static_extent(0) == dyn);
+       VERIFY(sub_exts.extent(0) == 2);
+       VERIFY(sub_exts.static_extent(1) == 4);
+     }
+ 
+     {
+       // selected = [0, 2] x [1, 3] x [0, 3, 6]
+       auto s0 = std::strided_slice(0, 3, 2);
+       auto s1 = std::strided_slice(1, 4, 2);
+       auto s2 = std::strided_slice(0, 7, 3);
+       auto sub_exts = submdspan_extents(exts, s0, s1, s2);
+       VERIFY(sub_exts.rank() == 3);
+       VERIFY(sub_exts.extent(0) == 2);
+       VERIFY(sub_exts.extent(1) == 2);
+       VERIFY(sub_exts.extent(2) == 3);
+     }
+     return true;
+   }
+ 
+ template<int Value>
+   using CW = std::constant_wrapper<Value, int>;
+ 
+ template<int Value>
+   using IC = std::integral_constant<int, Value>;
+ 
+ constexpr bool
+ test_all()
+ {
+   test_from_full_extent();
+   test_from_tuple_all<CW>();
+   test_from_tuple_all<IC>();
+   test_from_const_int<CW>();
+   test_from_const_int<IC>();
+   test_from_strided_slice<CW>();
+   test_from_strided_slice<IC>();
+   test_from_int_like_in_tuple<StructuralInt>();
+   return true;
+ }
+ 
+ int
+ main()
+ {
+   test_all();
+   static_assert(test_all());
+ 
+   test_from_int_like_as_scalar<CustomIndexType<CustomIndexKind::Const, true>>();
+   test_from_int_like_as_scalar<CustomIndexType<CustomIndexKind::Throwing, true>>();
+   test_from_int_like_as_scalar<CustomIndexType<CustomIndexKind::Mutating, true>>();
+   test_from_int_like_as_scalar<CustomIndexType<CustomIndexKind::RValue, true>>();
+   test_from_int_like_as_scalar<StructuralInt>();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_extents_neg.cc gcc-16-20251207/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_extents_neg.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_extents_neg.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251207/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_extents_neg.cc	Sun Dec  7 22:32:18 2025
***************
*** 0 ****
--- 1,48 ----
+ // { dg-do compile { target c++26 } }
+ #include <mdspan>
+ 
+ #include <cstdint>
+ 
+ struct NotASlice
+ { };
+ 
+ constexpr bool
+ test_unrelated_stride_type()
+ {
+   auto exts = std::extents(3, 5, 7);
+   auto sub_exts = submdspan_extents(exts, 1, NotASlice{}, 2);  // { dg-error "required from" }
+   return true;
+ }
+ static_assert(test_unrelated_stride_type());
+ 
+ constexpr bool
+ test_invalid_stride_zero()
+ {
+   auto exts = std::extents(3, 5, 7);
+   auto s = std::strided_slice{0, 1, 0};
+   auto sub_exts = submdspan_extents(exts, 1, s, 2);  // { dg-error "expansion of" }
+   return true;
+ }
+ static_assert(test_invalid_stride_zero());
+ 
+ template<typename Slice>
+ constexpr bool
+ test_out_of_bounds(const Slice& slice)
+ {
+   auto exts = std::extents<uint16_t, 3, 5, 7>{};
+   auto sub_exts = submdspan_extents(exts, 1, slice, 2);  // { dg-error "expansion of" }
+   return true;
+ }
+ static_assert(test_out_of_bounds(std::strided_slice{0, 6, 1}));  // { dg-error "expansion of" }
+ static_assert(test_out_of_bounds(std::strided_slice{0, 7, 2}));  // { dg-error "expansion of" }
+ static_assert(test_out_of_bounds(std::strided_slice{1, 6, 1}));  // { dg-error "expansion of" }
+ static_assert(test_out_of_bounds(std::strided_slice{1, 6, 2}));  // { dg-error "expansion of" }
+ static_assert(test_out_of_bounds(std::tuple{1, 6}));             // { dg-error "expansion of" }
+ static_assert(test_out_of_bounds(std::tuple{std::cw<1>, std::cw<6>})); // { dg-error "expansion of" }
+ static_assert(test_out_of_bounds(std::strided_slice{-1, 2, 1})); // { dg-error "expansion of" }
+ static_assert(test_out_of_bounds(std::tuple{-1, 2}));            // { dg-error "expansion of" }
+ 
+ // { dg-prune-output "cannot decompose class type 'NotASlice'" }
+ // { dg-prune-output "static assertion failed" }
+ // { dg-prune-output "__glibcxx_assert_fail" }
+ // { dg-prune-output "non-constant condition" }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/std/ranges/adaptors/take.cc gcc-16-20251207/libstdc++-v3/testsuite/std/ranges/adaptors/take.cc
*** gcc-16-20251130/libstdc++-v3/testsuite/std/ranges/adaptors/take.cc	Sun Nov 30 22:32:17 2025
--- gcc-16-20251207/libstdc++-v3/testsuite/std/ranges/adaptors/take.cc	Sun Dec  7 22:32:19 2025
*************** test06()
*** 118,123 ****
--- 118,137 ----
    static_assert(!requires { views::all | take; });
  }
  
+ void
+ test07()
+ {
+   // PR libstdc++/111550
+   struct Five {
+     operator int() & { return 5; }
+     operator int() && = delete;
+   };
+   auto take_five = views::take(Five{});
+   auto r = take_five(views::iota(0));
+   auto take_five_piped = views::take(Five{}) | views::transform(std::identity{});
+   auto s = take_five_piped(views::iota(0));
+ }
+ 
  int
  main()
  {
*************** main()
*** 127,130 ****
--- 141,145 ----
    test04();
    test05();
    test06();
+   test07();
  }
diff -Nrcpad gcc-16-20251130/libstdc++-v3/testsuite/util/debug/checks.h gcc-16-20251207/libstdc++-v3/testsuite/util/debug/checks.h
*** gcc-16-20251130/libstdc++-v3/testsuite/util/debug/checks.h	Sun Nov 30 22:32:17 2025
--- gcc-16-20251207/libstdc++-v3/testsuite/util/debug/checks.h	Sun Dec  7 22:32:19 2025
***************
*** 19,28 ****
--- 19,30 ----
  #include <vector>
  #include <deque>
  #include <list>
+ #include <inplace_vector>
  #ifndef _GLIBCXX_DEBUG
  #  include <debug/vector>
  #  include <debug/deque>
  #  include <debug/list>
+ #  include <debug/inplace_vector>
  #endif
  #include <testsuite_hooks.h>
  
*************** namespace __gnu_test
*** 88,97 ****
      void
      check_assign1()
      {
        typedef _Tp cont_type;
        typedef typename cont_type::value_type cont_val_type;
        typedef typename CopyableValueType<cont_val_type>::value_type val_type;
!       typedef std::vector<val_type> vector_type;
  
        generate_unique<val_type> gu;
  
--- 90,100 ----
      void
      check_assign1()
      {
+       using namespace std;
        typedef _Tp cont_type;
        typedef typename cont_type::value_type cont_val_type;
        typedef typename CopyableValueType<cont_val_type>::value_type val_type;
!       typedef _GLIBCXX_STD_C::vector<val_type> vector_type;
  
        generate_unique<val_type> gu;
  
*************** namespace __gnu_test
*** 116,125 ****
      void
      check_assign2()
      {
        typedef _Tp cont_type;
        typedef typename cont_type::value_type cont_val_type;
        typedef typename CopyableValueType<cont_val_type>::value_type val_type;
!       typedef std::vector<val_type> vector_type;
  
        generate_unique<val_type> gu;
  
--- 119,129 ----
      void
      check_assign2()
      {
+       using namespace std;
        typedef _Tp cont_type;
        typedef typename cont_type::value_type cont_val_type;
        typedef typename CopyableValueType<cont_val_type>::value_type val_type;
!       typedef _GLIBCXX_STD_C::vector<val_type> vector_type;
  
        generate_unique<val_type> gu;
  
*************** namespace __gnu_test
*** 170,179 ****
      void
      check_construct1()
      {
        typedef _Tp cont_type;
        typedef typename cont_type::value_type cont_val_type;
        typedef typename CopyableValueType<cont_val_type>::value_type val_type;
!       typedef std::vector<val_type> vector_type;
  
        generate_unique<val_type> gu;
  
--- 174,184 ----
      void
      check_construct1()
      {
+       using namespace std;
        typedef _Tp cont_type;
        typedef typename cont_type::value_type cont_val_type;
        typedef typename CopyableValueType<cont_val_type>::value_type val_type;
!       typedef _GLIBCXX_STD_C::vector<val_type> vector_type;
  
        generate_unique<val_type> gu;
  
*************** namespace __gnu_test
*** 193,202 ****
      void
      check_construct2()
      {
        typedef _Tp cont_type;
        typedef typename cont_type::value_type cont_val_type;
        typedef typename CopyableValueType<cont_val_type>::value_type val_type;
!       typedef std::vector<val_type> vector_type;
  
        generate_unique<val_type> gu;
  
--- 198,208 ----
      void
      check_construct2()
      {
+       using namespace std;
        typedef _Tp cont_type;
        typedef typename cont_type::value_type cont_val_type;
        typedef typename CopyableValueType<cont_val_type>::value_type val_type;
!       typedef _GLIBCXX_STD_C::vector<val_type> vector_type;
  
        generate_unique<val_type> gu;
  
*************** namespace __gnu_test
*** 267,272 ****
--- 273,285 ----
      : InsertRangeHelperAux<std::list<_Tp1, _Tp2> >
      { };
  
+ #ifdef __glibcxx_inplace_vector // C++ >= 26
+   template<typename _Tp, size_t _Nm>
+     struct InsertRangeHelper<std::inplace_vector<_Tp, _Nm> >
+     : InsertRangeHelperAux<std::inplace_vector<_Tp, _Nm> >
+     { };
+ #endif
+ 
  #ifndef _GLIBCXX_DEBUG
    template <typename _Tp1, typename _Tp2>
      struct InsertRangeHelper<__gnu_debug::vector<_Tp1, _Tp2> >
*************** namespace __gnu_test
*** 282,297 ****
      struct InsertRangeHelper<__gnu_debug::list<_Tp1, _Tp2> >
      : InsertRangeHelperAux<__gnu_debug::list<_Tp1, _Tp2> >
      { };
  #endif
  
    template<typename _Tp>
      void
      check_insert1()
      {
        typedef _Tp cont_type;
        typedef typename cont_type::value_type cont_val_type;
        typedef typename CopyableValueType<cont_val_type>::value_type val_type;
!       typedef std::vector<val_type> vector_type;
  
        generate_unique<val_type> gu;
  
--- 295,318 ----
      struct InsertRangeHelper<__gnu_debug::list<_Tp1, _Tp2> >
      : InsertRangeHelperAux<__gnu_debug::list<_Tp1, _Tp2> >
      { };
+ 
+ # ifdef __glibcxx_inplace_vector // C++ >= 26
+   template<typename _Tp, size_t _Nm>
+     struct InsertRangeHelper<__gnu_debug::inplace_vector<_Tp, _Nm> >
+     : InsertRangeHelperAux<__gnu_debug::inplace_vector<_Tp, _Nm> >
+     { };
+ # endif
  #endif
  
    template<typename _Tp>
      void
      check_insert1()
      {
+       using namespace std;
        typedef _Tp cont_type;
        typedef typename cont_type::value_type cont_val_type;
        typedef typename CopyableValueType<cont_val_type>::value_type val_type;
!       typedef _GLIBCXX_STD_C::vector<val_type> vector_type;
  
        generate_unique<val_type> gu;
  
*************** namespace __gnu_test
*** 315,324 ****
      void
      check_insert2()
      {
        typedef _Tp cont_type;
        typedef typename cont_type::value_type cont_val_type;
        typedef typename CopyableValueType<cont_val_type>::value_type val_type;
!       typedef std::vector<val_type> vector_type;
  
        generate_unique<val_type> gu;
  
--- 336,346 ----
      void
      check_insert2()
      {
+       using namespace std;
        typedef _Tp cont_type;
        typedef typename cont_type::value_type cont_val_type;
        typedef typename CopyableValueType<cont_val_type>::value_type val_type;
!       typedef _GLIBCXX_STD_C::vector<val_type> vector_type;
  
        generate_unique<val_type> gu;
  
*************** namespace __gnu_test
*** 369,378 ****
      void
      check_insert4()
      {
        typedef _Tp cont_type;
        typedef typename cont_type::value_type cont_val_type;
        typedef typename CopyableValueType<cont_val_type>::value_type val_type;
!       typedef std::list<val_type> list_type;
  
        generate_unique<val_type> gu;
  
--- 391,401 ----
      void
      check_insert4()
      {
+       using namespace std;
        typedef _Tp cont_type;
        typedef typename cont_type::value_type cont_val_type;
        typedef typename CopyableValueType<cont_val_type>::value_type val_type;
!       typedef _GLIBCXX_STD_C::list<val_type> list_type;
  
        generate_unique<val_type> gu;
  
