diff -Nrcpad gcc-16-20251109/LAST_UPDATED gcc-16-20251116/LAST_UPDATED
*** gcc-16-20251109/LAST_UPDATED	Sun Nov  9 22:35:25 2025
--- gcc-16-20251116/LAST_UPDATED	Sun Nov 16 22:36:02 2025
***************
*** 1 ****
! Obtained from git: master revision d4b95151e0f9ab63ba4a87cadc63e9cc4f335af1
--- 1 ----
! Obtained from git: master revision beba09b5c5a2f4ec4e75e5f6d3dd1e2494b04a2b
diff -Nrcpad gcc-16-20251109/MD5SUMS gcc-16-20251116/MD5SUMS
*** gcc-16-20251109/MD5SUMS	Sun Nov  9 22:35:30 2025
--- gcc-16-20251116/MD5SUMS	Sun Nov 16 22:36:23 2025
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-16-20251109.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-20251116.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
*************** e3b8f542752068f7deb76cb95b78478f  Change
*** 27,33 ****
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! b7cafbe0dafdbeb9337deabe7c426999  LAST_UPDATED
  c4d040796ef5e08dc8d7ea898235f87e  MAINTAINERS
  e4676e623f8df5efef68f36db1121a28  Makefile.def
  e602349d286d2792c339d5a6f514efde  Makefile.in
--- 27,33 ----
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 781ec57105d56ed9f0638d047afa4f0e  LAST_UPDATED
  c4d040796ef5e08dc8d7ea898235f87e  MAINTAINERS
  e4676e623f8df5efef68f36db1121a28  Makefile.def
  e602349d286d2792c339d5a6f514efde  Makefile.in
*************** e2dc6b4fd62b77bff96b7951ef74f78f  config
*** 155,163 ****
  7ef51b0adb98e5c5f7aba46d2c7293f1  config/weakref.m4
  0163b672c888aaf1c8ad3e867a0ec9f1  config/zlib.m4
  db74a73c3c9c3cc71edec37c2436e082  config/zstd.m4
! 994218de941aecdc9dba8ca8ea457a31  configure
! 3fd655ec08ac4a6ad2ab9bd795775aaf  configure.ac
! c79879703bbd60d9b966a7770cffe1a4  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
  13605e5ba7b533ecbe3a902b8ebe4079  contrib/analyze_brprob.py
--- 155,163 ----
  7ef51b0adb98e5c5f7aba46d2c7293f1  config/weakref.m4
  0163b672c888aaf1c8ad3e867a0ec9f1  config/zlib.m4
  db74a73c3c9c3cc71edec37c2436e082  config/zstd.m4
! b6028a7b1959751fb1fdfd1c10eae9f5  configure
! 5c5c418bb7c467a8774137ab47d4fcae  configure.ac
! fedd7a489e04e54b807fbec3a51647b1  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
  13605e5ba7b533ecbe3a902b8ebe4079  contrib/analyze_brprob.py
*************** c79879703bbd60d9b966a7770cffe1a4  contri
*** 165,171 ****
  747393d9a58bfa8ee0d2ff474964373b  contrib/bench-stringop
  da7a8c0d3b1e154584d5e062d9a3b558  contrib/check-MAINTAINERS.py
  14d637c1673ab29eb925fc542cf5955c  contrib/check-internal-format-escaping.py
! 2dcd6c7659cd1198ff7c8da4423dc0dd  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
--- 165,171 ----
  747393d9a58bfa8ee0d2ff474964373b  contrib/bench-stringop
  da7a8c0d3b1e154584d5e062d9a3b558  contrib/check-MAINTAINERS.py
  14d637c1673ab29eb925fc542cf5955c  contrib/check-internal-format-escaping.py
! 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
*************** c031cdd918e93a5780aab350a42591d8  contri
*** 195,201 ****
  db03e57377f9eb202b7b783eb81fe40d  contrib/filter_knr2ansi.pl
  d577ea19d05f19a8364f73c9901223b7  contrib/filter_params.py
  1f09615feb91c049cbf46b27ea159c58  contrib/gcc-changelog/git_check_commit.py
! f2b4239bdf920a0921b05e2cb7433fc1  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
--- 195,201 ----
  db03e57377f9eb202b7b783eb81fe40d  contrib/filter_knr2ansi.pl
  d577ea19d05f19a8364f73c9901223b7  contrib/filter_params.py
  1f09615feb91c049cbf46b27ea159c58  contrib/gcc-changelog/git_check_commit.py
! cfd2b24c705477cb0ef1813fe34726ba  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
*************** fa945bac89ee68b410027dcfe1312f4b  contri
*** 233,239 ****
  d000cfb483b76d32480107e17380a83a  contrib/legacy/mklog
  cc9b80999f11fa767bff49f1bfec96f8  contrib/legacy/mklog.pl
  43e3d77ae19b5c6304d6d6846792c173  contrib/make-obstacks-texi.pl
! 324958a5ef127a00285c222fa5a25dfe  contrib/make_sunver.pl
  c0cf9fff8c4992dc99634649538d7e14  contrib/mark_spam.py
  3750caf71c3971f691d15bd3976fc335  contrib/mdcompact/mdcompact-testsuite.el
  2f4682b551593328cd7f8431c1fe497f  contrib/mdcompact/mdcompact.el
--- 233,239 ----
  d000cfb483b76d32480107e17380a83a  contrib/legacy/mklog
  cc9b80999f11fa767bff49f1bfec96f8  contrib/legacy/mklog.pl
  43e3d77ae19b5c6304d6d6846792c173  contrib/make-obstacks-texi.pl
! f70a5a540f49df19724d827b2262b9fa  contrib/make_sunver.pl
  c0cf9fff8c4992dc99634649538d7e14  contrib/mark_spam.py
  3750caf71c3971f691d15bd3976fc335  contrib/mdcompact/mdcompact-testsuite.el
  2f4682b551593328cd7f8431c1fe497f  contrib/mdcompact/mdcompact.el
*************** b017a8530c74c1d79f3b4436169ae9b0  contri
*** 333,338 ****
--- 333,339 ----
  dc562ddb86567c65e82953825713dc4b  contrib/regression/site.exp
  0ef1f0f3b8112a12de68f806daf96994  contrib/relpath.sh
  5e4ee087708d8039fdd3e37392496a3f  contrib/repro_fail
+ 7a4452f82f140141ca92ef50ae08afe8  contrib/sarif-listener.py
  5510b9bfcbc746c19c3b2216673da4be  contrib/test_installed
  b60f03a88bd6e5db8ea8361daec256ea  contrib/test_mklog.py
  2c2a06a23394c548bb4afba3c25aacce  contrib/test_recheck
*************** a22e70b3f29292d0e628450f4bb11e62  fixinc
*** 520,526 ****
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 79fb5bfdb7ab218342367d44c3b2981f  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
! 0868579af2e53bec1b73615b1e6b6306  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 557,575 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 5a7a76866212269a133a73c244a2aef1  gcc/DATESTAMP
  deb513e591f23901188e22323bd3b1d4  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
  36698274bb69e2ada20f5cc434f3caa5  gcc/FSFChangeLog.11
  4dc2573d948287a3722ce977490b026c  gcc/LANGUAGES
! 708dfd962480727525a54a6c6f996a97  gcc/Makefile.in
  ec6799501b2eb2923d5de6a66169dbd2  gcc/ONEWS
  15d6908b4409b0925d9f1c72b56b5cb7  gcc/README.Portability
! 23d99b5becf269aa690a91a6f95228b9  gcc/acinclude.m4
  e74733ebf762151e601c9e0aa1461a20  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! 97eb4a4cbea50e309beca8b2c7d45384  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
--- 558,576 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 66d7a436a6d97eb776ef21e8b92600ca  gcc/DATESTAMP
  deb513e591f23901188e22323bd3b1d4  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
  36698274bb69e2ada20f5cc434f3caa5  gcc/FSFChangeLog.11
  4dc2573d948287a3722ce977490b026c  gcc/LANGUAGES
! 43e0e9be83efad93efb8371dd6d11721  gcc/Makefile.in
  ec6799501b2eb2923d5de6a66169dbd2  gcc/ONEWS
  15d6908b4409b0925d9f1c72b56b5cb7  gcc/README.Portability
! ee95df275c932cada412ed8168975af9  gcc/acinclude.m4
  e74733ebf762151e601c9e0aa1461a20  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! b57c071cd408654eaad1ae6ebe196ffc  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
*************** e534e3e90407ece58cb74fbdc390f33d  gcc/ad
*** 658,664 ****
  ae344bff4834b9e2ef3c07f6dd01b59b  gcc/ada/butil.ads
  2acfb74c50c4563afcbe6a1bca3912a3  gcc/ada/casing.adb
  c576df64e1d6a2ac70b389cc10a835e6  gcc/ada/casing.ads
! 4bb3efdd2706978675dd27f8ae5aa64d  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
! c000fc1f1f59ba4c17663ed6299481a5  gcc/ada/checks.adb
  f963647952269416533799c6a5117ea3  gcc/ada/checks.ads
  4c0942bba88f786dffff9a3575759026  gcc/ada/cio.c
  10b93c3ec680bbe04e70ea0e2fb09ac7  gcc/ada/clean.adb
*************** a012e0cb5df366014b5a4988036a509a  gcc/ad
*** 686,700 ****
  f98161d39601f7d9f08cbfa898effb63  gcc/ada/doc/gnat_rm/gnat_language_extensions.rst
  d18255d01b647c97e7cf2cbd3225f90d  gcc/ada/doc/gnat_rm/implementation_advice.rst
  4f7bb8fec58a615cfdd25754812dbe70  gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst
! 687e948eae92592a9bb4b738fd473d80  gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst
  841d2d7d08c02898708fc688f180e10f  gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst
! 22c6066fe853b7f56145079dc29bd8ce  gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst
  cd313e8a12cdfb20b99eede7c5252f16  gcc/ada/doc/gnat_rm/implementation_of_ada_2022_features.rst
  1ce2dc848df98bcbbb9d443501c48132  gcc/ada/doc/gnat_rm/implementation_of_specific_ada_features.rst
  454fb365cfb751d8e03b8e972d3abef1  gcc/ada/doc/gnat_rm/interfacing_to_other_languages.rst
  d3ffb5a905c9520d87b68e10029eb023  gcc/ada/doc/gnat_rm/intrinsic_subprograms.rst
  3b3b1a4a300ed753e0096fbbf83db984  gcc/ada/doc/gnat_rm/obsolescent_features.rst
! 4b681eebfd365c3633b63689afa61a5f  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
--- 687,701 ----
  f98161d39601f7d9f08cbfa898effb63  gcc/ada/doc/gnat_rm/gnat_language_extensions.rst
  d18255d01b647c97e7cf2cbd3225f90d  gcc/ada/doc/gnat_rm/implementation_advice.rst
  4f7bb8fec58a615cfdd25754812dbe70  gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst
! c7b78ec61cde77ca1a717e4727b55f86  gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst
  841d2d7d08c02898708fc688f180e10f  gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst
! 7521a9c7898f9cdc3b74c7df8d21d2c2  gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst
  cd313e8a12cdfb20b99eede7c5252f16  gcc/ada/doc/gnat_rm/implementation_of_ada_2022_features.rst
  1ce2dc848df98bcbbb9d443501c48132  gcc/ada/doc/gnat_rm/implementation_of_specific_ada_features.rst
  454fb365cfb751d8e03b8e972d3abef1  gcc/ada/doc/gnat_rm/interfacing_to_other_languages.rst
  d3ffb5a905c9520d87b68e10029eb023  gcc/ada/doc/gnat_rm/intrinsic_subprograms.rst
  3b3b1a4a300ed753e0096fbbf83db984  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
*************** de678cadfde8bce5aa2e2f73f408ad76  gcc/ad
*** 703,709 ****
  391d17bf855af400348685ff678c6a6a  gcc/ada/doc/gnat_rm/the_implementation_of_standard_i_o.rst
  ad0b18bc67f8911f5f0d9d2762f19f82  gcc/ada/doc/gnat_ugn.rst
  97271c06a675f62b05d2a744164c36e1  gcc/ada/doc/gnat_ugn/about_this_guide.rst
! 9ca2d0283f2d487e691b64e68faaf8b9  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
  97271c06a675f62b05d2a744164c36e1  gcc/ada/doc/gnat_ugn/about_this_guide.rst
! 4da594bcd17cbe688b45e73ce9794b38  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
*************** f1c71b64e1c84e240c7b5aea7331a32a  gcc/ad
*** 723,729 ****
  1624ebd692cbdf84a719739c08b2e6ac  gcc/ada/einfo-utils.adb
  76b28b93a0162cb31366aec9f77d5717  gcc/ada/einfo-utils.ads
  4f882a8b5e78253d5838b1a83e4af5bb  gcc/ada/einfo.adb
! 2934582fa1e45b8f274276b8be2cd98a  gcc/ada/einfo.ads
  9fb4fb23a55081d07dc554eeb3253f91  gcc/ada/elists.adb
  1d7f8772477453dee268f8697433a589  gcc/ada/elists.ads
  2d6cb36d45dda0bf32d01725709f0007  gcc/ada/elists.h
--- 724,730 ----
  1624ebd692cbdf84a719739c08b2e6ac  gcc/ada/einfo-utils.adb
  76b28b93a0162cb31366aec9f77d5717  gcc/ada/einfo-utils.ads
  4f882a8b5e78253d5838b1a83e4af5bb  gcc/ada/einfo.adb
! e1b8a859266e3f7c63d9f521b703c835  gcc/ada/einfo.ads
  9fb4fb23a55081d07dc554eeb3253f91  gcc/ada/elists.adb
  1d7f8772477453dee268f8697433a589  gcc/ada/elists.ads
  2d6cb36d45dda0bf32d01725709f0007  gcc/ada/elists.h
*************** d2a40233452ab7a167be3fb4ec97c4f1  gcc/ad
*** 752,758 ****
  738bfb6669a1b696ef62dbecd858300a  gcc/ada/exp_aggr.ads
  f5cfbe3c80cc2c7ded2440a52b2b9cf0  gcc/ada/exp_atag.adb
  17872534d797a09463e33092ff3c4b9c  gcc/ada/exp_atag.ads
! bca7d093c0b8d273eeada79fa4f01490  gcc/ada/exp_attr.adb
  16622dd90fd58bfbfa68224d0bfaf8b2  gcc/ada/exp_attr.ads
  4cb08de59df5f8d0a124038dcbb392f0  gcc/ada/exp_cg.adb
  b18d9873e8e43583acd0e69ba6635023  gcc/ada/exp_cg.ads
--- 753,759 ----
  738bfb6669a1b696ef62dbecd858300a  gcc/ada/exp_aggr.ads
  f5cfbe3c80cc2c7ded2440a52b2b9cf0  gcc/ada/exp_atag.adb
  17872534d797a09463e33092ff3c4b9c  gcc/ada/exp_atag.ads
! 2c8336eaf1112c57f5514dbf092163c7  gcc/ada/exp_attr.adb
  16622dd90fd58bfbfa68224d0bfaf8b2  gcc/ada/exp_attr.ads
  4cb08de59df5f8d0a124038dcbb392f0  gcc/ada/exp_cg.adb
  b18d9873e8e43583acd0e69ba6635023  gcc/ada/exp_cg.ads
*************** e689c007fdbafa4cd1e55834518a9ad0  gcc/ad
*** 777,783 ****
  31ee5e50c565d4788d9b794acb5bfebb  gcc/ada/exp_ch7.ads
  273b4eb2c6bce53164ea7f4427c65eb7  gcc/ada/exp_ch8.adb
  c1f464d28d24669bfe156f13cabe5fca  gcc/ada/exp_ch8.ads
! 768f9b1c43ef40d2645d3c44c892d48a  gcc/ada/exp_ch9.adb
  e26475f86b42d59910afddd6b59f6f2f  gcc/ada/exp_ch9.ads
  f47ce79d25dbb4d2f5cc6c375ee8c103  gcc/ada/exp_code.adb
  983664237ff0b38442a164f60d531514  gcc/ada/exp_code.ads
--- 778,784 ----
  31ee5e50c565d4788d9b794acb5bfebb  gcc/ada/exp_ch7.ads
  273b4eb2c6bce53164ea7f4427c65eb7  gcc/ada/exp_ch8.adb
  c1f464d28d24669bfe156f13cabe5fca  gcc/ada/exp_ch8.ads
! c34a2d9931a552230e60ed4ab4e3d4b9  gcc/ada/exp_ch9.adb
  e26475f86b42d59910afddd6b59f6f2f  gcc/ada/exp_ch9.ads
  f47ce79d25dbb4d2f5cc6c375ee8c103  gcc/ada/exp_code.adb
  983664237ff0b38442a164f60d531514  gcc/ada/exp_code.ads
*************** ee769a63f7ef20a179accef0a80ef873  gcc/ad
*** 811,817 ****
  52a5741c37559d0398594d7baa1c99ac  gcc/ada/exp_tss.ads
  1958eceb4f7e06ddd110ee84a21012ef  gcc/ada/exp_unst.adb
  d2f34876e61000e49299ef9b2569cbbf  gcc/ada/exp_unst.ads
! 65b77f2794924ebc2a58a3e1914b7b4a  gcc/ada/exp_util.adb
  24baec8a8e8188bc72055a6a83ac20fb  gcc/ada/exp_util.ads
  46d0480b64db4c72cf1f08b18e3c33cf  gcc/ada/expander.adb
  53bb0eb5c4feebf8b5fbef639f5827bd  gcc/ada/expander.ads
--- 812,818 ----
  52a5741c37559d0398594d7baa1c99ac  gcc/ada/exp_tss.ads
  1958eceb4f7e06ddd110ee84a21012ef  gcc/ada/exp_unst.adb
  d2f34876e61000e49299ef9b2569cbbf  gcc/ada/exp_unst.ads
! 8ee7eae69576101193cb569cc9705085  gcc/ada/exp_util.adb
  24baec8a8e8188bc72055a6a83ac20fb  gcc/ada/exp_util.ads
  46d0480b64db4c72cf1f08b18e3c33cf  gcc/ada/expander.adb
  53bb0eb5c4feebf8b5fbef639f5827bd  gcc/ada/expander.ads
*************** be98a1e6f04922fb22c79c4540070fe5  gcc/ad
*** 875,882 ****
  917ea7311a30ec4c5cec3e610ca640c2  gcc/ada/gnat2.gpr
  49c5329fd360e2bf4e549bc7de93aab7  gcc/ada/gnat_cuda.adb
  de69fc271ce889490809004600fcac0f  gcc/ada/gnat_cuda.ads
! b917690c0fd159638595ba89dc6c12a2  gcc/ada/gnat_rm.texi
! a88da1cfc2d016043c397e15da52bef0  gcc/ada/gnat_ugn.texi
  957e02fdb4684d592d9172cea8dfb4cb  gcc/ada/gnatbind.adb
  fff8dfca966e9d6f779ce90e57344a0f  gcc/ada/gnatbind.ads
  4fea416b1232ad73eeb5e21f09d13496  gcc/ada/gnatchop.adb
--- 876,883 ----
  917ea7311a30ec4c5cec3e610ca640c2  gcc/ada/gnat2.gpr
  49c5329fd360e2bf4e549bc7de93aab7  gcc/ada/gnat_cuda.adb
  de69fc271ce889490809004600fcac0f  gcc/ada/gnat_cuda.ads
! f7aae00b12b09b060b9972d138c24607  gcc/ada/gnat_rm.texi
! 6589658b2ef49f36160e596b9f4d3629  gcc/ada/gnat_ugn.texi
  957e02fdb4684d592d9172cea8dfb4cb  gcc/ada/gnatbind.adb
  fff8dfca966e9d6f779ce90e57344a0f  gcc/ada/gnatbind.ads
  4fea416b1232ad73eeb5e21f09d13496  gcc/ada/gnatchop.adb
*************** fae5c64806f921b2c67652d6b3a99421  gcc/ad
*** 920,926 ****
  93e400538975a4c66730d29f23e6e9a8  gcc/ada/json_utils.ads
  f06a26272057ce1be21c9d5c5b109939  gcc/ada/krunch.adb
  cb8b4ae7eda616665ff5623008560e83  gcc/ada/krunch.ads
! 96abd296aa3e38d599c6e3945dbfbd35  gcc/ada/layout.adb
  b4b99fcd90ad634233395f84a0a1a6eb  gcc/ada/layout.ads
  3f0bde567ad1e8961d92e121563b097d  gcc/ada/lib-list.adb
  17aaa002830c4185209c54931af90728  gcc/ada/lib-load.adb
--- 921,927 ----
  93e400538975a4c66730d29f23e6e9a8  gcc/ada/json_utils.ads
  f06a26272057ce1be21c9d5c5b109939  gcc/ada/krunch.adb
  cb8b4ae7eda616665ff5623008560e83  gcc/ada/krunch.ads
! 33dd4f8d4a9dbc5b35cfde4bab4f0ef6  gcc/ada/layout.adb
  b4b99fcd90ad634233395f84a0a1a6eb  gcc/ada/layout.ads
  3f0bde567ad1e8961d92e121563b097d  gcc/ada/lib-list.adb
  17aaa002830c4185209c54931af90728  gcc/ada/lib-load.adb
*************** a52055c2269c1f0aec1997726982cd79  gcc/ad
*** 1114,1120 ****
  4e55db4097d62b4fb7fb4ba8157941e9  gcc/ada/libgnarl/s-taspri__lynxos.ads
  906bfae84e8ffe3ff6c0a68b9e656a52  gcc/ada/libgnarl/s-taspri__mingw.ads
  de6024645e8981661fac17c30b9f9919  gcc/ada/libgnarl/s-taspri__posix-noaltstack.ads
! 54de81ebea56ac5e1b987c0400e7d0c8  gcc/ada/libgnarl/s-taspri__posix.ads
  031c5dca67d492296dad2a7d8e431cef  gcc/ada/libgnarl/s-taspri__solaris.ads
  f0b3eceb2b9265a6b8d06c18e1773ca0  gcc/ada/libgnarl/s-taspri__vxworks.ads
  ac23cdf83e13f4c3400030cce9d6201e  gcc/ada/libgnarl/s-tasque.adb
--- 1115,1121 ----
  4e55db4097d62b4fb7fb4ba8157941e9  gcc/ada/libgnarl/s-taspri__lynxos.ads
  906bfae84e8ffe3ff6c0a68b9e656a52  gcc/ada/libgnarl/s-taspri__mingw.ads
  de6024645e8981661fac17c30b9f9919  gcc/ada/libgnarl/s-taspri__posix-noaltstack.ads
! 9f45c9cffd82075ba1427c0cece909df  gcc/ada/libgnarl/s-taspri__posix.ads
  031c5dca67d492296dad2a7d8e431cef  gcc/ada/libgnarl/s-taspri__solaris.ads
  f0b3eceb2b9265a6b8d06c18e1773ca0  gcc/ada/libgnarl/s-taspri__vxworks.ads
  ac23cdf83e13f4c3400030cce9d6201e  gcc/ada/libgnarl/s-tasque.adb
*************** f231833a1ff7a48232b1159c51481f11  gcc/ad
*** 1180,1202 ****
  6f6c9c798d73e0ea29f72d3fa05a0ed3  gcc/ada/libgnat/a-catizo.adb
  d731f2a00c2328507e1708628b8f8534  gcc/ada/libgnat/a-catizo.ads
  152d7a7e6487f59656c18275fb1019b7  gcc/ada/libgnat/a-cbdlli.adb
! 7e71a77b7ce68633d73f5e8553a7e95b  gcc/ada/libgnat/a-cbdlli.ads
  1cb9e0a1e9900c6d3d931b524cd6091a  gcc/ada/libgnat/a-cbhama.adb
! ae4142c1ed4537f1eb124c9eac394129  gcc/ada/libgnat/a-cbhama.ads
  9223e8d2808faab558fea487a6f7533a  gcc/ada/libgnat/a-cbhase.adb
! 2618731613309e98934dd5386b4dc20c  gcc/ada/libgnat/a-cbhase.ads
  db36da5e4b7c3b0bc50541723defa003  gcc/ada/libgnat/a-cbmutr.adb
! dde74adfde60cdcf3f792ddea6aad929  gcc/ada/libgnat/a-cbmutr.ads
  f4075ce629781e290f28b39f1b2a6aa9  gcc/ada/libgnat/a-cborma.adb
! 2df8a2fc821610d9db32e1a1852338f7  gcc/ada/libgnat/a-cborma.ads
  ce39f9033205b08c92e449751517c387  gcc/ada/libgnat/a-cborse.adb
! 04148aac156b6b08abc90646342694d7  gcc/ada/libgnat/a-cborse.ads
  c144ddc5a265902a3bde5b45c59f5673  gcc/ada/libgnat/a-cbprqu.adb
  289739386f4e762d1761b81902c415f4  gcc/ada/libgnat/a-cbprqu.ads
  77ae402d871ed473b27ebd363a5f9752  gcc/ada/libgnat/a-cbsyqu.adb
  93c3a22500d5f5f8e7dbc2cbe5f106ed  gcc/ada/libgnat/a-cbsyqu.ads
  aec41d0dc8752a7e61ffd8dbf240eecc  gcc/ada/libgnat/a-cdlili.adb
! 32e3a0a646baf5e9657410d0ec82a9ac  gcc/ada/libgnat/a-cdlili.ads
  d6afdab007e928c0b08ae1b1a6c5f539  gcc/ada/libgnat/a-cfdlli.ads
  445e0235bde25da54d7d302057d5c9e0  gcc/ada/libgnat/a-cfhama.ads
  6762ef57046ecf66345ccba7a3361fdd  gcc/ada/libgnat/a-cfhase.ads
--- 1181,1203 ----
  6f6c9c798d73e0ea29f72d3fa05a0ed3  gcc/ada/libgnat/a-catizo.adb
  d731f2a00c2328507e1708628b8f8534  gcc/ada/libgnat/a-catizo.ads
  152d7a7e6487f59656c18275fb1019b7  gcc/ada/libgnat/a-cbdlli.adb
! 31804891dec3d2c72341a87199b5680c  gcc/ada/libgnat/a-cbdlli.ads
  1cb9e0a1e9900c6d3d931b524cd6091a  gcc/ada/libgnat/a-cbhama.adb
! f4111c6bbafc96c9bbf94ebd13cf490a  gcc/ada/libgnat/a-cbhama.ads
  9223e8d2808faab558fea487a6f7533a  gcc/ada/libgnat/a-cbhase.adb
! fcdc15a1dc5208269fe8973d7b130fc3  gcc/ada/libgnat/a-cbhase.ads
  db36da5e4b7c3b0bc50541723defa003  gcc/ada/libgnat/a-cbmutr.adb
! 416ba80e974608363326b8aefcea9d8a  gcc/ada/libgnat/a-cbmutr.ads
  f4075ce629781e290f28b39f1b2a6aa9  gcc/ada/libgnat/a-cborma.adb
! d4b6f9facc436c50b4862a0521ddfdb3  gcc/ada/libgnat/a-cborma.ads
  ce39f9033205b08c92e449751517c387  gcc/ada/libgnat/a-cborse.adb
! ed9ae6c7b9b12a8af7c69844e1329b3c  gcc/ada/libgnat/a-cborse.ads
  c144ddc5a265902a3bde5b45c59f5673  gcc/ada/libgnat/a-cbprqu.adb
  289739386f4e762d1761b81902c415f4  gcc/ada/libgnat/a-cbprqu.ads
  77ae402d871ed473b27ebd363a5f9752  gcc/ada/libgnat/a-cbsyqu.adb
  93c3a22500d5f5f8e7dbc2cbe5f106ed  gcc/ada/libgnat/a-cbsyqu.ads
  aec41d0dc8752a7e61ffd8dbf240eecc  gcc/ada/libgnat/a-cdlili.adb
! 25ca5e2bd9d717ea57d3799eba0747dc  gcc/ada/libgnat/a-cdlili.ads
  d6afdab007e928c0b08ae1b1a6c5f539  gcc/ada/libgnat/a-cfdlli.ads
  445e0235bde25da54d7d302057d5c9e0  gcc/ada/libgnat/a-cfhama.ads
  6762ef57046ecf66345ccba7a3361fdd  gcc/ada/libgnat/a-cfhase.ads
*************** d1ae04dc56ccbba0038600f2e2bc41fe  gcc/ad
*** 1229,1253 ****
  5abcb34a79a11c10a83a03e029fff24d  gcc/ada/libgnat/a-chzla1.ads
  8ec7266ebf791f97610d4686129af100  gcc/ada/libgnat/a-chzla9.ads
  9698171820e08c7ac92aac12d641f438  gcc/ada/libgnat/a-cidlli.adb
! 2bd6522ed7f80e0e43d8c9f021bde0de  gcc/ada/libgnat/a-cidlli.ads
  8798d5e055eea93eb70b98c62c3fe5c3  gcc/ada/libgnat/a-cihama.adb
! b18e96e35fcb925ca150d3a1b32e279c  gcc/ada/libgnat/a-cihama.ads
  b0299538595207b1e6ba4305c043e666  gcc/ada/libgnat/a-cihase.adb
! ca8a149112ba305fa8ee892f586746a6  gcc/ada/libgnat/a-cihase.ads
  f5acfe5d74644aabbd33334318066c82  gcc/ada/libgnat/a-cimutr.adb
! 8b1c496d15fa7c31acedf4db9c1df927  gcc/ada/libgnat/a-cimutr.ads
  662527cf8705f553c701a91ececa7159  gcc/ada/libgnat/a-ciorma.adb
! 26c4bbb8e43ebe9f47924cff66ecb85a  gcc/ada/libgnat/a-ciorma.ads
  798b14d8f6a90bf1279ca929ae95ea7f  gcc/ada/libgnat/a-ciormu.adb
! bca00649ca5725e1a13e42a00df06907  gcc/ada/libgnat/a-ciormu.ads
  9385d5efb9d022151edf1aa7de2e8cc2  gcc/ada/libgnat/a-ciorse.adb
! 1e80052a124aa9c8b027d726862f2765  gcc/ada/libgnat/a-ciorse.ads
  d10cc7fa24959985d0423591d14ade72  gcc/ada/libgnat/a-clrefi.adb
  bb9ecae44d7df045ef196aea619eb80d  gcc/ada/libgnat/a-clrefi.ads
  bb7aa2b8f3fb3f971a1cb27147b3b0a6  gcc/ada/libgnat/a-coboho.adb
  9d1b1bd680bbc15192e80bcbfdcf1cad  gcc/ada/libgnat/a-coboho.ads
  56ab40bb18fefd09ea4804521f9fe3fa  gcc/ada/libgnat/a-cobove.adb
! 1472e0702841cb970459016b6f535be4  gcc/ada/libgnat/a-cobove.ads
  7f386d5d78c80b801499b725681bae4f  gcc/ada/libgnat/a-cofove.ads
  14e89eeb20a55f732b055a59e4b9a22a  gcc/ada/libgnat/a-cofuma.ads
  0ed25ff78e09575888ca3ec4ee5846c8  gcc/ada/libgnat/a-cofuse.ads
--- 1230,1254 ----
  5abcb34a79a11c10a83a03e029fff24d  gcc/ada/libgnat/a-chzla1.ads
  8ec7266ebf791f97610d4686129af100  gcc/ada/libgnat/a-chzla9.ads
  9698171820e08c7ac92aac12d641f438  gcc/ada/libgnat/a-cidlli.adb
! c6a009af6636719dd444a02b2ef50b88  gcc/ada/libgnat/a-cidlli.ads
  8798d5e055eea93eb70b98c62c3fe5c3  gcc/ada/libgnat/a-cihama.adb
! 1a0e63e163a26115296f417f28fea430  gcc/ada/libgnat/a-cihama.ads
  b0299538595207b1e6ba4305c043e666  gcc/ada/libgnat/a-cihase.adb
! 40b7d9b97bb82f074c3d2049eb9153c1  gcc/ada/libgnat/a-cihase.ads
  f5acfe5d74644aabbd33334318066c82  gcc/ada/libgnat/a-cimutr.adb
! 1149f13c887753399493385b43e3c374  gcc/ada/libgnat/a-cimutr.ads
  662527cf8705f553c701a91ececa7159  gcc/ada/libgnat/a-ciorma.adb
! 7742f859cb957570748730d24a65a089  gcc/ada/libgnat/a-ciorma.ads
  798b14d8f6a90bf1279ca929ae95ea7f  gcc/ada/libgnat/a-ciormu.adb
! 86657fbe14549ac4a15a25876e908153  gcc/ada/libgnat/a-ciormu.ads
  9385d5efb9d022151edf1aa7de2e8cc2  gcc/ada/libgnat/a-ciorse.adb
! 3bd3c5889b4728e72815397bfa945f35  gcc/ada/libgnat/a-ciorse.ads
  d10cc7fa24959985d0423591d14ade72  gcc/ada/libgnat/a-clrefi.adb
  bb9ecae44d7df045ef196aea619eb80d  gcc/ada/libgnat/a-clrefi.ads
  bb7aa2b8f3fb3f971a1cb27147b3b0a6  gcc/ada/libgnat/a-coboho.adb
  9d1b1bd680bbc15192e80bcbfdcf1cad  gcc/ada/libgnat/a-coboho.ads
  56ab40bb18fefd09ea4804521f9fe3fa  gcc/ada/libgnat/a-cobove.adb
! f68c3674aea442040935f9c8a116649c  gcc/ada/libgnat/a-cobove.ads
  7f386d5d78c80b801499b725681bae4f  gcc/ada/libgnat/a-cofove.ads
  14e89eeb20a55f732b055a59e4b9a22a  gcc/ada/libgnat/a-cofuma.ads
  0ed25ff78e09575888ca3ec4ee5846c8  gcc/ada/libgnat/a-cofuse.ads
*************** f9f0e3e0da83a4ca464cd5f614fc5a5f  gcc/ad
*** 1255,1270 ****
  7da09f2b2fa733ca057555298977a2e2  gcc/ada/libgnat/a-cogeso.adb
  e5cf8961ebded6ad1a98120dfed5e5aa  gcc/ada/libgnat/a-cogeso.ads
  cccaaa3bdf69bd2091446eba51233ef3  gcc/ada/libgnat/a-cohama.adb
! 6a223dbad689bc5dc9e18dcb06fb7041  gcc/ada/libgnat/a-cohama.ads
  a665e69f5655bef17619a72bf297bfff  gcc/ada/libgnat/a-cohase.adb
! 628d9091add86743759a31f785331850  gcc/ada/libgnat/a-cohase.ads
  8e2fa86f7c968581fd7eeb6a6d275ede  gcc/ada/libgnat/a-cohata.ads
  2a0cc1e29cefb760cf1677525a312641  gcc/ada/libgnat/a-coinho.adb
! 64791368ded3b5f9c81e99ac5c26585f  gcc/ada/libgnat/a-coinho.ads
  b86e1d0840c66fa3fa373d678cb65a23  gcc/ada/libgnat/a-coinho__shared.adb
! 05281efc68e32a4d0d2fceedb1206de9  gcc/ada/libgnat/a-coinho__shared.ads
  2e4fca0cbe872ef19db3ed05e4877243  gcc/ada/libgnat/a-coinve.adb
! b0391354444679bfac18cce7aea1e885  gcc/ada/libgnat/a-coinve.ads
  6dbaac9b33ce68ee1f07cfd6294d1421  gcc/ada/libgnat/a-colien.adb
  7faea62ecdcda01e375bf62178021992  gcc/ada/libgnat/a-colien.ads
  63923dda082059b61686fe49267af1fa  gcc/ada/libgnat/a-colire.adb
--- 1256,1271 ----
  7da09f2b2fa733ca057555298977a2e2  gcc/ada/libgnat/a-cogeso.adb
  e5cf8961ebded6ad1a98120dfed5e5aa  gcc/ada/libgnat/a-cogeso.ads
  cccaaa3bdf69bd2091446eba51233ef3  gcc/ada/libgnat/a-cohama.adb
! eb8dff07dc0289930aa71f2f482e7811  gcc/ada/libgnat/a-cohama.ads
  a665e69f5655bef17619a72bf297bfff  gcc/ada/libgnat/a-cohase.adb
! 56719a751f260eb8adc926f97d2b2cc7  gcc/ada/libgnat/a-cohase.ads
  8e2fa86f7c968581fd7eeb6a6d275ede  gcc/ada/libgnat/a-cohata.ads
  2a0cc1e29cefb760cf1677525a312641  gcc/ada/libgnat/a-coinho.adb
! 97c1f3d31fc7c87cdf30a0a6bd341ff2  gcc/ada/libgnat/a-coinho.ads
  b86e1d0840c66fa3fa373d678cb65a23  gcc/ada/libgnat/a-coinho__shared.adb
! e0a5ff5c11d72b67037780de98ab6af5  gcc/ada/libgnat/a-coinho__shared.ads
  2e4fca0cbe872ef19db3ed05e4877243  gcc/ada/libgnat/a-coinve.adb
! 2515ed42fc3568b77fd4427ae8078d1f  gcc/ada/libgnat/a-coinve.ads
  6dbaac9b33ce68ee1f07cfd6294d1421  gcc/ada/libgnat/a-colien.adb
  7faea62ecdcda01e375bf62178021992  gcc/ada/libgnat/a-colien.ads
  63923dda082059b61686fe49267af1fa  gcc/ada/libgnat/a-colire.adb
*************** b0391354444679bfac18cce7aea1e885  gcc/ad
*** 1272,1289 ****
  a85935467cf30ff32bc26677c0bb63e2  gcc/ada/libgnat/a-comlin.adb
  16175445e74d542a497bea1c8d6a9ad4  gcc/ada/libgnat/a-comlin.ads
  66edb08a9c39ba38949d150dd1074a4c  gcc/ada/libgnat/a-comutr.adb
! 0d7d222a6957753146cc9a2f38dab198  gcc/ada/libgnat/a-comutr.ads
  39bdaf4aeeed37537b6c19275a89edf7  gcc/ada/libgnat/a-conhel.adb
  c1664afdaf6327fe46438712972cbd75  gcc/ada/libgnat/a-conhel.ads
  38baf99435420fa514890cac49ee9242  gcc/ada/libgnat/a-contai.ads
  1f06209e0798f824ef446a7ef8ff768f  gcc/ada/libgnat/a-convec.adb
! 229625dc7d6921347149f85f031f5731  gcc/ada/libgnat/a-convec.ads
  11d4052564ef60377710b3e7dd2112fc  gcc/ada/libgnat/a-coorma.adb
! 9d24f79ea4fc98e1ebc82efb897cb125  gcc/ada/libgnat/a-coorma.ads
  3d29cf2814c39758dd2eb4021a292a8c  gcc/ada/libgnat/a-coormu.adb
! 311da6abf3b82c60281998e587790642  gcc/ada/libgnat/a-coormu.ads
  30e205887637465ebffd6709fc8c1292  gcc/ada/libgnat/a-coorse.adb
! d419576b8c43d2cd628005b563ff51ba  gcc/ada/libgnat/a-coorse.ads
  3e21304d42a27e0a9435f0028ce57520  gcc/ada/libgnat/a-coprnu.adb
  8d84ab325b993703126bdfcdcc246f24  gcc/ada/libgnat/a-coprnu.ads
  10c28e7b50958e4a543701ca34df692d  gcc/ada/libgnat/a-costso.adb
--- 1273,1290 ----
  a85935467cf30ff32bc26677c0bb63e2  gcc/ada/libgnat/a-comlin.adb
  16175445e74d542a497bea1c8d6a9ad4  gcc/ada/libgnat/a-comlin.ads
  66edb08a9c39ba38949d150dd1074a4c  gcc/ada/libgnat/a-comutr.adb
! 1167c9183f93c9abc6e9fd53a67f8c3b  gcc/ada/libgnat/a-comutr.ads
  39bdaf4aeeed37537b6c19275a89edf7  gcc/ada/libgnat/a-conhel.adb
  c1664afdaf6327fe46438712972cbd75  gcc/ada/libgnat/a-conhel.ads
  38baf99435420fa514890cac49ee9242  gcc/ada/libgnat/a-contai.ads
  1f06209e0798f824ef446a7ef8ff768f  gcc/ada/libgnat/a-convec.adb
! 70abaf36df7a87c332328dd45f9703c1  gcc/ada/libgnat/a-convec.ads
  11d4052564ef60377710b3e7dd2112fc  gcc/ada/libgnat/a-coorma.adb
! d0dd6f94c22e931f3004a4c859b90bbe  gcc/ada/libgnat/a-coorma.ads
  3d29cf2814c39758dd2eb4021a292a8c  gcc/ada/libgnat/a-coormu.adb
! 9498ee9c0127614dd62f472124a3c876  gcc/ada/libgnat/a-coormu.ads
  30e205887637465ebffd6709fc8c1292  gcc/ada/libgnat/a-coorse.adb
! 784ccb24a80dba1f05323a57837ad56d  gcc/ada/libgnat/a-coorse.ads
  3e21304d42a27e0a9435f0028ce57520  gcc/ada/libgnat/a-coprnu.adb
  8d84ab325b993703126bdfcdcc246f24  gcc/ada/libgnat/a-coprnu.ads
  10c28e7b50958e4a543701ca34df692d  gcc/ada/libgnat/a-costso.adb
*************** b458716ed3a2ca6128d9f4df25135c88  gcc/ad
*** 1786,1792 ****
  e8aea660b8e7e260da34ddc3b61dbd84  gcc/ada/libgnat/g-cppstd.adb
  8bebfb7712db94ac89caccc10594170b  gcc/ada/libgnat/g-cppstd.ads
  87484df6783835380c75169ece0e16d2  gcc/ada/libgnat/g-crc32.adb
! ac4950d17914825d8c273a996cbeb2f6  gcc/ada/libgnat/g-crc32.ads
  fe7ff5d5bcae48f78fc4e1ecb93bbde5  gcc/ada/libgnat/g-csclex.ads
  cd8c3cd7d59572de2650a3b26c46fd7a  gcc/ada/libgnat/g-cstyin.adb
  4f41dfe401dd38a15d9156bd507f5a6a  gcc/ada/libgnat/g-cstyin.ads
--- 1787,1793 ----
  e8aea660b8e7e260da34ddc3b61dbd84  gcc/ada/libgnat/g-cppstd.adb
  8bebfb7712db94ac89caccc10594170b  gcc/ada/libgnat/g-cppstd.ads
  87484df6783835380c75169ece0e16d2  gcc/ada/libgnat/g-crc32.adb
! b16db439c85e32d1a4b4d5f882d09464  gcc/ada/libgnat/g-crc32.ads
  fe7ff5d5bcae48f78fc4e1ecb93bbde5  gcc/ada/libgnat/g-csclex.ads
  cd8c3cd7d59572de2650a3b26c46fd7a  gcc/ada/libgnat/g-cstyin.adb
  4f41dfe401dd38a15d9156bd507f5a6a  gcc/ada/libgnat/g-cstyin.ads
*************** a012b416e822e23d09dbf371e0f9287f  gcc/ad
*** 2089,2095 ****
  a0d778826462dc19672954a7788b4816  gcc/ada/libgnat/s-conca9.adb
  886fc855a472f3872522fe088287e2a3  gcc/ada/libgnat/s-conca9.ads
  b2700bc18d559f98a09523df589e2e35  gcc/ada/libgnat/s-crc32.adb
! 448e6f6c90cd6ac5a2f0d9d75c683445  gcc/ada/libgnat/s-crc32.ads
  d4d9bdfafd95e2d4033c6aaf96ac42c3  gcc/ada/libgnat/s-crtl.adb
  7bee2c1b2602bc9a7fe55104d90b292e  gcc/ada/libgnat/s-crtl.ads
  dcf38f636091a25db962082864ff90f1  gcc/ada/libgnat/s-crtl__mingw.adb
--- 2090,2096 ----
  a0d778826462dc19672954a7788b4816  gcc/ada/libgnat/s-conca9.adb
  886fc855a472f3872522fe088287e2a3  gcc/ada/libgnat/s-conca9.ads
  b2700bc18d559f98a09523df589e2e35  gcc/ada/libgnat/s-crc32.adb
! ac2e9a5c09fea2f066eaed82368a76a3  gcc/ada/libgnat/s-crc32.ads
  d4d9bdfafd95e2d4033c6aaf96ac42c3  gcc/ada/libgnat/s-crtl.adb
  7bee2c1b2602bc9a7fe55104d90b292e  gcc/ada/libgnat/s-crtl.ads
  dcf38f636091a25db962082864ff90f1  gcc/ada/libgnat/s-crtl__mingw.adb
*************** fbe313370e3346c60d157f273c9e49bd  gcc/ad
*** 2856,2862 ****
  d28fe9bf503081b92048e26c8842b408  gcc/ada/prepcomp.ads
  fcfa33c29572e4f892bd68b226e0184d  gcc/ada/put_scos.adb
  3b031a53f556fd6a205a13665cd77c74  gcc/ada/put_scos.ads
! 1c959c1df123e69974334a1a27213006  gcc/ada/raise-gcc.c
  9cefaa2cb724199d75c01c1b71fd92ec  gcc/ada/raise.c
  bb35d323ecf448aa8fb7025a4bc206ac  gcc/ada/raise.h
  60f15e9242cc708164c2465f35b7bcee  gcc/ada/repinfo-input.adb
--- 2857,2863 ----
  d28fe9bf503081b92048e26c8842b408  gcc/ada/prepcomp.ads
  fcfa33c29572e4f892bd68b226e0184d  gcc/ada/put_scos.adb
  3b031a53f556fd6a205a13665cd77c74  gcc/ada/put_scos.ads
! 61bddcf659e2e74af89541f844dfca63  gcc/ada/raise-gcc.c
  9cefaa2cb724199d75c01c1b71fd92ec  gcc/ada/raise.c
  bb35d323ecf448aa8fb7025a4bc206ac  gcc/ada/raise.h
  60f15e9242cc708164c2465f35b7bcee  gcc/ada/repinfo-input.adb
*************** e364f4e3ae92066699cc93a8f7b828c1  gcc/ad
*** 2905,2919 ****
  1b6f89866a5d427002df059be3847d62  gcc/ada/sem_ch11.ads
  2272b7c3128993772b1404bd7b0051a4  gcc/ada/sem_ch12.adb
  f981520c42b732545be8bb5c8813ccfd  gcc/ada/sem_ch12.ads
! 0e65da33ccc905007076453dfc7a4668  gcc/ada/sem_ch13.adb
  42a7b1073e168e8be85f2203fbddd148  gcc/ada/sem_ch13.ads
  14326c522718c8cb8415b13a79c07972  gcc/ada/sem_ch2.adb
  2471d629be4739ff5135aa87a2ec9166  gcc/ada/sem_ch2.ads
! a737376791b02b0cea08e0982541cef2  gcc/ada/sem_ch3.adb
  76abe89b089728c6eaca6f7593348732  gcc/ada/sem_ch3.ads
  92ce1e2ad8d12526945acea155e28ae8  gcc/ada/sem_ch4.adb
  adba03aae1f439b9e9db8cea05d8e03f  gcc/ada/sem_ch4.ads
! e8573b06cd7059d6bbde030175ab1a71  gcc/ada/sem_ch5.adb
  ec8d5a42c27c46e4969c16d6e18ed276  gcc/ada/sem_ch5.ads
  c562011f69d365bea521812b7109c09e  gcc/ada/sem_ch6.adb
  165c2ff9990d74ba204881b7983566c7  gcc/ada/sem_ch6.ads
--- 2906,2920 ----
  1b6f89866a5d427002df059be3847d62  gcc/ada/sem_ch11.ads
  2272b7c3128993772b1404bd7b0051a4  gcc/ada/sem_ch12.adb
  f981520c42b732545be8bb5c8813ccfd  gcc/ada/sem_ch12.ads
! a79af071f7a03cc94e9f8cfb69da09d4  gcc/ada/sem_ch13.adb
  42a7b1073e168e8be85f2203fbddd148  gcc/ada/sem_ch13.ads
  14326c522718c8cb8415b13a79c07972  gcc/ada/sem_ch2.adb
  2471d629be4739ff5135aa87a2ec9166  gcc/ada/sem_ch2.ads
! 2923d481f9927f42b43e131fac264680  gcc/ada/sem_ch3.adb
  76abe89b089728c6eaca6f7593348732  gcc/ada/sem_ch3.ads
  92ce1e2ad8d12526945acea155e28ae8  gcc/ada/sem_ch4.adb
  adba03aae1f439b9e9db8cea05d8e03f  gcc/ada/sem_ch4.ads
! f03d0c6546218f5b79e770a8cc884877  gcc/ada/sem_ch5.adb
  ec8d5a42c27c46e4969c16d6e18ed276  gcc/ada/sem_ch5.ads
  c562011f69d365bea521812b7109c09e  gcc/ada/sem_ch6.adb
  165c2ff9990d74ba204881b7983566c7  gcc/ada/sem_ch6.ads
*************** a38c4ce4bc2936bd0a73c28ff1b0df61  gcc/ad
*** 2933,2947 ****
  c074ec7450863300eff2a21c036a624b  gcc/ada/sem_elab.ads
  1623b94463e7ca1496ecde7010db85fc  gcc/ada/sem_elim.adb
  c837e01542a712c622bac1cd152fc080  gcc/ada/sem_elim.ads
! 8c30b65694da59f237b43f9d95914bad  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
! 115df084cef921c567f9d7093b8cb0cb  gcc/ada/sem_prag.adb
  d16256f1e0a8b84763e3ccc0653e1c4b  gcc/ada/sem_prag.ads
! 4b9c47c09c575b9c1b4d2255b127e0a4  gcc/ada/sem_res.adb
  bb01f11ceaa352a8b99f95fcbcfe97d9  gcc/ada/sem_res.ads
  28d33ede4288814374d1909847798c7d  gcc/ada/sem_scil.adb
  db6f5a37bd59fd83ff3286e71ab985fe  gcc/ada/sem_scil.ads
--- 2934,2948 ----
  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
! 916f8ef9a7606d5a96186f46d38b422f  gcc/ada/sem_prag.adb
  d16256f1e0a8b84763e3ccc0653e1c4b  gcc/ada/sem_prag.ads
! 38eb5eb14ddec96de3f1f0666378e0fc  gcc/ada/sem_res.adb
  bb01f11ceaa352a8b99f95fcbcfe97d9  gcc/ada/sem_res.ads
  28d33ede4288814374d1909847798c7d  gcc/ada/sem_scil.adb
  db6f5a37bd59fd83ff3286e71ab985fe  gcc/ada/sem_scil.ads
*************** fd4d9f3482192f6e3be236b576b9c7a5  gcc/ad
*** 2962,2969 ****
  662d6656603a8f09fe945ac88ade43bc  gcc/ada/sigtramp-arm-qnx.c
  c9a32992d7b0864a447ed2a5c6378f44  gcc/ada/sigtramp-ios.c
  1e2b391f75fbd0632f61ff7b06af24a5  gcc/ada/sigtramp-qnx.c
! c2541eaa9688774ed19289cfc89625a5  gcc/ada/sigtramp-vxworks-target.h
! 53ac5b33607106f4b49b8fb9d92fd6f6  gcc/ada/sigtramp-vxworks.c
  f32c4d3d5df9ad9663b4978f7f8a2573  gcc/ada/sigtramp.h
  128a0905adb78c79aa56397a7942e20a  gcc/ada/sinfo-cn.adb
  2cb93d6ac8ba3beb6fc31af4d97b6fcd  gcc/ada/sinfo-cn.ads
--- 2963,2970 ----
  662d6656603a8f09fe945ac88ade43bc  gcc/ada/sigtramp-arm-qnx.c
  c9a32992d7b0864a447ed2a5c6378f44  gcc/ada/sigtramp-ios.c
  1e2b391f75fbd0632f61ff7b06af24a5  gcc/ada/sigtramp-qnx.c
! 28115ed13f7ad840fc4f8015b6756547  gcc/ada/sigtramp-vxworks-target.h
! c9d6a46ff9784e816e97c3002c30563a  gcc/ada/sigtramp-vxworks.c
  f32c4d3d5df9ad9663b4978f7f8a2573  gcc/ada/sigtramp.h
  128a0905adb78c79aa56397a7942e20a  gcc/ada/sinfo-cn.adb
  2cb93d6ac8ba3beb6fc31af4d97b6fcd  gcc/ada/sinfo-cn.ads
*************** d9d7a0f9b8ac29d8f1e477d6b53076c1  gcc/ad
*** 3020,3028 ****
  6f122fca818bdd0608fc8391dbb411ba  gcc/ada/tempdir.ads
  9926751851ed0d0e60e63eeb59a3c547  gcc/ada/terminals.c
  90388b2ce8b02dc01b5f589caaff07ec  gcc/ada/tracebak.c
! 5dbb85c8243352d9860a128ce9659fa7  gcc/ada/treepr.adb
  fffc3c236eb600b5b36d78fbe10f489d  gcc/ada/treepr.ads
! 6f3fd20323108cb95757cc42a1514191  gcc/ada/ttypes.ads
  e02948c9347a91c37c4f24e7d4356a02  gcc/ada/types.adb
  e65f5e6c67d816a67d60a18801ead601  gcc/ada/types.ads
  53a20911b164cec2c19acfc933c1ee14  gcc/ada/types.h
--- 3021,3029 ----
  6f122fca818bdd0608fc8391dbb411ba  gcc/ada/tempdir.ads
  9926751851ed0d0e60e63eeb59a3c547  gcc/ada/terminals.c
  90388b2ce8b02dc01b5f589caaff07ec  gcc/ada/tracebak.c
! 3deb940e1b20797b3d8751b4cb35a17d  gcc/ada/treepr.adb
  fffc3c236eb600b5b36d78fbe10f489d  gcc/ada/treepr.ads
! d8e53f7aca62bdc4c1656e735e484d72  gcc/ada/ttypes.ads
  e02948c9347a91c37c4f24e7d4356a02  gcc/ada/types.adb
  e65f5e6c67d816a67d60a18801ead601  gcc/ada/types.ads
  53a20911b164cec2c19acfc933c1ee14  gcc/ada/types.h
*************** df3f6c6882fc8f715d4cc537af0f6442  gcc/ad
*** 3060,3066 ****
  a13250e9011949e791f210139f4c4323  gcc/align.h
  192d075c6984da6ef1e282fd63829079  gcc/alloc-pool.cc
  b2194a7136db5f26272ca6162d858997  gcc/alloc-pool.h
! adf6f5ffffd71177e382cd74b5ac0191  gcc/analyzer/ChangeLog
  99ca8e9358149d619a543e45725f689f  gcc/analyzer/access-diagram.cc
  58f352acafda673d24da4113c4f80b8d  gcc/analyzer/access-diagram.h
  d3f3112562b7552a583d7d995ed2f2d1  gcc/analyzer/ana-state-to-diagnostic-state.cc
--- 3061,3067 ----
  a13250e9011949e791f210139f4c4323  gcc/align.h
  192d075c6984da6ef1e282fd63829079  gcc/alloc-pool.cc
  b2194a7136db5f26272ca6162d858997  gcc/alloc-pool.h
! 2b8b24b1f5f45f95ed2e9a7ea4ff08c6  gcc/analyzer/ChangeLog
  99ca8e9358149d619a543e45725f689f  gcc/analyzer/access-diagram.cc
  58f352acafda673d24da4113c4f80b8d  gcc/analyzer/access-diagram.h
  d3f3112562b7552a583d7d995ed2f2d1  gcc/analyzer/ana-state-to-diagnostic-state.cc
*************** bfd6293a1330b0a0026fdc80c0c23351  gcc/an
*** 3075,3082 ****
  313f066c1695c476ca0de7d8f98cc4db  gcc/analyzer/analyzer-selftests.cc
  a2da2c4ef5a4fe3acbece54115b2fcd5  gcc/analyzer/analyzer-selftests.h
  ae42d1af6f0865a580be5b5785f09543  gcc/analyzer/analyzer.cc
! 7728dfb3aa000e39dae978127135b53e  gcc/analyzer/analyzer.opt
! 7c4b3ff66e19fadda3d2ea672e55bd5b  gcc/analyzer/analyzer.opt.urls
  36bb44ed21a23a1a8cfb1813e07e2618  gcc/analyzer/bar-chart.cc
  632007f36f35e261443f6de2baf0656a  gcc/analyzer/bar-chart.h
  28888941c709fc542a9ccd9058d13a24  gcc/analyzer/bounds-checking.cc
--- 3076,3083 ----
  313f066c1695c476ca0de7d8f98cc4db  gcc/analyzer/analyzer-selftests.cc
  a2da2c4ef5a4fe3acbece54115b2fcd5  gcc/analyzer/analyzer-selftests.h
  ae42d1af6f0865a580be5b5785f09543  gcc/analyzer/analyzer.cc
! f70090b21bb2e0fbc34487c63b4e13a5  gcc/analyzer/analyzer.opt
! 595736e125cff847431ca2b52f95a8c4  gcc/analyzer/analyzer.opt.urls
  36bb44ed21a23a1a8cfb1813e07e2618  gcc/analyzer/bar-chart.cc
  632007f36f35e261443f6de2baf0656a  gcc/analyzer/bar-chart.h
  28888941c709fc542a9ccd9058d13a24  gcc/analyzer/bounds-checking.cc
*************** a6af351d1d085be0a26f7f6a32e196ff  gcc/an
*** 3119,3125 ****
  d5314202d047f9c9dadbafd255300e4a  gcc/analyzer/pending-diagnostic.h
  2b832b9c504b35df0b392144a6e972a2  gcc/analyzer/program-point.cc
  c1fbd7a3b6a1c66e2dbbc2e6725bab7b  gcc/analyzer/program-point.h
! d0f00b5f340504baad4de1fb8354c03f  gcc/analyzer/program-state.cc
  88b5f5d134b7604026c38d9f5b2cbb29  gcc/analyzer/program-state.h
  fe06c3c30ebc980430c4383a990fb092  gcc/analyzer/ranges.cc
  f0acfecca8767075f2b2e9bc04089741  gcc/analyzer/ranges.h
--- 3120,3126 ----
  d5314202d047f9c9dadbafd255300e4a  gcc/analyzer/pending-diagnostic.h
  2b832b9c504b35df0b392144a6e972a2  gcc/analyzer/program-point.cc
  c1fbd7a3b6a1c66e2dbbc2e6725bab7b  gcc/analyzer/program-point.h
! b6c98305b7499c48b334f60e46be7d00  gcc/analyzer/program-state.cc
  88b5f5d134b7604026c38d9f5b2cbb29  gcc/analyzer/program-state.h
  fe06c3c30ebc980430c4383a990fb092  gcc/analyzer/ranges.cc
  f0acfecca8767075f2b2e9bc04089741  gcc/analyzer/ranges.h
*************** fe292df4b7f3e3ef7c0b8305084b6844  gcc/bi
*** 3186,3203 ****
  ab9fdb6ff2584fb7c564bdd3d5546c02  gcc/btfout.cc
  5423cf9cfc9de5ca30bc45842efead77  gcc/builtin-attrs.def
  9b2538f67781c7ccab3891a929caaaf0  gcc/builtin-types.def
! 1f5d04ed09772ef8cff71c5a2d838b85  gcc/builtins.cc
  52ff6fb92e162a8ad41a1af1dfb0171a  gcc/builtins.def
  08bacecaf5d3527bf3df15480fb78537  gcc/builtins.h
! c881828d1eef1c604ba04ab2cb0fbdcb  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
  d44a12a363aa3f6d21f2be5e2ff91306  gcc/c-family/c-attribs.cc
! c897c985c1212b96852d374531b546a3  gcc/c-family/c-common.cc
  c273c4ad95ccdbfe677146505900c62e  gcc/c-family/c-common.def
  a1556e72a17e2e7a5496c8eaa0f4dc8a  gcc/c-family/c-common.h
! 5ce5bb7aedbac710588ce288b03d426e  gcc/c-family/c-cppbuiltin.cc
  01db2d5cca29943c49bb372f2137d874  gcc/c-family/c-dump.cc
  19059a85545bb95b391e68da0cbc670c  gcc/c-family/c-format.cc
  c8d86c12bc259d3a335f338ce3a10304  gcc/c-family/c-format.h
--- 3187,3204 ----
  ab9fdb6ff2584fb7c564bdd3d5546c02  gcc/btfout.cc
  5423cf9cfc9de5ca30bc45842efead77  gcc/builtin-attrs.def
  9b2538f67781c7ccab3891a929caaaf0  gcc/builtin-types.def
! 67b762b0b5e04e028c2e2436f9a6cfbe  gcc/builtins.cc
  52ff6fb92e162a8ad41a1af1dfb0171a  gcc/builtins.def
  08bacecaf5d3527bf3df15480fb78537  gcc/builtins.h
! 849095aeeffccedc745c3b0de3075acd  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
  d44a12a363aa3f6d21f2be5e2ff91306  gcc/c-family/c-attribs.cc
! de1040c9e00924f0938f3a7b411edc9b  gcc/c-family/c-common.cc
  c273c4ad95ccdbfe677146505900c62e  gcc/c-family/c-common.def
  a1556e72a17e2e7a5496c8eaa0f4dc8a  gcc/c-family/c-common.h
! 75de6b5a4caad7c710cd519bdddc5046  gcc/c-family/c-cppbuiltin.cc
  01db2d5cca29943c49bb372f2137d874  gcc/c-family/c-dump.cc
  19059a85545bb95b391e68da0cbc670c  gcc/c-family/c-format.cc
  c8d86c12bc259d3a335f338ce3a10304  gcc/c-family/c-format.h
*************** a4b7179d2e948bb7586a9143fbe05593  gcc/c-
*** 3207,3214 ****
  c80c4d6e16ab46358143d22a8a146725  gcc/c-family/c-lex.cc
  c880dc584a0fd4908e5df33dd81137b8  gcc/c-family/c-objc.h
  d21f1c18590954a9e3a2f6fe7f9b0641  gcc/c-family/c-omp.cc
! 6e8a9908a506a5d75b08c9aa99f39320  gcc/c-family/c-opts.cc
! 2f1a14531d3a436ca9f4aad2812c3898  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
--- 3208,3215 ----
  c80c4d6e16ab46358143d22a8a146725  gcc/c-family/c-lex.cc
  c880dc584a0fd4908e5df33dd81137b8  gcc/c-family/c-objc.h
  d21f1c18590954a9e3a2f6fe7f9b0641  gcc/c-family/c-omp.cc
! f3ac926a6f27bce49ebe5dfff41f2e5b  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
*************** fc808567009babd00ebcf49b5b985691  gcc/c-
*** 3224,3238 ****
  2716f2dd9d461ac6da32e9185698bbb2  gcc/c-family/c-type-mismatch.h
  48e5431bc15452653e41b37b5c3643e5  gcc/c-family/c-ubsan.cc
  a28f2477c85a17e42026521322b3649a  gcc/c-family/c-ubsan.h
! 0c00c0332bed675baf2792a1a37fb8ea  gcc/c-family/c-warn.cc
! cbf79792c0cc4e865e62ffd31f364db6  gcc/c-family/c.opt
! 48e89373ef611774b44bd1bfdcf71d21  gcc/c-family/c.opt.urls
  22bd7478421befafcfbd805e3ca373ac  gcc/c-family/cppspec.cc
  801075b0f2da341a38f761b3b7ffd7cd  gcc/c-family/known-headers.cc
  ac5daa4f7d7788a3f68dde7fe7a25316  gcc/c-family/known-headers.h
  f09c431056b5138e7cfe8376e05de9a6  gcc/c-family/name-hint.h
  d71f74b5b48d9ec5e4e6463e7330121d  gcc/c-family/stub-objc.cc
! 4adaa769661dc05f43eea5075053a4ee  gcc/c/ChangeLog
  a1ab86dd79d40d45839823afe798673a  gcc/c/Make-lang.in
  f1e5593aebd5cffb4b3cbffe6bd0860a  gcc/c/c-aux-info.cc
  178d24653bb20936d73bad078e70763c  gcc/c/c-convert.cc
--- 3225,3239 ----
  2716f2dd9d461ac6da32e9185698bbb2  gcc/c-family/c-type-mismatch.h
  48e5431bc15452653e41b37b5c3643e5  gcc/c-family/c-ubsan.cc
  a28f2477c85a17e42026521322b3649a  gcc/c-family/c-ubsan.h
! f33c757b5c412f1062f4d8d3d39ea3c5  gcc/c-family/c-warn.cc
! bf8b41ecf9cb80e9114f411ea3ae7b6a  gcc/c-family/c.opt
! d485abbea4a7be8fd3803b672ae74235  gcc/c-family/c.opt.urls
  22bd7478421befafcfbd805e3ca373ac  gcc/c-family/cppspec.cc
  801075b0f2da341a38f761b3b7ffd7cd  gcc/c-family/known-headers.cc
  ac5daa4f7d7788a3f68dde7fe7a25316  gcc/c-family/known-headers.h
  f09c431056b5138e7cfe8376e05de9a6  gcc/c-family/name-hint.h
  d71f74b5b48d9ec5e4e6463e7330121d  gcc/c-family/stub-objc.cc
! 51851628c83c1ccb661878103017b347  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/
*** 3243,3253 ****
  4be9de2ca25340adb8f350478db6a3d8  gcc/c/c-lang.h
  c2644975781d9f78ae4c387d01a3270e  gcc/c/c-objc-common.cc
  757f583d06a3ec98336adbfc92b4e6a8  gcc/c/c-objc-common.h
! 23ffaaa1b6ff17b13a76c60f7bca8c0d  gcc/c/c-parser.cc
  4cd2bf432e96f0de530e0ea4e8b44aa2  gcc/c/c-parser.h
  9179f46b6a06c7d734278f5ce2c55883  gcc/c/c-tree.def
  2ff9ae091101b4377a806073d2e89d3f  gcc/c/c-tree.h
! c8c6332880cfcecb52041becf6633c59  gcc/c/c-typeck.cc
  cd371895d730dd64e947066b2e4378f8  gcc/c/config-lang.in
  1bd76a24d1322659f048abe2272a6f34  gcc/c/gccspec.cc
  1ed203cdf15f14eb7bfe0eaabf41f503  gcc/c/gimple-parser.cc
--- 3244,3254 ----
  4be9de2ca25340adb8f350478db6a3d8  gcc/c/c-lang.h
  c2644975781d9f78ae4c387d01a3270e  gcc/c/c-objc-common.cc
  757f583d06a3ec98336adbfc92b4e6a8  gcc/c/c-objc-common.h
! 34aab3cabcc61474557b6f6d5bf5fe26  gcc/c/c-parser.cc
  4cd2bf432e96f0de530e0ea4e8b44aa2  gcc/c/c-parser.h
  9179f46b6a06c7d734278f5ce2c55883  gcc/c/c-tree.def
  2ff9ae091101b4377a806073d2e89d3f  gcc/c/c-tree.h
! 2aa754484aae0093e003b1ead89522a9  gcc/c/c-typeck.cc
  cd371895d730dd64e947066b2e4378f8  gcc/c/config-lang.in
  1bd76a24d1322659f048abe2272a6f34  gcc/c/gccspec.cc
  1ed203cdf15f14eb7bfe0eaabf41f503  gcc/c/gimple-parser.cc
*************** b6c3335dfa12561fab963bf22e16df60  gcc/cg
*** 3283,3294 ****
  f260ce27ba36b1e6d964fe6ba1552cb6  gcc/cgraphclones.cc
  4e2f7703a23f2c2483098ddb6edac479  gcc/cgraphunit.cc
  bd38ef84be4e8351bde3ee96f062c357  gcc/cif-code.def
! bea513ad5f6cc0d64874539ff7f10b28  gcc/cobol/ChangeLog
  569631bd4020aa574ed66319ac5e67f3  gcc/cobol/Make-lang.in
  0a84e784d2bc4066654d2377fc6a2930  gcc/cobol/TODO
  b5d944951cc226cf4f33fdd1494aa7e7  gcc/cobol/cbldiag.h
  030342886cc720f11f17d7691f6f24ae  gcc/cobol/cdf-copy.cc
! 4f5259ec428b699363e277df1f9d11b6  gcc/cobol/cdf.y
  b916ef498fa1cc9821e56ab612f00f3a  gcc/cobol/cdfval.h
  fb65c7259141f1223fa29175a2e441ed  gcc/cobol/cobol-system.h
  cf18ccae4998b9a3dde6cb12300516d6  gcc/cobol/cobol1.cc
--- 3284,3295 ----
  f260ce27ba36b1e6d964fe6ba1552cb6  gcc/cgraphclones.cc
  4e2f7703a23f2c2483098ddb6edac479  gcc/cgraphunit.cc
  bd38ef84be4e8351bde3ee96f062c357  gcc/cif-code.def
! 34d388fd1d842f2496b843ebf550496c  gcc/cobol/ChangeLog
  569631bd4020aa574ed66319ac5e67f3  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
*************** bdd6fbf13776c7983a16ac857615424c  gcc/co
*** 3302,3308 ****
  fa246be77803ddea6f093e99f50df33e  gcc/cobol/gcobol.1
  527925049a81a36c06220d368570f55a  gcc/cobol/gcobol.3
  d7c8a533dca0074af1f74be3f2ef9dce  gcc/cobol/gcobolspec.cc
! cdaef633ff45ae046ad4826e4fbf6f7d  gcc/cobol/genapi.cc
  d77aff76631397333b43e387383acce2  gcc/cobol/genapi.h
  a11b45ded2381dbcad1f1d4ea77d346d  gcc/cobol/gengen.cc
  eeb2d20d7d0d4521acb2468dee246887  gcc/cobol/gengen.h
--- 3303,3309 ----
  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
*************** fc78b78c0e88e56d8a5bc08ac67ee843  gcc/co
*** 3314,3337 ****
  0fa33dbe050697f40b5e8df91896da9a  gcc/cobol/inspect.h
  2c85ade938027e95c4c411b384f6ad11  gcc/cobol/lang-specs.h
  4ab99742b15962360c2189eb9cdb087c  gcc/cobol/lang.opt
! 746a2d46b3bc2a5f5663a9d64a78a674  gcc/cobol/lang.opt.urls
! 7bab28df69a22be2ad0a8d95ec263e2d  gcc/cobol/lexio.cc
  5953c820cdc03feb815bfbf28c10730c  gcc/cobol/lexio.h
! a2131f2e6106c4b5c734f2b2274c003e  gcc/cobol/parse.y
! b579f69e8cafd2d2dfc567f43f9e1014  gcc/cobol/parse_ante.h
  e141e23293fb343e7ccbaa2fe6bcef33  gcc/cobol/parse_util.h
! 950a05f04a5458ec8d515f8371b5271e  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
! af9497c3c6fd20ea939a8459b2ebff41  gcc/cobol/symbols.cc
! 414b35a9f9cd2a23cd16f7ad675abe08  gcc/cobol/symbols.h
  56876c7f6bf3230239c8142eb049a183  gcc/cobol/symfind.cc
! 38d63d19b4869696c6123c90b1ab8b92  gcc/cobol/token_names.h
  434f4899280e27d0717b2e56d5bf12f2  gcc/cobol/udf/stored-char-length.cbl
! 55591943a6dc41b427e72d94e5742c79  gcc/cobol/util.cc
  ed3f467605b997678af9e5189497d41b  gcc/cobol/util.h
  0f3dba102a04da8ca1e45b9b16741bde  gcc/collect-utils.cc
  6e6685d60444844fecf36350b5956f77  gcc/collect-utils.h
--- 3315,3338 ----
  0fa33dbe050697f40b5e8df91896da9a  gcc/cobol/inspect.h
  2c85ade938027e95c4c411b384f6ad11  gcc/cobol/lang-specs.h
  4ab99742b15962360c2189eb9cdb087c  gcc/cobol/lang.opt
! 554b9cfff6f4c2d1e8c6268a48dad8c3  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
! 0660773450ac6f035bb426cb41fe2b1c  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
*************** f55010fab8b9aabea82c3ac50d031028  gcc/co
*** 3343,3350 ****
  7041e62f0f582b09331732fef4bb9545  gcc/combine-stack-adj.cc
  8db32a2301bfbb3281c1cc38024ad792  gcc/combine.cc
  2b9ccf7fc2473ef7e36aee9bcf170843  gcc/common.md
! 56d47e601720a10d018cb61d42d5a6c6  gcc/common.opt
! ee6af2937fce4a98c406a6da277ef9a6  gcc/common.opt.urls
  26050db921f73fd87b026dc950bde97b  gcc/common/common-target-def.h
  dae02ebe59cdaaf21611ad354e939ca5  gcc/common/common-target.def
  4a00b1cedd9d15d93e32920b16b3c292  gcc/common/common-target.h
--- 3344,3351 ----
  7041e62f0f582b09331732fef4bb9545  gcc/combine-stack-adj.cc
  8db32a2301bfbb3281c1cc38024ad792  gcc/combine.cc
  2b9ccf7fc2473ef7e36aee9bcf170843  gcc/common.md
! a470c2795a6a7ef008bd5dbffe485e55  gcc/common.opt
! 2017b10b4e7df8c2e96ff3f55282a452  gcc/common.opt.urls
  26050db921f73fd87b026dc950bde97b  gcc/common/common-target-def.h
  dae02ebe59cdaaf21611ad354e939ca5  gcc/common/common-target.def
  4a00b1cedd9d15d93e32920b16b3c292  gcc/common/common-target.h
*************** b5b29985cb2de5a44d272d90103500b1  gcc/co
*** 3374,3379 ****
--- 3375,3381 ----
  2a64c5f639b347964e652ebb1add9831  gcc/common/config/ia64/ia64-common.cc
  94b8ff9b1f75e2aaff5033327ccfb449  gcc/common/config/iq2000/iq2000-common.cc
  fd1d75b5f0b2cfac12e5ed2e83377f77  gcc/common/config/lm32/lm32-common.cc
+ 1f9c55413f347a721eb149734b63c4bd  gcc/common/config/loongarch/cpu-features.h
  439511d12e6007365989970ce2f30ee7  gcc/common/config/loongarch/loongarch-common.cc
  c274f01e092954a82e2b6a8616fb0f71  gcc/common/config/m32r/m32r-common.cc
  8d56564b50267e9ff76b19916f360c71  gcc/common/config/m68k/m68k-common.cc
*************** b5a916bb9dd788754ac9e4ad7174ee74  gcc/co
*** 3404,3412 ****
  b209201703dd766f76ff5e16b99191e5  gcc/compare-elim.cc
  618780fbce0ce0cb6f9b86e079ce4e54  gcc/conditions.h
  1b4bc58c657bf910929d06d51bc8fa6c  gcc/config.build
! 51a65bc6b11018a6cc5694278912068a  gcc/config.gcc
  053bb14b428d0f073932e88b9a29a8bd  gcc/config.host
! 9c5069f4e36f97d3c2a9c40414f67a4e  gcc/config.in
  8e697813dc96ca90f5d0f4c196efe2cc  gcc/config/README
  ddbb7a934f8b8aa068e7b765c4375fbe  gcc/config/aarch64/aarch64-abi-ms.h
  9ff4e02500f5622983fef95cce7f38fd  gcc/config/aarch64/aarch64-arches.def
--- 3406,3414 ----
  b209201703dd766f76ff5e16b99191e5  gcc/compare-elim.cc
  618780fbce0ce0cb6f9b86e079ce4e54  gcc/conditions.h
  1b4bc58c657bf910929d06d51bc8fa6c  gcc/config.build
! dc3bc1f2a902490fc35c0b110c571902  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
*************** ddbb7a934f8b8aa068e7b765c4375fbe  gcc/co
*** 3415,3421 ****
  482530e7572b40bc2ad01bdec0c1b97e  gcc/config/aarch64/aarch64-builtins.h
  8552918e1d837cbfa00f4f972f0738c5  gcc/config/aarch64/aarch64-c.cc
  133f61af7e288fe91ca31c659939c551  gcc/config/aarch64/aarch64-coff.h
! e8a24ce2d025dee64337a9cfd3dc5d59  gcc/config/aarch64/aarch64-cores.def
  85b8b0267c641b7fb638fffcb3016739  gcc/config/aarch64/aarch64-cost-tables.h
  bef2a61270424fd606c71d78d20ad675  gcc/config/aarch64/aarch64-d.cc
  36405b6300d5ec6ca8faf17212ad1bc9  gcc/config/aarch64/aarch64-d.h
--- 3417,3423 ----
  482530e7572b40bc2ad01bdec0c1b97e  gcc/config/aarch64/aarch64-builtins.h
  8552918e1d837cbfa00f4f972f0738c5  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
  36405b6300d5ec6ca8faf17212ad1bc9  gcc/config/aarch64/aarch64-d.h
*************** b824341b8f6fdb8eb1667425adf63db8  gcc/co
*** 3445,3451 ****
  7cfa3d0cdd28cdcd73a29c2c8a925548  gcc/config/aarch64/aarch64-simd-builtin-types.def
  8f28d55d0c7fc64387352822e99a37ff  gcc/config/aarch64/aarch64-simd-builtins.def
  33ce4a896b77324d9be6448637daf9ca  gcc/config/aarch64/aarch64-simd-pragma-builtins.def
! ce276543a479bdb36dbb958c4e83ce90  gcc/config/aarch64/aarch64-simd.md
  fec3caf088f2add6cefcfb20f6dcae7f  gcc/config/aarch64/aarch64-sme.md
  fa6672290fdf9366d9919defcb7e41d7  gcc/config/aarch64/aarch64-speculation.cc
  9311f63fb41454e9c423862057e8eb6b  gcc/config/aarch64/aarch64-sve-builtins-base.cc
--- 3447,3453 ----
  7cfa3d0cdd28cdcd73a29c2c8a925548  gcc/config/aarch64/aarch64-simd-builtin-types.def
  8f28d55d0c7fc64387352822e99a37ff  gcc/config/aarch64/aarch64-simd-builtins.def
  33ce4a896b77324d9be6448637daf9ca  gcc/config/aarch64/aarch64-simd-pragma-builtins.def
! 05b3def5d4aa9f6f4a628fe8bac0f3d7  gcc/config/aarch64/aarch64-simd.md
  fec3caf088f2add6cefcfb20f6dcae7f  gcc/config/aarch64/aarch64-sme.md
  fa6672290fdf9366d9919defcb7e41d7  gcc/config/aarch64/aarch64-speculation.cc
  9311f63fb41454e9c423862057e8eb6b  gcc/config/aarch64/aarch64-sve-builtins-base.cc
*************** f3e52f115b01c46c9eb8009d950b8d7f  gcc/co
*** 3460,3477 ****
  590c9c2e2c6855697cef84761c420b80  gcc/config/aarch64/aarch64-sve-builtins-sve2.cc
  5249e3dd61e8bd70c85a23c5711f3ca2  gcc/config/aarch64/aarch64-sve-builtins-sve2.def
  e2d80b89552da0c6b4cb6bede3b2e573  gcc/config/aarch64/aarch64-sve-builtins-sve2.h
! e20677f3c781767c35b5c923257b576d  gcc/config/aarch64/aarch64-sve-builtins.cc
  30d08305d5bc784af521254aea449949  gcc/config/aarch64/aarch64-sve-builtins.def
  ae7ea468046099ae99d717e107a85497  gcc/config/aarch64/aarch64-sve-builtins.h
! 17334e7a2b3e2eaa1aadb4be5e341f09  gcc/config/aarch64/aarch64-sve.md
  0e48ec989797cfed5b216617692403e9  gcc/config/aarch64/aarch64-sve2.md
  28e8e7965d9ed466a7d53a53e2ec7397  gcc/config/aarch64/aarch64-sys-regs.def
! bb99d6fe2d4e8eaffacc71689325d35c  gcc/config/aarch64/aarch64-tune.md
  586e3b2fd446baa0a6fb8da7c8cdd660  gcc/config/aarch64/aarch64-tuning-flags.def
  a5cfcce7c9dd86a597161f8bde3497bc  gcc/config/aarch64/aarch64-vxworks.h
! 78f70a11fe7390c6d5bf50a25f7a6f20  gcc/config/aarch64/aarch64.cc
  bb0828c96d48c6a01dd1c6dc035d2095  gcc/config/aarch64/aarch64.h
! 79c93476404c0822020c37da243fdd02  gcc/config/aarch64/aarch64.md
  826e25677a47d91542c89828074d668c  gcc/config/aarch64/aarch64.opt
  be545ebdbead749c3365e9729990237b  gcc/config/aarch64/aarch64.opt.urls
  7b468a20f0362cbe02c7699720a962fa  gcc/config/aarch64/arm_acle.h
--- 3462,3479 ----
  590c9c2e2c6855697cef84761c420b80  gcc/config/aarch64/aarch64-sve-builtins-sve2.cc
  5249e3dd61e8bd70c85a23c5711f3ca2  gcc/config/aarch64/aarch64-sve-builtins-sve2.def
  e2d80b89552da0c6b4cb6bede3b2e573  gcc/config/aarch64/aarch64-sve-builtins-sve2.h
! 6898353f8b81b1bd82f117ddced5b0d5  gcc/config/aarch64/aarch64-sve-builtins.cc
  30d08305d5bc784af521254aea449949  gcc/config/aarch64/aarch64-sve-builtins.def
  ae7ea468046099ae99d717e107a85497  gcc/config/aarch64/aarch64-sve-builtins.h
! c2d5232eddeef47e949807fecfc7adf4  gcc/config/aarch64/aarch64-sve.md
  0e48ec989797cfed5b216617692403e9  gcc/config/aarch64/aarch64-sve2.md
  28e8e7965d9ed466a7d53a53e2ec7397  gcc/config/aarch64/aarch64-sys-regs.def
! 9abdad77523bfa1246a02b4538de6a7d  gcc/config/aarch64/aarch64-tune.md
  586e3b2fd446baa0a6fb8da7c8cdd660  gcc/config/aarch64/aarch64-tuning-flags.def
  a5cfcce7c9dd86a597161f8bde3497bc  gcc/config/aarch64/aarch64-vxworks.h
! 0b86955170b4cfdfe474f11c6f35a885  gcc/config/aarch64/aarch64.cc
  bb0828c96d48c6a01dd1c6dc035d2095  gcc/config/aarch64/aarch64.h
! 07ce4a539515b7e0f29d3af4186105ec  gcc/config/aarch64/aarch64.md
  826e25677a47d91542c89828074d668c  gcc/config/aarch64/aarch64.opt
  be545ebdbead749c3365e9729990237b  gcc/config/aarch64/aarch64.opt.urls
  7b468a20f0362cbe02c7699720a962fa  gcc/config/aarch64/arm_acle.h
*************** ae88170d2d567105865813bb4b77d91f  gcc/co
*** 3490,3504 ****
  e6affb6245a300a09ed57ed4fc0b212b  gcc/config/aarch64/constraints.md
  dd76583202434d2161c8668396b95079  gcc/config/aarch64/cortex-a57-fma-steering.cc
  034ef57fb17f601ded123d7a43b51d02  gcc/config/aarch64/cygming.h
! 13b725f057e939c7ebe5bd19da1df7ee  gcc/config/aarch64/driver-aarch64.cc
  f713d33fdaee532813b56547dd070c8c  gcc/config/aarch64/fractional-cost.h
  f7165d62ef852e1929a8fc9a85c01ab2  gcc/config/aarch64/gcc-auto-profile
  dfcdbda4a3bb64a86fdf64ce6fce0ae3  gcc/config/aarch64/geniterators.sh
  bc3b4ebfac8bfd42d3e9098f33585afd  gcc/config/aarch64/gentune.sh
  86eaf33edeb885c2c9ae2a9825879e59  gcc/config/aarch64/host-aarch64-darwin.cc
! b4658c3bd4e7e271f0a7733d5b9f6ced  gcc/config/aarch64/iterators.md
  811f43b19ba5f415244c59b4ab377445  gcc/config/aarch64/neoversev2.md
! dccd7ab23543b643345fc7fb161eb98d  gcc/config/aarch64/predicates.md
  a4e902ee1494ba5eee811ea46ecdf995  gcc/config/aarch64/rtems.h
  74ca0ed7fd56ec1d94a1a9efe5113485  gcc/config/aarch64/t-aarch64
  5a6fa47ba2bb65a12cd953f8edee028d  gcc/config/aarch64/t-aarch64-freebsd
--- 3492,3506 ----
  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
  dfcdbda4a3bb64a86fdf64ce6fce0ae3  gcc/config/aarch64/geniterators.sh
  bc3b4ebfac8bfd42d3e9098f33585afd  gcc/config/aarch64/gentune.sh
  86eaf33edeb885c2c9ae2a9825879e59  gcc/config/aarch64/host-aarch64-darwin.cc
! 992b98b93c75e256be48858190b9e050  gcc/config/aarch64/iterators.md
  811f43b19ba5f415244c59b4ab377445  gcc/config/aarch64/neoversev2.md
! 9199dc8fc240733f6293f87b6132d53f  gcc/config/aarch64/predicates.md
  a4e902ee1494ba5eee811ea46ecdf995  gcc/config/aarch64/rtems.h
  74ca0ed7fd56ec1d94a1a9efe5113485  gcc/config/aarch64/t-aarch64
  5a6fa47ba2bb65a12cd953f8edee028d  gcc/config/aarch64/t-aarch64-freebsd
*************** a0d6247441e5490d3381c59ed8c5b4f4  gcc/co
*** 3630,3641 ****
  c3db7a7dfc5f086a04da4c1151d755d5  gcc/config/arm/arm-ldmstm.ml
  a7ae9132c9bec5a1cb9d4d193eb9fb9f  gcc/config/arm/arm-mlib.h
  46b06532a5609675535edd3c09991537  gcc/config/arm/arm-modes.def
! aa383b4f5882eae26cde94f0b22aedd1  gcc/config/arm/arm-mve-builtins-base.cc
! e7b7c026e8534c166c3243388a760db5  gcc/config/arm/arm-mve-builtins-base.def
! f7da1948e1d45b2ba15e1bf69f9fab63  gcc/config/arm/arm-mve-builtins-base.h
  e064d99cd82f974a718dd70c31575709  gcc/config/arm/arm-mve-builtins-functions.h
! cf6db86b33aad410441232cb5e3f30b7  gcc/config/arm/arm-mve-builtins-shapes.cc
! 22b0a5a853f387f3ca45b438b257a19e  gcc/config/arm/arm-mve-builtins-shapes.h
  682a014f9e1f141dfb4c3d481e890008  gcc/config/arm/arm-mve-builtins.cc
  c7d2396379cbe9f18b9ac7f95b2376f9  gcc/config/arm/arm-mve-builtins.def
  657d3ecd350c0aab459e5d706a2466b8  gcc/config/arm/arm-mve-builtins.h
--- 3632,3643 ----
  c3db7a7dfc5f086a04da4c1151d755d5  gcc/config/arm/arm-ldmstm.ml
  a7ae9132c9bec5a1cb9d4d193eb9fb9f  gcc/config/arm/arm-mlib.h
  46b06532a5609675535edd3c09991537  gcc/config/arm/arm-modes.def
! 60c69c8736ccaa081c97ec4070d27172  gcc/config/arm/arm-mve-builtins-base.cc
! fbedf5e34271a4a6e915d89a3f84e486  gcc/config/arm/arm-mve-builtins-base.def
! 84b79dbff7b89f334892673f87f3b050  gcc/config/arm/arm-mve-builtins-base.h
  e064d99cd82f974a718dd70c31575709  gcc/config/arm/arm-mve-builtins-functions.h
! 48fba0ab1a3d7c0acbbec2396fa32d90  gcc/config/arm/arm-mve-builtins-shapes.cc
! 5c320503e4397b36a3d4722d3edae7c2  gcc/config/arm/arm-mve-builtins-shapes.h
  682a014f9e1f141dfb4c3d481e890008  gcc/config/arm/arm-mve-builtins.cc
  c7d2396379cbe9f18b9ac7f95b2376f9  gcc/config/arm/arm-mve-builtins.def
  657d3ecd350c0aab459e5d706a2466b8  gcc/config/arm/arm-mve-builtins.h
*************** eafc8a2abc331243ea846fab22b8aec4  gcc/co
*** 3646,3654 ****
  5d895a88bb2048a83e3ccc08d50f3151  gcc/config/arm/arm-tables.opt
  f805d118929dd79f6bd4dc75c77c968b  gcc/config/arm/arm-tables.opt.urls
  1f1a55560eb97e283125003609418bce  gcc/config/arm/arm-tune.md
! 36958147a21de6c1712e9e0d2c51fa75  gcc/config/arm/arm.cc
  4b4c240869c2413c542f051e20fc26d1  gcc/config/arm/arm.h
! ff6b3849e6361d132949b8f3c52b42a5  gcc/config/arm/arm.md
  6438602120f5212434b003b5018064ec  gcc/config/arm/arm.opt
  d96083967a30e6eb0f75d624af2d831a  gcc/config/arm/arm.opt.urls
  ccbf8aa9582c7ea8db0ed6a70d1dd691  gcc/config/arm/arm1020e.md
--- 3648,3656 ----
  5d895a88bb2048a83e3ccc08d50f3151  gcc/config/arm/arm-tables.opt
  f805d118929dd79f6bd4dc75c77c968b  gcc/config/arm/arm-tables.opt.urls
  1f1a55560eb97e283125003609418bce  gcc/config/arm/arm-tune.md
! 8dfcbbbd64b8b50f02254784a185dbb8  gcc/config/arm/arm.cc
  4b4c240869c2413c542f051e20fc26d1  gcc/config/arm/arm.h
! f2549733b9a96df12519d1c4e55a1532  gcc/config/arm/arm.md
  6438602120f5212434b003b5018064ec  gcc/config/arm/arm.opt
  d96083967a30e6eb0f75d624af2d831a  gcc/config/arm/arm.opt.urls
  ccbf8aa9582c7ea8db0ed6a70d1dd691  gcc/config/arm/arm1020e.md
*************** e8da624def348c2c40197e1b1ad6f812  gcc/co
*** 3662,3668 ****
  b1a24a24b85a7cb705e34642d6262e82  gcc/config/arm/arm_cde_builtins.def
  97c08aba9b7507a2a727088723d324dd  gcc/config/arm/arm_cmse.h
  6bca088046fad4a4968ac527476fe0d3  gcc/config/arm/arm_fp16.h
! 3777ecd6cf5b0fe59734ec67479e8c4e  gcc/config/arm/arm_mve.h
  5e9c8b6c6b107ceb0259919168fcb6ca  gcc/config/arm/arm_mve_builtins.def
  1f4138dbad069d0f988c5b0ab3f8671b  gcc/config/arm/arm_mve_types.h
  6c5754bfb664962c7bf76cf5df6b2397  gcc/config/arm/arm_neon.h
--- 3664,3670 ----
  b1a24a24b85a7cb705e34642d6262e82  gcc/config/arm/arm_cde_builtins.def
  97c08aba9b7507a2a727088723d324dd  gcc/config/arm/arm_cmse.h
  6bca088046fad4a4968ac527476fe0d3  gcc/config/arm/arm_fp16.h
! 459a7a15fb48a4e136f38621535a2550  gcc/config/arm/arm_mve.h
  5e9c8b6c6b107ceb0259919168fcb6ca  gcc/config/arm/arm_mve_builtins.def
  1f4138dbad069d0f988c5b0ab3f8671b  gcc/config/arm/arm_mve_types.h
  6c5754bfb664962c7bf76cf5df6b2397  gcc/config/arm/arm_neon.h
*************** cb269e14a0ffcaf48937ea37a588d123  gcc/co
*** 3670,3676 ****
  130a8fbe50847f964b84dcc079274131  gcc/config/arm/arm_vfp_builtins.def
  ae20ce20f59a062f74bc3e38bfb8e776  gcc/config/arm/bpabi.h
  bbacfe695f3abec9a6aa46cee26c1db4  gcc/config/arm/common.md
! 27f03ed6fafa20872db0373c5d3555e2  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
--- 3672,3678 ----
  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
*************** d3258824a869cbf8507cc20b8354d63a  gcc/co
*** 3700,3706 ****
  7ce753afcddfce0345d95ad953e5a4b2  gcc/config/arm/fmp626.md
  2c6206b20ea2631cadbdfaa2019002d1  gcc/config/arm/freebsd.h
  d46e30ed2d47159006a0c4a6dd3bf6ef  gcc/config/arm/fuchsia-elf.h
! 8ae5f29c465e67dcff4684d8563c2163  gcc/config/arm/iterators.md
  63f3c7dd672505a59cbe1c24092c9b34  gcc/config/arm/ldmstm.md
  656971fbf7d46fe2b4389af456f0833b  gcc/config/arm/ldrdstrd.md
  62b22793d212e34e0864abdd03c8fe68  gcc/config/arm/linux-eabi.h
--- 3702,3708 ----
  7ce753afcddfce0345d95ad953e5a4b2  gcc/config/arm/fmp626.md
  2c6206b20ea2631cadbdfaa2019002d1  gcc/config/arm/freebsd.h
  d46e30ed2d47159006a0c4a6dd3bf6ef  gcc/config/arm/fuchsia-elf.h
! cc0cb060037fe999fed31e395eb93902  gcc/config/arm/iterators.md
  63f3c7dd672505a59cbe1c24092c9b34  gcc/config/arm/ldmstm.md
  656971fbf7d46fe2b4389af456f0833b  gcc/config/arm/ldrdstrd.md
  62b22793d212e34e0864abdd03c8fe68  gcc/config/arm/linux-eabi.h
*************** b1bb4aedc65a975961957373495f8b3a  gcc/co
*** 3708,3714 ****
  e432241ef743dc9fad65a3e982e51711  gcc/config/arm/linux-gas.h
  0143017c5054dbb4839079ed89df7fc4  gcc/config/arm/marvell-pj4.md
  5b6e3779ce7193a5b2496230da7b4ef7  gcc/config/arm/mmintrin.h
! 283aa78f37ce3b0e736af5bf469b4e4a  gcc/config/arm/mve.md
  2229898d1056f856ff420db3ff4d0998  gcc/config/arm/neon.md
  f208fab795fa9231cb51c748bd50e7e5  gcc/config/arm/netbsd-eabi.h
  79c1c27fe924ef728f21bd95a8c3ea71  gcc/config/arm/netbsd-elf.h
--- 3710,3716 ----
  e432241ef743dc9fad65a3e982e51711  gcc/config/arm/linux-gas.h
  0143017c5054dbb4839079ed89df7fc4  gcc/config/arm/marvell-pj4.md
  5b6e3779ce7193a5b2496230da7b4ef7  gcc/config/arm/mmintrin.h
! 0590a2d33bb90fbcdd093fea0981c95d  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
*************** dc8e1ff924dd1f2699f60837b792825a  gcc/co
*** 3732,3738 ****
  b6434dfdcd32f4ab54f4e1e867cca4d4  gcc/config/arm/t-symbian
  1484dd700dca665c8ec9c7b42f260359  gcc/config/arm/t-vxworks
  d3a2939d4adfa469cb15075e8bd8e689  gcc/config/arm/thumb1.md
! 65ad814dde3fff785e01b783b85ec5b0  gcc/config/arm/thumb2.md
  1b2a050934935f92fdd15721b5d736ec  gcc/config/arm/types.md
  22e6583951db6a19df7c215758f2ffbf  gcc/config/arm/uclinux-eabi.h
  fbf7c14a192b9763418596c145c89f25  gcc/config/arm/uclinux-elf.h
--- 3734,3740 ----
  b6434dfdcd32f4ab54f4e1e867cca4d4  gcc/config/arm/t-symbian
  1484dd700dca665c8ec9c7b42f260359  gcc/config/arm/t-vxworks
  d3a2939d4adfa469cb15075e8bd8e689  gcc/config/arm/thumb1.md
! 42aa0d5f12338f67a568f890da25dbd9  gcc/config/arm/thumb2.md
  1b2a050934935f92fdd15721b5d736ec  gcc/config/arm/types.md
  22e6583951db6a19df7c215758f2ffbf  gcc/config/arm/uclinux-eabi.h
  fbf7c14a192b9763418596c145c89f25  gcc/config/arm/uclinux-elf.h
*************** eb87a0f1a8725005ea681f0478cbb7f6  gcc/co
*** 3908,3914 ****
  0bd8e2defc45c7f1bbc3502c96d0ab78  gcc/config/dragonfly-stdint.h
  f01fb2b02fd44587cfacf67b0f42dcd0  gcc/config/dragonfly.h
  84ff93439a967e2af5aa03d97487a4e1  gcc/config/dragonfly.opt
! 2d1f27bc790d8994ba813be59ce7072b  gcc/config/dragonfly.opt.urls
  20ed4d40780c62e66161125f4ad1c684  gcc/config/elfos.h
  1bf6aa9e2229fd137683af672b57ab08  gcc/config/epiphany/constraints.md
  e45ad8462e6bd37fd5391b27ae4a226f  gcc/config/epiphany/epiphany-modes.def
--- 3910,3916 ----
  0bd8e2defc45c7f1bbc3502c96d0ab78  gcc/config/dragonfly-stdint.h
  f01fb2b02fd44587cfacf67b0f42dcd0  gcc/config/dragonfly.h
  84ff93439a967e2af5aa03d97487a4e1  gcc/config/dragonfly.opt
! fa845c4f738a01074c524fcb3bdb12fe  gcc/config/dragonfly.opt.urls
  20ed4d40780c62e66161125f4ad1c684  gcc/config/elfos.h
  1bf6aa9e2229fd137683af672b57ab08  gcc/config/epiphany/constraints.md
  e45ad8462e6bd37fd5391b27ae4a226f  gcc/config/epiphany/epiphany-modes.def
*************** d234704e1f2f1fdbee350ff771dcb73a  gcc/co
*** 3941,3947 ****
  47e1d7337d51e8a60ad2c85c3e5e6535  gcc/config/freebsd-stdint.h
  01f8f7c24b5b495ccba4a3dd23f01cc0  gcc/config/freebsd.h
  488e926a3e9b1878001977af8163d08d  gcc/config/freebsd.opt
! b4bfc5fa6c82a78a53970e852b99aded  gcc/config/freebsd.opt.urls
  56e5ea7e466bb0849ea9bb04316c23d4  gcc/config/frv/constraints.md
  798c695efc5ba3661f3fd421f239f79d  gcc/config/frv/frv-asm.h
  504aefe4992dc8ded4a3876f8bae845e  gcc/config/frv/frv-modes.def
--- 3943,3949 ----
  47e1d7337d51e8a60ad2c85c3e5e6535  gcc/config/freebsd-stdint.h
  01f8f7c24b5b495ccba4a3dd23f01cc0  gcc/config/freebsd.h
  488e926a3e9b1878001977af8163d08d  gcc/config/freebsd.opt
! 99cb7233f9a82b54a0075f62b0e068d9  gcc/config/freebsd.opt.urls
  56e5ea7e466bb0849ea9bb04316c23d4  gcc/config/frv/constraints.md
  798c695efc5ba3661f3fd421f239f79d  gcc/config/frv/frv-asm.h
  504aefe4992dc8ded4a3876f8bae845e  gcc/config/frv/frv-modes.def
*************** f616c40e5e05c278aa8a9e801ea6ea91  gcc/co
*** 3987,3996 ****
  686d66a24f66638a6a8dc76ddae3acb6  gcc/config/gcn/gcn.h
  f736fc2e3a86be8105f7e8f77e5460c1  gcc/config/gcn/gcn.md
  ea362cc71f1b9679e105d57822167b51  gcc/config/gcn/gcn.opt
! 6c96a5ccd826ec5a9ddf7ffe7fda572d  gcc/config/gcn/gcn.opt.urls
  6d70e3b6694d21aaf0fc6f1764858c4e  gcc/config/gcn/gen-gcn-device-macros.awk
  0f69ca445a7459fc69ede078e447dbac  gcc/config/gcn/gen-opt-tables.awk
! 8688ea10d62be0da615360f02a547757  gcc/config/gcn/mkoffload.cc
  d6b10bd17eef3ffa35e47afa3e7b730d  gcc/config/gcn/offload.h
  37e26d22dbc6d4a9b4ffa33405bf1bd8  gcc/config/gcn/predicates.md
  3af3e12c81a2c9fdbcea0a9d7411c7bf  gcc/config/gcn/t-gcn-hsa
--- 3989,3998 ----
  686d66a24f66638a6a8dc76ddae3acb6  gcc/config/gcn/gcn.h
  f736fc2e3a86be8105f7e8f77e5460c1  gcc/config/gcn/gcn.md
  ea362cc71f1b9679e105d57822167b51  gcc/config/gcn/gcn.opt
! 8ccb0d3c4d92885b93acb6c012fd4e07  gcc/config/gcn/gcn.opt.urls
  6d70e3b6694d21aaf0fc6f1764858c4e  gcc/config/gcn/gen-gcn-device-macros.awk
  0f69ca445a7459fc69ede078e447dbac  gcc/config/gcn/gen-opt-tables.awk
! c130f738d618b5eda5006ed8bda6f1c8  gcc/config/gcn/mkoffload.cc
  d6b10bd17eef3ffa35e47afa3e7b730d  gcc/config/gcn/offload.h
  37e26d22dbc6d4a9b4ffa33405bf1bd8  gcc/config/gcn/predicates.md
  3af3e12c81a2c9fdbcea0a9d7411c7bf  gcc/config/gcn/t-gcn-hsa
*************** d6b10bd17eef3ffa35e47afa3e7b730d  gcc/co
*** 4000,4006 ****
  2f4783597c98a52f3f28cb32b8d39b5c  gcc/config/gnu-d.cc
  15a45be0f50d8cdd07ba176b7bd5b830  gcc/config/gnu-user.h
  e602557b4e8c89be8ed22b2fc769290f  gcc/config/gnu-user.opt
! 6b439d9b69b8df92af49c7024df0d474  gcc/config/gnu-user.opt.urls
  473c85be539ca77be59f3df05cf50133  gcc/config/gnu.h
  762caed3032d23c497832b0f920ad5df  gcc/config/h8300/addsub.md
  cddc64825ce6e6e92692684251745f9e  gcc/config/h8300/bitfield.md
--- 4002,4008 ----
  2f4783597c98a52f3f28cb32b8d39b5c  gcc/config/gnu-d.cc
  15a45be0f50d8cdd07ba176b7bd5b830  gcc/config/gnu-user.h
  e602557b4e8c89be8ed22b2fc769290f  gcc/config/gnu-user.opt
! d039ad9b715903a97cd9d68a8116fe71  gcc/config/gnu-user.opt.urls
  473c85be539ca77be59f3df05cf50133  gcc/config/gnu.h
  762caed3032d23c497832b0f920ad5df  gcc/config/h8300/addsub.md
  cddc64825ce6e6e92692684251745f9e  gcc/config/h8300/bitfield.md
*************** dae6c9115b5058fd917b309ee79438a6  gcc/co
*** 4043,4057 ****
  6fb8f575d2ba05a77e86b2a4670259bb  gcc/config/hpux11.opt.urls
  615ede3e03ebc06635041469a862accb  gcc/config/i386/adxintrin.h
  21cbb29f86ff25a147e5d677cb9053d1  gcc/config/i386/ammintrin.h
! 0f365c56840eb3944f31396f5b334fae  gcc/config/i386/amxavx512intrin.h
! db371b3bae058228fd1afba4355902d7  gcc/config/i386/amxbf16intrin.h
! 7f1c0051b6d17dab9f258187c7b9cc3e  gcc/config/i386/amxcomplexintrin.h
! e881567a284d0c4c6fd23ecaecaa29f7  gcc/config/i386/amxfp16intrin.h
! 0e0ea58145b6e2eb7763bd3455cea60c  gcc/config/i386/amxfp8intrin.h
! 86643835c40c95bff80d14e5c7a39263  gcc/config/i386/amxint8intrin.h
! 4e8030d88369bd9b30003045c8cef117  gcc/config/i386/amxmovrsintrin.h
! 7627351f7405eceb02c9e7d73da70fa5  gcc/config/i386/amxtf32intrin.h
! 718d242a1b62ceb6aa2c434c663400c4  gcc/config/i386/amxtileintrin.h
  3b3fc29c988798e7f8c7b08acdf20890  gcc/config/i386/amxtransposeintrin.h
  d5344f5586a4fdddcf32cfad79672651  gcc/config/i386/athlon.md
  c7639653fc509c53955783e5c3d3ed63  gcc/config/i386/atom.md
--- 4045,4059 ----
  6fb8f575d2ba05a77e86b2a4670259bb  gcc/config/hpux11.opt.urls
  615ede3e03ebc06635041469a862accb  gcc/config/i386/adxintrin.h
  21cbb29f86ff25a147e5d677cb9053d1  gcc/config/i386/ammintrin.h
! a3713e458fdc94ab5340bc220b4cb9fd  gcc/config/i386/amxavx512intrin.h
! 242785f344b871a4f50c646ba2ec64de  gcc/config/i386/amxbf16intrin.h
! 98ccf45d8bfa7925c152e946c3671c92  gcc/config/i386/amxcomplexintrin.h
! f4f6eae612e36e6933ab2e0b87a9d635  gcc/config/i386/amxfp16intrin.h
! 75b2616569c7394efae050df4767a533  gcc/config/i386/amxfp8intrin.h
! 0ca6308f48d177c1f4d602109530cb32  gcc/config/i386/amxint8intrin.h
! 94de55462035daa95821f5f50b03f94c  gcc/config/i386/amxmovrsintrin.h
! c0d3ca3f62caf30238675b1b8479aadc  gcc/config/i386/amxtf32intrin.h
! 2b98a9bda943e43fedad48abd97e176a  gcc/config/i386/amxtileintrin.h
  3b3fc29c988798e7f8c7b08acdf20890  gcc/config/i386/amxtransposeintrin.h
  d5344f5586a4fdddcf32cfad79672651  gcc/config/i386/athlon.md
  c7639653fc509c53955783e5c3d3ed63  gcc/config/i386/atom.md
*************** d3fb594d11281112ff8d8f304a000c4e  gcc/co
*** 4172,4178 ****
  172dcd61afc5800b61ebb688838d9adc  gcc/config/i386/i386-d.h
  1b2d74cce621225f76c616b18765bf5c  gcc/config/i386/i386-expand.cc
  c9c3969c00808c9b6809fbeab3e4a1d2  gcc/config/i386/i386-expand.h
! fde5fb5a01b2656dc490a5581799a6b2  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
--- 4174,4180 ----
  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
*************** b19c27e8a900f9eeb7d73e2bb4b8d313  gcc/co
*** 4188,4196 ****
  24065393854cd1e08e3285bd707210fe  gcc/config/i386/i386-rust.h
  24c863315a4ba6b94189d6cf5f6a33e2  gcc/config/i386/i386.cc
  532590c62b232e0546b5d8396d44c6b7  gcc/config/i386/i386.h
! 453d40cae07b804f3fe6fe38015c11c8  gcc/config/i386/i386.md
  079c7adc6dcd21f8ccfb4c0135f16460  gcc/config/i386/i386.opt
! ae2f0e6cc1882dbf736469a6378cb3d1  gcc/config/i386/i386.opt.urls
  f22876926ff4a2cb67b105ac266c72ea  gcc/config/i386/i386elf.h
  12088706f0584b21b2bf165c3cde88e8  gcc/config/i386/ia32intrin.h
  116503ecbb821bb13293049d85a641f9  gcc/config/i386/iamcu.h
--- 4190,4198 ----
  24065393854cd1e08e3285bd707210fe  gcc/config/i386/i386-rust.h
  24c863315a4ba6b94189d6cf5f6a33e2  gcc/config/i386/i386.cc
  532590c62b232e0546b5d8396d44c6b7  gcc/config/i386/i386.h
! c9cdf3fb4379ad69719783e0dfc2bb3a  gcc/config/i386/i386.md
  079c7adc6dcd21f8ccfb4c0135f16460  gcc/config/i386/i386.opt
! 20087f4ff689dc4463c278f4b1ac9e4c  gcc/config/i386/i386.opt.urls
  f22876926ff4a2cb67b105ac266c72ea  gcc/config/i386/i386elf.h
  12088706f0584b21b2bf165c3cde88e8  gcc/config/i386/ia32intrin.h
  116503ecbb821bb13293049d85a641f9  gcc/config/i386/iamcu.h
*************** de4e89bc042c6bc7eb093bda5d33a266  gcc/co
*** 4250,4256 ****
  8de7167e1276b863c6acf2d3e926bc67  gcc/config/i386/sm3intrin.h
  380f2e50c7d803059b0e7617da00460f  gcc/config/i386/sm4intrin.h
  a24296639492577352dd1309b136bc9a  gcc/config/i386/smmintrin.h
! f98c4d94bf04187a2905e9f4ce7d589b  gcc/config/i386/sol2.h
  c21e362d1f99a6ed46b2e1e6cdc77022  gcc/config/i386/sse.md
  7c6ff828c11c2892168a2e450559dcb6  gcc/config/i386/ssemath.h
  7ada9f54207701e1d29fd03ea990e163  gcc/config/i386/stringop.def
--- 4252,4258 ----
  8de7167e1276b863c6acf2d3e926bc67  gcc/config/i386/sm3intrin.h
  380f2e50c7d803059b0e7617da00460f  gcc/config/i386/sm4intrin.h
  a24296639492577352dd1309b136bc9a  gcc/config/i386/smmintrin.h
! f31e5ef6c122c98b6e22c30df4706546  gcc/config/i386/sol2.h
  c21e362d1f99a6ed46b2e1e6cdc77022  gcc/config/i386/sse.md
  7c6ff828c11c2892168a2e450559dcb6  gcc/config/i386/ssemath.h
  7ada9f54207701e1d29fd03ea990e163  gcc/config/i386/stringop.def
*************** da188d4272efc7354911d8ff108c2f4c  gcc/co
*** 4390,4407 ****
  713faf5e5c45f844fbc9ad5551db1456  gcc/config/loongarch/constraints.md
  c34979082425d78409c769a25389d804  gcc/config/loongarch/elf.h
  8b1c9c004fdbc7f460a64bda0b70f4d6  gcc/config/loongarch/generic.md
! a61fbfd9ac48f94f17ccd936a484b2c8  gcc/config/loongarch/genopts/gen-evolution.awk
! 3f45bbd3523fe62285eaea00e6ca33a5  gcc/config/loongarch/genopts/genstr.sh
  4dc5332a8742afccaccecc9435f3a90a  gcc/config/loongarch/genopts/isa-evolution.in
  f53279d5b7e936d4ca79a38f0268b4cd  gcc/config/loongarch/genopts/loongarch-strings
  e3b42a852449963bd9c243b0491ada0c  gcc/config/loongarch/genopts/loongarch.opt.in
  dfcc88ca848e0510d6a048cef812a984  gcc/config/loongarch/gnu-user.h
  0214c19eeeeb90d46d358333d5381814  gcc/config/loongarch/la464.md
  2da06c6340275c1c0670ab82a7252f77  gcc/config/loongarch/larchintrin.h
! 1d5b333a725a85380fab7d91d6a26bbf  gcc/config/loongarch/lasx.md
  c10d06d896b117c45d2d741d1550a990  gcc/config/loongarch/lasxintrin.h
! a11605122c3f864d3527acf829c67179  gcc/config/loongarch/linux.h
! 2278f243d08dd119ac7b1db12bb9c344  gcc/config/loongarch/loongarch-builtins.cc
  1619b93765ac0aa7dc56d3084e40d0cc  gcc/config/loongarch/loongarch-c.cc
  59c96fed2f7df8b17e509bfec3c4edcb  gcc/config/loongarch/loongarch-cpu.cc
  0857d194516733f19458bb44bfdeabc4  gcc/config/loongarch/loongarch-cpu.h
--- 4392,4409 ----
  713faf5e5c45f844fbc9ad5551db1456  gcc/config/loongarch/constraints.md
  c34979082425d78409c769a25389d804  gcc/config/loongarch/elf.h
  8b1c9c004fdbc7f460a64bda0b70f4d6  gcc/config/loongarch/generic.md
! 8a136345368965009ca46fa36dae9d99  gcc/config/loongarch/genopts/gen-evolution.awk
! a49b22e81cecc35cd2b78db104bf0fa4  gcc/config/loongarch/genopts/genstr.sh
  4dc5332a8742afccaccecc9435f3a90a  gcc/config/loongarch/genopts/isa-evolution.in
  f53279d5b7e936d4ca79a38f0268b4cd  gcc/config/loongarch/genopts/loongarch-strings
  e3b42a852449963bd9c243b0491ada0c  gcc/config/loongarch/genopts/loongarch.opt.in
  dfcc88ca848e0510d6a048cef812a984  gcc/config/loongarch/gnu-user.h
  0214c19eeeeb90d46d358333d5381814  gcc/config/loongarch/la464.md
  2da06c6340275c1c0670ab82a7252f77  gcc/config/loongarch/larchintrin.h
! 6316064b23b82e6f2b1b202b2f41740b  gcc/config/loongarch/lasx.md
  c10d06d896b117c45d2d741d1550a990  gcc/config/loongarch/lasxintrin.h
! 6fd190fde499f379bf158f471cde9693  gcc/config/loongarch/linux.h
! 32b1458773a3d0478a1fb7d089ff8e9b  gcc/config/loongarch/loongarch-builtins.cc
  1619b93765ac0aa7dc56d3084e40d0cc  gcc/config/loongarch/loongarch-c.cc
  59c96fed2f7df8b17e509bfec3c4edcb  gcc/config/loongarch/loongarch-cpu.cc
  0857d194516733f19458bb44bfdeabc4  gcc/config/loongarch/loongarch-cpu.h
*************** b9324da4da2e361b6f6b42ab32c89139  gcc/co
*** 4412,4440 ****
  5155922cf688d9073a6497f7def3c933  gcc/config/loongarch/loongarch-def.h
  4a2c4b8277bf78c873773752258854de  gcc/config/loongarch/loongarch-driver.cc
  9034667d3a99adb6488a0cf70a9c572c  gcc/config/loongarch/loongarch-driver.h
  4f8a9dd15d7b6450b31b1ce0b62e5438  gcc/config/loongarch/loongarch-evolution.cc
  23b0fa524fdc462c6fc9647fa1e71394  gcc/config/loongarch/loongarch-evolution.h
  a02aacfb9805dd0efab3f6f9e96176da  gcc/config/loongarch/loongarch-ftypes.def
  d7cf3f5e6d8c9402706533b8bbd7093d  gcc/config/loongarch/loongarch-modes.def
  8be7856de731f309106734abd0f1f195  gcc/config/loongarch/loongarch-opts.cc
! 084ba7e2ad2ac804b5f596bca0df06b3  gcc/config/loongarch/loongarch-opts.h
! 4a6ba66f33f4b90dafa203e9252cedcf  gcc/config/loongarch/loongarch-protos.h
  c72c4d71f42573934ede3a3fe4e132b1  gcc/config/loongarch/loongarch-str.h
! a8cd9a4a3d712802475e91e0ec9a3274  gcc/config/loongarch/loongarch-target-attr.cc
  f539c2da7e8d7a3ef7c741bceee19eed  gcc/config/loongarch/loongarch-tune.h
! 4fc7f12d4abc30176d2e774ea0d2837a  gcc/config/loongarch/loongarch.cc
! d4fcc746efc8475a01557c5c09179c9a  gcc/config/loongarch/loongarch.h
  29489d6183ff2a8fdfe0c316596f774e  gcc/config/loongarch/loongarch.md
  8f1046a4d0739e3dafbb7e4db3055397  gcc/config/loongarch/loongarch.opt
  e5595d4b88b68429f6fe778dc601f49e  gcc/config/loongarch/loongarch.opt.urls
  33106e72929bb187a7c4f12d69d1f0bb  gcc/config/loongarch/lsx.md
  429434e5f1e9f9afc839f4409102d5ea  gcc/config/loongarch/lsxintrin.h
  5a232a75001e3db7ee3e491afdfae629  gcc/config/loongarch/musl.h
! a6649c21c6e9e1a67cfe549375fbef96  gcc/config/loongarch/predicates.md
  f95be1657846ff90106e8941fbdc72de  gcc/config/loongarch/simd.md
! 0e1638a9f434cbb353f1b31e3dc6683b  gcc/config/loongarch/sync.md
  e2aad9f2fd1ee2a4668948f381da109c  gcc/config/loongarch/t-linux
! 4143126e9ad08f12c1a4555c0f87948d  gcc/config/loongarch/t-loongarch
  b84e97ccf92009e96031fc2edb92dde5  gcc/config/loongarch/t-multilib
  eb87423a8a7ddf65f83a151936c56485  gcc/config/lynx.h
  40aa671ada85710196f7ba9db2c5f544  gcc/config/lynx.opt
--- 4414,4443 ----
  5155922cf688d9073a6497f7def3c933  gcc/config/loongarch/loongarch-def.h
  4a2c4b8277bf78c873773752258854de  gcc/config/loongarch/loongarch-driver.cc
  9034667d3a99adb6488a0cf70a9c572c  gcc/config/loongarch/loongarch-driver.h
+ 62c942a420b869823c67a24405a6f6ac  gcc/config/loongarch/loongarch-evol-attr.def
  4f8a9dd15d7b6450b31b1ce0b62e5438  gcc/config/loongarch/loongarch-evolution.cc
  23b0fa524fdc462c6fc9647fa1e71394  gcc/config/loongarch/loongarch-evolution.h
  a02aacfb9805dd0efab3f6f9e96176da  gcc/config/loongarch/loongarch-ftypes.def
  d7cf3f5e6d8c9402706533b8bbd7093d  gcc/config/loongarch/loongarch-modes.def
  8be7856de731f309106734abd0f1f195  gcc/config/loongarch/loongarch-opts.cc
! 05b587ad3985a07ac3c23bf92ecf6155  gcc/config/loongarch/loongarch-opts.h
! 2a6772ff90d79dd61bad167203a373bb  gcc/config/loongarch/loongarch-protos.h
  c72c4d71f42573934ede3a3fe4e132b1  gcc/config/loongarch/loongarch-str.h
! 6ffb969d44f9d52731fdbc6bca845054  gcc/config/loongarch/loongarch-target-attr.cc
  f539c2da7e8d7a3ef7c741bceee19eed  gcc/config/loongarch/loongarch-tune.h
! 0e72ea68e110ac577fc4fc41c028610d  gcc/config/loongarch/loongarch.cc
! f495bb3a160f92418aeb52557dfbf694  gcc/config/loongarch/loongarch.h
  29489d6183ff2a8fdfe0c316596f774e  gcc/config/loongarch/loongarch.md
  8f1046a4d0739e3dafbb7e4db3055397  gcc/config/loongarch/loongarch.opt
  e5595d4b88b68429f6fe778dc601f49e  gcc/config/loongarch/loongarch.opt.urls
  33106e72929bb187a7c4f12d69d1f0bb  gcc/config/loongarch/lsx.md
  429434e5f1e9f9afc839f4409102d5ea  gcc/config/loongarch/lsxintrin.h
  5a232a75001e3db7ee3e491afdfae629  gcc/config/loongarch/musl.h
! e313ac39a9e3bdbe30b9cee72b917ed1  gcc/config/loongarch/predicates.md
  f95be1657846ff90106e8941fbdc72de  gcc/config/loongarch/simd.md
! fded5805e6a27c8c4b3a9b1967da6d31  gcc/config/loongarch/sync.md
  e2aad9f2fd1ee2a4668948f381da109c  gcc/config/loongarch/t-linux
! d729927d6d167b8a824eae7e6db4f32b  gcc/config/loongarch/t-loongarch
  b84e97ccf92009e96031fc2edb92dde5  gcc/config/loongarch/t-multilib
  eb87423a8a7ddf65f83a151936c56485  gcc/config/lynx.h
  40aa671ada85710196f7ba9db2c5f544  gcc/config/lynx.opt
*************** ecc43d433158dff36044d7980b74eaea  gcc/co
*** 4876,4889 ****
  47c6023154662c1550cf7c2c64e57529  gcc/config/pru/pru-passes.cc
  b51b4aa4315b4c5a6b13b61d16cbdc9b  gcc/config/pru/pru-passes.def
  d8610d2a280d5d48126151a545999a40  gcc/config/pru/pru-pragma.cc
! d85b651ce6063bd29d1705d8196631e6  gcc/config/pru/pru-protos.h
! 26874fed3e832a5cc22d54d5018705dc  gcc/config/pru/pru.cc
! 69a8d3f1d3a56cc431a0a0283ffe8285  gcc/config/pru/pru.h
! c02c28dcba5af34ad86e26f316044b17  gcc/config/pru/pru.md
  0763d0945dbf14ae8f27f2768c3bab97  gcc/config/pru/pru.opt
  2c62017af35136c78e62ba082c27ada7  gcc/config/pru/pru.opt.urls
  45c7ab42a352a571bdea3ba740be8f5d  gcc/config/pru/t-multilib
  540013c309ceb3efb2b16d728b1fc726  gcc/config/pru/t-pru
  2eae3b21711e4e2497687e31b9045065  gcc/config/riscv/andes-vector-builtins-bases.cc
  181d8549717178cb0634c05f85c74374  gcc/config/riscv/andes-vector-builtins-bases.h
  1ef2b6b083b0eb40401bf59b6de22ab0  gcc/config/riscv/andes-vector-builtins-functions.def
--- 4879,4893 ----
  47c6023154662c1550cf7c2c64e57529  gcc/config/pru/pru-passes.cc
  b51b4aa4315b4c5a6b13b61d16cbdc9b  gcc/config/pru/pru-passes.def
  d8610d2a280d5d48126151a545999a40  gcc/config/pru/pru-pragma.cc
! e11789b1719613f722169a913a79a079  gcc/config/pru/pru-protos.h
! bd3c6b6399d766dc28af2c04799cd0e0  gcc/config/pru/pru.cc
! aa885301804f609c6898553a254e500c  gcc/config/pru/pru.h
! 7419f50dd8e1b76ecf74cbd4b325e3b3  gcc/config/pru/pru.md
  0763d0945dbf14ae8f27f2768c3bab97  gcc/config/pru/pru.opt
  2c62017af35136c78e62ba082c27ada7  gcc/config/pru/pru.opt.urls
  45c7ab42a352a571bdea3ba740be8f5d  gcc/config/pru/t-multilib
  540013c309ceb3efb2b16d728b1fc726  gcc/config/pru/t-pru
+ 91ce15bd2231fd737e2e8eb9fb71ff85  gcc/config/riscv/andes-25-series.md
  2eae3b21711e4e2497687e31b9045065  gcc/config/riscv/andes-vector-builtins-bases.cc
  181d8549717178cb0634c05f85c74374  gcc/config/riscv/andes-vector-builtins-bases.h
  1ef2b6b083b0eb40401bf59b6de22ab0  gcc/config/riscv/andes-vector-builtins-functions.def
*************** d4306030a8879ce9aa1e6cc18aff56eb  gcc/co
*** 4898,4904 ****
  3d4917c0a2efee97aaca242060652e02  gcc/config/riscv/constraints.md
  4e0968dc35562b151fd162778542718f  gcc/config/riscv/corev.def
  d404c19d5b1a2aca0a73917bb692bd96  gcc/config/riscv/corev.md
! a8964e5c7fad78fa42fc5b8f0dc2e91b  gcc/config/riscv/crypto.md
  70cc6640001ff23ac9b647ea784ffb2b  gcc/config/riscv/elf.h
  9a5e3c714ef42f079425c3c0af8184dc  gcc/config/riscv/freebsd.h
  1bc5c74b1340281b5b6ce05eed2d74fd  gcc/config/riscv/gen-riscv-ext-opt.cc
--- 4902,4908 ----
  3d4917c0a2efee97aaca242060652e02  gcc/config/riscv/constraints.md
  4e0968dc35562b151fd162778542718f  gcc/config/riscv/corev.def
  d404c19d5b1a2aca0a73917bb692bd96  gcc/config/riscv/corev.md
! c530e27e7ff7458093cb72dcea6d26a8  gcc/config/riscv/crypto.md
  70cc6640001ff23ac9b647ea784ffb2b  gcc/config/riscv/elf.h
  9a5e3c714ef42f079425c3c0af8184dc  gcc/config/riscv/freebsd.h
  1bc5c74b1340281b5b6ce05eed2d74fd  gcc/config/riscv/gen-riscv-ext-opt.cc
*************** a3d3fa9142d4e2ed34ead146941c574a  gcc/co
*** 4924,4930 ****
  e54a2d33c6fb9bb0381889dad6fa71d8  gcc/config/riscv/riscv-builtins.cc
  e282802a520f3069e108ad136bd6e2fa  gcc/config/riscv/riscv-c.cc
  3b7012a7d47b9aaf163e890d3e29013e  gcc/config/riscv/riscv-cmo.def
! fe12c74b3dcd4c8bd1c38b5c00a31c15  gcc/config/riscv/riscv-cores.def
  173996678a5bf2b1b40e30fe260109b4  gcc/config/riscv/riscv-d.cc
  790bd2a5355776ab5ebf4c7814489760  gcc/config/riscv/riscv-d.h
  5d018c4d2b91ca8e5745a3eb3b3b17cd  gcc/config/riscv/riscv-ext-andes.def
--- 4928,4934 ----
  e54a2d33c6fb9bb0381889dad6fa71d8  gcc/config/riscv/riscv-builtins.cc
  e282802a520f3069e108ad136bd6e2fa  gcc/config/riscv/riscv-c.cc
  3b7012a7d47b9aaf163e890d3e29013e  gcc/config/riscv/riscv-cmo.def
! cc8c7204a0bd3cebb4d7968ec7f34f5a  gcc/config/riscv/riscv-cores.def
  173996678a5bf2b1b40e30fe260109b4  gcc/config/riscv/riscv-d.cc
  790bd2a5355776ab5ebf4c7814489760  gcc/config/riscv/riscv-d.h
  5d018c4d2b91ca8e5745a3eb3b3b17cd  gcc/config/riscv/riscv-ext-andes.def
*************** c9dc9c3c85e48c375f03e9c68511f6d8  gcc/co
*** 4939,4945 ****
  1b0b6b632f747d9387ef25821e8673b4  gcc/config/riscv/riscv-feature-bits.h
  cf70b07b239c5bc3091fdab32e4d5d09  gcc/config/riscv/riscv-ftypes.def
  b1bc6d82a24b7b0e658a43956a37419c  gcc/config/riscv/riscv-modes.def
! 9638ea683767d52ade2e23fff486b0a7  gcc/config/riscv/riscv-opts.h
  c5393897179939c1b5af9631e66d78a8  gcc/config/riscv/riscv-passes.def
  121d0828b2622389b84f15f8664c88d0  gcc/config/riscv/riscv-profiles.def
  30f61243ed67ec80f2fb05a50475bd94  gcc/config/riscv/riscv-protos.h
--- 4943,4949 ----
  1b0b6b632f747d9387ef25821e8673b4  gcc/config/riscv/riscv-feature-bits.h
  cf70b07b239c5bc3091fdab32e4d5d09  gcc/config/riscv/riscv-ftypes.def
  b1bc6d82a24b7b0e658a43956a37419c  gcc/config/riscv/riscv-modes.def
! d6820fcc8d5b401f8812a79231532506  gcc/config/riscv/riscv-opts.h
  c5393897179939c1b5af9631e66d78a8  gcc/config/riscv/riscv-passes.def
  121d0828b2622389b84f15f8664c88d0  gcc/config/riscv/riscv-profiles.def
  30f61243ed67ec80f2fb05a50475bd94  gcc/config/riscv/riscv-protos.h
*************** da4e034d23a8f2754b1dfce0122f286e  gcc/co
*** 4949,4955 ****
  62b31689063eeeca8f0e7ae25da92d0a  gcc/config/riscv/riscv-sr.cc
  f565a42da3474d73faf1ea727e2d7dcb  gcc/config/riscv/riscv-string.cc
  645c73713edeee965f139d7c0825f76d  gcc/config/riscv/riscv-subset.h
! 94d10cea518da6cdd8058f2f6f5f4290  gcc/config/riscv/riscv-target-attr.cc
  825f46ee578eef7b2d810af106cd3429  gcc/config/riscv/riscv-v.cc
  0d419e9df116fed7ce6e0ae15131417e  gcc/config/riscv/riscv-v.h
  c5f3161dedd668dfb126ffb191cfb236  gcc/config/riscv/riscv-vect-permconst.cc
--- 4953,4959 ----
  62b31689063eeeca8f0e7ae25da92d0a  gcc/config/riscv/riscv-sr.cc
  f565a42da3474d73faf1ea727e2d7dcb  gcc/config/riscv/riscv-string.cc
  645c73713edeee965f139d7c0825f76d  gcc/config/riscv/riscv-subset.h
! 728dc8257d59a540cd2c84220df2d596  gcc/config/riscv/riscv-target-attr.cc
  825f46ee578eef7b2d810af106cd3429  gcc/config/riscv/riscv-v.cc
  0d419e9df116fed7ce6e0ae15131417e  gcc/config/riscv/riscv-v.h
  c5f3161dedd668dfb126ffb191cfb236  gcc/config/riscv/riscv-vect-permconst.cc
*************** f51037a9e437f8e9ce7215b2da5ad4e2  gcc/co
*** 4968,4976 ****
  3d83e85c22d3c9da7a43e8a19a5c8232  gcc/config/riscv/riscv-vsetvl.cc
  d120ed6eb2847b636271b3a1ef82ecbf  gcc/config/riscv/riscv-vsetvl.def
  7082a18dbfc574d47bf71f4d50dd30f9  gcc/config/riscv/riscv-zicfilp.cc
! 3341e42dad056ac89aa26a80bd613a44  gcc/config/riscv/riscv.cc
  4b6b168bb5f0a493f2a81f63dff567cf  gcc/config/riscv/riscv.h
! 093fcb090270c744be4562e2e7a99b57  gcc/config/riscv/riscv.md
  fec1c87bba727131a45d4ec4a9ae5490  gcc/config/riscv/riscv.opt
  d1d34490d8b53ec20d70ed9e2e56e3ab  gcc/config/riscv/riscv.opt.urls
  374e3c204946cff8c4be2bcad6641830  gcc/config/riscv/riscv_bitmanip.h
--- 4972,4980 ----
  3d83e85c22d3c9da7a43e8a19a5c8232  gcc/config/riscv/riscv-vsetvl.cc
  d120ed6eb2847b636271b3a1ef82ecbf  gcc/config/riscv/riscv-vsetvl.def
  7082a18dbfc574d47bf71f4d50dd30f9  gcc/config/riscv/riscv-zicfilp.cc
! 589c13f7f1a52d4d3e077a540a898d0b  gcc/config/riscv/riscv.cc
  4b6b168bb5f0a493f2a81f63dff567cf  gcc/config/riscv/riscv.h
! bee3af21fb73cd1fcdd15ce96d1c6775  gcc/config/riscv/riscv.md
  fec1c87bba727131a45d4ec4a9ae5490  gcc/config/riscv/riscv.opt
  d1d34490d8b53ec20d70ed9e2e56e3ab  gcc/config/riscv/riscv.opt.urls
  374e3c204946cff8c4be2bcad6641830  gcc/config/riscv/riscv_bitmanip.h
*************** e83086f984717f1099ceeba6ce6bfb23  gcc/co
*** 4989,4995 ****
  b5fb046770f7e60fc485d6092c296c38  gcc/config/riscv/sifive_vector.h
  faca69fa18f3f779cd3ee4d6a53e6193  gcc/config/riscv/sync-rvwmo.md
  4dff560d8961c6dd9b4dd18c668c629e  gcc/config/riscv/sync-ztso.md
! ddc5908d7c97ef07246585fb7a8aeed5  gcc/config/riscv/sync.md
  1c27821991689abdaa7a908a0cc8dfa4  gcc/config/riscv/t-elf-multilib
  381cb38e167feed84dad697fce89cabd  gcc/config/riscv/t-linux
  1ed181a166b1d0e206c4a4e0024cce2a  gcc/config/riscv/t-linux-multilib
--- 4993,4999 ----
  b5fb046770f7e60fc485d6092c296c38  gcc/config/riscv/sifive_vector.h
  faca69fa18f3f779cd3ee4d6a53e6193  gcc/config/riscv/sync-rvwmo.md
  4dff560d8961c6dd9b4dd18c668c629e  gcc/config/riscv/sync-ztso.md
! e99034efee42fab0266bbd7690bd92db  gcc/config/riscv/sync.md
  1c27821991689abdaa7a908a0cc8dfa4  gcc/config/riscv/t-elf-multilib
  381cb38e167feed84dad697fce89cabd  gcc/config/riscv/t-linux
  1ed181a166b1d0e206c4a4e0024cce2a  gcc/config/riscv/t-linux-multilib
*************** fe35fbeb73ee590ad5588ef343ec0966  gcc/co
*** 5231,5244 ****
  b0ca9ea2b644ed03999193b5d9198f22  gcc/config/s390/s390-d.cc
  d7112093049d4abbc421609d032b7358  gcc/config/s390/s390-d.h
  107e065c4a74bb968d44f38ee30d0698  gcc/config/s390/s390-modes.def
! 6fdfe66fdde3f81b83dc16c27ac7df3f  gcc/config/s390/s390-opts.h
  87bca0c72260bdf7b32cbe797e607999  gcc/config/s390/s390-passes.def
  b6426b7457d4617875547be76bb5112d  gcc/config/s390/s390-protos.h
  18097b45b976fccdfcd72a147857ac1b  gcc/config/s390/s390.cc
! bbb55edbc0d661f963a9337be09039e2  gcc/config/s390/s390.h
! 96a4f00a37aec54de5beb71bdfa3967a  gcc/config/s390/s390.md
! fa4475320c7a3767bf9accfa736efcc6  gcc/config/s390/s390.opt
! a70af895ec82511886ce63dc841e63e1  gcc/config/s390/s390.opt.urls
  b9ecea5f97b2e15b60d770050a07f0d1  gcc/config/s390/s390intrin.h
  ae2250a16e4a3a631a5667f95a21e560  gcc/config/s390/s390x.h
  917857ccaf1e3588432fb2544d87838b  gcc/config/s390/subst.md
--- 5235,5248 ----
  b0ca9ea2b644ed03999193b5d9198f22  gcc/config/s390/s390-d.cc
  d7112093049d4abbc421609d032b7358  gcc/config/s390/s390-d.h
  107e065c4a74bb968d44f38ee30d0698  gcc/config/s390/s390-modes.def
! 724b9c8075459b5c23142704c2ba1865  gcc/config/s390/s390-opts.h
  87bca0c72260bdf7b32cbe797e607999  gcc/config/s390/s390-passes.def
  b6426b7457d4617875547be76bb5112d  gcc/config/s390/s390-protos.h
  18097b45b976fccdfcd72a147857ac1b  gcc/config/s390/s390.cc
! fedf0be07777b765b244a82ecf4fe421  gcc/config/s390/s390.h
! def1eabaa50c31445465c2f80ad807fe  gcc/config/s390/s390.md
! 2b0ec6eba7d16cee640146cd31989c99  gcc/config/s390/s390.opt
! b2cac6c853bd6490fee21136c20205a3  gcc/config/s390/s390.opt.urls
  b9ecea5f97b2e15b60d770050a07f0d1  gcc/config/s390/s390intrin.h
  ae2250a16e4a3a631a5667f95a21e560  gcc/config/s390/s390x.h
  917857ccaf1e3588432fb2544d87838b  gcc/config/s390/subst.md
*************** e580c199d31125b230bb2c433094bc3e  gcc/co
*** 5299,5305 ****
  f981246401dc02795a6f58eccb1240a8  gcc/config/sol2-rust.cc
  363aa40b2d2145d97c2b3b23b09d3ed3  gcc/config/sol2-stubs.cc
  a1b33a7b9e5a91f84a66b4e23338c3e1  gcc/config/sol2.cc
! 9c7621492d6ac1dfcccd31b8e7251290  gcc/config/sol2.h
  4796428cc640a3b87b8371614301a450  gcc/config/sol2.opt
  c9d3baaa833c42e5184e73236cc13b0e  gcc/config/sol2.opt.urls
  c12eeb9c89d82c905c55fe4b468fd9f8  gcc/config/sparc/biarch64.h
--- 5303,5309 ----
  f981246401dc02795a6f58eccb1240a8  gcc/config/sol2-rust.cc
  363aa40b2d2145d97c2b3b23b09d3ed3  gcc/config/sol2-stubs.cc
  a1b33a7b9e5a91f84a66b4e23338c3e1  gcc/config/sol2.cc
! 9206127cf079cbe3e3f753a2f351a226  gcc/config/sol2.h
  4796428cc640a3b87b8371614301a450  gcc/config/sol2.opt
  c9d3baaa833c42e5184e73236cc13b0e  gcc/config/sol2.opt.urls
  c12eeb9c89d82c905c55fe4b468fd9f8  gcc/config/sparc/biarch64.h
*************** ecbdfd983044f47fdfdcfd033969d564  gcc/co
*** 5325,5331 ****
  8715ec6c36122d3d59165af3ddc760ae  gcc/config/sparc/openbsd64.h
  a45c575fa02674cf0084efc660f20677  gcc/config/sparc/predicates.md
  e1394032b1fec7cdc6749467afc54d4a  gcc/config/sparc/rtemself.h
! 29370a65606fc9b84ede344281394f7b  gcc/config/sparc/sol2.h
  bf8a2f1403e13fc9157e782582c7d9b3  gcc/config/sparc/sp-elf.h
  5c39743d5de0cb72c3040a228ad6447d  gcc/config/sparc/sp64-elf.h
  e8ca4f5ac0c8f9928a51a9a82bf0480b  gcc/config/sparc/sparc-c.cc
--- 5329,5335 ----
  8715ec6c36122d3d59165af3ddc760ae  gcc/config/sparc/openbsd64.h
  a45c575fa02674cf0084efc660f20677  gcc/config/sparc/predicates.md
  e1394032b1fec7cdc6749467afc54d4a  gcc/config/sparc/rtemself.h
! dbaacf0e953709530c9cdf0affe2b6b2  gcc/config/sparc/sol2.h
  bf8a2f1403e13fc9157e782582c7d9b3  gcc/config/sparc/sp-elf.h
  5c39743d5de0cb72c3040a228ad6447d  gcc/config/sparc/sp64-elf.h
  e8ca4f5ac0c8f9928a51a9a82bf0480b  gcc/config/sparc/sparc-c.cc
*************** f6433daf40a59d3c4d9060ca22e30641  gcc/co
*** 5470,5475 ****
--- 5474,5480 ----
  36a893b52ae4d79dd9eb41107ead34be  gcc/config/vxworks/_vxworks-versions.h
  2c7fb7482d87758a9305ce4fec4c94ea  gcc/config/vxworks/_yvals-wrapper.h
  83f08d69839ac4c7dc87a99be6c69a2b  gcc/config/vxworks/_yvals.h
+ cb5431ce4d1c939927f68c86f316dcde  gcc/config/vxworks/base/b_NULL.h
  9e122a12d3e14f20967d135228bf88dc  gcc/config/vxworks/complex.h
  49b7fa25b0fb42a6ae7a81eddfed84cf  gcc/config/vxworks/inttypes.h
  4e93f0754151b93c5a74975e7d3cc3b1  gcc/config/vxworks/math.h
*************** f154c7dc9175c4e8204205bb4fbd2cbc  gcc/co
*** 5504,5511 ****
  0e227e351d2efea226ca8c249e52aff3  gcc/config/xtensa/xtensa.md
  f0452ea712955ce21c9c149136850780  gcc/config/xtensa/xtensa.opt
  db57d7603312357e8c0cfb21c32353d1  gcc/config/xtensa/xtensa.opt.urls
! 25604a2484bc0d00e9d4b9ee426cc5b3  gcc/configure
! 83847d495eef6221d68f4511930e4956  gcc/configure.ac
  ec3aa966ca3fe9c6f84d4378160541b6  gcc/context.cc
  d1bde52b8dee0c0c5506d7e320b1bb61  gcc/context.h
  a9c3cddee4e237141062720b72fe38cd  gcc/convert.cc
--- 5509,5516 ----
  0e227e351d2efea226ca8c249e52aff3  gcc/config/xtensa/xtensa.md
  f0452ea712955ce21c9c149136850780  gcc/config/xtensa/xtensa.opt
  db57d7603312357e8c0cfb21c32353d1  gcc/config/xtensa/xtensa.opt.urls
! 06125d156a4d3a438f89782808c5a468  gcc/configure
! b1011b75f3b49cd3b3b1b41d40633ecb  gcc/configure.ac
  ec3aa966ca3fe9c6f84d4378160541b6  gcc/context.cc
  d1bde52b8dee0c0c5506d7e320b1bb61  gcc/context.h
  a9c3cddee4e237141062720b72fe38cd  gcc/convert.cc
*************** a9c3cddee4e237141062720b72fe38cd  gcc/co
*** 5515,5521 ****
  5d31df44fc0a5b17beb74ce0ff38e214  gcc/coroutine-passes.cc
  02796caeaa2f14f72dc3c9c23cc97dfc  gcc/coverage.cc
  722fb5fda78e55c5af5da72cad78751f  gcc/coverage.h
! 948ce4c70fc54da301fbaf6a281bb40d  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
--- 5520,5526 ----
  5d31df44fc0a5b17beb74ce0ff38e214  gcc/coroutine-passes.cc
  02796caeaa2f14f72dc3c9c23cc97dfc  gcc/coverage.cc
  722fb5fda78e55c5af5da72cad78751f  gcc/coverage.h
! dfb7c9a08f5a31725b39f78fa5e79e4f  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
*************** bcf7c5d02934e40f17edeb18d58c4d4d  gcc/cp
*** 5551,5563 ****
  c1c7801b9b0f379e702a4f6cb83972e7  gcc/cp/ChangeLog.ptr
  9aa3cd9f75c785de9f51446e3f295515  gcc/cp/ChangeLog.tree-ssa
  b4ef117247d06b2cf19a0e42dc19459c  gcc/cp/Make-lang.in
! 0621b9fb358f60661d55b20441d48964  gcc/cp/call.cc
  fce8de27014c109814b3f69be6a5d4f6  gcc/cp/cfns.gperf
  68fc21d4889b1c70ccf89747b98b1fb4  gcc/cp/cfns.h
  a096f968454d0245d006f9f559a56a08  gcc/cp/class.cc
  ee3fb2cc9b9557d3895f527353160bd4  gcc/cp/config-lang.in
  f9ea0c3919634f5f4d1d47a9251e02e7  gcc/cp/constexpr.cc
! b6f021cb3f469aaa95bfb66d47e14b52  gcc/cp/constraint.cc
  b4452de3b42a36f42cdd92b905d201b6  gcc/cp/contracts.cc
  e995f4adf7a857b715c0534a24556d3b  gcc/cp/contracts.h
  de31e99c416f73448d9f45f50a7d4823  gcc/cp/coroutines.cc
--- 5556,5568 ----
  c1c7801b9b0f379e702a4f6cb83972e7  gcc/cp/ChangeLog.ptr
  9aa3cd9f75c785de9f51446e3f295515  gcc/cp/ChangeLog.tree-ssa
  b4ef117247d06b2cf19a0e42dc19459c  gcc/cp/Make-lang.in
! 5b5a65ce43883152bc3f3507d5294bba  gcc/cp/call.cc
  fce8de27014c109814b3f69be6a5d4f6  gcc/cp/cfns.gperf
  68fc21d4889b1c70ccf89747b98b1fb4  gcc/cp/cfns.h
  a096f968454d0245d006f9f559a56a08  gcc/cp/class.cc
  ee3fb2cc9b9557d3895f527353160bd4  gcc/cp/config-lang.in
  f9ea0c3919634f5f4d1d47a9251e02e7  gcc/cp/constexpr.cc
! cb52729a59ffce57487c8b275fa5eea1  gcc/cp/constraint.cc
  b4452de3b42a36f42cdd92b905d201b6  gcc/cp/contracts.cc
  e995f4adf7a857b715c0534a24556d3b  gcc/cp/contracts.h
  de31e99c416f73448d9f45f50a7d4823  gcc/cp/coroutines.cc
*************** de31e99c416f73448d9f45f50a7d4823  gcc/cp
*** 5567,5617 ****
  0083c32822e7d365ab0074f1807e8679  gcc/cp/cp-name-hint.h
  b81a93d025cceb5b80d17336759de93c  gcc/cp/cp-objcp-common.cc
  acb30767d403ad5a0d7ae97437159ebe  gcc/cp/cp-objcp-common.h
! 1bf2efeed9215bc88d193d37414dcc2b  gcc/cp/cp-trait.def
  d219c7261c4e8b7d170b10d9b450f256  gcc/cp/cp-tree.def
! f23e7962572ba9d1b19b9a5faf0513fc  gcc/cp/cp-tree.h
  e5ccdda9d62d96ac397910d0fa391b0a  gcc/cp/cp-ubsan.cc
! b7ae95468b0150bbe2b3cba351e96a2c  gcc/cp/cvt.cc
  8e454e3f7746836df899a46698f5af3e  gcc/cp/cxx-pretty-print.cc
  2d4d94b8a1d1c1d26764ae93a8039dda  gcc/cp/cxx-pretty-print.h
  c5f1614ded8bb57480eb7d1afecb7c7c  gcc/cp/cxxapi-data.csv
! 42bf63dc3759bb23709892d9c600bcfd  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
  6e7ef55a429d1521e6ceb90830dc8a9a  gcc/cp/expr.cc
! 3b7c086cfb4ed89e6ae40a09ca796704  gcc/cp/friend.cc
  3d079dd21f8a1ab95fb2d1f96d799283  gcc/cp/g++spec.cc
  30b9ed40d39cf78b95792ef5dca2aebb  gcc/cp/gen-cxxapi-file.py
  377bfb8826c6d37a017bce2538c7069d  gcc/cp/init.cc
  5ccbfdb682bc156eb436b763ee892050  gcc/cp/lambda.cc
  ac5d78393361c1bcb930119a896a14ca  gcc/cp/lang-specs.h
! 2af31e824417dde15f9d90d33979f12f  gcc/cp/lex.cc
  aaf76a9b03fd0532d2904aef004fd66a  gcc/cp/logic.cc
  457d345401c84ae9e21d86a6d1c5532e  gcc/cp/mangle.cc
  5efd09b0532a0b524e859d61c942156d  gcc/cp/mapper-client.cc
  6c77b1fab5f6d146677090285a202a50  gcc/cp/mapper-client.h
  44e22b51797f89c9da996523a6d97f1c  gcc/cp/mapper-resolver.cc
  0456b59fb105d3d30371131d063a685a  gcc/cp/method.cc
! b616ad06d89894d0c4b06ccda778e37e  gcc/cp/module.cc
! aa09e0ec58b60df673175ac9fac560be  gcc/cp/name-lookup.cc
  6fdcf6a217e83566683fbec935637de3  gcc/cp/name-lookup.h
  e7fe06956aada61bcaae5168ad47a9c1  gcc/cp/operators.def
  813c253a000ee20d8d6598f56edc400e  gcc/cp/optimize.cc
! 87048ca67636b3f559d17940d88fe1a5  gcc/cp/parser.cc
  db6ae85b922989f89eda229cb29e4690  gcc/cp/parser.h
! bf24e7506f4ec92ccc2d137de40f650f  gcc/cp/pt.cc
  b606903e35fe6806362fe4eee7a89fef  gcc/cp/ptree.cc
  ee1ddf1e1b9554bb1a10109ce8c6dee5  gcc/cp/rtti.cc
  9c5477f737d2c390510c3fe72454f657  gcc/cp/search.cc
! 568947e7de30b898e3df944cffd0661a  gcc/cp/semantics.cc
  8ccc82546d801360d2ccd8fd2a48b5d6  gcc/cp/std-name-hint.gperf
  bb87dbae9e49b63a73c4afa927a9018e  gcc/cp/std-name-hint.h
! f0d5c45acade2184f63127f724233555  gcc/cp/tree.cc
  bb1304379ac1bf9a568942bc7e976e8a  gcc/cp/type-utils.h
! 3c980ddb0b9ed1ed653f38de363e7f08  gcc/cp/typeck.cc
  d5322228a4b4ea22ae20c897e9baaf69  gcc/cp/typeck2.cc
  aa6906e22dc44502ca268580e5b8dfdd  gcc/cp/vtable-class-hierarchy.cc
  c74d2f6cc5dcb1bf1953c093eb903b37  gcc/cppbuiltin.cc
--- 5572,5622 ----
  0083c32822e7d365ab0074f1807e8679  gcc/cp/cp-name-hint.h
  b81a93d025cceb5b80d17336759de93c  gcc/cp/cp-objcp-common.cc
  acb30767d403ad5a0d7ae97437159ebe  gcc/cp/cp-objcp-common.h
! 99f4b67f8ef26f58f35166be5ae39170  gcc/cp/cp-trait.def
  d219c7261c4e8b7d170b10d9b450f256  gcc/cp/cp-tree.def
! 490c27d9cec4d3977c44cfd8f6f6be07  gcc/cp/cp-tree.h
  e5ccdda9d62d96ac397910d0fa391b0a  gcc/cp/cp-ubsan.cc
! dce6e74658eab6bdf17f4f3b74e84891  gcc/cp/cvt.cc
  8e454e3f7746836df899a46698f5af3e  gcc/cp/cxx-pretty-print.cc
  2d4d94b8a1d1c1d26764ae93a8039dda  gcc/cp/cxx-pretty-print.h
  c5f1614ded8bb57480eb7d1afecb7c7c  gcc/cp/cxxapi-data.csv
! bd3ab50b2abfe8d73edcbc53905d9198  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
  6e7ef55a429d1521e6ceb90830dc8a9a  gcc/cp/expr.cc
! 8e304891ca80b19f9426e06f41201de6  gcc/cp/friend.cc
  3d079dd21f8a1ab95fb2d1f96d799283  gcc/cp/g++spec.cc
  30b9ed40d39cf78b95792ef5dca2aebb  gcc/cp/gen-cxxapi-file.py
  377bfb8826c6d37a017bce2538c7069d  gcc/cp/init.cc
  5ccbfdb682bc156eb436b763ee892050  gcc/cp/lambda.cc
  ac5d78393361c1bcb930119a896a14ca  gcc/cp/lang-specs.h
! f43fedd5fd24018bc0a3c348196ec826  gcc/cp/lex.cc
  aaf76a9b03fd0532d2904aef004fd66a  gcc/cp/logic.cc
  457d345401c84ae9e21d86a6d1c5532e  gcc/cp/mangle.cc
  5efd09b0532a0b524e859d61c942156d  gcc/cp/mapper-client.cc
  6c77b1fab5f6d146677090285a202a50  gcc/cp/mapper-client.h
  44e22b51797f89c9da996523a6d97f1c  gcc/cp/mapper-resolver.cc
  0456b59fb105d3d30371131d063a685a  gcc/cp/method.cc
! 66e71dfb45275f905b7ad2af0a2159d6  gcc/cp/module.cc
! 6a8b7de0216bc4ed4e56a875c5353138  gcc/cp/name-lookup.cc
  6fdcf6a217e83566683fbec935637de3  gcc/cp/name-lookup.h
  e7fe06956aada61bcaae5168ad47a9c1  gcc/cp/operators.def
  813c253a000ee20d8d6598f56edc400e  gcc/cp/optimize.cc
! 690e9d0328e77535e65224b49bc10b4d  gcc/cp/parser.cc
  db6ae85b922989f89eda229cb29e4690  gcc/cp/parser.h
! e452eacae3580846b47b3a12456f5b7f  gcc/cp/pt.cc
  b606903e35fe6806362fe4eee7a89fef  gcc/cp/ptree.cc
  ee1ddf1e1b9554bb1a10109ce8c6dee5  gcc/cp/rtti.cc
  9c5477f737d2c390510c3fe72454f657  gcc/cp/search.cc
! 4164460f8a949afbe1a33c93e1c84682  gcc/cp/semantics.cc
  8ccc82546d801360d2ccd8fd2a48b5d6  gcc/cp/std-name-hint.gperf
  bb87dbae9e49b63a73c4afa927a9018e  gcc/cp/std-name-hint.h
! 78096c8a9025b902dc7bb831ec9506e6  gcc/cp/tree.cc
  bb1304379ac1bf9a568942bc7e976e8a  gcc/cp/type-utils.h
! 86d985ffb3d7fcdcc86e1e0c88c3b744  gcc/cp/typeck.cc
  d5322228a4b4ea22ae20c897e9baaf69  gcc/cp/typeck2.cc
  aa6906e22dc44502ca268580e5b8dfdd  gcc/cp/vtable-class-hierarchy.cc
  c74d2f6cc5dcb1bf1953c093eb903b37  gcc/cppbuiltin.cc
*************** db78b93a68a738fdb34ae6aa97fe35db  gcc/di
*** 5906,5912 ****
  93b73dbd9036edc5371e50289303ddde  gcc/diagnostic-core.h
  528d124e84ad62a6ddc437141b61a95a  gcc/diagnostic-global-context.cc
  ddb5e19e6f3ff8224aedd1a60eaad23e  gcc/diagnostic-highlight-colors.h
! 03317dcb68edc20739a39d6cdd14723d  gcc/diagnostic.h
  3a84304351a20c02ee7cc22b0bc78640  gcc/diagnostics/buffering.cc
  f20852cc0e48388252817a217fdece5d  gcc/diagnostics/buffering.h
  40fd6d86656b819f4c830d0d493b0d88  gcc/diagnostics/changes.cc
--- 5911,5917 ----
  93b73dbd9036edc5371e50289303ddde  gcc/diagnostic-core.h
  528d124e84ad62a6ddc437141b61a95a  gcc/diagnostic-global-context.cc
  ddb5e19e6f3ff8224aedd1a60eaad23e  gcc/diagnostic-highlight-colors.h
! 1cb2f210d6106d52da0db45de6025a3d  gcc/diagnostic.h
  3a84304351a20c02ee7cc22b0bc78640  gcc/diagnostics/buffering.cc
  f20852cc0e48388252817a217fdece5d  gcc/diagnostics/buffering.h
  40fd6d86656b819f4c830d0d493b0d88  gcc/diagnostics/changes.cc
*************** c9250b15349fce5a608b769043f111e5  gcc/di
*** 5916,5922 ****
  d29ddcb032cf35e525663d8b857fe46b  gcc/diagnostics/color.h
  3e3d9b398652afcc049d57d6ebcb4d1b  gcc/diagnostics/column-options.h
  feea31e8e6eec9c1403f01df95d221d4  gcc/diagnostics/context-options.h
! 436087f3640d7d7bddaaed733918de93  gcc/diagnostics/context.cc
  3d657a4a23a157637d4867b6d5e18546  gcc/diagnostics/context.h
  3f0f4bd88c2110afde540ec51f32ce6b  gcc/diagnostics/counters.h
  6eb2e40f405d950a9e9f3c089680a899  gcc/diagnostics/diagnostic-info.h
--- 5921,5927 ----
  d29ddcb032cf35e525663d8b857fe46b  gcc/diagnostics/color.h
  3e3d9b398652afcc049d57d6ebcb4d1b  gcc/diagnostics/column-options.h
  feea31e8e6eec9c1403f01df95d221d4  gcc/diagnostics/context-options.h
! 0975ebab5e67deb1bbf104f07b2a7fb7  gcc/diagnostics/context.cc
  3d657a4a23a157637d4867b6d5e18546  gcc/diagnostics/context.h
  3f0f4bd88c2110afde540ec51f32ce6b  gcc/diagnostics/counters.h
  6eb2e40f405d950a9e9f3c089680a899  gcc/diagnostics/diagnostic-info.h
*************** cc65ae2ee101a218fd768c2fee83af6e  gcc/di
*** 5952,5959 ****
  f804348b86b5dda4ae2b27490ef6174a  gcc/diagnostics/paths-output.cc
  de4a955194bb4b0417d906ee181de3b0  gcc/diagnostics/paths.cc
  4fb4afb161f7382c1b6fffa57f6a8de4  gcc/diagnostics/paths.h
! 738ad4f4cd936bbac8c974a26b276b81  gcc/diagnostics/sarif-sink.cc
! 2e5b6abdac74dd6e43e3985e6a54b648  gcc/diagnostics/sarif-sink.h
  997b3f6b08ca5f0365ad8829b73c5f3f  gcc/diagnostics/selftest-context.cc
  0c9931582348dcf2e668dad28878e073  gcc/diagnostics/selftest-context.h
  adaecbd7febc2698db08b843ef816569  gcc/diagnostics/selftest-logical-locations.cc
--- 5957,5964 ----
  f804348b86b5dda4ae2b27490ef6174a  gcc/diagnostics/paths-output.cc
  de4a955194bb4b0417d906ee181de3b0  gcc/diagnostics/paths.cc
  4fb4afb161f7382c1b6fffa57f6a8de4  gcc/diagnostics/paths.h
! 4e3cc329cefe9c53ccf1c2a120e18cbc  gcc/diagnostics/sarif-sink.cc
! 67b819454fada497e7bb752228b03993  gcc/diagnostics/sarif-sink.h
  997b3f6b08ca5f0365ad8829b73c5f3f  gcc/diagnostics/selftest-context.cc
  0c9931582348dcf2e668dad28878e073  gcc/diagnostics/selftest-context.h
  adaecbd7febc2698db08b843ef816569  gcc/diagnostics/selftest-logical-locations.cc
*************** e2ff50cf5215e2299270f0da4d4d60d0  gcc/di
*** 5983,5994 ****
  b8ee6e280a9d71c11b682c6942c6bd21  gcc/doc/contrib.texi
  2bb27ef73a41b4f2fff3dd7b08febbfd  gcc/doc/contribute.texi
  3923947091df4b8c54eae1595710a7d5  gcc/doc/cpp.texi
! 808d1c20ece40d5e2d9c8daa6cdaabf6  gcc/doc/cppdiropts.texi
  acdfc663791e4321372e79932070d05d  gcc/doc/cppenv.texi
  81ae745aed5479afae430c578fa29055  gcc/doc/cppinternals.texi
! 1a2d44757bb0f40b09493ac3863eba93  gcc/doc/cppopts.texi
  14b0532614eb25d7d84e7efd6664ecf3  gcc/doc/cppwarnopts.texi
! 5ad56f46db608c9ee41f5b75c95acca6  gcc/doc/extend.texi
  ddcdbcb699f5252a1c1219d92d87ed8b  gcc/doc/fragments.texi
  cd346f0c279f68138ef08c7addc796de  gcc/doc/frontends.texi
  a28615d9873d98f0d5f4ef8dd3e4c39d  gcc/doc/gcc.texi
--- 5988,5999 ----
  b8ee6e280a9d71c11b682c6942c6bd21  gcc/doc/contrib.texi
  2bb27ef73a41b4f2fff3dd7b08febbfd  gcc/doc/contribute.texi
  3923947091df4b8c54eae1595710a7d5  gcc/doc/cpp.texi
! 47960410f93fa743fe45d4c47bda508e  gcc/doc/cppdiropts.texi
  acdfc663791e4321372e79932070d05d  gcc/doc/cppenv.texi
  81ae745aed5479afae430c578fa29055  gcc/doc/cppinternals.texi
! 916609b97298dbc7d4d607a08543d64f  gcc/doc/cppopts.texi
  14b0532614eb25d7d84e7efd6664ecf3  gcc/doc/cppwarnopts.texi
! a0ab323fc5dc97da8c865a0e361f11a6  gcc/doc/extend.texi
  ddcdbcb699f5252a1c1219d92d87ed8b  gcc/doc/fragments.texi
  cd346f0c279f68138ef08c7addc796de  gcc/doc/frontends.texi
  a28615d9873d98f0d5f4ef8dd3e4c39d  gcc/doc/gcc.texi
*************** ee4c7654f733cefcb73d4fd24f3e1b82  gcc/do
*** 6010,6018 ****
  9512a9fe27682edff7dd2ed171bbb853  gcc/doc/include/gcc-common.texi
  95c90bf85d3eab67f348ee3ce0bf4050  gcc/doc/include/gpl_v3.texi
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
! 15e2cf98dadc41f0beb83ef5bc46bdb9  gcc/doc/install.texi
  0f98706361e63fac2c35c2c4491eaac4  gcc/doc/install.texi2html
! 6c8ce9ddeb8308889ad659b4f3522628  gcc/doc/invoke.texi
  47f1f55b3595acf670eb6193a0cbd933  gcc/doc/languages.texi
  8783f1b0b6c204d4417b00f3b772beea  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
--- 6015,6023 ----
  9512a9fe27682edff7dd2ed171bbb853  gcc/doc/include/gcc-common.texi
  95c90bf85d3eab67f348ee3ce0bf4050  gcc/doc/include/gpl_v3.texi
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
! e876c444c113d5a40798e8580ed11838  gcc/doc/install.texi
  0f98706361e63fac2c35c2c4491eaac4  gcc/doc/install.texi2html
! b689d0d126bfea7d9184c424f73fde65  gcc/doc/invoke.texi
  47f1f55b3595acf670eb6193a0cbd933  gcc/doc/languages.texi
  8783f1b0b6c204d4417b00f3b772beea  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
*************** a7117c4fee8c54e338b967886f3b2dcb  gcc/do
*** 6059,6069 ****
  0603ab3940871fa2a55ddbd7c2719eb7  gcc/doc/poly-int.texi
  ee33d902cd60afae792843ff15ad6706  gcc/doc/portability.texi
  a44260feebffd50db9ea51aed431d69c  gcc/doc/riscv-ext.texi
! 0a6fbec97bcd3900463038637bba7886  gcc/doc/riscv-mcpu.texi
! 859a3279ee48eb417fd0ab4090d19c27  gcc/doc/riscv-mtune.texi
  8489e4a02a5daa1d1ae726383b330653  gcc/doc/rtl.texi
  bd20fd07c5ee8f444bf1d3f5e64e066a  gcc/doc/service.texi
! 8b4e4f903be565e1f803787eed0e6c5b  gcc/doc/sourcebuild.texi
  c6eb228a6da301194f3963b6d42729e7  gcc/doc/standards.texi
  60892135dd93bb0e6d2d4d1b1fe11cb1  gcc/doc/tm.texi
  0801b698039cc220174c1b6ec339c77c  gcc/doc/tm.texi.in
--- 6064,6074 ----
  0603ab3940871fa2a55ddbd7c2719eb7  gcc/doc/poly-int.texi
  ee33d902cd60afae792843ff15ad6706  gcc/doc/portability.texi
  a44260feebffd50db9ea51aed431d69c  gcc/doc/riscv-ext.texi
! b310d64363bd145805f52eb9c3cf33d7  gcc/doc/riscv-mcpu.texi
! 9678bf067dec9e1a06524a95c7ebd2a5  gcc/doc/riscv-mtune.texi
  8489e4a02a5daa1d1ae726383b330653  gcc/doc/rtl.texi
  bd20fd07c5ee8f444bf1d3f5e64e066a  gcc/doc/service.texi
! 0d1a052fb078fc41715484e278755ead  gcc/doc/sourcebuild.texi
  c6eb228a6da301194f3963b6d42729e7  gcc/doc/standards.texi
  60892135dd93bb0e6d2d4d1b1fe11cb1  gcc/doc/tm.texi
  0801b698039cc220174c1b6ec339c77c  gcc/doc/tm.texi.in
*************** a4ee0bae47797ce73f05daef7a07edd4  gcc/ex
*** 6108,6114 ****
  dee0d85cc89e81b4cc185f1c3102811e  gcc/expmed.h
  efeb17689a7453211f59099acc97a475  gcc/expr.cc
  dfa85539f017784504ec3d884e09901f  gcc/expr.h
! 7117d2d0dde87eaf1ab2853b5bfd62e2  gcc/ext-dce.cc
  2ecf474a8f5380e5027c5b7a745cd736  gcc/fibonacci_heap.cc
  4e78fbbdb0a8c835b984d732a6d97a7b  gcc/fibonacci_heap.h
  ee644c05e4a3461a8c2f5a4a5ea285bd  gcc/file-find.cc
--- 6113,6119 ----
  dee0d85cc89e81b4cc185f1c3102811e  gcc/expmed.h
  efeb17689a7453211f59099acc97a475  gcc/expr.cc
  dfa85539f017784504ec3d884e09901f  gcc/expr.h
! 69fe0374b88ff2808ee2eb6493915596  gcc/ext-dce.cc
  2ecf474a8f5380e5027c5b7a745cd736  gcc/fibonacci_heap.cc
  4e78fbbdb0a8c835b984d732a6d97a7b  gcc/fibonacci_heap.h
  ee644c05e4a3461a8c2f5a4a5ea285bd  gcc/file-find.cc
*************** b7bf1ecba30babcca6fcc9e9a66bebfb  gcc/fo
*** 6125,6131 ****
  c6bcf556650bd15e73728fb68b1276cc  gcc/fold-const.cc
  1d6c2807b0d1d4dbc716459c64abe92f  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! 0a5a1ee1d25ea10a3144f17ab737c99a  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
--- 6130,6136 ----
  c6bcf556650bd15e73728fb68b1276cc  gcc/fold-const.cc
  1d6c2807b0d1d4dbc716459c64abe92f  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! 620a129ba9c94b4849d2d6b14ba6d6e5  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
*************** c38eb0f2f19a6cb4b79be761670131e8  gcc/fo
*** 6153,6162 ****
  db21881c77a22fd3dbfe253c364af5ee  gcc/fortran/Make-lang.in
  25a2099206e1596859cfc2d787790f32  gcc/fortran/arith.cc
  6b01ec523f3bee8e2469370d106896e3  gcc/fortran/arith.h
! 9abaf909ead673fb965b99afc6f84600  gcc/fortran/array.cc
  59221f5e105887dce9d0c1b7694aa86f  gcc/fortran/bbt.cc
  a7c1f9d359b6b66b84bfc972f1f828f6  gcc/fortran/check.cc
! 4cd50f78498dfdce8f3ba18b4639e2d6  gcc/fortran/class.cc
  aed3aedb6378a970055dff9e11eedc2d  gcc/fortran/coarray.cc
  6047324cb87b56ae23d2293c5ef13ddb  gcc/fortran/config-lang.in
  16ea0e15947038265fbb5983b455b7bf  gcc/fortran/constructor.cc
--- 6158,6167 ----
  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
  aed3aedb6378a970055dff9e11eedc2d  gcc/fortran/coarray.cc
  6047324cb87b56ae23d2293c5ef13ddb  gcc/fortran/config-lang.in
  16ea0e15947038265fbb5983b455b7bf  gcc/fortran/constructor.cc
*************** b3beb0a8e06a71d205d3639a1bc35738  gcc/fo
*** 6176,6188 ****
  7ff99bd8794c2d5f2533f516ec00306b  gcc/fortran/frontend-passes.cc
  a39f360f255f1ef6dfd91ccefef63e05  gcc/fortran/gfc-diagnostic.def
  bd08c55098f00394b9922e6163c27b92  gcc/fortran/gfc-internals.texi
! 3f5a4cdf35856ace7a0973a097df9f14  gcc/fortran/gfortran.h
! d29bb6813221f46b4cde9df77292c412  gcc/fortran/gfortran.texi
  af66ab40a5434219772b76ad10035e45  gcc/fortran/gfortranspec.cc
  e4fe6ce0303cd182ebd328bdb0ae5743  gcc/fortran/interface.cc
  74d5cc035a8e6ee1fb5826c965c90532  gcc/fortran/intrinsic.cc
  47e0e62e0a6eaad27941f8e734cda2a2  gcc/fortran/intrinsic.h
! a66961d972b8324ccd45b11ecadbb3bf  gcc/fortran/intrinsic.texi
  491e0576258d33e46ed87fe37a39cc55  gcc/fortran/invoke.texi
  4a91f323761835f16a1a9b3995485379  gcc/fortran/io.cc
  d2a28ef98f6f78d1608fb52204e013a5  gcc/fortran/ioparm.def
--- 6181,6193 ----
  7ff99bd8794c2d5f2533f516ec00306b  gcc/fortran/frontend-passes.cc
  a39f360f255f1ef6dfd91ccefef63e05  gcc/fortran/gfc-diagnostic.def
  bd08c55098f00394b9922e6163c27b92  gcc/fortran/gfc-internals.texi
! 8d23aaf7925b41212a7b0a72c36b1fbe  gcc/fortran/gfortran.h
! 2beb36ba1d875edd98fee3f0b52234ee  gcc/fortran/gfortran.texi
  af66ab40a5434219772b76ad10035e45  gcc/fortran/gfortranspec.cc
  e4fe6ce0303cd182ebd328bdb0ae5743  gcc/fortran/interface.cc
  74d5cc035a8e6ee1fb5826c965c90532  gcc/fortran/intrinsic.cc
  47e0e62e0a6eaad27941f8e734cda2a2  gcc/fortran/intrinsic.h
! 07c7b977b84667767b6c592605b33199  gcc/fortran/intrinsic.texi
  491e0576258d33e46ed87fe37a39cc55  gcc/fortran/invoke.texi
  4a91f323761835f16a1a9b3995485379  gcc/fortran/io.cc
  d2a28ef98f6f78d1608fb52204e013a5  gcc/fortran/ioparm.def
*************** d2a28ef98f6f78d1608fb52204e013a5  gcc/fo
*** 6191,6210 ****
  085e3672e4679e2b51b9f144b552caed  gcc/fortran/iso-fortran-env.def
  5c4523263ea0f1cd46baacba848e1fd5  gcc/fortran/lang-specs.h
  1b21bc6997375de7ba798cd6fb5ed15a  gcc/fortran/lang.opt
! 3841d5e1069b067c75c1474e5eb9e7e9  gcc/fortran/lang.opt.urls
  33cf77e4943bfb687d3a0bd5fa94ec58  gcc/fortran/libgfortran.h
! 9fb964ee8c0ef3d4ffb8f95aa2ad3203  gcc/fortran/match.cc
  047778859aa899389e3b7e65c1439faa  gcc/fortran/match.h
  672e1d4135f72ff6f083582ec84123b1  gcc/fortran/matchexp.cc
  763c37f838e32f5ed8ad600157a0d951  gcc/fortran/mathbuiltins.def
  6e89e2e347d7f6e1576cbda0e958b5bd  gcc/fortran/misc.cc
  27910247f948e0af2baebd9c279bec80  gcc/fortran/module.cc
! ccd0b5f4e68c698b61eed503fe66e0ec  gcc/fortran/openmp.cc
  97facac1dd9ae327c6c4547b527e4527  gcc/fortran/options.cc
  6d861bb72dba054f1f018f41dbbc9dcb  gcc/fortran/parse.cc
  718f4db6bea1b398551c501068f61597  gcc/fortran/parse.h
  c9d22da97e7dd6a7d6a14a49e9b5dcb0  gcc/fortran/primary.cc
! 53237eb62ec4e76b084b7d8bea9f63d6  gcc/fortran/resolve.cc
  8dc2391850ee95634781b6e296a096f6  gcc/fortran/scanner.cc
  3c39e0eef946c7f557ac375f23b9f3db  gcc/fortran/scanner.h
  d78cc6d6b48b8228757fb8b674f6ad9b  gcc/fortran/simplify.cc
--- 6196,6215 ----
  085e3672e4679e2b51b9f144b552caed  gcc/fortran/iso-fortran-env.def
  5c4523263ea0f1cd46baacba848e1fd5  gcc/fortran/lang-specs.h
  1b21bc6997375de7ba798cd6fb5ed15a  gcc/fortran/lang.opt
! f703ee273c003168fc8c2a7b4f4a704a  gcc/fortran/lang.opt.urls
  33cf77e4943bfb687d3a0bd5fa94ec58  gcc/fortran/libgfortran.h
! c8cf34fcd829ff55e5b3240c7d16d62c  gcc/fortran/match.cc
  047778859aa899389e3b7e65c1439faa  gcc/fortran/match.h
  672e1d4135f72ff6f083582ec84123b1  gcc/fortran/matchexp.cc
  763c37f838e32f5ed8ad600157a0d951  gcc/fortran/mathbuiltins.def
  6e89e2e347d7f6e1576cbda0e958b5bd  gcc/fortran/misc.cc
  27910247f948e0af2baebd9c279bec80  gcc/fortran/module.cc
! a45046a8e919389a8ba78f3ff472f80b  gcc/fortran/openmp.cc
  97facac1dd9ae327c6c4547b527e4527  gcc/fortran/options.cc
  6d861bb72dba054f1f018f41dbbc9dcb  gcc/fortran/parse.cc
  718f4db6bea1b398551c501068f61597  gcc/fortran/parse.h
  c9d22da97e7dd6a7d6a14a49e9b5dcb0  gcc/fortran/primary.cc
! 8a9182e367e083a0e7e59610641b8704  gcc/fortran/resolve.cc
  8dc2391850ee95634781b6e296a096f6  gcc/fortran/scanner.cc
  3c39e0eef946c7f557ac375f23b9f3db  gcc/fortran/scanner.h
  d78cc6d6b48b8228757fb8b674f6ad9b  gcc/fortran/simplify.cc
*************** dfe1e1950e068389ed73663e9a11ad88  gcc/fo
*** 6218,6224 ****
  fa8521f4c98868ee5fa7e9dea5a35e37  gcc/fortran/trans-const.cc
  857805820c2a6ac77d2652c610d23de8  gcc/fortran/trans-const.h
  dce57ac907b72b9dd8c78e63e9d717a3  gcc/fortran/trans-decl.cc
! 2fc7abc1a31c7f7ad6cc9e0fe34591f6  gcc/fortran/trans-expr.cc
  2889ceeab429a8d9e062daa88b51dd03  gcc/fortran/trans-intrinsic.cc
  2d29342f65aeef2af368527483b2d4f1  gcc/fortran/trans-io.cc
  27df041e4caff610df844e7a22e291e3  gcc/fortran/trans-openmp.cc
--- 6223,6229 ----
  fa8521f4c98868ee5fa7e9dea5a35e37  gcc/fortran/trans-const.cc
  857805820c2a6ac77d2652c610d23de8  gcc/fortran/trans-const.h
  dce57ac907b72b9dd8c78e63e9d717a3  gcc/fortran/trans-decl.cc
! 17146bb3feae81c285b92546d9453423  gcc/fortran/trans-expr.cc
  2889ceeab429a8d9e062daa88b51dd03  gcc/fortran/trans-intrinsic.cc
  2d29342f65aeef2af368527483b2d4f1  gcc/fortran/trans-io.cc
  27df041e4caff610df844e7a22e291e3  gcc/fortran/trans-openmp.cc
*************** bb02db160d1eb3a985d3b5dfa8e0566c  gcc/gi
*** 6340,6351 ****
  ef8cac8c03c6284903df21f3faba7014  gcc/gimple-predict.h
  3dbb096fa4399516b9bcc02603da229d  gcc/gimple-pretty-print.cc
  1d0e0766111d9af10f6785e9ad0b3675  gcc/gimple-pretty-print.h
! 446371913731af0105484445053116d7  gcc/gimple-range-cache.cc
! 8c426458ee77fbac2c6b8f813f84b230  gcc/gimple-range-cache.h
  3e4f3306c9eafee14102507900b96dad  gcc/gimple-range-edge.cc
  c8dd21ff63045c1a13e516534e9f26c8  gcc/gimple-range-edge.h
! c2d4313b79925f171bbfc932704d0d6f  gcc/gimple-range-fold.cc
! 6077f71d4f6a79ed60d0e24f247133a3  gcc/gimple-range-fold.h
  2ab6e680fbd55d50bfc4690e2ecf8a4f  gcc/gimple-range-gori.cc
  db61cb44af184c491426f70b14b72f64  gcc/gimple-range-gori.h
  60c1306ed88dab1ceb0f87187653585f  gcc/gimple-range-infer.cc
--- 6345,6356 ----
  ef8cac8c03c6284903df21f3faba7014  gcc/gimple-predict.h
  3dbb096fa4399516b9bcc02603da229d  gcc/gimple-pretty-print.cc
  1d0e0766111d9af10f6785e9ad0b3675  gcc/gimple-pretty-print.h
! cf3104344cd1bd624fd31423353ea269  gcc/gimple-range-cache.cc
! 2267485dd08426f0ba596381f4f4f3ee  gcc/gimple-range-cache.h
  3e4f3306c9eafee14102507900b96dad  gcc/gimple-range-edge.cc
  c8dd21ff63045c1a13e516534e9f26c8  gcc/gimple-range-edge.h
! 956e760455baf8d2a429c121da56c574  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
*************** afe93bca845d66d8f5c8bb4e79507028  gcc/gi
*** 6354,6366 ****
  c33a426eeaa6da07a474caf81b43a278  gcc/gimple-range-op.h
  33d3c148e1b6f1df39688e27f3511fe1  gcc/gimple-range-path.cc
  55a80a9f04099be643d37e29c9ac7d10  gcc/gimple-range-path.h
! a9d6c3c7c4a345e42e42aabfb7b4981e  gcc/gimple-range-phi.cc
! eb7c233acdcae81b02395e856a9cfa3b  gcc/gimple-range-phi.h
  8a80a7176e272213da512b76afcab3d7  gcc/gimple-range-tests.cc
  74bf54ac2be468226c893a76f7919cbf  gcc/gimple-range-trace.cc
  8c93856aa354b96d19587f0c9e4051a6  gcc/gimple-range-trace.h
! 146ce8532311064e53fbcfd9f47c5f93  gcc/gimple-range.cc
! a4e263e8871b92796b1fb32a725e3eaa  gcc/gimple-range.h
  0a74fcfb6f542e62384811b3713681ce  gcc/gimple-ssa-backprop.cc
  625c4d4e2ee935199518dada95221148  gcc/gimple-ssa-isolate-paths.cc
  b417ca4d3d865879d0e642790dafa8cf  gcc/gimple-ssa-nonnull-compare.cc
--- 6359,6371 ----
  c33a426eeaa6da07a474caf81b43a278  gcc/gimple-range-op.h
  33d3c148e1b6f1df39688e27f3511fe1  gcc/gimple-range-path.cc
  55a80a9f04099be643d37e29c9ac7d10  gcc/gimple-range-path.h
! b4a2ebb0c3e9f6c379505631b6ca27a2  gcc/gimple-range-phi.cc
! 079db3f6a23a106d51d55dfa751664d3  gcc/gimple-range-phi.h
  8a80a7176e272213da512b76afcab3d7  gcc/gimple-range-tests.cc
  74bf54ac2be468226c893a76f7919cbf  gcc/gimple-range-trace.cc
  8c93856aa354b96d19587f0c9e4051a6  gcc/gimple-range-trace.h
! f6d4bb8958d059589a3f63d51019ed5b  gcc/gimple-range.cc
! 9c3744dd77abfe90beb7ee0fbcd6c6a7  gcc/gimple-range.h
  0a74fcfb6f542e62384811b3713681ce  gcc/gimple-ssa-backprop.cc
  625c4d4e2ee935199518dada95221148  gcc/gimple-ssa-isolate-paths.cc
  b417ca4d3d865879d0e642790dafa8cf  gcc/gimple-ssa-nonnull-compare.cc
*************** b5ed1ca4ba5f0f56cd7e3ec1d2a1d01f  gcc/gi
*** 6386,6392 ****
  0809761e93e784b8b311ec9cfaab0e63  gcc/gimple.cc
  ed9c9a9b8efbcca1621cb38f6a7f739b  gcc/gimple.def
  fff83c47fd0320d8175084caf95f1b1d  gcc/gimple.h
! 69057cf60d71bd04ced5e457138629e1  gcc/gimplify-me.cc
  84814cb09300f3db388dd0d22133ccb4  gcc/gimplify-me.h
  bdc0fe03a3523bc1412d967a0232373c  gcc/gimplify.cc
  08a911f7f8b65840f9b57e0e76a2061c  gcc/gimplify.h
--- 6391,6397 ----
  0809761e93e784b8b311ec9cfaab0e63  gcc/gimple.cc
  ed9c9a9b8efbcca1621cb38f6a7f739b  gcc/gimple.def
  fff83c47fd0320d8175084caf95f1b1d  gcc/gimple.h
! 78067ab7e777ee9d0a105da78655ee19  gcc/gimplify-me.cc
  84814cb09300f3db388dd0d22133ccb4  gcc/gimplify-me.h
  bdc0fe03a3523bc1412d967a0232373c  gcc/gimplify.cc
  08a911f7f8b65840f9b57e0e76a2061c  gcc/gimplify.h
*************** f380ce65b15eedb6d55a9848beb1ec3b  gcc/in
*** 6519,6525 ****
  a82ca6f10995888441918acc568477fc  gcc/incpath.cc
  078efe9e89bf7fcd6a66cd085de2d676  gcc/incpath.h
  9d517f2c2919033bb8c4d62108dd6973  gcc/init-regs.cc
! 9783d3cd8dccab8f0649e24643a8c912  gcc/input.cc
  f875de05790ff6f9d4a538f3165a775b  gcc/input.h
  0dc4e5a1c70a5b34153b06594dd3ae85  gcc/insn-addr.h
  eec072fb4c8277a3634cf4cdc0846598  gcc/insn-notes.def
--- 6524,6530 ----
  a82ca6f10995888441918acc568477fc  gcc/incpath.cc
  078efe9e89bf7fcd6a66cd085de2d676  gcc/incpath.h
  9d517f2c2919033bb8c4d62108dd6973  gcc/init-regs.cc
! 1f11c8f5b75b38a1b9fd5e9bb2fe9486  gcc/input.cc
  f875de05790ff6f9d4a538f3165a775b  gcc/input.h
  0dc4e5a1c70a5b34153b06594dd3ae85  gcc/insn-addr.h
  eec072fb4c8277a3634cf4cdc0846598  gcc/insn-notes.def
*************** e1e331896b86db8a2281657bbb21ac72  gcc/ip
*** 6550,6556 ****
  5a1edb91a2b7237c3e946f040a3d9697  gcc/ipa-modref-tree.h
  d4b6029d550d1c8bf41bfb44083a9843  gcc/ipa-modref.cc
  8fe1972490c1cce5a10c7cdcd57b2361  gcc/ipa-modref.h
! 05a01f3b363a6f52cbd830868997624c  gcc/ipa-param-manipulation.cc
  6402305bfd352583fddaf5ceee9f6a46  gcc/ipa-param-manipulation.h
  9c809f4fa05d60a2694cc5b392ba2ce1  gcc/ipa-polymorphic-call.cc
  83c011375208cf1307980bcb1b18b67a  gcc/ipa-predicate.cc
--- 6555,6561 ----
  5a1edb91a2b7237c3e946f040a3d9697  gcc/ipa-modref-tree.h
  d4b6029d550d1c8bf41bfb44083a9843  gcc/ipa-modref.cc
  8fe1972490c1cce5a10c7cdcd57b2361  gcc/ipa-modref.h
! 4ef53e0bff9d618eacffb76e9fb73013  gcc/ipa-param-manipulation.cc
  6402305bfd352583fddaf5ceee9f6a46  gcc/ipa-param-manipulation.h
  9c809f4fa05d60a2694cc5b392ba2ce1  gcc/ipa-polymorphic-call.cc
  83c011375208cf1307980bcb1b18b67a  gcc/ipa-predicate.cc
*************** ed94ab1f6976f64c8d20b7b65da14438  gcc/ir
*** 6582,6588 ****
  e02a7a08ca9acaac686d9cb897ac121b  gcc/ira.h
  101bad313081e351312c8d42e0b24b31  gcc/is-a.h
  4e832d29f0e621d177da3fa9c3e11b69  gcc/iterator-utils.h
! b157c19804ea9475f25320eddbb55a1d  gcc/jit/ChangeLog
  6071bdf04fb356c5ac99a99ec00c9a12  gcc/jit/ChangeLog.jit
  222ee07ce761a3e77636dc2e76c20087  gcc/jit/Make-lang.in
  fd0d76b6467c987f813d430a35d4760a  gcc/jit/TODO.rst
--- 6587,6593 ----
  e02a7a08ca9acaac686d9cb897ac121b  gcc/ira.h
  101bad313081e351312c8d42e0b24b31  gcc/is-a.h
  4e832d29f0e621d177da3fa9c3e11b69  gcc/iterator-utils.h
! cf8fb2e3821d3755a905ae0581d4984c  gcc/jit/ChangeLog
  6071bdf04fb356c5ac99a99ec00c9a12  gcc/jit/ChangeLog.jit
  222ee07ce761a3e77636dc2e76c20087  gcc/jit/Make-lang.in
  fd0d76b6467c987f813d430a35d4760a  gcc/jit/TODO.rst
*************** ceaa8a45db8bcbe61a0e8258e21bc87a  gcc/ji
*** 6653,6661 ****
  2cd46a46000f2977ffb0f8cdcedfe27b  gcc/jit/jit-dejagnu.h
  d1ecf9f1fa6c7b403bac530b8d4536ca  gcc/jit/jit-logging.cc
  45e3e913a08f0789f718ae5e5a0d44c6  gcc/jit/jit-logging.h
! 768ff208162324c4c0bfb7e306112917  gcc/jit/jit-playback.cc
  89132ea6a34d92ec3de3c6089d9aa659  gcc/jit/jit-playback.h
! dc4633acb962c6cf0d82533070788264  gcc/jit/jit-recording.cc
  1179bda9a5dc3337e14f66a1d72cfda6  gcc/jit/jit-recording.h
  76d67feccd94f3bac32d69f32462dc16  gcc/jit/jit-result.cc
  960e50ddf361f2740cd045c219e88054  gcc/jit/jit-result.h
--- 6658,6666 ----
  2cd46a46000f2977ffb0f8cdcedfe27b  gcc/jit/jit-dejagnu.h
  d1ecf9f1fa6c7b403bac530b8d4536ca  gcc/jit/jit-logging.cc
  45e3e913a08f0789f718ae5e5a0d44c6  gcc/jit/jit-logging.h
! 671eddb278057436b7acd7e9888a9e42  gcc/jit/jit-playback.cc
  89132ea6a34d92ec3de3c6089d9aa659  gcc/jit/jit-playback.h
! 7f7272d0374f8dfac0d6219f0efbed55  gcc/jit/jit-recording.cc
  1179bda9a5dc3337e14f66a1d72cfda6  gcc/jit/jit-recording.h
  76d67feccd94f3bac32d69f32462dc16  gcc/jit/jit-result.cc
  960e50ddf361f2740cd045c219e88054  gcc/jit/jit-result.h
*************** b366e1c6e0a173c3872bb22899ef461e  gcc/ji
*** 6671,6677 ****
  612a0c59d427adbea9a5e0c41b566948  gcc/jit/libgccjit++.h
  5b8e1c9501174d726b290ffd05d250cb  gcc/jit/libgccjit.cc
  e4ece7cdc20696f99063180449232226  gcc/jit/libgccjit.exports
! b24b7bc9cc21f60fa43f88cb9f86108f  gcc/jit/libgccjit.h
  e751a06395df90a07ef11bd8dbc96a5f  gcc/jit/libgccjit.map
  a683bef6f6721b574c76acc1efb5050c  gcc/jit/notes.txt
  aa4d0dc684f454901e907706abe9140d  gcc/json-parsing.cc
--- 6676,6682 ----
  612a0c59d427adbea9a5e0c41b566948  gcc/jit/libgccjit++.h
  5b8e1c9501174d726b290ffd05d250cb  gcc/jit/libgccjit.cc
  e4ece7cdc20696f99063180449232226  gcc/jit/libgccjit.exports
! e27aa8280011e2512adb3fd0605d9cdd  gcc/jit/libgccjit.h
  e751a06395df90a07ef11bd8dbc96a5f  gcc/jit/libgccjit.map
  a683bef6f6721b574c76acc1efb5050c  gcc/jit/notes.txt
  aa4d0dc684f454901e907706abe9140d  gcc/json-parsing.cc
*************** b54054c495232a416b1cdea9032d1d9f  gcc/lo
*** 6710,6716 ****
  05bf78e6d3e36587723b1177ffcd9c6e  gcc/lower-subreg.h
  755a196fed2cd7b5878159035d75b39b  gcc/lra-assigns.cc
  0232e051e662ebb7fd2fa507d9c581b8  gcc/lra-coalesce.cc
! 6ed82581271e048b5c121fbc188c6e23  gcc/lra-constraints.cc
  ebe278d864d3a7e33fbcc46f02926248  gcc/lra-eliminations.cc
  c9f048755e3742fbe86e02e2b4b1eb6d  gcc/lra-int.h
  52ba28cd117bff034bd9a26fe150f692  gcc/lra-lives.cc
--- 6715,6721 ----
  05bf78e6d3e36587723b1177ffcd9c6e  gcc/lower-subreg.h
  755a196fed2cd7b5878159035d75b39b  gcc/lra-assigns.cc
  0232e051e662ebb7fd2fa507d9c581b8  gcc/lra-coalesce.cc
! 0d17cb8be2938e89f8c42126c1281fe8  gcc/lra-constraints.cc
  ebe278d864d3a7e33fbcc46f02926248  gcc/lra-eliminations.cc
  c9f048755e3742fbe86e02e2b4b1eb6d  gcc/lra-int.h
  52ba28cd117bff034bd9a26fe150f692  gcc/lra-lives.cc
*************** c123d330c230c1e0fe188e9143a9dcf8  gcc/lt
*** 6732,6738 ****
  8caf9a68892d64dc294b20c27291b749  gcc/lto-streamer.cc
  a02ffd191761acac63f19c981da24abf  gcc/lto-streamer.h
  83090028348934d032ead727241d7ad7  gcc/lto-wrapper.cc
! cdd7a37ab63bb1fda8af231f9ac0c431  gcc/lto/ChangeLog
  3e7816807401da2506930719e6dc8b3d  gcc/lto/Make-lang.in
  705d8eaa74b456d79367c2c42b7a2fef  gcc/lto/common.cc
  3d201b30f0538a8cfddc450739b1c8c5  gcc/lto/common.h
--- 6737,6743 ----
  8caf9a68892d64dc294b20c27291b749  gcc/lto-streamer.cc
  a02ffd191761acac63f19c981da24abf  gcc/lto-streamer.h
  83090028348934d032ead727241d7ad7  gcc/lto-wrapper.cc
! ece32b16d05d95ef17aaa781597ae7d6  gcc/lto/ChangeLog
  3e7816807401da2506930719e6dc8b3d  gcc/lto/Make-lang.in
  705d8eaa74b456d79367c2c42b7a2fef  gcc/lto/common.cc
  3d201b30f0538a8cfddc450739b1c8c5  gcc/lto/common.h
*************** e09c982f34fcc53d88fb9b974a77d569  gcc/lt
*** 6745,6751 ****
  24353553f316f6efb9d7f42253a3ec7c  gcc/lto/lto-dump.cc
  6f7bac8568b01539cfeadad94e94aa6e  gcc/lto/lto-lang.cc
  3b697054907d273bdcb6e5026d3bc875  gcc/lto/lto-object.cc
! 29cb2a19e49d9b14ca5733e55827c0c5  gcc/lto/lto-partition.cc
  6bdee5523aaa6e7091e15f5270e1ef9f  gcc/lto/lto-partition.h
  3890271ac10891e53209884724fcb93a  gcc/lto/lto-symtab.cc
  37534ae509993637d7af9690433de15c  gcc/lto/lto-symtab.h
--- 6750,6756 ----
  24353553f316f6efb9d7f42253a3ec7c  gcc/lto/lto-dump.cc
  6f7bac8568b01539cfeadad94e94aa6e  gcc/lto/lto-lang.cc
  3b697054907d273bdcb6e5026d3bc875  gcc/lto/lto-object.cc
! bcc9814aad9ecf74b4e311e6ba1c87cb  gcc/lto/lto-partition.cc
  6bdee5523aaa6e7091e15f5270e1ef9f  gcc/lto/lto-partition.h
  3890271ac10891e53209884724fcb93a  gcc/lto/lto-symtab.cc
  37534ae509993637d7af9690433de15c  gcc/lto/lto-symtab.h
*************** f9608e9005487c369e6c38949ab36fa1  gcc/m2
*** 7731,7737 ****
  88e10618d6f39a411b34e2245b93307b  gcc/machmode.def
  550bdb35d0e034ca0050c574ba896d61  gcc/machmode.h
  486412acbbb6de10b080e31410a14f33  gcc/main.cc
! bc429f936218a9421e1ce9726424cb82  gcc/match.pd
  63bf182c7c3a100e101b2129976be89b  gcc/mcf.cc
  795fbbc034a60f5af7e79dbe3bac65a0  gcc/mem-stats-traits.h
  295dcd7618653c13dcf063266752d06f  gcc/mem-stats.h
--- 7736,7742 ----
  88e10618d6f39a411b34e2245b93307b  gcc/machmode.def
  550bdb35d0e034ca0050c574ba896d61  gcc/machmode.h
  486412acbbb6de10b080e31410a14f33  gcc/main.cc
! 208d87699473e48e6ca883967ec3f644  gcc/match.pd
  63bf182c7c3a100e101b2129976be89b  gcc/mcf.cc
  795fbbc034a60f5af7e79dbe3bac65a0  gcc/mem-stats-traits.h
  295dcd7618653c13dcf063266752d06f  gcc/mem-stats.h
*************** b8f8b627140b8daf237cdd93d7acd698  gcc/op
*** 7796,7802 ****
  23d7d31706fa1ace036f8659d1dcf806  gcc/opt-suggestions.h
  f731cb7ebdb94eb79e6d1f93d1f488ec  gcc/optabs-libfuncs.cc
  301353d263ba0e1eac3f3242d9e7af47  gcc/optabs-libfuncs.h
! a1718f4e4de96a072fce29c3cef4017a  gcc/optabs-query.cc
  28bb97827aab6913c7fa55727bd8cea0  gcc/optabs-query.h
  933d872e7e60ed7a16f387f74cf5dcd7  gcc/optabs-tree.cc
  295bbec8fcdeeac30d6f914e52d4adc4  gcc/optabs-tree.h
--- 7801,7807 ----
  23d7d31706fa1ace036f8659d1dcf806  gcc/opt-suggestions.h
  f731cb7ebdb94eb79e6d1f93d1f488ec  gcc/optabs-libfuncs.cc
  301353d263ba0e1eac3f3242d9e7af47  gcc/optabs-libfuncs.h
! e3dcab493cb237abbc70ee839e1fc3c0  gcc/optabs-query.cc
  28bb97827aab6913c7fa55727bd8cea0  gcc/optabs-query.h
  933d872e7e60ed7a16f387f74cf5dcd7  gcc/optabs-tree.cc
  295bbec8fcdeeac30d6f914e52d4adc4  gcc/optabs-tree.h
*************** fccd951e3de91d49d3824e482c12e070  gcc/or
*** 7823,7829 ****
  673ce61076fa80e959fe72ae50291616  gcc/output.h
  c9e6163e1eaa8f82c57f03f76e86da75  gcc/pair-fusion.cc
  b2f692287d25760afcef126c010f7078  gcc/pair-fusion.h
! 27125175b1b0f18b6557da683aff7baa  gcc/params.opt
  2cc794e23d80a8c9f057a7e402c65fb8  gcc/params.opt.urls
  818628b1b793b8f87f62d0c18fd1219a  gcc/pass_manager.h
  38b9f60b5fd192ab2d5c201b4aff3f29  gcc/passes.cc
--- 7828,7834 ----
  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
*************** e3f908061f2b051f55381b513a49022b  gcc/pa
*** 7834,7846 ****
  57048d71e78511e69e3d39d60cb2f1b7  gcc/plugin.cc
  995702441547e9826ffaea326d8be617  gcc/plugin.def
  79cd4ea374ded38e9f3ef38c1624db9e  gcc/plugin.h
! 3bcdf6222ec934641efd457a266e2d8f  gcc/po/ChangeLog
  fcae8297fb0c1be8e1502d7ca12c249f  gcc/po/EXCLUDES
  276b0e994306e3cdb1f62b8de38fa0e9  gcc/po/be.po
  4ce8480a8ed1c6ea96dcee25f16b5030  gcc/po/da.po
  537e98eeb67896ac57d739aeffc9d95c  gcc/po/de.po
  fb211887132af72dd424dd2b31d66047  gcc/po/el.po
! 12364c0b168dff335c5af2f85fe8e446  gcc/po/es.po
  748a1d219b34c4206fcf3385510cec82  gcc/po/exgettext
  6bc994ac2cef495e886c17a200067ac8  gcc/po/fi.po
  31fd60289038e7a7968d397f5a4d299f  gcc/po/fr.po
--- 7839,7851 ----
  57048d71e78511e69e3d39d60cb2f1b7  gcc/plugin.cc
  995702441547e9826ffaea326d8be617  gcc/plugin.def
  79cd4ea374ded38e9f3ef38c1624db9e  gcc/plugin.h
! ae09bd118edcce720e8ff8b726b43d84  gcc/po/ChangeLog
  fcae8297fb0c1be8e1502d7ca12c249f  gcc/po/EXCLUDES
  276b0e994306e3cdb1f62b8de38fa0e9  gcc/po/be.po
  4ce8480a8ed1c6ea96dcee25f16b5030  gcc/po/da.po
  537e98eeb67896ac57d739aeffc9d95c  gcc/po/de.po
  fb211887132af72dd424dd2b31d66047  gcc/po/el.po
! 1a807030189d04181da59ac4265acc1d  gcc/po/es.po
  748a1d219b34c4206fcf3385510cec82  gcc/po/exgettext
  6bc994ac2cef495e886c17a200067ac8  gcc/po/fi.po
  31fd60289038e7a7968d397f5a4d299f  gcc/po/fr.po
*************** c08edc659010d9072c249418c1be7fe6  gcc/rt
*** 7962,7968 ****
  ecb31a48caf7998f695601ec7350bdc0  gcc/run-rtl-passes.cc
  c4bc204b62fdb61848c09abf05a60a9d  gcc/run-rtl-passes.h
  add9bd82fcec23469a4d0f7df03d9589  gcc/rust/CONTRIBUTING.md
! 237e16cac4fdc474a6b9f8497d83ff93  gcc/rust/ChangeLog
  71972a823341f4ee0b2af7347ef7a633  gcc/rust/Make-lang.in
  f3527e161e6e2827d299c1a928ebe1c6  gcc/rust/README.md
  27f492ab17f50d840e1e0fd32a89c84a  gcc/rust/ast/rust-ast-builder.cc
--- 7967,7973 ----
  ecb31a48caf7998f695601ec7350bdc0  gcc/run-rtl-passes.cc
  c4bc204b62fdb61848c09abf05a60a9d  gcc/run-rtl-passes.h
  add9bd82fcec23469a4d0f7df03d9589  gcc/rust/CONTRIBUTING.md
! 64ce400f672922ae2e0176874fa88d71  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
*** 8001,8007 ****
  56b2d9b9ff0f8e730b276195a3614e07  gcc/rust/ast/rust-expression-yeast.cc
  5738296d90ef786d16f052f0c0ed613f  gcc/rust/ast/rust-expression-yeast.h
  b0a8d5728f73b0493b0b4aae04568187  gcc/rust/ast/rust-fmt.cc
! 60e268e282585c3236c30dd4c3dd8f54  gcc/rust/ast/rust-fmt.h
  ae61b2953e90353ab3719e3f99633865  gcc/rust/ast/rust-item.h
  d422ca6fdef486f353c824585452e285  gcc/rust/ast/rust-macro.h
  277825a1ab6df255dbe079bb8560e311  gcc/rust/ast/rust-path.cc
--- 8006,8012 ----
  56b2d9b9ff0f8e730b276195a3614e07  gcc/rust/ast/rust-expression-yeast.cc
  5738296d90ef786d16f052f0c0ed613f  gcc/rust/ast/rust-expression-yeast.h
  b0a8d5728f73b0493b0b4aae04568187  gcc/rust/ast/rust-fmt.cc
! 47fa77e4a5e65d5dde6e13fb22489869  gcc/rust/ast/rust-fmt.h
  ae61b2953e90353ab3719e3f99633865  gcc/rust/ast/rust-item.h
  d422ca6fdef486f353c824585452e285  gcc/rust/ast/rust-macro.h
  277825a1ab6df255dbe079bb8560e311  gcc/rust/ast/rust-path.cc
*************** f917b1b792e38f03fb6b295105203e25  gcc/ta
*** 8535,8541 ****
  598920a18a05f11271f5dd4aa453e76a  gcc/targhooks.cc
  96ddcc694ec42272d51a10664cd73f89  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 46381f27bfbb1f612f31f052b80897a9  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
--- 8540,8546 ----
  598920a18a05f11271f5dd4aa453e76a  gcc/targhooks.cc
  96ddcc694ec42272d51a10664cd73f89  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 9510464704879b39693a6062808fcb9a  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
*************** a2399a83d9e86c82a597d1510eb9eb8b  gcc/te
*** 17708,17714 ****
  f521c0adacbecee9cbfcbdd089681c95  gcc/testsuite/c-c++-common/asan/alloca_safe_access.c
  e4943a29b314a6337f7b56e003bd32eb  gcc/testsuite/c-c++-common/asan/alloca_underflow_left.c
  9a261f8bffecf43239790dbf2d8aca82  gcc/testsuite/c-c++-common/asan/asan-interface-1.c
! 3acc8f2042e817e0870af868f00255f9  gcc/testsuite/c-c++-common/asan/asan-stack-small.c
  966c2b8ee203d9d76e0a1b80b23e46ea  gcc/testsuite/c-c++-common/asan/attrib-1.c
  328bc4f2618808b8aed2a1e944810a42  gcc/testsuite/c-c++-common/asan/bitfield-1.c
  10b8d421313140ab0d7718aef176e779  gcc/testsuite/c-c++-common/asan/bitfield-2.c
--- 17713,17719 ----
  f521c0adacbecee9cbfcbdd089681c95  gcc/testsuite/c-c++-common/asan/alloca_safe_access.c
  e4943a29b314a6337f7b56e003bd32eb  gcc/testsuite/c-c++-common/asan/alloca_underflow_left.c
  9a261f8bffecf43239790dbf2d8aca82  gcc/testsuite/c-c++-common/asan/asan-interface-1.c
! 33242a09579709f5d2c5e6361e507d13  gcc/testsuite/c-c++-common/asan/asan-stack-small.c
  966c2b8ee203d9d76e0a1b80b23e46ea  gcc/testsuite/c-c++-common/asan/attrib-1.c
  328bc4f2618808b8aed2a1e944810a42  gcc/testsuite/c-c++-common/asan/bitfield-1.c
  10b8d421313140ab0d7718aef176e779  gcc/testsuite/c-c++-common/asan/bitfield-2.c
*************** bd92bb263ce3f4e8ba38942b69777545  gcc/te
*** 20818,20825 ****
  8fb8f015a13dbb924ae0963f603ff37a  gcc/testsuite/g++.dg/DRs/dr2578.C
  69abd62027a5c141b392afc212fa4271  gcc/testsuite/g++.dg/DRs/dr2579.C
  578ff8885e47476743d05b756870ddb1  gcc/testsuite/g++.dg/DRs/dr2580.C
! 4920fa46b327e310e3bd23d75b1c646c  gcc/testsuite/g++.dg/DRs/dr2581-1.C
! 7c1972e23dacfd6c7bf6c52400f0b5ad  gcc/testsuite/g++.dg/DRs/dr2581-2.C
  b0dfa04b7b53aefdac18e143994883bd  gcc/testsuite/g++.dg/DRs/dr2583.C
  f2f3b031e1cbc5967efb4a8bda8a5660  gcc/testsuite/g++.dg/DRs/dr2604.C
  725e812bcb1bb89bd0a89930ca5524eb  gcc/testsuite/g++.dg/DRs/dr2627.C
--- 20823,20830 ----
  8fb8f015a13dbb924ae0963f603ff37a  gcc/testsuite/g++.dg/DRs/dr2578.C
  69abd62027a5c141b392afc212fa4271  gcc/testsuite/g++.dg/DRs/dr2579.C
  578ff8885e47476743d05b756870ddb1  gcc/testsuite/g++.dg/DRs/dr2580.C
! e22dd9fbf68f4e1cf0f5d530996c8b06  gcc/testsuite/g++.dg/DRs/dr2581-1.C
! 15d39c0bc2d9d5f1598b39849b02304d  gcc/testsuite/g++.dg/DRs/dr2581-2.C
  b0dfa04b7b53aefdac18e143994883bd  gcc/testsuite/g++.dg/DRs/dr2583.C
  f2f3b031e1cbc5967efb4a8bda8a5660  gcc/testsuite/g++.dg/DRs/dr2604.C
  725e812bcb1bb89bd0a89930ca5524eb  gcc/testsuite/g++.dg/DRs/dr2627.C
*************** c66852484325a654361305c49419f459  gcc/te
*** 27061,27067 ****
  f3b34592f993c84838b0ef36dad5ed5e  gcc/testsuite/g++.dg/cpp26/expansion-stmt7.C
  68e2c6d50bfacacb8479c70ed9ed0ddc  gcc/testsuite/g++.dg/cpp26/expansion-stmt8.C
  fab75ccc959cbef8fb3183a88990faa8  gcc/testsuite/g++.dg/cpp26/expansion-stmt9.C
! d1daa73979284fc0f3c143e90ee59ff5  gcc/testsuite/g++.dg/cpp26/feat-cxx26.C
  e439504634b8fdea668e10d9fc930c63  gcc/testsuite/g++.dg/cpp26/literals1.C
  24ebebb3be412c0e507595cb8c7458f5  gcc/testsuite/g++.dg/cpp26/literals2.C
  8f5e59e0f7c8cbf6a6ab946370b7128b  gcc/testsuite/g++.dg/cpp26/name-independent-decl1.C
--- 27066,27072 ----
  f3b34592f993c84838b0ef36dad5ed5e  gcc/testsuite/g++.dg/cpp26/expansion-stmt7.C
  68e2c6d50bfacacb8479c70ed9ed0ddc  gcc/testsuite/g++.dg/cpp26/expansion-stmt8.C
  fab75ccc959cbef8fb3183a88990faa8  gcc/testsuite/g++.dg/cpp26/expansion-stmt9.C
! ecc4e011dced560dab638b382ac4b9e1  gcc/testsuite/g++.dg/cpp26/feat-cxx26.C
  e439504634b8fdea668e10d9fc930c63  gcc/testsuite/g++.dg/cpp26/literals1.C
  24ebebb3be412c0e507595cb8c7458f5  gcc/testsuite/g++.dg/cpp26/literals2.C
  8f5e59e0f7c8cbf6a6ab946370b7128b  gcc/testsuite/g++.dg/cpp26/name-independent-decl1.C
*************** f38816c5a8056b8342707cc96758d50e  gcc/te
*** 27110,27126 ****
  a4e3473e8199aabb6d134042640d65a2  gcc/testsuite/g++.dg/cpp26/trivial-infinite-loop1.C
  75514778d36a15b80b9b9646139f59a7  gcc/testsuite/g++.dg/cpp26/trivial-infinite-loop2.C
  b4519bce844d0325d874901a172f6d25  gcc/testsuite/g++.dg/cpp26/trivial-infinite-loop3.C
- c37aebe44ce11b988072a5fb712fe508  gcc/testsuite/g++.dg/cpp26/trivially-relocatable1.C
- f3d736f821f338319c51e7d4ade60ae9  gcc/testsuite/g++.dg/cpp26/trivially-relocatable10.C
- dc8f809812bf59afe37ef178fab098fd  gcc/testsuite/g++.dg/cpp26/trivially-relocatable11.C
- 1f40e88deee0016f95730afca2abc18a  gcc/testsuite/g++.dg/cpp26/trivially-relocatable2.C
- 666b14b400b7a9b3031db4fbfb96601d  gcc/testsuite/g++.dg/cpp26/trivially-relocatable3.C
- 227da3e3da0229a7e6ca1daf88c17778  gcc/testsuite/g++.dg/cpp26/trivially-relocatable4.C
- a64cbf8a0b782c27b9176e4ef8cb2a04  gcc/testsuite/g++.dg/cpp26/trivially-relocatable5.C
- 124ea22d200eb780b1e0263b6c9e5b13  gcc/testsuite/g++.dg/cpp26/trivially-relocatable6.C
- 4e8b89b832d5e7468424dc50022e2692  gcc/testsuite/g++.dg/cpp26/trivially-relocatable7.C
- a3a7d36506eb913ff87357bca3076efa  gcc/testsuite/g++.dg/cpp26/trivially-relocatable8.C
- 78d3473a482c97f91c51a1d4e7354e7a  gcc/testsuite/g++.dg/cpp26/trivially-relocatable9.C
  31b705d20ef43488e0a0926309fbf495  gcc/testsuite/g++.dg/cpp26/type-order1.C
  a3a8cba4fbee69e46ecf1bdb30c7d924  gcc/testsuite/g++.dg/cpp26/type-order2.C
  5ab0a02e85909d35b1a2b95731935c0c  gcc/testsuite/g++.dg/cpp26/type-order3.C
--- 27115,27120 ----
*************** d104145185fba3180b02bfff96944804  gcc/te
*** 29994,30001 ****
  c24c0fb32082543dfc7b57bd392ba008  gcc/testsuite/g++.dg/ext/stmtexpr8.C
  1a8af85002e8ca32cf0c099dd5920e54  gcc/testsuite/g++.dg/ext/stmtexpr9.C
  e044d983bce8db606bbd21120cc6a77d  gcc/testsuite/g++.dg/ext/strncpy-chk1.C
! 385de8b6283f9a733055fd21e48e75a9  gcc/testsuite/g++.dg/ext/sve-sizeless-1.C
! df6cd1e14435b40b03e24081b8702c69  gcc/testsuite/g++.dg/ext/sve-sizeless-2.C
  e4a78d4631d98dda8d34b1baf828c158  gcc/testsuite/g++.dg/ext/sync-1.C
  7d2ab13d9258d8fc570367eacc626bf6  gcc/testsuite/g++.dg/ext/sync-2.C
  96d325d0b1cb729ac3fd1b3d32a6b67b  gcc/testsuite/g++.dg/ext/sync-3.C
--- 29988,29995 ----
  c24c0fb32082543dfc7b57bd392ba008  gcc/testsuite/g++.dg/ext/stmtexpr8.C
  1a8af85002e8ca32cf0c099dd5920e54  gcc/testsuite/g++.dg/ext/stmtexpr9.C
  e044d983bce8db606bbd21120cc6a77d  gcc/testsuite/g++.dg/ext/strncpy-chk1.C
! 3e51142fbd4c632f5fafa65f35a19286  gcc/testsuite/g++.dg/ext/sve-sizeless-1.C
! 496dfbbef8e060d411f65535cae6b5e5  gcc/testsuite/g++.dg/ext/sve-sizeless-2.C
  e4a78d4631d98dda8d34b1baf828c158  gcc/testsuite/g++.dg/ext/sync-1.C
  7d2ab13d9258d8fc570367eacc626bf6  gcc/testsuite/g++.dg/ext/sync-2.C
  96d325d0b1cb729ac3fd1b3d32a6b67b  gcc/testsuite/g++.dg/ext/sync-3.C
*************** a5dea2e74f2c8c8639f84dc0e84112a1  gcc/te
*** 32371,32378 ****
  cedd15f6c5ea2087db7309f8e58574a4  gcc/testsuite/g++.dg/modules/circ-1_d.C
  188cf637178b71d74de58bdbada43b0d  gcc/testsuite/g++.dg/modules/class-10_a.H
  de9e83ce6d7d5406399b3d0d434e98a7  gcc/testsuite/g++.dg/modules/class-10_b.C
! d8b54e769d5e4f89f678697259efc656  gcc/testsuite/g++.dg/modules/class-11_a.H
! 79afa0ded90289d49c947dd874c0f345  gcc/testsuite/g++.dg/modules/class-11_b.C
  86586d456dae6a665b6dc0eea845c1d2  gcc/testsuite/g++.dg/modules/class-1_a.C
  52c0c896346bdeeeb006d315251b80a8  gcc/testsuite/g++.dg/modules/class-1_b.C
  10b7bdfdbc0bf357572444729f4dafc4  gcc/testsuite/g++.dg/modules/class-1_c.C
--- 32365,32372 ----
  cedd15f6c5ea2087db7309f8e58574a4  gcc/testsuite/g++.dg/modules/circ-1_d.C
  188cf637178b71d74de58bdbada43b0d  gcc/testsuite/g++.dg/modules/class-10_a.H
  de9e83ce6d7d5406399b3d0d434e98a7  gcc/testsuite/g++.dg/modules/class-10_b.C
! 7e67b5528c5e59e88bd6a3254c0f232a  gcc/testsuite/g++.dg/modules/class-11_a.H
! 3de8f8b02a4295fb5ddf207cc3bdf8d8  gcc/testsuite/g++.dg/modules/class-11_b.C
  86586d456dae6a665b6dc0eea845c1d2  gcc/testsuite/g++.dg/modules/class-1_a.C
  52c0c896346bdeeeb006d315251b80a8  gcc/testsuite/g++.dg/modules/class-1_b.C
  10b7bdfdbc0bf357572444729f4dafc4  gcc/testsuite/g++.dg/modules/class-1_c.C
*************** aea84e1ee79a28bf76003883aae845d4  gcc/te
*** 32651,32656 ****
--- 32645,32654 ----
  2630f4c41b5b8de69a1173e8e5098ec9  gcc/testsuite/g++.dg/modules/freeze-1_b.C
  b1593a47c024d179302751243a0ddf7e  gcc/testsuite/g++.dg/modules/freeze-1_c.C
  4b5838885d8482e6f45a3f476290e92f  gcc/testsuite/g++.dg/modules/freeze-1_d.C
+ d31a2e1fa6bae66ecd393c8e83384c1b  gcc/testsuite/g++.dg/modules/friend-10_a.C
+ 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
  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
*************** c8f6159c50d59c6586f5797b42391c86  gcc/te
*** 32799,32804 ****
--- 32797,32804 ----
  45ff01b5a1d0276885e30fb3445f5ed3  gcc/testsuite/g++.dg/modules/inst-5_b.C
  60bae6f4a7bfe8ecf40c92bc84aa9a4f  gcc/testsuite/g++.dg/modules/inst-6_a.C
  78bafa91ce71486fc147f8fef051956f  gcc/testsuite/g++.dg/modules/inst-6_b.C
+ 45f2bcdae473c2a99d7a5de022749d34  gcc/testsuite/g++.dg/modules/inst-7_a.C
+ 2b141f9dc25a6cb3cfca4a8e6b99e23d  gcc/testsuite/g++.dg/modules/inst-7_b.C
  a345a5bfe397e84c45d084024a9acbf2  gcc/testsuite/g++.dg/modules/internal-1.C
  e6b16a33fb2c85abf4f99ad0d5ad33bb  gcc/testsuite/g++.dg/modules/internal-10.C
  8fe7459b1e2ebdf33715cdab3dbafaf9  gcc/testsuite/g++.dg/modules/internal-11.C
*************** c087af9321ac0e24731d2a4d1bb3e319  gcc/te
*** 32813,32818 ****
--- 32813,32819 ----
  88ee381d96387e16394444459f265bfd  gcc/testsuite/g++.dg/modules/internal-16.C
  de8b65b21e105d140eb3a6820d4aff13  gcc/testsuite/g++.dg/modules/internal-17_a.C
  8114f1020d3c84955efc22dd7c18c4cb  gcc/testsuite/g++.dg/modules/internal-17_b.C
+ 8e050ce1f908224ad301706271ad39c4  gcc/testsuite/g++.dg/modules/internal-18.C
  c66d17d0fb2dc80371978510d0cc1f0f  gcc/testsuite/g++.dg/modules/internal-2_a.H
  21bb55995bb6fa8ed6a8fa69368f7f36  gcc/testsuite/g++.dg/modules/internal-2_b.H
  ba3bc4f8f333742fb78f03db052c4ffa  gcc/testsuite/g++.dg/modules/internal-2_c.C
*************** dd2b326a8be0ea4de68d4eb25ff13b1f  gcc/te
*** 33731,33736 ****
--- 33732,33740 ----
  e3bd50a245519b8174ffa1fb5209898b  gcc/testsuite/g++.dg/modules/tpl-friend-19_b.C
  051a2753ec2e8d615e18875ab2746fa8  gcc/testsuite/g++.dg/modules/tpl-friend-1_a.C
  2d9be0b173bceba0cbfd5a1ee4909f4c  gcc/testsuite/g++.dg/modules/tpl-friend-1_b.C
+ d46392e2e61c96272e82ad0024f14ea6  gcc/testsuite/g++.dg/modules/tpl-friend-20_a.C
+ b4e69615ec86a3c4ede133d9854f3546  gcc/testsuite/g++.dg/modules/tpl-friend-20_b.C
+ d1d4183ea84a4413d4d7349cc9a82217  gcc/testsuite/g++.dg/modules/tpl-friend-20_c.C
  d36e0a1f34b1d7f2cacd00844d768335  gcc/testsuite/g++.dg/modules/tpl-friend-2_a.C
  4511743d659541c1148b76a234b62a41  gcc/testsuite/g++.dg/modules/tpl-friend-2_b.C
  95a880cc0f3eee2ff8309d2183f7f9d4  gcc/testsuite/g++.dg/modules/tpl-friend-3_a.C
*************** ab9ad3f69ee578c68df73507b4f930a9  gcc/te
*** 33743,33750 ****
  b51b053beacc19bf223fb0111d5cc38e  gcc/testsuite/g++.dg/modules/tpl-friend-6_b.C
  940f3e9291fe7841eb211bd483df6203  gcc/testsuite/g++.dg/modules/tpl-friend-7_a.C
  47ca0ba1815983a6f1f480f0edf3d827  gcc/testsuite/g++.dg/modules/tpl-friend-7_b.C
! 2f120706e28ff59f870efb60b9ffe17d  gcc/testsuite/g++.dg/modules/tpl-friend-8_a.H
! f491c55bfd930e25725bbc56c05907dd  gcc/testsuite/g++.dg/modules/tpl-friend-8_b.C
  9ef1cd5364bcb19c7287ad5314406701  gcc/testsuite/g++.dg/modules/tpl-friend-9.C
  34f345480583a302fca05d661038880e  gcc/testsuite/g++.dg/modules/tpl-friend-merge-1.cc
  429f3d1daac109d3a2717ed74c3368a4  gcc/testsuite/g++.dg/modules/tpl-friend-merge-1.h
--- 33747,33754 ----
  b51b053beacc19bf223fb0111d5cc38e  gcc/testsuite/g++.dg/modules/tpl-friend-6_b.C
  940f3e9291fe7841eb211bd483df6203  gcc/testsuite/g++.dg/modules/tpl-friend-7_a.C
  47ca0ba1815983a6f1f480f0edf3d827  gcc/testsuite/g++.dg/modules/tpl-friend-7_b.C
! b9e20075a1fd7bf724ef955f0dc87ba9  gcc/testsuite/g++.dg/modules/tpl-friend-8_a.H
! d5e6f8dd39c4f9a728a49df944374eda  gcc/testsuite/g++.dg/modules/tpl-friend-8_b.C
  9ef1cd5364bcb19c7287ad5314406701  gcc/testsuite/g++.dg/modules/tpl-friend-9.C
  34f345480583a302fca05d661038880e  gcc/testsuite/g++.dg/modules/tpl-friend-merge-1.cc
  429f3d1daac109d3a2717ed74c3368a4  gcc/testsuite/g++.dg/modules/tpl-friend-merge-1.h
*************** c42022b1e3d2c0964d349eec1c2253a7  gcc/te
*** 33871,33876 ****
--- 33875,33882 ----
  b9c78848e5510504b2065d85656d575b  gcc/testsuite/g++.dg/modules/using-31_b.C
  bef5e193834f5468e4e4fc83a16d475d  gcc/testsuite/g++.dg/modules/using-32_a.C
  2dd22af7e6631945332b03fde27ff5db  gcc/testsuite/g++.dg/modules/using-32_b.C
+ 52f40637384516ccc35ac0f9f6315285  gcc/testsuite/g++.dg/modules/using-33_a.C
+ 82f21c15665bead6f4f0ec71d334df05  gcc/testsuite/g++.dg/modules/using-33_b.C
  bcc6cc64890192d647d85da41996ed1e  gcc/testsuite/g++.dg/modules/using-4_a.C
  f7d6d7386bd922589ea2e579fdd741e5  gcc/testsuite/g++.dg/modules/using-4_b.C
  0650e45892eb431529641f277d164339  gcc/testsuite/g++.dg/modules/using-5_a.C
*************** d41d8cd98f00b204e9800998ecf8427e  gcc/te
*** 35629,35636 ****
  29dd06c9a93f1d28d7d1b11b164a7efe  gcc/testsuite/g++.dg/pch/line-map-1.Hs
  2c0817d088bccb3d2e72fe1a30899a59  gcc/testsuite/g++.dg/pch/line-map-2.C
  29dd06c9a93f1d28d7d1b11b164a7efe  gcc/testsuite/g++.dg/pch/line-map-2.Hs
! 3de8e87d02fb3b00ee93cf5d0f4a94f5  gcc/testsuite/g++.dg/pch/line-map-3.C
  29dd06c9a93f1d28d7d1b11b164a7efe  gcc/testsuite/g++.dg/pch/line-map-3.Hs
  3456d98b10198c0bf9091088ba05d0f0  gcc/testsuite/g++.dg/pch/local-1.C
  1b5d28bf11bae4996001396e1ffe083b  gcc/testsuite/g++.dg/pch/local-1.Hs
  736c76aa75561ebe78be5895bc205db9  gcc/testsuite/g++.dg/pch/main-file-warnings.C
--- 35635,35644 ----
  29dd06c9a93f1d28d7d1b11b164a7efe  gcc/testsuite/g++.dg/pch/line-map-1.Hs
  2c0817d088bccb3d2e72fe1a30899a59  gcc/testsuite/g++.dg/pch/line-map-2.C
  29dd06c9a93f1d28d7d1b11b164a7efe  gcc/testsuite/g++.dg/pch/line-map-2.Hs
! 54f075c01ad730aced52dfbed38e152e  gcc/testsuite/g++.dg/pch/line-map-3.C
  29dd06c9a93f1d28d7d1b11b164a7efe  gcc/testsuite/g++.dg/pch/line-map-3.Hs
+ 60d8465aedea379514e04f24f1a6cd17  gcc/testsuite/g++.dg/pch/line-map-4.C
+ 29dd06c9a93f1d28d7d1b11b164a7efe  gcc/testsuite/g++.dg/pch/line-map-4.Hs
  3456d98b10198c0bf9091088ba05d0f0  gcc/testsuite/g++.dg/pch/local-1.C
  1b5d28bf11bae4996001396e1ffe083b  gcc/testsuite/g++.dg/pch/local-1.Hs
  736c76aa75561ebe78be5895bc205db9  gcc/testsuite/g++.dg/pch/main-file-warnings.C
*************** ad9259e6bdf3bdde202871cc62bd27bb  gcc/te
*** 35743,35748 ****
--- 35751,35757 ----
  d817d87f4590a7694dcb15ea0a0856a3  gcc/testsuite/g++.dg/pr115605.C
  af4c6212c5e52bf135c1867c6656d88b  gcc/testsuite/g++.dg/pr117222.C
  907af190ec2f3efd086d2b352c9934cd  gcc/testsuite/g++.dg/pr117919.C
+ e736fe25d4b99f710b70de0825fffdc1  gcc/testsuite/g++.dg/pr121345.C
  80867666af42eef238ead0c293e5bc0e  gcc/testsuite/g++.dg/pr121757.C
  2ac64817a39fe1a5c2dc328f4233cda1  gcc/testsuite/g++.dg/pr37742.C
  32b2fbda29ffd2ac2181c43c971f3a7d  gcc/testsuite/g++.dg/pr44328.C
*************** f298eddbaaad3dfdc15f6cf9683ff08a  gcc/te
*** 37956,37961 ****
--- 37965,37971 ----
  a7a00125ef903c9e5ba25788e8c60eab  gcc/testsuite/g++.dg/torture/pr120721.C
  75b55c517ba9c0f47c83851f084cb294  gcc/testsuite/g++.dg/torture/pr121870.C
  335f20fd55847f9861ff378b9be0f1bc  gcc/testsuite/g++.dg/torture/pr122589.C
+ 04115c46931023150cac2508ab43b9ff  gcc/testsuite/g++.dg/torture/pr122663.C
  161154ed9f6193a2a7da119e068c3f3f  gcc/testsuite/g++.dg/torture/pr27218.C
  a84e9fff95df4801f8e582fbc33303b8  gcc/testsuite/g++.dg/torture/pr30252.C
  e980bf95890544d46879b89f7aa98df6  gcc/testsuite/g++.dg/torture/pr30567.C
*************** a96998418d91d4b5dc3f731cea3de4a2  gcc/te
*** 38563,38569 ****
  8e86c1b355d9ed5ad78d7f6211d5f327  gcc/testsuite/g++.dg/tree-ssa/pr114589.C
  1ed2f7f5509c5567092c5b86b727d17e  gcc/testsuite/g++.dg/tree-ssa/pr115275.C
  1865c2c1e91d7842887b0fbc0a5a8cbc  gcc/testsuite/g++.dg/tree-ssa/pr116868.C
! 0c911fc6a4e7b6d42fea1d5986454ce2  gcc/testsuite/g++.dg/tree-ssa/pr117123.C
  82fde88840bd9ced80ca703c33fb8d73  gcc/testsuite/g++.dg/tree-ssa/pr117965-1.C
  201851a6bde948fe39368db60e2fedc7  gcc/testsuite/g++.dg/tree-ssa/pr117965-2.C
  284302237efd60e1d517c0925cad7644  gcc/testsuite/g++.dg/tree-ssa/pr118924.C
--- 38573,38579 ----
  8e86c1b355d9ed5ad78d7f6211d5f327  gcc/testsuite/g++.dg/tree-ssa/pr114589.C
  1ed2f7f5509c5567092c5b86b727d17e  gcc/testsuite/g++.dg/tree-ssa/pr115275.C
  1865c2c1e91d7842887b0fbc0a5a8cbc  gcc/testsuite/g++.dg/tree-ssa/pr116868.C
! 73c27718ec3b9a0e61a4bcb3fb1a28a3  gcc/testsuite/g++.dg/tree-ssa/pr117123.C
  82fde88840bd9ced80ca703c33fb8d73  gcc/testsuite/g++.dg/tree-ssa/pr117965-1.C
  201851a6bde948fe39368db60e2fedc7  gcc/testsuite/g++.dg/tree-ssa/pr117965-2.C
  284302237efd60e1d517c0925cad7644  gcc/testsuite/g++.dg/tree-ssa/pr118924.C
*************** c299a2e8f2fcb74286fbc4d6d1cf115d  gcc/te
*** 38918,38924 ****
  5786bf78cee1b70c9836b60ec34f42ba  gcc/testsuite/g++.dg/uninit-pred-3_a.C
  e7062d8b8ae34f0a4f8b5b407e180316  gcc/testsuite/g++.dg/uninit-pred-3_b.C
  5ee1b7f723d2f67283e9a5a7eb0c38f1  gcc/testsuite/g++.dg/uninit-pred-4.C
! d403029994bed5e01d1267a0905e9d3c  gcc/testsuite/g++.dg/uninit-pred-5.C
  2fcbc57bdfc93414220095e1211dcd11  gcc/testsuite/g++.dg/uninit-pred-loop-1_a.C
  fb9b4b2ef2067f8347522c6501c079b3  gcc/testsuite/g++.dg/uninit-pred-loop-1_b.C
  f3b08920b6f4d781731cb5137313588c  gcc/testsuite/g++.dg/uninit-pred-loop-1_c.C
--- 38928,38934 ----
  5786bf78cee1b70c9836b60ec34f42ba  gcc/testsuite/g++.dg/uninit-pred-3_a.C
  e7062d8b8ae34f0a4f8b5b407e180316  gcc/testsuite/g++.dg/uninit-pred-3_b.C
  5ee1b7f723d2f67283e9a5a7eb0c38f1  gcc/testsuite/g++.dg/uninit-pred-4.C
! fbf3c2ee5d22db5d628b589e960354de  gcc/testsuite/g++.dg/uninit-pred-5.C
  2fcbc57bdfc93414220095e1211dcd11  gcc/testsuite/g++.dg/uninit-pred-loop-1_a.C
  fb9b4b2ef2067f8347522c6501c079b3  gcc/testsuite/g++.dg/uninit-pred-loop-1_b.C
  f3b08920b6f4d781731cb5137313588c  gcc/testsuite/g++.dg/uninit-pred-loop-1_c.C
*************** b7574f2c87be7256484ba89a7bb8ec06  gcc/te
*** 38949,38954 ****
--- 38959,38965 ----
  0ce4b36a20f45df8b6cff16c2a001cca  gcc/testsuite/g++.dg/vect/pr116817.cc
  db187ae2fd0c35306cac339c19f6fcf6  gcc/testsuite/g++.dg/vect/pr117776.cc
  a045a81b6625a89ef0797ce8a3b56200  gcc/testsuite/g++.dg/vect/pr121685-1.cc
+ 9b9c687f1e4fd2f993684bbcadddc323  gcc/testsuite/g++.dg/vect/pr122647.cc
  02ab0e7dea4c30ddeaecb971c0b8241e  gcc/testsuite/g++.dg/vect/pr19951.cc
  e7c5a636a280962b70166d1494223f9c  gcc/testsuite/g++.dg/vect/pr21218.cc
  9a0a6f56bdb2cc697abc78c901418a19  gcc/testsuite/g++.dg/vect/pr21734_1.cc
*************** c84bc79847f1966edf2b1f4b3b013e19  gcc/te
*** 39269,39284 ****
  f1360330e2c03adfb9e1efd9136d3f31  gcc/testsuite/g++.dg/warn/Winterference.H
  617b1baf48ffae995c6198567500b3c3  gcc/testsuite/g++.dg/warn/Winvalid-memory-model-2.C
  6cb792f5a5a29a4931676fce151db135  gcc/testsuite/g++.dg/warn/Winvalid-memory-model.C
! 9892866e93065c63d21a041bed018786  gcc/testsuite/g++.dg/warn/Wkeyword-macro-1.C
! 69a95375f9ec90d0ea882d5b38667092  gcc/testsuite/g++.dg/warn/Wkeyword-macro-10.C
! d70f40bbe3de45d02b3b9464dd2fd1a2  gcc/testsuite/g++.dg/warn/Wkeyword-macro-2.C
  31939dacc894b83bf87b967919a9307f  gcc/testsuite/g++.dg/warn/Wkeyword-macro-3.C
! 23c2089facf44efd5fc0c5edf0cf2dfa  gcc/testsuite/g++.dg/warn/Wkeyword-macro-4.C
! bfa867728f422f80e3d3773e323397f7  gcc/testsuite/g++.dg/warn/Wkeyword-macro-5.C
  a3c8283eeafbf13da92766551f2fd977  gcc/testsuite/g++.dg/warn/Wkeyword-macro-6.C
! fb683f88dc4c6bdfdf0b0aa526feddde  gcc/testsuite/g++.dg/warn/Wkeyword-macro-7.C
! 6dc7f34b4c1d6df03dd513c387f40fa7  gcc/testsuite/g++.dg/warn/Wkeyword-macro-8.C
! 5c8da833822a96e0b85ee873b7e5a048  gcc/testsuite/g++.dg/warn/Wkeyword-macro-9.C
  90a871726cae9dea93ce0da4b5bb7b2c  gcc/testsuite/g++.dg/warn/Wlogical-op-1.C
  13ee95f1cd2836b595541e2a9917c06d  gcc/testsuite/g++.dg/warn/Wlogical-op-2.C
  73a4aa4570ee8ec2a83f04a672162a02  gcc/testsuite/g++.dg/warn/Wlogical-op-3.C
--- 39280,39295 ----
  f1360330e2c03adfb9e1efd9136d3f31  gcc/testsuite/g++.dg/warn/Winterference.H
  617b1baf48ffae995c6198567500b3c3  gcc/testsuite/g++.dg/warn/Winvalid-memory-model-2.C
  6cb792f5a5a29a4931676fce151db135  gcc/testsuite/g++.dg/warn/Winvalid-memory-model.C
! 34db2f7209b348047fb00924754975af  gcc/testsuite/g++.dg/warn/Wkeyword-macro-1.C
! 46a0dc2739da6ef3dec0ccf4a8f1bd5d  gcc/testsuite/g++.dg/warn/Wkeyword-macro-10.C
! 8289c05e61a6e2a62fba79fe5b86504a  gcc/testsuite/g++.dg/warn/Wkeyword-macro-2.C
  31939dacc894b83bf87b967919a9307f  gcc/testsuite/g++.dg/warn/Wkeyword-macro-3.C
! e13ddcf0d17a8dbff902384c94492077  gcc/testsuite/g++.dg/warn/Wkeyword-macro-4.C
! b1b74991577f5555021582344f117413  gcc/testsuite/g++.dg/warn/Wkeyword-macro-5.C
  a3c8283eeafbf13da92766551f2fd977  gcc/testsuite/g++.dg/warn/Wkeyword-macro-6.C
! 9d4e645921de548093f9fc89214da439  gcc/testsuite/g++.dg/warn/Wkeyword-macro-7.C
! 415572e8e5dd27ae5d5045cec3bd1a01  gcc/testsuite/g++.dg/warn/Wkeyword-macro-8.C
! 54ec408185e87ed7c6df79dfec246f29  gcc/testsuite/g++.dg/warn/Wkeyword-macro-9.C
  90a871726cae9dea93ce0da4b5bb7b2c  gcc/testsuite/g++.dg/warn/Wlogical-op-1.C
  13ee95f1cd2836b595541e2a9917c06d  gcc/testsuite/g++.dg/warn/Wlogical-op-2.C
  73a4aa4570ee8ec2a83f04a672162a02  gcc/testsuite/g++.dg/warn/Wlogical-op-3.C
*************** cd7682bd90a892784fc019e3e84ef480  gcc/te
*** 43418,43425 ****
  ee26ccb05d313a2a210ca66f5435de9e  gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/get4_1.C
  80fec46112a1e3aa54175ac1fa6929ca  gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/get4_2.C
  e1aa0b4c7b2d19b8884dbe1e3cd6fb3c  gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gimplify_1.C
! db2ae8f63276334e3a7e0a10648b3c5f  gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_1.C
! 308f3c240b5c210387e7254157288972  gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_2.C
  bf079e3eef75eeeac3ff827b3a8624f0  gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C
  080af5a2a0700b55236617c1664d8616  gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C
  8e22ba35c57dee2de3fb760d237e58d8  gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/lsl_wide_1.C
--- 43429,43436 ----
  ee26ccb05d313a2a210ca66f5435de9e  gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/get4_1.C
  80fec46112a1e3aa54175ac1fa6929ca  gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/get4_2.C
  e1aa0b4c7b2d19b8884dbe1e3cd6fb3c  gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gimplify_1.C
! 8d1b5d70661c624bad4cd32db258c9e3  gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_1.C
! 35eff1fb3244cb4714435fb0cbc5f6d7  gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_2.C
  bf079e3eef75eeeac3ff827b3a8624f0  gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C
  080af5a2a0700b55236617c1664d8616  gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C
  8e22ba35c57dee2de3fb760d237e58d8  gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/lsl_wide_1.C
*************** c6fc9957abb94d73bf6685e341312513  gcc/te
*** 43767,43772 ****
--- 43778,43793 ----
  38180dda246555aa4a3e76db7cd452f1  gcc/testsuite/g++.target/i386/pr120036.C
  8648be4dade032c24c786b68f4353c67  gcc/testsuite/g++.target/i386/pr120819.C
  fe0c4541682a8b2806aac4868c0ee61c  gcc/testsuite/g++.target/i386/pr120830.C
+ 8881751e1efd14bcab3460abca01e627  gcc/testsuite/g++.target/i386/pr122446-1.C
+ 431f2273aedbab5747602c80152b78fd  gcc/testsuite/g++.target/i386/pr122446-amxavx512.C
+ e7e909b0858a352117bc6ee5a8fcafc7  gcc/testsuite/g++.target/i386/pr122446-amxbf16.C
+ b48e2095b969e9e4d541b80007eaed1f  gcc/testsuite/g++.target/i386/pr122446-amxcomplex.C
+ ea015573ee8ddabae38c2a615f8228fb  gcc/testsuite/g++.target/i386/pr122446-amxfp16.C
+ 38f98e80df657040e7cd34e280ccd4c0  gcc/testsuite/g++.target/i386/pr122446-amxfp8.C
+ 59ffb1a0656cc43a87c4b7e240fb28c6  gcc/testsuite/g++.target/i386/pr122446-amxint8.C
+ 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
  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
*************** dfaa547e8fb7df38c4d964cefef4b708  gcc/te
*** 43839,43844 ****
--- 43860,43876 ----
  068f4d2aa43f4cb0f840066ea19bc476  gcc/testsuite/g++.target/loongarch/crc.C
  5214c6c826b3d987e041fc28a0ba7a29  gcc/testsuite/g++.target/loongarch/got-load.C
  868a134a1623856acf8457d0e3e79317  gcc/testsuite/g++.target/loongarch/loongarch.exp
+ 3ca321fec4f8a0fe6d220d0669db80a4  gcc/testsuite/g++.target/loongarch/mv-symbols1.C
+ 4f24154ce83c15998949b612c0307178  gcc/testsuite/g++.target/loongarch/mv-symbols2.C
+ 45ce9b941b67b36a1b91aa9b4c4aa6cd  gcc/testsuite/g++.target/loongarch/mv-symbols3.C
+ 3e646c5c867d1be9cc2b80918a66b5aa  gcc/testsuite/g++.target/loongarch/mv-symbols4.C
+ 457c033d971303c469b91bff719ad7c6  gcc/testsuite/g++.target/loongarch/mv-symbols5.C
+ 5ea77ebc34e20f2d867861d653c4c6b1  gcc/testsuite/g++.target/loongarch/mv-symbols6.C
+ 3846f891b36119ac958fe29fab75d4ba  gcc/testsuite/g++.target/loongarch/mvc-symbols1.C
+ 5fc5daedec691a8c7258f9426c5d1042  gcc/testsuite/g++.target/loongarch/mvc-symbols2.C
+ 80a6adb07b9e7c5e7ab52c5b8d239a46  gcc/testsuite/g++.target/loongarch/mvc-symbols3.C
+ c79154d30246903274765e2b9d7c357f  gcc/testsuite/g++.target/loongarch/mvc-symbols4.C
+ 24bcd366c1f73bbdb2384bbd350965f1  gcc/testsuite/g++.target/loongarch/mvc-symbols5.C
  3e379ce66f2b5fd83481c50aad661033  gcc/testsuite/g++.target/loongarch/pr106096.C
  91c50652b11a6f7dde25e6d7bba552c9  gcc/testsuite/g++.target/loongarch/pr106828.C
  70627fc5a9aed381933cfeb46e0cafe1  gcc/testsuite/g++.target/loongarch/vect-ashr-lshr.C
*************** e781844c1655d36c9b6e04d59aad8996  gcc/te
*** 51305,51311 ****
  3a476a2d0c391587638c234c7b082c5a  gcc/testsuite/gcc.dg/conv-2.c
  89b18c0becd2933f025acc401a0aeaf8  gcc/testsuite/gcc.dg/conv-3.c
  c797c0159985b6cfaaf4ab160451c3a4  gcc/testsuite/gcc.dg/countof-compat.c
! 0f09a247339fa2424e036901f8dcafde  gcc/testsuite/gcc.dg/countof-compile.c
  608b1948fb6a190311fada69744220cd  gcc/testsuite/gcc.dg/countof-no-compat.c
  7eafaa58e5bb4cc4c83cb69e9e31f04c  gcc/testsuite/gcc.dg/countof-pedantic-errors.c
  81a7004a604039f5fe3afa412103c8ef  gcc/testsuite/gcc.dg/countof-pedantic.c
--- 51337,51343 ----
  3a476a2d0c391587638c234c7b082c5a  gcc/testsuite/gcc.dg/conv-2.c
  89b18c0becd2933f025acc401a0aeaf8  gcc/testsuite/gcc.dg/conv-3.c
  c797c0159985b6cfaaf4ab160451c3a4  gcc/testsuite/gcc.dg/countof-compat.c
! cfd1e5fcba6e1e17d853d6d14a40057b  gcc/testsuite/gcc.dg/countof-compile.c
  608b1948fb6a190311fada69744220cd  gcc/testsuite/gcc.dg/countof-no-compat.c
  7eafaa58e5bb4cc4c83cb69e9e31f04c  gcc/testsuite/gcc.dg/countof-pedantic-errors.c
  81a7004a604039f5fe3afa412103c8ef  gcc/testsuite/gcc.dg/countof-pedantic.c
*************** ce39b21091008775415dbe099db0aaf5  gcc/te
*** 54961,54966 ****
--- 54993,54999 ----
  7f03e9f210325e44859aafac7ad2f239  gcc/testsuite/gcc.dg/lto/pr122515_7.c
  6028a2dec4dfcb2bf14d8b228fb95959  gcc/testsuite/gcc.dg/lto/pr122515_8.c
  ba260514a6f9ba02270018e5ccb3fc9c  gcc/testsuite/gcc.dg/lto/pr122515_9.c
+ dd18439fd9c81ba8af7f920a1dd80a20  gcc/testsuite/gcc.dg/lto/pr122603_0.c
  5192817b2492ca93ffadce3b4a5e4794  gcc/testsuite/gcc.dg/lto/pr27898_0.c
  c5f48897247dfaec60df4e32beffcd8e  gcc/testsuite/gcc.dg/lto/pr27898_1.c
  2ad724786bc4b555a7f31e8b3bf164b6  gcc/testsuite/gcc.dg/lto/pr28706_0.c
*************** a9c2bd4786300d7cf805e7ef57335a2c  gcc/te
*** 55110,55115 ****
--- 55143,55152 ----
  d0f7ad775f7535709bd76a4c558f1a51  gcc/testsuite/gcc.dg/mallign.c
  3c60c6cb5a37e01b4d0de4ac16f26aed  gcc/testsuite/gcc.dg/march-generic.c
  5fffcdfefb3c530e1b472e8397d647cb  gcc/testsuite/gcc.dg/march.c
+ 5f1e227630e9963b5a31cd20451cdb04  gcc/testsuite/gcc.dg/match-shift-cmp-1.c
+ 8d709d3ae93b62a8a369b075ca446b33  gcc/testsuite/gcc.dg/match-shift-cmp-2.c
+ 3bbcc412f116de96d912905b769af69d  gcc/testsuite/gcc.dg/match-shift-cmp-3.c
+ d6080fa0b526e4e4a95b761a98836a8e  gcc/testsuite/gcc.dg/match-shift-cmp-4.c
  797c5b8279b119e196b60ddd82ff6200  gcc/testsuite/gcc.dg/max-1.c
  1a4cdf01852ee814e663ce4a12f81332  gcc/testsuite/gcc.dg/max.c
  2eb99e685dc27ff7c74d04a147795043  gcc/testsuite/gcc.dg/memchr-2.c
*************** f9c7b381fd9a66507c89840b72cbbd96  gcc/te
*** 55674,55679 ****
--- 55711,55717 ----
  4644aff4e3d9b41ef0b44eb441b3e574  gcc/testsuite/gcc.dg/plugin/known-fns-1.c
  d3e84ae842f69911a3ac0ceb96542627  gcc/testsuite/gcc.dg/plugin/location-overflow-test-1.c
  b584a46252319e63ce8a18cd3d89f07c  gcc/testsuite/gcc.dg/plugin/location-overflow-test-2.c
+ fe003478e6d8c2bb947402b78ce24063  gcc/testsuite/gcc.dg/plugin/location-overflow-test-3.c
  9e170fe1467d0a1b2ec0d3baf50cff4b  gcc/testsuite/gcc.dg/plugin/location-overflow-test-pr116047-1.h
  668a3b5ad920346b135fa852ca249d17  gcc/testsuite/gcc.dg/plugin/location-overflow-test-pr116047-2.h
  be795e2075413ef468ce241bac4503e2  gcc/testsuite/gcc.dg/plugin/location-overflow-test-pr116047.c
*************** c323b7b4ac0cf2caa641c6bb31350375  gcc/te
*** 55690,55696 ****
  4905199fc259967af414db22821f7f74  gcc/testsuite/gcc.dg/plugin/must_tail_call_plugin.cc
  adbc6d60d6e1474ca93af3b50208e741  gcc/testsuite/gcc.dg/plugin/one_time-test-1.c
  91500c30c78de7048ecb72b86a431e80  gcc/testsuite/gcc.dg/plugin/one_time_plugin.cc
! 6783535df722f5382a790961de26ab84  gcc/testsuite/gcc.dg/plugin/plugin.exp
  10b87cc378ff8b6e30ae77af8c669e4b  gcc/testsuite/gcc.dg/plugin/plugindir1.c
  770fbe5bf2a65884c6120dab4b13a1d4  gcc/testsuite/gcc.dg/plugin/plugindir2.c
  5be673fb13573d3689c3cc3dff9f5a2e  gcc/testsuite/gcc.dg/plugin/plugindir3.c
--- 55728,55734 ----
  4905199fc259967af414db22821f7f74  gcc/testsuite/gcc.dg/plugin/must_tail_call_plugin.cc
  adbc6d60d6e1474ca93af3b50208e741  gcc/testsuite/gcc.dg/plugin/one_time-test-1.c
  91500c30c78de7048ecb72b86a431e80  gcc/testsuite/gcc.dg/plugin/one_time_plugin.cc
! f43efd994d1489bf776959c6d00930fd  gcc/testsuite/gcc.dg/plugin/plugin.exp
  10b87cc378ff8b6e30ae77af8c669e4b  gcc/testsuite/gcc.dg/plugin/plugindir1.c
  770fbe5bf2a65884c6120dab4b13a1d4  gcc/testsuite/gcc.dg/plugin/plugindir2.c
  5be673fb13573d3689c3cc3dff9f5a2e  gcc/testsuite/gcc.dg/plugin/plugindir3.c
*************** ef83c05a9501eeb220dfbcfbe176575e  gcc/te
*** 55864,55870 ****
  3cc3131778a8709d2331de3fa630fd84  gcc/testsuite/gcc.dg/pr102892-2.c
  c045562529677f5cb7d484f9a1528485  gcc/testsuite/gcc.dg/pr102897.c
  c8eff45b51c94e89b3b09b1a17943808  gcc/testsuite/gcc.dg/pr102950.c
! bdd6d43d4d29c6364c8fcfdc04dc9dc7  gcc/testsuite/gcc.dg/pr102983.c
  788d5650aced9b0553d7571feda572c6  gcc/testsuite/gcc.dg/pr103003.c
  11b2d6d5fe2e6b7e01f567ce3bb16ad4  gcc/testsuite/gcc.dg/pr103028.c
  7ee0c5d807884f2fbee926b391d31764  gcc/testsuite/gcc.dg/pr103062.c
--- 55902,55908 ----
  3cc3131778a8709d2331de3fa630fd84  gcc/testsuite/gcc.dg/pr102892-2.c
  c045562529677f5cb7d484f9a1528485  gcc/testsuite/gcc.dg/pr102897.c
  c8eff45b51c94e89b3b09b1a17943808  gcc/testsuite/gcc.dg/pr102950.c
! 70700ef4a8a88233db350816c2b529c9  gcc/testsuite/gcc.dg/pr102983.c
  788d5650aced9b0553d7571feda572c6  gcc/testsuite/gcc.dg/pr103003.c
  11b2d6d5fe2e6b7e01f567ce3bb16ad4  gcc/testsuite/gcc.dg/pr103028.c
  7ee0c5d807884f2fbee926b391d31764  gcc/testsuite/gcc.dg/pr103062.c
*************** fcc3a6f68a967a257f515d11f06532c2  gcc/te
*** 60196,60201 ****
--- 60234,60242 ----
  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
+ 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
  ded4330fd1cd52783bd9b1761db038ef  gcc/testsuite/gcc.dg/torture/pr16104-1.c
  fc265ee05da2f29f0e92804661cd1f28  gcc/testsuite/gcc.dg/torture/pr17526.c
  01c583edb41b632b835aa892b9c1cb14  gcc/testsuite/gcc.dg/torture/pr17933-1.c
*************** cb909e7812f73f90414b63042c95d199  gcc/te
*** 61974,61980 ****
  eb894750e8c2c762096d861a6009f51a  gcc/testsuite/gcc.dg/tree-ssa/forwprop-40.c
  de3171692db53449fdcaa8f1c1e1676c  gcc/testsuite/gcc.dg/tree-ssa/forwprop-41.c
  4c3d8a17c3c05c47aeb8205fb8aca518  gcc/testsuite/gcc.dg/tree-ssa/forwprop-42.c
! e79a497d4614d3d2319f6c0f94ff5a31  gcc/testsuite/gcc.dg/tree-ssa/forwprop-43.c
  d56422e63543fcf4bf4b78d825c534da  gcc/testsuite/gcc.dg/tree-ssa/forwprop-5.c
  0f6dc2b3b3469af9cd27d5b5cd97353c  gcc/testsuite/gcc.dg/tree-ssa/forwprop-6.c
  a9096c4b5b756bdc9dcc196398730d73  gcc/testsuite/gcc.dg/tree-ssa/forwprop-7.c
--- 62015,62021 ----
  eb894750e8c2c762096d861a6009f51a  gcc/testsuite/gcc.dg/tree-ssa/forwprop-40.c
  de3171692db53449fdcaa8f1c1e1676c  gcc/testsuite/gcc.dg/tree-ssa/forwprop-41.c
  4c3d8a17c3c05c47aeb8205fb8aca518  gcc/testsuite/gcc.dg/tree-ssa/forwprop-42.c
! 6e8a61c186677d7de798d02da48c8fbf  gcc/testsuite/gcc.dg/tree-ssa/forwprop-43.c
  d56422e63543fcf4bf4b78d825c534da  gcc/testsuite/gcc.dg/tree-ssa/forwprop-5.c
  0f6dc2b3b3469af9cd27d5b5cd97353c  gcc/testsuite/gcc.dg/tree-ssa/forwprop-6.c
  a9096c4b5b756bdc9dcc196398730d73  gcc/testsuite/gcc.dg/tree-ssa/forwprop-7.c
*************** f4c56a02709c699f81b07b81dd1a2c1e  gcc/te
*** 62562,62567 ****
--- 62603,62609 ----
  6564cdc8a2e0bef445546d4a4df278f9  gcc/testsuite/gcc.dg/tree-ssa/pr122153-1.c
  73226ac793de9237622d64ee6a7399cc  gcc/testsuite/gcc.dg/tree-ssa/pr122478.c
  de81b2d2951773077a5d5e6d9db8a8e4  gcc/testsuite/gcc.dg/tree-ssa/pr122588-1.c
+ ab985bcbd18463ddcc0cb59b8a091e7d  gcc/testsuite/gcc.dg/tree-ssa/pr122629-1.c
  78e6c5fe63f7305009c8a79840fe20dc  gcc/testsuite/gcc.dg/tree-ssa/pr13146.c
  eab19e0c04884cd782c9879cbe292109  gcc/testsuite/gcc.dg/tree-ssa/pr14341.c
  9945ed7002a5f7d4918e8ff5eb4cb647  gcc/testsuite/gcc.dg/tree-ssa/pr14490-1.c
*************** f217e7eaaf0fa982496dcfbf0c1b65fa  gcc/te
*** 63266,63271 ****
--- 63308,63314 ----
  345f346d2664e3f4e7b0d92c6b91cd55  gcc/testsuite/gcc.dg/tree-ssa/scev-13.c
  8c83b125bec2afaa6eba2f0385dc4625  gcc/testsuite/gcc.dg/tree-ssa/scev-14.c
  d396c36b9f0d747b966a2da9958bc3ac  gcc/testsuite/gcc.dg/tree-ssa/scev-15.c
+ 9c8abcab6bd02788731e27ea02ed49a8  gcc/testsuite/gcc.dg/tree-ssa/scev-16.c
  4323482b616b668100a20fa9ef8249fa  gcc/testsuite/gcc.dg/tree-ssa/scev-2.c
  219839db1cd5ee662a1d6dfd20d04a13  gcc/testsuite/gcc.dg/tree-ssa/scev-6.c
  2a4d896a7956f73ba5c280f397c5d479  gcc/testsuite/gcc.dg/tree-ssa/scev-7.c
*************** c80e73a06995d8806bc8a56ee1df1346  gcc/te
*** 63432,63438 ****
  05aea1a4d7030c5cf55b50b84dc9f78f  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-2g.c
  15738f38675ee569391bc24effefc64b  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-2h.c
  881f6db6cb1a3e63bf8dd2e0f203cc95  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-5.c
! 4815e1eab046e440d849ed6fad5ed1aa  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c
  de890ed0b8a4a8f0e19572bf759856a3  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-8.c
  1e01eee87c695d67cde163a4530069b0  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-9.c
  9131f70d5244737552818651f478cdc5  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-1.c
--- 63475,63481 ----
  05aea1a4d7030c5cf55b50b84dc9f78f  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-2g.c
  15738f38675ee569391bc24effefc64b  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-2h.c
  881f6db6cb1a3e63bf8dd2e0f203cc95  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-5.c
! 27603b4afcb616272359ef0ea3981f69  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c
  de890ed0b8a4a8f0e19572bf759856a3  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-8.c
  1e01eee87c695d67cde163a4530069b0  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-9.c
  9131f70d5244737552818651f478cdc5  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-1.c
*************** c17f9d40557afd23540fbdc6dee10e2d  gcc/te
*** 64250,64256 ****
  05f38c38c613725dd896471fbc94ef85  gcc/testsuite/gcc.dg/uninit-pred-6_c.c
  840114fbb15ec153ec3965fd3d60423e  gcc/testsuite/gcc.dg/uninit-pred-6_d.c
  ddb0d9d02246d260424316fc51c4b34f  gcc/testsuite/gcc.dg/uninit-pred-6_e.c
! 7fc529e05e88623e8a1680b679c615b4  gcc/testsuite/gcc.dg/uninit-pred-7_a.c
  19e220a29cccab9dbda4e645d69c30b2  gcc/testsuite/gcc.dg/uninit-pred-7_b.c
  ae9f63955208be4c16b0ba30bd16f5b4  gcc/testsuite/gcc.dg/uninit-pred-7_c.c
  7a3eae1faebb33a9f5f883ebc298164a  gcc/testsuite/gcc.dg/uninit-pred-7_d.c
--- 64293,64299 ----
  05f38c38c613725dd896471fbc94ef85  gcc/testsuite/gcc.dg/uninit-pred-6_c.c
  840114fbb15ec153ec3965fd3d60423e  gcc/testsuite/gcc.dg/uninit-pred-6_d.c
  ddb0d9d02246d260424316fc51c4b34f  gcc/testsuite/gcc.dg/uninit-pred-6_e.c
! 1b4010217231481ca140369ae6f012d0  gcc/testsuite/gcc.dg/uninit-pred-7_a.c
  19e220a29cccab9dbda4e645d69c30b2  gcc/testsuite/gcc.dg/uninit-pred-7_b.c
  ae9f63955208be4c16b0ba30bd16f5b4  gcc/testsuite/gcc.dg/uninit-pred-7_c.c
  7a3eae1faebb33a9f5f883ebc298164a  gcc/testsuite/gcc.dg/uninit-pred-7_d.c
*************** f1a49246f84d8fbab3d2b6aa5c89949e  gcc/te
*** 65033,65038 ****
--- 65076,65082 ----
  08c808506725be00bdf4d84893d5e2e2  gcc/testsuite/gcc.dg/vect/pr122158.c
  98753a41f3e4540c72096a83675cd6cc  gcc/testsuite/gcc.dg/vect/pr122419.c
  e03974cf820416eaa10caff64b08ab41  gcc/testsuite/gcc.dg/vect/pr122475.c
+ d5fa86813a9f054c9df50e4e05d5fbc3  gcc/testsuite/gcc.dg/vect/pr122680.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
*************** de649522f3ab7b00ae0b659e97a5d056  gcc/te
*** 65483,65488 ****
--- 65527,65533 ----
  21ef034052c29f1fc4429d06053b1649  gcc/testsuite/gcc.dg/vect/slp-55.c
  836b8f5fb7c0f6b65dd30567a7bfcd84  gcc/testsuite/gcc.dg/vect/slp-56.c
  8b8247abd244571c0c22e9b9c61b12a2  gcc/testsuite/gcc.dg/vect/slp-57.c
+ b3d1d50601e1d014727ad5f5b5569a98  gcc/testsuite/gcc.dg/vect/slp-58.c
  fd61a3a4acd9d7431e7535472d55145c  gcc/testsuite/gcc.dg/vect/slp-6.c
  894b51d5fa3a930384f6e5c1b7c7c686  gcc/testsuite/gcc.dg/vect/slp-7.c
  cd278a5b32bf0e2c064277bbe8d933a8  gcc/testsuite/gcc.dg/vect/slp-8.c
*************** dcbe68009cf519fec972930376254917  gcc/te
*** 68055,68060 ****
--- 68100,68107 ----
  45c7b1036a43d057f57494cfac923496  gcc/testsuite/gcc.target/aarch64/cmpbr-1.c
  9c89b5c429968bdee454519519915008  gcc/testsuite/gcc.target/aarch64/cmpbr-2.c
  f6959d5d63e4330e0c5e642524fd10fb  gcc/testsuite/gcc.target/aarch64/cmpbr-3.c
+ 9ad011820658da0adf00e992677c5a87  gcc/testsuite/gcc.target/aarch64/cmpbr-4.c
+ 284a9e1dc225fd1f94fa5595de5a9fb3  gcc/testsuite/gcc.target/aarch64/cmpbr-5.c
  eebc0417878d7c88189b1642d56018d0  gcc/testsuite/gcc.target/aarch64/cmpbr.c
  ee389eae370cb027260e737bcb692a7d  gcc/testsuite/gcc.target/aarch64/cmpelim_mult_uses_1.c
  7b5054f497a38f6f6603006f2d632a05  gcc/testsuite/gcc.target/aarch64/cmpimm_branch_1.c
*************** fa17a6e61c4f3f1540ff821ae67e2261  gcc/te
*** 68166,68172 ****
  251e33f9362e63ad16c39c6fb7242175  gcc/testsuite/gcc.target/aarch64/crc-CCIT-data8-pmul.c
  a4eb291379b124bcf38c7c25fe6ce88c  gcc/testsuite/gcc.target/aarch64/crc-builtin-pmul64.c
  ece697e668e940eba5e40b8d0151eacd  gcc/testsuite/gcc.target/aarch64/crc-coremark-16bitdata-pmul.c
! c99331a8fd2c0f746db916608d89dbb7  gcc/testsuite/gcc.target/aarch64/crc-crc32-data16.c
  aefd5cd08c71eaba62c484af960dc579  gcc/testsuite/gcc.target/aarch64/crc-crc32-data32.c
  e86e43bc31e3b3d5ab3e88654009eef6  gcc/testsuite/gcc.target/aarch64/crc-crc32-data8.c
  a403728f848d92645dc2ca0776024d18  gcc/testsuite/gcc.target/aarch64/crc-crc32c-data16.c
--- 68213,68219 ----
  251e33f9362e63ad16c39c6fb7242175  gcc/testsuite/gcc.target/aarch64/crc-CCIT-data8-pmul.c
  a4eb291379b124bcf38c7c25fe6ce88c  gcc/testsuite/gcc.target/aarch64/crc-builtin-pmul64.c
  ece697e668e940eba5e40b8d0151eacd  gcc/testsuite/gcc.target/aarch64/crc-coremark-16bitdata-pmul.c
! 5c24bb8d4dbaf7766e7b35acce956b83  gcc/testsuite/gcc.target/aarch64/crc-crc32-data16.c
  aefd5cd08c71eaba62c484af960dc579  gcc/testsuite/gcc.target/aarch64/crc-crc32-data32.c
  e86e43bc31e3b3d5ab3e88654009eef6  gcc/testsuite/gcc.target/aarch64/crc-crc32-data8.c
  a403728f848d92645dc2ca0776024d18  gcc/testsuite/gcc.target/aarch64/crc-crc32c-data16.c
*************** a041d79193cf5904e847d0b04f865370  gcc/te
*** 68207,68212 ****
--- 68254,68260 ----
  541dacd7bf1c293af6ef0e1ad4c5f943  gcc/testsuite/gcc.target/aarch64/eh_return-3.c
  2818d548f4447845f5e9a6ff272a8403  gcc/testsuite/gcc.target/aarch64/eh_return.c
  0d0e2a489d3255344941fbdef5cd849a  gcc/testsuite/gcc.target/aarch64/eon_1.c
+ f2c4a1c8449840e049da3e2b01f2ee85  gcc/testsuite/gcc.target/aarch64/eor3-opt.c
  ab4543be4fc35ae17010a3cdca208333  gcc/testsuite/gcc.target/aarch64/erratas_opt_0.c
  229d27c4ae1a695d0bda0c8639c06245  gcc/testsuite/gcc.target/aarch64/erratas_opt_1.c
  18f377729ebeaa5cb3cea428597def56  gcc/testsuite/gcc.target/aarch64/erratas_opt_10.c
*************** ec11eff8f5009ed3e03c5cf524c5878a  gcc/te
*** 72427,72434 ****
  337b7d7297a2c734b9d6bb549e12ff20  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/get_5.c
  1b825dc1e669f521fe9e9634dc38c59d  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/get_6.c
  9983fc5cd06892d81b07b85fc02392d2  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/get_neonq_1.c
! 2b7efeb649940da171b314cc463cd055  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_1.c
! 58f2a5e2109595254b5c49f0f18498e5  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_2.c
  b770c388883ffa9cba2a327f326c095c  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c
  080af5a2a0700b55236617c1664d8616  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c
  ab6e998de220254a7fd49a73ef7eeb48  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/inc_dec_1.c
--- 72475,72482 ----
  337b7d7297a2c734b9d6bb549e12ff20  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/get_5.c
  1b825dc1e669f521fe9e9634dc38c59d  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/get_6.c
  9983fc5cd06892d81b07b85fc02392d2  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/get_neonq_1.c
! f4436f4b0a253e7d8a602f62f72d1053  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_1.c
! 7c804025b77b0b4622a2afa33d9c512b  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_2.c
  b770c388883ffa9cba2a327f326c095c  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c
  080af5a2a0700b55236617c1664d8616  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c
  ab6e998de220254a7fd49a73ef7eeb48  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/inc_dec_1.c
*************** ef1c49097e0bab8ac8f2b3b769937427  gcc/te
*** 72509,72516 ****
  877fcce12ad68ab4c20ab4c8c67c4add  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/shift_right_imm_narrowt_1.c
  cfd861255a479d919738f3d77cdc3f9f  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/shift_right_imm_narrowt_to_uint_1.c
  604e4abd23942d34585af772944f9c56  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/shift_right_imm_narrowxn_1.c
! 819fe54ece0226ab5a2e81be6ab9a30c  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/sizeless-1.c
! b88a957aed2501394af1144a87154d7b  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/sizeless-2.c
  e7a003fc623dfa02a69d0c61259a5bef  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/store_1.c
  2ed76cfbfa38c71939a4645029ae60be  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/store_2.c
  13cd785c2f626a2a81562225c71ce073  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/store_scatter64_1.c
--- 72557,72564 ----
  877fcce12ad68ab4c20ab4c8c67c4add  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/shift_right_imm_narrowt_1.c
  cfd861255a479d919738f3d77cdc3f9f  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/shift_right_imm_narrowt_to_uint_1.c
  604e4abd23942d34585af772944f9c56  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/shift_right_imm_narrowxn_1.c
! 17a961c8281d3b2f5fcbf260f7bb1b5a  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/sizeless-1.c
! 82aa2f3a93b6b1f34884221fc6f3707c  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/sizeless-2.c
  e7a003fc623dfa02a69d0c61259a5bef  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/store_1.c
  2ed76cfbfa38c71939a4645029ae60be  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/store_2.c
  13cd785c2f626a2a81562225c71ce073  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/store_scatter64_1.c
*************** dc083d1856f3a13be0a767276b132afb  gcc/te
*** 72525,72531 ****
  b52fb4e9ec8a6b03376457660198d288  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/struct_1.c
  923c99057f062c134be803bd6d55fc2e  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/svboolx2_1.c
  af84471fa52113a559843350049c942e  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/svboolx4_1.c
! 2d11aefe539338b6e7ec761468099b30  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/svcount_1.c
  d9823cbd34836a7cbb417173ee20f519  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/svlast.c
  29cace40b91c5375f944f44e97bae2f5  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/svlast128_run.c
  dd949f1aaa34adff76b9ec0730190812  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/svlast256_run.c
--- 72573,72579 ----
  b52fb4e9ec8a6b03376457660198d288  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/struct_1.c
  923c99057f062c134be803bd6d55fc2e  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/svboolx2_1.c
  af84471fa52113a559843350049c942e  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/svboolx4_1.c
! 9ac08e0396fe0a10e6f77a1a5a039b3d  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/svcount_1.c
  d9823cbd34836a7cbb417173ee20f519  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/svlast.c
  29cace40b91c5375f944f44e97bae2f5  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/svlast128_run.c
  dd949f1aaa34adff76b9ec0730190812  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/svlast256_run.c
*************** a1f49719a6a2f5d52bed7574b5f19664  gcc/te
*** 72689,72694 ****
--- 72737,72743 ----
  2279605ca76a398874fa5ee6664d3d52  gcc/testsuite/gcc.target/aarch64/sve/acle/general/cnth_pat_1.c
  ccec270f903888ca00fe8baba907fa5f  gcc/testsuite/gcc.target/aarch64/sve/acle/general/cntw_pat_1.c
  2c4b75f5af375e44324610f217676d50  gcc/testsuite/gcc.target/aarch64/sve/acle/general/cops.c
+ 2c7b7b97a194070a3802ca49f8a03b57  gcc/testsuite/gcc.target/aarch64/sve/acle/general/cops_bool.c
  fb0b99833eb0c168abc014e0554a156c  gcc/testsuite/gcc.target/aarch64/sve/acle/general/cpy_1.c
  75a2cc5eaade2a1a499200b05ae5f53c  gcc/testsuite/gcc.target/aarch64/sve/acle/general/debug_1.c
  16c8b0fa40139dcbb0edba6873a09834  gcc/testsuite/gcc.target/aarch64/sve/acle/general/debug_2.c
*************** a4114cf2b3bd0ac0af3dffbbe0b40004  gcc/te
*** 76529,76534 ****
--- 76578,76585 ----
  b3421fbdc1418b61214986622eb978f2  gcc/testsuite/gcc.target/arm/cmse/baseline/softfp.c
  dfde9b7816ac82223f119b2bfaa13341  gcc/testsuite/gcc.target/arm/cmse/baseline/union-1.c
  a3d5632079324bffb4dfe7cfa572dbe5  gcc/testsuite/gcc.target/arm/cmse/baseline/union-2.c
+ ab09e683e17dc7ce2c4d91c6a8e0d933  gcc/testsuite/gcc.target/arm/cmse/baseline/union-3.c
+ fc61b6892330cc23f0df8333d5d5ff47  gcc/testsuite/gcc.target/arm/cmse/baseline/union-4.c
  3a696ba550dff106d39149511c0b0de5  gcc/testsuite/gcc.target/arm/cmse/bitfield-1.c
  41ae1c120ef99d0e6c273119cef9cd11  gcc/testsuite/gcc.target/arm/cmse/bitfield-2.c
  5a79322cba867ee3afdfb353047e9ad7  gcc/testsuite/gcc.target/arm/cmse/bitfield-3.c
*************** b67dc35cb041e665b0436a8b3c1dbbf9  gcc/te
*** 76596,76601 ****
--- 76647,76653 ----
  df829d6ec7fb9540fcbd66368f0fb17b  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-8a.c
  539f0378e45653ff2109841bd4bccc87  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/union-1.c
  f0d9b39107e4de1b049dca00b29a58d2  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/union-2.c
+ faca3c21de94fc80fda6fd51e8115e33  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/union-3.c
  ab4a6ad246ee43f02f3290436cb16703  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/bitfield-4.c
  55c0ab93e6f163c8a765c565d45a8deb  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/bitfield-5.c
  10fb3486026e454edbdbe45ab498982a  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/bitfield-6.c
*************** f32c9a4cdef7ef83fecd67301b456a9d  gcc/te
*** 76611,76620 ****
--- 76663,76675 ----
  ac653d1f3cfc80136bdb76146e93f54e  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/hard/cmse-5.c
  97787bd2fcb796ec7696f02f537bd431  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/hard/cmse-7.c
  72eb1b8dae3f9292128d561e3e35e163  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/hard/cmse-8.c
+ 1f19eefa0007defa3ca45a7482abfc1e  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/hard/union-4.c
+ 807c36fe1a023b784abbb41c04bd3fb3  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/hard/union-fp.c
  c10682b0d6dd961577656c6341f1e957  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/soft/cmse-13.c
  c55c869b20436c24bdd02f85fe70b11d  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/soft/cmse-5.c
  d0badae79ad18b1207053d6aee06d2e2  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/soft/cmse-7.c
  c706b608cdc03272d5b4c56b2eff0aec  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/soft/cmse-8.c
+ 40df0729b706e4e5aa6fb504927583cd  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/soft/union-4.c
  5f2c7d5d20375a6df18e5baba15b33c2  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/softfp-sp/cmse-5.c
  81bddd3d228a9a9ca4be6b55076773e3  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/softfp-sp/cmse-7.c
  5085fb86dd895243667d8656113e2d93  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/softfp-sp/cmse-8.c
*************** cb1f8a28400b5e5ea5ea510c8a09258b  gcc/te
*** 76622,76634 ****
--- 76677,76693 ----
  71cacd1a0ea9cb2d80cab5df1e00d276  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/softfp/cmse-5.c
  5d78ce9c80e35effb58bd70ff8e1c041  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/softfp/cmse-7.c
  7c237776495bc9451d7b94ec36068f56  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/softfp/cmse-8.c
+ b4f8619085f032943e4c8a193542e258  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/softfp/union-4.c
  cb60008d5e98eeaf45a18dec48047164  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/union-1.c
  bfdbc743afa8415599bab6c48cb26d64  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/union-2.c
+ bc5ddeb704b470aff4db297ad27825e6  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/union-3.c
  8cd1e54844f2fab111ede15dfc983556  gcc/testsuite/gcc.target/arm/cmse/pr100333.c
  c7feddd41b8ab7d0bcc61e9ba67a259a  gcc/testsuite/gcc.target/arm/cmse/pr99725.c
  dc937ad7bdd38e233f8eb2871fbab365  gcc/testsuite/gcc.target/arm/cmse/struct-1.c
  018f6e1e401b9f8f53cb13da1c5fcef7  gcc/testsuite/gcc.target/arm/cmse/union-1.x
  4b49e4c79c02f37ae492dd2e76ef29e7  gcc/testsuite/gcc.target/arm/cmse/union-2.x
+ 00b490e0defc9861facd27d1446d45db  gcc/testsuite/gcc.target/arm/cmse/union-3.x
+ 1e947232907f7ad0b0de9dc9f2203863  gcc/testsuite/gcc.target/arm/cmse/union-4.x
  2dc71ce174b431509377d1ffd99a8551  gcc/testsuite/gcc.target/arm/cold-lc.c
  415862d2bb4d1d07b30f96b9f6b103ae  gcc/testsuite/gcc.target/arm/combine-cmp-shift.c
  4aca50869b79ab15beb4a0ff13338a21  gcc/testsuite/gcc.target/arm/combine-movs.c
*************** fffad35934f526817fc333e82d0e79bb  gcc/te
*** 76860,76866 ****
--- 76919,76927 ----
  f7aa4c937541029a5bd3fe618bef6974  gcc/testsuite/gcc.target/arm/mve/general/double_pragmas_1.c
  e787e32385a63c5e015b59725e3d0250  gcc/testsuite/gcc.target/arm/mve/general/nomve_1.c
  398e4816db99fac1f05cd83d7d9911ec  gcc/testsuite/gcc.target/arm/mve/general/preserve_user_namespace_1.c
+ 2250da8fa6c9a11e681ab30e5a28beff  gcc/testsuite/gcc.target/arm/mve/intrinsics/asrl-various-ranges.c
  2884159c19b60a0ae3743c8a1b9c6729  gcc/testsuite/gcc.target/arm/mve/intrinsics/asrl.c
+ 9771ae4e87fe4c9924a3ea4b95fbd696  gcc/testsuite/gcc.target/arm/mve/intrinsics/lsll-various-ranges.c
  c52dd6cedef3761b071c005d8eda4014  gcc/testsuite/gcc.target/arm/mve/intrinsics/lsll.c
  8742cb74c36fe44acebeaf852842a44d  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve-vldstr16-no-writeback.c
  755209da383c0bfcbef14b5d5e67e63c  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_fp_fpu1.c
*************** ab72cfcef8400549b3b4d4d318e4955e  gcc/te
*** 76900,76921 ****
--- 76961,76991 ----
  4211e73819bb661ddd18271cf8dab0e5  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vstr_p.c
  cfb4125c4550d5cf153bac3dcd2886ad  gcc/testsuite/gcc.target/arm/mve/intrinsics/pr101016.c
  c6565beafc869833d2a6dd9484818c2d  gcc/testsuite/gcc.target/arm/mve/intrinsics/pr118332.c
+ 1073bc89c952fc9eb9cdb6a1efd78a78  gcc/testsuite/gcc.target/arm/mve/intrinsics/pr122175.c
  b52bd79f0b568c75adaa75c022b0e2a0  gcc/testsuite/gcc.target/arm/mve/intrinsics/pr122223.c
  b64a60d68e969b641b8652c2bd4eef0d  gcc/testsuite/gcc.target/arm/mve/intrinsics/pr97327.c
  f1860ef4320f7f2a6a4791bdb0c063ba  gcc/testsuite/gcc.target/arm/mve/intrinsics/sqrshr.c
  5d7653e2d5007d0c5a0f2368f9b07c02  gcc/testsuite/gcc.target/arm/mve/intrinsics/sqrshrl_sat48.c
  e49e7d0224d2de2b6eb25c3a244cd391  gcc/testsuite/gcc.target/arm/mve/intrinsics/sqrshrl_sat64.c
  d3f751fb7834048caebc57c00a0b0669  gcc/testsuite/gcc.target/arm/mve/intrinsics/sqshl.c
+ 5cb2c711c38b13329aa756f2a4968c7e  gcc/testsuite/gcc.target/arm/mve/intrinsics/sqshl_check_shift.c
  c0cd3e4f7024a2d04161bf43e25946bd  gcc/testsuite/gcc.target/arm/mve/intrinsics/sqshll.c
+ d88239b6df241f6ab76ae6233b7927c6  gcc/testsuite/gcc.target/arm/mve/intrinsics/sqshll_check_shift.c
  c592daa4ef9e858226a39a15cbcce7f6  gcc/testsuite/gcc.target/arm/mve/intrinsics/srshr.c
+ c352808f55caea652c23718cc7208e5b  gcc/testsuite/gcc.target/arm/mve/intrinsics/srshr_check_shift.c
  32506ffcab61d385978e678775ecdfc4  gcc/testsuite/gcc.target/arm/mve/intrinsics/srshrl.c
+ 6242755c29d31f88bb69027c7aaf473b  gcc/testsuite/gcc.target/arm/mve/intrinsics/srshrl_check_shift.c
  63e8f801047717a4c67ec4b431ad5b83  gcc/testsuite/gcc.target/arm/mve/intrinsics/uqrshl.c
  c2c0bfc897d413e333c946737ac284e5  gcc/testsuite/gcc.target/arm/mve/intrinsics/uqrshll_sat48.c
  e368cc732c7e899ba1b61e691ec9cf54  gcc/testsuite/gcc.target/arm/mve/intrinsics/uqrshll_sat64.c
  a2ff13f6a420e0605a2d5aa88a89f4cd  gcc/testsuite/gcc.target/arm/mve/intrinsics/uqshl.c
+ cc1d59b7c6e6574b40218dce684027c0  gcc/testsuite/gcc.target/arm/mve/intrinsics/uqshl_check_shift.c
  b4430c11f798899421400d043a89abdc  gcc/testsuite/gcc.target/arm/mve/intrinsics/uqshll.c
+ e927ba6f04155896185ed8500fd73527  gcc/testsuite/gcc.target/arm/mve/intrinsics/uqshll_check_shift.c
  1e7b52567c15d2613d2cde7ed108ea4f  gcc/testsuite/gcc.target/arm/mve/intrinsics/urshr.c
+ 9281ae427c73337372c8546b4b19b980  gcc/testsuite/gcc.target/arm/mve/intrinsics/urshr_check_shift.c
  d52c4cdf2fa9730d39064e0328ae17a0  gcc/testsuite/gcc.target/arm/mve/intrinsics/urshrl.c
+ d6128ff87a744e64df8e4c39e3cfdb13  gcc/testsuite/gcc.target/arm/mve/intrinsics/urshrl_check_shift.c
  bafc5915396c36dd0b92a94db86a8b26  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_s16.c
  13b7a0be8d75d3a39dfabddd0d2929a1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_s32.c
  210b43751f72df75b561694983081d5c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_s8.c
*************** b16eb4dae838ed49e53f7c7a2d51615f  gcc/te
*** 77084,77092 ****
  379305fd24a862f238629854c414dee6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_f32.c
  a8bfc54a0b707b20b1e4337a873d1141  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_f16.c
  8b752c095c13aaa5b248cac872529034  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_f32.c
! 1c2dc2fc6339f159195d92c2987b135e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_s16.c
  746dd2a1cd67a54ed37d839514563937  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_s32.c
! 78d54654b68d817b4f9b11747f9774ab  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_u16.c
  3da9b316f166be2b0b1bef8b36a77698  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_u32.c
  b38d694edb554777c912d3d8b351542f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_s16.c
  e0f29475bccd8d3c60702fb4a340ce3e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_s32.c
--- 77154,77162 ----
  379305fd24a862f238629854c414dee6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_f32.c
  a8bfc54a0b707b20b1e4337a873d1141  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_f16.c
  8b752c095c13aaa5b248cac872529034  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_f32.c
! 6645e237ef6a7718a846b6be1f14e729  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_s16.c
  746dd2a1cd67a54ed37d839514563937  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_s32.c
! 23800fa69c42944a6f985c4ac98a4a1a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_u16.c
  3da9b316f166be2b0b1bef8b36a77698  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_u32.c
  b38d694edb554777c912d3d8b351542f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_s16.c
  e0f29475bccd8d3c60702fb4a340ce3e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_s32.c
*************** e0f29475bccd8d3c60702fb4a340ce3e  gcc/te
*** 77094,77102 ****
  5b7dec9e9a47f3693c0ad453c5f70d0b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_u16.c
  f82dce197d257352e69ae046fe7e17b7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_u32.c
  981cb4a3d8d3c985810e2af50820e729  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_u8.c
! b800334fa42fe33f6d447e96a271b86f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_s16.c
  32552c66d34e62a84fa1c34edea165d1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_s32.c
! bd9f6e74be4e9f7031bf83b1b68d0b67  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_u16.c
  64c8ce72f7403217eca720fdff91052b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_u32.c
  0a34875894b53d7fe0391138f5ef2daf  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_s16.c
  0006ca8192ad47c0dc56b383f2736f35  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_s32.c
--- 77164,77172 ----
  5b7dec9e9a47f3693c0ad453c5f70d0b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_u16.c
  f82dce197d257352e69ae046fe7e17b7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_u32.c
  981cb4a3d8d3c985810e2af50820e729  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_u8.c
! e999f4f63c7f59e59d4be21d91c4f9ec  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_s16.c
  32552c66d34e62a84fa1c34edea165d1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_s32.c
! 29f8c8ed91aef3ce211503973d026051  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_u16.c
  64c8ce72f7403217eca720fdff91052b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_u32.c
  0a34875894b53d7fe0391138f5ef2daf  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_s16.c
  0006ca8192ad47c0dc56b383f2736f35  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_s32.c
*************** eaca578057885ae943c817131017c789  gcc/te
*** 78315,78323 ****
  b9436ee142cf012cba4bc0227caee592  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_u16.c
  54347a155ea714bcb9e212dc3462b701  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_u32.c
  c800aa91b52274f68917941cd1190c7e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_u8.c
! 17eaebdff48759b34a8e10340656b777  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_s16.c
  d4021f40246bd789c67f5fbc021f570d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_s32.c
! baf325d27e3cc75fa283ed038be71f09  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_u16.c
  e2c3f8d807e6df670b182639697d61d2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_u32.c
  f0a632576ce63037f3bf0c52cfdeaab4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_s16.c
  be099bfa149c919b97ff87b3ac9e563a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_s32.c
--- 78385,78393 ----
  b9436ee142cf012cba4bc0227caee592  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_u16.c
  54347a155ea714bcb9e212dc3462b701  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_u32.c
  c800aa91b52274f68917941cd1190c7e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_u8.c
! 1ecc461eacff322e4e70e4468e408e38  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_s16.c
  d4021f40246bd789c67f5fbc021f570d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_s32.c
! 451c7697f29e12d8e4e3b98f74ba421d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_u16.c
  e2c3f8d807e6df670b182639697d61d2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_u32.c
  f0a632576ce63037f3bf0c52cfdeaab4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_s16.c
  be099bfa149c919b97ff87b3ac9e563a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_s32.c
*************** b810569b55c0974c561012a54fdccd5d  gcc/te
*** 78325,78333 ****
  aaf1ee37ab90a8743accdac607e5ddbd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_u16.c
  36c55ee3b8a6e46022a1c372de48d144  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_u32.c
  1c0b99695cb6d99decfe778dad796bb1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_u8.c
! ded3a05dba6e22eedd7087187a6a0860  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_s16.c
  c5fac965cbef4b881d9a1f2d98150781  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_s32.c
! c69943ff532db85c43c96ccec2f33c06  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_u16.c
  3984fdd8ff00f38d51ee6d0a12c1d577  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_u32.c
  98f05c45e70804bc87c31ef7bb1496c3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_s16.c
  9fd8ff0080b31d26e95e8154662b8b1d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_s32.c
--- 78395,78403 ----
  aaf1ee37ab90a8743accdac607e5ddbd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_u16.c
  36c55ee3b8a6e46022a1c372de48d144  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_u32.c
  1c0b99695cb6d99decfe778dad796bb1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_u8.c
! 8a835299c26823b053879511337d7e5a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_s16.c
  c5fac965cbef4b881d9a1f2d98150781  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_s32.c
! 69bb1727970db5a83942b6b918fcf52a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_u16.c
  3984fdd8ff00f38d51ee6d0a12c1d577  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_u32.c
  98f05c45e70804bc87c31ef7bb1496c3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_s16.c
  9fd8ff0080b31d26e95e8154662b8b1d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_s32.c
*************** c69943ff532db85c43c96ccec2f33c06  gcc/te
*** 78335,78343 ****
  01a1541f848b77189ff1703e153057f2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_u16.c
  57c84dfaf5a0ecb71406f24f4f636f1e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_u32.c
  5fac6cff0ac97247f74de50048bb21ba  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_u8.c
! a0e4fe8dfaeea84686a6c1c2003f745d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_s16.c
  1816737324959d4cf189b1504224ba7d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_s32.c
! ef855992672862b7ac27892241bbddaa  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_u16.c
  5a07bf783a2ff4e7ffbb9b22e931232d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_u32.c
  b0dab0d07df2863f1f1023447370dcb3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_s16.c
  5a8c455825f86d346471e9f54aaa661c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_s32.c
--- 78405,78413 ----
  01a1541f848b77189ff1703e153057f2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_u16.c
  57c84dfaf5a0ecb71406f24f4f636f1e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_u32.c
  5fac6cff0ac97247f74de50048bb21ba  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_u8.c
! d7cec11fac57c4fd296f6f6baf946a4d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_s16.c
  1816737324959d4cf189b1504224ba7d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_s32.c
! 7a8ac4b5dbff39528e65dc83efbf6cc5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_u16.c
  5a07bf783a2ff4e7ffbb9b22e931232d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_u32.c
  b0dab0d07df2863f1f1023447370dcb3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_s16.c
  5a8c455825f86d346471e9f54aaa661c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_s32.c
*************** d6b79c1e1c2d8e751f7c2c105dae3898  gcc/te
*** 78388,78396 ****
  cb9e716f57810b5c1ce6abeabe0ab472  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_f32.c
  66867bf3d434113ee927a217680b23cd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_f16.c
  3a172a074a4862a157f14b3801bb1210  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_f32.c
! b679f6fa084af2157a4702ed3a8f933a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_s16.c
  bc4d6f06ce904236acedd8a196b21d7c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_s32.c
! ed3915612cd34365a95b50948d8c57b8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_u16.c
  6967987fe0e53d1d43cf04820504e0fc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_u32.c
  3e4edba2c408373fa1fdf38e3667d5f2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_s16.c
  b3ef2c205b2e4d7abe823331a5e5cb82  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_s32.c
--- 78458,78466 ----
  cb9e716f57810b5c1ce6abeabe0ab472  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_f32.c
  66867bf3d434113ee927a217680b23cd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_f16.c
  3a172a074a4862a157f14b3801bb1210  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_f32.c
! 1e3384ba9ab1b9b3fd37a092bfd22f68  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_s16.c
  bc4d6f06ce904236acedd8a196b21d7c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_s32.c
! 9b36e50834f20708a55479fe14d3a813  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_u16.c
  6967987fe0e53d1d43cf04820504e0fc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_u32.c
  3e4edba2c408373fa1fdf38e3667d5f2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_s16.c
  b3ef2c205b2e4d7abe823331a5e5cb82  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_s32.c
*************** ba90459935c5f1da32c14f639fd69799  gcc/te
*** 78398,78406 ****
  694e181768ab2f46aa267229ea46bae8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_u16.c
  7b254947d9d53ee8601410e8fc9a4cda  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_u32.c
  0d21a013db6a37220f36994890a724b2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_u8.c
! cb7920d9b05c231d39b1aee4377b7e85  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_s16.c
  682b50d539082f12948c3a093d482c86  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_s32.c
! b3fa31f2ab0bcb4b34769d23a58f0547  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_u16.c
  5c588306a470470d47e69c94f3e20b92  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_u32.c
  430b11d797496fa82cff7776e25e2c97  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_s16.c
  788a771e8e4508f41d3f90fc9f7fb05a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_s32.c
--- 78468,78476 ----
  694e181768ab2f46aa267229ea46bae8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_u16.c
  7b254947d9d53ee8601410e8fc9a4cda  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_u32.c
  0d21a013db6a37220f36994890a724b2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_u8.c
! b74ba12311da26177a09b55170c0a081  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_s16.c
  682b50d539082f12948c3a093d482c86  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_s32.c
! 77d49599f653ecf64fd2e2b80f02fd02  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_u16.c
  5c588306a470470d47e69c94f3e20b92  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_u32.c
  430b11d797496fa82cff7776e25e2c97  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_s16.c
  788a771e8e4508f41d3f90fc9f7fb05a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_s32.c
*************** a93a298f547274ed3c2b935fceada10f  gcc/te
*** 81234,81271 ****
  de43766ff547a704d67f8c662bc93c66  gcc/testsuite/gcc.target/i386/amxavx512-cvtrowps2ph-2.c
  cc0603febc979dbf700b27494eacbc42  gcc/testsuite/gcc.target/i386/amxavx512-movrow-2.c
  3e5ed8f51d1403b179db592f12cb019c  gcc/testsuite/gcc.target/i386/amxbf16-asmatt-1.c
! 215b9569abd57352c2d13ba5129e07cd  gcc/testsuite/gcc.target/i386/amxbf16-asmintel-1.c
  c4406ef230e7a6bb0e7b45b2f94958e9  gcc/testsuite/gcc.target/i386/amxbf16-dpbf16ps-2.c
  0787eb1011631a123144aa2e9fe5b9f2  gcc/testsuite/gcc.target/i386/amxcomplex-asmatt-1.c
! 971dbba18c823297793b59421738511a  gcc/testsuite/gcc.target/i386/amxcomplex-asmintel-1.c
  88abb806331f7455dfc053e7bfa9993d  gcc/testsuite/gcc.target/i386/amxcomplex-cmmimfp16ps-2.c
  5029635b15d7dd713761d53e4630a666  gcc/testsuite/gcc.target/i386/amxcomplex-cmmrlfp16ps-2.c
  0a13ebe83385a9aedb0a82cf5504a96b  gcc/testsuite/gcc.target/i386/amxfp16-asmatt-1.c
! eefaf66ff1c174b18d152560427620f0  gcc/testsuite/gcc.target/i386/amxfp16-asmintel-1.c
  26723806e86b2502f2d6b3c39febf8ce  gcc/testsuite/gcc.target/i386/amxfp16-dpfp16ps-2.c
  a9b74e9420dcdda704c0548b74c852cb  gcc/testsuite/gcc.target/i386/amxfp8-asmatt-1.c
! 0f7fd0338410d717ce022911f281c28b  gcc/testsuite/gcc.target/i386/amxfp8-asmintel-1.c
  f7f7179cee82b3e49fe8e952f16bd8bd  gcc/testsuite/gcc.target/i386/amxfp8-dpbf8ps-2.c
  158d08ba1bcd4db7917ac8e49a23d45b  gcc/testsuite/gcc.target/i386/amxfp8-dpbhf8ps-2.c
  79dd0e41d2df0fac63d405115f1a8f0b  gcc/testsuite/gcc.target/i386/amxfp8-dphbf8ps-2.c
  37ac1e9cd6f542adda9144f5f91575f7  gcc/testsuite/gcc.target/i386/amxfp8-dphf8ps-2.c
  b08450b417269b0fe19cdf6b9521036d  gcc/testsuite/gcc.target/i386/amxint8-asmatt-1.c
! 387b46d5778a99faba771df055b4280b  gcc/testsuite/gcc.target/i386/amxint8-asmintel-1.c
  06751f31b3086f1ff040533de854e994  gcc/testsuite/gcc.target/i386/amxint8-dpbssd-2.c
  e3f6b37649c7f1fa4d20b6327cdcdb27  gcc/testsuite/gcc.target/i386/amxint8-dpbsud-2.c
  a8ab966558faa138830cc3e75dbe4464  gcc/testsuite/gcc.target/i386/amxint8-dpbusd-2.c
  fc50af06e61cf9d13887f2fe515b0e27  gcc/testsuite/gcc.target/i386/amxint8-dpbuud-2.c
  c6e05c63e432fabb376eb84512c8c136  gcc/testsuite/gcc.target/i386/amxmovrs-asmatt-1.c
! c43c3248904abe6da1985064ed1f4f36  gcc/testsuite/gcc.target/i386/amxmovrs-asmintel-1.c
  e733b32150a44e7be6c236ca11324770  gcc/testsuite/gcc.target/i386/amxmovrs-tileloaddrs-2.c
  83f382a948fa479169644b56fee9247b  gcc/testsuite/gcc.target/i386/amxtf32-asmatt-1.c
! 3f9a5f02b15d43a842b189003650c7bd  gcc/testsuite/gcc.target/i386/amxtf32-asmintel-1.c
  baf13b756391e3f11b0f7d619bd353a5  gcc/testsuite/gcc.target/i386/amxtf32-mmultf32ps-2.c
  4e7e8638f4652613beb251daa4730463  gcc/testsuite/gcc.target/i386/amxtile-2.c
  a455baf8f9990eb7494164842dce7c91  gcc/testsuite/gcc.target/i386/amxtile-3.c
  84fc02cc52ddc8bdd53d77902c0176fb  gcc/testsuite/gcc.target/i386/amxtile-4.c
  8e7fab1b3f5c89155f09aabb59da8382  gcc/testsuite/gcc.target/i386/amxtile-asmatt-1.c
! 2629a435840ab211444b4a2af4563d8d  gcc/testsuite/gcc.target/i386/amxtile-asmintel-1.c
  000edc038d71c16eb844c26f6d7f2f53  gcc/testsuite/gcc.target/i386/and-1.c
  c5cfc6b01e748536e4ac5d65b3528952  gcc/testsuite/gcc.target/i386/andor-1.c
  c052d916aa90fa5343dac48ba370180f  gcc/testsuite/gcc.target/i386/andor-2.c
--- 81304,81341 ----
  de43766ff547a704d67f8c662bc93c66  gcc/testsuite/gcc.target/i386/amxavx512-cvtrowps2ph-2.c
  cc0603febc979dbf700b27494eacbc42  gcc/testsuite/gcc.target/i386/amxavx512-movrow-2.c
  3e5ed8f51d1403b179db592f12cb019c  gcc/testsuite/gcc.target/i386/amxbf16-asmatt-1.c
! 56eacc542ab2a1453a34424301380e68  gcc/testsuite/gcc.target/i386/amxbf16-asmintel-1.c
  c4406ef230e7a6bb0e7b45b2f94958e9  gcc/testsuite/gcc.target/i386/amxbf16-dpbf16ps-2.c
  0787eb1011631a123144aa2e9fe5b9f2  gcc/testsuite/gcc.target/i386/amxcomplex-asmatt-1.c
! 4a8b5d514b0a549de6d01da6a871cace  gcc/testsuite/gcc.target/i386/amxcomplex-asmintel-1.c
  88abb806331f7455dfc053e7bfa9993d  gcc/testsuite/gcc.target/i386/amxcomplex-cmmimfp16ps-2.c
  5029635b15d7dd713761d53e4630a666  gcc/testsuite/gcc.target/i386/amxcomplex-cmmrlfp16ps-2.c
  0a13ebe83385a9aedb0a82cf5504a96b  gcc/testsuite/gcc.target/i386/amxfp16-asmatt-1.c
! 6367ac8d32cb21d49cfff80aef3427bd  gcc/testsuite/gcc.target/i386/amxfp16-asmintel-1.c
  26723806e86b2502f2d6b3c39febf8ce  gcc/testsuite/gcc.target/i386/amxfp16-dpfp16ps-2.c
  a9b74e9420dcdda704c0548b74c852cb  gcc/testsuite/gcc.target/i386/amxfp8-asmatt-1.c
! ac831a6e0f9a32623f8760f8cb0414ca  gcc/testsuite/gcc.target/i386/amxfp8-asmintel-1.c
  f7f7179cee82b3e49fe8e952f16bd8bd  gcc/testsuite/gcc.target/i386/amxfp8-dpbf8ps-2.c
  158d08ba1bcd4db7917ac8e49a23d45b  gcc/testsuite/gcc.target/i386/amxfp8-dpbhf8ps-2.c
  79dd0e41d2df0fac63d405115f1a8f0b  gcc/testsuite/gcc.target/i386/amxfp8-dphbf8ps-2.c
  37ac1e9cd6f542adda9144f5f91575f7  gcc/testsuite/gcc.target/i386/amxfp8-dphf8ps-2.c
  b08450b417269b0fe19cdf6b9521036d  gcc/testsuite/gcc.target/i386/amxint8-asmatt-1.c
! 2a1a600bd028c3c6663894e5e2dbe1ac  gcc/testsuite/gcc.target/i386/amxint8-asmintel-1.c
  06751f31b3086f1ff040533de854e994  gcc/testsuite/gcc.target/i386/amxint8-dpbssd-2.c
  e3f6b37649c7f1fa4d20b6327cdcdb27  gcc/testsuite/gcc.target/i386/amxint8-dpbsud-2.c
  a8ab966558faa138830cc3e75dbe4464  gcc/testsuite/gcc.target/i386/amxint8-dpbusd-2.c
  fc50af06e61cf9d13887f2fe515b0e27  gcc/testsuite/gcc.target/i386/amxint8-dpbuud-2.c
  c6e05c63e432fabb376eb84512c8c136  gcc/testsuite/gcc.target/i386/amxmovrs-asmatt-1.c
! 452a0b261c066d49a3c3f303a70b6db8  gcc/testsuite/gcc.target/i386/amxmovrs-asmintel-1.c
  e733b32150a44e7be6c236ca11324770  gcc/testsuite/gcc.target/i386/amxmovrs-tileloaddrs-2.c
  83f382a948fa479169644b56fee9247b  gcc/testsuite/gcc.target/i386/amxtf32-asmatt-1.c
! a44cf006e7d7dc3c6c4f6644cfe192cb  gcc/testsuite/gcc.target/i386/amxtf32-asmintel-1.c
  baf13b756391e3f11b0f7d619bd353a5  gcc/testsuite/gcc.target/i386/amxtf32-mmultf32ps-2.c
  4e7e8638f4652613beb251daa4730463  gcc/testsuite/gcc.target/i386/amxtile-2.c
  a455baf8f9990eb7494164842dce7c91  gcc/testsuite/gcc.target/i386/amxtile-3.c
  84fc02cc52ddc8bdd53d77902c0176fb  gcc/testsuite/gcc.target/i386/amxtile-4.c
  8e7fab1b3f5c89155f09aabb59da8382  gcc/testsuite/gcc.target/i386/amxtile-asmatt-1.c
! fd1b7cbd5c658f65380f068fc3718869  gcc/testsuite/gcc.target/i386/amxtile-asmintel-1.c
  000edc038d71c16eb844c26f6d7f2f53  gcc/testsuite/gcc.target/i386/and-1.c
  c5cfc6b01e748536e4ac5d65b3528952  gcc/testsuite/gcc.target/i386/andor-1.c
  c052d916aa90fa5343dac48ba370180f  gcc/testsuite/gcc.target/i386/andor-2.c
*************** b6e599b4cc96f57de7a64c27e3c92aa3  gcc/te
*** 81293,81299 ****
  54e6959ccdc4af3a418d51fd8d3225e5  gcc/testsuite/gcc.target/i386/apx-ndd-shld-shrd.c
  72665232e4e20114192126c16383477e  gcc/testsuite/gcc.target/i386/apx-ndd-ti-shift.c
  48bb1176822575f268cc1bcc92027c73  gcc/testsuite/gcc.target/i386/apx-ndd-tls-1a.c
! 3c76fe937b6b8b879956d5ebd1df098b  gcc/testsuite/gcc.target/i386/apx-ndd-tls-1b.c
  26b973e578d113bfe19274f6b260423b  gcc/testsuite/gcc.target/i386/apx-ndd-tls-2.c
  f79d898ef40db39bcbc383d512549f5a  gcc/testsuite/gcc.target/i386/apx-ndd-tls-3.c
  f331bf34bdd0201dd7790981418cd8c8  gcc/testsuite/gcc.target/i386/apx-ndd-tls-4.c
--- 81363,81369 ----
  54e6959ccdc4af3a418d51fd8d3225e5  gcc/testsuite/gcc.target/i386/apx-ndd-shld-shrd.c
  72665232e4e20114192126c16383477e  gcc/testsuite/gcc.target/i386/apx-ndd-ti-shift.c
  48bb1176822575f268cc1bcc92027c73  gcc/testsuite/gcc.target/i386/apx-ndd-tls-1a.c
! a0e6b1231d46a713748b5a9108bbad5b  gcc/testsuite/gcc.target/i386/apx-ndd-tls-1b.c
  26b973e578d113bfe19274f6b260423b  gcc/testsuite/gcc.target/i386/apx-ndd-tls-2.c
  f79d898ef40db39bcbc383d512549f5a  gcc/testsuite/gcc.target/i386/apx-ndd-tls-3.c
  f331bf34bdd0201dd7790981418cd8c8  gcc/testsuite/gcc.target/i386/apx-ndd-tls-4.c
*************** c4aea5211e55d55e35576a08520c127a  gcc/te
*** 85691,85697 ****
  538ab6e8a06c514c724312c46aa4c439  gcc/testsuite/gcc.target/i386/cmov1.c
  fd0466945d68b3ee20c00b8032326680  gcc/testsuite/gcc.target/i386/cmov10.c
  df17ff93ab67a6d01ce2486635e9755d  gcc/testsuite/gcc.target/i386/cmov11.c
! 0b3780e7eed3ce2672a89943b7c065da  gcc/testsuite/gcc.target/i386/cmov12.c
  f79e1b7782293fd20dff7bc711017061  gcc/testsuite/gcc.target/i386/cmov2.c
  7883df7ea3d35db7f224c99c7a13548e  gcc/testsuite/gcc.target/i386/cmov3.c
  6ad79381e3d28784a59b6568a64a4cf1  gcc/testsuite/gcc.target/i386/cmov4.c
--- 85761,85767 ----
  538ab6e8a06c514c724312c46aa4c439  gcc/testsuite/gcc.target/i386/cmov1.c
  fd0466945d68b3ee20c00b8032326680  gcc/testsuite/gcc.target/i386/cmov10.c
  df17ff93ab67a6d01ce2486635e9755d  gcc/testsuite/gcc.target/i386/cmov11.c
! ce081131d73d01ca1f13fa8eef5504ae  gcc/testsuite/gcc.target/i386/cmov12.c
  f79e1b7782293fd20dff7bc711017061  gcc/testsuite/gcc.target/i386/cmov2.c
  7883df7ea3d35db7f224c99c7a13548e  gcc/testsuite/gcc.target/i386/cmov3.c
  6ad79381e3d28784a59b6568a64a4cf1  gcc/testsuite/gcc.target/i386/cmov4.c
*************** de7e3424272806d6bdcaeafb426132f0  gcc/te
*** 86049,86056 ****
  6634641527cf4a67bc2ffa072bf43d67  gcc/testsuite/gcc.target/i386/indirect-thunk-2.c
  e3fefa84c66af43982bfc64e3a0014aa  gcc/testsuite/gcc.target/i386/indirect-thunk-3.c
  b03ee7d51ec7e327f350d2ac72c73745  gcc/testsuite/gcc.target/i386/indirect-thunk-4.c
! 76b5340f3d1cae758f7f24f209df6970  gcc/testsuite/gcc.target/i386/indirect-thunk-5.c
! 44ba2c34bc32936af532c39182517a5f  gcc/testsuite/gcc.target/i386/indirect-thunk-6.c
  cd9517f2fb2890df6ac085a32cef6533  gcc/testsuite/gcc.target/i386/indirect-thunk-7.c
  136c6b3bb1163a3077d4207bfc4e5275  gcc/testsuite/gcc.target/i386/indirect-thunk-8.c
  c6d529ddda0429e0c528b2de3c8384d4  gcc/testsuite/gcc.target/i386/indirect-thunk-9.c
--- 86119,86126 ----
  6634641527cf4a67bc2ffa072bf43d67  gcc/testsuite/gcc.target/i386/indirect-thunk-2.c
  e3fefa84c66af43982bfc64e3a0014aa  gcc/testsuite/gcc.target/i386/indirect-thunk-3.c
  b03ee7d51ec7e327f350d2ac72c73745  gcc/testsuite/gcc.target/i386/indirect-thunk-4.c
! 0528225deeeeed5ec2bbebb1b2380ecf  gcc/testsuite/gcc.target/i386/indirect-thunk-5.c
! 594adf911b484a90d3518f853fc79aa7  gcc/testsuite/gcc.target/i386/indirect-thunk-6.c
  cd9517f2fb2890df6ac085a32cef6533  gcc/testsuite/gcc.target/i386/indirect-thunk-7.c
  136c6b3bb1163a3077d4207bfc4e5275  gcc/testsuite/gcc.target/i386/indirect-thunk-8.c
  c6d529ddda0429e0c528b2de3c8384d4  gcc/testsuite/gcc.target/i386/indirect-thunk-9.c
*************** b5c55c2b2dcc4dc18bdc6f9480aa3f1e  gcc/te
*** 86075,86082 ****
  673c8eac98371e92b7a913b2206da532  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c
  4afea13bb72bb242966023f3e5b2942a  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c
  213c4ee5c69d2614a59b48449aa3a7b1  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c
! d60595421b98710f0053736975cb92fb  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-5.c
! 159efa6bc07479836c1f52e007ec64f0  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-6.c
  7caad64af2c8b081cc9641db901f52f1  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c
  38223cb82cf9505ad00ae5f39795236b  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-8.c
  10472248234411fb1063837b89c71e06  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-9.c
--- 86145,86152 ----
  673c8eac98371e92b7a913b2206da532  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c
  4afea13bb72bb242966023f3e5b2942a  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c
  213c4ee5c69d2614a59b48449aa3a7b1  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c
! d40126e8caba69cf8aacf8788082855f  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-5.c
! 1d6ef53adc935b45aed2853c9969bf08  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-6.c
  7caad64af2c8b081cc9641db901f52f1  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c
  38223cb82cf9505ad00ae5f39795236b  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-8.c
  10472248234411fb1063837b89c71e06  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-9.c
*************** d692db3f4cee8e5a7dffecaeeda7be7c  gcc/te
*** 86084,86091 ****
  af6da2e88ba8fff102851e5d8fa6b8d1  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c
  d00c6a6fc15007fb5177523229284eeb  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c
  39e1131dd1cebc38cd205d7dfd29dd5b  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c
! 22d3ec31148d7eb42f889f412e80b98e  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-5.c
! 4bb39d2b0069f6a250bb165c0280899d  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-6.c
  9b18301c6819350bef178c74ce5003b1  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c
  3fca7ab3c0cbea1ed9c2df3bdb80bf9b  gcc/testsuite/gcc.target/i386/indirect-thunk-register-1.c
  a09ada0e82af6f6e6522d77d6b3e549d  gcc/testsuite/gcc.target/i386/indirect-thunk-register-2.c
--- 86154,86161 ----
  af6da2e88ba8fff102851e5d8fa6b8d1  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c
  d00c6a6fc15007fb5177523229284eeb  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c
  39e1131dd1cebc38cd205d7dfd29dd5b  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c
! fc4b6a3cea40556d676ce9cbe7a6ef9f  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-5.c
! 601b3740b00c9589168423cfe2073ac9  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-6.c
  9b18301c6819350bef178c74ce5003b1  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c
  3fca7ab3c0cbea1ed9c2df3bdb80bf9b  gcc/testsuite/gcc.target/i386/indirect-thunk-register-1.c
  a09ada0e82af6f6e6522d77d6b3e549d  gcc/testsuite/gcc.target/i386/indirect-thunk-register-2.c
*************** eea09433ae07509586cf81bfe0eba660  gcc/te
*** 86181,86186 ****
--- 86251,86257 ----
  c6f6aaff47d064fbceed4cfbcb5b9279  gcc/testsuite/gcc.target/i386/keylocker-encodekey128.c
  a468c392fd8838d0198cfb8b367d4b6d  gcc/testsuite/gcc.target/i386/keylocker-encodekey256.c
  78393ec91600382e98db57e560deaea9  gcc/testsuite/gcc.target/i386/keylocker-loadiwkey.c
+ 756d96c509b9d211464cf07af4df2b2c  gcc/testsuite/gcc.target/i386/kortest_ccz-1.c
  6a61f297f5746de86187140f048ab655  gcc/testsuite/gcc.target/i386/l_fma_1.h
  c598c1d2a127be1189b3dfe020919429  gcc/testsuite/gcc.target/i386/l_fma_2.h
  8aa60b44b83369f838965e6e8e99c4e7  gcc/testsuite/gcc.target/i386/l_fma_3.h
*************** b56b7319ec16cc733aa742b3020839be  gcc/te
*** 87456,87462 ****
  c76df20d01878e92fcfede59dff4d377  gcc/testsuite/gcc.target/i386/pr120936-9.c
  7aab49fe981257c8717fc97ce53ade31  gcc/testsuite/gcc.target/i386/pr120941-1.c
  56e6214e78411271065383bb6b1486a7  gcc/testsuite/gcc.target/i386/pr121015.c
! 515b72df52c2bf5b6d8e75709651af68  gcc/testsuite/gcc.target/i386/pr121062-1.c
  5652a3df7a8eedd930822cda2fa45a36  gcc/testsuite/gcc.target/i386/pr121062-2.c
  24252ca24cbd1c83a159d66504360be7  gcc/testsuite/gcc.target/i386/pr121062-3a.c
  b8ed1da53d7ba7c91e9b2842fb7537a1  gcc/testsuite/gcc.target/i386/pr121062-3b.c
--- 87527,87533 ----
  c76df20d01878e92fcfede59dff4d377  gcc/testsuite/gcc.target/i386/pr120936-9.c
  7aab49fe981257c8717fc97ce53ade31  gcc/testsuite/gcc.target/i386/pr120941-1.c
  56e6214e78411271065383bb6b1486a7  gcc/testsuite/gcc.target/i386/pr121015.c
! 7169595edef2ff6ffd51efdb76f2cbfc  gcc/testsuite/gcc.target/i386/pr121062-1.c
  5652a3df7a8eedd930822cda2fa45a36  gcc/testsuite/gcc.target/i386/pr121062-2.c
  24252ca24cbd1c83a159d66504360be7  gcc/testsuite/gcc.target/i386/pr121062-3a.c
  b8ed1da53d7ba7c91e9b2842fb7537a1  gcc/testsuite/gcc.target/i386/pr121062-3b.c
*************** c16fea0d740f8946249d8d3ff6230152  gcc/te
*** 90775,90781 ****
  15ee798ecf70fcf1ff54f0779a16f074  gcc/testsuite/gcc.target/loongarch/and-large-immediate-opt.c
  78d4e82afd447d6a8daeacd48e58bc86  gcc/testsuite/gcc.target/loongarch/arch-func-attr-1.c
  09e65435c71217bb197e267e1389d15f  gcc/testsuite/gcc.target/loongarch/arch-pragma-attr-1.c
! 39f421554134b131cd8ad8f5f2b6e2a1  gcc/testsuite/gcc.target/loongarch/attr-check-error-message.c
  9f6a0067cf273ede4ba33d3824d023ff  gcc/testsuite/gcc.target/loongarch/attr-model-1.c
  432baf56ded24535d315bd2e867a8be3  gcc/testsuite/gcc.target/loongarch/attr-model-2.c
  a7210513dd89b8e683a00184ee4478a4  gcc/testsuite/gcc.target/loongarch/attr-model-3.c
--- 90846,90861 ----
  15ee798ecf70fcf1ff54f0779a16f074  gcc/testsuite/gcc.target/loongarch/and-large-immediate-opt.c
  78d4e82afd447d6a8daeacd48e58bc86  gcc/testsuite/gcc.target/loongarch/arch-func-attr-1.c
  09e65435c71217bb197e267e1389d15f  gcc/testsuite/gcc.target/loongarch/arch-pragma-attr-1.c
! eff69bc35d048fa62601a9d8fcef96e4  gcc/testsuite/gcc.target/loongarch/attr-check-error-message.c
! 6614f3555f96772a1c779329ac2439da  gcc/testsuite/gcc.target/loongarch/attr-check-error-message1.c
! 5530609893948652dbab8e030453c29d  gcc/testsuite/gcc.target/loongarch/attr-check-error-message2.c
! f0bc17028b5d7e0015e6c97765168468  gcc/testsuite/gcc.target/loongarch/attr-check-error-message3.c
! 617e4326797856ee085559f10175d0d0  gcc/testsuite/gcc.target/loongarch/attr-check-error-message4.c
! 33e69c3ecf0711abc4767f5a23874b67  gcc/testsuite/gcc.target/loongarch/attr-check-error-message5.c
! 64c890914de64eca086414a511780c52  gcc/testsuite/gcc.target/loongarch/attr-check-error-message6.c
! b802a624eca3aa681adda2c112397671  gcc/testsuite/gcc.target/loongarch/attr-check-error-message7.c
! 7c6f1e4fec786dd470ff9c2e2d00b6c7  gcc/testsuite/gcc.target/loongarch/attr-check-error-message8.c
! 0b172e8801591f3d7a57c5fe320ca949  gcc/testsuite/gcc.target/loongarch/attr-check-error-message9.c
  9f6a0067cf273ede4ba33d3824d023ff  gcc/testsuite/gcc.target/loongarch/attr-model-1.c
  432baf56ded24535d315bd2e867a8be3  gcc/testsuite/gcc.target/loongarch/attr-model-2.c
  a7210513dd89b8e683a00184ee4478a4  gcc/testsuite/gcc.target/loongarch/attr-model-3.c
*************** acf1fac916847c2064b8d2bbb6535828  gcc/te
*** 90950,90955 ****
--- 91030,91037 ----
  d1eee63ffd26f53d2b788cb0eb55f5a6  gcc/testsuite/gcc.target/loongarch/pr121875.c
  1dd25b33f6fd8d4c4dc750865d86f404  gcc/testsuite/gcc.target/loongarch/pr121906.c
  4fb67de6ceaa4d3d0dfff318541b470b  gcc/testsuite/gcc.target/loongarch/pr122097.c
+ d8ba98681e844aa3cab41dadb293ad62  gcc/testsuite/gcc.target/loongarch/pragma-la64V1_1-2.c
+ 94f43e2ce509bac58eba454a85dd7a33  gcc/testsuite/gcc.target/loongarch/pragma-la64V1_1.c
  1eac553341d725c6e59615b593aedb0d  gcc/testsuite/gcc.target/loongarch/pragma-push-pop.c
  3adba2a8ae6f671eb22ec8228777c1ac  gcc/testsuite/gcc.target/loongarch/prolog-opt.c
  1bfa30f99dc5f04f569fbff68640ab19  gcc/testsuite/gcc.target/loongarch/recip-divf.c
*************** bb57d24452eb2fea309f990edfa5de1c  gcc/te
*** 91020,91025 ****
--- 91102,91108 ----
  20592e6b1e8a0f3b8742b7beb0f51ae2  gcc/testsuite/gcc.target/loongarch/va_arg.c
  bbbc51cc2b6669a160c181fc1ab12412  gcc/testsuite/gcc.target/loongarch/vec_pack_unpack_128.c
  70483635c3588614c2e0a2041be7876c  gcc/testsuite/gcc.target/loongarch/vec_pack_unpack_256.c
+ 112af8185d79088b4a51d1c2a0ce64cc  gcc/testsuite/gcc.target/loongarch/vec_reduc_half.c
  13cec58c7391a5cef41368197f850947  gcc/testsuite/gcc.target/loongarch/vect-extract.c
  e938ebb81df2ed0b44e7fabc3afc2107  gcc/testsuite/gcc.target/loongarch/vect-frint-no-inexact.c
  28d0cf4f00f5bdd8404d0daedaac3307  gcc/testsuite/gcc.target/loongarch/vect-frint-scalar-no-inexact.c
*************** b8b52424b352c9c8f70592d6f03b5a86  gcc/te
*** 95310,95315 ****
--- 95393,95400 ----
  851451c629fe33409b83f202bfc1068e  gcc/testsuite/gcc.target/pru/pr106564-2.c
  a919202ce244d49003df5ad24d6682bd  gcc/testsuite/gcc.target/pru/pr106564-3.c
  cf8d82ddb80b76405af0214285246746  gcc/testsuite/gcc.target/pru/pr106564-4.c
+ a2adc38ea81d4b1f232d63a0b78bb763  gcc/testsuite/gcc.target/pru/pr122415-1.c
+ 1d811b1ad6445573f221f8e8147603df  gcc/testsuite/gcc.target/pru/pr122415-2.c
  95d60ee7241a44ee286f73a59e590913  gcc/testsuite/gcc.target/pru/pr64366.c
  5f7730ea294934e3f6cf1feee72812d4  gcc/testsuite/gcc.target/pru/pragma-ctable_entry-2.c
  aa63cbae8ab220e484f3dfce0053edb2  gcc/testsuite/gcc.target/pru/pragma-ctable_entry.c
*************** da5abfc57f298d619d789eb91a345428  gcc/te
*** 97294,97300 ****
  40e483a69d4074f0388dec94437fe2fc  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr117383.c
  6f4b877c38034678241261cabd331914  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr117682.c
  b53bda284b5d4b9d98a1a590683b3dc3  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr117722.c
! 05b3afc4e979dfae5224c49b9d0109d1  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr118019-2.c
  f75f4f9162ac86fe6dbe859cff62c0d1  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr118019.c
  a301cf55dd715b64828f17d685cb89f7  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr118140.c
  f3f24420449914a2a57bd3e42094bc9b  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr118154-1.c
--- 97379,97385 ----
  40e483a69d4074f0388dec94437fe2fc  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr117383.c
  6f4b877c38034678241261cabd331914  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr117682.c
  b53bda284b5d4b9d98a1a590683b3dc3  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr117722.c
! 194049337deda59cac12e5a7a00a6824  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr118019-2.c
  f75f4f9162ac86fe6dbe859cff62c0d1  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr118019.c
  a301cf55dd715b64828f17d685cb89f7  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr118140.c
  f3f24420449914a2a57bd3e42094bc9b  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr118154-1.c
*************** ca9ef4de6ed36716b972a6b4efc63e85  gcc/te
*** 97330,97338 ****
--- 97415,97425 ----
  ff34ed0a7c5ef570af53aaf279c855c0  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr121959-5.c
  b8902d3044b75540ee1f52c004853935  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr121959-run-1.c
  e69ac673a560685af831869d72b01154  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr121959.h
+ 311a627408ac72490b3120be31a63ff3  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr121985.c
  505e3d028e24b575ded98597fbccdbfd  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr122124.c
  e990c042b373d09f16b69f4b30f0ac20  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr122321.c
  a46c21828339f41cac3054a662eefb70  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr122445.c
+ 9e392034c9515123dd44a7ee88bd8905  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr122627.c
  ee8bcba5f6876f2027f0f263f81465aa  gcc/testsuite/gcc.target/riscv/rvv/autovec/reduc/extract_last-1.c
  7ff884bfa2e6cf9bc4c6172466538515  gcc/testsuite/gcc.target/riscv/rvv/autovec/reduc/extract_last-10.c
  b2792e9264dcd6fa2e88f495d51677e6  gcc/testsuite/gcc.target/riscv/rvv/autovec/reduc/extract_last-11.c
*************** f1ef6fa13c480640b814506c7de90cc4  gcc/te
*** 98935,98964 ****
  5d4615048131f4bf8808b05375d398e8  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwsub-run-1-f32.c
  06ed78876e2ec7112f61e7ad4d7ca9ed  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwsub-run-2-f16.c
  8964a9709f073f1429277aa175e9ac29  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwsub-run-2-f32.c
! dd58b7a375ca415fa00dec0460c50c24  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c
! f8449da573246d363e4443b9f32f0f06  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i32.c
! 4abdc71a4d78eff367f15f9be04fb7fc  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i64.c
! b231dddff3540c987b251cf413e96a0c  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i8.c
! c753cfeab3166cdff6130cea027bedda  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c
! 60448e64d048feab9cecc572d9429141  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c
! 9e25345f25ec6ed66a6337c9ead1b355  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c
! 4bd4d8465912fd31ef999b199164b3c7  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c
! 97a4318491ad584290f2b2bef781322e  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i16.c
! 935c9835493916f219759aed3d339ec9  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i32.c
! 59608a9e1c34d3e1d054335c9a90bd97  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i64.c
! b1a59a3d1b37b0c7a1ff38505ab7a17b  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i8.c
! c7ea61b43e1fc89aac59f53e4e16197f  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c
! 4aea84d65dcda9a6431a6d88638c23ce  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c
! 5f1c5beb1ceb02e553b097fc07b7cc11  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c
! d1b35f2120d5335127cbce417dff6c98  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c
! 769f16086c2330f7eed8a44c27fa3c3b  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i16.c
! e9accde0ee3be9cea5d61ed620a02fff  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i32.c
! 3dcfb7e0adab0b03f0b2f2534ea342c1  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i64.c
! 0f06236cd498b25686910d051c5a135a  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i8.c
! 7c010ef8e790f6da8525aacc0fefec05  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c
! 0897b3fbf1cf51a37076e87ac4816313  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c
! 903b8c2002126b98abbc68ee09180b7b  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c
! 66f491f5982578d81d43f48cb849b7e6  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
--- 99022,99051 ----
  5d4615048131f4bf8808b05375d398e8  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwsub-run-1-f32.c
  06ed78876e2ec7112f61e7ad4d7ca9ed  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwsub-run-2-f16.c
  8964a9709f073f1429277aa175e9ac29  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwsub-run-2-f32.c
! 532499fe4712240f882f040a52d563b9  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c
! d32f2a9b504e96400a3946189679f946  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i32.c
! e0df0cd54359ab5c58ccdff58aa8183f  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i64.c
! 0b18f468ab9ea1643eba873965883231  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i8.c
! 1386a86b219c0eab54844b1dea1278e1  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c
! 4e7fb5e3c1474aed8720e4a84809d5cb  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c
! 193658146a5a8ab44d8ac9e133a2c118  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c
! 7088c846d148c3c8223c9ab7010204bb  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c
! ae7f31c84be9125152f50384856c1e06  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i16.c
! 82ac79827fa79586baf35bbc12346880  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i32.c
! 534160f9a0f8dec6626affd35fd54757  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i64.c
! 2f4efc7e5bd0c2fbcfacc06f5ab6a1ff  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i8.c
! 4d0d2fbdacfd95ec6293df34408b9600  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c
! 1083110a78565438817494eb57c99551  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c
! c9cb31d41bf684cd88ad13175d41676a  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c
! b26568530655589ddd6a16b86e701efb  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c
! 0761f19d2e6b2c982158560c35bcd56e  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i16.c
! ae4fd75622dc3571d9a50acf328fe359  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i32.c
! 659db0e2e480662e38dd9e8ac6a35b71  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i64.c
! 085e49a1d0ea493faad9af53bf721f1d  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i8.c
! d82d3597122d1b2bc5198b2dda8eeec8  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c
! 139c5c651099dd56ec7efcb4cbd6df9b  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c
! 1424f36e62bc7b379addfddb4fd7cf8d  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c
! 777818a81cb91069bfe32dbe4d7e29b3  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
*** 99004,99011 ****
  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
! 738ceca6a0494f006bd23ec6517ff9b5  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h
! 4640bcc49b379bad118720685e49bcdf  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
--- 99091,99098 ----
  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
! aa40b20e901d2c973ae8bec3ac33c970  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h
! f7422c67f2a8f90a20fbfac7fa46a9e4  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
*************** a1b9f8ae5b1f332e5b48755b28e40cdb  gcc/te
*** 99102,99107 ****
--- 99189,99202 ----
  535e49e9df34ef1ca5da4d694786afe2  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmin-run-2-u32.c
  2b9d8e190f843a7c4a8946cc51f91351  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmin-run-2-u64.c
  2de3c2ecf1ee7b545dbebb663de55351  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmin-run-2-u8.c
+ 161a80cac55bf528d30b42422a55250c  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-i16.c
+ a87b1325bcd418d2c35ec3ec414d2efb  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-i32.c
+ af39bb531df9d78fb100a8bc074d5527  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-i64.c
+ 2b975a93eaf661237da5350f1da35b87  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-i8.c
+ 5483ec69e3403d357acce66f98b2a214  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-u16.c
+ 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
  9076cf8f652bb87f5614bdec4824fc2f  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmul-run-1-i16.c
  f3610778d536959133cfda7115cd7ca8  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmul-run-1-i32.c
  8b6a8f2a6c0bc3be747fd220041e321f  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmul-run-1-i64.c
*************** f93d01a4769012de04e02ac44e05cd46  gcc/te
*** 100615,100621 ****
  e4457fcb3c7eb7d9b0612ce8e58acd93  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-34.c
  4b3f57506f7bb41746d7ebfed21be19d  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-35.c
  db0a5b3b6100b7acab9712793560a780  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-36.c
! 1b0c37572b837f0e0c8f7e03f1c0b00b  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-37.c
  fc113c8d95b51954d7f9871c93446b9f  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-38.c
  a45963b5d080e72125bbac7d426add30  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-39.c
  17d98ea8a8a651bc5ea1c12a8a76e844  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-4.c
--- 100710,100716 ----
  e4457fcb3c7eb7d9b0612ce8e58acd93  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-34.c
  4b3f57506f7bb41746d7ebfed21be19d  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-35.c
  db0a5b3b6100b7acab9712793560a780  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-36.c
! baad1a844810f4188b5c66116c07d376  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-37.c
  fc113c8d95b51954d7f9871c93446b9f  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-38.c
  a45963b5d080e72125bbac7d426add30  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-39.c
  17d98ea8a8a651bc5ea1c12a8a76e844  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-4.c
*************** d0dea6c8a28aa1c26e005ab315fca9d2  gcc/te
*** 100892,100925 ****
  3d02a71fa34038921ccb98e0c537ccec  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-7.c
  8c1390fd8c9921d4aad502d083521554  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-8.c
  eff1c636b7f4ff36ff201478217ffe22  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-9.c
! a5e9bd1d34550efab0a0cde227466e33  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-1.c
! 3489bc352c2377763790f9b04d1693b5  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-10.c
! 220700d69fce99f96ade0c3cb45bc2d6  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-11.c
! d185ed08a8bf01d91d8039964f9d5f7f  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-12.c
! db2aa9990b0ba91c492b400b060cb49c  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-13.c
! 5494ef93aa3c31dce8f8673ec7f9993b  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-14.c
! 28a1983dc07c40909d30fd6a9d84d43e  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-15.c
! 79076be85780892917a9ab177c2a2935  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-16.c
! 960f006023126b13afdf938105ab7986  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-17.c
! 0b0eae7e8f8218c1e55b62140fb28586  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-18.c
! e1c87d34b8bd73b511b2d3868775fbeb  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-19.c
! b87fa7c9f39de26ce15ec301b4a958ce  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-2.c
! bab6ccb139d6c7228ae725b02c3d3325  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-20.c
! 83246851f9501d24de397d44731b7f66  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-21.c
! f7af20d2e884a20337c389c826799a93  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-22.c
! 342d38c7151163a98c4db6e30f1c10dd  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-23.c
! cb113c7b54a6a60c7044faa20eaa7f5a  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-24.c
! 269d9785f3907865a6d920ab25b4a211  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-25.c
! 2c5fad4764d8686b9db957a6057e98cb  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-26.c
! 056afccfe0378f095d689712a8fd52c0  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-27.c
! c679601e707e809a64b2eb05a12c2d70  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-28.c
! 52c245616a6c42e3ce432b260a4e4dd8  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-3.c
! 4c50eeb81015f398ff357cf9089a0988  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-4.c
! a0348ea66b4f187c97cc979fbb9ca107  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-5.c
! 44b68fa28e2cace1095ae14560f04140  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-6.c
! 3972ca87425b7d5352c64cb3dde228b1  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-7.c
! e1a7473c20e7d6a781346a53e1cf152f  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-8.c
! 801bce09593a22e256997b0ba958b3df  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-9.c
  c5d930996fd2346c7d36b4092b881546  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_block-1.c
  c94cb0330d8863795da4992df2f5a5a8  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_block-10.c
  e129fdd9dd41d20ad1e909b64b9a7600  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_block-11.c
--- 100987,101020 ----
  3d02a71fa34038921ccb98e0c537ccec  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-7.c
  8c1390fd8c9921d4aad502d083521554  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-8.c
  eff1c636b7f4ff36ff201478217ffe22  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-9.c
! 23b0e57cbef8f1ae8efbc7dd57d94ee4  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-1.c
! 526c5d21d3d8ff221341ec908997d04e  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-10.c
! f1b9793f4186387645c312d75fd5656b  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-11.c
! ebf2f0f448d5880c82cd1817b6c1829e  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-12.c
! 828bd756327ab86fc83df722a5915bf2  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-13.c
! 4b66221bf53fef4efdb1ec671f694495  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-14.c
! 4e8744ca5b86f6e884d67a3f070c221d  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-15.c
! f8ec9648f9ee9602da1c7a4d896efa38  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-16.c
! a98877c802b8f3c673f61c9388aa90d2  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-17.c
! a98a49f984b1b10f9f7a778aeb09cbee  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-18.c
! 38ff12a54d95202cab81eef861a44b2d  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-19.c
! 0da11b8534a367ea7e3c41376e402368  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-2.c
! 8c24e713cd1874bec5f9723a50b3220d  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-20.c
! e9e1a0aa5904517a2ae633e2afaca42f  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-21.c
! b5d103b8cd4044752b40cc0d424a742b  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-22.c
! 3ebd4a679ef84b4d385732c3c52af225  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-23.c
! 8e7b5a4d9436a46fa7ba740992a0e9ac  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-24.c
! 3c6100ea30b2d575e037a7033d6b3e4a  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-25.c
! 7753def230b9238b4ef152782e3c6f8c  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-26.c
! 10ce435eac65dd984d59fd594009e109  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-27.c
! ed5a27fe5d671a5af2c6ac7cb481078d  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-28.c
! 6b0a21c103750e6e1310e3f685869be8  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-3.c
! d4d46175435cafe7bf4be0f0cd72832e  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-4.c
! beb2db79dafc591bd48e14dd4ec0af33  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-5.c
! 2c562b791ada7bff5e6deb14ae28cbf9  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-6.c
! fe96e01dc398ac35bcab00a60f66e13e  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-7.c
! fc2c1b2eb95399df39ff57d991e8bd1e  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-8.c
! 0512351dc27c3fd037dad44a4f36e6ab  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-9.c
  c5d930996fd2346c7d36b4092b881546  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_block-1.c
  c94cb0330d8863795da4992df2f5a5a8  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_block-10.c
  e129fdd9dd41d20ad1e909b64b9a7600  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_block-11.c
*************** bc3d746388a64b8efc8d54c61733e6ad  gcc/te
*** 102554,102559 ****
--- 102649,102658 ----
  2fa5c1396a5010a1cc712e1a8a2aa834  gcc/testsuite/gcc.target/s390/stack-clash-3.c
  9aaf7372b57bb00dcc00776ce67cbfff  gcc/testsuite/gcc.target/s390/stack-clash-4.c
  416604f1f6966a9841843e4274cc86c1  gcc/testsuite/gcc.target/s390/stack-clash-5.c
+ 4da9c1f267a9b26bd7252e43441c1dd2  gcc/testsuite/gcc.target/s390/stack-protector-guard-global-1.c
+ f4dd83de04bc9987ed038654890e8f5c  gcc/testsuite/gcc.target/s390/stack-protector-guard-global-2.c
+ b5daee4f83823db3b6ec431c58bd0892  gcc/testsuite/gcc.target/s390/stack-protector-guard-global-3.c
+ 21c461ecf01490118d4e756f70eb4dba  gcc/testsuite/gcc.target/s390/stack-protector-guard-global-4.c
  d6f96ad5c638b20cfc8abae2975a39ca  gcc/testsuite/gcc.target/s390/stack-protector-guard-tls-1.c
  3a9ba61f8844739d1b5989c7c7e2b6c1  gcc/testsuite/gcc.target/s390/stackcheck1.c
  6194a2f1ab73b5d2d770793e72434897  gcc/testsuite/gcc.target/s390/target-attribute/pr82012.c
*************** b7c2b03696caf836ff1ab415f5f62cfa  gcc/te
*** 111012,111017 ****
--- 111111,111117 ----
  cedb28f9cb297bbfa02fb0669634234b  gcc/testsuite/gfortran.dg/do_concurrent_reduce_max.f90
  f3112144c36ad5059b09183c276155c5  gcc/testsuite/gfortran.dg/do_concurrent_reduce_sum.f90
  42c3783e6bbd5cb747df9454e0cc634f  gcc/testsuite/gfortran.dg/do_concurrent_shared.f90
+ 88014773464896ec2c1ed0b171cd12fa  gcc/testsuite/gfortran.dg/do_concurrent_typespec_1.f90
  1d93eba1af31ae1574ed4ae6686c8f10  gcc/testsuite/gfortran.dg/do_corner_warn.f90
  8a29329028fba5406c50b33634ee840c  gcc/testsuite/gfortran.dg/do_iterator.f90
  375a8a74b19d3cbe445b71aac53fed90  gcc/testsuite/gfortran.dg/do_iterator_2.f90
*************** cccfd4eb98b07f30fc6a43462ae1078b  gcc/te
*** 111416,111421 ****
--- 111516,111524 ----
  520ae6cd723f43e02411aa72bb807bb5  gcc/testsuite/gfortran.dg/finalize_7.f03
  4f05943427a26d27e44b21078aec46fe  gcc/testsuite/gfortran.dg/finalize_8.f03
  2127f420195e5f6cdb58fe18800b4c33  gcc/testsuite/gfortran.dg/finalize_9.f90
+ bae7dedae44fd034e5baf82ba38f2cc4  gcc/testsuite/gfortran.dg/finalizer_recursive_alloc_1.f90
+ a8d9295c3cf377f5ae5d6a5432a4839b  gcc/testsuite/gfortran.dg/finalizer_recursive_alloc_2.f90
+ ce393849d1dddc7e370952edc00467f5  gcc/testsuite/gfortran.dg/finalizer_self_assign.f90
  bf61238b3b7b6fc0fa0299fb54103da5  gcc/testsuite/gfortran.dg/findloc_1.f90
  a0e3df827bf32fe2c2f8909306f1c0d5  gcc/testsuite/gfortran.dg/findloc_10.f90
  64ead876be3dc730e11de6b0cdf756a3  gcc/testsuite/gfortran.dg/findloc_2.f90
*************** cff02ee06837fc928051c3d36f6a221f  gcc/te
*** 111441,111447 ****
  1aa0cb748fde34e4900b801c5153a308  gcc/testsuite/gfortran.dg/fmt_en_ru.f90
  dd95e364741a524c16a2ca767db39620  gcc/testsuite/gfortran.dg/fmt_en_rz.f90
  51f4c68b5c689084070ee71c915fb347  gcc/testsuite/gfortran.dg/fmt_error.f90
! b95d99d2316fd9982bd82df8f1886832  gcc/testsuite/gfortran.dg/fmt_error_10.f
  4cc40888a17d146df1ece1cfbc9da885  gcc/testsuite/gfortran.dg/fmt_error_11.f03
  f0ca55042d3247d09d7bc304c059cc3a  gcc/testsuite/gfortran.dg/fmt_error_2.f90
  08714edf3b0ddedeaaa8832ea4399b48  gcc/testsuite/gfortran.dg/fmt_error_3.f90
--- 111544,111550 ----
  1aa0cb748fde34e4900b801c5153a308  gcc/testsuite/gfortran.dg/fmt_en_ru.f90
  dd95e364741a524c16a2ca767db39620  gcc/testsuite/gfortran.dg/fmt_en_rz.f90
  51f4c68b5c689084070ee71c915fb347  gcc/testsuite/gfortran.dg/fmt_error.f90
! 7463d17886a02a57aa8451c5b45f6385  gcc/testsuite/gfortran.dg/fmt_error_10.f
  4cc40888a17d146df1ece1cfbc9da885  gcc/testsuite/gfortran.dg/fmt_error_11.f03
  f0ca55042d3247d09d7bc304c059cc3a  gcc/testsuite/gfortran.dg/fmt_error_2.f90
  08714edf3b0ddedeaaa8832ea4399b48  gcc/testsuite/gfortran.dg/fmt_error_3.f90
*************** f8ae667c3d38aaadda84633fe1ec2778  gcc/te
*** 111465,111471 ****
  5dc0458b02b01e6d25132c6741011392  gcc/testsuite/gfortran.dg/fmt_g0_1.f08
  e3a0f3ed872ed9b377820f0e8b2044a7  gcc/testsuite/gfortran.dg/fmt_g0_2.f08
  d216b76ed81c95ec2cbca83beb2a093d  gcc/testsuite/gfortran.dg/fmt_g0_3.f08
! 0d5844e3555fdce5f791ab86af468a84  gcc/testsuite/gfortran.dg/fmt_g0_4.f08
  9d6ddbc2b6b277bbc803b70bb4528a83  gcc/testsuite/gfortran.dg/fmt_g0_5.f08
  3ec16d55fb3ea81714ad032e89713244  gcc/testsuite/gfortran.dg/fmt_g0_6.f08
  7ef97197f6af4e5e90b35d194812643f  gcc/testsuite/gfortran.dg/fmt_g0_7.f08
--- 111568,111574 ----
  5dc0458b02b01e6d25132c6741011392  gcc/testsuite/gfortran.dg/fmt_g0_1.f08
  e3a0f3ed872ed9b377820f0e8b2044a7  gcc/testsuite/gfortran.dg/fmt_g0_2.f08
  d216b76ed81c95ec2cbca83beb2a093d  gcc/testsuite/gfortran.dg/fmt_g0_3.f08
! f9d5f33916962f8e875a1fb84f71d7a3  gcc/testsuite/gfortran.dg/fmt_g0_4.f08
  9d6ddbc2b6b277bbc803b70bb4528a83  gcc/testsuite/gfortran.dg/fmt_g0_5.f08
  3ec16d55fb3ea81714ad032e89713244  gcc/testsuite/gfortran.dg/fmt_g0_6.f08
  7ef97197f6af4e5e90b35d194812643f  gcc/testsuite/gfortran.dg/fmt_g0_7.f08
*************** afb11a602b566cba010f9624d3692084  gcc/te
*** 111513,111519 ****
  701fade2a840cb9e3bf581edbedf810c  gcc/testsuite/gfortran.dg/fmt_zero_check.f90
  dc9ed2a13668303e52d0d4105a0e1f59  gcc/testsuite/gfortran.dg/fmt_zero_digits.f90
  cfe6a6fc0d5896e149acf8cbc9e53b9a  gcc/testsuite/gfortran.dg/fmt_zero_precision.f90
! e726baedb69caffaea12b6d40c53573c  gcc/testsuite/gfortran.dg/fmt_zero_width.f90
  93823024165c02ff6aafa96f78929937  gcc/testsuite/gfortran.dg/fold_nearest.f90
  75a4fd131c42b25fa39d55337b1c123a  gcc/testsuite/gfortran.dg/forall_1.f90
  38dac57f72b75131409460563ea3b3ce  gcc/testsuite/gfortran.dg/forall_10.f90
--- 111616,111622 ----
  701fade2a840cb9e3bf581edbedf810c  gcc/testsuite/gfortran.dg/fmt_zero_check.f90
  dc9ed2a13668303e52d0d4105a0e1f59  gcc/testsuite/gfortran.dg/fmt_zero_digits.f90
  cfe6a6fc0d5896e149acf8cbc9e53b9a  gcc/testsuite/gfortran.dg/fmt_zero_precision.f90
! c5f0bf04de4a4b119484f04ca7a7a445  gcc/testsuite/gfortran.dg/fmt_zero_width.f90
  93823024165c02ff6aafa96f78929937  gcc/testsuite/gfortran.dg/fold_nearest.f90
  75a4fd131c42b25fa39d55337b1c123a  gcc/testsuite/gfortran.dg/forall_1.f90
  38dac57f72b75131409460563ea3b3ce  gcc/testsuite/gfortran.dg/forall_10.f90
*************** f2965c649a5f8dcb271f4f49f656cfff  gcc/te
*** 114576,114582 ****
  7e8f4bd708c5e8d2c848ebda68cfa3e5  gcc/testsuite/gfortran.dg/pr110224.f90
  998a85b06cf4402e9dcaa8e7dd203ee2  gcc/testsuite/gfortran.dg/pr110415.f90
  47cd542147bf162109f2595723968363  gcc/testsuite/gfortran.dg/pr110996.f90
! 73c24aa3bc97b0687036c0da0f6bf2b2  gcc/testsuite/gfortran.dg/pr111022.f90
  65d07fd1935686cb66ec42fe6d001afd  gcc/testsuite/gfortran.dg/pr111853.f90
  6176c5192c44068787a0e803e38dacbd  gcc/testsuite/gfortran.dg/pr111880.f90
  2430bfa735afe7c9a37da0ceb3ba47a1  gcc/testsuite/gfortran.dg/pr111891.f90
--- 114679,114685 ----
  7e8f4bd708c5e8d2c848ebda68cfa3e5  gcc/testsuite/gfortran.dg/pr110224.f90
  998a85b06cf4402e9dcaa8e7dd203ee2  gcc/testsuite/gfortran.dg/pr110415.f90
  47cd542147bf162109f2595723968363  gcc/testsuite/gfortran.dg/pr110996.f90
! 8fee6a25342cd239d821dc8fef4eb847  gcc/testsuite/gfortran.dg/pr111022.f90
  65d07fd1935686cb66ec42fe6d001afd  gcc/testsuite/gfortran.dg/pr111853.f90
  6176c5192c44068787a0e803e38dacbd  gcc/testsuite/gfortran.dg/pr111880.f90
  2430bfa735afe7c9a37da0ceb3ba47a1  gcc/testsuite/gfortran.dg/pr111891.f90
*************** f715b6386f4a20f6cad01cbb51dffd3b  gcc/te
*** 114585,114591 ****
  d24ae0514cf8372947462a582502bca5  gcc/testsuite/gfortran.dg/pr112406.f90
  aa358931bdcdffc331e74ec0c69f4a2a  gcc/testsuite/gfortran.dg/pr112407a.f90
  75beb8de36fb348963c6214f20178363  gcc/testsuite/gfortran.dg/pr112407b.f90
! 49386e415982e1a2f18ad84457b9937e  gcc/testsuite/gfortran.dg/pr112459.f90
  88ac7aacaefcc6dc121e1009ed168d75  gcc/testsuite/gfortran.dg/pr112877-1.f90
  551b794393ba12749122575dffd8b57a  gcc/testsuite/gfortran.dg/pr113363.f90
  364da327aa8d67798baabc45b77d535a  gcc/testsuite/gfortran.dg/pr113503_1.f90
--- 114688,114694 ----
  d24ae0514cf8372947462a582502bca5  gcc/testsuite/gfortran.dg/pr112406.f90
  aa358931bdcdffc331e74ec0c69f4a2a  gcc/testsuite/gfortran.dg/pr112407a.f90
  75beb8de36fb348963c6214f20178363  gcc/testsuite/gfortran.dg/pr112407b.f90
! f40ebb8b0ba477daa44de7b09716213b  gcc/testsuite/gfortran.dg/pr112459.f90
  88ac7aacaefcc6dc121e1009ed168d75  gcc/testsuite/gfortran.dg/pr112877-1.f90
  551b794393ba12749122575dffd8b57a  gcc/testsuite/gfortran.dg/pr113363.f90
  364da327aa8d67798baabc45b77d535a  gcc/testsuite/gfortran.dg/pr113503_1.f90
*************** d56be000adb4e5f4b724c408cb3ef497  gcc/te
*** 115394,115401 ****
  2524ffbe2910a6b3473a3c31d7998a36  gcc/testsuite/gfortran.dg/pr96436_10.f90
  d5903f6b335e4ec014953d7d04a5333d  gcc/testsuite/gfortran.dg/pr96436_2.f90
  dde1a77e8079263845b0f3cd32842e75  gcc/testsuite/gfortran.dg/pr96436_3.f90
! 3c131319a4ec01e581295df53116f78a  gcc/testsuite/gfortran.dg/pr96436_4.f90
! e32640ff3b1830463b0d782d066a4c7d  gcc/testsuite/gfortran.dg/pr96436_5.f90
  bb672f4853167965dbd2fb64d85d3a06  gcc/testsuite/gfortran.dg/pr96436_6.f90
  aee380fea7e3e2a16dae6bf8d81c92f5  gcc/testsuite/gfortran.dg/pr96436_7.f90
  1cb7ddf98a011abb0604916e9800bcd8  gcc/testsuite/gfortran.dg/pr96436_8.f90
--- 115497,115504 ----
  2524ffbe2910a6b3473a3c31d7998a36  gcc/testsuite/gfortran.dg/pr96436_10.f90
  d5903f6b335e4ec014953d7d04a5333d  gcc/testsuite/gfortran.dg/pr96436_2.f90
  dde1a77e8079263845b0f3cd32842e75  gcc/testsuite/gfortran.dg/pr96436_3.f90
! 6ce3f89882d9dab8c0ecb5d02f7d6e38  gcc/testsuite/gfortran.dg/pr96436_4.f90
! 95a32c61771693db9f911e0fd052002f  gcc/testsuite/gfortran.dg/pr96436_5.f90
  bb672f4853167965dbd2fb64d85d3a06  gcc/testsuite/gfortran.dg/pr96436_6.f90
  aee380fea7e3e2a16dae6bf8d81c92f5  gcc/testsuite/gfortran.dg/pr96436_7.f90
  1cb7ddf98a011abb0604916e9800bcd8  gcc/testsuite/gfortran.dg/pr96436_8.f90
*************** d0d0c5e014e720d14becdb10cd74d6bb  gcc/te
*** 115630,115635 ****
--- 115733,115739 ----
  87345d6aca5d6bb9dadf055c45143fb2  gcc/testsuite/gfortran.dg/proc_ptr_result_6.f90
  c273afb240dd8ee8117b49f657c81476  gcc/testsuite/gfortran.dg/proc_ptr_result_7.f90
  1bc2a24244817d91ffb8efd08f27b2df  gcc/testsuite/gfortran.dg/proc_ptr_result_8.f90
+ 6e0c70764f29cc296e1c4358b6daec78  gcc/testsuite/gfortran.dg/proc_target_1.f90
  6cafac779e307ea3e5eea77636f44059  gcc/testsuite/gfortran.dg/procedure_lvalue.f90
  56206d45c5f13e14b3a1fb529ebdfba0  gcc/testsuite/gfortran.dg/product_init_expr.f03
  8cfd22f83c53cada6279a70564dbbee0  gcc/testsuite/gfortran.dg/product_sum_bounds_1.f90
*************** e0681ebf1cc0d7c0c6333d4894f4bb3d  gcc/te
*** 116752,116757 ****
--- 116856,116862 ----
  b46ba5ff0e0f3d11a40f4fd27e154383  gcc/testsuite/gfortran.dg/value_9.f90
  5497ec582b3049523e60926b1e6a663e  gcc/testsuite/gfortran.dg/value_optional_1.f90
  95aa76585d357378b76eea3a6d529192  gcc/testsuite/gfortran.dg/value_optional_2.f90
+ e5be8cf75a5ab044021569a922a61105  gcc/testsuite/gfortran.dg/value_optional_3.f90
  0d717003a2688af8d432e36362750a72  gcc/testsuite/gfortran.dg/value_test.f90
  726b4cde834cb3dc1ab0ada4c8388762  gcc/testsuite/gfortran.dg/value_tests_f03.f90
  17cda9ae919cf95b0f148e50a888a6fb  gcc/testsuite/gfortran.dg/variable_parameter.f90
*************** a60d5bd3c7d97738a821caa2b6320a63  gcc/te
*** 122184,122189 ****
--- 122289,122295 ----
  0cdebd32eacd337e71c8db2ab9d37a99  gcc/testsuite/gnat.dg/warn32.adb
  3c7023a211454ed0b601f4509949969b  gcc/testsuite/gnat.dg/warn33.adb
  831b1f99f5a5a1534ee78ccfa364a4d6  gcc/testsuite/gnat.dg/warn33_pkg.ads
+ 39cca47bb47cf534b57f5fb91e1dd22b  gcc/testsuite/gnat.dg/warn34.adb
  3973b8e21a39fdc98663d8d4c6b3ae18  gcc/testsuite/gnat.dg/warn4.adb
  30bdcc5f53e82fa0a748765edd2d8e03  gcc/testsuite/gnat.dg/warn5.adb
  99d15089537d8f6f3bed5ba4b1675ffc  gcc/testsuite/gnat.dg/warn6.adb
*************** d19a0449bac1fb497429a88904f3d658  gcc/te
*** 124193,124202 ****
  50c0f03762d429c13fd0302c79d90157  gcc/testsuite/go.test/test/varinit.go
  6447a99ae1e2eec266af1ceab6a7343c  gcc/testsuite/go.test/test/zerodivide.go
  340e08c9aef97a2da8f4cd4568d52675  gcc/testsuite/jit.dg/add-driver-options-testlib.c
! 09e7666c47077f5afaa2d82b31eb3bba  gcc/testsuite/jit.dg/all-non-failing-tests.h
  7bc42e89ae77872c8fc581b4babf1832  gcc/testsuite/jit.dg/create-code-for-hello-world-executable.h
  6599d673695ac45c69f897e7b9643cdb  gcc/testsuite/jit.dg/harness.h
  c2ab8a50f6099a876788d5e2b281249b  gcc/testsuite/jit.dg/jit.exp
  3fd6900c9d1d0edd53191542d96ffcec  gcc/testsuite/jit.dg/test-accessing-bitfield.c
  790dcf4e4a5c3dce84639ef815265f21  gcc/testsuite/jit.dg/test-accessing-struct.c
  60caef14bfb482627a962469a4524fce  gcc/testsuite/jit.dg/test-accessing-union.c
--- 124299,124309 ----
  50c0f03762d429c13fd0302c79d90157  gcc/testsuite/go.test/test/varinit.go
  6447a99ae1e2eec266af1ceab6a7343c  gcc/testsuite/go.test/test/zerodivide.go
  340e08c9aef97a2da8f4cd4568d52675  gcc/testsuite/jit.dg/add-driver-options-testlib.c
! cc837bfe74ef7da8c6b5737b231a2994  gcc/testsuite/jit.dg/all-non-failing-tests.h
  7bc42e89ae77872c8fc581b4babf1832  gcc/testsuite/jit.dg/create-code-for-hello-world-executable.h
  6599d673695ac45c69f897e7b9643cdb  gcc/testsuite/jit.dg/harness.h
  c2ab8a50f6099a876788d5e2b281249b  gcc/testsuite/jit.dg/jit.exp
+ cc87407a90e831ba28a6511b6f1dd45c  gcc/testsuite/jit.dg/test-abi.c
  3fd6900c9d1d0edd53191542d96ffcec  gcc/testsuite/jit.dg/test-accessing-bitfield.c
  790dcf4e4a5c3dce84639ef815265f21  gcc/testsuite/jit.dg/test-accessing-struct.c
  60caef14bfb482627a962469a4524fce  gcc/testsuite/jit.dg/test-accessing-union.c
*************** edcd6b4cfe25a7233b7c7b59f0889ef4  gcc/te
*** 127085,127091 ****
  00cbafca76647e207526939f6ce782be  gcc/timevar.cc
  a88c03e35b27a898cfa4d6810d58410a  gcc/timevar.def
  d1eee141f10cb25a673cf78888396745  gcc/timevar.h
! 80cf4135bb8174b38a51c364a9924c4b  gcc/toplev.cc
  1720dc69e58e480830de71ecb3eb364d  gcc/toplev.h
  cbb8fb6fcd7138a90fc489b10fe3c862  gcc/tracer.cc
  a58a166bda01c9a970218d3f6c5e330f  gcc/tracer.h
--- 127192,127198 ----
  00cbafca76647e207526939f6ce782be  gcc/timevar.cc
  a88c03e35b27a898cfa4d6810d58410a  gcc/timevar.def
  d1eee141f10cb25a673cf78888396745  gcc/timevar.h
! 5f7608fc2dc637fef9c60bdef5e4c00e  gcc/toplev.cc
  1720dc69e58e480830de71ecb3eb364d  gcc/toplev.h
  cbb8fb6fcd7138a90fc489b10fe3c862  gcc/tracer.cc
  a58a166bda01c9a970218d3f6c5e330f  gcc/tracer.h
*************** b4a6da1471f279353aaca4956c18cdea  gcc/tr
*** 127095,127103 ****
  bcff760f6710b9047412aba72a381983  gcc/tree-affine.h
  527c9fa3845b2653cafc14c109129179  gcc/tree-assume.cc
  23590c969997d33ec2e1fa1da2a89526  gcc/tree-call-cdce.cc
! 10d118eda591a48c466dd55bc5029116  gcc/tree-cfg.cc
! 591222e5199894b9b5d23b1822f7e309  gcc/tree-cfg.h
! a97c453565aee694c774afbaf1fe97b9  gcc/tree-cfgcleanup.cc
  b528a0932f50504df146d112f7d01a5c  gcc/tree-cfgcleanup.h
  1718a36253ebbb17fe4570fc768216c9  gcc/tree-chrec.cc
  0e4a484c6387f9be0a506783637432f9  gcc/tree-chrec.h
--- 127202,127210 ----
  bcff760f6710b9047412aba72a381983  gcc/tree-affine.h
  527c9fa3845b2653cafc14c109129179  gcc/tree-assume.cc
  23590c969997d33ec2e1fa1da2a89526  gcc/tree-call-cdce.cc
! 2c03161e3401b5343b2c2e3fe83e557e  gcc/tree-cfg.cc
! 10d3c7c1807e0cb252d9100eed514e59  gcc/tree-cfg.h
! 0bc397f7b8f2627f5a416a460713436d  gcc/tree-cfgcleanup.cc
  b528a0932f50504df146d112f7d01a5c  gcc/tree-cfgcleanup.h
  1718a36253ebbb17fe4570fc768216c9  gcc/tree-chrec.cc
  0e4a484c6387f9be0a506783637432f9  gcc/tree-chrec.h
*************** f9731b5179d6c364587220c2aea59a3e  gcc/tr
*** 127117,127123 ****
  f3e814f679f1b8d21b1c54ad5ee16856  gcc/tree-emutls.cc
  e046a9c4874579f81515c4b3d9106b63  gcc/tree-hash-traits.h
  7e063b1edd28723f3f432596c39cfbee  gcc/tree-hasher.h
! e9f860de6645d35018a087515bcfe04f  gcc/tree-if-conv.cc
  002c9568898504ca2025dcacf5151fd6  gcc/tree-if-conv.h
  9650c4ca2c6433fcd2096065741fda15  gcc/tree-inline.cc
  326f91431bfd3c15d8ddd74699d666e6  gcc/tree-inline.h
--- 127224,127230 ----
  f3e814f679f1b8d21b1c54ad5ee16856  gcc/tree-emutls.cc
  e046a9c4874579f81515c4b3d9106b63  gcc/tree-hash-traits.h
  7e063b1edd28723f3f432596c39cfbee  gcc/tree-hasher.h
! ab245837876f2da0af044a74ebcfac2d  gcc/tree-if-conv.cc
  002c9568898504ca2025dcacf5151fd6  gcc/tree-if-conv.h
  9650c4ca2c6433fcd2096065741fda15  gcc/tree-inline.cc
  326f91431bfd3c15d8ddd74699d666e6  gcc/tree-inline.h
*************** beaa17685ead93eee17f6373d004c4c4  gcc/tr
*** 127145,127151 ****
  75f7536de821e165a3a39bbd1cdfe9d8  gcc/tree-pretty-print.cc
  fd4dd1219acc650a4f7855faa0097964  gcc/tree-pretty-print.h
  7c11aa147a6d02acce5170cb35aed445  gcc/tree-profile.cc
! df0924c6920ee14ac6abdbfc9a1f8f9d  gcc/tree-scalar-evolution.cc
  dddd950fe463803c41bc0c7cddf0fe44  gcc/tree-scalar-evolution.h
  b72513bb0f4b53e7bfa5353836a30feb  gcc/tree-sra.cc
  c022e816e38c8f399e6a16163c56d6db  gcc/tree-sra.h
--- 127252,127258 ----
  75f7536de821e165a3a39bbd1cdfe9d8  gcc/tree-pretty-print.cc
  fd4dd1219acc650a4f7855faa0097964  gcc/tree-pretty-print.h
  7c11aa147a6d02acce5170cb35aed445  gcc/tree-profile.cc
! 30eadcd3625eaa7cbebc8de55729efbc  gcc/tree-scalar-evolution.cc
  dddd950fe463803c41bc0c7cddf0fe44  gcc/tree-scalar-evolution.h
  b72513bb0f4b53e7bfa5353836a30feb  gcc/tree-sra.cc
  c022e816e38c8f399e6a16163c56d6db  gcc/tree-sra.h
*************** bc6f720750badcd2ff68dddf544e75eb  gcc/tr
*** 127159,127165 ****
  56468d0bf8f8f4c754ea03008cc6c0eb  gcc/tree-ssa-coalesce.cc
  44217fe298d550aecd4800f65391c931  gcc/tree-ssa-coalesce.h
  be605b5b6cac7c418bd348b54f9d47cf  gcc/tree-ssa-copy.cc
! e46744d5469710042e0bd90f388de3ee  gcc/tree-ssa-dce.cc
  4b3c2e3456bae55a01edd98396b099a1  gcc/tree-ssa-dce.h
  b9ccca93dfe789389d268eca6dbec62f  gcc/tree-ssa-dom.cc
  0046e212ff1b9f3f4d27d055aa299c47  gcc/tree-ssa-dom.h
--- 127266,127272 ----
  56468d0bf8f8f4c754ea03008cc6c0eb  gcc/tree-ssa-coalesce.cc
  44217fe298d550aecd4800f65391c931  gcc/tree-ssa-coalesce.h
  be605b5b6cac7c418bd348b54f9d47cf  gcc/tree-ssa-copy.cc
! 3caa451b12400d5dfc32f39560675a6f  gcc/tree-ssa-dce.cc
  4b3c2e3456bae55a01edd98396b099a1  gcc/tree-ssa-dce.h
  b9ccca93dfe789389d268eca6dbec62f  gcc/tree-ssa-dom.cc
  0046e212ff1b9f3f4d27d055aa299c47  gcc/tree-ssa-dom.h
*************** ec0ea4b2fca8f29ceacc9fa4130673d0  gcc/tr
*** 127176,127182 ****
  1f70c217ef5bd5f655512b9232754870  gcc/tree-ssa-loop-ivopts.h
  71ebf1f6c8d82b1fdbca6c7aa3bd14cb  gcc/tree-ssa-loop-manip.cc
  fbcc93539b376489c1256eb8cf2d4800  gcc/tree-ssa-loop-manip.h
! e46036857b12db908d25787f3eda137a  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
--- 127283,127289 ----
  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
*************** fbd423299c28bb3b3577ec61aba45439  gcc/tr
*** 127215,127221 ****
  c071186b46f37cd7acd76a679deb3f9d  gcc/tree-ssa-uninit.cc
  0cb7cabeb68ef8727724158e83e6c89e  gcc/tree-ssa.cc
  95d033c8a4bc14c898459494486fd902  gcc/tree-ssa.h
! 23f15b1d75e2364bd1549842b38ec881  gcc/tree-ssanames.cc
  6ab32249b70e72b4d8b9d4abc134aa6d  gcc/tree-ssanames.h
  5fa0d7c6143cd9e39c30840b9996fa30  gcc/tree-stdarg.cc
  9817789b6289e73955015beb57c609b1  gcc/tree-stdarg.h
--- 127322,127328 ----
  c071186b46f37cd7acd76a679deb3f9d  gcc/tree-ssa-uninit.cc
  0cb7cabeb68ef8727724158e83e6c89e  gcc/tree-ssa.cc
  95d033c8a4bc14c898459494486fd902  gcc/tree-ssa.h
! e1e50f26c4b514ef39e8b153cf8168ac  gcc/tree-ssanames.cc
  6ab32249b70e72b4d8b9d4abc134aa6d  gcc/tree-ssanames.h
  5fa0d7c6143cd9e39c30840b9996fa30  gcc/tree-stdarg.cc
  9817789b6289e73955015beb57c609b1  gcc/tree-stdarg.h
*************** af4c63760c432f66b1c6c8e7e7666699  gcc/tr
*** 127226,127244 ****
  fc4b4f80b4c39a4bf73ced787dec927c  gcc/tree-switch-conversion.cc
  ebb8ac3717c1bf5db4371da2f3cf6af7  gcc/tree-switch-conversion.h
  c98debbdc978c10e8934f3b4fb7e2504  gcc/tree-tailcall.cc
! 8d87f66fe4da0320df57a47e89af8db8  gcc/tree-vect-data-refs.cc
  e569116acd109106c3f93f17b35e82c9  gcc/tree-vect-generic.cc
! 68f9460ebe49ce21a4b55cb0b0357ac0  gcc/tree-vect-loop-manip.cc
! ee496e346ae68826c6aad76b3ffadbfc  gcc/tree-vect-loop.cc
! 04a82f888445c931e0ace82b02b3230b  gcc/tree-vect-patterns.cc
  588899232babed9c67e61795ff405608  gcc/tree-vect-slp-patterns.cc
! f1a62b3eef5c42402f69bc4866422997  gcc/tree-vect-slp.cc
! 6e7438dde3011e0bbb6120a506c13ef8  gcc/tree-vect-stmts.cc
  c8efeee600d612c4bae8dda4bd45ee54  gcc/tree-vector-builder.cc
  258611ff1e83cc7680e8c9f033499665  gcc/tree-vector-builder.h
! cb678f63a201f9ffc105c6c996f2b8f2  gcc/tree-vectorizer.cc
! c634b8ea66b07f5658df0b52c0ec3311  gcc/tree-vectorizer.h
! 1bed475667cbd8dee00c3b7da964ca5b  gcc/tree-vrp.cc
  a19edad681d27130bd2a0d83768ac946  gcc/tree-vrp.h
  0e69ca4b6771dc2c045e46af835c7a34  gcc/tree.cc
  2b3067f4ee14760d08fdfee4eb6b8a00  gcc/tree.def
--- 127333,127351 ----
  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
! fb5fe49fc60ad2490a0a550d8b4b75bc  gcc/tree-vect-loop-manip.cc
! dc33e4f886b0f73e1a4496702247ea54  gcc/tree-vect-loop.cc
! 1b7dbf0667537cd5ff3a40f07bef6ffa  gcc/tree-vect-patterns.cc
  588899232babed9c67e61795ff405608  gcc/tree-vect-slp-patterns.cc
! bc2ec11489eb4cc7a048437577bb9c4a  gcc/tree-vect-slp.cc
! 20af824df44a8b025768f248fbdf31ed  gcc/tree-vect-stmts.cc
  c8efeee600d612c4bae8dda4bd45ee54  gcc/tree-vector-builder.cc
  258611ff1e83cc7680e8c9f033499665  gcc/tree-vector-builder.h
! c516450d07587e25c338c4223664b2ad  gcc/tree-vectorizer.cc
! ab5b0287b730ed04580af3d498ee46f3  gcc/tree-vectorizer.h
! 6af612260e9aa57da3abab8955305844  gcc/tree-vrp.cc
  a19edad681d27130bd2a0d83768ac946  gcc/tree-vrp.h
  0e69ca4b6771dc2c045e46af835c7a34  gcc/tree.cc
  2b3067f4ee14760d08fdfee4eb6b8a00  gcc/tree.def
*************** a9422171692d7910cbbb362c686e1a69  gcc/ub
*** 127261,127268 ****
  c659567b46a45d5653d68c54b89e54f6  gcc/value-pointer-equiv.h
  0db5e76c85aff0c1e0626bb73557b1b2  gcc/value-prof.cc
  a5465dfed701e79fa489b2bb9ef03526  gcc/value-prof.h
! df85736a75a28f2d961a417c6edbbeeb  gcc/value-query.cc
! 720dbd9f4a896b088fdcf04bcd6f460b  gcc/value-query.h
  059762db0b1055bd987008c8461bc04b  gcc/value-range-pretty-print.cc
  5ee1b56a5e76c505c40cf28eb30f62e6  gcc/value-range-pretty-print.h
  6b536deb5ade6571e0988bf82fede1e2  gcc/value-range-storage.cc
--- 127368,127375 ----
  c659567b46a45d5653d68c54b89e54f6  gcc/value-pointer-equiv.h
  0db5e76c85aff0c1e0626bb73557b1b2  gcc/value-prof.cc
  a5465dfed701e79fa489b2bb9ef03526  gcc/value-prof.h
! e1189a7a57364aa6379d885c8c3034c4  gcc/value-query.cc
! 84d8a5a07e1da970d1dec5d8f7dcaa82  gcc/value-query.h
  059762db0b1055bd987008c8461bc04b  gcc/value-range-pretty-print.cc
  5ee1b56a5e76c505c40cf28eb30f62e6  gcc/value-range-pretty-print.h
  6b536deb5ade6571e0988bf82fede1e2  gcc/value-range-storage.cc
*************** c4e8176c1964a5ebe0a55900f2141299  gotool
*** 127312,127325 ****
  eb2aeb3a6cffe7b26a8f1c8a2da23dcd  gotools/gofmt.1
  59530bdf33659b29e73d4adb9f9f6552  include/COPYING
  d32239bcb673463ab874e80d47fae504  include/COPYING3
! 40609c03b4b9e1e5f1adb00dfc288c0f  include/ChangeLog
  4263432a72ff47ed8bf420208ee7eea5  include/ChangeLog-9103
  a43d76108493b20da790f953f829c6a5  include/ChangeLog.jit
  44b123c52a2755c9e6bf43ec0c33ae49  include/ansidecl.h
  41d62dc59372a21c11b2e92bc076f055  include/btf.h
  deab60fc60574f76d56ea615e8341b4c  include/collectorAPI.h
  8400c3822a66db64a821ee34cb826dea  include/ctf.h
! 3cc2d7162f5b6bb41dd36fbff16d0390  include/cuda/cuda.h
  88bb340d09e3b3e9b4c0aee82639ee99  include/demangle.h
  b4d292e79470c7908752af419100eb05  include/doubly-linked-list.h
  d1a42fde9f44f86668aadf9c1d9baec7  include/dwarf2.def
--- 127419,127432 ----
  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
  41d62dc59372a21c11b2e92bc076f055  include/btf.h
  deab60fc60574f76d56ea615e8341b4c  include/collectorAPI.h
  8400c3822a66db64a821ee34cb826dea  include/ctf.h
! 556e0b22d2ac71d38fb35f5dd22042e6  include/cuda/cuda.h
  88bb340d09e3b3e9b4c0aee82639ee99  include/demangle.h
  b4d292e79470c7908752af419100eb05  include/doubly-linked-list.h
  d1a42fde9f44f86668aadf9c1d9baec7  include/dwarf2.def
*************** f69c85bce2eefec959834977b0e363aa  includ
*** 127337,127343 ****
  e27e2525cf1fed8c89039e133b1e2c85  include/gcc-interface.h
  694b878ad158b166bb65de38ff902f39  include/gdb/gdb-index.h
  c67dacb4baed3b58603898c91e8b3a43  include/getopt.h
! 888b2635636e8d809997a21f6333ef01  include/gomp-constants.h
  94b47e7bd114c7bfa9d2eb1ffc606526  include/hashtab.h
  a60e7538de6c6058ce9da2c087d4f509  include/hsa.h
  cb74ebfb08a77d7e3734ec67963de6db  include/hsa_ext_amd.h
--- 127444,127450 ----
  e27e2525cf1fed8c89039e133b1e2c85  include/gcc-interface.h
  694b878ad158b166bb65de38ff902f39  include/gdb/gdb-index.h
  c67dacb4baed3b58603898c91e8b3a43  include/getopt.h
! 166564252573a229d5ff5df3515f42ab  include/gomp-constants.h
  94b47e7bd114c7bfa9d2eb1ffc606526  include/hashtab.h
  a60e7538de6c6058ce9da2c087d4f509  include/hsa.h
  cb74ebfb08a77d7e3734ec67963de6db  include/hsa_ext_amd.h
*************** c7399bbb7eadd31d7cd04991cd79c238  includ
*** 127372,127380 ****
  46d6319e8ffc7eabf27cbecd6141a912  libada/configure
  c01f38de8270d558b8d3ecac839d3bbf  libada/configure.ac
  46d3fe6da7a771cc2d5420c4137a6861  libatomic/.gitignore
! 5e4e088db25cc0422b942713c5e2ba44  libatomic/ChangeLog
! 69658b52c97a53d29fb6c0788725ba9a  libatomic/Makefile.am
! 93ea39705fb026f7bc42cbe52d53b2c9  libatomic/Makefile.in
  04a8eb275561484cf0d6f8c459a38177  libatomic/acinclude.m4
  65ce51ad1e77408c7dba775ba9859d1e  libatomic/aclocal.m4
  b741b38c451feebdcd9aedce6e37b702  libatomic/auto-config.h.in
--- 127479,127487 ----
  46d6319e8ffc7eabf27cbecd6141a912  libada/configure
  c01f38de8270d558b8d3ecac839d3bbf  libada/configure.ac
  46d3fe6da7a771cc2d5420c4137a6861  libatomic/.gitignore
! 6fed691a56374bc5e02e3eec7949a85b  libatomic/ChangeLog
! 22c7908ed07d94ad58548bcab79a35f2  libatomic/Makefile.am
! 2e5b5c867693b7f777a87ca4a0ff3628  libatomic/Makefile.in
  04a8eb275561484cf0d6f8c459a38177  libatomic/acinclude.m4
  65ce51ad1e77408c7dba775ba9859d1e  libatomic/aclocal.m4
  b741b38c451feebdcd9aedce6e37b702  libatomic/auto-config.h.in
*************** d13087e4644f9fe5d80788757ff46e68  libato
*** 127391,127396 ****
--- 127498,127504 ----
  423779db599c13fc9af18b2ef208173f  libatomic/config/linux/arm/init.c
  cebfcb10a591e79fa8fabc132673577c  libatomic/config/linux/arm/load_n.c
  15f5997bd29a7b4b007899457a03b0b2  libatomic/config/linux/arm/store_n.c
+ 6c34635c1359e8491c308fac9f796fd3  libatomic/config/loongarch/host-config.h
  6ed25756e0492f02ca47ec117ea4d53a  libatomic/config/mingw/host-config.h
  2ed4665fde40bfdee850415625f915f0  libatomic/config/mingw/lock.c
  d0c7d25c393629560987b67f16af04ca  libatomic/config/nvptx/host-config.h
*************** ed3d69739cb2f35407547229f0393f92  libato
*** 127409,127417 ****
  e40da0e8515ee6996456294b571e5572  libatomic/config/x86/fenv.c
  e3229b3119558c9d6d6d8f8676d4f1ce  libatomic/config/x86/host-config.h
  6d8f1d8fc6da675bbeacfbd55dca52c9  libatomic/config/x86/init.c
! a7ce11ba8ae8431c4cef4f952312741d  libatomic/configure
! 99d36adaa61e3ee868d3eb476acfb755  libatomic/configure.ac
! 3af5de9020aa1a7aa503e70067cd98d8  libatomic/configure.tgt
  cffc539e08bc3149260124f3eb09e1a1  libatomic/exch_n.c
  35ea85a90d52ccf9efaf3179f1201076  libatomic/fadd_n.c
  5934b0ba904c11c743af25059a8b7092  libatomic/fand_n.c
--- 127517,127525 ----
  e40da0e8515ee6996456294b571e5572  libatomic/config/x86/fenv.c
  e3229b3119558c9d6d6d8f8676d4f1ce  libatomic/config/x86/host-config.h
  6d8f1d8fc6da675bbeacfbd55dca52c9  libatomic/config/x86/init.c
! 3dcf94b6b67add3eeeeda3e3fd87759e  libatomic/configure
! abf6360bd010fbde8c4c935f1cf5616d  libatomic/configure.ac
! 9214be1259694af7ffa422117215249a  libatomic/configure.tgt
  cffc539e08bc3149260124f3eb09e1a1  libatomic/exch_n.c
  35ea85a90d52ccf9efaf3179f1201076  libatomic/fadd_n.c
  5934b0ba904c11c743af25059a8b7092  libatomic/fand_n.c
*************** cffdeae41b78da05839b193e90188f55  libcod
*** 127574,127580 ****
  6419dfc879387358e95288142e569914  libcody/packet.cc
  688ece05c8b9d378b3df186808162e76  libcody/resolver.cc
  b1f3850fc5ac62999d1e124aa6f76531  libcody/server.cc
! e5cc47a5419c0b57ef81cecd47e61017  libcpp/ChangeLog
  2bd831b17997584e38305782cebe6948  libcpp/ChangeLog.jit
  e80a909ca87015a009bee9588bb84a64  libcpp/Makefile.in
  b07c7863f0e7ad4e6a0915d66fc9e582  libcpp/aclocal.m4
--- 127682,127688 ----
  6419dfc879387358e95288142e569914  libcody/packet.cc
  688ece05c8b9d378b3df186808162e76  libcody/resolver.cc
  b1f3850fc5ac62999d1e124aa6f76531  libcody/server.cc
! bfa0a9ec0fe45dba57e77309735ecc99  libcpp/ChangeLog
  2bd831b17997584e38305782cebe6948  libcpp/ChangeLog.jit
  e80a909ca87015a009bee9588bb84a64  libcpp/Makefile.in
  b07c7863f0e7ad4e6a0915d66fc9e582  libcpp/aclocal.m4
*************** b07c7863f0e7ad4e6a0915d66fc9e582  libcpp
*** 127583,127589 ****
  4c25fc38f2b9d20ca1fbefba9ad34b45  libcpp/config.in
  1f35bde4e477ffcd3dbcc37983f37384  libcpp/configure
  6352fad15318314000f7748c445b7e8f  libcpp/configure.ac
! 087d19c20ce1e2255ed608727bc22828  libcpp/directives.cc
  fe94628a876ca876eb1ac6dc396c0068  libcpp/errors.cc
  a80d04c82bb4afb7bdb159103298ecd0  libcpp/expr.cc
  ce74c78c2cb27bcdeac8a9b0400712cd  libcpp/files.cc
--- 127691,127697 ----
  4c25fc38f2b9d20ca1fbefba9ad34b45  libcpp/config.in
  1f35bde4e477ffcd3dbcc37983f37384  libcpp/configure
  6352fad15318314000f7748c445b7e8f  libcpp/configure.ac
! 4544249e26f23e9431a118ea6d548b52  libcpp/directives.cc
  fe94628a876ca876eb1ac6dc396c0068  libcpp/errors.cc
  a80d04c82bb4afb7bdb159103298ecd0  libcpp/expr.cc
  ce74c78c2cb27bcdeac8a9b0400712cd  libcpp/files.cc
*************** d7530c9a36bef9a00a690083401e3c83  libcpp
*** 127591,127610 ****
  c496c50691c37464e0aacc985cc3ab1e  libcpp/identifiers.cc
  afbc7662b6b89d8d2eda44c65840759f  libcpp/include/cpplib.h
  ac88522f7fec46badcd2623d11a4b61e  libcpp/include/label-text.h
! 6e9cd1cd5302cadeeee219ac9b519871  libcpp/include/line-map.h
  4779aaa10e24fd2398a105e78bdd88a5  libcpp/include/mkdeps.h
  e7ac00cffa78c0e155998831a5cd5a1e  libcpp/include/rich-location.h
  d516a30568fd33a5e69be4374f27812f  libcpp/include/symtab.h
  6ca7a34229f481396dbd24fb80f45c49  libcpp/init.cc
  3e462ce9a600968eb061f2c013777a32  libcpp/internal.h
! ec163df1522f3c30aeaeffb9937faa9d  libcpp/lex.cc
  2e71ca8fb0f9a1be425b538ec8b24aae  libcpp/line-map.cc
  46a07100f95f5e354c7e25cd19d26884  libcpp/location-example.txt
  063ba025b33226a472d05def21a82339  libcpp/macro.cc
  e7d538782f7dc85a9f0d6d45c59793c0  libcpp/makeucnid.cc
  6302de5927cf65394d8d2fbe10480a24  libcpp/makeuname2c.cc
  15ffbe55bf3e5cc75e66cfb1125773a8  libcpp/mkdeps.cc
! 893a85ab3fc4806dc0c614afce9b7110  libcpp/pch.cc
  f5485bd4bfe66c81b92f7edf7813a91f  libcpp/po/ChangeLog
  5a131bbc2e718f87b148455d3b557800  libcpp/po/be.po
  4c220e08630ab2f3bc879ac1f37815d4  libcpp/po/ca.po
--- 127699,127718 ----
  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
  063ba025b33226a472d05def21a82339  libcpp/macro.cc
  e7d538782f7dc85a9f0d6d45c59793c0  libcpp/makeucnid.cc
  6302de5927cf65394d8d2fbe10480a24  libcpp/makeuname2c.cc
  15ffbe55bf3e5cc75e66cfb1125773a8  libcpp/mkdeps.cc
! 0917a14982ddfaaac11da934f13b6920  libcpp/pch.cc
  f5485bd4bfe66c81b92f7edf7813a91f  libcpp/po/ChangeLog
  5a131bbc2e718f87b148455d3b557800  libcpp/po/be.po
  4c220e08630ab2f3bc879ac1f37815d4  libcpp/po/ca.po
*************** a3eb5dee2788fe0a6c42502ba658eddd  libffi
*** 128098,128104 ****
  0f3c94e520870e194cf525de7ec404dc  libffi/testsuite/libffi.go/ffitest.h
  6cfb66c1c00023abb2c2276d85f16e77  libffi/testsuite/libffi.go/go.exp
  189dc193fd0e627a2d55b2e84871edc5  libffi/testsuite/libffi.go/static-chain.h
! d78b391a719ad3942c14278e87bbe148  libgcc/ChangeLog
  46871f7f435b4902cf5796badf55e199  libgcc/Makefile.in
  3909078d285165298c78eb97ea152e90  libgcc/config.host
  46412830a2ee8a02503ccc921912c3cf  libgcc/config.in
--- 128206,128212 ----
  0f3c94e520870e194cf525de7ec404dc  libffi/testsuite/libffi.go/ffitest.h
  6cfb66c1c00023abb2c2276d85f16e77  libffi/testsuite/libffi.go/go.exp
  189dc193fd0e627a2d55b2e84871edc5  libffi/testsuite/libffi.go/static-chain.h
! a04e6fa7595053a1bd0b1298e3f38dd5  libgcc/ChangeLog
  46871f7f435b4902cf5796badf55e199  libgcc/Makefile.in
  3909078d285165298c78eb97ea152e90  libgcc/config.host
  46412830a2ee8a02503ccc921912c3cf  libgcc/config.in
*************** a41ab3bf7ba8f6d047bf8369340f29e4  libgcc
*** 128725,128737 ****
  331dd855f33aa7a09d25fc757cedf2cf  libgcc/config/lm32/t-elf
  d6d4b530a7539331e6e553f26928de4e  libgcc/config/lm32/t-lm32
  df59d7c87fc0d2f761461ac4ba7ec440  libgcc/config/lm32/t-uclinux
  d119a58a81bebc60db32e4162e42d0fd  libgcc/config/loongarch/crtfastmath.c
  d57d21934ea496642e8c8c9f62db9488  libgcc/config/loongarch/libgcc-loongarch.ver
  524d3cd99dfcdda6c1a4895305cd4aa4  libgcc/config/loongarch/linux-unwind.h
  a3f0e7fc76c68352401e4963c88f85e9  libgcc/config/loongarch/sfp-machine.h
  39d859f2463613a8181ae213154247d3  libgcc/config/loongarch/t-crtstuff
  6883bbf1b6255e7d7d374cf325381ce1  libgcc/config/loongarch/t-loongarch
! 5e2260f13769a960c8e1f24b0c9847e4  libgcc/config/loongarch/t-loongarch64
  5eefb8d5a64eeaa8e6b4d8618a2c8219  libgcc/config/loongarch/t-softfp-tf
  31e6754c91ae8e2dd14b16d80959efa6  libgcc/config/m32c/lib1funcs.S
  3204f14b3308625883db825df75f4d45  libgcc/config/m32c/lib2funcs.c
--- 128833,128846 ----
  331dd855f33aa7a09d25fc757cedf2cf  libgcc/config/lm32/t-elf
  d6d4b530a7539331e6e553f26928de4e  libgcc/config/lm32/t-lm32
  df59d7c87fc0d2f761461ac4ba7ec440  libgcc/config/lm32/t-uclinux
+ d084343fcd709930e9700981023d9037  libgcc/config/loongarch/cpuinfo.c
  d119a58a81bebc60db32e4162e42d0fd  libgcc/config/loongarch/crtfastmath.c
  d57d21934ea496642e8c8c9f62db9488  libgcc/config/loongarch/libgcc-loongarch.ver
  524d3cd99dfcdda6c1a4895305cd4aa4  libgcc/config/loongarch/linux-unwind.h
  a3f0e7fc76c68352401e4963c88f85e9  libgcc/config/loongarch/sfp-machine.h
  39d859f2463613a8181ae213154247d3  libgcc/config/loongarch/t-crtstuff
  6883bbf1b6255e7d7d374cf325381ce1  libgcc/config/loongarch/t-loongarch
! 30a759945cf2224eb5cd5985df99af5f  libgcc/config/loongarch/t-loongarch64
  5eefb8d5a64eeaa8e6b4d8618a2c8219  libgcc/config/loongarch/t-softfp-tf
  31e6754c91ae8e2dd14b16d80959efa6  libgcc/config/m32c/lib1funcs.S
  3204f14b3308625883db825df75f4d45  libgcc/config/m32c/lib2funcs.c
*************** f017ba40c4699f1549cd341ad688007f  libgcc
*** 129667,129685 ****
  804399bda5c6c23cd3e0cd78c21bc2fd  libgcc/vtv_end_preinit.c
  407de23229097d9b9a4d00e2e9c60c70  libgcc/vtv_start.c
  ba13e8c1385837f9a736ead153be6251  libgcc/vtv_start_preinit.c
! 2040abd342556422a38f125ad308b534  libgcobol/ChangeLog
  b227feb8ac8df349788743a8ade3e840  libgcobol/LICENSE
! f9f96109d649d17aa66f416364289e35  libgcobol/Makefile.am
! ce6793d8276df5edf60e0c25b277c4b4  libgcobol/Makefile.in
  ff016a65ce3c24bdd22207044f2a126e  libgcobol/README
  8c9140838556aedbca129aeaedf0855b  libgcobol/acinclude.m4
  edff1d46cc8f5e3fa2007d8fede32717  libgcobol/aclocal.m4
! 2ecc4068f74a5c331f6db3b4e1012c71  libgcobol/charmaps.cc
! e051b65251df8ebb1686dfa60f0d5829  libgcobol/charmaps.h
  e44c6fe97350bdd7eff39bd00d594918  libgcobol/common-defs.h
! 6a3b66323eab3b40a9c109aafd9f27c6  libgcobol/config.h.in
! da26989ef874f72f47df8a41896430c1  libgcobol/configure
! faf06b9fb823d12e0ec967db524ba97e  libgcobol/configure.ac
  5aec96a7dfdb0d6e7b10cc13d65c53a3  libgcobol/configure.tgt
  b7eded6395ef32819ecac70ac1aac697  libgcobol/constants.cc
  641fcbe1c4aa0a6cde86f5b185638e11  libgcobol/ec.h
--- 129776,129802 ----
  804399bda5c6c23cd3e0cd78c21bc2fd  libgcc/vtv_end_preinit.c
  407de23229097d9b9a4d00e2e9c60c70  libgcc/vtv_start.c
  ba13e8c1385837f9a736ead153be6251  libgcc/vtv_start_preinit.c
! e50c29294062dfe571c9c053a8ec217b  libgcobol/.gitignore
! 7ded21f11418514ffab9ff903f285a04  libgcobol/ChangeLog
  b227feb8ac8df349788743a8ade3e840  libgcobol/LICENSE
! 4a6ff5666424f9394e752e8a1dcf914a  libgcobol/Makefile.am
! 5752e5399a34a0a7d80ad4eb8018cbfd  libgcobol/Makefile.in
  ff016a65ce3c24bdd22207044f2a126e  libgcobol/README
  8c9140838556aedbca129aeaedf0855b  libgcobol/acinclude.m4
  edff1d46cc8f5e3fa2007d8fede32717  libgcobol/aclocal.m4
! ea69c0048b747c5afbcca0e5cb85a756  libgcobol/charmaps.cc
! 9c61b752c257ce87adcf298dcfc73435  libgcobol/charmaps.h
  e44c6fe97350bdd7eff39bd00d594918  libgcobol/common-defs.h
! e456eb3bc5606b398e310200d6e7a1a7  libgcobol/compat/README.md
! 9724ffdf971bebe59c8b2e8708a371b3  libgcobol/compat/lib/gnu/CBL_ALLOC_MEM.cbl
! 848d2a16eb4e04f66947f0a4f3388039  libgcobol/compat/lib/gnu/CBL_CHECK_FILE_EXIST.cbl
! 99d695f529024b68583602d0dd126e38  libgcobol/compat/lib/gnu/CBL_DELETE_FILE.cbl
! 6c02bd6dd638631136b344cff89cefb8  libgcobol/compat/lib/gnu/CBL_FREE_MEM.cbl
! 79fab4a17bf7e71b69ea829387984111  libgcobol/compat/t/Makefile
! b293e5545f3c614e2e8d23f125a576b6  libgcobol/compat/t/smoke.cbl
! a405f0e858ec34d69f097e6a2986e188  libgcobol/config.h.in
! d3935e9879300f8191e7294343520119  libgcobol/configure
! 84677ba8685c7c64d66ea19b7e0d83c2  libgcobol/configure.ac
  5aec96a7dfdb0d6e7b10cc13d65c53a3  libgcobol/configure.tgt
  b7eded6395ef32819ecac70ac1aac697  libgcobol/constants.cc
  641fcbe1c4aa0a6cde86f5b185638e11  libgcobol/ec.h
*************** e48958dd84f9ab9611279e150e9957cf  libgco
*** 129690,129713 ****
  4c5dc966be490381f53924b2441c9300  libgcobol/gfileio.h
  42a0be811da2d9bccec1fc42d43424cb  libgcobol/gmath.cc
  9b52995346d1f02cab9c3e2b816722d6  libgcobol/gmath.h
! e5db3014f748c76205edeb2bdbbe6469  libgcobol/intrinsic.cc
  0cf9ce2863c11a8fd875185c371fe6e6  libgcobol/io.cc
  b054056cc4fe4de7a78d34e43f2f3bab  libgcobol/io.h
  6fa2e26d11c71898dae520939b992484  libgcobol/libgcobol-fp.h
! a90e4daed9b9162052c266ba762d3e32  libgcobol/libgcobol.cc
! dea38a785d1e8a09b58ae36a103c5ac2  libgcobol/libgcobol.h
  469e0f6e21e357ff8b53b9d17373a6c8  libgcobol/libgcobol.spec.in
! c057a9c0bf247b066e7de6f079edb2f6  libgcobol/posix/errno.cc
! a7b68930ae7325253870cb373c7849f6  libgcobol/posix/localtime.cc
! 003f5498172a1df4ca6ac91fc5958ba5  libgcobol/posix/stat.cc
! 61022abbb1cd6771520af70d813f0b02  libgcobol/posix/stat.h
! feda976b2ecc3ba909f736aeb43feb48  libgcobol/posix/tm.h
  569f88db0d90fcf77b2a1a314beb8bcb  libgcobol/stringbin.cc
  179156ad95afd403a9316969a95142f7  libgcobol/stringbin.h
! 22c49caac6a8d133de67b63e2cd769d4  libgcobol/valconv.cc
  bf52fdaed06effba57a10e8157bc6930  libgcobol/valconv.h
! 81cbe5405589f90f7e3ee3cc3404117b  libgcobol/xmlparse.cc
! d06f7bc13007289c78987e55ff4dc445  libgfortran/ChangeLog
  d99469a76bfe825683f8d94fe07b508c  libgfortran/ChangeLog-2002
  522fdb2df6cefe6bcaed3c7c7311eae1  libgfortran/ChangeLog-2003
  5a3a93e76d878d063aba66079340cfe0  libgfortran/ChangeLog-2004
--- 129807,129849 ----
  4c5dc966be490381f53924b2441c9300  libgcobol/gfileio.h
  42a0be811da2d9bccec1fc42d43424cb  libgcobol/gmath.cc
  9b52995346d1f02cab9c3e2b816722d6  libgcobol/gmath.h
! 5146ab85cb2a80f156a1e9f152b0d173  libgcobol/intrinsic.cc
  0cf9ce2863c11a8fd875185c371fe6e6  libgcobol/io.cc
  b054056cc4fe4de7a78d34e43f2f3bab  libgcobol/io.h
  6fa2e26d11c71898dae520939b992484  libgcobol/libgcobol-fp.h
! 96078ffaa1ee8a031e846c430c98c072  libgcobol/libgcobol.cc
! 78c88c93e6cd7caad5e1f94a728d4097  libgcobol/libgcobol.h
  469e0f6e21e357ff8b53b9d17373a6c8  libgcobol/libgcobol.spec.in
! 96b721e88c5f79776cedad463373ad78  libgcobol/posix/README.md
! 964317051f2410eac09f25ae28d205a1  libgcobol/posix/bin/Makefile
! de91f2c442f5429dd57a380d4e77abd4  libgcobol/posix/bin/headers
! 8c07631eb91478eb62d8197115e63536  libgcobol/posix/bin/scrape.awk
! 807e38148d3d302d10877fa78d259600  libgcobol/posix/bin/sizeofs.c
! 5731ef322f2cc56fd96cd89d0e5ecc9c  libgcobol/posix/bin/udf-gen
! d33a3081c7c2f2ff39cf646a35ec62a8  libgcobol/posix/cpy/posix-errno.cbl
! 89c4c2d899376a5caefdc9ee44531f91  libgcobol/posix/cpy/statbuf.cpy
! 3d39925c2d07caf265c66370d2845166  libgcobol/posix/cpy/tm.cpy
! c057a9c0bf247b066e7de6f079edb2f6  libgcobol/posix/shim/errno.cc
! a7b68930ae7325253870cb373c7849f6  libgcobol/posix/shim/localtime.cc
! 308a02a974673252b622e5bbca74784d  libgcobol/posix/shim/stat.cc
! 9cc60958c07c7e1f8e9bad4b841941ca  libgcobol/posix/shim/stat.h
! feda976b2ecc3ba909f736aeb43feb48  libgcobol/posix/shim/tm.h
! db2b66c495eb88a1d722067a5aa3c98b  libgcobol/posix/t/Makefile
! 7462812a55d7c4eeb70bf0b480bcf193  libgcobol/posix/t/errno.cbl
! 2e0537c5b8b0cf68972040d3829a3cbb  libgcobol/posix/t/exit.cbl
! c185f49b81cdf8493183fa80bac2a3a7  libgcobol/posix/t/localtime.cbl
! 30c9799508c129fb6190e083a7a7837a  libgcobol/posix/t/stat.cbl
! 7eb31de3bb34e7725a6cc8285ec9c00e  libgcobol/posix/udf/posix-exit.cbl
! 63471924bc915602fcc79a08d2844cd0  libgcobol/posix/udf/posix-localtime.cbl
! 9905637f1731df63655b7c69bee2138d  libgcobol/posix/udf/posix-mkdir.cbl
! b596ffc38045755f7ef0c54f1d5555a1  libgcobol/posix/udf/posix-stat.cbl
! 3df03151f09cf8f654bae1aa69897f61  libgcobol/posix/udf/posix-unlink.cbl
  569f88db0d90fcf77b2a1a314beb8bcb  libgcobol/stringbin.cc
  179156ad95afd403a9316969a95142f7  libgcobol/stringbin.h
! 2b31946dfaa7df328dd0749c37f1ae36  libgcobol/valconv.cc
  bf52fdaed06effba57a10e8157bc6930  libgcobol/valconv.h
! 5c37094c19a68dece6b4163fdc0f9bc5  libgcobol/xmlparse.cc
! 2104c8a11398902021f9bd89abce66de  libgfortran/ChangeLog
  d99469a76bfe825683f8d94fe07b508c  libgfortran/ChangeLog-2002
  522fdb2df6cefe6bcaed3c7c7311eae1  libgfortran/ChangeLog-2003
  5a3a93e76d878d063aba66079340cfe0  libgfortran/ChangeLog-2004
*************** a255d898311e104699cc608214c2f4d4  libgfo
*** 130620,130626 ****
  c7169b01bb969daf7e30948005f39988  libgfortran/io/fbuf.c
  914bd3e77f8227a3400ba2868e316308  libgfortran/io/fbuf.h
  9df5d9e5f674030f9bd193d261f25d47  libgfortran/io/file_pos.c
! 3ed8323377b84c77d37045619b804ce1  libgfortran/io/format.c
  95ba22ac86e130ffe2d943ec142f4427  libgfortran/io/format.h
  2c879686a9c5431b13c4d3a9323e5fed  libgfortran/io/inquire.c
  9a1581b774b6fa5ddc5861750824984f  libgfortran/io/intrinsics.c
--- 130756,130762 ----
  c7169b01bb969daf7e30948005f39988  libgfortran/io/fbuf.c
  914bd3e77f8227a3400ba2868e316308  libgfortran/io/fbuf.h
  9df5d9e5f674030f9bd193d261f25d47  libgfortran/io/file_pos.c
! aa985952e87571b015b2b85e508c6a0b  libgfortran/io/format.c
  95ba22ac86e130ffe2d943ec142f4427  libgfortran/io/format.h
  2c879686a9c5431b13c4d3a9323e5fed  libgfortran/io/inquire.c
  9a1581b774b6fa5ddc5861750824984f  libgfortran/io/intrinsics.c
*************** a3a7e9ca6057da9ca42e03e41e1c73f7  libgo/
*** 136271,136277 ****
  dcdf1b680b15b372bdb64cc5107d51b6  libgo/testsuite/libgo-test-support.exp.in
  bf162aa572f7b96b25dbd2b027845d32  libgo/testsuite/libgo.testmain/testmain.exp
  cc9d2a0e34e31ba866a8caf9f46f48f3  libgomp/.gitattributes
! 9de5bb98cdca6e36d24533a1f827741b  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
  714e3b9c0810a61df01246c2a97e825a  libgomp/Makefile.am
  3c91d539fc9934b5095923265d09ec8f  libgomp/Makefile.in
--- 136407,136413 ----
  dcdf1b680b15b372bdb64cc5107d51b6  libgo/testsuite/libgo-test-support.exp.in
  bf162aa572f7b96b25dbd2b027845d32  libgo/testsuite/libgo.testmain/testmain.exp
  cc9d2a0e34e31ba866a8caf9f46f48f3  libgomp/.gitattributes
! a4a8b99a1954ad8dc708cf7e59279f8a  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
  714e3b9c0810a61df01246c2a97e825a  libgomp/Makefile.am
  3c91d539fc9934b5095923265d09ec8f  libgomp/Makefile.in
*************** d45f3b20f1be5d95a6c06fb81bedafe9  libgom
*** 136281,136287 ****
  d8aa8371c40b734ac5451e05f1ec3ffd  libgomp/affinity-fmt.c
  01378bd902513e181046d9e2c91aaaf0  libgomp/affinity.c
  8fe4775ad9d79a2f006b290db4abdfa5  libgomp/alloc.c
! 94bb34cb9fc447759270a29394905c04  libgomp/allocator.c
  4ade656c74aa8fd959caf250378befab  libgomp/atomic.c
  5948a82c8edeab7b492b99495b93c1c4  libgomp/barrier.c
  0713423029d36c11e39a37bd70ec2121  libgomp/basic-allocator.c
--- 136417,136423 ----
  d8aa8371c40b734ac5451e05f1ec3ffd  libgomp/affinity-fmt.c
  01378bd902513e181046d9e2c91aaaf0  libgomp/affinity.c
  8fe4775ad9d79a2f006b290db4abdfa5  libgomp/alloc.c
! e071acaf2b2aa585bcd231b92d58456e  libgomp/allocator.c
  4ade656c74aa8fd959caf250378befab  libgomp/atomic.c
  5948a82c8edeab7b492b99495b93c1c4  libgomp/barrier.c
  0713423029d36c11e39a37bd70ec2121  libgomp/basic-allocator.c
*************** e4e15589f222c2aec21754e3e5a46b08  libgom
*** 136311,136317 ****
  e71034ea32200ef9be7aef2679314d11  libgomp/config/darwin/plugin-suffix.h
  eef2d6ff66275df9ac2cdc6e1e4c623f  libgomp/config/darwin/thread-stacksize.h
  7a7abbda7636b73d904438ed30f0dfc3  libgomp/config/gcn/affinity-fmt.c
! a6baab45f7291be4829b3eed2a856ed3  libgomp/config/gcn/allocator.c
  e3cae35294a9ef1f03cb729108686087  libgomp/config/gcn/bar.c
  981fa55ee1e8b5189ea72a980f7d1472  libgomp/config/gcn/bar.h
  e778c0c26ce27386bdd21021765caf9d  libgomp/config/gcn/doacross.h
--- 136447,136453 ----
  e71034ea32200ef9be7aef2679314d11  libgomp/config/darwin/plugin-suffix.h
  eef2d6ff66275df9ac2cdc6e1e4c623f  libgomp/config/darwin/thread-stacksize.h
  7a7abbda7636b73d904438ed30f0dfc3  libgomp/config/gcn/affinity-fmt.c
! 5c963d2f9f53971e5e563ddd1126cc98  libgomp/config/gcn/allocator.c
  e3cae35294a9ef1f03cb729108686087  libgomp/config/gcn/bar.c
  981fa55ee1e8b5189ea72a980f7d1472  libgomp/config/gcn/bar.h
  e778c0c26ce27386bdd21021765caf9d  libgomp/config/gcn/doacross.h
*************** c3776c498c46e83053f937447aeb6007  libgom
*** 136326,136332 ****
  08f45643e2ed98e1720544184d88dd55  libgomp/config/gcn/time.c
  ce0a50bc726967d0319a49c79324bfb7  libgomp/config/hpux/plugin-suffix.h
  2feb00269ee4729b72057dd715498c70  libgomp/config/linux/affinity.c
! b6b0e9d510693876f779d4c29c3f4ad2  libgomp/config/linux/allocator.c
  92db90a3fbac3defcfefb84928fb1c70  libgomp/config/linux/alpha/futex.h
  1c2049dcd1f949262571445fd76ca9e4  libgomp/config/linux/bar.c
  0f9a450d13be243bdc3d9c724a7f84a5  libgomp/config/linux/bar.h
--- 136462,136468 ----
  08f45643e2ed98e1720544184d88dd55  libgomp/config/gcn/time.c
  ce0a50bc726967d0319a49c79324bfb7  libgomp/config/hpux/plugin-suffix.h
  2feb00269ee4729b72057dd715498c70  libgomp/config/linux/affinity.c
! a855fd8b2a4ec93169dfd4632633dc54  libgomp/config/linux/allocator.c
  92db90a3fbac3defcfefb84928fb1c70  libgomp/config/linux/alpha/futex.h
  1c2049dcd1f949262571445fd76ca9e4  libgomp/config/linux/bar.c
  0f9a450d13be243bdc3d9c724a7f84a5  libgomp/config/linux/bar.h
*************** d1076e470bd5b228315a3a681b24de5a  libgom
*** 136355,136361 ****
  357ab6475373413869b36f616da1c10c  libgomp/config/mingw32/proc.c
  85be35a45ed5128be82baa1fe38ddd31  libgomp/config/mingw32/time.c
  93b63ccb3756bf579cc914e73375e4b2  libgomp/config/nvptx/affinity-fmt.c
! fc73d12190b3c0fa2f979d4a02cc874e  libgomp/config/nvptx/allocator.c
  6bb7711f9ae2bc93662a9c5ece06f7ee  libgomp/config/nvptx/atomic.c
  958f9e6b79e432a275a82d93fdfa4777  libgomp/config/nvptx/bar.c
  473ee9cbd42d59eb389992bf102ee80e  libgomp/config/nvptx/bar.h
--- 136491,136497 ----
  357ab6475373413869b36f616da1c10c  libgomp/config/mingw32/proc.c
  85be35a45ed5128be82baa1fe38ddd31  libgomp/config/mingw32/time.c
  93b63ccb3756bf579cc914e73375e4b2  libgomp/config/nvptx/affinity-fmt.c
! 339b09936078d59a8b5e393431bdd3df  libgomp/config/nvptx/allocator.c
  6bb7711f9ae2bc93662a9c5ece06f7ee  libgomp/config/nvptx/atomic.c
  958f9e6b79e432a275a82d93fdfa4777  libgomp/config/nvptx/bar.c
  473ee9cbd42d59eb389992bf102ee80e  libgomp/config/nvptx/bar.h
*************** af41d1d04a4112345554ca8b8a072ed9  libgom
*** 136401,136407 ****
  250e49a5865485507899765bf69913a0  libgomp/configure.ac
  0eb9aa41c92e30c6fb1494575b1c8daa  libgomp/configure.tgt
  bdbd19a4ded46698d600a262cfc20343  libgomp/critical.c
! 4dc278a7fdb55d723893cf791ea57169  libgomp/env.c
  de6d218010cbf7859c6b94615b21f35a  libgomp/error.c
  d98fb492b4e4c1c04a41a6bc6433de2b  libgomp/fortran.c
  7f54b43cb86dd02741d33a360f1dbbe2  libgomp/hashtab.h
--- 136537,136543 ----
  250e49a5865485507899765bf69913a0  libgomp/configure.ac
  0eb9aa41c92e30c6fb1494575b1c8daa  libgomp/configure.tgt
  bdbd19a4ded46698d600a262cfc20343  libgomp/critical.c
! 9633e52067a12f11a2929330afe8b6b4  libgomp/env.c
  de6d218010cbf7859c6b94615b21f35a  libgomp/error.c
  d98fb492b4e4c1c04a41a6bc6433de2b  libgomp/fortran.c
  7f54b43cb86dd02741d33a360f1dbbe2  libgomp/hashtab.h
*************** f4c32f19e8df86d2ac9c3d4cc4e788f1  libgom
*** 136410,136420 ****
  c798aea0a594e97c71edb3bd8cb93579  libgomp/iter.c
  c3d837ee5481f078c8b7875c1c8306be  libgomp/iter_ull.c
  0214d07a09a5c6e422ca9541c3f6cba4  libgomp/libgomp-plugin.c
! e1c93fe55a6502d58b8db2e5556de8e9  libgomp/libgomp-plugin.h
! d5080c9b24fc2086ff1cdc09d1f6f0b0  libgomp/libgomp.h
  cd6a22eaa3c99a58084ad32602f087b4  libgomp/libgomp.map
  8b2aa50aecad82171348a6918309afd6  libgomp/libgomp.spec.in
! dfe58129aeb2299e168ba696c92644ff  libgomp/libgomp.texi
  519d28879206bae759d85cd3bb7b493b  libgomp/libgomp_f.h.in
  fdadcc861565b686070908326f5e5914  libgomp/libgomp_g.h
  a5060d745455b036a62cc46de1fe0576  libgomp/lock.c
--- 136546,136556 ----
  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
! 4194dc4e213a6c70d612e1f6457adddb  libgomp/libgomp.texi
  519d28879206bae759d85cd3bb7b493b  libgomp/libgomp_f.h.in
  fdadcc861565b686070908326f5e5914  libgomp/libgomp_g.h
  a5060d745455b036a62cc46de1fe0576  libgomp/lock.c
*************** b6edffd0cc3b521c5885b285ddc3deaf  libgom
*** 136431,136439 ****
  cabec5d2660028884f23c85bd403f01e  libgomp/oacc-plugin.h
  a6450e2f5f7558ce92992048a3735241  libgomp/oacc-profiling.c
  6a2627e5d8a4e542cab7eddc96b53f37  libgomp/oacc-target.c
! f4080aa598473de8d849993fbfcfc325  libgomp/omp.h.in
! e41ce4d9881cd8bf0280948cc5c90ae9  libgomp/omp_lib.f90.in
! b64dca060dc3e768889b5d0f6086e4d0  libgomp/omp_lib.h.in
  f24734d0f876e60f6edf6283233372be  libgomp/openacc.f90
  0380c0cfc562bb08603d6ff4bb9c8311  libgomp/openacc.h
  61774236eebfdd613ffcc94220388876  libgomp/openacc_lib.h
--- 136567,136575 ----
  cabec5d2660028884f23c85bd403f01e  libgomp/oacc-plugin.h
  a6450e2f5f7558ce92992048a3735241  libgomp/oacc-profiling.c
  6a2627e5d8a4e542cab7eddc96b53f37  libgomp/oacc-target.c
! a31ab494b630dbdd28ee7ecf6e4a6e1f  libgomp/omp.h.in
! 8ae9c2214048c161d6f1a1d1bd129c7c  libgomp/omp_lib.f90.in
! 345a46549869336f44b8e6661388a7f9  libgomp/omp_lib.h.in
  f24734d0f876e60f6edf6283233372be  libgomp/openacc.f90
  0380c0cfc562bb08603d6ff4bb9c8311  libgomp/openacc.h
  61774236eebfdd613ffcc94220388876  libgomp/openacc_lib.h
*************** f24734d0f876e60f6edf6283233372be  libgom
*** 136442,136450 ****
  b62a5d146dc237f28322cddf18c8a8bc  libgomp/plugin/Makefrag.am
  00915d9ce3e412613822d106e8c71deb  libgomp/plugin/build-target-indirect-htab.h
  5a5c5a37c066333fa237c308a243cda1  libgomp/plugin/configfrag.ac
! b8346079425832c85a1dfc7ac3ab0286  libgomp/plugin/cuda-lib.def
  fafa9c3e545d79d7206b51c518169ab7  libgomp/plugin/plugin-gcn.c
! a42509a73ff4df4d971f1962ecadf50f  libgomp/plugin/plugin-nvptx.c
  0f2fc4f7d0850afd090ba2bb43681c8a  libgomp/priority_queue.c
  5c28f5f7bbc16dada259efc296bbe9f3  libgomp/priority_queue.h
  f1eee47026bb1c516cd1b3a9b9c1c5fa  libgomp/scope.c
--- 136578,136586 ----
  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
*************** f1eee47026bb1c516cd1b3a9b9c1c5fa  libgom
*** 136456,136462 ****
  6562eda8ef1a1fd0a2a0a9e5621f684b  libgomp/splay-tree.h
  1775f6ebbed5a9aef1882e66136d9e2b  libgomp/target-cxa-dso-dtor.c
  a8a23ca7c25ca51062b636b0c099096a  libgomp/target-indirect.c
! 908aab038f46f547ea8ec03282a3ccda  libgomp/target.c
  8f03749b5187ce4fb4dce3f7d5b2d9f7  libgomp/task.c
  865cdfdff84a15247efff279e8aca77f  libgomp/taskloop.c
  f540431686cf02c11ae33b1cd66e01ca  libgomp/team.c
--- 136592,136598 ----
  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
*************** ae0dcb4c08025996b4bf4550cf72832e  libgom
*** 136466,136475 ****
  83cc7a56dc29f0c258b4b9e13798b8ec  libgomp/testsuite/config/default.exp
  989674e1cf3f6739f5d9519d904650c7  libgomp/testsuite/flock
  6c859d1c520b245e51a29693632545d6  libgomp/testsuite/lib/libgomp-dg.exp
! 06f9ccc43e7dfb9ea326ea15f452a1ec  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
  196ffcd43fb2edf60795e6aabf50d259  libgomp/testsuite/libgomp.c++/allocate-1.C
  621f4af33dbb0ad8d27a2993a83c9953  libgomp/testsuite/libgomp.c++/allocator-1.C
  3f8b62419c2c8e4b2039644a97c006e3  libgomp/testsuite/libgomp.c++/allocator-2.C
--- 136602,136612 ----
  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
  196ffcd43fb2edf60795e6aabf50d259  libgomp/testsuite/libgomp.c++/allocate-1.C
  621f4af33dbb0ad8d27a2993a83c9953  libgomp/testsuite/libgomp.c++/allocator-1.C
  3f8b62419c2c8e4b2039644a97c006e3  libgomp/testsuite/libgomp.c++/allocator-2.C
*************** cc6abf61b301e17286872d6d76d483c0  libgom
*** 137051,137056 ****
--- 137188,137194 ----
  d9c974865c1c03b48fac0231e028a7be  libgomp/testsuite/libgomp.c-c++-common/nonmonotonic-1.c
  214e7bba3d270a6822e2e6161f05981b  libgomp/testsuite/libgomp.c-c++-common/nonmonotonic-2.c
  857b86f8109e8843b901fc93bce4c8a8  libgomp/testsuite/libgomp.c-c++-common/nothing-1.c
+ 57e89804109a50bfcedf48ad5d907aec  libgomp/testsuite/libgomp.c-c++-common/omp-default-device.c
  7b82eb3ecdfe1a29b71573e9670b905e  libgomp/testsuite/libgomp.c-c++-common/omp-display-env-1.c
  b44227078d5fcd5acfde164f5bf5bcbe  libgomp/testsuite/libgomp.c-c++-common/omp-display-env-2.c
  f8a93d0f03afa6b6ecf0173347e50345  libgomp/testsuite/libgomp.c-c++-common/omp_target_memset-2.c
*************** be9edae79e36592176a6ef4d75308c5f  libgom
*** 137158,137164 ****
  7a5ccad9c039ea2c070efc3da16249d1  libgomp/testsuite/libgomp.c-c++-common/target-implicit-map-5.c
  c59c2b50b25e1cc94ef1440dd9e22f71  libgomp/testsuite/libgomp.c-c++-common/target-in-reduction-1.c
  e4ae276ba05cf2521872c73349458117  libgomp/testsuite/libgomp.c-c++-common/target-in-reduction-2.c
! 462413b33154db71951671a657737912  libgomp/testsuite/libgomp.c-c++-common/target-is-accessible-1.c
  69dd12ce5d2a48b7f97153765a590284  libgomp/testsuite/libgomp.c-c++-common/target-is-initial-host-2.c
  9e8fb2b92bd09fc8b76faad9bb3ef464  libgomp/testsuite/libgomp.c-c++-common/target-is-initial-host.c
  d04c3cda0f5d9481f26ad3a000f4b3d3  libgomp/testsuite/libgomp.c-c++-common/target-link-2.c
--- 137296,137302 ----
  7a5ccad9c039ea2c070efc3da16249d1  libgomp/testsuite/libgomp.c-c++-common/target-implicit-map-5.c
  c59c2b50b25e1cc94ef1440dd9e22f71  libgomp/testsuite/libgomp.c-c++-common/target-in-reduction-1.c
  e4ae276ba05cf2521872c73349458117  libgomp/testsuite/libgomp.c-c++-common/target-in-reduction-2.c
! d2f77283bea52f0c0d6a1356e85496d0  libgomp/testsuite/libgomp.c-c++-common/target-is-accessible-1.c
  69dd12ce5d2a48b7f97153765a590284  libgomp/testsuite/libgomp.c-c++-common/target-is-initial-host-2.c
  9e8fb2b92bd09fc8b76faad9bb3ef464  libgomp/testsuite/libgomp.c-c++-common/target-is-initial-host.c
  d04c3cda0f5d9481f26ad3a000f4b3d3  libgomp/testsuite/libgomp.c-c++-common/target-link-2.c
*************** caca1aa745e9df985dc965e87fc08c02  libgom
*** 137252,137257 ****
--- 137390,137399 ----
  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
*************** ca47d9e0cacee8e7c1316c14a513cda4  libgom
*** 137381,137387 ****
  76154443f28fedf1bb0797e99da9263c  libgomp/testsuite/libgomp.c/depend-7.c
  ec897cbb2003f55279c80e8a2f700f48  libgomp/testsuite/libgomp.c/depend-8.c
  2b66f56c0267e26a89308845398264b1  libgomp/testsuite/libgomp.c/depend-9.c
! b4ce4bef3ce3441508c44b70ff84cd82  libgomp/testsuite/libgomp.c/device_uid.c
  e5b7c99f7690e7d5a01b632a8bbf6c3a  libgomp/testsuite/libgomp.c/doacross-1.c
  3664b043d881889fef3f1a55197c60ab  libgomp/testsuite/libgomp.c/doacross-2.c
  60e6c95d8f6e038252d5ffaead6d3549  libgomp/testsuite/libgomp.c/doacross-3.c
--- 137523,137529 ----
  76154443f28fedf1bb0797e99da9263c  libgomp/testsuite/libgomp.c/depend-7.c
  ec897cbb2003f55279c80e8a2f700f48  libgomp/testsuite/libgomp.c/depend-8.c
  2b66f56c0267e26a89308845398264b1  libgomp/testsuite/libgomp.c/depend-9.c
! 511f904a0e4d34bd22f7f7883fc5e945  libgomp/testsuite/libgomp.c/device_uid.c
  e5b7c99f7690e7d5a01b632a8bbf6c3a  libgomp/testsuite/libgomp.c/doacross-1.c
  3664b043d881889fef3f1a55197c60ab  libgomp/testsuite/libgomp.c/doacross-2.c
  60e6c95d8f6e038252d5ffaead6d3549  libgomp/testsuite/libgomp.c/doacross-3.c
*************** cbc8d1928586e24499210f2cd9438551  libgom
*** 137799,137804 ****
--- 137941,137947 ----
  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
*************** dbefb5b9dae6eea372fe12a983f2bbd5  libgom
*** 137923,137929 ****
  0cfa1d2bc7945a8885b5261d221ac3fd  libgomp/testsuite/libgomp.fortran/depend-inoutset-1.f90
  555a9404bb8537a4e77d4f6182bc9e1a  libgomp/testsuite/libgomp.fortran/depend-iterator-2.f90
  31e5e093c62472c7dd338fd5cb6f0a15  libgomp/testsuite/libgomp.fortran/depobj-1.f90
! c0fbcca0efaaf61f3ecd6c1f034b3c9b  libgomp/testsuite/libgomp.fortran/device_uid.f90
  29fcf93d970981537fa57ab05447d96a  libgomp/testsuite/libgomp.fortran/dispatch-1.f90
  bfae3125cfb0609a9f16b296d3761d5b  libgomp/testsuite/libgomp.fortran/dispatch-2.f90
  d399d484908827be2ebc1cab5ad149fb  libgomp/testsuite/libgomp.fortran/dispatch-3.f90
--- 138066,138072 ----
  0cfa1d2bc7945a8885b5261d221ac3fd  libgomp/testsuite/libgomp.fortran/depend-inoutset-1.f90
  555a9404bb8537a4e77d4f6182bc9e1a  libgomp/testsuite/libgomp.fortran/depend-iterator-2.f90
  31e5e093c62472c7dd338fd5cb6f0a15  libgomp/testsuite/libgomp.fortran/depobj-1.f90
! 5ca0eeecec6ac795cb81c125cbf6011f  libgomp/testsuite/libgomp.fortran/device_uid.f90
  29fcf93d970981537fa57ab05447d96a  libgomp/testsuite/libgomp.fortran/dispatch-1.f90
  bfae3125cfb0609a9f16b296d3761d5b  libgomp/testsuite/libgomp.fortran/dispatch-2.f90
  d399d484908827be2ebc1cab5ad149fb  libgomp/testsuite/libgomp.fortran/dispatch-3.f90
*************** c04b9603dcb91e38586d7ece605fc03b  libgom
*** 138065,138070 ****
--- 138208,138214 ----
  bc67f38e5b5b1d2e0bceb6481561db59  libgomp/testsuite/libgomp.fortran/non-rectangular-loop-4.f90
  450d27c40e577d44326373374aa78fa8  libgomp/testsuite/libgomp.fortran/non-rectangular-loop-5.f90
  e55e4d88039e45885286f5121fff1fba  libgomp/testsuite/libgomp.fortran/non-rectangular-loop-6.f90
+ 308e04cf45923f0a4dc041fb8a3dd54c  libgomp/testsuite/libgomp.fortran/omp-default-device.f90
  642bd7c41f7948130aa5f8f42b8f21ac  libgomp/testsuite/libgomp.fortran/omp_atomic1.f90
  ac3048471613e2f1f1ee806355b65040  libgomp/testsuite/libgomp.fortran/omp_atomic2.f90
  edf8151c5b785d7f10272dd95dbad260  libgomp/testsuite/libgomp.fortran/omp_atomic3.f90
*************** c253434fe103910b87d86dea9746db67  libgom
*** 138218,138224 ****
  679a9ebb5fd93d2af75c7a80f49ca7d6  libgomp/testsuite/libgomp.fortran/target-imperfect4.f90
  49908b2e3663c182a2478e5f28929c6d  libgomp/testsuite/libgomp.fortran/target-in-reduction-1.f90
  c604509b615d707812822a4f9559faca  libgomp/testsuite/libgomp.fortran/target-in-reduction-2.f90
! dbe3bc360ddea6525088228f741db5dd  libgomp/testsuite/libgomp.fortran/target-is-accessible-1.f90
  0a168e5a38556e28478014f8c502669f  libgomp/testsuite/libgomp.fortran/target-is-initial-device-3.f90
  b205f9e12d1bd4e2fa5b8ecd4f50db58  libgomp/testsuite/libgomp.fortran/target-is-initial-host-2.f90
  6859dad56b2334740e8ca2b4290949fe  libgomp/testsuite/libgomp.fortran/target-is-initial-host.f
--- 138362,138368 ----
  679a9ebb5fd93d2af75c7a80f49ca7d6  libgomp/testsuite/libgomp.fortran/target-imperfect4.f90
  49908b2e3663c182a2478e5f28929c6d  libgomp/testsuite/libgomp.fortran/target-in-reduction-1.f90
  c604509b615d707812822a4f9559faca  libgomp/testsuite/libgomp.fortran/target-in-reduction-2.f90
! 30887b15bff2ce748c95e1172bc37e43  libgomp/testsuite/libgomp.fortran/target-is-accessible-1.f90
  0a168e5a38556e28478014f8c502669f  libgomp/testsuite/libgomp.fortran/target-is-initial-device-3.f90
  b205f9e12d1bd4e2fa5b8ecd4f50db58  libgomp/testsuite/libgomp.fortran/target-is-initial-host-2.f90
  6859dad56b2334740e8ca2b4290949fe  libgomp/testsuite/libgomp.fortran/target-is-initial-host.f
*************** d680e7307fb59fe24f8431e179191f16  libssp
*** 141805,141811 ****
  534c3fb4a88e5c1f70db35c12b7742c3  libssp/vsnprintf-chk.c
  34daeb04a522ee796098df4446d6ce61  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! c376a81fc382dd01548fc98c08d0a9cb  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
--- 141949,141955 ----
  534c3fb4a88e5c1f70db35c12b7742c3  libssp/vsnprintf-chk.c
  34daeb04a522ee796098df4446d6ce61  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! a71a7470c74406d26b689b6bd2b4def1  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** f3bc82135dfcb3341457a729d2972838  libstd
*** 142479,142485 ****
  c2f5862787920c2fc07b4f499e362a00  libstdc++-v3/include/bits/alloc_traits.h
  752923e212a8a01f4d659889177a76eb  libstdc++-v3/include/bits/allocated_ptr.h
  d18c16b3c9c3ab2e7d487de90ec27d17  libstdc++-v3/include/bits/allocator.h
! 8aba44f8f6fb965556ab0fb15543d89a  libstdc++-v3/include/bits/atomic_base.h
  7c88fbee1dffec663e740720882b5344  libstdc++-v3/include/bits/atomic_futex.h
  4cd9a8b6fc11b09815936aa0dc7bc6bc  libstdc++-v3/include/bits/atomic_timed_wait.h
  9e4d1e459fb0dee50ef813187de0118c  libstdc++-v3/include/bits/atomic_wait.h
--- 142623,142629 ----
  c2f5862787920c2fc07b4f499e362a00  libstdc++-v3/include/bits/alloc_traits.h
  752923e212a8a01f4d659889177a76eb  libstdc++-v3/include/bits/allocated_ptr.h
  d18c16b3c9c3ab2e7d487de90ec27d17  libstdc++-v3/include/bits/allocator.h
! 2b1a23c26b949972792d8aaa9bfecb81  libstdc++-v3/include/bits/atomic_base.h
  7c88fbee1dffec663e740720882b5344  libstdc++-v3/include/bits/atomic_futex.h
  4cd9a8b6fc11b09815936aa0dc7bc6bc  libstdc++-v3/include/bits/atomic_timed_wait.h
  9e4d1e459fb0dee50ef813187de0118c  libstdc++-v3/include/bits/atomic_wait.h
*************** be08582d1795753f6e8fb613a7ec9fe0  libstd
*** 142505,142511 ****
  397af990234a7f718cce0f629f7d8b13  libstdc++-v3/include/bits/enable_special_members.h
  b194eb42ed4e3bc3a3f65805561d45c8  libstdc++-v3/include/bits/erase_if.h
  ad6b1a9496bacef0b6f949164422ab8d  libstdc++-v3/include/bits/formatfwd.h
! 3c1cd1724fd697b7e7c6c0b2233c4c62  libstdc++-v3/include/bits/forward_list.h
  8123372b7074a636b749e1e60f9f2b81  libstdc++-v3/include/bits/forward_list.tcc
  547631f602a86bc167ed71b762904cd9  libstdc++-v3/include/bits/fs_dir.h
  6b7b8aca89690d8a4558046e54c35af9  libstdc++-v3/include/bits/fs_fwd.h
--- 142649,142655 ----
  397af990234a7f718cce0f629f7d8b13  libstdc++-v3/include/bits/enable_special_members.h
  b194eb42ed4e3bc3a3f65805561d45c8  libstdc++-v3/include/bits/erase_if.h
  ad6b1a9496bacef0b6f949164422ab8d  libstdc++-v3/include/bits/formatfwd.h
! 0b4a32caac3b12dee4bd64701e0ee0b5  libstdc++-v3/include/bits/forward_list.h
  8123372b7074a636b749e1e60f9f2b81  libstdc++-v3/include/bits/forward_list.tcc
  547631f602a86bc167ed71b762904cd9  libstdc++-v3/include/bits/fs_dir.h
  6b7b8aca89690d8a4558046e54c35af9  libstdc++-v3/include/bits/fs_fwd.h
*************** bde7ef0245c6a48f1e86c1154662b9b3  libstd
*** 142621,142627 ****
  2eaea6618dd32c781462a159568c3920  libstdc++-v3/include/bits/text_encoding-data.h
  c54dc01c04f2bec8fd040442e692de74  libstdc++-v3/include/bits/this_thread_sleep.h
  a315f61009849bba79498b388f94c177  libstdc++-v3/include/bits/unicode-data.h
! f5780be1a14417fc9cee089ef955bfed  libstdc++-v3/include/bits/unicode.h
  e10663748871662214948efa4440ceaa  libstdc++-v3/include/bits/uniform_int_dist.h
  0d7174a622374816c75ac03f78148fc9  libstdc++-v3/include/bits/unique_lock.h
  c5263518fe491607b28f907ed4390bf6  libstdc++-v3/include/bits/unique_ptr.h
--- 142765,142771 ----
  2eaea6618dd32c781462a159568c3920  libstdc++-v3/include/bits/text_encoding-data.h
  c54dc01c04f2bec8fd040442e692de74  libstdc++-v3/include/bits/this_thread_sleep.h
  a315f61009849bba79498b388f94c177  libstdc++-v3/include/bits/unicode-data.h
! 8d7b0008119045f5029e61c141c3c2ff  libstdc++-v3/include/bits/unicode.h
  e10663748871662214948efa4440ceaa  libstdc++-v3/include/bits/uniform_int_dist.h
  0d7174a622374816c75ac03f78148fc9  libstdc++-v3/include/bits/unique_lock.h
  c5263518fe491607b28f907ed4390bf6  libstdc++-v3/include/bits/unique_ptr.h
*************** cfa40ce7bf7ca94a28186ab967acdd6f  libstd
*** 143188,143194 ****
  ed7b697a4f9617810311e005acda34a8  libstdc++-v3/include/std/atomic
  d1730a41b18e21cbac0f5328aad2d223  libstdc++-v3/include/std/barrier
  66a9c513e3e5b0698ace3297c819bdcf  libstdc++-v3/include/std/bit
! 23fa0bcbc31cf3a11094188ad95f9953  libstdc++-v3/include/std/bitset
  285aa50d7e8cebdf5212f7f6e14a13fa  libstdc++-v3/include/std/charconv
  c961d014368e022c98c261e769fdc2aa  libstdc++-v3/include/std/chrono
  a90e2b9ed2c236c92f3f2387a39a0ac8  libstdc++-v3/include/std/codecvt
--- 143332,143338 ----
  ed7b697a4f9617810311e005acda34a8  libstdc++-v3/include/std/atomic
  d1730a41b18e21cbac0f5328aad2d223  libstdc++-v3/include/std/barrier
  66a9c513e3e5b0698ace3297c819bdcf  libstdc++-v3/include/std/bit
! 40092e929e71453f8b98c503bb70cf91  libstdc++-v3/include/std/bitset
  285aa50d7e8cebdf5212f7f6e14a13fa  libstdc++-v3/include/std/charconv
  c961d014368e022c98c261e769fdc2aa  libstdc++-v3/include/std/chrono
  a90e2b9ed2c236c92f3f2387a39a0ac8  libstdc++-v3/include/std/codecvt
*************** c7512fdd688111026ada39c2eff08f8e  libstd
*** 143203,143212 ****
  c2e511ae49957a9f02446e544d201582  libstdc++-v3/include/std/filesystem
  5aa136a1aaeb7658dee6ccdd5cb6e5c6  libstdc++-v3/include/std/flat_map
  8a5fa0a4bb554b2db8c2fed26a6993ca  libstdc++-v3/include/std/flat_set
! 344cb326ef175bcef751ab8a66184c26  libstdc++-v3/include/std/format
  fa4316749922813b44f2ee282452813b  libstdc++-v3/include/std/forward_list
  e790ae6877466aa86b47f36d201e8563  libstdc++-v3/include/std/fstream
! d967de4f74a729cb13cc8a72d4808846  libstdc++-v3/include/std/functional
  d472ad4b1b5c12e2f731980802d15b50  libstdc++-v3/include/std/future
  d91bc94f2a9c1ff7f642d23c27ec66ae  libstdc++-v3/include/std/generator
  5e8806ffa7fe2e4b79b8323d11609fda  libstdc++-v3/include/std/inplace_vector
--- 143347,143356 ----
  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
*************** f4af31191dea172207576960ad71d42d  libstd
*** 143227,143238 ****
  154adad15522042ed2886d969f645c0b  libstdc++-v3/include/std/mutex
  ef0d0725f5b70a4c1b5b62b84b2b63f7  libstdc++-v3/include/std/numbers
  b944796362aa39fc1cba3747d2247464  libstdc++-v3/include/std/numeric
! e36e42fb83bce12c59044770c8daa047  libstdc++-v3/include/std/optional
  050dc2c12dd36f95d5fbe750ff182a38  libstdc++-v3/include/std/ostream
  fd773662a4b346f11b66520f34a8898e  libstdc++-v3/include/std/print
  ba14be3c6ffe74b2ec997245d3a94e3d  libstdc++-v3/include/std/queue
  553e2f4fd74c3e0258a774ab683470fd  libstdc++-v3/include/std/random
! 83e2be1a27094f36ebe067f1b410258f  libstdc++-v3/include/std/ranges
  a28bf4bed6789b61535d4b05ff48ba76  libstdc++-v3/include/std/ratio
  7d864de507d428ace2b6886ab9bb2610  libstdc++-v3/include/std/regex
  1bad2aed72c4537e7f08d24c1bf7d375  libstdc++-v3/include/std/scoped_allocator
--- 143371,143382 ----
  154adad15522042ed2886d969f645c0b  libstdc++-v3/include/std/mutex
  ef0d0725f5b70a4c1b5b62b84b2b63f7  libstdc++-v3/include/std/numbers
  b944796362aa39fc1cba3747d2247464  libstdc++-v3/include/std/numeric
! 1aad6853f83e86015000ff9cf0fff085  libstdc++-v3/include/std/optional
  050dc2c12dd36f95d5fbe750ff182a38  libstdc++-v3/include/std/ostream
  fd773662a4b346f11b66520f34a8898e  libstdc++-v3/include/std/print
  ba14be3c6ffe74b2ec997245d3a94e3d  libstdc++-v3/include/std/queue
  553e2f4fd74c3e0258a774ab683470fd  libstdc++-v3/include/std/random
! 8c1b79c3e292cfe1d2b5ac221dd262ce  libstdc++-v3/include/std/ranges
  a28bf4bed6789b61535d4b05ff48ba76  libstdc++-v3/include/std/ratio
  7d864de507d428ace2b6886ab9bb2610  libstdc++-v3/include/std/regex
  1bad2aed72c4537e7f08d24c1bf7d375  libstdc++-v3/include/std/scoped_allocator
*************** b60f1331eaf500ccce917653c90c02d1  libstd
*** 143345,143351 ****
  2c05bcb0a318121f8deb29df215a1a76  libstdc++-v3/libsupc++/bad_cast.cc
  ed96195b097b5c5644e754342e3159bc  libstdc++-v3/libsupc++/bad_typeid.cc
  d54dac42098e24364e0e8249016c78b8  libstdc++-v3/libsupc++/class_type_info.cc
! 81a5ece911a6ba43b04d709cc7186005  libstdc++-v3/libsupc++/compare
  ee57ed7a57d178fce16de2ec28a8340c  libstdc++-v3/libsupc++/cxxabi.h
  563de5baf2c41e9759583af359bb650e  libstdc++-v3/libsupc++/cxxabi_forced.h
  8aae4a67a18f5276de7831d7a44b7b2f  libstdc++-v3/libsupc++/cxxabi_init_exception.h
--- 143489,143495 ----
  2c05bcb0a318121f8deb29df215a1a76  libstdc++-v3/libsupc++/bad_cast.cc
  ed96195b097b5c5644e754342e3159bc  libstdc++-v3/libsupc++/bad_typeid.cc
  d54dac42098e24364e0e8249016c78b8  libstdc++-v3/libsupc++/class_type_info.cc
! 8413705cc04f8558be233195d1b132f3  libstdc++-v3/libsupc++/compare
  ee57ed7a57d178fce16de2ec28a8340c  libstdc++-v3/libsupc++/cxxabi.h
  563de5baf2c41e9759583af359bb650e  libstdc++-v3/libsupc++/cxxabi_forced.h
  8aae4a67a18f5276de7831d7a44b7b2f  libstdc++-v3/libsupc++/cxxabi_init_exception.h
*************** cba1356a5d30bc9057a2e5d0925657f8  libstd
*** 143430,143443 ****
  4cb74e4755d2e3e58503a243d7ae042b  libstdc++-v3/python/hook.in
  68b329da9893e34099c7d8ad5cb9c940  libstdc++-v3/python/libstdcxx/__init__.py
  f3661044e04e7499daef1e53bba37dc7  libstdc++-v3/python/libstdcxx/v6/__init__.py
! 80ece9e9dd68cbbff40454566f9ac436  libstdc++-v3/python/libstdcxx/v6/printers.py
  c4a63edebdca46a9468f6ce9cde53449  libstdc++-v3/python/libstdcxx/v6/xmethods.py
  cdac7363b91e7d57b85f7b560f62f033  libstdc++-v3/scripts/check_compile
  87c30a72c1d3ec2a203894ac24d78005  libstdc++-v3/scripts/check_performance
  128d0fbc24e1d43d9ff93d14bd521aa6  libstdc++-v3/scripts/check_simd
  d964b7c0886aae16013b2d9f5bfceb50  libstdc++-v3/scripts/create_testsuite_files
  db724a6fa0555381c90302977970d0e3  libstdc++-v3/scripts/extract_symvers.in
! f501660a6c6b00aafeaef03458ae53a5  libstdc++-v3/scripts/extract_symvers.pl
  755b77f929d926f07f3257df2e802f2e  libstdc++-v3/scripts/gen_bind_includers.pl
  85378fa65bc3dc46ffe255374b304560  libstdc++-v3/scripts/gen_includers.pl
  f1a84a17158780aaa37927191db4463a  libstdc++-v3/scripts/gen_includers2.pl
--- 143574,143587 ----
  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
  c4a63edebdca46a9468f6ce9cde53449  libstdc++-v3/python/libstdcxx/v6/xmethods.py
  cdac7363b91e7d57b85f7b560f62f033  libstdc++-v3/scripts/check_compile
  87c30a72c1d3ec2a203894ac24d78005  libstdc++-v3/scripts/check_performance
  128d0fbc24e1d43d9ff93d14bd521aa6  libstdc++-v3/scripts/check_simd
  d964b7c0886aae16013b2d9f5bfceb50  libstdc++-v3/scripts/create_testsuite_files
  db724a6fa0555381c90302977970d0e3  libstdc++-v3/scripts/extract_symvers.in
! 482d4853ffbd964db4b7902280386c8b  libstdc++-v3/scripts/extract_symvers.pl
  755b77f929d926f07f3257df2e802f2e  libstdc++-v3/scripts/gen_bind_includers.pl
  85378fa65bc3dc46ffe255374b304560  libstdc++-v3/scripts/gen_includers.pl
  f1a84a17158780aaa37927191db4463a  libstdc++-v3/scripts/gen_includers2.pl
*************** e66e202fb59625eb933c316b0bf9ee34  libstd
*** 143555,143565 ****
  6bbe101ec337afce54e0c8dee6fdd6d3  libstdc++-v3/src/c++17/uint128_t.h
  4d414718915223bfe45a3a197501ea1d  libstdc++-v3/src/c++20/Makefile.am
  8992329b44e206ac3d5b63e10bf82246  libstdc++-v3/src/c++20/Makefile.in
! b92177c5d2a1113f62a79ed66c1d64fa  libstdc++-v3/src/c++20/atomic.cc
  ac664105ccfd50a2a092e98df11864a3  libstdc++-v3/src/c++20/clock.cc
  94b3ab191e8fe566a951ac2b4f081c40  libstdc++-v3/src/c++20/format.cc
  939eb3ac7ce3c32a8b2aac493f053893  libstdc++-v3/src/c++20/sstream-inst.cc
! 4ae5a188313674c3aa4f25f8fbc77046  libstdc++-v3/src/c++20/syncbuf.cc
  e9e89f4578e59d252e4caaf0b63d6dfb  libstdc++-v3/src/c++20/tzdata.zi
  e7b5fbbd5ee61bf8fbf8702b095de326  libstdc++-v3/src/c++20/tzdb.cc
  ac7b7a080d5f7aa8fe6a26188631fc18  libstdc++-v3/src/c++20/windows_zones-map.h
--- 143699,143709 ----
  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
! 1e0991dc73599d71ca512283f9271dda  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
! 6b7e270cd96c865db9baa1ad0df93823  libstdc++-v3/src/c++20/syncbuf.cc
  e9e89f4578e59d252e4caaf0b63d6dfb  libstdc++-v3/src/c++20/tzdata.zi
  e7b5fbbd5ee61bf8fbf8702b095de326  libstdc++-v3/src/c++20/tzdb.cc
  ac7b7a080d5f7aa8fe6a26188631fc18  libstdc++-v3/src/c++20/windows_zones-map.h
*************** a50173907daec62db9e77f26b56a12b8  libstd
*** 143717,143723 ****
  b68d3b924d0ec6839ff81111c3d60e3e  libstdc++-v3/testsuite/18_support/exception_ptr/40296.cc
  3f5836eac9df6282dbc234c6af5bdfb8  libstdc++-v3/testsuite/18_support/exception_ptr/60612-terminate.cc
  6572ee2f3a74385b6d38661ed86aad93  libstdc++-v3/testsuite/18_support/exception_ptr/60612-unexpected.cc
! 624752daca49d5684700db981ee38028  libstdc++-v3/testsuite/18_support/exception_ptr/62258.cc
  7d8727187aa2744639f9cd310c37562f  libstdc++-v3/testsuite/18_support/exception_ptr/64241.cc
  cc5dd043c9d14c6d41ee5c1ca240e563  libstdc++-v3/testsuite/18_support/exception_ptr/90295.cc
  8907da30a344e71f1227eec1fae72f2b  libstdc++-v3/testsuite/18_support/exception_ptr/96657.cc
--- 143861,143867 ----
  b68d3b924d0ec6839ff81111c3d60e3e  libstdc++-v3/testsuite/18_support/exception_ptr/40296.cc
  3f5836eac9df6282dbc234c6af5bdfb8  libstdc++-v3/testsuite/18_support/exception_ptr/60612-terminate.cc
  6572ee2f3a74385b6d38661ed86aad93  libstdc++-v3/testsuite/18_support/exception_ptr/60612-unexpected.cc
! cb3fad10e5e26fe4364e24cc72871384  libstdc++-v3/testsuite/18_support/exception_ptr/62258.cc
  7d8727187aa2744639f9cd310c37562f  libstdc++-v3/testsuite/18_support/exception_ptr/64241.cc
  cc5dd043c9d14c6d41ee5c1ca240e563  libstdc++-v3/testsuite/18_support/exception_ptr/90295.cc
  8907da30a344e71f1227eec1fae72f2b  libstdc++-v3/testsuite/18_support/exception_ptr/96657.cc
*************** c5372769761fc046c0cfa9cabcb56311  libstd
*** 143736,143747 ****
  5c1ae2068406fbfafc0ec7f72c5b5be8  libstdc++-v3/testsuite/18_support/headers/ciso646/macros-2.cc
  edfb76e6d0df5e84a4f8d7a1424c9f87  libstdc++-v3/testsuite/18_support/headers/ciso646/macros.cc
  da426b23590d6339b17199f3fb1a7591  libstdc++-v3/testsuite/18_support/headers/ciso646/macros.h.cc
! 4de8a300b8ac7d7d14984afc243fe0a0  libstdc++-v3/testsuite/18_support/headers/climits/values.cc
  082c209776f3662071f5b009da87f96b  libstdc++-v3/testsuite/18_support/headers/csetjmp/functions_std.cc
  bc578105a029c155931c577ecdc59269  libstdc++-v3/testsuite/18_support/headers/csetjmp/macros.cc
  1a057de7b0717ab6ee21a7ef7e5b903e  libstdc++-v3/testsuite/18_support/headers/csetjmp/types_std.cc
  b5037c54225f670c5262a07025dd43c6  libstdc++-v3/testsuite/18_support/headers/csignal/functions_std.cc
! 682c3dcd632ee47d34714dfac875efad  libstdc++-v3/testsuite/18_support/headers/csignal/macros.cc
  3225502c0f5b9c18f6f2099c075d9b72  libstdc++-v3/testsuite/18_support/headers/csignal/types_std.cc
  d540e641f1b565c2ccd5123b88fcce41  libstdc++-v3/testsuite/18_support/headers/cstdalign/macros.cc
  92d5042469c05e6c12c0c2896fbe80bb  libstdc++-v3/testsuite/18_support/headers/cstdalign/macros.h.cc
--- 143880,143891 ----
  5c1ae2068406fbfafc0ec7f72c5b5be8  libstdc++-v3/testsuite/18_support/headers/ciso646/macros-2.cc
  edfb76e6d0df5e84a4f8d7a1424c9f87  libstdc++-v3/testsuite/18_support/headers/ciso646/macros.cc
  da426b23590d6339b17199f3fb1a7591  libstdc++-v3/testsuite/18_support/headers/ciso646/macros.h.cc
! 56043c32a193dd6faa10cd60297b6eff  libstdc++-v3/testsuite/18_support/headers/climits/values.cc
  082c209776f3662071f5b009da87f96b  libstdc++-v3/testsuite/18_support/headers/csetjmp/functions_std.cc
  bc578105a029c155931c577ecdc59269  libstdc++-v3/testsuite/18_support/headers/csetjmp/macros.cc
  1a057de7b0717ab6ee21a7ef7e5b903e  libstdc++-v3/testsuite/18_support/headers/csetjmp/types_std.cc
  b5037c54225f670c5262a07025dd43c6  libstdc++-v3/testsuite/18_support/headers/csignal/functions_std.cc
! db166efa911d5bda97cb3bb2f2c649b6  libstdc++-v3/testsuite/18_support/headers/csignal/macros.cc
  3225502c0f5b9c18f6f2099c075d9b72  libstdc++-v3/testsuite/18_support/headers/csignal/types_std.cc
  d540e641f1b565c2ccd5123b88fcce41  libstdc++-v3/testsuite/18_support/headers/cstdalign/macros.cc
  92d5042469c05e6c12c0c2896fbe80bb  libstdc++-v3/testsuite/18_support/headers/cstdalign/macros.h.cc
*************** d60e3877ffa9addd4a00f6e451404b6e  libstd
*** 143834,143840 ****
  9183aba89484917544d8e71ab7b95f72  libstdc++-v3/testsuite/18_support/type_info/constexpr.cc
  d06826b7f4a21086751aa50f50f752fc  libstdc++-v3/testsuite/18_support/type_info/fundamental.cc
  62adc85a01153ec617f5a0f38e519448  libstdc++-v3/testsuite/18_support/type_info/hash_code.cc
! 2c5b0e45ce8deeaa03a7eb8f9050d092  libstdc++-v3/testsuite/18_support/uncaught_exception/14026.cc
  c7f4c43fefac85be376c808d2575a369  libstdc++-v3/testsuite/18_support/uncaught_exceptions/uncaught_exceptions.cc
  3a79bc516257e1fbcfc1fbb2db5e1710  libstdc++-v3/testsuite/18_support/unexpected_handler.cc
  539a1e4b3f59b604b72e1f079fc8269e  libstdc++-v3/testsuite/19_diagnostics/debugging/breakpoint.cc
--- 143978,143984 ----
  9183aba89484917544d8e71ab7b95f72  libstdc++-v3/testsuite/18_support/type_info/constexpr.cc
  d06826b7f4a21086751aa50f50f752fc  libstdc++-v3/testsuite/18_support/type_info/fundamental.cc
  62adc85a01153ec617f5a0f38e519448  libstdc++-v3/testsuite/18_support/type_info/hash_code.cc
! 20133e976ece6721306d5700a8f65397  libstdc++-v3/testsuite/18_support/uncaught_exception/14026.cc
  c7f4c43fefac85be376c808d2575a369  libstdc++-v3/testsuite/18_support/uncaught_exceptions/uncaught_exceptions.cc
  3a79bc516257e1fbcfc1fbb2db5e1710  libstdc++-v3/testsuite/18_support/unexpected_handler.cc
  539a1e4b3f59b604b72e1f079fc8269e  libstdc++-v3/testsuite/19_diagnostics/debugging/breakpoint.cc
*************** edd97b36a8e740f4541e76b68c7983bf  libstd
*** 144057,144062 ****
--- 144201,144207 ----
  52e3e554b856e7eff5c1d25d3b870473  libstdc++-v3/testsuite/20_util/bind/socket.cc
  c0edeeaaf9a022df2a3ca636e28ac7f2  libstdc++-v3/testsuite/20_util/bitset/107037.cc
  67af3181860f8c6b9b51e2c6a208f4c1  libstdc++-v3/testsuite/20_util/bitset/115098.cc
+ 3b84ebf0c9a974f5f5e873ace50bdc2f  libstdc++-v3/testsuite/20_util/bitset/121054.cc
  37b7467553508fb063e94fc77528c4a4  libstdc++-v3/testsuite/20_util/bitset/18604.cc
  b23338c1f6138984551479ca9bcd7963  libstdc++-v3/testsuite/20_util/bitset/45713.cc
  0be3c1005581d429a9faed927cfeb925  libstdc++-v3/testsuite/20_util/bitset/access/constexpr.cc
*************** fdb870f77bb25b869888d7bd7b426bb3  libstd
*** 144072,144078 ****
  aec695dfa67c199a3b4539987fccb573  libstdc++-v3/testsuite/20_util/bitset/cons/50268.cc
  e1eaaf82a9146ce649ff48ea2c451dcc  libstdc++-v3/testsuite/20_util/bitset/cons/6282.cc
  ed93021866f5024b5bede5df5a13a983  libstdc++-v3/testsuite/20_util/bitset/cons/constexpr.cc
! 6abbb67385d01ef586af796804e437be  libstdc++-v3/testsuite/20_util/bitset/cons/constexpr_c++23.cc
  2f909320aab04ee1c6cec89843920dac  libstdc++-v3/testsuite/20_util/bitset/cons/dr1325-1.cc
  409e0135eb2eb16fce312c6099f4dced  libstdc++-v3/testsuite/20_util/bitset/cons/dr1325-2.cc
  01edf39421083072f99f916088684dfa  libstdc++-v3/testsuite/20_util/bitset/cons/dr396.cc
--- 144217,144223 ----
  aec695dfa67c199a3b4539987fccb573  libstdc++-v3/testsuite/20_util/bitset/cons/50268.cc
  e1eaaf82a9146ce649ff48ea2c451dcc  libstdc++-v3/testsuite/20_util/bitset/cons/6282.cc
  ed93021866f5024b5bede5df5a13a983  libstdc++-v3/testsuite/20_util/bitset/cons/constexpr.cc
! b9820acb1e2d2f495bdf8c4808286a8d  libstdc++-v3/testsuite/20_util/bitset/cons/constexpr_c++23.cc
  2f909320aab04ee1c6cec89843920dac  libstdc++-v3/testsuite/20_util/bitset/cons/dr1325-1.cc
  409e0135eb2eb16fce312c6099f4dced  libstdc++-v3/testsuite/20_util/bitset/cons/dr1325-2.cc
  01edf39421083072f99f916088684dfa  libstdc++-v3/testsuite/20_util/bitset/cons/dr396.cc
*************** cf0e17bbd866d9cd26def3c1b550256c  libstd
*** 144289,144295 ****
  bb5934b398d6cba561011cc412b7862b  libstdc++-v3/testsuite/20_util/function_objects/bind_back/1.cc
  a170197e1c15888e69e8f42454c4eb22  libstdc++-v3/testsuite/20_util/function_objects/bind_back/111327.cc
  2f63cd2255fde6cd4f014efb1ad34b27  libstdc++-v3/testsuite/20_util/function_objects/bind_back/116038.cc
! 9e7467b91efad6132ff91d5e3fb0bc19  libstdc++-v3/testsuite/20_util/function_objects/bind_back/nttp.cc
  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
--- 144434,144440 ----
  bb5934b398d6cba561011cc412b7862b  libstdc++-v3/testsuite/20_util/function_objects/bind_back/1.cc
  a170197e1c15888e69e8f42454c4eb22  libstdc++-v3/testsuite/20_util/function_objects/bind_back/111327.cc
  2f63cd2255fde6cd4f014efb1ad34b27  libstdc++-v3/testsuite/20_util/function_objects/bind_back/116038.cc
! dd2b6594a4fe51b51519aade50612fbf  libstdc++-v3/testsuite/20_util/function_objects/bind_back/nttp.cc
  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
*************** b7e1e25aa8f6fddecd578ce1c23b63e2  libstd
*** 144298,144304 ****
  1a693160b90575d90d17b98c05d54334  libstdc++-v3/testsuite/20_util/function_objects/bind_front/2.cc
  ca6516aefe54fd40ebaa1dafa0a11255  libstdc++-v3/testsuite/20_util/function_objects/bind_front/97101.cc
  3cfdb7914d47020c2f60f9d7e8289c83  libstdc++-v3/testsuite/20_util/function_objects/bind_front/constexpr.cc
! e3d35ce505614a2cbd727c54c5b9a1dd  libstdc++-v3/testsuite/20_util/function_objects/bind_front/nttp.cc
  28e8e9561e8b06ee357778c9794a1e18  libstdc++-v3/testsuite/20_util/function_objects/bind_front/nttp_neg.cc
  24b9567e8fc21dd935610beedfbf85aa  libstdc++-v3/testsuite/20_util/function_objects/binders/1.cc
  6bab66b664cfd3bdfffcc4a40e8765c9  libstdc++-v3/testsuite/20_util/function_objects/binders/3113.cc
--- 144443,144449 ----
  1a693160b90575d90d17b98c05d54334  libstdc++-v3/testsuite/20_util/function_objects/bind_front/2.cc
  ca6516aefe54fd40ebaa1dafa0a11255  libstdc++-v3/testsuite/20_util/function_objects/bind_front/97101.cc
  3cfdb7914d47020c2f60f9d7e8289c83  libstdc++-v3/testsuite/20_util/function_objects/bind_front/constexpr.cc
! f401903d92a7ab4576b40881d75f2b82  libstdc++-v3/testsuite/20_util/function_objects/bind_front/nttp.cc
  28e8e9561e8b06ee357778c9794a1e18  libstdc++-v3/testsuite/20_util/function_objects/bind_front/nttp_neg.cc
  24b9567e8fc21dd935610beedfbf85aa  libstdc++-v3/testsuite/20_util/function_objects/binders/1.cc
  6bab66b664cfd3bdfffcc4a40e8765c9  libstdc++-v3/testsuite/20_util/function_objects/binders/3113.cc
*************** c74a827c144ff0e444812aa72303f939  libstd
*** 144378,144384 ****
  d9263c70ce78dea057221091a1defbb4  libstdc++-v3/testsuite/20_util/headers/ctime/functions_std.cc
  c321382f19a792acb5701f0f9c65a376  libstdc++-v3/testsuite/20_util/headers/ctime/macros.cc
  1949a66ac63785b744802e205dd66249  libstdc++-v3/testsuite/20_util/headers/ctime/types_std.cc
! 4457ea7c6398250735972f3712b221fd  libstdc++-v3/testsuite/20_util/headers/functional/synopsis.cc
  8e22bcce2b7196ff33d088efc48ff1ec  libstdc++-v3/testsuite/20_util/headers/functional/types_std_c++0x.cc
  a69299709ad55c8e891216919470533c  libstdc++-v3/testsuite/20_util/headers/functional/using_namespace_std_placeholders.cc
  8b53fa85edafd52c50395631802734a2  libstdc++-v3/testsuite/20_util/headers/memory/114866.cc
--- 144523,144529 ----
  d9263c70ce78dea057221091a1defbb4  libstdc++-v3/testsuite/20_util/headers/ctime/functions_std.cc
  c321382f19a792acb5701f0f9c65a376  libstdc++-v3/testsuite/20_util/headers/ctime/macros.cc
  1949a66ac63785b744802e205dd66249  libstdc++-v3/testsuite/20_util/headers/ctime/types_std.cc
! 0e398b3a1b292370e0d5472d2f9aa27e  libstdc++-v3/testsuite/20_util/headers/functional/synopsis.cc
  8e22bcce2b7196ff33d088efc48ff1ec  libstdc++-v3/testsuite/20_util/headers/functional/types_std_c++0x.cc
  a69299709ad55c8e891216919470533c  libstdc++-v3/testsuite/20_util/headers/functional/using_namespace_std_placeholders.cc
  8b53fa85edafd52c50395631802734a2  libstdc++-v3/testsuite/20_util/headers/memory/114866.cc
*************** b177a724e51756602efd9dd786180e98  libstd
*** 144533,144541 ****
  31a740f1c6844e8db8616f864b8448c1  libstdc++-v3/testsuite/20_util/is_layout_compatible/value.cc
  238b3120b9f8359df017f0d5349ddc89  libstdc++-v3/testsuite/20_util/is_layout_compatible/version.cc
  84dbc0c58ae82b3e267e1d3a00c82637  libstdc++-v3/testsuite/20_util/is_literal_type/deprecated-1z.cc
! 946e91b80efcd3a06f7bc89860f7a4fb  libstdc++-v3/testsuite/20_util/is_literal_type/requirements/explicit_instantiation.cc
! 78ced3ba9ea39afc59e265b010bae58b  libstdc++-v3/testsuite/20_util/is_literal_type/requirements/typedefs.cc
! 699368f9693a2e2b2a8794928a6e9a92  libstdc++-v3/testsuite/20_util/is_literal_type/value.cc
  84f611ff88f79f0a0b9b70ac818fedfe  libstdc++-v3/testsuite/20_util/is_lvalue_reference/requirements/explicit_instantiation.cc
  43bab44e026ebfaef17fe77282093068  libstdc++-v3/testsuite/20_util/is_lvalue_reference/requirements/typedefs.cc
  9dbca1cc9064b8ce9cff6039fcb77404  libstdc++-v3/testsuite/20_util/is_lvalue_reference/value.cc
--- 144678,144686 ----
  31a740f1c6844e8db8616f864b8448c1  libstdc++-v3/testsuite/20_util/is_layout_compatible/value.cc
  238b3120b9f8359df017f0d5349ddc89  libstdc++-v3/testsuite/20_util/is_layout_compatible/version.cc
  84dbc0c58ae82b3e267e1d3a00c82637  libstdc++-v3/testsuite/20_util/is_literal_type/deprecated-1z.cc
! 84e59fa7edb0a8aa11ceb518e7b267d4  libstdc++-v3/testsuite/20_util/is_literal_type/requirements/explicit_instantiation.cc
! 7d48f04db39ae1c4c3e059e2113a36d5  libstdc++-v3/testsuite/20_util/is_literal_type/requirements/typedefs.cc
! 6c987f130b02869d90d3f088a15f9d5a  libstdc++-v3/testsuite/20_util/is_literal_type/value.cc
  84f611ff88f79f0a0b9b70ac818fedfe  libstdc++-v3/testsuite/20_util/is_lvalue_reference/requirements/explicit_instantiation.cc
  43bab44e026ebfaef17fe77282093068  libstdc++-v3/testsuite/20_util/is_lvalue_reference/requirements/typedefs.cc
  9dbca1cc9064b8ce9cff6039fcb77404  libstdc++-v3/testsuite/20_util/is_lvalue_reference/value.cc
*************** da8e5e15cf8ba526c334c9402eef42c1  libstd
*** 144617,144625 ****
  665bdfeb135d546d33671b4fcd6ba307  libstdc++-v3/testsuite/20_util/is_object/requirements/typedefs.cc
  d8269e503a575731264d0aa0830d176f  libstdc++-v3/testsuite/20_util/is_object/value.cc
  8ba9ef61a05b312af3092c1295ca175e  libstdc++-v3/testsuite/20_util/is_pod/deprecated-2a.cc
! acf0bcee2abde1e5ffdbbb0b03bff9f4  libstdc++-v3/testsuite/20_util/is_pod/requirements/explicit_instantiation.cc
! ca25badf29433660f59b67d6d305b781  libstdc++-v3/testsuite/20_util/is_pod/requirements/typedefs.cc
! 0ddcd1add0d7378d2f57f4a42721f896  libstdc++-v3/testsuite/20_util/is_pod/value.cc
  a10fea2a89214a4b110c85c8226b0657  libstdc++-v3/testsuite/20_util/is_pointer/requirements/explicit_instantiation.cc
  507702a7a97a1110f817ba9ed3ea268b  libstdc++-v3/testsuite/20_util/is_pointer/value.cc
  e9378376f3c816595bd186a3a1c0f891  libstdc++-v3/testsuite/20_util/is_pointer_interconvertible/value.cc
--- 144762,144770 ----
  665bdfeb135d546d33671b4fcd6ba307  libstdc++-v3/testsuite/20_util/is_object/requirements/typedefs.cc
  d8269e503a575731264d0aa0830d176f  libstdc++-v3/testsuite/20_util/is_object/value.cc
  8ba9ef61a05b312af3092c1295ca175e  libstdc++-v3/testsuite/20_util/is_pod/deprecated-2a.cc
! 46bb4fa2a89d154ce3dbe4051568c061  libstdc++-v3/testsuite/20_util/is_pod/requirements/explicit_instantiation.cc
! dda99e1e8170e149be885d6f4e749c6e  libstdc++-v3/testsuite/20_util/is_pod/requirements/typedefs.cc
! 5754f9ef0bb62e2d5f8755899de5a01d  libstdc++-v3/testsuite/20_util/is_pod/value.cc
  a10fea2a89214a4b110c85c8226b0657  libstdc++-v3/testsuite/20_util/is_pointer/requirements/explicit_instantiation.cc
  507702a7a97a1110f817ba9ed3ea268b  libstdc++-v3/testsuite/20_util/is_pointer/value.cc
  e9378376f3c816595bd186a3a1c0f891  libstdc++-v3/testsuite/20_util/is_pointer_interconvertible/value.cc
*************** e87baf85f6f908100f4517bca965289b  libstd
*** 144820,144826 ****
  17d39f79ed38d2fa6bc9f0966d658070  libstdc++-v3/testsuite/20_util/optional/observers/5.cc
  f7bf5549fbdf589877e5795a24ddd3fb  libstdc++-v3/testsuite/20_util/optional/observers/6.cc
  d8af3640e7aabc8dd1960265b3ca5a27  libstdc++-v3/testsuite/20_util/optional/observers/lwg2762.cc
! 5b53f481fa2d64eb63407e6f157fd182  libstdc++-v3/testsuite/20_util/optional/range.cc
  967125dab88015eb452595fd390f0a09  libstdc++-v3/testsuite/20_util/optional/ref/access.cc
  f53ffa73b0b8e8a9ab79a524894a068b  libstdc++-v3/testsuite/20_util/optional/ref/assign.cc
  bd414ec4d2462ae7da725365de0f5e90  libstdc++-v3/testsuite/20_util/optional/ref/cons.cc
--- 144965,144971 ----
  17d39f79ed38d2fa6bc9f0966d658070  libstdc++-v3/testsuite/20_util/optional/observers/5.cc
  f7bf5549fbdf589877e5795a24ddd3fb  libstdc++-v3/testsuite/20_util/optional/observers/6.cc
  d8af3640e7aabc8dd1960265b3ca5a27  libstdc++-v3/testsuite/20_util/optional/observers/lwg2762.cc
! bd7648992b818e0a7d401707376d3300  libstdc++-v3/testsuite/20_util/optional/range.cc
  967125dab88015eb452595fd390f0a09  libstdc++-v3/testsuite/20_util/optional/ref/access.cc
  f53ffa73b0b8e8a9ab79a524894a068b  libstdc++-v3/testsuite/20_util/optional/ref/assign.cc
  bd414ec4d2462ae7da725365de0f5e90  libstdc++-v3/testsuite/20_util/optional/ref/cons.cc
*************** e3122d59216d5576472a0c4bfce65e43  libstd
*** 145017,145025 ****
  83efd26cef2336d6f4e3da69eaa5c307  libstdc++-v3/testsuite/20_util/scoped_allocator/requirements/typedefs.cc
  7a0a4219eb894f53965657051cc390fe  libstdc++-v3/testsuite/20_util/scoped_allocator/version.cc
  1bb1caa976eb0d72fea62721b9745abb  libstdc++-v3/testsuite/20_util/shared_ptr/assign/assign.cc
! da9145a0185055b61b241cc561abd20a  libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr.cc
! 6cf4c9f10e797199efb793cddcd24a39  libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr_neg.cc
! 97a57035bdd3e49c7f90a04af4f353c0  libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr_rvalue.cc
  5427a00ec56f778ede20902ecbda714f  libstdc++-v3/testsuite/20_util/shared_ptr/assign/dr541.cc
  8b73f346a42b834dd780941ea41801c8  libstdc++-v3/testsuite/20_util/shared_ptr/assign/move.cc
  5a101c3338946d84bf07526edf97287c  libstdc++-v3/testsuite/20_util/shared_ptr/assign/sfinae.cc
--- 145162,145170 ----
  83efd26cef2336d6f4e3da69eaa5c307  libstdc++-v3/testsuite/20_util/scoped_allocator/requirements/typedefs.cc
  7a0a4219eb894f53965657051cc390fe  libstdc++-v3/testsuite/20_util/scoped_allocator/version.cc
  1bb1caa976eb0d72fea62721b9745abb  libstdc++-v3/testsuite/20_util/shared_ptr/assign/assign.cc
! cf6a8bb39fdd50b5a7ef08de38984cd4  libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr.cc
! d04e8acf862e3927e5f67fec9400dc5a  libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr_neg.cc
! 3e86a742da084017a676b8f1a5f7f634  libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr_rvalue.cc
  5427a00ec56f778ede20902ecbda714f  libstdc++-v3/testsuite/20_util/shared_ptr/assign/dr541.cc
  8b73f346a42b834dd780941ea41801c8  libstdc++-v3/testsuite/20_util/shared_ptr/assign/move.cc
  5a101c3338946d84bf07526edf97287c  libstdc++-v3/testsuite/20_util/shared_ptr/assign/sfinae.cc
*************** da9145a0185055b61b241cc561abd20a  libstd
*** 145027,145035 ****
  2fa64ace7c5dd55676fc58c8ea0aa606  libstdc++-v3/testsuite/20_util/shared_ptr/assign/shared_ptr_neg.cc
  3314ee850605e35d0fa7931d0af845f1  libstdc++-v3/testsuite/20_util/shared_ptr/assign/unique_ptr_lvalue_neg.cc
  1d69bc2865a8d093f06ee829214a2a04  libstdc++-v3/testsuite/20_util/shared_ptr/assign/unique_ptr_rvalue.cc
! 0628ca75fea328006384bf3d75c0eb1e  libstdc++-v3/testsuite/20_util/shared_ptr/atomic/1.cc
! cc8f100514fc776c44855526cd4c4f98  libstdc++-v3/testsuite/20_util/shared_ptr/atomic/2.cc
! f0aa77432ff68dc1bc3bb39abb798574  libstdc++-v3/testsuite/20_util/shared_ptr/atomic/3.cc
  218bfa15322cbf3d4699fd75868ce542  libstdc++-v3/testsuite/20_util/shared_ptr/atomic/atomic_shared_ptr.cc
  d062f610d8deb3a502b4f910b95955be  libstdc++-v3/testsuite/20_util/shared_ptr/atomic/pr118757.cc
  0ed58f781f6defac8f2adf9165c5b843  libstdc++-v3/testsuite/20_util/shared_ptr/casts/1.cc
--- 145172,145180 ----
  2fa64ace7c5dd55676fc58c8ea0aa606  libstdc++-v3/testsuite/20_util/shared_ptr/assign/shared_ptr_neg.cc
  3314ee850605e35d0fa7931d0af845f1  libstdc++-v3/testsuite/20_util/shared_ptr/assign/unique_ptr_lvalue_neg.cc
  1d69bc2865a8d093f06ee829214a2a04  libstdc++-v3/testsuite/20_util/shared_ptr/assign/unique_ptr_rvalue.cc
! d927d88293041d5ba7ff855dd30630d5  libstdc++-v3/testsuite/20_util/shared_ptr/atomic/1.cc
! 81050172069c753ca96691ae9e3a6b18  libstdc++-v3/testsuite/20_util/shared_ptr/atomic/2.cc
! 9f215d1a7325d20a5cf5ae7cb127c0c1  libstdc++-v3/testsuite/20_util/shared_ptr/atomic/3.cc
  218bfa15322cbf3d4699fd75868ce542  libstdc++-v3/testsuite/20_util/shared_ptr/atomic/atomic_shared_ptr.cc
  d062f610d8deb3a502b4f910b95955be  libstdc++-v3/testsuite/20_util/shared_ptr/atomic/pr118757.cc
  0ed58f781f6defac8f2adf9165c5b843  libstdc++-v3/testsuite/20_util/shared_ptr/casts/1.cc
*************** f71b39c4f3422ca74560b507e3238d70  libstd
*** 145042,145048 ****
  970dc28c192c9aad53208ba1644b67b5  libstdc++-v3/testsuite/20_util/shared_ptr/comparison/dr1401.cc
  8e6ec3a3b13e29ad93929e4c07a5e28a  libstdc++-v3/testsuite/20_util/shared_ptr/comparison/less.cc
  47d906d64b6786712cfc84be8917cf42  libstdc++-v3/testsuite/20_util/shared_ptr/cons/39405.cc
! e5aa55d48aa202ddbcd372e32aceb7e3  libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc
  be76d910219dd1911bf27a4e579b1ff8  libstdc++-v3/testsuite/20_util/shared_ptr/cons/46910.cc
  9a385eb6e279be3fd52f5b7727898d5f  libstdc++-v3/testsuite/20_util/shared_ptr/cons/51365.cc
  67b60f7091299c08f3ab68cd345be1eb  libstdc++-v3/testsuite/20_util/shared_ptr/cons/52924.cc
--- 145187,145193 ----
  970dc28c192c9aad53208ba1644b67b5  libstdc++-v3/testsuite/20_util/shared_ptr/comparison/dr1401.cc
  8e6ec3a3b13e29ad93929e4c07a5e28a  libstdc++-v3/testsuite/20_util/shared_ptr/comparison/less.cc
  47d906d64b6786712cfc84be8917cf42  libstdc++-v3/testsuite/20_util/shared_ptr/cons/39405.cc
! 56c789b87442a2234207470708d1a993  libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc
  be76d910219dd1911bf27a4e579b1ff8  libstdc++-v3/testsuite/20_util/shared_ptr/cons/46910.cc
  9a385eb6e279be3fd52f5b7727898d5f  libstdc++-v3/testsuite/20_util/shared_ptr/cons/51365.cc
  67b60f7091299c08f3ab68cd345be1eb  libstdc++-v3/testsuite/20_util/shared_ptr/cons/52924.cc
*************** d8fb3b4ac0bd125ee453e79e3356aead  libstd
*** 145057,145064 ****
  8d4aaae30c20e2e1505b3253bfb14a68  libstdc++-v3/testsuite/20_util/shared_ptr/cons/alloc.cc
  79a6927d705dcdf6b9885ab8e279081c  libstdc++-v3/testsuite/20_util/shared_ptr/cons/alloc_min.cc
  4f1ca5b83048d1f4ce03aebe7a7b8d07  libstdc++-v3/testsuite/20_util/shared_ptr/cons/array.cc
! 6d3b22a0fb79470b7efb4d6fabcfa542  libstdc++-v3/testsuite/20_util/shared_ptr/cons/auto_ptr.cc
! 2a523bcc3b74f25cab2c97ccd528ab50  libstdc++-v3/testsuite/20_util/shared_ptr/cons/auto_ptr_neg.cc
  3d5984ebf9fd9270cace5d0c67e6993a  libstdc++-v3/testsuite/20_util/shared_ptr/cons/constexpr.cc
  b7740e881f4aae241319701626cdfb47  libstdc++-v3/testsuite/20_util/shared_ptr/cons/copy.cc
  5c0050cd7e09a5272a5b584caabece6a  libstdc++-v3/testsuite/20_util/shared_ptr/cons/deduction.cc
--- 145202,145209 ----
  8d4aaae30c20e2e1505b3253bfb14a68  libstdc++-v3/testsuite/20_util/shared_ptr/cons/alloc.cc
  79a6927d705dcdf6b9885ab8e279081c  libstdc++-v3/testsuite/20_util/shared_ptr/cons/alloc_min.cc
  4f1ca5b83048d1f4ce03aebe7a7b8d07  libstdc++-v3/testsuite/20_util/shared_ptr/cons/array.cc
! cb14276986cd09c9c6c9c1accfc8af9e  libstdc++-v3/testsuite/20_util/shared_ptr/cons/auto_ptr.cc
! 7dfb5350c29313b4813e4cefbd6397b1  libstdc++-v3/testsuite/20_util/shared_ptr/cons/auto_ptr_neg.cc
  3d5984ebf9fd9270cace5d0c67e6993a  libstdc++-v3/testsuite/20_util/shared_ptr/cons/constexpr.cc
  b7740e881f4aae241319701626cdfb47  libstdc++-v3/testsuite/20_util/shared_ptr/cons/copy.cc
  5c0050cd7e09a5272a5b584caabece6a  libstdc++-v3/testsuite/20_util/shared_ptr/cons/deduction.cc
*************** cd5f4183a10cd869dd52d087986e6bfd  libstd
*** 145088,145094 ****
  912a30cde4ccf052aeee5b3596a2c99a  libstdc++-v3/testsuite/20_util/shared_ptr/creation/alloc_min.cc
  404e20ed4771707f76a3b3d269fa453a  libstdc++-v3/testsuite/20_util/shared_ptr/creation/array.cc
  860e94bed11663d0b11a7f824d76b2ab  libstdc++-v3/testsuite/20_util/shared_ptr/creation/dr402.cc
! 24969b795188d290d80cc4c5cdb927ed  libstdc++-v3/testsuite/20_util/shared_ptr/creation/dr925.cc
  fddeec2187d6b2c6bff23bb6c9c6c644  libstdc++-v3/testsuite/20_util/shared_ptr/creation/make.cc
  1cf04284e3f554d80f52574f5d401001  libstdc++-v3/testsuite/20_util/shared_ptr/creation/no_rtti.cc
  26903b42fbcdb2e18b2f10007122a450  libstdc++-v3/testsuite/20_util/shared_ptr/creation/overwrite.cc
--- 145233,145239 ----
  912a30cde4ccf052aeee5b3596a2c99a  libstdc++-v3/testsuite/20_util/shared_ptr/creation/alloc_min.cc
  404e20ed4771707f76a3b3d269fa453a  libstdc++-v3/testsuite/20_util/shared_ptr/creation/array.cc
  860e94bed11663d0b11a7f824d76b2ab  libstdc++-v3/testsuite/20_util/shared_ptr/creation/dr402.cc
! 050fdc2163e6269d93c38a793ce16fb6  libstdc++-v3/testsuite/20_util/shared_ptr/creation/dr925.cc
  fddeec2187d6b2c6bff23bb6c9c6c644  libstdc++-v3/testsuite/20_util/shared_ptr/creation/make.cc
  1cf04284e3f554d80f52574f5d401001  libstdc++-v3/testsuite/20_util/shared_ptr/creation/no_rtti.cc
  26903b42fbcdb2e18b2f10007122a450  libstdc++-v3/testsuite/20_util/shared_ptr/creation/overwrite.cc
*************** c1ebe6d6240bdbc46e33128bc582fe98  libstd
*** 145375,145382 ****
  f3e69c4239240ac41a05441383a83dcf  libstdc++-v3/testsuite/20_util/unique_ptr/comparison/dr1401.cc
  81a4fa711c98e36ca6f4571e61cc9bef  libstdc++-v3/testsuite/20_util/unique_ptr/cons/77990.cc
  7c3caba38a62d663207df543e5e0af23  libstdc++-v3/testsuite/20_util/unique_ptr/cons/array_convertible_neg.cc
! 682b5da7b3d356e35c582cd0d2fbfd9b  libstdc++-v3/testsuite/20_util/unique_ptr/cons/auto_ptr.cc
! fae6faa5df4273461432a57a5b8d4e44  libstdc++-v3/testsuite/20_util/unique_ptr/cons/auto_ptr_neg.cc
  035527dc4d97130b516d1ec362785ccb  libstdc++-v3/testsuite/20_util/unique_ptr/cons/constexpr.cc
  b476290d7a7cd33dbf90702dda410872  libstdc++-v3/testsuite/20_util/unique_ptr/cons/constexpr_c++20.cc
  965a0413ed6a51ad463126e64e044751  libstdc++-v3/testsuite/20_util/unique_ptr/cons/convertible_neg.cc
--- 145520,145527 ----
  f3e69c4239240ac41a05441383a83dcf  libstdc++-v3/testsuite/20_util/unique_ptr/comparison/dr1401.cc
  81a4fa711c98e36ca6f4571e61cc9bef  libstdc++-v3/testsuite/20_util/unique_ptr/cons/77990.cc
  7c3caba38a62d663207df543e5e0af23  libstdc++-v3/testsuite/20_util/unique_ptr/cons/array_convertible_neg.cc
! bb38d1bf1310d7553661b2cfe7259d7d  libstdc++-v3/testsuite/20_util/unique_ptr/cons/auto_ptr.cc
! 5be6bbfc326e343000cda53dfc4ed8d8  libstdc++-v3/testsuite/20_util/unique_ptr/cons/auto_ptr_neg.cc
  035527dc4d97130b516d1ec362785ccb  libstdc++-v3/testsuite/20_util/unique_ptr/cons/constexpr.cc
  b476290d7a7cd33dbf90702dda410872  libstdc++-v3/testsuite/20_util/unique_ptr/cons/constexpr_c++20.cc
  965a0413ed6a51ad463126e64e044751  libstdc++-v3/testsuite/20_util/unique_ptr/cons/convertible_neg.cc
*************** c0d0894e01701f6aa6203635b796c2da  libstd
*** 145450,145456 ****
  75138b81b5f7ab087c74c92ab6b1ab4a  libstdc++-v3/testsuite/20_util/uses_allocator/requirements/uses_allocator_v.cc
  696874efad5e42cc8d20940428caca19  libstdc++-v3/testsuite/20_util/uses_allocator/uninitialized_construct.cc
  c2e30b2ec16642f486b80b9842fc91fd  libstdc++-v3/testsuite/20_util/uses_allocator/value.cc
! 7a02efd3caf611de361e638cf60014f7  libstdc++-v3/testsuite/20_util/variable_templates_for_traits.cc
  b9698b5e78dcefad507d6737875a6a1d  libstdc++-v3/testsuite/20_util/variant/100384.cc
  5ef3d7df10dd90d995e4c63bc62c39de  libstdc++-v3/testsuite/20_util/variant/102912.cc
  909e769606f79e2311fe65f425279584  libstdc++-v3/testsuite/20_util/variant/80165.cc
--- 145595,145601 ----
  75138b81b5f7ab087c74c92ab6b1ab4a  libstdc++-v3/testsuite/20_util/uses_allocator/requirements/uses_allocator_v.cc
  696874efad5e42cc8d20940428caca19  libstdc++-v3/testsuite/20_util/uses_allocator/uninitialized_construct.cc
  c2e30b2ec16642f486b80b9842fc91fd  libstdc++-v3/testsuite/20_util/uses_allocator/value.cc
! 79e926626c7dc3719ed0dffd8aaed843  libstdc++-v3/testsuite/20_util/variable_templates_for_traits.cc
  b9698b5e78dcefad507d6737875a6a1d  libstdc++-v3/testsuite/20_util/variant/100384.cc
  5ef3d7df10dd90d995e4c63bc62c39de  libstdc++-v3/testsuite/20_util/variant/102912.cc
  909e769606f79e2311fe65f425279584  libstdc++-v3/testsuite/20_util/variant/80165.cc
*************** f853e3faba83946cba803ed2d336b949  libstd
*** 146862,146867 ****
--- 147007,147013 ----
  db268bed47f60f6b1af825ba47d9208f  libstdc++-v3/testsuite/23_containers/forward_list/debug/swap.cc
  d4ee51b84c0cfe50159e901ceab77d6d  libstdc++-v3/testsuite/23_containers/forward_list/erasure.cc
  5a7c8f9f19c0dbd31aa26ec68ade8aeb  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/1.cc
+ 6bcb325735429aba259858615ce5626d  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/122661.cc
  6092207fd698ea7bfc4c337073f78a5a  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/2.cc
  5773fab502955c01595fb7f7ae84f130  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/3.cc
  1c061ac6a6811e5026f0fedb58f277e1  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/4.cc
*************** b5add270eb89557e0c8d61fa1ace86e7  libstd
*** 151179,151185 ****
  d4c98a94a0ffda92bd76d6f6dfdf9760  libstdc++-v3/testsuite/29_atomics/atomic/cons/value_init.cc
  952bd3c7bb4ba837b698e7f8d43b280f  libstdc++-v3/testsuite/29_atomics/atomic/is_always_lock_free.cc
  f9b2d6d78dc44c7b8285a07ef1cd9521  libstdc++-v3/testsuite/29_atomics/atomic/lock_free_aliases.cc
! 467103d8d6f668882b30ac0653e0cd90  libstdc++-v3/testsuite/29_atomics/atomic/lwg3220.cc
  b6baf771c86d380ecf1dcb4393e97d0e  libstdc++-v3/testsuite/29_atomics/atomic/nonmembers.cc
  c1f319ba7f6ad7a6795bac75046271d0  libstdc++-v3/testsuite/29_atomics/atomic/operators/51811.cc
  6afaee620f593086673491093e9e2c83  libstdc++-v3/testsuite/29_atomics/atomic/operators/56011.cc
--- 151325,151331 ----
  d4c98a94a0ffda92bd76d6f6dfdf9760  libstdc++-v3/testsuite/29_atomics/atomic/cons/value_init.cc
  952bd3c7bb4ba837b698e7f8d43b280f  libstdc++-v3/testsuite/29_atomics/atomic/is_always_lock_free.cc
  f9b2d6d78dc44c7b8285a07ef1cd9521  libstdc++-v3/testsuite/29_atomics/atomic/lock_free_aliases.cc
! e9a010906a14cb93ae31af117674f8f0  libstdc++-v3/testsuite/29_atomics/atomic/lwg3220.cc
  b6baf771c86d380ecf1dcb4393e97d0e  libstdc++-v3/testsuite/29_atomics/atomic/nonmembers.cc
  c1f319ba7f6ad7a6795bac75046271d0  libstdc++-v3/testsuite/29_atomics/atomic/operators/51811.cc
  6afaee620f593086673491093e9e2c83  libstdc++-v3/testsuite/29_atomics/atomic/operators/56011.cc
*************** ae6700b4bf5b034e318443bed6ddfe00  libstd
*** 151246,151262 ****
  67a7c5f355d86ec391313b189990e536  libstdc++-v3/testsuite/29_atomics/atomic_integral/requirements/trivial.cc
  60777342aa8417d9342641e5ddea0ff6  libstdc++-v3/testsuite/29_atomics/atomic_integral/requirements/typedefs.cc
  8019a55f591bbf7ad697e4f3cf7d9904  libstdc++-v3/testsuite/29_atomics/atomic_integral/wait_notify.cc
! b421c365be94a2a3f541fbe950cd3734  libstdc++-v3/testsuite/29_atomics/atomic_ref/address.cc
! eb69e199f441bdc9a7da84c077514554  libstdc++-v3/testsuite/29_atomics/atomic_ref/bool.cc
  32c306fa56643321c7e2c4c7920c2990  libstdc++-v3/testsuite/29_atomics/atomic_ref/compare_exchange_padding.cc
  21da5010562f5cc292d3aee5a3420a1b  libstdc++-v3/testsuite/29_atomics/atomic_ref/cv_qual.cc
! 7f0b5a7520bbd09b134bd062103c751b  libstdc++-v3/testsuite/29_atomics/atomic_ref/deduction.cc
! fcb75cdfa4abf1637d70b47f7aa50ed2  libstdc++-v3/testsuite/29_atomics/atomic_ref/float.cc
! 971427fa0ed0f7522e3e753010651e44  libstdc++-v3/testsuite/29_atomics/atomic_ref/generic.cc
! 79076295e0d9e71ca8f2cf9568b147da  libstdc++-v3/testsuite/29_atomics/atomic_ref/integral.cc
! 3904e67bc74eab451a83025eac23137e  libstdc++-v3/testsuite/29_atomics/atomic_ref/op_support.cc
! 95df138f2d7fa7d608e1b5bb1346f51d  libstdc++-v3/testsuite/29_atomics/atomic_ref/pointer.cc
! 61c06f82e75731913258ad5e7844a5fc  libstdc++-v3/testsuite/29_atomics/atomic_ref/requirements.cc
  81faefbfbffdebfc25043fb4dcea72f1  libstdc++-v3/testsuite/29_atomics/atomic_ref/requirements_neg.cc
  053604f65e96c2cc5acb6197e87ae40a  libstdc++-v3/testsuite/29_atomics/atomic_ref/wait_notify.cc
  f81d6ad658abe8431f2e678c88663057  libstdc++-v3/testsuite/29_atomics/headers/atomic/functions_std_c++0x.cc
--- 151392,151408 ----
  67a7c5f355d86ec391313b189990e536  libstdc++-v3/testsuite/29_atomics/atomic_integral/requirements/trivial.cc
  60777342aa8417d9342641e5ddea0ff6  libstdc++-v3/testsuite/29_atomics/atomic_integral/requirements/typedefs.cc
  8019a55f591bbf7ad697e4f3cf7d9904  libstdc++-v3/testsuite/29_atomics/atomic_integral/wait_notify.cc
! 19b29f234ce63590ebcc167b26723a58  libstdc++-v3/testsuite/29_atomics/atomic_ref/address.cc
! fd7d907573ccec469e8ce190a6409dce  libstdc++-v3/testsuite/29_atomics/atomic_ref/bool.cc
  32c306fa56643321c7e2c4c7920c2990  libstdc++-v3/testsuite/29_atomics/atomic_ref/compare_exchange_padding.cc
  21da5010562f5cc292d3aee5a3420a1b  libstdc++-v3/testsuite/29_atomics/atomic_ref/cv_qual.cc
! feaeb9209013d212c6ef3d1ee935550c  libstdc++-v3/testsuite/29_atomics/atomic_ref/deduction.cc
! 05e9e7877bb6e98c3774e3439911cfd2  libstdc++-v3/testsuite/29_atomics/atomic_ref/float.cc
! 77427663ff159bbc0b3a524bd5a19924  libstdc++-v3/testsuite/29_atomics/atomic_ref/generic.cc
! 98fbfb05e818c8ff80d781d1260902bd  libstdc++-v3/testsuite/29_atomics/atomic_ref/integral.cc
! 779308cbe51f34e0b8b26f34816217fd  libstdc++-v3/testsuite/29_atomics/atomic_ref/op_support.cc
! b866ada51119240da5fefc120dbcdfa4  libstdc++-v3/testsuite/29_atomics/atomic_ref/pointer.cc
! 5abe7b68697b3f24a95603fd157f34fb  libstdc++-v3/testsuite/29_atomics/atomic_ref/requirements.cc
  81faefbfbffdebfc25043fb4dcea72f1  libstdc++-v3/testsuite/29_atomics/atomic_ref/requirements_neg.cc
  053604f65e96c2cc5acb6197e87ae40a  libstdc++-v3/testsuite/29_atomics/atomic_ref/wait_notify.cc
  f81d6ad658abe8431f2e678c88663057  libstdc++-v3/testsuite/29_atomics/headers/atomic/functions_std_c++0x.cc
*************** fe7ef9320c8af2eeb8878c51dea0e0e7  libstd
*** 152236,152242 ****
  f42739a361cd81018faeb21672e5eb44  libstdc++-v3/testsuite/experimental/type_erased_allocator/uses_allocator.cc
  579b7a11f0bb07085b1ea463f1dd9847  libstdc++-v3/testsuite/experimental/type_traits/detection.cc
  e6db62a2d0fb2c39c0b52ada6f0de939  libstdc++-v3/testsuite/experimental/type_traits/nonesuch.cc
! 1649cb3848c6f7726ff4aa0ebb9e2910  libstdc++-v3/testsuite/experimental/type_traits/value.cc
  95bf24339e4b859d432fca04f7d29d08  libstdc++-v3/testsuite/experimental/unordered_map/erasure.cc
  93da75917d9ca024d31587b3b41fa3af  libstdc++-v3/testsuite/experimental/unordered_set/erasure.cc
  c4bc859fc864d5ea373702867c4280c2  libstdc++-v3/testsuite/experimental/vector/erasure.cc
--- 152382,152388 ----
  f42739a361cd81018faeb21672e5eb44  libstdc++-v3/testsuite/experimental/type_erased_allocator/uses_allocator.cc
  579b7a11f0bb07085b1ea463f1dd9847  libstdc++-v3/testsuite/experimental/type_traits/detection.cc
  e6db62a2d0fb2c39c0b52ada6f0de939  libstdc++-v3/testsuite/experimental/type_traits/nonesuch.cc
! 46ff8de8b6383954c923d8fae17fdf03  libstdc++-v3/testsuite/experimental/type_traits/value.cc
  95bf24339e4b859d432fca04f7d29d08  libstdc++-v3/testsuite/experimental/unordered_map/erasure.cc
  93da75917d9ca024d31587b3b41fa3af  libstdc++-v3/testsuite/experimental/unordered_set/erasure.cc
  c4bc859fc864d5ea373702867c4280c2  libstdc++-v3/testsuite/experimental/vector/erasure.cc
*************** d00c0a73fcb76116eb1807c0bf0bd1aa  libstd
*** 152558,152564 ****
  53e931d667b5351e2c83d9753880deca  libstdc++-v3/testsuite/ext/unicode/charset_alias_match.cc
  21033b8a9d07ff00d54806ae81ae7b35  libstdc++-v3/testsuite/ext/unicode/grapheme_view.cc
  bb74d3db85224a67ff56d7b51626f457  libstdc++-v3/testsuite/ext/unicode/properties.cc
! 94a42dcc880878f8878caad860428611  libstdc++-v3/testsuite/ext/unicode/view.cc
  5c8f44c5c7749eb627a3594790fcb046  libstdc++-v3/testsuite/ext/verify_neg.cc
  884670ca6489dae936f917510c2e840b  libstdc++-v3/testsuite/ext/vstring/capacity/29134.cc
  b313e3bec63f292be9c30fcc7790f481  libstdc++-v3/testsuite/ext/vstring/capacity/shrink_to_fit.cc
--- 152704,152710 ----
  53e931d667b5351e2c83d9753880deca  libstdc++-v3/testsuite/ext/unicode/charset_alias_match.cc
  21033b8a9d07ff00d54806ae81ae7b35  libstdc++-v3/testsuite/ext/unicode/grapheme_view.cc
  bb74d3db85224a67ff56d7b51626f457  libstdc++-v3/testsuite/ext/unicode/properties.cc
! 6e43c0153b56669f1f81ef4a606ba4ad  libstdc++-v3/testsuite/ext/unicode/view.cc
  5c8f44c5c7749eb627a3594790fcb046  libstdc++-v3/testsuite/ext/verify_neg.cc
  884670ca6489dae936f917510c2e840b  libstdc++-v3/testsuite/ext/vstring/capacity/29134.cc
  b313e3bec63f292be9c30fcc7790f481  libstdc++-v3/testsuite/ext/vstring/capacity/shrink_to_fit.cc
*************** a6b263685ef489371877099687c56a81  libstd
*** 152605,152611 ****
  1cbf73e75666c657e4aa45990e6aeb03  libstdc++-v3/testsuite/lib/dg-options.exp
  a974a2ccf1152b37304e5b3202056ace  libstdc++-v3/testsuite/lib/gdb-test.exp
  b97a5c50e53c281c9d425f011f6fd82a  libstdc++-v3/testsuite/lib/libstdc++.exp
! c0b950f007edf56d206dbb862b081279  libstdc++-v3/testsuite/lib/prune.exp
  33e43b63e93544d8165fe54e55d40041  libstdc++-v3/testsuite/libstdc++-abi/abi.exp
  c7b1096d1cba1418bd68c171b66a64eb  libstdc++-v3/testsuite/libstdc++-dg/conformance.exp
  afa76efb2823a3336711424b15136bce  libstdc++-v3/testsuite/libstdc++-prettyprinters/48362.cc
--- 152751,152757 ----
  1cbf73e75666c657e4aa45990e6aeb03  libstdc++-v3/testsuite/lib/dg-options.exp
  a974a2ccf1152b37304e5b3202056ace  libstdc++-v3/testsuite/lib/gdb-test.exp
  b97a5c50e53c281c9d425f011f6fd82a  libstdc++-v3/testsuite/lib/libstdc++.exp
! e5e6573751fab3a5e9e9bad9586da65e  libstdc++-v3/testsuite/lib/prune.exp
  33e43b63e93544d8165fe54e55d40041  libstdc++-v3/testsuite/libstdc++-abi/abi.exp
  c7b1096d1cba1418bd68c171b66a64eb  libstdc++-v3/testsuite/libstdc++-dg/conformance.exp
  afa76efb2823a3336711424b15136bce  libstdc++-v3/testsuite/libstdc++-prettyprinters/48362.cc
diff -Nrcpad gcc-16-20251109/configure gcc-16-20251116/configure
*** gcc-16-20251109/configure	Sun Nov  9 22:32:42 2025
--- gcc-16-20251116/configure	Sun Nov 16 22:35:54 2025
*************** case "${target}" in
*** 10865,10872 ****
      md_exec_prefix=/dev/env/DJDIR/bin
      ;;
    *-*-hpux* | \
!   *-*-nto-qnx* | \
!   *-*-solaris2*)
      md_exec_prefix=/usr/ccs/bin
      ;;
  esac
--- 10865,10871 ----
      md_exec_prefix=/dev/env/DJDIR/bin
      ;;
    *-*-hpux* | \
!   *-*-nto-qnx*)
      md_exec_prefix=/usr/ccs/bin
      ;;
  esac
diff -Nrcpad gcc-16-20251109/configure.ac gcc-16-20251116/configure.ac
*** gcc-16-20251109/configure.ac	Sun Nov  9 22:32:42 2025
--- gcc-16-20251116/configure.ac	Sun Nov 16 22:32:49 2025
*************** case "${target}" in
*** 3049,3056 ****
      md_exec_prefix=/dev/env/DJDIR/bin
      ;;
    *-*-hpux* | \
!   *-*-nto-qnx* | \
!   *-*-solaris2*)
      md_exec_prefix=/usr/ccs/bin
      ;;
  esac
--- 3049,3055 ----
      md_exec_prefix=/dev/env/DJDIR/bin
      ;;
    *-*-hpux* | \
!   *-*-nto-qnx*)
      md_exec_prefix=/usr/ccs/bin
      ;;
  esac
diff -Nrcpad gcc-16-20251109/contrib/ChangeLog gcc-16-20251116/contrib/ChangeLog
*** gcc-16-20251109/contrib/ChangeLog	Sun Nov  9 22:32:42 2025
--- gcc-16-20251116/contrib/ChangeLog	Sun Nov 16 22:32:49 2025
***************
*** 1,3 ****
--- 1,19 ----
+ 2025-11-13  Filip Kastl  <fkastl@suse.cz>
+ 
+ 	* check-params-in-docs.py: Start parsing from
+ 	@itemx --param=@var{name}=@var{value} instead of
+ 	@item --param @var{name}=@var{value}.
+ 
+ 2025-11-12  Owen Avery  <powerboat9.gamer@gmail.com>
+ 
+ 	* gcc-changelog/git_commit.py (ignored_prefixes): Add
+ 	'libgrust/rustc-lib/stdarch/'.
+ 
+ 2025-11-11  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR diagnostics/115970
+ 	* sarif-listener.py: New file.
+ 
  2025-10-30  Owen Avery  <powerboat9.gamer@gmail.com>
  
  	* gcc-changelog/git_commit.py (ignored_prefixes): Add
diff -Nrcpad gcc-16-20251109/contrib/check-params-in-docs.py gcc-16-20251116/contrib/check-params-in-docs.py
*** gcc-16-20251109/contrib/check-params-in-docs.py	Sun Nov  9 22:32:42 2025
--- gcc-16-20251116/contrib/check-params-in-docs.py	Sun Nov 16 22:32:49 2025
*************** help_params = {x:y for x,y in help_param
*** 61,67 ****
  
  # Find section in .texi manual with parameters
  texi = ([x.strip() for x in open(args.texi_file).readlines()])
! texi = dropwhile(lambda x: 'item --param' not in x, texi)
  texi = takewhile(lambda x: '@node Instrumentation Options' not in x, texi)
  texi = list(texi)[1:]
  
--- 61,67 ----
  
  # Find section in .texi manual with parameters
  texi = ([x.strip() for x in open(args.texi_file).readlines()])
! texi = dropwhile(lambda x: 'itemx --param' not in x, texi)
  texi = takewhile(lambda x: '@node Instrumentation Options' not in x, texi)
  texi = list(texi)[1:]
  
diff -Nrcpad gcc-16-20251109/contrib/gcc-changelog/git_commit.py gcc-16-20251116/contrib/gcc-changelog/git_commit.py
*** gcc-16-20251109/contrib/gcc-changelog/git_commit.py	Sun Nov  9 22:32:42 2025
--- gcc-16-20251116/contrib/gcc-changelog/git_commit.py	Sun Nov 16 22:32:49 2025
*************** ignored_prefixes = {
*** 151,156 ****
--- 151,157 ----
      'libffi/',
      'libgo/',
      'libgrust/rustc-lib/core/',
+     'libgrust/rustc-lib/stdarch/',
      'libphobos/libdruntime/',
      'libphobos/src/',
      'libsanitizer/',
diff -Nrcpad gcc-16-20251109/contrib/make_sunver.pl gcc-16-20251116/contrib/make_sunver.pl
*** gcc-16-20251109/contrib/make_sunver.pl	Sun Nov  9 22:32:42 2025
--- gcc-16-20251116/contrib/make_sunver.pl	Sun Nov 16 22:32:49 2025
*************** foreach $file (@ARGV) {
*** 66,72 ****
  # columns.
  
  # The path to elfdump.
! my $elfdump = "/usr/ccs/bin/elfdump";
  
  if (-f $elfdump) {
      open ELFDUMP,$elfdump.' -s '.(join ' ',@OBJECTS).'|' or die $!;
--- 66,72 ----
  # columns.
  
  # The path to elfdump.
! my $elfdump = "/usr/bin/elfdump";
  
  if (-f $elfdump) {
      open ELFDUMP,$elfdump.' -s '.(join ' ',@OBJECTS).'|' or die $!;
diff -Nrcpad gcc-16-20251109/contrib/sarif-listener.py gcc-16-20251116/contrib/sarif-listener.py
*** gcc-16-20251109/contrib/sarif-listener.py	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/contrib/sarif-listener.py	Sun Nov 16 22:32:49 2025
***************
*** 0 ****
--- 1,41 ----
+ #!/usr/bin/env python3
+ 
+ # Example listener for SARIF output to a socket.
+ # Copyright (C) 2025 Free Software Foundation, Inc.
+ # Contributed by David Malcolm <dmalcolm@redhat.com>.
+ #
+ # This file is part of GCC.
+ #
+ # GCC is free software; you can redistribute it and/or modify it under
+ # the terms of the GNU General Public License as published by the Free
+ # Software Foundation; either version 3, or (at your option) any later
+ # version.
+ #
+ # GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+ # WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ # for more details.
+ 
+ # You should have received a copy of the GNU General Public License
+ # along with GCC; see the file COPYING3.  If not see
+ # <http://www.gnu.org/licenses/>.  */
+ 
+ from pathlib import Path
+ from socketserver import UnixStreamServer, StreamRequestHandler, ThreadingMixIn
+ import tempfile
+ 
+ class MyHandler(StreamRequestHandler):
+     def handle(self):
+         notification = self.rfile.read()
+         print(notification)
+ 
+ class ThreadedUnixStreamServer(ThreadingMixIn, UnixStreamServer):
+     pass
+ 
+ if __name__ == '__main__':
+     with tempfile.TemporaryDirectory() as tmpdir:
+         socket_path = Path(tmpdir) / 'socket'
+         with ThreadedUnixStreamServer(socket_path.as_posix(),
+                                       MyHandler) as server:
+             print('listening on socket: %s' % socket_path)
+             server.serve_forever()
diff -Nrcpad gcc-16-20251109/gcc/ChangeLog gcc-16-20251116/gcc/ChangeLog
*** gcc-16-20251109/gcc/ChangeLog	Sun Nov  9 22:32:42 2025
--- gcc-16-20251116/gcc/ChangeLog	Sun Nov 16 22:32:50 2025
***************
*** 1,3 ****
--- 1,985 ----
+ 2025-11-15  Jason Xu  <bravejason@outlook.com>
+ 
+ 	* config.gcc (aarch64-*-mingw*): Set use_gcc_stdint to wrap.
+ 
+ 2025-11-15  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	* config/riscv/riscv.cc (risc_legitimize_move): Use convert_modes
+ 	rather than gen_extend_insn for most cases.
+ 	* config/riscv/riscv.md (addv<mode>4): Likewise.
+ 	(uaddv<mode>4, subv<mode>4, usubv<mode>4): Likewise.
+ 	(mulv<mode>4, umulv<mode>4): Likewise.
+ 	* config/riscv/sync.md (atomic_compare_and_swap<mode>): Likewise.
+ 
+ 2025-11-15  Karl Meakin  <karl.meakin@arm.com>
+ 
+ 	* config/aarch64/aarch64.md (mov<GPF:mode><GPI:mode>cc): Delete.
+ 
+ 2025-11-15  Karl Meakin  <karl.meakin@arm.com>
+ 
+ 	* config/aarch64/aarch64.md(mov<ALLI_GPF:mode>cc): Use new predicate.
+ 	(mov<GPF:mode><GPI:mode>cc): Likewise.
+ 	(<neg_not_op><mode>cc): Likewise.
+ 	* config/aarch64/predicates.md (aarch64_comparison_operator_cc):
+ 	New predicate.
+ 
+ 2025-11-15  Karl Meakin  <karl.meakin@arm.com>
+ 
+ 	* config/aarch64/aarch64.md (mov<ALLI_GPF:mode>): Delete
+ 	redundant check.
+ 	(mov<GPF:mode><GPI:mode>cc): Likewise.
+ 	(<neg_not_op><mode>cc): Likewise.
+ 
+ 2025-11-15  Karl Meakin  <karl.meakin@arm.com>
+ 
+ 	* config/aarch64/aarch64.md (mov<ALLI>cc): Merge with ...
+ 	(mov<ALLI>cc): ... this.
+ 	* config/aarch64/iterators.md(ALLI_GPF): New mode iterator.
+ 
+ 2025-11-15  Karl Meakin  <karl.meakin@arm.com>
+ 
+ 	* config/aarch64/aarch64.md(mov<GPF>cc): Accept MODE_CC
+ 	conditions directly; reject QI/HImode conditions.
+ 
+ 2025-11-14  Kuan-Lin Chen  <rufus@andestech.com>
+ 
+ 	* config/riscv/riscv.cc (andes_25_tune_info): Add prefer-agnostic.
+ 
+ 2025-11-14  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* config/arm/arm-mve-builtins-base.cc (enum which_scalar_shift):
+ 	Add ss_SQRSHR, ss_SQSHL, ss_SRSHR, ss_UQRSHL, ss_UQSHL, and
+ 	ss_URSHR.
+ 	(mve_function_scalar_shift): Add support for ss_SQRSHR, ss_SQSHL,
+ 	ss_SRSHR, ss_UQRSHL, ss_UQSHL, and ss_URSHR.
+ 	(sqrshr, sqshl, srshr, uqrshl, uqshl, urshr): New.
+ 	* config/arm/arm-mve-builtins-base.def (sqrshr, sqshl, srshr)
+ 	(uqrshl, uqshl, urshr): New.
+ 	* config/arm/arm-mve-builtins-base.h (sqrshr, sqshl, srshr)
+ 	(uqrshl, uqshl, urshr): New.
+ 	* config/arm/arm-mve-builtins-shapes.cc (scalar_s32_shift): New.
+ 	(scalar_s32_shift_imm): New.
+ 	(scalar_u32_shift): New.
+ 	(scalar_u32_shift_imm): New.
+ 	* config/arm/arm-mve-builtins-shapes.h (scalar_s32_shift): New.
+ 	(scalar_s32_shift_imm): New.
+ 	(scalar_u32_shift): New.
+ 	(scalar_u32_shift_imm): New.
+ 	* config/arm/arm_mve.h (sqrshr): Delete.
+ 	(sqshl): Delete.
+ 	(srshr): Delete.
+ 	(uqrshl): Delete.
+ 	(uqshl): Delete.
+ 	(urshr): Delete.
+ 	(__arm_uqrshl): Delete.
+ 	(__arm_sqrshr): Delete.
+ 	(__arm_uqshl): Delete.
+ 	(__arm_urshr): Delete.
+ 	(__arm_sqshl): Delete.
+ 	(__arm_srshr): Delete.
+ 	* config/arm/mve.md (mve_sqshl_si, mve_srshr_si): Fix operand 1
+ 	mode.
+ 
+ 2025-11-14  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* config/arm/arm-mve-builtins-base.cc (enum which_scalar_shift):
+ 	Add ss_SQSHLL, ss_SRSHRL, ss_UQSHLL, ss_URSHRL.
+ 	(mve_function_scalar_shift): Add support for ss_SQSHLL, ss_SRSHRL,
+ 	ss_UQSHLL, ss_URSHRL.
+ 	* config/arm/arm-mve-builtins-base.def (sqshll, srshrl, uqshll)
+ 	(urshrl): New.
+ 	* config/arm/arm-mve-builtins-base.h (sqshll, srshrl, uqshll)
+ 	(urshrl): New.
+ 	* config/arm/arm-mve-builtins-shapes.cc (scalar_s64_shift_imm)
+ 	(scalar_u64_shift_imm): New.
+ 	* config/arm/arm-mve-builtins-shapes.h (scalar_s64_shift_imm)
+ 	(scalar_u64_shift_imm): New.
+ 	* config/arm/arm_mve.h (sqshll): Delete.
+ 	(srshrl): Delete.
+ 	(uqshll): Delete.
+ 	(urshrl): Delete.
+ 	(__arm_uqshll): Delete.
+ 	(__arm_urshrl): Delete.
+ 	(__arm_srshrl): Delete.
+ 	(__arm_sqshll): Delete.
+ 
+ 2025-11-14  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* config/arm/arm-mve-builtins-base.cc (enum which_scalar_shift):
+ 	Add ss_SQRSHRL, ss_SQRSHRL_SAT48.
+ 	(mve_function_scalar_shift): Add support for ss_SQRSHRL,
+ 	ss_SQRSHRL_SAT48.
+ 	(sqrshrl, sqrshrl_sat48): New.
+ 	* config/arm/arm-mve-builtins-base.def (sqrshrl, sqrshrl_sat48): New.
+ 	* config/arm/arm-mve-builtins-base.h (sqrshrl, sqrshrl_sat48): New.
+ 	* config/arm/arm_mve.h (sqrshrl): Delete.
+ 	(sqrshrl_sat48): Delete.
+ 	(__arm_sqrshrl): Delete.
+ 	(__arm_sqrshrl_sat48): Delete.
+ 	* config/arm/mve.md (mve_sqrshrl_sat<supf>_di): Add '@' prefix.
+ 
+ 2025-11-14  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* config/arm/arm-mve-builtins-base.cc (enum which_scalar_shift):
+ 	Add ss_UQRSHLL, ss_UQRSHLL_SAT48.
+ 	(mve_function_scalar_shift): Add support for ss_UQRSHLL,
+ 	ss_UQRSHLL_SAT48.
+ 	* config/arm/arm-mve-builtins-base.def (uqrshll, uqrshll_sat48):
+ 	New.
+ 	* config/arm/arm-mve-builtins-base.h (uqrshll, uqrshll_sat48):
+ 	New.
+ 	* config/arm/arm_mve.h (uqrshll): Delete.
+ 	(uqrshll_sat48): Delete.
+ 	(__arm_uqrshll): Delete.
+ 	(__arm_uqrshll_sat48): Delete.
+ 	* config/arm/mve.md (mve_uqrshll_sat<supf>_di): Add '@' prefix.
+ 
+ 2025-11-14  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* config/arm/arm-mve-builtins-base.cc (class mve_function_vpnot): New.
+ 	(vpnot): New.
+ 	* config/arm/arm-mve-builtins-base.def (vpnot): New.
+ 	* config/arm/arm-mve-builtins-base.h (vpnot): New.
+ 	* config/arm/arm-mve-builtins-shapes.cc (struct vpnot): New.
+ 	* config/arm/arm-mve-builtins-shapes.h (vpnot): New.
+ 	* config/arm/arm_mve.h (vpnot): Delete.
+ 	(__arm_vpnot): Delete.
+ 
+ 2025-11-14  Filip Kastl  <fkastl@suse.cz>
+ 
+ 	* doc/invoke.texi: Remove mention of switch-lower-slow-alg-max-cases.
+ 	* params.opt: Remove switch-lower-slow-alg-max-cases.
+ 
+ 2025-11-14  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md (*sub<mode>_3):
+ 	Remove 'i' from operand 0 constraint.
+ 
+ 2025-11-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR ipa/122663
+ 	* ipa-param-manipulation.cc (purge_all_uses): Collect
+ 	stmts to remove and process that list in reverse.
+ 
+ 2025-11-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122573
+ 	* tree-vect-slp.cc (vect_build_slp_tree_1): Support
+ 	groups of invariant loads.
+ 	(vect_build_slp_tree_2): Likewise.
+ 	(vect_transform_slp_perm_load_1): Likewise.
+ 	* tree-vect-stmts.cc (vectorizable_load): Handle non-splat
+ 	SLP for invaraint loads.
+ 
+ 2025-11-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122680
+ 	* tree-vect-stmts.cc (vectorizable_conversion): Avoid range
+ 	queries during transform.
+ 
+ 2025-11-14  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	PR target/121458
+ 	PR target/121457
+ 	* configure.ac: Fix typos.
+ 	<*-*-solaris2*>: Require GNU ld 2.30.
+ 	(comdat_group) <*-*-solaris2.1[1-9]*>: Always set to yes.
+ 	(ld_ix86_gld_32_opt): Only use -melf_i386_sol2 for Solaris target.
+ 	(ld_ix86_gld_64_opt): Likewise with -melf_x86_64_sol.
+ 	(gcc_cv_ld_eh_frame_hdr) <*-*-solaris2*>: Likewise.
+ 	(gcc_cv_ld_pie) <*-*-solaris2*>: Remove special cases.
+ 	(gcc_cv_ld_compress_debug) <*-*-solaris2*>: Remove guard.
+ 	(gcc_cv_ld_as_needed): Simplify guard.
+ 	(gcc_cv_ld_sol2_emulation): Remove.
+ 	(gcc_cv_solaris_crts): Remove.
+ 	* configure: Regenerate.
+ 	* config.in: Regenerate.
+ 	* config/sol2.h (STARTFILE_CRTBEGIN_SPEC): Remove !HAVE_LD_PIE
+ 	support.
+ 	(ENDFILE_CRTEND_SPEC): Likewise.
+ 	(LD_PIE_SPEC): Likewise.
+ 	[USE_GLD] (LINK_EH_SPEC): Set unconditionally.
+ 	* config/i386/sol2.h [USE_GLD]: Remove !HAVE_LD_SOL2_EMULATION
+ 	support.
+ 	* config/sparc/sol2.h: Likewise.
+ 	* doc/install.texi (Specific, *-*-solaris2*): Update bundled gcc
+ 	versions.
+ 	Raise required binutils version.
+ 	Remove binutils 2.44 caveat.
+ 
+ 2025-11-14  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	PR target/122216
+ 	* config/arm/arm-mve-builtins-base.cc (enum which_scalar_shift): New.
+ 	(mve_function_scalar_shift): New.
+ 	(asrl, lsll): New.
+ 	* config/arm/arm-mve-builtins-base.def (asrl, lsll): New.
+ 	* config/arm/arm-mve-builtins-base.h (asrl, lsll): New.
+ 	* config/arm/arm_mve.h (asrl): Delete.
+ 	(lsll): Delete.
+ 	(__arm_asrl): Delete.
+ 	(__arm_lsll): Delete.
+ 
+ 2025-11-14  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	PR target/122216
+ 	* config/arm/arm-mve-builtins-shapes.cc (scalar_s64_shift): New.
+ 	(scalar_u64_shift): New.
+ 	* config/arm/arm-mve-builtins-shapes.h: Likewise.
+ 
+ 2025-11-14  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	PR target/122216
+ 	* config/arm/arm.md (ashldi3, ashrdi3): Force shift amount into
+ 	QImode.
+ 	* config/arm/constraints.md: Fix comment, Pg is valid in Thumb-2
+ 	state only.
+ 	* config/arm/mve.md (mve_asrl): Handle various shift amount ranges.
+ 	(mve_asrl_imm, mve_asrl_internal): New patterns.
+ 	(mve_lsll): Handle various shift amount ranges.
+ 	(mve_lsll_imm, mve_lsll_internal): New patterns.
+ 
+ 2025-11-14  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	PR target/122216
+ 	* config/arm/thumb2.md (thumb2_asrl, thumb2_lsll, thumb2_lsrl):
+ 	Move to ...
+ 	* config/arm/mve.md (mve_asrl, mve_lsll, mve_lsrl): ... here. Use
+ 	match_operand instead of match_dup.
+ 	* config/arm/arm.md (ashldi3, ashrdi3, lshrdi3): Remove useless
+ 	copy. Update for new prototype.
+ 
+ 2025-11-14  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	* configure: Regenerate.
+ 
+ 2025-11-14  zhaozhou  <zhaozhou@loongson.cn>
+ 
+ 	* config/loongarch/lasx.md (lasx_xvbsrl_d_f): New template.
+ 	* config/loongarch/loongarch.cc (emit_reduc_half): Replace insn.
+ 
+ 2025-11-14  zhaozhou  <zhaozhou@loongson.cn>
+ 
+ 	* config/loongarch/predicates.md: Update ops.
+ 
+ 2025-11-14  zhaozhou  <zhaozhou@loongson.cn>
+ 
+ 	* config.gcc: Add target_gtfiles.
+ 	* config/loongarch/loongarch-builtins.cc: Add header file.
+ 
+ 2025-11-13  Alexandre Oliva  <oliva@adacore.com>
+ 	    Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* config/vxworks/base/b_NULL.h: New.
+ 	* config.gcc (extra_headers) <*-*-vxworks*>: Add it.
+ 	* Makefile.in (stmp-int-hdrs): Support /././ markers in USER_H
+ 	to mark the beginning of the install name.  Document.
+ 	* doc/sourcebuild.texi (Headers): Document /././ marker.
+ 
+ 2025-11-13  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* tree-cfgcleanup.cc (tree_forwarder_block_p): Remove must argument.
+ 	(remove_forwarder_block): Add can_split
+ 	argument. Handle the splitting case (iff phis in bb).
+ 	(cleanup_tree_cfg_bb): Update argument to tree_forwarder_block_p.
+ 	(remove_forwarder_block_with_phi): Remove.
+ 	(pass_merge_phi::execute): Update argument to tree_forwarder_block_p
+ 	and call remove_forwarder_block instead of remove_forwarder_block_with_phi.
+ 
+ 2025-11-13  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/122493
+ 	* tree-cfgcleanup.cc (tree_forwarder_block_p): Change bool argument
+ 	to a must have phi and allow phis if it is false.
+ 	(remove_forwarder_block): Add support for merging of forwarder blocks
+ 	with phis.
+ 
+ 2025-11-13  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* tree-cfg.cc (copy_phi_arg_into_existing_phi): Use the original location
+ 	if the mapped location is unknown.
+ 
+ 2025-11-13  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* tree-cfg.cc (copy_phi_arg_into_existing_phi): New use_map argument.
+ 	* tree-cfg.h (copy_phi_arg_into_existing_phi): Update declaration.
+ 	* tree-cfgcleanup.cc (remove_forwarder_block_with_phi): Use
+ 	copy_phi_arg_into_existing_phi instead of inlining it.
+ 
+ 2025-11-13  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* tree-cfgcleanup.cc (remove_forwarder_block): Move
+ 	variable declaration ei into for loop.
+ 
+ 2025-11-13  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* tree-cfgcleanup.cc (remove_forwarder_block_with_phi): Use
+ 	edge iterator instead of while loop.
+ 
+ 2025-11-13  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* tree-cfgcleanup.cc (remove_forwarder_block): Remove check
+ 	on the available dominator information.
+ 
+ 2025-11-13  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* tree-cfgcleanup.cc (tree_forwarder_block_p): Reject bb which has a single
+ 	predecessor which has a single successor.
+ 
+ 2025-11-13  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* tree-cfgcleanup.cc (pass_merge_phi::execute): Move
+ 	check for abnormal or no phis to remove_forwarder_block_with_phi
+ 	and the check on dominated to tree_forwarder_block_p.
+ 	(remove_forwarder_block_with_phi): here.
+ 
+ 2025-11-13  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* tree-cfgcleanup.cc (remove_forwarder_block_with_phi): Remove check on non-local label.
+ 	(remove_forwarder_block): Remove check on non-label/eh landing pad.
+ 	(tree_forwarder_block_p): Add check on lable for an eh landing pad.
+ 
+ 2025-11-13  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* tree-cfgcleanup.cc (remove_forwarder_block): Remove check for infinite loop.
+ 	(remove_forwarder_block_with_phi): Likewise. Also remove check for loop header.
+ 
+ 2025-11-13  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* tree-cfgcleanup.cc (pass_merge_phi::execute): Remove worklist.
+ 
+ 2025-11-13  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	* ext-dce.cc (ext_dce_try_optimize_rshift): New function to optimize a
+ 	shift pair implementing a zero/sign extension.
+ 	(ext_dce_try_optimize_extension): Renamed from
+ 	ext_dce_try_optimize_insn.
+ 	(ext_dce_process_uses): Handle shift pairs implementing extensions.
+ 
+ 2025-11-13  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/122637
+ 	* tree-scalar-evolution.cc (final_value_replacement_loop): Fix order
+ 	of gimplification and constant prop.
+ 
+ 2025-11-13  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	PR rtl-optimization/122627
+ 	* lra-constraints.cc (update_equiv): Remove patch from last week
+ 	related to pr122321.
+ 	(lra_constraints): Expand the equivalence array after eliminations
+ 	are complete.
+ 
+ 2025-11-13  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	* configure.ac (HAVE_AS_16B_ATOMIC): Define if the assembler
+ 	supports LSX and sc.q.
+ 	* configure: Regenerate.
+ 	* config.in: Regenerate.
+ 	* config/loongarch/loongarch-opts.h (HAVE_AS_16B_ATOMIC):
+ 	Defined to 0 if undefined yet.
+ 	* config/loongarch/linux.h (HAVE_IFUNC_FOR_LIBATOMIC_16B):
+ 	Define as HAVE_AS_16B_ATOMIC && OPTION_GLIBC.
+ 	* config/loongarch/loongarch-protos.h
+ 	(loongarch_16b_atomic_lock_free_p): New prototype.
+ 	* config/loongarch/loongarch.cc
+ 	(loongarch_16b_atomic_lock_free_p): Implement.
+ 	* config/loongarch/sync.md (atomic_storeti_lsx): Require
+ 	loongarch_16b_atomic_lock_free_p.
+ 	(atomic_storeti): Likewise.
+ 	(atomic_exchangeti_scq): Likewise.
+ 	(atomic_exchangeti): Likewise.
+ 	(atomic_compare_and_swapti): Likewise.
+ 	(atomic_fetch_<amop_ti_fetch>ti_scq): Likewise.
+ 	(atomic_fetch_<amop_ti_fetch>ti): Likewise.
+ 	(ALL_SC): Likewise for TImode.
+ 	(atomic_storeti_scq): Remove.
+ 
+ 2025-11-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	* config/i386/i386-features.cc (pass_x86_cse::x86_cse): Delete
+ 	loads.
+ 
+ 2025-11-13  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	PR other/122638
+ 	* doc/install.texi (Configuration, --enable-x86-64-mfentry): Fix
+ 	typo.
+ 
+ 2025-11-13  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* config/i386/i386.md (*ior<mode>_ccz_1): New define_insn.
+ 
+ 2025-11-13  Alice Carlotti  <alice.carlotti@arm.com>
+ 
+ 	* config/aarch64/driver-aarch64.cc
+ 	(host_detect_local_cpu): Extend feature string syntax.
+ 
+ 2025-11-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-dce.cc (simple_dce_from_worklist): For calls
+ 	with side-effects remove their LHS.
+ 
+ 2025-11-13  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* config/aarch64/aarch64-simd.md (*eor3q<mode>4): New insn to be used by
+ 	combine after reload to optimize any grouping of eor's that are using FP
+ 	registers for scalar modes.
+ 
+ 2025-11-13  Kuan-Lin Chen  <rufus@andestech.com>
+ 
+ 	* config/riscv/riscv-target-attr.cc (riscv_process_target_str): Clean
+ 	the final byte of str_to_check.
+ 
+ 2025-11-12  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR diagnostics/115970
+ 	* diagnostics/sarif-sink.cc (maybe_open_sarif_sink_for_socket):
+ 	Add "%m" to error messages, so that we print the string form of
+ 	errno.
+ 
+ 2025-11-12  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* diagnostics/sarif-sink.cc (class unique_fd): New.
+ 	(sarif_socket_sink::sarif_socket_sink): Convert "fd" arg and m_fd
+ 	from int to unique_fd.
+ 	(~sarif_socket_sink): Drop.
+ 	(sarif_socket_sink::dump_kind): Update for m_fd becoming a
+ 	unique_fd.
+ 	(sarif_socket_sink::m_fd): Convert from "int" to "unique_fd".
+ 	(maybe_open_sarif_sink_for_socket): Likewise for "sfd".
+ 
+ 2025-11-12  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	* config/aarch64/aarch64-cores.def (AARCH64_CORE): Add ampere1c.
+ 	* config/aarch64/aarch64-tune.md: Regenerate.
+ 	* doc/invoke.texi: Document the above.
+ 
+ 2025-11-12  Stefan Schulze Frielinghaus  <stefansf@gcc.gnu.org>
+ 
+ 	* config/i386/i386.opt.urls: Regenerate.
+ 	* config/s390/s390.opt.urls: Ditto.
+ 	* doc/invoke.texi: Add documentation for
+ 	-mstack-protector-guard= and -mstack-protector-guard-record.
+ 
+ 2025-11-12  Arsen Arsenović  <arsen@aarsen.me>
+ 
+ 	* doc/invoke.texi (Diagnostic Message Formatting Options): Add
+ 	index entries for SARIF and HTML output formats.
+ 
+ 2025-11-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122653
+ 	* tree-scalar-evolution.cc (interpret_rhs_expr): Handle
+ 	POINTER_DIFF_EXPR.
+ 
+ 2025-11-12  Christophe Lyon  <christophe.lyon@linaro.org>
+ 	    Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/122175
+ 	* config/arm/iterators.md (asm_const_size): New mode attr.
+ 	* config/arm/mve.md (@mve_<mve_insn>q_n_<supf><mode>): Use it.
+ 
+ 2025-11-12  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	PR target/122539
+ 	* config/arm/arm.cc (comp_not_to_clear_mask_str_un): Skip partial
+ 	register clearing logic for FP_REGS.
+ 	(compute_not_to_clear_mask): Likewise.
+ 
+ 2025-11-12  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	PR target/122539
+ 	* config/arm/arm.cc (comp_not_to_clear_mask_str_un): Update
+ 	not_to_clear_reg_mask for union members.
+ 
+ 2025-11-12  Stefan Schulze Frielinghaus  <stefansf@gcc.gnu.org>
+ 
+ 	* config/s390/s390-opts.h (enum stack_protector_guard): Define
+ 	SP_TLS and SP_GLOBAL.
+ 	* config/s390/s390.h (TARGET_SP_GLOBAL_GUARD): Define predicate.
+ 	(TARGET_SP_TLS_GUARD): Define predicate.
+ 	* config/s390/s390.md (stack_protect_global_guard_addr<mode>):
+ 	New insn.
+ 	(stack_protect_set): Also deal with a global guard.
+ 	(stack_protect_test): Also deal with a global guard.
+ 	* config/s390/s390.opt (-mstack-protector-guard={global,tls}):
+ 	New option.
+ 	(-mstack-protector-guard-record) New option.
+ 
+ 2025-11-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122647
+ 	* tree-vect-stmts.cc (vectorizable_conversion): Fix guard on
+ 	bool to non-bool conversion.
+ 	* tree-vect-patterns.cc (vect_recog_bool_pattern): Also handle
+ 	FLOAT_EXPR from bool.
+ 
+ 2025-11-12  Kuan-Lin Chen  <rufus@andestech.com>
+ 
+ 	* config/riscv/andes-25-series.md: New file.
+ 	* config/riscv/riscv-cores.def (RISCV_TUNE): Add andes-25-series.
+ 	(RISCV_CORE): Add Andes 25-series cpu list.
+ 	* config/riscv/riscv-opts.h
+ 	(enum riscv_microarchitecture_type): Add andes_25_series_.
+ 	* config/riscv/riscv.cc: Add andes_25_tune_info.
+ 	* config/riscv/riscv.md: Add andes_25.
+ 	* doc/riscv-mcpu.texi: Regenerated for Andes cpu list.
+ 	* doc/riscv-mtune.texi: Regenerated for andes-25-series.
+ 
+ 2025-11-11  Andrew Stubbs  <ams@baylibre.com>
+ 
+ 	* config/gcn/mkoffload.cc (process_asm): Replace "configure_stack_size"
+ 	constructor with a new regular function, "mkoffload_setup".
+ 	(process_obj): Call mkoffload_setup from the "init" constructor.
+ 
+ 2025-11-11  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR diagnostics/115970
+ 	* diagnostics/sarif-sink.cc: Include <sys/un.h> and <sys/socket.h>.
+ 	(sarif_builder::end_group): Update comment.
+ 	(sarif_sink::on_end_group): Drop "final".
+ 	(class sarif_socket_sink): New subclass.
+ 	(maybe_open_sarif_sink_for_socket): New function.
+ 	* diagnostics/sarif-sink.h: (maybe_open_sarif_sink_for_socket):
+ 	New decl.
+ 	* doc/invoke.texi (EXPERIMENTAL_SARIF_SOCKET): Document new
+ 	environment variable.
+ 	* toplev.cc: Define INCLUDE_VECTOR. Add include of
+ 	"diagnostics/sarif-sink.h".
+ 	(toplev::main): Call
+ 	diagnostics::maybe_open_sarif_sink_for_socket.
+ 
+ 2025-11-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122587
+ 	* tree-vectorizer.cc (pass_vectorize::execute): Enable
+ 	ranger around analysis and code generation.
+ 
+ 2025-11-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-loop-niter.cc (simplify_using_initial_conditions):
+ 	Use the active ranger to simplify boolean expressions.
+ 
+ 2025-11-11  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	* config/riscv/crypto.md (packf splitters): Variant with
+ 	operands reversed.  Add variants with the ashift/sign extend
+ 	exchanged as well.
+ 
+ 2025-11-11  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	* config/riscv/riscv.cc (riscv_extend_to_xmode_reg): Simplify
+ 	by using convert_modes + force_reg.
+ 
+ 2025-11-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-range.cc (gimple_ranger::range_on_edge): Pass
+ 	the edge as 'edge' to get_tree_range.
+ 	(dom_ranger::range_on_edge): Likewise.
+ 
+ 2025-11-11  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* value-query.cc (range_query::invoke_range_of_expr): New
+ 	edge argument.  If set invoke range_on_edge.
+ 	(range_query::get_tree_range): Likewise and adjust.
+ 	* value-query.h (range_query::invoke_range_of_expr): New
+ 	edge argument.
+ 	(range_query::get_tree_range): Likewise.
+ 
+ 2025-11-11  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* match.pd: New patterns.
+ 
+ 2025-11-11  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* doc/extend.texi: Add description for LoongArch function
+ 	attributes.
+ 
+ 2025-11-11  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* config/loongarch/loongarch.cc (loongarch_can_inline_p):
+ 	Do not inline when callee is versioned but caller is not.
+ 
+ 2025-11-11  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* config/loongarch/loongarch.cc
+ 	(loongarch_option_same_function_versions): Compare the target
+ 	attributes in two functions to determine which function’s
+ 	features get higher priority.
+ 	(TARGET_OPTION_SAME_FUNCTION_VERSIONS): Define.
+ 
+ 2025-11-11  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* config/loongarch/loongarch-protos.h
+ 	(loongarch_parse_fmv_features): Modify the type of parameter.
+ 	(loongarch_compare_version_priority): Function declaration.
+ 	* config/loongarch/loongarch-target-attr.cc
+ 	(enum features_prio): Define LA_PRIO_MAX to indicate the
+ 	highest priority of supported attributes.
+ 	(loongarch_parse_fmv_features): Added handling of setting
+ 	priority in attribute string.
+ 	(loongarch_compare_version_priority): Likewise.
+ 	* config/loongarch/loongarch.cc
+ 	(loongarch_process_target_version_attr): Likewise.
+ 	(get_feature_mask_for_version): Likewise.
+ 	(loongarch_compare_version_priority): Delete.
+ 
+ 2025-11-11  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* config/loongarch/loongarch.cc
+ 	(loongarch_compare_version_priority): Returns true if DECL1
+ 	and DECL2 are versions of the same function.
+ 	(TARGET_COMPARE_VERSION_PRIORITY): Define.
+ 
+ 2025-11-11  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* config/loongarch/genopts/gen-evolution.awk:
+ 	* config/loongarch/loongarch-evol-attr.def: Regenerate.
+ 	* config/loongarch/loongarch-protos.h
+ 	(loongarch_parse_fmv_features): Function declaration.
+ 	(get_feature_mask_for_version): Likewise.
+ 	* config/loongarch/loongarch-target-attr.cc
+ 	(enum features_prio): Defining the priority of features.
+ 	(struct loongarch_attribute_info): Add members about
+ 	features.
+ 	(LARCH_ATTR_MASK): Likewise.
+ 	(LARCH_ATTR_ENUM): Likewise.
+ 	(LARCH_ATTR_BOOL): Likewise.
+ 	(loongarch_parse_fmv_features): Parse a function
+ 	multiversioning feature string STR.
+ 	* config/loongarch/loongarch.cc
+ 	(get_suffixed_assembler_name): Return an identifier for the
+ 	base assembler name of a versioned function.
+ 	(get_feature_mask_for_version): Get the mask and priority of
+ 	features.
+ 	(add_condition_to_bb): Insert judgment statements for different
+ 	features functions.
+ 	(dispatch_function_versions): Generates the dispatch function for
+ 	multi-versioned functions.
+ 	(make_resolver_func): Make the resolver function decl to dispatch
+ 	the versions of a multi-versioned function.
+ 	(loongarch_generate_version_dispatcher_body): Generate the
+ 	dispatcher logic to invoke the right function version at run-time
+ 	for a given set of function versions.
+ 	(TARGET_GENERATE_VERSION_DISPATCHER_BODY): Define.
+ 	* common/config/loongarch/cpu-features.h: New file.
+ 
+ 2025-11-11  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* config/loongarch/loongarch.cc (INCLUDE_STRING): Include.
+ 	(loongarch_mangle_decl_assembler_name): New function.
+ 	(TARGET_MANGLE_DECL_ASSEMBLER_NAME): Define.
+ 
+ 2025-11-11  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* config/loongarch/loongarch.cc
+ 	(loongarch_get_function_versions_dispatcher): New function.
+ 	(TARGET_GET_FUNCTION_VERSIONS_DISPATCHER): Define.
+ 
+ 2025-11-11  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* config/loongarch/loongarch.cc
+ 	(loongarch_process_target_version_attr): New function.
+ 	(loongarch_option_valid_version_attribute_p): New function.
+ 	(TARGET_OPTION_VALID_VERSION_ATTRIBUTE_P): Define.
+ 	* config/loongarch/loongarch.h
+ 	(TARGET_HAS_FMV_TARGET_ATTRIBUTE): Define it to 0.
+ 
+ 2025-11-11  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* config/loongarch/genopts/gen-evolution.awk: Output the
+ 	info needed for handling evolution features when parsing
+ 	the target pragma and attribute.
+ 	* config/loongarch/genopts/genstr.sh: Add support for
+ 	generating *.def files.
+ 	* config/loongarch/loongarch-target-attr.cc
+ 	(struct loongarch_attribute_info): Add structure member
+ 	record option mask.
+ 	(LARCH_ATTR_MASK): New macro.
+ 	(LARCH_ATTR_ENUM): Likewise.
+ 	(LARCH_ATTR_BOOL): Likewise.
+ 	(loongarch_handle_option): Support for new options.
+ 	(loongarch_process_one_target_attr): Added support for
+ 	the la64v1.1 extended instruction set.
+ 	* config/loongarch/t-loongarch: Generate loongarch-evol-attr.def.
+ 	* doc/extend.texi: Add new attribute description information.
+ 	* config/loongarch/loongarch-evol-attr.def: Generate.
+ 
+ 2025-11-11  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* config/loongarch/loongarch-target-attr.cc
+ 	(loongarch_process_one_target_attr): Fix ICE.
+ 
+ 2025-11-11  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/122629
+ 	* tree-if-conv.cc (factor_out_operators): Reject
+ 	BIT_FIELD_REF and BIT_INSERT_EXPR if operand other
+ 	than 0 is different.
+ 
+ 2025-11-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR lto/122620
+ 	* gimplify-me.cc (gimple_regimplify_operands): Don't try to regimplify
+ 	TREE_CLOBBER on rhs of gimple_clobber_p if it has gimple_reg_type.
+ 
+ 2025-11-11  Hu, Lin1  <lin1.hu@intel.com>
+ 
+ 	PR target/122446
+ 	* config/i386/amxavx512intrin.h (_tile_cvtrowps2bf16hi_internal):
+ 	Input register name by inline asm %c[...], and remove %% before tmm
+ 	from intel side.
+ 	(_tile_cvtrowps2bf16li_internal): Ditto.
+ 	* config/i386/amxbf16intrin.h (_tile_dpbf16ps_internal): Ditto
+ 	* config/i386/amxcomplexintrin.h (_tile_cmmimfp16ps_internal): Ditto
+ 	(_tile_cmmrlfp16ps_internal): Ditto
+ 	(_tile_cmmimfp16ps): Ditto
+ 	(_tile_cmmrlfp16ps): Ditto
+ 	* config/i386/amxfp16intrin.h (_tile_dpfp16ps_internal): Ditto
+ 	(_tile_dpfp16ps): Ditto
+ 	* config/i386/amxfp8intrin.h (_tile_dpbf8ps_internal): Ditto
+ 	(_tile_dpbhf8ps_internal): Ditto
+ 	(_tile_dphbf8ps_internal): Ditto
+ 	(_tile_dphf8ps_internal): Ditto
+ 	(_tile_dpbf8ps): Ditto
+ 	(_tile_dpbhf8ps): Ditto
+ 	(_tile_dphbf8ps): Ditto
+ 	(_tile_dphf8ps): Ditto
+ 	* config/i386/amxint8intrin.h (_tile_int8_dp_internal): Ditto
+ 	* config/i386/amxmovrsintrin.h (_tile_loaddrs_internal): Ditto
+ 	(_tile_loaddrst1_internal): Ditto
+ 	(_tile_loaddrs): Ditto
+ 	(_tile_loaddrst1): Ditto
+ 	* config/i386/amxtf32intrin.h (_tile_mmultf32ps_internal): Ditto
+ 	* config/i386/amxtileintrin.h (_tile_loadd): Ditto
+ 	(_tile_loadd_internal): Ditto
+ 	(_tile_stream_loadd): Ditto
+ 	(_tile_stream_loadd_internal): Ditto
+ 	(_tile_stored): Ditto
+ 	(_tile_stored_internal): Ditto
+ 	(_tile_zero): Ditto
+ 	(_tile_zero_internal): Ditto
+ 
+ 2025-11-10  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	PR other/122243
+ 	* common.opt.urls: Regenerated.
+ 	* config/dragonfly.opt.urls: Regenerated.
+ 	* config/freebsd.opt.urls: Regenerated.
+ 	* config/gcn/gcn.opt.urls: Regenerated.
+ 	* config/gnu-user.opt.urls: Regenerated.
+ 
+ 2025-11-10  Sam James  <sam@gentoo.org>
+ 
+ 	* acinclude.m4: Quote "$gcc_cv_nm" and friends.
+ 	* configure.ac: Ditto.
+ 	* configure: Regenerate.
+ 
+ 2025-11-10  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR middle-end/122605
+ 	* builtins.cc (expand_ifn_atomic_bit_test_and): Split out the call to
+ 	build_call_nary into two different statements.
+ 	(expand_ifn_atomic_op_fetch_cmp_0): Likewise.
+ 
+ 2025-11-10  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	PR other/122243
+ 	* common.opt: Clean up comments/documentation for -fident.
+ 	* doc/invoke.texi: Move -Qy/-Qn documentation from System V options
+ 	and combine with -fident/-fno-ident entry.
+ 
+ 2025-11-10  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	PR other/122243
+ 	* common.opt: Add comments/documentation for -N, -Q, -S, -T,
+ 	-Tbss, -Tdata, -Ttext, -Z, -n, -Q, -s, -t, -z.
+ 	* doc/invoke.texi: Add documentation for -Tbss, -Tdata, -Ttext,
+ 	-N, -n, -t, -Z.
+ 
+ 2025-11-10  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	PR other/122243
+ 	PR rtl-optimization/120064
+ 	* doc/invoke.texi: Document -fconcepts-diagnostics-depth,
+ 	-Wdeprecated-copy-dtor, -Wformat-diag, -Wcannot-profile,
+ 	-fvar-tracking-uninit, -gno-pubnames, -finline-atomics,
+ 	-fext-dce, -fipa-icf-functions, -fipa-icf-variables,
+ 	-fprofile, -fdump-internal-locations, and -Wopenacc-dims.
+ 	Minor copy-editing and rearrangement of items in the option
+ 	summary lists.
+ 
+ 2025-11-10  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	PR other/122243
+ 	* doc/cppdiropts.texi: Document --include-directory,
+ 	--include-directory-after, --include-barrier, --include-prefix,
+ 	--include-with-prefix, --include-with-prefix-after,
+ 	--include-with-prefix-before, --no-standard-includes.
+ 	--embed-directory.
+ 	* doc/cppopts.texi: Document --define-macro, --undefine-macro,
+ 	--include, --imacros, --dependencies, --user-dependencies,
+ 	--print-missing-file-dependencies, --write-dependencies,
+ 	--write-user-dependencies, --comments, --comments-in-macros,
+ 	--no-line-commands, --traditional, --traditional-cpp,
+ 	--trigraphs, --trace-includes, --dump.
+ 	* doc/invoke.texi: Add missing long options to Option Summary.
+ 	Document --language, --compile, --assemble, --preprocess,
+ 	--output, --dumpbase, --dumpbase-ext, --dumpdir,
+ 	--verbose, --pass-exit-codes, --pipe, --specs, --ansi,
+ 	--no-warnings, --pedantic, --pedantic-errors, --all-warnings,
+ 	--extra-warnings, --debug, --optimize, --profile, -coverage,
+ 	--no-integrated-cpp, --for-assembler, --no-standard-libraries,
+ 	--entries, --pie, --static-pie, --static, --shared, --symbolic,
+ 	--for-linker, --force-link, --library-directory, --prefix,
+ 	--no-canonical-prefixes, --dump, --save-temps, --print-file-name,
+ 	--print-multi-directory, --print-multi-lib,
+ 	--print-multi-os-directory, --print-multiarch,
+ 	--print-prog-name, --print-libgcc-file-name, --print-search-dirs,
+ 	--print-sysroot, --print-sysroot-headers-suffix.
+ 
+ 2025-11-10  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	PR other/122243
+ 	* doc/cppopts.texi (-A): Restrict option documentation to the CPP
+ 	manual.  Also document the --assert form.
+ 	* doc/invoke.texi (Option Summary): Don't list the -A option.
+ 
+ 2025-11-10  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	PR other/122243
+ 	* doc/invoke.texi (Option Summary): Add missing entries,
+ 	also correct alphabetization and formatting of the C++ options.
+ 	(C++ Language Options): Fix some formatting issues.
+ 
+ 2025-11-10  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	PR other/122243
+ 	* common.opt (fhelp, fhelp=, ftarget-help, fversion): Mark as
+ 	"Undocumented".
+ 	(fbounds-check): Update comments.
+ 	(flag-graphite, fsel-sched-reschedule-pipelined): Mark as
+ 	"Undocumented".
+ 	(fstack-limit): Add comment.
+ 
+ 2025-11-10  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	PR other/122243
+ 	* common.opt (fhelp): Add RejectNegative.
+ 	(fhelp=): Likewise.
+ 	(ftarget-help): Likewise.
+ 	(fversion): Likewise.
+ 	(Wno-frame-larger-than): Likewise.
+ 	(Wno-larger-than): Likewise.
+ 	(Wno-stack-usage): Likewise.
+ 	(fdiagnostics-minimum-margin-width=): Likewise.
+ 	(flto-incremental=): Likewise.
+ 	(foffload=): Likewise.
+ 	(foffload-options=): Likewise.
+ 	(foffload-abi-host-opts=): Likewise.
+ 	(fpatchable-function-entry=): Likewise.
+ 	(gno-pubnames): Likewise.
+ 	(gpubnames): Likewise.
+ 	(ggnu-pubnames): Likewise.
+ 
+ 2025-11-10  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	PR other/122243
+ 	* common.opt (ftree-lrs): Mark as "Ignore".
+ 
+ 2025-11-10  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	PR other/122243
+ 	* doc/cppopts.texi (fcanonical-system-headers): Add @opindex.
+ 	* doc/invoke.texi (fdump-ada-spec-slim): Add @opindex.
+ 	(fcontract-semantic): Likewise.
+ 	(fdiagnostics-plain-output): Likewise.
+ 	(Wc11-c2x-compat): Likewise.
+ 	(Wvla-parameter): Likewise.
+ 	(fanalyzer-verbose-edges): Likewise.
+ 	(fanalyzer-verbose-state-changes): Likewise.
+ 	(fanalyzer-verbosity): Likewise.
+ 	(flimit-function-alignment): Likewise.
+ 
+ 2025-11-10  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	PR other/122243
+ 	* doc/invoke.texi (fdump-analyzer-exploded-nodes): Correct
+ 	spelling of option in @opindex.
+ 	(fdump-analyzer-exploded-nodes-2): Likewise.
+ 	(fdump-analyzer-exploded-nodes-3): Likewise.
+ 	(fdump-analyzer-feasibility): Likewise.
+ 	(fdump-analyzer-infinite-loop): Likewise.
+ 	(fstack-reuse): Likewise.
+ 
+ 2025-11-10  Dimitar Dimitrov  <dimitar@dinux.eu>
+ 
+ 	* config/pru/pru.h (REG_CLASS_CONTENTS): Use unsigned integer
+ 	constants.
+ 
+ 2025-11-10  Dimitar Dimitrov  <dimitar@dinux.eu>
+ 
+ 	PR target/122415
+ 	* config/pru/pru-protos.h (pru_fixup_jump_address_operand):
+ 	Declare.
+ 	* config/pru/pru.cc (pru_fixup_jump_address_operand): New
+ 	function.
+ 	(pru_addr_space_legitimize_address): New function.
+ 	(TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Declare.
+ 	* config/pru/pru.md (call): Fixup the address operand.
+ 	(call_value): Ditto.
+ 	(sibcall): Ditto.
+ 	(sibcall_value): Ditto.
+ 
+ 2025-11-10  Tejas Belagod  <tejas.belagod@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve-builtins.cc (register_builtin_types): Make
+ 	SVE vector boolean type equivalent to GNU vectors.
+ 	* config/aarch64/aarch64-sve.md (extend<vpred><mode>2,
+ 	zero_extend<vpred><mode>2, trunc<mode><vpred>2, vec_cmp<mode><mode>):
+ 	New patterns to support additional operations on predicate modes.
+ 	* config/aarch64/aarch64.cc (aarch64_valid_vector_boolean_op): New.
+ 	(aarch64_invalid_unary_op): Consider vector bool types.
+ 	(aarch64_invalid_binary_op): Likewise.
+ 	(aarch64_convert_to_type): Define target hook and handle standard to
+ 	non-standard bool conversion.
+ 
+ 2025-11-10  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/118460
+ 	* config/arm/arm.md (movhfcc): Use expandable_comparison_operator.
+ 	(movsfcc, movdfcc): Likewise.
+ 
+ 2025-11-10  Robin Dapp  <rdapp@ventanamicro.com>
+ 
+ 	PR middle-end/121985
+ 	* tree-vect-loop-manip.cc (vect_gen_vector_loop_niters): Only
+ 	set niter_vector's range if step == 1.
+ 
+ 2025-11-10  Robin Dapp  <rdapp@ventanamicro.com>
+ 
+ 	* optabs-query.cc (qimode_for_vec_perm): Check if QImode's
+ 	precision divides the inner mode's precision.
+ 
+ 2025-11-10  Robin Dapp  <rdapp@ventanamicro.com>
+ 
+ 	* tree-vect-data-refs.cc (vect_gather_scatter_fn_p): Bail if
+ 	offset_vectype is NULL.
+ 
+ 2025-11-10  Robin Dapp  <rdapp@ventanamicro.com>
+ 
+ 	* tree-vect-slp.cc (vect_load_perm_consecutive_p): New function.
+ 	(vect_lower_load_permutations): Use.
+ 	(vect_optimize_slp_pass::remove_redundant_permutations): Use.
+ 	* tree-vect-stmts.cc (has_consecutive_load_permutation): New
+ 	function that uses vect_load_perm_consecutive_p.
+ 	(get_load_store_type): Use.
+ 	(vectorizable_load): Reduce group size.
+ 	* tree-vectorizer.h (struct vect_load_store_data): Add
+ 	subchain_p.
+ 	(vect_load_perm_consecutive_p): Declare.
+ 
  2025-11-08  Avinash Jayakar  <avinashd@linux.ibm.com>
  
  	PR tree-optimization/122126
diff -Nrcpad gcc-16-20251109/gcc/DATESTAMP gcc-16-20251116/gcc/DATESTAMP
*** gcc-16-20251109/gcc/DATESTAMP	Sun Nov  9 22:32:43 2025
--- gcc-16-20251116/gcc/DATESTAMP	Sun Nov 16 22:32:50 2025
***************
*** 1 ****
! 20251109
--- 1 ----
! 20251116
diff -Nrcpad gcc-16-20251109/gcc/Makefile.in gcc-16-20251116/gcc/Makefile.in
*** gcc-16-20251109/gcc/Makefile.in	Sun Nov  9 22:32:43 2025
--- gcc-16-20251116/gcc/Makefile.in	Sun Nov 16 22:32:50 2025
*************** gcov-tool$(exeext): $(GCOV_TOOL_OBJS) $(
*** 3534,3542 ****
  stmp-int-hdrs: $(STMP_FIXINC) $(T_GLIMITS_H) $(T_STDINT_GCC_H) $(USER_H) fixinc_list
  # Copy in the headers provided with gcc.
  #
! # The sed command gets just the last file name component;
! # this is necessary because VPATH could add a dirname.
! # Using basename would be simpler, but some systems don't have it.
  #
  # The touch command is here to workaround an AIX/Linux NFS bug.
  #
--- 3534,3543 ----
  stmp-int-hdrs: $(STMP_FIXINC) $(T_GLIMITS_H) $(T_STDINT_GCC_H) $(USER_H) fixinc_list
  # Copy in the headers provided with gcc.
  #
! # If the sequence /././ appears somewhere after srcdir in a USER_H
! # name, install the header with the name after the marker, even if
! # that name involves subdirectories.  Otherwise, install it as the
! # basename (but some systems don't have the basename program).
  #
  # The touch command is here to workaround an AIX/Linux NFS bug.
  #
*************** stmp-int-hdrs: $(STMP_FIXINC) $(T_GLIMIT
*** 3547,3556 ****
  	-if [ -d include-fixed ] ; then true; else mkdir include-fixed; chmod a+rx include-fixed; fi
  	for file in .. $(USER_H); do \
  	  if [ X$$file != X.. ]; then \
! 	    realfile=`echo $$file | sed -e 's|.*/\([^/]*\)$$|\1|'`; \
  	    $(STAMP) include/$$realfile; \
  	    rm -f include/$$realfile; \
! 	    cp $$file include; \
  	    chmod a+r include/$$realfile; \
  	  fi; \
  	done
--- 3548,3567 ----
  	-if [ -d include-fixed ] ; then true; else mkdir include-fixed; chmod a+rx include-fixed; fi
  	for file in .. $(USER_H); do \
  	  if [ X$$file != X.. ]; then \
! 	    case $$file in \
! 	      "$(srcdir)"*/././*) \
! 		realfile=`echo $$file | sed -e 's|^.*/\./\./||'`; \
! 		case $$realfile in \
! 		  */*) \
! 		    realdir=`echo $$realfile | sed -e 's|/[^/]*$$||'`; \
! 		    $(install_sh) -d include/$$realdir;; \
! 		esac;; \
! 	      *) \
! 		realfile=`echo $$file | sed -e 's|.*/\([^/]*\)$$|\1|'`;; \
! 	    esac; \
  	    $(STAMP) include/$$realfile; \
  	    rm -f include/$$realfile; \
! 	    cp $$file include/$$realfile; \
  	    chmod a+r include/$$realfile; \
  	  fi; \
  	done
diff -Nrcpad gcc-16-20251109/gcc/acinclude.m4 gcc-16-20251116/gcc/acinclude.m4
*** gcc-16-20251109/gcc/acinclude.m4	Sun Nov  9 22:32:43 2025
--- gcc-16-20251116/gcc/acinclude.m4	Sun Nov 16 22:32:50 2025
*************** int (*fp) (void) __attribute__ ((section
*** 307,313 ****
  	     && test $in_tree_ld_is_elf = yes; then
  	    gcc_cv_initfini_array=yes
  	  fi
! 	elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
  	  case $target:$gas in
  	    *:yes)
  	      sh_flags='"a"'
--- 307,313 ----
  	     && test $in_tree_ld_is_elf = yes; then
  	    gcc_cv_initfini_array=yes
  	  fi
! 	elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x -a x"$gcc_cv_objdump" != x ; then
  	  case $target:$gas in
  	    *:yes)
  	      sh_flags='"a"'
*************** AC_DEFUN([gcc_GAS_CHECK_FEATURE],
*** 505,511 ****
  [AC_REQUIRE([gcc_GAS_FLAGS])dnl
  AC_CACHE_CHECK([assembler for $1], [$2],
   [[$2]=no
!   if test x$gcc_cv_as != x; then
      AS_ECHO([ifelse(m4_substr([$4],0,1),[$], "[$4]", '[$4]')]) > conftest.s
      if AC_TRY_COMMAND([$gcc_cv_as $gcc_cv_as_flags $3 -o conftest.o conftest.s >&AS_MESSAGE_LOG_FD])
      then
--- 505,511 ----
  [AC_REQUIRE([gcc_GAS_FLAGS])dnl
  AC_CACHE_CHECK([assembler for $1], [$2],
   [[$2]=no
!   if test x"$gcc_cv_as" != x; then
      AS_ECHO([ifelse(m4_substr([$4],0,1),[$], "[$4]", '[$4]')]) > conftest.s
      if AC_TRY_COMMAND([$gcc_cv_as $gcc_cv_as_flags $3 -o conftest.o conftest.s >&AS_MESSAGE_LOG_FD])
      then
diff -Nrcpad gcc-16-20251109/gcc/ada/ChangeLog gcc-16-20251116/gcc/ada/ChangeLog
*** gcc-16-20251109/gcc/ada/ChangeLog	Sun Nov  9 22:32:43 2025
--- gcc-16-20251116/gcc/ada/ChangeLog	Sun Nov 16 22:32:50 2025
***************
*** 1,3 ****
--- 1,153 ----
+ 2025-11-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch9.adb (Expand_N_Entry_Declaration): In the deferred case,
+ 	freeze immediately all the newly created entities.
+ 
+ 2025-11-13  Douglas B Rupp  <rupp@adacore.com>
+ 
+ 	* sigtramp-vxworks-target.h (REGNO_PC_OFFSET): Use 32 vice
+ 	96 with llvm/clang. (REGNO_G_REG_OFFSET): Remove parens on
+ 	operand. (REGNO_GR): Likewise.
+ 	* sigtramp-vxworks.c (__gnat_sigtramp): Define a macro for
+ 	__attribute__ optimize, which is empty of not available.
+ 	* raise-gcc.c (db): Define ATTRIBUTE_PRINTF_2 if not defined.
+ 
+ 2025-11-13  Steve Baird  <baird@adacore.com>
+ 
+ 	* exp_attr.adb: Rewrite the spec and implementation of package
+ 	Cached_Attribute_Ops so that the saved value associated with a
+ 	type in a given map is not a single subprogram but instead a
+ 	set of subprograms. Thus, the correct generation of a second subprogram
+ 	for given type for use in some other context no longer causes the
+ 	first subprogram to be forgotten. This allows more reuse and,
+ 	in particular, allows reuse in the case where generating another
+ 	copy of the subprogram would result in a compilation failure.
+ 	Update Cached_Attribute_Ops clients correspondingly.
+ 
+ 2025-11-13  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_util.adb (Find_In_Enclosing_Context): Give up on declarations of
+ 	internal types.
+ 
+ 2025-11-13  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* treepr.adb (Print_End_Span): Print prefix, field name and line break.
+ 
+ 2025-11-13  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* libgnat/a-cbdlli.ads: Add "limited" to partial view of reference types.
+ 	* libgnat/a-cbhama.ads: Likewise.
+ 	* libgnat/a-cbhase.ads: Likewise.
+ 	* libgnat/a-cbmutr.ads: Likewise.
+ 	* libgnat/a-cborma.ads: Likewise.
+ 	* libgnat/a-cborse.ads: Likewise.
+ 	* libgnat/a-cdlili.ads: Likewise.
+ 	* libgnat/a-cidlli.ads: Likewise.
+ 	* libgnat/a-cihama.ads: Likewise.
+ 	* libgnat/a-cihase.ads: Likewise.
+ 	* libgnat/a-cimutr.ads: Likewise.
+ 	* libgnat/a-ciorma.ads: Likewise.
+ 	* libgnat/a-ciormu.ads: Likewise.
+ 	* libgnat/a-ciorse.ads: Likewise.
+ 	* libgnat/a-cobove.ads: Likewise.
+ 	* libgnat/a-cohama.ads: Likewise.
+ 	* libgnat/a-cohase.ads: Likewise.
+ 	* libgnat/a-coinho.ads: Likewise.
+ 	* libgnat/a-coinho__shared.ads: Likewise.
+ 	* libgnat/a-coinve.ads: Likewise.
+ 	* libgnat/a-comutr.ads: Likewise.
+ 	* libgnat/a-convec.ads: Likewise.
+ 	* libgnat/a-coorma.ads: Likewise.
+ 	* libgnat/a-coormu.ads: Likewise.
+ 	* libgnat/a-coorse.ads: Likewise.
+ 	* sem_ch5.adb (Analyze_Assignment): Added code to resolve the target
+ 	object (LHS) as a complete context when there are target names ("@")
+ 	present in the expression of the assignment. Loop over interpretations,
+ 	removing any that have a limited type, and set the type (T1) to be the
+ 	type of the first nonlimited interpretation. Test for ambiguity by
+ 	calling Is_Ambiguous_Operand. Delay analysis of Rhs in the target-name
+ 	case. Replace existing test for generalized indexing with implicit
+ 	dereference in existing analysis code with test of Is_Limited_Type
+ 	along with calling Remove_Interp in the limited case.
+ 	* sem_res.adb (Is_Ambiguous_Operand): Condition the calls to
+ 	Report_Interpretation on Report_Errors being True.
+ 
+ 2025-11-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/29463
+ 	* sem_eval.adb (Fold_Uint): Use Universal_Integer as actual type
+ 	for a named number.
+ 	(Fold_Ureal): Likewise with Universal_Real.
+ 	* sem_res.adb (Resolve_Real_Literal): Test whether the literal is
+ 	a static expression instead of coming from source to give the error
+ 	prescribed by the RM 4.9(36/2) subclause.
+ 
+ 2025-11-13  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* libgnarl/s-taspri__posix.ads (Suspension_Object): Add some
+ 	documentation.
+ 
+ 2025-11-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* einfo.ads (Alignment): Update description.
+ 
+ 2025-11-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Pragma) <Process_Suppress_Unsuppress>: For
+ 	Alignment_Check on a specific object with an address clause and no
+ 	alignment clause, toggle the Check_Address_Alignment flag present
+ 	on the address clause.
+ 
+ 2025-11-13  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_pragmas.rst: Update
+ 	the list of junk names.
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst:
+ 	Likewise.
+ 	* gnat_rm.texi: Regenerate.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2025-11-13  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* libgnat/g-crc32.ads (CRC32): Annotate as pure and always terminating.
+ 	* libgnat/s-crc32.ads (CRC32): Annotate as pure and always terminating.
+ 
+ 2025-11-13  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_util.adb (Get_Current_Value_Condition): Relax assertion about
+ 	rewritten ELSIF branch.
+ 
+ 2025-11-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_attributes.rst
+ 	(Maximum_Alignment): Fix description.
+ 	* doc/gnat_rm/representation_clauses_and_pragmas.rst
+ 	(Alignment Clauses): Adjust accordingly.
+ 	* checks.adb (Apply_Address_Clause_Check): Remove incorrect test on
+ 	Maximum_Alignment.
+ 	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Minor tweak
+ 	in comment.
+ 	* ttypes.ads (Maximum_Alignment): Fix description.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2025-11-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_pragmas.rst (Pragma Suppress):
+ 	Remove mention of range checks in the entry for alignment checks.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2025-11-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* layout.adb (Set_Composite_Alignment): Fix typos and comments.
+ 
+ 2025-11-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/122640
+ 	* sem_ch3.adb (Analyze_Object_Declaration): Set Is_True_Constant
+ 	on entry for constants and Never_Set_In_Source in all cases.
+ 	If an initialization expression is present, set Has_Initial_Value
+ 	and Is_True_Constant on variables.
+ 
  2025-11-08  Eric Botcazou  <ebotcazou@adacore.com>
  
  	PR ada/34374
diff -Nrcpad gcc-16-20251109/gcc/ada/checks.adb gcc-16-20251116/gcc/ada/checks.adb
*** gcc-16-20251109/gcc/ada/checks.adb	Sun Nov  9 22:32:43 2025
--- gcc-16-20251116/gcc/ada/checks.adb	Sun Nov 16 22:32:51 2025
*************** package body Checks is
*** 590,597 ****
        --  reset to reference the value expression of the constant).
  
     begin
!       --  See if alignment check needed. Note that we never need a check if the
!       --  maximum alignment is one, since the check will always succeed.
  
        --  Note: we do not check for checks suppressed here, since that check
        --  was done in Sem_Ch13 when the address clause was processed. We are
--- 590,596 ----
        --  reset to reference the value expression of the constant).
  
     begin
!       --  See if alignment check needed
  
        --  Note: we do not check for checks suppressed here, since that check
        --  was done in Sem_Ch13 when the address clause was processed. We are
*************** package body Checks is
*** 601,610 ****
        --  check the status of check suppressing at the point of the address
        --  clause.
  
!       if No (AC)
!         or else not Check_Address_Alignment (AC)
!         or else Maximum_Alignment = 1
!       then
           return;
        end if;
  
--- 600,606 ----
        --  check the status of check suppressing at the point of the address
        --  clause.
  
!       if No (AC) or else not Check_Address_Alignment (AC) then
           return;
        end if;
  
diff -Nrcpad gcc-16-20251109/gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst gcc-16-20251116/gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst
*** gcc-16-20251109/gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst	Sun Nov  9 22:32:43 2025
--- gcc-16-20251116/gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst	Sun Nov 16 22:32:51 2025
*************** Attribute Maximum_Alignment
*** 653,663 ****
  
  .. index:: Maximum_Alignment
  
! ``Standard'Maximum_Alignment`` (``Standard`` is the only
! allowed prefix) provides the maximum useful alignment value for the
! target.  This is a static value that can be used to specify the alignment
! for an object, guaranteeing that it is properly aligned in all
! cases.
  
  Attribute Max_Integer_Size
  ==========================
--- 653,664 ----
  
  .. index:: Maximum_Alignment
  
! ``Standard'Maximum_Alignment`` (``Standard`` is the only allowed prefix)
! provides the maximum default alignment value for the target, that is to
! say the maximum alignment that the compiler may choose by default for a
! type or an object. Larger alignments are supported up to some maximum
! value dependent on the target, but may require specific mechanisms that
! are not needed up to ``Standard'Maximum_Alignment``.
  
  Attribute Max_Integer_Size
  ==========================
diff -Nrcpad gcc-16-20251109/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst gcc-16-20251116/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst
*** gcc-16-20251109/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst	Sun Nov  9 22:32:43 2025
--- gcc-16-20251116/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst	Sun Nov 16 22:32:51 2025
*************** names that are implementation defined (a
*** 6672,6683 ****
  
  
  *
!   ``Alignment_Check`` can be used to suppress alignment checks
!   on addresses used in address clauses. Such checks can also be suppressed
!   by suppressing range checks, but the specific use of ``Alignment_Check``
!   allows suppression of alignment checks without suppressing other range checks.
!   Note that ``Alignment_Check`` is suppressed by default on machines (such as
!   the x86) with non-strict alignment.
  
  *
    ``Atomic_Synchronization`` can be used to suppress the special memory
--- 6672,6680 ----
  
  
  *
!   ``Alignment_Check`` can be used to suppress alignment checks on addresses
!   used in address clauses. Note that ``Alignment_Check`` is suppressed by
!   default on non-strict alignment machines (such as the x86).
  
  *
    ``Atomic_Synchronization`` can be used to suppress the special memory
*************** units and unreferenced entities within t
*** 7346,7352 ****
  
  For the variable case, warnings are never given for unreferenced variables
  whose name contains one of the substrings
! ``DISCARD, DUMMY, IGNORE, JUNK, UNUSED`` in any casing. Such names
  are typically to be used in cases where such warnings are expected.
  Thus it is never necessary to use ``pragma Unreferenced`` for such
  variables, though it is harmless to do so.
--- 7343,7349 ----
  
  For the variable case, warnings are never given for unreferenced variables
  whose name contains one of the substrings
! ``DISCARD, DUMMY, IGNORE, JUNK, UNUSE, TMP, TEMP`` in any casing. Such names
  are typically to be used in cases where such warnings are expected.
  Thus it is never necessary to use ``pragma Unreferenced`` for such
  variables, though it is harmless to do so.
*************** that it might be.
*** 7479,7485 ****
  
  For the variable case, warnings are never given for unreferenced
  variables whose name contains one of the substrings
! ``DISCARD, DUMMY, IGNORE, JUNK, UNUSED`` in any casing. Such names
  are typically to be used in cases where such warnings are expected.
  Thus it is never necessary to use ``pragma Unused`` for such
  variables, though it is harmless to do so.
--- 7476,7482 ----
  
  For the variable case, warnings are never given for unreferenced
  variables whose name contains one of the substrings
! ``DISCARD, DUMMY, IGNORE, JUNK, UNUSE, TMP, TEMP`` in any casing. Such names
  are typically to be used in cases where such warnings are expected.
  Thus it is never necessary to use ``pragma Unused`` for such
  variables, though it is harmless to do so.
diff -Nrcpad gcc-16-20251109/gcc/ada/doc/gnat_rm/representation_clauses_and_pragmas.rst gcc-16-20251116/gcc/ada/doc/gnat_rm/representation_clauses_and_pragmas.rst
*** gcc-16-20251109/gcc/ada/doc/gnat_rm/representation_clauses_and_pragmas.rst	Sun Nov  9 22:32:43 2025
--- gcc-16-20251116/gcc/ada/doc/gnat_rm/representation_clauses_and_pragmas.rst	Sun Nov 16 22:32:51 2025
*************** The default alignment values are as foll
*** 40,47 ****
  
    For elementary types, the alignment is the minimum of the actual size of
    objects of the type divided by ``Storage_Unit``,
!   and the maximum alignment supported by the target.
!   (This maximum alignment is given by the GNAT-specific attribute
    ``Standard'Maximum_Alignment``; see :ref:`Attribute_Maximum_Alignment`.)
  
    .. index:: Maximum_Alignment attribute
--- 40,47 ----
  
    For elementary types, the alignment is the minimum of the actual size of
    objects of the type divided by ``Storage_Unit``,
!   and the maximum default alignment supported by the target.
!   (This maximum default alignment is given by the GNAT-specific attribute
    ``Standard'Maximum_Alignment``; see :ref:`Attribute_Maximum_Alignment`.)
  
    .. index:: Maximum_Alignment attribute
*************** The default alignment values are as foll
*** 96,103 ****
    strict alignment.
  
  An alignment clause may specify a larger alignment than the default value
! up to some maximum value dependent on the target (obtainable by using the
! attribute reference ``Standard'Maximum_Alignment``). It may also specify
  a smaller alignment than the default value for enumeration, integer and
  fixed point types, as well as for record types, for example
  
--- 96,102 ----
    strict alignment.
  
  An alignment clause may specify a larger alignment than the default value
! up to some maximum value dependent on the target. It may also specify
  a smaller alignment than the default value for enumeration, integer and
  fixed point types, as well as for record types, for example
  
diff -Nrcpad gcc-16-20251109/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst gcc-16-20251116/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst
*** gcc-16-20251109/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst	Sun Nov  9 22:32:43 2025
--- gcc-16-20251116/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst	Sun Nov 16 22:32:51 2025
*************** of the kinds of warnings that are genera
*** 2740,2748 ****
  
  * Unreferenced or unmodified variables. Note that a special
    exemption applies to variables which contain any of the substrings
!   ``DISCARD, DUMMY, IGNORE, JUNK, UNUSED``, in any casing. Such variables
!   are considered likely to be intentionally used in a situation where
!   otherwise a warning would be given, so warnings of this kind are
    always suppressed for such variables.
  
  * Address overlays that could clobber memory
--- 2740,2748 ----
  
  * Unreferenced or unmodified variables. Note that a special
    exemption applies to variables which contain any of the substrings
!   ``DISCARD, DUMMY, IGNORE, JUNK, UNUSE, TMP, TEMP`` in any casing. Such
!   variables are considered likely to be intentionally used in a situation
!   where otherwise a warning would be given, so warnings of this kind are
    always suppressed for such variables.
  
  * Address overlays that could clobber memory
diff -Nrcpad gcc-16-20251109/gcc/ada/einfo.ads gcc-16-20251116/gcc/ada/einfo.ads
*** gcc-16-20251109/gcc/ada/einfo.ads	Sun Nov  9 22:32:43 2025
--- gcc-16-20251116/gcc/ada/einfo.ads	Sun Nov 16 22:32:51 2025
*************** package Einfo is
*** 405,416 ****
  --       (including exceptions where it refers to the static data allocated for
  --       an exception), loop parameters, and formal parameters. This indicates
  --       the desired alignment for a type, or the actual alignment for an
! --       object. A value of zero (Uint_0) indicates that the alignment has not
! --       been set yet. The alignment can be set by an explicit alignment
! --       clause, or set by the front-end in package Layout, or set by the
! --       back-end as part of the back-end back-annotation process. The
! --       alignment field is also defined in E_Exception entities, but there it
! --       is used only by the back-end for back annotation.
  
  --    Alignment_Clause (synthesized)
  --       Applies to all entities for types and objects. If an alignment
--- 405,431 ----
  --       (including exceptions where it refers to the static data allocated for
  --       an exception), loop parameters, and formal parameters. This indicates
  --       the desired alignment for a type, or the actual alignment for an
! --       object. The alignment can be set by an explicit alignment aspect or
! --       clause, or set by the front end in the package Layout, or set by the
! --       back end as part of the back-end back-annotation process. The field
! --       is also defined in E_Exception entities, but there it is used only by
! --       the back end for back annotation.
! 
! --       The implementation guarantees that the run-time address of an object
! --       is a multiple of the value of its Alignment field in storage units,
! --       up to some maximum value dependent on the target that is under the
! --       sole control of the back end (not equal to Ttypes.Maximum_Alignment
! --       in the general case), provided that the object is not subject to an
! --       address aspect/clause.
! 
! --       When the object is subject to an address aspect/clause, this guarantee
! --       is voided and the object may be misaligned at run time. On the targets
! --       that require strict alignment of memory accesses, a run-time alignment
! --       check is generated unconditionally and Program_Error is raised if the
! --       object is misaligned. On the other targets, this run-time alignment
! --       check is generated only if the object is also subject to an alignment
! --       aspect/clause; if it is not, the program may run with the misaligned
! --       object (its execution is erroneous as per the RM 13.3(27) subclause).
  
  --    Alignment_Clause (synthesized)
  --       Applies to all entities for types and objects. If an alignment
diff -Nrcpad gcc-16-20251109/gcc/ada/exp_attr.adb gcc-16-20251116/gcc/ada/exp_attr.adb
*** gcc-16-20251109/gcc/ada/exp_attr.adb	Sun Nov  9 22:32:43 2025
--- gcc-16-20251116/gcc/ada/exp_attr.adb	Sun Nov 16 22:32:51 2025
*************** package body Exp_Attr is
*** 82,144 ****
  
     package Cached_Attribute_Ops is
  
!       Map_Size : constant := 63;
!       subtype Header_Num is Integer range 0 .. Map_Size - 1;
! 
!       function Attribute_Op_Hash (Id : Entity_Id) return Header_Num is
!         (Header_Num (Id mod Map_Size));
! 
!       --  Caches used to avoid building duplicate subprograms for a single
!       --  type/attribute pair (where the attribute is either Put_Image or
!       --  one of the four streaming attributes). The type used as a key in
!       --  in accessing these maps should not be the entity of a subtype.
! 
!       package Read_Map is new GNAT.HTable.Simple_HTable
!         (Header_Num => Header_Num,
!          Key        => Entity_Id,
!          Element    => Entity_Id,
!          No_Element => Empty,
!          Hash       => Attribute_Op_Hash,
!          Equal      => "=");
! 
!       package Write_Map is new GNAT.HTable.Simple_HTable
!         (Header_Num => Header_Num,
!          Key        => Entity_Id,
!          Element    => Entity_Id,
!          No_Element => Empty,
!          Hash       => Attribute_Op_Hash,
!          Equal      => "=");
  
!       package Input_Map is new GNAT.HTable.Simple_HTable
!         (Header_Num => Header_Num,
!          Key        => Entity_Id,
!          Element    => Entity_Id,
!          No_Element => Empty,
!          Hash       => Attribute_Op_Hash,
!          Equal      => "=");
  
!       package Output_Map is new GNAT.HTable.Simple_HTable
!         (Header_Num => Header_Num,
!          Key        => Entity_Id,
!          Element    => Entity_Id,
!          No_Element => Empty,
!          Hash       => Attribute_Op_Hash,
!          Equal      => "=");
  
!       package Put_Image_Map is new GNAT.HTable.Simple_HTable
!         (Header_Num => Header_Num,
!          Key        => Entity_Id,
!          Element    => Entity_Id,
!          No_Element => Empty,
!          Hash       => Attribute_Op_Hash,
!          Equal      => "=");
  
!       procedure Validate_Cached_Candidate
!         (Subp     : in out Entity_Id;
!          Attr_Ref : Node_Id);
!       --  If Subp is non-empty but it is not callable from the point of
!       --  Attr_Ref (perhaps because it is not visible from that point),
!       --  then Subp is set to Empty. Otherwise, do nothing.
  
     end Cached_Attribute_Ops;
  
--- 82,111 ----
  
     package Cached_Attribute_Ops is
  
!       procedure Add_To_Read_Map
!         (Key_Typ : Entity_Id; Element_Subp : Entity_Id);
!       function Get_From_Read_Map
!         (Key_Typ : Entity_Id; Attr_Ref : Node_Id) return Entity_Id;
  
!       procedure Add_To_Write_Map
!         (Key_Typ : Entity_Id; Element_Subp : Entity_Id);
!       function Get_From_Write_Map
!         (Key_Typ : Entity_Id; Attr_Ref : Node_Id) return Entity_Id;
  
!       procedure Add_To_Input_Map
!         (Key_Typ : Entity_Id; Element_Subp : Entity_Id);
!       function Get_From_Input_Map
!         (Key_Typ : Entity_Id; Attr_Ref : Node_Id) return Entity_Id;
  
!       procedure Add_To_Output_Map
!         (Key_Typ : Entity_Id; Element_Subp : Entity_Id);
!       function Get_From_Output_Map
!         (Key_Typ : Entity_Id; Attr_Ref : Node_Id) return Entity_Id;
  
!       procedure Add_To_Put_Image_Map
!         (Key_Typ : Entity_Id; Element_Subp : Entity_Id);
!       function Get_From_Put_Image_Map
!         (Key_Typ : Entity_Id; Attr_Ref : Node_Id) return Entity_Id;
  
     end Cached_Attribute_Ops;
  
*************** package body Exp_Attr is
*** 290,334 ****
  
     package body Cached_Attribute_Ops is
  
!       -------------------------------
!       -- Validate_Cached_Candidate --
!       -------------------------------
  
!       procedure Validate_Cached_Candidate
!         (Subp     : in out Entity_Id;
!          Attr_Ref : Node_Id) is
!       begin
!          if No (Subp) then
!             return;
!          end if;
  
!          declare
!             Subp_Comp_Unit     : constant Node_Id :=
!               Enclosing_Comp_Unit_Node (Subp);
!             Attr_Ref_Comp_Unit : constant Node_Id :=
!               Enclosing_Comp_Unit_Node (Attr_Ref);
  
!             --  The preceding Enclosing_Comp_Unit_Node calls are needed
!             --  (as opposed to changing Interunit_Ref_OK so that it could
!             --  be passed Subp and Attr_Ref) because the games we play
!             --  with source position info for these conjured-up routines can
!             --  confuse In_Same_Extended_Unit (which is called from in
!             --  Interunit_Ref_OK) in the case where one of these
!             --  conjured-up routines contains an attribute reference
!             --  denoting another such routine (e.g., if the Put_Image routine
!             --  for a composite type contains a Some_Component_Type'Put_Image
!             --  attribute reference). Calling Enclosing_Comp_Unit_Node first
!             --  avoids the case where In_Same_Extended_Unit gets confused.
  
           begin
!             if Interunit_Ref_OK (Subp_Comp_Unit, Attr_Ref_Comp_Unit)
!               and then (Is_Library_Level_Entity (Subp)
!                         or else Enclosing_Dynamic_Scope (Subp) =
!                                 Enclosing_Lib_Unit_Entity (Subp))
!             then
!                return;
              end if;
!          end;
  
           --  We have previously tried being more ambitious here in hopes of
           --  referencing subprograms declared in other units (as opposed
--- 257,464 ----
  
     package body Cached_Attribute_Ops is
  
!       --  Caches are used to avoid building duplicate subprograms for a single
!       --  type/attribute pair (where the attribute is either Put_Image or
!       --  one of the four streaming attributes). The type used as a key in
!       --  in accessing these maps should not be the entity of a subtype.
  
!       Map_Size : constant := 63;
!       subtype Header_Num is Integer range 0 .. Map_Size - 1;
  
!       function Attribute_Op_Hash (Id : Entity_Id) return Header_Num is
!         (Header_Num (Id mod Map_Size));
  
!       function Cached_Candidate_Is_OK
!         (Subp : Entity_Id; Attr_Ref : Node_Id) return Boolean;
!       --  Return True if Subp is callable from the point of Attr_Ref
!       --  (so it is ok to rewrite Attr_Ref as a call to Subp).
! 
!       generic
!       package Existing_Subps_Map is
!          procedure Add_Subp
!            (Key_Typ : Entity_Id; Element_Subp : Entity_Id);
!          --  Having created a subp to implement a particular attribute of
!          --  Key_Typ, make it available for possible reuse by remembering it.
! 
!          function Get_Subp
!            (Key_Typ : Entity_Id; Attr_Ref : Node_Id) return Entity_Id;
!          --  If one of the recorded candidates for Key_Typ is suitable,
!          --  (see Cached_Candidate_Is_OK for meaning of "suitable")
!          --  then return it. If not, then return Empty.
!       end Existing_Subps_Map;
! 
!       package body Existing_Subps_Map is
!          package Subp_List_Table is new GNAT.HTable.Simple_HTable
!            (Header_Num => Header_Num,
!             Key        => Entity_Id,
!             Element    => Elist_Id,
!             No_Element => No_Elist,
!             Hash       => Attribute_Op_Hash,
!             Equal      => "=");
! 
!          function Normalize_Map_Key (Typ : Entity_Id) return Entity_Id;
!          --   We need a single Entity_Id to represent all views and
!          --   all subtypes of a given type, just for use as a key value
!          --   for map lookups. It doesn't much matter which Entity_Id we
!          --   choose as long as we are consistent.
! 
!          -----------------------
!          -- Normalize_Map_Key --
!          -----------------------
  
+          function Normalize_Map_Key (Typ : Entity_Id) return Entity_Id is
+             First_Sub : constant Entity_Id := First_Subtype (Typ);
+             I_Or_P    : constant Entity_Id
+               := Incomplete_Or_Partial_View (First_Sub);
           begin
!             if Present (I_Or_P) then
!                return I_Or_P;
!             else
!                return First_Sub;
              end if;
!          end Normalize_Map_Key;
! 
!          --------------
!          -- Add_Subp --
!          --------------
! 
!          procedure Add_Subp
!            (Key_Typ : Entity_Id; Element_Subp : Entity_Id)
!          is
!             Normalized : constant Entity_Id := Normalize_Map_Key (Key_Typ);
!             Current    : constant Elist_Id := Subp_List_Table.Get (Normalized);
!          begin
!             if Present (Current) then
!                declare
!                   Elmt              : Elmt_Id := First_Elmt (Current);
!                   Comp_Unit_Of_Subp : constant Node_Id :=
!                     Enclosing_Comp_Unit_Node (Element_Subp);
!                begin
!                   while Present (Elmt) loop
!                      pragma Assert (Comp_Unit_Of_Subp /=
!                                     Enclosing_Comp_Unit_Node (Node (Elmt)));
!                      Next_Elmt (Elmt);
!                   end loop;
!                end;
! 
!                Append_Elmt (Element_Subp, Current);
!             else
!                Subp_List_Table.Set (Normalized, New_Elmt_List (Element_Subp));
!             end if;
!          end Add_Subp;
! 
!          --------------
!          -- Get_Subp --
!          --------------
! 
!          function Get_Subp
!            (Key_Typ : Entity_Id; Attr_Ref : Node_Id) return Entity_Id
!          is
!             Normalized : constant Entity_Id := Normalize_Map_Key (Key_Typ);
!             List       : constant Elist_Id :=
!               Subp_List_Table.Get (Normalized);
!             Result     : Entity_Id := Empty;
!             Elmt       : Elmt_Id;
!          begin
!             if Present (List) then
!                Elmt := First_Elmt (List);
! 
!                while Present (Elmt) loop
!                   Result := Node (Elmt);
! 
!                   if Cached_Candidate_Is_OK
!                     (Subp => Result, Attr_Ref => Attr_Ref)
!                   then
!                      return Result;
!                   end if;
! 
!                   Next_Elmt (Elmt);
!                end loop;
!             end if;
! 
!             return Empty;
!          end Get_Subp;
! 
!       end Existing_Subps_Map;
! 
!       --  Declare an instance for each of the 5 attributes and complete each
!       --  attribute's Add and Get subprograms by renaming.
! 
!       package Read_Map is new Existing_Subps_Map;
!       procedure Add_To_Read_Map
!         (Key_Typ : Entity_Id; Element_Subp : Entity_Id)
!         renames Read_Map.Add_Subp;
!       function Get_From_Read_Map
!         (Key_Typ : Entity_Id; Attr_Ref : Node_Id) return Entity_Id
!         renames Read_Map.Get_Subp;
! 
!       package Write_Map is new Existing_Subps_Map;
!       procedure Add_To_Write_Map
!         (Key_Typ : Entity_Id; Element_Subp : Entity_Id)
!         renames Write_Map.Add_Subp;
!       function Get_From_Write_Map
!         (Key_Typ : Entity_Id; Attr_Ref : Node_Id) return Entity_Id
!         renames Write_Map.Get_Subp;
! 
!       package Input_Map is new Existing_Subps_Map;
!       procedure Add_To_Input_Map
!         (Key_Typ : Entity_Id; Element_Subp : Entity_Id)
!         renames Input_Map.Add_Subp;
!       function Get_From_Input_Map
!         (Key_Typ : Entity_Id; Attr_Ref : Node_Id) return Entity_Id
!         renames Input_Map.Get_Subp;
! 
!       package Output_Map is new Existing_Subps_Map;
!       procedure Add_To_Output_Map
!         (Key_Typ : Entity_Id; Element_Subp : Entity_Id)
!         renames Output_Map.Add_Subp;
!       function Get_From_Output_Map
!         (Key_Typ : Entity_Id; Attr_Ref : Node_Id) return Entity_Id
!         renames Output_Map.Get_Subp;
! 
!       package Put_Image_Map is new Existing_Subps_Map;
!       procedure Add_To_Put_Image_Map
!         (Key_Typ : Entity_Id; Element_Subp : Entity_Id)
!         renames Put_Image_Map.Add_Subp;
!       function Get_From_Put_Image_Map
!         (Key_Typ : Entity_Id; Attr_Ref : Node_Id) return Entity_Id
!         renames Put_Image_Map.Get_Subp;
! 
!       ----------------------------
!       -- Cached_Candidate_Is_OK --
!       ----------------------------
! 
!       function Cached_Candidate_Is_OK
!         (Subp : Entity_Id; Attr_Ref : Node_Id) return Boolean
!       is
!          Subp_Comp_Unit     : constant Node_Id :=
!            Enclosing_Comp_Unit_Node (Subp);
!          Attr_Ref_Comp_Unit : constant Node_Id :=
!            Enclosing_Comp_Unit_Node (Attr_Ref);
! 
!          --  The preceding Enclosing_Comp_Unit_Node calls are needed
!          --  (as opposed to changing Interunit_Ref_OK so that it could
!          --  be passed Subp and Attr_Ref) because the games we play
!          --  with source position info for these conjured-up routines can
!          --  confuse In_Same_Extended_Unit (which is called from in
!          --  Interunit_Ref_OK) in the case where one of these
!          --  conjured-up routines contains an attribute reference
!          --  denoting another such routine (e.g., if the Put_Image routine
!          --  for a composite type contains a Some_Component_Type'Put_Image
!          --  attribute reference). Calling Enclosing_Comp_Unit_Node first
!          --  avoids the case where In_Same_Extended_Unit gets confused.
! 
!       begin
!          if Subp_Comp_Unit = Attr_Ref_Comp_Unit then
!             return True;
! 
!          elsif Interunit_Ref_OK (Subp_Comp_Unit, Attr_Ref_Comp_Unit)
!            and then (Is_Library_Level_Entity (Subp)
!                      or else Enclosing_Dynamic_Scope (Subp) =
!                              Enclosing_Lib_Unit_Entity (Subp))
!          then
!             return True;
!          end if;
  
           --  We have previously tried being more ambitious here in hopes of
           --  referencing subprograms declared in other units (as opposed
*************** package body Exp_Attr is
*** 340,347 ****
           --  "_305PI"). So, after a fair amount of unsuccessful debugging,
           --   it was decided to abandon the effort.
  
!          Subp := Empty;
!       end Validate_Cached_Candidate;
     end Cached_Attribute_Ops;
  
     -------------------------
--- 470,477 ----
           --  "_305PI"). So, after a fair amount of unsuccessful debugging,
           --   it was decided to abandon the effort.
  
!          return False;
!       end Cached_Candidate_Is_OK;
     end Cached_Attribute_Ops;
  
     -------------------------
*************** package body Exp_Attr is
*** 1946,1952 ****
           Insertion_Scope : Entity_Id := Empty;
           Insertion_Point : Node_Id := Empty;
           Insert_Before   : Boolean := False;
!          Typ_Comp_Unit   : Node_Id := Enclosing_Comp_Unit_Node (Typ);
        begin
           --  handle no-enclosing-comp-unit cases
           if No (Typ_Comp_Unit) then
--- 2076,2083 ----
           Insertion_Scope : Entity_Id := Empty;
           Insertion_Point : Node_Id := Empty;
           Insert_Before   : Boolean := False;
!          First_Typ       : constant Entity_Id := First_Subtype (Typ);
!          Typ_Comp_Unit   : Node_Id := Enclosing_Comp_Unit_Node (First_Typ);
        begin
           --  handle no-enclosing-comp-unit cases
           if No (Typ_Comp_Unit) then
*************** package body Exp_Attr is
*** 1964,1979 ****
              --  See comment accompanying earlier call to Interunit_Ref_OK
              --  for discussion of these Enclosing_Comp_Unit_Node calls.
           then
!             --  Typ is declared in the current unit, so
!             --  we want to hoist to the same scope as Typ.
  
!             Insertion_Scope := Scope (Typ);
!             Insertion_Point := Freeze_Node (Typ);
           else
              --  Typ is declared in a different unit, so
              --  hoist to library level.
  
!             pragma Assert (Is_Library_Level_Entity (Typ));
  
              while Present (Ancestor) loop
                 if Is_List_Member (Ancestor) then
--- 2095,2110 ----
              --  See comment accompanying earlier call to Interunit_Ref_OK
              --  for discussion of these Enclosing_Comp_Unit_Node calls.
           then
!             --  First_Typ is declared in the current unit, so
!             --  we want to hoist to the same scope as First_Typ.
  
!             Insertion_Scope := Scope (First_Typ);
!             Insertion_Point := Freeze_Node (First_Typ);
           else
              --  Typ is declared in a different unit, so
              --  hoist to library level.
  
!             pragma Assert (Is_Library_Level_Entity (First_Typ));
  
              while Present (Ancestor) loop
                 if Is_List_Member (Ancestor) then
*************** package body Exp_Attr is
*** 4789,4794 ****
--- 4920,4929 ----
                    end;
                 end if;
              end if;
+ 
+             if not Is_Tagged_Type (U_Type) then
+                Cached_Attribute_Ops.Add_To_Input_Map (U_Type, Fname);
+             end if;
           end if;
  
           --  If we fall through, Fname is the function to be called. The result
*************** package body Exp_Attr is
*** 4813,4822 ****
           if Nkind (Parent (N)) = N_Object_Declaration then
              Freeze_Stream_Subprogram (Fname);
           end if;
- 
-          if not Is_Tagged_Type (P_Type) then
-             Cached_Attribute_Ops.Input_Map.Set (U_Type, Fname);
-          end if;
        end Input;
  
        -------------------
--- 4948,4953 ----
*************** package body Exp_Attr is
*** 5914,5928 ****
                       Attr_Ref => N);
                 end;
              end if;
           end if;
  
           --  If we fall through, Pname is the name of the procedure to call
  
           Rewrite_Attribute_Proc_Call (Pname);
- 
-          if not Is_Tagged_Type (P_Type) then
-             Cached_Attribute_Ops.Output_Map.Set (U_Type, Pname);
-          end if;
        end Output;
  
        ---------
--- 6045,6059 ----
                       Attr_Ref => N);
                 end;
              end if;
+ 
+             if not Is_Tagged_Type (U_Type) then
+                Cached_Attribute_Ops.Add_To_Output_Map (U_Type, Pname);
+             end if;
           end if;
  
           --  If we fall through, Pname is the name of the procedure to call
  
           Rewrite_Attribute_Proc_Call (Pname);
        end Output;
  
        ---------
*************** package body Exp_Attr is
*** 6308,6316 ****
                 return;
  
              elsif Is_Array_Type (U_Type) then
!                Pname := Cached_Attribute_Ops.Put_Image_Map.Get (U_Type);
!                Cached_Attribute_Ops.Validate_Cached_Candidate
!                  (Pname, Attr_Ref => N);
                 if No (Pname) then
                    declare
                       procedure Build_And_Insert_Array_Put_Image_Proc is
--- 6439,6446 ----
                 return;
  
              elsif Is_Array_Type (U_Type) then
!                Pname := Cached_Attribute_Ops.Get_From_Put_Image_Map
!                           (U_Type, Attr_Ref => N);
                 if No (Pname) then
                    declare
                       procedure Build_And_Insert_Array_Put_Image_Proc is
*************** package body Exp_Attr is
*** 6325,6331 ****
                          Attr_Ref => N);
                    end;
  
!                   Cached_Attribute_Ops.Put_Image_Map.Set (U_Type, Pname);
                 end if;
  
              --  Tagged type case, use the primitive Put_Image function. Note
--- 6455,6461 ----
                          Attr_Ref => N);
                    end;
  
!                   Cached_Attribute_Ops.Add_To_Put_Image_Map (U_Type, Pname);
                 end if;
  
              --  Tagged type case, use the primitive Put_Image function. Note
*************** package body Exp_Attr is
*** 6362,6370 ****
                 declare
                    Base_Typ : constant Entity_Id := Full_Base (U_Type);
                 begin
!                   Pname := Cached_Attribute_Ops.Put_Image_Map.Get (Base_Typ);
!                   Cached_Attribute_Ops.Validate_Cached_Candidate
!                     (Pname, Attr_Ref => N);
                    if No (Pname) then
                       declare
                          procedure Build_And_Insert_Record_Put_Image_Proc is
--- 6492,6499 ----
                 declare
                    Base_Typ : constant Entity_Id := Full_Base (U_Type);
                 begin
!                   Pname := Cached_Attribute_Ops.Get_From_Put_Image_Map
!                              (Base_Typ, Attr_Ref => N);
                    if No (Pname) then
                       declare
                          procedure Build_And_Insert_Record_Put_Image_Proc is
*************** package body Exp_Attr is
*** 6379,6385 ****
                             Attr_Ref => N);
                       end;
  
!                      Cached_Attribute_Ops.Put_Image_Map.Set (Base_Typ, Pname);
                    end if;
                 end;
              end if;
--- 6508,6515 ----
                             Attr_Ref => N);
                       end;
  
!                      Cached_Attribute_Ops.Add_To_Put_Image_Map
!                        (Base_Typ, Pname);
                    end if;
                 end;
              end if;
*************** package body Exp_Attr is
*** 6841,6846 ****
--- 6971,6980 ----
                       Attr_Ref => N);
                 end;
              end if;
+ 
+             if not Is_Tagged_Type (U_Type) then
+                Cached_Attribute_Ops.Add_To_Read_Map (U_Type, Pname);
+             end if;
           end if;
  
           Rewrite_Attribute_Proc_Call (Pname);
*************** package body Exp_Attr is
*** 6884,6893 ****
                 Analyze (Assign_Tag);
              end;
           end if;
- 
-          if not Is_Tagged_Type (P_Type) then
-             Cached_Attribute_Ops.Read_Map.Set (U_Type, Pname);
-          end if;
        end Read;
  
        ---------
--- 7018,7023 ----
*************** package body Exp_Attr is
*** 8566,8580 ****
                       Attr_Ref => N);
                 end;
              end if;
           end if;
  
           --  If we fall through, Pname is the procedure to be called
  
           Rewrite_Attribute_Proc_Call (Pname);
- 
-          if not Is_Tagged_Type (P_Type) then
-             Cached_Attribute_Ops.Write_Map.Set (U_Type, Pname);
-          end if;
        end Write;
  
        --  The following attributes are handled by the back end (except that
--- 8696,8710 ----
                       Attr_Ref => N);
                 end;
              end if;
+ 
+             if not Is_Tagged_Type (U_Type) then
+                Cached_Attribute_Ops.Add_To_Write_Map (U_Type, Pname);
+             end if;
           end if;
  
           --  If we fall through, Pname is the procedure to be called
  
           Rewrite_Attribute_Proc_Call (Pname);
        end Write;
  
        --  The following attributes are handled by the back end (except that
*************** package body Exp_Attr is
*** 9184,9202 ****
           --  In particular, we do not want the entity for a subtype.
        begin
           if Nam = TSS_Stream_Read then
!             Ent := Cached_Attribute_Ops.Read_Map.Get (U_Base);
           elsif Nam = TSS_Stream_Write then
!             Ent := Cached_Attribute_Ops.Write_Map.Get (U_Base);
           elsif Nam = TSS_Stream_Input then
!             Ent := Cached_Attribute_Ops.Input_Map.Get (U_Base);
           elsif Nam = TSS_Stream_Output then
!             Ent := Cached_Attribute_Ops.Output_Map.Get (U_Base);
           end if;
        end;
  
-       Cached_Attribute_Ops.Validate_Cached_Candidate
-         (Subp => Ent, Attr_Ref => Attr_Ref);
- 
        if Present (Ent) then
           return Ent;
        end if;
--- 9314,9333 ----
           --  In particular, we do not want the entity for a subtype.
        begin
           if Nam = TSS_Stream_Read then
!             Ent := Cached_Attribute_Ops.Get_From_Read_Map
!                      (U_Base, Attr_Ref => Attr_Ref);
           elsif Nam = TSS_Stream_Write then
!             Ent := Cached_Attribute_Ops.Get_From_Write_Map
!                      (U_Base, Attr_Ref => Attr_Ref);
           elsif Nam = TSS_Stream_Input then
!             Ent := Cached_Attribute_Ops.Get_From_Input_Map
!                      (U_Base, Attr_Ref => Attr_Ref);
           elsif Nam = TSS_Stream_Output then
!             Ent := Cached_Attribute_Ops.Get_From_Output_Map
!                      (U_Base, Attr_Ref => Attr_Ref);
           end if;
        end;
  
        if Present (Ent) then
           return Ent;
        end if;
diff -Nrcpad gcc-16-20251109/gcc/ada/exp_ch9.adb gcc-16-20251116/gcc/ada/exp_ch9.adb
*** gcc-16-20251109/gcc/ada/exp_ch9.adb	Sun Nov  9 22:32:43 2025
--- gcc-16-20251116/gcc/ada/exp_ch9.adb	Sun Nov 16 22:32:51 2025
*************** package body Exp_Ch9 is
*** 8212,8226 ****
           --  as part of the regular flow of the front end at the end of
           --  analysis of the enclosing task/protected type declaration.
  
           if Was_Deferred then
!             Push_Scope (Scope (Entry_Ent));
  
!             while First_Decl /= Last_Decl loop
!                Next (First_Decl);
!                Analyze (First_Decl);
!             end loop;
  
!             End_Scope;
           end if;
        end if;
     end Expand_N_Entry_Declaration;
--- 8212,8238 ----
           --  as part of the regular flow of the front end at the end of
           --  analysis of the enclosing task/protected type declaration.
  
+          --  Freeze immediately all the newly created entities, because
+          --  otherwise they might be frozen in the wrong scope (in the
+          --  non-deferred case, they are frozen when the enclosing task/
+          --  protected type is frozen, but they didn't exist by that time).
+ 
           if Was_Deferred then
!             declare
!                From : constant Entity_Id := Last_Entity (Scope (Entry_Ent));
  
!             begin
!                Push_Scope (Scope (Entry_Ent));
  
!                while First_Decl /= Last_Decl loop
!                   Next (First_Decl);
!                   Analyze (First_Decl);
!                end loop;
! 
!                Freeze_All (From, Last_Decl);
! 
!                End_Scope;
!             end;
           end if;
        end if;
     end Expand_N_Entry_Declaration;
diff -Nrcpad gcc-16-20251109/gcc/ada/exp_util.adb gcc-16-20251116/gcc/ada/exp_util.adb
*** gcc-16-20251109/gcc/ada/exp_util.adb	Sun Nov  9 22:32:43 2025
--- gcc-16-20251116/gcc/ada/exp_util.adb	Sun Nov 16 22:32:51 2025
*************** package body Exp_Util is
*** 7395,7400 ****
--- 7395,7412 ----
                 end if;
                 pragma Assert (Present (Current));
  
+             --  For declarations of internal types we can't trace their origin
+             --  like we do for itypes, so give up. They might be coming from
+             --  condition of the current IF statement and will be prepended
+             --  before that statement itself.
+ 
+             elsif Nkind (Current) = N_Subtype_Declaration
+               and then Is_Internal (Defining_Identifier (Current))
+             then
+                pragma Assert (Is_Rewrite_Insertion (Current));
+                Current := Empty;
+                return;
+ 
              --  Same for itypes that have no declaration
  
              elsif Nkind (Current) = N_Defining_Identifier
*************** package body Exp_Util is
*** 7641,7653 ****
  
              begin
                 --  An ELSIF part whose condition is false could have been
!                --  already rewritten into NULL statement and we are already
!                --  past the statements inside that ELSIF part.
  
                 if Nkind (If_Stmt) /= N_If_Statement then
!                   pragma Assert
!                     (Nkind (CV) = N_Elsif_Part
!                      and then Is_Rewrite_Substitution (If_Stmt));
                    return;
                 end if;
  
--- 7653,7663 ----
  
              begin
                 --  An ELSIF part whose condition is false could have been
!                --  already rewritten and we are already past the statements
!                --  inside that ELSIF part.
  
                 if Nkind (If_Stmt) /= N_If_Statement then
!                   pragma Assert (Nkind (CV) = N_Elsif_Part);
                    return;
                 end if;
  
diff -Nrcpad gcc-16-20251109/gcc/ada/gnat_rm.texi gcc-16-20251116/gcc/ada/gnat_rm.texi
*** gcc-16-20251109/gcc/ada/gnat_rm.texi	Sun Nov  9 22:32:43 2025
--- gcc-16-20251116/gcc/ada/gnat_rm.texi	Sun Nov 16 22:32:51 2025
***************
*** 19,25 ****
  
  @copying
  @quotation
! GNAT Reference Manual , Oct 31, 2025
  
  AdaCore
  
--- 19,25 ----
  
  @copying
  @quotation
! GNAT Reference Manual , Nov 13, 2025
  
  AdaCore
  
*************** names that are implementation defined (a
*** 8318,8329 ****
  @itemize *
  
  @item 
! @code{Alignment_Check} can be used to suppress alignment checks
! on addresses used in address clauses. Such checks can also be suppressed
! by suppressing range checks, but the specific use of @code{Alignment_Check}
! allows suppression of alignment checks without suppressing other range checks.
! Note that @code{Alignment_Check} is suppressed by default on machines (such as
! the x86) with non-strict alignment.
  
  @item 
  @code{Atomic_Synchronization} can be used to suppress the special memory
--- 8318,8326 ----
  @itemize *
  
  @item 
! @code{Alignment_Check} can be used to suppress alignment checks on addresses
! used in address clauses. Note that @code{Alignment_Check} is suppressed by
! default on non-strict alignment machines (such as the x86).
  
  @item 
  @code{Atomic_Synchronization} can be used to suppress the special memory
*************** units and unreferenced entities within t
*** 8977,8983 ****
  
  For the variable case, warnings are never given for unreferenced variables
  whose name contains one of the substrings
! @code{DISCARD, DUMMY, IGNORE, JUNK, UNUSED} in any casing. Such names
  are typically to be used in cases where such warnings are expected.
  Thus it is never necessary to use @code{pragma Unreferenced} for such
  variables, though it is harmless to do so.
--- 8974,8980 ----
  
  For the variable case, warnings are never given for unreferenced variables
  whose name contains one of the substrings
! @code{DISCARD, DUMMY, IGNORE, JUNK, UNUSE, TMP, TEMP} in any casing. Such names
  are typically to be used in cases where such warnings are expected.
  Thus it is never necessary to use @code{pragma Unreferenced} for such
  variables, though it is harmless to do so.
*************** that it might be.
*** 9108,9114 ****
  
  For the variable case, warnings are never given for unreferenced
  variables whose name contains one of the substrings
! @code{DISCARD, DUMMY, IGNORE, JUNK, UNUSED} in any casing. Such names
  are typically to be used in cases where such warnings are expected.
  Thus it is never necessary to use @code{pragma Unused} for such
  variables, though it is harmless to do so.
--- 9105,9111 ----
  
  For the variable case, warnings are never given for unreferenced
  variables whose name contains one of the substrings
! @code{DISCARD, DUMMY, IGNORE, JUNK, UNUSE, TMP, TEMP} in any casing. Such names
  are typically to be used in cases where such warnings are expected.
  Thus it is never necessary to use @code{pragma Unused} for such
  variables, though it is harmless to do so.
*************** this attribute.
*** 11586,11596 ****
  
  @geindex Maximum_Alignment
  
! @code{Standard'Maximum_Alignment} (@code{Standard} is the only
! allowed prefix) provides the maximum useful alignment value for the
! target.  This is a static value that can be used to specify the alignment
! for an object, guaranteeing that it is properly aligned in all
! cases.
  
  @node Attribute Max_Integer_Size,Attribute Mechanism_Code,Attribute Maximum_Alignment,Implementation Defined Attributes
  @anchor{gnat_rm/implementation_defined_attributes attribute-max-integer-size}@anchor{1aa}
--- 11583,11594 ----
  
  @geindex Maximum_Alignment
  
! @code{Standard'Maximum_Alignment} (@code{Standard} is the only allowed prefix)
! provides the maximum default alignment value for the target, that is to
! say the maximum alignment that the compiler may choose by default for a
! type or an object. Larger alignments are supported up to some maximum
! value dependent on the target, but may require specific mechanisms that
! are not needed up to @code{Standard'Maximum_Alignment}.
  
  @node Attribute Max_Integer_Size,Attribute Mechanism_Code,Attribute Maximum_Alignment,Implementation Defined Attributes
  @anchor{gnat_rm/implementation_defined_attributes attribute-max-integer-size}@anchor{1aa}
*************** The default alignment values are as foll
*** 19064,19071 ****
  
  For elementary types, the alignment is the minimum of the actual size of
  objects of the type divided by @code{Storage_Unit},
! and the maximum alignment supported by the target.
! (This maximum alignment is given by the GNAT-specific attribute
  @code{Standard'Maximum_Alignment}; see @ref{1a8,,Attribute Maximum_Alignment}.)
  
  @geindex Maximum_Alignment attribute
--- 19062,19069 ----
  
  For elementary types, the alignment is the minimum of the actual size of
  objects of the type divided by @code{Storage_Unit},
! and the maximum default alignment supported by the target.
! (This maximum default alignment is given by the GNAT-specific attribute
  @code{Standard'Maximum_Alignment}; see @ref{1a8,,Attribute Maximum_Alignment}.)
  
  @geindex Maximum_Alignment attribute
*************** strict alignment.
*** 19129,19136 ****
  @end itemize
  
  An alignment clause may specify a larger alignment than the default value
! up to some maximum value dependent on the target (obtainable by using the
! attribute reference @code{Standard'Maximum_Alignment}). It may also specify
  a smaller alignment than the default value for enumeration, integer and
  fixed point types, as well as for record types, for example
  
--- 19127,19133 ----
  @end itemize
  
  An alignment clause may specify a larger alignment than the default value
! up to some maximum value dependent on the target. It may also specify
  a smaller alignment than the default value for enumeration, integer and
  fixed point types, as well as for record types, for example
  
diff -Nrcpad gcc-16-20251109/gcc/ada/gnat_ugn.texi gcc-16-20251116/gcc/ada/gnat_ugn.texi
*** gcc-16-20251109/gcc/ada/gnat_ugn.texi	Sun Nov  9 22:32:43 2025
--- gcc-16-20251116/gcc/ada/gnat_ugn.texi	Sun Nov 16 22:32:51 2025
***************
*** 19,25 ****
  
  @copying
  @quotation
! GNAT User's Guide for Native Platforms , Oct 31, 2025
  
  AdaCore
  
--- 19,25 ----
  
  @copying
  @quotation
! GNAT User's Guide for Native Platforms , Nov 13, 2025
  
  AdaCore
  
*************** Values known to be out of range at compi
*** 10788,10796 ****
  @item 
  Unreferenced or unmodified variables. Note that a special
  exemption applies to variables which contain any of the substrings
! @code{DISCARD, DUMMY, IGNORE, JUNK, UNUSED}, in any casing. Such variables
! are considered likely to be intentionally used in a situation where
! otherwise a warning would be given, so warnings of this kind are
  always suppressed for such variables.
  
  @item 
--- 10788,10796 ----
  @item 
  Unreferenced or unmodified variables. Note that a special
  exemption applies to variables which contain any of the substrings
! @code{DISCARD, DUMMY, IGNORE, JUNK, UNUSE, TMP, TEMP} in any casing. Such
! variables are considered likely to be intentionally used in a situation
! where otherwise a warning would be given, so warnings of this kind are
  always suppressed for such variables.
  
  @item 
*************** to permit their use in free software.
*** 30333,30340 ****
  
  @printindex ge
  
- @anchor{d2}@w{                              }
  @anchor{gnat_ugn/gnat_utility_programs switches-related-to-project-files}@w{                              }
  
  @c %**end of body
  @bye
--- 30333,30340 ----
  
  @printindex ge
  
  @anchor{gnat_ugn/gnat_utility_programs switches-related-to-project-files}@w{                              }
+ @anchor{d2}@w{                              }
  
  @c %**end of body
  @bye
diff -Nrcpad gcc-16-20251109/gcc/ada/layout.adb gcc-16-20251116/gcc/ada/layout.adb
*** gcc-16-20251109/gcc/ada/layout.adb	Sun Nov  9 22:32:43 2025
--- gcc-16-20251116/gcc/ada/layout.adb	Sun Nov 16 22:32:51 2025
*************** package body Layout is
*** 668,675 ****
     -----------------------------
  
     procedure Set_Composite_Alignment (E : Entity_Id) is
-       Siz   : Uint;
        Align : Nat;
  
     begin
        --  If alignment is already set, then nothing to do
--- 668,675 ----
     -----------------------------
  
     procedure Set_Composite_Alignment (E : Entity_Id) is
        Align : Nat;
+       Siz   : Uint;
  
     begin
        --  If alignment is already set, then nothing to do
*************** package body Layout is
*** 682,688 ****
        --  the setting of the Optimize_Alignment mode.
  
        --  If Optimize_Alignment is set to Space, then we try to give packed
!       --  records an aligmment of 1, unless there is some reason we can't.
  
        if Optimize_Alignment_Space (E)
          and then Is_Record_Type (E)
--- 682,688 ----
        --  the setting of the Optimize_Alignment mode.
  
        --  If Optimize_Alignment is set to Space, then we try to give packed
!       --  records an alignment of 1, unless there is some reason we can't.
  
        if Optimize_Alignment_Space (E)
          and then Is_Record_Type (E)
*************** package body Layout is
*** 698,710 ****
                   ("\pragma ignored for atomic record??", E);
              else
                 Error_Msg_N
!                  ("\pragma ignored for bolatile full access record??", E);
              end if;
  
              return;
           end if;
  
!          --  No effect if independent components
  
           if Has_Independent_Components (E) then
              Error_Msg_N ("Optimize_Alignment has no effect for &??", E);
--- 698,710 ----
                   ("\pragma ignored for atomic record??", E);
              else
                 Error_Msg_N
!                  ("\pragma ignored for volatile full access record??", E);
              end if;
  
              return;
           end if;
  
!          --  No effect for record with independent components
  
           if Has_Independent_Components (E) then
              Error_Msg_N ("Optimize_Alignment has no effect for &??", E);
*************** package body Layout is
*** 744,750 ****
              end loop;
           end;
  
!          --  Optimize_Alignment has no effect on variable length record
  
           if not Size_Known_At_Compile_Time (E) then
              Error_Msg_N ("Optimize_Alignment has no effect for &??", E);
--- 744,750 ----
              end loop;
           end;
  
!          --  No effect on variable length record
  
           if not Size_Known_At_Compile_Time (E) then
              Error_Msg_N ("Optimize_Alignment has no effect for &??", E);
*************** package body Layout is
*** 756,763 ****
  
           Align := 1;
  
-       --  Not a record, or not packed
- 
        else
           --  The only other cases we worry about here are where the size is
           --  statically known at compile time.
--- 756,761 ----
*************** package body Layout is
*** 782,790 ****
           elsif Siz = 8 * SSU then
              Align := 8;
  
!             --  If Optimize_Alignment is set to Space, then make sure the
!             --  alignment matches the size, for example, if the size is 17
!             --  bytes then we want an alignment of 1 for the type.
  
           elsif Optimize_Alignment_Space (E) then
              if Siz mod (8 * SSU) = 0 then
--- 780,788 ----
           elsif Siz = 8 * SSU then
              Align := 8;
  
!          --  If Optimize_Alignment is set to Space, then make sure the
!          --  alignment matches the size, for example, if the size is 17
!          --  bytes then we want an alignment of 1 for the type.
  
           elsif Optimize_Alignment_Space (E) then
              if Siz mod (8 * SSU) = 0 then
*************** package body Layout is
*** 797,805 ****
                 Align := 1;
              end if;
  
!             --  If Optimize_Alignment is set to Time, then we reset for odd
!             --  "in between sizes", for example a 17 bit record is given an
!             --  alignment of 4.
  
           elsif Optimize_Alignment_Time (E)
             and then Siz > SSU
--- 795,803 ----
                 Align := 1;
              end if;
  
!          --  If Optimize_Alignment is set to Time, then we reset for odd
!          --  "in between sizes", for example a 17 bit record is given an
!          --  alignment of 4.
  
           elsif Optimize_Alignment_Time (E)
             and then Siz > SSU
*************** package body Layout is
*** 813,826 ****
                 Align := 8;
              end if;
  
!             --  No special alignment fiddling needed
  
           else
              return;
           end if;
        end if;
  
!       --  Here we have Set Align to the proposed improved value. Make sure the
        --  value set does not exceed Maximum_Alignment for the target.
  
        if Align > Maximum_Alignment then
--- 811,824 ----
                 Align := 8;
              end if;
  
!          --  No special alignment fiddling needed
  
           else
              return;
           end if;
        end if;
  
!       --  Here we have set Align to the proposed improved value. Make sure the
        --  value set does not exceed Maximum_Alignment for the target.
  
        if Align > Maximum_Alignment then
*************** package body Layout is
*** 828,835 ****
        end if;
  
        --  Further processing for record types only to reduce the alignment
!       --  set by the above processing in some specific cases. We do not
!       --  do this for full access records, since we need max alignment there,
  
        if Is_Record_Type (E) and then not Is_Full_Access (E) then
  
--- 826,833 ----
        end if;
  
        --  Further processing for record types only to reduce the alignment
!       --  set by the above processing in some specific cases. We do not do
!       --  this for full access records, since we need max alignment there.
  
        if Is_Record_Type (E) and then not Is_Full_Access (E) then
  
diff -Nrcpad gcc-16-20251109/gcc/ada/libgnarl/s-taspri__posix.ads gcc-16-20251116/gcc/ada/libgnarl/s-taspri__posix.ads
*** gcc-16-20251109/gcc/ada/libgnarl/s-taspri__posix.ads	Sun Nov  9 22:32:44 2025
--- gcc-16-20251116/gcc/ada/libgnarl/s-taspri__posix.ads	Sun Nov 16 22:32:51 2025
*************** private
*** 82,87 ****
--- 82,126 ----
  
        Waiting : Boolean;
        --  Flag showing if there is a task already suspended on this object
+       --
+       --  When reviewing how this component is used, one should keep in mind
+       --  RM D.10 (10.2/5), which allows us to tolerate some race conditions
+       --  that can potentially cause deadlocks.
+       --
+       --  For example, consider the following code:
+       --
+       --     SO : Suspension_Object;
+       --
+       --     task A;
+       --     task B;
+       --
+       --     task body A is
+       --     begin
+       --        Suspend_Until_True (SO);
+       --     end A;
+       --
+       --     task body B is
+       --     begin
+       --        Set_True (SO);
+       --        Suspend_Until_True (SO);
+       --     end B;
+       --
+       --  One might be worried about the following ordering of events:
+       --  - A enters Suspend_Until_True and starts waiting on the condition
+       --    variable
+       --  - B calls Set_True, which sets Waiting to False and signals the
+       --    condvar.
+       --  - The scheduler keeps running B. B enters Suspend_Until_True and sets
+       --    Waiting to True again.
+       --  - A wakes up from pthread_cond_wait, sees that Waiting is True, so
+       --    concludes that the wakeup was spurious and starts waiting again,
+       --    effectively missing B's Set_True.
+       --
+       --  But this is in fact not a problem because the code falls into the
+       --  category described by RM D.10 (10.2/5): if the first thing to happen
+       --  is B's call to Set_True, the two remaining calls to
+       --  Suspend_Until_True clearly happen concurrently, which is the bounded
+       --  error case.
  
        L : aliased System.OS_Locks.RTS_Lock;
        --  Protection for ensuring mutual exclusion on the Suspension_Object
diff -Nrcpad gcc-16-20251109/gcc/ada/libgnat/a-cbdlli.ads gcc-16-20251116/gcc/ada/libgnat/a-cbdlli.ads
*** gcc-16-20251109/gcc/ada/libgnat/a-cbdlli.ads	Sun Nov  9 22:32:44 2025
--- gcc-16-20251116/gcc/ada/libgnat/a-cbdlli.ads	Sun Nov 16 22:32:51 2025
*************** is
*** 99,110 ****
        Process   : not null access procedure (Element : in out Element_Type));
  
     type Constant_Reference_Type
!       (Element : not null access constant Element_Type) is private
     with
        Implicit_Dereference => Element;
  
     type Reference_Type
!      (Element : not null access Element_Type) is private
     with
        Implicit_Dereference => Element;
  
--- 99,110 ----
        Process   : not null access procedure (Element : in out Element_Type));
  
     type Constant_Reference_Type
!       (Element : not null access constant Element_Type) is limited private
     with
        Implicit_Dereference => Element;
  
     type Reference_Type
!      (Element : not null access Element_Type) is limited private
     with
        Implicit_Dereference => Element;
  
diff -Nrcpad gcc-16-20251109/gcc/ada/libgnat/a-cbhama.ads gcc-16-20251116/gcc/ada/libgnat/a-cbhama.ads
*** gcc-16-20251109/gcc/ada/libgnat/a-cbhama.ads	Sun Nov  9 22:32:44 2025
--- gcc-16-20251116/gcc/ada/libgnat/a-cbhama.ads	Sun Nov 16 22:32:51 2025
*************** is
*** 146,157 ****
     --  a variable view) of the node designed by the cursor.
  
     type Constant_Reference_Type
!       (Element : not null access constant Element_Type) is
!    private
     with
        Implicit_Dereference => Element;
  
!    type Reference_Type (Element : not null access Element_Type) is private
     with
        Implicit_Dereference => Element;
  
--- 146,157 ----
     --  a variable view) of the node designed by the cursor.
  
     type Constant_Reference_Type
!      (Element : not null access constant Element_Type) is limited private
     with
        Implicit_Dereference => Element;
  
!    type Reference_Type
!      (Element : not null access Element_Type) is limited private
     with
        Implicit_Dereference => Element;
  
diff -Nrcpad gcc-16-20251109/gcc/ada/libgnat/a-cbhase.ads gcc-16-20251116/gcc/ada/libgnat/a-cbhase.ads
*** gcc-16-20251109/gcc/ada/libgnat/a-cbhase.ads	Sun Nov  9 22:32:44 2025
--- gcc-16-20251116/gcc/ada/libgnat/a-cbhase.ads	Sun Nov 16 22:32:51 2025
*************** is
*** 154,161 ****
     --  designated by the cursor.
  
     type Constant_Reference_Type
!      (Element : not null access constant Element_Type) is private
!         with Implicit_Dereference => Element;
  
     function Constant_Reference
       (Container : aliased Set;
--- 154,162 ----
     --  designated by the cursor.
  
     type Constant_Reference_Type
!      (Element : not null access constant Element_Type) is limited private
!    with
!       Implicit_Dereference => Element;
  
     function Constant_Reference
       (Container : aliased Set;
*************** is
*** 459,466 ****
        --  completes. Otherwise, the node is removed from the map and
        --  Program_Error is raised.
  
!       type Reference_Type (Element : not null access Element_Type) is private
!         with Implicit_Dereference => Element;
  
        function Reference_Preserving_Key
          (Container : aliased in out Set;
--- 460,469 ----
        --  completes. Otherwise, the node is removed from the map and
        --  Program_Error is raised.
  
!       type Reference_Type
!         (Element : not null access Element_Type) is limited private
!       with
!          Implicit_Dereference => Element;
  
        function Reference_Preserving_Key
          (Container : aliased in out Set;
diff -Nrcpad gcc-16-20251109/gcc/ada/libgnat/a-cbmutr.ads gcc-16-20251116/gcc/ada/libgnat/a-cbmutr.ads
*** gcc-16-20251109/gcc/ada/libgnat/a-cbmutr.ads	Sun Nov  9 22:32:44 2025
--- gcc-16-20251116/gcc/ada/libgnat/a-cbmutr.ads	Sun Nov 16 22:32:51 2025
*************** is
*** 106,117 ****
        Process   : not null access procedure (Element : in out Element_Type));
  
     type Constant_Reference_Type
!      (Element : not null access constant Element_Type) is private
!         with Implicit_Dereference => Element;
  
     type Reference_Type
!      (Element : not null access Element_Type) is private
!         with Implicit_Dereference => Element;
  
     function Constant_Reference
       (Container : aliased Tree;
--- 106,119 ----
        Process   : not null access procedure (Element : in out Element_Type));
  
     type Constant_Reference_Type
!      (Element : not null access constant Element_Type) is limited private
!    with
!       Implicit_Dereference => Element;
  
     type Reference_Type
!      (Element : not null access Element_Type) is limited private
!    with
!       Implicit_Dereference => Element;
  
     function Constant_Reference
       (Container : aliased Tree;
diff -Nrcpad gcc-16-20251109/gcc/ada/libgnat/a-cborma.ads gcc-16-20251116/gcc/ada/libgnat/a-cborma.ads
*** gcc-16-20251109/gcc/ada/libgnat/a-cborma.ads	Sun Nov  9 22:32:44 2025
--- gcc-16-20251116/gcc/ada/libgnat/a-cborma.ads	Sun Nov 16 22:32:51 2025
*************** is
*** 108,118 ****
                      procedure (Key : Key_Type; Element : in out Element_Type));
  
     type Constant_Reference_Type
!       (Element : not null access constant Element_Type) is private
     with
        Implicit_Dereference => Element;
  
!    type Reference_Type (Element : not null access Element_Type) is private
     with
        Implicit_Dereference => Element;
  
--- 108,119 ----
                      procedure (Key : Key_Type; Element : in out Element_Type));
  
     type Constant_Reference_Type
!      (Element : not null access constant Element_Type) is limited private
     with
        Implicit_Dereference => Element;
  
!    type Reference_Type
!      (Element : not null access Element_Type) is limited private
     with
        Implicit_Dereference => Element;
  
diff -Nrcpad gcc-16-20251109/gcc/ada/libgnat/a-cborse.ads gcc-16-20251116/gcc/ada/libgnat/a-cborse.ads
*** gcc-16-20251109/gcc/ada/libgnat/a-cborse.ads	Sun Nov  9 22:32:44 2025
--- gcc-16-20251116/gcc/ada/libgnat/a-cborse.ads	Sun Nov 16 22:32:51 2025
*************** is
*** 100,107 ****
        Process  : not null access procedure (Element : Element_Type));
  
     type Constant_Reference_Type
!       (Element : not null access constant Element_Type) is
!    private
     with
        Implicit_Dereference => Element;
  
--- 100,106 ----
        Process  : not null access procedure (Element : Element_Type));
  
     type Constant_Reference_Type
!       (Element : not null access constant Element_Type) is limited private
     with
        Implicit_Dereference => Element;
  
*************** is
*** 290,296 ****
           Process   : not null access
                         procedure (Element : in out Element_Type));
  
!       type Reference_Type (Element : not null access Element_Type) is private
        with
           Implicit_Dereference => Element;
  
--- 289,296 ----
           Process   : not null access
                         procedure (Element : in out Element_Type));
  
!       type Reference_Type
!         (Element : not null access Element_Type) is limited private
        with
           Implicit_Dereference => Element;
  
diff -Nrcpad gcc-16-20251109/gcc/ada/libgnat/a-cdlili.ads gcc-16-20251116/gcc/ada/libgnat/a-cdlili.ads
*** gcc-16-20251109/gcc/ada/libgnat/a-cdlili.ads	Sun Nov  9 22:32:44 2025
--- gcc-16-20251116/gcc/ada/libgnat/a-cdlili.ads	Sun Nov 16 22:32:51 2025
*************** is
*** 102,113 ****
        Process   : not null access procedure (Element : in out Element_Type));
  
     type Constant_Reference_Type
!       (Element : not null access constant Element_Type) is private
     with
        Implicit_Dereference => Element;
  
     type Reference_Type
!      (Element : not null access Element_Type) is private
     with
        Implicit_Dereference => Element;
  
--- 102,113 ----
        Process   : not null access procedure (Element : in out Element_Type));
  
     type Constant_Reference_Type
!       (Element : not null access constant Element_Type) is limited private
     with
        Implicit_Dereference => Element;
  
     type Reference_Type
!      (Element : not null access Element_Type) is limited private
     with
        Implicit_Dereference => Element;
  
diff -Nrcpad gcc-16-20251109/gcc/ada/libgnat/a-cidlli.ads gcc-16-20251116/gcc/ada/libgnat/a-cidlli.ads
*** gcc-16-20251109/gcc/ada/libgnat/a-cidlli.ads	Sun Nov  9 22:32:44 2025
--- gcc-16-20251116/gcc/ada/libgnat/a-cidlli.ads	Sun Nov 16 22:32:51 2025
*************** is
*** 100,111 ****
        Process   : not null access procedure (Element : in out Element_Type));
  
     type Constant_Reference_Type
!       (Element : not null access constant Element_Type) is private
     with
        Implicit_Dereference => Element;
  
     type Reference_Type
!      (Element : not null access Element_Type) is private
     with
        Implicit_Dereference => Element;
  
--- 100,111 ----
        Process   : not null access procedure (Element : in out Element_Type));
  
     type Constant_Reference_Type
!       (Element : not null access constant Element_Type) is limited private
     with
        Implicit_Dereference => Element;
  
     type Reference_Type
!      (Element : not null access Element_Type) is limited private
     with
        Implicit_Dereference => Element;
  
diff -Nrcpad gcc-16-20251109/gcc/ada/libgnat/a-cihama.ads gcc-16-20251116/gcc/ada/libgnat/a-cihama.ads
*** gcc-16-20251109/gcc/ada/libgnat/a-cihama.ads	Sun Nov  9 22:32:44 2025
--- gcc-16-20251116/gcc/ada/libgnat/a-cihama.ads	Sun Nov 16 22:32:51 2025
*************** is
*** 143,153 ****
     --  a variable view) of the node designed by the cursor.
  
     type Constant_Reference_Type
!       (Element : not null access constant Element_Type) is private
     with
        Implicit_Dereference => Element;
  
!    type Reference_Type (Element : not null access Element_Type) is private
     with
        Implicit_Dereference => Element;
  
--- 143,154 ----
     --  a variable view) of the node designed by the cursor.
  
     type Constant_Reference_Type
!       (Element : not null access constant Element_Type) is limited private
     with
        Implicit_Dereference => Element;
  
!    type Reference_Type
!      (Element : not null access Element_Type) is limited private
     with
        Implicit_Dereference => Element;
  
diff -Nrcpad gcc-16-20251109/gcc/ada/libgnat/a-cihase.ads gcc-16-20251116/gcc/ada/libgnat/a-cihase.ads
*** gcc-16-20251109/gcc/ada/libgnat/a-cihase.ads	Sun Nov  9 22:32:44 2025
--- gcc-16-20251116/gcc/ada/libgnat/a-cihase.ads	Sun Nov 16 22:32:51 2025
*************** is
*** 154,161 ****
     --  designated by the cursor.
  
     type Constant_Reference_Type
!      (Element : not null access constant Element_Type) is private
!         with Implicit_Dereference => Element;
  
     function Constant_Reference
       (Container : aliased Set;
--- 154,162 ----
     --  designated by the cursor.
  
     type Constant_Reference_Type
!      (Element : not null access constant Element_Type) is limited private
!    with
!       Implicit_Dereference => Element;
  
     function Constant_Reference
       (Container : aliased Set;
*************** is
*** 444,451 ****
        --  completes. Otherwise, the node is removed from the map and
        --  Program_Error is raised.
  
!       type Reference_Type (Element : not null access Element_Type) is private
!         with Implicit_Dereference => Element;
  
        function Reference_Preserving_Key
          (Container : aliased in out Set;
--- 445,454 ----
        --  completes. Otherwise, the node is removed from the map and
        --  Program_Error is raised.
  
!       type Reference_Type
!         (Element : not null access Element_Type) is limited private
!       with
!          Implicit_Dereference => Element;
  
        function Reference_Preserving_Key
          (Container : aliased in out Set;
diff -Nrcpad gcc-16-20251109/gcc/ada/libgnat/a-cimutr.ads gcc-16-20251116/gcc/ada/libgnat/a-cimutr.ads
*** gcc-16-20251109/gcc/ada/libgnat/a-cimutr.ads	Sun Nov  9 22:32:44 2025
--- gcc-16-20251116/gcc/ada/libgnat/a-cimutr.ads	Sun Nov 16 22:32:51 2025
*************** is
*** 107,118 ****
        Process   : not null access procedure (Element : in out Element_Type));
  
     type Constant_Reference_Type
!      (Element : not null access constant Element_Type) is private
!         with Implicit_Dereference => Element;
  
     type Reference_Type
!      (Element : not null access Element_Type) is private
!         with Implicit_Dereference => Element;
  
     function Constant_Reference
       (Container : aliased Tree;
--- 107,120 ----
        Process   : not null access procedure (Element : in out Element_Type));
  
     type Constant_Reference_Type
!      (Element : not null access constant Element_Type) is limited private
!    with
!       Implicit_Dereference => Element;
  
     type Reference_Type
!      (Element : not null access Element_Type) is limited private
!    with
!       Implicit_Dereference => Element;
  
     function Constant_Reference
       (Container : aliased Tree;
diff -Nrcpad gcc-16-20251109/gcc/ada/libgnat/a-ciorma.ads gcc-16-20251116/gcc/ada/libgnat/a-ciorma.ads
*** gcc-16-20251109/gcc/ada/libgnat/a-ciorma.ads	Sun Nov  9 22:32:44 2025
--- gcc-16-20251116/gcc/ada/libgnat/a-ciorma.ads	Sun Nov 16 22:32:51 2025
*************** is
*** 106,116 ****
                                               Element : in out Element_Type));
  
     type Constant_Reference_Type
!       (Element : not null access constant Element_Type) is private
     with
        Implicit_Dereference => Element;
  
!    type Reference_Type (Element : not null access Element_Type) is private
     with
        Implicit_Dereference => Element;
  
--- 106,117 ----
                                               Element : in out Element_Type));
  
     type Constant_Reference_Type
!      (Element : not null access constant Element_Type) is limited private
     with
        Implicit_Dereference => Element;
  
!    type Reference_Type
!      (Element : not null access Element_Type) is limited private
     with
        Implicit_Dereference => Element;
  
diff -Nrcpad gcc-16-20251109/gcc/ada/libgnat/a-ciormu.ads gcc-16-20251116/gcc/ada/libgnat/a-ciormu.ads
*** gcc-16-20251109/gcc/ada/libgnat/a-ciormu.ads	Sun Nov  9 22:32:44 2025
--- gcc-16-20251116/gcc/ada/libgnat/a-ciormu.ads	Sun Nov 16 22:32:51 2025
*************** is
*** 133,140 ****
     --  with elements") will raise Program_Error.
  
     type Constant_Reference_Type
!      (Element : not null access constant Element_Type) is private
!         with Implicit_Dereference => Element;
  
     function Constant_Reference
       (Container : aliased Set;
--- 133,141 ----
     --  with elements") will raise Program_Error.
  
     type Constant_Reference_Type
!      (Element : not null access constant Element_Type) is limited private
!    with
!       Implicit_Dereference => Element;
  
     function Constant_Reference
       (Container : aliased Set;
diff -Nrcpad gcc-16-20251109/gcc/ada/libgnat/a-ciorse.ads gcc-16-20251116/gcc/ada/libgnat/a-ciorse.ads
*** gcc-16-20251109/gcc/ada/libgnat/a-ciorse.ads	Sun Nov  9 22:32:44 2025
--- gcc-16-20251116/gcc/ada/libgnat/a-ciorse.ads	Sun Nov 16 22:32:51 2025
*************** is
*** 99,106 ****
        Process  : not null access procedure (Element : Element_Type));
  
     type Constant_Reference_Type
!      (Element : not null access constant Element_Type) is
!    private with
        Implicit_Dereference => Element;
  
     function Constant_Reference
--- 99,106 ----
        Process  : not null access procedure (Element : Element_Type));
  
     type Constant_Reference_Type
!      (Element : not null access constant Element_Type) is limited private
!    with
        Implicit_Dereference => Element;
  
     function Constant_Reference
*************** is
*** 305,311 ****
           Process   : not null access
                         procedure (Element : in out Element_Type));
  
!       type Reference_Type (Element : not null access Element_Type) is private
        with
           Implicit_Dereference => Element;
  
--- 305,312 ----
           Process   : not null access
                         procedure (Element : in out Element_Type));
  
!       type Reference_Type
!         (Element : not null access Element_Type) is limited private
        with
           Implicit_Dereference => Element;
  
diff -Nrcpad gcc-16-20251109/gcc/ada/libgnat/a-cobove.ads gcc-16-20251116/gcc/ada/libgnat/a-cobove.ads
*** gcc-16-20251109/gcc/ada/libgnat/a-cobove.ads	Sun Nov  9 22:32:44 2025
--- gcc-16-20251116/gcc/ada/libgnat/a-cobove.ads	Sun Nov 16 22:32:51 2025
*************** package Ada.Containers.Bounded_Vectors i
*** 160,171 ****
        Process   : not null access procedure (Element : in out Element_Type));
  
     type Constant_Reference_Type
!       (Element : not null access constant Element_Type) is
!    private
     with
        Implicit_Dereference => Element;
  
!    type Reference_Type (Element : not null access Element_Type) is private
     with
        Implicit_Dereference => Element;
  
--- 160,171 ----
        Process   : not null access procedure (Element : in out Element_Type));
  
     type Constant_Reference_Type
!      (Element : not null access constant Element_Type) is limited private
     with
        Implicit_Dereference => Element;
  
!    type Reference_Type
!       (Element : not null access Element_Type) is limited private
     with
        Implicit_Dereference => Element;
  
diff -Nrcpad gcc-16-20251109/gcc/ada/libgnat/a-cohama.ads gcc-16-20251116/gcc/ada/libgnat/a-cohama.ads
*** gcc-16-20251109/gcc/ada/libgnat/a-cohama.ads	Sun Nov  9 22:32:44 2025
--- gcc-16-20251116/gcc/ada/libgnat/a-cohama.ads	Sun Nov 16 22:32:51 2025
*************** is
*** 226,236 ****
     --  Process.all is propagated.
  
     type Constant_Reference_Type
!       (Element : not null access constant Element_Type) is private
     with
        Implicit_Dereference => Element;
  
!    type Reference_Type (Element : not null access Element_Type) is private
     with
        Implicit_Dereference => Element;
  
--- 226,237 ----
     --  Process.all is propagated.
  
     type Constant_Reference_Type
!      (Element : not null access constant Element_Type) is limited private
     with
        Implicit_Dereference => Element;
  
!    type Reference_Type
!      (Element : not null access Element_Type) is limited private
     with
        Implicit_Dereference => Element;
  
diff -Nrcpad gcc-16-20251109/gcc/ada/libgnat/a-cohase.ads gcc-16-20251116/gcc/ada/libgnat/a-cohase.ads
*** gcc-16-20251109/gcc/ada/libgnat/a-cohase.ads	Sun Nov  9 22:32:44 2025
--- gcc-16-20251116/gcc/ada/libgnat/a-cohase.ads	Sun Nov 16 22:32:51 2025
*************** is
*** 165,172 ****
     --  designed by the cursor.
  
     type Constant_Reference_Type
!      (Element : not null access constant Element_Type) is private
!         with Implicit_Dereference => Element;
  
     function Constant_Reference
       (Container : aliased Set;
--- 165,173 ----
     --  designed by the cursor.
  
     type Constant_Reference_Type
!      (Element : not null access constant Element_Type) is limited private
!    with
!       Implicit_Dereference => Element;
  
     function Constant_Reference
       (Container : aliased Set;
*************** is
*** 457,464 ****
        --  completes. Otherwise, the node is removed from the set and
        --  Program_Error is raised.
  
!       type Reference_Type (Element : not null access Element_Type) is private
!         with Implicit_Dereference => Element;
  
        function Reference_Preserving_Key
          (Container : aliased in out Set;
--- 458,467 ----
        --  completes. Otherwise, the node is removed from the set and
        --  Program_Error is raised.
  
!       type Reference_Type
!         (Element : not null access Element_Type) is limited private
!       with
!          Implicit_Dereference => Element;
  
        function Reference_Preserving_Key
          (Container : aliased in out Set;
diff -Nrcpad gcc-16-20251109/gcc/ada/libgnat/a-coinho.ads gcc-16-20251116/gcc/ada/libgnat/a-coinho.ads
*** gcc-16-20251109/gcc/ada/libgnat/a-coinho.ads	Sun Nov  9 22:32:44 2025
--- gcc-16-20251116/gcc/ada/libgnat/a-coinho.ads	Sun Nov 16 22:32:51 2025
*************** package Ada.Containers.Indefinite_Holder
*** 71,82 ****
        Process   : not null access procedure (Element : in out Element_Type));
  
     type Constant_Reference_Type
!       (Element : not null access constant Element_Type) is private
     with
        Implicit_Dereference => Element;
  
     type Reference_Type
!      (Element : not null access Element_Type) is private
     with
        Implicit_Dereference => Element;
  
--- 71,82 ----
        Process   : not null access procedure (Element : in out Element_Type));
  
     type Constant_Reference_Type
!       (Element : not null access constant Element_Type) is limited private
     with
        Implicit_Dereference => Element;
  
     type Reference_Type
!      (Element : not null access Element_Type) is limited private
     with
        Implicit_Dereference => Element;
  
diff -Nrcpad gcc-16-20251109/gcc/ada/libgnat/a-coinho__shared.ads gcc-16-20251116/gcc/ada/libgnat/a-coinho__shared.ads
*** gcc-16-20251109/gcc/ada/libgnat/a-coinho__shared.ads	Sun Nov  9 22:32:44 2025
--- gcc-16-20251116/gcc/ada/libgnat/a-coinho__shared.ads	Sun Nov 16 22:32:51 2025
*************** package Ada.Containers.Indefinite_Holder
*** 76,87 ****
        Process   : not null access procedure (Element : in out Element_Type));
  
     type Constant_Reference_Type
!       (Element : not null access constant Element_Type) is private
     with
        Implicit_Dereference => Element;
  
     type Reference_Type
!      (Element : not null access Element_Type) is private
     with
        Implicit_Dereference => Element;
  
--- 76,87 ----
        Process   : not null access procedure (Element : in out Element_Type));
  
     type Constant_Reference_Type
!      (Element : not null access constant Element_Type) is limited private
     with
        Implicit_Dereference => Element;
  
     type Reference_Type
!      (Element : not null access Element_Type) is limited private
     with
        Implicit_Dereference => Element;
  
diff -Nrcpad gcc-16-20251109/gcc/ada/libgnat/a-coinve.ads gcc-16-20251116/gcc/ada/libgnat/a-coinve.ads
*** gcc-16-20251109/gcc/ada/libgnat/a-coinve.ads	Sun Nov  9 22:32:44 2025
--- gcc-16-20251116/gcc/ada/libgnat/a-coinve.ads	Sun Nov 16 22:32:51 2025
*************** is
*** 120,130 ****
     procedure Clear (Container : in out Vector);
  
     type Constant_Reference_Type
!       (Element : not null access constant Element_Type) is private
     with
        Implicit_Dereference => Element;
  
!    type Reference_Type (Element : not null access Element_Type) is private
     with
        Implicit_Dereference => Element;
  
--- 120,131 ----
     procedure Clear (Container : in out Vector);
  
     type Constant_Reference_Type
!      (Element : not null access constant Element_Type) is limited private
     with
        Implicit_Dereference => Element;
  
!    type Reference_Type
!      (Element : not null access Element_Type) is limited private
     with
        Implicit_Dereference => Element;
  
diff -Nrcpad gcc-16-20251109/gcc/ada/libgnat/a-comutr.ads gcc-16-20251116/gcc/ada/libgnat/a-comutr.ads
*** gcc-16-20251109/gcc/ada/libgnat/a-comutr.ads	Sun Nov  9 22:32:44 2025
--- gcc-16-20251116/gcc/ada/libgnat/a-comutr.ads	Sun Nov 16 22:32:51 2025
*************** is
*** 107,118 ****
        Process   : not null access procedure (Element : in out Element_Type));
  
     type Constant_Reference_Type
!      (Element : not null access constant Element_Type) is private
!         with Implicit_Dereference => Element;
  
     type Reference_Type
!      (Element : not null access Element_Type) is private
!         with Implicit_Dereference => Element;
  
     function Constant_Reference
       (Container : aliased Tree;
--- 107,120 ----
        Process   : not null access procedure (Element : in out Element_Type));
  
     type Constant_Reference_Type
!      (Element : not null access constant Element_Type) is limited private
!    with
!       Implicit_Dereference => Element;
  
     type Reference_Type
!      (Element : not null access Element_Type) is limited private
!    with
!       Implicit_Dereference => Element;
  
     function Constant_Reference
       (Container : aliased Tree;
diff -Nrcpad gcc-16-20251109/gcc/ada/libgnat/a-convec.ads gcc-16-20251116/gcc/ada/libgnat/a-convec.ads
*** gcc-16-20251109/gcc/ada/libgnat/a-convec.ads	Sun Nov  9 22:32:44 2025
--- gcc-16-20251116/gcc/ada/libgnat/a-convec.ads	Sun Nov 16 22:32:51 2025
*************** is
*** 291,302 ****
     --  successful completion of this operation.
  
     type Constant_Reference_Type
!       (Element : not null access constant Element_Type) is
!    private
     with
        Implicit_Dereference => Element;
  
!    type Reference_Type (Element : not null access Element_Type) is private
     with
        Implicit_Dereference => Element;
  
--- 291,302 ----
     --  successful completion of this operation.
  
     type Constant_Reference_Type
!      (Element : not null access constant Element_Type) is limited private
     with
        Implicit_Dereference => Element;
  
!    type Reference_Type
!      (Element : not null access Element_Type) is limited private
     with
        Implicit_Dereference => Element;
  
diff -Nrcpad gcc-16-20251109/gcc/ada/libgnat/a-coorma.ads gcc-16-20251116/gcc/ada/libgnat/a-coorma.ads
*** gcc-16-20251109/gcc/ada/libgnat/a-coorma.ads	Sun Nov  9 22:32:44 2025
--- gcc-16-20251116/gcc/ada/libgnat/a-coorma.ads	Sun Nov 16 22:32:51 2025
*************** is
*** 108,118 ****
                     procedure (Key : Key_Type; Element : in out Element_Type));
  
     type Constant_Reference_Type
!       (Element : not null access constant Element_Type) is private
     with
        Implicit_Dereference => Element;
  
!    type Reference_Type (Element : not null access Element_Type) is private
     with
        Implicit_Dereference => Element;
  
--- 108,119 ----
                     procedure (Key : Key_Type; Element : in out Element_Type));
  
     type Constant_Reference_Type
!      (Element : not null access constant Element_Type) is limited private
     with
        Implicit_Dereference => Element;
  
!    type Reference_Type
!      (Element : not null access Element_Type) is limited private
     with
        Implicit_Dereference => Element;
  
diff -Nrcpad gcc-16-20251109/gcc/ada/libgnat/a-coormu.ads gcc-16-20251116/gcc/ada/libgnat/a-coormu.ads
*** gcc-16-20251109/gcc/ada/libgnat/a-coormu.ads	Sun Nov  9 22:32:44 2025
--- gcc-16-20251116/gcc/ada/libgnat/a-coormu.ads	Sun Nov 16 22:32:51 2025
*************** is
*** 132,139 ****
     --  with elements") will raise Program_Error.
  
     type Constant_Reference_Type
!      (Element : not null access constant Element_Type) is private
!         with Implicit_Dereference => Element;
  
     function Constant_Reference
       (Container : aliased Set;
--- 132,140 ----
     --  with elements") will raise Program_Error.
  
     type Constant_Reference_Type
!      (Element : not null access constant Element_Type) is limited private
!    with
!       Implicit_Dereference => Element;
  
     function Constant_Reference
       (Container : aliased Set;
diff -Nrcpad gcc-16-20251109/gcc/ada/libgnat/a-coorse.ads gcc-16-20251116/gcc/ada/libgnat/a-coorse.ads
*** gcc-16-20251109/gcc/ada/libgnat/a-coorse.ads	Sun Nov  9 22:32:44 2025
--- gcc-16-20251116/gcc/ada/libgnat/a-coorse.ads	Sun Nov 16 22:32:51 2025
*************** is
*** 99,106 ****
        Process  : not null access procedure (Element : Element_Type));
  
     type Constant_Reference_Type
!       (Element : not null access constant Element_Type) is
!    private
     with
        Implicit_Dereference => Element;
  
--- 99,105 ----
        Process  : not null access procedure (Element : Element_Type));
  
     type Constant_Reference_Type
!       (Element : not null access constant Element_Type) is limited private
     with
        Implicit_Dereference => Element;
  
*************** is
*** 290,296 ****
           Process   : not null access
                         procedure (Element : in out Element_Type));
  
!       type Reference_Type (Element : not null access Element_Type) is private
        with
           Implicit_Dereference => Element;
  
--- 289,296 ----
           Process   : not null access
                         procedure (Element : in out Element_Type));
  
!       type Reference_Type
!         (Element : not null access Element_Type) is limited private
        with
           Implicit_Dereference => Element;
  
diff -Nrcpad gcc-16-20251109/gcc/ada/libgnat/g-crc32.ads gcc-16-20251116/gcc/ada/libgnat/g-crc32.ads
*** gcc-16-20251109/gcc/ada/libgnat/g-crc32.ads	Sun Nov  9 22:32:44 2025
--- gcc-16-20251116/gcc/ada/libgnat/g-crc32.ads	Sun Nov 16 22:32:51 2025
*************** with Ada.Streams;
*** 58,64 ****
  with Interfaces;
  with System.CRC32;
  
! package GNAT.CRC32 is
  
     subtype CRC32 is System.CRC32.CRC32;
     --  Used to represent CRC32 values, which are 32 bit bit-strings
--- 58,64 ----
  with Interfaces;
  with System.CRC32;
  
! package GNAT.CRC32 with Pure, Always_Terminates is
  
     subtype CRC32 is System.CRC32.CRC32;
     --  Used to represent CRC32 values, which are 32 bit bit-strings
diff -Nrcpad gcc-16-20251109/gcc/ada/libgnat/s-crc32.ads gcc-16-20251116/gcc/ada/libgnat/s-crc32.ads
*** gcc-16-20251109/gcc/ada/libgnat/s-crc32.ads	Sun Nov  9 22:32:44 2025
--- gcc-16-20251116/gcc/ada/libgnat/s-crc32.ads	Sun Nov 16 22:32:52 2025
***************
*** 56,62 ****
  
  with Interfaces;
  
! package System.CRC32 is
  
     type CRC32 is new Interfaces.Unsigned_32;
     --  Used to represent CRC32 values, which are 32 bit bit-strings
--- 56,62 ----
  
  with Interfaces;
  
! package System.CRC32 with Pure, Always_Terminates is
  
     type CRC32 is new Interfaces.Unsigned_32;
     --  Used to represent CRC32 values, which are 32 bit bit-strings
diff -Nrcpad gcc-16-20251109/gcc/ada/raise-gcc.c gcc-16-20251116/gcc/ada/raise-gcc.c
*** gcc-16-20251109/gcc/ada/raise-gcc.c	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/ada/raise-gcc.c	Sun Nov 16 22:32:52 2025
*************** db_indent (int requests)
*** 274,279 ****
--- 274,285 ----
      fprintf (stderr, "%*s", current_indentation_level * DB_INDENT_UNIT, " ");
  }
  
+ /* If ATTRIBUTE_PRINTF_2 is not available, assume a printf format
+    attribute a-la gcc such as:  */
+ #ifndef ATTRIBUTE_PRINTF_2
+ #define ATTRIBUTE_PRINTF_2 __attribute((format(printf, 2, 3)))
+ #endif
+ 
  static void ATTRIBUTE_PRINTF_2
  db (int db_code, const char * msg_format, ...)
  {
diff -Nrcpad gcc-16-20251109/gcc/ada/sem_ch13.adb gcc-16-20251116/gcc/ada/sem_ch13.adb
*** gcc-16-20251109/gcc/ada/sem_ch13.adb	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/ada/sem_ch13.adb	Sun Nov 16 22:32:52 2025
*************** package body Sem_Ch13 is
*** 7108,7114 ****
                 Set_Has_Alignment_Clause (U_Ent);
  
                 --  Tagged type case, check for attempt to set alignment to a
!                --  value greater than Max_Align, and reset if so.
  
                 if Is_Tagged_Type (U_Ent) and then Align > Max_Align then
                    Error_Msg_N
--- 7108,7114 ----
                 Set_Has_Alignment_Clause (U_Ent);
  
                 --  Tagged type case, check for attempt to set alignment to a
!                --  value greater than Maximum_Alignment, and reset if so.
  
                 if Is_Tagged_Type (U_Ent) and then Align > Max_Align then
                    Error_Msg_N
diff -Nrcpad gcc-16-20251109/gcc/ada/sem_ch3.adb gcc-16-20251116/gcc/ada/sem_ch3.adb
*** gcc-16-20251109/gcc/ada/sem_ch3.adb	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/ada/sem_ch3.adb	Sun Nov 16 22:32:52 2025
*************** package body Sem_Ch3 is
*** 4415,4424 ****
--- 4415,4431 ----
     begin
        if Constant_Present (N) then
           Mutate_Ekind (Id, E_Constant);
+          Set_Is_True_Constant (Id);
        else
           Mutate_Ekind (Id, E_Variable);
        end if;
  
+       --  Indicate this is not set in source. Certainly true for constants, and
+       --  true for variables so far (will be reset for a variable if and when
+       --  we encounter a modification in the source).
+ 
+       Set_Never_Set_In_Source (Id);
+ 
        --  There are three kinds of implicit types generated by an
        --  object declaration:
  
*************** package body Sem_Ch3 is
*** 4701,4717 ****
              Set_Etype (E, T);
           end if;
  
-          --  If an initialization expression is present, then we set the
-          --  Is_True_Constant flag. It will be reset if this is a variable
-          --  and it is indeed modified.
- 
-          Set_Is_True_Constant (Id, True);
- 
           --  If we are analyzing a constant declaration, set its completion
           --  flag after analyzing and resolving the expression.
  
           if Constant_Present (N) then
              Set_Has_Completion (Id);
           end if;
  
           --  Set type and resolve (type may be overridden later on)
--- 4708,4730 ----
              Set_Etype (E, T);
           end if;
  
           --  If we are analyzing a constant declaration, set its completion
           --  flag after analyzing and resolving the expression.
  
           if Constant_Present (N) then
              Set_Has_Completion (Id);
+ 
+          --  Set Has_Initial_Value if initialization expression present. Note
+          --  that if there is no initializing expression, we leave the state
+          --  of this flag unchanged (usually it will be False, but notably in
+          --  the case of exception choice variables, it will already be true).
+ 
+          --  Set Is_True_Constant if initialization expression is present. It
+          --  will be reset if the variable is indeed modified.
+ 
+          else
+             Set_Has_Initial_Value (Id);
+             Set_Is_True_Constant (Id);
           end if;
  
           --  Set type and resolve (type may be overridden later on)
*************** package body Sem_Ch3 is
*** 5120,5134 ****
                    --  that subsequent uses of this entity are not rejected
                    --  via the same mechanism that (correctly) rejects
                    --  "X : Integer := X;".
- 
-                   if Constant_Present (N) then
-                      Set_Is_True_Constant (Id);
-                   else
-                      if Present (E) then
-                         Set_Has_Initial_Value (Id);
-                      end if;
-                   end if;
- 
                    goto Leave;
                 end if;
  
--- 5133,5138 ----
*************** package body Sem_Ch3 is
*** 5261,5303 ****
  
        Check_Wide_Character_Restriction (T, Object_Definition (N));
  
-       --  Indicate this is not set in source. Certainly true for constants, and
-       --  true for variables so far (will be reset for a variable if and when
-       --  we encounter a modification in the source).
- 
-       Set_Never_Set_In_Source (Id);
- 
        --  Now establish the proper kind and type of the object
  
        if Ekind (Id) = E_Void then
           Reinit_Field_To_Zero (Id, F_Next_Inlined_Subprogram);
        end if;
  
!       if Constant_Present (N) then
!          Set_Is_True_Constant (Id);
! 
!       else
!          --  A variable is set as shared passive if it appears in a shared
!          --  passive package, and is at the outer level. This is not done for
!          --  entities generated during expansion, because those are always
!          --  manipulated locally.
! 
!          if Is_Shared_Passive (Current_Scope)
!            and then Is_Library_Level_Entity (Id)
!            and then Comes_From_Source (Id)
!          then
!             Set_Is_Shared_Passive (Id);
!             Check_Shared_Var (Id, T, N);
!          end if;
! 
!          --  Set Has_Initial_Value if initializing expression present. Note
!          --  that if there is no initializing expression, we leave the state
!          --  of this flag unchanged (usually it will be False, but notably in
!          --  the case of exception choice variables, it will already be true).
  
!          if Present (E) then
!             Set_Has_Initial_Value (Id);
!          end if;
        end if;
  
        --  Set the SPARK mode from the current context (may be overwritten later
--- 5265,5288 ----
  
        Check_Wide_Character_Restriction (T, Object_Definition (N));
  
        --  Now establish the proper kind and type of the object
  
        if Ekind (Id) = E_Void then
           Reinit_Field_To_Zero (Id, F_Next_Inlined_Subprogram);
        end if;
  
!       --  A variable is set as shared passive if it appears in a shared
!       --  passive package, and is at the outer level. This is not done for
!       --  entities generated during expansion, because those are always
!       --  manipulated locally.
  
!       if not Constant_Present (N)
!         and then Is_Shared_Passive (Current_Scope)
!         and then Is_Library_Level_Entity (Id)
!         and then Comes_From_Source (Id)
!       then
!          Set_Is_Shared_Passive (Id);
!          Check_Shared_Var (Id, T, N);
        end if;
  
        --  Set the SPARK mode from the current context (may be overwritten later
diff -Nrcpad gcc-16-20251109/gcc/ada/sem_ch5.adb gcc-16-20251116/gcc/ada/sem_ch5.adb
*** gcc-16-20251109/gcc/ada/sem_ch5.adb	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/ada/sem_ch5.adb	Sun Nov 16 22:32:52 2025
*************** package body Sem_Ch5 is
*** 420,426 ****
        end if;
  
        Analyze (Lhs);
-       Analyze (Rhs);
  
        --  Ensure that we never do an assignment on a variable marked as
        --  Is_Safe_To_Reevaluate.
--- 420,425 ----
*************** package body Sem_Ch5 is
*** 434,524 ****
  
        T1 := Etype (Lhs);
  
        --  In the most general case, both Lhs and Rhs can be overloaded, and we
        --  must compute the intersection of the possible types on each side.
  
!       if Is_Overloaded (Lhs) then
!          declare
!             I  : Interp_Index;
!             It : Interp;
  
!          begin
!             T1 := Any_Type;
!             Get_First_Interp (Lhs, I, It);
  
!             while Present (It.Typ) loop
  
!                --  An indexed component with generalized indexing is always
!                --  overloaded with the corresponding dereference. Discard the
!                --  interpretation that yields a reference type, which is not
!                --  assignable.
  
!                if Nkind (Lhs) = N_Indexed_Component
!                  and then Present (Generalized_Indexing (Lhs))
!                  and then Has_Implicit_Dereference (It.Typ)
!                then
!                   null;
  
!                elsif Has_Compatible_Type (Rhs, It.Typ) then
!                   if T1 = Any_Type then
!                      T1 := It.Typ;
!                   else
!                      --  An explicit dereference is overloaded if the prefix
!                      --  is. Try to remove the ambiguity on the prefix, the
!                      --  error will be posted there if the ambiguity is real.
  
!                      if Nkind (Lhs) = N_Explicit_Dereference then
!                         declare
!                            PI    : Interp_Index;
!                            PI1   : Interp_Index := 0;
!                            PIt   : Interp;
!                            Found : Boolean;
  
!                         begin
!                            Found := False;
!                            Get_First_Interp (Prefix (Lhs), PI, PIt);
  
!                            while Present (PIt.Typ) loop
!                               if Is_Access_Type (PIt.Typ)
!                                 and then Has_Compatible_Type
!                                            (Rhs, Designated_Type (PIt.Typ))
!                               then
!                                  if Found then
!                                     PIt :=
!                                       Disambiguate (Prefix (Lhs),
!                                         PI1, PI, Any_Type);
  
-                                     if PIt = No_Interp then
-                                        Error_Msg_N
-                                          ("ambiguous left-hand side in "
-                                           & "assignment", Lhs);
                                         exit;
                                      else
!                                        Resolve (Prefix (Lhs), PIt.Typ);
                                      end if;
- 
-                                     exit;
-                                  else
-                                     Found := True;
-                                     PI1 := PI;
                                   end if;
-                               end if;
  
!                               Get_Next_Interp (PI, PIt);
!                            end loop;
!                         end;
  
!                      else
!                         Error_Msg_N
!                           ("ambiguous left-hand side in assignment", Lhs);
!                         exit;
                       end if;
                    end if;
-                end if;
  
!                Get_Next_Interp (I, It);
!             end loop;
!          end;
  
           if T1 = Any_Type then
              Error_Msg_N
--- 433,575 ----
  
        T1 := Etype (Lhs);
  
+       if not Is_Overloaded (Lhs) then
+          Analyze (Rhs);
+ 
        --  In the most general case, both Lhs and Rhs can be overloaded, and we
        --  must compute the intersection of the possible types on each side.
+       --  Note that only nonlimited interpretations are considered (see
+       --  AI22-0112, RM 5.2(4/6)).
  
!       else
!          --  When there are target names ("@") present in the expression,
!          --  the assignment's left-hand side must be resolved as a complete
!          --  context (RM 8.6(9.1/5)), and the determined type will then be used
!          --  to resolve the right-hand side expression.
  
!          if Has_Target_Names (N) then
!             declare
!                I  : Interp_Index;
!                It : Interp;
  
!             begin
!                T1 := Any_Type;
!                Get_First_Interp (Lhs, I, It);
  
!                while Present (It.Typ) loop
!                   if Is_Limited_Type (It.Typ) then
!                      Remove_Interp (I);
!                   elsif T1 = Any_Type then
!                      T1 := It.Typ;
!                   end if;
  
!                   Get_Next_Interp (I, It);
!                end loop;
  
!                if Is_Ambiguous_Operand (Lhs, Report_Errors  => False) then
!                   Error_Msg_N ("ambiguous left-hand side in assignment", Lhs);
  
!                   Kill_Lhs;
!                   goto Leave;
!                end if;
  
!                if T1 = Any_Type then
!                   Error_Msg_N
!                     ("no valid types for left-hand side for assignment", Lhs);
!                   Kill_Lhs;
!                   goto Leave;
!                end if;
  
!             end;
! 
!             --  We delay analyzing Rhs until Lhs has been resolved, so that the
!             --  type of Lhs has been determined and can be used for the type of
!             --  target names occurring in Rhs.
! 
!             Analyze (Rhs);
! 
!          --  Case where Lhs is overloaded, but Rhs does not have target names
! 
!          else
!             Analyze (Rhs);
! 
!             declare
!                I  : Interp_Index;
!                It : Interp;
! 
!             begin
!                T1 := Any_Type;
!                Get_First_Interp (Lhs, I, It);
! 
!                while Present (It.Typ) loop
!                   --  AI22-0112 restores the Ada 95 rule that excludes limited
!                   --  types from consideration during resolution of the target
!                   --  variable in assignment statements.
! 
!                   if Is_Limited_Type (It.Typ) then
!                      Remove_Interp (I);
! 
!                   elsif Has_Compatible_Type (Rhs, It.Typ) then
!                      if T1 = Any_Type then
!                         T1 := It.Typ;
!                      else
!                         --  An explicit dereference is overloaded if the prefix
!                         --  is. Try to remove the ambiguity on the prefix, the
!                         --  error will be posted there if ambiguity is real.
! 
!                         if Nkind (Lhs) = N_Explicit_Dereference then
!                            declare
!                               PI    : Interp_Index;
!                               PI1   : Interp_Index := 0;
!                               PIt   : Interp;
!                               Found : Boolean;
! 
!                            begin
!                               Found := False;
!                               Get_First_Interp (Prefix (Lhs), PI, PIt);
! 
!                               while Present (PIt.Typ) loop
!                                  if Is_Access_Type (PIt.Typ)
!                                    and then Has_Compatible_Type
!                                               (Rhs, Designated_Type (PIt.Typ))
!                                  then
!                                     if Found then
!                                        PIt :=
!                                          Disambiguate (Prefix (Lhs),
!                                            PI1, PI, Any_Type);
! 
!                                        if PIt = No_Interp then
!                                           Error_Msg_N
!                                             ("ambiguous left-hand side in "
!                                              & "assignment", Lhs);
!                                           exit;
!                                        else
!                                           Resolve (Prefix (Lhs), PIt.Typ);
!                                        end if;
  
                                         exit;
                                      else
!                                        Found := True;
!                                        PI1 := PI;
                                      end if;
                                   end if;
  
!                                  Get_Next_Interp (PI, PIt);
!                               end loop;
!                            end;
  
!                         else
!                            Error_Msg_N
!                              ("ambiguous left-hand side in assignment", Lhs);
!                            exit;
!                         end if;
                       end if;
                    end if;
  
!                   Get_Next_Interp (I, It);
!                end loop;
!             end;
!          end if;
  
           if T1 = Any_Type then
              Error_Msg_N
diff -Nrcpad gcc-16-20251109/gcc/ada/sem_eval.adb gcc-16-20251116/gcc/ada/sem_eval.adb
*** gcc-16-20251109/gcc/ada/sem_eval.adb	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/ada/sem_eval.adb	Sun Nov 16 22:32:52 2025
*************** package body Sem_Eval is
*** 5151,5158 ****
  
     procedure Fold_Uint (N : Node_Id; Val : Uint; Static : Boolean) is
        Loc : constant Source_Ptr := Sloc (N);
!       Typ : Entity_Id  := Etype (N);
!       Ent : Entity_Id;
  
     begin
        if Raises_Constraint_Error (N) then
--- 5151,5160 ----
  
     procedure Fold_Uint (N : Node_Id; Val : Uint; Static : Boolean) is
        Loc : constant Source_Ptr := Sloc (N);
! 
!       Actual_Typ : Entity_Id;
!       Ent        : Entity_Id;
!       Typ        : Entity_Id;
  
     begin
        if Raises_Constraint_Error (N) then
*************** package body Sem_Eval is
*** 5160,5178 ****
           return;
        end if;
  
        --  If we are folding a named number, retain the entity in the literal
        --  in the original tree.
  
        if Is_Entity_Name (N) and then Ekind (Entity (N)) = E_Named_Integer then
           Ent := Entity (N);
        else
           Ent := Empty;
        end if;
  
-       if Is_Private_Type (Typ) then
-          Typ := Full_View (Typ);
-       end if;
- 
        --  For a result of type integer, substitute an N_Integer_Literal node
        --  for the result of the compile time evaluation of the expression.
        --  Set a link to the original named number when not in a generic context
--- 5162,5184 ----
           return;
        end if;
  
+       Typ := Etype (N);
+ 
+       if Is_Private_Type (Typ) then
+          Typ := Full_View (Typ);
+       end if;
+ 
        --  If we are folding a named number, retain the entity in the literal
        --  in the original tree.
  
        if Is_Entity_Name (N) and then Ekind (Entity (N)) = E_Named_Integer then
+          Actual_Typ := Universal_Integer;
           Ent := Entity (N);
        else
+          Actual_Typ := Typ;
           Ent := Empty;
        end if;
  
        --  For a result of type integer, substitute an N_Integer_Literal node
        --  for the result of the compile time evaluation of the expression.
        --  Set a link to the original named number when not in a generic context
*************** package body Sem_Eval is
*** 5202,5209 ****
  
        Analyze (N);
        Set_Is_Static_Expression (N, Static);
!       Set_Etype (N, Typ);
!       Resolve (N);
        Set_Is_Static_Expression (N, Static);
     end Fold_Uint;
  
--- 5208,5215 ----
  
        Analyze (N);
        Set_Is_Static_Expression (N, Static);
!       Set_Etype (N, Actual_Typ);
!       Resolve (N, Typ);
        Set_Is_Static_Expression (N, Static);
     end Fold_Uint;
  
*************** package body Sem_Eval is
*** 5214,5220 ****
     procedure Fold_Ureal (N : Node_Id; Val : Ureal; Static : Boolean) is
        Loc : constant Source_Ptr := Sloc (N);
        Typ : constant Entity_Id  := Etype (N);
!       Ent : Entity_Id;
  
     begin
        if Raises_Constraint_Error (N) then
--- 5220,5228 ----
     procedure Fold_Ureal (N : Node_Id; Val : Ureal; Static : Boolean) is
        Loc : constant Source_Ptr := Sloc (N);
        Typ : constant Entity_Id  := Etype (N);
! 
!       Actual_Typ : Entity_Id;
!       Ent        : Entity_Id;
  
     begin
        if Raises_Constraint_Error (N) then
*************** package body Sem_Eval is
*** 5226,5233 ****
--- 5234,5243 ----
        --  in the original tree.
  
        if Is_Entity_Name (N) and then Ekind (Entity (N)) = E_Named_Real then
+          Actual_Typ := Universal_Real;
           Ent := Entity (N);
        else
+          Actual_Typ := Typ;
           Ent := Empty;
        end if;
  
*************** package body Sem_Eval is
*** 5251,5258 ****
  
        Analyze (N);
        Set_Is_Static_Expression (N, Static);
!       Set_Etype (N, Typ);
!       Resolve (N);
        Set_Analyzed (N);
        Set_Is_Static_Expression (N, Static);
     end Fold_Ureal;
--- 5261,5268 ----
  
        Analyze (N);
        Set_Is_Static_Expression (N, Static);
!       Set_Etype (N, Actual_Typ);
!       Resolve (N, Typ);
        Set_Analyzed (N);
        Set_Is_Static_Expression (N, Static);
     end Fold_Ureal;
diff -Nrcpad gcc-16-20251109/gcc/ada/sem_prag.adb gcc-16-20251116/gcc/ada/sem_prag.adb
*** gcc-16-20251109/gcc/ada/sem_prag.adb	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/ada/sem_prag.adb	Sun Nov 16 22:32:52 2025
*************** package body Sem_Prag is
*** 11995,12000 ****
--- 11995,12020 ----
              if Is_First_Subtype (E) and then Etype (E) /= E then
                 Suppress_Unsuppress_Echeck (Etype (E), C);
              end if;
+ 
+             --  For the alignment check of an object with an address clause,
+             --  we want the pragma to be taken into account even if it comes
+             --  after the address clause:
+ 
+             --    A : Integer;
+             --    for A'Address use ...
+             --    pragma Suppress (Alignment_Check, A);
+ 
+             --  When there is also an alignment clause, the check is generated
+             --  unconditionally, see Analyze_Attribute_Definition_Clause.
+ 
+             if C = Alignment_Check
+               and then not Is_Type (E)
+               and then Present (Address_Clause (E))
+               and then No (Alignment_Clause (E))
+             then
+                Set_Check_Address_Alignment
+                  (Address_Clause (E), not Suppress_Case);
+             end if;
           end Suppress_Unsuppress_Echeck;
  
        --  Start of processing for Process_Suppress_Unsuppress
diff -Nrcpad gcc-16-20251109/gcc/ada/sem_res.adb gcc-16-20251116/gcc/ada/sem_res.adb
*** gcc-16-20251109/gcc/ada/sem_res.adb	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/ada/sem_res.adb	Sun Nov 16 22:32:52 2025
*************** package body Sem_Res is
*** 11310,11321 ****
  
              if Den /= 1 then
  
!                --  For a source program literal for a decimal fixed-point type,
!                --  this is statically illegal (RM 4.9(36)).
  
!                if Is_Decimal_Fixed_Point_Type (Typ)
                   and then Actual_Typ = Universal_Real
!                  and then Comes_From_Source (N)
                 then
                    Error_Msg_N ("value has extraneous low order digits", N);
                 end if;
--- 11310,11322 ----
  
              if Den /= 1 then
  
!                --  This is illegal for the value of a static expression of type
!                --  universal_real if the expected type is a decimal fixed-point
!                --  type (RM 4.9(36/2)).
  
!                if Is_OK_Static_Expression (N)
                   and then Actual_Typ = Universal_Real
!                  and then Is_Decimal_Fixed_Point_Type (Typ)
                 then
                    Error_Msg_N ("value has extraneous low order digits", N);
                 end if;
*************** package body Sem_Res is
*** 13741,13748 ****
  
              --  Report the first two interpretations
  
!             Report_Interpretation (Operand, It.Nam, It.Typ);
!             Report_Interpretation (Operand, N1, T1);
  
              return True;
           end if;
--- 13742,13751 ----
  
              --  Report the first two interpretations
  
!             if Report_Errors then
!                Report_Interpretation (Operand, It.Nam, It.Typ);
!                Report_Interpretation (Operand, N1, T1);
!             end if;
  
              return True;
           end if;
diff -Nrcpad gcc-16-20251109/gcc/ada/sigtramp-vxworks-target.h gcc-16-20251116/gcc/ada/sigtramp-vxworks-target.h
*** gcc-16-20251109/gcc/ada/sigtramp-vxworks-target.h	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/ada/sigtramp-vxworks-target.h	Sun Nov 16 22:32:52 2025
***************
*** 79,85 ****
  #undef TCR
  #define TCR(S) TAB(CR(S))
  
! /* REGNO constants, dwarf column numbers for registers of interest.  */
  
  #if defined (__PPC__)
  
--- 79,98 ----
  #undef TCR
  #define TCR(S) TAB(CR(S))
  
! /* REGNO constants, dwarf column numbers for registers of interest.
! 
!    In the REGNO definitions that follow, when there is a register
!    number argument N, the use of parens around N in the result
!    is to be avoided.  These eventually expand as a register column
!    number in a .cfi_offset directive within an "asm" statement,
!    through stringification.  Parens in the macro expansion would
!    end up in the result and yield code such as
! 
!      asm(".cfi_offset (0), <offset-expr>")
! 
!    The parens impair readability here, and could even cause
!    processing errors from llvm compilers that interpret the
!    directives.  */
  
  #if defined (__PPC__)
  
***************
*** 87,93 ****
  #define REGNO_CTR 66
  #define REGNO_CR  70
  #define REGNO_XER 76
! #define REGNO_GR(N) (N)
  
  #define REGNO_PC  67  /* ARG_POINTER_REGNUM  */
  
--- 100,106 ----
  #define REGNO_CTR 66
  #define REGNO_CR  70
  #define REGNO_XER 76
! #define REGNO_GR(N) N
  
  #define REGNO_PC  67  /* ARG_POINTER_REGNUM  */
  
***************
*** 95,106 ****
  
  #elif defined (ARMEL)
  
! #define REGNO_G_REG_OFFSET(N) (N)
  
  #define FUNCTION "%function"
  
  #ifdef __aarch64__
! #define REGNO_PC_OFFSET  96  /* DWARF_ALT_FRAME_RETURN_COLUMN */
  #else
  #define REGNO_PC_OFFSET  15  /* PC_REGNUM */
  #endif
--- 108,127 ----
  
  #elif defined (ARMEL)
  
! #define REGNO_G_REG_OFFSET(N) N
  
  #define FUNCTION "%function"
  
  #ifdef __aarch64__
! 
! /* For the return column, GCC has DWARF_ALT_FRAME_RETURN_COLUMN (96)
!    while libunwind, used with llvm toolchains, implements the PC (!= LR)
!    ABI column 32.  */
! #ifdef __llvm__
! #define REGNO_PC_OFFSET 32
! #else
! #define REGNO_PC_OFFSET 96 /* DWARF_ALT_FRAME_RETURN_COLUMN */
! #endif
  #else
  #define REGNO_PC_OFFSET  15  /* PC_REGNUM */
  #endif
diff -Nrcpad gcc-16-20251109/gcc/ada/sigtramp-vxworks.c gcc-16-20251116/gcc/ada/sigtramp-vxworks.c
*** gcc-16-20251109/gcc/ada/sigtramp-vxworks.c	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/ada/sigtramp-vxworks.c	Sun Nov 16 22:32:52 2025
*************** void __gnat_set_is_vxsim(int val) {
*** 114,122 ****
  }
  #endif
  
  void __gnat_sigtramp (int signo, void *si, void *sc,
! 		      __sigtramphandler_t * handler)
!      __attribute__((optimize(2)));
  
  void __gnat_sigtramp (int signo, void *si, void *sc,
  		      __sigtramphandler_t * handler)
--- 114,130 ----
  }
  #endif
  
+ /* When one is known for the compiler processing this runtime file,
+    a function attribute requesting optimization for the said function.
+    Assume __has_attribute is available for such queries, valid for at
+    least gcc and clang.  */
+ #if __has_attribute(optimize)
+ #define OPTIMIZE_O2  __attribute__((optimize(2)));
+ #else
+ #define OPTIMIZE_O2
+ #endif
  void __gnat_sigtramp (int signo, void *si, void *sc,
! 		      __sigtramphandler_t * handler) OPTIMIZE_O2;
  
  void __gnat_sigtramp (int signo, void *si, void *sc,
  		      __sigtramphandler_t * handler)
diff -Nrcpad gcc-16-20251109/gcc/ada/treepr.adb gcc-16-20251116/gcc/ada/treepr.adb
*** gcc-16-20251109/gcc/ada/treepr.adb	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/ada/treepr.adb	Sun Nov 16 22:32:52 2025
*************** package body Treepr is
*** 140,146 ****
     procedure Print_Init;
     --  Initialize for printing of tree with descendants
  
!    procedure Print_End_Span (N : Node_Id);
     --  Print contents of End_Span field of node N. The format includes the
     --  implicit source location as well as the value of the field.
  
--- 140,149 ----
     procedure Print_Init;
     --  Initialize for printing of tree with descendants
  
!    procedure Print_End_Span
!      (Prefix : String;
!       Field  : Node_Field;
!       N      : Node_Id);
     --  Print contents of End_Span field of node N. The format includes the
     --  implicit source location as well as the value of the field.
  
*************** package body Treepr is
*** 605,614 ****
     -- Print_End_Span --
     --------------------
  
!    procedure Print_End_Span (N : Node_Id) is
        Val : constant Uint := End_Span (N);
  
     begin
        UI_Write (Val);
        Write_Str (" (Uint = ");
        Write_Str (UI_Image (Val));
--- 608,623 ----
     -- Print_End_Span --
     --------------------
  
!    procedure Print_End_Span
!      (Prefix : String;
!       Field  : Node_Field;
!       N      : Node_Id)
!    is
        Val : constant Uint := End_Span (N);
  
     begin
+       Write_Str (Prefix);
+       Write_Str (Image (Field) & " = ");
        UI_Write (Val);
        Write_Str (" (Uint = ");
        Write_Str (UI_Image (Val));
*************** package body Treepr is
*** 617,622 ****
--- 626,633 ----
        if Present (Val) then
           Write_Location (End_Location (N));
        end if;
+ 
+       Write_Eol;
     end Print_End_Span;
  
     ------------------------
*************** package body Treepr is
*** 1439,1445 ****
                       --  End_Location.
  
                       if Fields (Field_Index) = F_End_Span then
!                         Print_End_Span (N);
  
                       else
                          Print_Node_Field
--- 1450,1456 ----
                       --  End_Location.
  
                       if Fields (Field_Index) = F_End_Span then
!                         Print_End_Span (Prefix, F_End_Span, N);
  
                       else
                          Print_Node_Field
diff -Nrcpad gcc-16-20251109/gcc/ada/ttypes.ads gcc-16-20251116/gcc/ada/ttypes.ads
*** gcc-16-20251109/gcc/ada/ttypes.ads	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/ada/ttypes.ads	Sun Nov 16 22:32:52 2025
*************** package Ttypes is
*** 177,184 ****
     ----------------------------------------
  
     Maximum_Alignment : constant Pos := Set_Targ.Maximum_Alignment;
!    --  The maximum alignment, in storage units, that an object or type may
!    --  require on the target machine.
  
     System_Allocator_Alignment : constant Pos :=
                                    Set_Targ.System_Allocator_Alignment;
--- 177,186 ----
     ----------------------------------------
  
     Maximum_Alignment : constant Pos := Set_Targ.Maximum_Alignment;
!    --  The maximum default alignment, in storage units, that an object or type
!    --  may require on the target machine. The implementation must never choose
!    --  a larger alignment on its own, that is to say when it is not explicitly
!    --  requested by an alignment aspect/clause in the source code.
  
     System_Allocator_Alignment : constant Pos :=
                                    Set_Targ.System_Allocator_Alignment;
diff -Nrcpad gcc-16-20251109/gcc/analyzer/ChangeLog gcc-16-20251116/gcc/analyzer/ChangeLog
*** gcc-16-20251109/gcc/analyzer/ChangeLog	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/analyzer/ChangeLog	Sun Nov 16 22:32:52 2025
***************
*** 1,3 ****
--- 1,18 ----
+ 2025-11-12  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* program-state.cc (log_set_of_svalues):  Avoid -Wformat-security
+ 	warning when logging name.
+ 
+ 2025-11-10  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	PR other/122243
+ 	* analyzer.opt.urls: Regenerated.
+ 
+ 2025-11-10  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	PR other/122243
+ 	* analyzer.opt (fanalyzer-verbosity=): Add RejectNegative.
+ 
  2025-11-07  David Malcolm  <dmalcolm@redhat.com>
  
  	* checker-event.cc
diff -Nrcpad gcc-16-20251109/gcc/analyzer/analyzer.opt gcc-16-20251116/gcc/analyzer/analyzer.opt
*** gcc-16-20251109/gcc/analyzer/analyzer.opt	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/analyzer/analyzer.opt	Sun Nov 16 22:32:52 2025
*************** Common Var(flag_analyzer_verbose_state_c
*** 335,341 ****
  Emit more verbose descriptions of state changes in diagnostics.
  
  fanalyzer-verbosity=
! Common Joined UInteger Var(analyzer_verbosity) Init(2)
  Control which events are displayed in diagnostic paths.
  
  fdump-analyzer
--- 335,341 ----
  Emit more verbose descriptions of state changes in diagnostics.
  
  fanalyzer-verbosity=
! Common RejectNegative Joined UInteger Var(analyzer_verbosity) Init(2)
  Control which events are displayed in diagnostic paths.
  
  fdump-analyzer
diff -Nrcpad gcc-16-20251109/gcc/analyzer/analyzer.opt.urls gcc-16-20251116/gcc/analyzer/analyzer.opt.urls
*** gcc-16-20251109/gcc/analyzer/analyzer.opt.urls	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/analyzer/analyzer.opt.urls	Sun Nov 16 22:32:52 2025
*************** UrlSuffix(gcc/Static-Analyzer-Options.ht
*** 192,197 ****
--- 192,206 ----
  fanalyzer-undo-inlining
  UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-undo-inlining)
  
+ fanalyzer-verbose-edges
+ UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-verbose-edges)
+ 
+ fanalyzer-verbose-state-changes
+ UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-verbose-state-changes)
+ 
+ fanalyzer-verbosity=
+ UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-verbosity)
+ 
  fdump-analyzer
  UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer)
  
*************** UrlSuffix(gcc/Static-Analyzer-Options.ht
*** 204,212 ****
--- 213,236 ----
  fdump-analyzer-exploded-graph
  UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-exploded-graph)
  
+ fdump-analyzer-exploded-nodes
+ UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-exploded-nodes)
+ 
+ fdump-analyzer-exploded-nodes-2
+ UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-exploded-nodes-2)
+ 
+ fdump-analyzer-exploded-nodes-3
+ UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-exploded-nodes-3)
+ 
  fdump-analyzer-exploded-paths
  UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-exploded-paths)
  
+ fdump-analyzer-feasibility
+ UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-feasibility)
+ 
+ fdump-analyzer-infinite-loop
+ UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-infinite-loop)
+ 
  fdump-analyzer-json
  UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-json)
  
diff -Nrcpad gcc-16-20251109/gcc/analyzer/program-state.cc gcc-16-20251116/gcc/analyzer/program-state.cc
*** gcc-16-20251109/gcc/analyzer/program-state.cc	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/analyzer/program-state.cc	Sun Nov 16 22:32:52 2025
*************** static void
*** 1602,1608 ****
  log_set_of_svalues (logger *logger, const char *name,
  		    const svalue_set &set)
  {
!   logger->log (name);
    logger->inc_indent ();
    auto_vec<const svalue *> sval_vecs (set.elements ());
    for (svalue_set::iterator iter = set.begin ();
--- 1602,1608 ----
  log_set_of_svalues (logger *logger, const char *name,
  		    const svalue_set &set)
  {
!   logger->log ("%s", name);
    logger->inc_indent ();
    auto_vec<const svalue *> sval_vecs (set.elements ());
    for (svalue_set::iterator iter = set.begin ();
diff -Nrcpad gcc-16-20251109/gcc/builtins.cc gcc-16-20251116/gcc/builtins.cc
*** gcc-16-20251109/gcc/builtins.cc	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/builtins.cc	Sun Nov 16 22:32:52 2025
*************** expand_ifn_atomic_bit_test_and (gcall *c
*** 7076,7086 ****
        tree tcall = gimple_call_arg (call, 3 + is_atomic);
        tree fndecl = gimple_call_addr_fndecl (tcall);
        tree type = TREE_TYPE (TREE_TYPE (fndecl));
!       tree exp = build_call_nary (type, tcall, 2 + is_atomic, ptr,
! 				  make_tree (type, val),
! 				  is_atomic
! 				  ? gimple_call_arg (call, 3)
! 				  : integer_zero_node);
        result = expand_builtin (exp, gen_reg_rtx (mode), NULL_RTX,
  			       mode, !lhs);
      }
--- 7076,7088 ----
        tree tcall = gimple_call_arg (call, 3 + is_atomic);
        tree fndecl = gimple_call_addr_fndecl (tcall);
        tree type = TREE_TYPE (TREE_TYPE (fndecl));
!       tree exp;
!       if (is_atomic)
! 	exp = build_call_nary (type, tcall, 3,
! 			       ptr, make_tree (type, val),
! 			       gimple_call_arg (call, 3));
!       else
! 	exp = build_call_nary (type, tcall, 2, ptr, make_tree (type, val));
        result = expand_builtin (exp, gen_reg_rtx (mode), NULL_RTX,
  			       mode, !lhs);
      }
*************** expand_ifn_atomic_op_fetch_cmp_0 (gcall
*** 7184,7194 ****
        tree tcall = gimple_call_arg (call, 3 + is_atomic);
        tree fndecl = gimple_call_addr_fndecl (tcall);
        tree type = TREE_TYPE (TREE_TYPE (fndecl));
!       tree exp = build_call_nary (type, tcall,
! 				  2 + is_atomic, ptr, arg,
! 				  is_atomic
! 				  ? gimple_call_arg (call, 3)
! 				  : integer_zero_node);
        result = expand_builtin (exp, gen_reg_rtx (mode), NULL_RTX,
  			       mode, !lhs);
      }
--- 7186,7198 ----
        tree tcall = gimple_call_arg (call, 3 + is_atomic);
        tree fndecl = gimple_call_addr_fndecl (tcall);
        tree type = TREE_TYPE (TREE_TYPE (fndecl));
!       tree exp;
!       if (is_atomic)
! 	exp = build_call_nary (type, tcall, 3,
! 			       ptr, arg,
! 			       gimple_call_arg (call, 3));
!       else
! 	exp = build_call_nary (type, tcall, 2, ptr, arg);
        result = expand_builtin (exp, gen_reg_rtx (mode), NULL_RTX,
  			       mode, !lhs);
      }
diff -Nrcpad gcc-16-20251109/gcc/c/ChangeLog gcc-16-20251116/gcc/c/ChangeLog
*** gcc-16-20251109/gcc/c/ChangeLog	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/c/ChangeLog	Sun Nov 16 22:32:52 2025
***************
*** 1,3 ****
--- 1,14 ----
+ 2025-11-10  Alejandro Colomar  <alx@kernel.org>
+ 
+ 	* c-parser.cc (c_parser_sizeof_expression): Remove function.
+ 	(c_parser_countof_expression): Remove function.
+ 	(c_parser_unary_expression): Store the 'rid', and pass it
+ 	directly to the function calls, without calling wrappers.
+ 
+ 2025-11-10  Tejas Belagod  <tejas.belagod@arm.com>
+ 
+ 	* c-typeck.cc (build_binary_op): Support vector boolean types.
+ 
  2025-11-04  Alejandro Colomar  <alx@kernel.org>
  
  	* c-decl.cc (start_function):
diff -Nrcpad gcc-16-20251109/gcc/c/c-parser.cc gcc-16-20251116/gcc/c/c-parser.cc
*** gcc-16-20251109/gcc/c/c-parser.cc	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/c/c-parser.cc	Sun Nov 16 22:32:52 2025
*************** static struct c_expr c_parser_binary_exp
*** 1800,1807 ****
  						 tree);
  static struct c_expr c_parser_cast_expression (c_parser *, struct c_expr *);
  static struct c_expr c_parser_unary_expression (c_parser *);
- static inline struct c_expr c_parser_sizeof_expression (c_parser *);
- static inline struct c_expr c_parser_countof_expression (c_parser *);
  static struct c_expr c_parser_sizeof_or_countof_expression (c_parser *,
  							    enum rid);
  static struct c_expr c_parser_alignof_expression (c_parser *);
--- 1800,1805 ----
*************** c_parser_unary_expression (c_parser *par
*** 10665,10735 ****
  	}
        return ret;
      case CPP_KEYWORD:
!       switch (c_parser_peek_token (parser)->keyword)
! 	{
! 	case RID_COUNTOF:
! 	  return c_parser_countof_expression (parser);
! 	case RID_SIZEOF:
! 	  return c_parser_sizeof_expression (parser);
! 	case RID_ALIGNOF:
! 	  return c_parser_alignof_expression (parser);
! 	case RID_BUILTIN_HAS_ATTRIBUTE:
! 	  return c_parser_has_attribute_expression (parser);
! 	case RID_EXTENSION:
! 	  c_parser_consume_token (parser);
! 	  ext = disable_extension_diagnostics ();
! 	  ret = c_parser_cast_expression (parser, NULL);
! 	  restore_extension_diagnostics (ext);
! 	  return ret;
! 	case RID_REALPART:
! 	  c_parser_consume_token (parser);
! 	  exp_loc = c_parser_peek_token (parser)->location;
! 	  op = c_parser_cast_expression (parser, NULL);
! 	  op = default_function_array_conversion (exp_loc, op);
! 	  return parser_build_unary_op (op_loc, REALPART_EXPR, op);
! 	case RID_IMAGPART:
! 	  c_parser_consume_token (parser);
! 	  exp_loc = c_parser_peek_token (parser)->location;
! 	  op = c_parser_cast_expression (parser, NULL);
! 	  op = default_function_array_conversion (exp_loc, op);
! 	  return parser_build_unary_op (op_loc, IMAGPART_EXPR, op);
! 	case RID_TRANSACTION_ATOMIC:
! 	case RID_TRANSACTION_RELAXED:
! 	  return c_parser_transaction_expression (parser,
! 	      c_parser_peek_token (parser)->keyword);
! 	case RID_STATIC_ASSERT:
! 	  c_parser_static_assert_declaration_no_semi (parser);
! 	  pedwarn_c23 (op_loc, OPT_Wpedantic,
! 		       "ISO C does not support static assertions in "
! 		       "expressions before C2Y");
! 	  ret.value = void_node;
! 	  set_c_expr_source_range (&ret, op_loc, op_loc);
! 	  ret.m_decimal = 0;
! 	  return ret;
! 	default:
! 	  return c_parser_postfix_expression (parser);
! 	}
      default:
        return c_parser_postfix_expression (parser);
      }
  }
  
- /* Parse a sizeof expression.  */
- 
- static inline struct c_expr
- c_parser_sizeof_expression (c_parser *parser)
- {
-   return c_parser_sizeof_or_countof_expression (parser, RID_SIZEOF);
- }
- 
- /* Parse a _Countof expression.  */
- 
- static inline struct c_expr
- c_parser_countof_expression (c_parser *parser)
- {
-   return c_parser_sizeof_or_countof_expression (parser, RID_COUNTOF);
- }
- 
  /* Parse a sizeof or _Countof expression.  */
  
  static struct c_expr
--- 10663,10718 ----
  	}
        return ret;
      case CPP_KEYWORD:
!       {
! 	enum rid rid = c_parser_peek_token (parser)->keyword;
! 	switch (rid)
! 	  {
! 	  case RID_COUNTOF:
! 	  case RID_SIZEOF:
! 	    return c_parser_sizeof_or_countof_expression (parser, rid);
! 	  case RID_ALIGNOF:
! 	    return c_parser_alignof_expression (parser);
! 	  case RID_BUILTIN_HAS_ATTRIBUTE:
! 	    return c_parser_has_attribute_expression (parser);
! 	  case RID_EXTENSION:
! 	    c_parser_consume_token (parser);
! 	    ext = disable_extension_diagnostics ();
! 	    ret = c_parser_cast_expression (parser, NULL);
! 	    restore_extension_diagnostics (ext);
! 	    return ret;
! 	  case RID_REALPART:
! 	    c_parser_consume_token (parser);
! 	    exp_loc = c_parser_peek_token (parser)->location;
! 	    op = c_parser_cast_expression (parser, NULL);
! 	    op = default_function_array_conversion (exp_loc, op);
! 	    return parser_build_unary_op (op_loc, REALPART_EXPR, op);
! 	  case RID_IMAGPART:
! 	    c_parser_consume_token (parser);
! 	    exp_loc = c_parser_peek_token (parser)->location;
! 	    op = c_parser_cast_expression (parser, NULL);
! 	    op = default_function_array_conversion (exp_loc, op);
! 	    return parser_build_unary_op (op_loc, IMAGPART_EXPR, op);
! 	  case RID_TRANSACTION_ATOMIC:
! 	  case RID_TRANSACTION_RELAXED:
! 	    return c_parser_transaction_expression (parser, rid);
! 	  case RID_STATIC_ASSERT:
! 	    c_parser_static_assert_declaration_no_semi (parser);
! 	    pedwarn_c23 (op_loc, OPT_Wpedantic,
! 			 "ISO C does not support static assertions in "
! 			 "expressions before C2Y");
! 	    ret.value = void_node;
! 	    set_c_expr_source_range (&ret, op_loc, op_loc);
! 	    ret.m_decimal = 0;
! 	    return ret;
! 	  default:
! 	    return c_parser_postfix_expression (parser);
! 	  }
!       }
      default:
        return c_parser_postfix_expression (parser);
      }
  }
  
  /* Parse a sizeof or _Countof expression.  */
  
  static struct c_expr
diff -Nrcpad gcc-16-20251109/gcc/c/c-typeck.cc gcc-16-20251116/gcc/c/c-typeck.cc
*** gcc-16-20251109/gcc/c/c-typeck.cc	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/c/c-typeck.cc	Sun Nov 16 22:32:52 2025
*************** build_binary_op (location_t location, en
*** 14693,14710 ****
  	    }
  
            /* Always construct signed integer vector type.  */
!           intt = c_common_type_for_size (GET_MODE_BITSIZE
! 					 (SCALAR_TYPE_MODE
! 					  (TREE_TYPE (type0))), 0);
! 	  if (!intt)
  	    {
! 	      error_at (location, "could not find an integer type "
! 				  "of the same size as %qT",
! 			TREE_TYPE (type0));
! 	      return error_mark_node;
  	    }
-           result_type = build_opaque_vector_type (intt,
- 						  TYPE_VECTOR_SUBPARTS (type0));
            converted = 1;
  	  ret = build_vec_cmp (resultcode, result_type, op0, op1);
  	  goto return_build_binary_op;
--- 14693,14716 ----
  	    }
  
            /* Always construct signed integer vector type.  */
! 	  if (VECTOR_BOOLEAN_TYPE_P (type0) && VECTOR_BOOLEAN_TYPE_P (type1))
! 	    result_type = type0;
! 	  else
  	    {
! 	      auto nelts = TYPE_VECTOR_SUBPARTS (type0);
! 
! 	      intt = c_common_type_for_size (GET_MODE_BITSIZE
! 					     (SCALAR_TYPE_MODE
! 						(TREE_TYPE (type0))), 0);
! 	      if (!intt)
! 		{
! 		  error_at (location, "could not find an integer type "
! 				      "of the same size as %qT",
! 			    TREE_TYPE (type0));
! 		  return error_mark_node;
! 		}
! 	      result_type = build_opaque_vector_type (intt, nelts);
  	    }
            converted = 1;
  	  ret = build_vec_cmp (resultcode, result_type, op0, op1);
  	  goto return_build_binary_op;
diff -Nrcpad gcc-16-20251109/gcc/c-family/ChangeLog gcc-16-20251116/gcc/c-family/ChangeLog
*** gcc-16-20251109/gcc/c-family/ChangeLog	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/c-family/ChangeLog	Sun Nov 16 22:32:52 2025
***************
*** 1,3 ****
--- 1,72 ----
+ 2025-11-11  Alejandro Colomar  <alx@kernel.org>
+ 
+ 	* c-warn.cc (warn_parms_array_mismatch): Split out body of
+ 	per-pair in parameter lists iteration into...
+ 	(warn_parm_array_mismatch): ...this new function.
+ 
+ 2025-11-11  Alejandro Colomar  <alx@kernel.org>
+ 
+ 	* c-warn.cc (warn_parms_array_mismatch): Reduce scope of local
+ 	variable.
+ 
+ 2025-11-10  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	PR other/122243
+ 	* c.opt.urls: Regenerated.
+ 
+ 2025-11-10  Alejandro Colomar  <alx@kernel.org>
+ 
+ 	PR c/122591
+ 	* c-common.cc (c_countof_type): Convert return value to size_t.
+ 
+ 2025-11-10  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	PR other/122243
+ 	* c.opt (fmodule-version-ignore): Mark as "Undocumented".
+ 
+ 2025-11-10  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	PR other/122243
+ 	* c.opt: (fdeps-format=): Add RejectNegative.
+ 	(fdeps-file=): Likewise.
+ 	(fdeps-target=): Likewise.
+ 	(Walloc-size-larger-than=): Likewise.
+ 	(Wno-alloc-size-larger-than): Likewise.
+ 	(Walloca-larger-than=): Likewise.
+ 	(Wno-alloca-larger-than): Likewise.
+ 	(Woverloaded-virtual=): Likewise.
+ 	(Wvla-larger-than=): Likewise.
+ 	(Wno-vla-larger-than): Likewise.
+ 	(fopenacc-dim=): Likewise.
+ 	(femit-struct-debug-baseonly): Likewise.
+ 	(femit-struct-debug-reduced): Likewise.
+ 	(femit-struct-debug-detailed=): Likewise.
+ 
+ 2025-11-10  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	PR other/122243
+ 	* c.opt (Wsynth): Mark as "Ignore".
+ 
+ 2025-11-10  Tejas Belagod  <tejas.belagod@arm.com>
+ 
+ 	* c-common.cc (c_build_vec_convert): Support vector boolean
+ 	types for __builtin_convertvector ().
+ 
+ 2025-11-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/119064
+ 	* c-cppbuiltin.cc (c_cpp_builtins): Revert 2025-07-11
+ 	changes.
+ 
+ 2025-11-10  Lewis Hyatt  <lhyatt@gmail.com>
+ 
+ 	PR preprocessor/105608
+ 	* c-opts.cc (c_finish_options): Set new member
+ 	line_table->cmdline_location.
+ 	* c-pch.cc (c_common_read_pch): Adapt linemap usage to changes in
+ 	libcpp pch.cc; it is now possible that the linemap is in a different
+ 	file after returning from cpp_read_state().
+ 
  2025-11-05  Nathaniel Shead  <nathanieloshead@gmail.com>
  
  	PR c++/121574
diff -Nrcpad gcc-16-20251109/gcc/c-family/c-common.cc gcc-16-20251116/gcc/c-family/c-common.cc
*** gcc-16-20251109/gcc/c-family/c-common.cc	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/c-family/c-common.cc	Sun Nov 16 22:32:52 2025
*************** c_build_vec_convert (location_t loc1, tr
*** 1312,1317 ****
--- 1312,1318 ----
  
    if (!gnu_vector_type_p (TREE_TYPE (expr))
        || (!VECTOR_INTEGER_TYPE_P (TREE_TYPE (expr))
+ 	  && !VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (expr))
  	  && !VECTOR_FLOAT_TYPE_P (TREE_TYPE (expr))))
      {
        if (complain)
*************** c_build_vec_convert (location_t loc1, tr
*** 1321,1327 ****
      }
  
    if (!gnu_vector_type_p (type)
!       || (!VECTOR_INTEGER_TYPE_P (type) && !VECTOR_FLOAT_TYPE_P (type)))
      {
        if (complain)
  	error_at (loc2, "%<__builtin_convertvector%> second argument must "
--- 1322,1329 ----
      }
  
    if (!gnu_vector_type_p (type)
!       || (!VECTOR_INTEGER_TYPE_P (type) && !VECTOR_FLOAT_TYPE_P (type)
! 	  && !VECTOR_BOOLEAN_TYPE_P (type)))
      {
        if (complain)
  	error_at (loc2, "%<__builtin_convertvector%> second argument must "
*************** tree
*** 4112,4117 ****
--- 4114,4120 ----
  c_countof_type (location_t loc, tree type)
  {
    enum tree_code type_code;
+   tree value;
  
    type_code = TREE_CODE (type);
    if (type_code != ARRAY_TYPE)
*************** c_countof_type (location_t loc, tree typ
*** 4127,4133 ****
        return error_mark_node;
      }
  
!   return array_type_nelts_top (type);
  }
  
  /* Handle C and C++ default attributes.  */
--- 4130,4141 ----
        return error_mark_node;
      }
  
!   value = array_type_nelts_top (type);
!   /* VALUE will have the middle-end integer type sizetype.
!      However, we should really return a value of type `size_t',
!      which is just a typedef for an ordinary integer type.  */
!   value = fold_convert_loc (loc, size_type_node, value);
!   return value;
  }
  
  /* Handle C and C++ default attributes.  */
diff -Nrcpad gcc-16-20251109/gcc/c-family/c-cppbuiltin.cc gcc-16-20251116/gcc/c-family/c-cppbuiltin.cc
*** gcc-16-20251109/gcc/c-family/c-cppbuiltin.cc	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/c-family/c-cppbuiltin.cc	Sun Nov 16 22:32:52 2025
*************** c_cpp_builtins (cpp_reader *pfile)
*** 1115,1121 ****
  	  cpp_define (pfile, "__cpp_pack_indexing=202311L");
  	  cpp_define (pfile, "__cpp_pp_embed=202502L");
  	  cpp_define (pfile, "__cpp_constexpr_virtual_inheritance=202506L");
- 	  cpp_define (pfile, "__cpp_trivial_relocatability=202502L");
  	  cpp_define (pfile, "__cpp_expansion_statements=202506L");
  	}
        if (flag_concepts && cxx_dialect > cxx14)
--- 1115,1120 ----
diff -Nrcpad gcc-16-20251109/gcc/c-family/c-opts.cc gcc-16-20251116/gcc/c-family/c-opts.cc
*** gcc-16-20251109/gcc/c-family/c-opts.cc	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/c-family/c-opts.cc	Sun Nov 16 22:32:52 2025
*************** c_finish_options (void)
*** 1700,1705 ****
--- 1700,1706 ----
        bool cxx_assert_seen_p = false;
  
        /* All command line defines must have the same location.  */
+       line_table->cmdline_location = line_table->highest_line;
        cpp_force_token_locations (parse_in, line_table->highest_line);
        for (size_t i = 0; i < deferred_count; i++)
  	{
diff -Nrcpad gcc-16-20251109/gcc/c-family/c-pch.cc gcc-16-20251116/gcc/c-family/c-pch.cc
*** gcc-16-20251109/gcc/c-family/c-pch.cc	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/c-family/c-pch.cc	Sun Nov 16 22:32:52 2025
*************** c_common_read_pch (cpp_reader *pfile, co
*** 347,364 ****
    rebuild_location_adhoc_htab (line_table);
    line_table->trace_includes = saved_trace_includes;
  
!   /* Set the current location to the line containing the #include (or the
!      #pragma GCC pch_preprocess) for the purpose of assigning locations to any
!      macros that are about to be restored.  */
!   linemap_add (line_table, LC_ENTER, 0, saved_loc.file,
! 	       saved_loc.line > 1 ? saved_loc.line - 1 : saved_loc.line);
  
    timevar_push (TV_PCH_CPP_RESTORE);
    cpp_result = cpp_read_state (pfile, name, f, smd);
  
    /* Set the current location to the line following the #include, where we
       were prior to processing the PCH.  */
!   linemap_line_start (line_table, saved_loc.line, 0);
  
    timevar_pop (TV_PCH_CPP_RESTORE);
  
--- 347,364 ----
    rebuild_location_adhoc_htab (line_table);
    line_table->trace_includes = saved_trace_includes;
  
!   /* Set the line_map current location to the start of the file, so that things
!      remain in order after cpp_read_state() re-adds any macros that were defined
!      prior to calling gt_pch_restore().  */
!   linemap_add (line_table, LC_ENTER, saved_loc.sysp, saved_loc.file, 0);
  
    timevar_push (TV_PCH_CPP_RESTORE);
    cpp_result = cpp_read_state (pfile, name, f, smd);
  
    /* Set the current location to the line following the #include, where we
       were prior to processing the PCH.  */
!   linemap_add (line_table, LC_RENAME, saved_loc.sysp, saved_loc.file,
! 	       saved_loc.line);
  
    timevar_pop (TV_PCH_CPP_RESTORE);
  
diff -Nrcpad gcc-16-20251109/gcc/c-family/c-warn.cc gcc-16-20251116/gcc/c-family/c-warn.cc
*** gcc-16-20251109/gcc/c-family/c-warn.cc	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/c-family/c-warn.cc	Sun Nov 16 22:32:52 2025
*************** expr_to_str (pretty_printer &pp, tree ex
*** 3425,3773 ****
    return pp_formatted_text (&pp);
  }
  
! /* Detect and diagnose a mismatch between an attribute access specification
!    on the original declaration of FNDECL and that on the parameters NEWPARMS
!    from its redeclaration.  ORIGLOC is the location of the first declaration
!    (FNDECL's is set to the location of the redeclaration).  */
  
! void
! warn_parms_array_mismatch (location_t origloc, tree fndecl, tree newparms)
  {
!   /* The original parameter list (copied from the original declaration
!      into the current [re]declaration, FNDECL)).  The two are equal if
!      and only if FNDECL is the first declaration.  */
!   tree curparms = DECL_ARGUMENTS (fndecl);
!   if (!curparms || !newparms || curparms == newparms)
      return;
  
!   if (TREE_CODE (curparms) != PARM_DECL
!       || TREE_CODE (newparms) != PARM_DECL)
      return;
-   /* Extract the (possibly empty) attribute access specification from
-      the declaration and its type (it doesn't yet reflect those created
-      in response to NEWPARMS).  */
-   rdwr_map cur_idx;
-   tree fntype = TREE_TYPE (fndecl);
-   init_attr_rdwr_indices (&cur_idx, TYPE_ATTRIBUTES (fntype));
  
!   /* Build a (possibly null) chain of access attributes corresponding
!      to NEWPARMS.  */
!   const bool builtin = fndecl_built_in_p (fndecl);
!   tree newattrs = build_attr_access_from_parms (newparms, builtin);
  
!   /* Extract the (possibly empty) attribute access specification from
!      NEWATTRS.  */
!   rdwr_map new_idx;
!   init_attr_rdwr_indices (&new_idx, newattrs);
  
!   if (cur_idx.is_empty () && new_idx.is_empty ())
      {
!       /* If both specs are empty check pointers to VLAs for mismatches. */
!       warn_parm_ptrarray_mismatch (origloc, curparms, newparms);
!       return;
      }
-   /* ...otherwise, if at least one spec isn't empty there may be mismatches,
-      such as between f(T*) and f(T[1]), where the former mapping would be
-      empty.  */
- 
-   /* Create an empty access specification and use it for pointers with
-      no spec of their own.  */
-   attr_access ptr_spec = { };
  
!   /* Iterate over the two lists of function parameters, comparing their
!      respective mappings and diagnosing mismatches.  */
!   unsigned parmpos = 0;
!   for (tree curp = curparms, newp = newparms; curp;
!        curp = TREE_CHAIN (curp), newp = TREE_CHAIN (newp), ++parmpos)
!     {
!       if (!newp)
! 	/* Bail on invalid redeclarations with fewer arguments.  */
! 	return;
  
!       /* Only check pointers and C++ references.  */
!       tree curptype = TREE_TYPE (curp);
!       tree newptype = TREE_TYPE (newp);
!       if (!POINTER_TYPE_P (curptype) || !POINTER_TYPE_P (newptype))
! 	continue;
  
!       /* Skip mismatches in __builtin_va_list that is commonly
! 	 an array but that in declarations of built-ins decays
! 	 to a pointer.  */
!       if (builtin && TREE_TYPE (newptype) == TREE_TYPE (va_list_type_node))
! 	continue;
  
!       /* Access specs for the argument on the current (previous) and
! 	 new (to replace the current) declarations.  Either may be null,
! 	 indicating the parameter is an ordinary pointer with no size
! 	 associated with it.  */
!       attr_access *cura = cur_idx.get (parmpos);
!       attr_access *newa = new_idx.get (parmpos);
  
!       if (!newa)
  	{
! 	  /* Continue if both parameters are pointers with no size
! 	     associated with them.  */
! 	  if (!cura)
! 	    continue;
! 
! 	  /* Otherwise point at PTR_SPEC and set its parameter pointer
! 	     and number.  */
! 	  newa = &ptr_spec;
! 	  newa->ptr = newp;
! 	  newa->ptrarg = parmpos;
  	}
!       else if (!cura)
  	{
! 	  cura = &ptr_spec;
! 	  cura->ptr = curp;
! 	  cura->ptrarg = parmpos;
  	}
  
!       /* Set if the parameter is [re]declared as a VLA.  */
!       const bool cur_vla_p = cura->size || cura->minsize == HOST_WIDE_INT_M1U;
!       const bool new_vla_p = newa->size || newa->minsize == HOST_WIDE_INT_M1U;
  
!       if (DECL_P (curp))
! 	origloc = DECL_SOURCE_LOCATION (curp);
!       else if (EXPR_P (curp) && EXPR_HAS_LOCATION (curp))
! 	origloc = EXPR_LOCATION (curp);
  
!       /* The location of the parameter in the current redeclaration.  */
!       location_t newloc = DECL_SOURCE_LOCATION (newp);
!       if (origloc == UNKNOWN_LOCATION)
! 	origloc = newloc;
  
!       const std::string newparmstr = newa->array_as_string (newptype);
!       const std::string curparmstr = cura->array_as_string (curptype);
!       if (new_vla_p && !cur_vla_p)
  	{
! 	  if (warning_at (newloc, OPT_Wvla_parameter,
! 			  "argument %u of type %s declared as "
! 			  "a variable length array",
! 			  parmpos + 1, newparmstr.c_str ()))
! 	    inform (origloc,
! 		    (cura == &ptr_spec
! 		     ? G_("previously declared as a pointer %s")
! 		     : G_("previously declared as an ordinary array %s")),
! 		    curparmstr.c_str ());
! 	  continue;
  	}
  
!       if (newa == &ptr_spec)
  	{
! 	  /* The new declaration uses the pointer form.  Detect mismatches
! 	     between the pointer and a previous array or VLA forms.  */
! 	  if (cura->minsize == HOST_WIDE_INT_M1U)
! 	    {
! 	      /* Diagnose a pointer/VLA mismatch.  */
! 	      if (warning_at (newloc, OPT_Wvla_parameter,
! 			      "argument %u of type %s declared "
! 			      "as a pointer",
! 			      parmpos + 1, newparmstr.c_str ()))
! 		inform (origloc,
! 			"previously declared as a variable length array %s",
! 			curparmstr.c_str ());
! 	      continue;
! 	    }
  
! 	  if (cura->minsize && cura->minsize != HOST_WIDE_INT_M1U)
  	    {
! 	      /* Diagnose mismatches between arrays with a constant
! 		 bound and pointers.  */
! 	      if (warning_at (newloc, OPT_Warray_parameter_,
! 			      "argument %u of type %s declared "
! 			      "as a pointer",
! 			      parmpos + 1, newparmstr.c_str ()))
! 		inform (origloc, "previously declared as an array %s",
! 			curparmstr.c_str ());
! 	      continue;
  	    }
  	}
  
!       if (!new_vla_p && cur_vla_p)
! 	{
! 	  if (warning_at (newloc, OPT_Wvla_parameter,
! 			  "argument %u of type %s declared "
! 			  "as an ordinary array",
! 			  parmpos + 1, newparmstr.c_str ()))
! 	    inform (origloc,
! 		    "previously declared as a variable length array %s",
! 		    curparmstr.c_str ());
! 	  continue;
! 	}
  
!       /* Move on to the next pair of parameters if both of the current
! 	 pair are VLAs with a single variable bound that refers to
! 	 a parameter at the same position.  */
!       if (newa->size && cura->size
! 	  && newa->sizarg != UINT_MAX
! 	  && newa->sizarg == cura->sizarg
! 	  && newa->minsize == cura->minsize
! 	  && !TREE_PURPOSE (newa->size) && !TREE_PURPOSE (cura->size))
  	continue;
  
!       if (newa->size || cura->size)
  	{
! 	  unsigned newunspec, curunspec;
! 	  unsigned newbnds = newa->vla_bounds (&newunspec) + newunspec;
! 	  unsigned curbnds = cura->vla_bounds (&curunspec) + curunspec;
  
! 	  if (newbnds != curbnds)
  	    {
! 	      if (warning_n (newloc, OPT_Wvla_parameter, newbnds,
! 			     "argument %u of type %s declared with "
! 			     "%u variable bound",
! 			     "argument %u of type %s declared with "
! 			     "%u variable bounds",
! 			     parmpos + 1, newparmstr.c_str (),
! 			     newbnds))
! 		inform_n (origloc, curbnds,
! 			  "previously declared as %s with %u variable bound",
! 			  "previously declared as %s with %u variable bounds",
! 			  curparmstr.c_str (), curbnds);
! 	      continue;
  	    }
  
! 	  if (newunspec > curunspec)
  	    {
! 	      location_t warnloc = newloc, noteloc = origloc;
! 	      const char *warnparmstr = newparmstr.c_str ();
! 	      const char *noteparmstr = curparmstr.c_str ();
! 	      unsigned warnunspec = newunspec, noteunspec = curunspec;
! 
! 	      if (warning_n (warnloc, OPT_Wvla_parameter, warnunspec,
! 			     "argument %u of type %s declared with "
! 			     "%u unspecified variable bound",
! 			     "argument %u of type %s declared with "
! 			     "%u unspecified variable bounds",
! 			     parmpos + 1, warnparmstr, warnunspec))
  		{
! 		  if (warnloc == newloc)
! 		    inform_n (noteloc, noteunspec,
! 			      "previously declared as %s with %u unspecified "
! 			      "variable bound",
! 			      "previously declared as %s with %u unspecified "
! 			      "variable bounds",
! 			      noteparmstr, noteunspec);
! 		  else
! 		    inform_n (noteloc, noteunspec,
! 			      "subsequently declared as %s with %u unspecified "
! 			      "variable bound",
! 			      "subsequently declared as %s with %u unspecified "
! 			      "variable bounds",
! 			      noteparmstr, noteunspec);
  		}
  	      continue;
  	    }
  	}
  
!       /* Iterate over the lists of VLA variable bounds, comparing each
! 	 pair for equality, and diagnosing mismatches.  */
!       for (tree newvbl = newa->size, curvbl = cura->size; newvbl && curvbl;
! 	   newvbl = TREE_CHAIN (newvbl), curvbl = TREE_CHAIN (curvbl))
  	{
! 	  tree newpos = TREE_PURPOSE (newvbl);
! 	  tree curpos = TREE_PURPOSE (curvbl);
! 
! 	  tree newbnd = vla_bound_parm_decl (TREE_VALUE (newvbl));
! 	  tree curbnd = vla_bound_parm_decl (TREE_VALUE (curvbl));
! 
! 	  if (newpos == curpos && newbnd == curbnd)
! 	    /* In the expected case when both bounds either refer to
! 	       the same positional parameter or when neither does,
! 	       and both are the same expression they are necessarily
! 	       the same.  */
  	    continue;
  
! 	  pretty_printer pp1, pp2;
! 	  const char* const newbndstr = expr_to_str (pp1, newbnd, "*");
! 	  const char* const curbndstr = expr_to_str (pp2, curbnd, "*");
  
! 	  if (!newpos != !curpos
! 	      || (newpos && !tree_int_cst_equal (newpos, curpos)))
! 	    {
! 	      /* Diagnose a mismatch between a specified VLA bound and
! 		 an unspecified one.  This can only happen in the most
! 		 significant bound.
  
! 		 Distinguish between the common case of bounds that are
! 		 other function parameters such as in
! 		   f (int n, int[n]);
! 		 and others.  */
  
! 	      gcc_rich_location richloc (newloc);
! 	      bool warned;
! 	      if (newpos)
! 		{
! 		  /* Also underline the VLA bound argument.  */
! 		  richloc.add_range (DECL_SOURCE_LOCATION (newbnd));
! 		  warned = warning_at (&richloc, OPT_Wvla_parameter,
! 				       "argument %u of type %s declared "
! 				       "with mismatched bound argument %E",
! 				       parmpos + 1, newparmstr.c_str (),
! 				       plus_one (newpos));
! 		}
! 	      else
! 		warned = warning_at (&richloc, OPT_Wvla_parameter,
! 				     "argument %u of type %s declared "
! 				     "with mismatched bound %qs",
! 				     parmpos + 1, newparmstr.c_str (),
! 				     newbndstr);
  
! 	      if (warned)
! 		{
! 		  gcc_rich_location richloc (origloc);
! 		  if (curpos)
! 		    {
! 		      /* Also underline the VLA bound argument.  */
! 		      richloc.add_range (DECL_SOURCE_LOCATION (curbnd));
! 		      inform (&richloc, "previously declared as %s with "
! 			      "bound argument %E",
! 			      curparmstr.c_str (), plus_one (curpos));
! 		    }
! 		  else
! 		    inform (&richloc, "previously declared as %s with bound "
! 			    "%qs", curparmstr.c_str (), curbndstr);
  
! 		  continue;
! 		}
! 	    }
  
! 	  if (!newpos && newbnd && curbnd)
! 	    {
! 	      /* The VLA bounds don't refer to other function parameters.
! 		 Compare them lexicographically to detect gross mismatches
! 		 such as between T[foo()] and T[bar()].  */
! 	      if (operand_equal_p (newbnd, curbnd,
! 				   OEP_DECL_NAME | OEP_LEXICOGRAPHIC))
! 		continue;
  
! 	      if (warning_at (newloc, OPT_Wvla_parameter,
! 			      "argument %u of type %s declared with "
! 			      "mismatched bound %qs",
! 			      parmpos + 1, newparmstr.c_str (), newbndstr))
! 		inform (origloc, "previously declared as %s with bound %qs",
! 			curparmstr.c_str (), curbndstr);
! 	      continue;
! 	    }
! 	}
  
!       if (newa->minsize == cura->minsize
! 	  || (((newa->minsize == 0 && newa->mode != access_deferred)
! 	       || (cura->minsize == 0 && cura->mode != access_deferred))
! 	      && newa != &ptr_spec
! 	      && cura != &ptr_spec))
! 	continue;
  
!       if (!newa->static_p && !cura->static_p && warn_array_parameter < 2)
! 	/* Avoid warning about mismatches in ordinary (non-static) arrays
! 	   at levels below 2.  */
! 	continue;
  
!       if (warning_at (newloc, OPT_Warray_parameter_,
! 		      "argument %u of type %s with mismatched bound",
! 		      parmpos + 1, newparmstr.c_str ()))
! 	inform (origloc, "previously declared as %s", curparmstr.c_str ());
      }
  }
  
--- 3425,3787 ----
    return pp_formatted_text (&pp);
  }
  
! /* Helper for warn_parms_array_mismatch.  Compare the mappings of
!    two function parameters and diagnose mismatches.  ORIGLOC is the
!    location of the first function declaration.  CURP and NEWP are the
!    parameters in the first and second function declarators,
!    respectively.  PARMPOS is the position of the parameters within the
!    list of parameter declarations.  BUILTIN is true if the function is
!    a builtin.  */
  
! static void
! warn_parm_array_mismatch (location_t origloc, rdwr_map *cur_idx,
! 			  rdwr_map *new_idx, tree curp, tree newp,
! 			  unsigned parmpos, bool builtin)
  {
!   /* Create an empty access specification and use it for pointers with
!      no spec of their own.  */
!   attr_access ptr_spec = { };
! 
!   /* Only check pointers and C++ references.  */
!   tree curptype = TREE_TYPE (curp);
!   tree newptype = TREE_TYPE (newp);
!   if (!POINTER_TYPE_P (curptype) || !POINTER_TYPE_P (newptype))
      return;
  
!   /* Skip mismatches in __builtin_va_list that is commonly
!      an array but that in declarations of built-ins decays
!      to a pointer.  */
!   if (builtin && TREE_TYPE (newptype) == TREE_TYPE (va_list_type_node))
      return;
  
!   /* Access specs for the argument on the current (previous) and
!      new (to replace the current) declarations.  Either may be null,
!      indicating the parameter is an ordinary pointer with no size
!      associated with it.  */
!   attr_access *cura = cur_idx->get (parmpos);
!   attr_access *newa = new_idx->get (parmpos);
  
!   if (!newa)
!     {
!       /* Continue if both parameters are pointers with no size
! 	 associated with them.  */
!       if (!cura)
! 	return;
  
!       /* Otherwise point at PTR_SPEC and set its parameter pointer
! 	 and number.  */
!       newa = &ptr_spec;
!       newa->ptr = newp;
!       newa->ptrarg = parmpos;
!     }
!   else if (!cura)
      {
!       cura = &ptr_spec;
!       cura->ptr = curp;
!       cura->ptrarg = parmpos;
      }
  
!   /* Set if the parameter is [re]declared as a VLA.  */
!   const bool cur_vla_p = cura->size || cura->minsize == HOST_WIDE_INT_M1U;
!   const bool new_vla_p = newa->size || newa->minsize == HOST_WIDE_INT_M1U;
  
!   if (DECL_P (curp))
!     origloc = DECL_SOURCE_LOCATION (curp);
!   else if (EXPR_P (curp) && EXPR_HAS_LOCATION (curp))
!     origloc = EXPR_LOCATION (curp);
  
!   /* The location of the parameter in the current redeclaration.  */
!   location_t newloc = DECL_SOURCE_LOCATION (newp);
!   if (origloc == UNKNOWN_LOCATION)
!     origloc = newloc;
  
!   const std::string newparmstr = newa->array_as_string (newptype);
!   const std::string curparmstr = cura->array_as_string (curptype);
!   if (new_vla_p && !cur_vla_p)
!     {
!       if (warning_at (newloc, OPT_Wvla_parameter,
! 		      "argument %u of type %s "
! 		      "declared as a variable length array",
! 		      parmpos + 1, newparmstr.c_str ()))
! 	inform (origloc,
! 		(cura == &ptr_spec
! 		 ? G_("previously declared as a pointer %s")
! 		 : G_("previously declared as an ordinary array %s")),
! 		curparmstr.c_str ());
!       return;
!     }
  
!   if (newa == &ptr_spec)
!     {
!       /* The new declaration uses the pointer form.  Detect mismatches
! 	 between the pointer and a previous array or VLA forms.  */
!       if (cura->minsize == HOST_WIDE_INT_M1U)
  	{
! 	  /* Diagnose a pointer/VLA mismatch.  */
! 	  if (warning_at (newloc, OPT_Wvla_parameter,
! 			  "argument %u of type %s declared as a pointer",
! 			  parmpos + 1, newparmstr.c_str ()))
! 	    inform (origloc,
! 		    "previously declared as a variable length array %s",
! 		    curparmstr.c_str ());
! 	  return;
  	}
! 
!       if (cura->minsize && cura->minsize != HOST_WIDE_INT_M1U)
  	{
! 	  /* Diagnose mismatches between arrays with a constant
! 	     bound and pointers.  */
! 	  if (warning_at (newloc, OPT_Warray_parameter_,
! 			  "argument %u of type %s declared as a pointer",
! 			  parmpos + 1, newparmstr.c_str ()))
! 	    inform (origloc, "previously declared as an array %s",
! 		    curparmstr.c_str ());
! 	  return;
  	}
+     }
  
!   if (!new_vla_p && cur_vla_p)
!     {
!       if (warning_at (newloc, OPT_Wvla_parameter,
! 		      "argument %u of type %s declared as an ordinary array",
! 		      parmpos + 1, newparmstr.c_str ()))
! 	inform (origloc, "previously declared as a variable length array %s",
! 		curparmstr.c_str ());
!       return;
!     }
  
!   /* Move on to the next pair of parameters if both of the current
!      pair are VLAs with a single variable bound that refers to
!      a parameter at the same position.  */
!   if (newa->size && cura->size
!       && newa->sizarg != UINT_MAX
!       && newa->sizarg == cura->sizarg
!       && newa->minsize == cura->minsize
!       && !TREE_PURPOSE (newa->size) && !TREE_PURPOSE (cura->size))
!     return;
  
!   if (newa->size || cura->size)
!     {
!       unsigned newunspec, curunspec;
!       unsigned newbnds = newa->vla_bounds (&newunspec) + newunspec;
!       unsigned curbnds = cura->vla_bounds (&curunspec) + curunspec;
  
!       if (newbnds != curbnds)
  	{
! 	  if (warning_n (newloc, OPT_Wvla_parameter, newbnds,
! 			 "argument %u of type %s declared with "
! 			 "%u variable bound",
! 			 "argument %u of type %s declared with "
! 			 "%u variable bounds",
! 			 parmpos + 1, newparmstr.c_str (),
! 			 newbnds))
! 	    inform_n (origloc, curbnds,
! 		      "previously declared as %s with %u variable bound",
! 		      "previously declared as %s with %u variable bounds",
! 		      curparmstr.c_str (), curbnds);
! 	  return;
  	}
  
!       if (newunspec > curunspec)
  	{
! 	  location_t warnloc = newloc, noteloc = origloc;
! 	  const char *warnparmstr = newparmstr.c_str ();
! 	  const char *noteparmstr = curparmstr.c_str ();
! 	  unsigned warnunspec = newunspec, noteunspec = curunspec;
  
! 	  if (warning_n (warnloc, OPT_Wvla_parameter, warnunspec,
! 			 "argument %u of type %s declared with "
! 			 "%u unspecified variable bound",
! 			 "argument %u of type %s declared with "
! 			 "%u unspecified variable bounds",
! 			 parmpos + 1, warnparmstr, warnunspec))
  	    {
! 	      if (warnloc == newloc)
! 		inform_n (noteloc, noteunspec,
! 			  "previously declared as %s with "
! 			  "%u unspecified variable bound",
! 			  "previously declared as %s with "
! 			  "%u unspecified variable bounds",
! 			  noteparmstr, noteunspec);
! 	      else
! 		inform_n (noteloc, noteunspec,
! 			  "subsequently declared as %s with "
! 			  "%u unspecified variable bound",
! 			  "subsequently declared as %s with "
! 			  "%u unspecified variable bounds",
! 			  noteparmstr, noteunspec);
  	    }
+ 	  return;
  	}
+     }
  
!   /* Iterate over the lists of VLA variable bounds, comparing each
!      pair for equality, and diagnosing mismatches.  */
!   for (tree newvbl = newa->size, curvbl = cura->size; newvbl && curvbl;
!        newvbl = TREE_CHAIN (newvbl), curvbl = TREE_CHAIN (curvbl))
!     {
!       tree newpos = TREE_PURPOSE (newvbl);
!       tree curpos = TREE_PURPOSE (curvbl);
  
!       tree newbnd = vla_bound_parm_decl (TREE_VALUE (newvbl));
!       tree curbnd = vla_bound_parm_decl (TREE_VALUE (curvbl));
! 
!       if (newpos == curpos && newbnd == curbnd)
! 	/* In the expected case when both bounds either refer to
! 	   the same positional parameter or when neither does,
! 	   and both are the same expression they are necessarily
! 	   the same.  */
  	continue;
  
!       pretty_printer pp1, pp2;
!       const char* const newbndstr = expr_to_str (pp1, newbnd, "*");
!       const char* const curbndstr = expr_to_str (pp2, curbnd, "*");
! 
!       if (!newpos != !curpos
! 	  || (newpos && !tree_int_cst_equal (newpos, curpos)))
  	{
! 	  /* Diagnose a mismatch between a specified VLA bound and
! 	     an unspecified one.  This can only happen in the most
! 	     significant bound.
  
! 	     Distinguish between the common case of bounds that are
! 	     other function parameters such as in
! 	       f (int n, int[n]);
! 	     and others.  */
! 
! 	  gcc_rich_location richloc (newloc);
! 	  bool warned;
! 	  if (newpos)
  	    {
! 	      /* Also underline the VLA bound argument.  */
! 	      richloc.add_range (DECL_SOURCE_LOCATION (newbnd));
! 	      warned = warning_at (&richloc, OPT_Wvla_parameter,
! 				   "argument %u of type %s "
! 				   "declared with mismatched bound argument %E",
! 				   parmpos + 1, newparmstr.c_str (),
! 				   plus_one (newpos));
  	    }
+ 	  else
+ 	    warned = warning_at (&richloc, OPT_Wvla_parameter,
+ 				 "argument %u of type %s "
+ 				 "declared with mismatched bound %qs",
+ 				 parmpos + 1, newparmstr.c_str (),
+ 				 newbndstr);
  
! 	  if (warned)
  	    {
! 	      gcc_rich_location richloc (origloc);
! 	      if (curpos)
  		{
! 		  /* Also underline the VLA bound argument.  */
! 		  richloc.add_range (DECL_SOURCE_LOCATION (curbnd));
! 		  inform (&richloc,
! 			  "previously declared as %s with bound argument %E",
! 			  curparmstr.c_str (), plus_one (curpos));
  		}
+ 	      else
+ 		inform (&richloc,
+ 			"previously declared as %s with bound %qs",
+ 			curparmstr.c_str (), curbndstr);
+ 
  	      continue;
  	    }
  	}
  
!       if (!newpos && newbnd && curbnd)
  	{
! 	  /* The VLA bounds don't refer to other function parameters.
! 	     Compare them lexicographically to detect gross mismatches
! 	     such as between T[foo()] and T[bar()].  */
! 	  if (operand_equal_p (newbnd, curbnd,
! 			       OEP_DECL_NAME | OEP_LEXICOGRAPHIC))
  	    continue;
  
! 	  if (warning_at (newloc, OPT_Wvla_parameter,
! 			  "argument %u of type %s "
! 			  "declared with mismatched bound %qs",
! 			  parmpos + 1, newparmstr.c_str (), newbndstr))
! 	    inform (origloc, "previously declared as %s with bound %qs",
! 		    curparmstr.c_str (), curbndstr);
! 	  continue;
! 	}
!     }
  
!   if (newa->minsize == cura->minsize
!       || (((newa->minsize == 0 && newa->mode != access_deferred)
! 	   || (cura->minsize == 0 && cura->mode != access_deferred))
! 	  && newa != &ptr_spec
! 	  && cura != &ptr_spec))
!     return;
  
!   if (!newa->static_p && !cura->static_p && warn_array_parameter < 2)
!     /* Avoid warning about mismatches in ordinary (non-static) arrays
!        at levels below 2.  */
!     return;
  
!   if (warning_at (newloc, OPT_Warray_parameter_,
! 		  "argument %u of type %s with mismatched bound",
! 		  parmpos + 1, newparmstr.c_str ()))
!     inform (origloc, "previously declared as %s", curparmstr.c_str ());
! }
  
! /* Detect and diagnose a mismatch between an attribute access specification
!    on the original declaration of FNDECL and that on the parameters NEWPARMS
!    from its redeclaration.  ORIGLOC is the location of the first declaration
!    (FNDECL's is set to the location of the redeclaration).  */
  
! void
! warn_parms_array_mismatch (location_t origloc, tree fndecl, tree newparms)
! {
!   /* The original parameter list (copied from the original declaration
!      into the current [re]declaration, FNDECL)).  The two are equal if
!      and only if FNDECL is the first declaration.  */
!   tree curparms = DECL_ARGUMENTS (fndecl);
!   if (!curparms || !newparms || curparms == newparms)
!     return;
  
!   if (TREE_CODE (curparms) != PARM_DECL
!       || TREE_CODE (newparms) != PARM_DECL)
!     return;
!   /* Extract the (possibly empty) attribute access specification from
!      the declaration and its type (it doesn't yet reflect those created
!      in response to NEWPARMS).  */
!   rdwr_map cur_idx;
!   tree fntype = TREE_TYPE (fndecl);
!   init_attr_rdwr_indices (&cur_idx, TYPE_ATTRIBUTES (fntype));
  
!   /* Build a (possibly null) chain of access attributes corresponding
!      to NEWPARMS.  */
!   const bool builtin = fndecl_built_in_p (fndecl);
!   tree newattrs = build_attr_access_from_parms (newparms, builtin);
  
!   /* Extract the (possibly empty) attribute access specification from
!      NEWATTRS.  */
!   rdwr_map new_idx;
!   init_attr_rdwr_indices (&new_idx, newattrs);
  
!   if (cur_idx.is_empty () && new_idx.is_empty ())
!     {
!       /* If both specs are empty check pointers to VLAs for mismatches. */
!       warn_parm_ptrarray_mismatch (origloc, curparms, newparms);
!       return;
!     }
!   /* ...otherwise, if at least one spec isn't empty there may be mismatches,
!      such as between f(T*) and f(T[1]), where the former mapping would be
!      empty.  */
  
!   /* Iterate over the two lists of function parameters, comparing their
!      respective mappings and diagnosing mismatches.  */
!   unsigned parmpos = 0;
!   for (tree curp = curparms, newp = newparms; curp;
!        curp = TREE_CHAIN (curp), newp = TREE_CHAIN (newp), ++parmpos)
!     {
!       if (!newp)
! 	/* Bail on invalid redeclarations with fewer arguments.  */
! 	return;
! 
!       warn_parm_array_mismatch (origloc, &cur_idx, &new_idx, curp, newp, parmpos,
! 				builtin);
      }
  }
  
diff -Nrcpad gcc-16-20251109/gcc/c-family/c.opt gcc-16-20251116/gcc/c-family/c.opt
*** gcc-16-20251109/gcc/c-family/c.opt	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/c-family/c.opt	Sun Nov 16 22:32:52 2025
*************** C ObjC C++ ObjC++ Joined Separate Missin
*** 267,281 ****
  -MT <target>	Add a target that does not require quoting.
  
  fdeps-format=
! C ObjC C++ ObjC++ NoDriverArg Joined MissingArgError(missing format after %qs)
  Structured format for output dependency information.  Supported (\"p1689r5\").
  
  fdeps-file=
! C ObjC C++ ObjC++ NoDriverArg Joined MissingArgError(missing output path after %qs)
  File for output dependency information.
  
  fdeps-target=
! C ObjC C++ ObjC++ NoDriverArg Joined MissingArgError(missing path after %qs)
  -fdeps-target=obj.o Output file for the compile step.
  
  P
--- 267,281 ----
  -MT <target>	Add a target that does not require quoting.
  
  fdeps-format=
! C ObjC C++ ObjC++ RejectNegative Joined MissingArgError(missing format after %qs)
  Structured format for output dependency information.  Supported (\"p1689r5\").
  
  fdeps-file=
! C ObjC C++ ObjC++ RejectNegative Joined MissingArgError(missing output path after %qs)
  File for output dependency information.
  
  fdeps-target=
! C ObjC C++ ObjC++ RejectNegative Joined MissingArgError(missing path after %qs)
  -fdeps-target=obj.o Output file for the compile step.
  
  P
*************** C ObjC C++ ObjC++ Var(warn_alloc_size) W
*** 351,362 ****
  Warn when allocating insufficient storage for the target type of the assigned pointer.
  
  Walloc-size-larger-than=
! C ObjC C++ LTO ObjC++ Var(warn_alloc_size_limit) Joined Host_Wide_Int ByteSize Warning Init(HOST_WIDE_INT_MAX)
  -Walloc-size-larger-than=<bytes>	Warn for calls to allocation functions that
  attempt to allocate objects larger than the specified number of bytes.
  
  Wno-alloc-size-larger-than
! C ObjC C++ LTO ObjC++ Alias(Walloc-size-larger-than=,18446744073709551615EiB,none) Warning
  Disable Walloc-size-larger-than= warning.  Equivalent to Walloc-size-larger-than=<SIZE_MAX> or larger.
  
  Walloc-zero
--- 351,362 ----
  Warn when allocating insufficient storage for the target type of the assigned pointer.
  
  Walloc-size-larger-than=
! C ObjC C++ LTO ObjC++ Var(warn_alloc_size_limit) Joined RejectNegative Host_Wide_Int ByteSize Warning Init(HOST_WIDE_INT_MAX)
  -Walloc-size-larger-than=<bytes>	Warn for calls to allocation functions that
  attempt to allocate objects larger than the specified number of bytes.
  
  Wno-alloc-size-larger-than
! C ObjC C++ LTO ObjC++ RejectNegative Alias(Walloc-size-larger-than=,18446744073709551615EiB,none) Warning
  Disable Walloc-size-larger-than= warning.  Equivalent to Walloc-size-larger-than=<SIZE_MAX> or larger.
  
  Walloc-zero
*************** C ObjC C++ ObjC++ Var(warn_alloc_zero) W
*** 364,376 ****
  Warn for calls to allocation functions that specify zero bytes.
  
  Walloca-larger-than=
! C ObjC C++ LTO ObjC++ Var(warn_alloca_limit) Warning Joined Host_Wide_Int ByteSize Init(HOST_WIDE_INT_MAX)
  -Walloca-larger-than=<number>	Warn on unbounded uses of
  alloca, and on bounded uses of alloca whose bound can be larger than
  <number> bytes.
  
  Wno-alloca-larger-than
! C ObjC C++ LTO ObjC++ Alias(Walloca-larger-than=,18446744073709551615EiB,none) Warning
  Disable Walloca-larger-than= warning.  Equivalent to Walloca-larger-than=<SIZE_MAX> or larger.
  
  Warith-conversion
--- 364,376 ----
  Warn for calls to allocation functions that specify zero bytes.
  
  Walloca-larger-than=
! C ObjC C++ LTO ObjC++ Var(warn_alloca_limit) Warning Joined RejectNegative Host_Wide_Int ByteSize Init(HOST_WIDE_INT_MAX)
  -Walloca-larger-than=<number>	Warn on unbounded uses of
  alloca, and on bounded uses of alloca whose bound can be larger than
  <number> bytes.
  
  Wno-alloca-larger-than
! C ObjC C++ LTO ObjC++ RejectNegative Alias(Walloca-larger-than=,18446744073709551615EiB,none) Warning
  Disable Walloca-larger-than= warning.  Equivalent to Walloca-larger-than=<SIZE_MAX> or larger.
  
  Warith-conversion
*************** C++ ObjC++ Warning Alias(Woverloaded-vir
*** 1211,1217 ****
  Warn about overloaded virtual function names.
  
  Woverloaded-virtual=
! C++ ObjC++ Joined UInteger IntegerRange(0,2) Var(warn_overloaded_virtual) Warning LangEnabledBy(C++ ObjC++,Wall,1,0)
  Warn about overloaded virtual function names.
  
  Woverride-init
--- 1211,1217 ----
  Warn about overloaded virtual function names.
  
  Woverloaded-virtual=
! C++ ObjC++ Joined RejectNegative UInteger IntegerRange(0,2) Var(warn_overloaded_virtual) Warning LangEnabledBy(C++ ObjC++,Wall,1,0)
  Warn about overloaded virtual function names.
  
  Woverride-init
*************** C ObjC C++ ObjC++ Var(warn_sync_nand) In
*** 1503,1510 ****
  Warn when __sync_fetch_and_nand and __sync_nand_and_fetch built-in functions are used.
  
  Wsynth
! C++ ObjC++ Var(warn_synth) Warning
! Deprecated.  This switch has no effect.
  
  Wsystem-headers
  C ObjC C++ ObjC++ Warning
--- 1503,1510 ----
  Warn when __sync_fetch_and_nand and __sync_nand_and_fetch built-in functions are used.
  
  Wsynth
! C++ ObjC++ Warning Ignore
! Does nothing. Preserved for backward compatibility.
  
  Wsystem-headers
  C ObjC C++ ObjC++ Warning
*************** C ObjC C++ ObjC++ Var(warn_vla) Init(-1)
*** 1651,1663 ****
  Warn if a variable length array is used.
  
  Wvla-larger-than=
! C ObjC C++ LTO ObjC++ Var(warn_vla_limit) Warning Joined Host_Wide_Int ByteSize Init(HOST_WIDE_INT_MAX)
  -Wvla-larger-than=<number>	Warn on unbounded uses of variable-length
  arrays, and on bounded uses of variable-length arrays whose bound can be
  larger than <number> bytes.
  
  Wno-vla-larger-than
! C ObjC C++ LTO ObjC++ Alias(Wvla-larger-than=,18446744073709551615EiB,none) Warning
  Disable Wvla-larger-than= warning.  Equivalent to Wvla-larger-than=<SIZE_MAX> or larger.
  
  Wvla-parameter
--- 1651,1663 ----
  Warn if a variable length array is used.
  
  Wvla-larger-than=
! C ObjC C++ LTO ObjC++ Var(warn_vla_limit) Warning Joined RejectNegative Host_Wide_Int ByteSize Init(HOST_WIDE_INT_MAX)
  -Wvla-larger-than=<number>	Warn on unbounded uses of variable-length
  arrays, and on bounded uses of variable-length arrays whose bound can be
  larger than <number> bytes.
  
  Wno-vla-larger-than
! C ObjC C++ LTO ObjC++ RejectNegative Alias(Wvla-larger-than=,18446744073709551615EiB,none) Warning
  Disable Wvla-larger-than= warning.  Equivalent to Wvla-larger-than=<SIZE_MAX> or larger.
  
  Wvla-parameter
*************** C++ ObjC++ Var(flag_module_lazy) Init(1)
*** 2122,2128 ****
  Enable lazy module importing.
  
  fmodule-version-ignore
! C++ ObjC Var(flag_module_version_ignore) Integer
  ; undocumented, Very dangerous, but occasionally useful
  
  Winvalid-imported-macros
--- 2122,2128 ----
  Enable lazy module importing.
  
  fmodule-version-ignore
! C++ ObjC Var(flag_module_version_ignore) Integer Undocumented
  ; undocumented, Very dangerous, but occasionally useful
  
  Winvalid-imported-macros
*************** C ObjC C++ ObjC++ LTO Var(flag_openacc)
*** 2263,2269 ****
  Enable OpenACC.
  
  fopenacc-dim=
! C ObjC C++ ObjC++ LTO Joined Var(flag_openacc_dims)
  Specify default OpenACC compute dimensions.
  
  fopenmp
--- 2263,2269 ----
  Enable OpenACC.
  
  fopenacc-dim=
! C ObjC C++ ObjC++ LTO Joined RejectNegative Var(flag_openacc_dims)
  Specify default OpenACC compute dimensions.
  
  fopenmp
*************** ObjC ObjC++ Driver Var(flag_gen_declarat
*** 2494,2508 ****
  Dump declarations to a .decl file.
  
  femit-struct-debug-baseonly
! C ObjC C++ ObjC++
  -femit-struct-debug-baseonly	Aggressive reduced debug info for structs.
  
  femit-struct-debug-reduced
! C ObjC C++ ObjC++
  -femit-struct-debug-reduced	Conservative reduced debug info for structs.
  
  femit-struct-debug-detailed=
! C ObjC C++ ObjC++ Joined
  -femit-struct-debug-detailed=<spec-list>	Detailed reduced debug info for structs.
  
  fext-numeric-literals
--- 2494,2508 ----
  Dump declarations to a .decl file.
  
  femit-struct-debug-baseonly
! C ObjC C++ ObjC++  RejectNegative
  -femit-struct-debug-baseonly	Aggressive reduced debug info for structs.
  
  femit-struct-debug-reduced
! C ObjC C++ ObjC++ RejectNegative
  -femit-struct-debug-reduced	Conservative reduced debug info for structs.
  
  femit-struct-debug-detailed=
! C ObjC C++ ObjC++ Joined RejectNegative
  -femit-struct-debug-detailed=<spec-list>	Detailed reduced debug info for structs.
  
  fext-numeric-literals
diff -Nrcpad gcc-16-20251109/gcc/c-family/c.opt.urls gcc-16-20251116/gcc/c-family/c.opt.urls
*** gcc-16-20251109/gcc/c-family/c.opt.urls	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/c-family/c.opt.urls	Sun Nov 16 22:32:52 2025
***************
*** 1,8 ****
  ; Autogenerated by regenerate-opt-urls.py from gcc/c-family/c.opt and generated HTML
  
- A
- UrlSuffix(gcc/Preprocessor-Options.html#index-A)
- 
  C
  UrlSuffix(gcc/Preprocessor-Options.html#index-C) LangUrlSuffix_Fortran(gfortran/Preprocessing-Options.html#index-C)
  
--- 1,5 ----
*************** UrlSuffix(gcc/Warning-Options.html#index
*** 166,171 ****
--- 163,171 ----
  Wc11-c23-compat
  UrlSuffix(gcc/Warning-Options.html#index-Wc11-c23-compat)
  
+ Wc11-c2x-compat
+ UrlSuffix(gcc/Warning-Options.html#index-Wc11-c2x-compat)
+ 
  Wc23-c2y-compat
  UrlSuffix(gcc/Warning-Options.html#index-Wc23-c2y-compat)
  
*************** UrlSuffix(gcc/Warning-Options.html#index
*** 307,312 ****
--- 307,315 ----
  Wdeprecated-copy
  UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wdeprecated-copy)
  
+ Wdeprecated-copy-dtor
+ UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wdeprecated-copy-dtor)
+ 
  Wdeprecated-enum-enum-conversion
  UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wdeprecated-enum-enum-conversion)
  
*************** UrlSuffix(gcc/Warning-Options.html#index
*** 403,408 ****
--- 406,414 ----
  Wformat-contains-nul
  UrlSuffix(gcc/Warning-Options.html#index-Wformat-contains-nul)
  
+ Wformat-diag
+ UrlSuffix(gcc/Warning-Options.html#index-Wformat-diag)
+ 
  Wformat-extra-args
  UrlSuffix(gcc/Warning-Options.html#index-Wformat-extra-args)
  
*************** UrlSuffix(gcc/C_002b_002b-Dialect-Option
*** 1051,1057 ****
  ;   duplicate: 'gdc/Runtime-Options.html#index-fbuiltin'
  
  fcanonical-system-headers
! UrlSuffix(gcc/Preprocessor-Options.html#index-fno-canonical-system-headers)
  
  fchar8_t
  UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fchar8_005ft)
--- 1057,1063 ----
  ;   duplicate: 'gdc/Runtime-Options.html#index-fbuiltin'
  
  fcanonical-system-headers
! UrlSuffix(gcc/Preprocessor-Options.html#index-fcanonical-system-headers)
  
  fchar8_t
  UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fchar8_005ft)
*************** UrlSuffix(gcc/C_002b_002b-Dialect-Option
*** 1059,1064 ****
--- 1065,1073 ----
  fconcepts
  UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fconcepts)
  
+ fconcepts-diagnostics-depth=
+ UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fconcepts-diagnostics-depth)
+ 
  fcond-mismatch
  UrlSuffix(gcc/C-Dialect-Options.html#index-fcond-mismatch)
  
*************** UrlSuffix(gcc/C_002b_002b-Dialect-Option
*** 1101,1106 ****
--- 1110,1118 ----
  fcontract-role=
  UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcontract-role)
  
+ fcontract-semantic=
+ UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcontract-semantic)
+ 
  fcoroutines
  UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcoroutines)
  
*************** UrlSuffix(gcc/Preprocessor-Options.html#
*** 1132,1137 ****
--- 1144,1152 ----
  fdump-ada-spec
  UrlSuffix(gcc/Overall-Options.html#index-fdump-ada-spec)
  
+ fdump-ada-spec-slim
+ UrlSuffix(gcc/Overall-Options.html#index-fdump-ada-spec-slim)
+ 
  felide-constructors
  UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-felide-constructors)
  
diff -Nrcpad gcc-16-20251109/gcc/cobol/ChangeLog gcc-16-20251116/gcc/cobol/ChangeLog
*** gcc-16-20251109/gcc/cobol/ChangeLog	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/cobol/ChangeLog	Sun Nov 16 22:32:53 2025
***************
*** 1,3 ****
--- 1,40 ----
+ 2025-11-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR cobol/122691
+ 	* lexio.cc (parse_replace_pairs): Replace parsed.stmt.p with
+ 	parsed.stmt.size() ? parsed.stmt.p : "" in the last argument to
+ 	dbgmsg.
+ 
+ 2025-11-13  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	* cdf.y: Install literals in symbol table.
+ 	* genapi.cc (parser_alphabet): Use std::string for currency.
+ 	(initialize_the_data): Rely on constructor.
+ 	(parser_file_add): Better #pragma message.
+ 	(parser_exception_file): Return early if not generating code.
+ 	* parse.y: Allow library programs to act as functions.
+ 	* parse_ante.h (dialect_proscribed): Standardize message.
+ 	(intrinsic_call_2): Correct s/fund/func/ misspelling.
+ 	* scan.l: Comment.
+ 	* symbols.cc (symbols_update): Add unreachable assertion.
+ 	(symbol_field_parent_set): Reduce error to debug message.
+ 	(cdf_literalize): Declare.
+ 	(symbol_table_init): Insert CDF constants as literals.
+ 	* symbols.h (cbl_dialect_str): Provide string values for enum.
+ 	(is_working_storage): Remove function.
+ 	(struct cbl_field_data_t): Add manhandle_initial for Numeric Edited.
+ 	(struct cbl_field_t): Initialize name to zeros.
+ 	(struct cbl_section_t): Delete unused attr() function.
+ 	(symbol_unique_index): Declare.
+ 	* token_names.h: Regenerate.
+ 	* util.cc (cdf_literalize): Construct a cbl_field_t from a CDF literal.
+ 	(symbol_unique_index): Supply "globally" unique number for a program.
+ 
+ 2025-11-10  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	PR other/122243
+ 	* lang.opt.urls: Regenerated.
+ 
  2025-11-06  Robert Dubner  <rdubner@symas.com>
  	    James K. Lowden  <jklowden@cobolworx.com>
  
diff -Nrcpad gcc-16-20251109/gcc/cobol/cdf.y gcc-16-20251116/gcc/cobol/cdf.y
*** gcc-16-20251109/gcc/cobol/cdf.y	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/cobol/cdf.y	Sun Nov 16 22:32:53 2025
*************** void input_file_status_notify();
*** 151,156 ****
--- 151,159 ----
    cdfval_t operator/( const cdfval_base_t& lhs, const cdfval_base_t& rhs );
    cdfval_t negate( cdfval_base_t lhs );
  
+   cbl_field_t
+   cdf_literalize( const std::string& name, const cdfval_t& value );
+ 
  }
  
  %{
*************** cdf_define:	CDF_DEFINE cdf_constant NAME
*** 353,358 ****
--- 356,366 ----
  		    }
  		    YYERROR;
  		  }
+                   if( symbols_begin() < symbols_end() ) {
+                     cbl_field_t field = cdf_literalize($NAME, $value);
+                     symbol_field_add(current_program_index(), &field);                    
+                   }
+ 
  		}
  	|	CDF_DEFINE cdf_constant NAME '=' cdf_expr[value] override
  		{  /* accept, but as error */
*************** cdfval_base_t::operator()( const YDFLTYP
*** 952,954 ****
--- 960,964 ----
    // cppcheck-suppress returnTempReference
    return verify_integer(loc, *this) ? *this : zero;
  }
+ 
+   
diff -Nrcpad gcc-16-20251109/gcc/cobol/genapi.cc gcc-16-20251116/gcc/cobol/genapi.cc
*** gcc-16-20251109/gcc/cobol/genapi.cc	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/cobol/genapi.cc	Sun Nov 16 22:32:53 2025
*************** parser_alphabet( const cbl_alphabet_t& a
*** 5145,5152 ****
  
      case custom_encoding_e:
        {
! #pragma message "Use program-id to disambiguate"
!       size_t alphabet_index = symbol_index(symbol_elem_of(&alphabet));
  
        unsigned char ach[256];
  
--- 5145,5152 ----
  
      case custom_encoding_e:
        {
! #pragma message "Verify program-id is disambiguated"
!       size_t alphabet_index = symbol_unique_index(symbol_elem_of(&alphabet));
  
        unsigned char ach[256];
  
*************** initialize_the_data()
*** 7166,7172 ****
            build_int_cst_type(INT, current_encoding(national_encoding_e)),
            NULL_TREE);
  
-   __gg__currency_signs = __gg__ct_currency_signs;
    // We initialize currency both at compile time and run time
    __gg__currency_sign_init();
    gg_call(VOID,
--- 7166,7171 ----
*************** parser_file_add(struct cbl_file_t *file)
*** 9911,9918 ****
            __func__);
      }
  
! #pragma message "Use program-id to disambiguate"
!   size_t symbol_table_index = symbol_index(symbol_elem_of(file));
  
    gg_call(VOID,
            "__gg__file_init",
--- 9910,9917 ----
            __func__);
      }
  
! #pragma message "Verify program-id is disambiguated"
!   size_t symbol_table_index = symbol_unique_index(symbol_elem_of(file));
  
    gg_call(VOID,
            "__gg__file_init",
*************** void
*** 14608,14613 ****
--- 14607,14613 ----
  parser_exception_file( cbl_field_t *tgt, cbl_file_t *file)
    {
    Analyze();
+   RETURN_IF_PARSE_ONLY;
    gg_call(VOID,
            "__gg__func_exception_file",
            gg_get_address_of(tgt->var_decl_node),
diff -Nrcpad gcc-16-20251109/gcc/cobol/lang.opt.urls gcc-16-20251116/gcc/cobol/lang.opt.urls
*** gcc-16-20251109/gcc/cobol/lang.opt.urls	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/cobol/lang.opt.urls	Sun Nov 16 22:32:53 2025
*************** LangUrlSuffix_Fortran(gfortran/Fortran-D
*** 19,24 ****
--- 19,27 ----
  ffree-form
  LangUrlSuffix_Fortran(gfortran/Fortran-Dialect-Options.html#index-ffree-form)
  
+ preprocess
+ UrlSuffix(gcc/Overall-Options.html#index-preprocess)
+ 
  iprefix
  UrlSuffix(gcc/Directory-Options.html#index-iprefix) LangUrlSuffix_D(gdc/Directory-Options.html#index-iprefix) LangUrlSuffix_Fortran(gfortran/Preprocessing-Options.html#index-iprefix)
  
diff -Nrcpad gcc-16-20251109/gcc/cobol/lexio.cc gcc-16-20251116/gcc/cobol/lexio.cc
*** gcc-16-20251109/gcc/cobol/lexio.cc	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/cobol/lexio.cc	Sun Nov 16 22:32:53 2025
*************** parse_replace_pairs( const char *stmt, c
*** 907,913 ****
      dbgmsg( "%s:%d: %s: " HOST_SIZE_T_PRINT_UNSIGNED " pairs parsed from  '%.*s'",
              __func__, __LINE__,
              parsed.done() ? "done" : "not done",
!             (fmt_size_t)pairs.size(), parsed.stmt.size(), parsed.stmt.p );
      int i = 0;
      for( const auto& replace : pairs ) {
        dbgmsg("%s:%d:%4d: '%s' => '%s'", __func__, __LINE__,
--- 907,914 ----
      dbgmsg( "%s:%d: %s: " HOST_SIZE_T_PRINT_UNSIGNED " pairs parsed from  '%.*s'",
              __func__, __LINE__,
              parsed.done() ? "done" : "not done",
!             (fmt_size_t)pairs.size(), parsed.stmt.size(),
!             parsed.stmt.size() ? parsed.stmt.p : "" );
      int i = 0;
      for( const auto& replace : pairs ) {
        dbgmsg("%s:%d:%4d: '%s' => '%s'", __func__, __LINE__,
diff -Nrcpad gcc-16-20251109/gcc/cobol/parse.y gcc-16-20251116/gcc/cobol/parse.y
*** gcc-16-20251109/gcc/cobol/parse.y	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/cobol/parse.y	Sun Nov 16 22:32:53 2025
*************** config_paragraph:
*** 2397,2403 ****
          |       SOURCE_COMPUTER  '.' NAME '.'
          |       SOURCE_COMPUTER  '.' NAME with_debug '.'
          |       OBJECT_COMPUTER  '.' 
!         |       OBJECT_COMPUTER  '.' NAME[computer] collations '.'
          |       REPOSITORY dot
          |       REPOSITORY dot repo_members '.'
                  ;
--- 2397,2403 ----
          |       SOURCE_COMPUTER  '.' NAME '.'
          |       SOURCE_COMPUTER  '.' NAME with_debug '.'
          |       OBJECT_COMPUTER  '.' 
!         |       OBJECT_COMPUTER  '.' NAME[computer] object_computer '.'
          |       REPOSITORY dot
          |       REPOSITORY dot repo_members '.'
                  ;
*************** with_debug:     with DEBUGGING MODE {
*** 2528,2534 ****
                  }
                  ;
  
! collations:     %empty
          |       char_classification
          |       collating_sequence
          |       char_classification collating_sequence
--- 2528,2534 ----
                  }
                  ;
  
! object_computer: %empty
          |       char_classification
          |       collating_sequence
          |       char_classification collating_sequence
*************** value_clause:   VALUE all LITERAL[lit] {
*** 4842,4854 ****
                    }
                    if( $value != NULLS ) {
                      auto fig = constant_of(constant_index($value));
!                     current_field()->data.initial = fig->data.initial;
                    }
                  }
          |       /* VALUE is */ NULLPTR
                  {
                      auto fig = constant_of(constant_index(NULLS));
!                     current_field()->data.initial = fig->data.initial;
                  }
          |       VALUE error
                  {
--- 4842,4856 ----
                    }
                    if( $value != NULLS ) {
                      auto fig = constant_of(constant_index($value));
!                     cbl_field_t *field = current_field();
!                     field->data.initial = fig->data.initial;
                    }
                  }
          |       /* VALUE is */ NULLPTR
                  {
                      auto fig = constant_of(constant_index(NULLS));
!                     cbl_field_t *field = current_field();
!                     field->data.initial = fig->data.initial;
                  }
          |       VALUE error
                  {
*************** any_length:     ANY LENGTH
*** 4938,4947 ****
                    if( field->attr & any_length_e ) {
                      error_msg(@1, "ANY LENGTH already set");
                    }
                    if( ! (field->level == 1 &&
                           current_data_section == linkage_datasect_e &&
                           (1 < current.program_level() ||
! 			      current.program()->is_function())) ) {
                      error_msg(@1, "ANY LENGTH valid only for 01 "
                              "in LINKAGE SECTION of a function or contained program");
                      YYERROR;
--- 4940,4952 ----
                    if( field->attr & any_length_e ) {
                      error_msg(@1, "ANY LENGTH already set");
                    }
+                   const char *prog_name = current.program()->name;
+                   bool is_compat = 0 < compat_programs.count(prog_name);
                    if( ! (field->level == 1 &&
                           current_data_section == linkage_datasect_e &&
                           (1 < current.program_level() ||
! 			      current.program()->is_function() ||
!                               is_compat)) ) {
                      error_msg(@1, "ANY LENGTH valid only for 01 "
                              "in LINKAGE SECTION of a function or contained program");
                      YYERROR;
*************** go_to:          GOTO labels[args]
*** 10338,10348 ****
--- 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 );
*************** function_udf:   FUNCTION_UDF '(' arg_lis
*** 10708,10718 ****
  		  const auto returning = cbl_field_of(symbol_at(L->returning));
                    $$ = new_temporary_clone(returning);
  		  $$->data.initial = returning->name; // user's name for the field
!                   cbl_field_attr_t call_attr
!                                  = (cbl_field_attr_t)(quoted_e|hex_encoded_e);
!                   cbl_field_t *name = new_literal(strlen(L->name),
!                                                   L->name,
!                                                   call_attr);
                    ast_call( @1, name, $$, narg, args, NULL, NULL, true );
                  }
                  ;
--- 10715,10724 ----
  		  const auto returning = cbl_field_of(symbol_at(L->returning));
                    $$ = new_temporary_clone(returning);
  		  $$->data.initial = returning->name; // user's name for the field
! 
!                   // Pretend hex-encoded because that means use verbatim.
!                   auto attr = cbl_field_attr_t(quoted_e | hex_encoded_e);
!                   auto name = new_literal(strlen(L->name), L->name, attr);
                    ast_call( @1, name, $$, narg, args, NULL, NULL, true );
                  }
                  ;
*************** void ast_call( const YYLTYPE& loc, cbl_r
*** 12083,12088 ****
--- 12089,12095 ----
                             name.field->data, 77 };
      called.attr |= name.field->attr;
      snprintf(called.name, sizeof(called.name), "_%s", name.field->data.initial);
+     called.attr |= name.field->attr;
      name.field = cbl_field_of(symbol_field_add(PROGRAM, &called));
      symbol_field_location(field_index(name.field), loc);
      parser_symbol_add(name.field);
diff -Nrcpad gcc-16-20251109/gcc/cobol/parse_ante.h gcc-16-20251116/gcc/cobol/parse_ante.h
*** gcc-16-20251109/gcc/cobol/parse_ante.h	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/cobol/parse_ante.h	Sun Nov 16 22:32:53 2025
*************** extern int yydebug;
*** 111,116 ****
--- 111,125 ----
  
  #include <cstdarg>
  
+ // These programs in libgcobol/compat are allowed to use ANY LENGTH even though
+ // they look like top-level programs.
+ static const std::set<std::string> compat_programs {
+   "CBL_ALLOC_MEM", 
+   "CBL_CHECK_FILE_EXIST", 
+   "CBL_DELETE_FILE", 
+   "CBL_FREE_MEM", 
+ };
+ 
  const char *
  consistent_encoding_check( const YYLTYPE& loc, const char input[] ) {
    cbl_field_t faux = {};
*************** has_clause( int data_clauses, data_claus
*** 180,185 ****
--- 189,203 ----
    return clause == (data_clauses & clause);
  }
  
+ 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[] ) {
*************** intrinsic_call_2( cbl_field_t *tgt, int
*** 2521,2529 ****
      error_msg(args[n].loc, "invalid parameter '%s'", args[n].field->name);
      return false;
    }
!   const char *fund = intrinsic_cname(token);
!   if( !fund ) return false;
!   parser_intrinsic_call_2( tgt, fund, args[0], args[1] );
    return true;
  }
  
--- 2539,2547 ----
      error_msg(args[n].loc, "invalid parameter '%s'", args[n].field->name);
      return false;
    }
!   const char *func = intrinsic_cname(token);
!   if( !func ) return false;
!   parser_intrinsic_call_2( tgt, func, args[0], args[1] );
    return true;
  }
  
diff -Nrcpad gcc-16-20251109/gcc/cobol/scan.l gcc-16-20251116/gcc/cobol/scan.l
*** gcc-16-20251109/gcc/cobol/scan.l	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/cobol/scan.l	Sun Nov 16 22:32:53 2025
*************** REVERSED	{ return REVERSED; }
*** 572,578 ****
  RETURN		{ return RETURN; }
  RESTRICTED	{ return RESTRICTED; }
  
! RESUME		{
  		  if( ! dialect_ibm() ) return RESUME;
  		  yylval.string = xstrdup(yytext);
  		  return typed_name(yytext);
--- 572,578 ----
  RETURN		{ return RETURN; }
  RESTRICTED	{ return RESTRICTED; }
  
! RESUME		{ // RESUME is ISO syntax, not IBM.  
  		  if( ! dialect_ibm() ) return RESUME;
  		  yylval.string = xstrdup(yytext);
  		  return typed_name(yytext);
diff -Nrcpad gcc-16-20251109/gcc/cobol/symbols.cc gcc-16-20251116/gcc/cobol/symbols.cc
*** gcc-16-20251109/gcc/cobol/symbols.cc	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/cobol/symbols.cc	Sun Nov 16 22:32:53 2025
*************** symbols_update( size_t first, bool parse
*** 1862,1867 ****
--- 1862,1868 ----
                     __func__,
                     3 + cbl_field_type_str(field->type),
                     (fmt_size_t)isym, field->name, field->data.capacity);
+           gcc_unreachable();
          }
        }
        return 0;
*************** symbol_field_parent_set( cbl_field_t *fi
*** 2187,2198 ****
            return NULL;
          }
          prior->type = FldGroup;
!         prior->codeset.set();
! ////        if( ! prior->codeset.set() ) { // maybe just ignore?
! //// Dubner sez: Ignore.  This was triggering with -finternal-ebcdic
! ////          ERROR_FIELD(prior, "%qs is already National", prior->name);
! ////          return NULL;
! ////        }
          field->attr |= numeric_group_attrs(prior);
        }
        // verify level 88 domain value
--- 2188,2196 ----
            return NULL;
          }
          prior->type = FldGroup;
!         if( ! prior->codeset.set() ) { // needs attention
!           dbgmsg("'%s' is already National", prior->name);
!         }
          field->attr |= numeric_group_attrs(prior);
        }
        // verify level 88 domain value
*************** add_token( symbol_elem_t sym ) {
*** 2250,2255 ****
--- 2248,2255 ----
    return sym;
  }
  
+ const std::list<cbl_field_t> cdf_literalize();
+ 
  /*
   * When adding special registers, be sure to create the actual cblc_field_t
   * in libgcobol/constants.cc.
*************** symbol_table_init(void) {
*** 2455,2460 ****
--- 2455,2468 ----
    table.nelem = p - table.elems;
    assert(table.nelem < table.capacity);
  
+   // Add any CDF values already defined as literals.
+   // After symbols are ready, the CDF adds them directly. 
+   const std::list<cbl_field_t> cdf_values = cdf_literalize();
+   table.nelem += cdf_values.size();
+   assert(table.nelem < table.capacity);
+   
+   p = std::transform(cdf_values.begin(), cdf_values.end(), p, elementize);
+   
    // Initialize symbol table.
    symbols = table;
  
diff -Nrcpad gcc-16-20251109/gcc/cobol/symbols.h gcc-16-20251116/gcc/cobol/symbols.h
*** gcc-16-20251109/gcc/cobol/symbols.h	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/cobol/symbols.h	Sun Nov 16 22:32:53 2025
*************** enum cbl_dialect_t {
*** 57,62 ****
--- 57,73 ----
    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 "???";
+ };
+ 
  // Dialects may be combined. 
  extern unsigned int cbl_dialects;
  void cobol_dialect_set( cbl_dialect_t dialect );
*************** const char * cbl_field_attr_str( cbl_fie
*** 143,153 ****
  
  cbl_field_attr_t literal_attr( const char prefix[] );
  
- static inline bool
- is_working_storage(uint32_t attr) {
-   return 0 == (attr & (linkage_e | local_e));
- }
- 
  int cbl_figconst_tok( const char *value );
  enum cbl_figconst_t cbl_figconst_of( const char *value );
  const char * cbl_figconst_str( cbl_figconst_t fig );
--- 154,159 ----
*************** struct cbl_field_data_t {
*** 391,396 ****
--- 397,422 ----
      return valify();
    }
  
+   // If initial (of Numeric Edited) has any length but capacity, adjust it.  
+   bool manhandle_initial() {
+     assert(capacity > 0);
+     assert(initial != nullptr);
+     if( capacity < strlen(initial) ) {
+       char *p = const_cast<char*>(initial);
+       p[capacity] = '\0';
+       return true;
+     }
+     if( strlen(initial) < capacity ) {
+       auto tgt = reinterpret_cast<char *>( xmalloc(capacity + 1) );
+       auto pend = tgt + capacity;
+       auto p = std::copy(initial, initial + strlen(initial), tgt);
+       std::fill(p, pend, 0x20);
+       p = pend - 1;
+       *p = '\0';
+       initial = tgt;
+     }
+     return false;
+   }
    bool initial_within_capacity() const {
      return initial[capacity] == '\0'
        ||   initial[capacity] == '!';
*************** struct cbl_field_t {
*** 630,636 ****
                 uint32_t level = 0, const cbl_name_t name = "", int line = 0 )
      : offset(0), type(type), usage(FldInvalid), attr(attr)
      , parent(0), our_index(0), level(level)
!     , line(line), file(0), data(data)
      , var_decl_node(nullptr), data_decl_node(nullptr)
    {
      gcc_assert(strlen(name) < sizeof this->name);
--- 656,662 ----
                 uint32_t level = 0, const cbl_name_t name = "", int line = 0 )
      : offset(0), type(type), usage(FldInvalid), attr(attr)
      , parent(0), our_index(0), level(level)
!     , line(line), name(""), file(0), data(data)
      , var_decl_node(nullptr), data_decl_node(nullptr)
    {
      gcc_assert(strlen(name) < sizeof this->name);
*************** struct cbl_section_t {
*** 1539,1553 ****
      }
      gcc_unreachable();
    }
-   uint32_t attr() const {
-     switch(type) {
-     case file_sect_e:
-     case working_sect_e: return 0;
-     case linkage_sect_e: return linkage_e;
-     case local_sect_e:   return local_e;
-     }
-     gcc_unreachable();
-   }
  };
  
  struct cbl_locale_t {
--- 1565,1570 ----
*************** struct cbl_until_addresses_t {
*** 2273,2278 ****
--- 2290,2297 ----
  
  size_t symbol_index(); // nth after first program symbol
  size_t symbol_index( const symbol_elem_t *e );
+ size_t symbol_unique_index( const struct symbol_elem_t *e );
+ 
  struct symbol_elem_t * symbol_at( size_t index );
  
  struct cbl_options_t {
diff -Nrcpad gcc-16-20251109/gcc/cobol/token_names.h gcc-16-20251116/gcc/cobol/token_names.h
*** gcc-16-20251109/gcc/cobol/token_names.h	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/cobol/token_names.h	Sun Nov 16 22:32:53 2025
***************
*** 1,5 ****
! // generated by /home/jklowden/projects/3rd/gcc/parser/gcc/cobol/token_names.h.gen cobol/parse.h
! // Mon Oct 20 14:11:39 EDT 2025
  tokens = {
  	{ "identification", IDENTIFICATION_DIV }, // 258
  	{ "environment", ENVIRONMENT_DIV }, // 259
--- 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
*************** tokens = {
*** 502,710 ****
  	{ "reserve", RESERVE }, // 751
  	{ "restricted", RESTRICTED }, // 752
  	{ "resume", RESUME }, // 753
! 	{ "reverse", REVERSE }, // 754
! 	{ "reversed", REVERSED }, // 755
! 	{ "rewind", REWIND }, // 756
! 	{ "rf", RF }, // 757
! 	{ "rh", RH }, // 758
! 	{ "right", RIGHT }, // 759
! 	{ "rounded", ROUNDED }, // 760
! 	{ "run", RUN }, // 761
! 	{ "same", SAME }, // 762
! 	{ "screen", SCREEN }, // 763
! 	{ "sd", SD }, // 764
! 	{ "seconds-from-formatted-time", SECONDS_FROM_FORMATTED_TIME }, // 765
! 	{ "seconds-past-midnight", SECONDS_PAST_MIDNIGHT }, // 766
! 	{ "security", SECURITY }, // 767
! 	{ "separate", SEPARATE }, // 768
! 	{ "sequence", SEQUENCE }, // 769
! 	{ "sequential", SEQUENTIAL }, // 770
! 	{ "sharing", SHARING }, // 771
! 	{ "simple-exit", SIMPLE_EXIT }, // 772
! 	{ "sign", SIGN }, // 773
! 	{ "sin", SIN }, // 774
! 	{ "size", SIZE }, // 775
! 	{ "smallest-algebraic", SMALLEST_ALGEBRAIC }, // 776
! 	{ "source", SOURCE }, // 777
! 	{ "source-computer", SOURCE_COMPUTER }, // 778
! 	{ "special-names", SPECIAL_NAMES }, // 779
! 	{ "sqrt", SQRT }, // 780
! 	{ "stack", STACK }, // 781
! 	{ "standard", STANDARD }, // 782
! 	{ "standard-1", STANDARD_1 }, // 783
! 	{ "standard-deviation", STANDARD_DEVIATION }, // 784
! 	{ "standard-compare", STANDARD_COMPARE }, // 785
! 	{ "status", STATUS }, // 786
! 	{ "strong", STRONG }, // 787
! 	{ "substitute", SUBSTITUTE }, // 788
! 	{ "sum", SUM }, // 789
! 	{ "symbol", SYMBOL }, // 790
! 	{ "symbolic", SYMBOLIC }, // 791
! 	{ "synchronized", SYNCHRONIZED }, // 792
! 	{ "tallying", TALLYING }, // 793
! 	{ "tan", TAN }, // 794
! 	{ "terminate", TERMINATE }, // 795
! 	{ "test", TEST }, // 796
! 	{ "test-date-yyyymmdd", TEST_DATE_YYYYMMDD }, // 797
! 	{ "test-day-yyyyddd", TEST_DAY_YYYYDDD }, // 798
! 	{ "test-formatted-datetime", TEST_FORMATTED_DATETIME }, // 799
! 	{ "test-numval", TEST_NUMVAL }, // 800
! 	{ "test-numval-c", TEST_NUMVAL_C }, // 801
! 	{ "test-numval-f", TEST_NUMVAL_F }, // 802
! 	{ "than", THAN }, // 803
! 	{ "time", TIME }, // 804
! 	{ "times", TIMES }, // 805
! 	{ "to", TO }, // 806
! 	{ "top", TOP }, // 807
! 	{ "top-level", TOP_LEVEL }, // 808
! 	{ "tracks", TRACKS }, // 809
! 	{ "track-area", TRACK_AREA }, // 810
! 	{ "trailing", TRAILING }, // 811
! 	{ "transform", TRANSFORM }, // 812
! 	{ "trim", TRIM }, // 813
! 	{ "true", TRUE_kw }, // 814
! 	{ "try", TRY }, // 815
! 	{ "turn", TURN }, // 816
! 	{ "type", TYPE }, // 817
! 	{ "typedef", TYPEDEF }, // 818
! 	{ "ulength", ULENGTH }, // 819
! 	{ "unbounded", UNBOUNDED }, // 820
! 	{ "unit", UNIT }, // 821
! 	{ "units", UNITS }, // 822
! 	{ "unit-record", UNIT_RECORD }, // 823
! 	{ "until", UNTIL }, // 824
! 	{ "up", UP }, // 825
! 	{ "upon", UPON }, // 826
! 	{ "upos", UPOS }, // 827
! 	{ "upper-case", UPPER_CASE }, // 828
! 	{ "usage", USAGE }, // 829
! 	{ "using", USING }, // 830
! 	{ "usubstr", USUBSTR }, // 831
! 	{ "usupplementary", USUPPLEMENTARY }, // 832
! 	{ "utility", UTILITY }, // 833
! 	{ "uuid4", UUID4 }, // 834
! 	{ "uvalid", UVALID }, // 835
! 	{ "uwidth", UWIDTH }, // 836
! 	{ "validating", VALIDATING }, // 837
! 	{ "value", VALUE }, // 838
! 	{ "variance", VARIANCE }, // 839
! 	{ "varying", VARYING }, // 840
! 	{ "volatile", VOLATILE }, // 841
! 	{ "when-compiled", WHEN_COMPILED }, // 842
! 	{ "with", WITH }, // 843
! 	{ "working-storage", WORKING_STORAGE }, // 844
! 	{ "year-to-yyyy", YEAR_TO_YYYY }, // 845
! 	{ "yyyyddd", YYYYDDD }, // 846
! 	{ "yyyymmdd", YYYYMMDD }, // 847
! 	{ "arithmetic", ARITHMETIC }, // 848
! 	{ "attribute", ATTRIBUTE }, // 849
! 	{ "auto", AUTO }, // 850
! 	{ "automatic", AUTOMATIC }, // 851
! 	{ "away-from-zero", AWAY_FROM_ZERO }, // 852
! 	{ "background-color", BACKGROUND_COLOR }, // 853
! 	{ "bell", BELL }, // 854
! 	{ "binary-encoding", BINARY_ENCODING }, // 855
! 	{ "blink", BLINK }, // 856
! 	{ "capacity", CAPACITY }, // 857
! 	{ "center", CENTER }, // 858
! 	{ "classification", CLASSIFICATION }, // 859
! 	{ "cycle", CYCLE }, // 860
! 	{ "decimal-encoding", DECIMAL_ENCODING }, // 861
! 	{ "entry-convention", ENTRY_CONVENTION }, // 862
! 	{ "eol", EOL }, // 863
! 	{ "eos", EOS }, // 864
! 	{ "erase", ERASE }, // 865
! 	{ "expands", EXPANDS }, // 866
! 	{ "float-binary", FLOAT_BINARY }, // 867
! 	{ "float-decimal", FLOAT_DECIMAL }, // 868
! 	{ "foreground-color", FOREGROUND_COLOR }, // 869
! 	{ "forever", FOREVER }, // 870
! 	{ "full", FULL }, // 871
! 	{ "highlight", HIGHLIGHT }, // 872
! 	{ "high-order-left", HIGH_ORDER_LEFT }, // 873
! 	{ "high-order-right", HIGH_ORDER_RIGHT }, // 874
! 	{ "ignoring", IGNORING }, // 875
! 	{ "implements", IMPLEMENTS }, // 876
! 	{ "initialized", INITIALIZED }, // 877
! 	{ "intermediate", INTERMEDIATE }, // 878
! 	{ "lc-all", LC_ALL_kw }, // 879
! 	{ "lc-collate", LC_COLLATE_kw }, // 880
! 	{ "lc-ctype", LC_CTYPE_kw }, // 881
! 	{ "lc-messages", LC_MESSAGES_kw }, // 882
! 	{ "lc-monetary", LC_MONETARY_kw }, // 883
! 	{ "lc-numeric", LC_NUMERIC_kw }, // 884
! 	{ "lc-time", LC_TIME_kw }, // 885
! 	{ "lowlight", LOWLIGHT }, // 886
! 	{ "nearest-away-from-zero", NEAREST_AWAY_FROM_ZERO }, // 887
! 	{ "nearest-even", NEAREST_EVEN }, // 888
! 	{ "nearest-toward-zero", NEAREST_TOWARD_ZERO }, // 889
! 	{ "none", NONE }, // 890
! 	{ "normal", NORMAL }, // 891
! 	{ "numbers", NUMBERS }, // 892
! 	{ "prefixed", PREFIXED }, // 893
! 	{ "previous", PREVIOUS }, // 894
! 	{ "prohibited", PROHIBITED }, // 895
! 	{ "relation", RELATION }, // 896
! 	{ "required", REQUIRED }, // 897
! 	{ "reverse-video", REVERSE_VIDEO }, // 898
! 	{ "rounding", ROUNDING }, // 899
! 	{ "seconds", SECONDS }, // 900
! 	{ "secure", SECURE }, // 901
! 	{ "short", SHORT }, // 902
! 	{ "signed", SIGNED_kw }, // 903
! 	{ "standard-binary", STANDARD_BINARY }, // 904
! 	{ "standard-decimal", STANDARD_DECIMAL }, // 905
! 	{ "statement", STATEMENT }, // 906
! 	{ "step", STEP }, // 907
! 	{ "structure", STRUCTURE }, // 908
! 	{ "toward-greater", TOWARD_GREATER }, // 909
! 	{ "toward-lesser", TOWARD_LESSER }, // 910
! 	{ "truncation", TRUNCATION }, // 911
! 	{ "ucs-4", UCS_4 }, // 912
! 	{ "underline", UNDERLINE }, // 913
! 	{ "unsigned", UNSIGNED_kw }, // 914
! 	{ "utf-16", UTF_16 }, // 915
! 	{ "utf-8", UTF_8 }, // 916
! 	{ "xmlgenerate", XMLGENERATE }, // 917
! 	{ "xmlparse", XMLPARSE }, // 918
! 	{ "address", ADDRESS }, // 919
! 	{ "end-accept", END_ACCEPT }, // 920
! 	{ "end-add", END_ADD }, // 921
! 	{ "end-call", END_CALL }, // 922
! 	{ "end-compute", END_COMPUTE }, // 923
! 	{ "end-delete", END_DELETE }, // 924
! 	{ "end-display", END_DISPLAY }, // 925
! 	{ "end-divide", END_DIVIDE }, // 926
! 	{ "end-evaluate", END_EVALUATE }, // 927
! 	{ "end-multiply", END_MULTIPLY }, // 928
! 	{ "end-perform", END_PERFORM }, // 929
! 	{ "end-read", END_READ }, // 930
! 	{ "end-return", END_RETURN }, // 931
! 	{ "end-rewrite", END_REWRITE }, // 932
! 	{ "end-search", END_SEARCH }, // 933
! 	{ "end-start", END_START }, // 934
! 	{ "end-string", END_STRING }, // 935
! 	{ "end-subtract", END_SUBTRACT }, // 936
! 	{ "end-unstring", END_UNSTRING }, // 937
! 	{ "end-write", END_WRITE }, // 938
! 	{ "end-xml", END_XML }, // 939
! 	{ "end-if", END_IF }, // 940
! 	{ "attributes", ATTRIBUTES }, // 941
! 	{ "element", ELEMENT }, // 942
! 	{ "namespace", NAMESPACE }, // 943
! 	{ "namespace-prefix", NAMESPACE_PREFIX }, // 944
! 	{ "nonnumeric", NONNUMERIC }, // 946
! 	{ "xml-declaration", XML_DECLARATION }, // 947
! 	{ "thru", THRU }, // 949
! 	{ "through", THRU }, // 949
! 	{ "or", OR }, // 950
! 	{ "and", AND }, // 951
! 	{ "not", NOT }, // 952
! 	{ "ne", NE }, // 953
! 	{ "le", LE }, // 954
! 	{ "ge", GE }, // 955
! 	{ "pow", POW }, // 956
! 	{ "neg", NEG }, // 957
  };
  
  // cppcheck-suppress useInitializationList
--- 502,711 ----
  	{ "reserve", RESERVE }, // 751
  	{ "restricted", RESTRICTED }, // 752
  	{ "resume", RESUME }, // 753
! 	{ "retry", RETRY }, // 754
! 	{ "reverse", REVERSE }, // 755
! 	{ "reversed", REVERSED }, // 756
! 	{ "rewind", REWIND }, // 757
! 	{ "rf", RF }, // 758
! 	{ "rh", RH }, // 759
! 	{ "right", RIGHT }, // 760
! 	{ "rounded", ROUNDED }, // 761
! 	{ "run", RUN }, // 762
! 	{ "same", SAME }, // 763
! 	{ "screen", SCREEN }, // 764
! 	{ "sd", SD }, // 765
! 	{ "seconds-from-formatted-time", SECONDS_FROM_FORMATTED_TIME }, // 766
! 	{ "seconds-past-midnight", SECONDS_PAST_MIDNIGHT }, // 767
! 	{ "security", SECURITY }, // 768
! 	{ "separate", SEPARATE }, // 769
! 	{ "sequence", SEQUENCE }, // 770
! 	{ "sequential", SEQUENTIAL }, // 771
! 	{ "sharing", SHARING }, // 772
! 	{ "simple-exit", SIMPLE_EXIT }, // 773
! 	{ "sign", SIGN }, // 774
! 	{ "sin", SIN }, // 775
! 	{ "size", SIZE }, // 776
! 	{ "smallest-algebraic", SMALLEST_ALGEBRAIC }, // 777
! 	{ "source", SOURCE }, // 778
! 	{ "source-computer", SOURCE_COMPUTER }, // 779
! 	{ "special-names", SPECIAL_NAMES }, // 780
! 	{ "sqrt", SQRT }, // 781
! 	{ "stack", STACK }, // 782
! 	{ "standard", STANDARD }, // 783
! 	{ "standard-1", STANDARD_1 }, // 784
! 	{ "standard-deviation", STANDARD_DEVIATION }, // 785
! 	{ "standard-compare", STANDARD_COMPARE }, // 786
! 	{ "status", STATUS }, // 787
! 	{ "strong", STRONG }, // 788
! 	{ "substitute", SUBSTITUTE }, // 789
! 	{ "sum", SUM }, // 790
! 	{ "symbol", SYMBOL }, // 791
! 	{ "symbolic", SYMBOLIC }, // 792
! 	{ "synchronized", SYNCHRONIZED }, // 793
! 	{ "tallying", TALLYING }, // 794
! 	{ "tan", TAN }, // 795
! 	{ "terminate", TERMINATE }, // 796
! 	{ "test", TEST }, // 797
! 	{ "test-date-yyyymmdd", TEST_DATE_YYYYMMDD }, // 798
! 	{ "test-day-yyyyddd", TEST_DAY_YYYYDDD }, // 799
! 	{ "test-formatted-datetime", TEST_FORMATTED_DATETIME }, // 800
! 	{ "test-numval", TEST_NUMVAL }, // 801
! 	{ "test-numval-c", TEST_NUMVAL_C }, // 802
! 	{ "test-numval-f", TEST_NUMVAL_F }, // 803
! 	{ "than", THAN }, // 804
! 	{ "time", TIME }, // 805
! 	{ "times", TIMES }, // 806
! 	{ "to", TO }, // 807
! 	{ "top", TOP }, // 808
! 	{ "top-level", TOP_LEVEL }, // 809
! 	{ "tracks", TRACKS }, // 810
! 	{ "track-area", TRACK_AREA }, // 811
! 	{ "trailing", TRAILING }, // 812
! 	{ "transform", TRANSFORM }, // 813
! 	{ "trim", TRIM }, // 814
! 	{ "true", TRUE_kw }, // 815
! 	{ "try", TRY }, // 816
! 	{ "turn", TURN }, // 817
! 	{ "type", TYPE }, // 818
! 	{ "typedef", TYPEDEF }, // 819
! 	{ "ulength", ULENGTH }, // 820
! 	{ "unbounded", UNBOUNDED }, // 821
! 	{ "unit", UNIT }, // 822
! 	{ "units", UNITS }, // 823
! 	{ "unit-record", UNIT_RECORD }, // 824
! 	{ "until", UNTIL }, // 825
! 	{ "up", UP }, // 826
! 	{ "upon", UPON }, // 827
! 	{ "upos", UPOS }, // 828
! 	{ "upper-case", UPPER_CASE }, // 829
! 	{ "usage", USAGE }, // 830
! 	{ "using", USING }, // 831
! 	{ "usubstr", USUBSTR }, // 832
! 	{ "usupplementary", USUPPLEMENTARY }, // 833
! 	{ "utility", UTILITY }, // 834
! 	{ "uuid4", UUID4 }, // 835
! 	{ "uvalid", UVALID }, // 836
! 	{ "uwidth", UWIDTH }, // 837
! 	{ "validating", VALIDATING }, // 838
! 	{ "value", VALUE }, // 839
! 	{ "variance", VARIANCE }, // 840
! 	{ "varying", VARYING }, // 841
! 	{ "volatile", VOLATILE }, // 842
! 	{ "when-compiled", WHEN_COMPILED }, // 843
! 	{ "with", WITH }, // 844
! 	{ "working-storage", WORKING_STORAGE }, // 845
! 	{ "year-to-yyyy", YEAR_TO_YYYY }, // 846
! 	{ "yyyyddd", YYYYDDD }, // 847
! 	{ "yyyymmdd", YYYYMMDD }, // 848
! 	{ "arithmetic", ARITHMETIC }, // 849
! 	{ "attribute", ATTRIBUTE }, // 850
! 	{ "auto", AUTO }, // 851
! 	{ "automatic", AUTOMATIC }, // 852
! 	{ "away-from-zero", AWAY_FROM_ZERO }, // 853
! 	{ "background-color", BACKGROUND_COLOR }, // 854
! 	{ "bell", BELL }, // 855
! 	{ "binary-encoding", BINARY_ENCODING }, // 856
! 	{ "blink", BLINK }, // 857
! 	{ "capacity", CAPACITY }, // 858
! 	{ "center", CENTER }, // 859
! 	{ "classification", CLASSIFICATION }, // 860
! 	{ "cycle", CYCLE }, // 861
! 	{ "decimal-encoding", DECIMAL_ENCODING }, // 862
! 	{ "entry-convention", ENTRY_CONVENTION }, // 863
! 	{ "eol", EOL }, // 864
! 	{ "eos", EOS }, // 865
! 	{ "erase", ERASE }, // 866
! 	{ "expands", EXPANDS }, // 867
! 	{ "float-binary", FLOAT_BINARY }, // 868
! 	{ "float-decimal", FLOAT_DECIMAL }, // 869
! 	{ "foreground-color", FOREGROUND_COLOR }, // 870
! 	{ "forever", FOREVER }, // 871
! 	{ "full", FULL }, // 872
! 	{ "highlight", HIGHLIGHT }, // 873
! 	{ "high-order-left", HIGH_ORDER_LEFT }, // 874
! 	{ "high-order-right", HIGH_ORDER_RIGHT }, // 875
! 	{ "ignoring", IGNORING }, // 876
! 	{ "implements", IMPLEMENTS }, // 877
! 	{ "initialized", INITIALIZED }, // 878
! 	{ "intermediate", INTERMEDIATE }, // 879
! 	{ "lc-all", LC_ALL_kw }, // 880
! 	{ "lc-collate", LC_COLLATE_kw }, // 881
! 	{ "lc-ctype", LC_CTYPE_kw }, // 882
! 	{ "lc-messages", LC_MESSAGES_kw }, // 883
! 	{ "lc-monetary", LC_MONETARY_kw }, // 884
! 	{ "lc-numeric", LC_NUMERIC_kw }, // 885
! 	{ "lc-time", LC_TIME_kw }, // 886
! 	{ "lowlight", LOWLIGHT }, // 887
! 	{ "nearest-away-from-zero", NEAREST_AWAY_FROM_ZERO }, // 888
! 	{ "nearest-even", NEAREST_EVEN }, // 889
! 	{ "nearest-toward-zero", NEAREST_TOWARD_ZERO }, // 890
! 	{ "none", NONE }, // 891
! 	{ "normal", NORMAL }, // 892
! 	{ "numbers", NUMBERS }, // 893
! 	{ "prefixed", PREFIXED }, // 894
! 	{ "previous", PREVIOUS }, // 895
! 	{ "prohibited", PROHIBITED }, // 896
! 	{ "relation", RELATION }, // 897
! 	{ "required", REQUIRED }, // 898
! 	{ "reverse-video", REVERSE_VIDEO }, // 899
! 	{ "rounding", ROUNDING }, // 900
! 	{ "seconds", SECONDS }, // 901
! 	{ "secure", SECURE }, // 902
! 	{ "short", SHORT }, // 903
! 	{ "signed", SIGNED_kw }, // 904
! 	{ "standard-binary", STANDARD_BINARY }, // 905
! 	{ "standard-decimal", STANDARD_DECIMAL }, // 906
! 	{ "statement", STATEMENT }, // 907
! 	{ "step", STEP }, // 908
! 	{ "structure", STRUCTURE }, // 909
! 	{ "toward-greater", TOWARD_GREATER }, // 910
! 	{ "toward-lesser", TOWARD_LESSER }, // 911
! 	{ "truncation", TRUNCATION }, // 912
! 	{ "ucs-4", UCS_4 }, // 913
! 	{ "underline", UNDERLINE }, // 914
! 	{ "unsigned", UNSIGNED_kw }, // 915
! 	{ "utf-16", UTF_16 }, // 916
! 	{ "utf-8", UTF_8 }, // 917
! 	{ "xmlgenerate", XMLGENERATE }, // 918
! 	{ "xmlparse", XMLPARSE }, // 919
! 	{ "address", ADDRESS }, // 920
! 	{ "end-accept", END_ACCEPT }, // 921
! 	{ "end-add", END_ADD }, // 922
! 	{ "end-call", END_CALL }, // 923
! 	{ "end-compute", END_COMPUTE }, // 924
! 	{ "end-delete", END_DELETE }, // 925
! 	{ "end-display", END_DISPLAY }, // 926
! 	{ "end-divide", END_DIVIDE }, // 927
! 	{ "end-evaluate", END_EVALUATE }, // 928
! 	{ "end-multiply", END_MULTIPLY }, // 929
! 	{ "end-perform", END_PERFORM }, // 930
! 	{ "end-read", END_READ }, // 931
! 	{ "end-return", END_RETURN }, // 932
! 	{ "end-rewrite", END_REWRITE }, // 933
! 	{ "end-search", END_SEARCH }, // 934
! 	{ "end-start", END_START }, // 935
! 	{ "end-string", END_STRING }, // 936
! 	{ "end-subtract", END_SUBTRACT }, // 937
! 	{ "end-unstring", END_UNSTRING }, // 938
! 	{ "end-write", END_WRITE }, // 939
! 	{ "end-xml", END_XML }, // 940
! 	{ "end-if", END_IF }, // 941
! 	{ "attributes", ATTRIBUTES }, // 942
! 	{ "element", ELEMENT }, // 943
! 	{ "namespace", NAMESPACE }, // 944
! 	{ "namespace-prefix", NAMESPACE_PREFIX }, // 945
! 	{ "nonnumeric", NONNUMERIC }, // 947
! 	{ "xml-declaration", XML_DECLARATION }, // 948
! 	{ "thru", THRU }, // 950
! 	{ "through", THRU }, // 950
! 	{ "or", OR }, // 951
! 	{ "and", AND }, // 952
! 	{ "not", NOT }, // 953
! 	{ "ne", NE }, // 954
! 	{ "le", LE }, // 955
! 	{ "ge", GE }, // 956
! 	{ "pow", POW }, // 957
! 	{ "neg", NEG }, // 958
  };
  
  // cppcheck-suppress useInitializationList
*************** token_names = {
*** 1205,1410 ****
  	"RESERVE", // 493 (751)
  	"RESTRICTED", // 494 (752)
  	"RESUME", // 495 (753)
! 	"REVERSE", // 496 (754)
! 	"REVERSED", // 497 (755)
! 	"REWIND", // 498 (756)
! 	"RF", // 499 (757)
! 	"RH", // 500 (758)
! 	"RIGHT", // 501 (759)
! 	"ROUNDED", // 502 (760)
! 	"RUN", // 503 (761)
! 	"SAME", // 504 (762)
! 	"SCREEN", // 505 (763)
! 	"SD", // 506 (764)
! 	"SECONDS-FROM-FORMATTED-TIME", // 507 (765)
! 	"SECONDS-PAST-MIDNIGHT", // 508 (766)
! 	"SECURITY", // 509 (767)
! 	"SEPARATE", // 510 (768)
! 	"SEQUENCE", // 511 (769)
! 	"SEQUENTIAL", // 512 (770)
! 	"SHARING", // 513 (771)
! 	"SIMPLE-EXIT", // 514 (772)
! 	"SIGN", // 515 (773)
! 	"SIN", // 516 (774)
! 	"SIZE", // 517 (775)
! 	"SMALLEST-ALGEBRAIC", // 518 (776)
! 	"SOURCE", // 519 (777)
! 	"SOURCE-COMPUTER", // 520 (778)
! 	"SPECIAL-NAMES", // 521 (779)
! 	"SQRT", // 522 (780)
! 	"STACK", // 523 (781)
! 	"STANDARD", // 524 (782)
! 	"STANDARD-1", // 525 (783)
! 	"STANDARD-DEVIATION", // 526 (784)
! 	"STANDARD-COMPARE", // 527 (785)
! 	"STATUS", // 528 (786)
! 	"STRONG", // 529 (787)
! 	"SUBSTITUTE", // 530 (788)
! 	"SUM", // 531 (789)
! 	"SYMBOL", // 532 (790)
! 	"SYMBOLIC", // 533 (791)
! 	"SYNCHRONIZED", // 534 (792)
! 	"TALLYING", // 535 (793)
! 	"TAN", // 536 (794)
! 	"TERMINATE", // 537 (795)
! 	"TEST", // 538 (796)
! 	"TEST-DATE-YYYYMMDD", // 539 (797)
! 	"TEST-DAY-YYYYDDD", // 540 (798)
! 	"TEST-FORMATTED-DATETIME", // 541 (799)
! 	"TEST-NUMVAL", // 542 (800)
! 	"TEST-NUMVAL-C", // 543 (801)
! 	"TEST-NUMVAL-F", // 544 (802)
! 	"THAN", // 545 (803)
! 	"TIME", // 546 (804)
! 	"TIMES", // 547 (805)
! 	"TO", // 548 (806)
! 	"TOP", // 549 (807)
! 	"TOP-LEVEL", // 550 (808)
! 	"TRACKS", // 551 (809)
! 	"TRACK-AREA", // 552 (810)
! 	"TRAILING", // 553 (811)
! 	"TRANSFORM", // 554 (812)
! 	"TRIM", // 555 (813)
! 	"TRUE", // 556 (814)
! 	"TRY", // 557 (815)
! 	"TURN", // 558 (816)
! 	"TYPE", // 559 (817)
! 	"TYPEDEF", // 560 (818)
! 	"ULENGTH", // 561 (819)
! 	"UNBOUNDED", // 562 (820)
! 	"UNIT", // 563 (821)
! 	"UNITS", // 564 (822)
! 	"UNIT-RECORD", // 565 (823)
! 	"UNTIL", // 566 (824)
! 	"UP", // 567 (825)
! 	"UPON", // 568 (826)
! 	"UPOS", // 569 (827)
! 	"UPPER-CASE", // 570 (828)
! 	"USAGE", // 571 (829)
! 	"USING", // 572 (830)
! 	"USUBSTR", // 573 (831)
! 	"USUPPLEMENTARY", // 574 (832)
! 	"UTILITY", // 575 (833)
! 	"UUID4", // 576 (834)
! 	"UVALID", // 577 (835)
! 	"UWIDTH", // 578 (836)
! 	"VALIDATING", // 579 (837)
! 	"VALUE", // 580 (838)
! 	"VARIANCE", // 581 (839)
! 	"VARYING", // 582 (840)
! 	"VOLATILE", // 583 (841)
! 	"WHEN-COMPILED", // 584 (842)
! 	"WITH", // 585 (843)
! 	"WORKING-STORAGE", // 586 (844)
! 	"YEAR-TO-YYYY", // 587 (845)
! 	"YYYYDDD", // 588 (846)
! 	"YYYYMMDD", // 589 (847)
! 	"ARITHMETIC", // 590 (848)
! 	"ATTRIBUTE", // 591 (849)
! 	"AUTO", // 592 (850)
! 	"AUTOMATIC", // 593 (851)
! 	"AWAY-FROM-ZERO", // 594 (852)
! 	"BACKGROUND-COLOR", // 595 (853)
! 	"BELL", // 596 (854)
! 	"BINARY-ENCODING", // 597 (855)
! 	"BLINK", // 598 (856)
! 	"CAPACITY", // 599 (857)
! 	"CENTER", // 600 (858)
! 	"CLASSIFICATION", // 601 (859)
! 	"CYCLE", // 602 (860)
! 	"DECIMAL-ENCODING", // 603 (861)
! 	"ENTRY-CONVENTION", // 604 (862)
! 	"EOL", // 605 (863)
! 	"EOS", // 606 (864)
! 	"ERASE", // 607 (865)
! 	"EXPANDS", // 608 (866)
! 	"FLOAT-BINARY", // 609 (867)
! 	"FLOAT-DECIMAL", // 610 (868)
! 	"FOREGROUND-COLOR", // 611 (869)
! 	"FOREVER", // 612 (870)
! 	"FULL", // 613 (871)
! 	"HIGHLIGHT", // 614 (872)
! 	"HIGH-ORDER-LEFT", // 615 (873)
! 	"HIGH-ORDER-RIGHT", // 616 (874)
! 	"IGNORING", // 617 (875)
! 	"IMPLEMENTS", // 618 (876)
! 	"INITIALIZED", // 619 (877)
! 	"INTERMEDIATE", // 620 (878)
! 	"LC-ALL", // 621 (879)
! 	"LC-COLLATE", // 622 (880)
! 	"LC-CTYPE", // 623 (881)
! 	"LC-MESSAGES", // 624 (882)
! 	"LC-MONETARY", // 625 (883)
! 	"LC-NUMERIC", // 626 (884)
! 	"LC-TIME", // 627 (885)
! 	"LOWLIGHT", // 628 (886)
! 	"NEAREST-AWAY-FROM-ZERO", // 629 (887)
! 	"NEAREST-EVEN", // 630 (888)
! 	"NEAREST-TOWARD-ZERO", // 631 (889)
! 	"NONE", // 632 (890)
! 	"NORMAL", // 633 (891)
! 	"NUMBERS", // 634 (892)
! 	"PREFIXED", // 635 (893)
! 	"PREVIOUS", // 636 (894)
! 	"PROHIBITED", // 637 (895)
! 	"RELATION", // 638 (896)
! 	"REQUIRED", // 639 (897)
! 	"REVERSE-VIDEO", // 640 (898)
! 	"ROUNDING", // 641 (899)
! 	"SECONDS", // 642 (900)
! 	"SECURE", // 643 (901)
! 	"SHORT", // 644 (902)
! 	"SIGNED", // 645 (903)
! 	"STANDARD-BINARY", // 646 (904)
! 	"STANDARD-DECIMAL", // 647 (905)
! 	"STATEMENT", // 648 (906)
! 	"STEP", // 649 (907)
! 	"STRUCTURE", // 650 (908)
! 	"TOWARD-GREATER", // 651 (909)
! 	"TOWARD-LESSER", // 652 (910)
! 	"TRUNCATION", // 653 (911)
! 	"UCS-4", // 654 (912)
! 	"UNDERLINE", // 655 (913)
! 	"UNSIGNED", // 656 (914)
! 	"UTF-16", // 657 (915)
! 	"UTF-8", // 658 (916)
! 	"XMLGENERATE", // 659 (917)
! 	"XMLPARSE", // 660 (918)
! 	"ADDRESS", // 661 (919)
! 	"END-ACCEPT", // 662 (920)
! 	"END-ADD", // 663 (921)
! 	"END-CALL", // 664 (922)
! 	"END-COMPUTE", // 665 (923)
! 	"END-DELETE", // 666 (924)
! 	"END-DISPLAY", // 667 (925)
! 	"END-DIVIDE", // 668 (926)
! 	"END-EVALUATE", // 669 (927)
! 	"END-MULTIPLY", // 670 (928)
! 	"END-PERFORM", // 671 (929)
! 	"END-READ", // 672 (930)
! 	"END-RETURN", // 673 (931)
! 	"END-REWRITE", // 674 (932)
! 	"END-SEARCH", // 675 (933)
! 	"END-START", // 676 (934)
! 	"END-STRING", // 677 (935)
! 	"END-SUBTRACT", // 678 (936)
! 	"END-UNSTRING", // 679 (937)
! 	"END-WRITE", // 680 (938)
! 	"END-XML", // 681 (939)
! 	"END-IF", // 682 (940)
! 	"ATTRIBUTES", // 683 (941)
! 	"ELEMENT", // 684 (942)
! 	"NAMESPACE", // 685 (943)
! 	"NAMESPACE-PREFIX", // 686 (944)
! 	"NONNUMERIC", // 688 (946)
! 	"XML-DECLARATION", // 689 (947)
! 	"THRU", // 691 (949)
! 	"OR", // 692 (950)
! 	"AND", // 693 (951)
! 	"NOT", // 694 (952)
! 	"NE", // 695 (953)
! 	"LE", // 696 (954)
! 	"GE", // 697 (955)
! 	"POW", // 698 (956)
! 	"NEG", // 699 (957)
  };
--- 1206,1412 ----
  	"RESERVE", // 493 (751)
  	"RESTRICTED", // 494 (752)
  	"RESUME", // 495 (753)
! 	"RETRY", // 496 (754)
! 	"REVERSE", // 497 (755)
! 	"REVERSED", // 498 (756)
! 	"REWIND", // 499 (757)
! 	"RF", // 500 (758)
! 	"RH", // 501 (759)
! 	"RIGHT", // 502 (760)
! 	"ROUNDED", // 503 (761)
! 	"RUN", // 504 (762)
! 	"SAME", // 505 (763)
! 	"SCREEN", // 506 (764)
! 	"SD", // 507 (765)
! 	"SECONDS-FROM-FORMATTED-TIME", // 508 (766)
! 	"SECONDS-PAST-MIDNIGHT", // 509 (767)
! 	"SECURITY", // 510 (768)
! 	"SEPARATE", // 511 (769)
! 	"SEQUENCE", // 512 (770)
! 	"SEQUENTIAL", // 513 (771)
! 	"SHARING", // 514 (772)
! 	"SIMPLE-EXIT", // 515 (773)
! 	"SIGN", // 516 (774)
! 	"SIN", // 517 (775)
! 	"SIZE", // 518 (776)
! 	"SMALLEST-ALGEBRAIC", // 519 (777)
! 	"SOURCE", // 520 (778)
! 	"SOURCE-COMPUTER", // 521 (779)
! 	"SPECIAL-NAMES", // 522 (780)
! 	"SQRT", // 523 (781)
! 	"STACK", // 524 (782)
! 	"STANDARD", // 525 (783)
! 	"STANDARD-1", // 526 (784)
! 	"STANDARD-DEVIATION", // 527 (785)
! 	"STANDARD-COMPARE", // 528 (786)
! 	"STATUS", // 529 (787)
! 	"STRONG", // 530 (788)
! 	"SUBSTITUTE", // 531 (789)
! 	"SUM", // 532 (790)
! 	"SYMBOL", // 533 (791)
! 	"SYMBOLIC", // 534 (792)
! 	"SYNCHRONIZED", // 535 (793)
! 	"TALLYING", // 536 (794)
! 	"TAN", // 537 (795)
! 	"TERMINATE", // 538 (796)
! 	"TEST", // 539 (797)
! 	"TEST-DATE-YYYYMMDD", // 540 (798)
! 	"TEST-DAY-YYYYDDD", // 541 (799)
! 	"TEST-FORMATTED-DATETIME", // 542 (800)
! 	"TEST-NUMVAL", // 543 (801)
! 	"TEST-NUMVAL-C", // 544 (802)
! 	"TEST-NUMVAL-F", // 545 (803)
! 	"THAN", // 546 (804)
! 	"TIME", // 547 (805)
! 	"TIMES", // 548 (806)
! 	"TO", // 549 (807)
! 	"TOP", // 550 (808)
! 	"TOP-LEVEL", // 551 (809)
! 	"TRACKS", // 552 (810)
! 	"TRACK-AREA", // 553 (811)
! 	"TRAILING", // 554 (812)
! 	"TRANSFORM", // 555 (813)
! 	"TRIM", // 556 (814)
! 	"TRUE", // 557 (815)
! 	"TRY", // 558 (816)
! 	"TURN", // 559 (817)
! 	"TYPE", // 560 (818)
! 	"TYPEDEF", // 561 (819)
! 	"ULENGTH", // 562 (820)
! 	"UNBOUNDED", // 563 (821)
! 	"UNIT", // 564 (822)
! 	"UNITS", // 565 (823)
! 	"UNIT-RECORD", // 566 (824)
! 	"UNTIL", // 567 (825)
! 	"UP", // 568 (826)
! 	"UPON", // 569 (827)
! 	"UPOS", // 570 (828)
! 	"UPPER-CASE", // 571 (829)
! 	"USAGE", // 572 (830)
! 	"USING", // 573 (831)
! 	"USUBSTR", // 574 (832)
! 	"USUPPLEMENTARY", // 575 (833)
! 	"UTILITY", // 576 (834)
! 	"UUID4", // 577 (835)
! 	"UVALID", // 578 (836)
! 	"UWIDTH", // 579 (837)
! 	"VALIDATING", // 580 (838)
! 	"VALUE", // 581 (839)
! 	"VARIANCE", // 582 (840)
! 	"VARYING", // 583 (841)
! 	"VOLATILE", // 584 (842)
! 	"WHEN-COMPILED", // 585 (843)
! 	"WITH", // 586 (844)
! 	"WORKING-STORAGE", // 587 (845)
! 	"YEAR-TO-YYYY", // 588 (846)
! 	"YYYYDDD", // 589 (847)
! 	"YYYYMMDD", // 590 (848)
! 	"ARITHMETIC", // 591 (849)
! 	"ATTRIBUTE", // 592 (850)
! 	"AUTO", // 593 (851)
! 	"AUTOMATIC", // 594 (852)
! 	"AWAY-FROM-ZERO", // 595 (853)
! 	"BACKGROUND-COLOR", // 596 (854)
! 	"BELL", // 597 (855)
! 	"BINARY-ENCODING", // 598 (856)
! 	"BLINK", // 599 (857)
! 	"CAPACITY", // 600 (858)
! 	"CENTER", // 601 (859)
! 	"CLASSIFICATION", // 602 (860)
! 	"CYCLE", // 603 (861)
! 	"DECIMAL-ENCODING", // 604 (862)
! 	"ENTRY-CONVENTION", // 605 (863)
! 	"EOL", // 606 (864)
! 	"EOS", // 607 (865)
! 	"ERASE", // 608 (866)
! 	"EXPANDS", // 609 (867)
! 	"FLOAT-BINARY", // 610 (868)
! 	"FLOAT-DECIMAL", // 611 (869)
! 	"FOREGROUND-COLOR", // 612 (870)
! 	"FOREVER", // 613 (871)
! 	"FULL", // 614 (872)
! 	"HIGHLIGHT", // 615 (873)
! 	"HIGH-ORDER-LEFT", // 616 (874)
! 	"HIGH-ORDER-RIGHT", // 617 (875)
! 	"IGNORING", // 618 (876)
! 	"IMPLEMENTS", // 619 (877)
! 	"INITIALIZED", // 620 (878)
! 	"INTERMEDIATE", // 621 (879)
! 	"LC-ALL", // 622 (880)
! 	"LC-COLLATE", // 623 (881)
! 	"LC-CTYPE", // 624 (882)
! 	"LC-MESSAGES", // 625 (883)
! 	"LC-MONETARY", // 626 (884)
! 	"LC-NUMERIC", // 627 (885)
! 	"LC-TIME", // 628 (886)
! 	"LOWLIGHT", // 629 (887)
! 	"NEAREST-AWAY-FROM-ZERO", // 630 (888)
! 	"NEAREST-EVEN", // 631 (889)
! 	"NEAREST-TOWARD-ZERO", // 632 (890)
! 	"NONE", // 633 (891)
! 	"NORMAL", // 634 (892)
! 	"NUMBERS", // 635 (893)
! 	"PREFIXED", // 636 (894)
! 	"PREVIOUS", // 637 (895)
! 	"PROHIBITED", // 638 (896)
! 	"RELATION", // 639 (897)
! 	"REQUIRED", // 640 (898)
! 	"REVERSE-VIDEO", // 641 (899)
! 	"ROUNDING", // 642 (900)
! 	"SECONDS", // 643 (901)
! 	"SECURE", // 644 (902)
! 	"SHORT", // 645 (903)
! 	"SIGNED", // 646 (904)
! 	"STANDARD-BINARY", // 647 (905)
! 	"STANDARD-DECIMAL", // 648 (906)
! 	"STATEMENT", // 649 (907)
! 	"STEP", // 650 (908)
! 	"STRUCTURE", // 651 (909)
! 	"TOWARD-GREATER", // 652 (910)
! 	"TOWARD-LESSER", // 653 (911)
! 	"TRUNCATION", // 654 (912)
! 	"UCS-4", // 655 (913)
! 	"UNDERLINE", // 656 (914)
! 	"UNSIGNED", // 657 (915)
! 	"UTF-16", // 658 (916)
! 	"UTF-8", // 659 (917)
! 	"XMLGENERATE", // 660 (918)
! 	"XMLPARSE", // 661 (919)
! 	"ADDRESS", // 662 (920)
! 	"END-ACCEPT", // 663 (921)
! 	"END-ADD", // 664 (922)
! 	"END-CALL", // 665 (923)
! 	"END-COMPUTE", // 666 (924)
! 	"END-DELETE", // 667 (925)
! 	"END-DISPLAY", // 668 (926)
! 	"END-DIVIDE", // 669 (927)
! 	"END-EVALUATE", // 670 (928)
! 	"END-MULTIPLY", // 671 (929)
! 	"END-PERFORM", // 672 (930)
! 	"END-READ", // 673 (931)
! 	"END-RETURN", // 674 (932)
! 	"END-REWRITE", // 675 (933)
! 	"END-SEARCH", // 676 (934)
! 	"END-START", // 677 (935)
! 	"END-STRING", // 678 (936)
! 	"END-SUBTRACT", // 679 (937)
! 	"END-UNSTRING", // 680 (938)
! 	"END-WRITE", // 681 (939)
! 	"END-XML", // 682 (940)
! 	"END-IF", // 683 (941)
! 	"ATTRIBUTES", // 684 (942)
! 	"ELEMENT", // 685 (943)
! 	"NAMESPACE", // 686 (944)
! 	"NAMESPACE-PREFIX", // 687 (945)
! 	"NONNUMERIC", // 689 (947)
! 	"XML-DECLARATION", // 690 (948)
! 	"THRU", // 692 (950)
! 	"OR", // 693 (951)
! 	"AND", // 694 (952)
! 	"NOT", // 695 (953)
! 	"NE", // 696 (954)
! 	"LE", // 697 (955)
! 	"GE", // 698 (956)
! 	"POW", // 699 (957)
! 	"NEG", // 700 (958)
  };
diff -Nrcpad gcc-16-20251109/gcc/cobol/util.cc gcc-16-20251116/gcc/cobol/util.cc
*** gcc-16-20251109/gcc/cobol/util.cc	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/cobol/util.cc	Sun Nov 16 22:32:53 2025
*************** void cdf_pop_dictionary() { cdf_directiv
*** 259,264 ****
--- 259,304 ----
  void cdf_pop_enabled_exceptions() { cdf_directives.enabled_exceptions.pop(); }
  void cdf_pop_source_format() { cdf_directives.source_format.pop(); }
  
+ /*
+  * Construct a cbl_field_t from a CDF literal, to be installed in the symbol table.
+  */
+ cbl_field_t
+ cdf_literalize( const std::string& name, const cdfval_t& value ) {
+     cbl_field_t field;
+ 
+     if( value.is_numeric() ) {
+       auto initial = xasprintf("%ld", (long)value.as_number());
+       auto len = strlen(initial);
+       cbl_field_data_t data(len, len);
+       data.initial = initial;
+       data.valify();
+       field = cbl_field_t{ FldLiteralN, constant_e, data, 0, name.c_str()};
+     } else {
+       auto len = strlen(value.string);
+       cbl_field_data_t data(len, len);
+       data.initial = xstrdup(value.string);
+       field = cbl_field_t{ FldLiteralA, constant_e, data, 0, name.c_str() };
+       field.set_attr(quoted_e);
+     }
+     field.codeset.set();
+ 
+     return field;
+ }
+ 
+ const std::list<cbl_field_t> 
+ cdf_literalize() {
+   std::list<cbl_field_t> fields;
+   auto dict = cdf_dictionary();
+   
+   for( auto elem : dict ) {
+     std::string name(elem.first);
+     const cdfval_t& value(elem.second);
+     
+     fields.push_back(cdf_literalize(name, value));    
+   }
+   return fields;
+ }
+ 
  const char *
  symbol_type_str( enum symbol_type_t type )
  {
*************** cobol_filename_restore() {
*** 2089,2094 ****
--- 2129,2147 ----
    linemap_add(line_table, LC_LEAVE, sysp, NULL, 0);
  }
  
+ size_t
+ symbol_unique_index( const struct symbol_elem_t *e ) {
+   assert(e);
+   size_t usym = symbol_index(e);
+ #if READY_FOR_INODE
+   if( ! input_filenames.empty() ) {
+     size_t inode = input_filenames.top().inode;
+     usym = usym ^ inode;
+   }
+ #endif
+   return usym;
+ }
+ 
  static int first_line_minus_1 = 0;
  static location_t token_location_minus_1 = 0;
  static location_t token_location = 0;
diff -Nrcpad gcc-16-20251109/gcc/common/config/loongarch/cpu-features.h gcc-16-20251116/gcc/common/config/loongarch/cpu-features.h
*** gcc-16-20251109/gcc/common/config/loongarch/cpu-features.h	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/common/config/loongarch/cpu-features.h	Sun Nov 16 22:32:53 2025
***************
*** 0 ****
--- 1,41 ----
+ /* Definitions of target machine for GNU compiler.  LoongArch version.
+    Copyright (C) 2025 Free Software Foundation, Inc.
+    Contributed by Loongson 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 LOONGARCH_CPU_FEATURES_H
+ #define LOONGARCH_CPU_FEATURES_H
+ 
+ typedef unsigned long long loongarch_fmv_feature_mask;
+ 
+ enum CPUFeatures {
+   FEAT_LA64,
+   FEAT_UAL,
+   FEAT_LSX,
+   FEAT_LASX,
+   FEAT_FRECIPE,
+   FEAT_DIV32,
+   FEAT_LAM_BH,
+   FEAT_LAMCAS,
+   FEAT_SCQ,
+   FEAT_LD_SEQ_SA,
+   FEAT_EXT = 62,
+   FEAT_INIT
+ };
+ 
+ #endif /* LOONGARCH_CPU_FEATURES_H */
diff -Nrcpad gcc-16-20251109/gcc/common.opt gcc-16-20251116/gcc/common.opt
*** gcc-16-20251109/gcc/common.opt	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/common.opt	Sun Nov 16 22:32:53 2025
*************** Driver Alias(v)
*** 426,441 ****
  ;; as -fhelp; the following four entries are for compatibility with
  ;; any direct uses of those (undocumented) -f forms
  fhelp
! Common Driver Alias(-help)
  
  fhelp=
! Common Driver Joined Alias(-help=)
  
  ftarget-help
! Common Driver Alias(-target-help)
  
  fversion
! Common Driver Alias(-version)
  
  -sysroot
  Driver Separate Alias(-sysroot=)
--- 426,441 ----
  ;; as -fhelp; the following four entries are for compatibility with
  ;; any direct uses of those (undocumented) -f forms
  fhelp
! Common Driver RejectNegative Alias(-help) Undocumented
  
  fhelp=
! Common Driver RejectNegative Joined Alias(-help=) Undocumented
  
  ftarget-help
! Common Driver RejectNegative Alias(-target-help) Undocumented
  
  fversion
! Common Driver RejectNegative Alias(-version) Undocumented
  
  -sysroot
  Driver Separate Alias(-sysroot=)
*************** Driver Joined Separate
*** 457,462 ****
--- 457,463 ----
  
  N
  Driver
+ Passed to the linker.
  
  O
  Common JoinedOrMissing Optimization
*************** Oz
*** 478,485 ****
--- 479,488 ----
  Common Optimization
  Optimize for space aggressively rather than speed.
  
+ ; Driver passes -quiet to the front end if -Q is not specified.
  Q
  Driver
+ -Q --help prints what options are enabled.  Just -Q enables verbose messages.
  
  Qn
  Driver Negative(Qy)
*************** Driver Joined Separate
*** 492,518 ****
--- 495,529 ----
  
  S
  Driver
+ Stop processing after generating assembly code; do not assemble.
  
  T
  Driver Joined Separate
+ Passed to the linker.
  
  Tbss
  Driver Separate
+ Passed to the linker.
  
  Tbss=
  Driver Joined
+ Passed to the linker.
  
  Tdata
  Driver Separate
+ Passed to the linker.
  
  Tdata=
  Driver Joined
+ Passed to the linker.
  
  Ttext
  Driver Separate
+ Passed to the linker.
  
  Ttext=
  Driver Joined
+ Passed to the linker.
  
  W
  Common RejectNegative Warning Alias(Wextra)
*************** Common RejectNegative Joined Host_Wide_I
*** 628,634 ****
  -Wframe-larger-than=<byte-size>	Warn if a function's stack frame requires in excess of <byte-size>.
  
  Wno-frame-larger-than
! Common Alias(Wframe-larger-than=,18446744073709551615EiB,none) Warning
  Disable -Wframe-larger-than= warning.  Equivalent to -Wframe-larger-than=<SIZE_MAX> or larger.
  
  Wfree-nonheap-object
--- 639,645 ----
  -Wframe-larger-than=<byte-size>	Warn if a function's stack frame requires in excess of <byte-size>.
  
  Wno-frame-larger-than
! Common RejectNegative Alias(Wframe-larger-than=,18446744073709551615EiB,none) Warning
  Disable -Wframe-larger-than= warning.  Equivalent to -Wframe-larger-than=<SIZE_MAX> or larger.
  
  Wfree-nonheap-object
*************** Common RejectNegative Joined Host_Wide_I
*** 670,676 ****
  -Wlarger-than=<byte-size>	Warn if an object's size exceeds <byte-size>.
  
  Wno-larger-than
! Common Alias(Wlarger-than=,18446744073709551615EiB,none) Warning
  Disable -Wlarger-than= warning.  Equivalent to -Wlarger-than=<SIZE_MAX> or larger.
  
  Wnonnull-compare
--- 681,687 ----
  -Wlarger-than=<byte-size>	Warn if an object's size exceeds <byte-size>.
  
  Wno-larger-than
! Common RejectNegative Alias(Wlarger-than=,18446744073709551615EiB,none) Warning
  Disable -Wlarger-than= warning.  Equivalent to -Wlarger-than=<SIZE_MAX> or larger.
  
  Wnonnull-compare
*************** Common Joined RejectNegative Host_Wide_I
*** 755,761 ****
  -Wstack-usage=<byte-size>	Warn if stack usage might exceed <byte-size>.
  
  Wno-stack-usage
! Common Alias(Wstack-usage=,18446744073709551615EiB,none) Warning
  Disable Wstack-usage= warning.  Equivalent to Wstack-usage=<SIZE_MAX> or larger.
  
  Wstrict-aliasing
--- 766,772 ----
  -Wstack-usage=<byte-size>	Warn if stack usage might exceed <byte-size>.
  
  Wno-stack-usage
! Common RejectNegative Alias(Wstack-usage=,18446744073709551615EiB,none) Warning
  Disable Wstack-usage= warning.  Equivalent to Wstack-usage=<SIZE_MAX> or larger.
  
  Wstrict-aliasing
*************** Driver Separate
*** 929,934 ****
--- 940,946 ----
  
  Z
  Driver
+ Passed to the linker.
  
  aux-info
  Common Separate Var(aux_info_file_name)
*************** fauto-profile-inlining
*** 1200,1209 ****
  Common Var(flag_auto_profile_inlining) Init(1) Optimization
  Perform inlining using auto-profile.
  
! ; -fcheck-bounds causes gcc to generate array bounds checks.
! ; For C, C++ and ObjC: defaults off.
! ; For Java: defaults to on.
! ; For Fortran: defaults to off.
  fbounds-check
  Common Var(flag_bounds_check)
  Generate code to check bounds before indexing arrays.
--- 1212,1220 ----
  Common Var(flag_auto_profile_inlining) Init(1) Optimization
  Perform inlining using auto-profile.
  
! ; -fbounds-check causes gcc to generate array bounds checks.
! ; It's presently used only for fortran and d languages, and is documented
! ; in the manuals for those languages.
  fbounds-check
  Common Var(flag_bounds_check)
  Generate code to check bounds before indexing arrays.
*************** EnumValue
*** 1618,1624 ****
  Enum(diagnostic_text_art_charset) String(emoji) Value(DIAGNOSTICS_TEXT_ART_CHARSET_EMOJI)
  
  fdiagnostics-minimum-margin-width=
! Common Joined UInteger Var(diagnostics_minimum_margin_width) Init(6)
  Set minimum width of left margin of source code when showing source.
  
  fdiagnostics-show-nesting
--- 1629,1635 ----
  Enum(diagnostic_text_art_charset) String(emoji) Value(DIAGNOSTICS_TEXT_ART_CHARSET_EMOJI)
  
  fdiagnostics-minimum-margin-width=
! Common Joined RejectNegative UInteger Var(diagnostics_minimum_margin_width) Init(6)
  Set minimum width of left margin of source code when showing source.
  
  fdiagnostics-show-nesting
*************** Common Enum(dwarf_gnat_encodings) Joined
*** 1861,1867 ****
  
  ; This option is not documented yet as its semantics will change.
  fgraphite
! Common Var(flag_graphite) Optimization
  Enable in and out of Graphite representation.
  
  fgraphite-identity
--- 1872,1878 ----
  
  ; This option is not documented yet as its semantics will change.
  fgraphite
! Common Var(flag_graphite) Optimization Undocumented
  Enable in and out of Graphite representation.
  
  fgraphite-identity
*************** Enum(hardcfr_check_noreturn_calls) Strin
*** 1981,1993 ****
  EnumValue
  Enum(hardcfr_check_noreturn_calls) String(always) Value(HCFRNR_ALWAYS)
  
! ; Nonzero means ignore `#ident' directives.  0 means handle them.
! ; Generate position-independent code for executables if possible
! ; On SVR4 targets, it also controls whether or not to emit a
! ; string identifying the compiler.
  fident
  Common Var(flag_no_ident,0)
! Process #ident directives.
  
  fif-conversion
  Common Var(flag_if_conversion) Optimization
--- 1992,2002 ----
  EnumValue
  Enum(hardcfr_check_noreturn_calls) String(always) Value(HCFRNR_ALWAYS)
  
! ; Nonzero means do not emit .ident assembler directives and ignore
! ; `#ident' preprocessor directives.
  fident
  Common Var(flag_no_ident,0)
! Emit .ident assembler directives.
  
  fif-conversion
  Common Var(flag_if_conversion) Optimization
*************** Common RejectNegative Joined Var(flag_lt
*** 2311,2317 ****
  Link-time optimization with number of parallel jobs or jobserver.
  
  flto-incremental=
! Common Joined Var(flag_lto_incremental)
  Enable incremental LTO, with its cache in given directory.
  
  flto-incremental-cache-size=
--- 2320,2326 ----
  Link-time optimization with number of parallel jobs or jobserver.
  
  flto-incremental=
! Common Joined RejectNegative Var(flag_lto_incremental)
  Enable incremental LTO, with its cache in given directory.
  
  flto-incremental-cache-size=
*************** Common Var(flag_non_call_exceptions) Opt
*** 2443,2452 ****
  Support synchronous non-call exceptions.
  
  foffload=
! Driver Joined MissingArgError(targets missing after %qs)
  
  foffload-options=
! Common Driver Joined MissingArgError(options or targets=options missing after %qs)
  -foffload-options=<targets>=<options>	Specify options for the offloading targets.
  
  foffload-abi=
--- 2452,2461 ----
  Support synchronous non-call exceptions.
  
  foffload=
! Driver Joined RejectNegative MissingArgError(targets missing after %qs)
  
  foffload-options=
! Common Driver Joined RejectNegative MissingArgError(options or targets=options missing after %qs)
  -foffload-options=<targets>=<options>	Specify options for the offloading targets.
  
  foffload-abi=
*************** EnumValue
*** 2463,2469 ****
  Enum(offload_abi) String(lp64) Value(OFFLOAD_ABI_LP64)
  
  foffload-abi-host-opts=
! Common Joined MissingArgError(option missing after %qs)
  -foffload-abi-host-opts=<options>	Specify host ABI options.
  
  fomit-frame-pointer
--- 2472,2478 ----
  Enum(offload_abi) String(lp64) Value(OFFLOAD_ABI_LP64)
  
  foffload-abi-host-opts=
! Common Joined RejectNegative MissingArgError(option missing after %qs)
  -foffload-abi-host-opts=<options>	Specify host ABI options.
  
  fomit-frame-pointer
*************** Common Var(flag_profile_reorder_function
*** 2716,2722 ****
  Enable function reordering that improves code placement.
  
  fpatchable-function-entry=
! Common Var(flag_patchable_function_entry) Joined Optimization
  Insert NOP instructions at each function entry.
  
  frandom-seed
--- 2725,2731 ----
  Enable function reordering that improves code placement.
  
  fpatchable-function-entry=
! Common Var(flag_patchable_function_entry) Joined RejectNegative Optimization
  Insert NOP instructions at each function entry.
  
  frandom-seed
*************** fsel-sched-pipelining-outer-loops
*** 2889,2896 ****
  Common Var(flag_sel_sched_pipelining_outer_loops) Init(0) Optimization
  Perform software pipelining of outer loops during selective scheduling.
  
  fsel-sched-reschedule-pipelined
! Common Var(flag_sel_sched_reschedule_pipelined) Init(0) Optimization
  Reschedule pipelined regions without pipelining.
  
  fsemantic-interposition
--- 2898,2906 ----
  Common Var(flag_sel_sched_pipelining_outer_loops) Init(0) Optimization
  Perform software pipelining of outer loops during selective scheduling.
  
+ ; This flag has never been documented or done anything useful AFAICT.
  fsel-sched-reschedule-pipelined
! Common Var(flag_sel_sched_reschedule_pipelined) Init(0) Optimization Undocumented
  Reschedule pipelined regions without pipelining.
  
  fsemantic-interposition
*************** Common Var(flag_stack_clash_protection)
*** 3029,3034 ****
--- 3039,3045 ----
  Insert code to probe each page of stack space as it is allocated to protect
  from stack-clash style attacks.
  
+ ; The real option is fno-stack-limit.
  fstack-limit
  Common Var(common_deferred_options) Defer
  
*************** Common Var(flag_tree_ter) Optimization
*** 3345,3352 ****
  Replace temporary expressions in the SSA->normal pass.
  
  ftree-lrs
! Common Var(flag_tree_live_range_split) Optimization
! Perform live range splitting during the SSA->normal pass.
  
  ftree-vrp
  Common Var(flag_tree_vrp) Init(0) Optimization
--- 3356,3363 ----
  Replace temporary expressions in the SSA->normal pass.
  
  ftree-lrs
! Common Ignore
! Does nothing.  Preserved for backward compatibility.
  
  ftree-vrp
  Common Var(flag_tree_vrp) Init(0) Optimization
*************** RejectNegative Joined Undocumented
*** 3723,3737 ****
  ; Catch the gno- prefix, so it doesn't backtrack to g<level>.
  
  gno-pubnames
! Common Driver Negative(gpubnames) Var(debug_generate_pub_sections, 0) Init(-1)
  Don't generate DWARF pubnames and pubtypes sections.
  
  gpubnames
! Common Driver Negative(ggnu-pubnames) Var(debug_generate_pub_sections, 1)
  Generate DWARF pubnames and pubtypes sections.
  
  ggnu-pubnames
! Common Driver Negative(gno-pubnames) Var(debug_generate_pub_sections, 2)
  Generate DWARF pubnames and pubtypes sections with GNU extensions.
  
  grecord-gcc-switches
--- 3734,3748 ----
  ; Catch the gno- prefix, so it doesn't backtrack to g<level>.
  
  gno-pubnames
! Common Driver RejectNegative Negative(gpubnames) Var(debug_generate_pub_sections, 0) Init(-1)
  Don't generate DWARF pubnames and pubtypes sections.
  
  gpubnames
! Common Driver RejectNegative Negative(ggnu-pubnames) Var(debug_generate_pub_sections, 1)
  Generate DWARF pubnames and pubtypes sections.
  
  ggnu-pubnames
! Common Driver RejectNegative Negative(gno-pubnames) Var(debug_generate_pub_sections, 2)
  Generate DWARF pubnames and pubtypes sections with GNU extensions.
  
  grecord-gcc-switches
*************** Driver Joined Separate
*** 3826,3831 ****
--- 3837,3843 ----
  
  n
  Driver
+ Passed to the linker.
  
  no-canonical-prefixes
  Driver
*************** Driver Var(print_sysroot)
*** 3899,3913 ****
  print-sysroot-headers-suffix
  Driver Var(print_sysroot_headers_suffix)
  
  quiet
! Common Var(quiet_flag) RejectDriver
  Do not display functions compiled or elapsed time.
  
  r
  Driver
  
  s
  Driver
  
  save-temps
  Driver
--- 3911,3928 ----
  print-sysroot-headers-suffix
  Driver Var(print_sysroot_headers_suffix)
  
+ ; The driver doesn't understand -quiet, only its inverse -Q.
  quiet
! Common Var(quiet_flag) RejectDriver Undocumented
  Do not display functions compiled or elapsed time.
  
  r
  Driver
+ Produce a relocatable object as output.
  
  s
  Driver
+ Remove all symbol table and relocation information from the executable.
  
  save-temps
  Driver
*************** Driver Joined
*** 3917,3922 ****
--- 3932,3938 ----
  
  t
  Driver
+ Passed to the linker.
  
  time
  Driver Var(report_times)
*************** Create a static position independent exe
*** 4027,4032 ****
--- 4043,4049 ----
  
  z
  Driver Joined Separate
+ Passed to the linker.
  
  fipa-ra
  Common Var(flag_ipa_ra) Optimization
diff -Nrcpad gcc-16-20251109/gcc/common.opt.urls gcc-16-20251116/gcc/common.opt.urls
*** gcc-16-20251109/gcc/common.opt.urls	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/common.opt.urls	Sun Nov 16 22:32:53 2025
*************** UrlSuffix(gcc/Directory-Options.html#ind
*** 16,21 ****
--- 16,24 ----
  L
  UrlSuffix(gcc/Directory-Options.html#index-L) LangUrlSuffix_D(gdc/Directory-Options.html#index-L)
  
+ N
+ UrlSuffix(gcc/Link-Options.html#index-N)
+ 
  O
  UrlSuffix(gcc/Optimize-Options.html#index-O)
  
*************** UrlSuffix(gcc/Optimize-Options.html#inde
*** 36,45 ****
  ;   duplicate: 'gcc/Overall-Options.html#index-Q'
  
  Qn
! UrlSuffix(gcc/System-V-Options.html#index-Qn)
  
  Qy
! UrlSuffix(gcc/System-V-Options.html#index-Qy)
  
  ; skipping UrlSuffix for 'S' due to multiple URLs:
  ;   duplicate: 'gcc/Link-Options.html#index-S-1'
--- 39,48 ----
  ;   duplicate: 'gcc/Overall-Options.html#index-Q'
  
  Qn
! UrlSuffix(gcc/Code-Gen-Options.html#index-Qn)
  
  Qy
! UrlSuffix(gcc/Code-Gen-Options.html#index-Qy)
  
  ; skipping UrlSuffix for 'S' due to multiple URLs:
  ;   duplicate: 'gcc/Link-Options.html#index-S-1'
*************** UrlSuffix(gcc/System-V-Options.html#inde
*** 48,53 ****
--- 51,74 ----
  T
  UrlSuffix(gcc/Link-Options.html#index-T)
  
+ Tbss
+ UrlSuffix(gcc/Link-Options.html#index-Tbss)
+ 
+ Tbss=
+ UrlSuffix(gcc/Link-Options.html#index-Tbss)
+ 
+ Tdata
+ UrlSuffix(gcc/Link-Options.html#index-Tdata)
+ 
+ Tdata=
+ UrlSuffix(gcc/Link-Options.html#index-Tdata)
+ 
+ Ttext
+ UrlSuffix(gcc/Link-Options.html#index-Ttext)
+ 
+ Ttext=
+ UrlSuffix(gcc/Link-Options.html#index-Ttext)
+ 
  ; skipping UrlSuffix for 'W' due to multiple URLs:
  ;   duplicate: 'gcc/Incompatibilities.html#index-W-3'
  ;   duplicate: 'gcc/Warning-Options.html#index-W'
*************** UrlSuffix(gcc/Warning-Options.html#index
*** 85,90 ****
--- 106,114 ----
  Wattribute-alias=
  UrlSuffix(gcc/Warning-Options.html#index-Wattribute-alias)
  
+ Wcannot-profile
+ UrlSuffix(gcc/Warning-Options.html#index-Wcannot-profile)
+ 
  Wcast-align
  UrlSuffix(gcc/Warning-Options.html#index-Wcast-align)
  
*************** UrlSuffix(gcc/Link-Options.html#index-Xl
*** 329,334 ****
--- 353,361 ----
  Xpreprocessor
  UrlSuffix(gcc/Preprocessor-Options.html#index-Xpreprocessor)
  
+ Z
+ UrlSuffix(gcc/Link-Options.html#index-Z)
+ 
  aux-info
  UrlSuffix(gcc/C-Dialect-Options.html#index-aux-info)
  
*************** UrlSuffix(gcc/Diagnostic-Message-Formatt
*** 631,636 ****
--- 658,666 ----
  fdiagnostics-path-format=
  UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-path-format)
  
+ fdiagnostics-plain-output
+ UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-plain-output)
+ 
  ftabstop=
  UrlSuffix(gcc/Preprocessor-Options.html#index-ftabstop)
  
*************** UrlSuffix(gcc/Developer-Options.html#ind
*** 679,684 ****
--- 709,717 ----
  freport-bug
  UrlSuffix(gcc/Developer-Options.html#index-freport-bug)
  
+ fdump-internal-locations
+ UrlSuffix(gcc/Developer-Options.html#index-fdump-internal-locations)
+ 
  fdump-passes
  UrlSuffix(gcc/Developer-Options.html#index-fdump-passes)
  
*************** UrlSuffix(gcc/Optimize-Options.html#inde
*** 842,847 ****
--- 875,883 ----
  fif-conversion2
  UrlSuffix(gcc/Optimize-Options.html#index-fif-conversion2)
  
+ fstack-reuse=
+ UrlSuffix(gcc/Code-Gen-Options.html#index-fstack-reuse)
+ 
  ftree-loop-if-convert
  UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-if-convert)
  
*************** UrlSuffix(gcc/Optimize-Options.html#inde
*** 866,871 ****
--- 902,910 ----
  finline-limit=
  UrlSuffix(gcc/Optimize-Options.html#index-finline-limit)
  
+ finline-atomics
+ UrlSuffix(gcc/Optimize-Options.html#index-finline-atomics)
+ 
  finline-stringops
  UrlSuffix(gcc/Optimize-Options.html#index-finline-stringops)
  
*************** UrlSuffix(gcc/Optimize-Options.html#inde
*** 917,922 ****
--- 956,967 ----
  fipa-icf
  UrlSuffix(gcc/Optimize-Options.html#index-fipa-icf)
  
+ fipa-icf-functions
+ UrlSuffix(gcc/Optimize-Options.html#index-fipa-icf-functions)
+ 
+ fipa-icf-variables
+ UrlSuffix(gcc/Optimize-Options.html#index-fipa-icf-variables)
+ 
  fipa-reference
  UrlSuffix(gcc/Optimize-Options.html#index-fipa-reference)
  
*************** UrlSuffix(gcc/Optimize-Options.html#inde
*** 1141,1146 ****
--- 1186,1194 ----
  fprefetch-loop-arrays
  UrlSuffix(gcc/Optimize-Options.html#index-fprefetch-loop-arrays)
  
+ fprofile
+ UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile)
+ 
  fprofile-abs-path
  UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-abs-path)
  
*************** UrlSuffix(gcc/Optimize-Options.html#inde
*** 1229,1234 ****
--- 1277,1285 ----
  flifetime-dse=
  UrlSuffix(gcc/Optimize-Options.html#index-flifetime-dse)
  
+ flimit-function-alignment
+ UrlSuffix(gcc/Optimize-Options.html#index-flimit-function-alignment)
+ 
  flive-patching
  UrlSuffix(gcc/Optimize-Options.html#index-flive-patching)
  
*************** UrlSuffix(gcc/Debugging-Options.html#ind
*** 1649,1654 ****
--- 1700,1708 ----
  fvar-tracking-assignments-toggle
  UrlSuffix(gcc/Developer-Options.html#index-fno-var-tracking-assignments-toggle)
  
+ fvar-tracking-uninit
+ UrlSuffix(gcc/Debugging-Options.html#index-fno-var-tracking-uninit)
+ 
  ftree-vectorize
  UrlSuffix(gcc/Optimize-Options.html#index-ftree-vectorize)
  
*************** UrlSuffix(gcc/Debugging-Options.html#ind
*** 1754,1759 ****
--- 1808,1816 ----
  ginternal-reset-location-views
  UrlSuffix(gcc/Debugging-Options.html#index-ginternal-reset-location-views)
  
+ gno-pubnames
+ UrlSuffix(gcc/Debugging-Options.html#index-gno-pubnames)
+ 
  gpubnames
  UrlSuffix(gcc/Debugging-Options.html#index-gpubnames)
  
*************** UrlSuffix(gcc/Directory-Options.html#ind
*** 1799,1804 ****
--- 1856,1864 ----
  l
  UrlSuffix(gcc/Link-Options.html#index-l)
  
+ n
+ UrlSuffix(gcc/Link-Options.html#index-n)
+ 
  no-canonical-prefixes
  UrlSuffix(gcc/Directory-Options.html#index-no-canonical-prefixes)
  
*************** UrlSuffix(gcc/Developer-Options.html#ind
*** 1891,1896 ****
--- 1951,1959 ----
  save-temps=
  UrlSuffix(gcc/Developer-Options.html#index-save-temps)
  
+ t
+ UrlSuffix(gcc/Link-Options.html#index-t)
+ 
  time
  UrlSuffix(gcc/Developer-Options.html#index-time)
  
*************** UrlSuffix(gcc/Link-Options.html#index-z)
*** 1979,1981 ****
--- 2042,2047 ----
  fipa-ra
  UrlSuffix(gcc/Optimize-Options.html#index-fipa-ra)
  
+ fext-dce
+ UrlSuffix(gcc/Optimize-Options.html#index-fext-dce)
+ 
diff -Nrcpad gcc-16-20251109/gcc/config/aarch64/aarch64-cores.def gcc-16-20251116/gcc/config/aarch64/aarch64-cores.def
*** gcc-16-20251109/gcc/config/aarch64/aarch64-cores.def	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/config/aarch64/aarch64-cores.def	Sun Nov 16 22:32:53 2025
*************** AARCH64_CORE("thunderxt83",   thunderxt8
*** 75,80 ****
--- 75,82 ----
  AARCH64_CORE("ampere1", ampere1, cortexa57, V8_6A, (F16, RNG, AES, SHA3), ampere1, 0xC0, 0xac3, -1)
  AARCH64_CORE("ampere1a", ampere1a, cortexa57, V8_6A, (F16, RNG, AES, SHA3, SM4, MEMTAG), ampere1a, 0xC0, 0xac4, -1)
  AARCH64_CORE("ampere1b", ampere1b, cortexa57, V8_7A, (F16, RNG, AES, SHA3, SM4, MEMTAG, CSSC), ampere1b, 0xC0, 0xac5, -1)
+ AARCH64_CORE("ampere1c", ampere1c, cortexa57, V9_2A, (CSSC, CRYPTO, FP8FMA, FAMINMAX, LUT, SVE_B16B16, SVE2_AES, SVE2_SHA3, SVE2_SM4), neoversen3, 0xc0, 0xac7, -1)
+ 
  /* Do not swap around "emag" and "xgene1",
     this order is required to handle variant correctly. */
  AARCH64_CORE("emag",        emag,      xgene1,    V8A,  (CRC, CRYPTO), emag, 0x50, 0x000, 3)
diff -Nrcpad gcc-16-20251109/gcc/config/aarch64/aarch64-simd.md gcc-16-20251116/gcc/config/aarch64/aarch64-simd.md
*** gcc-16-20251109/gcc/config/aarch64/aarch64-simd.md	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/config/aarch64/aarch64-simd.md	Sun Nov 16 22:32:53 2025
***************
*** 9449,9454 ****
--- 9449,9466 ----
    [(set_attr "type" "crypto_sha3")]
  )
  
+ (define_insn "*eor3q<mode>4"
+   [(set (match_operand:ALLI 0 "register_operand" "=w")
+ 	(xor:ALLI
+ 	 (xor:ALLI
+ 	  (match_operand:ALLI 2 "register_operand" "w")
+ 	  (match_operand:ALLI 3 "register_operand" "w"))
+ 	 (match_operand:ALLI 1 "register_operand" "w")))]
+   "TARGET_SHA3 && reload_completed"
+   "eor3\\t%0.16b, %1.16b, %2.16b, %3.16b"
+   [(set_attr "type" "crypto_sha3")]
+ )
+ 
  (define_insn "aarch64_rax1qv2di"
    [(set (match_operand:V2DI 0 "register_operand" "=w")
  	(xor:V2DI
diff -Nrcpad gcc-16-20251109/gcc/config/aarch64/aarch64-sve-builtins.cc gcc-16-20251116/gcc/config/aarch64/aarch64-sve-builtins.cc
*** gcc-16-20251109/gcc/config/aarch64/aarch64-sve-builtins.cc	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/config/aarch64/aarch64-sve-builtins.cc	Sun Nov 16 22:32:53 2025
*************** register_builtin_types ()
*** 4691,4699 ****
  	      vectype = build_truth_vector_type_for_mode (BYTES_PER_SVE_VECTOR,
  							  VNx16BImode);
  	      num_pr = 1;
- 	      /* Leave svbool_t as indivisible for now.  We don't yet support
- 		 C/C++ operators on predicates.  */
- 	      TYPE_INDIVISIBLE_P (vectype) = 1;
  	    }
  	  else
  	    {
--- 4691,4696 ----
*************** register_builtin_types ()
*** 4710,4721 ****
  			  && TYPE_ALIGN (vectype) == 128
  			  && known_eq (size, BITS_PER_SVE_VECTOR));
  	      num_zr = 1;
- 	      TYPE_INDIVISIBLE_P (vectype) = 0;
  	    }
  	  vectype = build_distinct_type_copy (vectype);
  	  gcc_assert (vectype == TYPE_MAIN_VARIANT (vectype));
  	  SET_TYPE_STRUCTURAL_EQUALITY (vectype);
  	  TYPE_ARTIFICIAL (vectype) = 1;
  	  make_type_sizeless (vectype);
  	}
        if (num_pr)
--- 4707,4718 ----
  			  && TYPE_ALIGN (vectype) == 128
  			  && known_eq (size, BITS_PER_SVE_VECTOR));
  	      num_zr = 1;
  	    }
  	  vectype = build_distinct_type_copy (vectype);
  	  gcc_assert (vectype == TYPE_MAIN_VARIANT (vectype));
  	  SET_TYPE_STRUCTURAL_EQUALITY (vectype);
  	  TYPE_ARTIFICIAL (vectype) = 1;
+ 	  TYPE_INDIVISIBLE_P (vectype) = 0;
  	  make_type_sizeless (vectype);
  	}
        if (num_pr)
diff -Nrcpad gcc-16-20251109/gcc/config/aarch64/aarch64-sve.md gcc-16-20251116/gcc/config/aarch64/aarch64-sve.md
*** gcc-16-20251109/gcc/config/aarch64/aarch64-sve.md	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/config/aarch64/aarch64-sve.md	Sun Nov 16 22:32:53 2025
***************
*** 3520,3525 ****
--- 3520,3566 ----
    }
  )
  
+ ;; Unpredicated sign and zero extension from a boolean mode.
+ (define_expand "extend<vpred><mode>2"
+   [(set (match_operand:SVE_ALL 0 "register_operand")
+ 	(unspec:SVE_ALL
+ 	  [(match_operand:<VPRED> 1 "register_operand")
+ 	   (match_dup 2)
+ 	   (match_dup 3)]
+ 	  UNSPEC_SEL))]
+   "TARGET_SVE"
+   {
+     operands[2] = CONSTM1_RTX (<MODE>mode);
+     operands[3] = CONST0_RTX (<MODE>mode);
+   }
+ )
+ 
+ (define_expand "zero_extend<vpred><mode>2"
+   [(set (match_operand:SVE_ALL 0 "register_operand")
+ 	(unspec:SVE_ALL
+ 	  [(match_operand:<VPRED> 1 "register_operand")
+ 	   (match_dup 2)
+ 	   (match_dup 3)]
+ 	  UNSPEC_SEL))]
+   "TARGET_SVE"
+   {
+     operands[2] = CONST1_RTX (<MODE>mode);
+     operands[3] = CONST0_RTX (<MODE>mode);
+   }
+ )
+ 
+ (define_expand "trunc<mode><vpred>2"
+   [(match_operand:<VPRED> 0 "register_operand")
+    (match_operand:SVE_I 1 "register_operand")]
+   "TARGET_SVE"
+   {
+     rtx mone = CONSTM1_RTX (<MODE>mode);
+     rtx cmp = gen_rtx_EQ (<MODE>mode, operands[1], mone);
+     emit_insn (gen_vec_cmp<mode><vpred> (operands[0], cmp, operands[1], mone));
+     DONE;
+   }
+ )
+ 
  ;; Predicated sign and zero extension from a narrower mode.
  (define_insn "*<optab><SVE_PARTIAL_I:mode><SVE_HSDI:mode>2"
    [(set (match_operand:SVE_HSDI 0 "register_operand")
***************
*** 8527,8532 ****
--- 8568,8600 ----
      DONE;
    }
  )
+ 
+ (define_expand "vec_cmp<mode><mode>"
+   [(parallel
+     [(set (match_operand:PRED_ALL 0 "register_operand")
+ 	  (match_operator:PRED_ALL 1 "aarch64_equality_operator"
+ 	    [(match_operand:PRED_ALL 2 "register_operand")
+ 	     (match_operand:PRED_ALL 3 "register_operand")]))])]
+   "TARGET_SVE"
+   {
+     rtx ptrue = aarch64_ptrue_reg (<MODE>mode);
+     if (GET_CODE (operands[1]) == EQ)
+       {
+ 	rtx tmp = gen_reg_rtx (<MODE>mode);
+ 	emit_insn (gen_aarch64_pred_xor<mode>_z (tmp, ptrue,
+ 						 operands[2], operands[3]));
+ 	emit_insn (gen_aarch64_pred_xor<mode>_z (operands[0], ptrue,
+ 						 tmp, ptrue));
+       }
+     else if (GET_CODE (operands[1]) == NE)
+       emit_insn (gen_aarch64_pred_xor<mode>_z (operands[0], ptrue,
+ 					       operands[2], operands[3]));
+     else
+       gcc_unreachable ();
+ 
+     DONE;
+   }
+ )
  
  ;; Unsigned integer comparisons.  Don't enforce an immediate range here, since
  ;; it depends on the comparison; leave it to aarch64_expand_sve_vec_cmp_int
diff -Nrcpad gcc-16-20251109/gcc/config/aarch64/aarch64-tune.md gcc-16-20251116/gcc/config/aarch64/aarch64-tune.md
*** gcc-16-20251109/gcc/config/aarch64/aarch64-tune.md	Sun Nov  9 22:35:24 2025
--- gcc-16-20251116/gcc/config/aarch64/aarch64-tune.md	Sun Nov 16 22:35:46 2025
***************
*** 1,5 ****
  ;; -*- buffer-read-only: t -*-
  ;; Generated automatically by gentune.sh from aarch64-cores.def
  (define_attr "tune"
! 	"cortexa34,cortexa35,cortexa53,cortexa57,cortexa72,cortexa73,thunderx,thunderxt88,thunderxt88p1,octeontx,octeontxt81,octeontxt83,thunderxt81,thunderxt83,ampere1,ampere1a,ampere1b,emag,xgene1,falkor,qdf24xx,exynosm1,phecda,thunderx2t99p1,vulcan,thunderx2t99,cortexa55,cortexa75,cortexa76,cortexa76ae,cortexa77,cortexa78,cortexa78ae,cortexa78c,cortexa65,cortexa65ae,cortexx1,cortexx1c,neoversen1,ares,neoversee1,octeontx2,octeontx2t98,octeontx2t96,octeontx2t93,octeontx2f95,octeontx2f95n,octeontx2f95mm,a64fx,fujitsu_monaka,tsv110,thunderx3t110,neoversev1,zeus,neoverse512tvb,saphira,oryon1,cortexa57cortexa53,cortexa72cortexa53,cortexa73cortexa35,cortexa73cortexa53,cortexa75cortexa55,cortexa76cortexa55,cortexr82,cortexr82ae,applea12,applem1_0,applem1_1,applem1_2,applem1_3,applem2_0,applem2_1,applem2_2,applem2_3,applem3_0,applem3_1,applem3_2,applem4_0,applem4_1,applem4_2,cortexa510,cortexa520,cortexa520ae,cortexa710,cortexa715,cortexa720,cortexa720ae,cortexa725,cortexx2,cortexx3,cortexx4,cortexx925,neoversen2,cobalt100,neoversen3,neoversev2,grace,neoversev3,neoversev3ae,demeter,olympus,gb10,generic,generic_armv8_a,generic_armv9_a"
  	(const (symbol_ref "((enum attr_tune) aarch64_tune)")))
--- 1,5 ----
  ;; -*- buffer-read-only: t -*-
  ;; Generated automatically by gentune.sh from aarch64-cores.def
  (define_attr "tune"
! 	"cortexa34,cortexa35,cortexa53,cortexa57,cortexa72,cortexa73,thunderx,thunderxt88,thunderxt88p1,octeontx,octeontxt81,octeontxt83,thunderxt81,thunderxt83,ampere1,ampere1a,ampere1b,ampere1c,emag,xgene1,falkor,qdf24xx,exynosm1,phecda,thunderx2t99p1,vulcan,thunderx2t99,cortexa55,cortexa75,cortexa76,cortexa76ae,cortexa77,cortexa78,cortexa78ae,cortexa78c,cortexa65,cortexa65ae,cortexx1,cortexx1c,neoversen1,ares,neoversee1,octeontx2,octeontx2t98,octeontx2t96,octeontx2t93,octeontx2f95,octeontx2f95n,octeontx2f95mm,a64fx,fujitsu_monaka,tsv110,thunderx3t110,neoversev1,zeus,neoverse512tvb,saphira,oryon1,cortexa57cortexa53,cortexa72cortexa53,cortexa73cortexa35,cortexa73cortexa53,cortexa75cortexa55,cortexa76cortexa55,cortexr82,cortexr82ae,applea12,applem1_0,applem1_1,applem1_2,applem1_3,applem2_0,applem2_1,applem2_2,applem2_3,applem3_0,applem3_1,applem3_2,applem4_0,applem4_1,applem4_2,cortexa510,cortexa520,cortexa520ae,cortexa710,cortexa715,cortexa720,cortexa720ae,cortexa725,cortexx2,cortexx3,cortexx4,cortexx925,neoversen2,cobalt100,neoversen3,neoversev2,grace,neoversev3,neoversev3ae,demeter,olympus,gb10,generic,generic_armv8_a,generic_armv9_a"
  	(const (symbol_ref "((enum attr_tune) aarch64_tune)")))
diff -Nrcpad gcc-16-20251109/gcc/config/aarch64/aarch64.cc gcc-16-20251116/gcc/config/aarch64/aarch64.cc
*** gcc-16-20251109/gcc/config/aarch64/aarch64.cc	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/config/aarch64/aarch64.cc	Sun Nov 16 22:32:53 2025
*************** aarch64_autovectorize_vector_modes (vect
*** 23145,23150 ****
--- 23145,23168 ----
    return flags;
  }
  
+ /* Implement TARGET_CONVERT_TO_TYPE.  Convert EXPR to TYPE.  */
+ 
+ static tree
+ aarch64_convert_to_type (tree type, tree expr)
+ {
+   /* If TYPE is a non-standard boolean type invented by the target, check if
+      EXPR can be converted to TYPE.  */
+   if (TREE_CODE (type) == BOOLEAN_TYPE
+       && TREE_CODE (TREE_TYPE (expr)) == BOOLEAN_TYPE
+       && !VECTOR_TYPE_P (type)
+       && !VECTOR_TYPE_P (TREE_TYPE (expr))
+       && TYPE_CANONICAL (type) != TYPE_CANONICAL (TREE_TYPE (expr)))
+     return build1 (VIEW_CONVERT_EXPR, type, expr);
+ 
+   /* Use standard rules.  */
+   return NULL_TREE;
+ }
+ 
  /* Implement TARGET_MANGLE_TYPE.  */
  
  static const char *
*************** aarch64_stack_protect_guard (void)
*** 30440,30450 ****
    return NULL_TREE;
  }
  
! /* Implement TARGET_INVALID_UNARY_OP.  */
  
  static const char *
  aarch64_invalid_unary_op (int op, const_tree type)
  {
    /* Reject all single-operand operations on __mfp8 except for &.  */
    if (TYPE_MAIN_VARIANT (type) == aarch64_mfp8_type_node && op != ADDR_EXPR)
      return N_ ("operation not permitted on type %<mfloat8_t%>");
--- 30458,30515 ----
    return NULL_TREE;
  }
  
! 
! static const char *
! aarch64_valid_vector_boolean_op (int code)
! {
!   switch ((enum tree_code)code)
!     {
!     case PREINCREMENT_EXPR:
!       return N_ ("preincrement operation not permitted on svbool_t");
!     case PREDECREMENT_EXPR:
!       return N_ ("predecrement operation not permitted on svbool_t");
!     case POSTINCREMENT_EXPR:
!       return N_ ("postincrement operation not permitted on svbool_t");
!     case POSTDECREMENT_EXPR:
!       return N_ ("postdecrement operation not permitted on svbool_t");
!     case NEGATE_EXPR:
!       return N_ ("negation operation not permitted on svbool_t");
!     case PLUS_EXPR:
!       return N_ ("plus operation not permitted on svbool_t");
!     case MINUS_EXPR:
!       return N_ ("minus operation not permitted on svbool_t");
!     case MULT_EXPR:
!       return N_ ("multiply operation not permitted on svbool_t");
!     case TRUNC_DIV_EXPR:
!       return N_ ("divide operation not permitted on svbool_t");
!     case LSHIFT_EXPR:
!     case RSHIFT_EXPR:
!       return N_ ("shift operation not permitted on svbool_t");
!     case LT_EXPR:
!     case LE_EXPR:
!     case GT_EXPR:
!     case GE_EXPR:
!       return N_ ("only == and != operations permitted on svbool_t");
!     case ARRAY_REF:
!       return N_ ("subscript operation not supported on svbool_t");
!     default:
!       /* Operation permitted.  */
!       return NULL;
!     }
! }
! 
! /* Implement TARGET_INVALID_BINARY_OP.
!    Return the diagnostic message string if the unary operation OP is
!    not permitted on TYPE, NULL otherwise.  */
  
  static const char *
  aarch64_invalid_unary_op (int op, const_tree type)
  {
+   if (VECTOR_BOOLEAN_TYPE_P (type)
+       && !TYPE_INDIVISIBLE_P (type)
+       && aarch64_sve::builtin_type_p (type))
+     return aarch64_valid_vector_boolean_op (op);
+ 
    /* Reject all single-operand operations on __mfp8 except for &.  */
    if (TYPE_MAIN_VARIANT (type) == aarch64_mfp8_type_node && op != ADDR_EXPR)
      return N_ ("operation not permitted on type %<mfloat8_t%>");
*************** aarch64_invalid_unary_op (int op, const_
*** 30453,30471 ****
    return NULL;
  }
  
! /* Implement TARGET_INVALID_BINARY_OP.  */
  
  static const char *
! aarch64_invalid_binary_op (int op ATTRIBUTE_UNUSED, const_tree type1,
  			   const_tree type2)
  {
    if (VECTOR_TYPE_P (type1)
        && VECTOR_TYPE_P (type2)
        && !TYPE_INDIVISIBLE_P (type1)
!       && !TYPE_INDIVISIBLE_P (type2)
!       && (aarch64_sve::builtin_type_p (type1)
  	  != aarch64_sve::builtin_type_p (type2)))
!     return N_("cannot combine GNU and SVE vectors in a binary operation");
  
    /* Reject all 2-operand operations on __mfp8.  */
    if (TYPE_MAIN_VARIANT (type1) == aarch64_mfp8_type_node
--- 30518,30546 ----
    return NULL;
  }
  
! /* Implement TARGET_INVALID_BINARY_OP.
!    Return the diagnostic message string if the binary operation OP is
!    not permitted on TYPE1 and TYPE2, NULL otherwise.  */
  
  static const char *
! aarch64_invalid_binary_op (int op, const_tree type1,
  			   const_tree type2)
  {
    if (VECTOR_TYPE_P (type1)
        && VECTOR_TYPE_P (type2)
        && !TYPE_INDIVISIBLE_P (type1)
!       && !TYPE_INDIVISIBLE_P (type2))
!     {
!       if ((aarch64_sve::builtin_type_p (type1)
  	  != aarch64_sve::builtin_type_p (type2)))
! 	return N_("cannot combine GNU and SVE vectors in a binary operation");
! 
!       if (aarch64_sve::builtin_type_p (type1)
! 	  && aarch64_sve::builtin_type_p (type2)
! 	  && VECTOR_BOOLEAN_TYPE_P (type1)
! 	  && VECTOR_BOOLEAN_TYPE_P (type2))
! 	return aarch64_valid_vector_boolean_op (op);
!     }
  
    /* Reject all 2-operand operations on __mfp8.  */
    if (TYPE_MAIN_VARIANT (type1) == aarch64_mfp8_type_node
*************** aarch64_libgcc_floating_mode_supported_p
*** 32553,32558 ****
--- 32628,32636 ----
  #undef TARGET_INVALID_BINARY_OP
  #define TARGET_INVALID_BINARY_OP aarch64_invalid_binary_op
  
+ #undef TARGET_INVALID_UNARY_OP
+ #define TARGET_INVALID_UNARY_OP aarch64_invalid_unary_op
+ 
  #undef TARGET_VERIFY_TYPE_CONTEXT
  #define TARGET_VERIFY_TYPE_CONTEXT aarch64_verify_type_context
  
*************** aarch64_libgcc_floating_mode_supported_p
*** 32743,32748 ****
--- 32821,32829 ----
  #define TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES \
    aarch64_autovectorize_vector_modes
  
+ #undef TARGET_CONVERT_TO_TYPE
+ #define TARGET_CONVERT_TO_TYPE aarch64_convert_to_type
+ 
  #undef TARGET_ATOMIC_ASSIGN_EXPAND_FENV
  #define TARGET_ATOMIC_ASSIGN_EXPAND_FENV \
    aarch64_atomic_assign_expand_fenv
diff -Nrcpad gcc-16-20251109/gcc/config/aarch64/aarch64.md gcc-16-20251116/gcc/config/aarch64/aarch64.md
*** gcc-16-20251109/gcc/config/aarch64/aarch64.md	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/config/aarch64/aarch64.md	Sun Nov 16 22:32:53 2025
***************
*** 4797,4820 ****
    [(set_attr "type" "fcsel")]
  )
  
! (define_expand "mov<mode>cc"
!   [(set (match_operand:ALLI 0 "register_operand")
! 	(if_then_else:ALLI (match_operand 1 "aarch64_comparison_operator")
! 			   (match_operand:ALLI 2 "register_operand")
! 			   (match_operand:ALLI 3 "register_operand")))]
    ""
    {
      enum rtx_code code = GET_CODE (operands[1]);
-     if (code == UNEQ || code == LTGT)
-       FAIL;
- 
      rtx ccreg = XEXP (operands[1], 0);
      enum machine_mode ccmode = GET_MODE (ccreg);
!     if (GET_MODE_CLASS (ccmode) == MODE_CC)
!       gcc_assert (XEXP (operands[1], 1) == const0_rtx);
!     else if (ccmode == QImode || ccmode == HImode)
!       FAIL;
!     else
        {
  	ccreg = aarch64_gen_compare_reg (code, ccreg, XEXP (operands[1], 1));
  	operands[1] = gen_rtx_fmt_ee (code, VOIDmode, ccreg, const0_rtx);
--- 4797,4814 ----
    [(set_attr "type" "fcsel")]
  )
  
! (define_expand "mov<ALLI_GPF:mode>cc"
!   [(set (match_operand:ALLI_GPF 0 "register_operand")
! 	(if_then_else:ALLI_GPF (match_operand 1 "aarch64_comparison_operator_cc")
! 			   (match_operand:ALLI_GPF 2 "register_operand")
! 			   (match_operand:ALLI_GPF 3 "register_operand")))]
    ""
    {
      enum rtx_code code = GET_CODE (operands[1]);
      rtx ccreg = XEXP (operands[1], 0);
      enum machine_mode ccmode = GET_MODE (ccreg);
! 
!     if (GET_MODE_CLASS (ccmode) != MODE_CC)
        {
  	ccreg = aarch64_gen_compare_reg (code, ccreg, XEXP (operands[1], 1));
  	operands[1] = gen_rtx_fmt_ee (code, VOIDmode, ccreg, const0_rtx);
***************
*** 4822,4881 ****
    }
  )
  
- (define_expand "mov<GPF:mode><GPI:mode>cc"
-   [(set (match_operand:GPI 0 "register_operand")
- 	(if_then_else:GPI (match_operand 1 "aarch64_comparison_operator")
- 			  (match_operand:GPF 2 "register_operand")
- 			  (match_operand:GPF 3 "register_operand")))]
-   ""
-   {
-     rtx ccreg;
-     enum rtx_code code = GET_CODE (operands[1]);
- 
-     if (code == UNEQ || code == LTGT)
-       FAIL;
- 
-     ccreg = aarch64_gen_compare_reg (code, XEXP (operands[1], 0),
- 				  XEXP (operands[1], 1));
-     operands[1] = gen_rtx_fmt_ee (code, VOIDmode, ccreg, const0_rtx);
-   }
- )
- 
- (define_expand "mov<mode>cc"
-   [(set (match_operand:GPF 0 "register_operand")
- 	(if_then_else:GPF (match_operand 1 "aarch64_comparison_operator")
- 			  (match_operand:GPF 2 "register_operand")
- 			  (match_operand:GPF 3 "register_operand")))]
-   ""
-   {
-     rtx ccreg;
-     enum rtx_code code = GET_CODE (operands[1]);
- 
-     if (code == UNEQ || code == LTGT)
-       FAIL;
- 
-     ccreg = aarch64_gen_compare_reg (code, XEXP (operands[1], 0),
- 				  XEXP (operands[1], 1));
-     operands[1] = gen_rtx_fmt_ee (code, VOIDmode, ccreg, const0_rtx);
-   }
- )
- 
  (define_expand "<neg_not_op><mode>cc"
    [(set (match_operand:GPI 0 "register_operand")
! 	(if_then_else:GPI (match_operand 1 "aarch64_comparison_operator")
  			  (NEG_NOT:GPI (match_operand:GPI 2 "register_operand"))
  			  (match_operand:GPI 3 "register_operand")))]
    ""
    {
-     rtx ccreg;
      enum rtx_code code = GET_CODE (operands[1]);
  
!     if (code == UNEQ || code == LTGT)
!       FAIL;
! 
!     ccreg = aarch64_gen_compare_reg (code, XEXP (operands[1], 0),
! 				      XEXP (operands[1], 1));
!     operands[1] = gen_rtx_fmt_ee (code, VOIDmode, ccreg, const0_rtx);
    }
  )
  
--- 4816,4837 ----
    }
  )
  
  (define_expand "<neg_not_op><mode>cc"
    [(set (match_operand:GPI 0 "register_operand")
! 	(if_then_else:GPI (match_operand 1 "aarch64_comparison_operator_cc")
  			  (NEG_NOT:GPI (match_operand:GPI 2 "register_operand"))
  			  (match_operand:GPI 3 "register_operand")))]
    ""
    {
      enum rtx_code code = GET_CODE (operands[1]);
  
!     rtx ccreg = XEXP (operands[1], 0);
!     enum machine_mode ccmode = GET_MODE (ccreg);
!     if (GET_MODE_CLASS (ccmode) != MODE_CC)
!       {
! 	ccreg = aarch64_gen_compare_reg (code, ccreg, XEXP (operands[1], 1));
! 	operands[1] = gen_rtx_fmt_ee (code, VOIDmode, ccreg, const0_rtx);
!       }
    }
  )
  
diff -Nrcpad gcc-16-20251109/gcc/config/aarch64/driver-aarch64.cc gcc-16-20251116/gcc/config/aarch64/driver-aarch64.cc
*** gcc-16-20251109/gcc/config/aarch64/driver-aarch64.cc	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/config/aarch64/driver-aarch64.cc	Sun Nov 16 22:32:53 2025
*************** host_detect_local_cpu (int argc, const c
*** 368,385 ****
  		  continue;
  		}
  
  	      bool enabled = true;
  
! 	      /* This may be a multi-token feature string.  We need
! 		 to match all parts, which could be in any order.  */
! 	      std::set<std::string> tokens;
! 	      split_words (val, tokens);
! 	      std::set<std::string>::iterator it;
! 
! 	      /* Iterate till the first feature isn't found or all of them
! 		 are found.  */
! 	      for (it = tokens.begin (); enabled && it != tokens.end (); ++it)
! 		enabled = enabled && features.count (*it);
  
  	      if (enabled)
  		extension_flags |= aarch64_extensions[i].flag;
--- 368,397 ----
  		  continue;
  		}
  
+ 	      /* This may be a multi-token feature string.  We need to match
+ 		 all parts in one of the "|" separated sublists.  */
  	      bool enabled = true;
+ 	      size_t cur = 0;
+ 	      while (cur < val.length ())
+ 		{
+ 		  size_t end = val.find_first_of (" ", cur);
+ 		  if (end == std::string::npos)
+ 		    end = val.length ();
+ 		  std::string word = val.substr (cur, end - cur);
+ 		  cur = end + 1;
  
! 		  if (word == "|")
! 		    {
! 		      /* If we've matched everything in the current sublist, we
! 			 can stop now.  */
! 		      if (enabled)
! 			break;
! 		      /* Otherwise, start again with the next sublist.  */
! 		      enabled = true;
! 		      continue;
! 		    }
! 		  enabled = enabled && features.count (word);
! 		}
  
  	      if (enabled)
  		extension_flags |= aarch64_extensions[i].flag;
diff -Nrcpad gcc-16-20251109/gcc/config/aarch64/iterators.md gcc-16-20251116/gcc/config/aarch64/iterators.md
*** gcc-16-20251109/gcc/config/aarch64/iterators.md	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/config/aarch64/iterators.md	Sun Nov 16 22:32:53 2025
***************
*** 65,70 ****
--- 65,74 ----
  ;; Iterator for all 16-bit scalar floating point modes (HF, BF)
  (define_mode_iterator HFBF [HF BF])
  
+ ;; Iterator for all integer modes (up to 64-bit) plus all General Purpose
+ ;; Floating-point registers (32- and 64-bit modes).
+ (define_mode_iterator ALLI_GPF [ALLI GPF])
+ 
  ;; Iterator for all scalar floating point modes suitable for moving, including
  ;; special BF type and decimal floating point types (HF, SF, DF, TF, BF,
  ;; SD, DD and TD)
diff -Nrcpad gcc-16-20251109/gcc/config/aarch64/predicates.md gcc-16-20251116/gcc/config/aarch64/predicates.md
*** gcc-16-20251109/gcc/config/aarch64/predicates.md	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/config/aarch64/predicates.md	Sun Nov 16 22:32:53 2025
***************
*** 459,464 ****
--- 459,479 ----
    return aarch64_get_condition_code (op) >= 0;
  })
  
+ (define_predicate "aarch64_comparison_operator_cc"
+   (match_code "eq,ne,le,lt,ge,gt,geu,gtu,leu,ltu,unordered,
+ 	       ordered,unlt,unle,unge,ungt")
+ {
+   rtx ccreg = XEXP (op, 0);
+   enum machine_mode ccmode = GET_MODE (ccreg);
+ 
+    if (GET_MODE_CLASS (ccmode) == MODE_CC)
+     gcc_assert (XEXP (op, 1) == const0_rtx);
+   else if (ccmode == QImode || ccmode == HImode)
+     return false;
+ 
+   return true;
+ })
+ 
  (define_special_predicate "aarch64_equality_operator"
    (match_code "eq,ne"))
  
diff -Nrcpad gcc-16-20251109/gcc/config/arm/arm-mve-builtins-base.cc gcc-16-20251116/gcc/config/arm/arm-mve-builtins-base.cc
*** gcc-16-20251109/gcc/config/arm/arm-mve-builtins-base.cc	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/config/arm/arm-mve-builtins-base.cc	Sun Nov 16 22:32:53 2025
*************** public:
*** 1167,1172 ****
--- 1167,1303 ----
    }
  };
  
+ 
+ /* Map the function directly to the appropriate scalar shift builtin.  */
+ enum which_scalar_shift {
+   ss_ASRL,
+   ss_LSLL,
+   ss_SQRSHR,
+   ss_SQRSHRL,
+   ss_SQRSHRL_SAT48,
+   ss_SQSHL,
+   ss_SQSHLL,
+   ss_SRSHR,
+   ss_SRSHRL,
+   ss_UQRSHL,
+   ss_UQRSHLL,
+   ss_UQRSHLL_SAT48,
+   ss_UQSHL,
+   ss_UQSHLL,
+   ss_URSHR,
+   ss_URSHRL
+ };
+ 
+ class mve_function_scalar_shift : public function_base
+ {
+ public:
+   CONSTEXPR mve_function_scalar_shift (enum which_scalar_shift shl)
+     : m_scalar_shift (shl)
+   {}
+ 
+   /* Which scalar_shift builtin to map.  */
+   enum which_scalar_shift m_scalar_shift;
+ 
+   rtx
+   expand (function_expander &e) const override
+   {
+     insn_code code;
+ 
+     switch (m_scalar_shift)
+       {
+       case ss_ASRL:
+ 	e.args[1] = simplify_gen_subreg (QImode, e.args[1], SImode, 0);
+ 	code = CODE_FOR_mve_asrl;
+ 	break;
+ 
+       case ss_LSLL:
+ 	e.args[1] = simplify_gen_subreg (QImode, e.args[1], SImode, 0);
+ 	code = CODE_FOR_mve_lsll;
+ 	break;
+ 
+       case ss_SQRSHR:
+ 	code = CODE_FOR_mve_sqrshr_si;
+ 	break;
+ 
+       case ss_SQRSHRL:
+ 	code = code_for_mve_sqrshrl_sat_di (SQRSHRL_64);
+ 	break;
+ 
+       case ss_SQRSHRL_SAT48:
+ 	code = code_for_mve_sqrshrl_sat_di (SQRSHRL_48);
+ 	break;
+ 
+       case ss_SQSHL:
+ 	code = CODE_FOR_mve_sqshl_si;
+ 	break;
+ 
+       case ss_SRSHR:
+ 	code = CODE_FOR_mve_srshr_si;
+ 	break;
+ 
+       case ss_UQRSHL:
+ 	code = CODE_FOR_mve_uqrshl_si;
+ 	break;
+ 
+       case ss_SQSHLL:
+ 	code = CODE_FOR_mve_sqshll_di;
+ 	break;
+ 
+       case ss_SRSHRL:
+ 	code = CODE_FOR_mve_srshrl_di;
+ 	break;
+ 
+       case ss_UQRSHLL:
+ 	code = code_for_mve_uqrshll_sat_di (UQRSHLL_64);
+ 	break;
+ 
+       case ss_UQRSHLL_SAT48:
+ 	code = code_for_mve_uqrshll_sat_di (UQRSHLL_48);
+ 	break;
+ 
+       case ss_UQSHL:
+ 	code = CODE_FOR_mve_uqshl_si;
+ 	break;
+ 
+       case ss_UQSHLL:
+ 	code = CODE_FOR_mve_uqshll_di;
+ 	break;
+ 
+       case ss_URSHR:
+ 	code = CODE_FOR_mve_urshr_si;
+ 	break;
+ 
+       case ss_URSHRL:
+ 	code = CODE_FOR_mve_urshrl_di;
+ 	break;
+ 
+       default:
+ 	gcc_unreachable ();
+       }
+ 
+     return e.use_unpred_insn (code);
+   }
+ };
+ 
+ 
+ /* Map the function directly to mve_vpnotv16bi, and convert the result into
+    HImode like we do for vcmp.  */
+ class mve_function_vpnot : public function_base
+ {
+ public:
+   CONSTEXPR mve_function_vpnot (void)
+   {}
+ 
+   rtx
+   expand (function_expander &e) const override
+   {
+     rtx target = e.use_unpred_insn (CODE_FOR_mve_vpnotv16bi);
+     rtx HItarget = gen_reg_rtx (HImode);
+     emit_move_insn (HItarget, gen_lowpart (HImode, target));
+     return HItarget;
+   }
+ };
+ 
  } /* end anonymous namespace */
  
  namespace arm_mve {
*************** namespace arm_mve {
*** 1334,1339 ****
--- 1465,1486 ----
     (-1, -1, UNSPEC##_F,							\
      -1, -1, UNSPEC##_P_F))
  
+ FUNCTION (asrl, mve_function_scalar_shift, (ss_ASRL))
+ FUNCTION (lsll, mve_function_scalar_shift, (ss_LSLL))
+ FUNCTION (sqrshr, mve_function_scalar_shift, (ss_SQRSHR))
+ FUNCTION (sqrshrl, mve_function_scalar_shift, (ss_SQRSHRL))
+ FUNCTION (sqrshrl_sat48, mve_function_scalar_shift, (ss_SQRSHRL_SAT48))
+ FUNCTION (sqshl, mve_function_scalar_shift, (ss_SQSHL))
+ FUNCTION (sqshll, mve_function_scalar_shift, (ss_SQSHLL))
+ FUNCTION (srshr, mve_function_scalar_shift, (ss_SRSHR))
+ FUNCTION (srshrl, mve_function_scalar_shift, (ss_SRSHRL))
+ FUNCTION (uqrshl, mve_function_scalar_shift, (ss_UQRSHL))
+ FUNCTION (uqrshll, mve_function_scalar_shift, (ss_UQRSHLL))
+ FUNCTION (uqrshll_sat48, mve_function_scalar_shift, (ss_UQRSHLL_SAT48))
+ FUNCTION (uqshl, mve_function_scalar_shift, (ss_UQSHL))
+ FUNCTION (uqshll, mve_function_scalar_shift, (ss_UQSHLL))
+ FUNCTION (urshr, mve_function_scalar_shift, (ss_URSHR))
+ FUNCTION (urshrl, mve_function_scalar_shift, (ss_URSHRL))
  FUNCTION_PRED_P_S_U (vabavq, VABAVQ)
  FUNCTION_WITHOUT_N (vabdq, VABDQ)
  FUNCTION (vabsq, unspec_based_mve_function_exact_insn, (ABS, ABS, ABS, -1, -1, -1, VABSQ_M_S, -1, VABSQ_M_F, -1, -1, -1))
*************** FUNCTION (vmulltq_poly, unspec_mve_funct
*** 1453,1458 ****
--- 1600,1606 ----
  FUNCTION_WITH_RTX_M_N (vmulq, MULT, VMULQ)
  FUNCTION_WITH_RTX_M_N_NO_F (vmvnq, NOT, VMVNQ)
  FUNCTION (vnegq, unspec_based_mve_function_exact_insn, (NEG, NEG, NEG, -1, -1, -1, VNEGQ_M_S, -1, VNEGQ_M_F, -1, -1, -1))
+ FUNCTION (vpnot, mve_function_vpnot, )
  FUNCTION_WITHOUT_M_N (vpselq, VPSELQ)
  FUNCTION (vornq, unspec_based_mve_function_exact_insn_vorn, (-1, -1, VORNQ_M_S, VORNQ_M_U, VORNQ_M_F, -1, -1))
  FUNCTION_WITH_RTX_M_N_NO_N_F (vorrq, IOR, VORRQ)
diff -Nrcpad gcc-16-20251109/gcc/config/arm/arm-mve-builtins-base.def gcc-16-20251116/gcc/config/arm/arm-mve-builtins-base.def
*** gcc-16-20251109/gcc/config/arm/arm-mve-builtins-base.def	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/config/arm/arm-mve-builtins-base.def	Sun Nov 16 22:32:53 2025
***************
*** 18,23 ****
--- 18,39 ----
     <http://www.gnu.org/licenses/>.  */
  
  #define REQUIRES_FLOAT false
+ DEF_MVE_FUNCTION (asrl, scalar_s64_shift, none, none)
+ DEF_MVE_FUNCTION (lsll, scalar_u64_shift, none, none)
+ DEF_MVE_FUNCTION (sqrshr, scalar_s32_shift, none, none)
+ DEF_MVE_FUNCTION (sqrshrl, scalar_s64_shift, none, none)
+ DEF_MVE_FUNCTION (sqrshrl_sat48, scalar_s64_shift, none, none)
+ DEF_MVE_FUNCTION (sqshl, scalar_s32_shift_imm, none, none)
+ DEF_MVE_FUNCTION (sqshll, scalar_s64_shift_imm, none, none)
+ DEF_MVE_FUNCTION (srshr, scalar_s32_shift_imm, none, none)
+ DEF_MVE_FUNCTION (srshrl, scalar_s64_shift_imm, none, none)
+ DEF_MVE_FUNCTION (uqrshl, scalar_u32_shift, none, none)
+ DEF_MVE_FUNCTION (uqrshll, scalar_u64_shift, none, none)
+ DEF_MVE_FUNCTION (uqrshll_sat48, scalar_u64_shift, none, none)
+ DEF_MVE_FUNCTION (uqshl, scalar_u32_shift_imm, none, none)
+ DEF_MVE_FUNCTION (uqshll, scalar_u64_shift_imm, none, none)
+ DEF_MVE_FUNCTION (urshr, scalar_u32_shift_imm, none, none)
+ DEF_MVE_FUNCTION (urshrl, scalar_u64_shift_imm, none, none)
  DEF_MVE_FUNCTION (vabavq, binary_acca_int32, all_integer, p_or_none)
  DEF_MVE_FUNCTION (vabdq, binary, all_integer, mx_or_none)
  DEF_MVE_FUNCTION (vabsq, unary, all_signed, mx_or_none)
*************** DEF_MVE_FUNCTION (vmvnq, mvn, all_intege
*** 113,118 ****
--- 129,135 ----
  DEF_MVE_FUNCTION (vnegq, unary, all_signed, mx_or_none)
  DEF_MVE_FUNCTION (vornq, binary_orrq, all_integer, mx_or_none)
  DEF_MVE_FUNCTION (vorrq, binary_orrq, all_integer, mx_or_none)
+ DEF_MVE_FUNCTION (vpnot, vpnot, none, none)
  DEF_MVE_FUNCTION (vpselq, vpsel, all_integer_with_64, none)
  DEF_MVE_FUNCTION (vqabsq, unary, all_signed, m_or_none)
  DEF_MVE_FUNCTION (vqaddq, binary_opt_n, all_integer, m_or_none)
diff -Nrcpad gcc-16-20251109/gcc/config/arm/arm-mve-builtins-base.h gcc-16-20251116/gcc/config/arm/arm-mve-builtins-base.h
*** gcc-16-20251109/gcc/config/arm/arm-mve-builtins-base.h	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/config/arm/arm-mve-builtins-base.h	Sun Nov 16 22:32:53 2025
***************
*** 23,28 ****
--- 23,44 ----
  namespace arm_mve {
  namespace functions {
  
+ extern const function_base *const asrl;
+ extern const function_base *const lsll;
+ extern const function_base *const sqrshr;
+ extern const function_base *const sqrshrl;
+ extern const function_base *const sqrshrl_sat48;
+ extern const function_base *const sqshl;
+ extern const function_base *const sqshll;
+ extern const function_base *const srshr;
+ extern const function_base *const srshrl;
+ extern const function_base *const uqrshl;
+ extern const function_base *const uqrshll;
+ extern const function_base *const uqrshll_sat48;
+ extern const function_base *const uqshl;
+ extern const function_base *const uqshll;
+ extern const function_base *const urshr;
+ extern const function_base *const urshrl;
  extern const function_base *const vabavq;
  extern const function_base *const vabdq;
  extern const function_base *const vabsq;
*************** extern const function_base *const vmvnq;
*** 144,149 ****
--- 160,166 ----
  extern const function_base *const vnegq;
  extern const function_base *const vornq;
  extern const function_base *const vorrq;
+ extern const function_base *const vpnot;
  extern const function_base *const vpselq;
  extern const function_base *const vqabsq;
  extern const function_base *const vqaddq;
diff -Nrcpad gcc-16-20251109/gcc/config/arm/arm-mve-builtins-shapes.cc gcc-16-20251116/gcc/config/arm/arm-mve-builtins-shapes.cc
*** gcc-16-20251109/gcc/config/arm/arm-mve-builtins-shapes.cc	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/config/arm/arm-mve-builtins-shapes.cc	Sun Nov 16 22:32:53 2025
*************** struct mvn_def : public overloaded_base<
*** 1682,1687 ****
--- 1682,1839 ----
  };
  SHAPE (mvn)
  
+ /* int32_t foo(int32_t, int32_t)
+ 
+    Example: sqrshr.
+    int32_t [__arm_]sqrshr(int32_t value, int32_t shift)  */
+ struct scalar_s32_shift_def : public nonoverloaded_base
+ {
+   void
+   build (function_builder &b, const function_group_info &group,
+ 	 bool preserve_user_namespace) const override
+   {
+     build_all (b, "ss32,ss32,ss32", group, MODE_none, preserve_user_namespace);
+   }
+ };
+ SHAPE (scalar_s32_shift)
+ 
+ /* int32_t foo(int32_t, const int)
+ 
+    Check that 'shift' is in the [1,32] range.
+ 
+    Example: sqshl.
+    int32_t [__arm_]sqshl(int32_t value, const int shift)  */
+ struct scalar_s32_shift_imm_def : public nonoverloaded_base
+ {
+   void
+   build (function_builder &b, const function_group_info &group,
+ 	 bool preserve_user_namespace) const override
+   {
+     build_all (b, "ss32,ss32,su64", group, MODE_none, preserve_user_namespace);
+   }
+ 
+   bool
+   check (function_checker &c) const override
+   {
+     return c.require_immediate_range (1, 1, 32);
+   }
+ };
+ SHAPE (scalar_s32_shift_imm)
+ 
+ /* uint32_t foo(uint32_t, int32_t)
+ 
+    Example: uqrshl.
+    uint32_t [__arm_]uqrshl(uint32_t value, int32_t shift)  */
+ struct scalar_u32_shift_def : public nonoverloaded_base
+ {
+   void
+   build (function_builder &b, const function_group_info &group,
+ 	 bool preserve_user_namespace) const override
+   {
+     build_all (b, "su32,su32,ss32", group, MODE_none, preserve_user_namespace);
+   }
+ };
+ SHAPE (scalar_u32_shift)
+ 
+ /* uint32_t foo(uint32_t, const int)
+ 
+    Check that 'shift' is in the [1,32] range.
+ 
+    Example: uqshl.
+    uint32_t [__arm_]uqshl(uint32_t value, const int shift)  */
+ struct scalar_u32_shift_imm_def : public nonoverloaded_base
+ {
+   void
+   build (function_builder &b, const function_group_info &group,
+ 	 bool preserve_user_namespace) const override
+   {
+     build_all (b, "su32,su32,su64", group, MODE_none, preserve_user_namespace);
+   }
+ 
+   bool
+   check (function_checker &c) const override
+   {
+     return c.require_immediate_range (1, 1, 32);
+   }
+ };
+ SHAPE (scalar_u32_shift_imm)
+ 
+ /* int64_t foo(int64_t, int32_t)
+ 
+    Example: asrl
+    int64_t [__arm_]arsl(int64_t value, int32_t shift)  */
+ struct scalar_s64_shift_def : public nonoverloaded_base
+ {
+   void
+   build (function_builder &b, const function_group_info &group,
+ 	 bool preserve_user_namespace) const override
+   {
+     build_all (b, "ss64,ss64,ss32", group, MODE_none, preserve_user_namespace);
+   }
+ };
+ SHAPE (scalar_s64_shift)
+ 
+ /* int64_t foo(int64_t, const int)
+ 
+    Check that 'shift' is in the [1,32] range.
+ 
+    Example: sqshll.
+    int64_t [__arm_]sqshll(int64_t value, const int shift)  */
+ struct scalar_s64_shift_imm_def : public nonoverloaded_base
+ {
+   void
+   build (function_builder &b, const function_group_info &group,
+ 	 bool preserve_user_namespace) const override
+   {
+     build_all (b, "ss64,ss64,su64", group, MODE_none, preserve_user_namespace);
+   }
+ 
+   bool
+   check (function_checker &c) const override
+   {
+     return c.require_immediate_range (1, 1, 32);
+   }
+ };
+ SHAPE (scalar_s64_shift_imm)
+ 
+ /* uint64_t foo(uint64_t, int32_t)
+ 
+    Example: lsll.
+    uint64_t [__arm_]lsll(uint64_t value, int32_t shift)  */
+ struct scalar_u64_shift_def : public nonoverloaded_base
+ {
+   void
+   build (function_builder &b, const function_group_info &group,
+ 	 bool preserve_user_namespace) const override
+   {
+     build_all (b, "su64,su64,ss32", group, MODE_none, preserve_user_namespace);
+   }
+ };
+ SHAPE (scalar_u64_shift)
+ 
+ /* uint64_t foo(uint64_t, const int)
+ 
+    Check that 'shift' is in the [1,32] range.
+ 
+    Example: uqshll.
+    uint64_t [__arm_]uqshll(uint64_t value, const int shift)  */
+ struct scalar_u64_shift_imm_def : public nonoverloaded_base
+ {
+   void
+   build (function_builder &b, const function_group_info &group,
+ 	 bool preserve_user_namespace) const override
+   {
+     build_all (b, "su64,su64,su64", group, MODE_none, preserve_user_namespace);
+   }
+ 
+   bool
+   check (function_checker &c) const override
+   {
+     return c.require_immediate_range (1, 1, 32);
+   }
+ };
+ SHAPE (scalar_u64_shift_imm)
+ 
  /* void vfoo[_t0](<X>_t *, <T0>[xN]_t)
  
     where <X> might be tied to <t0> (for non-truncating stores) or might
*************** struct vidwdup_def : public overloaded_b
*** 2710,2715 ****
--- 2862,2882 ----
  };
  SHAPE (vidwdup)
  
+ /* mve_pred16_t foo_t0(mve_pred16_t)
+ 
+    Example: vpnot.
+    mve_pred16_t [__arm_]vpnot(mve_pred16_t a)  */
+ struct vpnot_def : public nonoverloaded_base
+ {
+   void
+   build (function_builder &b, const function_group_info &group,
+ 	 bool preserve_user_namespace) const override
+   {
+     build_all (b, "p,p", group, MODE_none, preserve_user_namespace);
+   }
+ };
+ SHAPE (vpnot)
+ 
  /* <T0>_t vfoo[_t0](<T0>_t, <T0>_t, mve_pred16_t)
  
     i.e. a version of the standard ternary shape in which
diff -Nrcpad gcc-16-20251109/gcc/config/arm/arm-mve-builtins-shapes.h gcc-16-20251116/gcc/config/arm/arm-mve-builtins-shapes.h
*** gcc-16-20251109/gcc/config/arm/arm-mve-builtins-shapes.h	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/config/arm/arm-mve-builtins-shapes.h	Sun Nov 16 22:32:53 2025
*************** namespace arm_mve
*** 66,71 ****
--- 66,79 ----
      extern const function_shape *const load_ext_gather_offset;
      extern const function_shape *const load_gather_base;
      extern const function_shape *const mvn;
+     extern const function_shape *const scalar_s32_shift;
+     extern const function_shape *const scalar_s32_shift_imm;
+     extern const function_shape *const scalar_u32_shift;
+     extern const function_shape *const scalar_u32_shift_imm;
+     extern const function_shape *const scalar_s64_shift;
+     extern const function_shape *const scalar_s64_shift_imm;
+     extern const function_shape *const scalar_u64_shift;
+     extern const function_shape *const scalar_u64_shift_imm;
      extern const function_shape *const store;
      extern const function_shape *const store_scatter_base;
      extern const function_shape *const store_scatter_offset;
*************** namespace arm_mve
*** 90,95 ****
--- 98,104 ----
      extern const function_shape *const vcvtx;
      extern const function_shape *const viddup;
      extern const function_shape *const vidwdup;
+     extern const function_shape *const vpnot;
      extern const function_shape *const vpsel;
      extern const function_shape *const vshlc;
  
diff -Nrcpad gcc-16-20251109/gcc/config/arm/arm.cc gcc-16-20251116/gcc/config/arm/arm.cc
*** gcc-16-20251109/gcc/config/arm/arm.cc	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/config/arm/arm.cc	Sun Nov 16 22:32:53 2025
*************** comp_not_to_clear_mask_str_un (tree arg_
*** 18498,18503 ****
--- 18498,18506 ----
  
  	  if (*last_used_bit != offset)
  	    {
+ 	      /* We never clear padding bits in any other registers than the
+ 		 first 4 GPRs.  */
+ 	      gcc_assert (*regno < 4);
  	      if (offset < *last_used_bit)
  		{
  		  /* This field's offset is before the 'last_used_bit', that
*************** comp_not_to_clear_mask_str_un (tree arg_
*** 18590,18608 ****
  	      last_used_bit_t = (starting_bit + field_size) % 32;
  	    }
  
! 	  for (i = *regno; i < regno_t; i++)
  	    {
! 	      /* For all but the last register used by this field only keep the
! 		 padding bits that were padding bits in this field.  */
! 	      padding_bits_to_clear_res[i] &= padding_bits_to_clear_t[i];
! 	    }
  
! 	    /* For the last register, keep all padding bits that were padding
! 	       bits in this field and any padding bits that are still valid
! 	       as padding bits but fall outside of this field's size.  */
! 	    mask = (((uint32_t) -1) - ((uint32_t) 1 << last_used_bit_t)) + 1;
! 	    padding_bits_to_clear_res[regno_t]
! 	      &= padding_bits_to_clear_t[regno_t] | mask;
  
  	  /* Update the maximum size of the fields in terms of registers used
  	     ('max_reg') and the 'last_used_bit' in said register.  */
--- 18593,18617 ----
  	      last_used_bit_t = (starting_bit + field_size) % 32;
  	    }
  
! 	  /* We only clear padding bits in the first 4 GPRs.  No need to check
! 	     regno_t, since there is no way where this field would have been
! 	     put into part GPR part FP reg.  */
! 	  if (*regno < 4)
  	    {
! 	      for (i = *regno; i < regno_t; i++)
! 		{
! 		  /* For all but the last register used by this field only keep
! 		     the padding bits that were padding bits in this field.  */
! 		  padding_bits_to_clear_res[i] &= padding_bits_to_clear_t[i];
! 		}
  
! 	      /* For the last register, keep all padding bits that were padding
! 		 bits in this field and any padding bits that are still valid
! 		 as padding bits but fall outside of this field's size.  */
! 	      mask = (((uint32_t) -1) - ((uint32_t) 1 << last_used_bit_t)) + 1;
! 	      padding_bits_to_clear_res[regno_t]
! 		&= padding_bits_to_clear_t[regno_t] | mask;
! 	    }
  
  	  /* Update the maximum size of the fields in terms of registers used
  	     ('max_reg') and the 'last_used_bit' in said register.  */
*************** comp_not_to_clear_mask_str_un (tree arg_
*** 18617,18632 ****
  	  field = TREE_CHAIN (field);
  	}
  
!       /* Update the current padding_bits_to_clear using the intersection of the
! 	 padding bits of all the fields.  */
!       for (i=*regno; i < max_reg; i++)
! 	padding_bits_to_clear[i] |= padding_bits_to_clear_res[i];
  
!       /* Do not keep trailing padding bits, we do not know yet whether this
! 	 is the end of the argument.  */
!       mask = ((uint32_t) 1 << max_bit) - 1;
!       padding_bits_to_clear[max_reg]
! 	|= padding_bits_to_clear_res[max_reg] & mask;
  
        *regno = max_reg;
        *last_used_bit = max_bit;
--- 18626,18650 ----
  	  field = TREE_CHAIN (field);
  	}
  
!       /* We only clear padding bits in the first 4 GPRs.  No need to check
! 	 regno_t, since there is no way where this field would have been
! 	 put into part GPR part FP reg.  */
!       if (*regno < 4)
! 	{
! 	  /* Update the current padding_bits_to_clear using the intersection of the
! 	     padding bits of all the fields.  */
! 	  for (i=*regno; i < max_reg; i++)
! 	    padding_bits_to_clear[i] |= padding_bits_to_clear_res[i];
  
! 	  /* Do not keep trailing padding bits, we do not know yet whether this
! 	     is the end of the argument.  */
! 	  mask = ((uint32_t) 1 << max_bit) - 1;
! 	  padding_bits_to_clear[max_reg]
! 	    |= padding_bits_to_clear_res[max_reg] & mask;
! 	}
! 
!       for (int i = *regno; i < max_reg; ++i)
! 	not_to_clear_reg_mask |= HOST_WIDE_INT_1U << i;
  
        *regno = max_reg;
        *last_used_bit = max_bit;
*************** compute_not_to_clear_mask (tree arg_type
*** 18668,18675 ****
        /* If the 'last_used_bit' is not zero, that means we are still using a
  	 part of the last 'regno'.  In such cases we must clear the trailing
  	 bits.  Otherwise we are not using regno and we should mark it as to
! 	 clear.  */
!       if (last_used_bit != 0)
  	padding_bits_to_clear[regno]
  	  |= ((uint32_t)-1) - ((uint32_t) 1 << last_used_bit) + 1;
        else
--- 18686,18694 ----
        /* If the 'last_used_bit' is not zero, that means we are still using a
  	 part of the last 'regno'.  In such cases we must clear the trailing
  	 bits.  Otherwise we are not using regno and we should mark it as to
! 	 clear.  We only clear padding bits for scalar values that are passed
! 	 in registers, so regno is never 4 or higher.  */
!       if (regno < 4 && last_used_bit != 0)
  	padding_bits_to_clear[regno]
  	  |= ((uint32_t)-1) - ((uint32_t) 1 << last_used_bit) + 1;
        else
diff -Nrcpad gcc-16-20251109/gcc/config/arm/arm.md gcc-16-20251116/gcc/config/arm/arm.md
*** gcc-16-20251109/gcc/config/arm/arm.md	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/config/arm/arm.md	Sun Nov 16 22:32:53 2025
***************
*** 4588,4597 ****
        if (arm_reg_or_long_shift_imm (operands[2], GET_MODE (operands[2]))
  	  && (REG_P (operands[2]) || INTVAL(operands[2]) != 32))
          {
! 	  if (!reg_overlap_mentioned_p(operands[0], operands[1]))
! 	    emit_insn (gen_movdi (operands[0], operands[1]));
! 
! 	  emit_insn (gen_thumb2_lsll (operands[0], operands[2]));
  	  DONE;
  	}
      }
--- 4588,4595 ----
        if (arm_reg_or_long_shift_imm (operands[2], GET_MODE (operands[2]))
  	  && (REG_P (operands[2]) || INTVAL(operands[2]) != 32))
          {
! 	  operands[2] = convert_modes (QImode, SImode, operands[2], 0);
! 	  emit_insn (gen_mve_lsll (operands[0], operands[1], operands[2]));
  	  DONE;
  	}
      }
***************
*** 4627,4636 ****
    if (TARGET_HAVE_MVE && !BYTES_BIG_ENDIAN
        && arm_reg_or_long_shift_imm (operands[2], GET_MODE (operands[2])))
      {
!       if (!reg_overlap_mentioned_p(operands[0], operands[1]))
! 	emit_insn (gen_movdi (operands[0], operands[1]));
! 
!       emit_insn (gen_thumb2_asrl (operands[0], operands[2]));
        DONE;
      }
  
--- 4625,4632 ----
    if (TARGET_HAVE_MVE && !BYTES_BIG_ENDIAN
        && arm_reg_or_long_shift_imm (operands[2], GET_MODE (operands[2])))
      {
!       operands[2] = convert_modes (QImode, SImode, operands[2], 0);
!       emit_insn (gen_mve_asrl (operands[0], operands[1], operands[2]));
        DONE;
      }
  
***************
*** 4662,4671 ****
    if (TARGET_HAVE_MVE && !BYTES_BIG_ENDIAN
      && long_shift_imm (operands[2], GET_MODE (operands[2])))
      {
!       if (!reg_overlap_mentioned_p(operands[0], operands[1]))
!         emit_insn (gen_movdi (operands[0], operands[1]));
! 
!       emit_insn (gen_thumb2_lsrl (operands[0], operands[2]));
        DONE;
      }
  
--- 4658,4664 ----
    if (TARGET_HAVE_MVE && !BYTES_BIG_ENDIAN
      && long_shift_imm (operands[2], GET_MODE (operands[2])))
      {
!       emit_insn (gen_mve_lsrl (operands[0], operands[1], operands[2]));
        DONE;
      }
  
***************
*** 8350,8356 ****
  
  (define_expand "movhfcc"
    [(set (match_operand:HF 0 "s_register_operand")
! 	(if_then_else:HF (match_operand 1 "arm_cond_move_operator")
  			 (match_operand:HF 2 "s_register_operand")
  			 (match_operand:HF 3 "s_register_operand")))]
    "TARGET_VFP_FP16INST"
--- 8343,8349 ----
  
  (define_expand "movhfcc"
    [(set (match_operand:HF 0 "s_register_operand")
! 	(if_then_else:HF (match_operand 1 "expandable_comparison_operator")
  			 (match_operand:HF 2 "s_register_operand")
  			 (match_operand:HF 3 "s_register_operand")))]
    "TARGET_VFP_FP16INST"
***************
*** 8372,8378 ****
  
  (define_expand "movsfcc"
    [(set (match_operand:SF 0 "s_register_operand")
! 	(if_then_else:SF (match_operand 1 "arm_cond_move_operator")
  			 (match_operand:SF 2 "s_register_operand")
  			 (match_operand:SF 3 "s_register_operand")))]
    "TARGET_32BIT && TARGET_HARD_FLOAT"
--- 8365,8371 ----
  
  (define_expand "movsfcc"
    [(set (match_operand:SF 0 "s_register_operand")
! 	(if_then_else:SF (match_operand 1 "expandable_comparison_operator")
  			 (match_operand:SF 2 "s_register_operand")
  			 (match_operand:SF 3 "s_register_operand")))]
    "TARGET_32BIT && TARGET_HARD_FLOAT"
***************
*** 8394,8400 ****
  
  (define_expand "movdfcc"
    [(set (match_operand:DF 0 "s_register_operand")
! 	(if_then_else:DF (match_operand 1 "arm_cond_move_operator")
  			 (match_operand:DF 2 "s_register_operand")
  			 (match_operand:DF 3 "s_register_operand")))]
    "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE"
--- 8387,8393 ----
  
  (define_expand "movdfcc"
    [(set (match_operand:DF 0 "s_register_operand")
! 	(if_then_else:DF (match_operand 1 "expandable_comparison_operator")
  			 (match_operand:DF 2 "s_register_operand")
  			 (match_operand:DF 3 "s_register_operand")))]
    "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE"
diff -Nrcpad gcc-16-20251109/gcc/config/arm/arm_mve.h gcc-16-20251116/gcc/config/arm/arm_mve.h
*** gcc-16-20251109/gcc/config/arm/arm_mve.h	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/config/arm/arm_mve.h	Sun Nov 16 22:32:53 2025
***************
*** 50,56 ****
  #define vgetq_lane(__a, __idx) __arm_vgetq_lane(__a, __idx)
  
  
- #define vpnot(__a) __arm_vpnot(__a)
  #define vuninitializedq_u8(void) __arm_vuninitializedq_u8(void)
  #define vuninitializedq_u16(void) __arm_vuninitializedq_u16(void)
  #define vuninitializedq_u32(void) __arm_vuninitializedq_u32(void)
--- 50,55 ----
***************
*** 81,102 ****
  #define vgetq_lane_u16(__a,  __idx) __arm_vgetq_lane_u16(__a,  __idx)
  #define vgetq_lane_u32(__a,  __idx) __arm_vgetq_lane_u32(__a,  __idx)
  #define vgetq_lane_u64(__a,  __idx) __arm_vgetq_lane_u64(__a,  __idx)
- #define sqrshr(__p0, __p1) __arm_sqrshr(__p0, __p1)
- #define sqrshrl(__p0, __p1) __arm_sqrshrl(__p0, __p1)
- #define sqrshrl_sat48(__p0, __p1) __arm_sqrshrl_sat48(__p0, __p1)
- #define sqshl(__p0, __p1) __arm_sqshl(__p0, __p1)
- #define sqshll(__p0, __p1) __arm_sqshll(__p0, __p1)
- #define srshr(__p0, __p1) __arm_srshr(__p0, __p1)
- #define srshrl(__p0, __p1) __arm_srshrl(__p0, __p1)
- #define uqrshl(__p0, __p1) __arm_uqrshl(__p0, __p1)
- #define uqrshll(__p0, __p1) __arm_uqrshll(__p0, __p1)
- #define uqrshll_sat48(__p0, __p1) __arm_uqrshll_sat48(__p0, __p1)
- #define uqshl(__p0, __p1) __arm_uqshl(__p0, __p1)
- #define uqshll(__p0, __p1) __arm_uqshll(__p0, __p1)
- #define urshr(__p0, __p1) __arm_urshr(__p0, __p1)
- #define urshrl(__p0, __p1) __arm_urshrl(__p0, __p1)
- #define lsll(__p0, __p1) __arm_lsll(__p0, __p1)
- #define asrl(__p0, __p1) __arm_asrl(__p0, __p1)
  #endif
  
  /* For big-endian, GCC's vector indices are reversed within each 64 bits
--- 80,85 ----
***************
*** 111,123 ****
    __builtin_arm_lane_check (__ARM_NUM_LANES(__vec),     \
  			    __ARM_LANEQ(__vec, __idx))
  
- __extension__ extern __inline mve_pred16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vpnot (mve_pred16_t __a)
- {
-   return __builtin_mve_vpnotv16bi (__a);
- }
- 
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vsetq_lane_s16 (int16_t __a, int16x8_t __b, const int __idx)
--- 94,99 ----
*************** __arm_vgetq_lane_u64 (uint64x2_t __a, co
*** 254,370 ****
    return __a[__ARM_LANEQ(__a,__idx)];
  }
  
- __extension__ extern __inline  uint64_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_lsll (uint64_t value, int32_t shift)
- {
-   return (value << shift);
- }
- 
- __extension__ extern __inline int64_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_asrl (int64_t value, int32_t shift)
- {
-   return (value >> shift);
- }
- 
- __extension__ extern __inline uint64_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_uqrshll (uint64_t value, int32_t shift)
- {
-   return __builtin_mve_uqrshll_sat64_di (value, shift);
- }
- 
- __extension__ extern __inline uint64_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_uqrshll_sat48 (uint64_t value, int32_t shift)
- {
-   return __builtin_mve_uqrshll_sat48_di (value, shift);
- }
- 
- __extension__ extern __inline int64_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_sqrshrl (int64_t value, int32_t shift)
- {
-   return __builtin_mve_sqrshrl_sat64_di (value, shift);
- }
- 
- __extension__ extern __inline int64_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_sqrshrl_sat48 (int64_t value, int32_t shift)
- {
-   return __builtin_mve_sqrshrl_sat48_di (value, shift);
- }
- 
- __extension__ extern __inline uint64_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_uqshll (uint64_t value, const int shift)
- {
-   return __builtin_mve_uqshll_di (value, shift);
- }
- 
- __extension__ extern __inline uint64_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_urshrl (uint64_t value, const int shift)
- {
-   return __builtin_mve_urshrl_di (value, shift);
- }
- 
- __extension__ extern __inline int64_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_srshrl (int64_t value, const int shift)
- {
-   return __builtin_mve_srshrl_di (value, shift);
- }
- 
- __extension__ extern __inline int64_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_sqshll (int64_t value, const int shift)
- {
-   return __builtin_mve_sqshll_di (value, shift);
- }
- 
- __extension__ extern __inline uint32_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_uqrshl (uint32_t value, int32_t shift)
- {
-   return __builtin_mve_uqrshl_si (value, shift);
- }
- 
- __extension__ extern __inline int32_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_sqrshr (int32_t value, int32_t shift)
- {
-   return __builtin_mve_sqrshr_si (value, shift);
- }
- 
- __extension__ extern __inline uint32_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_uqshl (uint32_t value, const int shift)
- {
-   return  __builtin_mve_uqshl_si (value, shift);
- }
- 
- __extension__ extern __inline uint32_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_urshr (uint32_t value, const int shift)
- {
-   return __builtin_mve_urshr_si (value, shift);
- }
- 
- __extension__ extern __inline int32_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_sqshl (int32_t value, const int shift)
- {
-   return __builtin_mve_sqshl_si (value, shift);
- }
- 
- __extension__ extern __inline int32_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_srshr (int32_t value, const int shift)
- {
-   return __builtin_mve_srshr_si (value, shift);
- }
  
  #if (__ARM_FEATURE_MVE & 2) /* MVE Floating point.  */
  
--- 230,235 ----
diff -Nrcpad gcc-16-20251109/gcc/config/arm/constraints.md gcc-16-20251116/gcc/config/arm/constraints.md
*** gcc-16-20251109/gcc/config/arm/constraints.md	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/config/arm/constraints.md	Sun Nov 16 22:32:53 2025
***************
*** 35,43 ****
  ;; 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, Pj, PJ, Ps, Pt, Pu, Pv, Pw, Px, Py, Pz, Rd, Rf, Rb, Ra,
! ;;		     Rg, Ri
! ;; in all states: Pg
  
  ;; 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, 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
diff -Nrcpad gcc-16-20251109/gcc/config/arm/iterators.md gcc-16-20251116/gcc/config/arm/iterators.md
*** gcc-16-20251109/gcc/config/arm/iterators.md	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/config/arm/iterators.md	Sun Nov 16 22:32:53 2025
***************
*** 2061,2066 ****
--- 2061,2074 ----
  			     (V2QI "v2qi")])
  (define_mode_attr MVE_vctp [(V16BI "8") (V8BI "16") (V4BI "32") (V2QI "64")])
  
+ ;; Assembly modifier for a const_int operand to narrow it to a
+ ;; specific mode.  For vector modes this is the element size.
+ ;; Currently only supports SI and HI.
+ 
+ (define_mode_attr asm_const_size [(SI "") (HI "L")
+ 				  (V4SI "") (V2SI "")
+ 				  (V8HI "L") (V4HI "L")])
+ 
  ;;----------------------------------------------------------------------------
  ;; Code attributes
  ;;----------------------------------------------------------------------------
diff -Nrcpad gcc-16-20251109/gcc/config/arm/mve.md gcc-16-20251116/gcc/config/arm/mve.md
*** gcc-16-20251109/gcc/config/arm/mve.md	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/config/arm/mve.md	Sun Nov 16 22:32:53 2025
***************
*** 417,423 ****
  	 VMVNQ_N))
    ]
    "TARGET_HAVE_MVE"
!   "<mve_insn>.i%#<V_sz_elem>\t%q0, %1"
   [(set (attr "mve_unpredicated_insn") (symbol_ref "CODE_FOR_mve_<mve_insn>q_n_<supf><mode>"))
    (set_attr "type" "mve_move")
  ])
--- 417,423 ----
  	 VMVNQ_N))
    ]
    "TARGET_HAVE_MVE"
!   "<mve_insn>.i%#<V_sz_elem>\t%q0, %<asm_const_size>1"
   [(set (attr "mve_unpredicated_insn") (symbol_ref "CODE_FOR_mve_<mve_insn>q_n_<supf><mode>"))
    (set_attr "type" "mve_move")
  ])
***************
*** 1444,1450 ****
  	 MVE_INT_N_BINARY_LOGIC))
    ]
    "TARGET_HAVE_MVE"
!   "<mve_insn>.i%#<V_sz_elem>	%q0, %2"
   [(set (attr "mve_unpredicated_insn") (symbol_ref "CODE_FOR_mve_<mve_insn>q_n_<supf><mode>"))
    (set_attr "type" "mve_move")
  ])
--- 1444,1450 ----
  	 MVE_INT_N_BINARY_LOGIC))
    ]
    "TARGET_HAVE_MVE"
!   "<mve_insn>.i%#<V_sz_elem>	%q0, %<asm_const_size>2"
   [(set (attr "mve_unpredicated_insn") (symbol_ref "CODE_FOR_mve_<mve_insn>q_n_<supf><mode>"))
    (set_attr "type" "mve_move")
  ])
***************
*** 2335,2341 ****
  	 VMVNQ_M_N))
    ]
    "TARGET_HAVE_MVE"
!   "vpst\;<mve_insn>t.i%#<V_sz_elem>\t%q0, %2"
   [(set (attr "mve_unpredicated_insn") (symbol_ref "CODE_FOR_mve_<mve_insn>q_n_<supf><mode>"))
    (set_attr "type" "mve_move")
     (set_attr "length""8")])
--- 2335,2341 ----
  	 VMVNQ_M_N))
    ]
    "TARGET_HAVE_MVE"
!   "vpst\;<mve_insn>t.i%#<V_sz_elem>\t%q0, %<asm_const_size>2"
   [(set (attr "mve_unpredicated_insn") (symbol_ref "CODE_FOR_mve_<mve_insn>q_n_<supf><mode>"))
    (set_attr "type" "mve_move")
     (set_attr "length""8")])
***************
*** 2353,2359 ****
  	 MVE_INT_M_N_BINARY_LOGIC))
    ]
    "TARGET_HAVE_MVE"
!   "vpst\;<mve_insn>t.i%#<V_sz_elem>\t%q0, %2"
   [(set (attr "mve_unpredicated_insn") (symbol_ref "CODE_FOR_mve_<mve_insn>q_n_<supf><mode>"))
    (set_attr "type" "mve_move")
     (set_attr "length""8")])
--- 2353,2359 ----
  	 MVE_INT_M_N_BINARY_LOGIC))
    ]
    "TARGET_HAVE_MVE"
!   "vpst\;<mve_insn>t.i%#<V_sz_elem>\t%q0, %<asm_const_size>2"
   [(set (attr "mve_unpredicated_insn") (symbol_ref "CODE_FOR_mve_<mve_insn>q_n_<supf><mode>"))
    (set_attr "type" "mve_move")
     (set_attr "length""8")])
***************
*** 4278,4284 ****
  ;;
  ;; [uqrshll_di]
  ;;
! (define_insn "mve_uqrshll_sat<supf>_di"
    [(set (match_operand:DI 0 "arm_low_register_operand" "=l")
  	(unspec:DI [(match_operand:DI 1 "arm_low_register_operand" "0")
  		    (match_operand:SI 2 "register_operand" "r")]
--- 4278,4284 ----
  ;;
  ;; [uqrshll_di]
  ;;
! (define_insn "@mve_uqrshll_sat<supf>_di"
    [(set (match_operand:DI 0 "arm_low_register_operand" "=l")
  	(unspec:DI [(match_operand:DI 1 "arm_low_register_operand" "0")
  		    (match_operand:SI 2 "register_operand" "r")]
***************
*** 4290,4296 ****
  ;;
  ;; [sqrshrl_di]
  ;;
! (define_insn "mve_sqrshrl_sat<supf>_di"
    [(set (match_operand:DI 0 "arm_low_register_operand" "=l")
  	(unspec:DI [(match_operand:DI 1 "arm_low_register_operand" "0")
  		    (match_operand:SI 2 "register_operand" "r")]
--- 4290,4296 ----
  ;;
  ;; [sqrshrl_di]
  ;;
! (define_insn "@mve_sqrshrl_sat<supf>_di"
    [(set (match_operand:DI 0 "arm_low_register_operand" "=l")
  	(unspec:DI [(match_operand:DI 1 "arm_low_register_operand" "0")
  		    (match_operand:SI 2 "register_operand" "r")]
***************
*** 4374,4380 ****
  ;;
  (define_insn "mve_sqshl_si"
    [(set (match_operand:SI 0 "arm_general_register_operand" "=r")
! 	(ss_ashift:SI (match_operand:DI 1 "arm_general_register_operand" "0")
  		      (match_operand:SI 2 "immediate_operand" "Pg")))]
    "TARGET_HAVE_MVE"
    "sqshl%?\\t%1, %2"
--- 4374,4380 ----
  ;;
  (define_insn "mve_sqshl_si"
    [(set (match_operand:SI 0 "arm_general_register_operand" "=r")
! 	(ss_ashift:SI (match_operand:SI 1 "arm_general_register_operand" "0")
  		      (match_operand:SI 2 "immediate_operand" "Pg")))]
    "TARGET_HAVE_MVE"
    "sqshl%?\\t%1, %2"
***************
*** 4385,4391 ****
  ;;
  (define_insn "mve_srshr_si"
    [(set (match_operand:SI 0 "arm_general_register_operand" "=r")
! 	(unspec:SI [(match_operand:DI 1 "arm_general_register_operand" "0")
  		    (match_operand:SI 2 "immediate_operand" "Pg")]
  	 SRSHR))]
    "TARGET_HAVE_MVE"
--- 4385,4391 ----
  ;;
  (define_insn "mve_srshr_si"
    [(set (match_operand:SI 0 "arm_general_register_operand" "=r")
! 	(unspec:SI [(match_operand:SI 1 "arm_general_register_operand" "0")
  		    (match_operand:SI 2 "immediate_operand" "Pg")]
  	 SRSHR))]
    "TARGET_HAVE_MVE"
***************
*** 4714,4716 ****
--- 4714,4915 ----
    "TARGET_HAVE_MVE"
    "dlstp.<dlstp_elemsize>\t%|lr, %0"
    [(set_attr "type" "mve_misc")])
+ 
+ 
+ ;;
+ ;; Scalar shifts
+ ;;
+ ;; immediate shift amounts have to be in the [1..32] range
+ ;;
+ ;; shift amounts stored in a register can be negative, in which case
+ ;; the shift is reversed (asrl, lsll only)
+ ;; since RTL expects shift amounts to be unsigned, make sure the
+ ;; negative case is handled, in case simplify_rtx could optimize:
+ ;; (set (reg:SI 1) (const_int -5))
+ ;; (set (reg:DI 2) (ashift:DI (reg:DI 3) (reg:SI 1)))
+ ;; into:
+ ;; (set (reg:DI 2) (ashift:DI (reg:DI 3) (const_int -5)))
+ 
+ ;; General pattern for asrl
+ (define_expand "mve_asrl"
+   [(set (match_operand:DI 0 "arm_general_register_operand" "")
+ 	(ashiftrt:DI (match_operand:DI 1 "arm_general_register_operand" "")
+ 		     (match_operand:QI 2 "reg_or_int_operand" "")))]
+   "TARGET_HAVE_MVE"
+ {
+   rtx amount = operands[2];
+   if (CONST_INT_P (amount))
+     {
+       HOST_WIDE_INT ival = INTVAL (amount);
+ 
+       if (ival >= 0)
+ 	/* Right shift.  */
+ 	emit_insn (gen_mve_asrl_imm (operands[0], operands[1], amount));
+       else
+ 	/* Left shift.  */
+ 	emit_insn (gen_mve_lsll_imm (operands[0], operands[1],
+ 				     GEN_INT (-ival)));
+       DONE;
+     }
+ 
+   emit_insn (gen_mve_asrl_internal (operands[0], operands[1], operands[2]));
+   DONE;
+ })
+ 
+ ;; immediate shift amount
+ ;; we have to split the insn if the amount is not in the [1..32] range
+ (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];
+   HOST_WIDE_INT ival = INTVAL (amount);
+ 
+   /* shift amount in [1..32] is already handled by the Pg constraint.  */
+ 
+   /* Shift by 0, it is just a move.  */
+   if (ival == 0)
+     {
+       emit_insn (gen_movdi (operands[0], operands[1]));
+       DONE;
+     }
+ 
+   /* 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")])
+ 
+ (define_insn "mve_asrl_internal"
+   [(set (match_operand:DI 0 "arm_general_register_operand" "=r")
+ 	(if_then_else:DI
+ 	  (ge:QI (match_operand:QI 2 "arm_general_register_operand" "r")
+ 		 (const_int 0))
+ 	  (ashiftrt:DI (match_operand:DI 1 "arm_general_register_operand" "0")
+ 		       (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
+ (define_expand "mve_lsll"
+   [(set (match_operand:DI 0 "arm_general_register_operand" "")
+ 	(ashift:DI (match_operand:DI 1 "arm_general_register_operand" "")
+ 		   (match_operand:QI 2 "reg_or_int_operand" "")))]
+   "TARGET_HAVE_MVE"
+ {
+   rtx amount = operands[2];
+   if (CONST_INT_P (amount))
+     {
+       HOST_WIDE_INT ival = INTVAL (amount);
+ 
+       if (ival >= 0)
+ 	/* Left shift.  */
+ 	emit_insn (gen_mve_lsll_imm (operands[0], operands[1], amount));
+       else
+ 	/* Right shift.  */
+ 	emit_insn (gen_lshrdi3 (operands[0], operands[1],
+                                 GEN_INT (-ival)));
+       DONE;
+     }
+ 
+   emit_insn (gen_mve_lsll_internal (operands[0], operands[1], operands[2]));
+   DONE;
+ })
+ 
+ ;; immediate shift amount
+ ;; we have to split the insn if the amount is not in the [1..32] range
+ (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];
+   HOST_WIDE_INT ival = INTVAL (amount);
+ 
+   /* shift amount in [1..32] is already handled by the Pg constraint.  */
+ 
+   /* Shift by 0, it is just a move.  */
+   if (ival == 0)
+     {
+       emit_insn (gen_movdi (operands[0], operands[1]));
+       DONE;
+     }
+ 
+   /* Shift amount larger than input, result is 0.  */
+   if (ival >= 64)
+     {
+       emit_insn (gen_movdi (operands[0], const0_rtx));
+       DONE;
+     }
+ 
+   /* 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;
+   "
+   [(set_attr "predicable" "yes,yes")
+    (set_attr "length" "4,8")])
+ 
+ (define_insn "mve_lsll_internal"
+   [(set (match_operand:DI 0 "arm_general_register_operand" "=r")
+         (if_then_else:DI
+ 	  (ge:QI (match_operand:QI 2 "arm_general_register_operand" "r")
+ 		 (const_int 0))
+ 	  (ashift:DI (match_operand:DI 1 "arm_general_register_operand" "0")
+ 		     (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"
+   [(set (match_operand:DI 0 "arm_general_register_operand" "=r")
+ 	(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")])
diff -Nrcpad gcc-16-20251109/gcc/config/arm/thumb2.md gcc-16-20251116/gcc/config/arm/thumb2.md
*** gcc-16-20251109/gcc/config/arm/thumb2.md	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/config/arm/thumb2.md	Sun Nov 16 22:32:53 2025
***************
*** 1733,1762 ****
    [(set_attr "predicable" "yes")]
  )
  
- (define_insn "thumb2_asrl"
-   [(set (match_operand:DI 0 "arm_general_register_operand" "+r")
- 	(ashiftrt:DI (match_dup 0)
- 		     (match_operand:SI 1 "arm_reg_or_long_shift_imm" "rPg")))]
-   "TARGET_HAVE_MVE"
-   "asrl%?\\t%Q0, %R0, %1"
-   [(set_attr "predicable" "yes")])
- 
- (define_insn "thumb2_lsll"
-   [(set (match_operand:DI 0 "arm_general_register_operand" "+r")
- 	(ashift:DI (match_dup 0)
- 		   (match_operand:SI 1 "arm_reg_or_long_shift_imm" "rPg")))]
-   "TARGET_HAVE_MVE"
-   "lsll%?\\t%Q0, %R0, %1"
-   [(set_attr "predicable" "yes")])
- 
- (define_insn "thumb2_lsrl"
-   [(set (match_operand:DI 0 "arm_general_register_operand" "+r")
- 	(lshiftrt:DI (match_dup 0)
- 		     (match_operand:SI 1 "long_shift_imm" "Pg")))]
-   "TARGET_HAVE_MVE"
-   "lsrl%?\\t%Q0, %R0, %1"
-   [(set_attr "predicable" "yes")])
- 
  ;; Originally expanded by 'doloop_end'.
  (define_insn "*doloop_end_internal"
    [(set (pc)
--- 1733,1738 ----
diff -Nrcpad gcc-16-20251109/gcc/config/dragonfly.opt.urls gcc-16-20251116/gcc/config/dragonfly.opt.urls
*** gcc-16-20251109/gcc/config/dragonfly.opt.urls	Sun Nov  9 22:32:46 2025
--- gcc-16-20251116/gcc/config/dragonfly.opt.urls	Sun Nov 16 22:32:53 2025
***************
*** 1,5 ****
--- 1,8 ----
  ; Autogenerated by regenerate-opt-urls.py from gcc/config/dragonfly.opt and generated HTML
  
+ profile
+ UrlSuffix(gcc/Instrumentation-Options.html#index-profile)
+ 
  ; skipping UrlSuffix for 'pthread' due to multiple URLs:
  ;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
  ;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
diff -Nrcpad gcc-16-20251109/gcc/config/freebsd.opt.urls gcc-16-20251116/gcc/config/freebsd.opt.urls
*** gcc-16-20251109/gcc/config/freebsd.opt.urls	Sun Nov  9 22:32:46 2025
--- gcc-16-20251116/gcc/config/freebsd.opt.urls	Sun Nov 16 22:32:53 2025
***************
*** 1,5 ****
--- 1,8 ----
  ; Autogenerated by regenerate-opt-urls.py from gcc/config/freebsd.opt and generated HTML
  
+ profile
+ UrlSuffix(gcc/Instrumentation-Options.html#index-profile)
+ 
  ; skipping UrlSuffix for 'pthread' due to multiple URLs:
  ;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
  ;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
diff -Nrcpad gcc-16-20251109/gcc/config/gcn/gcn.opt.urls gcc-16-20251116/gcc/config/gcn/gcn.opt.urls
*** gcc-16-20251109/gcc/config/gcn/gcn.opt.urls	Sun Nov  9 22:32:46 2025
--- gcc-16-20251116/gcc/config/gcn/gcn.opt.urls	Sun Nov 16 22:32:53 2025
*************** UrlSuffix(gcc/AMD-GCN-Options.html#index
*** 15,20 ****
--- 15,23 ----
  mstack-size=
  UrlSuffix(gcc/AMD-GCN-Options.html#index-mstack-size)
  
+ Wopenacc-dims
+ UrlSuffix(gcc/AMD-GCN-Options.html#index-Wno-openacc-dims)
+ 
  mxnack=
  UrlSuffix(gcc/AMD-GCN-Options.html#index-mxnack)
  
diff -Nrcpad gcc-16-20251109/gcc/config/gcn/mkoffload.cc gcc-16-20251116/gcc/config/gcn/mkoffload.cc
*** gcc-16-20251109/gcc/config/gcn/mkoffload.cc	Sun Nov  9 22:32:46 2025
--- gcc-16-20251116/gcc/config/gcn/mkoffload.cc	Sun Nov 16 22:32:53 2025
*************** process_asm (FILE *in, FILE *out, FILE *
*** 661,678 ****
      }
    fprintf (cfile, "\n};\n\n");
  
    /* Set the stack size if the user configured a value.  */
    if (gcn_stack_size)
      fprintf (cfile,
! 	     "static __attribute__((constructor))\n"
! 	     "void configure_stack_size (void)\n"
! 	     "{\n"
  	     "  const char *val = getenv (\"GCN_STACK_SIZE\");\n"
  	     "  if (!val || val[0] == '\\0')\n"
! 	     "    setenv (\"GCN_STACK_SIZE\", \"%d\", true);\n"
! 	     "}\n\n",
  	     gcn_stack_size);
  
    obstack_free (&fns_os, NULL);
    for (i = 0; i < dims_count; i++)
      free (dims[i].name);
--- 661,685 ----
      }
    fprintf (cfile, "\n};\n\n");
  
+   /* Start a mkoffload_setup function to hold zero-or-more setup actions.  */
+   fprintf (cfile,
+ 	   "static void\n"
+ 	   "mkoffload_setup (void)\n"
+ 	   "{");
+ 
    /* Set the stack size if the user configured a value.  */
    if (gcn_stack_size)
      fprintf (cfile,
! 	     "\n"
! 	     "  /* Pass through the -mstack-size compile-time option.  */\n"
  	     "  const char *val = getenv (\"GCN_STACK_SIZE\");\n"
  	     "  if (!val || val[0] == '\\0')\n"
! 	     "    setenv (\"GCN_STACK_SIZE\", \"%d\", true);\n",
  	     gcn_stack_size);
  
+   /* End of mkoffload_setup function.  */
+   fprintf (cfile, "}\n\n");
+ 
    obstack_free (&fns_os, NULL);
    for (i = 0; i < dims_count; i++)
      free (dims[i].name);
*************** process_obj (const char *fname_in, FILE
*** 737,742 ****
--- 744,750 ----
  
    fprintf (cfile, "static __attribute__((constructor)) void init (void)\n"
  	   "{\n"
+ 	   "  mkoffload_setup ();\n"
  	   "  GOMP_offload_register_ver (%#x, __OFFLOAD_TABLE__,"
  	   " %d/*GCN*/, &gcn_data);\n"
  	   "};\n",
diff -Nrcpad gcc-16-20251109/gcc/config/gnu-user.opt.urls gcc-16-20251116/gcc/config/gnu-user.opt.urls
*** gcc-16-20251109/gcc/config/gnu-user.opt.urls	Sun Nov  9 22:32:46 2025
--- gcc-16-20251116/gcc/config/gnu-user.opt.urls	Sun Nov 16 22:32:53 2025
***************
*** 1,5 ****
--- 1,8 ----
  ; Autogenerated by regenerate-opt-urls.py from gcc/config/gnu-user.opt and generated HTML
  
+ profile
+ UrlSuffix(gcc/Instrumentation-Options.html#index-profile)
+ 
  ; skipping UrlSuffix for 'pthread' due to multiple URLs:
  ;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
  ;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
diff -Nrcpad gcc-16-20251109/gcc/config/i386/amxavx512intrin.h gcc-16-20251116/gcc/config/i386/amxavx512intrin.h
*** gcc-16-20251109/gcc/config/i386/amxavx512intrin.h	Sun Nov  9 22:32:46 2025
--- gcc-16-20251116/gcc/config/i386/amxavx512intrin.h	Sun Nov 16 22:32:53 2025
***************
*** 39,46 ****
  ({									\
    __m512 dst;								\
    __asm__ volatile							\
!   ("{tcvtrowd2ps\t%1, %%tmm"#src", %0|tcvtrowd2ps\t%0, %%tmm"#src", %1}"	\
!    : "=v" (dst) : "r" ((unsigned) (A)));				\
    dst;									\
  })
  
--- 39,47 ----
  ({									\
    __m512 dst;								\
    __asm__ volatile							\
!   ("{tcvtrowd2ps\t%1, %%tmm%c[_src], %0					\
!     |tcvtrowd2ps\t%0, tmm%c[_src], %1}"					\
!    : "=v" (dst) : "r" ((unsigned) (A)), [_src]"i"(src));		\
    dst;									\
  })
  
***************
*** 48,55 ****
  ({									\
    __m512 dst;								\
    __asm__ volatile							\
!   ("{tcvtrowd2ps\t$"#imm", %%tmm"#src", %0|tcvtrowd2ps\t%0, %%tmm"#src", "#imm"}"	\
!    : "=v" (dst) :);							\
    dst;									\
  })
  
--- 49,57 ----
  ({									\
    __m512 dst;								\
    __asm__ volatile							\
!   ("{tcvtrowd2ps\t%[_imm], %%tmm%c[_src], %0				\
!     |tcvtrowd2ps\t%0, tmm%c[_src], %[_imm]}"				\
!    : "=v" (dst) : [_src]"i"(src), [_imm]"i"(imm));			\
    dst;									\
  })
  
***************
*** 57,64 ****
  ({									\
    __m512bh dst;								\
    __asm__ volatile							\
!   ("{tcvtrowps2bf16h\t%1, %%tmm"#src", %0|tcvtrowps2bf16h\t%0, %%tmm"#src", %1}"	\
!    : "=v" (dst) : "r" ((unsigned) (A)));				\
    dst;									\
  })
  
--- 59,67 ----
  ({									\
    __m512bh dst;								\
    __asm__ volatile							\
!   ("{tcvtrowps2bf16h\t%1, %%tmm%c[_src], %0				\
!     |tcvtrowps2bf16h\t%0, tmm%c[_src], %1}"				\
!     : "=v" (dst) : "r" ((unsigned) (A)), [_src]"i"(src));		\
    dst;									\
  })
  
***************
*** 66,73 ****
  ({									\
    __m512bh dst;								\
    __asm__ volatile							\
!   ("{tcvtrowps2bf16h\t$"#imm", %%tmm"#src", %0|tcvtrowps2bf16h\t%0, %%tmm"#src", "#imm"}"	\
!    : "=v" (dst) :);							\
    dst;									\
  })
  
--- 69,77 ----
  ({									\
    __m512bh dst;								\
    __asm__ volatile							\
!   ("{tcvtrowps2bf16h\t%[_imm], %%tmm%c[_src], %0			\
!     |tcvtrowps2bf16h\t%0, tmm%c[_src], %[_imm]}"			\
!     : "=v" (dst) : [_src]"i"(src), [_imm]"i"(imm));			\
    dst;									\
  })
  
***************
*** 75,82 ****
  ({									\
    __m512bh dst;								\
    __asm__ volatile							\
!   ("{tcvtrowps2bf16l\t%1, %%tmm"#src", %0|tcvtrowps2bf16l\t%0, %%tmm"#src", %1}"	\
!    : "=v" (dst) : "r" ((unsigned) (A)));				\
    dst;									\
  })
  
--- 79,87 ----
  ({									\
    __m512bh dst;								\
    __asm__ volatile							\
!   ("{tcvtrowps2bf16l\t%1, %%tmm%c[_src], %0				\
!     |tcvtrowps2bf16l\t%0, tmm%c[_src], %1}"				\
!     : "=v" (dst) : "r" ((unsigned) (A)), [_src]"i"(src));		\
    dst;									\
  })
  
***************
*** 84,91 ****
  ({									\
    __m512bh dst;								\
    __asm__ volatile							\
!   ("{tcvtrowps2bf16l\t$"#imm", %%tmm"#src", %0|tcvtrowps2bf16l\t%0, %%tmm"#src", "#imm"}"	\
!    : "=v" (dst) :);							\
    dst;									\
  })
  
--- 89,97 ----
  ({									\
    __m512bh dst;								\
    __asm__ volatile							\
!   ("{tcvtrowps2bf16l\t%[_imm], %%tmm%c[_src], %0			\
!     |tcvtrowps2bf16l\t%0, tmm%c[_src], "#imm"}"				\
!     : "=v" (dst) : [_src]"i"(src), [_imm]"i"(imm));			\
    dst;									\
  })
  
***************
*** 93,100 ****
  ({									\
    __m512h dst;								\
    __asm__ volatile							\
!   ("{tcvtrowps2phh\t%1, %%tmm"#src", %0|tcvtrowps2phh\t%0, %%tmm"#src", %1}"	\
!    : "=v" (dst) : "r" ((unsigned) (A)));				\
    dst;									\
  })
  
--- 99,106 ----
  ({									\
    __m512h dst;								\
    __asm__ volatile							\
!   ("{tcvtrowps2phh\t%1, %%tmm%c[_src], %0|tcvtrowps2phh\t%0, tmm%c[_src], %1}"	\
!     : "=v" (dst) : "r" ((unsigned) (A)), [_src]"i"(src));		\
    dst;									\
  })
  
***************
*** 102,109 ****
  ({									\
    __m512h dst;								\
    __asm__ volatile							\
!   ("{tcvtrowps2phh\t$"#imm", %%tmm"#src", %0|tcvtrowps2phh\t%0, %%tmm"#src", "#imm"}"	\
!    : "=v" (dst) :);							\
    dst;									\
  })
  
--- 108,116 ----
  ({									\
    __m512h dst;								\
    __asm__ volatile							\
!   ("{tcvtrowps2phh\t%[_imm], %%tmm%c[_src], %0				\
!     |tcvtrowps2phh\t%0, tmm%c[_src], "#imm"}"				\
!     : "=v" (dst) : [_src]"i"(src), [_imm]"i"(imm));		      	\
    dst;									\
  })
  
***************
*** 111,118 ****
  ({									\
    __m512h dst;								\
    __asm__ volatile							\
!   ("{tcvtrowps2phl\t%1, %%tmm"#src", %0|tcvtrowps2phl\t%0, %%tmm"#src", %1}"	\
!    : "=v" (dst) : "r" ((unsigned) (A)));				\
    dst;									\
  })
  
--- 118,125 ----
  ({									\
    __m512h dst;								\
    __asm__ volatile							\
!   ("{tcvtrowps2phl\t%1, %%tmm%c[_src], %0|tcvtrowps2phl\t%0, tmm%c[_src], %1}"	\
!     : "=v" (dst) : "r" ((unsigned) (A)), [_src]"i"(src));		\
    dst;									\
  })
  
***************
*** 120,127 ****
  ({									\
    __m512h dst;								\
    __asm__ volatile							\
!   ("{tcvtrowps2phl\t$"#imm", %%tmm"#src", %0|tcvtrowps2phl\t%0, %%tmm"#src", "#imm"}"	\
!    : "=v" (dst) :);							\
    dst;									\
  })
  
--- 127,135 ----
  ({									\
    __m512h dst;								\
    __asm__ volatile							\
!   ("{tcvtrowps2phl\t%[_imm], %%tmm%c[_src], %0				\
!     |tcvtrowps2phl\t%0, tmm%c[_src], "#imm"}"				\
!     : "=v" (dst) : [_src]"i"(src), [_imm]"i"(imm));			\
    dst;									\
  })
  
***************
*** 129,136 ****
  ({									\
    __m512 dst;								\
    __asm__ volatile							\
!   ("{tilemovrow\t%1, %%tmm"#src", %0|tilemovrow\t%0, %%tmm"#src", %1}"	\
!    : "=v" (dst) : "r" ((unsigned) (A)));				\
    dst;									\
  })
  
--- 137,144 ----
  ({									\
    __m512 dst;								\
    __asm__ volatile							\
!   ("{tilemovrow\t%1, %%tmm%c[_src], %0|tilemovrow\t%0, tmm%c[_src], %1}"  \
!     : "=v" (dst) : "r" ((unsigned) (A)), [_src]"i"(src));		\
    dst;									\
  })
  
***************
*** 138,145 ****
  ({									\
    __m512 dst;								\
    __asm__ volatile							\
!   ("{tilemovrow\t$"#imm", %%tmm"#src", %0|tilemovrow\t%0, %%tmm"#src", "#imm"}"	\
!    : "=v" (dst) :);							\
    dst;									\
  })
  
--- 146,154 ----
  ({									\
    __m512 dst;								\
    __asm__ volatile							\
!   ("{tilemovrow\t%[_imm], %%tmm%c[_src], %0				\
!     |tilemovrow\t%0, tmm%c[_src], "#imm"}"				\
!     : "=v" (dst) : [_src]"i"(src), [_imm]"i"(imm));			\
    dst;									\
  })
  
diff -Nrcpad gcc-16-20251109/gcc/config/i386/amxbf16intrin.h gcc-16-20251116/gcc/config/i386/amxbf16intrin.h
*** gcc-16-20251109/gcc/config/i386/amxbf16intrin.h	Sun Nov  9 22:32:46 2025
--- gcc-16-20251116/gcc/config/i386/amxbf16intrin.h	Sun Nov 16 22:32:53 2025
***************
*** 36,43 ****
  
  #if defined(__x86_64__)
  #define _tile_dpbf16ps_internal(dst,src1,src2)					\
!   __asm__ volatile\
!   ("{tdpbf16ps\t%%tmm"#src2", %%tmm"#src1", %%tmm"#dst"|tdpbf16ps\t%%tmm"#dst", %%tmm"#src1", %%tmm"#src2"}" ::)
  
  #define _tile_dpbf16ps(dst,src1,src2)					\
    _tile_dpbf16ps_internal (dst, src1, src2)
--- 36,45 ----
  
  #if defined(__x86_64__)
  #define _tile_dpbf16ps_internal(dst,src1,src2)					\
!   __asm__ volatile								\
!   ("{tdpbf16ps\t%%tmm%c[_src2], %%tmm%c[_src1], %%tmm%c[_dst]			\
!     |tdpbf16ps\ttmm%c[_dst], tmm%c[_src1], tmm%c[_src2]}"			\
!     :: [_dst]"i"(dst), [_src1]"i"(src1), [_src2]"i"(src2))
  
  #define _tile_dpbf16ps(dst,src1,src2)					\
    _tile_dpbf16ps_internal (dst, src1, src2)
diff -Nrcpad gcc-16-20251109/gcc/config/i386/amxcomplexintrin.h gcc-16-20251116/gcc/config/i386/amxcomplexintrin.h
*** gcc-16-20251109/gcc/config/i386/amxcomplexintrin.h	Sun Nov  9 22:32:46 2025
--- gcc-16-20251116/gcc/config/i386/amxcomplexintrin.h	Sun Nov 16 22:32:53 2025
***************
*** 35,47 ****
  #endif /* __AMX_COMPLEX__ */
  
  #if defined(__x86_64__)
! #define _tile_cmmimfp16ps_internal(src1_dst,src2,src3)				\
!   __asm__ volatile\
!   ("{tcmmimfp16ps\t%%tmm"#src3", %%tmm"#src2", %%tmm"#src1_dst"|tcmmimfp16ps\t%%tmm"#src1_dst", %%tmm"#src2", %%tmm"#src3"}" ::)
  
! #define _tile_cmmrlfp16ps_internal(src1_dst,src2,src3)				\
!   __asm__ volatile\
!   ("{tcmmrlfp16ps\t%%tmm"#src3", %%tmm"#src2", %%tmm"#src1_dst"|tcmmrlfp16ps\t%%tmm"#src1_dst", %%tmm"#src2", %%tmm"#src3"}" ::)
  
  #define _tile_cmmimfp16ps(src1_dst,src2,src3)					\
    _tile_cmmimfp16ps_internal (src1_dst, src2, src3)
--- 35,51 ----
  #endif /* __AMX_COMPLEX__ */
  
  #if defined(__x86_64__)
! #define _tile_cmmimfp16ps_internal(src1_dst,src2,src3)			  \
!   __asm__ volatile							  \
!   ("{tcmmimfp16ps\t%%tmm%c[_src3], %%tmm%c[_src2], %%tmm%c[_src1_dst]	  \
!     |tcmmimfp16ps\ttmm%c[_src1_dst], tmm%c[_src2], tmm%c[_src3]}"	  \
!     :: [_src1_dst]"i"(src1_dst), [_src2]"i"(src2), [_src3]"i"(src3))
  
! #define _tile_cmmrlfp16ps_internal(src1_dst,src2,src3)			  \
!   __asm__ volatile							  \
!   ("{tcmmrlfp16ps\t%%tmm%c[_src3], %%tmm%c[_src2], %%tmm%c[_src1_dst]	  \
!     |tcmmrlfp16ps\ttmm%c[_src1_dst], tmm%c[_src2], tmm%c[_src3]}"	  \
!     :: [_src1_dst]"i"(src1_dst), [_src2]"i"(src2), [_src3]"i"(src3))
  
  #define _tile_cmmimfp16ps(src1_dst,src2,src3)					\
    _tile_cmmimfp16ps_internal (src1_dst, src2, src3)
diff -Nrcpad gcc-16-20251109/gcc/config/i386/amxfp16intrin.h gcc-16-20251116/gcc/config/i386/amxfp16intrin.h
*** gcc-16-20251109/gcc/config/i386/amxfp16intrin.h	Sun Nov  9 22:32:46 2025
--- gcc-16-20251116/gcc/config/i386/amxfp16intrin.h	Sun Nov 16 22:32:53 2025
***************
*** 29,37 ****
  #define _AMXFP16INTRIN_H_INCLUDED
  
  #if defined(__x86_64__)
! #define _tile_dpfp16ps_internal(dst,src1,src2)			\
!   __asm__ volatile \
!   ("{tdpfp16ps\t%%tmm"#src2", %%tmm"#src1", %%tmm"#dst"|tdpfp16ps\t%%tmm"#dst", %%tmm"#src1", %%tmm"#src2"}" ::)
  
  #define _tile_dpfp16ps(dst,src1,src2)				\
    _tile_dpfp16ps_internal (dst,src1,src2)
--- 29,39 ----
  #define _AMXFP16INTRIN_H_INCLUDED
  
  #if defined(__x86_64__)
! #define _tile_dpfp16ps_internal(dst,src1,src2)				\
!   __asm__ volatile							\
!   ("{tdpfp16ps\t%%tmm%c[_src2], %%tmm%c[_src1], %%tmm%c[_dst]		\
!     |tdpfp16ps\ttmm%c[_dst], tmm%c[_src1], tmm%c[_src2]}"		\
!     :: [_dst]"i"(dst), [_src1]"i"(src1), [_src2]"i"(src2))
  
  #define _tile_dpfp16ps(dst,src1,src2)				\
    _tile_dpfp16ps_internal (dst,src1,src2)
diff -Nrcpad gcc-16-20251109/gcc/config/i386/amxfp8intrin.h gcc-16-20251116/gcc/config/i386/amxfp8intrin.h
*** gcc-16-20251109/gcc/config/i386/amxfp8intrin.h	Sun Nov  9 22:32:46 2025
--- gcc-16-20251116/gcc/config/i386/amxfp8intrin.h	Sun Nov 16 22:32:53 2025
***************
*** 29,49 ****
  #define _AMXFP8INTRIN_H_INCLUDED
  
  #if defined(__x86_64__)
! #define _tile_dpbf8ps_internal(dst,src1,src2)			\
!   __asm__ volatile \
!   ("{tdpbf8ps\t%%tmm"#src2", %%tmm"#src1", %%tmm"#dst"|tdpbf8ps\t%%tmm"#dst", %%tmm"#src1", %%tmm"#src2"}" ::)
  
! #define _tile_dpbhf8ps_internal(dst,src1,src2)			\
!   __asm__ volatile \
!   ("{tdpbhf8ps\t%%tmm"#src2", %%tmm"#src1", %%tmm"#dst"|tdpbhf8ps\t%%tmm"#dst", %%tmm"#src1", %%tmm"#src2"}" ::)
  
! #define _tile_dphbf8ps_internal(dst,src1,src2)			\
!   __asm__ volatile \
!   ("{tdphbf8ps\t%%tmm"#src2", %%tmm"#src1", %%tmm"#dst"|tdphbf8ps\t%%tmm"#dst", %%tmm"#src1", %%tmm"#src2"}" ::)
  
! #define _tile_dphf8ps_internal(dst,src1,src2)			\
!   __asm__ volatile \
!   ("{tdphf8ps\t%%tmm"#src2", %%tmm"#src1", %%tmm"#dst"|tdphf8ps\t%%tmm"#dst", %%tmm"#src1", %%tmm"#src2"}" ::)
  
  #define _tile_dpbf8ps(dst,src1,src2)				\
    _tile_dpbf8ps_internal (dst,src1,src2)
--- 29,57 ----
  #define _AMXFP8INTRIN_H_INCLUDED
  
  #if defined(__x86_64__)
! #define _tile_dpbf8ps_internal(dst,src1,src2)				\
!   __asm__ volatile							\
!   ("{tdpbf8ps\t%%tmm%c[_src2], %%tmm%c[_src1], %%tmm%c[_dst]		\
!     |tdpbf8ps\ttmm%c[_dst], tmm%c[_src1], tmm%c[_src2]}"		\
!     :: [_dst]"i"(dst), [_src1]"i"(src1), [_src2]"i"(src2))
  
! #define _tile_dpbhf8ps_internal(dst,src1,src2)				\
!   __asm__ volatile							\
!   ("{tdpbhf8ps\t%%tmm%c[_src2], %%tmm%c[_src1], %%tmm%c[_dst]		\
!     |tdpbhf8ps\ttmm%c[_dst], tmm%c[_src1], tmm%c[_src2]}"		\
!     :: [_dst]"i"(dst), [_src1]"i"(src1), [_src2]"i"(src2))
  
! #define _tile_dphbf8ps_internal(dst,src1,src2)				\
!   __asm__ volatile							\
!   ("{tdphbf8ps\t%%tmm%c[_src2], %%tmm%c[_src1], %%tmm%c[_dst]		\
!     |tdphbf8ps\ttmm%c[_dst], tmm%c[_src1], tmm%c[_src2]}"		\
!     :: [_dst]"i"(dst), [_src1]"i"(src1), [_src2]"i"(src2))
  
! #define _tile_dphf8ps_internal(dst,src1,src2)				\
!   __asm__ volatile							\
!   ("{tdphf8ps\t%%tmm%c[_src2], %%tmm%c[_src1], %%tmm%c[_dst]		\
!     |tdphf8ps\ttmm%c[_dst], tmm%c[_src1], tmm%c[_src2]}"		\
!     :: [_dst]"i"(dst), [_src1]"i"(src1), [_src2]"i"(src2))
  
  #define _tile_dpbf8ps(dst,src1,src2)				\
    _tile_dpbf8ps_internal (dst,src1,src2)
diff -Nrcpad gcc-16-20251109/gcc/config/i386/amxint8intrin.h gcc-16-20251116/gcc/config/i386/amxint8intrin.h
*** gcc-16-20251109/gcc/config/i386/amxint8intrin.h	Sun Nov  9 22:32:46 2025
--- gcc-16-20251116/gcc/config/i386/amxint8intrin.h	Sun Nov 16 22:32:53 2025
***************
*** 37,43 ****
  #if defined(__x86_64__)
  #define _tile_int8_dp_internal(name,dst,src1,src2)					\
    __asm__ volatile							\
!   ("{"#name"\t%%tmm"#src2", %%tmm"#src1", %%tmm"#dst"|"#name"\t%%tmm"#dst", %%tmm"#src1", %%tmm"#src2"}" ::)
  
  #define _tile_dpbssd(dst,src1,src2)					\
    _tile_int8_dp_internal (tdpbssd, dst, src1, src2)
--- 37,45 ----
  #if defined(__x86_64__)
  #define _tile_int8_dp_internal(name,dst,src1,src2)					\
    __asm__ volatile							\
!   ("{"#name"\t%%tmm%c[_src2], %%tmm%c[_src1], %%tmm%c[_dst]		\
!    |"#name"\ttmm%c[_dst], tmm%c[_src1], tmm%c[_src2]}"		\
!    ::[_dst]"i"(dst),[_src1]"i"(src1),[_src2]"i"(src2))
  
  #define _tile_dpbssd(dst,src1,src2)					\
    _tile_int8_dp_internal (tdpbssd, dst, src1, src2)
diff -Nrcpad gcc-16-20251109/gcc/config/i386/amxmovrsintrin.h gcc-16-20251116/gcc/config/i386/amxmovrsintrin.h
*** gcc-16-20251109/gcc/config/i386/amxmovrsintrin.h	Sun Nov  9 22:32:46 2025
--- gcc-16-20251116/gcc/config/i386/amxmovrsintrin.h	Sun Nov 16 22:32:53 2025
***************
*** 36,52 ****
  #define __DISABLE_AMX_MOVRS__
  #endif /* __AMX_MOVRS__ */
  
! #define _tile_loaddrs_internal(tdst, base, stride)	  \
! __asm__ volatile					  \
!   ("{tileloaddrs\t(%0,%1,1), %%tmm"#tdst		  \
!      "|tileloaddrs\t%%tmm"#tdst", [%0+%1*1]}"		  \
!    :: "r" ((const void*) (base)), "r" ((__PTRDIFF_TYPE__) (stride)))
  
! #define _tile_loaddrst1_internal(tdst, base, stride)	  \
! __asm__ volatile					  \
!   ("{tileloaddrst1\t(%0,%1,1), %%tmm"#tdst		  \
!      "|tileloaddrst1\t%%tmm"#tdst", [%0+%1*1]}"		  \
!    :: "r" ((const void*) (base)), "r" ((__PTRDIFF_TYPE__) (stride)))
  
  #define _tile_loaddrs(tdst, base, stride)		  \
    _tile_loaddrs_internal(tdst, base, stride)
--- 36,52 ----
  #define __DISABLE_AMX_MOVRS__
  #endif /* __AMX_MOVRS__ */
  
! #define _tile_loaddrs_internal(tdst, base, stride)			\
! __asm__ volatile							\
!   ("{tileloaddrs\t(%0,%1,1), %%tmm%c[_tdst]				\
!     |tileloaddrs\ttmm%c[_tdst], [%0+%1*1]}"				\
!     :: "r" ((const void*) (base)), "r" ((__PTRDIFF_TYPE__) (stride)), [_tdst]"i"(tdst))
  
! #define _tile_loaddrst1_internal(tdst, base, stride)			\
! __asm__ volatile							\
!   ("{tileloaddrst1\t(%0,%1,1), %%tmm%c[_tdst]				\
!     |tileloaddrst1\ttmm%c[_tdst], [%0+%1*1]}"				\
!     :: "r" ((const void*) (base)), "r" ((__PTRDIFF_TYPE__) (stride)), [_tdst]"i"(tdst))
  
  #define _tile_loaddrs(tdst, base, stride)		  \
    _tile_loaddrs_internal(tdst, base, stride)
diff -Nrcpad gcc-16-20251109/gcc/config/i386/amxtf32intrin.h gcc-16-20251116/gcc/config/i386/amxtf32intrin.h
*** gcc-16-20251109/gcc/config/i386/amxtf32intrin.h	Sun Nov  9 22:32:46 2025
--- gcc-16-20251116/gcc/config/i386/amxtf32intrin.h	Sun Nov 16 22:32:53 2025
***************
*** 31,38 ****
  
  #if defined(__x86_64__)
  #define _tile_mmultf32ps_internal(src1_dst,src2,src3)			\
!   __asm__ volatile\
!   ("{tmmultf32ps\t%%tmm"#src3", %%tmm"#src2", %%tmm"#src1_dst"|tmmultf32ps\t%%tmm"#src1_dst", %%tmm"#src2", %%tmm"#src3"}" ::)
  
  #define _tile_mmultf32ps(src1_dst,src2,src3)				\
    _tile_mmultf32ps_internal (src1_dst, src2, src3)
--- 31,40 ----
  
  #if defined(__x86_64__)
  #define _tile_mmultf32ps_internal(src1_dst,src2,src3)			\
!   __asm__ volatile						    	\
!   ("{tmmultf32ps\t%%tmm%c[_src3], %%tmm%c[_src2], %%tmm%c[_src1_dst]	\
!     |tmmultf32ps\ttmm%c[_src1_dst], tmm%c[_src2], tmm%c[_src3]}"	\
!     :: [_src1_dst]"i"(src1_dst), [_src2]"i"(src2), [_src3]"i"(src3))
  
  #define _tile_mmultf32ps(src1_dst,src2,src3)				\
    _tile_mmultf32ps_internal (src1_dst, src2, src3)
diff -Nrcpad gcc-16-20251109/gcc/config/i386/amxtileintrin.h gcc-16-20251116/gcc/config/i386/amxtileintrin.h
*** gcc-16-20251109/gcc/config/i386/amxtileintrin.h	Sun Nov  9 22:32:46 2025
--- gcc-16-20251116/gcc/config/i386/amxtileintrin.h	Sun Nov 16 22:32:53 2025
*************** _tile_release (void)
*** 61,92 ****
  
  #define _tile_loadd_internal(dst,base,stride)				\
    __asm__ volatile							\
!   ("{tileloadd\t(%0,%1,1), %%tmm"#dst"|tileloadd\t%%tmm"#dst", [%0+%1*1]}" \
!    :: "r" ((const void*) (base)), "r" ((__PTRDIFF_TYPE__) (stride)))
  
  #define _tile_stream_loadd(dst,base,stride)		\
    _tile_stream_loadd_internal (dst, base, stride)
  
  #define _tile_stream_loadd_internal(dst,base,stride)			\
    __asm__ volatile							\
!   ("{tileloaddt1\t(%0,%1,1), %%tmm"#dst"|tileloaddt1\t%%tmm"#dst", [%0+%1*1]}" \
!    :: "r" ((const void*) (base)), "r" ((__PTRDIFF_TYPE__) (stride)))
  
  #define _tile_stored(dst,base,stride)		\
    _tile_stored_internal (dst, base, stride)
  
  #define _tile_stored_internal(src,base,stride)				\
    __asm__ volatile							\
!   ("{tilestored\t%%tmm"#src", (%0,%1,1)|tilestored\t[%0+%1*1], %%tmm"#src"}" \
!    :: "r" ((void*) (base)), "r" ((__PTRDIFF_TYPE__) (stride)) \
!    : "memory")
  
  #define _tile_zero(dst)				\
    _tile_zero_internal (dst)
  
! #define _tile_zero_internal(dst)		\
!   __asm__ volatile				\
!   ("tilezero\t%%tmm"#dst ::)
  
  #endif
  
--- 61,92 ----
  
  #define _tile_loadd_internal(dst,base,stride)				\
    __asm__ volatile							\
!   ("{tileloadd\t(%0,%1,1), %%tmm%c[_dst]|tileloadd\ttmm%c[_dst], [%0+%1*1]}" \
!   :: "r" ((const void*) (base)), "r" ((__PTRDIFF_TYPE__) (stride)), [_dst]"i"(dst))
  
  #define _tile_stream_loadd(dst,base,stride)		\
    _tile_stream_loadd_internal (dst, base, stride)
  
  #define _tile_stream_loadd_internal(dst,base,stride)			\
    __asm__ volatile							\
!   ("{tileloaddt1\t(%0,%1,1), %%tmm%c[_dst]|tileloaddt1\ttmm%c[_dst], [%0+%1*1]}" \
!   :: "r" ((const void*) (base)), "r" ((__PTRDIFF_TYPE__) (stride)), [_dst]"i"(dst))
  
  #define _tile_stored(dst,base,stride)		\
    _tile_stored_internal (dst, base, stride)
  
  #define _tile_stored_internal(src,base,stride)				\
    __asm__ volatile							\
!   ("{tilestored\t%%tmm%c[_src], (%0,%1,1)|tilestored\t[%0+%1*1], tmm%c[_src]}" \
!   :: "r" ((void*) (base)), "r" ((__PTRDIFF_TYPE__) (stride)), [_src]"i"(src) \
!   : "memory")
  
  #define _tile_zero(dst)				\
    _tile_zero_internal (dst)
  
! #define _tile_zero_internal(dst)					\
!   __asm__ volatile							\
!   ("{tilezero\t%%tmm%c[_dst]|tilezero\ttmm%c[_dst]}" :: [_dst]"i"(dst))
  
  #endif
  
diff -Nrcpad gcc-16-20251109/gcc/config/i386/i386-features.cc gcc-16-20251116/gcc/config/i386/i386-features.cc
*** gcc-16-20251109/gcc/config/i386/i386-features.cc	Sun Nov  9 22:32:46 2025
--- gcc-16-20251116/gcc/config/i386/i386-features.cc	Sun Nov 16 22:32:53 2025
*************** pass_x86_cse::x86_cse (void)
*** 4810,4815 ****
--- 4810,4818 ----
        df_process_deferred_rescans ();
      }
  
+   FOR_EACH_VEC_ELT (loads, i, load)
+     delete load;
+ 
    df_clear_flags (DF_DEFER_INSN_RESCAN);
  
    timevar_pop (TV_MACH_DEP);
diff -Nrcpad gcc-16-20251109/gcc/config/i386/i386.md gcc-16-20251116/gcc/config/i386/i386.md
*** gcc-16-20251109/gcc/config/i386/i386.md	Sun Nov  9 22:32:46 2025
--- gcc-16-20251116/gcc/config/i386/i386.md	Sun Nov 16 22:32:53 2025
***************
*** 8642,8648 ****
    [(set (reg FLAGS_REG)
  	(compare (match_operand:SWI 1 "nonimmediate_operand" "0,0,rm,r")
  		 (match_operand:SWI 2 "<general_operand>" "<r><i>,<m>,r<i>,<m>")))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,<r>i,r,r")
  	(minus:SWI (match_dup 1) (match_dup 2)))]
    "ix86_match_ccmode (insn, CCmode)
     && ix86_binary_operator_ok (MINUS, <MODE>mode, operands, TARGET_APX_NDD)"
--- 8642,8648 ----
    [(set (reg FLAGS_REG)
  	(compare (match_operand:SWI 1 "nonimmediate_operand" "0,0,rm,r")
  		 (match_operand:SWI 2 "<general_operand>" "<r><i>,<m>,r<i>,<m>")))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,<r>,r,r")
  	(minus:SWI (match_dup 1) (match_dup 2)))]
    "ix86_match_ccmode (insn, CCmode)
     && ix86_binary_operator_ok (MINUS, <MODE>mode, operands, TARGET_APX_NDD)"
***************
*** 14203,14208 ****
--- 14203,14224 ----
     (set_attr "isa" "*,apx_ndd")
     (set_attr "mode" "SI")])
  
+ ;; It must be put before *<code><mode>_3, the blow one.
+ (define_insn "*ior<mode>_ccz_1"
+   [(set (reg:CCZ FLAGS_REG)
+ 	(compare:CCZ
+ 	 (ior:SWI1248_AVX512BWDQ_64
+ 	  (match_operand:SWI1248_AVX512BWDQ_64 1 "nonimmediate_operand" "%0,?k")
+ 	  (match_operand:SWI1248_AVX512BWDQ_64 2 "<general_operand>" "<g>, k"))
+ 	 (const_int 0)))
+    (clobber (match_scratch:SWI1248_AVX512BWDQ_64 0 "=<r>, X"))]
+   "TARGET_AVX512F && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
+   "@
+    or{<imodesuffix>}\t{%2, %0|%0, %2}
+    kortest<mskmodesuffix>\t{%1, %2|%2, %1}"
+   [(set_attr "type" "alu,msklog")
+    (set_attr "mode" "<MODE>")])
+ 
  (define_insn "*<code><mode>_3"
    [(set (reg FLAGS_REG)
  	(compare (any_or:SWI
diff -Nrcpad gcc-16-20251109/gcc/config/i386/i386.opt.urls gcc-16-20251116/gcc/config/i386/i386.opt.urls
*** gcc-16-20251109/gcc/config/i386/i386.opt.urls	Sun Nov  9 22:32:46 2025
--- gcc-16-20251116/gcc/config/i386/i386.opt.urls	Sun Nov 16 22:32:53 2025
*************** mpku
*** 438,444 ****
  UrlSuffix(gcc/x86-Options.html#index-mpku)
  
  mstack-protector-guard=
! UrlSuffix(gcc/x86-Options.html#index-mstack-protector-guard-4)
  
  mstack-protector-guard-reg=
  UrlSuffix(gcc/x86-Options.html#index-mstack-protector-guard-reg-3)
--- 438,444 ----
  UrlSuffix(gcc/x86-Options.html#index-mpku)
  
  mstack-protector-guard=
! UrlSuffix(gcc/x86-Options.html#index-mstack-protector-guard-5)
  
  mstack-protector-guard-reg=
  UrlSuffix(gcc/x86-Options.html#index-mstack-protector-guard-reg-3)
diff -Nrcpad gcc-16-20251109/gcc/config/i386/sol2.h gcc-16-20251116/gcc/config/i386/sol2.h
*** gcc-16-20251109/gcc/config/i386/sol2.h	Sun Nov  9 22:32:46 2025
--- gcc-16-20251116/gcc/config/i386/sol2.h	Sun Nov 16 22:32:53 2025
*************** along with GCC; see the file COPYING3.
*** 91,105 ****
  #define ARCH64_SUBDIR "amd64"
  
  #ifdef USE_GLD
- /* Since binutils 2.21, GNU ld supports new *_sol2 emulations to strictly
-    follow the Solaris 2 ABI.  Prefer them if present.  */
- #ifdef HAVE_LD_SOL2_EMULATION
  #define ARCH32_EMULATION "elf_i386_sol2"
  #define ARCH64_EMULATION "elf_x86_64_sol2"
- #else
- #define ARCH32_EMULATION "elf_i386"
- #define ARCH64_EMULATION "elf_x86_64"
- #endif
  #endif
  
  #define ENDFILE_ARCH_SPEC \
--- 91,98 ----
diff -Nrcpad gcc-16-20251109/gcc/config/loongarch/genopts/gen-evolution.awk gcc-16-20251116/gcc/config/loongarch/genopts/gen-evolution.awk
*** gcc-16-20251109/gcc/config/loongarch/genopts/gen-evolution.awk	Sun Nov  9 22:32:46 2025
--- gcc-16-20251116/gcc/config/loongarch/genopts/gen-evolution.awk	Sun Nov 16 22:32:54 2025
*************** BEGIN {
*** 34,39 ****
--- 34,40 ----
      cpucfg_word[NR] = $1
      cpucfg_bit_in_word[NR] = $2
      name[NR] = $3
+     orig_name[NR] = $3
      gsub("-", "_", name[NR])
      name_capitalized[NR] = toupper(name[NR])
      split($4, isa_ver, "\\.")
*************** BEGIN {
*** 47,54 ****
  
  function copyright_header(from_year,to_year)
  {
!     print "   Copyright (C) " from_year "-" to_year \
!           " Free Software Foundation, Inc."
      print ""
      print "This file is part of GCC."
      print ""
--- 48,59 ----
  
  function copyright_header(from_year,to_year)
  {
!     if (to_year == "")
!       print "   Copyright (C) " from_year \
! 	    " Free Software Foundation, Inc."
!     else
!       print "   Copyright (C) " from_year "-" to_year \
! 	    " Free Software Foundation, Inc."
      print ""
      print "This file is part of GCC."
      print ""
*************** function gen_full_source()
*** 233,241 ****
      print "};"
  }
  
  END {
!     if (header_p)
          gen_full_header()
!     else
          gen_full_source()
  }
--- 238,270 ----
      print "};"
  }
  
+ function gen_full_def()
+ {
+     print "/* Generated automatically by \"genstr\" from \"isa-evolution.in\"."
+     print "   Please do not edit this file directly."
+     print ""
+ 
+     copyright_header(2025)
+ 
+     print "*/"
+     print ""
+ 
+     print "#ifndef LARCH_ATTR_BOOL"
+     print "#define LARCH_ATTR_BOOL"
+     print "#endif"
+     print ""
+     for (i = 1; i <= NR; i++)
+     printf ("  LARCH_ATTR_BOOL (\"%s\", OPT_m%s, OPTION_MASK_ISA_%s, FEAT_%s," \
+ 	    " ARCH_LA64V%d_%d, LA_PRIO_%s)\n",
+             orig_name[i], name[i], name_capitalized[i], name_capitalized[i],
+ 	    isa_version_major[i], isa_version_minor[i], name_capitalized[i])
+ }
+ 
  END {
!     if (header_p == 1)
          gen_full_header()
!     else if (header_p == 0)
          gen_full_source()
+     else if (header_p == 2)
+ 	gen_full_def()
  }
diff -Nrcpad gcc-16-20251109/gcc/config/loongarch/genopts/genstr.sh gcc-16-20251116/gcc/config/loongarch/genopts/genstr.sh
*** gcc-16-20251109/gcc/config/loongarch/genopts/genstr.sh	Sun Nov  9 22:32:46 2025
--- gcc-16-20251116/gcc/config/loongarch/genopts/genstr.sh	Sun Nov 16 22:32:54 2025
*************** main() {
*** 125,130 ****
--- 125,133 ----
  	evolution_c)
              awk -v header_p=0 -f gen-evolution.awk isa-evolution.in
              ;;
+ 	evolution_def)
+             awk -v header_p=2 -f gen-evolution.awk isa-evolution.in
+             ;;
  	header)
              gen_defines
              ;;
diff -Nrcpad gcc-16-20251109/gcc/config/loongarch/lasx.md gcc-16-20251116/gcc/config/loongarch/lasx.md
*** gcc-16-20251109/gcc/config/loongarch/lasx.md	Sun Nov  9 22:32:46 2025
--- gcc-16-20251116/gcc/config/loongarch/lasx.md	Sun Nov 16 22:32:54 2025
***************
*** 2702,2707 ****
--- 2702,2717 ----
    [(set_attr "type" "simd_shift")
     (set_attr "mode" "<MODE>")])
  
+ (define_insn "lasx_xvbsrl_d_f"
+   [(set (match_operand:V4DF 0 "register_operand" "=f")
+ 	(unspec:V4DF [(match_operand:V4DF 1 "register_operand" "f")
+ 		      (match_operand 2 "const_uimm5_operand" "")]
+ 		      UNSPEC_LASX_XVBSRL_V))]
+   "ISA_HAS_LASX"
+   "xvbsrl.v\t%u0,%u1,%2"
+   [(set_attr "type" "simd_shift")
+    (set_attr "mode" "V4DF")])
+ 
  (define_insn "lasx_xvbsll_<lasxfmt>"
    [(set (match_operand:ILASX 0 "register_operand" "=f")
  	(unspec:ILASX [(match_operand:ILASX 1 "register_operand" "f")
diff -Nrcpad gcc-16-20251109/gcc/config/loongarch/linux.h gcc-16-20251116/gcc/config/loongarch/linux.h
*** gcc-16-20251109/gcc/config/loongarch/linux.h	Sun Nov  9 22:32:46 2025
--- gcc-16-20251116/gcc/config/loongarch/linux.h	Sun Nov 16 22:32:54 2025
*************** along with GCC; see the file COPYING3.
*** 53,55 ****
--- 53,59 ----
  
  /* The stack pointer needs to be moved while checking the stack.  */
  #define STACK_CHECK_MOVING_SP 1
+ 
+ /* Depend on glibc because the libatomic ifunc resolver needs glibc
+    ifunc resolver interface.  */
+ #define HAVE_IFUNC_FOR_LIBATOMIC_16B (HAVE_AS_16B_ATOMIC && OPTION_GLIBC)
diff -Nrcpad gcc-16-20251109/gcc/config/loongarch/loongarch-builtins.cc gcc-16-20251116/gcc/config/loongarch/loongarch-builtins.cc
*** gcc-16-20251109/gcc/config/loongarch/loongarch-builtins.cc	Sun Nov  9 22:32:46 2025
--- gcc-16-20251116/gcc/config/loongarch/loongarch-builtins.cc	Sun Nov 16 22:32:54 2025
*************** loongarch_build_builtin_va_list (void)
*** 3259,3261 ****
--- 3259,3263 ----
  {
    return ptr_type_node;
  }
+ 
+ #include "gt-loongarch-builtins.h"
diff -Nrcpad gcc-16-20251109/gcc/config/loongarch/loongarch-evol-attr.def gcc-16-20251116/gcc/config/loongarch/loongarch-evol-attr.def
*** gcc-16-20251109/gcc/config/loongarch/loongarch-evol-attr.def	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/config/loongarch/loongarch-evol-attr.def	Sun Nov 16 22:32:54 2025
***************
*** 0 ****
--- 1,32 ----
+ /* Generated automatically by "genstr" from "isa-evolution.in".
+    Please do not edit this file directly.
+ 
+    Copyright (C) 2025 Free Software Foundation, Inc.
+ 
+ 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 LARCH_ATTR_BOOL
+ #define LARCH_ATTR_BOOL
+ #endif
+ 
+   LARCH_ATTR_BOOL ("frecipe", OPT_mfrecipe, OPTION_MASK_ISA_FRECIPE, FEAT_FRECIPE, ARCH_LA64V1_1, LA_PRIO_FRECIPE)
+   LARCH_ATTR_BOOL ("div32", OPT_mdiv32, OPTION_MASK_ISA_DIV32, FEAT_DIV32, ARCH_LA64V1_1, LA_PRIO_DIV32)
+   LARCH_ATTR_BOOL ("lam-bh", OPT_mlam_bh, OPTION_MASK_ISA_LAM_BH, FEAT_LAM_BH, ARCH_LA64V1_1, LA_PRIO_LAM_BH)
+   LARCH_ATTR_BOOL ("lamcas", OPT_mlamcas, OPTION_MASK_ISA_LAMCAS, FEAT_LAMCAS, ARCH_LA64V1_1, LA_PRIO_LAMCAS)
+   LARCH_ATTR_BOOL ("scq", OPT_mscq, OPTION_MASK_ISA_SCQ, FEAT_SCQ, ARCH_LA64V1_1, LA_PRIO_SCQ)
+   LARCH_ATTR_BOOL ("ld-seq-sa", OPT_mld_seq_sa, OPTION_MASK_ISA_LD_SEQ_SA, FEAT_LD_SEQ_SA, ARCH_LA64V1_1, LA_PRIO_LD_SEQ_SA)
diff -Nrcpad gcc-16-20251109/gcc/config/loongarch/loongarch-opts.h gcc-16-20251116/gcc/config/loongarch/loongarch-opts.h
*** gcc-16-20251109/gcc/config/loongarch/loongarch-opts.h	Sun Nov  9 22:32:46 2025
--- gcc-16-20251116/gcc/config/loongarch/loongarch-opts.h	Sun Nov 16 22:32:54 2025
*************** struct loongarch_flags {
*** 147,150 ****
--- 147,154 ----
  #define HAVE_AS_TLS_LE_RELAXATION 0
  #endif
  
+ #ifndef HAVE_AS_16B_ATOMIC
+ #define HAVE_AS_16B_ATOMIC 0
+ #endif
+ 
  #endif /* LOONGARCH_OPTS_H */
diff -Nrcpad gcc-16-20251109/gcc/config/loongarch/loongarch-protos.h gcc-16-20251116/gcc/config/loongarch/loongarch-protos.h
*** gcc-16-20251109/gcc/config/loongarch/loongarch-protos.h	Sun Nov  9 22:32:46 2025
--- gcc-16-20251116/gcc/config/loongarch/loongarch-protos.h	Sun Nov 16 22:32:54 2025
*************** along with GCC; see the file COPYING3.
*** 22,27 ****
--- 22,29 ----
  #ifndef GCC_LOONGARCH_PROTOS_H
  #define GCC_LOONGARCH_PROTOS_H
  
+ #include "common/config/loongarch/cpu-features.h"
+ 
  /* Classifies a SYMBOL_REF, LABEL_REF or UNSPEC address.
  
     SYMBOL_GOT_DISP
*************** extern void loongarch_expand_vec_cond_ma
*** 201,206 ****
--- 203,209 ----
  						 rtx *);
  extern void loongarch_expand_vec_widen_hilo (rtx, rtx, rtx, bool,
  	rtx (*)(rtx, rtx, rtx), rtx (*)(rtx, rtx, rtx));
+ extern bool loongarch_16b_atomic_lock_free_p (void);
  
  /* Routines implemented in loongarch-c.c.  */
  void loongarch_cpu_cpp_builtins (cpp_reader *);
*************** extern void loongarch_register_pragmas (
*** 227,230 ****
--- 230,238 ----
  extern bool loongarch_process_target_attr (tree args, tree fndecl);
  extern rtx loongarch_gen_stepped_int_parallel (unsigned int nelts, int base,
  					       int step);
+ extern bool loongarch_parse_fmv_features (tree, string_slice, loongarch_fmv_feature_mask *,
+ 					  auto_vec<unsigned int> *);
+ extern void get_feature_mask_for_version (tree, loongarch_fmv_feature_mask *,
+ 					  auto_vec<unsigned int> *);
+ extern int loongarch_compare_version_priority (tree, tree);
  #endif /* ! GCC_LOONGARCH_PROTOS_H */
diff -Nrcpad gcc-16-20251109/gcc/config/loongarch/loongarch-target-attr.cc gcc-16-20251116/gcc/config/loongarch/loongarch-target-attr.cc
*** gcc-16-20251109/gcc/config/loongarch/loongarch-target-attr.cc	Sun Nov  9 22:32:46 2025
--- gcc-16-20251116/gcc/config/loongarch/loongarch-target-attr.cc	Sun Nov 16 22:32:54 2025
*************** along with GCC; see the file COPYING3.
*** 21,26 ****
--- 21,27 ----
  
  #define IN_TARGET_CODE 1
  
+ #define INCLUDE_STRING
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
*************** enum loongarch_attr_opt_type
*** 40,45 ****
--- 41,72 ----
    loongarch_attr_bool	/* Attribute sets or unsets a boolean variable.  */
  };
  
+ /* Describes the priority of each feature.  The larger the value, the higher
+    the priority.  The priority setting rule is vector priority.
+ 
+    The highest priority currently is "-mlasx".
+    The second highest is "-march=la64v1.1" (lsx and la64v1.1 enabled
+    instructions).
+    The third highest is "-mlsx".
+  */
+ enum features_prio
+ {
+   LA_PRIO_NONE = 0,
+   LA_PRIO_LOONGARCH64,
+   LA_PRIO_STRICT_ALIGN,
+   LA_PRIO_FRECIPE,
+   LA_PRIO_DIV32 = LA_PRIO_FRECIPE,
+   LA_PRIO_LAM_BH = LA_PRIO_FRECIPE,
+   LA_PRIO_LAMCAS = LA_PRIO_FRECIPE,
+   LA_PRIO_SCQ = LA_PRIO_FRECIPE,
+   LA_PRIO_LD_SEQ_SA = LA_PRIO_FRECIPE,
+   LA_PRIO_LSX,
+   LA_PRIO_LA64V1_0,
+   LA_PRIO_LA64V1_1,
+   LA_PRIO_LASX,
+   LA_PRIO_MAX
+ };
+ 
  /* All the information needed to handle a target attribute.
     NAME is the name of the attribute.
     ATTR_TYPE specifies the type of behavior of the attribute as described
*************** enum loongarch_attr_opt_type
*** 52,79 ****
  struct loongarch_attribute_info
  {
    const char *name;
    enum loongarch_attr_opt_type attr_type;
-   bool allow_neg;
    enum opt_code opt_num;
  };
  /* The target attributes that we support.  */
  
  static const struct loongarch_attribute_info loongarch_attributes[] =
  {
!   { "strict-align", loongarch_attr_mask, true, OPT_mstrict_align },
!   { "cmodel", loongarch_attr_enum, false, OPT_mcmodel_ },
!   { "arch", loongarch_attr_enum, false, OPT_march_ },
!   { "tune", loongarch_attr_enum, false, OPT_mtune_ },
!   { "lsx", loongarch_attr_bool, true, OPT_mlsx },
!   { "lasx", loongarch_attr_bool, true, OPT_mlasx },
!   { NULL, loongarch_attr_bool, false, OPT____ }
  };
  
! bool
  loongarch_handle_option (struct gcc_options *opts,
  			 struct gcc_options *opts_set ATTRIBUTE_UNUSED,
  			 const struct cl_decoded_option *decoded,
! 			 location_t loc ATTRIBUTE_UNUSED)
  {
    size_t code = decoded->opt_index;
    int val = decoded->value;
--- 79,143 ----
  struct loongarch_attribute_info
  {
    const char *name;
+   unsigned int opt_mask;
    enum loongarch_attr_opt_type attr_type;
    enum opt_code opt_num;
+   bool allow_neg;
+   const loongarch_fmv_feature_mask feat_mask;
+   const unsigned int arch_ver;
+   enum features_prio priority;
  };
+ 
+ /* Construct a loongarch_attributes from the given arguments.
+ 
+    OPTS is the name of the compilation option after the "-m" string.
+ 
+    OPTNUM is the opt_code corresponding to the compilation option.
+ 
+    OPTMASK is the mask corresponding to the mutation option.  If the
+    compilation option does not have a corresponding mask, pass 0.
+  */
+ #define LARCH_ATTR_MASK(OPTS, OPTNUM, OPTMASK, FEATMASK, PRIO)		      \
+ {									      \
+   OPTS, OPTMASK, loongarch_attr_mask, OPTNUM, true, 1ULL << FEATMASK,	      \
+   N_ARCH_TYPES,	PRIO							      \
+ },
+ 
+ #define LARCH_ATTR_ENUM(OPTS, OPTNUM, PRIO)				      \
+ {									      \
+   OPTS, 0, loongarch_attr_enum, OPTNUM, false, 0, N_ARCH_TYPES, PRIO	      \
+ },
+ 
+ #define LARCH_ATTR_BOOL(OPTS, OPTNUM, OPTMASK, FEATMASK, ARCH_V, PRIO)	      \
+ {									      \
+   OPTS, OPTMASK, loongarch_attr_bool, OPTNUM, true, 1ULL << FEATMASK, ARCH_V, \
+   PRIO									      \
+ },
+ 
  /* The target attributes that we support.  */
  
  static const struct loongarch_attribute_info loongarch_attributes[] =
  {
!   LARCH_ATTR_MASK ("strict-align", OPT_mstrict_align, MASK_STRICT_ALIGN,
! 		   FEAT_UAL, LA_PRIO_STRICT_ALIGN)
!   LARCH_ATTR_ENUM ("cmodel", OPT_mcmodel_, LA_PRIO_NONE)
!   LARCH_ATTR_ENUM ("arch", OPT_march_, LA_PRIO_NONE)
!   LARCH_ATTR_ENUM ("tune", OPT_mtune_, LA_PRIO_NONE)
!   LARCH_ATTR_BOOL ("lsx", OPT_mlsx, 0, FEAT_LSX, ARCH_LA64V1_0, LA_PRIO_LSX)
!   LARCH_ATTR_BOOL ("lasx", OPT_mlasx, 0, FEAT_LASX | FEAT_LSX, 0, LA_PRIO_LASX)
! #include "loongarch-evol-attr.def"
!   { NULL, 0, loongarch_attr_bool, OPT____, false, 0, N_ARCH_TYPES, LA_PRIO_NONE }
  };
+ #undef LARCH_ATTR_MASK
+ #undef LARCH_ATTR_ENUM
+ #undef LARCH_ATTR_BOOL
  
! static void
  loongarch_handle_option (struct gcc_options *opts,
  			 struct gcc_options *opts_set ATTRIBUTE_UNUSED,
  			 const struct cl_decoded_option *decoded,
! 			 location_t loc ATTRIBUTE_UNUSED,
! 			 unsigned int opt_mask ATTRIBUTE_UNUSED)
  {
    size_t code = decoded->opt_index;
    int val = decoded->value;
*************** loongarch_handle_option (struct gcc_opti
*** 82,95 ****
      {
      case OPT_mstrict_align:
        if (val)
! 	opts->x_target_flags |= MASK_STRICT_ALIGN;
        else
! 	opts->x_target_flags &= ~MASK_STRICT_ALIGN;
!       return true;
  
      case OPT_mcmodel_:
        opts->x_la_opt_cmodel = val;
!       return true;
  
      case OPT_march_:
        opts->x_la_opt_cpu_arch = val;
--- 146,159 ----
      {
      case OPT_mstrict_align:
        if (val)
! 	opts->x_target_flags |= opt_mask;
        else
! 	opts->x_target_flags &= ~opt_mask;
!       break;
  
      case OPT_mcmodel_:
        opts->x_la_opt_cmodel = val;
!       break;
  
      case OPT_march_:
        opts->x_la_opt_cpu_arch = val;
*************** loongarch_handle_option (struct gcc_opti
*** 100,106 ****
        opts->x_la_opt_simd = M_OPT_UNSET;
        opts->x_la_opt_fpu = M_OPT_UNSET;
        opts->x_la_isa_evolution = 0;
!       return true;
  
      case OPT_mtune_:
        opts->x_la_opt_cpu_tune = val;
--- 164,170 ----
        opts->x_la_opt_simd = M_OPT_UNSET;
        opts->x_la_opt_fpu = M_OPT_UNSET;
        opts->x_la_isa_evolution = 0;
!       break;
  
      case OPT_mtune_:
        opts->x_la_opt_cpu_tune = val;
*************** loongarch_handle_option (struct gcc_opti
*** 111,131 ****
        opts->x_str_align_functions = NULL;
        opts->x_str_align_loops = NULL;
        opts->x_str_align_jumps = NULL;
!       return true;
! 
!     case OPT_mlsx:
!       opts->x_la_opt_simd = val ? (la_opt_simd == ISA_EXT_SIMD_LASX
! 	? ISA_EXT_SIMD_LASX : ISA_EXT_SIMD_LSX) : ISA_EXT_NONE;
!       return true;
! 
!     case OPT_mlasx:
!       opts->x_la_opt_simd = val ? ISA_EXT_SIMD_LASX
! 	: (la_opt_simd == ISA_EXT_SIMD_LASX || la_opt_simd == ISA_EXT_SIMD_LSX
! 	   ? ISA_EXT_SIMD_LSX : ISA_EXT_NONE);
!       return true;
  
      default:
!       return true;
      }
  }
  
--- 175,184 ----
        opts->x_str_align_functions = NULL;
        opts->x_str_align_loops = NULL;
        opts->x_str_align_jumps = NULL;
!       break;
  
      default:
!       gcc_unreachable ();
      }
  }
  
*************** loongarch_process_one_target_attr (char
*** 147,153 ****
  
    char *str_to_check = (char *) alloca (len + 1);
    strcpy (str_to_check, arg_str);
- 
    if (len > 3 && startswith (str_to_check, "no-"))
      {
        invert = true;
--- 200,205 ----
*************** loongarch_process_one_target_attr (char
*** 196,209 ****
  	      decoded.value = !invert;
  
  	      loongarch_handle_option (&global_options, &global_options_set,
! 				       &decoded, input_location);
  	      break;
  	    }
  
  	  /* Use the option setting machinery to set an option to an enum.  */
  	  case loongarch_attr_enum:
  	    {
! 	      gcc_assert (arg);
  	      bool valid;
  	      int value;
  	      struct cl_decoded_option decoded;
--- 248,268 ----
  	      decoded.value = !invert;
  
  	      loongarch_handle_option (&global_options, &global_options_set,
! 				       &decoded, input_location,
! 				       p_attr->opt_mask);
  	      break;
  	    }
  
  	  /* Use the option setting machinery to set an option to an enum.  */
  	  case loongarch_attr_enum:
  	    {
! 	      if (!arg)
! 		{
! 		  error_at (loc, "the value of pragma or attribute "
! 			    "%<target(\"%s\")%> not be empty", str_to_check);
! 		  return false;
! 		}
! 
  	      bool valid;
  	      int value;
  	      struct cl_decoded_option decoded;
*************** loongarch_process_one_target_attr (char
*** 216,222 ****
  	      if (valid)
  		loongarch_handle_option (&global_options,
  					 &global_options_set,
! 					 &decoded, input_location);
  	      else
  		error_at (loc, "pragma or attribute %<target(\"%s=%s\")%> is "
  			  "not valid", str_to_check, arg);
--- 275,282 ----
  	      if (valid)
  		loongarch_handle_option (&global_options,
  					 &global_options_set,
! 					 &decoded, input_location,
! 					 p_attr->opt_mask);
  	      else
  		error_at (loc, "pragma or attribute %<target(\"%s=%s\")%> is "
  			  "not valid", str_to_check, arg);
*************** loongarch_process_one_target_attr (char
*** 230,237 ****
  
  	      generate_option (p_attr->opt_num, NULL, !invert,
  			       CL_TARGET, &decoded);
! 	      loongarch_handle_option (&global_options, &global_options_set,
! 				       &decoded, input_location);
  	      break;
  	    }
  	default:
--- 290,323 ----
  
  	      generate_option (p_attr->opt_num, NULL, !invert,
  			       CL_TARGET, &decoded);
! 	      switch (decoded.opt_index)
! 		{
! 		case OPT_mlsx:
! 		  global_options.x_la_opt_simd
! 		    = decoded.value
! 		    ? (la_opt_simd == ISA_EXT_SIMD_LASX
! 		       ? ISA_EXT_SIMD_LASX : ISA_EXT_SIMD_LSX)
! 		    : ISA_EXT_NONE;
! 		  break;
! 
! 		case OPT_mlasx:
! 		  global_options.x_la_opt_simd
! 		    = decoded.value
! 		    ? ISA_EXT_SIMD_LASX
! 		    : (la_opt_simd == ISA_EXT_SIMD_LASX
! 		       || la_opt_simd == ISA_EXT_SIMD_LSX
! 		       ? ISA_EXT_SIMD_LSX : ISA_EXT_NONE);
! 		  break;
! 
! 		default:
! 		    {
! 		      if (decoded.value)
! 			global_options.x_la_isa_evolution |= p_attr->opt_mask;
! 		      else
! 			global_options.x_la_isa_evolution &= ~p_attr->opt_mask;
! 		      global_options_set.x_la_isa_evolution |= p_attr->opt_mask;
! 		    }
! 		}
  	      break;
  	    }
  	default:
*************** loongarch_process_one_target_attr (char
*** 244,250 ****
       were malformed we will have returned false already.  */
    if (!found)
      error_at (loc, "attribute %<target%> argument %qs is unknown",
! 	      str_to_check);
  
    return found;
  }
--- 330,336 ----
       were malformed we will have returned false already.  */
    if (!found)
      error_at (loc, "attribute %<target%> argument %qs is unknown",
! 	      arg_str);
  
    return found;
  }
*************** loongarch_option_valid_attribute_p (tree
*** 422,424 ****
--- 508,754 ----
    return ret;
  }
  
+ /* Parse a function multiversioning feature string STR, as found in a
+    target_version or target_clones attribute.
+ 
+    If FEATURE_MASK is nonnull, then assign to it a bitmask representing
+    the set of features explicitly specified in the feature string.
+ 
+    If FEATURE_PRIORITY is nonnull, set one or two unsigned integer values
+    presenting the priority of the feature string.  When the priority is
+    set explicitly in the attribute string, the number of members of
+    feature_priority is 2, feature_priority[0] is the priority set in the
+    code, and feature_priority[1] is the priority calculated from the
+    feature string.  When the priority is not set in the attribute string,
+    the number of members of feature_priority is 1, and its value is the
+    priority calculated by the feature string.  */
+ 
+ bool
+ loongarch_parse_fmv_features (tree decl, string_slice str,
+ 			      loongarch_fmv_feature_mask *feature_mask,
+ 			      auto_vec<unsigned int> *feature_priority)
+ {
+   location_t loc
+     = decl == NULL ? UNKNOWN_LOCATION : DECL_SOURCE_LOCATION (decl);
+ 
+   if (feature_mask)
+     *feature_mask = 0;
+ 
+   string_slice attr_str = string_slice::tokenize (&str, ";");
+   attr_str = attr_str.strip ();
+ 
+   if (attr_str == "default")
+     {
+       if (str.is_valid ())
+ 	{
+ 	  error_at (loc, "\"default\" cannot be set together with other "
+ 		    "features in %qs", attr_str.begin ());
+ 	  return false;
+ 	}
+ 
+       if (feature_priority)
+ 	feature_priority->safe_push (LA_PRIO_NONE);
+       return true;
+     }
+ 
+   if (attr_str.empty ())
+     {
+       error_at (loc, "characher before %<;%> in attribute %qs cannot be empty",
+ 		attr_str.begin ());
+       return false;
+     }
+ 
+   /* At this time, str stores the string with the priority set in attribute.
+      If it does not exist, it is illegal.  */
+   if (str.is_valid ())
+     {
+       if (str.empty ())
+ 	{
+ 	  error_at (loc, "in attribute %qs priority cannot be empty",
+ 		    attr_str.begin ());
+ 	  return false;
+ 	}
+ 
+       string_slice prio_str = string_slice::tokenize (&str, ";");
+ 
+       if (str.is_valid ())
+ 	{
+ 	  error_at (loc, "in attribute %qs the number of reatures "
+ 		    "cannot exceed two", attr_str.begin ());
+ 	  return false;
+ 	}
+ 
+       prio_str = prio_str.strip ();
+       string_slice name = string_slice::tokenize (&prio_str, "=");
+ 
+       if (name == "priority" && prio_str.is_valid ())
+ 	{
+ 	  unsigned int tmp_prio = 0;
+ 	  unsigned int len = 0;
+ 
+ 	  for (char c : prio_str)
+ 	    {
+ 	      if (ISDIGIT (c))
+ 		len++;
+ 	      else
+ 		break;
+ 	    }
+ 
+ 	  if (len != prio_str.size ()
+ 	      || sscanf (prio_str.begin (), "%u", &tmp_prio) != 1)
+ 	    {
+ 	      error_at (loc, "Setting the priority value to %qs is "
+ 			"illegal in attribute %qs", prio_str.begin (),
+ 			attr_str.begin ());
+ 	      return false;
+ 	    }
+ 
+ 	  if (feature_priority)
+ 	    feature_priority->safe_push (tmp_prio + LA_PRIO_MAX);
+ 	}
+       else
+ 	{
+ 	  error_at (loc, "in attribute %qs, the second feature should be "
+ 		    "\"priority=%<num%>\" instead of %qs", attr_str.begin (),
+ 		    name.begin ());
+ 	  return false;
+ 	}
+     }
+ 
+   if (attr_str.is_valid ())
+     {
+       int num_features = ARRAY_SIZE (loongarch_attributes);
+ 
+       /* Handle arch= if specified.  For priority, set it to be 1 more than
+ 	 the best instruction set the processor can handle.  */
+       if (strstr (attr_str.begin (), "arch=") != NULL)
+ 	{
+ 	  string_slice arch_name = attr_str;
+ 	  string_slice::tokenize (&arch_name, "=");
+ 	  if (!arch_name.is_valid ())
+ 	    {
+ 	      error_at (loc, "in attribute %qs you need to set a legal value "
+ 			"for \"arch\"", attr_str.begin ());
+ 	      return false;
+ 	    }
+ 
+ 	  loongarch_fmv_feature_mask tmp_mask = 0ULL;
+ 	  unsigned int tmp_prio = 0;
+ 
+ 	  if (arch_name == "loongarch64")
+ 	    {
+ 	      tmp_mask = 1UL << FEAT_LA64;
+ 	      tmp_prio = LA_PRIO_LOONGARCH64;
+ 	    }
+ 	  else if (arch_name == "la64v1.0")
+ 	    {
+ 	      tmp_mask = 1ULL << FEAT_LA64;
+ 	      for (int i = 0; i < num_features; i++)
+ 		if (loongarch_attributes[i].arch_ver == ARCH_LA64V1_0)
+ 		  tmp_mask |= loongarch_attributes[i].feat_mask;
+ 	      tmp_prio = LA_PRIO_LA64V1_0;
+ 	    }
+ 	  else if (arch_name == "la64v1.1")
+ 	    {
+ 	      tmp_mask = 1ULL << FEAT_LA64;
+ 	      for (int i = 0; i < num_features; i++)
+ 		if (loongarch_attributes[i].arch_ver == ARCH_LA64V1_0
+ 		    || loongarch_attributes[i].arch_ver == ARCH_LA64V1_1)
+ 		  tmp_mask |= loongarch_attributes[i].feat_mask;
+ 	      tmp_prio = LA_PRIO_LA64V1_1;
+ 	    }
+ 	  else
+ 	    {
+ 	      error_at (loc, "in attribute %qs you need to set a legal value "
+ 			"for \"arch\"", attr_str.begin ());
+ 	      return false;
+ 	    }
+ 
+ 	  if (feature_mask)
+ 	    *feature_mask = tmp_mask;
+ 
+ 	  if (feature_priority)
+ 	    feature_priority->safe_push (tmp_prio);
+ 	}
+       else
+ 	{
+ 	  int i;
+ 	  for (i = 0; i < num_features - 1; i++)
+ 	    {
+ 	      if (loongarch_attributes[i].name == attr_str
+ 		  || strstr (attr_str.begin (),
+ 			     loongarch_attributes[i].name) != NULL)
+ 		{
+ 		  if (loongarch_attributes[i].feat_mask == 0)
+ 		    {
+ 		      error_at (loc, "attribute %qs is not supported in "
+ 				"%<target_version%> or %<target_clones%>",
+ 				attr_str.begin ());
+ 		      return false;
+ 		    }
+ 
+ 		  if (feature_mask)
+ 		    *feature_mask = loongarch_attributes[i].feat_mask;
+ 
+ 		  if (feature_priority)
+ 		    feature_priority->safe_push (loongarch_attributes[i].priority);
+ 		  break;
+ 		}
+ 	    }
+ 
+ 	  if (i == num_features - 1)
+ 	    {
+ 	      error_at (loc, "%qs is not supported in target attribute",
+ 			attr_str.begin ());
+ 	      return false;
+ 	    }
+ 	}
+     }
+ 
+   if (feature_priority)
+     gcc_assert (feature_priority->length () == 1
+ 		|| feature_priority->length () == 2);
+ 
+   return true;
+ }
+ 
+ /* Compare priorities of two version decls. Return:
+     1: decl1 has a higher priority
+    -1: decl2 has a higher priority
+     0: decl1 and decl2 have the same priority.
+ */
+ 
+ int
+ loongarch_compare_version_priority (tree decl1, tree decl2)
+ {
+   auto_vec<unsigned int> prio1, prio2;
+ 
+   get_feature_mask_for_version (decl1, NULL, &prio1);
+   get_feature_mask_for_version (decl2, NULL, &prio2);
+ 
+   unsigned int max_prio1
+     = prio1.length () == 2 ? MAX (prio1[0], prio1[1]) : prio1[0];
+   unsigned int max_prio2
+     = prio2.length () == 2 ? MAX (prio2[0], prio2[1]) : prio2[0];
+ 
+   if (max_prio1 != max_prio2)
+     return max_prio1 > max_prio2 ? 1 : -1;
+ 
+   /* If max_prio1 == max_prio2, and max_prio1 >= LA_PRIO_MAX,
+      it means that the attribute strings of decl1 and decl2 are both
+      set with priorities, and the priority values are the same.
+      So next we use the priority calculated by the attribute string to
+      compare.  */
+   if (max_prio1 >= LA_PRIO_MAX)
+     {
+       unsigned int min_prio1
+ 	= prio1.length () == 2 ? MIN (prio1[0], prio1[1]) : prio1[0];
+       unsigned int min_prio2
+ 	= prio2.length () == 2 ? MIN (prio2[0], prio2[1]) : prio2[0];
+ 
+       if (min_prio1 != min_prio2)
+ 	return min_prio1 > min_prio2 ? 1 : -1;
+     }
+ 
+   return 0;
+ }
diff -Nrcpad gcc-16-20251109/gcc/config/loongarch/loongarch.cc gcc-16-20251116/gcc/config/loongarch/loongarch.cc
*** gcc-16-20251109/gcc/config/loongarch/loongarch.cc	Sun Nov  9 22:32:46 2025
--- gcc-16-20251116/gcc/config/loongarch/loongarch.cc	Sun Nov 16 22:32:54 2025
*************** along with GCC; see the file COPYING3.
*** 21,26 ****
--- 21,27 ----
  
  #define IN_TARGET_CODE 1
  
+ #define INCLUDE_STRING
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
*************** loongarch_can_use_return_insn (void)
*** 1393,1398 ****
--- 1394,1435 ----
    return reload_completed && cfun->machine->frame.total_size == 0;
  }
  
+ /* If we want to support lock-free 16B atomic, we must support at least
+    lock-free atomic load, store, and CAS (other operations can be emulated
+    with CAS even if not supported directly).  Otherwise, for example if
+    store is lock-free but CAS is not, the store may happen when the CAS
+    operation is holding the lock, breaking the atomicity of CAS.
+ 
+    We need LSX for load/store and SCQ for CAS, so require both for
+    lock-free 16B atomic.
+ 
+    If we link a TU (1) compiled with -mlsx -mscq and the TU (2) not, for
+    the same reason we need to ensure the libatomic call invoked by TU (2)
+    always use the lock-free sequence.  Thus libatomic must contain the
+    ifuncs built with -mlsx -mscq.  Since the ifunc resolver interface is
+    glibc-specific and the hwcap bits are Linux-specific, the resolver
+    implementation in libatomic assumes GNU/Linux and
+    HAVE_IFUNC_FOR_LIBATOMIC_16B is only enabled for it.  To support
+    another OS, add the correct ifunc resolver implementation into
+    libatomic/config/loongarch/host-config.h and then define
+    HAVE_IFUNC_FOR_LIBATOMIC_16B for it.
+ 
+    FIXME: when ifunc is not supported but libatomic is entirely built with
+    -mlsx -mscq, we don't really need ifunc.  But we don't have a way to
+    get CFLAGS_FOR_TARGET here...  */
+ bool
+ loongarch_16b_atomic_lock_free_p (void)
+ {
+ #ifdef HAVE_IFUNC_FOR_LIBATOMIC_16B
+   bool ok_p = HAVE_IFUNC_FOR_LIBATOMIC_16B;
+ #else
+   bool ok_p = false;
+ #endif
+ 
+   return (ok_p && targetm.has_ifunc_p ()
+ 	  && TARGET_64BIT && ISA_HAS_LSX && ISA_HAS_SCQ);
+ }
+ 
  /* Expand function epilogue using the following insn patterns:
     "epilogue"	      (style == NORMAL_RETURN)
     "sibcall_epilogue" (style == SIBCALL_RETURN)
*************** emit_reduc_half (rtx dest, rtx src, int
*** 10055,10061 ****
        if (i == 256)
  	tem = gen_lasx_xvpermi_d_v4df (dest, src, GEN_INT (0xe));
        else
! 	tem = gen_lasx_xvpermi_d_v4df (dest, src, const1_rtx);
        break;
      case E_V32QImode:
      case E_V16HImode:
--- 10092,10098 ----
        if (i == 256)
  	tem = gen_lasx_xvpermi_d_v4df (dest, src, GEN_INT (0xe));
        else
! 	tem = gen_lasx_xvbsrl_d_f (dest, src, GEN_INT (0x8));
        break;
      case E_V32QImode:
      case E_V16HImode:
*************** loongarch_compute_pressure_classes (reg_
*** 11382,11387 ****
--- 11419,11428 ----
  static bool
  loongarch_can_inline_p (tree caller, tree callee)
  {
+   /* Do not inline when callee is versioned but caller is not.  */
+   if (DECL_FUNCTION_VERSIONED (callee) && ! DECL_FUNCTION_VERSIONED (caller))
+     return false;
+ 
    tree callee_tree = DECL_FUNCTION_SPECIFIC_TARGET (callee);
    tree caller_tree = DECL_FUNCTION_SPECIFIC_TARGET (caller);
  
*************** loongarch_can_inline_p (tree caller, tre
*** 11436,11441 ****
--- 11477,12103 ----
    return true;
  }
  
+ /* Parse the tree in ARGS that contains the target_version attribute
+    information and update the global target options space.  If LOC is nonnull,
+    report diagnostics against *LOC, otherwise remain silent.  */
+ 
+ bool
+ loongarch_process_target_version_attr (tree args, tree fndecl)
+ {
+   location_t loc = DECL_SOURCE_LOCATION (fndecl);
+ 
+   if (TREE_CODE (args) == TREE_LIST)
+     {
+       if (TREE_CHAIN (args))
+ 	{
+ 	  if (loc)
+ 	    error_at (loc, "attribute %<target_version%> "
+ 		      "has multiple values");
+ 	  return false;
+ 	}
+       args = TREE_VALUE (args);
+     }
+ 
+   if (!args || TREE_CODE (args) != STRING_CST)
+     {
+       if (loc)
+ 	error_at (loc, "attribute %<target_version%> argument not a string");
+       return false;
+     }
+ 
+   string_slice str = TREE_STRING_POINTER (args);
+ 
+   if (str == "default")
+     return true;
+ 
+   if (loongarch_parse_fmv_features (fndecl, str, NULL, NULL) == false)
+     return false;
+ 
+   /* Get the attribute string and take out only the option part.
+      eg:
+        "arch=la64v1.0;priority=1"
+      The attr_string is "arch=la64v1.0".
+    */
+   string_slice attr_string = string_slice::tokenize (&str, ";");
+   attr_string = attr_string.strip ();
+ 
+   args = build_string (attr_string.size (), attr_string.begin ());
+ 
+   return loongarch_process_target_attr (args, fndecl);
+ }
+ 
+ 
+ /* Implement TARGET_OPTION_VALID_VERSION_ATTRIBUTE_P.  This is used to
+    process attribute ((target_version ("..."))).  */
+ 
+ static bool
+ loongarch_option_valid_version_attribute_p (tree fndecl, tree, tree args, int)
+ {
+   struct cl_target_option cur_target;
+   bool ret;
+   tree new_target;
+   tree existing_target = DECL_FUNCTION_SPECIFIC_TARGET (fndecl);
+ 
+   /* Save the current target options to restore at the end.  */
+   cl_target_option_save (&cur_target, &global_options, &global_options_set);
+ 
+   /* If fndecl already has some target attributes applied to it, unpack
+      them so that we add this attribute on top of them, rather than
+      overwriting them.  */
+   if (existing_target)
+     {
+       struct cl_target_option *existing_options
+ 	= TREE_TARGET_OPTION (existing_target);
+ 
+       if (existing_options)
+ 	cl_target_option_restore (&global_options, &global_options_set,
+ 				  existing_options);
+     }
+   else
+     cl_target_option_restore (&global_options, &global_options_set,
+ 			      TREE_TARGET_OPTION (target_option_current_node));
+ 
+   ret = loongarch_process_target_version_attr (args, fndecl);
+ 
+   /* Set up any additional state.  */
+   if (ret)
+     {
+       loongarch_option_override_internal (&la_target,
+ 					  &global_options,
+ 					  &global_options_set);
+       new_target = build_target_option_node (&global_options,
+ 					     &global_options_set);
+     }
+   else
+     new_target = NULL;
+ 
+   if (fndecl && ret)
+     DECL_FUNCTION_SPECIFIC_TARGET (fndecl) = new_target;
+ 
+   cl_target_option_restore (&global_options, &global_options_set, &cur_target);
+ 
+   return ret;
+ }
+ 
+ /* Make a dispatcher declaration for the multi-versioned function DECL.
+    Calls to DECL function will be replaced with calls to the dispatcher
+    by the front-end.  Returns the decl of the dispatcher function.  */
+ 
+ tree
+ loongarch_get_function_versions_dispatcher (void *decl)
+ {
+   tree fn = (tree) decl;
+   struct cgraph_node *node = NULL;
+   struct cgraph_node *default_node = NULL;
+   struct cgraph_function_version_info *node_v = NULL;
+ 
+   tree dispatch_decl = NULL;
+ 
+   struct cgraph_function_version_info *default_version_info = NULL;
+ 
+   gcc_assert (fn != NULL && DECL_FUNCTION_VERSIONED (fn));
+ 
+   node = cgraph_node::get (fn);
+   gcc_assert (node != NULL);
+ 
+   node_v = node->function_version ();
+   gcc_assert (node_v != NULL);
+ 
+   if (node_v->dispatcher_resolver != NULL)
+     return node_v->dispatcher_resolver;
+ 
+   /* The default node is always the beginning of the chain.  */
+   default_version_info = node_v;
+   while (default_version_info->prev)
+     default_version_info = default_version_info->prev;
+   default_node = default_version_info->this_node;
+ 
+   /* If there is no default node, just return NULL.  */
+   if (!is_function_default_version (default_node->decl))
+     return NULL;
+ 
+   if (targetm.has_ifunc_p ())
+     {
+       struct cgraph_function_version_info *it_v = NULL;
+       struct cgraph_node *dispatcher_node = NULL;
+       struct cgraph_function_version_info *dispatcher_version_info = NULL;
+ 
+       /* Right now, the dispatching is done via ifunc.  */
+       dispatch_decl = make_dispatcher_decl (default_node->decl);
+       TREE_NOTHROW (dispatch_decl) = TREE_NOTHROW (fn);
+ 
+       dispatcher_node = cgraph_node::get_create (dispatch_decl);
+       gcc_assert (dispatcher_node != NULL);
+       dispatcher_node->dispatcher_function = 1;
+       dispatcher_version_info
+ 	= dispatcher_node->insert_new_function_version ();
+       dispatcher_version_info->next = default_version_info;
+       dispatcher_node->definition = 1;
+ 
+       /* Set the dispatcher for all the versions.  */
+       it_v = default_version_info;
+       while (it_v != NULL)
+ 	{
+ 	  it_v->dispatcher_resolver = dispatch_decl;
+ 	  it_v = it_v->next;
+ 	}
+     }
+   else
+     {
+       error_at (DECL_SOURCE_LOCATION (default_node->decl),
+ 		"multiversioning needs %<ifunc%> which is not supported "
+ 		"on this target");
+     }
+ 
+   return dispatch_decl;
+ }
+ 
+ /* Implement TARGET_MANGLE_DECL_ASSEMBLER_NAME, to add function multiversioning
+    suffixes.  */
+ 
+ tree
+ loongarch_mangle_decl_assembler_name (tree decl, tree id)
+ {
+   /* For function version, add the target suffix to the assembler name.  */
+   if (TREE_CODE (decl) == FUNCTION_DECL
+       && DECL_FUNCTION_VERSIONED (decl))
+     {
+       std::string name = IDENTIFIER_POINTER (id) + std::string (".");
+       tree target_attr = lookup_attribute ("target_version",
+ 					   DECL_ATTRIBUTES (decl));
+ 
+       if (target_attr == NULL_TREE)
+ 	{
+ 	  name += "default";
+ 	  return get_identifier (name.c_str ());
+ 	}
+ 
+       const char *version_string
+ 	= TREE_STRING_POINTER (TREE_VALUE (TREE_VALUE (target_attr)));
+ 
+       /* Replace non-alphanumeric characters with underscores as the suffix.  */
+       for (const char *c = version_string; *c; c++)
+ 	name += ISALNUM (*c) == 0 ? '_' : *c;
+ 
+       if (DECL_ASSEMBLER_NAME_SET_P (decl))
+ 	SET_DECL_RTL (decl, NULL);
+ 
+       id = get_identifier (name.c_str ());
+     }
+   return id;
+ }
+ 
+ /* Return an identifier for the base assembler name of a versioned function.
+    This is computed by taking the default version's assembler name, and
+    stripping off the ".default" suffix if it's already been appended.  */
+ 
+ static tree
+ get_suffixed_assembler_name (tree default_decl, const char *suffix)
+ {
+   std::string name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (default_decl));
+ 
+   auto size = name.size ();
+   if (size >= 8 && name.compare (size - 8, 8, ".default") == 0)
+     name.resize (size - 8);
+   name += suffix;
+   return get_identifier (name.c_str ());
+ }
+ 
+ /* Get the mask and priority of features.  */
+ void
+ get_feature_mask_for_version (tree decl,
+ 			      loongarch_fmv_feature_mask *feature_mask,
+ 			      auto_vec<unsigned int> *feature_priority)
+ {
+   tree version_attr = lookup_attribute ("target_version",
+ 					DECL_ATTRIBUTES (decl));
+ 
+   /* When a function is added with "__attribute__((target_version(**)))" to
+      define multiple versions, it is allowed to define this function without
+      adding the "__attribute__((target_version("default")))" attribute.
+      In this case, the function without the attribute will be compiled as the
+      default version.
+      If version_attr is empty, it is the default version of the function.
+      Set the feature_mask of this function to 0 and the priority to
+      LA_PRIO_NONE.  */
+   if (version_attr == NULL)
+     {
+       if (feature_mask)
+ 	feature_mask = 0ULL;
+ 
+       if (feature_priority)
+ 	feature_priority->safe_push (0);
+       return;
+     }
+ 
+   string_slice version_string
+     = TREE_STRING_POINTER (TREE_VALUE (TREE_VALUE (version_attr)));
+   loongarch_parse_fmv_features (decl, version_string, feature_mask,
+ 				feature_priority);
+ }
+ 
+ /* This adds a condition to the basic_block NEW_BB in function FUNCTION_DECL
+    to return a pointer to VERSION_DECL if all feature bits specified in
+    FEATURE_MASK are not set in MASK_VAR.  This function will be called during
+    version dispatch to decide which function version to execute.  It returns
+    the basic block at the end, to which more conditions can be added.  */
+ static basic_block
+ add_condition_to_bb (tree function_decl, tree version_decl,
+ 		     loongarch_fmv_feature_mask feature_mask,
+ 		     tree mask_var, basic_block new_bb)
+ {
+   gimple *return_stmt;
+   tree convert_expr, result_var;
+   gimple *convert_stmt;
+   gimple *if_else_stmt;
+ 
+   basic_block bb1, bb2, bb3;
+   edge e12, e23;
+ 
+   gimple_seq gseq;
+ 
+   push_cfun (DECL_STRUCT_FUNCTION (function_decl));
+ 
+   gcc_assert (new_bb != NULL);
+   gseq = bb_seq (new_bb);
+ 
+   convert_expr = build1 (CONVERT_EXPR, ptr_type_node,
+ 			 build_fold_addr_expr (version_decl));
+   result_var = create_tmp_var (ptr_type_node);
+   convert_stmt = gimple_build_assign (result_var, convert_expr);
+   return_stmt = gimple_build_return (result_var);
+ 
+   if (feature_mask == 0ULL)
+     {
+       /* Default version.  */
+       gimple_seq_add_stmt (&gseq, convert_stmt);
+       gimple_seq_add_stmt (&gseq, return_stmt);
+       set_bb_seq (new_bb, gseq);
+       gimple_set_bb (convert_stmt, new_bb);
+       gimple_set_bb (return_stmt, new_bb);
+       pop_cfun ();
+       return new_bb;
+     }
+ 
+   tree and_expr_var = create_tmp_var (unsigned_type_node);
+   tree and_expr = build2 (BIT_AND_EXPR,
+ 			  long_long_unsigned_type_node,
+ 			  mask_var,
+ 			  build_int_cst (unsigned_type_node,
+ 					 feature_mask));
+   gimple *and_stmt = gimple_build_assign (and_expr_var, and_expr);
+   gimple_set_block (and_stmt, DECL_INITIAL (function_decl));
+   gimple_set_bb (and_stmt, new_bb);
+   gimple_seq_add_stmt (&gseq, and_stmt);
+ 
+   tree zero_llu = build_int_cst (unsigned_type_node, 0);
+   if_else_stmt = gimple_build_cond (EQ_EXPR, and_expr_var, zero_llu,
+ 				    NULL_TREE, NULL_TREE);
+   gimple_set_block (if_else_stmt, DECL_INITIAL (function_decl));
+   gimple_set_bb (if_else_stmt, new_bb);
+   gimple_seq_add_stmt (&gseq, if_else_stmt);
+ 
+   gimple_seq_add_stmt (&gseq, convert_stmt);
+   gimple_seq_add_stmt (&gseq, return_stmt);
+   set_bb_seq (new_bb, gseq);
+ 
+   bb1 = new_bb;
+   e12 = split_block (bb1, if_else_stmt);
+   bb2 = e12->dest;
+   e12->flags &= ~EDGE_FALLTHRU;
+   e12->flags |= EDGE_TRUE_VALUE;
+ 
+   e23 = split_block (bb2, return_stmt);
+ 
+   gimple_set_bb (convert_stmt, bb2);
+   gimple_set_bb (return_stmt, bb2);
+ 
+   bb3 = e23->dest;
+   make_edge (bb1, bb3, EDGE_FALSE_VALUE);
+ 
+   remove_edge (e23);
+   make_edge (bb2, EXIT_BLOCK_PTR_FOR_FN (cfun), 0);
+ 
+   pop_cfun ();
+ 
+   return bb3;
+ }
+ 
+ /* This function generates the dispatch function for
+    multi-versioned functions.  DISPATCH_DECL is the function which will
+    contain the dispatch logic.  FNDECLS are the function choices for
+    dispatch, and is a tree chain.  EMPTY_BB is the basic block pointer
+    in DISPATCH_DECL in which the dispatch code is generated.  */
+ 
+ static int
+ dispatch_function_versions (tree dispatch_decl,
+ 			    void *fndecls_p,
+ 			    basic_block *empty_bb)
+ {
+   gimple *ifunc_cpu_init_stmt;
+   gimple_seq gseq;
+   vec<tree> *fndecls;
+ 
+   gcc_assert (dispatch_decl != NULL
+ 	      && fndecls_p != NULL
+ 	      && empty_bb != NULL);
+ 
+   push_cfun (DECL_STRUCT_FUNCTION (dispatch_decl));
+ 
+   gseq = bb_seq (*empty_bb);
+   /* Function version dispatch is via IFUNC.  IFUNC resolvers fire before
+      constructors, so explicity call __init_loongarch_feature_bits here.  */
+   tree init_fn_type = build_function_type_list (void_type_node,
+ 						void_type_node,
+ 						NULL);
+   tree init_fn_id = get_identifier ("__init_loongarch_features_resolver");
+   tree init_fn_decl = build_decl (UNKNOWN_LOCATION, FUNCTION_DECL,
+ 				  init_fn_id, init_fn_type);
+   DECL_EXTERNAL (init_fn_decl) = 1;
+   TREE_PUBLIC (init_fn_decl) = 1;
+   DECL_VISIBILITY (init_fn_decl) = VISIBILITY_HIDDEN;
+   DECL_VISIBILITY_SPECIFIED (init_fn_decl) = 1;
+   ifunc_cpu_init_stmt = gimple_build_call (init_fn_decl, 0);
+   gimple_seq_add_stmt (&gseq, ifunc_cpu_init_stmt);
+   gimple_set_bb (ifunc_cpu_init_stmt, *empty_bb);
+ 
+   /* Build the struct type for __loongarch_feature_bits.  */
+   tree global_type = lang_hooks.types.make_type (RECORD_TYPE);
+   tree field1 = build_decl (UNKNOWN_LOCATION, FIELD_DECL,
+ 			    get_identifier ("features"),
+ 			    unsigned_type_node);
+   DECL_FIELD_CONTEXT (field1) = global_type;
+   TYPE_FIELDS (global_type) = field1;
+   layout_type (global_type);
+ 
+   tree global_var = build_decl (UNKNOWN_LOCATION, VAR_DECL,
+ 				get_identifier ("__loongarch_feature_bits"),
+ 				global_type);
+   DECL_EXTERNAL (global_var) = 1;
+   TREE_PUBLIC (global_var) = 1;
+   DECL_VISIBILITY (global_var) = VISIBILITY_HIDDEN;
+   DECL_VISIBILITY_SPECIFIED (global_var) = 1;
+   tree mask_var = create_tmp_var (unsigned_type_node);
+ 
+   tree component_expr = build3 (COMPONENT_REF, unsigned_type_node,
+ 				global_var, field1, NULL_TREE);
+   gimple *component_stmt = gimple_build_assign (mask_var, component_expr);
+   gimple_set_block (component_stmt, DECL_INITIAL (dispatch_decl));
+   gimple_set_bb (component_stmt, *empty_bb);
+   gimple_seq_add_stmt (&gseq, component_stmt);
+ 
+   tree not_expr = build1 (BIT_NOT_EXPR, unsigned_type_node, mask_var);
+   gimple *not_stmt = gimple_build_assign (mask_var, not_expr);
+   gimple_set_block (not_stmt, DECL_INITIAL (dispatch_decl));
+   gimple_set_bb (not_stmt, *empty_bb);
+   gimple_seq_add_stmt (&gseq, not_stmt);
+ 
+   set_bb_seq (*empty_bb, gseq);
+ 
+   pop_cfun ();
+ 
+   /* fndecls_p is actually a vector.  */
+   fndecls = static_cast<vec<tree> *> (fndecls_p);
+ 
+   /* At least one more version other than the default.  */
+   unsigned int num_versions = fndecls->length ();
+   gcc_assert (num_versions >= 2);
+ 
+   int i;
+   tree version_decl;
+   FOR_EACH_VEC_ELT_REVERSE (*fndecls, i, version_decl)
+     {
+       loongarch_fmv_feature_mask feature_mask = 0;
+       /* Get attribute string, parse it and find the right features.  */
+       get_feature_mask_for_version (version_decl, &feature_mask,
+ 				    NULL);
+       *empty_bb = add_condition_to_bb (dispatch_decl,
+ 				       version_decl,
+ 				       feature_mask,
+ 				       mask_var,
+ 				       *empty_bb);
+     }
+ 
+   return 0;
+ }
+ 
+ /* Make the resolver function decl to dispatch the versions of
+    a multi-versioned function,  DEFAULT_DECL.  IFUNC_ALIAS_DECL is
+    ifunc alias that will point to the created resolver.  Create an
+    empty basic block in the resolver and store the pointer in
+    EMPTY_BB.  Return the decl of the resolver function.  */
+ 
+ static tree
+ make_resolver_func (const tree default_decl,
+ 		    const tree ifunc_alias_decl,
+ 		    basic_block *empty_bb)
+ {
+   tree decl, type, t;
+ 
+   /* Create resolver function name based on default_decl.  We need to remove an
+      existing ".default" suffix if this has already been appended.  */
+   tree decl_name = get_suffixed_assembler_name (default_decl, ".resolver");
+   const char *resolver_name = IDENTIFIER_POINTER (decl_name);
+ 
+   /* The resolver function should return a (void *). */
+   type = build_function_type_list (ptr_type_node, NULL_TREE);
+ 
+   decl = build_fn_decl (resolver_name, type);
+   SET_DECL_ASSEMBLER_NAME (decl, decl_name);
+ 
+   DECL_NAME (decl) = decl_name;
+   TREE_USED (decl) = 1;
+   DECL_ARTIFICIAL (decl) = 1;
+   DECL_IGNORED_P (decl) = 1;
+   TREE_PUBLIC (decl) = 0;
+   DECL_UNINLINABLE (decl) = 1;
+ 
+   /* Resolver is not external, body is generated.  */
+   DECL_EXTERNAL (decl) = 0;
+   DECL_EXTERNAL (ifunc_alias_decl) = 0;
+ 
+   DECL_CONTEXT (decl) = NULL_TREE;
+   DECL_INITIAL (decl) = make_node (BLOCK);
+   DECL_STATIC_CONSTRUCTOR (decl) = 0;
+ 
+   if (DECL_COMDAT_GROUP (default_decl)
+       || TREE_PUBLIC (default_decl))
+     {
+       /* In this case, each translation unit with a call to this
+ 	 versioned function will put out a resolver.  Ensure it
+ 	 is comdat to keep just one copy.  */
+       DECL_COMDAT (decl) = 1;
+       make_decl_one_only (decl, DECL_ASSEMBLER_NAME (decl));
+     }
+   else
+     TREE_PUBLIC (ifunc_alias_decl) = 0;
+ 
+   /* Build result decl and add to function_decl.  */
+   t = build_decl (UNKNOWN_LOCATION, RESULT_DECL, NULL_TREE, ptr_type_node);
+   DECL_CONTEXT (t) = decl;
+   DECL_ARTIFICIAL (t) = 1;
+   DECL_IGNORED_P (t) = 1;
+   DECL_RESULT (decl) = t;
+ 
+   gimplify_function_tree (decl);
+   push_cfun (DECL_STRUCT_FUNCTION (decl));
+   *empty_bb = init_lowered_empty_function (decl, false,
+ 					   profile_count::uninitialized ());
+ 
+   cgraph_node::add_new_function (decl, true);
+   symtab->call_cgraph_insertion_hooks (cgraph_node::get_create (decl));
+ 
+   pop_cfun ();
+ 
+   gcc_assert (ifunc_alias_decl != NULL);
+   /* Mark ifunc_alias_decl as "ifunc" with resolver as resolver_name.  */
+   DECL_ATTRIBUTES (ifunc_alias_decl)
+     = make_attribute ("ifunc", resolver_name,
+ 		      DECL_ATTRIBUTES (ifunc_alias_decl));
+ 
+   /* Create the alias for dispatch to resolver here.  */
+   cgraph_node::create_same_body_alias (ifunc_alias_decl, decl);
+   return decl;
+ }
+ 
+ /* Implement TARGET_GENERATE_VERSION_DISPATCHER_BODY.  */
+ 
+ tree
+ loongarch_generate_version_dispatcher_body (void *node_p)
+ {
+   tree resolver_decl;
+   basic_block empty_bb;
+   tree default_ver_decl;
+   struct cgraph_node *versn;
+   struct cgraph_node *node;
+ 
+   struct cgraph_function_version_info *node_version_info = NULL;
+   struct cgraph_function_version_info *versn_info = NULL;
+ 
+   node = (cgraph_node *)node_p;
+ 
+   node_version_info = node->function_version ();
+   gcc_assert (node->dispatcher_function
+ 	      && node_version_info != NULL);
+ 
+   if (node_version_info->dispatcher_resolver)
+     return node_version_info->dispatcher_resolver;
+ 
+   /* The first version in the chain corresponds to the default version.  */
+   default_ver_decl = node_version_info->next->this_node->decl;
+ 
+   /* node is going to be an alias, so remove the finalized bit.  */
+   node->definition = false;
+ 
+   resolver_decl = make_resolver_func (default_ver_decl,
+ 				      node->decl, &empty_bb);
+ 
+   node_version_info->dispatcher_resolver = resolver_decl;
+ 
+   push_cfun (DECL_STRUCT_FUNCTION (resolver_decl));
+ 
+   auto_vec<tree, 2> fn_ver_vec;
+ 
+   for (versn_info = node_version_info->next; versn_info;
+        versn_info = versn_info->next)
+     {
+       versn = versn_info->this_node;
+       /* Check for virtual functions here again, as by this time it should
+ 	 have been determined if this function needs a vtable index or
+ 	 not.  This happens for methods in derived classes that override
+ 	 virtual methods in base classes but are not explicitly marked as
+ 	 virtual.  */
+       if (DECL_VINDEX (versn->decl))
+ 	sorry ("virtual function multiversioning not supported");
+ 
+       fn_ver_vec.safe_push (versn->decl);
+     }
+ 
+   dispatch_function_versions (resolver_decl, &fn_ver_vec, &empty_bb);
+   cgraph_edge::rebuild_edges ();
+   pop_cfun ();
+ 
+   /* Fix up symbol names.  First we need to obtain the base name, which may
+      have already been mangled.  */
+   tree base_name = get_suffixed_assembler_name (default_ver_decl, "");
+ 
+   /* We need to redo the version mangling on the non-default versions for the
+      target_clones case.  Redoing the mangling for the target_version case is
+      redundant but does no harm.  We need to skip the default version, because
+      expand_clones will append ".default" later; fortunately that suffix is the
+      one we want anyway.  */
+   for (versn_info = node_version_info->next->next; versn_info;
+        versn_info = versn_info->next)
+     {
+       tree version_decl = versn_info->this_node->decl;
+       tree name = loongarch_mangle_decl_assembler_name (version_decl,
+ 							base_name);
+       symtab->change_decl_assembler_name (version_decl, name);
+     }
+ 
+   /* We also need to use the base name for the ifunc declaration.  */
+   symtab->change_decl_assembler_name (node->decl, base_name);
+ 
+   return resolver_decl;
+ }
+ 
+ /* This function returns true if FN1 and FN2 are versions of the same function,
+    that is, the target_version attributes of the function decls are different.
+    This assumes that FN1 and FN2 have the same signature.  */
+ 
+ bool
+ loongarch_option_same_function_versions (string_slice str1, string_slice str2)
+ {
+   loongarch_fmv_feature_mask feature_mask1;
+   loongarch_fmv_feature_mask feature_mask2;
+   loongarch_parse_fmv_features (NULL, str1,
+ 				&feature_mask1, NULL);
+   loongarch_parse_fmv_features (NULL, str2,
+ 				&feature_mask2, NULL);
+ 
+   return feature_mask1 == feature_mask2;
+ }
+ 
  /* Initialize the GCC target structure.  */
  #undef TARGET_ASM_ALIGNED_HI_OP
  #define TARGET_ASM_ALIGNED_HI_OP "\t.half\t"
*************** loongarch_can_inline_p (tree caller, tre
*** 11723,11728 ****
--- 12385,12414 ----
  #undef TARGET_CAN_INLINE_P
  #define TARGET_CAN_INLINE_P loongarch_can_inline_p
  
+ #undef TARGET_OPTION_VALID_VERSION_ATTRIBUTE_P
+ #define TARGET_OPTION_VALID_VERSION_ATTRIBUTE_P \
+   loongarch_option_valid_version_attribute_p
+ 
+ #undef TARGET_GET_FUNCTION_VERSIONS_DISPATCHER
+ #define TARGET_GET_FUNCTION_VERSIONS_DISPATCHER \
+   loongarch_get_function_versions_dispatcher
+ 
+ #undef TARGET_MANGLE_DECL_ASSEMBLER_NAME
+ #define TARGET_MANGLE_DECL_ASSEMBLER_NAME \
+   loongarch_mangle_decl_assembler_name
+ 
+ #undef TARGET_GENERATE_VERSION_DISPATCHER_BODY
+ #define TARGET_GENERATE_VERSION_DISPATCHER_BODY \
+   loongarch_generate_version_dispatcher_body
+ 
+ #undef TARGET_COMPARE_VERSION_PRIORITY
+ #define TARGET_COMPARE_VERSION_PRIORITY \
+   loongarch_compare_version_priority
+ 
+ #undef TARGET_OPTION_SAME_FUNCTION_VERSIONS
+ #define TARGET_OPTION_SAME_FUNCTION_VERSIONS \
+   loongarch_option_same_function_versions
+ 
  struct gcc_target targetm = TARGET_INITIALIZER;
  
  #include "gt-loongarch.h"
diff -Nrcpad gcc-16-20251109/gcc/config/loongarch/loongarch.h gcc-16-20251116/gcc/config/loongarch/loongarch.h
*** gcc-16-20251109/gcc/config/loongarch/loongarch.h	Sun Nov  9 22:32:46 2025
--- gcc-16-20251116/gcc/config/loongarch/loongarch.h	Sun Nov 16 22:32:54 2025
*************** struct GTY (()) machine_function
*** 1293,1295 ****
--- 1293,1297 ----
  
  #define TARGET_EXPLICIT_RELOCS \
    (la_opt_explicit_relocs == EXPLICIT_RELOCS_ALWAYS)
+ 
+ #define TARGET_HAS_FMV_TARGET_ATTRIBUTE 0
diff -Nrcpad gcc-16-20251109/gcc/config/loongarch/predicates.md gcc-16-20251116/gcc/config/loongarch/predicates.md
*** gcc-16-20251109/gcc/config/loongarch/predicates.md	Sun Nov  9 22:32:46 2025
--- gcc-16-20251116/gcc/config/loongarch/predicates.md	Sun Nov 16 22:32:54 2025
***************
*** 575,582 ****
  
  (define_predicate "symbolic_pcrel_offset_operand"
    (and (match_code "plus")
!        (match_operand 0 "symbolic_pcrel_operand")
!        (match_operand 1 "const_int_operand")))
  
  (define_predicate "mem_simple_ldst_operand"
    (match_code "mem")
--- 575,582 ----
  
  (define_predicate "symbolic_pcrel_offset_operand"
    (and (match_code "plus")
!        (match_test "symbolic_pcrel_operand (XEXP (op, 0), mode)")
!        (match_test "const_int_operand (XEXP (op, 1), mode)")))
  
  (define_predicate "mem_simple_ldst_operand"
    (match_code "mem")
diff -Nrcpad gcc-16-20251109/gcc/config/loongarch/sync.md gcc-16-20251116/gcc/config/loongarch/sync.md
*** gcc-16-20251109/gcc/config/loongarch/sync.md	Sun Nov  9 22:32:46 2025
--- gcc-16-20251116/gcc/config/loongarch/sync.md	Sun Nov 16 22:32:54 2025
***************
*** 222,228 ****
  	  [(match_operand:V2DI 1 "register_operand" "f")
  	   (match_operand:SI   2 "const_int_operand")] ;; model
  	UNSPEC_ATOMIC_STORE))]
!   "ISA_HAS_LSX && TARGET_64BIT"
  {
    enum memmodel model = memmodel_base (INTVAL (operands[2]));
  
--- 222,228 ----
  	  [(match_operand:V2DI 1 "register_operand" "f")
  	   (match_operand:SI   2 "const_int_operand")] ;; model
  	UNSPEC_ATOMIC_STORE))]
!   "loongarch_16b_atomic_lock_free_p ()"
  {
    enum memmodel model = memmodel_base (INTVAL (operands[2]));
  
***************
*** 243,270 ****
  }
    [(set (attr "length") (const_int 12))])
  
- (define_insn "atomic_storeti_scq"
-   [(set (match_operand:TI 0 "memory_operand" "=m")
- 	(unspec_volatile:TI
- 	  [(match_operand:TI 1 "register_operand" "r")]
- 	  UNSPEC_ATOMIC_STORE))
-    (clobber (match_scratch:DI 2 "=&r"))]
-   "TARGET_64BIT && ISA_HAS_SCQ"
-   "1:\\n\\tll.d\t$r0,%0\n\tmove\t%2,%1\n\tsc.q\t%2,%t1,%0\n\tbeqz\t%2,1b"
-   [(set (attr "length") (const_int 16))])
- 
  (define_expand "atomic_storeti"
    [(match_operand:TI 0 "memory_operand"   "=m")
     (match_operand:TI 1 "reg_or_0_operand" "rJ")
     (match_operand:SI 2 "const_int_operand")]
!   "TARGET_64BIT && (ISA_HAS_LSX || ISA_HAS_SCQ)"
  {
-   if (!ISA_HAS_LSX)
-     {
-       emit_insn (gen_atomic_storeti_scq (operands[0], operands[1]));
-       DONE;
-     }
- 
    rtx vr = gen_reg_rtx (V2DImode), op1 = operands[1];
    rtvec v = rtvec_alloc (2);
  
--- 243,254 ----
  }
    [(set (attr "length") (const_int 12))])
  
  (define_expand "atomic_storeti"
    [(match_operand:TI 0 "memory_operand"   "=m")
     (match_operand:TI 1 "reg_or_0_operand" "rJ")
     (match_operand:SI 2 "const_int_operand")]
!   "loongarch_16b_atomic_lock_free_p ()"
  {
    rtx vr = gen_reg_rtx (V2DImode), op1 = operands[1];
    rtvec v = rtvec_alloc (2);
  
***************
*** 330,336 ****
    }
    [(set (attr "length") (const_int 16))])
  
! (define_mode_iterator ALL_SC [GPR (TI "TARGET_64BIT && ISA_HAS_SCQ")])
  (define_mode_attr _scq [(SI "") (DI "") (TI "_scq")])
  (define_expand "atomic_fetch_nand<mode>"
    [(match_operand:ALL_SC 0 "register_operand")
--- 314,320 ----
    }
    [(set (attr "length") (const_int 16))])
  
! (define_mode_iterator ALL_SC [GPR (TI "loongarch_16b_atomic_lock_free_p ()")])
  (define_mode_attr _scq [(SI "") (DI "") (TI "_scq")])
  (define_expand "atomic_fetch_nand<mode>"
    [(match_operand:ALL_SC 0 "register_operand")
***************
*** 374,380 ****
     (set (match_dup 1)
  	(match_operand:TI 2 "register_operand" "rJ"))
     (clobber (match_scratch:DI 3 "=&r"))]
!   "TARGET_64BIT && ISA_HAS_SCQ"
  {
    output_asm_insn ("1:", operands);
    output_asm_insn ("ll.d\t%0,%1", operands);
--- 358,364 ----
     (set (match_dup 1)
  	(match_operand:TI 2 "register_operand" "rJ"))
     (clobber (match_scratch:DI 3 "=&r"))]
!   "loongarch_16b_atomic_lock_free_p ()"
  {
    output_asm_insn ("1:", operands);
    output_asm_insn ("ll.d\t%0,%1", operands);
***************
*** 394,400 ****
     (match_operand:TI 1 "memory_operand"   "+ZB")
     (match_operand:TI 2 "register_operand" "rJ")
     (match_operand:SI 3 "const_int_operand")] ;; model
!   "TARGET_64BIT && ISA_HAS_SCQ"
  {
    emit_insn (gen_atomic_exchangeti_scq (operands[0], operands[1],
  					operands[2]));
--- 378,384 ----
     (match_operand:TI 1 "memory_operand"   "+ZB")
     (match_operand:TI 2 "register_operand" "rJ")
     (match_operand:SI 3 "const_int_operand")] ;; model
!   "loongarch_16b_atomic_lock_free_p ()"
  {
    emit_insn (gen_atomic_exchangeti_scq (operands[0], operands[1],
  					operands[2]));
***************
*** 694,700 ****
  	(ne:FCC (match_dup 1) (match_dup 2)))
     (clobber (match_scratch:V2DI 6 "=&f"))
     (clobber (match_scratch:DI   7 "=&r"))]
!   "TARGET_64BIT && ISA_HAS_SCQ && ISA_HAS_LSX"
  {
    output_asm_insn ("1:", operands);
  
--- 678,684 ----
  	(ne:FCC (match_dup 1) (match_dup 2)))
     (clobber (match_scratch:V2DI 6 "=&f"))
     (clobber (match_scratch:DI   7 "=&r"))]
!   "loongarch_16b_atomic_lock_free_p ()"
  {
    output_asm_insn ("1:", operands);
  
***************
*** 755,761 ****
     (match_operand:SI 5 "const_int_operand" "")  ;; is_weak
     (match_operand:SI 6 "const_int_operand" "")  ;; mod_s
     (match_operand:SI 7 "const_int_operand" "")] ;; mod_f
!   "TARGET_64BIT && ISA_HAS_SCQ && ISA_HAS_LSX"
  {
    rtx fcc = gen_reg_rtx (FCCmode);
    rtx gpr = gen_reg_rtx (DImode);
--- 739,745 ----
     (match_operand:SI 5 "const_int_operand" "")  ;; is_weak
     (match_operand:SI 6 "const_int_operand" "")  ;; mod_s
     (match_operand:SI 7 "const_int_operand" "")] ;; mod_f
!   "loongarch_16b_atomic_lock_free_p ()"
  {
    rtx fcc = gen_reg_rtx (FCCmode);
    rtx gpr = gen_reg_rtx (DImode);
***************
*** 945,951 ****
  	  UNSPEC_TI_FETCH))
     (clobber (match_scratch:DI 3 "=&r"))
     (clobber (match_scratch:DI 4 "=&r"))]
!   "TARGET_64BIT && ISA_HAS_SCQ"
  {
    output_asm_insn ("1:", operands);
    output_asm_insn ("ll.d\t%0,%1", operands);
--- 929,935 ----
  	  UNSPEC_TI_FETCH))
     (clobber (match_scratch:DI 3 "=&r"))
     (clobber (match_scratch:DI 4 "=&r"))]
!   "loongarch_16b_atomic_lock_free_p ()"
  {
    output_asm_insn ("1:", operands);
    output_asm_insn ("ll.d\t%0,%1", operands);
***************
*** 998,1004 ****
  	   (match_operand:TI 2 "reg_or_0_operand" "rJ")]
  	  UNSPEC_TI_FETCH_DIRECT))
     (match_operand:SI    3 "const_int_operand")] ;; model
!   "TARGET_64BIT && ISA_HAS_SCQ"
  {
    /* Model is ignored as sc.q implies a full barrier.  */
    emit_insn (gen_atomic_fetch_<amop_ti_fetch>ti_scq (operands[0],
--- 982,988 ----
  	   (match_operand:TI 2 "reg_or_0_operand" "rJ")]
  	  UNSPEC_TI_FETCH_DIRECT))
     (match_operand:SI    3 "const_int_operand")] ;; model
!   "loongarch_16b_atomic_lock_free_p ()"
  {
    /* Model is ignored as sc.q implies a full barrier.  */
    emit_insn (gen_atomic_fetch_<amop_ti_fetch>ti_scq (operands[0],
diff -Nrcpad gcc-16-20251109/gcc/config/loongarch/t-loongarch gcc-16-20251116/gcc/config/loongarch/t-loongarch
*** gcc-16-20251109/gcc/config/loongarch/t-loongarch	Sun Nov  9 22:32:46 2025
--- gcc-16-20251116/gcc/config/loongarch/t-loongarch	Sun Nov 16 22:32:54 2025
*************** s-loongarch-evolution: $(srcdir)/config/
*** 103,110 ****
--- 103,113 ----
  	$(srcdir)/config/loongarch/genopts/gen-evolution.awk
  	$(SHELL) $< evolution_h > tmp-isa-evo.h
  	$(SHELL) $< evolution_c > tmp-isa-evo.cc
+ 	$(SHELL) $< evolution_def > tmp-isa-evo.def
  	$(SHELL) $(srcdir)/../move-if-change tmp-isa-evo.h \
  	    $(srcdir)/config/loongarch/loongarch-evolution.h
  	$(SHELL) $(srcdir)/../move-if-change tmp-isa-evo.cc \
  	    $(srcdir)/config/loongarch/loongarch-evolution.cc
+ 	$(SHELL) $(srcdir)/../move-if-change tmp-isa-evo.def \
+ 	    $(srcdir)/config/loongarch/loongarch-evol-attr.def
  	$(STAMP) $@
diff -Nrcpad gcc-16-20251109/gcc/config/pru/pru-protos.h gcc-16-20251116/gcc/config/pru/pru-protos.h
*** gcc-16-20251109/gcc/config/pru/pru-protos.h	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/config/pru/pru-protos.h	Sun Nov 16 22:32:54 2025
*************** extern int pru_get_ctable_base_offset (H
*** 72,77 ****
--- 72,79 ----
  
  extern int pru_symref2ioregno (rtx op);
  
+ extern rtx pru_fixup_jump_address_operand (rtx op);
+ 
  /* Forward declarations to avoid unnecessarily including headers.  */
  class simple_ipa_opt_pass;
  class gimple_opt_pass;
diff -Nrcpad gcc-16-20251109/gcc/config/pru/pru.cc gcc-16-20251116/gcc/config/pru/pru.cc
*** gcc-16-20251109/gcc/config/pru/pru.cc	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/config/pru/pru.cc	Sun Nov 16 22:32:54 2025
*************** int pru_symref2ioregno (rtx op)
*** 1534,1539 ****
--- 1534,1556 ----
      return -1;
  }
  
+ /* TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS has no arguments to help discern
+    which insn is using the address.  But PRU load/store instructions support
+    offsets, while call instructions do not.
+    So call this when expanding call patterns to revert the effect of
+    TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS.  */
+ rtx
+ pru_fixup_jump_address_operand (rtx op)
+ {
+   if (MEM_P (op)
+       && GET_CODE (XEXP (op, 0)) == PLUS)
+     {
+       rtx tmpval = force_reg (SImode, XEXP (op, 0));
+       op = gen_rtx_MEM (SImode, tmpval);
+     }
+   return op;
+ }
+ 
  /* Implement TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P.  */
  static bool
  pru_addr_space_legitimate_address_p (machine_mode mode, rtx operand,
*************** pru_addr_space_legitimate_address_p (mac
*** 1582,1587 ****
--- 1599,1627 ----
      }
    return false;
  }
+ 
+ /* Implement TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS.  */
+ rtx
+ pru_addr_space_legitimize_address (rtx x, rtx, machine_mode, addr_space_t)
+ {
+   if (CONST_INT_P (x) && optimize > 0)
+     {
+       HOST_WIDE_INT mask, base, index;
+       rtx base_reg;
+ 
+       /* Load/store with UBYTE offset is practically free for PRU.
+ 	 If there two or more operations with addresses in the same UBYTE
+ 	 address range, they all will share the base constant load operation.
+ 	 Clearing the lower 8 bits is a good heuristic to
+ 	 choose a common constant base address.  */
+       mask = 0xff;
+       base = INTVAL (x) & ~mask;
+       index = INTVAL (x) & mask;
+       base_reg = force_reg (SImode, GEN_INT (base));
+       x = plus_constant (Pmode, base_reg, index);
+     }
+   return x;
+ }
  
  /* Output assembly language related definitions.  */
  
*************** pru_unwind_word_mode (void)
*** 3246,3251 ****
--- 3286,3295 ----
  #define TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P \
    pru_addr_space_legitimate_address_p
  
+ #undef TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS
+ #define TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS \
+   pru_addr_space_legitimize_address
+ 
  #undef TARGET_INIT_LIBFUNCS
  #define TARGET_INIT_LIBFUNCS pru_init_libfuncs
  #undef TARGET_LIBFUNC_GNU_PREFIX
diff -Nrcpad gcc-16-20251109/gcc/config/pru/pru.h gcc-16-20251116/gcc/config/pru/pru.h
*** gcc-16-20251109/gcc/config/pru/pru.h	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/config/pru/pru.h	Sun Nov 16 22:32:54 2025
*************** enum reg_class
*** 239,252 ****
  #define REG_CLASS_CONTENTS					\
    {								\
      /* NO_REGS	      */ { 0, 0, 0, 0, 0},			\
!     /* SIB_REGS	      */ { 0xf, 0xff000000, ~0, 0xffffff, 0},	\
      /* LOOPCNTR_REGS  */ { 0, 0, 0, 0, 0xf},			\
!     /* MULDST_REGS    */ { 0, 0, 0, 0x00000f00, 0},		\
!     /* MULSRC0_REGS   */ { 0, 0, 0, 0x000f0000, 0},		\
!     /* MULSRC1_REGS   */ { 0, 0, 0, 0x00f00000, 0},		\
!     /* REGIO_REGS     */ { 0, 0, 0, 0xff000000, 0},		\
!     /* GP_REGS	      */ { ~0, ~0, ~0, ~0, 0},			\
!     /* ALL_REGS	      */ { ~0,~0, ~0, ~0, ~0}			\
    }
  
  
--- 239,252 ----
  #define REG_CLASS_CONTENTS					\
    {								\
      /* NO_REGS	      */ { 0, 0, 0, 0, 0},			\
!     /* SIB_REGS	      */ { 0xf, 0xff000000u, ~0u, 0xffffffu, 0},\
      /* LOOPCNTR_REGS  */ { 0, 0, 0, 0, 0xf},			\
!     /* MULDST_REGS    */ { 0, 0, 0, 0x00000f00u, 0},		\
!     /* MULSRC0_REGS   */ { 0, 0, 0, 0x000f0000u, 0},		\
!     /* MULSRC1_REGS   */ { 0, 0, 0, 0x00f00000u, 0},		\
!     /* REGIO_REGS     */ { 0, 0, 0, 0xff000000u, 0},		\
!     /* GP_REGS	      */ { ~0u, ~0u, ~0u, ~0u, 0},		\
!     /* ALL_REGS	      */ { ~0u, ~0u, ~0u, ~0u, ~0u}		\
    }
  
  
diff -Nrcpad gcc-16-20251109/gcc/config/pru/pru.md gcc-16-20251116/gcc/config/pru/pru.md
*** gcc-16-20251109/gcc/config/pru/pru.md	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/config/pru/pru.md	Sun Nov 16 22:32:54 2025
***************
*** 1289,1295 ****
  		    (match_operand 1 ""))
  	      (clobber (reg:HI RA_REGNUM))])]
    ""
!   "")
  
  (define_expand "call_value"
    [(parallel [(set (match_operand 0 "")
--- 1289,1297 ----
  		    (match_operand 1 ""))
  	      (clobber (reg:HI RA_REGNUM))])]
    ""
! {
!   operands[0] = pru_fixup_jump_address_operand (operands[0]);
! })
  
  (define_expand "call_value"
    [(parallel [(set (match_operand 0 "")
***************
*** 1297,1303 ****
  			 (match_operand 2 "")))
  	      (clobber (reg:HI RA_REGNUM))])]
    ""
!   "")
  
  (define_insn "*call"
    [(call (mem:SI (match_operand:SI 0 "call_operand" "i,r"))
--- 1299,1307 ----
  			 (match_operand 2 "")))
  	      (clobber (reg:HI RA_REGNUM))])]
    ""
! {
!   operands[1] = pru_fixup_jump_address_operand (operands[1]);
! })
  
  (define_insn "*call"
    [(call (mem:SI (match_operand:SI 0 "call_operand" "i,r"))
***************
*** 1325,1331 ****
  		    (match_operand 1 ""))
  	      (return)])]
    ""
!   "")
  
  (define_expand "sibcall_value"
    [(parallel [(set (match_operand 0 "")
--- 1329,1337 ----
  		    (match_operand 1 ""))
  	      (return)])]
    ""
! {
!   operands[0] = pru_fixup_jump_address_operand (operands[0]);
! })
  
  (define_expand "sibcall_value"
    [(parallel [(set (match_operand 0 "")
***************
*** 1333,1339 ****
  			 (match_operand 2 "")))
  	      (return)])]
    ""
!   "")
  
  (define_insn "*sibcall"
   [(call (mem:SI (match_operand:SI 0 "call_operand" "i,Rsib"))
--- 1339,1347 ----
  			 (match_operand 2 "")))
  	      (return)])]
    ""
! {
!   operands[1] = pru_fixup_jump_address_operand (operands[1]);
! })
  
  (define_insn "*sibcall"
   [(call (mem:SI (match_operand:SI 0 "call_operand" "i,Rsib"))
diff -Nrcpad gcc-16-20251109/gcc/config/riscv/andes-25-series.md gcc-16-20251116/gcc/config/riscv/andes-25-series.md
*** gcc-16-20251109/gcc/config/riscv/andes-25-series.md	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/config/riscv/andes-25-series.md	Sun Nov 16 22:32:54 2025
***************
*** 0 ****
--- 1,322 ----
+ ;; DFA-based pipeline description for Andes 25 series.
+ ;;
+ ;; Copyright (C) 2025 Free Software Foundation, Inc.
+ ;;
+ ;; 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_automaton "andes_25_arch, andes_25_vector")
+ 
+ ;; Integer pipeline
+ (define_cpu_unit "andes_25_pipe" "andes_25_arch")
+ ;; Division operation unit
+ (define_cpu_unit "andes_25_mdu" "andes_25_arch")
+ ;; Floating point units
+ (define_cpu_unit "andes_25_fpu, andes_25_fpu_eu" "andes_25_arch")
+ 
+ ;; Vector execution unit.
+ (define_cpu_unit "andes_25_vpu_lsu, andes_25_vpu_alu, andes_25_vpu_mac,
+ 		  andes_25_vpu_msk, andes_25_vpu_div, andes_25_vpu_fmac,
+ 		  andes_25_vpu_fmis, andes_25_vpu_perm, andes_25_vpu_pipe"
+ 		 "andes_25_vector")
+ 
+ ;; andes 25 series unsupported insns are mapped to dummies reservations
+ (define_reservation "andes_25_dummies"
+   "andes_25_pipe | andes_25_mdu | andes_25_fpu"
+ )
+ 
+ ;; andes 25 series vector unsupported insns are mapped to dummies reservations
+ (define_reservation "andes_25_vector_dummies"
+   "andes_25_vpu_lsu | andes_25_vpu_alu | andes_25_vpu_mac | andes_25_vpu_msk |
+    andes_25_vpu_div | andes_25_vpu_fmac | andes_25_vpu_fmis |
+    andes_25_vpu_perm | andes_25_vpu_pipe"
+ )
+ 
+ (define_reservation "andes_25_fpu_arith"
+   "(andes_25_pipe + andes_25_fpu), andes_25_fpu_eu * 2")
+ 
+ (define_reservation "andes_25_fpu_pipe"
+   "andes_25_pipe + andes_25_fpu")
+ 
+ (define_insn_reservation "andes_25_alu_insn" 1
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "unknown,const,arith,shift,slt,multi,nop,logical,move,
+ 			auipc,atomic"))
+   "andes_25_pipe")
+ 
+ (define_insn_reservation "andes_25_load_wd" 2
+   (and (eq_attr "tune" "andes_25_series")
+        (and (eq_attr "type" "load")
+ 	    (not (eq_attr "mode" "QI,HI"))))
+   "andes_25_pipe")
+ 
+ (define_insn_reservation "andes_25_load_bh" 3
+   (and (eq_attr "tune" "andes_25_series")
+        (and (eq_attr "type" "load")
+ 	    (eq_attr "mode" "QI,HI")))
+   "andes_25_pipe")
+ 
+ (define_insn_reservation "andes_25_store" 0
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "store"))
+   "andes_25_pipe")
+ 
+ (define_insn_reservation "andes_25_branch" 0
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "branch,jump,call,jalr,trap,ret"))
+   "andes_25_pipe")
+ 
+ (define_insn_reservation "andes_25_imul" 3
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "imul"))
+   "andes_25_pipe")
+ 
+ (define_insn_reservation "andes_25_idivsi" 38
+   (and (eq_attr "tune" "andes_25_series")
+        (and (eq_attr "type" "idiv")
+ 	    (eq_attr "mode" "SI")))
+   "andes_25_pipe, andes_25_mdu * 34")
+ 
+ (define_insn_reservation "andes_25_idivdi" 70
+   (and (eq_attr "tune" "andes_25_series")
+        (and (eq_attr "type" "idiv")
+ 	    (eq_attr "mode" "DI")))
+   "andes_25_pipe, andes_25_mdu * 66")
+ 
+ (define_insn_reservation "andes_25_xfer" 1
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "mfc,mtc"))
+   "andes_25_pipe")
+ 
+ (define_insn_reservation "andes_25_fpu_alu" 5
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "fadd"))
+   "andes_25_fpu_arith")
+ 
+ (define_insn_reservation "andes_25_fpu_mul" 5
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "fmul"))
+   "andes_25_fpu_arith")
+ 
+ (define_insn_reservation "andes_25_fpu_mac" 5
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "fmadd"))
+   "andes_25_fpu_arith")
+ 
+ (define_insn_reservation "andes_25_fpu_div" 33
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "fdiv"))
+   "andes_25_fpu_arith, andes_25_fpu_eu * 27")
+ 
+ (define_insn_reservation "andes_25_fpu_sqrt" 33
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "fsqrt"))
+   "andes_25_fpu_arith, andes_25_fpu_eu * 27")
+ 
+ (define_insn_reservation "andes_25_fpu_move" 3
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "fmove,mtc,mfc"))
+   "andes_25_fpu_pipe")
+ 
+ (define_insn_reservation "andes_25_fpu_cmp" 3
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "fcmp"))
+   "andes_25_fpu_pipe")
+ 
+ (define_insn_reservation "andes_25_fpu_cvt" 6
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "fcvt,fcvt_i2f,fcvt_f2i"))
+   "andes_25_fpu_arith, andes_25_fpu_eu")
+ 
+ (define_insn_reservation "andes_25_fpu_load" 3
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "fpload"))
+   "andes_25_fpu_pipe")
+ 
+ (define_insn_reservation "andes_25_fpu_store" 0
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "fpstore"))
+   "andes_25_fpu_pipe")
+ 
+ (define_insn_reservation "andes_25_bitmanip" 1
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "bitmanip"))
+   "andes_25_pipe")
+ 
+ ;; Vector pipeline.
+ 
+ (define_insn_reservation "andes_25_vload" 5
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "vlde,vldm,vlds,vldff,vldr"))
+   "(andes_25_vpu_pipe + andes_25_vpu_lsu)*3")
+ 
+ (define_insn_reservation "andes_25_index_vload" 8
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "vldux,vldox"))
+   "(andes_25_vpu_pipe + andes_25_vpu_lsu)*3")
+ 
+ (define_insn_reservation "andes_25_seg_vload" 16
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "vlsegde,vlsegds,vlsegdux,vlsegdox,vlsegdff"))
+   "(andes_25_vpu_pipe + andes_25_vpu_lsu)*3")
+ 
+ (define_insn_reservation "andes_25_vstore" 0
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "vste,vstm,vsts,vstux,vstox,vstr,vssegte,\
+ 			vssegts,vssegtux,vssegtox"))
+   "(andes_25_vpu_pipe + andes_25_vpu_lsu)*3")
+ 
+ (define_insn_reservation "andes_25_vialu" 1
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "vialu,vicalu,vshift,viminmax,vicmp,vimov,\
+ 			vsalu,vaalu,vmov,vector,vimerge"))
+   "andes_25_vpu_pipe + andes_25_vpu_alu")
+   
+ (define_insn_reservation "andes_25_widen_vialu" 2
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "viwalu, vext, vsshift"))
+   "andes_25_vpu_pipe + andes_25_vpu_alu")
+   
+ (define_insn_reservation "andes_25_narrow_vialu" 3
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "vnshift,vnclip"))
+   "andes_25_vpu_pipe + andes_25_vpu_alu")
+   
+ (define_insn_reservation "andes_25_vimul" 2
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "vimul,vimuladd,vsmul"))
+   "andes_25_vpu_pipe + andes_25_vpu_mac")
+ 
+ (define_insn_reservation "andes_25_widen_vimul" 3
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "viwmul,viwmuladd"))
+   "andes_25_vpu_pipe + andes_25_vpu_mac")
+ 
+ (define_insn_reservation "andes_25_vperm" 3
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "vslideup,vslidedown,vislide1up,vislide1down,\
+ 			vfslide1up,vfslide1down,vgather"))
+   "andes_25_vpu_pipe + andes_25_vpu_perm")
+   
+ (define_insn_reservation "andes_25_vcompress" 4
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "vcompress"))
+   "andes_25_vpu_pipe + andes_25_vpu_perm")
+ 
+ (define_insn_reservation "andes_25_vmovv" 7
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "vimovvx,vfmovvf"))
+   "(andes_25_vpu_pipe + andes_25_vpu_perm)*5")
+ 
+ (define_insn_reservation "andes_25_vmovx" 3
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "vimovxv,vfmovfv,vfmov"))
+   "andes_25_vpu_pipe + andes_25_vpu_perm")
+ 
+ (define_insn_reservation "andes_25_vreduction" 3
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "vired,viwred"))
+   "andes_25_vpu_pipe + andes_25_vpu_alu*5")
+ 
+ (define_insn_reservation "andes_25_vidiv" 35
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "vidiv"))
+   "andes_25_vpu_pipe + andes_25_vpu_div*34")
+ 
+ (define_insn_reservation "andes_25_vmask_2" 2
+   (eq_attr "type" "vmalu,vmsfs")
+   "andes_25_vpu_pipe + andes_25_vpu_msk")
+ 
+ (define_insn_reservation "andes_25_vmask_3" 3
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "vmiota,vmidx"))
+   "andes_25_vpu_pipe + andes_25_vpu_msk")
+ 
+ (define_insn_reservation "andes_25_vpopc" 6
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "vmpop"))
+   "andes_25_vpu_pipe + andes_25_vpu_msk")
+ 
+ (define_insn_reservation "andes_25_vffs" 7
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "vmffs"))
+   "andes_25_vpu_pipe + andes_25_vpu_msk")
+ 
+ (define_insn_reservation "andes_25_vfadd" 4
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "vfalu,vfwalu,vfmul,vfwmul,vfmuladd,\
+ 			vfwmuladd"))
+   "andes_25_vpu_pipe + andes_25_vpu_fmac")
+ 
+ (define_insn_reservation "andes_25_vfdiv" 39
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "vfdiv,vfsqrt"))
+   "andes_25_vpu_pipe + andes_25_vpu_div*19")
+ 
+ (define_insn_reservation "andes_25_vfmis" 2
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "vfminmax,vfcmp,vfsgnj,vfclass,vfmerge"))
+   "andes_25_vpu_pipe + andes_25_vpu_fmis")
+ 
+ (define_insn_reservation "andes_25_vfrecp" 3
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "vfrecp"))
+   "andes_25_vpu_pipe + andes_25_vpu_div")
+ 
+ (define_insn_reservation "andes_25_vfcvt" 2
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "vfcvtitof,vfcvtftoi"))
+   "andes_25_vpu_pipe + andes_25_vpu_fmis")
+ 
+ (define_insn_reservation "andes_25_widen_vfcvt" 5
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "vfwcvtitof,vfwcvtftoi,vfwcvtftof,vfwcvtbf16"))
+   "andes_25_vpu_pipe + andes_25_vpu_fmis")
+ 
+ (define_insn_reservation "andes_25_narrow_vfcvt" 4
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "vfncvtitof,vfncvtftoi,vfncvtftof,vfncvtbf16"))
+   "andes_25_vpu_pipe + andes_25_vpu_fmis")
+ 
+ (define_insn_reservation "andes_25_vfreduction" 6
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "vfredu,vfwredu,vfredo,vfwredo"))
+   "andes_25_vpu_pipe + andes_25_vpu_fmac*24")
+ 
+ (define_insn_reservation "andes_25_vesetvl" 1
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "vsetvl,vsetvl_pre"))
+   "andes_25_vpu_pipe")
+ 
+ (define_insn_reservation "andes_25_vcsr" 1
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "wrvxrm,wrfrm,rdvlenb,rdvl"))
+   "andes_25_vpu_pipe")
+ 
+ (define_insn_reservation "andes_25_unknown" 1
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "ghost,cpop,clz,ctz,zicond,mvpair,sfb_alu,minu,maxu,
+ 			min,max,clmul,rotate,crypto,condmove,rdfrm"))
+   "andes_25_dummies")
+ 
+ (define_insn_reservation "andes_25_vector_unknown" 1
+   (and (eq_attr "tune" "andes_25_series")
+        (eq_attr "type" "vclz,vror,vsha2ch,vsm4k,vaesef,vghsh,vsm4r,vsm3c,
+ 			vaeskf1,vandn,vaesdm,vclmul,vclmulh,vrol,vcpop,vbrev8,
+ 			vsm3me,vbrev,vctz,vgmul,vsha2ms,vaesz,vrev8,
+ 			vaeskf2,vsha2cl,vwsll,vaesdf,vaesem,vfwmaccbf16,
+ 			sf_vqmacc,sf_vc,sf_vc_se,sf_vfnrclip"))
+   "andes_25_vector_dummies")
diff -Nrcpad gcc-16-20251109/gcc/config/riscv/crypto.md gcc-16-20251116/gcc/config/riscv/crypto.md
*** gcc-16-20251109/gcc/config/riscv/crypto.md	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/config/riscv/crypto.md	Sun Nov 16 22:32:54 2025
***************
*** 173,178 ****
--- 173,212 ----
  				(zero_extend:SI (match_dup 2)))))]
    "operands[1] = gen_lowpart (SImode, operands[1]);")
  
+ (define_split
+   [(set (match_operand:DI 0 "register_operand")
+ 	(ior:DI (zero_extend:DI (match_operand:HI 1 "register_operand"))
+ 		(ashift:DI
+ 		  (sign_extend:DI (match_operand:HI 2 "register_operand"))
+ 		  (const_int 16))))]
+   "TARGET_ZBKB && TARGET_64BIT"
+   [(set (match_dup 0)
+ 	(sign_extend:DI (ior:SI (ashift:SI (match_dup 2) (const_int 16))
+ 				(zero_extend:SI (match_dup 1)))))]
+   "operands[2] = gen_lowpart (SImode, operands[2]);")
+ 
+ (define_split
+   [(set (match_operand:DI 0 "register_operand")
+ 	(ior:DI (sign_extend:DI
+ 		  (ashift:SI (match_operand:SI 1 "register_operand")
+ 			     (const_int 16)))
+ 		(zero_extend:DI (match_operand:HI 2 "register_operand"))))]
+   "TARGET_ZBKB && TARGET_64BIT"
+   [(set (match_dup 0)
+ 	(sign_extend:DI (ior:SI (ashift:SI (match_dup 1) (const_int 16))
+ 				(zero_extend:SI (match_dup 2)))))])
+ 
+ (define_split
+   [(set (match_operand:DI 0 "register_operand")
+ 	(ior:DI (zero_extend:DI (match_operand:HI 1 "register_operand"))
+ 		(sign_extend:DI
+ 		  (ashift:SI (match_operand:SI 2 "register_operand")
+ 			     (const_int 16)))))]
+   "TARGET_ZBKB && TARGET_64BIT"
+   [(set (match_dup 0)
+ 	(sign_extend:DI (ior:SI (ashift:SI (match_dup 2) (const_int 16))
+ 				(zero_extend:SI (match_dup 1)))))])
+ 
  ;; And this patches the result of the splitter above.
  (define_insn "*riscv_packw_2"
    [(set (match_operand:DI 0 "register_operand" "=r")
diff -Nrcpad gcc-16-20251109/gcc/config/riscv/riscv-cores.def gcc-16-20251116/gcc/config/riscv/riscv-cores.def
*** gcc-16-20251109/gcc/config/riscv/riscv-cores.def	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/config/riscv/riscv-cores.def	Sun Nov 16 22:32:54 2025
*************** RISCV_TUNE("xiangshan-kunminghu", xiangs
*** 53,58 ****
--- 53,59 ----
  RISCV_TUNE("generic-ooo", generic_ooo, generic_ooo_tune_info)
  RISCV_TUNE("size", generic, optimize_size_tune_info)
  RISCV_TUNE("mips-p8700", mips_p8700, mips_p8700_tune_info)
+ RISCV_TUNE("andes-25-series", andes_25_series, andes_25_tune_info)
  
  #undef RISCV_TUNE
  
*************** RISCV_CORE("xiangshan-kunminghu",   "rv6
*** 171,174 ****
--- 172,184 ----
  
  RISCV_CORE("mips-p8700",      "rv64imfd_zicsr_zifencei_zalrsc_zba_zbb",
  			      "mips-p8700")
+ 
+ RISCV_CORE("andes-n22",       "rv32imc_zicsr_zifencei_xandesperf",    "andes-25-series")
+ RISCV_CORE("andes-n25",       "rv32imc_zicsr_zifencei_xandesperf",    "andes-25-series")
+ RISCV_CORE("andes-a25",       "rv32imafdc_zicsr_zifencei_xandesperf", "andes-25-series")
+ RISCV_CORE("andes-nx25",      "rv64imc_zicsr_zifencei_xandesperf",    "andes-25-series")
+ RISCV_CORE("andes-ax25",      "rv64imafdc_zicsr_zifencei_xandesperf", "andes-25-series")
+ RISCV_CORE("andes-a27",       "rv32imafdc_zicsr_zifencei_xandesperf", "andes-25-series")
+ RISCV_CORE("andes-ax27",      "rv64imafdc_zicsr_zifencei_xandesperf", "andes-25-series")
+ 
  #undef RISCV_CORE
diff -Nrcpad gcc-16-20251109/gcc/config/riscv/riscv-opts.h gcc-16-20251116/gcc/config/riscv/riscv-opts.h
*** gcc-16-20251109/gcc/config/riscv/riscv-opts.h	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/config/riscv/riscv-opts.h	Sun Nov 16 22:32:54 2025
*************** enum riscv_microarchitecture_type {
*** 61,66 ****
--- 61,67 ----
    generic_ooo,
    mips_p8700,
    tt_ascalon_d8,
+   andes_25_series,
  };
  extern enum riscv_microarchitecture_type riscv_microarchitecture;
  
diff -Nrcpad gcc-16-20251109/gcc/config/riscv/riscv-target-attr.cc gcc-16-20251116/gcc/config/riscv/riscv-target-attr.cc
*** gcc-16-20251109/gcc/config/riscv/riscv-target-attr.cc	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/config/riscv/riscv-target-attr.cc	Sun Nov 16 22:32:54 2025
*************** riscv_process_target_str (string_slice a
*** 371,376 ****
--- 371,377 ----
  
    std::unique_ptr<char[]> buf (new char[len+1]);
    char *str_to_check = buf.get ();
+   str_to_check[len] = '\0';
    strncpy (str_to_check, args.begin (), args.size ());
  
    /* Used to catch empty spaces between semi-colons i.e.
diff -Nrcpad gcc-16-20251109/gcc/config/riscv/riscv.cc gcc-16-20251116/gcc/config/riscv/riscv.cc
*** gcc-16-20251109/gcc/config/riscv/riscv.cc	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/config/riscv/riscv.cc	Sun Nov 16 22:32:54 2025
*************** static const struct riscv_tune_param mip
*** 735,740 ****
--- 735,765 ----
    true,		/* prefer-agnostic.  */
  };
  
+ /* Costs to use when optimizing for Andes 25 series.  */
+ static const struct riscv_tune_param andes_25_tune_info = {
+   {COSTS_N_INSNS (4), COSTS_N_INSNS (5)},	/* fp_add */
+   {COSTS_N_INSNS (4), COSTS_N_INSNS (5)},	/* fp_mul */
+   {COSTS_N_INSNS (20), COSTS_N_INSNS (20)},	/* fp_div */
+   {COSTS_N_INSNS (2), COSTS_N_INSNS (2)},	/* int_mul */
+   {COSTS_N_INSNS (24), COSTS_N_INSNS (24)},	/* int_div */
+   1,						/* issue_rate */
+   3,						/* branch_cost */
+   3,						/* memory_cost */
+   8,						/* fmv_cost */
+   false,					/* slow_unaligned_access */
+   false,					/* vector_unaligned_access */
+   true,						/* use_divmod_expansion */
+   false,					/* overlap_op_by_pieces */
+   false,					/* use_zero_stride_load */
+   false,					/* speculative_sched_vsetvl */
+   RISCV_FUSE_NOTHING,				/* fusible_ops */
+   NULL,						/* vector cost */
+   NULL,						/* function_align */
+   NULL,						/* jump_align */
+   NULL,						/* loop_align */
+   true,						/* prefer-agnostic.  */
+ };
+ 
  static bool riscv_avoid_shrink_wrapping_separate ();
  static tree riscv_handle_fndecl_attribute (tree *, tree, tree, int, bool *);
  static tree riscv_handle_type_attribute (tree *, tree, tree, int, bool *);
*************** riscv_legitimize_move (machine_mode mode
*** 3731,3738 ****
  	      /* The low-part must be zero-extended when ELEN == 32 and
  		 mode == 64.  */
  	      if (num == 2 && i == 0)
! 		emit_insn (gen_extend_insn (int_reg, result, mode, smode,
! 					    true));
  
  	      if (i == 1)
  		{
--- 3756,3762 ----
  	      /* The low-part must be zero-extended when ELEN == 32 and
  		 mode == 64.  */
  	      if (num == 2 && i == 0)
! 		int_reg = convert_modes (mode, smode, result, true);
  
  	      if (i == 1)
  		{
*************** riscv_legitimize_move (machine_mode mode
*** 3779,3784 ****
--- 3803,3810 ----
  
        temp_reg = gen_reg_rtx (word_mode);
        zero_extend_p = (LOAD_EXTEND_OP (mode) == ZERO_EXTEND);
+       /* SRC is a MEM, so we can always extend it directly, so
+ 	 no need to indirect through convert_modes.  */
        emit_insn (gen_extend_insn (temp_reg, src, word_mode, mode,
  				  zero_extend_p));
        riscv_emit_move (dest, gen_lowpart (mode, temp_reg));
*************** riscv_legitimize_move (machine_mode mode
*** 3833,3841 ****
      {
        rtx mask = force_reg (word_mode, gen_int_mode (-65536, word_mode));
        rtx temp = gen_reg_rtx (word_mode);
!       emit_insn (gen_extend_insn (temp,
! 				  gen_lowpart (HImode, src),
! 				  word_mode, HImode, 1));
        if (word_mode == SImode)
  	emit_insn (gen_iorsi3 (temp, mask, temp));
        else
--- 3859,3866 ----
      {
        rtx mask = force_reg (word_mode, gen_int_mode (-65536, word_mode));
        rtx temp = gen_reg_rtx (word_mode);
!       temp = convert_modes (word_mode, HImode,
! 			    gen_lowpart (HImode, src), true);
        if (word_mode == SImode)
  	emit_insn (gen_iorsi3 (temp, mask, temp));
        else
*************** riscv_get_raw_result_mode (int regno)
*** 14144,14227 ****
    return default_get_reg_raw_mode (regno);
  }
  
! /* Generate a REG rtx of Xmode from the given rtx and mode.
!    The rtx x can be REG (QI/HI/SI/DI) or const_int.
!    The machine_mode mode is the original mode from define pattern.
!    The rtx_code can be ZERO_EXTEND or SIGN_EXTEND.
! 
!    If rtx is REG:
! 
!    1.  If rtx Xmode, the RTX x will be returned directly.
!    2.  If rtx non-Xmode, the value extended into a new REG of Xmode will be
!        returned.
! 
!    The scalar ALU like add don't support non-Xmode like QI/HI.  Then the
!    gen_lowpart will have problem here.  For example, when we would like
!    to add -1 (0xff if QImode) and 2 (0x2 if QImode).  The 0xff and 0x2 will
!    be loaded to register for adding.  Aka:
! 
!    0xff + 0x2 = 0x101 instead of -1 + 2 = 1.
! 
!    Thus we need to sign extend 0xff to 0xffffffffffffffff if Xmode is DImode
!    for correctness.  Similar the unsigned also need zero extend.
! 
!    If rtx is const_int:
! 
!    1.  A new REG rtx will be created to hold the value of const_int.
! 
!    According to the gccint doc, the constants generated for modes with fewer
!    bits than in HOST_WIDE_INT must be sign extended to full width.  Thus there
!    will be two cases here, take QImode as example.
! 
!    For .SAT_SUB (127, y) in QImode, we have (const_int 127) and one simple
!    mov from const_int to the new REG rtx is good enough here.
! 
!    For .SAT_SUB (254, y) in QImode, we have (const_int -2) after define_expand.
!    Aka 0xfffffffffffffffe in Xmode of RV64 but we actually need 0xfe in Xmode
!    of RV64.  So we need to cleanup the highest 56 bits of the new REG rtx moved
!    from the (const_int -2).
! 
!    Then the underlying expanding can perform the code generation based on
!    the REG rtx of Xmode, instead of taking care of these in expand func.  */
! 
  static rtx
  riscv_extend_to_xmode_reg (rtx x, machine_mode mode, enum rtx_code rcode)
  {
    gcc_assert (rcode == ZERO_EXTEND || rcode == SIGN_EXTEND);
  
!   rtx xmode_reg = gen_reg_rtx (Xmode);
! 
!   if (CONST_INT_P (x))
!     {
!       if (mode == Xmode)
! 	emit_move_insn (xmode_reg, x);
!       else if (rcode == ZERO_EXTEND)
! 	{
! 	  /* Combine deliberately does not simplify extensions of constants
! 	     (long story).  So try to generate the zero extended constant
! 	     efficiently.
! 
! 	     First extract the constant and mask off all the bits not in
! 	     MODE.  */
! 	  HOST_WIDE_INT val = INTVAL (x);
! 	  val &= GET_MODE_MASK (mode);
! 
! 	  /* X may need synthesis, so do not blindly copy it.  */
! 	  xmode_reg = force_reg (Xmode, gen_int_mode (val, Xmode));
! 	}
!       else /* SIGN_EXTEND.  */
! 	{
! 	  rtx x_reg = gen_reg_rtx (mode);
! 	  emit_move_insn (x_reg, x);
! 	  riscv_emit_unary (rcode, xmode_reg, x_reg);
! 	}
!     }
!   else if (mode == Xmode)
!     return x;
!   else
!     riscv_emit_unary (rcode, xmode_reg, x);
! 
!   return xmode_reg;
  }
  
  /* Implements the unsigned saturation add standard name usadd for int mode.
--- 14169,14182 ----
    return default_get_reg_raw_mode (regno);
  }
  
! /* Force X into an Xmode register.  */
  static rtx
  riscv_extend_to_xmode_reg (rtx x, machine_mode mode, enum rtx_code rcode)
  {
    gcc_assert (rcode == ZERO_EXTEND || rcode == SIGN_EXTEND);
  
!   rtx t = convert_modes (Xmode, mode, x, rcode == ZERO_EXTEND);
!   return force_reg (Xmode, t);
  }
  
  /* Implements the unsigned saturation add standard name usadd for int mode.
*************** synthesize_and (rtx operands[3])
*** 15871,15877 ****
        if (tmode != VOIDmode)
  	{
  	  rtx tmp = gen_lowpart (tmode, operands[1]);
! 	  emit_insn (gen_extend_insn (operands[0], tmp, word_mode, tmode, 1));
  	  return true;
  	}
      }
--- 15826,15833 ----
        if (tmode != VOIDmode)
  	{
  	  rtx tmp = gen_lowpart (tmode, operands[1]);
! 	  emit_move_insn (operands[0], convert_modes (word_mode, tmode,
! 						      tmp, true));
  	  return true;
  	}
      }
diff -Nrcpad gcc-16-20251109/gcc/config/riscv/riscv.md gcc-16-20251116/gcc/config/riscv/riscv.md
*** gcc-16-20251109/gcc/config/riscv/riscv.md	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/config/riscv/riscv.md	Sun Nov 16 22:32:54 2025
***************
*** 672,678 ****
  ;; Microarchitectures we know how to tune for.
  ;; Keep this in sync with enum riscv_microarchitecture.
  (define_attr "tune"
!   "generic,sifive_7,sifive_p400,sifive_p600,xiangshan,generic_ooo,mips_p8700,tt_ascalon_d8"
    (const (symbol_ref "((enum attr_tune) riscv_microarchitecture)")))
  
  ;; Describe a user's asm statement.
--- 672,679 ----
  ;; Microarchitectures we know how to tune for.
  ;; Keep this in sync with enum riscv_microarchitecture.
  (define_attr "tune"
!   "generic,sifive_7,sifive_p400,sifive_p600,xiangshan,generic_ooo,mips_p8700,
!    tt_ascalon_d8,andes_25_series"
    (const (symbol_ref "((enum attr_tune) riscv_microarchitecture)")))
  
  ;; Describe a user's asm statement.
***************
*** 790,803 ****
        rtx t6 = gen_reg_rtx (DImode);
  
        emit_insn (gen_addsi3_extended (t6, operands[1], operands[2]));
!       if (GET_CODE (operands[1]) != CONST_INT)
! 	emit_insn (gen_extend_insn (t4, operands[1], DImode, SImode, 0));
!       else
! 	t4 = operands[1];
!       if (GET_CODE (operands[2]) != CONST_INT)
! 	emit_insn (gen_extend_insn (t5, operands[2], DImode, SImode, 0));
!       else
! 	t5 = operands[2];
        emit_insn (gen_adddi3 (t3, t4, t5));
        rtx t7 = gen_lowpart (SImode, t6);
        SUBREG_PROMOTED_VAR_P (t7) = 1;
--- 791,798 ----
        rtx t6 = gen_reg_rtx (DImode);
  
        emit_insn (gen_addsi3_extended (t6, operands[1], operands[2]));
!       t4 = convert_modes (DImode, SImode, operands[1], false);
!       t5 = convert_modes (DImode, SImode, operands[2], false);
        emit_insn (gen_adddi3 (t3, t4, t5));
        rtx t7 = gen_lowpart (SImode, t6);
        SUBREG_PROMOTED_VAR_P (t7) = 1;
***************
*** 834,843 ****
        rtx t3 = gen_reg_rtx (DImode);
        rtx t4 = gen_reg_rtx (DImode);
  
!       if (GET_CODE (operands[1]) != CONST_INT)
! 	emit_insn (gen_extend_insn (t3, operands[1], DImode, SImode, 0));
!       else
! 	t3 = operands[1];
        emit_insn (gen_addsi3_extended (t4, operands[1], operands[2]));
        rtx t5 = gen_lowpart (SImode, t4);
        SUBREG_PROMOTED_VAR_P (t5) = 1;
--- 829,835 ----
        rtx t3 = gen_reg_rtx (DImode);
        rtx t4 = gen_reg_rtx (DImode);
  
!       t3 = convert_modes (DImode, SImode, operands[1], 0);
        emit_insn (gen_addsi3_extended (t4, operands[1], operands[2]));
        rtx t5 = gen_lowpart (SImode, t4);
        SUBREG_PROMOTED_VAR_P (t5) = 1;
***************
*** 981,994 ****
        rtx t6 = gen_reg_rtx (DImode);
  
        emit_insn (gen_subsi3_extended (t6, operands[1], operands[2]));
!       if (GET_CODE (operands[1]) != CONST_INT)
! 	emit_insn (gen_extend_insn (t4, operands[1], DImode, SImode, 0));
!       else
! 	t4 = operands[1];
!       if (GET_CODE (operands[2]) != CONST_INT)
! 	emit_insn (gen_extend_insn (t5, operands[2], DImode, SImode, 0));
!       else
! 	t5 = operands[2];
        emit_insn (gen_subdi3 (t3, t4, t5));
        rtx t7 = gen_lowpart (SImode, t6);
        SUBREG_PROMOTED_VAR_P (t7) = 1;
--- 973,980 ----
        rtx t6 = gen_reg_rtx (DImode);
  
        emit_insn (gen_subsi3_extended (t6, operands[1], operands[2]));
!       t4 = convert_modes (DImode, SImode, operands[1], false);
!       t5 = convert_modes (DImode, SImode, operands[2], false);
        emit_insn (gen_subdi3 (t3, t4, t5));
        rtx t7 = gen_lowpart (SImode, t6);
        SUBREG_PROMOTED_VAR_P (t7) = 1;
***************
*** 1028,1037 ****
        rtx t3 = gen_reg_rtx (DImode);
        rtx t4 = gen_reg_rtx (DImode);
  
!       if (GET_CODE (operands[1]) != CONST_INT)
! 	emit_insn (gen_extend_insn (t3, operands[1], DImode, SImode, 0));
!       else
! 	t3 = operands[1];
        emit_insn (gen_subsi3_extended (t4, operands[1], operands[2]));
        rtx t5 = gen_lowpart (SImode, t4);
        SUBREG_PROMOTED_VAR_P (t5) = 1;
--- 1014,1020 ----
        rtx t3 = gen_reg_rtx (DImode);
        rtx t4 = gen_reg_rtx (DImode);
  
!       t3 = convert_modes (DImode, SImode, operands[1], false);
        emit_insn (gen_subsi3_extended (t4, operands[1], operands[2]));
        rtx t5 = gen_lowpart (SImode, t4);
        SUBREG_PROMOTED_VAR_P (t5) = 1;
***************
*** 1191,1208 ****
        rtx t5 = gen_reg_rtx (DImode);
        rtx t6 = gen_reg_rtx (DImode);
  
!       if (GET_CODE (operands[1]) != CONST_INT)
! 	emit_insn (gen_extend_insn (t4, operands[1], DImode, SImode, 0));
!       else
! 	t4 = operands[1];
!       if (GET_CODE (operands[2]) != CONST_INT)
! 	emit_insn (gen_extend_insn (t5, operands[2], DImode, SImode, 0));
!       else
! 	t5 = operands[2];
        emit_insn (gen_muldi3 (t3, t4, t5));
  
        emit_move_insn (operands[0], gen_lowpart (SImode, t3));
!       emit_insn (gen_extend_insn (t6, operands[0], DImode, SImode, 0));
  
        riscv_expand_conditional_branch (operands[3], NE, t6, t3);
      }
--- 1174,1185 ----
        rtx t5 = gen_reg_rtx (DImode);
        rtx t6 = gen_reg_rtx (DImode);
  
!       t4 = convert_modes (DImode, SImode, operands[1], false);
!       t5 = convert_modes (DImode, SImode, operands[2], false);
        emit_insn (gen_muldi3 (t3, t4, t5));
  
        emit_move_insn (operands[0], gen_lowpart (SImode, t3));
!       t6 = convert_modes (DImode, SImode, operands[0], false);
  
        riscv_expand_conditional_branch (operands[3], NE, t6, t3);
      }
***************
*** 1238,1251 ****
        rtx t7 = gen_reg_rtx (DImode);
        rtx t8 = gen_reg_rtx (DImode);
  
!       if (GET_CODE (operands[1]) != CONST_INT)
! 	emit_insn (gen_extend_insn (t3, operands[1], DImode, SImode, 0));
!       else
! 	t3 = operands[1];
!       if (GET_CODE (operands[2]) != CONST_INT)
! 	emit_insn (gen_extend_insn (t4, operands[2], DImode, SImode, 0));
!       else
! 	t4 = operands[2];
  
        emit_insn (gen_ashldi3 (t5, t3, GEN_INT (32)));
        emit_insn (gen_ashldi3 (t6, t4, GEN_INT (32)));
--- 1215,1222 ----
        rtx t7 = gen_reg_rtx (DImode);
        rtx t8 = gen_reg_rtx (DImode);
  
!       t3 = convert_modes (DImode, SImode, operands[1], false);
!       t4 = convert_modes (DImode, SImode, operands[2], false);
  
        emit_insn (gen_ashldi3 (t5, t3, GEN_INT (32)));
        emit_insn (gen_ashldi3 (t6, t4, GEN_INT (32)));
***************
*** 5017,5019 ****
--- 4988,4991 ----
  (include "generic-vector-ooo.md")
  (include "generic-ooo.md")
  (include "tt-ascalon-d8.md")
+ (include "andes-25-series.md")
diff -Nrcpad gcc-16-20251109/gcc/config/riscv/sync.md gcc-16-20251116/gcc/config/riscv/sync.md
*** gcc-16-20251109/gcc/config/riscv/sync.md	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/config/riscv/sync.md	Sun Nov 16 22:32:54 2025
***************
*** 603,610 ****
      {
        /* We don't have SI mode compare on RV64, so we need to make sure expected
  	 value is sign-extended.  */
!       rtx tmp0 = gen_reg_rtx (word_mode);
!       emit_insn (gen_extend_insn (tmp0, operands[3], word_mode, <MODE>mode, 0));
        operands[3] = gen_lowpart (<MODE>mode, tmp0);
      }
  
--- 603,609 ----
      {
        /* We don't have SI mode compare on RV64, so we need to make sure expected
  	 value is sign-extended.  */
!       rtx tmp0 = convert_modes (word_mode, <MODE>mode, operands[3], false);
        operands[3] = gen_lowpart (<MODE>mode, tmp0);
      }
  
***************
*** 702,718 ****
  							 operands[6],
  							 operands[7]));
  
!   rtx val = gen_reg_rtx (SImode);
!   if (operands[1] != const0_rtx)
!     emit_move_insn (val, gen_rtx_SIGN_EXTEND (SImode, operands[1]));
!   else
!     emit_move_insn (val, const0_rtx);
! 
!   rtx exp = gen_reg_rtx (SImode);
!   if (operands[3] != const0_rtx)
!     emit_move_insn (exp, gen_rtx_SIGN_EXTEND (SImode, operands[3]));
!   else
!     emit_move_insn (exp, const0_rtx);
  
    rtx compare = val;
    if (exp != const0_rtx)
--- 701,708 ----
  							 operands[6],
  							 operands[7]));
  
!   rtx val = convert_modes (SImode, <SHORT:MODE>mode, operands[1], false);
!   rtx exp = convert_modes (SImode, <SHORT:MODE>mode, operands[3], false);
  
    rtx compare = val;
    if (exp != const0_rtx)
diff -Nrcpad gcc-16-20251109/gcc/config/s390/s390-opts.h gcc-16-20251116/gcc/config/s390/s390-opts.h
*** gcc-16-20251109/gcc/config/s390/s390-opts.h	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/config/s390/s390-opts.h	Sun Nov 16 22:32:55 2025
*************** enum indirect_branch {
*** 53,56 ****
--- 53,64 ----
    indirect_branch_thunk_inline,
    indirect_branch_thunk_extern
  };
+ 
+ 
+ /* Where to get the canary for the stack protector.  */
+ enum stack_protector_guard
+ {
+   SP_TLS,       /* per-thread canary in TLS block */
+   SP_GLOBAL     /* global canary */
+ };
  #endif
diff -Nrcpad gcc-16-20251109/gcc/config/s390/s390.h gcc-16-20251116/gcc/config/s390/s390.h
*** gcc-16-20251109/gcc/config/s390/s390.h	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/config/s390/s390.h	Sun Nov 16 22:32:55 2025
*************** enum processor_flags
*** 251,256 ****
--- 251,259 ----
     && (s390_tune < PROCESSOR_2964_Z13 || (VAL) != const0_rtx)		\
     && (!CONST_INT_P (LEN) || INTVAL ((LEN)) > TARGET_SETMEM_PREFETCH_DISTANCE))
  
+ #define TARGET_SP_GLOBAL_GUARD (s390_stack_protector_guard == SP_GLOBAL)
+ #define TARGET_SP_TLS_GUARD    (s390_stack_protector_guard == SP_TLS)
+ 
  /* Run-time target specification.  */
  
  /* Defaults for option flags defined only on some subtargets.  */
diff -Nrcpad gcc-16-20251109/gcc/config/s390/s390.md gcc-16-20251116/gcc/config/s390/s390.md
*** gcc-16-20251109/gcc/config/s390/s390.md	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/config/s390/s390.md	Sun Nov 16 22:32:55 2025
***************
*** 312,317 ****
--- 312,318 ----
  
     ; Stack Protector
     UNSPECV_SP_GET_TP
+    UNSPECV_SP_GLOBAL_GUARD_ADDR
    ])
  
  ;;
***************
*** 12059,12064 ****
--- 12060,12095 ----
  ; Stack Protector Patterns
  ;
  
+ (define_insn "stack_protect_global_guard_addr<mode>"
+   [(set (match_operand:P 0 "register_operand" "=d")
+ 	(unspec_volatile:P [(const_int 0)] UNSPECV_SP_GLOBAL_GUARD_ADDR))]
+   ""
+ {
+   if (flag_s390_stack_protector_guard_record)
+     fprintf (asm_out_file, "1:\n");
+   if (flag_pic)
+     {
+       if (TARGET_Z10)
+ 	output_asm_insn ("l<g>rl\t%0,__stack_chk_guard@GOTENT", operands);
+       else
+ 	{
+ 	  output_asm_insn ("larl\t%0,__stack_chk_guard@GOTENT", operands);
+ 	  output_asm_insn ("l<g>\t%0,0(%0)", operands);
+ 	}
+     }
+   else
+     output_asm_insn ("larl\t%0,__stack_chk_guard", operands);
+   if (flag_s390_stack_protector_guard_record)
+     fprintf (asm_out_file, "\t.section __stack_protector_loc,\\"a\\",@progbits\n"
+ 			   "\t.%s 1b\n"
+ 			   "\t.previous\n", TARGET_64BIT ? "quad" : "long");
+   return "";
+ }
+   [(set (attr "mnemonic")
+ 	(cond [(match_test "flag_pic &&  TARGET_Z10") (const_string "l<g>rl")
+ 	       (match_test "flag_pic && !TARGET_Z10") (const_string "*")]
+ 	      (const_string "larl")))])
+ 
  ; Insns stack_protect_get_tp{si,di} are similar to *get_tp_{31,64} but still
  ; distinct in the sense that they force recomputation of the thread pointer
  ; instead of potentially reloading it from stack.
***************
*** 12087,12102 ****
  	(match_operand 1 "memory_operand" ""))]
    ""
  {
! #ifdef TARGET_THREAD_SSP_OFFSET
!   rtx tp = gen_reg_rtx (Pmode);
!   if (TARGET_64BIT)
!     emit_insn (gen_stack_protect_get_tpdi (tp));
    else
!     emit_insn (gen_stack_protect_get_tpsi (tp));
!   operands[1]
!     = gen_rtx_MEM (Pmode, gen_rtx_PLUS (Pmode, tp,
! 					GEN_INT (TARGET_THREAD_SSP_OFFSET)));
  #endif
    if (TARGET_64BIT)
      emit_insn (gen_stack_protect_setdi (operands[0], operands[1]));
    else
--- 12118,12145 ----
  	(match_operand 1 "memory_operand" ""))]
    ""
  {
!   if (TARGET_SP_GLOBAL_GUARD)
!     {
!       rtx addr = gen_reg_rtx (Pmode);
!       if (TARGET_64BIT)
! 	emit_insn (gen_stack_protect_global_guard_addrdi (addr));
!       else
! 	emit_insn (gen_stack_protect_global_guard_addrsi (addr));
!       operands[1] = gen_rtx_MEM (Pmode, addr);
!     }
    else
!     {
! #ifdef TARGET_THREAD_SSP_OFFSET
!       rtx tp = gen_reg_rtx (Pmode);
!       if (TARGET_64BIT)
! 	emit_insn (gen_stack_protect_get_tpdi (tp));
!       else
! 	emit_insn (gen_stack_protect_get_tpsi (tp));
!       operands[1]
! 	= gen_rtx_MEM (Pmode, gen_rtx_PLUS (Pmode, tp,
! 					    GEN_INT (TARGET_THREAD_SSP_OFFSET)));
  #endif
+     }
    if (TARGET_64BIT)
      emit_insn (gen_stack_protect_setdi (operands[0], operands[1]));
    else
***************
*** 12120,12135 ****
    ""
  {
    rtx cc_reg, test;
! #ifdef TARGET_THREAD_SSP_OFFSET
!   rtx tp = gen_reg_rtx (Pmode);
!   if (TARGET_64BIT)
!     emit_insn (gen_stack_protect_get_tpdi (tp));
    else
!     emit_insn (gen_stack_protect_get_tpsi (tp));
!   operands[1]
!     = gen_rtx_MEM (Pmode, gen_rtx_PLUS (Pmode, tp,
! 					GEN_INT (TARGET_THREAD_SSP_OFFSET)));
  #endif
    if (TARGET_64BIT)
      emit_insn (gen_stack_protect_testdi (operands[0], operands[1]));
    else
--- 12163,12190 ----
    ""
  {
    rtx cc_reg, test;
!   if (TARGET_SP_GLOBAL_GUARD)
!     {
!       rtx addr = gen_reg_rtx (Pmode);
!       if (TARGET_64BIT)
! 	emit_insn (gen_stack_protect_global_guard_addrdi (addr));
!       else
! 	emit_insn (gen_stack_protect_global_guard_addrsi (addr));
!       operands[1] = gen_rtx_MEM (Pmode, addr);
!     }
    else
!     {
! #ifdef TARGET_THREAD_SSP_OFFSET
!       rtx tp = gen_reg_rtx (Pmode);
!       if (TARGET_64BIT)
! 	emit_insn (gen_stack_protect_get_tpdi (tp));
!       else
! 	emit_insn (gen_stack_protect_get_tpsi (tp));
!       operands[1]
! 	= gen_rtx_MEM (Pmode, gen_rtx_PLUS (Pmode, tp,
! 					    GEN_INT (TARGET_THREAD_SSP_OFFSET)));
  #endif
+     }
    if (TARGET_64BIT)
      emit_insn (gen_stack_protect_testdi (operands[0], operands[1]));
    else
diff -Nrcpad gcc-16-20251109/gcc/config/s390/s390.opt gcc-16-20251116/gcc/config/s390/s390.opt
*** gcc-16-20251109/gcc/config/s390/s390.opt	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/config/s390/s390.opt	Sun Nov 16 22:32:55 2025
*************** mno-stack-guard
*** 196,201 ****
--- 196,219 ----
  Target RejectNegative Alias(mstack-guard=,0) Negative(mstack-guard=)
  Switches off the -mstack-guard= option.
  
+ mstack-protector-guard=
+ Target RejectNegative Joined Enum(stack_protector_guard) Var(s390_stack_protector_guard) Init(SP_TLS)
+ Use given stack-protector guard.
+ 
+ Enum
+ Name(stack_protector_guard) Type(enum stack_protector_guard)
+ Valid arguments to -mstack-protector-guard=:
+ 
+ EnumValue
+ Enum(stack_protector_guard) String(tls) Value(SP_TLS)
+ 
+ EnumValue
+ Enum(stack_protector_guard) String(global) Value(SP_GLOBAL)
+ 
+ mstack-protector-guard-record
+ Target Var(flag_s390_stack_protector_guard_record)
+ Generate section __stack_protector_loc containing pointers to all instructions which load the address of the global guard.
+ 
  mstack-size=
  Target RejectNegative Joined UInteger Var(s390_stack_size) Save
  Emit extra code in the function prologue in order to trap if the stack size exceeds the given limit.
diff -Nrcpad gcc-16-20251109/gcc/config/s390/s390.opt.urls gcc-16-20251116/gcc/config/s390/s390.opt.urls
*** gcc-16-20251109/gcc/config/s390/s390.opt.urls	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/config/s390/s390.opt.urls	Sun Nov 16 22:32:55 2025
*************** UrlSuffix(gcc/S_002f390-and-zSeries-Opti
*** 51,56 ****
--- 51,62 ----
  mstack-guard=
  UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mstack-guard)
  
+ mstack-protector-guard=
+ UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mstack-protector-guard-4)
+ 
+ mstack-protector-guard-record
+ UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mstack-protector-guard-record)
+ 
  mstack-size=
  UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mstack-size-2)
  
diff -Nrcpad gcc-16-20251109/gcc/config/sol2.h gcc-16-20251116/gcc/config/sol2.h
*** gcc-16-20251109/gcc/config/sol2.h	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/config/sol2.h	Sun Nov 16 22:32:55 2025
*************** along with GCC; see the file COPYING3.
*** 158,168 ****
    "%{!symbolic:\
       %{p|pg:-ldl} -lc}"
  
- #ifndef CROSS_DIRECTORY_STRUCTURE
- #undef MD_EXEC_PREFIX
- #define MD_EXEC_PREFIX "/usr/ccs/bin/"
- #endif
- 
  /* Enable constructor priorities if the configured linker supports it.  */
  #undef SUPPORTS_INIT_PRIORITY
  #define SUPPORTS_INIT_PRIORITY HAVE_INITFINI_ARRAY_SUPPORT
--- 158,163 ----
*************** along with GCC; see the file COPYING3.
*** 199,211 ****
       %{ansi|std=c*|std=iso9899\\:199409:values-Xc.o%s; :values-Xa.o%s} \
       %{std=c90|std=gnu90:values-xpg4.o%s; :values-xpg6.o%s}}}"
  
- #if defined(HAVE_LD_PIE)
  #define STARTFILE_CRTBEGIN_SPEC "%{static:crtbegin.o%s; \
  				   shared|" PIE_SPEC ":crtbeginS.o%s; \
  				   :crtbegin.o%s}"
- #else
- #define STARTFILE_CRTBEGIN_SPEC	"crtbegin.o%s"
- #endif
  
  #if ENABLE_VTABLE_VERIFY
  #if SUPPORTS_INIT_PRIORITY
--- 194,202 ----
*************** along with GCC; see the file COPYING3.
*** 270,282 ****
  			crti.o%s %(startfile_arch) %(startfile_crtbegin) \
  			%(startfile_vtv)"
  
- #if defined(HAVE_LD_PIE)
  #define ENDFILE_CRTEND_SPEC "%{static:crtend.o%s; \
  			       shared|" PIE_SPEC ":crtendS.o%s; \
  			       :crtend.o%s}"
- #else
- #define ENDFILE_CRTEND_SPEC "crtend.o%s"
- #endif
  
  #undef  ENDFILE_SPEC
  #define ENDFILE_SPEC \
--- 261,269 ----
*************** along with GCC; see the file COPYING3.
*** 414,425 ****
  
  #ifdef USE_GLD
  /* GNU ld needs --eh-frame-hdr to create the required .eh_frame_hdr sections.  */
- #if defined(HAVE_LD_EH_FRAME_HDR)
  #define LINK_EH_SPEC "%{!static|static-pie:--eh-frame-hdr} "
- #endif /* HAVE_LD_EH_FRAME */
  #endif
  
- #if defined(HAVE_LD_PIE)
  #ifdef USE_GLD
  /* Assert -z text by default to match Solaris ld.  */
  #define LD_PIE_SPEC "-pie %{!mimpure-text:-z text}"
--- 401,409 ----
*************** along with GCC; see the file COPYING3.
*** 427,437 ****
  /* Solaris ld needs -z type=pie instead of -pie.  */
  #define LD_PIE_SPEC "-z type=pie %{mimpure-text:-z textoff}"
  #endif
- #else
- /* Error out if some part of PIE support is missing.  */
- #define LINK_PIE_SPEC \
-   "%{no-pie:} %{pie:%e-pie is not supported in this configuration} "
- #endif
  
  /* collect2.cc can only parse GNU nm -n output.  Solaris nm needs -png to
     produce the same format.  */
--- 411,416 ----
diff -Nrcpad gcc-16-20251109/gcc/config/sparc/sol2.h gcc-16-20251116/gcc/config/sparc/sol2.h
*** gcc-16-20251109/gcc/config/sparc/sol2.h	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/config/sparc/sol2.h	Sun Nov 16 22:32:55 2025
*************** extern const char *host_detect_local_cpu
*** 308,322 ****
  "
  
  #ifdef USE_GLD
- /* Since binutils 2.21, GNU ld supports new *_sol2 emulations to strictly
-    follow the Solaris 2 ABI.  Prefer them if present.  */
- #ifdef HAVE_LD_SOL2_EMULATION
  #define ARCH32_EMULATION "elf32_sparc_sol2"
  #define ARCH64_EMULATION "elf64_sparc_sol2"
- #else
- #define ARCH32_EMULATION "elf32_sparc"
- #define ARCH64_EMULATION "elf64_sparc"
- #endif
  #endif
  
  #define ARCH64_SUBDIR "sparcv9"
--- 308,315 ----
diff -Nrcpad gcc-16-20251109/gcc/config/vxworks/base/b_NULL.h gcc-16-20251116/gcc/config/vxworks/base/b_NULL.h
*** gcc-16-20251109/gcc/config/vxworks/base/b_NULL.h	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/config/vxworks/base/b_NULL.h	Sun Nov 16 22:32:55 2025
***************
*** 0 ****
--- 1,32 ----
+ /* 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.
+ 
+ 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 header wrapper addresses the issue that some versions of VxWorks have
+    started defining NULL in a way that doesn't work with C++ < 11, so we override
+    it with GCC's own stddef's NULL.  Include the VxWorks version of this header
+    nevertheless, as it might do other things than defining NULL, and beware that
+    it usually defines NULL unconditionally without undefining it first, unlike
+    what stddef.h does.  */
+ 
+ #undef NULL
+ #include_next <base/b_NULL.h>
+ #define __need_NULL
+ #include <stddef.h>
diff -Nrcpad gcc-16-20251109/gcc/config.gcc gcc-16-20251116/gcc/config.gcc
*** gcc-16-20251109/gcc/config.gcc	Sun Nov  9 22:32:45 2025
--- gcc-16-20251116/gcc/config.gcc	Sun Nov 16 22:32:53 2025
*************** loongarch*-*-*)
*** 502,507 ****
--- 502,508 ----
  	extra_headers="larchintrin.h lsxintrin.h lasxintrin.h"
  	extra_objs="loongarch-c.o loongarch-builtins.o loongarch-cpu.o loongarch-opts.o loongarch-def.o loongarch-evolution.o loongarch-target-attr.o"
  	extra_gcc_objs="loongarch-driver.o loongarch-cpu.o loongarch-opts.o loongarch-def.o"
+ 	target_gtfiles="\$(srcdir)/config/loongarch/loongarch-builtins.cc"
  	extra_options="${extra_options} g.opt fused-madd.opt"
  	;;
  nds32*)
*************** case ${target} in
*** 1140,1145 ****
--- 1141,1149 ----
    extra_headers="${extra_headers} ../vxworks/math.h ../vxworks/complex.h"
    extra_headers="${extra_headers} ../vxworks/inttypes.h ../vxworks/setjmp.h"
  
+   # The /././ sequence marks the beginning of the install name.
+   extra_headers="${extra_headers} ../vxworks/././base/b_NULL.h"
+ 
    # We provide (a tailored version of) stdint.h
    tm_file="${tm_file} vxworks-stdint.h"
    use_gcc_stdint=provide
*************** aarch64-*-mingw*)
*** 1312,1317 ****
--- 1316,1322 ----
  	    ;;
  	esac
  	default_use_cxa_atexit=yes
+ 	use_gcc_stdint=wrap
  	user_headers_inc_next_post="${user_headers_inc_next_post} float.h"
  	tm_defines="${tm_defines} TARGET_AARCH64_MS_ABI=1"
  	;;
diff -Nrcpad gcc-16-20251109/gcc/config.in gcc-16-20251116/gcc/config.in
*** gcc-16-20251109/gcc/config.in	Sun Nov  9 22:35:24 2025
--- gcc-16-20251116/gcc/config.in	Sun Nov 16 22:35:46 2025
***************
*** 361,366 ****
--- 361,372 ----
  #endif
  
  
+ /* Define if your assembler supports LSX and SCQ for 16B atomic. */
+ #ifndef USED_FOR_TARGET
+ #undef HAVE_AS_16B_ATOMIC
+ #endif
+ 
+ 
  /* Define if your assembler supports AEABI build attributes. */
  #ifndef USED_FOR_TARGET
  #undef HAVE_AS_AEABI_BUILD_ATTRIBUTES
***************
*** 1882,1893 ****
  #endif
  
  
- /* Define if your linker supports the *_sol2 emulations. */
- #ifndef USED_FOR_TARGET
- #undef HAVE_LD_SOL2_EMULATION
- #endif
- 
- 
  /* Define if your linker supports -Bstatic/-Bdynamic or equivalent options. */
  #ifndef USED_FOR_TARGET
  #undef HAVE_LD_STATIC_DYNAMIC
--- 1888,1893 ----
***************
*** 2069,2080 ****
  #endif
  
  
- /* Define if the system-provided CRTs are present on Solaris. */
- #ifndef USED_FOR_TARGET
- #undef HAVE_SOLARIS_CRTS
- #endif
- 
- 
  /* Define to 1 if you have the <stddef.h> header file. */
  #ifndef USED_FOR_TARGET
  #undef HAVE_STDDEF_H
--- 2069,2074 ----
diff -Nrcpad gcc-16-20251109/gcc/configure gcc-16-20251116/gcc/configure
*** gcc-16-20251109/gcc/configure	Sun Nov  9 22:35:24 2025
--- gcc-16-20251116/gcc/configure	Sun Nov 16 22:35:46 2025
*************** if ${gcc_cv_as_balign_and_p2align+:} fal
*** 26043,26049 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_balign_and_p2align=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.balign 4
  .p2align 2' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
--- 26043,26049 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_balign_and_p2align=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.balign 4
  .p2align 2' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
*************** if ${gcc_cv_as_max_skip_p2align+:} false
*** 26076,26082 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_max_skip_p2align=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.p2align 4,,7' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 26076,26082 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_max_skip_p2align=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.p2align 4,,7' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_literal16+:} false; then
*** 26108,26114 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_literal16=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.literal16' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 26108,26114 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_literal16=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.literal16' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_subsection_m1+:} false; t
*** 26140,26146 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_subsection_m1=no
!   if test x$gcc_cv_as != x; then
      $as_echo 'conftest_label1: .word 0
  .subsection -1
  conftest_label2: .word 0
--- 26140,26146 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_subsection_m1=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo 'conftest_label1: .word 0
  .subsection -1
  conftest_label2: .word 0
*************** conftest_label2: .word 0
*** 26152,26158 ****
    $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
    test $ac_status = 0; }; }
      then
! 	if test x$gcc_cv_nm != x; then
      $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1
      $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2
      if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1
--- 26152,26158 ----
    $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
    test $ac_status = 0; }; }
      then
! 	if test x"$gcc_cv_nm" != x; then
      $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1
      $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2
      if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1
*************** if ${gcc_cv_as_weak+:} false; then :
*** 26183,26189 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_weak=no
!   if test x$gcc_cv_as != x; then
      $as_echo '	.weak foobar' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 26183,26189 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_weak=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '	.weak foobar' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_weakref+:} false; then :
*** 26215,26221 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_weakref=no
!   if test x$gcc_cv_as != x; then
      $as_echo '	.weakref foobar, barfnot' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 26215,26221 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_weakref=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '	.weakref foobar, barfnot' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_nsubspa_comdat+:} false;
*** 26247,26253 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_nsubspa_comdat=no
!   if test x$gcc_cv_as != x; then
      $as_echo '	.SPACE $TEXT$
  	.NSUBSPA $CODE$,COMDAT' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
--- 26247,26253 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_nsubspa_comdat=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '	.SPACE $TEXT$
  	.NSUBSPA $CODE$,COMDAT' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
*************** if ${gcc_cv_as_hidden+:} false; then :
*** 26296,26302 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_hidden=no
!   if test x$gcc_cv_as != x; then
      $as_echo "$conftest_s" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 26296,26302 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_hidden=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo "$conftest_s" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_base64+:} false; then :
*** 26330,26336 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_base64=no
!   if test x$gcc_cv_as != x; then
      $as_echo '	.section .rodata
   	.base64 "Tm9uIHB1ZG9yIGVzdCBuaWwgc2NpcmUsIHB1ZG9yIG5pbCBkaXNjZXJlIHZlbGxlLgo="' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
--- 26330,26336 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_base64=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '	.section .rodata
   	.base64 "Tm9uIHB1ZG9yIGVzdCBuaWwgc2NpcmUsIHB1ZG9yIG5pbCBkaXNjZXJlIHZlbGxlLgo="' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
*************** if ${gcc_cv_as_cv_ucomp+:} false; then :
*** 26363,26369 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_cv_ucomp=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.cv_ucomp 0' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 26363,26369 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_cv_ucomp=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.cv_ucomp 0' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** bar:
*** 26426,26434 ****
  	ret
  	.size	bar, .-bar
  EOF
!     if test x$gcc_cv_as != x \
!        && test x$gcc_cv_ld != x \
!        && test x$gcc_cv_readelf != x \
         && $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \
         && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1 \
         && $gcc_cv_readelf --relocs --wide conftest \
--- 26426,26434 ----
  	ret
  	.size	bar, .-bar
  EOF
!     if test x"$gcc_cv_as" != x \
!        && test x"$gcc_cv_ld" != x \
!        && test x"$gcc_cv_readelf" != x \
         && $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \
         && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1 \
         && $gcc_cv_readelf --relocs --wide conftest \
*************** if test $in_tree_ld != yes ; then
*** 26472,26477 ****
--- 26472,26488 ----
      ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
      ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
      ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
+     case "${target}" in
+       *-*-solaris2*)
+ 	if test "$ld_vers_major" -gt 2; then
+ 	  :
+ 	elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -ge 30; then
+ 	  :
+ 	else
+ 	  as_fn_error $? "GNU ld 2.30 or later is required on Solaris (found GNU ld $ld_ver)" "$LINENO" 5
+ 	fi
+ 	;;
+     esac
    else
      case "${target}" in
        *-*-solaris2*)
*************** if test $in_tree_ld = yes ; then
*** 26578,26584 ****
       && test $in_tree_ld_is_elf = yes; then
      gcc_cv_ld_ro_rw_mix=read-write
    fi
! elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
    echo '.section myfoosect, "a"' > conftest1.s
    echo '.section myfoosect, "aw"' > conftest2.s
    echo '.byte 1' >> conftest2.s
--- 26589,26595 ----
       && test $in_tree_ld_is_elf = yes; then
      gcc_cv_ld_ro_rw_mix=read-write
    fi
! elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x -a x"$gcc_cv_objdump" != x ; then
    echo '.section myfoosect, "a"' > conftest1.s
    echo '.section myfoosect, "aw"' > conftest2.s
    echo '.byte 1' >> conftest2.s
*************** fi
*** 26660,26666 ****
  	     && test $in_tree_ld_is_elf = yes; then
  	    gcc_cv_initfini_array=yes
  	  fi
! 	elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
  	  case $target:$gas in
  	    *:yes)
  	      sh_flags='"a"'
--- 26671,26677 ----
  	     && test $in_tree_ld_is_elf = yes; then
  	    gcc_cv_initfini_array=yes
  	  fi
! 	elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x -a x"$gcc_cv_objdump" != x ; then
  	  case $target:$gas in
  	    *:yes)
  	      sh_flags='"a"'
*************** if ${gcc_cv_as_mno_relax+:} false; then
*** 26861,26867 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_mno_relax=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.text' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -mno-relax -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 26872,26878 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_mno_relax=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.text' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -mno-relax -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_leb128+:} false; then :
*** 26899,26905 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_leb128=no
!   if test x$gcc_cv_as != x; then
      $as_echo '	.data
  	.uleb128 L2 - L1
  L1:
--- 26910,26916 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_leb128=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '	.data
  	.uleb128 L2 - L1
  L1:
*************** if ${gcc_cv_as_cfi_directive+:} false; t
*** 26970,26976 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_cfi_directive=no
!   if test x$gcc_cv_as != x; then
      $as_echo '	.text
  	.cfi_startproc
  	.cfi_offset 0, 0
--- 26981,26987 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_cfi_directive=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '	.text
  	.cfi_startproc
  	.cfi_offset 0, 0
*************** if ${gcc_cv_as_cfi_advance_working+:} fa
*** 27055,27061 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_cfi_advance_working=no
!   if test x$gcc_cv_as != x; then
      $as_echo '	.text
  	.cfi_startproc
  	.cfi_adjust_cfa_offset 64
--- 27066,27072 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_cfi_advance_working=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '	.text
  	.cfi_startproc
  	.cfi_adjust_cfa_offset 64
*************** if ${gcc_cv_as_cfi_personality_directive
*** 27105,27111 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_cfi_personality_directive=no
!   if test x$gcc_cv_as != x; then
      $as_echo '	.text
  	.cfi_startproc
  	.cfi_personality 0, symbol
--- 27116,27122 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_cfi_personality_directive=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '	.text
  	.cfi_startproc
  	.cfi_personality 0, symbol
*************** if ${gcc_cv_as_cfi_sections_directive+:}
*** 27141,27147 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_cfi_sections_directive=no
!   if test x$gcc_cv_as != x; then
      $as_echo '	.text
  	.cfi_sections .debug_frame, .eh_frame
  	.cfi_startproc
--- 27152,27158 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_cfi_sections_directive=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '	.text
  	.cfi_sections .debug_frame, .eh_frame
  	.cfi_startproc
*************** if ${gcc_cv_as_eh_frame+:} false; then :
*** 27195,27201 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_eh_frame=no
!   if test x$gcc_cv_as != x; then
      $as_echo '	.text
  .LFB1:
  	.4byte	0
--- 27206,27212 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_eh_frame=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '	.text
  .LFB1:
  	.4byte	0
*************** if ${gcc_cv_as_section_exclude_e+:} fals
*** 27294,27300 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_section_exclude_e=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.section foo1,"e"
    .byte 0,0,0,0' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags --fatal-warnings -o conftest.o conftest.s >&5'
--- 27305,27311 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_section_exclude_e=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.section foo1,"e"
    .byte 0,0,0,0' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags --fatal-warnings -o conftest.o conftest.s >&5'
*************** if ${gcc_cv_as_section_exclude_hash+:} f
*** 27336,27342 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_section_exclude_hash=no
!   if test x$gcc_cv_as != x; then
      $as_echo "$conftest_s
       .byte 0,0,0,0" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
--- 27347,27353 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_section_exclude_hash=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo "$conftest_s
       .byte 0,0,0,0" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
*************** _ACEOF
*** 27368,27376 ****
  # Test if the assembler supports the section flag 'R' for specifying
  # section with SHF_GNU_RETAIN.
  case "${target}" in
!   # Solaris may use GNU assembler with Solairs ld.  Even if GNU
    # assembler supports the section flag 'R', it doesn't mean that
!   # Solairs ld supports it.
    *-*-solaris2*)
      gcc_cv_as_shf_gnu_retain=no
      ;;
--- 27379,27387 ----
  # Test if the assembler supports the section flag 'R' for specifying
  # section with SHF_GNU_RETAIN.
  case "${target}" in
!   # Solaris may use GNU assembler with Solaris ld.  Even if GNU
    # assembler supports the section flag 'R', it doesn't mean that
!   # Solaris ld supports it.
    *-*-solaris2*)
      gcc_cv_as_shf_gnu_retain=no
      ;;
*************** if ${gcc_cv_as_shf_gnu_retain+:} false;
*** 27381,27387 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_shf_gnu_retain=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.section .foo,"awR",%progbits
  .byte 0' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags --fatal-warnings -o conftest.o conftest.s >&5'
--- 27392,27398 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_shf_gnu_retain=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.section .foo,"awR",%progbits
  .byte 0' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags --fatal-warnings -o conftest.o conftest.s >&5'
*************** _ACEOF
*** 27414,27422 ****
  # Test if the assembler supports the section flag 'o' for specifying
  # section with link-order.
  case "${target}" in
!   # Solaris may use GNU assembler with Solairs ld.  Even if GNU
    # assembler supports the section flag 'o', it doesn't mean that
!   # Solairs ld supports it.
    *-*-solaris2*)
      gcc_cv_as_section_link_order=no
      ;;
--- 27425,27433 ----
  # Test if the assembler supports the section flag 'o' for specifying
  # section with link-order.
  case "${target}" in
!   # Solaris may use GNU assembler with Solaris ld.  Even if GNU
    # assembler supports the section flag 'o', it doesn't mean that
!   # Solaris ld supports it.
    *-*-solaris2*)
      gcc_cv_as_section_link_order=no
      ;;
*************** if ${gcc_cv_as_section_link_order+:} fal
*** 27427,27433 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_section_link_order=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.section .foo,"a"
  .byte 0
  .section __patchable_function_entries,"awo",%progbits,.foo
--- 27438,27444 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_section_link_order=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.section .foo,"a"
  .byte 0
  .section __patchable_function_entries,"awo",%progbits,.foo
*************** if ${gcc_cv_as_shf_merge+:} false; then
*** 27465,27471 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_shf_merge=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.section .rodata.str, "aMS", @progbits, 1' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags --fatal-warnings -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 27476,27482 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_shf_merge=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.section .rodata.str, "aMS", @progbits, 1' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags --fatal-warnings -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_shf_merge_percent+:} fals
*** 27493,27499 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_shf_merge_percent=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.section .rodata.str, "aMS", %progbits, 1' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags --fatal-warnings -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 27504,27510 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_shf_merge_percent=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.section .rodata.str, "aMS", %progbits, 1' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags --fatal-warnings -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_comdat_group+:} false; th
*** 27528,27534 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_comdat_group=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.section .text,"axG",@progbits,.foo,comdat' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags --fatal-warnings -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 27539,27545 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_comdat_group=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.section .text,"axG",@progbits,.foo,comdat' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags --fatal-warnings -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_comdat_group_percent+:} f
*** 27559,27565 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_comdat_group_percent=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.section .text,"axG",%progbits,.foo,comdat' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags --fatal-warnings -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 27570,27576 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_comdat_group_percent=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.section .text,"axG",%progbits,.foo,comdat' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags --fatal-warnings -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_comdat_group_group+:} fal
*** 27610,27616 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_comdat_group_group=no
!   if test x$gcc_cv_as != x; then
      $as_echo "$conftest_s" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 27621,27627 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_comdat_group_group=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo "$conftest_s" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** elif echo "$ld_ver" | grep GNU > /dev/nu
*** 27662,27682 ****
    fi
  else
    case "${target}" in
!     *-*-solaris2.1[1-9]*)
!       comdat_group=no
!       # Sun ld has COMDAT group support since Solaris 9, but it doesn't
!       # interoperate with GNU as until Solaris 11 build 130, i.e. ld
!       # version 1.688.
!       #
!       # If using Sun as for COMDAT group as emitted by GCC, one needs at
!       # least ld version 1.2267.
!       if test "$ld_vers_major" -gt 1; then
!         comdat_group=yes
!       elif test "x$gas_flag" = xyes && test "$ld_vers_minor" -ge 1688; then
! 	comdat_group=yes
!       elif test "$ld_vers_minor" -ge 2267; then
! 	comdat_group=yes
!       fi
        ;;
      *)
        # Assume linkers other than GNU ld don't support COMDAT group.
--- 27673,27680 ----
    fi
  else
    case "${target}" in
!     *-*-solaris2*)
!       comdat_group=yes
        ;;
      *)
        # Assume linkers other than GNU ld don't support COMDAT group.
*************** if ${gcc_cv_as_is_stmt+:} false; then :
*** 27709,27715 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_is_stmt=no
!   if test x$gcc_cv_as != x; then
      $as_echo '	.text
  	.file 1 "conf.c"
  	.loc 1 1 0 is_stmt 1' > conftest.s
--- 27707,27713 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_is_stmt=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '	.text
  	.file 1 "conf.c"
  	.loc 1 1 0 is_stmt 1' > conftest.s
*************** if ${gcc_cv_as_discriminator+:} false; t
*** 27743,27749 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_discriminator=no
!   if test x$gcc_cv_as != x; then
      $as_echo '	.text
  	.file 1 "conf.c"
  	.loc 1 1 0 discriminator 1' > conftest.s
--- 27741,27747 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_discriminator=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '	.text
  	.file 1 "conf.c"
  	.loc 1 1 0 discriminator 1' > conftest.s
*************** if ${gcc_cv_as_tls+:} false; then :
*** 28206,28212 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_tls=no
!   if test x$gcc_cv_as != x; then
      $as_echo "$conftest_s" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags $tls_as_opt -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 28204,28210 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_tls=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo "$conftest_s" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags $tls_as_opt -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** case $target_os in
*** 28240,28246 ****
  	else
  	  as_fn_error $? "ld version is known to have broken secrel32 relocations, configure without --enable-tls or with --disable-tls to remove this error. See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80881 for more information." "$LINENO" 5
  	fi
!       elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x; then
  	echo '.text'          > conftest.s
  	echo 'foo: nop'      >> conftest.s
  	echo '.data'         >> conftest.s
--- 28238,28244 ----
  	else
  	  as_fn_error $? "ld version is known to have broken secrel32 relocations, configure without --enable-tls or with --disable-tls to remove this error. See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80881 for more information." "$LINENO" 5
  	fi
!       elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x -a x"$gcc_cv_objdump" != x; then
  	echo '.text'          > conftest.s
  	echo 'foo: nop'      >> conftest.s
  	echo '.data'         >> conftest.s
*************** if ${gcc_cv_as_mmacosx_version_min+:} fa
*** 28463,28469 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_mmacosx_version_min=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.text' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -mmacosx-version-min=10.1 -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 28461,28467 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_mmacosx_version_min=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.text' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -mmacosx-version-min=10.1 -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_darwin_build_version+:} f
*** 28495,28501 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_darwin_build_version=no
!   if test x$gcc_cv_as != x; then
      $as_echo ' .build_version macos, 10, 14 sdk_version 10, 14' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -mmacosx-version-min=10.14 -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 28493,28499 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_darwin_build_version=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo ' .build_version macos, 10, 14 sdk_version 10, 14' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -mmacosx-version-min=10.14 -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_aarch64_mabi+:} false; th
*** 28534,28540 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_aarch64_mabi=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.text' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -mabi=lp64 -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 28532,28538 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_aarch64_mabi=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.text' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -mabi=lp64 -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_aarch64_picreloc+:} false
*** 28587,28593 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_aarch64_picreloc=no
!   if test x$gcc_cv_as != x; then
      $as_echo '
  	.text
  	ldr     x0, [x2, #:gotpage_lo15:globalsym]
--- 28585,28591 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_aarch64_picreloc=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '
  	.text
  	ldr     x0, [x2, #:gotpage_lo15:globalsym]
*************** if ${gcc_cv_as_aarch64_aeabi_build_attri
*** 28622,28628 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_aarch64_aeabi_build_attributes=no
!   if test x$gcc_cv_as != x; then
      $as_echo '
  	.aeabi_subsection aeabi_feature_and_bits, optional, ULEB128
  	.aeabi_attribute Tag_Feature_BTI, 1
--- 28620,28626 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_aarch64_aeabi_build_attributes=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '
  	.aeabi_subsection aeabi_feature_and_bits, optional, ULEB128
  	.aeabi_attribute Tag_Feature_BTI, 1
*************** if ${gcc_cv_as_alpha_explicit_relocs+:}
*** 28719,28725 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_alpha_explicit_relocs=no
!   if test x$gcc_cv_as != x; then
      $as_echo '	.set nomacro
  	.text
  	extbl	$3, $2, $3	!lituse_bytoff!1
--- 28717,28723 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_alpha_explicit_relocs=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '	.set nomacro
  	.text
  	extbl	$3, $2, $3	!lituse_bytoff!1
*************** if ${gcc_cv_as_alpha_jsrdirect_relocs+:}
*** 28762,28768 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_alpha_jsrdirect_relocs=no
!   if test x$gcc_cv_as != x; then
      $as_echo '	.set nomacro
  	.text
  	ldq	$27, a($29)	!literal!1
--- 28760,28766 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_alpha_jsrdirect_relocs=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '	.set nomacro
  	.text
  	ldq	$27, a($29)	!literal!1
*************** if ${gcc_cv_as_avr_mlink_relax+:} false;
*** 28799,28805 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_avr_mlink_relax=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.text' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags --mlink-relax -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 28797,28803 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_avr_mlink_relax=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.text' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags --mlink-relax -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_avr_mrmw+:} false; then :
*** 28831,28837 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_avr_mrmw=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.text' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -mrmw -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 28829,28835 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_avr_mrmw=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.text' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -mrmw -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_avr_mgccisr+:} false; the
*** 28863,28869 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_avr_mgccisr=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.text
        		    __gcc_isr 1
        		    __gcc_isr 2
--- 28861,28867 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_avr_mgccisr=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.text
        		    __gcc_isr 1
        		    __gcc_isr 2
*************** if ${gcc_cv_as_cris_no_mul_bug+:} false;
*** 29027,29033 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_cris_no_mul_bug=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.text' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -no-mul-bug-abort -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 29025,29031 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_cris_no_mul_bug=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.text' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -no-mul-bug-abort -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_sparc_relax+:} false; the
*** 29061,29067 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_sparc_relax=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.text' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -relax -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 29059,29065 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_sparc_relax=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.text' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -relax -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_sparc_gotdata_op+:} false
*** 29093,29099 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_sparc_gotdata_op=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.text
  .align 4
  foo:
--- 29091,29097 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_sparc_gotdata_op=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.text
  .align 4
  foo:
*************** if ${gcc_cv_as_sparc_ua_pcrel+:} false;
*** 29143,29149 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_sparc_ua_pcrel=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.text
  foo:
  	nop
--- 29141,29147 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_sparc_ua_pcrel=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.text
  foo:
  	nop
*************** if ${gcc_cv_as_sparc_ua_pcrel_hidden+:}
*** 29183,29189 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_sparc_ua_pcrel_hidden=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.data
  .align 4
  .byte 0x31
--- 29181,29187 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_sparc_ua_pcrel_hidden=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.data
  .align 4
  .byte 0x31
*************** if ${gcc_cv_as_sparc_offsetable_lo10+:}
*** 29237,29243 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_sparc_offsetable_lo10=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.text
  	or %g1, %lo(ab) + 12, %g1
  	or %g1, %lo(ab + 12), %g1' > conftest.s
--- 29235,29241 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_sparc_offsetable_lo10=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.text
  	or %g1, %lo(ab) + 12, %g1
  	or %g1, %lo(ab + 12), %g1' > conftest.s
*************** if ${gcc_cv_as_sparc_fmaf+:} false; then
*** 29275,29281 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_sparc_fmaf=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.text
         .register %g2, #scratch
         .register %g3, #scratch
--- 29273,29279 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_sparc_fmaf=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.text
         .register %g2, #scratch
         .register %g3, #scratch
*************** if ${gcc_cv_as_sparc_sparc4+:} false; th
*** 29314,29320 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_sparc_sparc4=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.text
         .register %g2, #scratch
         .register %g3, #scratch
--- 29312,29318 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_sparc_sparc4=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.text
         .register %g2, #scratch
         .register %g3, #scratch
*************** if ${gcc_cv_as_sparc_sparc5+:} false; th
*** 29357,29363 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_sparc_sparc5=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.text
         .register %g2, #scratch
         .register %g3, #scratch
--- 29355,29361 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_sparc_sparc5=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.text
         .register %g2, #scratch
         .register %g3, #scratch
*************** if ${gcc_cv_as_sparc_sparc6+:} false; th
*** 29394,29400 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_sparc_sparc6=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.text
         .register %g2, #scratch
         .register %g3, #scratch
--- 29392,29398 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_sparc_sparc6=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.text
         .register %g2, #scratch
         .register %g3, #scratch
*************** if ${gcc_cv_as_sparc_leon+:} false; then
*** 29431,29437 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_sparc_leon=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.text
         .register %g2, #scratch
         .register %g3, #scratch
--- 29429,29435 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_sparc_leon=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.text
         .register %g2, #scratch
         .register %g3, #scratch
*************** if ${gcc_cv_as_comm_has_align+:} false;
*** 29502,29508 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_comm_has_align=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.comm foo,1,32' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 29500,29506 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_comm_has_align=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.comm foo,1,32' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_ix86_pe_secrel32+:} false
*** 29535,29541 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_pe_secrel32=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.text
  foo:	nop
  .data
--- 29533,29539 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_pe_secrel32=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.text
  foo:	nop
  .data
*************** if ${gcc_cv_as_section_has_align+:} fals
*** 29577,29583 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_section_has_align=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.section lto_test,"dr0"' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -fatal-warnings -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 29575,29581 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_section_has_align=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.section lto_test,"dr0"' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -fatal-warnings -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_mllvm_x86_pad_for_align+:
*** 29616,29622 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_mllvm_x86_pad_for_align=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.text' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -mllvm -x86-pad-for-align=false -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 29614,29620 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_mllvm_x86_pad_for_align=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.text' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -mllvm -x86-pad-for-align=false -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_ix86_xbrace_comment+:} fa
*** 29650,29656 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_xbrace_comment=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.text' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -xbrace_comment=no -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 29648,29654 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_xbrace_comment=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.text' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -xbrace_comment=no -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_ix86_filds+:} false; then
*** 29682,29688 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_filds=no
!   if test x$gcc_cv_as != x; then
      $as_echo 'filds (%ebp); fists (%ebp)' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 29680,29686 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_filds=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo 'filds (%ebp); fists (%ebp)' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_ix86_fildq+:} false; then
*** 29714,29720 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_fildq=no
!   if test x$gcc_cv_as != x; then
      $as_echo 'fildq (%ebp); fistpq (%ebp)' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 29712,29718 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_fildq=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo 'fildq (%ebp); fistpq (%ebp)' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_ix86_cmov_sun_syntax+:} f
*** 29746,29752 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_cmov_sun_syntax=no
!   if test x$gcc_cv_as != x; then
      $as_echo 'cmovl.l %edx, %eax' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 29744,29750 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_cmov_sun_syntax=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo 'cmovl.l %edx, %eax' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_ix86_ffreep+:} false; the
*** 29778,29784 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_ffreep=no
!   if test x$gcc_cv_as != x; then
      $as_echo 'ffreep %st(1)' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 29776,29782 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_ffreep=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo 'ffreep %st(1)' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_ix86_quad+:} false; then
*** 29810,29816 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_quad=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.quad 0' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 29808,29814 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_quad=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.quad 0' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_ix86_sahf+:} false; then
*** 29842,29848 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_sahf=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.code64
         sahf' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
--- 29840,29846 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_sahf=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.code64
         sahf' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
*************** if ${gcc_cv_as_ix86_interunit_movq+:} fa
*** 29875,29881 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_interunit_movq=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.code64
         movq %mm0, %rax
         movq %rax, %xmm0' > conftest.s
--- 29873,29879 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_interunit_movq=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.code64
         movq %mm0, %rax
         movq %rax, %xmm0' > conftest.s
*************** if ${gcc_cv_as_ix86_hle+:} false; then :
*** 29910,29916 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_hle=no
!   if test x$gcc_cv_as != x; then
      $as_echo 'lock xacquire cmpxchg %esi, (%ecx)' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 29908,29914 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_hle=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo 'lock xacquire cmpxchg %esi, (%ecx)' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_ix86_swap+:} false; then
*** 29942,29948 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_swap=no
!   if test x$gcc_cv_as != x; then
      $as_echo 'movl.s %esp, %ebp' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 29940,29946 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_swap=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo 'movl.s %esp, %ebp' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_ix86_diff_sect_delta+:} f
*** 29974,29980 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_diff_sect_delta=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.section .rodata
  .L1:
          .long .L2-.L1
--- 29972,29978 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_diff_sect_delta=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.section .rodata
  .L1:
          .long .L2-.L1
*************** if ${gcc_cv_as_ix86_rep_lock_prefix+:} f
*** 30012,30018 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_rep_lock_prefix=no
!   if test x$gcc_cv_as != x; then
      $as_echo 'rep movsl
  	 rep ret
  	 rep nop
--- 30010,30016 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_rep_lock_prefix=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo 'rep movsl
  	 rep ret
  	 rep nop
*************** if ${gcc_cv_as_ix86_ud2+:} false; then :
*** 30050,30056 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_ud2=no
!   if test x$gcc_cv_as != x; then
      $as_echo 'ud2' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 30048,30054 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_ud2=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo 'ud2' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** fi
*** 30080,30091 ****
      if test x$gas = xyes; then
        as_ix86_gas_32_opt="--32"
      fi
!     if echo "$ld_ver" | grep GNU > /dev/null; then
!       if $gcc_cv_ld -V 2>/dev/null | grep elf_i386_sol2 > /dev/null; then
!         ld_ix86_gld_32_opt="-melf_i386_sol2"
!       else
!         ld_ix86_gld_32_opt="-melf_i386"
!       fi
      fi
  
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for R_386_TLS_GD_PLT reloc" >&5
--- 30078,30088 ----
      if test x$gas = xyes; then
        as_ix86_gas_32_opt="--32"
      fi
!     if test x$gnu_ld = xyes; then
!       case $target in
! 	*-*-solaris2*) ld_ix86_gld_32_opt="-melf_i386_sol2" ;;
! 	*)             ld_ix86_gld_32_opt="-melf_i386" ;;
!       esac
      fi
  
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for R_386_TLS_GD_PLT reloc" >&5
*************** if ${gcc_cv_as_ix86_tlsgdplt+:} false; t
*** 30094,30100 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_tlsgdplt=no
!   if test x$gcc_cv_as != x; then
      $as_echo 'call    tls_gd@tlsgdplt' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags $as_ix86_gas_32_opt -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 30091,30097 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_tlsgdplt=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo 'call    tls_gd@tlsgdplt' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags $as_ix86_gas_32_opt -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_ix86_tlsldmplt+:} false;
*** 30136,30142 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_tlsldmplt=no
!   if test x$gcc_cv_as != x; then
      $as_echo "$conftest_s" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags $as_ix86_gas_32_opt -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 30133,30139 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_tlsldmplt=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo "$conftest_s" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags $as_ix86_gas_32_opt -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_ix86_tlsldm+:} false; the
*** 30184,30190 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_tlsldm=no
!   if test x$gcc_cv_as != x; then
      $as_echo "$conftest_s" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags $as_ix86_gas_32_opt -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 30181,30187 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_tlsldm=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo "$conftest_s" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags $as_ix86_gas_32_opt -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_ix86_got32x+:} false; the
*** 30233,30239 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_got32x=no
!   if test x$gcc_cv_as != x; then
      $as_echo "$conftest_s" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags $as_ix86_gas_32_opt -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 30230,30236 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_got32x=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo "$conftest_s" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags $as_ix86_gas_32_opt -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** _ACEOF
*** 30274,30285 ****
  
      # Check if gas and gld support "addq %r23,foo@GOTTPOFF(%rip), %r15"
      # with R_X86_64_CODE_6_GOTTPOFF relocation.
!     if echo "$ld_ver" | grep GNU > /dev/null; then
!       if $gcc_cv_ld -V 2>/dev/null | grep elf_x86_64_sol2 > /dev/null; then
!         ld_ix86_gld_64_opt="-melf_x86_64_sol2"
!       else
!         ld_ix86_gld_64_opt="-melf_x86_64"
!       fi
      fi
      # Enforce 64-bit output with gas and gld.
      if test x$gas = xyes; then
--- 30271,30281 ----
  
      # Check if gas and gld support "addq %r23,foo@GOTTPOFF(%rip), %r15"
      # with R_X86_64_CODE_6_GOTTPOFF relocation.
!     if test x$gnu_ld = xyes; then
!       case $target in
! 	*-*-solaris2*) ld_ix86_gld_64_opt="-melf_x86_64_sol2" ;;
! 	*)             ld_ix86_gld_64_opt="-melf_x86_64" ;;
!       esac
      fi
      # Enforce 64-bit output with gas and gld.
      if test x$gas = xyes; then
*************** if ${gcc_cv_as_x86_64_code_6_gottpoff+:}
*** 30301,30307 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_x86_64_code_6_gottpoff=no
!   if test x$gcc_cv_as != x; then
      $as_echo "$conftest_s" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags $as_ix86_gas_64_opt -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 30297,30303 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_x86_64_code_6_gottpoff=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo "$conftest_s" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags $as_ix86_gas_64_opt -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_ix86_gotoff_in_data+:} fa
*** 30346,30352 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_gotoff_in_data=no
!   if test x$gcc_cv_as != x; then
      $as_echo '	.text
  .L0:
  	nop
--- 30342,30348 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_gotoff_in_data=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '	.text
  .L0:
  	nop
*************** if ${gcc_cv_as_ix86_tls_get_addr_via_got
*** 30401,30407 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_tls_get_addr_via_got=no
!   if test x$gcc_cv_as != x; then
      $as_echo "$conftest_s" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags $as_ix86_gas_32_opt -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 30397,30403 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ix86_tls_get_addr_via_got=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo "$conftest_s" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags $as_ix86_gas_32_opt -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_ia64_ltoffx_ldxmov_relocs
*** 30440,30446 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ia64_ltoffx_ldxmov_relocs=no
!   if test x$gcc_cv_as != x; then
      $as_echo '	.text
  	addl r15 = @ltoffx(x#), gp
  	;;
--- 30436,30442 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_ia64_ltoffx_ldxmov_relocs=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '	.text
  	addl r15 = @ltoffx(x#), gp
  	;;
*************** if ${gcc_cv_as_machine_directive+:} fals
*** 30482,30488 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_machine_directive=no
!   if test x$gcc_cv_as != x; then
      $as_echo '	.machine ppc7400' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 30478,30484 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_machine_directive=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '	.machine ppc7400' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_powerpc_mfcrf+:} false; t
*** 30528,30534 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_powerpc_mfcrf=no
!   if test x$gcc_cv_as != x; then
      $as_echo "$conftest_s" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 30524,30530 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_powerpc_mfcrf=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo "$conftest_s" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_power10_htm+:} false; the
*** 30571,30577 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_power10_htm=no
!   if test x$gcc_cv_as != x; then
      $as_echo "$conftest_s" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 30567,30573 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_power10_htm=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo "$conftest_s" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_powerpc_rel16+:} false; t
*** 30616,30622 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_powerpc_rel16=no
!   if test x$gcc_cv_as != x; then
      $as_echo "$conftest_s" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -a32 -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 30612,30618 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_powerpc_rel16=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo "$conftest_s" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -a32 -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_powerpc_vsx+:} false; the
*** 30657,30663 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_powerpc_vsx=no
!   if test x$gcc_cv_as != x; then
      $as_echo "$conftest_s" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -a32 -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 30653,30659 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_powerpc_vsx=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo "$conftest_s" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -a32 -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_powerpc_gnu_attribute+:}
*** 30689,30695 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_powerpc_gnu_attribute=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.gnu_attribute 4,1' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 30685,30691 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_powerpc_gnu_attribute=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.gnu_attribute 4,1' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_powerpc_entry_markers+:}
*** 30721,30727 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_powerpc_entry_markers=no
!   if test x$gcc_cv_as != x; then
      $as_echo ' .reloc .,R_PPC64_ENTRY; nop' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -a64 --fatal-warnings -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 30717,30723 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_powerpc_entry_markers=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo ' .reloc .,R_PPC64_ENTRY; nop' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -a64 --fatal-warnings -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_powerpc_pltseq_markers+:}
*** 30753,30759 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_powerpc_pltseq_markers=no
!   if test x$gcc_cv_as != x; then
      $as_echo ' .reloc .,R_PPC_PLTSEQ; nop' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -a32 --fatal-warnings -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 30749,30755 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_powerpc_pltseq_markers=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo ' .reloc .,R_PPC_PLTSEQ; nop' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -a32 --fatal-warnings -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_aix_ref+:} false; then :
*** 30787,30793 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_aix_ref=no
!   if test x$gcc_cv_as != x; then
      $as_echo '	.csect stuff[rw]
  	     stuff:
  		.long 1
--- 30783,30789 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_aix_ref=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '	.csect stuff[rw]
  	     stuff:
  		.long 1
*************** if ${gcc_cv_as_aix_dwloc+:} false; then
*** 30824,30830 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_aix_dwloc=no
!   if test x$gcc_cv_as != x; then
      $as_echo '	.dwsect 0xA0000
  	Lframe..0:
  		.vbyte 4,Lframe..0
--- 30820,30826 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_aix_dwloc=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '	.dwsect 0xA0000
  	Lframe..0:
  		.vbyte 4,Lframe..0
*************** if ${gcc_cv_as_mips_explicit_relocs_pcre
*** 30863,30869 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_mips_explicit_relocs_pcrel=no
!   if test x$gcc_cv_as != x; then
      $as_echo '	lui $4,%pcrel_hi(foo)' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 30859,30865 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_mips_explicit_relocs_pcrel=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '	lui $4,%pcrel_hi(foo)' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_mips_explicit_relocs+:} f
*** 30896,30902 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_mips_explicit_relocs=no
!   if test x$gcc_cv_as != x; then
      $as_echo '	lw $4,%gp_rel(foo)($4)' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 30892,30898 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_mips_explicit_relocs=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '	lw $4,%gp_rel(foo)($4)' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_mips_no_shared+:} false;
*** 30937,30943 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_mips_no_shared=no
!   if test x$gcc_cv_as != x; then
      $as_echo 'nop' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -mno-shared -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 30933,30939 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_mips_no_shared=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo 'nop' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -mno-shared -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_mips_gnu_attribute+:} fal
*** 30969,30975 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_mips_gnu_attribute=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.gnu_attribute 4,1' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 30965,30971 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_mips_gnu_attribute=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.gnu_attribute 4,1' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_mips_dot_module+:} false;
*** 31001,31007 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_mips_dot_module=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.module mips2
         .module fp=xx' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -32 -o conftest.o conftest.s >&5'
--- 30997,31003 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_mips_dot_module=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.module mips2
         .module fp=xx' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -32 -o conftest.o conftest.s >&5'
*************** if ${gcc_cv_as_micromips_support+:} fals
*** 31038,31044 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_micromips_support=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.set micromips' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags --fatal-warnings -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 31034,31040 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_micromips_support=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.set micromips' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags --fatal-warnings -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_mips_dtprelword+:} false;
*** 31070,31076 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_mips_dtprelword=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.section .tdata,"awT",@progbits
  x:
  	.word 2
--- 31066,31072 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_mips_dtprelword=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.section .tdata,"awT",@progbits
  x:
  	.word 2
*************** if ${gcc_cv_as_mips_dspr1_mult+:} false;
*** 31106,31112 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_mips_dspr1_mult=no
!   if test x$gcc_cv_as != x; then
      $as_echo '	.set	mips32r2
  	.set	nodspr2
  	.set	dsp
--- 31102,31108 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_mips_dspr1_mult=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '	.set	mips32r2
  	.set	nodspr2
  	.set	dsp
*************** $as_echo_n "checking assembler and linke
*** 31149,31155 ****
             && test $in_tree_ld_is_elf = yes; then
            gcc_cv_as_ld_jalr_reloc=yes
          fi
!       elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x; then
          echo '	.ent x' > conftest.s
          echo 'x:	lw $2,%got_disp(y)($3)' >> conftest.s
          echo '	lw $25,%call16(y)($28)' >> conftest.s
--- 31145,31151 ----
             && test $in_tree_ld_is_elf = yes; then
            gcc_cv_as_ld_jalr_reloc=yes
          fi
!       elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x -a x"$gcc_cv_objdump" != x; then
          echo '	.ent x' > conftest.s
          echo 'x:	lw $2,%got_disp(y)($3)' >> conftest.s
          echo '	lw $25,%call16(y)($28)' >> conftest.s
*************** else
*** 31190,31198 ****
  		 -o "$gcc_cv_gld_major_version" -gt 2; then
  	   gcc_cv_ld_mips_personality_relaxation=yes
  	 fi
!        elif test x$gcc_cv_as != x \
!        	    	 -a x$gcc_cv_ld != x \
! 		 -a x$gcc_cv_readelf != x ; then
  	 cat > conftest.s <<EOF
  	.cfi_startproc
  	.cfi_personality 0x80,indirect_ptr
--- 31186,31194 ----
  		 -o "$gcc_cv_gld_major_version" -gt 2; then
  	   gcc_cv_ld_mips_personality_relaxation=yes
  	 fi
!        elif test x"$gcc_cv_as" != x \
!        	    	 -a x"$gcc_cv_ld" != x \
! 		 -a x"$gcc_cv_readelf" != x ; then
  	 cat > conftest.s <<EOF
  	.cfi_startproc
  	.cfi_personality 0x80,indirect_ptr
*************** if ${gcc_cv_as_mips_nan+:} false; then :
*** 31235,31241 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_mips_nan=no
!   if test x$gcc_cv_as != x; then
      $as_echo '' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -mnan=2008 -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 31231,31237 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_mips_nan=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -mnan=2008 -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_msp430_gnu_attribute+:} f
*** 31274,31280 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_msp430_gnu_attribute=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.gnu_attribute 4,1' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 31270,31276 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_msp430_gnu_attribute=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.gnu_attribute 4,1' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_msp430_mspabi_attribute+:
*** 31305,31311 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_msp430_mspabi_attribute=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.mspabi_attribute 4,2' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 31301,31307 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_msp430_mspabi_attribute=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.mspabi_attribute 4,2' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_riscv_attribute+:} false;
*** 31343,31349 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_riscv_attribute=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.attribute stack_align,4' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 31339,31345 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_riscv_attribute=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.attribute stack_align,4' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_riscv_isa_spec+:} false;
*** 31374,31380 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_riscv_isa_spec=no
!   if test x$gcc_cv_as != x; then
      $as_echo '' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -misa-spec=2.2 -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 31370,31376 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_riscv_isa_spec=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -misa-spec=2.2 -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_riscv_march_zifencei+:} f
*** 31405,31411 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_riscv_march_zifencei=no
!   if test x$gcc_cv_as != x; then
      $as_echo '' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -march=rv32i_zifencei2p0 -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 31401,31407 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_riscv_march_zifencei=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -march=rv32i_zifencei2p0 -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_riscv_march_zaamo_zalrsc+
*** 31436,31442 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_riscv_march_zaamo_zalrsc=no
!   if test x$gcc_cv_as != x; then
      $as_echo '' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -march=rv32i_zaamo_zalrsc -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 31432,31438 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_riscv_march_zaamo_zalrsc=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -march=rv32i_zaamo_zalrsc -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_riscv_march_b+:} false; t
*** 31467,31473 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_riscv_march_b=no
!   if test x$gcc_cv_as != x; then
      $as_echo '' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -march=rv32i_b -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 31463,31469 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_riscv_march_b=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -march=rv32i_b -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_loongarch_dtprelword+:} f
*** 31500,31506 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_loongarch_dtprelword=no
!   if test x$gcc_cv_as != x; then
      $as_echo '' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags 2,18,0 -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 31496,31502 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_loongarch_dtprelword=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags 2,18,0 -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_loongarch_explicit_relocs
*** 31535,31541 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_loongarch_explicit_relocs=no
!   if test x$gcc_cv_as != x; then
      $as_echo 'a:pcalau12i $t0,%pc_hi20(a)' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 31531,31537 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_loongarch_explicit_relocs=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo 'a:pcalau12i $t0,%pc_hi20(a)' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_loongarch_call36+:} false
*** 31566,31572 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_loongarch_call36=no
!   if test x$gcc_cv_as != x; then
      $as_echo 'pcaddu18i $r1, %call36(a)
         jirl $r1, $r1, 0' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
--- 31562,31568 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_loongarch_call36=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo 'pcaddu18i $r1, %call36(a)
         jirl $r1, $r1, 0' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
*************** if ${gcc_cv_as_loongarch_eh_frame_pcrel_
*** 31598,31604 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_loongarch_eh_frame_pcrel_encoding_support=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.cfi_startproc
         .cfi_personality 0x9b,a
         .cfi_lsda 0x1b,b
--- 31594,31600 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_loongarch_eh_frame_pcrel_encoding_support=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.cfi_startproc
         .cfi_personality 0x9b,a
         .cfi_lsda 0x1b,b
*************** if ${gcc_cv_as_loongarch_relax+:} false;
*** 31632,31638 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_loongarch_relax=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.text' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -mrelax -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 31628,31634 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_loongarch_relax=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.text' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -mrelax -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_loongarch_cond_branch_rel
*** 31663,31669 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_loongarch_cond_branch_relax=no
!   if test x$gcc_cv_as != x; then
      $as_echo 'a:
         .rept 32769
         nop
--- 31659,31665 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_loongarch_cond_branch_relax=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo 'a:
         .rept 32769
         nop
*************** if ${gcc_cv_as_loongarch_tls_le_relaxati
*** 31698,31704 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_loongarch_tls_le_relaxation_support=no
!   if test x$gcc_cv_as != x; then
      $as_echo 'lu12i.w $t0,%le_hi20_r(a)' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 31694,31700 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_loongarch_tls_le_relaxation_support=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo 'lu12i.w $t0,%le_hi20_r(a)' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** $as_echo "#define HAVE_AS_TLS_LE_RELAXAT
*** 31723,31728 ****
--- 31719,31756 ----
  
  fi
  
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for 16-byte atomic support" >&5
+ $as_echo_n "checking assembler for 16-byte atomic support... " >&6; }
+ if ${gcc_cv_as_loongarch_16_byte_atomic_support+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   gcc_cv_as_loongarch_16_byte_atomic_support=no
+   if test x"$gcc_cv_as" != x; then
+     $as_echo 'vori.b $vr0, $vr1, 0
+        sc.q $a0, $a1, $a2, 0' > conftest.s
+     if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
+   { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+   (eval $ac_try) 2>&5
+   ac_status=$?
+   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+   test $ac_status = 0; }; }
+     then
+ 	gcc_cv_as_loongarch_16_byte_atomic_support=yes
+     else
+       echo "configure: failed program was" >&5
+       cat conftest.s >&5
+     fi
+     rm -f conftest.o conftest.s
+   fi
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_loongarch_16_byte_atomic_support" >&5
+ $as_echo "$gcc_cv_as_loongarch_16_byte_atomic_support" >&6; }
+ if test $gcc_cv_as_loongarch_16_byte_atomic_support = yes; then
+ 
+ $as_echo "#define HAVE_AS_16B_ATOMIC 1" >>confdefs.h
+ 
+ fi
+ 
      ;;
      s390*-*-*)
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for .gnu_attribute support" >&5
*************** if ${gcc_cv_as_s390_gnu_attribute+:} fal
*** 31731,31737 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_s390_gnu_attribute=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.gnu_attribute 8,1' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 31759,31765 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_s390_gnu_attribute=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.gnu_attribute 8,1' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_s390_machine_machinemode+
*** 31762,31768 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_s390_machine_machinemode=no
!   if test x$gcc_cv_as != x; then
      $as_echo '	.machinemode push
  	.machinemode pop
  	.machine push
--- 31790,31796 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_s390_machine_machinemode=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '	.machinemode push
  	.machinemode pop
  	.machine push
*************** if ${gcc_cv_as_s390_architecture_modifie
*** 31796,31802 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_s390_architecture_modifiers=no
!   if test x$gcc_cv_as != x; then
      $as_echo '	.machine z13+vx ' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 31824,31830 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_s390_architecture_modifiers=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '	.machine z13+vx ' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_s390_vector_loadstore_ali
*** 31827,31833 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_s390_vector_loadstore_alignment_hints=no
!   if test x$gcc_cv_as != x; then
      $as_echo '	vl %v24,0(%r15),3 ' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 31855,31861 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_s390_vector_loadstore_alignment_hints=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '	vl %v24,0(%r15),3 ' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_s390_vector_loadstore_ali
*** 31858,31864 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_s390_vector_loadstore_alignment_hints_on_z13=no
!   if test x$gcc_cv_as != x; then
      $as_echo '	vl %v24,0(%r15),3 ' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -mzarch -march=z13 -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 31886,31892 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_s390_vector_loadstore_alignment_hints_on_z13=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '	vl %v24,0(%r15),3 ' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags -mzarch -march=z13 -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** case "$target" in
*** 31911,31917 ****
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking llvm assembler version" >&5
  $as_echo_n "checking llvm assembler version... " >&6; }
      gcc_cv_as_version="unknown"
!     if test x$gcc_cv_as != x; then
        gcc_cv_as_version=`$gcc_cv_as --version 2>&1 | sed -ne '/version/s/.* \([0-9]\)/\1/p' || echo error`
        case "$gcc_cv_as_version" in
  	13.0.[1-9]*) ;;          # 13.0.1+
--- 31939,31945 ----
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking llvm assembler version" >&5
  $as_echo_n "checking llvm assembler version... " >&6; }
      gcc_cv_as_version="unknown"
!     if test x"$gcc_cv_as" != x; then
        gcc_cv_as_version=`$gcc_cv_as --version 2>&1 | sed -ne '/version/s/.* \([0-9]\)/\1/p' || echo error`
        case "$gcc_cv_as_version" in
  	13.0.[1-9]*) ;;          # 13.0.1+
*************** if ${gcc_cv_as_arm_option_extensions+:}
*** 31936,31942 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_arm_option_extensions=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.text
  	.thumb
  	.syntax unified
--- 31964,31970 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_arm_option_extensions=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.text
  	.thumb
  	.syntax unified
*************** if ${gcc_cv_as_dwarf2_debug_line+:} fals
*** 31996,32002 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_dwarf2_debug_line=no
!   if test x$gcc_cv_as != x; then
      $as_echo "$conftest_s" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 32024,32030 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_dwarf2_debug_line=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo "$conftest_s" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_dwarf2_file_buggy+:} fals
*** 32036,32042 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_dwarf2_file_buggy=no
!   if test x$gcc_cv_as != x; then
      $as_echo '	.file 1 "foo.s"
  	.file 1 "bar.s"' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
--- 32064,32070 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_dwarf2_file_buggy=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '	.file 1 "foo.s"
  	.file 1 "bar.s"' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
*************** if ${gcc_cv_as_dwarf2_debug_view+:} fals
*** 32080,32086 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_dwarf2_debug_view=no
!   if test x$gcc_cv_as != x; then
      $as_echo "$conftest_s" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 32108,32114 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_dwarf2_debug_view=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo "$conftest_s" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_gdwarf2_flag+:} false; th
*** 32114,32120 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_gdwarf2_flag=no
!   if test x$gcc_cv_as != x; then
      $as_echo "$insn" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags --gdwarf2 -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 32142,32148 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_gdwarf2_flag=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo "$insn" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags --gdwarf2 -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_gdwarf_5_flag+:} false; t
*** 32146,32152 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_gdwarf_5_flag=no
!   if test x$gcc_cv_as != x; then
      $as_echo "$insn" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags --gdwarf-5 -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 32174,32180 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_gdwarf_5_flag=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo "$insn" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags --gdwarf-5 -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_debug_line_32_flag+:} fal
*** 32350,32356 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_debug_line_32_flag=no
!   if test x$gcc_cv_as != x; then
      $as_echo "$conftest_s" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 32378,32384 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_debug_line_32_flag=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo "$conftest_s" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_debug_line_64_flag+:} fal
*** 32380,32386 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_debug_line_64_flag=no
!   if test x$gcc_cv_as != x; then
      $as_echo "$conftest_s" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 32408,32414 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_debug_line_64_flag=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo "$conftest_s" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_dwarf_4_debug_line_flag+:
*** 32412,32418 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_dwarf_4_debug_line_flag=no
!   if test x$gcc_cv_as != x; then
      $as_echo "$conftest_s" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags --gdwarf-4 -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 32440,32446 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_dwarf_4_debug_line_flag=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo "$conftest_s" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags --gdwarf-4 -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_dwarf_4_app_flag+:} false
*** 32467,32473 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_dwarf_4_app_flag=no
!   if test x$gcc_cv_as != x; then
      $as_echo "$conftest_s" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags --gdwarf-4 -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 32495,32501 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_dwarf_4_app_flag=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo "$conftest_s" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags --gdwarf-4 -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_working_gdwarf_n_flag+:}
*** 32508,32514 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_working_gdwarf_n_flag=no
!   if test x$gcc_cv_as != x; then
      $as_echo "$conftest_s" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags --gdwarf-4 -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 32536,32542 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_working_gdwarf_n_flag=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo "$conftest_s" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags --gdwarf-4 -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_debug_prefix_map_flag+:}
*** 32548,32554 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_debug_prefix_map_flag=no
!   if test x$gcc_cv_as != x; then
      $as_echo "$insn" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags --debug-prefix-map /a=/b -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 32576,32582 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_debug_prefix_map_flag=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo "$insn" > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags --debug-prefix-map /a=/b -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_compress_debug+:} false;
*** 32581,32587 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_compress_debug=no
!   if test x$gcc_cv_as != x; then
      $as_echo '' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 32609,32615 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_compress_debug=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_lcomm_with_alignment+:} f
*** 32641,32647 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_lcomm_with_alignment=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.lcomm bar,4,16' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 32669,32675 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_lcomm_with_alignment=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.lcomm bar,4,16' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** if ${gcc_cv_as_gnu_unique_object+:} fals
*** 32729,32735 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_gnu_unique_object=no
!   if test x$gcc_cv_as != x; then
      $as_echo '.type foo, '$target_type_format_char'gnu_unique_object' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
--- 32757,32763 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_as_gnu_unique_object=no
!   if test x"$gcc_cv_as" != x; then
      $as_echo '.type foo, '$target_type_format_char'gnu_unique_object' > conftest.s
      if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
*************** elif test x$gcc_cv_ld != x; then
*** 32833,32842 ****
    else
      case "$target" in
        *-*-solaris2*)
!         # Sun ld has various bugs in .eh_frame_hdr support before version 1.2251.
!         if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2251; then
!           gcc_cv_ld_eh_frame_hdr=yes
!         fi
          ;;
      esac
    fi
--- 32861,32867 ----
    else
      case "$target" in
        *-*-solaris2*)
! 	gcc_cv_ld_eh_frame_hdr=yes
          ;;
      esac
    fi
*************** $as_echo "$gcc_cv_ld_eh_frame_hdr" >&6;
*** 32854,32864 ****
  $as_echo_n "checking linker position independent executable support... " >&6; }
  gcc_cv_ld_pie=no
  if test $in_tree_ld = yes ; then
!   case "$target" in
!     # Full PIE support on Solaris was only introduced in gld 2.26.
!     *-*-solaris2*)  gcc_gld_pie_min_version=26 ;;
!     *) 		    gcc_gld_pie_min_version=15 ;;
!   esac
    if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge "$gcc_gld_pie_min_version" -o "$gcc_cv_gld_major_version" -gt 2 \
       && test $in_tree_ld_is_elf = yes; then
      gcc_cv_ld_pie=yes
--- 32879,32885 ----
  $as_echo_n "checking linker position independent executable support... " >&6; }
  gcc_cv_ld_pie=no
  if test $in_tree_ld = yes ; then
!   gcc_gld_pie_min_version=15
    if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge "$gcc_gld_pie_min_version" -o "$gcc_cv_gld_major_version" -gt 2 \
       && test $in_tree_ld_is_elf = yes; then
      gcc_cv_ld_pie=yes
*************** elif test x$gcc_cv_ld != x; then
*** 32867,32887 ****
    # Check if linker supports -pie option
    if $gcc_cv_ld --help 2>&1 | grep -- -pie > /dev/null; then
      gcc_cv_ld_pie=yes
-     case "$target" in
-       *-*-solaris2*)
- 	if echo "$ld_ver" | grep GNU > /dev/null \
- 	  && test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 26; then
- 	  gcc_cv_ld_pie=no
- 	fi
- 	;;
-     esac
    else
      case "$target" in
!       *-*-solaris2.1[1-9]*)
  	# Solaris 11.3 added PIE support.
! 	if $gcc_cv_ld -z help 2>&1 | grep -- type.*pie > /dev/null; then
! 	  gcc_cv_ld_pie=yes
! 	fi
  	;;
      esac
    fi
--- 32888,32898 ----
    # Check if linker supports -pie option
    if $gcc_cv_ld --help 2>&1 | grep -- -pie > /dev/null; then
      gcc_cv_ld_pie=yes
    else
      case "$target" in
!       *-*-solaris2*)
  	# Solaris 11.3 added PIE support.
! 	gcc_cv_ld_pie=yes
  	;;
      esac
    fi
*************** if test $gcc_cv_ld_pie = yes ; then
*** 32902,32908 ****
      if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 25 -o "$gcc_cv_gld_major_version" -gt 2; then
        gcc_cv_ld_pie_copyreloc=yes
      fi
!   elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
      # Check if linker supports -pie option with copy reloc
      case "$target" in
      i?86-*-linux* | x86_64-*-linux*)
--- 32913,32919 ----
      if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 25 -o "$gcc_cv_gld_major_version" -gt 2; then
        gcc_cv_ld_pie_copyreloc=yes
      fi
!   elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x ; then
      # Check if linker supports -pie option with copy reloc
      case "$target" in
      i?86-*-linux* | x86_64-*-linux*)
*************** if test $in_tree_ld = yes ; then
*** 32954,32960 ****
       && test $in_tree_ld_is_elf = yes; then
      gcc_cv_ld_eh_gc_sections=yes
    fi
! elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
    cat > conftest.s <<EOF
  	.section	.text
  .globl _start
--- 32965,32971 ----
       && test $in_tree_ld_is_elf = yes; then
      gcc_cv_ld_eh_gc_sections=yes
    fi
! elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x -a x"$gcc_cv_objdump" != x ; then
    cat > conftest.s <<EOF
  	.section	.text
  .globl _start
*************** if test $in_tree_ld = yes ; then
*** 33037,33043 ****
       && test $in_tree_ld_is_elf = yes; then
      gcc_cv_ld_eh_gc_sections_bug=yes
    fi
! elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x -a x$gcc_cv_as_comdat_group = xyes; then
    gcc_cv_ld_eh_gc_sections_bug=yes
    cat > conftest.s <<EOF
  	.section	.text
--- 33048,33054 ----
       && test $in_tree_ld_is_elf = yes; then
      gcc_cv_ld_eh_gc_sections_bug=yes
    fi
! elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x -a x"$gcc_cv_objdump" != x -a x$gcc_cv_as_comdat_group = xyes; then
    gcc_cv_ld_eh_gc_sections_bug=yes
    cat > conftest.s <<EOF
  	.section	.text
*************** else
*** 33090,33101 ****
    case "${target}" in
      *-*-solaris2*)
        # Introduced in Solaris 11.2.
!       if $gcc_cv_ld --help 2>&1 | grep -- '-z compress-sections' > /dev/null; then
!         gcc_cv_ld_compress_debug=1
!         gcc_cv_ld_compress_debug_option="-z compress-sections"
!       else
!         gcc_cv_ld_compress_debug=0
!       fi
        ;;
      *)
        # Assume linkers other than GNU ld don't support compessed debug
--- 33101,33108 ----
    case "${target}" in
      *-*-solaris2*)
        # Introduced in Solaris 11.2.
!       gcc_cv_ld_compress_debug=1
!       gcc_cv_ld_compress_debug_option="-z compress-sections"
        ;;
      *)
        # Assume linkers other than GNU ld don't support compessed debug
*************** elif test x$gcc_cv_ld != x; then
*** 33398,33418 ****
        ;;
    esac
  fi
- # --as-needed/-z ignore can only be used if libgcc_s.so.1 uses
- # dl_iterate_phdr, i.e. since Solaris 11.
  case "$target" in
!   *-*-solaris2.1[1-9]*)
!     case "$target" in
!     i?86-*-* | x86_64-*-*)
!       if echo "$ld_ver" | grep GNU > /dev/null; then
!         # Doesn't work with gld on Solaris/x86 due to PR ld/12320.
!         gcc_cv_ld_as_needed=no
!       fi
!       ;;
!     esac
!     ;;
!   *-*-solaris2*)
!     gcc_cv_ld_as_needed=no
      ;;
  esac
  
--- 33405,33416 ----
        ;;
    esac
  fi
  case "$target" in
!   i?86-*-solaris2* | x86_64-*-solaris2*)
!     if echo "$ld_ver" | grep GNU > /dev/null; then
!       # Doesn't work with gld on Solaris/x86 due to PR ld/12320.
!       gcc_cv_ld_as_needed=no
!     fi
      ;;
  esac
  
*************** else
*** 33487,33493 ****
  		-o "$gcc_cv_gld_major_version" -gt 2; then
          gcc_cv_ld_ppc_attr=yes
        fi
!     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
        # check that merging the long double .gnu_attribute doesn't warn
        cat > conftest1.s <<EOF
  	.gnu_attribute 4,1
--- 33485,33491 ----
  		-o "$gcc_cv_gld_major_version" -gt 2; then
          gcc_cv_ld_ppc_attr=yes
        fi
!     elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x ; then
        # check that merging the long double .gnu_attribute doesn't warn
        cat > conftest1.s <<EOF
  	.gnu_attribute 4,1
*************** else
*** 33543,33549 ****
        if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 16 -o "$gcc_cv_gld_major_version" -gt 2; then
          gcc_cv_ld_no_dot_syms=yes
        fi
!     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
        cat > conftest1.s <<EOF
  	.text
  	bl .foo
--- 33541,33547 ----
        if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 16 -o "$gcc_cv_gld_major_version" -gt 2; then
          gcc_cv_ld_no_dot_syms=yes
        fi
!     elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x ; then
        cat > conftest1.s <<EOF
  	.text
  	bl .foo
*************** else
*** 33589,33595 ****
        if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 21 -o "$gcc_cv_gld_major_version" -gt 2; then
          gcc_cv_ld_large_toc=yes
        fi
!     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
        cat > conftest.s <<EOF
  	.section ".tbss","awT",@nobits
  	.align 3
--- 33587,33593 ----
        if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 21 -o "$gcc_cv_gld_major_version" -gt 2; then
          gcc_cv_ld_large_toc=yes
        fi
!     elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x ; then
        cat > conftest.s <<EOF
  	.section ".tbss","awT",@nobits
  	.align 3
*************** $as_echo_n "checking linker toc pointer
*** 33621,33627 ****
  if ${gcc_cv_ld_toc_align+:} false; then :
    $as_echo_n "(cached) " >&6
  else
!   if test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_nm != x; then
        cat > conftest.s <<EOF
  	.global _start
  	.text
--- 33619,33625 ----
  if ${gcc_cv_ld_toc_align+:} false; then :
    $as_echo_n "(cached) " >&6
  else
!   if test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x -a x"$gcc_cv_nm" != x; then
        cat > conftest.s <<EOF
  	.global _start
  	.text
*************** if ${gcc_cv_ld_large_toc+:} false; then
*** 33660,33666 ****
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_ld_large_toc=no
!     if test x$gcc_cv_as != x ; then
        cat > conftest.s <<EOF
  	.toc
  LC..1:
--- 33658,33664 ----
    $as_echo_n "(cached) " >&6
  else
    gcc_cv_ld_large_toc=no
!     if test x"$gcc_cv_as" != x ; then
        cat > conftest.s <<EOF
  	.toc
  LC..1:
*************** $as_echo "$as_me: WARNING: --build-id is
*** 33734,33769 ****
    fi
  fi
  
- # In binutils 2.21, GNU ld gained support for new emulations fully
- # supporting the Solaris 2 ABI.  Detect their presence in the linker used.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking linker *_sol2 emulation support" >&5
- $as_echo_n "checking linker *_sol2 emulation support... " >&6; }
- if ${gcc_cv_ld_sol2_emulation+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   gcc_cv_ld_sol2_emulation=no
-   if test $in_tree_ld = yes ; then
-     if test "$gcc_cv_gld_major_version" -eq 2 -a \
-        "$gcc_cv_gld_minor_version" -ge 21 -o \
-        "$gcc_cv_gld_major_version" -gt 2 \
-        && test $in_tree_ld_is_elf = yes; then
-       gcc_cv_ld_sol2_emulation=yes
-     fi
-   elif test x$gcc_cv_ld != x; then
-     if $gcc_cv_ld -V 2>/dev/null | sed -e '1,/Supported emulations/d;q' | \
-        grep _sol2 > /dev/null; then
-       gcc_cv_ld_sol2_emulation=yes
-     fi
-   fi
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_ld_sol2_emulation" >&5
- $as_echo "$gcc_cv_ld_sol2_emulation" >&6; }
- if test x"$gcc_cv_ld_sol2_emulation" = xyes; then
- 
- $as_echo "#define HAVE_LD_SOL2_EMULATION 1" >>confdefs.h
- 
- fi
- 
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking linker --sysroot support" >&5
  $as_echo_n "checking linker --sysroot support... " >&6; }
  if ${gcc_cv_ld_sysroot+:} false; then :
--- 33732,33737 ----
*************** $as_echo "#define HAVE_LD_SYSROOT 1" >>c
*** 33788,33831 ****
  
  fi
  
- case $target in
- *-*-solaris2*)
-   # Check for system-provided CRTs on Solaris 11.x and Solaris 12.
-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking system-provided CRTs on Solaris" >&5
- $as_echo_n "checking system-provided CRTs on Solaris... " >&6; }
- if ${gcc_cv_solaris_crts+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
-   gcc_cv_solaris_crts=no
-      if test x$host != x$target; then
-        if test "x$with_sysroot" = xyes; then
-          target_sysroot="${test_exec_prefix}/${target_noncanonical}/sys-root"
-        else
-          target_sysroot="${with_sysroot}"
-        fi
-      fi
-      target_libdir="$target_sysroot/usr/lib"
-      # At the time they were added, gcrt1.o became a symlink for backwards
-      # compatibility on x86, while crt1.o was added on sparc, so check for that.
-      case $target in
-        i?86-*-solaris2* | x86_64-*-solaris2*)
-          if test -h "$target_libdir/gcrt1.o"; then gcc_cv_solaris_crts=yes; fi
- 	 ;;
-        sparc*-*-solaris2*)
-          if test -f "$target_libdir/crt1.o"; then gcc_cv_solaris_crts=yes; fi
- 	 ;;
-      esac
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_solaris_crts" >&5
- $as_echo "$gcc_cv_solaris_crts" >&6; }
-   ;;
- esac
- if test x$gcc_cv_solaris_crts = xyes; then
- 
- $as_echo "#define HAVE_SOLARIS_CRTS 1" >>confdefs.h
- 
- fi
- 
  # Check whether --enable-libssp was given.
  if test "${enable_libssp+set}" = set; then :
    enableval=$enable_libssp; case "${enableval}" in
--- 33756,33761 ----
diff -Nrcpad gcc-16-20251109/gcc/configure.ac gcc-16-20251116/gcc/configure.ac
*** gcc-16-20251109/gcc/configure.ac	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/configure.ac	Sun Nov 16 22:32:55 2025
*************** gcc_GAS_CHECK_FEATURE([working .subsecti
*** 3031,3037 ****
  .subsection -1
  conftest_label2: .word 0
  .previous],
!  [if test x$gcc_cv_nm != x; then
      $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1
      $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2
      if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1
--- 3031,3037 ----
  .subsection -1
  conftest_label2: .word 0
  .previous],
!  [if test x"$gcc_cv_nm" != x; then
      $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1
      $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2
      if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1
*************** bar:
*** 3123,3131 ****
  	ret
  	.size	bar, .-bar
  EOF
!     if test x$gcc_cv_as != x \
!        && test x$gcc_cv_ld != x \
!        && test x$gcc_cv_readelf != x \
         && $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \
         && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1 \
         && $gcc_cv_readelf --relocs --wide conftest \
--- 3123,3131 ----
  	ret
  	.size	bar, .-bar
  EOF
!     if test x"$gcc_cv_as" != x \
!        && test x"$gcc_cv_ld" != x \
!        && test x"$gcc_cv_readelf" != x \
         && $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \
         && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1 \
         && $gcc_cv_readelf --relocs --wide conftest \
*************** if test $in_tree_ld != yes ; then
*** 3166,3171 ****
--- 3166,3184 ----
      ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
      ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
      ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
+     case "${target}" in
+       *-*-solaris2*)
+ 	if test "$ld_vers_major" -gt 2; then
+ 	  :
+ 	elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -ge 30; then
+ 	  :
+ 	else
+ changequote([,])dnl
+ 	  AC_MSG_ERROR([GNU ld 2.30 or later is required on Solaris (found GNU ld $ld_ver)])
+ changequote(,)dnl
+ 	fi
+ 	;;
+     esac
    else
      case "${target}" in
        *-*-solaris2*)
*************** if test $in_tree_ld = yes ; then
*** 3264,3270 ****
       && test $in_tree_ld_is_elf = yes; then
      gcc_cv_ld_ro_rw_mix=read-write
    fi
! elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
    echo '.section myfoosect, "a"' > conftest1.s
    echo '.section myfoosect, "aw"' > conftest2.s
    echo '.byte 1' >> conftest2.s
--- 3277,3283 ----
       && test $in_tree_ld_is_elf = yes; then
      gcc_cv_ld_ro_rw_mix=read-write
    fi
! elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x -a x"$gcc_cv_objdump" != x ; then
    echo '.section myfoosect, "a"' > conftest1.s
    echo '.section myfoosect, "aw"' > conftest2.s
    echo '.byte 1' >> conftest2.s
*************** AC_DEFINE_UNQUOTED(HAVE_GAS_SECTION_EXCL
*** 3587,3595 ****
  # Test if the assembler supports the section flag 'R' for specifying
  # section with SHF_GNU_RETAIN.
  case "${target}" in
!   # Solaris may use GNU assembler with Solairs ld.  Even if GNU
    # assembler supports the section flag 'R', it doesn't mean that
!   # Solairs ld supports it.
    *-*-solaris2*)
      gcc_cv_as_shf_gnu_retain=no
      ;;
--- 3600,3608 ----
  # Test if the assembler supports the section flag 'R' for specifying
  # section with SHF_GNU_RETAIN.
  case "${target}" in
!   # Solaris may use GNU assembler with Solaris ld.  Even if GNU
    # assembler supports the section flag 'R', it doesn't mean that
!   # Solaris ld supports it.
    *-*-solaris2*)
      gcc_cv_as_shf_gnu_retain=no
      ;;
*************** AC_DEFINE_UNQUOTED(HAVE_GAS_SHF_GNU_RETA
*** 3607,3615 ****
  # Test if the assembler supports the section flag 'o' for specifying
  # section with link-order.
  case "${target}" in
!   # Solaris may use GNU assembler with Solairs ld.  Even if GNU
    # assembler supports the section flag 'o', it doesn't mean that
!   # Solairs ld supports it.
    *-*-solaris2*)
      gcc_cv_as_section_link_order=no
      ;;
--- 3620,3628 ----
  # Test if the assembler supports the section flag 'o' for specifying
  # section with link-order.
  case "${target}" in
!   # Solaris may use GNU assembler with Solaris ld.  Even if GNU
    # assembler supports the section flag 'o', it doesn't mean that
!   # Solaris ld supports it.
    *-*-solaris2*)
      gcc_cv_as_section_link_order=no
      ;;
*************** elif echo "$ld_ver" | grep GNU > /dev/nu
*** 3711,3731 ****
  else
  changequote(,)dnl
    case "${target}" in
!     *-*-solaris2.1[1-9]*)
!       comdat_group=no
!       # Sun ld has COMDAT group support since Solaris 9, but it doesn't
!       # interoperate with GNU as until Solaris 11 build 130, i.e. ld
!       # version 1.688.
!       #
!       # If using Sun as for COMDAT group as emitted by GCC, one needs at
!       # least ld version 1.2267.
!       if test "$ld_vers_major" -gt 1; then
!         comdat_group=yes
!       elif test "x$gas_flag" = xyes && test "$ld_vers_minor" -ge 1688; then
! 	comdat_group=yes
!       elif test "$ld_vers_minor" -ge 2267; then
! 	comdat_group=yes
!       fi
        ;;
      *)
        # Assume linkers other than GNU ld don't support COMDAT group.
--- 3724,3731 ----
  else
  changequote(,)dnl
    case "${target}" in
!     *-*-solaris2*)
!       comdat_group=yes
        ;;
      *)
        # Assume linkers other than GNU ld don't support COMDAT group.
*************** case $target_os in
*** 4210,4216 ****
  	else
  	  AC_MSG_ERROR([ld version is known to have broken secrel32 relocations, configure without --enable-tls or with --disable-tls to remove this error. See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80881 for more information.])
  	fi
!       elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x; then
  	echo '.text'          > conftest.s
  	echo 'foo: nop'      >> conftest.s
  	echo '.data'         >> conftest.s
--- 4210,4216 ----
  	else
  	  AC_MSG_ERROR([ld version is known to have broken secrel32 relocations, configure without --enable-tls or with --disable-tls to remove this error. See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80881 for more information.])
  	fi
!       elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x -a x"$gcc_cv_objdump" != x; then
  	echo '.text'          > conftest.s
  	echo 'foo: nop'      >> conftest.s
  	echo '.data'         >> conftest.s
*************** foo:	nop
*** 5002,5013 ****
      if test x$gas = xyes; then
        as_ix86_gas_32_opt="--32"
      fi
!     if echo "$ld_ver" | grep GNU > /dev/null; then
!       if $gcc_cv_ld -V 2>/dev/null | grep elf_i386_sol2 > /dev/null; then
!         ld_ix86_gld_32_opt="-melf_i386_sol2"
!       else
!         ld_ix86_gld_32_opt="-melf_i386"
!       fi
      fi
  
      gcc_GAS_CHECK_FEATURE([R_386_TLS_GD_PLT reloc],
--- 5002,5012 ----
      if test x$gas = xyes; then
        as_ix86_gas_32_opt="--32"
      fi
!     if test x$gnu_ld = xyes; then
!       case $target in
! 	*-*-solaris2*) ld_ix86_gld_32_opt="-melf_i386_sol2" ;;
! 	*)             ld_ix86_gld_32_opt="-melf_i386" ;;
!       esac
      fi
  
      gcc_GAS_CHECK_FEATURE([R_386_TLS_GD_PLT reloc],
*************** _start:
*** 5100,5111 ****
  
      # Check if gas and gld support "addq %r23,foo@GOTTPOFF(%rip), %r15"
      # with R_X86_64_CODE_6_GOTTPOFF relocation.
!     if echo "$ld_ver" | grep GNU > /dev/null; then
!       if $gcc_cv_ld -V 2>/dev/null | grep elf_x86_64_sol2 > /dev/null; then
!         ld_ix86_gld_64_opt="-melf_x86_64_sol2"
!       else
!         ld_ix86_gld_64_opt="-melf_x86_64"
!       fi
      fi
      # Enforce 64-bit output with gas and gld.
      if test x$gas = xyes; then
--- 5099,5109 ----
  
      # Check if gas and gld support "addq %r23,foo@GOTTPOFF(%rip), %r15"
      # with R_X86_64_CODE_6_GOTTPOFF relocation.
!     if test x$gnu_ld = xyes; then
!       case $target in
! 	*-*-solaris2*) ld_ix86_gld_64_opt="-melf_x86_64_sol2" ;;
! 	*)             ld_ix86_gld_64_opt="-melf_x86_64" ;;
!       esac
      fi
      # Enforce 64-bit output with gas and gld.
      if test x$gas = xyes; then
*************** x:
*** 5408,5414 ****
             && test $in_tree_ld_is_elf = yes; then
            gcc_cv_as_ld_jalr_reloc=yes
          fi
!       elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x; then
          echo '	.ent x' > conftest.s
          echo 'x:	lw $2,%got_disp(y)($3)' >> conftest.s
          echo '	lw $25,%call16(y)($28)' >> conftest.s
--- 5406,5412 ----
             && test $in_tree_ld_is_elf = yes; then
            gcc_cv_as_ld_jalr_reloc=yes
          fi
!       elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x -a x"$gcc_cv_objdump" != x; then
          echo '	.ent x' > conftest.s
          echo 'x:	lw $2,%got_disp(y)($3)' >> conftest.s
          echo '	lw $25,%call16(y)($28)' >> conftest.s
*************** x:
*** 5445,5453 ****
  		 -o "$gcc_cv_gld_major_version" -gt 2; then
  	   gcc_cv_ld_mips_personality_relaxation=yes
  	 fi
!        elif test x$gcc_cv_as != x \
!        	    	 -a x$gcc_cv_ld != x \
! 		 -a x$gcc_cv_readelf != x ; then
  	 cat > conftest.s <<EOF
  	.cfi_startproc
  	.cfi_personality 0x80,indirect_ptr
--- 5443,5451 ----
  		 -o "$gcc_cv_gld_major_version" -gt 2; then
  	   gcc_cv_ld_mips_personality_relaxation=yes
  	 fi
!        elif test x"$gcc_cv_as" != x \
!        	    	 -a x"$gcc_cv_ld" != x \
! 		 -a x"$gcc_cv_readelf" != x ; then
  	 cat > conftest.s <<EOF
  	.cfi_startproc
  	.cfi_personality 0x80,indirect_ptr
*************** x:
*** 5585,5590 ****
--- 5583,5594 ----
        [lu12i.w $t0,%le_hi20_r(a)],,
        [AC_DEFINE(HAVE_AS_TLS_LE_RELAXATION, 1,
  	  [Define if your assembler supports tls le relocation.])])
+     gcc_GAS_CHECK_FEATURE([16-byte atomic support],
+       gcc_cv_as_loongarch_16_byte_atomic_support,,
+       [vori.b $vr0, $vr1, 0
+        sc.q $a0, $a1, $a2, 0],,
+       [AC_DEFINE(HAVE_AS_16B_ATOMIC, 1,
+ 	  [Define if your assembler supports LSX and SCQ for 16B atomic.])])
      ;;
      s390*-*-*)
      gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
*************** case "$target" in
*** 5642,5648 ****
    amdgcn-* | gcn-*)
      AC_MSG_CHECKING(llvm assembler version)
      gcc_cv_as_version="unknown"
!     if test x$gcc_cv_as != x; then
        gcc_cv_as_version=`$gcc_cv_as --version 2>&1 | sed -ne '/version/s/.* \([[0-9]]\)/\1/p' || echo error`
        case "$gcc_cv_as_version" in
  	13.0.[[1-9]]*) ;;          # 13.0.1+
--- 5646,5652 ----
    amdgcn-* | gcn-*)
      AC_MSG_CHECKING(llvm assembler version)
      gcc_cv_as_version="unknown"
!     if test x"$gcc_cv_as" != x; then
        gcc_cv_as_version=`$gcc_cv_as --version 2>&1 | sed -ne '/version/s/.* \([[0-9]]\)/\1/p' || echo error`
        case "$gcc_cv_as_version" in
  	13.0.[[1-9]]*) ;;          # 13.0.1+
*************** elif test x$gcc_cv_ld != x; then
*** 6142,6151 ****
    else
      case "$target" in
        *-*-solaris2*)
!         # Sun ld has various bugs in .eh_frame_hdr support before version 1.2251.
!         if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2251; then
!           gcc_cv_ld_eh_frame_hdr=yes
!         fi
          ;;
      esac
    fi
--- 6146,6152 ----
    else
      case "$target" in
        *-*-solaris2*)
! 	gcc_cv_ld_eh_frame_hdr=yes
          ;;
      esac
    fi
*************** AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
*** 6160,6170 ****
  AC_MSG_CHECKING(linker position independent executable support)
  gcc_cv_ld_pie=no
  if test $in_tree_ld = yes ; then
!   case "$target" in
!     # Full PIE support on Solaris was only introduced in gld 2.26.
!     *-*-solaris2*)  gcc_gld_pie_min_version=26 ;;
!     *) 		    gcc_gld_pie_min_version=15 ;;
!   esac
    if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge "$gcc_gld_pie_min_version" -o "$gcc_cv_gld_major_version" -gt 2 \
       && test $in_tree_ld_is_elf = yes; then
      gcc_cv_ld_pie=yes
--- 6161,6167 ----
  AC_MSG_CHECKING(linker position independent executable support)
  gcc_cv_ld_pie=no
  if test $in_tree_ld = yes ; then
!   gcc_gld_pie_min_version=15
    if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge "$gcc_gld_pie_min_version" -o "$gcc_cv_gld_major_version" -gt 2 \
       && test $in_tree_ld_is_elf = yes; then
      gcc_cv_ld_pie=yes
*************** elif test x$gcc_cv_ld != x; then
*** 6173,6193 ****
    # Check if linker supports -pie option
    if $gcc_cv_ld --help 2>&1 | grep -- -pie > /dev/null; then
      gcc_cv_ld_pie=yes
-     case "$target" in
-       *-*-solaris2*)
- 	if echo "$ld_ver" | grep GNU > /dev/null \
- 	  && test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 26; then
- 	  gcc_cv_ld_pie=no
- 	fi
- 	;;
-     esac
    else
      case "$target" in
!       *-*-solaris2.1[[1-9]]*)
  	# Solaris 11.3 added PIE support.
! 	if $gcc_cv_ld -z help 2>&1 | grep -- type.*pie > /dev/null; then
! 	  gcc_cv_ld_pie=yes
! 	fi
  	;;
      esac
    fi
--- 6170,6180 ----
    # Check if linker supports -pie option
    if $gcc_cv_ld --help 2>&1 | grep -- -pie > /dev/null; then
      gcc_cv_ld_pie=yes
    else
      case "$target" in
!       *-*-solaris2*)
  	# Solaris 11.3 added PIE support.
! 	gcc_cv_ld_pie=yes
  	;;
      esac
    fi
*************** if test $gcc_cv_ld_pie = yes ; then
*** 6205,6211 ****
      if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 25 -o "$gcc_cv_gld_major_version" -gt 2; then
        gcc_cv_ld_pie_copyreloc=yes
      fi
!   elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
      # Check if linker supports -pie option with copy reloc
      case "$target" in
      i?86-*-linux* | x86_64-*-linux*)
--- 6192,6198 ----
      if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 25 -o "$gcc_cv_gld_major_version" -gt 2; then
        gcc_cv_ld_pie_copyreloc=yes
      fi
!   elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x ; then
      # Check if linker supports -pie option with copy reloc
      case "$target" in
      i?86-*-linux* | x86_64-*-linux*)
*************** if test $in_tree_ld = yes ; then
*** 6253,6259 ****
       && test $in_tree_ld_is_elf = yes; then
      gcc_cv_ld_eh_gc_sections=yes
    fi
! elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
    cat > conftest.s <<EOF
  	.section	.text
  .globl _start
--- 6240,6246 ----
       && test $in_tree_ld_is_elf = yes; then
      gcc_cv_ld_eh_gc_sections=yes
    fi
! elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x -a x"$gcc_cv_objdump" != x ; then
    cat > conftest.s <<EOF
  	.section	.text
  .globl _start
*************** if test $in_tree_ld = yes ; then
*** 6334,6340 ****
       && test $in_tree_ld_is_elf = yes; then
      gcc_cv_ld_eh_gc_sections_bug=yes
    fi
! elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x -a x$gcc_cv_as_comdat_group = xyes; then
    gcc_cv_ld_eh_gc_sections_bug=yes
    cat > conftest.s <<EOF
  	.section	.text
--- 6321,6327 ----
       && test $in_tree_ld_is_elf = yes; then
      gcc_cv_ld_eh_gc_sections_bug=yes
    fi
! elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x -a x"$gcc_cv_objdump" != x -a x$gcc_cv_as_comdat_group = xyes; then
    gcc_cv_ld_eh_gc_sections_bug=yes
    cat > conftest.s <<EOF
  	.section	.text
*************** changequote(,)dnl
*** 6386,6397 ****
    case "${target}" in
      *-*-solaris2*)
        # Introduced in Solaris 11.2.
!       if $gcc_cv_ld --help 2>&1 | grep -- '-z compress-sections' > /dev/null; then
!         gcc_cv_ld_compress_debug=1
!         gcc_cv_ld_compress_debug_option="-z compress-sections"
!       else
!         gcc_cv_ld_compress_debug=0
!       fi
        ;;
      *)
        # Assume linkers other than GNU ld don't support compessed debug
--- 6373,6380 ----
    case "${target}" in
      *-*-solaris2*)
        # Introduced in Solaris 11.2.
!       gcc_cv_ld_compress_debug=1
!       gcc_cv_ld_compress_debug_option="-z compress-sections"
        ;;
      *)
        # Assume linkers other than GNU ld don't support compessed debug
*************** elif test x$gcc_cv_ld != x; then
*** 6641,6661 ****
        ;;
    esac
  fi
- # --as-needed/-z ignore can only be used if libgcc_s.so.1 uses
- # dl_iterate_phdr, i.e. since Solaris 11.
  case "$target" in
!   *-*-solaris2.1[[1-9]]*)
!     case "$target" in
!     i?86-*-* | x86_64-*-*)
!       if echo "$ld_ver" | grep GNU > /dev/null; then
!         # Doesn't work with gld on Solaris/x86 due to PR ld/12320.
!         gcc_cv_ld_as_needed=no
!       fi
!       ;;
!     esac
!     ;;
!   *-*-solaris2*)
!     gcc_cv_ld_as_needed=no
      ;;
  esac
  ])
--- 6624,6635 ----
        ;;
    esac
  fi
  case "$target" in
!   i?86-*-solaris2* | x86_64-*-solaris2*)
!     if echo "$ld_ver" | grep GNU > /dev/null; then
!       # Doesn't work with gld on Solaris/x86 due to PR ld/12320.
!       gcc_cv_ld_as_needed=no
!     fi
      ;;
  esac
  ])
*************** case "$target" in
*** 6704,6710 ****
  		-o "$gcc_cv_gld_major_version" -gt 2; then
          gcc_cv_ld_ppc_attr=yes
        fi
!     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
        # check that merging the long double .gnu_attribute doesn't warn
        cat > conftest1.s <<EOF
  	.gnu_attribute 4,1
--- 6678,6684 ----
  		-o "$gcc_cv_gld_major_version" -gt 2; then
          gcc_cv_ld_ppc_attr=yes
        fi
!     elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x ; then
        # check that merging the long double .gnu_attribute doesn't warn
        cat > conftest1.s <<EOF
  	.gnu_attribute 4,1
*************** case "$target:$tm_file" in
*** 6753,6759 ****
        if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 16 -o "$gcc_cv_gld_major_version" -gt 2; then
          gcc_cv_ld_no_dot_syms=yes
        fi
!     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
        cat > conftest1.s <<EOF
  	.text
  	bl .foo
--- 6727,6733 ----
        if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 16 -o "$gcc_cv_gld_major_version" -gt 2; then
          gcc_cv_ld_no_dot_syms=yes
        fi
!     elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x ; then
        cat > conftest1.s <<EOF
  	.text
  	bl .foo
*************** EOF
*** 6792,6798 ****
        if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 21 -o "$gcc_cv_gld_major_version" -gt 2; then
          gcc_cv_ld_large_toc=yes
        fi
!     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
        cat > conftest.s <<EOF
  	.section ".tbss","awT",@nobits
  	.align 3
--- 6766,6772 ----
        if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 21 -o "$gcc_cv_gld_major_version" -gt 2; then
          gcc_cv_ld_large_toc=yes
        fi
!     elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x ; then
        cat > conftest.s <<EOF
  	.section ".tbss","awT",@nobits
  	.align 3
*************** EOF
*** 6817,6823 ****
  
      AC_CACHE_CHECK(linker toc pointer alignment,
      gcc_cv_ld_toc_align,
!     [if test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_nm != x; then
        cat > conftest.s <<EOF
  	.global _start
  	.text
--- 6791,6797 ----
  
      AC_CACHE_CHECK(linker toc pointer alignment,
      gcc_cv_ld_toc_align,
!     [if test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x -a x"$gcc_cv_nm" != x; then
        cat > conftest.s <<EOF
  	.global _start
  	.text
*************** case "$target" in
*** 6847,6853 ****
      AC_CACHE_CHECK(linker large toc support,
      gcc_cv_ld_large_toc,
      [gcc_cv_ld_large_toc=no
!     if test x$gcc_cv_as != x ; then
        cat > conftest.s <<EOF
  	.toc
  LC..1:
--- 6821,6827 ----
      AC_CACHE_CHECK(linker large toc support,
      gcc_cv_ld_large_toc,
      [gcc_cv_ld_large_toc=no
!     if test x"$gcc_cv_as" != x ; then
        cat > conftest.s <<EOF
  	.toc
  LC..1:
*************** if test x"$enable_linker_build_id" = xye
*** 6906,6934 ****
    fi
  fi
  
- # In binutils 2.21, GNU ld gained support for new emulations fully
- # supporting the Solaris 2 ABI.  Detect their presence in the linker used.
- AC_CACHE_CHECK(linker *_sol2 emulation support,
-   gcc_cv_ld_sol2_emulation,
-   [gcc_cv_ld_sol2_emulation=no
-   if test $in_tree_ld = yes ; then
-     if test "$gcc_cv_gld_major_version" -eq 2 -a \
-        "$gcc_cv_gld_minor_version" -ge 21 -o \
-        "$gcc_cv_gld_major_version" -gt 2 \
-        && test $in_tree_ld_is_elf = yes; then
-       gcc_cv_ld_sol2_emulation=yes
-     fi
-   elif test x$gcc_cv_ld != x; then
-     if $gcc_cv_ld -V 2>/dev/null | sed -e '1,/Supported emulations/d;q' | \
-        grep _sol2 > /dev/null; then
-       gcc_cv_ld_sol2_emulation=yes
-     fi
-   fi])
- if test x"$gcc_cv_ld_sol2_emulation" = xyes; then
-   AC_DEFINE(HAVE_LD_SOL2_EMULATION, 1,
-   [Define if your linker supports the *_sol2 emulations.])
- fi
- 
  AC_CACHE_CHECK(linker --sysroot support,
    gcc_cv_ld_sysroot,
    [gcc_cv_ld_sysroot=no
--- 6880,6885 ----
*************** if test x"$gcc_cv_ld_sysroot" = xyes; th
*** 6946,6982 ****
    [Define if your linker supports --sysroot.])
  fi	  
  
- case $target in
- *-*-solaris2*)
-   # Check for system-provided CRTs on Solaris 11.x and Solaris 12.
-   AC_CACHE_CHECK([system-provided CRTs on Solaris],
-     gcc_cv_solaris_crts,
-     [gcc_cv_solaris_crts=no
-      if test x$host != x$target; then
-        if test "x$with_sysroot" = xyes; then
-          target_sysroot="${test_exec_prefix}/${target_noncanonical}/sys-root"
-        else
-          target_sysroot="${with_sysroot}"
-        fi
-      fi
-      target_libdir="$target_sysroot/usr/lib"
-      # At the time they were added, gcrt1.o became a symlink for backwards
-      # compatibility on x86, while crt1.o was added on sparc, so check for that.
-      case $target in
-        i?86-*-solaris2* | x86_64-*-solaris2*)
-          if test -h "$target_libdir/gcrt1.o"; then gcc_cv_solaris_crts=yes; fi
- 	 ;;
-        sparc*-*-solaris2*)
-          if test -f "$target_libdir/crt1.o"; then gcc_cv_solaris_crts=yes; fi
- 	 ;;
-      esac])
-   ;;
- esac
- if test x$gcc_cv_solaris_crts = xyes; then
-   AC_DEFINE(HAVE_SOLARIS_CRTS, 1,
-   	    [Define if the system-provided CRTs are present on Solaris.])
- fi
- 
  AC_ARG_ENABLE(libssp,
  [AS_HELP_STRING([--enable-libssp], [enable linking against libssp])],
  [case "${enableval}" in
--- 6897,6902 ----
diff -Nrcpad gcc-16-20251109/gcc/cp/ChangeLog gcc-16-20251116/gcc/cp/ChangeLog
*** gcc-16-20251109/gcc/cp/ChangeLog	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/cp/ChangeLog	Sun Nov 16 22:32:55 2025
***************
*** 1,3 ****
--- 1,107 ----
+ 2025-11-15  Jason Merrill  <jason@redhat.com>
+ 
+ 	* module.cc (trees_out::write_function_def): Check flag consistency.
+ 	* pt.cc (mark_decl_instantiated): Ignore TREE_ASM_WRITTEN.
+ 
+ 2025-11-15  Jason Merrill  <jason@redhat.com>
+ 
+ 	* module.cc (module_state::read_config): Add complain parm.
+ 	(module_state::open_slurp): Split out...
+ 	(module_state::do_import): ...from here.
+ 	(module_state::read_initial): Move begin call to open_slurp.
+ 	(module_state::check_importable): New.
+ 	(maybe_translate_include): Call it.
+ 
+ 2025-11-15  Jason Merrill  <jason@redhat.com>
+ 
+ 	* module.cc (transfer_defining_module): Dereference
+ 	pointer into hash_map before possible insertion.
+ 
+ 2025-11-15  Jason Merrill  <jason@redhat.com>
+ 
+ 	* name-lookup.cc (do_nonmember_using_decl): Handle hidden better.
+ 
+ 2025-11-15  Jason Merrill  <jason@redhat.com>
+ 
+ 	* decl.cc (grokfndecl): Set DECL_CHAIN of a friend f<>.
+ 	* module.cc (trees_out::get_merge_kind): Give it MK_local_friend.
+ 	(trees_out::decl_container): Its container is the befriender.
+ 	(trees_out::key_mergeable): Expand comment.
+ 	* cp-tree.h (decl_specialization_friend_p): New.
+ 	* friend.cc (do_friend): Use it.
+ 	* pt.cc (tsubst_friend_function): Likewise.
+ 
+ 2025-11-13  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/122551
+ 	* cp-tree.h (transfer_defining_module): Declare.
+ 	* decl.cc (duplicate_decls): Call it for all decls.
+ 	Remove now unnecessary equivalent logic for templates.
+ 	* module.cc (mangle_module): Add assertion.
+ 	(transfer_defining_module): New function.
+ 
+ 2025-11-11  Jason Merrill  <jason@redhat.com>
+ 
+ 	* name-lookup.cc (name_lookup::adl_namespace_fns): Also skip hidden
+ 	in the module case.
+ 
+ 2025-11-11  Jason Merrill  <jason@redhat.com>
+ 
+ 	* module.cc (module_state::read_cluster): Use set_cfun.
+ 	(post_load_processing): Likewise.
+ 
+ 2025-11-10  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/122628
+ 	* module.cc (instantiating_tu_local_entity): Add missing
+ 	STRIP_TEMPLATEs.
+ 
+ 2025-11-10  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	* pt.cc (tsubst_friend_function): Mark all parent namespaces as
+ 	purview if needed.
+ 
+ 2025-11-10  Tejas Belagod  <tejas.belagod@arm.com>
+ 
+ 	* typeck.cc (cp_build_binary_op): Likewise.
+ 	* call.cc (build_conditional_expr): Support vector booleans.
+ 	* cvt.cc (ocp_convert): Call target hook to resolve conversion
+ 	between standard and non-standard booleans.
+ 
+ 2025-11-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/119064
+ 	* cp-tree.h (struct lang_type): Revert 2025-07-11 changes.
+ 	(CLASSTYPE_TRIVIALLY_RELOCATABLE_BIT): Remove.
+ 	(CLASSTYPE_TRIVIALLY_RELOCATABLE_COMPUTED): Remove.
+ 	(CLASSTYPE_REPLACEABLE_BIT): Remove.
+ 	(CLASSTYPE_REPLACEABLE_COMPUTED): Remove.
+ 	(enum virt_specifier): Revert 2025-07-11 changes.
+ 	(trivially_relocatable_type_p): Remove.
+ 	(replaceable_type_p): Remove.
+ 	* cp-trait.def (IS_NOTHROW_RELOCATABLE): Remove.
+ 	(IS_REPLACEABLE): Remove.
+ 	(IS_TRIVIALLY_RELOCATABLE): Remove.
+ 	* parser.cc (cp_parser_class_specifier, cp_parser_class_head):
+ 	Revert 2025-07-11 changes.
+ 	* pt.cc (instantiate_class_template): Likewise.
+ 	* semantics.cc (trait_expr_value): Likewise.
+ 	(finish_trait_expr): Likewise.
+ 	* tree.cc (default_movable_type_p): Remove.
+ 	(union_with_no_declared_special_member_fns): Remove.
+ 	(trivially_relocatable_type_p): Remove.
+ 	(replaceable_type_p): Remove.
+ 	* constraint.cc (diagnose_trait_expr): Revert 2025-07-11 changes.
+ 	* module.cc (trees_out::lang_type_bools): Revert part of
+ 	2025-07-26 changes related to trivial relocatability.
+ 	(trees_in::lang_type_bools): Likewise.
+ 	* lex.cc (cxx_init): Don't call cpp_warn on
+ 	trivially_relocatable_if_eligible and replaceable_if_eligible.
+ 
+ 2025-11-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* lex.cc (cxx_init): For C++26 call cpp_warn on "indeterminate".
+ 
  2025-11-05  Nathaniel Shead  <nathanieloshead@gmail.com>
  
  	PR c++/121574
diff -Nrcpad gcc-16-20251109/gcc/cp/call.cc gcc-16-20251116/gcc/cp/call.cc
*** gcc-16-20251109/gcc/cp/call.cc	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/cp/call.cc	Sun Nov 16 22:32:55 2025
*************** build_conditional_expr (const op_locatio
*** 5902,5908 ****
    orig_arg3 = arg3;
  
    if (gnu_vector_type_p (TREE_TYPE (arg1))
!       && VECTOR_INTEGER_TYPE_P (TREE_TYPE (arg1)))
      {
        tree arg1_type = TREE_TYPE (arg1);
  
--- 5902,5909 ----
    orig_arg3 = arg3;
  
    if (gnu_vector_type_p (TREE_TYPE (arg1))
!       && (VECTOR_INTEGER_TYPE_P (TREE_TYPE (arg1))
! 	  || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (arg1))))
      {
        tree arg1_type = TREE_TYPE (arg1);
  
diff -Nrcpad gcc-16-20251109/gcc/cp/constraint.cc gcc-16-20251116/gcc/cp/constraint.cc
*** gcc-16-20251109/gcc/cp/constraint.cc	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/cp/constraint.cc	Sun Nov 16 22:32:55 2025
*************** diagnose_trait_expr (location_t loc, tre
*** 3228,3236 ****
  	  explain_not_noexcept (call);
        }
        break;
-     case CPTK_IS_NOTHROW_RELOCATABLE:
-       inform (loc, "%qT is not nothrow relocatable", t1);
-       break;
      case CPTK_IS_OBJECT:
        inform (loc, "%qT is not an object type", t1);
        break;
--- 3228,3233 ----
*************** diagnose_trait_expr (location_t loc, tre
*** 3250,3258 ****
      case CPTK_IS_REFERENCE:
        inform (loc, "%qT is not a reference", t1);
        break;
-     case CPTK_IS_REPLACEABLE:
-       inform (loc, "%qT is not replaceable", t1);
-       break;
      case CPTK_IS_SAME:
        inform (loc, "%q#T is not the same as %q#T", t1, t2);
        break;
--- 3247,3252 ----
*************** diagnose_trait_expr (location_t loc, tre
*** 3284,3292 ****
        inform (loc, "%qT is not trivially destructible, because", t1);
        is_trivially_xible (BIT_NOT_EXPR, t1, NULL_TREE, /*explain=*/true);
        break;
-     case CPTK_IS_TRIVIALLY_RELOCATABLE:
-       inform (loc, "%qT is not trivially relocatable", t1);
-       break;
      case CPTK_IS_UNBOUNDED_ARRAY:
        inform (loc, "%qT is not an unbounded array", t1);
        break;
--- 3278,3283 ----
diff -Nrcpad gcc-16-20251109/gcc/cp/cp-trait.def gcc-16-20251116/gcc/cp/cp-trait.def
*** gcc-16-20251109/gcc/cp/cp-trait.def	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/cp/cp-trait.def	Sun Nov 16 22:32:55 2025
*************** DEFTRAIT_EXPR (IS_NOTHROW_CONSTRUCTIBLE,
*** 88,101 ****
  DEFTRAIT_EXPR (IS_NOTHROW_CONVERTIBLE, "__is_nothrow_convertible", 2)
  DEFTRAIT_EXPR (IS_NOTHROW_DESTRUCTIBLE, "__is_nothrow_destructible", 1)
  DEFTRAIT_EXPR (IS_NOTHROW_INVOCABLE, "__is_nothrow_invocable", -1)
- DEFTRAIT_EXPR (IS_NOTHROW_RELOCATABLE, "__builtin_is_nothrow_relocatable", 1)
  DEFTRAIT_EXPR (IS_OBJECT, "__is_object", 1)
  DEFTRAIT_EXPR (IS_POINTER_INTERCONVERTIBLE_BASE_OF, "__is_pointer_interconvertible_base_of", 2)
  DEFTRAIT_EXPR (IS_POD, "__is_pod", 1)
  DEFTRAIT_EXPR (IS_POINTER, "__is_pointer", 1)
  DEFTRAIT_EXPR (IS_POLYMORPHIC, "__is_polymorphic", 1)
  DEFTRAIT_EXPR (IS_REFERENCE, "__is_reference", 1)
- DEFTRAIT_EXPR (IS_REPLACEABLE, "__builtin_is_replaceable", 1)
  DEFTRAIT_EXPR (IS_SAME, "__is_same", 2)
  DEFTRAIT_EXPR (IS_SCOPED_ENUM, "__is_scoped_enum", 1)
  DEFTRAIT_EXPR (IS_STD_LAYOUT, "__is_standard_layout", 1)
--- 88,99 ----
*************** DEFTRAIT_EXPR (IS_TRIVIALLY_ASSIGNABLE,
*** 104,110 ****
  DEFTRAIT_EXPR (IS_TRIVIALLY_CONSTRUCTIBLE, "__is_trivially_constructible", -1)
  DEFTRAIT_EXPR (IS_TRIVIALLY_COPYABLE, "__is_trivially_copyable", 1)
  DEFTRAIT_EXPR (IS_TRIVIALLY_DESTRUCTIBLE, "__is_trivially_destructible", 1)
- DEFTRAIT_EXPR (IS_TRIVIALLY_RELOCATABLE, "__builtin_is_trivially_relocatable", 1)
  DEFTRAIT_EXPR (IS_UNBOUNDED_ARRAY, "__is_unbounded_array", 1)
  DEFTRAIT_EXPR (IS_UNION, "__is_union", 1)
  DEFTRAIT_EXPR (IS_VIRTUAL_BASE_OF, "__builtin_is_virtual_base_of", 2)
--- 102,107 ----
diff -Nrcpad gcc-16-20251109/gcc/cp/cp-tree.h gcc-16-20251116/gcc/cp/cp-tree.h
*** gcc-16-20251109/gcc/cp/cp-tree.h	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/cp/cp-tree.h	Sun Nov 16 22:32:55 2025
*************** struct GTY(()) lang_type {
*** 2523,2533 ****
    bool erroneous : 1;
    bool non_pod_aggregate : 1;
    bool non_aggregate_pod : 1;
-   bool trivially_relocatable : 1;
-   bool trivially_relocatable_computed : 1;
- 
-   bool replaceable : 1;
-   bool replaceable_computed : 1;
  
    /* When adding a flag here, consider whether or not it ought to
       apply to a template instance if it applies to the template.  If
--- 2523,2528 ----
*************** struct GTY(()) lang_type {
*** 2538,2544 ****
    /* There are some bits left to fill out a 32-bit word.  Keep track
       of this by updating the size of this bitfield whenever you add or
       remove a flag.  */
!   unsigned dummy : 30;
  
    tree primary_base;
    vec<tree_pair_s, va_gc> *vcall_indices;
--- 2533,2539 ----
    /* There are some bits left to fill out a 32-bit word.  Keep track
       of this by updating the size of this bitfield whenever you add or
       remove a flag.  */
!   unsigned dummy : 2;
  
    tree primary_base;
    vec<tree_pair_s, va_gc> *vcall_indices;
*************** struct GTY(()) lang_type {
*** 2885,2913 ****
     above (c++/120012).  This could also be a hash_set.  */
  #define CLASSTYPE_NON_AGGREGATE_POD(NODE) \
    (LANG_TYPE_CLASS_CHECK (NODE)->non_aggregate_pod)
- 
- /* If CLASSTYPE_TRIVIALLY_RELOCATABLE_COMPUTED, true if this class is
-    trivially relocatable.
-    If !CLASSTYPE_TRIVIALLY_RELOCATABLE_COMPUTED, true if this class
-    is marked with trivially_relocatable_if_eligible conditional keyword.  */
- #define CLASSTYPE_TRIVIALLY_RELOCATABLE_BIT(NODE) \
-   (LANG_TYPE_CLASS_CHECK (NODE)->trivially_relocatable)
- 
- /* True if whether this class is trivially relocatable or not
-    has been computed already.  */
- #define CLASSTYPE_TRIVIALLY_RELOCATABLE_COMPUTED(NODE) \
-   (LANG_TYPE_CLASS_CHECK (NODE)->trivially_relocatable_computed)
- 
- /* If CLASSTYPE_REPLACEABLE_COMPUTED, true if this class is replaceable.
-    If !CLASSTYPE_REPLACEABLE_COMPUTED, true if this class is marked with
-    replaceable_if_eligible conditional keyword.  */
- #define CLASSTYPE_REPLACEABLE_BIT(NODE) \
-   (LANG_TYPE_CLASS_CHECK (NODE)->replaceable)
- 
- /* True if whether this class is replaceable or not has been computed
-    already.  */
- #define CLASSTYPE_REPLACEABLE_COMPUTED(NODE) \
-   (LANG_TYPE_CLASS_CHECK (NODE)->replaceable_computed)
  
  /* Additional macros for inheritance information.  */
  
--- 2880,2885 ----
*************** enum virt_specifier
*** 6577,6585 ****
    {
      VIRT_SPEC_UNSPECIFIED = 0x0,
      VIRT_SPEC_FINAL       = 0x1,
!     VIRT_SPEC_OVERRIDE    = 0x2,
!     VIRT_SPEC_TRIVIALLY_RELOCATABLE_IF_ELIGIBLE = 0x4,
!     VIRT_SPEC_REPLACEABLE_IF_ELIGIBLE = 0x8
    };
  
  /* A type-qualifier, or bitmask therefore, using the VIRT_SPEC
--- 6549,6555 ----
    {
      VIRT_SPEC_UNSPECIFIED = 0x0,
      VIRT_SPEC_FINAL       = 0x1,
!     VIRT_SPEC_OVERRIDE    = 0x2
    };
  
  /* A type-qualifier, or bitmask therefore, using the VIRT_SPEC
*************** extern tree implicitly_declare_fn
*** 7688,7693 ****
--- 7658,7675 ----
  						 bool, tree, tree);
  extern tree type_order_value			(tree, tree);
  
+ /* True iff DECL represents a declaration of a friend template
+    specialization, e.g. friend void f<>().  */
+ 
+ inline bool
+ decl_specialization_friend_p (tree decl)
+ {
+   return (TREE_CODE (decl) == FUNCTION_DECL
+ 	  && DECL_UNIQUE_FRIEND_P (decl)
+ 	  && DECL_IMPLICIT_INSTANTIATION (decl)
+ 	  && TREE_CODE (DECL_TI_TEMPLATE (decl)) != TEMPLATE_DECL);
+ }
+ 
  /* In module.cc  */
  class module_state; /* Forward declare.  */
  inline bool modules_p () { return flag_modules != 0; }
*************** extern void set_defining_module (tree);
*** 7764,7769 ****
--- 7746,7752 ----
  extern void set_defining_module_for_partial_spec (tree);
  extern void maybe_key_decl (tree ctx, tree decl);
  extern void propagate_defining_module (tree decl, tree orig);
+ extern void transfer_defining_module (tree olddecl, tree newdecl);
  extern void remove_defining_module (tree decl);
  
  extern void mangle_module (int m, bool include_partition);
*************** extern bool pod_type_p				(const_tree);
*** 8376,8383 ****
  extern bool layout_pod_type_p			(const_tree);
  extern bool std_layout_type_p			(const_tree);
  extern bool trivial_type_p			(const_tree);
- extern bool trivially_relocatable_type_p	(tree);
- extern bool replaceable_type_p			(tree);
  extern bool implicit_lifetime_type_p		(tree);
  extern bool trivially_copyable_p		(const_tree);
  extern bool type_has_unique_obj_representations (const_tree);
--- 8359,8364 ----
diff -Nrcpad gcc-16-20251109/gcc/cp/cvt.cc gcc-16-20251116/gcc/cp/cvt.cc
*** gcc-16-20251109/gcc/cp/cvt.cc	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/cp/cvt.cc	Sun Nov 16 22:32:55 2025
*************** ocp_convert (tree type, tree expr, int c
*** 885,899 ****
  	  if (SCOPED_ENUM_P (intype) && (convtype & CONV_STATIC))
  	    e = build_nop (ENUM_UNDERLYING_TYPE (intype), e);
  	  if (complain & tf_warning)
! 	    return cp_truthvalue_conversion (e, complain);
  	  else
  	    {
  	      /* Prevent bogus -Wint-in-bool-context warnings coming
  		 from c_common_truthvalue_conversion down the line.  */
  	      warning_sentinel w (warn_int_in_bool_context);
  	      warning_sentinel c (warn_sign_compare);
! 	      return cp_truthvalue_conversion (e, complain);
  	    }
  	}
  
        converted = convert_to_integer_maybe_fold (type, e, dofold);
--- 885,906 ----
  	  if (SCOPED_ENUM_P (intype) && (convtype & CONV_STATIC))
  	    e = build_nop (ENUM_UNDERLYING_TYPE (intype), e);
  	  if (complain & tf_warning)
! 	    e = cp_truthvalue_conversion (e, complain);
  	  else
  	    {
  	      /* Prevent bogus -Wint-in-bool-context warnings coming
  		 from c_common_truthvalue_conversion down the line.  */
  	      warning_sentinel w (warn_int_in_bool_context);
  	      warning_sentinel c (warn_sign_compare);
! 	      e = cp_truthvalue_conversion (e, complain);
  	    }
+ 
+ 	  /* Sometimes boolean types don't match if a non-standard boolean
+ 	     type has been invented by the target.  */
+ 	  if (tree e2 = targetm.convert_to_type (type, e))
+ 	    return e2;
+ 
+ 	  return e;
  	}
  
        converted = convert_to_integer_maybe_fold (type, e, dofold);
diff -Nrcpad gcc-16-20251109/gcc/cp/decl.cc gcc-16-20251116/gcc/cp/decl.cc
*** gcc-16-20251109/gcc/cp/decl.cc	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/cp/decl.cc	Sun Nov 16 22:32:55 2025
*************** duplicate_decls (tree newdecl, tree oldd
*** 2595,2600 ****
--- 2595,2603 ----
    else
      DECL_ATTRIBUTES (olddecl) = DECL_ATTRIBUTES (newdecl);
  
+   /* Transfer purviewness and importingness to the old decl.  */
+   transfer_defining_module (olddecl, newdecl);
+ 
    if (TREE_CODE (newdecl) == TEMPLATE_DECL)
      {
        tree old_result = DECL_TEMPLATE_RESULT (olddecl);
*************** duplicate_decls (tree newdecl, tree oldd
*** 2669,2686 ****
  	    }
  	}
  
-       /* Propagate purviewness and importingness as with
- 	 set_instantiating_module, unless newdecl is a friend injection.  */
-       if (modules_p () && DECL_LANG_SPECIFIC (new_result)
- 	  && !(TREE_CODE (new_result) == FUNCTION_DECL
- 	       && DECL_UNIQUE_FRIEND_P (new_result)))
- 	{
- 	  if (DECL_MODULE_PURVIEW_P (new_result))
- 	    DECL_MODULE_PURVIEW_P (old_result) = true;
- 	  if (!DECL_MODULE_IMPORT_P (new_result))
- 	    DECL_MODULE_IMPORT_P (old_result) = false;
- 	}
- 
        /* If the new declaration is a definition, update the file and
  	 line information on the declaration, and also make
  	 the old declaration the same definition.  */
--- 2672,2677 ----
*************** grokfndecl (tree ctype,
*** 12106,12111 ****
--- 12097,12107 ----
  	  gcc_assert (identifier_p (fns) || OVL_P (fns));
  	  DECL_TEMPLATE_INFO (decl) = build_template_info (fns, args);
  
+ 	  /* Remember the befriending class like push_template_decl does for
+ 	     template friends.  */
+ 	  gcc_checking_assert (!DECL_CHAIN (decl));
+ 	  DECL_CHAIN (decl) = current_scope ();
+ 
  	  for (t = TYPE_ARG_TYPES (TREE_TYPE (decl)); t; t = TREE_CHAIN (t))
  	    if (TREE_PURPOSE (t)
  		&& TREE_CODE (TREE_PURPOSE (t)) == DEFERRED_PARSE)
diff -Nrcpad gcc-16-20251109/gcc/cp/friend.cc gcc-16-20251116/gcc/cp/friend.cc
*** gcc-16-20251109/gcc/cp/friend.cc	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/cp/friend.cc	Sun Nov 16 22:32:55 2025
*************** do_friend (tree scope, tree declarator,
*** 662,669 ****
    if (decl == error_mark_node)
      return error_mark_node;
  
!   if (!class_template_depth && DECL_IMPLICIT_INSTANTIATION (decl)
!       && TREE_CODE (DECL_TI_TEMPLATE (decl)) != TEMPLATE_DECL)
      /* "[if no non-template match is found,] each remaining function template
         is replaced with the specialization chosen by deduction from the
         friend declaration or discarded if deduction fails."
--- 662,669 ----
    if (decl == error_mark_node)
      return error_mark_node;
  
!   if (!class_template_depth
!       && decl_specialization_friend_p (decl))
      /* "[if no non-template match is found,] each remaining function template
         is replaced with the specialization chosen by deduction from the
         friend declaration or discarded if deduction fails."
diff -Nrcpad gcc-16-20251109/gcc/cp/lex.cc gcc-16-20251116/gcc/cp/lex.cc
*** gcc-16-20251109/gcc/cp/lex.cc	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/cp/lex.cc	Sun Nov 16 22:32:55 2025
*************** cxx_init (void)
*** 419,428 ****
        if (cxx_dialect >= cxx23)
  	cpp_warn (parse_in, "assume");
        if (cxx_dialect >= cxx26)
! 	{
! 	  cpp_warn (parse_in, "replaceable_if_eligible");
! 	  cpp_warn (parse_in, "trivially_relocatable_if_eligible");
! 	}
      }
  
    if (c_common_init () == false)
--- 419,425 ----
        if (cxx_dialect >= cxx23)
  	cpp_warn (parse_in, "assume");
        if (cxx_dialect >= cxx26)
! 	cpp_warn (parse_in, "indeterminate");
      }
  
    if (c_common_init () == false)
diff -Nrcpad gcc-16-20251109/gcc/cp/module.cc gcc-16-20251116/gcc/cp/module.cc
*** gcc-16-20251109/gcc/cp/module.cc	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/cp/module.cc	Sun Nov 16 22:32:55 2025
*************** class GTY((chain_next ("%h.parent"), for
*** 3871,3877 ****
  
   private:
    void write_config (elf_out *to, struct module_state_config &, unsigned crc);
!   bool read_config (struct module_state_config &);
    static void write_counts (elf_out *to, unsigned [MSC_HWM], unsigned *crc_ptr);
    bool read_counts (unsigned *);
  
--- 3871,3877 ----
  
   private:
    void write_config (elf_out *to, struct module_state_config &, unsigned crc);
!   bool read_config (struct module_state_config &, bool = true);
    static void write_counts (elf_out *to, unsigned [MSC_HWM], unsigned *crc_ptr);
    bool read_counts (unsigned *);
  
*************** class GTY((chain_next ("%h.parent"), for
*** 3898,3903 ****
--- 3898,3904 ----
    unsigned write_cluster (elf_out *to, depset *depsets[], unsigned size,
  			  depset::hash &, unsigned *counts, unsigned *crc_ptr);
    bool read_cluster (unsigned snum);
+   bool open_slurp (cpp_reader *);
  
   private:
    unsigned write_inits (elf_out *to, depset::hash &, unsigned *crc_ptr);
*************** class GTY((chain_next ("%h.parent"), for
*** 3959,3964 ****
--- 3960,3966 ----
   public:
    void set_filename (const Cody::Packet &);
    bool do_import (cpp_reader *, bool outermost);
+   bool check_importable (cpp_reader *);
  };
  
  /* Hash module state by name.  This cannot be a member of
*************** trees_out::lang_type_bools (tree t, bits
*** 6235,6245 ****
    gcc_checking_assert (!lang->erroneous);
    WB (lang->non_pod_aggregate);
    WB (lang->non_aggregate_pod);
-   WB (lang->trivially_relocatable);
-   WB (lang->trivially_relocatable_computed);
- 
-   WB (lang->replaceable);
-   WB (lang->replaceable_computed);
  #undef WB
  }
  
--- 6237,6242 ----
*************** trees_in::lang_type_bools (tree t, bits_
*** 6313,6323 ****
    gcc_checking_assert (!lang->erroneous);
    RB (lang->non_pod_aggregate);
    RB (lang->non_aggregate_pod);
-   RB (lang->trivially_relocatable);
-   RB (lang->trivially_relocatable_computed);
- 
-   RB (lang->replaceable);
-   RB (lang->replaceable_computed);
  #undef RB
    return !get_overrun ();
  }
--- 6310,6315 ----
*************** trees_out::get_merge_kind (tree decl, de
*** 11502,11508 ****
  	      }
  
  	    if (TREE_CODE (decl) == TEMPLATE_DECL
! 		&& DECL_UNINSTANTIATED_TEMPLATE_FRIEND_P (decl))
  	      {
  		mk = MK_local_friend;
  		break;
--- 11494,11501 ----
  	      }
  
  	    if (TREE_CODE (decl) == TEMPLATE_DECL
! 		? DECL_UNINSTANTIATED_TEMPLATE_FRIEND_P (decl)
! 		: decl_specialization_friend_p (decl))
  	      {
  		mk = MK_local_friend;
  		break;
*************** trees_out::decl_container (tree decl)
*** 11578,11584 ****
  
    tree container = NULL_TREE;
    if (TREE_CODE (decl) == TEMPLATE_DECL
!       && DECL_UNINSTANTIATED_TEMPLATE_FRIEND_P (decl))
      container = DECL_CHAIN (decl);
    else
      container = CP_DECL_CONTEXT (decl);
--- 11571,11578 ----
  
    tree container = NULL_TREE;
    if (TREE_CODE (decl) == TEMPLATE_DECL
!       ? DECL_UNINSTANTIATED_TEMPLATE_FRIEND_P (decl)
!       : decl_specialization_friend_p (decl))
      container = DECL_CHAIN (decl);
    else
      container = CP_DECL_CONTEXT (decl);
*************** trees_out::key_mergeable (int tag, merge
*** 11761,11767 ****
  
  	case MK_local_friend:
  	  {
! 	    /* Find by index on the class's DECL_LIST  */
  	    unsigned ix = 0;
  	    for (tree decls = CLASSTYPE_DECL_LIST (TREE_CHAIN (decl));
  		 decls; decls = TREE_CHAIN (decls))
--- 11755,11762 ----
  
  	case MK_local_friend:
  	  {
! 	    /* Find by index on the class's DECL_LIST.  We set TREE_CHAIN to
! 	       point to the class in push_template_decl or grokfndecl.  */
  	    unsigned ix = 0;
  	    for (tree decls = CLASSTYPE_DECL_LIST (TREE_CHAIN (decl));
  		 decls; decls = TREE_CHAIN (decls))
*************** trees_out::write_function_def (tree decl
*** 12919,12924 ****
--- 12914,12926 ----
  		    && (get_importer_interface (decl)
  			!= importer_interface::external));
  
+       /* Make sure DECL_REALLY_EXTERN and DECL_INTERFACE_KNOWN are consistent
+ 	 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_TEMPLATE_INFO (decl)
+ 			       && uses_template_parms (DECL_TI_ARGS (decl))));
+ 
        if (f)
  	{
  	  flags |= 2;
*************** trees_in::read_var_def (tree decl, tree
*** 13072,13079 ****
  	  if (DECL_EXPLICIT_INSTANTIATION (decl)
  	      && !DECL_EXTERNAL (decl))
  	    setup_explicit_instantiation_definition_linkage (decl);
! 	  /* Class static data members are handled in read_class_def.  */
! 	  if (!DECL_CLASS_SCOPE_P (decl)
  	      && (DECL_IMPLICIT_INSTANTIATION (decl)
  		  || (DECL_EXPLICIT_INSTANTIATION (decl)
  		      && !DECL_EXTERNAL (decl))))
--- 13074,13083 ----
  	  if (DECL_EXPLICIT_INSTANTIATION (decl)
  	      && !DECL_EXTERNAL (decl))
  	    setup_explicit_instantiation_definition_linkage (decl);
! 	  /* Class non-template static members are handled in read_class_def.
! 	     But still handle specialisations of member templates.  */
! 	  if ((!DECL_CLASS_SCOPE_P (decl)
! 	       || primary_template_specialization_p (decl))
  	      && (DECL_IMPLICIT_INSTANTIATION (decl)
  		  || (DECL_EXPLICIT_INSTANTIATION (decl)
  		      && !DECL_EXTERNAL (decl))))
*************** instantiating_tu_local_entity (tree decl
*** 14241,14248 ****
      return false;
  
    tree origin = get_originating_module_decl (decl);
!   if (!DECL_LANG_SPECIFIC (origin)
!       || !DECL_MODULE_IMPORT_P (origin))
      return false;
  
    /* Referencing TU-local entities from a header is generally OK.
--- 14245,14252 ----
      return false;
  
    tree origin = get_originating_module_decl (decl);
!   if (!DECL_LANG_SPECIFIC (STRIP_TEMPLATE (origin))
!       || !DECL_MODULE_IMPORT_P (STRIP_TEMPLATE (origin)))
      return false;
  
    /* Referencing TU-local entities from a header is generally OK.
*************** mangle_module (int mod, bool include_par
*** 16308,16313 ****
--- 16312,16320 ----
      /* Set when importing the primary module interface.  */
      imp = imp->parent;
  
+   /* Ensure this is actually a module unit.  */
+   gcc_checking_assert (imp);
+ 
    imp->mangle (include_partition);
  }
  
*************** module_state::read_cluster (unsigned snu
*** 17356,17366 ****
  	}
  
      }
!   /* Look, function.cc's interface to cfun does too much for us, we
!      just need to restore the old value.  I do not want to go
!      redesigning that API right now.  */
! #undef cfun
!   cfun = old_cfun;
    current_function_decl = old_cfd;
    comparing_dependent_aliases--;
  
--- 17363,17369 ----
  	}
  
      }
!   set_cfun (old_cfun);
    current_function_decl = old_cfd;
    comparing_dependent_aliases--;
  
*************** post_load_processing ()
*** 20090,20096 ****
  	DECL_EXTERNAL (decl) = false;
      }
  
!   cfun = old_cfun;
    current_function_decl = old_cfd;
  }
  
--- 20093,20099 ----
  	DECL_EXTERNAL (decl) = false;
      }
  
!   set_cfun (old_cfun);
    current_function_decl = old_cfd;
  }
  
*************** module_state::note_cmi_name ()
*** 20288,20294 ****
  }
  
  bool
! module_state::read_config (module_state_config &config)
  {
    bytes_in cfg;
  
--- 20291,20297 ----
  }
  
  bool
! module_state::read_config (module_state_config &config, bool complain)
  {
    bytes_in cfg;
  
*************** module_state::read_config (module_state_
*** 20317,20323 ****
  		       /* The 'I know what I'm doing' switch.  */
  		       && !flag_module_version_ignore);
        bool inform_p = true;
!       if (reject_p)
  	{
  	  cfg.set_overrun ();
  	  error_at (loc, "compiled module is %sversion %s",
--- 20320,20328 ----
  		       /* The 'I know what I'm doing' switch.  */
  		       && !flag_module_version_ignore);
        bool inform_p = true;
!       if (!complain)
! 	inform_p = false;
!       else if (reject_p)
  	{
  	  cfg.set_overrun ();
  	  error_at (loc, "compiled module is %sversion %s",
*************** module_state::read_config (module_state_
*** 20377,20383 ****
      unsigned e_crc = crc;
      crc = cfg.get_crc ();
      dump () && dump ("Reading CRC=%x", crc);
!     if (!is_direct () && crc != e_crc)
        {
  	error_at (loc, "module %qs CRC mismatch", get_flatname ());
  	cfg.set_overrun ();
--- 20382,20390 ----
      unsigned e_crc = crc;
      crc = cfg.get_crc ();
      dump () && dump ("Reading CRC=%x", crc);
!     /* When not complaining we haven't set directness yet, so ignore the
!        mismatch. */
!     if (complain && !is_direct () && crc != e_crc)
        {
  	error_at (loc, "module %qs CRC mismatch", get_flatname ());
  	cfg.set_overrun ();
*************** module_state::read_config (module_state_
*** 20405,20412 ****
      const char *their_dialect = cfg.str ();
      if (strcmp (their_dialect, config.dialect_str))
        {
! 	error_at (loc, "language dialect differs %qs, expected %qs",
! 		  their_dialect, config.dialect_str);
  	cfg.set_overrun ();
  	goto done;
        }
--- 20412,20420 ----
      const char *their_dialect = cfg.str ();
      if (strcmp (their_dialect, config.dialect_str))
        {
! 	if (complain)
! 	  error_at (loc, "language dialect differs %qs, expected %qs",
! 		    their_dialect, config.dialect_str);
  	cfg.set_overrun ();
  	goto done;
        }
*************** module_state::read_initial (cpp_reader *
*** 20820,20828 ****
    module_state_config config;
    bool ok = true;
  
-   if (ok && !from ()->begin (loc))
-     ok = false;
- 
    if (ok && !read_config (config))
      ok = false;
  
--- 20828,20833 ----
*************** propagate_defining_module (tree decl, tr
*** 21798,21803 ****
--- 21803,21844 ----
      }
  }
  
+ /* NEWDECL matched with OLDDECL, transfer defining module information
+    onto OLDDECL.  We've already validated attachment matches.  */
+ 
+ void
+ transfer_defining_module (tree olddecl, tree newdecl)
+ {
+   if (!modules_p ())
+     return;
+ 
+   tree old_inner = STRIP_TEMPLATE (olddecl);
+   tree new_inner = STRIP_TEMPLATE (newdecl);
+ 
+   if (DECL_LANG_SPECIFIC (new_inner))
+     {
+       gcc_checking_assert (DECL_LANG_SPECIFIC (old_inner));
+       if (DECL_MODULE_PURVIEW_P (new_inner))
+ 	DECL_MODULE_PURVIEW_P (old_inner) = true;
+       if (!DECL_MODULE_IMPORT_P (new_inner))
+ 	DECL_MODULE_IMPORT_P (old_inner) = false;
+     }
+ 
+   if (tree *p = imported_temploid_friends->get (newdecl))
+     {
+       tree orig = *p;
+       tree &slot = imported_temploid_friends->get_or_insert (olddecl);
+       if (!slot)
+ 	slot = orig;
+       else if (slot != orig)
+ 	/* This can happen when multiple classes declare the same
+ 	   friend function (e.g. g++.dg/modules/tpl-friend-4);
+ 	   make sure we at least attach to the same module.  */
+ 	gcc_checking_assert (get_originating_module (slot)
+ 			     == get_originating_module (orig));
+     }
+ }
+ 
  /* DECL is being freed, clear data we don't need anymore.  */
  
  void
*************** module_state::set_flatname ()
*** 21864,21883 ****
      flatname = IDENTIFIER_POINTER (name);
  }
  
! /* Read the CMI file for a module.  */
  
  bool
! module_state::do_import (cpp_reader *reader, bool outermost)
  {
!   gcc_assert (global_namespace == current_scope () && loadedness == ML_NONE);
! 
!   /* If this TU is a partition of the module we're importing,
!      that module is the primary module interface.  */
!   if (this_module ()->is_partition ()
!       && this == get_primary (this_module ()))
!     module_p = true;
! 
!   loc = linemap_module_loc (line_table, loc, get_flatname ());
  
    if (lazy_open >= lazy_limit)
      freeze_an_elf ();
--- 21905,21918 ----
      flatname = IDENTIFIER_POINTER (name);
  }
  
! /* Open the GCM file and prepare to read.  Return whether that was
!    successful.  */
  
  bool
! module_state::open_slurp (cpp_reader *reader)
  {
!   if (slurp)
!     return true;
  
    if (lazy_open >= lazy_limit)
      freeze_an_elf ();
*************** module_state::do_import (cpp_reader *rea
*** 21900,21913 ****
    gcc_checking_assert (!slurp);
    slurp = new slurping (new elf_in (fd, e));
  
!   bool ok = true;
    if (!from ()->get_error ())
      {
        announce ("importing");
        loadedness = ML_CONFIG;
-       lazy_open++;
        ok = read_initial (reader);
-       slurp->lru = ++lazy_lru;
      }
  
    gcc_assert (slurp->current == ~0u);
--- 21935,21984 ----
    gcc_checking_assert (!slurp);
    slurp = new slurping (new elf_in (fd, e));
  
!   bool ok = from ()->begin (loc);
!   if (ok)
!     {
!       lazy_open++;
!       slurp->lru = ++lazy_lru;
!     }
!   return ok;
! }
! 
! /* Return whether importing this GCM would work without an error in
!    read_config.  */
! 
! bool
! module_state::check_importable (cpp_reader *reader)
! {
!   if (loadedness > ML_CONFIG)
!     return true;
!   if (!open_slurp (reader))
!     return false;
!   module_state_config config;
!   return read_config (config, /*complain*/false);
! }
! 
! /* Read the CMI file for a module.  */
! 
! bool
! module_state::do_import (cpp_reader *reader, bool outermost)
! {
!   gcc_assert (global_namespace == current_scope () && loadedness == ML_NONE);
! 
!   /* If this TU is a partition of the module we're importing,
!      that module is the primary module interface.  */
!   if (this_module ()->is_partition ()
!       && this == get_primary (this_module ()))
!     module_p = true;
! 
!   loc = linemap_module_loc (line_table, loc, get_flatname ());
! 
!   bool ok = open_slurp (reader);
    if (!from ()->get_error ())
      {
        announce ("importing");
        loadedness = ML_CONFIG;
        ok = read_initial (reader);
      }
  
    gcc_assert (slurp->current == ~0u);
*************** maybe_translate_include (cpp_reader *rea
*** 22449,22455 ****
    auto packet = mapper->IncludeTranslate (path, Cody::Flags::None, len);
  
    enum class xlate_kind {
!     unknown, text, import,
    } translate = xlate_kind::unknown;
  
    if (packet.GetCode () == Cody::Client::PC_BOOL)
--- 22520,22526 ----
    auto packet = mapper->IncludeTranslate (path, Cody::Flags::None, len);
  
    enum class xlate_kind {
!     unknown, text, import, invalid
    } translate = xlate_kind::unknown;
  
    if (packet.GetCode () == Cody::Client::PC_BOOL)
*************** maybe_translate_include (cpp_reader *rea
*** 22460,22466 ****
  	 We may already know about this import, but libcpp doesn't yet.  */
        module_state *import = get_module (build_string (len, path));
        import->set_filename (packet);
!       translate = xlate_kind::import;
      }
    else
      {
--- 22531,22540 ----
  	 We may already know about this import, but libcpp doesn't yet.  */
        module_state *import = get_module (build_string (len, path));
        import->set_filename (packet);
!       if (import->check_importable (reader))
! 	translate = xlate_kind::import;
!       else
! 	translate = xlate_kind::invalid;
      }
    else
      {
*************** maybe_translate_include (cpp_reader *rea
*** 22469,22475 ****
  		path, packet.GetString ().c_str ());
      }
  
!   bool note = false;
    if (note_include_translate_yes && translate == xlate_kind::import)
      note = true;
    else if (note_include_translate_no && translate == xlate_kind::unknown)
--- 22543,22549 ----
  		path, packet.GetString ().c_str ());
      }
  
!   bool note = (translate == xlate_kind::invalid);
    if (note_include_translate_yes && translate == xlate_kind::import)
      note = true;
    else if (note_include_translate_no && translate == xlate_kind::unknown)
*************** maybe_translate_include (cpp_reader *rea
*** 22484,22489 ****
--- 22558,22565 ----
    if (note)
      inform (loc, translate == xlate_kind::import
  	    ? G_("include %qs translated to import")
+ 	    : translate == xlate_kind::invalid
+ 	    ? G_("import of %qs failed, falling back to include")
  	    : G_("include %qs processed textually"), path);
  
    dump () && dump (translate == xlate_kind::import
diff -Nrcpad gcc-16-20251109/gcc/cp/name-lookup.cc gcc-16-20251116/gcc/cp/name-lookup.cc
*** gcc-16-20251109/gcc/cp/name-lookup.cc	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/cp/name-lookup.cc	Sun Nov 16 22:32:55 2025
*************** name_lookup::adl_namespace_fns (tree sco
*** 1338,1343 ****
--- 1338,1344 ----
  		      bind = STAT_VISIBLE (bind);
  		  }
  
+ 		bind = ovl_skip_hidden (bind);
  		if (on_inst_path || visible)
  		  add_fns (bind);
  		else
*************** do_nonmember_using_decl (name_lookup &lo
*** 5403,5409 ****
  		     namespace.  We will still want to insert it if
  		     it is revealing a not-revealed thing.  */
  		  found = true;
! 		  if (!revealing_p)
  		    ;
  		  else if (old.using_p ())
  		    {
--- 5404,5414 ----
  		     namespace.  We will still want to insert it if
  		     it is revealing a not-revealed thing.  */
  		  found = true;
! 		  if (old.hidden_p ())
! 		    /* The function was merged with a hidden built-in;
! 		       insert it again as not hidden.  */
! 		    found = false;
! 		  else if (!revealing_p)
  		    ;
  		  else if (old.using_p ())
  		    {
diff -Nrcpad gcc-16-20251109/gcc/cp/parser.cc gcc-16-20251116/gcc/cp/parser.cc
*** gcc-16-20251109/gcc/cp/parser.cc	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/cp/parser.cc	Sun Nov 16 22:32:55 2025
*************** cp_parser_class_specifier (cp_parser* pa
*** 28721,28728 ****
  
     class-property-specifier:
       final
-      trivially_relocatable_if_eligible (C++26)
-      replaceable_if_eligible (C++26)
  
     Returns a bitmask representing the class-property-specifiers.  */
  
--- 28721,28726 ----
*************** cp_parser_class_property_specifier_seq_o
*** 28755,28792 ****
  	}
        else if (id_equal (token->u.value, "__final"))
  	virt_specifier = VIRT_SPEC_FINAL;
-       else if (id_equal (token->u.value, "trivially_relocatable_if_eligible"))
- 	{
- 	  if (cxx_dialect < cxx26)
- 	    {
- 	      /* Warn about the C++26 conditional keyword (but don't parse
- 		 it).  */
- 	      warning_at (token->location, OPT_Wc__26_compat,
- 			  "identifier %qE is a conditional keyword in C++26",
- 			  token->u.value);
- 	      break;
- 	    }
- 	  virt_specifier = VIRT_SPEC_TRIVIALLY_RELOCATABLE_IF_ELIGIBLE;
- 	}
-       else if (id_equal (token->u.value,
- 			 "__trivially_relocatable_if_eligible"))
- 	virt_specifier = VIRT_SPEC_TRIVIALLY_RELOCATABLE_IF_ELIGIBLE;
-       else if (id_equal (token->u.value, "replaceable_if_eligible"))
- 	{
- 	  if (cxx_dialect < cxx26)
- 	    {
- 	      /* Warn about the C++26 conditional keyword (but don't parse
- 		 it).  */
- 	      warning_at (token->location, OPT_Wc__26_compat,
- 			  "identifier %qE is a conditional keyword in C++26",
- 			  token->u.value);
- 	      break;
- 	    }
- 	  virt_specifier = VIRT_SPEC_REPLACEABLE_IF_ELIGIBLE;
- 	}
-       else if (id_equal (token->u.value,
- 			 "__replaceable_if_eligible"))
- 	virt_specifier = VIRT_SPEC_REPLACEABLE_IF_ELIGIBLE;
        else
  	break;
  
--- 28753,28758 ----
*************** cp_parser_class_head (cp_parser* parser,
*** 29342,29357 ****
      DECL_SOURCE_LOCATION (TYPE_NAME (type)) = type_start_token->location;
    if (type && (virt_specifiers & VIRT_SPEC_FINAL))
      CLASSTYPE_FINAL (type) = 1;
-   if (type && (virt_specifiers & VIRT_SPEC_TRIVIALLY_RELOCATABLE_IF_ELIGIBLE))
-     {
-       gcc_assert (!CLASSTYPE_TRIVIALLY_RELOCATABLE_COMPUTED (type));
-       CLASSTYPE_TRIVIALLY_RELOCATABLE_BIT (type) = 1;
-     }
-   if (type && (virt_specifiers & VIRT_SPEC_REPLACEABLE_IF_ELIGIBLE))
-     {
-       gcc_assert (!CLASSTYPE_REPLACEABLE_COMPUTED (type));
-       CLASSTYPE_REPLACEABLE_BIT (type) = 1;
-     }
   out:
    parser->colon_corrects_to_scope_p = saved_colon_corrects_to_scope_p;
    return type;
--- 29308,29313 ----
diff -Nrcpad gcc-16-20251109/gcc/cp/pt.cc gcc-16-20251116/gcc/cp/pt.cc
*** gcc-16-20251109/gcc/cp/pt.cc	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/cp/pt.cc	Sun Nov 16 22:32:55 2025
*************** tsubst_friend_function (tree decl, tree
*** 11660,11668 ****
  {
    tree new_friend;
  
!   if (TREE_CODE (decl) == FUNCTION_DECL
!       && DECL_TEMPLATE_INSTANTIATION (decl)
!       && TREE_CODE (DECL_TI_TEMPLATE (decl)) != TEMPLATE_DECL)
      /* This was a friend declared with an explicit template
         argument list, e.g.:
  
--- 11660,11666 ----
  {
    tree new_friend;
  
!   if (decl_specialization_friend_p (decl))
      /* This was a friend declared with an explicit template
         argument list, e.g.:
  
*************** tsubst_friend_function (tree decl, tree
*** 11905,11913 ****
  	 without necessarily having opened the enclosing namespace, so
  	 make sure the namespace is in the purview now too.  */
        if (modules_p ()
! 	  && DECL_MODULE_PURVIEW_P (STRIP_TEMPLATE (new_friend))
! 	  && TREE_CODE (DECL_CONTEXT (new_friend)) == NAMESPACE_DECL)
! 	DECL_MODULE_PURVIEW_P (DECL_CONTEXT (new_friend)) = true;
      }
    else
      {
--- 11903,11912 ----
  	 without necessarily having opened the enclosing namespace, so
  	 make sure the namespace is in the purview now too.  */
        if (modules_p ()
! 	  && DECL_MODULE_PURVIEW_P (STRIP_TEMPLATE (new_friend)))
! 	for (tree ctx = DECL_CONTEXT (new_friend);
! 	     TREE_CODE (ctx) == NAMESPACE_DECL; ctx = DECL_CONTEXT (ctx))
! 	  DECL_MODULE_PURVIEW_P (ctx) = true;
      }
    else
      {
*************** instantiate_class_template (tree type)
*** 12708,12724 ****
        determine_visibility (TYPE_MAIN_DECL (type));
      }
    if (CLASS_TYPE_P (type))
!     {
!       CLASSTYPE_FINAL (type) = CLASSTYPE_FINAL (pattern);
!       CLASSTYPE_TRIVIALLY_RELOCATABLE_BIT (type)
! 	= CLASSTYPE_TRIVIALLY_RELOCATABLE_BIT (pattern);
!       CLASSTYPE_TRIVIALLY_RELOCATABLE_COMPUTED (type)
! 	= CLASSTYPE_TRIVIALLY_RELOCATABLE_COMPUTED (pattern);
!       CLASSTYPE_REPLACEABLE_BIT (type)
! 	= CLASSTYPE_REPLACEABLE_BIT (pattern);
!       CLASSTYPE_REPLACEABLE_COMPUTED (type)
! 	= CLASSTYPE_REPLACEABLE_COMPUTED (pattern);
!     }
  
    pbinfo = TYPE_BINFO (pattern);
  
--- 12707,12713 ----
        determine_visibility (TYPE_MAIN_DECL (type));
      }
    if (CLASS_TYPE_P (type))
!     CLASSTYPE_FINAL (type) = CLASSTYPE_FINAL (pattern);
  
    pbinfo = TYPE_BINFO (pattern);
  
*************** mark_decl_instantiated (tree result, int
*** 26390,26400 ****
  {
    SET_DECL_EXPLICIT_INSTANTIATION (result);
  
-   /* If this entity has already been written out, it's too late to
-      make any modifications.  */
-   if (TREE_ASM_WRITTEN (result))
-     return;
- 
    /* consteval functions are never emitted.  */
    if (TREE_CODE (result) == FUNCTION_DECL
        && DECL_IMMEDIATE_FUNCTION_P (result))
--- 26379,26384 ----
diff -Nrcpad gcc-16-20251109/gcc/cp/semantics.cc gcc-16-20251116/gcc/cp/semantics.cc
*** gcc-16-20251109/gcc/cp/semantics.cc	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/cp/semantics.cc	Sun Nov 16 22:32:55 2025
*************** trait_expr_value (cp_trait_kind kind, tr
*** 13631,13651 ****
      case CPTK_IS_NOTHROW_INVOCABLE:
        return expr_noexcept_p (build_invoke (type1, type2, tf_none), tf_none);
  
-     case CPTK_IS_NOTHROW_RELOCATABLE:
-       if (trivially_relocatable_type_p (type1))
- 	return true;
-       else
- 	{
- 	  type1 = strip_array_types (type1);
- 	  if (!referenceable_type_p (type1))
- 	    return false;
- 	  tree arg = make_tree_vec (1);
- 	  TREE_VEC_ELT (arg, 0)
- 	    = cp_build_reference_type (type1, /*rval=*/true);
- 	  return (is_nothrow_xible (INIT_EXPR, type1, arg)
- 		  && is_nothrow_xible (BIT_NOT_EXPR, type1, NULL_TREE));
- 	}
- 
      case CPTK_IS_OBJECT:
        return object_type_p (type1);
  
--- 13631,13636 ----
*************** trait_expr_value (cp_trait_kind kind, tr
*** 13664,13672 ****
      case CPTK_IS_REFERENCE:
        return type_code1 == REFERENCE_TYPE;
  
-     case CPTK_IS_REPLACEABLE:
-       return replaceable_type_p (type1);
- 
      case CPTK_IS_SAME:
        return same_type_p (type1, type2);
  
--- 13649,13654 ----
*************** trait_expr_value (cp_trait_kind kind, tr
*** 13691,13699 ****
      case CPTK_IS_TRIVIALLY_DESTRUCTIBLE:
        return is_trivially_xible (BIT_NOT_EXPR, type1, NULL_TREE);
  
-     case CPTK_IS_TRIVIALLY_RELOCATABLE:
-       return trivially_relocatable_type_p (type1);
- 
      case CPTK_IS_UNBOUNDED_ARRAY:
        return array_of_unknown_bound_p (type1);
  
--- 13673,13678 ----
*************** finish_trait_expr (location_t loc, cp_tr
*** 13895,13905 ****
      case CPTK_IS_LITERAL_TYPE:
      case CPTK_IS_POD:
      case CPTK_IS_STD_LAYOUT:
-     case CPTK_IS_REPLACEABLE:
-     case CPTK_IS_NOTHROW_RELOCATABLE:
      case CPTK_IS_TRIVIAL:
      case CPTK_IS_TRIVIALLY_COPYABLE:
-     case CPTK_IS_TRIVIALLY_RELOCATABLE:
      case CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS:
        if (!check_trait_type (type1, /* kind = */ 2))
  	return error_mark_node;
--- 13874,13881 ----
diff -Nrcpad gcc-16-20251109/gcc/cp/tree.cc gcc-16-20251116/gcc/cp/tree.cc
*** gcc-16-20251109/gcc/cp/tree.cc	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/cp/tree.cc	Sun Nov 16 22:32:55 2025
*************** trivial_type_p (const_tree t)
*** 4810,5102 ****
      return scalarish_type_p (t);
  }
  
- /* Returns 1 iff type T is a default-movable type, as defined in
-    [class.prop].  */
- 
- static bool
- default_movable_type_p (tree t)
- {
-   if (!CLASS_TYPE_P (t) || !COMPLETE_TYPE_P (t))
-     return false;
-   if (CLASSTYPE_LAZY_DESTRUCTOR (t))
-     lazily_declare_fn (sfk_destructor, t);
-   if (tree dtor = CLASSTYPE_DESTRUCTOR (t))
-     if (user_provided_p (dtor) || DECL_DELETED_FN (dtor))
-       return false;
- 
-   tree copy_ctor = NULL_TREE, move_ctor = NULL_TREE;
-   tree copy_assign = NULL_TREE, move_assign = NULL_TREE;
-   if (CLASSTYPE_LAZY_MOVE_CTOR (t))
-     move_ctor = lazily_declare_fn (sfk_move_constructor, t);
-   if (CLASSTYPE_LAZY_MOVE_ASSIGN (t))
-     move_assign = lazily_declare_fn (sfk_move_assignment, t);
-   if (!move_ctor)
-     for (ovl_iterator iter (CLASSTYPE_CONSTRUCTORS (t)); iter; ++iter)
-       if (TREE_CODE (*iter) == FUNCTION_DECL)
- 	{
- 	  if (copy_fn_p (*iter))
- 	    copy_ctor = *iter;
- 	  else if (move_fn_p (*iter))
- 	    {
- 	      move_ctor = *iter;
- 	      break;
- 	    }
- 	}
-   if (!move_assign)
-     for (ovl_iterator iter (get_class_binding_direct (t,
- 						      assign_op_identifier));
- 	 iter; ++iter)
-       if (TREE_CODE (*iter) == FUNCTION_DECL)
- 	{
- 	  if (copy_fn_p (*iter))
- 	    copy_assign = *iter;
- 	  else if (move_fn_p (*iter))
- 	    {
- 	      move_assign = *iter;
- 	      break;
- 	    }
- 	}
-   if (!move_ctor)
-     {
-       if (CLASSTYPE_LAZY_COPY_CTOR (t))
- 	copy_ctor = lazily_declare_fn (sfk_copy_constructor, t);
-       if (!copy_ctor)
- 	return false;
-       if (user_provided_p (copy_ctor)
- 	  || DECL_DELETED_FN (copy_ctor)
- 	  || DECL_CONTEXT (copy_ctor) != t
- 	  || DECL_INHERITED_CTOR (copy_ctor))
- 	return false;
-     }
-   else if (user_provided_p (move_ctor)
- 	   || DECL_DELETED_FN (move_ctor)
- 	   || DECL_CONTEXT (move_ctor) != t
- 	   || DECL_INHERITED_CTOR (move_ctor))
-     return false;
-   if (!move_assign)
-     {
-       if (CLASSTYPE_LAZY_COPY_ASSIGN (t))
- 	copy_assign = lazily_declare_fn (sfk_copy_assignment, t);
-       if (!copy_assign)
- 	return false;
-       if (user_provided_p (copy_assign)
- 	  || DECL_DELETED_FN (copy_assign)
- 	  || DECL_CONTEXT (copy_assign) != t)
- 	return false;
-     }
-   else if (user_provided_p (move_assign)
- 	   || DECL_DELETED_FN (move_assign)
- 	   || DECL_CONTEXT (move_assign) != t)
-     return false;
-   return true;
- }
- 
- /* Returns 1 iff type T is a union with no user declared special member
-    functions.  */
- 
- static bool
- union_with_no_declared_special_member_fns (tree t)
- {
-   if (TREE_CODE (t) != UNION_TYPE)
-     return false;
- 
-   for (ovl_iterator iter (CLASSTYPE_CONSTRUCTORS (t)); iter; ++iter)
-     if (TREE_CODE (*iter) == FUNCTION_DECL
- 	&& !DECL_ARTIFICIAL (*iter)
- 	&& (default_ctor_p (*iter) || copy_fn_p (*iter) || move_fn_p (*iter)))
-       return false;
- 
-   for (ovl_iterator iter (get_class_binding_direct (t, assign_op_identifier));
-        iter; ++iter)
-     if (TREE_CODE (*iter) == FUNCTION_DECL
- 	&& !DECL_ARTIFICIAL (*iter)
- 	&& (copy_fn_p (*iter) || move_fn_p (*iter)))
-       return false;
- 
-   if (tree dtor = CLASSTYPE_DESTRUCTOR (t))
-     if (!DECL_ARTIFICIAL (dtor))
-       return false;
- 
-   return true;
- }
- 
- /* Returns 1 iff type T is a trivially relocatable type, as defined in
-    [basic.types.general] and [class.prop].  */
- 
- bool
- trivially_relocatable_type_p (tree t)
- {
-   t = strip_array_types (t);
- 
-   if (!CLASS_TYPE_P (t))
-     return scalarish_type_p (t);
- 
-   t = TYPE_MAIN_VARIANT (t);
-   if (CLASSTYPE_TRIVIALLY_RELOCATABLE_COMPUTED (t))
-     return CLASSTYPE_TRIVIALLY_RELOCATABLE_BIT (t);
-   if (!COMPLETE_TYPE_P (t))
-     return false;
- 
-   if (!CLASSTYPE_TRIVIALLY_RELOCATABLE_BIT (t)
-       && !union_with_no_declared_special_member_fns (t)
-       && !default_movable_type_p (t))
-     {
-     nontriv:
-       CLASSTYPE_TRIVIALLY_RELOCATABLE_BIT (t) = 0;
-       CLASSTYPE_TRIVIALLY_RELOCATABLE_COMPUTED (t) = 1;
-       return false;
-     }
- 
-   if (CLASSTYPE_VBASECLASSES (t))
-     goto nontriv;
- 
-   if (CLASSTYPE_LAZY_DESTRUCTOR (t))
-     lazily_declare_fn (sfk_destructor, t);
-   if (tree dtor = CLASSTYPE_DESTRUCTOR (t))
-     if (DECL_DELETED_FN (dtor))
-       goto nontriv;
- 
-   tree binfo, base_binfo;
-   unsigned int i;
-   for (binfo = TYPE_BINFO (t), i = 0;
-        BINFO_BASE_ITERATE (binfo, i, base_binfo); i++)
-     {
-       tree basetype = TREE_TYPE (base_binfo);
-       if (!trivially_relocatable_type_p (basetype))
- 	goto nontriv;
-     }
- 
-   for (tree field = TYPE_FIELDS (t); field; field = DECL_CHAIN (field))
-     if (TREE_CODE (field) == FIELD_DECL
- 	&& !DECL_ARTIFICIAL (field)
- 	&& !DECL_UNNAMED_BIT_FIELD (field))
-       {
- 	tree type = TREE_TYPE (field);
- 	if (type == error_mark_node)
- 	  goto nontriv;
- 	if (!TYPE_REF_P (type) && !trivially_relocatable_type_p (type))
- 	  goto nontriv;
-       }
- 
-   CLASSTYPE_TRIVIALLY_RELOCATABLE_BIT (t) = 1;
-   CLASSTYPE_TRIVIALLY_RELOCATABLE_COMPUTED (t) = 1;
-   return true;
- }
- 
- /* Returns 1 iff type T is a replaceable type, as defined in [basic.types]
-    and [class].  */
- 
- bool
- replaceable_type_p (tree t)
- {
-   t = strip_array_types (t);
- 
-   if (cv_qualified_p (t))
-     return false;
- 
-   if (!CLASS_TYPE_P (t))
-     return scalarish_type_p (t);
- 
-   t = TYPE_MAIN_VARIANT (t);
-   if (CLASSTYPE_REPLACEABLE_COMPUTED (t))
-     return CLASSTYPE_REPLACEABLE_BIT (t);
-   if (!COMPLETE_TYPE_P (t))
-     return false;
- 
-   if (!CLASSTYPE_REPLACEABLE_BIT (t)
-       && !union_with_no_declared_special_member_fns (t)
-       && !default_movable_type_p (t))
-     {
-     nonrepl:
-       CLASSTYPE_REPLACEABLE_BIT (t) = 0;
-       CLASSTYPE_REPLACEABLE_COMPUTED (t) = 1;
-       return false;
-     }
- 
-   if (CLASSTYPE_LAZY_DESTRUCTOR (t))
-     lazily_declare_fn (sfk_destructor, t);
-   if (tree dtor = CLASSTYPE_DESTRUCTOR (t))
-     if (DECL_DELETED_FN (dtor))
-       goto nonrepl;
- 
-   tree copy_ctor = NULL_TREE, move_ctor = NULL_TREE;
-   tree copy_assign = NULL_TREE, move_assign = NULL_TREE;
-   if (CLASSTYPE_LAZY_MOVE_CTOR (t))
-     move_ctor = lazily_declare_fn (sfk_move_constructor, t);
-   if (CLASSTYPE_LAZY_MOVE_ASSIGN (t))
-     move_assign = lazily_declare_fn (sfk_move_assignment, t);
-   if (!move_ctor)
-     for (ovl_iterator iter (CLASSTYPE_CONSTRUCTORS (t)); iter; ++iter)
-       if (TREE_CODE (*iter) == FUNCTION_DECL)
- 	{
- 	  if (copy_fn_p (*iter))
- 	    copy_ctor = *iter;
- 	  else if (move_fn_p (*iter))
- 	    {
- 	      move_ctor = *iter;
- 	      break;
- 	    }
- 	}
-   if (!move_assign)
-     for (ovl_iterator iter (get_class_binding_direct (t,
- 						      assign_op_identifier));
- 	 iter; ++iter)
-       if (TREE_CODE (*iter) == FUNCTION_DECL)
- 	{
- 	  if (copy_fn_p (*iter))
- 	    copy_assign = *iter;
- 	  else if (move_fn_p (*iter))
- 	    {
- 	      move_assign = *iter;
- 	      break;
- 	    }
- 	}
-   if (!move_ctor)
-     {
-       if (CLASSTYPE_LAZY_COPY_CTOR (t))
- 	copy_ctor = lazily_declare_fn (sfk_copy_constructor, t);
-       if (!copy_ctor || DECL_DELETED_FN (copy_ctor))
- 	goto nonrepl;
-     }
-   else if (DECL_DELETED_FN (move_ctor))
-     goto nonrepl;
-   if (!move_assign)
-     {
-       if (CLASSTYPE_LAZY_COPY_ASSIGN (t))
- 	copy_assign = lazily_declare_fn (sfk_copy_assignment, t);
-       if (!copy_assign || DECL_DELETED_FN (copy_assign))
- 	goto nonrepl;
-     }
-   else if (DECL_DELETED_FN (move_assign))
-     goto nonrepl;
- 
-   tree binfo, base_binfo;
-   unsigned int i;
-   for (binfo = TYPE_BINFO (t), i = 0;
-        BINFO_BASE_ITERATE (binfo, i, base_binfo); i++)
-     {
-       tree basetype = TREE_TYPE (base_binfo);
-       if (!replaceable_type_p (basetype))
- 	goto nonrepl;
-     }
- 
-   for (tree field = TYPE_FIELDS (t); field; field = DECL_CHAIN (field))
-     if (TREE_CODE (field) == FIELD_DECL
- 	&& !DECL_ARTIFICIAL (field)
- 	&& !DECL_UNNAMED_BIT_FIELD (field))
-       {
- 	tree type = TREE_TYPE (field);
- 	if (type == error_mark_node)
- 	  goto nonrepl;
- 	if (!replaceable_type_p (type))
- 	  goto nonrepl;
-       }
- 
-   CLASSTYPE_REPLACEABLE_BIT (t) = 1;
-   CLASSTYPE_REPLACEABLE_COMPUTED (t) = 1;
-   return true;
- }
- 
  /* Returns 1 iff type T is an implicit-lifetime type, as defined in
     [basic.types.general] and [class.prop].  */
  
--- 4810,4815 ----
diff -Nrcpad gcc-16-20251109/gcc/cp/typeck.cc gcc-16-20251116/gcc/cp/typeck.cc
*** gcc-16-20251109/gcc/cp/typeck.cc	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/cp/typeck.cc	Sun Nov 16 22:32:55 2025
*************** cp_build_binary_op (const op_location_t
*** 6272,6289 ****
  	      return error_mark_node;
  	    }
  
! 	  /* Always construct signed integer vector type.  */
! 	  intt = c_common_type_for_size
! 	    (GET_MODE_BITSIZE (SCALAR_TYPE_MODE (TREE_TYPE (type0))), 0);
! 	  if (!intt)
  	    {
! 	      if (complain & tf_error)
! 		error_at (location, "could not find an integer type "
! 			  "of the same size as %qT", TREE_TYPE (type0));
! 	      return error_mark_node;
  	    }
- 	  result_type = build_opaque_vector_type (intt,
- 						  TYPE_VECTOR_SUBPARTS (type0));
  	  return build_vec_cmp (resultcode, result_type, op0, op1);
  	}
        build_type = boolean_type_node;
--- 6272,6295 ----
  	      return error_mark_node;
  	    }
  
! 	  if (VECTOR_BOOLEAN_TYPE_P (type0) && VECTOR_BOOLEAN_TYPE_P (type1))
! 	    result_type = type0;
! 	  else
  	    {
! 	      /* Always construct signed integer vector type.  */
! 	      auto intmode = SCALAR_TYPE_MODE (TREE_TYPE (type0));
! 	      auto nelts = TYPE_VECTOR_SUBPARTS (type0);
! 
! 	      intt = c_common_type_for_size (GET_MODE_BITSIZE (intmode), 0);
! 	      if (!intt)
! 		{
! 		  if (complain & tf_error)
! 		    error_at (location, "could not find an integer type "
! 				"of the same size as %qT", TREE_TYPE (type0));
! 		  return error_mark_node;
! 		}
! 	      result_type = build_opaque_vector_type (intt, nelts);
  	    }
  	  return build_vec_cmp (resultcode, result_type, op0, op1);
  	}
        build_type = boolean_type_node;
diff -Nrcpad gcc-16-20251109/gcc/diagnostic.h gcc-16-20251116/gcc/diagnostic.h
*** gcc-16-20251109/gcc/diagnostic.h	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/diagnostic.h	Sun Nov 16 22:32:55 2025
*************** option_unspecified_p (diagnostics::optio
*** 275,281 ****
  namespace diagnostics {
  
  /* Compute the number of digits in the decimal representation of an integer.  */
! extern int num_digits (int);
  
  } // namespace diagnostics
  
--- 275,281 ----
  namespace diagnostics {
  
  /* Compute the number of digits in the decimal representation of an integer.  */
! extern int num_digits (uint64_t);
  
  } // namespace diagnostics
  
diff -Nrcpad gcc-16-20251109/gcc/diagnostics/context.cc gcc-16-20251116/gcc/diagnostics/context.cc
*** gcc-16-20251109/gcc/diagnostics/context.cc	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/diagnostics/context.cc	Sun Nov 16 22:32:55 2025
*************** context::report_global_digraph (const la
*** 1592,1602 ****
  /* Get the number of digits in the decimal representation of VALUE.  */
  
  int
! num_digits (int value)
  {
    /* Perhaps simpler to use log10 for this, but doing it this way avoids
       using floating point.  */
-   gcc_assert (value >= 0);
  
    if (value == 0)
      return 1;
--- 1592,1601 ----
  /* Get the number of digits in the decimal representation of VALUE.  */
  
  int
! num_digits (uint64_t value)
  {
    /* Perhaps simpler to use log10 for this, but doing it this way avoids
       using floating point.  */
  
    if (value == 0)
      return 1;
*************** test_num_digits ()
*** 2299,2304 ****
--- 2298,2304 ----
    ASSERT_EQ (7, num_digits (9999999));
    ASSERT_EQ (8, num_digits (10000000));
    ASSERT_EQ (8, num_digits (99999999));
+   ASSERT_EQ (20, num_digits (uint64_t (-1)));
  }
  
  /* Run all of the selftests within this file.
diff -Nrcpad gcc-16-20251109/gcc/diagnostics/sarif-sink.cc gcc-16-20251116/gcc/diagnostics/sarif-sink.cc
*** gcc-16-20251109/gcc/diagnostics/sarif-sink.cc	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/diagnostics/sarif-sink.cc	Sun Nov 16 22:32:55 2025
*************** along with GCC; see the file COPYING3.
*** 55,60 ****
--- 55,62 ----
  #include "backtrace.h"
  #include "xml.h"
  #include "intl.h"
+ #include <sys/un.h>
+ #include <sys/socket.h>
  
  namespace diagnostics {
  
*************** sarif_builder::emit_diagram (const diagr
*** 1917,1923 ****
    m_cur_group_result->on_diagram (d, *this);
  }
  
! /* Implementation of "end_group_cb" for SARIF output.  */
  
  void
  sarif_builder::end_group ()
--- 1919,1926 ----
    m_cur_group_result->on_diagram (d, *this);
  }
  
! /* Implementation of "end_group_cb" for SARIF output.
!    Append the current sarifResult to results, and set it to nullptr.  */
  
  void
  sarif_builder::end_group ()
*************** public:
*** 4011,4017 ****
    {
      /* No-op,  */
    }
!   void on_end_group () final override
    {
      m_builder.end_group ();
    }
--- 4014,4020 ----
    {
      /* No-op,  */
    }
!   void on_end_group () override
    {
      m_builder.end_group ();
    }
*************** private:
*** 4123,4128 ****
--- 4126,4246 ----
    output_file m_output_file;
  };
  
+ class unique_fd
+ {
+ public:
+   unique_fd () : m_ival (-1) {}
+   explicit unique_fd (int ival) : m_ival (ival) {}
+   unique_fd (const unique_fd &) = delete;
+   unique_fd (unique_fd &&other)
+   : m_ival (other.m_ival)
+   {
+     other.m_ival = -1;
+   }
+   ~unique_fd ()
+   {
+     if (m_ival != -1)
+       close (m_ival);
+   }
+   unique_fd &operator= (const unique_fd &other) = delete;
+   unique_fd &operator= (unique_fd &&other)
+   {
+     if (m_ival != -1)
+       close (m_ival);
+     m_ival = other.m_ival;
+     other.m_ival = -1;
+     return *this;
+   }
+ 
+   operator int () const { return m_ival; }
+ 
+ private:
+   int m_ival;
+ };
+ 
+ class sarif_socket_sink : public sarif_sink
+ {
+ public:
+   sarif_socket_sink (context &dc,
+ 		     const line_maps *line_maps,
+ 		     std::unique_ptr<sarif_serialization_format> serialization_format,
+ 		     const sarif_generation_options &sarif_gen_opts,
+ 		     unique_fd fd)
+   : sarif_sink (dc, line_maps,
+ 		std::move (serialization_format),
+ 		sarif_gen_opts),
+     m_fd (std::move (fd))
+   {
+   }
+   void dump_kind (FILE *out) const override
+   {
+     fprintf (out, "sarif_socket_sink: fd=%i", int (m_fd));
+   }
+   bool machine_readable_stderr_p () const final override
+   {
+     return false;
+   }
+ 
+   /* Rather than appending it to the results array, instead
+      send it to the output socket as a JSON-RPC 2.0 notification.  */
+   void on_end_group () final override
+   {
+     // TODO: what about buffering?
+ 
+     std::unique_ptr<sarif_result> result = m_builder.take_current_result ();
+     if (!result)
+       return;
+ 
+     auto notification = std::make_unique<json::object> ();
+     notification->set_string ("jsonrpc", "2.0");
+     notification->set_string ("method", "OnSarifResult");
+     {
+       auto params = std::make_unique<json::object> ();
+       params->set ("result", std::move (result));
+       notification->set ("params", std::move (params));
+     }
+ 
+     send_rpc_notification (*notification);
+   }
+ 
+ private:
+   void
+   send_rpc_notification (const json::object &notification)
+   {
+     DIAGNOSTICS_LOG_SCOPE_PRINTF0 (m_context.get_logger (),
+ 				   "sarif_socket_sink::send_rpc_notification");
+     const bool formatted = false;
+     pretty_printer pp_content;
+     notification.print (&pp_content, formatted);
+     size_t content_length = strlen (pp_formatted_text (&pp_content));
+ 
+     pretty_printer pp_header;
+ #if __GNUC__ >= 10
+ #  pragma GCC diagnostic push
+ #  pragma GCC diagnostic ignored "-Wformat-diag"
+ #endif
+     pp_printf (&pp_header, "Content-Length: %li\n\n", content_length);
+ #if __GNUC__ >= 10
+ #  pragma GCC diagnostic pop
+ #endif
+     size_t header_length = strlen (pp_formatted_text (&pp_header));
+ 
+     size_t output_size = header_length + content_length;
+     char *buf = (char *)xmalloc (output_size);
+     memcpy (buf, pp_formatted_text (&pp_header), header_length);
+     memcpy (buf + header_length,
+ 	    pp_formatted_text (&pp_content),
+ 	    content_length);
+ 
+     /* TODO: should we attempt to handle partial writes here?  */
+     write (m_fd, buf, output_size);
+ 
+     free (buf);
+   }
+ 
+   unique_fd m_fd;
+ };
+ 
  /* Print the start of an embedded link to PP, as per 3.11.6.  */
  
  static void
*************** sarif_generation_options::dump (FILE *ou
*** 4448,4453 ****
--- 4566,4612 ----
    DIAGNOSTICS_DUMPING_EMIT_BOOL_FIELD (m_state_graph);
  }
  
+ void
+ maybe_open_sarif_sink_for_socket (context &dc)
+ {
+   gcc_assert (line_table);
+ 
+   const char * const env_var_name = "EXPERIMENTAL_SARIF_SOCKET";
+   const char * const socket_name = getenv (env_var_name);
+   if (!socket_name)
+     return;
+ 
+   unique_fd sfd (socket (AF_UNIX, SOCK_STREAM, 0));
+   if (sfd == -1)
+     fatal_error (UNKNOWN_LOCATION,
+ 		 "unable to create socket: %m");
+ 
+   struct sockaddr_un addr;
+   memset (&addr, 0, sizeof (addr));
+   addr.sun_family = AF_UNIX;
+   strncpy (addr.sun_path, socket_name, sizeof (addr.sun_path) - 1);
+ 
+   if (connect (sfd, (struct sockaddr *)&addr, sizeof (addr)) == -1)
+     fatal_error (UNKNOWN_LOCATION,
+ 		 "unable to connect to %qs: %m",
+ 		 socket_name);
+ 
+   /* TODO: should there be a way to specify other key/value
+      pairs here?  (as per -fdiagnostics-add-output, but as an
+      environment variable, perhaps).  */
+   sarif_generation_options sarif_gen_opts;
+   sarif_gen_opts.m_version = sarif_version::v2_1_0;
+ 
+   auto sink_ = std::make_unique<sarif_socket_sink>
+     (dc,
+      line_table,
+      std::make_unique <sarif_serialization_format_json> (true),
+      sarif_gen_opts,
+      std::move (sfd));
+   sink_->update_printer ();
+   dc.add_sink (std::move (sink_));
+ }
+ 
  #if CHECKING_P
  
  namespace selftest {
diff -Nrcpad gcc-16-20251109/gcc/diagnostics/sarif-sink.h gcc-16-20251116/gcc/diagnostics/sarif-sink.h
*** gcc-16-20251109/gcc/diagnostics/sarif-sink.h	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/diagnostics/sarif-sink.h	Sun Nov 16 22:32:55 2025
*************** extern std::unique_ptr<sarif_edge>
*** 188,193 ****
--- 188,196 ----
  make_sarif_edge (const digraphs::edge &e,
  		 sarif_builder *builder);
  
+ extern void
+ maybe_open_sarif_sink_for_socket (context &ctxt);
+ 
  } // namespace diagnostics
  
  #endif /* ! GCC_DIAGNOSTICS_SARIF_SINK_H */
diff -Nrcpad gcc-16-20251109/gcc/doc/cppdiropts.texi gcc-16-20251116/gcc/doc/cppdiropts.texi
*** gcc-16-20251109/gcc/doc/cppdiropts.texi	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/doc/cppdiropts.texi	Sun Nov 16 22:32:55 2025
***************
*** 13,24 ****
  @opindex iquote
  @opindex isystem
  @opindex idirafter
  @item -I @var{dir}
  @itemx -iquote @var{dir}
  @itemx -isystem @var{dir}
  @itemx -idirafter @var{dir}
  Add the directory @var{dir} to the list of directories to be searched
! for header files during preprocessing.
  @ifset cppmanual
  @xref{Search Path}.
  @end ifset
--- 13,32 ----
  @opindex iquote
  @opindex isystem
  @opindex idirafter
+ @opindex include-directory
+ @opindex include-directory-after
  @item -I @var{dir}
  @itemx -iquote @var{dir}
  @itemx -isystem @var{dir}
  @itemx -idirafter @var{dir}
+ @itemx --include-directory-after=@var{dir}
+ @itemx --include-directory-after @var{dir}
+ @itemx --include-directory=@var{dir}
+ @itemx --include-directory @var{dir}
  Add the directory @var{dir} to the list of directories to be searched
! for header files during preprocessing.  @option{--include-directory}
! is an alias for @option{-I}, while @option{--include-directory-after}
! is an alias for @option{-idirafter}.
  @ifset cppmanual
  @xref{Search Path}.
  @end ifset
*************** use the @option{-nostdinc} and/or @optio
*** 91,97 ****
--- 99,107 ----
  @end ifset
  
  @opindex I-
+ @opindex include-barrier
  @item -I-
+ @itemx --include-barrier
  Split the include path.
  This option has been deprecated.  Please use @option{-iquote} instead for
  @option{-I} directories before the @option{-I-} and remove the @option{-I-}
*************** file directory as the first search direc
*** 112,131 ****
--- 122,158 ----
  @end ifset
  
  @opindex iprefix
+ @opindex include-prefix
  @item -iprefix @var{prefix}
+ @itemx --include-prefix=@var{prefix}
+ @itemx --include-prefix @var{prefix}
  Specify @var{prefix} as the prefix for subsequent @option{-iwithprefix}
  options.  If the prefix represents a directory, you should include the
  final @samp{/}.
  
  @opindex iwithprefix
  @opindex iwithprefixbefore
+ @opindex include-with-prefix
+ @opindex include-with-prefix-after
+ @opindex include-with-prefix-before
  @item -iwithprefix @var{dir}
  @itemx -iwithprefixbefore @var{dir}
+ @itemx --include-with-prefix=@var{prefix}
+ @itemx --include-with-prefix @var{prefix}
+ @itemx --include-with-prefix-after=@var{prefix}
+ @itemx --include-with-prefix-after @var{prefix}
+ @itemx --include-with-prefix-before=@var{prefix}
+ @itemx --include-with-prefix-before @var{prefix}
  Append @var{dir} to the prefix specified previously with
  @option{-iprefix}, and add the resulting directory to the include search
  path.  @option{-iwithprefixbefore} puts it in the same place @option{-I}
  would; @option{-iwithprefix} puts it where @option{-idirafter} would.
  
+ @option{--include-with-prefix} and @option{--include-with-prefix-after} are
+ both aliases for @option{-iwithprefix}, while
+ @option{--include-with-prefix-before} is an alias for
+ @option{-iwithprefixbefore}.
+ 
  @opindex isysroot
  @item -isysroot @var{dir}
  This option is like the @option{--sysroot} option, but applies only to
*************** Use @var{dir} as a subdirectory of the d
*** 139,145 ****
--- 166,174 ----
  target-specific C++ headers.
  
  @opindex nostdinc
+ @opindex no-standard-includes
  @item -nostdinc
+ @itemx --no-standard-includes
  Do not search the standard system directories for header files.
  Only the directories explicitly specified with @option{-I},
  @option{-iquote}, @option{-isystem}, and/or @option{-idirafter}
*************** but do still search the other standard d
*** 153,159 ****
--- 182,191 ----
  used when building the C++ library.)
  
  @opindex embed-dir
+ @opindex embed-directory
  @item --embed-dir=@var{dir}
+ @itemx --embed-directory=@var{dir}
+ @itemx --embed-directory @var{dir}
  Append @var{dir} directory to the list of searched directories for
  @code{#embed} preprocessing directive or @code{__has_embed} macro.
  There are no default directories for @code{#embed}.
diff -Nrcpad gcc-16-20251109/gcc/doc/cppopts.texi gcc-16-20251116/gcc/doc/cppopts.texi
*** gcc-16-20251109/gcc/doc/cppopts.texi	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/doc/cppopts.texi	Sun Nov 16 22:32:55 2025
***************
*** 10,19 ****
--- 10,24 ----
  @c formatted for inclusion in the CPP manual; otherwise the main GCC manual.
  
  @opindex D
+ @opindex define-macro
  @item -D @var{name}
+ @itemx --define-macro=@var{name}
+ @itemx --define-macro @var{name}
  Predefine @var{name} as a macro, with definition @code{1}.
  
  @item -D @var{name}=@var{definition}
+ @itemx --define-macro=@var{name}=@var{definition}
+ @itemx --define-macro @var{name}=@var{definition}
  The contents of @var{definition} are tokenized and processed as if
  they appeared during translation phase three in a @samp{#define}
  directive.  In particular, the definition is truncated by
*************** are given on the command line.  All @opt
*** 35,46 ****
--- 40,56 ----
  @option{-D} and @option{-U} options.
  
  @opindex U
+ @opindex undefine-macro
  @item -U @var{name}
+ @itemx --undefine-macro=@var{name}
+ @itemx --undefine-macro @var{name}
  Cancel any previous definition of @var{name}, either built in or
  provided with a @option{-D} option.
  
  @opindex include
  @item -include @var{file}
+ @itemx --include=@var{file}
+ @itemx --include @var{file}
  Process @var{file} as if @code{#include "file"} appeared as the first
  line of the primary source file.  However, the first directory searched
  for @var{file} is the preprocessor's working directory @emph{instead of}
*************** in the order they appear on the command
*** 53,58 ****
--- 63,70 ----
  
  @opindex imacros
  @item -imacros @var{file}
+ @itemx --imacros=@var{file}
+ @itemx --imacros @var{file}
  Exactly like @option{-include}, except that any output produced by
  scanning @var{file} is thrown away.  Macros it defines remain defined.
  This allows you to acquire all the macros from a header without also
*************** This option is supported on GNU/Linux ta
*** 77,85 ****
--- 89,99 ----
  and also on x86 Cygwin and MinGW targets.
  
  @opindex M
+ @opindex dependencies
  @cindex @command{make}
  @cindex dependencies, @command{make}
  @item -M
+ @item --dependencies
  Instead of outputting the result of preprocessing, output a rule
  suitable for @command{make} describing the dependencies of the main
  source file.  The preprocessor outputs one @command{make} rule containing
*************** Passing @option{-M} to the driver implie
*** 105,111 ****
--- 119,127 ----
  warnings with an implicit @option{-w}.
  
  @opindex MM
+ @opindex user-dependencies
  @item -MM
+ @itemx --user-dependencies
  Like @option{-M} but do not mention header files that are found in
  system header directories, nor header files that are included,
  directly or indirectly, from such a header.
*************** When used with the driver options @optio
*** 128,134 ****
--- 144,152 ----
  If @var{file} is @file{-}, then the dependencies are written to @file{stdout}.
  
  @opindex MG
+ @opindex print-missing-file-dependencies
  @item -MG
+ @itemx --print-missing-file-dependencies
  In conjunction with an option such as @option{-M} requesting
  dependency generation, @option{-MG} assumes missing header files are
  generated files and adds them to the dependency list without raising
*************** The default target is automatically quot
*** 190,196 ****
--- 208,216 ----
  @option{-MQ}.
  
  @opindex MD
+ @opindex write-dependencies
  @item -MD
+ @itemx --write-dependencies
  @option{-MD} is equivalent to @option{-M -MF @var{file}}, except that
  @option{-E} is not implied.  The driver determines @var{file} based on
  whether an @option{-o} option is given.  If it is, the driver uses its
*************** Since @option{-E} is not implied, @optio
*** 207,213 ****
--- 227,235 ----
  a dependency output file as a side effect of the compilation process.
  
  @opindex MMD
+ @opindex write-user-dependencies
  @item -MMD
+ @itemx --write-user-dependencies
  Like @option{-MD} except mention only user header files, not system
  header files.
  
*************** Accept universal character names and ext
*** 262,267 ****
--- 284,290 ----
  identifiers.  This option is enabled by default for C99 (and later C
  standard versions) and C++.
  
+ @opindex fcanonical-system-headers
  @opindex fno-canonical-system-headers
  @item -fno-canonical-system-headers
  When preprocessing, do not shorten system header paths with canonicalization.
*************** form @option{-fno-working-directory}.  I
*** 396,417 ****
  present in the command line, this option has no effect, since no
  @code{#line} directives are emitted whatsoever.
  
  @opindex A
  @item -A @var{predicate}=@var{answer}
  Make an assertion with the predicate @var{predicate} and answer
  @var{answer}.  This form is preferred to the older form @option{-A
  @var{predicate}(@var{answer})}, which is still supported, because
  it does not use shell special characters.
! @ifset cppmanual
! @xref{Obsolete Features}.
! @end ifset
  
  @item -A -@var{predicate}=@var{answer}
  Cancel an assertion with the predicate @var{predicate} and answer
  @var{answer}.
  
  @opindex C
  @item -C
  Do not discard comments.  All comments are passed through to the output
  file, except for comments in processed directives, which are deleted
  along with the directive.
--- 419,453 ----
  present in the command line, this option has no effect, since no
  @code{#line} directives are emitted whatsoever.
  
+ @c The documentation for this option is not helpful to users without
+ @c the longer explanation that appears only in the CPP manual, plus
+ @c it's been documented as obsolete and "do not use" since 2001!
+ @ifset cppmanual
  @opindex A
+ @opindex assert
  @item -A @var{predicate}=@var{answer}
+ @itemx --assert @var{predicate}=@var{answer}
+ @itemx --assert=@var{predicate}=@var{answer}
  Make an assertion with the predicate @var{predicate} and answer
  @var{answer}.  This form is preferred to the older form @option{-A
  @var{predicate}(@var{answer})}, which is still supported, because
  it does not use shell special characters.
! 
! Assertions are an obsolete feature of the preprocessor, supported only
! for compatibility with legacy system headers on some targets.
! @xref{Obsolete Features}, for more details on use.
  
  @item -A -@var{predicate}=@var{answer}
+ @itemx --assert -@var{predicate}=@var{answer}
+ @itemx --assert=-@var{predicate}=@var{answer}
  Cancel an assertion with the predicate @var{predicate} and answer
  @var{answer}.
+ @end ifset
  
  @opindex C
+ @opindex comments
  @item -C
+ @itemx --comments
  Do not discard comments.  All comments are passed through to the output
  file, except for comments in processed directives, which are deleted
  along with the directive.
*************** directive line have the effect of turnin
*** 423,429 ****
--- 459,467 ----
  source line, since the first token on the line is no longer a @samp{#}.
  
  @opindex CC
+ @opindex comments-in-macros
  @item -CC
+ @itemx --comments-in-macros
  Do not discard comments, including during macro expansion.  This is
  like @option{-C}, except that comments contained within macros are
  also passed through to the output file where the macro is expanded.
*************** the source line.
*** 437,443 ****
--- 475,483 ----
  The @option{-CC} option is generally used to support lint comments.
  
  @opindex P
+ @opindex no-line-commands
  @item -P
+ @itemx --no-line-commands
  Inhibit generation of linemarkers in the output from the preprocessor.
  This might be useful when running the preprocessor on something that is
  not C code, and will be sent to a program which might be confused by the
*************** linemarkers.
*** 451,457 ****
--- 491,499 ----
  @opindex traditional-cpp
  @opindex traditional
  @item -traditional
+ @itemx --traditional
  @itemx -traditional-cpp
+ @itemx --traditional-cpp
  
  Try to imitate the behavior of pre-standard C preprocessors, as
  opposed to ISO C preprocessors.
*************** switch, or when invoking CPP explicitly.
*** 468,473 ****
--- 510,516 ----
  
  @opindex trigraphs
  @item -trigraphs
+ @itemx --trigraphs
  Support ISO C trigraphs.
  These are three-character sequences, all starting with @samp{??}, that
  are defined by ISO C to stand for single characters.  For example,
*************** Enable special code to work around file
*** 496,502 ****
--- 539,547 ----
  short file names, such as MS-DOS@.
  
  @opindex H
+ @opindex trace-includes
  @item -H
+ @itemx --trace-includes
  Print the name of each header file used, in addition to other normal
  activities.  Each name is indented to show how deep in the
  @samp{#include} stack it is.  Precompiled header files are also
*************** printed, even if they are found to be in
*** 504,510 ****
--- 549,558 ----
  header file is printed with @samp{...x} and a valid one with @samp{...!} .
  
  @opindex d
+ @opindex dump
  @item -d@var{letters}
+ @itemx --dump=@var{letters}
+ @itemx --dump @var{letters}
  Says to make debugging dumps during compilation as specified by
  @var{letters}.  The flags documented here are those relevant to the
  preprocessor.  Other @var{letters} are interpreted
*************** conflicts, the result is undefined.
*** 518,523 ****
--- 566,572 ----
  @table @gcctabopt
  @opindex dM
  @item -dM
+ @itemx --dump=M
  Instead of the normal output, generate a list of @samp{#define}
  directives for all the macros defined during the execution of the
  preprocessor, including predefined macros.  This gives you a way of
*************** interpreted as a synonym for @option{-fd
*** 539,559 ****
--- 588,612 ----
  
  @opindex dD
  @item -dD
+ @itemx --dump=D
  Like @option{-dM} except that it outputs @emph{both} the @samp{#define}
  directives and the result of preprocessing.  Both kinds of output go to
  the standard output file.
  
  @opindex dN
  @item -dN
+ @itemx --dump=N
  Like @option{-dD}, but emit only the macro names, not their expansions.
  
  @opindex dI
  @item -dI
+ @itemx --dump=I
  Output @samp{#include} directives in addition to the result of
  preprocessing.
  
  @opindex dU
  @item -dU
+ @itemx --dump=U
  Like @option{-dD} except that only macros that are expanded, or whose
  definedness is tested in preprocessor directives, are output; the
  output is delayed until the use or test of the macro; and
diff -Nrcpad gcc-16-20251109/gcc/doc/extend.texi gcc-16-20251116/gcc/doc/extend.texi
*** gcc-16-20251109/gcc/doc/extend.texi	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/doc/extend.texi	Sun Nov 16 22:32:55 2025
*************** Calls to @code{foo} are mapped to calls
*** 4828,4834 ****
  @node LoongArch Function Attributes
  @subsubsection LoongArch Function Attributes
  
! These function attributes are supported by the LoongArch end:
  
  @table @code
  @cindex @code{strict-align} function attribute, LoongArch
--- 4828,4843 ----
  @node LoongArch Function Attributes
  @subsubsection LoongArch Function Attributes
  
! The following attributes are supported by LoongArch end:
! 
! @table @code
! 
! @cindex @code{target (option,...)} loongarch function attribute target
! @item target (option,...)
! 
! The following target-specific function attributes are available for the
! LoongArch target.  These options mirror the behavior of similar
! command-line options (@pxref{LoongArch Options}), but on a per-function basis.
  
  @table @code
  @cindex @code{strict-align} function attribute, LoongArch
*************** But the following method cannot perform
*** 4897,4902 ****
--- 4906,5107 ----
  $ gcc test.c -o test.s -O2 -mlasx -mno-lasx
  @end smallexample
  
+ @cindex @code{recipe} function attribute, LoongArch
+ @item recipe
+ @itemx no-recipe
+ @code{recipe} indicates that frecipe.@{s/d@} and frsqrt.@{s/d@}instruction generation
+ is allowed (not allowed) when compiling the function.  The behavior is same as for
+ the command-line option
+ @option{-mrecipe} and @option{-mno-recipe}.
+ 
+ @cindex @code{div32} function attribute, LoongArch
+ @item div32
+ @itemx no-div32
+ @code{div32} determines whether div.w[u] and mod.w[u] instructions on 64-bit machines
+ are evaluated based only on the lower 32 bits of the input registers.
+ @option{-mdiv32} and @option{-mno-div32}.
+ 
+ @cindex @code{lam-bh} function attribute, LoongArch
+ @item lam-bh
+ @itemx no-lam-bh
+ @code{lam-bh} indicates that am@{swap/add@}[_db].@{b/h@} instruction generation
+ is allowed (not allowed) when compiling the function.  The behavior is same as for
+ the command-line option
+ @option{-mlam-bh} and @option{-mno-lam-bh}.
+ 
+ @cindex @code{lamcas} function attribute, LoongArch
+ @item lamcas
+ @itemx no-lamcas
+ @code{lamcas} indicates that amcas[_db].@{b/h/w/d@} instruction generation
+ is allowed (not allowed) when compiling the function.  The behavior is same as for
+ the command-line option
+ @option{-mlamcas} and @option{-mno-lamcas}.
+ 
+ @cindex @code{scq} function attribute, LoongArch
+ @item scq
+ @itemx no-scq
+ @code{scq} indicates that sc.q instruction generation is allowed (not allowed) when
+ compiling the function.  The behavior is same as for the command-line option
+ @option{-mscq} and @option{-mno-scq}.
+ 
+ @cindex @code{ld-seq-sa} function attribute, LoongArch
+ @item ld-seq-sa
+ @itemx no-ld-seq-sa
+ @code{ld-seq-sa} indicates that whether need load-load barries (dbar 0x700)
+ @option{-mld-seq-sa} and @option{-mno-ld-seq-sa}.
+ 
+ @end table
+ 
+ Multiple target function attributes can be specified by separating them with
+ a comma.  For example:
+ 
+ @smallexample
+ __attribute__((target("arch=la64v1.1,lasx")))
+ int
+ foo (int a)
+ @{
+   return a + 5;
+ @}
+ @end smallexample
+ 
+ is valid and compiles function @code{foo} for LA64V1.1 with @code{lasx}.
+ 
+ @subsubheading Inlining rules
+ Specifying target attributes on individual functions or performing link-time
+ optimization across translation units compiled with different target options
+ can affect function inlining rules:
+ 
+ In particular, a caller function can inline a callee function only if the
+ architectural features available to the callee are a subset of the features
+ available to the caller.
+ 
+ Note that when the callee function does not have the always_inline attribute,
+ it will not be inlined if the code model of the caller function is different
+ from the code model of the callee function.
+ 
+ @cindex @code{target_clones (string,...)} loongarch function attribute target_clones
+ @item target_clones (string,...)
+ 
+ Like attribute @code{target}, these options also reflect the behavior of
+ similar command line options.
+ 
+ Note that this attribute requires GLIBC2.38 and newer that support HWCAP.
+ 
+ @code{string} can take the following values:
+ 
+ @itemize @bullet
+ @item default
+ @item strict-align
+ @item arch=
+ @item lsx
+ @item lasx
+ @item frecipe
+ @item div32
+ @item lam-bh
+ @item lamcas
+ @item scq
+ @item ld-seq-sa
+ @end itemize
+ You can set the priority of attributes in target_clones (except @code{default}).
+ For example:
+ 
+ @smallexample
+ __attribute__((target_clones ("default","arch=la64v1.1","lsx;priority=1")))
+ int
+ foo (int a)
+ @{
+   return a + 5;
+ @}
+ @end smallexample
+ 
+ The priority is from low to high:
+ @itemize @bullet
+ @item default
+ @item arch=loongarch64
+ @item strict-align
+ @item frecipe = div32 = lam-bh = lamcas = scq = ld-seq-sa
+ @item lsx
+ @item arch=la64v1.0
+ @item arch=la64v1.1
+ @item lasx
+ @end itemize
+ 
+ Note that the option values on the gcc command line are not considered when
+ calculating the priority.
+ 
+ If a priority is set for a feature in target_clones, then the priority of this
+ feature will be higher than @code{lasx}.
+ 
+ For example:
+ 
+ @smallexample
+ __attribute__((target_clones ("default","arch=la64v1.1","lsx;priority=1")))
+ int
+ foo (int a)
+ @{
+   return a + 5;
+ @}
+ @end smallexample
+ 
+ In this test case, the priority of @code{lsx} is higher than that of
+ @code{arch=la64v1.1}.
+ 
+ If the same priority is explicitly set for two features, the priority is still
+ calculated according to the priority list above.
+ 
+ For example:
+ 
+ @smallexample
+ __attribute__((target_clones ("default","arch=la64v1.1;priority=1","lsx;priority=1")))
+ int
+ foo (int a)
+ @{
+   return a + 5;
+ @}
+ @end smallexample
+ 
+ In this test case, the priority of @code{arch=la64v1.1;priority=1} is higher
+ than that of @code{lsx;priority=1}.
+ 
+ @cindex @code{target_version (string)} loongarch function attribute target_versions
+ @item target_version (string)
+ Support attributes and priorities are the same as @code{target_clones}.
+ Note that this attribute requires GLIBC2.38 and newer that support HWCAP.
+ 
+ For example:
+ 
+ @code{test1.C}
+ @smallexample
+ __attribute__((target_clones ("default","arch=la64v1.1","lsx;priority=1")))
+ int
+ foo (int a)
+ @{
+   return a + 5;
+ @}
+ @end smallexample
+ 
+ @code{test2.C}
+ @smallexample
+ __attribute__((target_version ("default")))
+ int
+ foo (int a)
+ @{
+   return a + 5;
+ @}
+ __attribute__((target_version ("arch=la64v1.1")))
+ int
+ foo (int a)
+ @{
+   return a + 5;
+ @}
+ __attribute__((target_version ("lsx;priority=1")))
+ int
+ foo (int a)
+ @{
+   return a + 5;
+ @}
+ @end smallexample
+ The implementations of @code{test1.C} and @code{test2.C} are equivalent.
  @end table
  
  @node M32C Function Attributes
diff -Nrcpad gcc-16-20251109/gcc/doc/install.texi gcc-16-20251116/gcc/doc/install.texi
*** gcc-16-20251109/gcc/doc/install.texi	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/doc/install.texi	Sun Nov 16 22:32:55 2025
*************** additional @option{-fcf-protection} opti
*** 2669,2675 ****
  
  @item --enable-x86-64-mfentry
  @itemx --disable-x86-64-mfentry
! Enable @option {-mfentry} by default on x86-64 to put the profiling
  counter call, @code{__fentry__}, before the prologue so that @option{-pg}
  can be used with @option{-fshrink-wrap} which is enabled at @option{-O1}.
  This configure option is 64-bit only because @code{__fentry__} doesn't
--- 2669,2675 ----
  
  @item --enable-x86-64-mfentry
  @itemx --disable-x86-64-mfentry
! Enable @option{-mfentry} by default on x86-64 to put the profiling
  counter call, @code{__fentry__}, before the prologue so that @option{-pg}
  can be used with @option{-fshrink-wrap} which is enabled at @option{-O1}.
  This configure option is 64-bit only because @code{__fentry__} doesn't
*************** Support for Solaris 10 has been removed
*** 4921,4927 ****
  9 has been removed in GCC 5.  Support for Solaris 8 has been removed in
  GCC 4.8.  Support for Solaris 7 has been removed in GCC 4.6.
  
! Solaris 11.4 provides one or more of GCC 5, 7, 9, 10, 11, 12, 13, and 14.
  
  You need to install the @code{system/header}, @code{system/linker}, and
  @code{developer/assembler} packages.
--- 4921,4927 ----
  9 has been removed in GCC 5.  Support for Solaris 8 has been removed in
  GCC 4.8.  Support for Solaris 7 has been removed in GCC 4.6.
  
! Solaris 11.4 provides one or more of GCC 5, 7, 9, 10, 11, 12, 13, 14,and 15.
  
  You need to install the @code{system/header}, @code{system/linker}, and
  @code{developer/assembler} packages.
*************** conjunction with the Solaris linker.
*** 4942,4949 ****
  
  The GNU @command{as} versions included in Solaris 11.4, from GNU
  binutils 2.30.1 or newer (in @file{/usr/bin/gas} and
! @file{/usr/gnu/bin/as}), are known to work.  The version from GNU
! binutils 2.44 is known to work as well.  Recent versions of the Solaris
  assembler in @file{/usr/bin/as} work almost as well, though.  To use GNU
  @command{as}, configure with the options @option{--with-gnu-as
  --with-as=@//usr/@/gnu/@/bin/@/as}.
--- 4942,4950 ----
  
  The GNU @command{as} versions included in Solaris 11.4, from GNU
  binutils 2.30.1 or newer (in @file{/usr/bin/gas} and
! @file{/usr/gnu/bin/as}), are known to work.  This is the minimum
! supported version.  The version from GNU
! binutils 2.45 is known to work as well.  Recent versions of the Solaris
  assembler in @file{/usr/bin/as} work almost as well, though.  To use GNU
  @command{as}, configure with the options @option{--with-gnu-as
  --with-as=@//usr/@/gnu/@/bin/@/as}.
*************** GNU linker instead, the version in Solar
*** 4953,4962 ****
  2.30.1 or newer (in @file{/usr/gnu/bin/ld} and @file{/usr/bin/gld}),
  works.  However, it
  generally lacks platform specific features, so better stay with Solaris
! @command{ld}.  When using the version from GNU Binutils 2.44, there's
! an important caveat: binutils @emph{must} be configured with
! @code{CONFIG_SHELL=/bin/bash}, otherwise the linker's built-in linker
! scripts get corrupted on x86.  To use the LTO linker plugin
  (@option{-fuse-linker-plugin}) with GNU @command{ld}, GNU Binutils
  @emph{must} be configured with @option{--enable-largefile}.  To use
  Solaris @command{ld}, we recommend to configure with
--- 4954,4960 ----
  2.30.1 or newer (in @file{/usr/gnu/bin/ld} and @file{/usr/bin/gld}),
  works.  However, it
  generally lacks platform specific features, so better stay with Solaris
! @command{ld}.  To use the LTO linker plugin
  (@option{-fuse-linker-plugin}) with GNU @command{ld}, GNU Binutils
  @emph{must} be configured with @option{--enable-largefile}.  To use
  Solaris @command{ld}, we recommend to configure with
*************** will be disabled if no appropriate versi
*** 4978,4984 ****
  work.
  
  In order to build the GNU Ada compiler, GNAT, a working GNAT is needed.
! Since Solaris 11.4 SRU 39, GNAT 11, 12, 13 or 14 is bundled in the
  @code{developer/gcc/gcc-gnat} package.
  
  In order to build the GNU D compiler, GDC, a working @samp{libphobos} is
--- 4976,4982 ----
  work.
  
  In order to build the GNU Ada compiler, GNAT, a working GNAT is needed.
! Since Solaris 11.4 SRU 39, GNAT 11, 12, 13, 14, or 15 is bundled in the
  @code{developer/gcc/gcc-gnat} package.
  
  In order to build the GNU D compiler, GDC, a working @samp{libphobos} is
diff -Nrcpad gcc-16-20251109/gcc/doc/invoke.texi gcc-16-20251116/gcc/doc/invoke.texi
*** gcc-16-20251109/gcc/doc/invoke.texi	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/doc/invoke.texi	Sun Nov 16 22:32:55 2025
*************** in the following sections.
*** 194,200 ****
  -pass-exit-codes  -pipe  -specs=@var{file}  -wrapper
  @@@var{file}  -ffile-prefix-map=@var{old}=@var{new}  -fcanon-prefix-map
  -fplugin=@var{file}  -fplugin-arg-@var{name}=@var{arg}
! -fdump-ada-spec@r{[}-slim@r{]}  -fada-spec-parent=@var{unit}  -fdump-go-spec=@var{file}}
  
  @item C Language Options
  @xref{C Dialect Options,,Options Controlling C Dialect}.
--- 194,205 ----
  -pass-exit-codes  -pipe  -specs=@var{file}  -wrapper
  @@@var{file}  -ffile-prefix-map=@var{old}=@var{new}  -fcanon-prefix-map
  -fplugin=@var{file}  -fplugin-arg-@var{name}=@var{arg}
! -fdump-ada-spec@r{[}-slim@r{]}  -fada-spec-parent=@var{unit}
! -fdump-go-spec=@var{file}
! --assemble  --compile  --dumpbase @var{dumpbase}
! --dumpbase-ext @var{auxdropsuf}  --dumpdir @var{dumppfx}
! --language=@var{language}  --output=@var{file}  --pass-exit-codes
! --pipe  --preprocess  --specs=@var{file}  --verbose}
  
  @item C Language Options
  @xref{C Dialect Options,,Options Controlling C Dialect}.
*************** in the following sections.
*** 206,232 ****
  -fpermitted-flt-eval-methods=@var{standard}
  -fplan9-extensions  -fsigned-bitfields  -funsigned-bitfields
  -fsigned-char  -funsigned-char  -fstrict-flex-arrays[=@var{n}]
! -fsso-struct=@var{endianness}}
  
  @item C++ Language Options
  @xref{C++ Dialect Options,,Options Controlling C++ Dialect}.
! @gccoptlist{-fabi-version=@var{n}  -fno-access-control
! -faligned-new=@var{n}  -fno-assume-sane-operators-new-delete
  -fchar8_t  -fcheck-new
! -fconcepts  -fconstexpr-depth=@var{n}  -fconstexpr-cache-depth=@var{n}
  -fconstexpr-loop-limit=@var{n}  -fconstexpr-ops-limit=@var{n}
  -fno-elide-constructors
  -fno-enforce-eh-specs
  -fno-gnu-keywords
  -fno-immediate-escalation
- -fno-implicit-templates
- -fno-implicit-inline-templates
  -fno-implement-inlines
! -fmodule-header@r{[}=@var{kind}@r{]} -fmodule-only -fmodules
  -fmodule-implicit-inline
  -fno-module-lazy
  -fmodule-mapper=@var{specification}
! -fmodule-version-ignore
  -fms-extensions
  -fnew-inheriting-ctors
  -fnew-ttp-matching
--- 211,250 ----
  -fpermitted-flt-eval-methods=@var{standard}
  -fplan9-extensions  -fsigned-bitfields  -funsigned-bitfields
  -fsigned-char  -funsigned-char  -fstrict-flex-arrays[=@var{n}]
! -fsso-struct=@var{endianness}  --ansi}
  
  @item C++ Language Options
  @xref{C++ Dialect Options,,Options Controlling C++ Dialect}.
! @gccoptlist{-fabi-compat-version=@var{n} -fabi-version=@var{n}
! -fno-access-control  -faligned-new=@r{[}@var{n}@r{]}
! -fno-assume-sane-operators-new-delete
  -fchar8_t  -fcheck-new
! -fconcepts  -fconcepts-diagnostics-depth=@var{n}
! -fconstexpr-depth=@var{n}  -fconstexpr-cache-depth=@var{n}
  -fconstexpr-loop-limit=@var{n}  -fconstexpr-ops-limit=@var{n}
+ -fcontracts  -fcontract-assumption-mode=@r{[}on@r{|}off@r{]}
+ -fcontract-build-level=@r{[}off@r{|}default@r{|}audit@r{]}
+ -fcontract-continuation-mode=@r{[}on@r{|}off@r{]}
+ -fcontract-mode=@r{[}on@r{|}off@r{]}
+ -fcontract-role=@var{name}:@var{default},@var{audit},@var{axiom}
+ -fcontract-semantic=@r{[}default@r{|}audit@r{|}axiom@r{]}:@var{semantic}
+ -fcontract-strict-declarations=@r{[}on@r{|}off@r{]}
+ -fcoroutines  -fdiagnostics-all-candidates
  -fno-elide-constructors
  -fno-enforce-eh-specs
+ -fext-numeric-literals
  -fno-gnu-keywords
  -fno-immediate-escalation
  -fno-implement-inlines
! -fimplicit-constexpr
! -fno-implicit-inline-templates
! -fno-implicit-templates
! -fmodule-header@r{[}=@var{kind}@r{]}
  -fmodule-implicit-inline
  -fno-module-lazy
  -fmodule-mapper=@var{specification}
! -fmodule-only
! -fmodules
  -fms-extensions
  -fnew-inheriting-ctors
  -fnew-ttp-matching
*************** in the following sections.
*** 234,252 ****
  -fno-optional-diags
  -fno-pretty-templates  -frange-for-ext-temps
  -fno-rtti  -fsized-deallocation
! -fstrong-eval-order@r{[}=@var{kind}@r{]}
  -ftemplate-backtrace-limit=@var{n}
  -ftemplate-depth=@var{n}
! -fno-threadsafe-statics  -fuse-cxa-atexit
  -fno-weak  -nostdinc++
  -fvisibility-inlines-hidden
  -fvisibility-ms-compat
- -fext-numeric-literals
  -flang-info-include-translate@r{[}=@var{header}@r{]}
  -flang-info-include-translate-not
  -flang-info-module-cmi@r{[}=@var{module}@r{]}
  -stdlib=@var{libstdc++,libc++}
! -Wabi-tag  -Wcatch-value  -Wcatch-value=@var{n}
  -Wno-class-conversion  -Wclass-memaccess
  -Wcomma-subscript  -Wconditionally-supported
  -Wno-conversion-null  -Wctad-maybe-unsupported
--- 252,271 ----
  -fno-optional-diags
  -fno-pretty-templates  -frange-for-ext-temps
  -fno-rtti  -fsized-deallocation
! -fstrict-enums  -fstrong-eval-order@r{[}=@var{kind}@r{]}
  -ftemplate-backtrace-limit=@var{n}
  -ftemplate-depth=@var{n}
! -fno-threadsafe-statics  -fuse-cxa-atexit  -fno-use-cxa-get-exception-ptr
  -fno-weak  -nostdinc++
  -fvisibility-inlines-hidden
  -fvisibility-ms-compat
  -flang-info-include-translate@r{[}=@var{header}@r{]}
  -flang-info-include-translate-not
  -flang-info-module-cmi@r{[}=@var{module}@r{]}
  -stdlib=@var{libstdc++,libc++}
! -Wabbreviated-auto-in-template-arg
! -Wabi-tag  -Waligned-new@r{[}=@var{kind}@r{]}
! -Wcatch-value  -Wcatch-value=@var{n}
  -Wno-class-conversion  -Wclass-memaccess
  -Wcomma-subscript  -Wconditionally-supported
  -Wno-conversion-null  -Wctad-maybe-unsupported
*************** in the following sections.
*** 254,276 ****
  -Wno-defaulted-function-deleted
  -Wno-delete-incomplete
  -Wdelete-non-virtual-dtor  -Wno-deprecated-array-compare
! -Wdeprecated-copy -Wdeprecated-copy-dtor
! -Wno-deprecated-enum-enum-conversion -Wno-deprecated-enum-float-conversion
! -Weffc++ -Wno-elaborated-enum-base
! -Wno-exceptions -Wno-expose-global-module-tu-local -Wno-external-tu-local
! -Wextra-semi -Wno-global-module -Wno-inaccessible-base
  -Wno-inherited-variadic-ctor  -Wno-init-list-lifetime
! -Winvalid-constexpr -Winvalid-imported-macros
  -Wno-invalid-offsetof  -Wno-literal-suffix
! -Wmismatched-new-delete -Wmismatched-tags
  -Wmultiple-inheritance  -Wnamespaces  -Wnarrowing
  -Wnoexcept  -Wnoexcept-type  -Wnon-virtual-dtor
  -Wpessimizing-move  -Wno-placement-new  -Wplacement-new=@var{n}
! -Wrange-loop-construct -Wredundant-move -Wredundant-tags
! -Wreorder  -Wregister -Wno-sfinae-incomplete
  -Wstrict-null-sentinel  -Wno-subobject-linkage  -Wtemplates
  -Wno-non-c-typedef-for-linkage  -Wno-non-template-friend  -Wold-style-cast
! -Woverloaded-virtual  -Wno-pmf-conversions -Wself-move -Wsign-promo
  -Wsized-deallocation  -Wsuggest-final-methods
  -Wsuggest-final-types  -Wsuggest-override  -Wno-template-body
  -Wno-template-id-cdtor  -Wtemplate-names-tu-local
--- 273,296 ----
  -Wno-defaulted-function-deleted
  -Wno-delete-incomplete
  -Wdelete-non-virtual-dtor  -Wno-deprecated-array-compare
! -Wdeprecated-copy  -Wdeprecated-copy-dtor
! -Wno-deprecated-enum-enum-conversion  -Wno-deprecated-enum-float-conversion
! -Wno-deprecated-literal-operator  -Wdeprecated-variadic-comma-omission
! -Weffc++  -Wno-elaborated-enum-base
! -Wno-exceptions  -Wno-expose-global-module-tu-local  -Wno-external-tu-local
! -Wextra-semi  -Wno-global-module  -Wno-inaccessible-base
  -Wno-inherited-variadic-ctor  -Wno-init-list-lifetime
! -Winvalid-constexpr  -Winvalid-imported-macros
  -Wno-invalid-offsetof  -Wno-literal-suffix
! -Wmismatched-new-delete  -Wmismatched-tags
  -Wmultiple-inheritance  -Wnamespaces  -Wnarrowing
  -Wnoexcept  -Wnoexcept-type  -Wnon-virtual-dtor
  -Wpessimizing-move  -Wno-placement-new  -Wplacement-new=@var{n}
! -Wrange-loop-construct  -Wredundant-move  -Wredundant-tags
! -Wreorder  -Wregister  -Wno-sfinae-incomplete
  -Wstrict-null-sentinel  -Wno-subobject-linkage  -Wtemplates
  -Wno-non-c-typedef-for-linkage  -Wno-non-template-friend  -Wold-style-cast
! -Woverloaded-virtual  -Wno-pmf-conversions  -Wself-move  -Wsign-promo
  -Wsized-deallocation  -Wsuggest-final-methods
  -Wsuggest-final-types  -Wsuggest-override  -Wno-template-body
  -Wno-template-id-cdtor  -Wtemplate-names-tu-local
*************** Objective-C and Objective-C++ Dialects}.
*** 361,367 ****
  -Wc++20-compat  -Wc++26-compat
  -Wno-c++11-extensions  -Wno-c++14-extensions -Wno-c++17-extensions
  -Wno-c++20-extensions  -Wno-c++23-extensions
! -Wcalloc-transposed-args
  -Wcast-align  -Wcast-align=strict  -Wcast-function-type  -Wcast-qual
  -Wchar-subscripts
  -Wclobbered  -Wcomment
--- 381,387 ----
  -Wc++20-compat  -Wc++26-compat
  -Wno-c++11-extensions  -Wno-c++14-extensions -Wno-c++17-extensions
  -Wno-c++20-extensions  -Wno-c++23-extensions
! -Wcalloc-transposed-args  -Wcannot-profile
  -Wcast-align  -Wcast-align=strict  -Wcast-function-type  -Wcast-qual
  -Wchar-subscripts
  -Wclobbered  -Wcomment
*************** Objective-C and Objective-C++ Dialects}.
*** 380,386 ****
  -Werror  -Werror=*  -Wexpansion-to-defined  -Wfatal-errors
  -Wflex-array-member-not-at-end
  -Wfloat-conversion  -Wfloat-equal  -Wformat  -Wformat=2
! -Wno-format-contains-nul  -Wno-format-extra-args
  -Wformat-nonliteral  -Wformat-overflow=@var{n}
  -Wformat-security  -Wformat-signedness  -Wformat-truncation=@var{n}
  -Wformat-y2k  -Wframe-address
--- 400,406 ----
  -Werror  -Werror=*  -Wexpansion-to-defined  -Wfatal-errors
  -Wflex-array-member-not-at-end
  -Wfloat-conversion  -Wfloat-equal  -Wformat  -Wformat=2
! -Wno-format-contains-nul  -Wno-format-diag  -Wno-format-extra-args
  -Wformat-nonliteral  -Wformat-overflow=@var{n}
  -Wformat-security  -Wformat-signedness  -Wformat-truncation=@var{n}
  -Wformat-y2k  -Wframe-address
*************** Objective-C and Objective-C++ Dialects}.
*** 425,431 ****
  -Wsizeof-array-div
  -Wsizeof-pointer-div  -Wsizeof-pointer-memaccess
  -Wstack-protector  -Wstack-usage=@var{byte-size}  -Wstrict-aliasing
! -Wstrict-aliasing=n  -Wstrict-overflow  -Wstrict-overflow=@var{n}
  -Wstring-compare
  -Wno-stringop-overflow -Wno-stringop-overread
  -Wno-stringop-truncation  -Wstrict-flex-arrays
--- 445,451 ----
  -Wsizeof-array-div
  -Wsizeof-pointer-div  -Wsizeof-pointer-memaccess
  -Wstack-protector  -Wstack-usage=@var{byte-size}  -Wstrict-aliasing
! -Wstrict-aliasing=@var{n}  -Wstrict-overflow  -Wstrict-overflow=@var{n}
  -Wstring-compare
  -Wno-stringop-overflow -Wno-stringop-overread
  -Wno-stringop-truncation  -Wstrict-flex-arrays
*************** Objective-C and Objective-C++ Dialects}.
*** 453,459 ****
  -Wvolatile-register-var  -Wwrite-strings
  -Wno-xor-used-as-pow
  -Wzero-as-null-pointer-constant
! -Wzero-length-bounds}
  
  @item Static Analyzer Options
  @gccoptlist{
--- 473,481 ----
  -Wvolatile-register-var  -Wwrite-strings
  -Wno-xor-used-as-pow
  -Wzero-as-null-pointer-constant
! -Wzero-length-bounds
! --all-warnings  --extra-warnings  --no-warnings
! --pedantic  --pedantic-errors}
  
  @item Static Analyzer Options
  @gccoptlist{
*************** Objective-C and Objective-C++ Dialects}.
*** 570,576 ****
  -femit-struct-debug-detailed@r{[}=@var{spec-list}@r{]}
  -fno-eliminate-unused-debug-symbols  -femit-class-debug-always
  -fno-merge-debug-strings  -fno-dwarf2-cfi-asm
! -fvar-tracking  -fvar-tracking-assignments}
  
  @item Optimization Options
  @xref{Optimize Options,,Options that Control Optimization}.
--- 592,599 ----
  -femit-struct-debug-detailed@r{[}=@var{spec-list}@r{]}
  -fno-eliminate-unused-debug-symbols  -femit-class-debug-always
  -fno-merge-debug-strings  -fno-dwarf2-cfi-asm
! -fvar-tracking  -fvar-tracking-assignments  -fvar-tracking-uninit
! --debug}
  
  @item Optimization Options
  @xref{Optimize Options,,Options that Control Optimization}.
*************** Objective-C and Objective-C++ Dialects}.
*** 592,611 ****
  -fdata-sections  -fdce  -fdelayed-branch
  -fdelete-null-pointer-checks  -fdep-fusion -fdevirtualize
  -fdevirtualize-speculatively  -fdevirtualize-at-ltrans  -fdse
! -fearly-inlining  -fipa-sra  -fexpensive-optimizations  -ffat-lto-objects
! -ffast-math  -ffinite-math-only  -ffloat-store  -fexcess-precision=@var{style}
! -ffinite-loops
  -fforward-propagate  -ffp-contract=@var{style}  -ffp-int-builtin-inexact
  -ffunction-sections
  -fgcse  -fgcse-after-reload  -fgcse-las  -fgcse-lm  -fgraphite-identity
  -fgcse-sm  -fhoist-adjacent-loads  -fif-conversion
  -fif-conversion2  -findirect-inlining
! -finline-stringops[=@var{fn}]
! -finline-functions  -finline-functions-called-once  -finline-limit=@var{n}
! -finline-small-functions -fipa-modref -fipa-cp  -fipa-cp-clone
  -fipa-bit-cp  -fipa-vrp  -fipa-pta  -fipa-profile  -fipa-pure-const
  -fipa-reference  -fipa-reference-addressable -fipa-reorder-for-locality
! -fipa-stack-alignment  -fipa-icf  -fira-algorithm=@var{algorithm}
  -flate-combine-instructions -flifetime-dse -flive-patching=@var{level}
  -fira-region=@var{region}  -fira-hoist-pressure
  -fira-loop-pressure  -fno-ira-share-save-slots
--- 615,638 ----
  -fdata-sections  -fdce  -fdelayed-branch
  -fdelete-null-pointer-checks  -fdep-fusion -fdevirtualize
  -fdevirtualize-speculatively  -fdevirtualize-at-ltrans  -fdse
! -fearly-inlining  -fexcess-precision=@var{style}
! -fexpensive-optimizations  -fext-dce
! -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
! -finline-atomics  -finline-functions  -finline-functions-called-once
! -finline-limit=@var{n}  -finline-small-functions
! -finline-stringops@r{[}=@var{fn}@r{]}
! -fipa-modref -fipa-cp  -fipa-cp-clone
  -fipa-bit-cp  -fipa-vrp  -fipa-pta  -fipa-profile  -fipa-pure-const
  -fipa-reference  -fipa-reference-addressable -fipa-reorder-for-locality
! -fipa-sra  -fipa-stack-alignment
! -fipa-icf  -fipa-icf-functions  -fipa-icf-variables
! -fira-algorithm=@var{algorithm}
  -flate-combine-instructions -flifetime-dse -flive-patching=@var{level}
  -fira-region=@var{region}  -fira-hoist-pressure
  -fira-loop-pressure  -fno-ira-share-save-slots
*************** Objective-C and Objective-C++ Dialects}.
*** 669,682 ****
  -fipa-ra  -fvariable-expansion-in-unroller  -fvect-cost-model  -fvpt
  -fweb  -fwhole-program  -fwpa  -fuse-linker-plugin -fzero-call-used-regs
  --param @var{name}=@var{value}
! -O  -O0  -O1  -O2  -O3  -Os  -Ofast  -Og  -Oz}
  
  @item Program Instrumentation Options
  @xref{Instrumentation Options,,Program Instrumentation Options}.
! @gccoptlist{-p  -pg  -fprofile-arcs  --coverage  -ftest-coverage
  -fcondition-coverage
  -fpath-coverage
! -fprofile-abs-path
  -fprofile-dir=@var{path}  -fprofile-generate  -fprofile-generate=@var{path}
  -fprofile-info-section  -fprofile-info-section=@var{name}
  -fprofile-note=@var{path} -fprofile-prefix-path=@var{path}
--- 696,709 ----
  -fipa-ra  -fvariable-expansion-in-unroller  -fvect-cost-model  -fvpt
  -fweb  -fwhole-program  -fwpa  -fuse-linker-plugin -fzero-call-used-regs
  --param @var{name}=@var{value}
! -O  -O0  -O1  -O2  -O3  -Os  -Ofast  -Og  -Oz  --optimize}
  
  @item Program Instrumentation Options
  @xref{Instrumentation Options,,Program Instrumentation Options}.
! @gccoptlist{-p  -pg  -fprofile-arcs  -coverage  -ftest-coverage
  -fcondition-coverage
  -fpath-coverage
! -fprofile  -fprofile-abs-path
  -fprofile-dir=@var{path}  -fprofile-generate  -fprofile-generate=@var{path}
  -fprofile-info-section  -fprofile-info-section=@var{name}
  -fprofile-note=@var{path} -fprofile-prefix-path=@var{path}
*************** Objective-C and Objective-C++ Dialects}.
*** 704,716 ****
  -finstrument-functions-exclude-function-list=@var{sym},@var{sym},@dots{}
  -finstrument-functions-exclude-file-list=@var{file},@var{file},@dots{}
  -fprofile-prefix-map=@var{old}=@var{new}
! -fpatchable-function-entry=@var{N}@r{[},@var{M}@r{]}}
  
  @item Preprocessor Options
  @xref{Preprocessor Options,,Options Controlling the Preprocessor}.
! @gccoptlist{-A@var{question}=@var{answer}
! -A-@var{question}@r{[}=@var{answer}@r{]}
! -C  -CC  -D@var{macro}@r{[}=@var{defn}@r{]}
  -dD  -dI  -dM  -dN  -dU
  -fdebug-cpp  -fdirectives-only  -fdollars-in-identifiers
  -fexec-charset=@var{charset}  -fextended-identifiers
--- 731,742 ----
  -finstrument-functions-exclude-function-list=@var{sym},@var{sym},@dots{}
  -finstrument-functions-exclude-file-list=@var{file},@var{file},@dots{}
  -fprofile-prefix-map=@var{old}=@var{new}
! -fpatchable-function-entry=@var{N}@r{[},@var{M}@r{]}
! --coverage --profile}
  
  @item Preprocessor Options
  @xref{Preprocessor Options,,Options Controlling the Preprocessor}.
! @gccoptlist{-C  -CC  -D@var{macro}@r{[}=@var{defn}@r{]}
  -dD  -dI  -dM  -dN  -dU
  -fdebug-cpp  -fdirectives-only  -fdollars-in-identifiers
  -fexec-charset=@var{charset}  -fextended-identifiers
*************** Objective-C and Objective-C++ Dialects}.
*** 724,746 ****
  -no-integrated-cpp  -P  -pthread  -remap
  -traditional  -traditional-cpp  -trigraphs
  -U@var{macro}  -undef
! -Wp,@var{option}  -Xpreprocessor @var{option}}
  
  @item Assembler Options
  @xref{Assembler Options,,Passing Options to the Assembler}.
! @gccoptlist{-Wa,@var{option}  -Xassembler @var{option}}
  
  @item Linker Options
  @xref{Link Options,,Options for Linking}.
  @gccoptlist{@var{object-file-name} -flink-libatomic  -fuse-ld=@var{linker}  -l@var{library}
  -nostartfiles  -nodefaultlibs  -nolibc  -nostdlib  -nostdlib++
! -e @var{entry}  --entry=@var{entry}
  -pie  -pthread  -r  -rdynamic
  -s  -static  -static-pie  -static-libgcc  -static-libstdc++
  -static-libasan  -static-libtsan  -static-liblsan  -static-libubsan
  -shared  -shared-libgcc  -symbolic
  -T @var{script}  -Wl,@var{option}  -Xlinker @var{option}
! -u @var{symbol}  -z @var{keyword}}
  
  @item Directory Options
  @xref{Directory Options,,Options for Directory Search}.
--- 750,788 ----
  -no-integrated-cpp  -P  -pthread  -remap
  -traditional  -traditional-cpp  -trigraphs
  -U@var{macro}  -undef
! -Wp,@var{option}  -Xpreprocessor @var{option}
! --comments  --comments-in-macros
! --define-macro=@var{macro}@r{[}=@var{defn}@r{]}
! --dependencies  --dump=@var{letters}
! --imacros=@var{file}  --include=@var{file}
! --no-integrated-cpp  --no-line-commands
! --print-missing-file-dependencies
! --traditional  --traditional-cpp  --trigraphs  --trace-includes
! --undefine-macro=@var{macro}
! --user-dependencies  --write-dependencies  --write-user-dependencies
! }
  
  @item Assembler Options
  @xref{Assembler Options,,Passing Options to the Assembler}.
! @gccoptlist{-Wa,@var{option}  -Xassembler @var{option}
! --for-assembler=@var{option}}
  
  @item Linker Options
  @xref{Link Options,,Options for Linking}.
  @gccoptlist{@var{object-file-name} -flink-libatomic  -fuse-ld=@var{linker}  -l@var{library}
  -nostartfiles  -nodefaultlibs  -nolibc  -nostdlib  -nostdlib++
! -e @var{entry}
  -pie  -pthread  -r  -rdynamic
  -s  -static  -static-pie  -static-libgcc  -static-libstdc++
  -static-libasan  -static-libtsan  -static-liblsan  -static-libubsan
  -shared  -shared-libgcc  -symbolic
  -T @var{script}  -Wl,@var{option}  -Xlinker @var{option}
! -u @var{symbol}
! -Tbss=@var{addr}  -Tdata=@var{addr}  -Ttext=@var{addr}
! -N  -n  -t  -Z  -z @var{keyword}
! --entry=@var{entry}  --for-linker=@var{option}
! --force-link=@var{symbol}  --no-standard-library
! --pie  --static  --static-pie  --symbolic}
  
  @item Directory Options
  @xref{Directory Options,,Options for Directory Search}.
*************** Objective-C and Objective-C++ Dialects}.
*** 750,758 ****
  -iplugindir=@var{dir}  -iprefix @var{file}
  -iquote @var{dir}  -isysroot @var{dir}  -isystem @var{dir}
  -iwithprefix @var{dir}  -iwithprefixbefore @var{dir}
- --embed-dir=@var{dir}
  -L@var{dir}  -no-canonical-prefixes  --no-sysroot-suffix
! -nostdinc  -nostdinc++  --sysroot=@var{dir}}
  
  @item Code Generation Options
  @xref{Code Gen Options,,Options for Code Generation Conventions}.
--- 792,806 ----
  -iplugindir=@var{dir}  -iprefix @var{file}
  -iquote @var{dir}  -isysroot @var{dir}  -isystem @var{dir}
  -iwithprefix @var{dir}  -iwithprefixbefore @var{dir}
  -L@var{dir}  -no-canonical-prefixes  --no-sysroot-suffix
! -nostdinc  -nostdinc++
! --embed-dir=@var{dir}  --embed-directory=@var{dir}
! --include-barrier  --include-directory=@var{dir}
! --include-directory-after=@var{dir}  --include-prefix=@var{prefix}
! --include-with-prefix=@var{prefix}  --include-with-prefix-after=@var{prefix}
! --include-with-prefix-before=@var{prefix}
! --no-canonical-prefixes  --no-standard-includes
! --prefix=@var{prefix}  --sysroot=@var{dir}}
  
  @item Code Generation Options
  @xref{Code Gen Options,,Options for Code Generation Conventions}.
*************** Objective-C and Objective-C++ Dialects}.
*** 773,779 ****
  -ftrapv  -fwrapv
  -fvisibility=@r{[}default@r{|}internal@r{|}hidden@r{|}protected@r{]}
  -fstrict-volatile-bitfields  -fsync-libcalls
! -fzero-init-padding-bits=@var{value}}
  
  @item Developer Options
  @xref{Developer Options,,GCC Developer Options}.
--- 821,828 ----
  -ftrapv  -fwrapv
  -fvisibility=@r{[}default@r{|}internal@r{|}hidden@r{|}protected@r{]}
  -fstrict-volatile-bitfields  -fsync-libcalls
! -fzero-init-padding-bits=@var{value}
! -Qy  -Qn}
  
  @item Developer Options
  @xref{Developer Options,,GCC Developer Options}.
*************** Objective-C and Objective-C++ Dialects}.
*** 789,794 ****
--- 838,844 ----
  -fdump-debug  -fdump-earlydebug
  -fdump-noaddr  -fdump-unnumbered  -fdump-unnumbered-links
  -fdump-final-insns@r{[}=@var{file}@r{]}
+ -fdump-internal-locations
  -fdump-ipa-all  -fdump-ipa-cgraph  -fdump-ipa-inline
  -fdump-lang-all
  -fdump-lang-@var{switch}
*************** Objective-C and Objective-C++ Dialects}.
*** 815,823 ****
  -fvar-tracking-assignments-toggle  -gtoggle
  -print-file-name=@var{library}  -print-libgcc-file-name
  -print-multi-directory  -print-multi-lib  -print-multi-os-directory
  -print-prog-name=@var{program}  -print-search-dirs  -Q
  -print-sysroot  -print-sysroot-headers-suffix
! -save-temps  -save-temps=cwd  -save-temps=obj  -time@r{[}=@var{file}@r{]}}
  
  @item Machine-Dependent Options
  @xref{Submodel Options,,Machine-Dependent Options}.
--- 865,881 ----
  -fvar-tracking-assignments-toggle  -gtoggle
  -print-file-name=@var{library}  -print-libgcc-file-name
  -print-multi-directory  -print-multi-lib  -print-multi-os-directory
+ -print-multiarch
  -print-prog-name=@var{program}  -print-search-dirs  -Q
  -print-sysroot  -print-sysroot-headers-suffix
! -save-temps  -save-temps=cwd  -save-temps=obj  -time@r{[}=@var{file}@r{]}
! --dump=@var{letters}
! --print-file-name=@var{library}  --print-libgcc-file-file-name
! --print-multi-directory  --print-multi-lib  --print-multi-os-directory
! --print-multiarch  --print-prog-name=@var{program}
! --print-search-dirs  --print-sysroot  --print-sysroot-headers-suffix
! --save-temps
! }
  
  @item Machine-Dependent Options
  @xref{Submodel Options,,Machine-Dependent Options}.
*************** Objective-C and Objective-C++ Dialects}.
*** 856,862 ****
  -msplit-vecmove-early  -m1reg-@var{reg}}
  
  @emph{AMD GCN Options} (@ref{AMD GCN Options})
! @gccoptlist{-march=@var{gpu} -mtune=@var{gpu} -mstack-size=@var{bytes}}
  
  @emph{ARC Options} (@ref{ARC Options})
  @gccoptlist{-mbarrel-shifter  -mjli-always
--- 914,921 ----
  -msplit-vecmove-early  -m1reg-@var{reg}}
  
  @emph{AMD GCN Options} (@ref{AMD GCN Options})
! @gccoptlist{-march=@var{gpu} -mtune=@var{gpu} -mstack-size=@var{bytes}
! -Wopenacc-dims}
  
  @emph{ARC Options} (@ref{ARC Options})
  @gccoptlist{-mbarrel-shifter  -mjli-always
*************** See RS/6000 and PowerPC Options.
*** 1441,1447 ****
  -mfix-at697f  -mfix-ut699  -mfix-ut700  -mfix-gr712rc}
  
  @emph{System V Options} (@ref{System V Options})
! @gccoptlist{-Qy  -Qn  -YP,@var{paths}  -Ym,@var{dir}}
  
  @emph{V850 Options} (@ref{V850 Options})
  @gccoptlist{-mlong-calls  -mno-long-calls  -mep  -mno-ep
--- 1500,1506 ----
  -mfix-at697f  -mfix-ut699  -mfix-ut700  -mfix-gr712rc}
  
  @emph{System V Options} (@ref{System V Options})
! @gccoptlist{-YP,@var{paths}  -Ym,@var{dir}}
  
  @emph{V850 Options} (@ref{V850 Options})
  @gccoptlist{-mlong-calls  -mno-long-calls  -mep  -mno-ep
*************** Any file name with no recognized suffix
*** 1704,1713 ****
--- 1763,1775 ----
  @end table
  
  @opindex x
+ @opindex language
  You can specify the input language explicitly with the @option{-x} option:
  
  @table @gcctabopt
  @item -x @var{language}
+ @itemx --language=@var{language}
+ @itemx --language @var{language}
  Specify explicitly the @var{language} for the following input files
  (rather than letting the compiler choose a default based on the file
  name suffix).  This option applies to all following input files until
*************** one of the options @option{-c}, @option{
*** 1743,1749 ****
--- 1805,1813 ----
  
  @table @gcctabopt
  @opindex c
+ @opindex compile
  @item -c
+ @itemx --compile
  Compile or assemble the source files, but do not link.  The linking
  stage simply is not done.  The ultimate output is in the form of an
  object file for each source file.
*************** Unrecognized input files, not requiring
*** 1755,1761 ****
--- 1819,1827 ----
  ignored.
  
  @opindex S
+ @opindex assemble
  @item -S
+ @itemx --assemble
  Stop after the stage of compilation proper; do not assemble.  The output
  is in the form of an assembler code file for each non-assembler input
  file specified.
*************** replacing the suffix @samp{.c}, @samp{.i
*** 1766,1772 ****
--- 1832,1840 ----
  Input files that don't require compilation are ignored.
  
  @opindex E
+ @opindex preprocess
  @item -E
+ @itemx --preprocess
  Stop after the preprocessing stage; do not run the compiler proper.  The
  output is in the form of preprocessed source code, which is sent to the
  standard output.
*************** Input files that don't require preproces
*** 1775,1781 ****
--- 1843,1852 ----
  
  @cindex output file option
  @opindex o
+ @opindex output
  @item -o @var{file}
+ @itemx --output=@var{file}
+ @itemx --output @var{file}
  Place the primary output in file @var{file}.  This applies to whatever
  sort of output is being produced, whether it be an executable file, an
  object file, an assembler file or preprocessed C code.
*************** by the options @option{-dumpbase}, @opti
*** 1847,1852 ****
--- 1918,1924 ----
  
  @opindex dumpbase
  @item -dumpbase @var{dumpbase}
+ @item --dumpbase @var{dumpbase}
  This option sets the base name for auxiliary and dump output files.  It
  does not affect the name of the primary output file.  Intermediate
  outputs, when preserved, are not regarded as primary outputs, but as
*************** auxiliary files.
*** 1936,1941 ****
--- 2008,2014 ----
  
  @opindex dumpbase-ext
  @item -dumpbase-ext @var{auxdropsuf}
+ @itemx --dumpbase-ext @var{auxdropsuf}
  When forming the name of an auxiliary (but not a dump) output file, drop
  trailing @var{auxdropsuf} from @var{dumpbase} before appending any
  suffixes.  If not specified, this option defaults to the suffix of a
*************** the auxiliary and dump outputs by using
*** 1970,1975 ****
--- 2043,2049 ----
  
  @opindex dumpdir
  @item -dumpdir @var{dumppfx}
+ @itemx --dumpdir @var{dumppfx}
  When forming the name of an auxiliary or dump output file, use
  @var{dumppfx} as a prefix:
  
*************** component so that it overrides any @opti
*** 2097,2103 ****
--- 2171,2179 ----
  @option{-dumpbase} to sub-compilers.
  
  @opindex v
+ @opindex verbose
  @item -v
+ @itemx --verbose
  Print (on standard error output) the commands executed to run the stages
  of compilation.  Also print the version number of the compiler driver
  program and of the preprocessor and the compiler proper.
*************** Display the version number and copyright
*** 2250,2255 ****
--- 2326,2332 ----
  
  @opindex pass-exit-codes
  @item -pass-exit-codes
+ @itemx --pass-exit-codes
  Normally the @command{gcc} program exits with the code of 1 if any
  phase of the compiler returns a non-success return code.  If you specify
  @option{-pass-exit-codes}, the @command{gcc} program instead returns with
*************** compiler error is encountered.
*** 2259,2264 ****
--- 2336,2342 ----
  
  @opindex pipe
  @item -pipe
+ @itemx --pipe
  Use pipes rather than temporary files for communication between the
  various stages of compilation.  This fails to work on some systems where
  the assembler is unable to read from a pipe; but the GNU assembler has
*************** no trouble.
*** 2266,2271 ****
--- 2344,2351 ----
  
  @opindex specs
  @item -specs=@var{file}
+ @itemx --specs=@var{file}
+ @itemx --specs @var{file}
  Process @var{file} after the compiler reads in the standard @file{specs}
  file, in order to override the defaults which the @command{gcc} driver
  program uses when determining what switches to pass to @command{cc1},
*************** Define an argument called @var{key} with
*** 2328,2333 ****
--- 2408,2414 ----
  for the plugin called @var{name}.
  
  @opindex fdump-ada-spec
+ @opindex fdump-ada-spec-slim
  @item -fdump-ada-spec@r{[}-slim@r{]}
  For C and C++ source and include files, generate corresponding Ada specs.
  @xref{Generating Ada Bindings for C and C++ headers,,, gnat_ugn,
*************** accepts:
*** 2402,2407 ****
--- 2483,2489 ----
  @cindex ISO support
  @opindex ansi
  @item -ansi
+ @itemx --ansi
  In C mode, this is equivalent to @option{-std=c90}. In C++ mode, it is
  equivalent to @option{-std=c++98}.
  
*************** around bugs in the access control code.
*** 3055,3060 ****
--- 3137,3143 ----
  
  @opindex faligned-new
  @item -faligned-new
+ @itemx -faligned-new=@var{alignment}
  Enable support for C++17 @code{new} of types that require more
  alignment than @code{void* ::operator new(std::size_t)} provides.  A
  numeric argument such as @code{-faligned-new=32} can be used to
*************** into the standard, could additionally be
*** 3170,3175 ****
--- 3253,3263 ----
  in GCC 14 and removed in GCC 15; users are expected to convert their code
  to C++20 concepts.
  
+ @opindex fconcepts-diagnostics-depth
+ @item -fconcepts-diagnostics-depth=@var{n}
+ Specify maximum error replay depth during recursive diagnosis of a constraint
+ satisfaction failure.  The default is 1.
+ 
  @opindex fconstexpr-depth
  @item -fconstexpr-depth=@var{n}
  Set the maximum nested evaluation depth for C++11 constexpr functions
*************** used together.
*** 3241,3277 ****
  
  @table @gcctabopt
  @opindex fcontract-mode
! @item -fcontract-mode=[on|off]
  Control whether any contracts have any semantics at all.  Defaults to on.
  
  @opindex fcontract-assumption-mode
! @item -fcontract-assumption-mode=[on|off]
  [N4820] Control whether contracts with level @samp{axiom}
  should have the assume semantic.  Defaults to on.
  
  @opindex fcontract-build-level
! @item -fcontract-build-level=[off|default|audit]
  [N4820] Specify which level of contracts to generate checks
  for.  Defaults to @samp{default}.
  
  @opindex fcontract-continuation-mode
! @item -fcontract-continuation-mode=[on|off]
  [N4820] Control whether to allow the program to continue executing
  after a contract violation.  That is, do checked contracts have the
  @samp{maybe} semantic described below rather than the @samp{never}
  semantic.  Defaults to off.
  
  @opindex fcontract-role
! @item -fcontract-role=<name>:<default>,<audit>,<axiom>
  [P1332] Specify the concrete semantics for each contract level
  of a particular contract role.
  
! @item -fcontract-semantic=[default|audit|axiom]:<semantic>
  [P1429] Specify the concrete semantic for a particular
  contract level.
  
  @opindex fcontract-strict-declarations
! @item -fcontract-strict-declarations=[on|off]
  Control whether to reject adding contracts to a function after its
  first declaration.  Defaults to off.
  @end table
--- 3329,3366 ----
  
  @table @gcctabopt
  @opindex fcontract-mode
! @item -fcontract-mode=@r{[}on@r{|}off@r{]}
  Control whether any contracts have any semantics at all.  Defaults to on.
  
  @opindex fcontract-assumption-mode
! @item -fcontract-assumption-mode=@r{[}on@r{|}off@r{]}
  [N4820] Control whether contracts with level @samp{axiom}
  should have the assume semantic.  Defaults to on.
  
  @opindex fcontract-build-level
! @item -fcontract-build-level=@r{[}off@r{|}default@r{|}audit@r{]}
  [N4820] Specify which level of contracts to generate checks
  for.  Defaults to @samp{default}.
  
  @opindex fcontract-continuation-mode
! @item -fcontract-continuation-mode=@r{[}on@r{|}off@r{]}
  [N4820] Control whether to allow the program to continue executing
  after a contract violation.  That is, do checked contracts have the
  @samp{maybe} semantic described below rather than the @samp{never}
  semantic.  Defaults to off.
  
  @opindex fcontract-role
! @item -fcontract-role=@var{name}:@var{default},@var{audit},@var{axiom}
  [P1332] Specify the concrete semantics for each contract level
  of a particular contract role.
  
! @opindex fcontract-semantic
! @item -fcontract-semantic=@r{[}default@r{|}audit@r{|}axiom@r{]}:@var{semantic}
  [P1429] Specify the concrete semantic for a particular
  contract level.
  
  @opindex fcontract-strict-declarations
! @item -fcontract-strict-declarations=@r{[}on@r{|}off@r{]}
  Control whether to reject adding contracts to a function after its
  first declaration.  Defaults to off.
  @end table
*************** by @option{-Wall}.
*** 3996,4003 ****
  Warn that the implicit declaration of a copy constructor or copy
  assignment operator is deprecated if the class has a user-provided
  copy constructor or copy assignment operator, in C++11 and up.  This
! warning is enabled by @option{-Wextra}.  With
! @option{-Wdeprecated-copy-dtor}, also deprecate if the class has a
  user-provided destructor.
  
  @opindex Wdeprecated-enum-enum-conversion
--- 4085,4096 ----
  Warn that the implicit declaration of a copy constructor or copy
  assignment operator is deprecated if the class has a user-provided
  copy constructor or copy assignment operator, in C++11 and up.  This
! warning is enabled by @option{-Wextra}.
! 
! @opindex Wdeprecated-copy-dtor
! @opindex Wno-deprecated-copy-dtor
! @item -Wdeprecated-copy-dtor @r{(C++ and Objective-C++ only)}
! Similar to @option{-Wdeprecated-copy}, but also deprecate if the class has a
  user-provided destructor.
  
  @opindex Wdeprecated-enum-enum-conversion
*************** Enabled by default with @option{-std=c++
*** 4869,4874 ****
--- 4962,4968 ----
  @opindex Waligned-new
  @opindex Wno-aligned-new
  @item -Waligned-new
+ @itemx -Waligned-new=@r{[}none@r{|}global@r{|}all@r{]}
  Warn about a new-expression of a type that requires greater alignment
  than the @code{alignof(std::max_align_t)} but uses an allocation
  function without an explicit alignment parameter. This option is
*************** Note - this option also affects the disp
*** 5495,5500 ****
--- 5589,5595 ----
  function/type/variable attribute.  It does not however affect the
  @samp{pragma GCC warning} and @samp{pragma GCC error} pragmas.
  
+ @opindex fdiagnostics-plain-output
  @item -fdiagnostics-plain-output
  This option requests that diagnostic output look as plain as possible, which
  may be useful when running @command{dejagnu} or other utilities that need to
*************** This option exists for use by GCC develo
*** 6181,6186 ****
--- 6276,6284 ----
  diagnostics, but may be of use to plugin authors.
  
  @opindex fdiagnostics-format
+ @opindex fdiagnostics-format=text
+ @opindex fdiagnostics-format=sarif-stderr
+ @opindex fdiagnostics-format=sarif-file
  @item -fdiagnostics-format=@var{FORMAT}
  Select a different format for printing diagnostics.
  @var{FORMAT} is @samp{text}, @samp{sarif-stderr} or @samp{sarif-file}.
*************** Using this option replaces any additiona
*** 6191,6196 ****
--- 6289,6296 ----
  
  The default is @samp{text}.
  
+ @cindex diagnostic output formats, sarif-stderr
+ @cindex diagnostic output formats, sarif-file
  The @samp{sarif-stderr} and @samp{sarif-file} formats both emit
  diagnostics in SARIF Version 2.1.0 format, either to stderr, or to a file
  named @file{@var{source}.sarif}, respectively.
*************** or be removed without notice.
*** 6217,6222 ****
--- 6317,6323 ----
  
  @table @gcctabopt
  
+ @opindex fdiagnostics-add-output=text
  @item text
  Emit diagnostics to stderr using GCC's classic text output format.
  
*************** This exists for use by GCC developers.
*** 6245,6250 ****
--- 6346,6353 ----
  
  @end table
  
+ @cindex SARIF file output sink
+ @opindex fdiagnostics-add-output=sarif
  @item sarif
  Emit diagnostics to a file in SARIF format.
  
*************** information from @option{-fanalyzer} in
*** 6282,6287 ****
--- 6385,6391 ----
  
  @end table
  
+ @opindex fdiagnostics-add-output=experimental-html
  @item experimental-html
  Emit diagnostics to a file in HTML format.  This scheme is experimental,
  and may go away in future GCC releases.  The keys and details of the output
*************** specified, then @option{-Wfatal-errors}
*** 6420,6426 ****
--- 6524,6532 ----
  option.
  
  @opindex w
+ @opindex no-warnings
  @item -w
+ @itemx --no-warnings
  Inhibit all warning messages.
  
  @opindex Werror
*************** problems, in some cases it may also caus
*** 6501,6506 ****
--- 6607,6613 ----
  @opindex Wno-pedantic
  @item -Wpedantic
  @itemx -pedantic
+ @itemx --pedantic
  Issue all the warnings demanded by strict ISO C and ISO C++;
  diagnose all programs that use forbidden extensions, and some other
  programs that do not follow ISO C and ISO C++.  This follows the version
*************** nothing to warn about.)
*** 6539,6544 ****
--- 6646,6652 ----
  
  @opindex pedantic-errors
  @item -pedantic-errors
+ @itemx --pedantic-errors
  Give an error whenever the @dfn{base standard} (see @option{-Wpedantic})
  requires a diagnostic, in some cases where there is undefined behavior
  at compile-time and in some other cases that do not prevent compilation
*************** modes (@option{-std=c89}, @option{-std=g
*** 6609,6615 ****
--- 6717,6725 ----
  
  @opindex Wall
  @opindex Wno-all
+ @opindex all-warnings
  @item -Wall
+ @itemx --all-warnings
  This enables all the warnings about constructions that some users
  consider questionable, and that are easy to avoid (or modify to
  prevent the warning), even in conjunction with macros.  This also
*************** them must be enabled individually.
*** 6711,6717 ****
--- 6821,6829 ----
  @opindex W
  @opindex Wextra
  @opindex Wno-extra
+ @opindex extra-warnings
  @item -Wextra
+ @itemx --extra-warnings
  This enables some extra warning flags that are not enabled by
  @option{-Wall}. (This option used to be called @option{-W}.  The older
  name is still supported, but the newer name is more descriptive.)
*************** Option @option{-Wformat} is equivalent t
*** 7047,7053 ****
  @option{-Wformat} also checks for null format arguments for several
  functions, @option{-Wformat} also implies @option{-Wnonnull}.  Some
  aspects of this level of format checking can be disabled by the
! options: @option{-Wno-format-contains-nul},
  @option{-Wno-format-extra-args}, and @option{-Wno-format-zero-length}.
  @option{-Wformat} is enabled by @option{-Wall}.
  
--- 7159,7165 ----
  @option{-Wformat} also checks for null format arguments for several
  functions, @option{-Wformat} also implies @option{-Wnonnull}.  Some
  aspects of this level of format checking can be disabled by the
! options: @option{-Wno-format-contains-nul}, @option{-Wno-format-diag},
  @option{-Wno-format-extra-args}, and @option{-Wno-format-zero-length}.
  @option{-Wformat} is enabled by @option{-Wall}.
  
*************** equivalent to @option{-Wformat -Wformat-
*** 7064,7069 ****
--- 7176,7187 ----
  If @option{-Wformat} is specified, do not warn about format strings that
  contain NUL bytes.
  
+ @opindex Wno-format-diag
+ @opindex Wformat-diag
+ @item -Wno-format-diag
+ If @option{-Wformat} is specified, do not warn about format strings that
+ are unsuitable for GCC diagnostics.
+ 
  @opindex Wno-format-extra-args
  @opindex Wformat-extra-args
  @item -Wno-format-extra-args
*************** cases, but does attempt to catch the mor
*** 8488,8495 ****
  included in @option{-Wall}.
  It is equivalent to @option{-Wstrict-aliasing=3}.
  
! @opindex Wstrict-aliasing=n
! @item -Wstrict-aliasing=n
  This option is only active when @option{-fstrict-aliasing} is active.
  It warns about code that might break the strict aliasing rules that the
  compiler is using for optimization.
--- 8606,8612 ----
  included in @option{-Wall}.
  It is equivalent to @option{-Wstrict-aliasing=3}.
  
! @item -Wstrict-aliasing=@var{n}
  This option is only active when @option{-fstrict-aliasing} is active.
  It warns about code that might break the strict aliasing rules that the
  compiler is using for optimization.
*************** This option warns on all uses of @code{a
*** 8936,8941 ****
--- 9053,9064 ----
  @item -Wauto-profile
  Output warnings about auto-profile inconsistencies.
  
+ @opindex Wcannot-profile
+ @opindex Wno-cannot-profile
+ @item -Wcannot-profile
+ Warn when profiling instrumentation was requested, but could not be applied to
+ a certain function.
+ 
  @opindex Walloca-larger-than=
  @opindex Wno-alloca-larger-than
  @item -Walloca-larger-than=@var{byte-size}
*************** disabled in the expression that follows
*** 9829,9834 ****
--- 9952,9959 ----
  
  @opindex Wc11-c23-compat
  @opindex Wno-c11-c23-compat
+ @opindex Wc11-c2x-compat
+ @opindex Wno-c11-c2x-compat
  @item -Wc11-c23-compat @r{(C and Objective-C only)}
  @itemx -Wc11-c2x-compat @r{(C and Objective-C only)}
  Warn about features not present in ISO C11, but present in ISO C23.
*************** See also @option{-Walloca-larger-than=@v
*** 11178,11183 ****
--- 11303,11309 ----
  Disable @option{-Wvla-larger-than=} warnings.  The option is equivalent
  to @option{-Wvla-larger-than=}@samp{SIZE_MAX} or larger.
  
+ @opindex Wvla-parameter
  @opindex Wno-vla-parameter
  @item -Wvla-parameter
  Warn about redeclarations of functions involving arguments of Variable
*************** With @option{-fno-analyzer-undo-inlining
*** 12417,12432 ****
--- 12543,12563 ----
  the original frame information can be disabled, which may be of help
  when debugging issues in the analyzer.
  
+ @opindex fanalyzer-verbose-edges
+ @opindex fno-analyzer-verbose-edges
  @item -fanalyzer-verbose-edges
  This option is intended for analyzer developers.  It enables more
  verbose, lower-level detail in the descriptions of control flow
  within diagnostic paths.
  
+ @opindex fanalyzer-verbose-state-changes
+ @opindex fno-analyzer-verbose-state-changes
  @item -fanalyzer-verbose-state-changes
  This option is intended for analyzer developers.  It enables more
  verbose, lower-level detail in the descriptions of events relating
  to state machines within diagnostic paths.
  
+ @opindex fanalyzer-verbosity
  @item -fanalyzer-verbosity=@var{level}
  This option controls the complexity of the control flow paths that are
  emitted for analyzer diagnostics.
*************** GraphViz to @file{@var{file}.eg.dot}.
*** 12484,12500 ****
  Nodes are color-coded based on state-machine states to emphasize
  state changes.
  
! @opindex dump-analyzer-exploded-nodes
  @item -fdump-analyzer-exploded-nodes
  Emit diagnostics showing where nodes in the ``exploded graph'' are
  in relation to the program source.
  
! @opindex dump-analyzer-exploded-nodes-2
  @item -fdump-analyzer-exploded-nodes-2
  Dump a textual representation of the ``exploded graph'' to
  @file{@var{file}.eg.txt}.
  
! @opindex dump-analyzer-exploded-nodes-3
  @item -fdump-analyzer-exploded-nodes-3
  Dump a textual representation of the ``exploded graph'' to
  one dump file per node, to @file{@var{file}.eg-@var{id}.txt}.
--- 12615,12631 ----
  Nodes are color-coded based on state-machine states to emphasize
  state changes.
  
! @opindex fdump-analyzer-exploded-nodes
  @item -fdump-analyzer-exploded-nodes
  Emit diagnostics showing where nodes in the ``exploded graph'' are
  in relation to the program source.
  
! @opindex fdump-analyzer-exploded-nodes-2
  @item -fdump-analyzer-exploded-nodes-2
  Dump a textual representation of the ``exploded graph'' to
  @file{@var{file}.eg.txt}.
  
! @opindex fdump-analyzer-exploded-nodes-3
  @item -fdump-analyzer-exploded-nodes-3
  Dump a textual representation of the ``exploded graph'' to
  one dump file per node, to @file{@var{file}.eg-@var{id}.txt}.
*************** This is typically a large number of dump
*** 12505,12518 ****
  Dump a textual representation of the ``exploded path'' for each
  diagnostic to @file{@var{file}.@var{idx}.@var{kind}.epath.txt}.
  
! @opindex dump-analyzer-feasibility
  @item -fdump-analyzer-feasibility
  Dump internal details about the analyzer's search for feasible paths.
  The details are written in a form suitable for viewing with GraphViz
  to filenames of the form @file{@var{file}.*.fg.dot},
  @file{@var{file}.*.tg.dot}, and @file{@var{file}.*.fpath.txt}.
  
! @opindex dump-analyzer-infinite-loop
  @item -fdump-analyzer-infinite-loop
  Dump internal details about the analyzer's search for infinite loops.
  The details are written in a form suitable for viewing with GraphViz
--- 12636,12649 ----
  Dump a textual representation of the ``exploded path'' for each
  diagnostic to @file{@var{file}.@var{idx}.@var{kind}.epath.txt}.
  
! @opindex fdump-analyzer-feasibility
  @item -fdump-analyzer-feasibility
  Dump internal details about the analyzer's search for feasible paths.
  The details are written in a form suitable for viewing with GraphViz
  to filenames of the form @file{@var{file}.*.fg.dot},
  @file{@var{file}.*.tg.dot}, and @file{@var{file}.*.fpath.txt}.
  
! @opindex fdump-analyzer-infinite-loop
  @item -fdump-analyzer-infinite-loop
  Dump internal details about the analyzer's search for infinite loops.
  The details are written in a form suitable for viewing with GraphViz
*************** information useful for debugging do not
*** 12574,12580 ****
--- 12705,12713 ----
  
  @table @gcctabopt
  @opindex g
+ @opindex debug
  @item -g
+ @itemx --debug
  Produce debugging information in the operating system's native format
  (stabs, COFF, XCOFF, or DWARF)@.  GDB can work with this debugging
  information.
*************** annotations are created and maintained,
*** 12758,12763 ****
--- 12891,12907 ----
  By default, this flag is enabled together with @option{-fvar-tracking},
  except when selective scheduling is enabled.
  
+ @opindex fvar-tracking-uninit
+ @opindex fno-var-tracking-uninit
+ @item -fvar-tracking-uninit
+ @itemx -fno-var-tracking-uninit
+ Perform variable tracking and also mark uninitialized variables in the
+ debug information.
+ This flag is enabled by default by @option{-fvar-tracking}; it
+ also implies @option{-fvar-tracking}.
+ To do variable tracking without marking uninitialized variables, use
+ @option{-fvar-tracking} @option{-fno-var-tracking-uninit}.
+ 
  @opindex gsplit-dwarf
  @item -gsplit-dwarf
  If DWARF debugging information is enabled, separate as much debugging
*************** Generate @code{.debug_pubnames} and @cod
*** 12794,12799 ****
--- 12938,12947 ----
  suitable for conversion into a GDB@ index.  This option is only useful
  with a linker that can produce GDB@ index version 7.
  
+ @opindex gno-pubnames
+ @item -gno-pubnames
+ Don't generate DWARF @code{.debug_pubnames} and @code{.debug_pubtypes} sections.
+ 
  @opindex fdebug-types-section
  @opindex fno-debug-types-section
  @item -fdebug-types-section
*************** to find out the exact set of optimizatio
*** 13083,13090 ****
--- 13231,13240 ----
  @table @gcctabopt
  @opindex O
  @opindex O1
+ @opindex optimize
  @item -O
  @itemx -O1
+ @itemx --optimize
  Optimize.  Optimizing compilation takes somewhat more time, and a lot
  more memory for a large function.
  
*************** their @code{_FORTIFY_SOURCE} counterpart
*** 13411,13418 ****
  
  Enabled at levels @option{-O2}, @option{-O3}.
  
  @opindex finline-stringops
! @item -finline-stringops[=@var{fn}]
  Expand memory and string operations (for now, only @code{memset})
  inline, even when the length is variable or big enough as to require
  looping.  This is most useful along with @option{-ffreestanding} and
--- 13561,13575 ----
  
  Enabled at levels @option{-O2}, @option{-O3}.
  
+ @opindex finline-atomics
+ @opindex fno-inline-atomics
+ @item -finline-atomics
+ @itemx -fno-inline-atomics
+ Inline @samp{__atomic} operations when a lock-free instruction sequence
+ is available.  This optimization is enabled by default.
+ 
  @opindex finline-stringops
! @item -finline-stringops@r{[}=@var{fn}@r{]}
  Expand memory and string operations (for now, only @code{memset})
  inline, even when the length is variable or big enough as to require
  looping.  This is most useful along with @option{-ffreestanding} and
*************** Perform a number of minor optimizations
*** 13857,13862 ****
--- 14014,14026 ----
  
  Enabled at levels @option{-O2}, @option{-O3}, @option{-Os}.
  
+ @opindex fext-dce
+ @opindex fno-ext-dce
+ @item -fext-dce
+ @itemx -fno-ext-dce
+ Perform dead code elimination on zero and sign extensions, with special
+ dataflow analysis.
+ 
  @opindex free
  @item -free
  Attempt to remove redundant extension instructions.  This is especially
*************** ranges. This flag is enabled by default
*** 14354,14370 ****
  that @option{-fipa-cp} is enabled.
  
  @opindex fipa-icf
! @item -fipa-icf
! Perform Identical Code Folding for functions and read-only variables.
  The optimization reduces code size and may disturb unwind stacks by replacing
! a function by equivalent one with a different name. The optimization works
  more effectively with link-time optimization enabled.
  
  Although the behavior is similar to the Gold Linker's ICF optimization, GCC ICF
  works on different levels and thus the optimizations are not same - there are
  equivalences that are found only by GCC and equivalences found only by Gold.
  
! This flag is enabled by default at @option{-O2} and @option{-Os}.
  
  @opindex flate-combine-instructions
  @item -flate-combine-instructions
--- 14518,14543 ----
  that @option{-fipa-cp} is enabled.
  
  @opindex fipa-icf
! @opindex fipa-icf-functions
! @opindex fipa-icf-variables
! @opindex fno-ipa-icf
! @opindex fno-ipa-icf-functions
! @opindex fno-ipa-icf-variables
! @item -fipa-icf-functions
! @itemx -fipa-icf-variables
! @itemx -fipa-icf
! Perform Identical Code Folding for functions (@option{-fipa-icf-functions}),
! read-only variables (@option{-fipa-icf-variables}), or both
! (@option{-fipa-icf}).
  The optimization reduces code size and may disturb unwind stacks by replacing
! a function by an equivalent one with a different name. The optimization works
  more effectively with link-time optimization enabled.
  
  Although the behavior is similar to the Gold Linker's ICF optimization, GCC ICF
  works on different levels and thus the optimizations are not same - there are
  equivalences that are found only by GCC and equivalences found only by Gold.
  
! @option{-fipa-icf} is enabled by default at @option{-O2} and @option{-Os}.
  
  @opindex flate-combine-instructions
  @item -flate-combine-instructions
*************** The maximum allowed @var{n} option value
*** 15161,15166 ****
--- 15334,15341 ----
  
  Enabled at levels @option{-O2}, @option{-O3}.
  
+ @opindex flimit-function-alignment
+ @opindex fno-limit-function-alignment
  @item -flimit-function-alignment
  If this option is enabled, the compiler tries to avoid unnecessarily
  overaligning functions. It attempts to instruct the assembler to align
*************** attribute @code{zero_call_used_regs} (@p
*** 16294,16299 ****
--- 16469,16475 ----
  
  @opindex param
  @item --param @var{name}=@var{value}
+ @itemx --param=@var{name}=@var{value}
  In some places, GCC uses various constants to control the amount of
  optimization that is done.  For example, GCC does not inline functions
  that contain more than a certain number of instructions.  You can
*************** Switch initialization conversion refuses
*** 17119,17127 ****
  bigger than @option{switch-conversion-max-branch-ratio} times the number of
  branches in the switch.
  
- @item switch-lower-slow-alg-max-cases
- Maximum number of cases for slow switch lowering algorithms to be used.
- 
  @item max-partial-antic-length
  Maximum length of the partial antic set computed during the tree
  partial redundancy elimination optimization (@option{-ftree-pre}) when
--- 17295,17300 ----
*************** program analysis purposes.
*** 18000,18010 ****
  @cindex @command{prof}
  @cindex @command{gprof}
  @opindex p
  @opindex pg
  @item -p
  @itemx -pg
  Generate extra code to write profile information suitable for the
! analysis program @command{prof} (for @option{-p}) or @command{gprof}
  (for @option{-pg}).  You must use this option when compiling
  the source files you want data about, and you must also use it when
  linking.
--- 18173,18189 ----
  @cindex @command{prof}
  @cindex @command{gprof}
  @opindex p
+ @opindex profile
+ @opindex fprofile
  @opindex pg
  @item -p
+ @itemx --profile
+ @itemx -fprofile
  @itemx -pg
  Generate extra code to write profile information suitable for the
! analysis program @command{prof} (for @option{-p}, @option{--profile},
! and @option{-fprofile})
! or @command{gprof}
  (for @option{-pg}).  You must use this option when compiling
  the source files you want data about, and you must also use it when
  linking.
*************** is @var{250000}.
*** 18072,18080 ****
  @cindex @command{gcov}
  @opindex coverage
  @item --coverage
  
  This option is used to compile and link code instrumented for coverage
! analysis.  The option is a synonym for @option{-fprofile-arcs}
  @option{-ftest-coverage} (when compiling) and @option{-lgcov} (when
  linking).  See the documentation for those options for more details.
  
--- 18251,18261 ----
  @cindex @command{gcov}
  @opindex coverage
  @item --coverage
+ @itemx -coverage
  
  This option is used to compile and link code instrumented for coverage
! analysis.  The options @option{-coverage} and @option{--coverage} are
! equivalent; both are a synonym for @option{-fprofile-arcs}
  @option{-ftest-coverage} (when compiling) and @option{-lgcov} (when
  linking).  See the documentation for those options for more details.
  
*************** If you want to pass an option that takes
*** 19438,19443 ****
--- 19619,19625 ----
  
  @opindex no-integrated-cpp
  @item -no-integrated-cpp
+ @itemx --no-integrated-cpp
  Perform preprocessing as a separate pass before compilation.
  By default, GCC performs preprocessing as an integrated part of
  input tokenization and parsing.
*************** Pass @var{option} as an option to the as
*** 19466,19472 ****
--- 19648,19657 ----
  contains commas, it is split into multiple options at the commas.
  
  @opindex Xassembler
+ @opindex for-assembler
  @item -Xassembler @var{option}
+ @itemx --for-assembler=@var{option}
+ @itemx --for-assembler @var{option}
  Pass @var{option} as an option to the assembler.  You can use this to
  supply system-specific assembler options that GCC does not
  recognize.
*************** absence of a C library is assumed, for e
*** 19641,19647 ****
--- 19826,19834 ----
  targets when there is indeed no C library available.
  
  @opindex nostdlib
+ @opindex no-standard-libraries
  @item -nostdlib
+ @itemx --no-standard-libraries
  Do not use the standard system startup files or libraries when linking.
  No startup files and only the libraries you specify are passed to
  the linker, and options specifying linkage of the system libraries, such as
*************** Do not implicitly link with standard C++
*** 19683,19688 ****
--- 19870,19876 ----
  @opindex entry
  @item -e @var{entry}
  @itemx --entry=@var{entry}
+ @itemx --entry @var{entry}
  
  Specify that the program entry point is @var{entry}.  The argument is
  interpreted by the linker; the GNU linker accepts either a symbol name
*************** or an address.
*** 19690,19695 ****
--- 19878,19884 ----
  
  @opindex pie
  @item -pie
+ @itemx --pie
  Produce a dynamically linked position independent executable on targets
  that support it.  For predictable results, you must also specify the same
  set of options used for compilation (@option{-fpie}, @option{-fPIE},
*************** Don't produce a dynamically linked posit
*** 19701,19706 ****
--- 19890,19896 ----
  
  @opindex static-pie
  @item -static-pie
+ @itemx --static-pie
  Produce a static position independent executable on targets that support
  it.  A static position independent executable is similar to a static
  executable, but can be loaded at any address without a dynamic linker.
*************** Remove all symbol table and relocation i
*** 19735,19746 ****
--- 19925,19938 ----
  
  @opindex static
  @item -static
+ @itemx --static
  On systems that support dynamic linking, this overrides @option{-pie}
  and prevents linking with the shared libraries.  On other systems, this
  option has no effect.
  
  @opindex shared
  @item -shared
+ @itemx --shared
  Produce a shared object which can then be linked with other objects to
  form an executable.  Not all systems support this option.  For predictable
  results, you must also specify the same set of options used for compilation
*************** libraries statically.
*** 19844,19849 ****
--- 20036,20042 ----
  
  @opindex symbolic
  @item -symbolic
+ @itemx --symbolic
  Bind references to global symbols when building a shared object.  Warn
  about any unresolved references (unless overridden by the link editor
  option @option{-Xlinker -z -Xlinker defs}).  Only a few systems support
*************** syntax than as separate arguments.  For
*** 19877,19883 ****
--- 20070,20079 ----
  this syntax for command-line options.
  
  @opindex Wl
+ @opindex for-linker
  @item -Wl,@var{option}
+ @itemx --for-linker=@var{option}
+ @itemx --for-linker @var{option}
  Pass @var{option} as an option to the linker.  If @var{option} contains
  commas, it is split into multiple options at the commas.  You can use this
  syntax to pass an argument to the option.
*************** linker.  When using the GNU linker, you
*** 19886,19901 ****
  @option{-Wl,-Map=output.map}.
  
  @opindex u
  @item -u @var{symbol}
  Pretend the symbol @var{symbol} is undefined, to force linking of
  library modules to define it.  You can use @option{-u} multiple times with
  different symbols to force loading of additional library modules.
  
  @opindex z
! @item -z @var{keyword}
! @option{-z} is passed directly on to the linker along with the keyword
! @var{keyword}. See the section in the documentation of your linker for
! permitted values and their meanings.
  @end table
  
  @node Directory Options
--- 20082,20113 ----
  @option{-Wl,-Map=output.map}.
  
  @opindex u
+ @opindex force-link
  @item -u @var{symbol}
+ @itemx --force-link=@var{symbol}
+ @itemx --force-link @var{symbol}
  Pretend the symbol @var{symbol} is undefined, to force linking of
  library modules to define it.  You can use @option{-u} multiple times with
  different symbols to force loading of additional library modules.
  
+ @opindex Tbss
+ @opindex Tdata
+ @opindex Ttext
+ @opindex N
+ @opindex n
+ @opindex t
+ @opindex Z
  @opindex z
! @item -Tbss=@var{addr}
! @itemx -Tdata=@var{addr}
! @itemx -Ttext=@var{addr}
! @itemx -N
! @itemx -n
! @itemx -t
! @itemx -Z
! @itemx -z @var{keyword}
! These options are passed through to the linker without interpretation by GCC.
! Refer to your linker documentation for the meanings of these options.
  @end table
  
  @node Directory Options
*************** by @option{-fplugin=@var{name}} instead
*** 19918,19929 ****
--- 20130,20147 ----
  to be used by the user, but only passed by the driver.
  
  @opindex L
+ @opindex library-directory
  @item -L@var{dir}
+ @itemx --library-directory=@var{dir}
+ @itemx --library-directory @var{dir}
  Add directory @var{dir} to the list of directories to be searched
  for @option{-l}.
  
  @opindex B
+ @opindex prefix
  @item -B@var{prefix}
+ @itemx --prefix=@var{prefix}
+ @itemx --prefix @var{prefix}
  This option specifies where to find the executables, libraries,
  include files, and data files of the compiler itself.
  
*************** with boot-strapping the compiler.
*** 19968,19979 ****
--- 20186,20199 ----
  
  @opindex no-canonical-prefixes
  @item -no-canonical-prefixes
+ @itemx --no-canonical-prefixes
  Do not expand any symbolic links, resolve references to @samp{/../}
  or @samp{/./}, or make the path absolute when generating a relative
  prefix.
  
  @opindex sysroot
  @item --sysroot=@var{dir}
+ @itemx --sysroot @var{dir}
  Use @var{dir} as the logical root directory for headers and libraries.
  For example, if the compiler normally searches for headers in
  @file{/usr/include} and libraries in @file{/usr/lib}, it instead
*************** can figure out the other form by either
*** 20015,20021 ****
  it.
  
  @table @gcctabopt
! @opindex fstack_reuse
  @item -fstack-reuse=@var{reuse-level}
  This option controls stack space reuse for user declared local/auto variables
  and compiler generated temporaries.  @var{reuse_level} can be @samp{all},
--- 20235,20241 ----
  it.
  
  @table @gcctabopt
! @opindex fstack-reuse
  @item -fstack-reuse=@var{reuse-level}
  This option controls stack space reuse for user declared local/auto variables
  and compiler generated temporaries.  @var{reuse_level} can be @samp{all},
*************** useful to enable legacy code to link wit
*** 20272,20279 ****
  
  @opindex fno-ident
  @opindex fident
  @item -fno-ident
! Ignore the @code{#ident} directive.
  
  @opindex finhibit-size-directive
  @item -finhibit-size-directive
--- 20492,20506 ----
  
  @opindex fno-ident
  @opindex fident
+ @opindex Qy
+ @opindex Qn
  @item -fno-ident
! @itemx -Qy
! @itemx -Qn
! @option{-fno-ident} suppresses emission of @code{.ident} assembler
! directives and causes the @code{#ident} preprocessor directive to be ignored.
! @option{-Qy} and @option{-Qn} are obsolete synonyms for @option{-fident}
! and @option{-fno-ident}, respectively.
  
  @opindex finhibit-size-directive
  @item -finhibit-size-directive
*************** may generate multiple callgraph informat
*** 20799,20806 ****
--- 21026,21036 ----
  LTO output files.
  
  @opindex d
+ @opindex dump
  @opindex fdump-rtl-@var{pass}
  @item -d@var{letters}
+ @itemx --dump=@var{letters}
+ @itemx --dump @var{letters}
  @itemx -fdump-rtl-@var{pass}
  @itemx -fdump-rtl-@var{pass}-@var{options}
  @itemx -fdump-rtl-@var{pass}-@var{options}=@var{filename}
*************** These dumps are defined but always produ
*** 21062,21096 ****
--- 21292,21333 ----
  @opindex da
  @opindex fdump-rtl-all
  @item -da
+ @itemx --dump=a
  @itemx -fdump-rtl-all
  Produce all the dumps listed above.
  
  @opindex dA
  @item -dA
+ @itemx --dump=A
  Annotate the assembler output with miscellaneous debugging information.
  
  @opindex dD
  @item -dD
+ @itemx --dump=D
  Dump all macro definitions, at the end of preprocessing, in addition to
  normal output.
  
  @opindex dH
  @item -dH
+ @itemx --dump=H
  Produce a core dump whenever an error occurs.
  
  @opindex dp
  @item -dp
+ @itemx --dump=p
  Annotate the assembler output with a comment indicating which
  pattern and alternative is used.  The length and cost of each instruction are
  also printed.
  
  @opindex dP
  @item -dP
+ @itemx --dump=P
  Dump the RTL in the assembler output as a comment before each instruction.
  Also turns on @option{-dp} annotation.
  
  @opindex dx
  @item -dx
+ @itemx --dump=x
  Just generate RTL for a function instead of compiling it.  Usually used
  with @option{-fdump-rtl-expand}.
  @end table
*************** When doing debugging dumps (see @option{
*** 21130,21135 ****
--- 21367,21377 ----
  instruction numbers for the links to the previous and next instructions
  in a sequence.
  
+ @opindex fdump-internal-locations
+ @item -fdump-internal-locations
+ Dump detailed information about GCC's internal representation of source code
+ locations.
+ 
  @opindex fdump-ipa
  @item -fdump-ipa-@var{switch}
  @itemx -fdump-ipa-@var{switch}-@var{options}
*************** The @var{string} should be different for
*** 21700,21705 ****
--- 21942,21948 ----
  
  @opindex save-temps
  @item -save-temps
+ @itemx --save-temps
  Store the usual ``temporary'' intermediate files permanently; name them
  as auxiliary output files, as specified described under
  @option{-dumpbase} and @option{-dumpdir}.
*************** For @code{dbg_cnt(tail_call)} true is re
*** 21972,21977 ****
--- 22215,22222 ----
  
  @opindex print-file-name
  @item -print-file-name=@var{library}
+ @itemx --print-file-name=@var{library}
+ @itemx --print-file-name @var{library}
  Print the full absolute name of the library file @var{library} that
  would be used when linking---and don't do anything else.  With this
  option, GCC does not compile or link anything; it just prints the
*************** file name.
*** 21979,21990 ****
--- 22224,22237 ----
  
  @opindex print-multi-directory
  @item -print-multi-directory
+ @itemx --print-multi-directory
  Print the directory name corresponding to the multilib selected by any
  other switches present in the command line.  This directory is supposed
  to exist in @env{GCC_EXEC_PREFIX}.
  
  @opindex print-multi-lib
  @item -print-multi-lib
+ @itemx --print-multi-lib
  Print the mapping from multilib directory names to compiler switches
  that enable them.  The directory name is separated from the switches by
  @samp{;}, and each switch starts with an @samp{@@} instead of the
*************** ease shell processing.
*** 21993,21998 ****
--- 22240,22246 ----
  
  @opindex print-multi-os-directory
  @item -print-multi-os-directory
+ @itemx --print-multi-os-directory
  Print the path to OS libraries for the selected
  multilib, relative to some @file{lib} subdirectory.  If OS libraries are
  present in the @file{lib} subdirectory and no multilibs are used, this is
*************** subdirectories it prints e.g.@: @file{am
*** 22003,22017 ****
--- 22251,22269 ----
  
  @opindex print-multiarch
  @item -print-multiarch
+ @itemx --print-multiarch
  Print the path to OS libraries for the selected multiarch,
  relative to some @file{lib} subdirectory.
  
  @opindex print-prog-name
  @item -print-prog-name=@var{program}
+ @itemx --print-prog-name=@var{program}
+ @itemx --print-prog-name @var{program}
  Like @option{-print-file-name}, but searches for a program such as @command{cpp}.
  
  @opindex print-libgcc-file-name
  @item -print-libgcc-file-name
+ @itemx --print-libgcc-file-name
  Same as @option{-print-file-name=libgcc.a}.
  
  This is useful when you use @option{-nostdlib} or @option{-nodefaultlibs}
*************** gcc -nostdlib @var{files}@dots{} `gcc -p
*** 22023,22028 ****
--- 22275,22281 ----
  
  @opindex print-search-dirs
  @item -print-search-dirs
+ @itemx --print-search-dirs
  Print the name of the configured installation directory and a list of
  program and library directories @command{gcc} searches---and don't do anything else.
  
*************** Don't forget the trailing @samp{/}.
*** 22036,22041 ****
--- 22289,22295 ----
  
  @opindex print-sysroot
  @item -print-sysroot
+ @itemx --print-sysroot
  Print the target sysroot directory that is used during
  compilation.  This is the target sysroot specified either at configure
  time or using the @option{--sysroot} option, possibly with an extra
*************** specified, the option prints nothing.
*** 22044,22049 ****
--- 22298,22304 ----
  
  @opindex print-sysroot-headers-suffix
  @item -print-sysroot-headers-suffix
+ @itemx --print-sysroot-headers-suffix
  Print the suffix added to the target sysroot when searching for
  headers, or give an error if the compiler is not configured with such
  a suffix---and don't do anything else.
*************** performance of the code.  Permissible va
*** 22459,22466 ****
  @samp{cortex-x2}, @samp{cortex-x3}, @samp{cortex-x4}, @samp{cortex-a510},
  @samp{cortex-a520}, @samp{cortex-a520ae}, @samp{cortex-a710}, @samp{cortex-a715},
  @samp{cortex-a720}, @samp{cortex-a720ae}, @samp{ampere1}, @samp{ampere1a},
! @samp{ampere1b}, @samp{cobalt-100}, @samp{apple-m1}, @samp{apple-m2},
! @samp{apple-m3}, @samp{apple-m4} and @samp{native}.
  
  The values @samp{cortex-a57.cortex-a53}, @samp{cortex-a72.cortex-a53},
  @samp{cortex-a73.cortex-a35}, @samp{cortex-a73.cortex-a53},
--- 22714,22721 ----
  @samp{cortex-x2}, @samp{cortex-x3}, @samp{cortex-x4}, @samp{cortex-a510},
  @samp{cortex-a520}, @samp{cortex-a520ae}, @samp{cortex-a710}, @samp{cortex-a715},
  @samp{cortex-a720}, @samp{cortex-a720ae}, @samp{ampere1}, @samp{ampere1a},
! @samp{ampere1b}, @samp{ampere1c}, @samp{cobalt-100}, @samp{apple-m1},
! @samp{apple-m2}, @samp{apple-m3}, @samp{apple-m4} and @samp{native}.
  
  The values @samp{cortex-a57.cortex-a53}, @samp{cortex-a72.cortex-a53},
  @samp{cortex-a73.cortex-a35}, @samp{cortex-a73.cortex-a53},
*************** configure XNACK.  The compiled code must
*** 23142,23147 ****
--- 23397,23407 ----
  The default is @samp{-mxnack=any} on devices that support Unified Shared
  Memory, and @samp{-mxnack=no} otherwise.
  
+ @opindex Wopenacc-dims
+ @opindex Wno-openacc-dims
+ @item -Wopenacc-dims
+ Warn about invalid OpenACC dimensions.
+ 
  @end table
  
  @node ARC Options
*************** If both arguments are zero, hotpatching
*** 33603,33608 ****
--- 33863,33882 ----
  
  This option can be overridden for individual functions with the
  @code{hotpatch} attribute.
+ 
+ @opindex mstack-protector-guard
+ @opindex mstack-protector-guard-record
+ @item -mstack-protector-guard=@var{guard}
+ @itemx -mstack-protector-guard-record
+ Generate stack protection code using canary at @var{guard}.  Supported
+ locations are @var{global} for a global canary or @var{tls} for a per-thread
+ canary in the TLS block (the default).
+ 
+ Option @option{-mstack-protector-guard-record} results in the generation of
+ section @code{__stack_protector_loc} containing pointers to all instructions
+ which load the address of the global guard.  Thus, this option has only an
+ effect in conjunction with @option{-mstack-protector-guard=global}.  The
+ intended use is for the Linux kernel.
  @end table
  
  @node SH Options
*************** compatibility with other compilers on th
*** 34539,34554 ****
  Create a shared object.
  It is recommended that @option{-symbolic} or @option{-shared} be used instead.
  
- @opindex Qy
- @item -Qy
- Identify the versions of each tool used by the compiler, in a
- @code{.ident} assembler directive in the output.
- 
- @opindex Qn
- @item -Qn
- Refrain from adding @code{.ident} directives to the output file (this is
- the default).
- 
  @opindex YP
  @item -YP,@var{dirs}
  Search the directories @var{dirs}, and no others, for libraries
--- 34813,34818 ----
*************** As @code{fixits-v1}, but columns are exp
*** 38181,38186 ****
--- 38445,38463 ----
  as per @option{-fdiagnostics-column-unit=display}.
  @end table
  
+ @vindex EXPERIMENTAL_SARIF_SOCKET
+ @item EXPERIMENTAL_SARIF_SOCKET
+ If @env{EXPERIMENTAL_SARIF_SOCKET} is set in the environment, then the
+ compiler will attempt to connect to a UNIX domain stream socket with
+ that name, and send an @code{OnSarifResult} JSON-RPC 2.0 notification to
+ it for each diagnostic that occurs, where the value of the notification
+ is a SARIF @code{result} object.
+ 
+ The compiler will fail immediately if @env{EXPERIMENTAL_SARIF_SOCKET} is
+ set and it cannot connect to it.
+ 
+ This feature is experimental and subject to change or removal without
+ notice.
  @end table
  
  @noindent
diff -Nrcpad gcc-16-20251109/gcc/doc/riscv-mcpu.texi gcc-16-20251116/gcc/doc/riscv-mcpu.texi
*** gcc-16-20251109/gcc/doc/riscv-mcpu.texi	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/doc/riscv-mcpu.texi	Sun Nov 16 22:32:55 2025
*************** by particular CPU name. Permissible valu
*** 66,69 ****
  
  @samp{xiangshan-kunminghu},
  
! @samp{mips-p8700}.
--- 66,83 ----
  
  @samp{xiangshan-kunminghu},
  
! @samp{mips-p8700},
! 
! @samp{andes-n22},
! 
! @samp{andes-n25},
! 
! @samp{andes-a25},
! 
! @samp{andes-nx25},
! 
! @samp{andes-ax25},
! 
! @samp{andes-a27},
! 
! @samp{andes-ax27}.
diff -Nrcpad gcc-16-20251109/gcc/doc/riscv-mtune.texi gcc-16-20251116/gcc/doc/riscv-mtune.texi
*** gcc-16-20251109/gcc/doc/riscv-mtune.texi	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/doc/riscv-mtune.texi	Sun Nov 16 22:32:55 2025
*************** particular CPU name.  Permissible values
*** 56,59 ****
--- 56,61 ----
  
  @samp{mips-p8700},
  
+ @samp{andes-25-series},
+ 
  and all valid options for @option{-mcpu=}.
diff -Nrcpad gcc-16-20251109/gcc/doc/sourcebuild.texi gcc-16-20251116/gcc/doc/sourcebuild.texi
*** gcc-16-20251109/gcc/doc/sourcebuild.texi	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/doc/sourcebuild.texi	Sun Nov 16 22:32:55 2025
*************** In addition to these headers and those g
*** 343,349 ****
  headers to work with GCC, some other headers may also be installed in
  @file{@var{libsubdir}/include}.  @file{config.gcc} may set
  @code{extra_headers}; this specifies additional headers under
! @file{config} to be installed on some systems.
  
  GCC installs its own version of @code{<float.h>}, from @file{ginclude/float.h}.
  This is done to cope with command-line options that change the
--- 343,352 ----
  headers to work with GCC, some other headers may also be installed in
  @file{@var{libsubdir}/include}.  @file{config.gcc} may set
  @code{extra_headers}; this specifies additional headers under
! @file{config} to be installed on some systems.  They're installed at the
! top of the @file{include} tree, unless the optional @samp{/././}
! sequence appears in the name, marking the beginning of the name under
! which the header should be installed.
  
  GCC installs its own version of @code{<float.h>}, from @file{ginclude/float.h}.
  This is done to cope with command-line options that change the
diff -Nrcpad gcc-16-20251109/gcc/ext-dce.cc gcc-16-20251116/gcc/ext-dce.cc
*** gcc-16-20251109/gcc/ext-dce.cc	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/ext-dce.cc	Sun Nov 16 22:32:55 2025
*************** ext_dce_process_sets (rtx_insn *insn, rt
*** 385,394 ****
    return skipped_dest;
  }
  
  /* INSN has a sign/zero extended source inside SET that we will
!    try to turn into a SUBREG.  */
  static void
! ext_dce_try_optimize_insn (rtx_insn *insn, rtx set)
  {
    rtx src = SET_SRC (set);
    rtx inner = XEXP (src, 0);
--- 385,470 ----
    return skipped_dest;
  }
  
+ /* INSN is a right shift and the second insn in a shift pair that is a
+    sign or zero extension (SET is the single set associated with INSN).  
+ 
+    Replace the source of SET with NEW_SRC which is a source register
+    from NEW_SRC_INSN (the left shift in the pair).  This is effectively
+    the same as the replacement we do for ZERO/SIGN extends on targets
+    that support those insns.  */
+ static void
+ ext_dce_try_optimize_rshift (rtx_insn *insn, rtx set, rtx new_src, rtx_insn *new_src_insn)
+ {
+   /* If the modes are not the same or one is a hard register, then
+      conservatively do nothing.  */
+   if (GET_MODE (SET_SRC (set)) != GET_MODE (new_src)
+       || !REG_P (XEXP (SET_SRC (set), 0))
+       || !REG_P (new_src)
+       || REGNO (XEXP (SET_SRC (set), 0)) < FIRST_PSEUDO_REGISTER
+       || REGNO (new_src) < FIRST_PSEUDO_REGISTER)
+     return;
+ 
+   if (dump_file)
+     {
+       fprintf (dump_file, "Processing insn:\n");
+       dump_insn_slim (dump_file, insn);
+       fprintf (dump_file, "Trying to simplify pattern:\n");
+       print_rtl_single (dump_file, SET_SRC (set));
+     }
+ 
+   /* We decided to turn do the optimization but allow it to be rejected for
+      bisection purposes.  */
+   if (!dbg_cnt (::ext_dce))
+     {
+       if (dump_file)
+ 	fprintf (dump_file, "Rejected due to debug counter.\n");
+       return;
+     }
+ 
+   /* Replace SET_SRC (set) with NEW_SRC.  This changes the form of INSN, so
+      force rerecognition.  We also need to force DF to rescan INSN.  */
+   SET_SRC (set) = new_src;
+   INSN_CODE (insn) = -1;
+   df_insn_rescan (insn);
+ 
+   rtx new_pattern = PATTERN (insn);
+ 
+   /* Mark the destination as changed.  */
+   rtx x = SET_DEST (set);
+   while (SUBREG_P (x) || GET_CODE (x) == ZERO_EXTRACT)
+     x = XEXP (x, 0);
+   gcc_assert (REG_P (x));
+   bitmap_set_bit (changed_pseudos, REGNO (x));
+ 
+   if (dump_file)
+     {
+       fprintf (dump_file, "Successfully transformed to:\n");
+       print_rtl_single (dump_file, new_pattern);
+       fprintf (dump_file, "\n");
+     }
+ 
+   /* INSN may have a REG_EQUAL note indicating that the value was
+      sign or zero extended.  That note is no longer valid since we've
+      just removed the extension.  Just wipe the notes.  */
+   remove_reg_equal_equiv_notes (insn, false);
+ 
+   /* If NEW_SRC died in its prior location, then we need to remove the
+      death note and move it to the new location.  */
+   rtx note = find_regno_note (new_src_insn, REG_DEAD, REGNO (new_src));
+   if (note)
+     {
+       remove_note (new_src_insn, note);
+       add_reg_note (insn, REG_DEAD, new_src);
+     }
+ }
+ 
+ 
  /* INSN has a sign/zero extended source inside SET that we will
!    try to turn into a SUBREG.  If NEW_SRC is non-null, use that
!    for the new source of INSN's set.  That scenario only happens
!    when we're optimizing a shift pair.  */
  static void
! ext_dce_try_optimize_extension (rtx_insn *insn, rtx set)
  {
    rtx src = SET_SRC (set);
    rtx inner = XEXP (src, 0);
*************** ext_dce_process_uses (rtx_insn *insn, rt
*** 712,718 ****
  		  /* DST_MASK could be zero if we had something in the SET
  		     that we couldn't handle.  */
  		  if (modify && !skipped_dest && (dst_mask & ~src_mask) == 0)
! 		    ext_dce_try_optimize_insn (insn, x);
  
  		  /* Stripping the extension here just seems wrong on multiple
  		     levels.  It's source side handling, so it seems like it
--- 788,794 ----
  		  /* DST_MASK could be zero if we had something in the SET
  		     that we couldn't handle.  */
  		  if (modify && !skipped_dest && (dst_mask & ~src_mask) == 0)
! 		    ext_dce_try_optimize_extension (insn, x);
  
  		  /* Stripping the extension here just seems wrong on multiple
  		     levels.  It's source side handling, so it seems like it
*************** ext_dce_process_uses (rtx_insn *insn, rt
*** 725,730 ****
--- 801,862 ----
  		  code = GET_CODE (src);
  		}
  
+ 	      /* Special case for (sub)targets that do not have extension
+ 		 insns (and thus use shifts).  We want to detect when we have
+ 		 a shift pair and treat the pair as-if was an extension.
+ 
+ 		 Key on the right shift and use (for now) simplistic tests
+ 		 to find the corresponding left shift.  */
+ 	      if ((code == LSHIFTRT || code == ASHIFTRT)
+ 		  && CONST_INT_P (XEXP (src, 1))
+ 		  && (INTVAL (XEXP (src, 1)) == BITS_PER_WORD - 8
+ 		      || INTVAL (XEXP (src, 1)) == BITS_PER_WORD - 16
+ 		      || INTVAL (XEXP (src, 1)) == BITS_PER_WORD - 32))
+ 		{
+ 		  /* So we have a right shift that could correspond to
+ 		     the second in a pair impementing QI, HI or SI -> DI
+ 		     extension.  See if we can find the left shift.  For
+ 		     now, just look one real instruction back.  */
+ 		  rtx_insn *prev_insn = prev_nonnote_nondebug_insn_bb (insn);
+ 
+ 		  /* The previous insn must be a left shift by the same
+ 		     amount.  */
+ 		  rtx prev_set;
+ 		  if (prev_insn
+ 		      && (prev_set = single_set (prev_insn))
+ 		      /* The destination of the left shift must be the
+ 			 source of the right shift.  */
+ 		      && SET_DEST (prev_set) == XEXP (src, 0)
+ 		      && GET_CODE (SET_SRC (prev_set)) == ASHIFT
+ 		      && CONST_INT_P (XEXP (SET_SRC (prev_set), 1))
+ 		      /* The counts must match.  */
+ 		      && (INTVAL (XEXP (src, 1))
+ 			  == INTVAL (XEXP (SET_SRC (prev_set), 1))))
+ 		    {
+ 		      unsigned HOST_WIDE_INT src_mask = GET_MODE_BITSIZE (GET_MODE (src)).to_constant ();
+ 		      src_mask -= INTVAL (XEXP (src, 1));
+ 		      src_mask = (HOST_WIDE_INT_1U << src_mask) - 1;
+ 
+ 		      /* DST_MASK has been adjusted for INSN.  We need its original value.  */
+ 		      unsigned HOST_WIDE_INT tmp_mask = 0;
+ 		      for (int i = 0; i < 4; i++)
+ 			if (bitmap_bit_p (live_tmp, 4 * rn + i))
+ 			  tmp_mask |= mask_array[i];
+ 		      tmp_mask >>= bit;
+ 
+ 		      if (modify && !skipped_dest && (tmp_mask & ~src_mask) == 0)
+ 			{
+ 			  ext_dce_try_optimize_rshift (insn, x, XEXP (SET_SRC (prev_set), 0), prev_insn);
+ 
+ 			  /* These may not strictly be necessary, but we might as well try and be
+ 			     as accurate as possible.  The RHS is now a simple REG.  */
+ 			  dst_mask = src_mask;
+ 			  src = XEXP (SET_SRC (prev_set), 0);
+ 			  code = GET_CODE (src);
+ 			}
+ 		    }
+ 		}
+ 
  	      /* Optimization is done at this point.  We just want to make
  		 sure everything that should get marked as live is marked
  		 from here onward.  */
diff -Nrcpad gcc-16-20251109/gcc/fortran/ChangeLog gcc-16-20251116/gcc/fortran/ChangeLog
*** gcc-16-20251109/gcc/fortran/ChangeLog	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/fortran/ChangeLog	Sun Nov 16 22:32:55 2025
***************
*** 1,3 ****
--- 1,92 ----
+ 2025-11-14  Yuao Ma  <c8ef@outlook.com>
+ 
+ 	* trans-expr.cc (conv_dummy_value): Add check for NULL allocatable.
+ 
+ 2025-11-14  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/117070
+ 	* array.cc (check_constructor): Allow procedures as potential
+ 	target of a procedure pointer.
+ 
+ 2025-11-13  Andrew Stubbs  <ams@codesourcery.com>
+ 	    Kwok Cheung Yeung  <kcyeung@baylibre.com>
+ 	    Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	* openmp.cc (is_predefined_allocator): Use GOMP_OMP_PREDEF_ALLOC_MAX
+ 	and GOMP_OMPX_PREDEF_ALLOC_MIN/MAX instead of hardcoded values in the
+ 	comment.
+ 
+ 2025-11-13  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	PR other/122638
+ 	* gfortran.texi (OpenMP): Fix syntax.
+ 	* intrinsic.texi (UINT): Fix syntax.
+ 
+ 2025-11-13  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/96255
+ 	* match.cc (apply_typespec_to_iterator): Call gfc_set_sym_referenced
+ 	for both new and shadow iterator symbols.
+ 
+ 2025-11-12  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	PR libgomp/119677
+ 	* intrinsic.texi (OpenMP Modules): Add omp_default_device.
+ 	* openmp.cc (gfc_resolve_omp_context_selector): Accept
+ 	omp_default_device as conforming device number.
+ 
+ 2025-11-11  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/96255
+ 	* resolve.cc (gfc_resolve_forall): Delete outer_sym
+ 
+ 2025-11-11  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/90519
+ 	* trans-expr.cc (strip_parentheses): New helper function to strip
+ 	INTRINSIC_PARENTHESES operators from expressions.
+ 	(is_runtime_conformable): Use strip_parentheses to handle cases
+ 	like a = (a) when checking for self-assignment.
+ 	(gfc_trans_assignment_1): Strip parentheses before checking if
+ 	expr2 is a variable, ensuring deep_copy is enabled for cases like
+ 	a = (a). Also strip parentheses when checking for self-assignment
+ 	to avoid use-after-free in finalization.
+ 	(gfc_trans_scalar_assign): Add comment about parentheses handling.
+ 	* class.cc (generate_finalization_wrapper): Create separate result
+ 	symbol for finalizer wrapper functions instead of self-referencing
+ 	the procedure symbol, avoiding ICE in gimplify_call_expr.
+ 
+ 2025-11-11  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 	    Steve Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/96255
+ 	* gfortran.h (gfc_forall_iterator): Add bool shadow field.
+ 	* match.cc (apply_typespec_to_iterator): New helper function to
+ 	consolidate shadow variable creation logic.
+ 	(match_forall_header): Add type-spec parsing for DO CONCURRENT
+ 	and FORALL. Create shadow variables when type-spec differs from
+ 	outer scope. Replace duplicated code with apply_typespec_to_iterator.
+ 	* resolve.cc (replace_in_expr_recursive): New function to recursively
+ 	walk expressions and replace symbol references.
+ 	(replace_in_code_recursive): New function to recursively walk code
+ 	blocks and replace symbol references.
+ 	(gfc_replace_forall_variable): New entry point for shadow variable
+ 	substitution.
+ 	(gfc_resolve_assign_in_forall): Skip many-to-one assignment warning
+ 	for DO CONCURRENT.
+ 	(gfc_count_forall_iterators): Handle both EXEC_FORALL and
+ 	EXEC_DO_CONCURRENT with assertion.
+ 	(gfc_resolve_forall): Skip F2018 obsolescence warning for DO
+ 	CONCURRENT. Fix memory allocation check. Add NULL checks for shadow
+ 	variables. Implement shadow variable walker.
+ 	(gfc_resolve_code): Set gfc_do_concurrent_flag for DO CONCURRENT
+ 	constructs to enable constraint checking.
+ 
+ 2025-11-10  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	PR other/122243
+ 	* lang.opt.urls: Regenerated.
+ 
  2025-11-08  Harald Anlauf  <anlauf@gmx.de>
  
  	PR fortran/113338
diff -Nrcpad gcc-16-20251109/gcc/fortran/array.cc gcc-16-20251116/gcc/fortran/array.cc
*** gcc-16-20251109/gcc/fortran/array.cc	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/fortran/array.cc	Sun Nov 16 22:32:55 2025
*************** check_constructor (gfc_constructor_base
*** 1644,1649 ****
--- 1644,1655 ----
        if (!e)
  	continue;
  
+       /* Allow procedures as potential target of a procedure pointer.  */
+       if (e->expr_type == EXPR_VARIABLE
+ 	  && e->ts.type == BT_PROCEDURE
+ 	  && e->symtree->n.sym->attr.flavor == FL_PROCEDURE)
+ 	continue;
+ 
        if (e->expr_type != EXPR_ARRAY)
  	{
  	  if (!(*check_function)(e))
diff -Nrcpad gcc-16-20251109/gcc/fortran/class.cc gcc-16-20251116/gcc/fortran/class.cc
*** gcc-16-20251109/gcc/fortran/class.cc	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/fortran/class.cc	Sun Nov 16 22:32:55 2025
*************** generate_finalization_wrapper (gfc_symbo
*** 1733,1742 ****
--- 1733,1744 ----
  {
    gfc_symbol *final, *array, *fini_coarray, *byte_stride, *sizes, *strides;
    gfc_symbol *ptr = NULL, *idx, *idx2, *is_contiguous, *offset, *nelem;
+   gfc_symbol *result = NULL;
    gfc_component *comp;
    gfc_namespace *sub_ns;
    gfc_code *last_code, *block;
    char *name;
+   char *result_name;
    bool finalizable_comp = false;
    gfc_expr *ancestor_wrapper = NULL, *rank;
    gfc_iterator *iter;
*************** generate_finalization_wrapper (gfc_symbo
*** 1824,1830 ****
    final->attr.function = 1;
    final->attr.pure = 0;
    final->attr.recursive = 1;
-   final->result = final;
    final->ts.type = BT_INTEGER;
    final->ts.kind = 4;
    final->attr.artificial = 1;
--- 1826,1831 ----
*************** generate_finalization_wrapper (gfc_symbo
*** 1832,1837 ****
--- 1833,1858 ----
    final->attr.if_source = IFSRC_DECL;
    if (ns->proc_name->attr.flavor == FL_MODULE)
      final->module = ns->proc_name->name;
+ 
+   /* Create a separate result symbol instead of using final->result = final.
+      Self-referencing result symbols (final->result = final) create a cycle
+      in the symbol structure that causes an ICE in gimplify_call_expr when
+      the finalizer wrapper is used as a procedure pointer initializer.  */
+   result_name = xasprintf ("__result_%s", tname);
+   if (gfc_get_symbol (result_name, sub_ns, &result) != 0)
+     gfc_internal_error ("Failed to create finalizer result symbol");
+   free (result_name);
+ 
+   if (!gfc_add_flavor (&result->attr, FL_VARIABLE, result->name,
+ 		       &gfc_current_locus)
+       || !gfc_add_result (&result->attr, result->name, &gfc_current_locus))
+     gfc_internal_error ("Failed to set finalizer result attributes");
+ 
+   result->ts = final->ts;
+   result->attr.artificial = 1;
+   gfc_set_sym_referenced (result);
+   gfc_commit_symbol (result);
+   final->result = result;
    gfc_set_sym_referenced (final);
    gfc_commit_symbol (final);
  
*************** generate_finalization_wrapper (gfc_symbo
*** 1959,1965 ****
  
    /* Set return value to 0.  */
    last_code = gfc_get_code (EXEC_ASSIGN);
!   last_code->expr1 = gfc_lval_expr_from_sym (final);
    last_code->expr2 = gfc_get_int_expr (4, NULL, 0);
    sub_ns->code = last_code;
  
--- 1980,1986 ----
  
    /* Set return value to 0.  */
    last_code = gfc_get_code (EXEC_ASSIGN);
!   last_code->expr1 = gfc_lval_expr_from_sym (result);
    last_code->expr2 = gfc_get_int_expr (4, NULL, 0);
    sub_ns->code = last_code;
  
diff -Nrcpad gcc-16-20251109/gcc/fortran/gfortran.h gcc-16-20251116/gcc/fortran/gfortran.h
*** gcc-16-20251109/gcc/fortran/gfortran.h	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/fortran/gfortran.h	Sun Nov 16 22:32:55 2025
*************** typedef struct gfc_forall_iterator
*** 3101,3106 ****
--- 3101,3108 ----
  {
    gfc_expr *var, *start, *end, *stride;
    gfc_loop_annot annot;
+   /* index-name shadows a variable from outer scope.  */
+   bool shadow;
    struct gfc_forall_iterator *next;
  }
  gfc_forall_iterator;
diff -Nrcpad gcc-16-20251109/gcc/fortran/gfortran.texi gcc-16-20251116/gcc/fortran/gfortran.texi
*** gcc-16-20251109/gcc/fortran/gfortran.texi	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/fortran/gfortran.texi	Sun Nov 16 22:32:55 2025
*************** in free form; and the @code{c$}, @code{*
*** 1839,1845 ****
  in fixed form, @command{gfortran} needs to be invoked with the
  @option{-fopenmp} option.  This option also arranges for automatic linking
  of the OpenMP runtime library.
! @xref{,,,libgomp,GNU Offloading and Multi Processing Runtime Library}.
  
  The OpenMP Fortran runtime library routines are provided both in a
  form of a Fortran 90 module named @code{omp_lib} and in a form of
--- 1839,1845 ----
  in fixed form, @command{gfortran} needs to be invoked with the
  @option{-fopenmp} option.  This option also arranges for automatic linking
  of the OpenMP runtime library.
! @xref{Top,,,libgomp,GNU Offloading and Multi Processing Runtime Library}.
  
  The OpenMP Fortran runtime library routines are provided both in a
  form of a Fortran 90 module named @code{omp_lib} and in a form of
*************** sentinels in free form; and the @code{c$
*** 1900,1906 ****
  sentinels in fixed form, @command{gfortran} needs to be invoked with
  the @option{-fopenacc} option.  This option also arranges for automatic
  linking of the OpenACC runtime library.
! @xref{,,,libgomp,GNU Offloading and Multi Processing Runtime Library}.
  
  The OpenACC Fortran runtime library routines are provided both in a
  form of a Fortran 90 module named @code{openacc} and in a form of a
--- 1900,1906 ----
  sentinels in fixed form, @command{gfortran} needs to be invoked with
  the @option{-fopenacc} option.  This option also arranges for automatic
  linking of the OpenACC runtime library.
! @xref{Top,,,libgomp,GNU Offloading and Multi Processing Runtime Library}.
  
  The OpenACC Fortran runtime library routines are provided both in a
  form of a Fortran 90 module named @code{openacc} and in a form of a
diff -Nrcpad gcc-16-20251109/gcc/fortran/intrinsic.texi gcc-16-20251116/gcc/fortran/intrinsic.texi
*** gcc-16-20251109/gcc/fortran/intrinsic.texi	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/fortran/intrinsic.texi	Sun Nov 16 22:32:55 2025
*************** Fortran 2008 and later
*** 15546,15552 ****
  @node UINT
  @section @code{UINT} -- Convert to @code{UNSIGNED} type
  @fnindex UINT
! @cindex, conversion, to unsigned
  
  @table @asis
  @item @emph{Synopsis}:
--- 15546,15552 ----
  @node UINT
  @section @code{UINT} -- Convert to @code{UNSIGNED} type
  @fnindex UINT
! @cindex conversion, to unsigned
  
  @table @asis
  @item @emph{Synopsis}:
*************** The following scalar default-integer nam
*** 16250,16255 ****
--- 16250,16256 ----
  @table @asis
  @item @code{omp_initial_device}
  @item @code{omp_invalid_device}
+ @item @code{omp_default_device}
  @end table
  
  
diff -Nrcpad gcc-16-20251109/gcc/fortran/lang.opt.urls gcc-16-20251116/gcc/fortran/lang.opt.urls
*** gcc-16-20251109/gcc/fortran/lang.opt.urls	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/fortran/lang.opt.urls	Sun Nov 16 22:32:55 2025
***************
*** 1,8 ****
  ; Autogenerated by regenerate-opt-urls.py from gcc/fortran/lang.opt and generated HTML
  
- A
- UrlSuffix(gcc/Preprocessor-Options.html#index-A)
- 
  C
  UrlSuffix(gcc/Preprocessor-Options.html#index-C) LangUrlSuffix_Fortran(gfortran/Preprocessing-Options.html#index-C)
  
--- 1,5 ----
diff -Nrcpad gcc-16-20251109/gcc/fortran/match.cc gcc-16-20251116/gcc/fortran/match.cc
*** gcc-16-20251109/gcc/fortran/match.cc	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/fortran/match.cc	Sun Nov 16 22:32:55 2025
*************** cleanup:
*** 2608,2614 ****
  }
  
  
! /* Match the header of a FORALL statement.  */
  
  static match
  match_forall_header (gfc_forall_iterator **phead, gfc_expr **mask)
--- 2608,2673 ----
  }
  
  
! /* Apply type-spec to iterator and create shadow variable if needed.  */
! 
! static void
! apply_typespec_to_iterator (gfc_forall_iterator *iter, gfc_typespec *ts,
! 			     locus *loc)
! {
!   char *name;
!   gfc_expr *v;
!   gfc_symtree *st;
! 
!   /* When a type-spec is provided in DO CONCURRENT/FORALL, F2018 19.4(6)
!      requires the index-name to have scope limited to the construct,
!      shadowing any variable with the same name from outer scope.
!      If the index-name was not previously declared, we can simply set its
!      type.  Otherwise, create a shadow variable with "_" prefix.  */
!   iter->shadow = false;
!   v = iter->var;
!   if (v->ts.type == BT_UNKNOWN)
!     {
!       /* Variable not declared in outer scope - just set the type.  */
!       v->ts.type = v->symtree->n.sym->ts.type = BT_INTEGER;
!       v->ts.kind = v->symtree->n.sym->ts.kind = ts->kind;
!       gfc_set_sym_referenced (v->symtree->n.sym);
!     }
!   else
!     {
!       /* Variable exists in outer scope - must create shadow to comply
! 	 with F2018 19.4(6) scoping rules.  */
!       name = (char *) alloca (strlen (v->symtree->name) + 2);
!       strcpy (name, "_");
!       strcat (name, v->symtree->name);
!       if (gfc_get_sym_tree (name, NULL, &st, false) != 0)
! 	gfc_internal_error ("Failed to create shadow variable symtree for "
! 			    "DO CONCURRENT type-spec at %L", loc);
! 
!       v = gfc_get_expr ();
!       v->where = gfc_current_locus;
!       v->expr_type = EXPR_VARIABLE;
!       v->ts.type = st->n.sym->ts.type = ts->type;
!       v->ts.kind = st->n.sym->ts.kind = ts->kind;
!       st->n.sym->forall_index = true;
!       v->symtree = st;
!       gfc_replace_expr (iter->var, v);
!       iter->shadow = true;
!       gfc_set_sym_referenced (st->n.sym);
!     }
! 
!   /* Convert iterator bounds to the specified type.  */
!   gfc_convert_type (iter->start, ts, 1);
!   gfc_convert_type (iter->end, ts, 1);
!   gfc_convert_type (iter->stride, ts, 1);
! }
! 
! 
! /* Match the header of a FORALL statement.  In F2008 and F2018, the form of
!    the header is:
! 
!       ([ type-spec :: ] concurrent-control-list [, scalar-mask-expr ] )
! 
!    where type-spec is INTEGER.  */
  
  static match
  match_forall_header (gfc_forall_iterator **phead, gfc_expr **mask)
*************** match_forall_header (gfc_forall_iterator
*** 2616,2621 ****
--- 2675,2683 ----
    gfc_forall_iterator *head, *tail, *new_iter;
    gfc_expr *msk;
    match m;
+   gfc_typespec ts;
+   bool seen_ts = false;
+   locus loc;
  
    gfc_gobble_whitespace ();
  
*************** match_forall_header (gfc_forall_iterator
*** 2625,2636 ****
--- 2687,2726 ----
    if (gfc_match_char ('(') != MATCH_YES)
      return MATCH_NO;
  
+   /* Check for an optional type-spec.  */
+   gfc_clear_ts (&ts);
+   loc = gfc_current_locus;
+   m = gfc_match_type_spec (&ts);
+   if (m == MATCH_YES)
+     {
+       seen_ts = (gfc_match (" ::") == MATCH_YES);
+ 
+       if (seen_ts)
+ 	{
+ 	  if (!gfc_notify_std (GFC_STD_F2008, "FORALL or DO CONCURRENT "
+ 			       "construct includes type specification "
+ 			       "at %L", &loc))
+ 	    goto cleanup;
+ 
+ 	  if (ts.type != BT_INTEGER)
+ 	    {
+ 	      gfc_error ("Type-spec at %L must be an INTEGER type", &loc);
+ 	      goto cleanup;
+ 	    }
+ 	}
+     }
+   else if (m == MATCH_ERROR)
+     goto syntax;
+ 
    m = match_forall_iterator (&new_iter);
    if (m == MATCH_ERROR)
      goto cleanup;
    if (m == MATCH_NO)
      goto syntax;
  
+   if (seen_ts)
+     apply_typespec_to_iterator (new_iter, &ts, &loc);
+ 
    head = tail = new_iter;
  
    for (;;)
*************** match_forall_header (gfc_forall_iterator
*** 2644,2649 ****
--- 2734,2742 ----
  
        if (m == MATCH_YES)
  	{
+ 	  if (seen_ts)
+ 	    apply_typespec_to_iterator (new_iter, &ts, &loc);
+ 
  	  tail->next = new_iter;
  	  tail = new_iter;
  	  continue;
diff -Nrcpad gcc-16-20251109/gcc/fortran/openmp.cc gcc-16-20251116/gcc/fortran/openmp.cc
*** gcc-16-20251109/gcc/fortran/openmp.cc	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/fortran/openmp.cc	Sun Nov 16 22:32:55 2025
*************** resolve_omp_udr_clause (gfc_omp_namelist
*** 8359,8367 ****
  }
  
  /* Assume that a constant expression in the range 1 (omp_default_mem_alloc)
!    to 8 (omp_thread_mem_alloc) range, or 200 (ompx_gnu_pinned_mem_alloc) is
!    fine.  The original symbol name is already lost during matching via
!    gfc_match_expr.  */
  static bool
  is_predefined_allocator (gfc_expr *expr)
  {
--- 8359,8367 ----
  }
  
  /* Assume that a constant expression in the range 1 (omp_default_mem_alloc)
!    to GOMP_OMP_PREDEF_ALLOC_MAX, or GOMP_OMPX_PREDEF_ALLOC_MIN to
!    GOMP_OMPX_PREDEF_ALLOC_MAX is fine.  The original symbol name is already
!    lost during matching via gfc_match_expr.  */
  static bool
  is_predefined_allocator (gfc_expr *expr)
  {
*************** gfc_resolve_omp_context_selector (gfc_om
*** 12290,12301 ****
  		continue;
  	      }
  	    /* Device number must be conforming, which includes
! 	       omp_initial_device (-1) and omp_invalid_device (-4).  */
  	    if (property_kind == OMP_TRAIT_PROPERTY_DEV_NUM_EXPR
  		&& otp->expr->expr_type == EXPR_CONSTANT
  		&& mpz_sgn (otp->expr->value.integer) < 0
  		&& mpz_cmp_si (otp->expr->value.integer, -1) != 0
! 		&& mpz_cmp_si (otp->expr->value.integer, -4) != 0)
  	      gfc_error ("property must be a conforming device number at %L",
  			 &otp->expr->where);
  	    break;
--- 12290,12303 ----
  		continue;
  	      }
  	    /* Device number must be conforming, which includes
! 	       omp_initial_device (-1), omp_invalid_device (-4),
! 	       and omp_default_device (-5).  */
  	    if (property_kind == OMP_TRAIT_PROPERTY_DEV_NUM_EXPR
  		&& otp->expr->expr_type == EXPR_CONSTANT
  		&& mpz_sgn (otp->expr->value.integer) < 0
  		&& mpz_cmp_si (otp->expr->value.integer, -1) != 0
! 		&& mpz_cmp_si (otp->expr->value.integer, -4) != 0
! 		&& mpz_cmp_si (otp->expr->value.integer, -5) != 0)
  	      gfc_error ("property must be a conforming device number at %L",
  			 &otp->expr->where);
  	    break;
diff -Nrcpad gcc-16-20251109/gcc/fortran/resolve.cc gcc-16-20251116/gcc/fortran/resolve.cc
*** gcc-16-20251109/gcc/fortran/resolve.cc	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/fortran/resolve.cc	Sun Nov 16 22:32:55 2025
*************** gfc_resolve_ref (gfc_expr *expr)
*** 6151,6157 ****
  	    }
  
  	  /* The F08 standard requires(See R425, R431, R435, and in particular
! 	     Note 6.7) that a PDT parameter reference be a scalar even if 
  	     the designator is an array."  */
  	  if (array_ref && last_pdt && last_pdt->attr.pdt_type
  	      && (ref->u.c.component->attr.pdt_kind
--- 6151,6157 ----
  	    }
  
  	  /* The F08 standard requires(See R425, R431, R435, and in particular
! 	     Note 6.7) that a PDT parameter reference be a scalar even if
  	     the designator is an array."  */
  	  if (array_ref && last_pdt && last_pdt->attr.pdt_type
  	      && (ref->u.c.component->attr.pdt_kind
*************** static void
*** 12251,12261 ****
  gfc_resolve_assign_in_forall (gfc_code *code, int nvar, gfc_expr **var_expr)
  {
    int n;
  
    for (n = 0; n < nvar; n++)
      {
-       gfc_symbol *forall_index;
- 
        forall_index = var_expr[n]->symtree->n.sym;
  
        /* Check whether the assignment target is one of the FORALL index
--- 12251,12260 ----
  gfc_resolve_assign_in_forall (gfc_code *code, int nvar, gfc_expr **var_expr)
  {
    int n;
+   gfc_symbol *forall_index;
  
    for (n = 0; n < nvar; n++)
      {
        forall_index = var_expr[n]->symtree->n.sym;
  
        /* Check whether the assignment target is one of the FORALL index
*************** gfc_resolve_assign_in_forall (gfc_code *
*** 12269,12276 ****
  	  /* If one of the FORALL index variables doesn't appear in the
  	     assignment variable, then there could be a many-to-one
  	     assignment.  Emit a warning rather than an error because the
! 	     mask could be resolving this problem.  */
! 	  if (!find_forall_index (code->expr1, forall_index, 0))
  	    gfc_warning (0, "The FORALL with index %qs is not used on the "
  			 "left side of the assignment at %L and so might "
  			 "cause multiple assignment to this object",
--- 12268,12279 ----
  	  /* If one of the FORALL index variables doesn't appear in the
  	     assignment variable, then there could be a many-to-one
  	     assignment.  Emit a warning rather than an error because the
! 	     mask could be resolving this problem.
! 	     DO NOT emit this warning for DO CONCURRENT - reduction-like
! 	     many-to-one assignments are semantically valid (formalized with
! 	     the REDUCE locality-spec in Fortran 2023).  */
! 	  if (!find_forall_index (code->expr1, forall_index, 0)
! 	      && !gfc_do_concurrent_flag)
  	    gfc_warning (0, "The FORALL with index %qs is not used on the "
  			 "left side of the assignment at %L and so might "
  			 "cause multiple assignment to this object",
*************** gfc_count_forall_iterators (gfc_code *co
*** 12390,12396 ****
    int max_iters, sub_iters, current_iters;
    gfc_forall_iterator *fa;
  
!   gcc_assert(code->op == EXEC_FORALL);
    max_iters = 0;
    current_iters = 0;
  
--- 12393,12399 ----
    int max_iters, sub_iters, current_iters;
    gfc_forall_iterator *fa;
  
!   gcc_assert (code->op == EXEC_FORALL || code->op == EXEC_DO_CONCURRENT);
    max_iters = 0;
    current_iters = 0;
  
*************** gfc_count_forall_iterators (gfc_code *co
*** 12401,12407 ****
  
    while (code)
      {
!       if (code->op == EXEC_FORALL)
          {
            sub_iters = gfc_count_forall_iterators (code);
            if (sub_iters > max_iters)
--- 12404,12410 ----
  
    while (code)
      {
!       if (code->op == EXEC_FORALL || code->op == EXEC_DO_CONCURRENT)
          {
            sub_iters = gfc_count_forall_iterators (code);
            if (sub_iters > max_iters)
*************** gfc_count_forall_iterators (gfc_code *co
*** 12414,12421 ****
  }
  
  
! /* Given a FORALL construct, first resolve the FORALL iterator, then call
!    gfc_resolve_forall_body to resolve the FORALL body.  */
  
  static void
  gfc_resolve_forall (gfc_code *code, gfc_namespace *ns, int forall_save)
--- 12417,12576 ----
  }
  
  
! /* Given a FORALL construct.
!    1) Resolve the FORALL iterator.
!    2) Check for shadow index-name(s) and update code block.
!    3) call gfc_resolve_forall_body to resolve the FORALL body.  */
! 
! /* Custom recursive expression walker that replaces symbols.
!    This ensures we visit ALL expressions including those in array subscripts.  */
! 
! static void
! replace_in_expr_recursive (gfc_expr *expr, gfc_symbol *old_sym, gfc_symtree *new_st)
! {
!   if (!expr)
!     return;
! 
!   /* Check if this is a variable reference to replace */
!   if (expr->expr_type == EXPR_VARIABLE && expr->symtree->n.sym == old_sym)
!     {
!       expr->symtree = new_st;
!       expr->ts = new_st->n.sym->ts;
!     }
! 
!   /* Walk through reference chain (array subscripts, substrings, etc.) */
!   for (gfc_ref *ref = expr->ref; ref; ref = ref->next)
!     {
!       if (ref->type == REF_ARRAY)
! 	{
! 	  gfc_array_ref *ar = &ref->u.ar;
! 	  for (int i = 0; i < ar->dimen; i++)
! 	    {
! 	      replace_in_expr_recursive (ar->start[i], old_sym, new_st);
! 	      replace_in_expr_recursive (ar->end[i], old_sym, new_st);
! 	      replace_in_expr_recursive (ar->stride[i], old_sym, new_st);
! 	    }
! 	}
!       else if (ref->type == REF_SUBSTRING)
! 	{
! 	  replace_in_expr_recursive (ref->u.ss.start, old_sym, new_st);
! 	  replace_in_expr_recursive (ref->u.ss.end, old_sym, new_st);
! 	}
!     }
! 
!   /* Walk through sub-expressions based on expression type */
!   switch (expr->expr_type)
!     {
!     case EXPR_OP:
!       replace_in_expr_recursive (expr->value.op.op1, old_sym, new_st);
!       replace_in_expr_recursive (expr->value.op.op2, old_sym, new_st);
!       break;
! 
!     case EXPR_FUNCTION:
!       for (gfc_actual_arglist *a = expr->value.function.actual; a; a = a->next)
! 	replace_in_expr_recursive (a->expr, old_sym, new_st);
!       break;
! 
!     case EXPR_ARRAY:
!     case EXPR_STRUCTURE:
!       for (gfc_constructor *c = gfc_constructor_first (expr->value.constructor);
! 	   c; c = gfc_constructor_next (c))
! 	{
! 	  replace_in_expr_recursive (c->expr, old_sym, new_st);
! 	  if (c->iterator)
! 	    {
! 	      replace_in_expr_recursive (c->iterator->start, old_sym, new_st);
! 	      replace_in_expr_recursive (c->iterator->end, old_sym, new_st);
! 	      replace_in_expr_recursive (c->iterator->step, old_sym, new_st);
! 	    }
! 	}
!       break;
! 
!     default:
!       break;
!     }
! }
! 
! 
! /* Walk code tree and replace all variable references */
! 
! static void
! replace_in_code_recursive (gfc_code *code, gfc_symbol *old_sym, gfc_symtree *new_st)
! {
!   if (!code)
!     return;
! 
!   for (gfc_code *c = code; c; c = c->next)
!     {
!       /* Replace in expressions associated with this code node */
!       replace_in_expr_recursive (c->expr1, old_sym, new_st);
!       replace_in_expr_recursive (c->expr2, old_sym, new_st);
!       replace_in_expr_recursive (c->expr3, old_sym, new_st);
!       replace_in_expr_recursive (c->expr4, old_sym, new_st);
! 
!       /* Handle special code types with additional expressions */
!       switch (c->op)
! 	{
! 	case EXEC_DO:
! 	  if (c->ext.iterator)
! 	    {
! 	      replace_in_expr_recursive (c->ext.iterator->start, old_sym, new_st);
! 	      replace_in_expr_recursive (c->ext.iterator->end, old_sym, new_st);
! 	      replace_in_expr_recursive (c->ext.iterator->step, old_sym, new_st);
! 	    }
! 	  break;
! 
! 	case EXEC_CALL:
! 	case EXEC_ASSIGN_CALL:
! 	  for (gfc_actual_arglist *a = c->ext.actual; a; a = a->next)
! 	    replace_in_expr_recursive (a->expr, old_sym, new_st);
! 	  break;
! 
! 	case EXEC_SELECT:
! 	  for (gfc_code *b = c->block; b; b = b->block)
! 	    {
! 	      for (gfc_case *cp = b->ext.block.case_list; cp; cp = cp->next)
! 		{
! 		  replace_in_expr_recursive (cp->low, old_sym, new_st);
! 		  replace_in_expr_recursive (cp->high, old_sym, new_st);
! 		}
! 	      replace_in_code_recursive (b->next, old_sym, new_st);
! 	    }
! 	  break;
! 
! 	case EXEC_FORALL:
! 	case EXEC_DO_CONCURRENT:
! 	  for (gfc_forall_iterator *fa = c->ext.concur.forall_iterator; fa; fa = fa->next)
! 	    {
! 	      replace_in_expr_recursive (fa->start, old_sym, new_st);
! 	      replace_in_expr_recursive (fa->end, old_sym, new_st);
! 	      replace_in_expr_recursive (fa->stride, old_sym, new_st);
! 	    }
! 	  /* Don't recurse into nested FORALL/DO CONCURRENT bodies here,
! 	     they'll be handled separately */
! 	  break;
! 
! 	default:
! 	  break;
! 	}
! 
!       /* Recurse into blocks */
!       if (c->block)
! 	replace_in_code_recursive (c->block->next, old_sym, new_st);
!     }
! }
! 
! 
! /* Replace all references to outer_sym with shadow_st in the given code.  */
! 
! static void
! gfc_replace_forall_variable (gfc_code **code_ptr, gfc_symbol *outer_sym,
! 			      gfc_symtree *shadow_st)
! {
!   /* Use custom recursive walker to ensure we visit ALL expressions */
!   replace_in_code_recursive (*code_ptr, outer_sym, shadow_st);
! }
! 
  
  static void
  gfc_resolve_forall (gfc_code *code, gfc_namespace *ns, int forall_save)
*************** gfc_resolve_forall (gfc_code *code, gfc_
*** 12425,12438 ****
    static int nvar = 0;
    int i, old_nvar, tmp;
    gfc_forall_iterator *fa;
  
    old_nvar = nvar;
  
!   if (!gfc_notify_std (GFC_STD_F2018_OBS, "FORALL construct at %L", &code->loc))
      return;
  
    /* Start to resolve a FORALL construct   */
!   if (forall_save == 0)
      {
        /* Count the total number of FORALL indices in the nested FORALL
           construct in order to allocate the VAR_EXPR with proper size.  */
--- 12580,12600 ----
    static int nvar = 0;
    int i, old_nvar, tmp;
    gfc_forall_iterator *fa;
+   bool shadow = false;
  
    old_nvar = nvar;
  
!   /* Only warn about obsolescent FORALL, not DO CONCURRENT */
!   if (code->op == EXEC_FORALL
!       && !gfc_notify_std (GFC_STD_F2018_OBS, "FORALL construct at %L", &code->loc))
      return;
  
    /* Start to resolve a FORALL construct   */
!   /* Allocate var_expr only at the truly outermost FORALL/DO CONCURRENT level.
!      forall_save==0 means we're not nested in a FORALL in the current scope,
!      but nvar==0 ensures we're not nested in a parent scope either (prevents
!      double allocation when FORALL is nested inside DO CONCURRENT).  */
!   if (forall_save == 0 && nvar == 0)
      {
        /* Count the total number of FORALL indices in the nested FORALL
           construct in order to allocate the VAR_EXPR with proper size.  */
*************** gfc_resolve_forall (gfc_code *code, gfc_
*** 12442,12452 ****
        var_expr = XCNEWVEC (gfc_expr *, total_var);
      }
  
!   /* The information about FORALL iterator, including FORALL indices start, end
!      and stride.  An outer FORALL indice cannot appear in start, end or stride.  */
    for (fa = code->ext.concur.forall_iterator; fa; fa = fa->next)
      {
!       /* Fortran 20008: C738 (R753).  */
        if (fa->var->ref && fa->var->ref->type == REF_ARRAY)
  	{
  	  gfc_error ("FORALL index-name at %L must be a scalar variable "
--- 12604,12615 ----
        var_expr = XCNEWVEC (gfc_expr *, total_var);
      }
  
!   /* The information about FORALL iterator, including FORALL indices start,
!      end and stride.  An outer FORALL indice cannot appear in start, end or
!      stride.  Check for a shadow index-name.  */
    for (fa = code->ext.concur.forall_iterator; fa; fa = fa->next)
      {
!       /* Fortran 2008: C738 (R753).  */
        if (fa->var->ref && fa->var->ref->type == REF_ARRAY)
  	{
  	  gfc_error ("FORALL index-name at %L must be a scalar variable "
*************** gfc_resolve_forall (gfc_code *code, gfc_
*** 12455,12468 ****
  	}
  
        /* Check if any outer FORALL index name is the same as the current
! 	 one.  */
        for (i = 0; i < nvar; i++)
  	{
! 	  if (fa->var->symtree->n.sym == var_expr[i]->symtree->n.sym)
  	    gfc_error ("An outer FORALL construct already has an index "
  			"with this name %L", &fa->var->where);
  	}
  
        /* Record the current FORALL index.  */
        var_expr[nvar] = gfc_copy_expr (fa->var);
  
--- 12618,12636 ----
  	}
  
        /* Check if any outer FORALL index name is the same as the current
! 	 one.  Skip this check if the iterator is a shadow variable (from
! 	 DO CONCURRENT type spec) which may not have a symtree yet.  */
        for (i = 0; i < nvar; i++)
  	{
! 	  if (fa->var && fa->var->symtree && var_expr[i] && var_expr[i]->symtree
! 	      && fa->var->symtree->n.sym == var_expr[i]->symtree->n.sym)
  	    gfc_error ("An outer FORALL construct already has an index "
  			"with this name %L", &fa->var->where);
  	}
  
+       if (fa->shadow)
+ 	shadow = true;
+ 
        /* Record the current FORALL index.  */
        var_expr[nvar] = gfc_copy_expr (fa->var);
  
*************** gfc_resolve_forall (gfc_code *code, gfc_
*** 12472,12477 ****
--- 12640,12686 ----
        gcc_assert (nvar <= total_var);
      }
  
+   /* Need to walk the code and replace references to the index-name with
+      references to the shadow index-name. This must be done BEFORE resolving
+      the body so that resolution uses the correct shadow variables.  */
+   if (shadow)
+     {
+       /* Walk the FORALL/DO CONCURRENT body and replace references to shadowed variables.  */
+       for (fa = code->ext.concur.forall_iterator; fa; fa = fa->next)
+ 	{
+ 	  if (fa->shadow)
+ 	    {
+ 	      gfc_symtree *shadow_st;
+ 	      const char *shadow_name_str;
+ 	      char *outer_name;
+ 
+ 	      /* fa->var now points to the shadow variable "_name".  */
+ 	      shadow_name_str = fa->var->symtree->name;
+ 	      shadow_st = fa->var->symtree;
+ 
+ 	      if (shadow_name_str[0] != '_')
+ 		gfc_internal_error ("Expected shadow variable name to start with _");
+ 
+ 	      outer_name = (char *) alloca (strlen (shadow_name_str));
+ 	      strcpy (outer_name, shadow_name_str + 1);
+ 
+ 	      /* Find the ITERATOR symbol in the current namespace.
+ 		 This is the local DO CONCURRENT variable that body expressions reference.  */
+ 	      gfc_symtree *iter_st = gfc_find_symtree (ns->sym_root, outer_name);
+ 
+ 	      if (!iter_st)
+ 		/* No iterator variable found - this shouldn't happen */
+ 		continue;
+ 
+ 	      gfc_symbol *iter_sym = iter_st->n.sym;
+ 
+ 	      /* Walk the FORALL/DO CONCURRENT body and replace all references.  */
+ 	      if (code->block && code->block->next)
+ 		gfc_replace_forall_variable (&code->block->next, iter_sym, shadow_st);
+ 	    }
+ 	}
+     }
+ 
    /* Resolve the FORALL body.  */
    gfc_resolve_forall_body (code, nvar, var_expr);
  
*************** gfc_resolve_code (gfc_code *code, gfc_na
*** 13741,13751 ****
        forall_save = forall_flag;
        do_concurrent_save = gfc_do_concurrent_flag;
  
!       if (code->op == EXEC_FORALL)
  	{
! 	  forall_flag = 1;
  	  gfc_resolve_forall (code, ns, forall_save);
! 	  forall_flag = 2;
  	}
        else if (code->op == EXEC_OMP_METADIRECTIVE)
  	for (gfc_omp_variant *variant
--- 13950,13966 ----
        forall_save = forall_flag;
        do_concurrent_save = gfc_do_concurrent_flag;
  
!       if (code->op == EXEC_FORALL || code->op == EXEC_DO_CONCURRENT)
  	{
! 	  if (code->op == EXEC_FORALL)
! 	    forall_flag = 1;
! 	  else if (code->op == EXEC_DO_CONCURRENT)
! 	    gfc_do_concurrent_flag = 1;
  	  gfc_resolve_forall (code, ns, forall_save);
! 	  if (code->op == EXEC_FORALL)
! 	    forall_flag = 2;
! 	  else if (code->op == EXEC_DO_CONCURRENT)
! 	    gfc_do_concurrent_flag = 2;
  	}
        else if (code->op == EXEC_OMP_METADIRECTIVE)
  	for (gfc_omp_variant *variant
diff -Nrcpad gcc-16-20251109/gcc/fortran/trans-expr.cc gcc-16-20251116/gcc/fortran/trans-expr.cc
*** gcc-16-20251109/gcc/fortran/trans-expr.cc	Sun Nov  9 22:32:47 2025
--- gcc-16-20251116/gcc/fortran/trans-expr.cc	Sun Nov 16 22:32:55 2025
*************** conv_dummy_value (gfc_se * parmse, gfc_e
*** 6696,6706 ****
  	  argse.want_pointer = 1;
  	  gfc_conv_expr (&argse, e);
  	  cond = fold_convert (TREE_TYPE (argse.expr), null_pointer_node);
! 	  cond = fold_build2_loc (input_location, NE_EXPR,
! 				  logical_type_node,
  				  argse.expr, cond);
! 	  vec_safe_push (optionalargs,
! 			 fold_convert (boolean_type_node, cond));
  	  /* Create "conditional temporary".  */
  	  conv_cond_temp (parmse, e, cond);
  	}
--- 6696,6709 ----
  	  argse.want_pointer = 1;
  	  gfc_conv_expr (&argse, e);
  	  cond = fold_convert (TREE_TYPE (argse.expr), null_pointer_node);
! 	  cond = fold_build2_loc (input_location, NE_EXPR, logical_type_node,
  				  argse.expr, cond);
! 	  if (e->symtree->n.sym->attr.dummy)
! 	    cond = fold_build2_loc (input_location, TRUTH_ANDIF_EXPR,
! 				    logical_type_node,
! 				    gfc_conv_expr_present (e->symtree->n.sym),
! 				    cond);
! 	  vec_safe_push (optionalargs, fold_convert (boolean_type_node, cond));
  	  /* Create "conditional temporary".  */
  	  conv_cond_temp (parmse, e, cond);
  	}
*************** gfc_trans_scalar_assign (gfc_se *lse, gf
*** 11697,11703 ****
  	}
  
        gfc_add_block_to_block (&block, &rse->pre);
!       gfc_add_block_to_block (&block, &lse->finalblock);
        gfc_add_block_to_block (&block, &lse->pre);
  
        gfc_add_modify (&block, lse->expr,
--- 11700,11716 ----
  	}
  
        gfc_add_block_to_block (&block, &rse->pre);
! 
!       /* Skip finalization for self-assignment.  */
!       if (deep_copy && lse->finalblock.head)
! 	{
! 	  tmp = build3_v (COND_EXPR, cond, build_empty_stmt (input_location),
! 			  gfc_finish_block (&lse->finalblock));
! 	  gfc_add_expr_to_block (&block, tmp);
! 	}
!       else
! 	gfc_add_block_to_block (&block, &lse->finalblock);
! 
        gfc_add_block_to_block (&block, &lse->pre);
  
        gfc_add_modify (&block, lse->expr,
*************** alloc_scalar_allocatable_for_assignment
*** 12683,12694 ****
--- 12696,12725 ----
     to make sure we do not check for reallocation unneccessarily.  */
  
  
+ /* Strip parentheses from an expression to get the underlying variable.
+    This is needed for self-assignment detection since (a) creates a
+    parentheses operator node.  */
+ 
+ static gfc_expr *
+ strip_parentheses (gfc_expr *expr)
+ {
+   while (expr->expr_type == EXPR_OP
+ 	 && expr->value.op.op == INTRINSIC_PARENTHESES)
+     expr = expr->value.op.op1;
+   return expr;
+ }
+ 
+ 
  static bool
  is_runtime_conformable (gfc_expr *expr1, gfc_expr *expr2)
  {
    gfc_actual_arglist *a;
    gfc_expr *e1, *e2;
  
+   /* Strip parentheses to handle cases like a = (a).  */
+   expr1 = strip_parentheses (expr1);
+   expr2 = strip_parentheses (expr2);
+ 
    switch (expr2->expr_type)
      {
      case EXPR_VARIABLE:
*************** gfc_trans_assignment_1 (gfc_expr * expr1
*** 13390,13399 ****
      }
  
    /* Comply with F2018 (7.5.6.3). Make sure that any finalization code is added
!      after evaluation of the rhs and before reallocation.  */
    final_expr = gfc_assignment_finalizer_call (&lse, expr1, init_flag);
!   if (final_expr && !(expr2->expr_type == EXPR_VARIABLE
! 		      && expr2->symtree->n.sym->attr.artificial))
      {
        if (lss == gfc_ss_terminator)
  	{
--- 13421,13435 ----
      }
  
    /* Comply with F2018 (7.5.6.3). Make sure that any finalization code is added
!      after evaluation of the rhs and before reallocation.
!      Skip finalization for self-assignment to avoid use-after-free.
!      Strip parentheses from both sides to handle cases like a = (a).  */
    final_expr = gfc_assignment_finalizer_call (&lse, expr1, init_flag);
!   if (final_expr
!       && gfc_dep_compare_expr (strip_parentheses (expr1),
! 			       strip_parentheses (expr2)) != 0
!       && !(strip_parentheses (expr2)->expr_type == EXPR_VARIABLE
! 	   && strip_parentheses (expr2)->symtree->n.sym->attr.artificial))
      {
        if (lss == gfc_ss_terminator)
  	{
*************** gfc_trans_assignment_1 (gfc_expr * expr1
*** 13416,13428 ****
  
    /* If nothing else works, do it the old fashioned way!  */
    if (tmp == NULL_TREE)
!     tmp
!       = gfc_trans_scalar_assign (&lse, &rse, expr1->ts,
! 				 gfc_expr_is_variable (expr2) || scalar_to_array
! 				   || expr2->expr_type == EXPR_ARRAY,
! 				 !(l_is_temp || init_flag) && dealloc,
! 				 expr1->symtree->n.sym->attr.codimension,
! 				 assoc_assign);
  
    /* Add the lse pre block to the body  */
    gfc_add_block_to_block (&body, &lse.pre);
--- 13452,13469 ----
  
    /* If nothing else works, do it the old fashioned way!  */
    if (tmp == NULL_TREE)
!     {
!       /* Strip parentheses to detect cases like a = (a) which need deep_copy.  */
!       gfc_expr *expr2_stripped = strip_parentheses (expr2);
!       tmp
! 	= gfc_trans_scalar_assign (&lse, &rse, expr1->ts,
! 				   gfc_expr_is_variable (expr2_stripped)
! 				     || scalar_to_array
! 				     || expr2->expr_type == EXPR_ARRAY,
! 				   !(l_is_temp || init_flag) && dealloc,
! 				   expr1->symtree->n.sym->attr.codimension,
! 				   assoc_assign);
!     }
  
    /* Add the lse pre block to the body  */
    gfc_add_block_to_block (&body, &lse.pre);
diff -Nrcpad gcc-16-20251109/gcc/gimple-range-cache.cc gcc-16-20251116/gcc/gimple-range-cache.cc
*** gcc-16-20251109/gcc/gimple-range-cache.cc	Sun Nov  9 22:32:48 2025
--- gcc-16-20251116/gcc/gimple-range-cache.cc	Sun Nov 16 22:32:56 2025
*************** ranger_cache::get_global_range (vrange &
*** 1108,1113 ****
--- 1108,1122 ----
    return had_global;
  }
  
+ // Consumers of NAME that have already calculated values should recalculate.
+ // Accomplished by updating the timestamp.
+ 
+ void
+ ranger_cache::update_consumers (tree name)
+ {
+   m_temporal->set_timestamp (name);
+ }
+ 
  //  Set the global range of NAME to R and give it a timestamp.
  
  void
diff -Nrcpad gcc-16-20251109/gcc/gimple-range-cache.h gcc-16-20251116/gcc/gimple-range-cache.h
*** gcc-16-20251109/gcc/gimple-range-cache.h	Sun Nov  9 22:32:48 2025
--- gcc-16-20251116/gcc/gimple-range-cache.h	Sun Nov 16 22:32:56 2025
*************** public:
*** 111,116 ****
--- 111,117 ----
    bool get_global_range (vrange &r, tree name) const;
    bool get_global_range (vrange &r, tree name, bool &current_p);
    void set_global_range (tree name, const vrange &r, bool changed = true);
+   void update_consumers (tree name);
    range_query &const_query () { return m_globals; }
  
    void propagate_updated_value (tree name, basic_block bb);
diff -Nrcpad gcc-16-20251109/gcc/gimple-range-fold.cc gcc-16-20251116/gcc/gimple-range-fold.cc
*** gcc-16-20251109/gcc/gimple-range-fold.cc	Sun Nov  9 22:32:48 2025
--- gcc-16-20251116/gcc/gimple-range-fold.cc	Sun Nov 16 22:32:56 2025
*************** fur_stmt::query_relation (tree op1, tree
*** 162,172 ****
    return m_query->relation ().query (m_stmt, op1, op2);
  }
  
! // Instantiate a stmt based fur_source with a GORI object.
! 
  
! fur_depend::fur_depend (gimple *s, range_query *q)
!   : fur_stmt (s, q)
  {
    m_depend_p = true;
  }
--- 162,171 ----
    return m_query->relation ().query (m_stmt, op1, op2);
  }
  
! // Instantiate a stmt based fur_source with a GORI object and a ranger cache.
  
! fur_depend::fur_depend (gimple *s, range_query *q, ranger_cache *c)
!   : fur_stmt (s, q), m_cache (c)
  {
    m_depend_p = true;
  }
*************** void
*** 177,182 ****
--- 176,188 ----
  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)
+     {
+       m_cache->update_consumers (op1);
+       m_cache->update_consumers (op2);
+     }
  }
  
  // Register a relation on an edge if there is an oracle.
*************** void
*** 185,190 ****
--- 191,203 ----
  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)
+     {
+       m_cache->update_consumers (op1);
+       m_cache->update_consumers (op2);
+     }
  }
  
  // This version of fur_source will pick a range up from a list of ranges
*************** fold_using_range::range_of_phi (vrange &
*** 995,1025 ****
  	}
      }
  
!   // If PHI analysis is available, see if there is an iniital range.
!   if (phi_analysis_available_p ()
!       && irange::supports_p (TREE_TYPE (phi_def)))
!     {
!       phi_group *g = (phi_analysis())[phi_def];
!       if (g && !(g->range ().varying_p ()))
! 	{
! 	  if (dump_file && (dump_flags & TDF_DETAILS))
! 	    {
! 	      fprintf (dump_file, "PHI GROUP query for ");
! 	      print_generic_expr (dump_file, phi_def, TDF_SLIM);
! 	      fprintf (dump_file, " found : ");
! 	      g->range ().dump (dump_file);
! 	      fprintf (dump_file, " and adjusted original range from :");
! 	      r.dump (dump_file);
! 	    }
! 	  r.intersect (g->range ());
! 	  if (dump_file && (dump_flags & TDF_DETAILS))
! 	    {
! 	      fprintf (dump_file, " to :");
! 	      r.dump (dump_file);
! 	      fprintf (dump_file, "\n");
! 	    }
! 	}
!     }
  
    // If SCEV is available, query if this PHI has any known values.
    if (scev_initialized_p ()
--- 1008,1016 ----
  	}
      }
  
!   // Incorporate any global value.  If a PHI analysis phase was run, there may
!   // be a restricted global range already.  Query the range with no context
!   // to get a global range.
  
    // If SCEV is available, query if this PHI has any known values.
    if (scev_initialized_p ()
diff -Nrcpad gcc-16-20251109/gcc/gimple-range-fold.h gcc-16-20251116/gcc/gimple-range-fold.h
*** gcc-16-20251109/gcc/gimple-range-fold.h	Sun Nov  9 22:32:48 2025
--- gcc-16-20251116/gcc/gimple-range-fold.h	Sun Nov 16 22:32:56 2025
*************** private:
*** 143,153 ****
  class fur_depend : public fur_stmt
  {
  public:
!   fur_depend (gimple *s, range_query *q = 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;
  };
  
  
--- 143,155 ----
  class fur_depend : public fur_stmt
  {
  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;
  };
  
  
diff -Nrcpad gcc-16-20251109/gcc/gimple-range-phi.cc gcc-16-20251116/gcc/gimple-range-phi.cc
*** gcc-16-20251109/gcc/gimple-range-phi.cc	Sun Nov  9 22:32:48 2025
--- gcc-16-20251116/gcc/gimple-range-phi.cc	Sun Nov 16 22:32:56 2025
*************** along with GCC; see the file COPYING3.
*** 37,77 ****
  #include "gimple-walk.h"
  #include "cfganal.h"
  
! // There can be only one running at a time.
! static phi_analyzer *phi_analysis_object = NULL;
! 
! // Initialize a PHI analyzer with range query Q.
! 
! void
! phi_analysis_initialize (range_query &q)
! {
!   gcc_checking_assert (!phi_analysis_object);
!   phi_analysis_object = new phi_analyzer (q);
! }
! 
! // Terminate the current PHI analyzer.  if F is non-null, dump the tables
  
  void
! phi_analysis_finalize ()
! {
!   gcc_checking_assert (phi_analysis_object);
!   delete phi_analysis_object;
!   phi_analysis_object = NULL;
! }
! 
! // Return TRUE is there is a PHI analyzer operating.
! bool
! phi_analysis_available_p ()
! {
!   return phi_analysis_object != NULL;
! }
! 
! // Return the phi analyzer object.
! 
! phi_analyzer &phi_analysis ()
  {
!   gcc_checking_assert (phi_analysis_object);
!   return *phi_analysis_object;
  }
  
  // Initialize a phi_group from another group G.
--- 37,50 ----
  #include "gimple-walk.h"
  #include "cfganal.h"
  
! // Invoke a phi analyzer.  It will process all the current PHI groups
! // and export any ranges found to set_range_info.
! // When finished, it will simply dispose of itself.
  
  void
! phi_analysis (range_query &q)
  {
!   phi_analyzer analyze (q);
  }
  
  // Initialize a phi_group from another group G.
*************** phi_group::phi_group (bitmap bm, irange
*** 96,102 ****
    gcc_checking_assert (!init_range.undefined_p ());
    gcc_checking_assert (!init_range.varying_p ());
  
!   m_modifier_op = is_modifier_p (mod, bm);
    m_group = bm;
    m_vr = init_range;
    m_modifier = mod;
--- 69,76 ----
    gcc_checking_assert (!init_range.undefined_p ());
    gcc_checking_assert (!init_range.varying_p ());
  
!   m_modifier_name = NULL_TREE;
!   m_modifier_op = is_modifier_p (mod, bm, &m_modifier_name);
    m_group = bm;
    m_vr = init_range;
    m_modifier = mod;
*************** phi_group::phi_group (bitmap bm, irange
*** 112,118 ****
  // If it could be a modifier, return which operand position (1 or 2)
  // the phi member occurs in.
  unsigned
! phi_group::is_modifier_p (gimple *s, const bitmap bm)
  {
    if (!s)
      return 0;
--- 86,92 ----
  // If it could be a modifier, return which operand position (1 or 2)
  // the phi member occurs in.
  unsigned
! phi_group::is_modifier_p (gimple *s, const bitmap bm, tree *op)
  {
    if (!s)
      return 0;
*************** phi_group::is_modifier_p (gimple *s, con
*** 123,131 ****
        tree op2 = gimple_range_ssa_p (handler.operand2 ());
        // Also disallow modifiers that have 2 ssa-names.
        if (op1 && !op2 && bitmap_bit_p (bm, SSA_NAME_VERSION (op1)))
! 	return 1;
        else if (op2 && !op1 && bitmap_bit_p (bm, SSA_NAME_VERSION (op2)))
! 	return 2;
      }
    return 0;
  }
--- 97,113 ----
        tree op2 = gimple_range_ssa_p (handler.operand2 ());
        // Also disallow modifiers that have 2 ssa-names.
        if (op1 && !op2 && bitmap_bit_p (bm, SSA_NAME_VERSION (op1)))
! 	{
! 	  if (op)
! 	    *op = op1;
! 	  return 1;
! 	}
        else if (op2 && !op1 && bitmap_bit_p (bm, SSA_NAME_VERSION (op2)))
! 	{
! 	  if (op)
! 	    *op = op2;
! 	  return 2;
! 	}
      }
    return 0;
  }
*************** phi_group::calculate_using_modifier (ran
*** 150,164 ****
--- 132,157 ----
    const unsigned num_iter = 10;
    int_range_max nv;
    int_range_max iter_value = m_vr;
+   int_range_max iter_reach;
+   // Determie the maximum range of ITER reaching here.  Often a loop
+   // bound restricts the range reaching here.  Default to VARYING.
+   if (!m_modifier_name
+       || !q->range_of_expr (iter_reach, m_modifier_name, m_modifier))
+     iter_reach.set_varying (m_vr.type ());
    for (unsigned x = 0; x < num_iter; x++)
      {
        if (!fold_range (nv, m_modifier, iter_value, q))
  	break;
+       // Ensure nothing calculate is outside outside the reaching range.
+       nv.intersect (iter_reach);
        // If union does nothing, then we have convergence.
        if (!iter_value.union_ (nv))
  	{
  	  if (iter_value.varying_p ())
  	    break;
+ 	  // The last iteration Will reach the PHI node.
+ 	  fold_range (nv, m_modifier, iter_value, q);
+ 	  iter_value.union_ (nv);
  	  m_vr = iter_value;
  	  return true;
  	}
*************** phi_group::dump (FILE *f)
*** 254,269 ****
  
  // Construct a phi analyzer which uses range_query G to pick up values.
  
! phi_analyzer::phi_analyzer (range_query &g) : m_global (g), m_phi_groups (vNULL)
  {
    m_work.create (0);
    m_work.safe_grow (20);
  
    m_tab.create (0);
! //   m_tab.safe_grow_cleared (num_ssa_names + 100);
    bitmap_obstack_initialize (&m_bitmaps);
    m_simple = BITMAP_ALLOC (&m_bitmaps);
    m_current = BITMAP_ALLOC (&m_bitmaps);
  }
  
  // Destruct a PHI analyzer.
--- 247,281 ----
  
  // Construct a phi analyzer which uses range_query G to pick up values.
  
! phi_analyzer::phi_analyzer (range_query &query) : m_phi_groups (vNULL)
  {
    m_work.create (0);
    m_work.safe_grow (20);
  
    m_tab.create (0);
!   m_tab.safe_grow_cleared (num_ssa_names + 10);
! 
    bitmap_obstack_initialize (&m_bitmaps);
    m_simple = BITMAP_ALLOC (&m_bitmaps);
    m_current = BITMAP_ALLOC (&m_bitmaps);
+ 
+   basic_block bb;
+   gphi_iterator gphi;
+ 
+   if (dump_file && (dump_flags & TDF_DETAILS))
+     fprintf (dump_file, "PHI ANALYZER : processing PHIS.\n");
+ 
+   // Process each PHI node to see if it belongs in a group with others.
+   // Then calculate an initial value for the group.
+   FOR_EACH_BB_FN (bb, cfun)
+     {
+       for (gphi = gsi_start_nonvirtual_phis (bb);
+ 	   !gsi_end_p (gphi);
+ 	   gsi_next_nonvirtual_phi (&gphi))
+ 	process_phi (gphi.phi (), query);
+     }
+   if (dump_file && (dump_flags & TDF_DETAILS))
+     fprintf (dump_file, "PHI ANALYZER : Finished processing PHIS.\n");
  }
  
  // Destruct a PHI analyzer.
*************** phi_analyzer::operator[] (tree name)
*** 308,342 ****
      return NULL;
  
    unsigned v = SSA_NAME_VERSION (name);
!   // Already been processed and not part of a group.
!   if (bitmap_bit_p (m_simple, v))
      return NULL;
- 
-   if (v >= m_tab.length () || !m_tab[v])
-     {
-       process_phi (as_a<gphi *> (SSA_NAME_DEF_STMT (name)));
-       if (bitmap_bit_p (m_simple, v))
- 	return  NULL;
-      // If m_simple bit isn't set, and process_phi didn't allocated the table
-      // no group was created, so return NULL.
-      if (v >= m_tab.length ())
-       return NULL;
-     }
    return m_tab[v];
  }
  
! // Process phi node PHI to see if it is part of a group.
  
  void
! phi_analyzer::process_phi (gphi *phi)
  {
!   gcc_checking_assert (!group (gimple_phi_result (phi)));
    bool cycle_p = true;
  
    // Start with the LHS of the PHI in the worklist.
    unsigned x;
    m_work.truncate (0);
!   m_work.safe_push (gimple_phi_result (phi));
    unsigned phi_count = 1;
    bitmap_clear (m_current);
  
--- 320,352 ----
      return NULL;
  
    unsigned v = SSA_NAME_VERSION (name);
!   if (v >= m_tab.length ())
      return NULL;
    return m_tab[v];
  }
  
! // Process phi node PHI to see if it is part of a group.  Use QUERY
! // to deteremine ranges.
  
  void
! phi_analyzer::process_phi (gphi *phi, range_query &query)
  {
!   tree def = gimple_phi_result (phi);
!   unsigned v = SSA_NAME_VERSION (def);
! 
!   gcc_checking_assert (v < m_tab.length ());
!   // If this is already on a group, or identified as a simple phi, or
!   // not an irange, do not process it.
!   if (m_tab[v] || bitmap_bit_p (m_simple, v)
!       || !irange::supports_p (TREE_TYPE (def)))
!     return;
! 
    bool cycle_p = true;
  
    // Start with the LHS of the PHI in the worklist.
    unsigned x;
    m_work.truncate (0);
!   m_work.safe_push (def);
    unsigned phi_count = 1;
    bitmap_clear (m_current);
  
*************** phi_analyzer::process_phi (gphi *phi)
*** 411,429 ****
  	}
      }
  
!   // If there are less than 2 names, just return.  This PHI may be included
!   // by another PHI, making it simple or a group of one will prevent a larger
!   // group from being formed.
!   if (phi_count < 2)
      return;
    gcc_checking_assert (!bitmap_empty_p (m_current));
  
    phi_group *g = NULL;
    if (cycle_p)
      {
!       bool valid = true;
!       gimple *mod = NULL;
!       signed init_idx = -1;
        // At this point all the PHIs have been added to the bitmap.
        // the external list needs to be checked for initial values and modifiers.
        for (x = 0; x < m_num_extern; x++)
--- 421,439 ----
  	}
      }
  
!   if (phi_count < 1)
      return;
+ 
    gcc_checking_assert (!bitmap_empty_p (m_current));
  
    phi_group *g = NULL;
+   gimple *mod = NULL;
+   bool valid = false;
+   signed init_idx = -1;
+   int_range_max init_sym;
    if (cycle_p)
      {
!       valid = true;
        // At this point all the PHIs have been added to the bitmap.
        // the external list needs to be checked for initial values and modifiers.
        for (x = 0; x < m_num_extern; x++)
*************** phi_analyzer::process_phi (gphi *phi)
*** 443,485 ****
  	    valid = false;
  	  init_idx = x;
  	}
-       int_range_max init_sym;
        // If there is an symbolic initializer as well, include it here.
        if (valid && init_idx != -1)
  	{
! 	  if (m_global.range_on_edge (init_sym, m_ext_edge[init_idx],
  				      m_external[init_idx]))
  	    init_range.union_ (init_sym);
  	  else
  	    valid = false;
  	}
!       if (valid && !init_range.varying_p () && !init_range.undefined_p ())
  	{
! 	  // Try to create a group based on m_current. If a result comes back
! 	  // with a range that isn't varying, create the group.
! 	  phi_group cyc (m_current, init_range, mod, &m_global);
! 	  if (!cyc.range ().varying_p ())
  	    {
! 	      g = new phi_group (cyc);
! 	      m_phi_groups.safe_push (g);
! 	      if (dump_file && (dump_flags & TDF_DETAILS))
  		{
! 		  fprintf (dump_file, "PHI ANALYZER : New ");
! 		  g->dump (dump_file);
! 		  fprintf (dump_file,"  Initial range was ");
! 		  init_range.dump (dump_file);
! 		  if (init_idx != -1)
! 		    {
! 		      fprintf (dump_file, " including symbolic ");
! 		      print_generic_expr (dump_file, m_external[init_idx],
! 					  TDF_SLIM);
! 		      fprintf (dump_file, " on edge %d->%d with range ",
! 			       m_ext_edge[init_idx]->src->index,
! 			       m_ext_edge[init_idx]->dest->index);
! 		      init_sym.dump (dump_file);
! 		    }
! 		  fputc ('\n',dump_file);
  		}
  	    }
  	}
      }
--- 453,503 ----
  	    valid = false;
  	  init_idx = x;
  	}
        // If there is an symbolic initializer as well, include it here.
        if (valid && init_idx != -1)
  	{
! 	  if (query.range_on_edge (init_sym, m_ext_edge[init_idx],
  				      m_external[init_idx]))
  	    init_range.union_ (init_sym);
  	  else
  	    valid = false;
  	}
!     }
!   // If there are less than 2 names, .  This PHI may be included
!   // by another PHI, making it simple or a group of one will prevent a larger
!   // group from being formed.
!   // The exception will be pattern matching:
!   //   a_1 = a_2 OP X
!   //   a_2 = PHI <const, a_1>
!   if (phi_count == 1
!       && (m_num_extern != 1 || init_range.undefined_p () || !mod))
!     valid = false;
!   if (valid && !init_range.varying_p () && !init_range.undefined_p ())
!     {
!       // Try to create a group based on m_current. If a result comes back
!       // with a range that isn't varying, create the group.
!       phi_group cyc (m_current, init_range, mod, &query);
!       if (!cyc.range ().varying_p ())
  	{
! 	  g = new phi_group (cyc);
! 	  m_phi_groups.safe_push (g);
! 	  if (dump_file && (dump_flags & TDF_DETAILS))
  	    {
! 	      fprintf (dump_file, "PHI ANALYZER : New ");
! 	      g->dump (dump_file);
! 	      fprintf (dump_file,"  Initial range was ");
! 	      init_range.dump (dump_file);
! 	      if (init_idx != -1)
  		{
! 		  fprintf (dump_file, " including symbolic ");
! 		  print_generic_expr (dump_file, m_external[init_idx],
! 				      TDF_SLIM);
! 		  fprintf (dump_file, " on edge %d->%d with range ",
! 			   m_ext_edge[init_idx]->src->index,
! 			   m_ext_edge[init_idx]->dest->index);
! 		  init_sym.dump (dump_file);
  		}
+ 	      fputc ('\n',dump_file);
  	    }
  	}
      }
*************** phi_analyzer::process_phi (gphi *phi)
*** 490,498 ****
        return;
      }
  
-   if (num_ssa_names >= m_tab.length ())
-     m_tab.safe_grow_cleared (num_ssa_names + 100);
- 
    // Now set all entries in the group to this record.
    unsigned i;
    bitmap_iterator bi;
--- 508,513 ----
*************** phi_analyzer::process_phi (gphi *phi)
*** 501,506 ****
--- 516,523 ----
        // Can't be in more than one group.
        gcc_checking_assert (m_tab[i] == NULL);
        m_tab[i] = g;
+       // Set the new range in the range query.
+       query.update_range_info (ssa_name (i), g->range ());
      }
    // Allocate a new bitmap for the next time as the original one is now part
    // of the new phi group.
diff -Nrcpad gcc-16-20251109/gcc/gimple-range-phi.h gcc-16-20251116/gcc/gimple-range-phi.h
*** gcc-16-20251109/gcc/gimple-range-phi.h	Sun Nov  9 22:32:48 2025
--- gcc-16-20251116/gcc/gimple-range-phi.h	Sun Nov 16 22:32:56 2025
*************** public:
*** 59,68 ****
  protected:
    bool calculate_using_modifier (range_query *q);
    bool refine_using_relation (relation_kind k);
!   static unsigned is_modifier_p (gimple *s, const bitmap bm);
    bitmap m_group;
    gimple *m_modifier;     // Single stmt which modifies phi group.
    unsigned m_modifier_op; // Operand of group member in modifier stmt.
    int_range_max m_vr;
    friend class phi_analyzer;
  };
--- 59,69 ----
  protected:
    bool calculate_using_modifier (range_query *q);
    bool refine_using_relation (relation_kind k);
!   static unsigned is_modifier_p (gimple *s, const bitmap bm, tree *op = NULL);
    bitmap m_group;
    gimple *m_modifier;     // Single stmt which modifies phi group.
    unsigned m_modifier_op; // Operand of group member in modifier stmt.
+   tree m_modifier_name;	  // Name of modifier operand ssa-name.
    int_range_max m_vr;
    friend class phi_analyzer;
  };
*************** public:
*** 81,88 ****
    void dump (FILE *f);
  protected:
    phi_group *group (tree name) const;
!   void process_phi (gphi *phi);
!   range_query &m_global;
    vec<tree> m_work;
  
    bitmap m_simple;       // Processed, not part of a group.
--- 82,88 ----
    void dump (FILE *f);
  protected:
    phi_group *group (tree name) const;
!   void process_phi (gphi *phi, range_query &query);
    vec<tree> m_work;
  
    bitmap m_simple;       // Processed, not part of a group.
*************** protected:
*** 92,107 ****
    bitmap_obstack m_bitmaps;
  };
  
! // These are the APIs to start and stop a phi analyzerin a SCEV like manner.
! // There can only be one operating at any given time.
! // When initialized, a range-query if provided to do lookups of values for
! // PHIs and to evaluate modifier and initial value statements.
! // To avoid problems, this should be some form of constant query, like
! // global_range_query or better yet a const_query from a functioning ranger.
  
! bool phi_analysis_available_p ();
! phi_analyzer &phi_analysis ();
! void phi_analysis_initialize (range_query &);
! void phi_analysis_finalize ();
  
  #endif // GCC_SSA_RANGE_PHI_H
--- 92,101 ----
    bitmap_obstack m_bitmaps;
  };
  
! // Invoke a phi analyzer.  It will process all the current PHI nodes and try
! // to form groups with initial values. Then export any ranges found
! // to set_range_info.  When finished, it will simply dispose of itself.
  
! void phi_analysis (range_query &q);
  
  #endif // GCC_SSA_RANGE_PHI_H
diff -Nrcpad gcc-16-20251109/gcc/gimple-range.cc gcc-16-20251116/gcc/gimple-range.cc
*** gcc-16-20251109/gcc/gimple-range.cc	Sun Nov  9 22:32:48 2025
--- gcc-16-20251116/gcc/gimple-range.cc	Sun Nov 16 22:32:56 2025
*************** gimple_ranger::range_on_edge (vrange &r,
*** 252,258 ****
  
    bool res = true;
    if (!gimple_range_ssa_p (name))
!     res = get_tree_range (r, name, NULL);
    else
      {
        range_on_exit (r, e->src, name);
--- 252,258 ----
  
    bool res = true;
    if (!gimple_range_ssa_p (name))
!     res = get_tree_range (r, name, NULL, NULL, NULL, e);
    else
      {
        range_on_exit (r, e->src, name);
*************** bool
*** 278,284 ****
  gimple_ranger::fold_range_internal (vrange &r, gimple *s, tree name)
  {
    fold_using_range f;
!   fur_depend src (s, this);
    return f.fold_stmt (r, s, src, name);
  }
  
--- 278,284 ----
  gimple_ranger::fold_range_internal (vrange &r, gimple *s, tree name)
  {
    fold_using_range f;
!   fur_depend src (s, this, &m_cache);
    return f.fold_stmt (r, s, src, name);
  }
  
*************** gimple_ranger::register_transitive_infer
*** 554,559 ****
--- 554,571 ----
      }
  }
  
+ // This is called to update ranger's concept of a global value for NAME
+ // with range R by an outside entity.
+ 
+ void
+ gimple_ranger::update_range_info (tree name, const vrange &r)
+ {
+   value_range current (TREE_TYPE (name));
+   m_cache.get_global_range (current, name);
+   if (current.intersect (r))
+     m_cache.set_global_range (name, current, true);
+ }
+ 
  // This routine will export whatever global ranges are known to GCC
  // SSA_RANGE_NAME_INFO and SSA_NAME_PTR_INFO fields.
  
*************** bool
*** 783,789 ****
  dom_ranger::range_on_edge (vrange &r, edge e, tree expr)
  {
    if (!gimple_range_ssa_p (expr))
!     return get_tree_range (r, expr, NULL);
  
    basic_block bb = e->src;
    unsigned idx;
--- 795,801 ----
  dom_ranger::range_on_edge (vrange &r, edge e, tree expr)
  {
    if (!gimple_range_ssa_p (expr))
!     return get_tree_range (r, expr, NULL, NULL, NULL, e);
  
    basic_block bb = e->src;
    unsigned idx;
diff -Nrcpad gcc-16-20251109/gcc/gimple-range.h gcc-16-20251116/gcc/gimple-range.h
*** gcc-16-20251109/gcc/gimple-range.h	Sun Nov  9 22:32:48 2025
--- gcc-16-20251116/gcc/gimple-range.h	Sun Nov 16 22:32:56 2025
*************** public:
*** 54,59 ****
--- 54,60 ----
    virtual bool range_on_edge (vrange &r, edge e, tree name) override;
    virtual bool range_on_entry (vrange &r, basic_block bb, tree name) override;
    virtual bool range_on_exit (vrange &r, basic_block bb, tree name) override;
+   virtual void update_range_info (tree, const vrange &) override;
    void export_global_ranges ();
    virtual void dump (FILE *f) override;
    void debug ();
diff -Nrcpad gcc-16-20251109/gcc/gimplify-me.cc gcc-16-20251116/gcc/gimplify-me.cc
*** gcc-16-20251109/gcc/gimplify-me.cc	Sun Nov  9 22:32:48 2025
--- gcc-16-20251116/gcc/gimplify-me.cc	Sun Nov 16 22:32:56 2025
*************** gimple_regimplify_operands (gimple *stmt
*** 233,241 ****
  	  else if (i == 2
  		   && gimple_assign_single_p (stmt)
  		   && num_ops == 2)
! 	    gimplify_expr (&op, &pre, NULL,
! 			   rhs_predicate_for (gimple_assign_lhs (stmt)),
! 			   fb_rvalue);
  	  else if (i == 2 && is_gimple_call (stmt))
  	    {
  	      if (TREE_CODE (op) == FUNCTION_DECL)
--- 233,245 ----
  	  else if (i == 2
  		   && gimple_assign_single_p (stmt)
  		   && num_ops == 2)
! 	    {
! 	      if (gimple_clobber_p (stmt))
! 		continue;
! 	      gimplify_expr (&op, &pre, NULL,
! 			     rhs_predicate_for (gimple_assign_lhs (stmt)),
! 			     fb_rvalue);
! 	    }
  	  else if (i == 2 && is_gimple_call (stmt))
  	    {
  	      if (TREE_CODE (op) == FUNCTION_DECL)
*************** gimple_regimplify_operands (gimple *stmt
*** 254,261 ****
  	{
  	  bool need_temp = false;
  
! 	  if (gimple_assign_single_p (stmt)
! 	      && num_ops == 2)
  	    gimplify_expr (gimple_assign_rhs1_ptr (stmt), &pre, NULL,
  			   rhs_predicate_for (gimple_assign_lhs (stmt)),
  			   fb_rvalue);
--- 258,266 ----
  	{
  	  bool need_temp = false;
  
! 	  if (gimple_clobber_p (stmt))
! 	    ;
! 	  else if (gimple_assign_single_p (stmt) && num_ops == 2)
  	    gimplify_expr (gimple_assign_rhs1_ptr (stmt), &pre, NULL,
  			   rhs_predicate_for (gimple_assign_lhs (stmt)),
  			   fb_rvalue);
diff -Nrcpad gcc-16-20251109/gcc/input.cc gcc-16-20251116/gcc/input.cc
*** gcc-16-20251109/gcc/input.cc	Sun Nov  9 22:32:48 2025
--- gcc-16-20251116/gcc/input.cc	Sun Nov 16 22:32:56 2025
*************** get_end_location (class line_maps *set,
*** 464,470 ****
  static void
  write_digit (FILE *stream, int digit)
  {
!   fputc ('0' + (digit % 10), stream);
  }
  
  /* Helper function for dump_location_info.
--- 464,470 ----
  static void
  write_digit (FILE *stream, int digit)
  {
!   fputc ('0' + digit, stream);
  }
  
  /* Helper function for dump_location_info.
*************** write_digit_row (FILE *stream, int inden
*** 481,487 ****
    for (int column = 1; column < max_col; column++)
      {
        location_t column_loc = loc + (location_t (column) << map->m_range_bits);
!       write_digit (stream, column_loc / divisor);
      }
    fprintf (stream, "\n");
  }
--- 481,487 ----
    for (int column = 1; column < max_col; column++)
      {
        location_t column_loc = loc + (location_t (column) << map->m_range_bits);
!       write_digit (stream, (column_loc / divisor) % 10);
      }
    fprintf (stream, "\n");
  }
diff -Nrcpad gcc-16-20251109/gcc/ipa-param-manipulation.cc gcc-16-20251116/gcc/ipa-param-manipulation.cc
*** gcc-16-20251109/gcc/ipa-param-manipulation.cc	Sun Nov  9 22:32:48 2025
--- gcc-16-20251116/gcc/ipa-param-manipulation.cc	Sun Nov 16 22:32:56 2025
*************** purge_all_uses (tree name, hash_set <tre
*** 636,641 ****
--- 636,642 ----
    imm_use_iterator imm_iter;
    gimple *stmt;
    auto_vec <tree, 4> worklist;
+   auto_vec <gimple *, 4> kill_list;
  
    worklist.safe_push (name);
    while (!worklist.is_empty ())
*************** purge_all_uses (tree name, hash_set <tre
*** 664,674 ****
  	  if (!killed_ssas->add (lhs))
  	    {
  	      worklist.safe_push (lhs);
! 	      gimple_stmt_iterator gsi = gsi_for_stmt (stmt);
! 	      gsi_remove (&gsi, true);
  	    }
  	}
      }
  }
  
  /* Modify actual arguments of a function call in statement currently belonging
--- 665,683 ----
  	  if (!killed_ssas->add (lhs))
  	    {
  	      worklist.safe_push (lhs);
! 	      kill_list.safe_push (stmt);
  	    }
  	}
      }
+ 
+   /* Remove stmts in reverse and afterwards to properly handle debug stmt
+      generation and to not interfere with immediate use iteration.  */
+   while (!kill_list.is_empty ())
+     {
+       stmt = kill_list.pop ();
+       gimple_stmt_iterator gsi = gsi_for_stmt (stmt);
+       gsi_remove (&gsi, true);
+     }
  }
  
  /* Modify actual arguments of a function call in statement currently belonging
diff -Nrcpad gcc-16-20251109/gcc/jit/ChangeLog gcc-16-20251116/gcc/jit/ChangeLog
*** gcc-16-20251109/gcc/jit/ChangeLog	Sun Nov  9 22:32:48 2025
--- gcc-16-20251116/gcc/jit/ChangeLog	Sun Nov 16 22:32:56 2025
***************
*** 1,3 ****
--- 1,9 ----
+ 2025-11-12  Antoni Boucher  <bouanto@zoho.com>
+ 
+ 	* jit-playback.cc: Support new function attributes.
+ 	* jit-recording.cc: Support new function attributes.
+ 	* libgccjit.h: Support new function attributes.
+ 
  2025-10-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
  
  	* jit-recording.cc (recording::array_type::make_debug_string,
diff -Nrcpad gcc-16-20251109/gcc/jit/jit-playback.cc gcc-16-20251116/gcc/jit/jit-playback.cc
*** gcc-16-20251109/gcc/jit/jit-playback.cc	Sun Nov  9 22:32:48 2025
--- gcc-16-20251116/gcc/jit/jit-playback.cc	Sun Nov 16 22:32:56 2025
*************** const char* fn_attribute_to_string (gcc_
*** 580,585 ****
--- 580,617 ----
        return "weak";
      case GCC_JIT_FN_ATTRIBUTE_NONNULL:
        return "nonnull";
+     case GCC_JIT_FN_ATTRIBUTE_ARM_CMSE_NONSECURE_CALL:
+       return "cmse_nonsecure_call";
+     case GCC_JIT_FN_ATTRIBUTE_ARM_CMSE_NONSECURE_ENTRY:
+       return "cmse_nonsecure_entry";
+     case GCC_JIT_FN_ATTRIBUTE_ARM_PCS:
+       return "pcs";
+     case GCC_JIT_FN_ATTRIBUTE_AVR_INTERRUPT:
+       return "interrupt";
+     case GCC_JIT_FN_ATTRIBUTE_AVR_NOBLOCK:
+       return "noblock";
+     case GCC_JIT_FN_ATTRIBUTE_AVR_SIGNAL:
+       return "signal";
+     case GCC_JIT_FN_ATTRIBUTE_GCN_AMDGPU_HSA_KERNEL:
+       return "amdgpu_hsa_kernel";
+     case GCC_JIT_FN_ATTRIBUTE_MSP430_INTERRUPT:
+       return "interrupt";
+     case GCC_JIT_FN_ATTRIBUTE_NVPTX_KERNEL:
+       return "kernel";
+     case GCC_JIT_FN_ATTRIBUTE_RISCV_INTERRUPT:
+       return "interrupt";
+     case GCC_JIT_FN_ATTRIBUTE_X86_FAST_CALL:
+       return "fastcall";
+     case GCC_JIT_FN_ATTRIBUTE_X86_INTERRUPT:
+       return "interrupt";
+     case GCC_JIT_FN_ATTRIBUTE_X86_MS_ABI:
+       return "ms_abi";
+     case GCC_JIT_FN_ATTRIBUTE_X86_STDCALL:
+       return "stdcall";
+     case GCC_JIT_FN_ATTRIBUTE_X86_SYSV_ABI:
+       return "sysv_abi";
+     case GCC_JIT_FN_ATTRIBUTE_X86_THIS_CALL:
+       return "thiscall";
      case GCC_JIT_FN_ATTRIBUTE_MAX:
        return NULL;
    }
diff -Nrcpad gcc-16-20251109/gcc/jit/jit-recording.cc gcc-16-20251116/gcc/jit/jit-recording.cc
*** gcc-16-20251109/gcc/jit/jit-recording.cc	Sun Nov  9 22:32:48 2025
--- gcc-16-20251116/gcc/jit/jit-recording.cc	Sun Nov 16 22:32:56 2025
*************** static const char * const fn_attribute_r
*** 4852,4857 ****
--- 4852,4873 ----
    "GCC_JIT_FN_ATTRIBUTE_CONST",
    "GCC_JIT_FN_ATTRIBUTE_WEAK",
    "GCC_JIT_FN_ATTRIBUTE_NONNULL",
+   "GCC_JIT_FN_ATTRIBUTE_ARM_CMSE_NONSECURE_CALL",
+   "GCC_JIT_FN_ATTRIBUTE_ARM_CMSE_NONSECURE_ENTRY",
+   "GCC_JIT_FN_ATTRIBUTE_ARM_PCS",
+   "GCC_JIT_FN_ATTRIBUTE_AVR_INTERRUPT",
+   "GCC_JIT_FN_ATTRIBUTE_AVR_NOBLOCK",
+   "GCC_JIT_FN_ATTRIBUTE_AVR_SIGNAL",
+   "GCC_JIT_FN_ATTRIBUTE_GCN_AMDGPU_HSA_KERNEL",
+   "GCC_JIT_FN_ATTRIBUTE_MSP430_INTERRUPT",
+   "GCC_JIT_FN_ATTRIBUTE_NVPTX_KERNEL",
+   "GCC_JIT_FN_ATTRIBUTE_RISCV_INTERRUPT",
+   "GCC_JIT_FN_ATTRIBUTE_X86_FAST_CALL",
+   "GCC_JIT_FN_ATTRIBUTE_X86_INTERRUPT",
+   "GCC_JIT_FN_ATTRIBUTE_X86_MS_ABI",
+   "GCC_JIT_FN_ATTRIBUTE_X86_STDCALL",
+   "GCC_JIT_FN_ATTRIBUTE_X86_SYSV_ABI",
+   "GCC_JIT_FN_ATTRIBUTE_X86_THIS_CALL",
  };
  
  std::string
diff -Nrcpad gcc-16-20251109/gcc/jit/libgccjit.h gcc-16-20251116/gcc/jit/libgccjit.h
*** gcc-16-20251109/gcc/jit/libgccjit.h	Sun Nov  9 22:32:48 2025
--- gcc-16-20251116/gcc/jit/libgccjit.h	Sun Nov 16 22:32:56 2025
*************** enum gcc_jit_fn_attribute
*** 2139,2144 ****
--- 2139,2174 ----
    GCC_JIT_FN_ATTRIBUTE_WEAK,
    GCC_JIT_FN_ATTRIBUTE_NONNULL,
  
+   // ARM attributes.
+   GCC_JIT_FN_ATTRIBUTE_ARM_CMSE_NONSECURE_CALL,
+   GCC_JIT_FN_ATTRIBUTE_ARM_CMSE_NONSECURE_ENTRY,
+   GCC_JIT_FN_ATTRIBUTE_ARM_PCS,
+ 
+   // AVR attributes.
+   GCC_JIT_FN_ATTRIBUTE_AVR_INTERRUPT,
+   GCC_JIT_FN_ATTRIBUTE_AVR_NOBLOCK,
+   GCC_JIT_FN_ATTRIBUTE_AVR_SIGNAL,
+ 
+   // AMD GCN attributes.
+   GCC_JIT_FN_ATTRIBUTE_GCN_AMDGPU_HSA_KERNEL,
+ 
+   // MSP430 attributes.
+   GCC_JIT_FN_ATTRIBUTE_MSP430_INTERRUPT,
+ 
+   // Nvidia PTX attributes.
+   GCC_JIT_FN_ATTRIBUTE_NVPTX_KERNEL,
+ 
+   // RISC-V attributes.
+   GCC_JIT_FN_ATTRIBUTE_RISCV_INTERRUPT,
+ 
+   // x86 attributes.
+   GCC_JIT_FN_ATTRIBUTE_X86_FAST_CALL,
+   GCC_JIT_FN_ATTRIBUTE_X86_INTERRUPT,
+   GCC_JIT_FN_ATTRIBUTE_X86_MS_ABI,
+   GCC_JIT_FN_ATTRIBUTE_X86_STDCALL,
+   GCC_JIT_FN_ATTRIBUTE_X86_SYSV_ABI,
+   GCC_JIT_FN_ATTRIBUTE_X86_THIS_CALL,
+ 
    /* Maximum value of this enum, should always be last. */
    GCC_JIT_FN_ATTRIBUTE_MAX,
  };
diff -Nrcpad gcc-16-20251109/gcc/lra-constraints.cc gcc-16-20251116/gcc/lra-constraints.cc
*** gcc-16-20251109/gcc/lra-constraints.cc	Sun Nov  9 22:32:48 2025
--- gcc-16-20251116/gcc/lra-constraints.cc	Sun Nov 16 22:32:56 2025
*************** update_equiv (int regno)
*** 523,533 ****
  {
    rtx x;
  
-   /* If REGNO is beyond the length of the equivalence array structure,
-      then there's nothing to update.  */
-   if (regno >= ira_reg_equiv_len)
-     return;
- 
    if ((x = ira_reg_equiv[regno].memory) != NULL_RTX)
      ira_reg_equiv[regno].memory
        = simplify_replace_fn_rtx (x, NULL_RTX, loc_equivalence_callback,
--- 523,528 ----
*************** lra_constraints (bool first_p)
*** 5404,5409 ****
--- 5399,5408 ----
       some pseudos during elimination.  */
    lra_eliminate (false, first_p);
    auto_bitmap equiv_insn_bitmap (&reg_obstack);
+ 
+   /* Register elimination can create new pseudos via the addptr pattern,
+      so make sure the equivalency tables are resized appropriately.  */
+   ira_expand_reg_equiv ();
    for (i = FIRST_PSEUDO_REGISTER; i < new_regno_start; i++)
      if (lra_reg_info[i].nrefs != 0)
        {
diff -Nrcpad gcc-16-20251109/gcc/lto/ChangeLog gcc-16-20251116/gcc/lto/ChangeLog
*** gcc-16-20251109/gcc/lto/ChangeLog	Sun Nov  9 22:32:48 2025
--- gcc-16-20251116/gcc/lto/ChangeLog	Sun Nov 16 22:32:56 2025
***************
*** 1,3 ****
--- 1,9 ----
+ 2025-11-13  Michal Jires  <mjires@suse.cz>
+ 
+ 	PR lto/122603
+ 	* lto-partition.cc (split_partition_into_nodes): Null check for
+ 	possible asm_node.
+ 
  2025-11-04  Siddhesh Poyarekar  <siddhesh@gotplt.org>
  
  	PR lto/122515
diff -Nrcpad gcc-16-20251109/gcc/lto/lto-partition.cc gcc-16-20251116/gcc/lto/lto-partition.cc
*** gcc-16-20251109/gcc/lto/lto-partition.cc	Sun Nov  9 22:32:48 2025
--- gcc-16-20251116/gcc/lto/lto-partition.cc	Sun Nov 16 22:32:56 2025
*************** split_partition_into_nodes (ltrans_parti
*** 548,555 ****
        toplevel_node *node = lsei_node (lsei);
  
        symtab_node *snode = dyn_cast <symtab_node*> (node);
!       if (snode->get_partitioning_class () != SYMBOL_PARTITION
! 	  || symbol_partitioned_p (snode))
  	continue;
  
        ltrans_partition new_part = new_partition_no_push (part->name);
--- 548,555 ----
        toplevel_node *node = lsei_node (lsei);
  
        symtab_node *snode = dyn_cast <symtab_node*> (node);
!       if (snode && (snode->get_partitioning_class () != SYMBOL_PARTITION
! 		    || symbol_partitioned_p (snode)))
  	continue;
  
        ltrans_partition new_part = new_partition_no_push (part->name);
diff -Nrcpad gcc-16-20251109/gcc/match.pd gcc-16-20251116/gcc/match.pd
*** gcc-16-20251109/gcc/match.pd	Sun Nov  9 22:32:48 2025
--- gcc-16-20251116/gcc/match.pd	Sun Nov 16 22:32:57 2025
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 1339,1344 ****
--- 1339,1376 ----
      (if (INTEGRAL_TYPE_P (type))
        (rshift (op @0 @2) @1))))
  
+ /* (y << x) == x -> 0 when y != 0.  */
+ (simplify
+   (eq:c (nop_convert1? (lshift @0 @1)) (nop_convert2? @1))
+   (if (INTEGRAL_TYPE_P (TREE_TYPE (@1))
+        && tree_expr_nonzero_p (@0))
+    { build_zero_cst (type); }))
+ 
+ /* (y << x) {<,<=} x -> 0 when y > 0.  */
+ (for cmp (lt le)
+   (simplify
+     (cmp:c (nop_convert1? (lshift @0 @1)) (nop_convert2? @1))
+     (if (INTEGRAL_TYPE_P (TREE_TYPE (@1))
+ 	 && tree_expr_nonzero_p (@0)
+ 	 && tree_expr_nonnegative_p (@0))
+      { build_zero_cst (type); })))
+ 
+ /* (y << x) != x -> 1 when y != 0.  */
+ (simplify
+   (ne:c (nop_convert1? (lshift @0 @1)) (nop_convert2? @1))
+   (if (INTEGRAL_TYPE_P (TREE_TYPE (@1))
+        && tree_expr_nonzero_p (@0))
+    { build_one_cst (type); }))
+ 
+ /* (y << x) {>,>=} x -> 1 when y > 0.  */
+ (for cmp (gt ge)
+   (simplify
+     (cmp:c (nop_convert1? (lshift @0 @1)) (nop_convert2? @1))
+     (if (INTEGRAL_TYPE_P (TREE_TYPE (@1))
+ 	 && tree_expr_nonzero_p (@0)
+ 	 && tree_expr_nonnegative_p (@0))
+      { build_one_cst (type); })))
+ 
  /* Fold (1 << (C - x)) where C = precision(type) - 1
     into ((1 << C) >> x). */
  (simplify
diff -Nrcpad gcc-16-20251109/gcc/optabs-query.cc gcc-16-20251116/gcc/optabs-query.cc
*** gcc-16-20251109/gcc/optabs-query.cc	Sun Nov  9 22:32:48 2025
--- gcc-16-20251116/gcc/optabs-query.cc	Sun Nov 16 22:32:57 2025
*************** can_conditionally_move_p (machine_mode m
*** 358,364 ****
  opt_machine_mode
  qimode_for_vec_perm (machine_mode mode)
  {
!   if (GET_MODE_INNER (mode) != QImode)
      return related_vector_mode (mode, QImode, GET_MODE_SIZE (mode));
    return opt_machine_mode ();
  }
--- 358,366 ----
  opt_machine_mode
  qimode_for_vec_perm (machine_mode mode)
  {
!   if (GET_MODE_INNER (mode) != QImode
!       && multiple_p (GET_MODE_PRECISION (GET_MODE_INNER (mode)),
! 		     GET_MODE_PRECISION (QImode)))
      return related_vector_mode (mode, QImode, GET_MODE_SIZE (mode));
    return opt_machine_mode ();
  }
diff -Nrcpad gcc-16-20251109/gcc/params.opt gcc-16-20251116/gcc/params.opt
*** gcc-16-20251109/gcc/params.opt	Sun Nov  9 22:32:48 2025
--- gcc-16-20251116/gcc/params.opt	Sun Nov 16 22:32:57 2025
*************** Maximum number of instruction distance t
*** 1095,1104 ****
  Common Joined UInteger Var(param_switch_conversion_branch_ratio) Init(8) IntegerRange(1, 65536) Param Optimization
  The maximum ratio between array size and switch branches for a switch conversion to take place.
  
- -param=switch-lower-slow-alg-max-cases=
- Common Joined UInteger Var(param_switch_lower_slow_alg_max_cases) Init(1000) IntegerRange(1, 1000000000) Param Optimization
- Maximum number of cases for slow switch lowering algorithms to be used.
- 
  -param=modref-max-bases=
  Common Joined UInteger Var(param_modref_max_bases) Init(32) Param Optimization
  Maximum number of bases stored in each modref tree.
--- 1095,1100 ----
diff -Nrcpad gcc-16-20251109/gcc/po/ChangeLog gcc-16-20251116/gcc/po/ChangeLog
*** gcc-16-20251109/gcc/po/ChangeLog	Sun Nov  9 22:32:48 2025
--- gcc-16-20251116/gcc/po/ChangeLog	Sun Nov 16 22:32:57 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-11-10  Joseph Myers  <josmyers@redhat.com>
+ 
+ 	* es.po: Update.
+ 
  2025-08-24  Joseph Myers  <josmyers@redhat.com>
  
  	* de.po: Update.
diff -Nrcpad gcc-16-20251109/gcc/po/es.po gcc-16-20251116/gcc/po/es.po
*** gcc-16-20251109/gcc/po/es.po	Sun Nov  9 22:32:48 2025
--- gcc-16-20251116/gcc/po/es.po	Sun Nov 16 22:32:57 2025
***************
*** 17,22 ****
--- 17,24 ----
  # cse                - TBD
  # demangled          - mutilado
  # dereference        - desreferencia
+ # dylib              - TBD
+ # exploded graph     - grafo descompuesto
  # hardware           - hardware
  # hotness            - calentura
  # immediate          - inmediato
***************
*** 40,49 ****
  #
  msgid ""
  msgstr ""
! "Project-Id-Version: gcc 15.1.0\n"
  "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n"
  "POT-Creation-Date: 2025-08-01 17:58+0000\n"
! "PO-Revision-Date: 2025-06-12 23:08+0200\n"
  "Last-Translator: Antonio Ceballos Roa <aceballos@gmail.com>\n"
  "Language-Team: Spanish <es@tp.org.es>\n"
  "Language: es\n"
--- 42,51 ----
  #
  msgid ""
  msgstr ""
! "Project-Id-Version: gcc 15.2.0\n"
  "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n"
  "POT-Creation-Date: 2025-08-01 17:58+0000\n"
! "PO-Revision-Date: 2025-11-08 22:02+0100\n"
  "Last-Translator: Antonio Ceballos Roa <aceballos@gmail.com>\n"
  "Language-Team: Spanish <es@tp.org.es>\n"
  "Language: es\n"
*************** msgid "call is unlikely and code size wo
*** 110,119 ****
  msgstr "la llamada es poco probable y el tamaño del código podría crecer"
  
  #: cif-code.def:88
- #, fuzzy
- #| msgid "call is unlikely and code size would grow"
  msgid "call is considered never executed and code size would grow"
! msgstr "la llamada es poco probable y el tamaño del código podría crecer"
  
  #: cif-code.def:92
  msgid "function not declared inline and code size would grow"
--- 112,119 ----
  msgstr "la llamada es poco probable y el tamaño del código podría crecer"
  
  #: cif-code.def:88
  msgid "call is considered never executed and code size would grow"
! msgstr "la llamada se considera nunca ejecutada y el tamaño del código podría crecer"
  
  #: cif-code.def:92
  msgid "function not declared inline and code size would grow"
*************** msgid "callee refers to comdat-local sym
*** 156,169 ****
  msgstr ""
  
  #: cif-code.def:134
- #, fuzzy
- #| msgid "function attribute mismatch"
  msgid "sanitizer function attribute mismatch"
! msgstr "no coincide el atributo de función"
  
  #: cif-code.def:139
  msgid "function has external linkage when the user requests only inlining static for live patching"
! msgstr ""
  
  #: cif-code.def:144
  msgid "unreachable"
--- 156,167 ----
  msgstr ""
  
  #: cif-code.def:134
  msgid "sanitizer function attribute mismatch"
! msgstr "discordancia en atributo de función sanadora"
  
  #: cif-code.def:139
  msgid "function has external linkage when the user requests only inlining static for live patching"
! msgstr "la función tiene enlazamiento externo cuando el usuario solo solicita estáticos en línea para parcheo en vivo"
  
  #: cif-code.def:144
  msgid "unreachable"
*************** msgid "-gz is not supported in this conf
*** 283,292 ****
  msgstr "no se admite -gz en esta configuración"
  
  #: gcc.cc:865
- #, fuzzy
- #| msgid "-gz is not supported in this configuration"
  msgid "-gz=zstd is not supported in this configuration"
! msgstr "no se admite -gz en esta configuración"
  
  #: gcc.cc:1099
  msgid "-fuse-linker-plugin is not supported in this configuration"
--- 281,288 ----
  msgstr "no se admite -gz en esta configuración"
  
  #: gcc.cc:865
  msgid "-gz=zstd is not supported in this configuration"
! msgstr "no se admite -gz=zstd en esta configuración"
  
  #: gcc.cc:1099
  msgid "-fuse-linker-plugin is not supported in this configuration"
*************** msgid "cannot specify -static with -fsan
*** 297,306 ****
  msgstr "no se puede especificar -static con -fsanitize=address"
  
  #: gcc.cc:1117
- #, fuzzy
- #| msgid "cannot specify -static with -fsanitize=address"
  msgid "cannot specify -static with -fsanitize=hwaddress"
! msgstr "no se puede especificar -static con -fsanitize=address"
  
  #: gcc.cc:1119
  msgid "cannot specify -static with -fsanitize=thread"
--- 293,300 ----
  msgstr "no se puede especificar -static con -fsanitize=address"
  
  #: gcc.cc:1117
  msgid "cannot specify -static with -fsanitize=hwaddress"
! msgstr "no se puede especificar -static con -fsanitize=hwaddress"
  
  #: gcc.cc:1119
  msgid "cannot specify -static with -fsanitize=thread"
*************** msgid "-E or -x required when input is f
*** 327,336 ****
  msgstr "se requiere -E ó -x cuando la entrada es de entrada estándar"
  
  #: config/darwin.h:153
- #, fuzzy
- #| msgid " conflicting code gen style switches are used"
  msgid "conflicting code generation switches"
! msgstr " se usan interruptores de estilo de generación de código en conflicto"
  
  #: config/darwin.h:158
  msgid "-bundle_loader not allowed with -dynamiclib"
--- 321,328 ----
  msgstr "se requiere -E ó -x cuando la entrada es de entrada estándar"
  
  #: config/darwin.h:153
  msgid "conflicting code generation switches"
! msgstr "conflicto en las opciones de generación de código"
  
  #: config/darwin.h:158
  msgid "-bundle_loader not allowed with -dynamiclib"
*************** msgid "-private_bundle not allowed with
*** 349,372 ****
  msgstr "no se permite -private_bundle con -dynamiclib"
  
  #: config/darwin.h:179
- #, fuzzy
- #| msgid "-current_version only allowed with -dynamiclib"
  msgid "-compatibility_version only allowed with -dynamiclib"
! msgstr "sólo se permite -current_version con -dynamiclib"
  
  #: config/darwin.h:181
  msgid "-current_version only allowed with -dynamiclib"
! msgstr "sólo se permite -current_version con -dynamiclib"
  
  #: config/darwin.h:183
  msgid "-install_name only allowed with -dynamiclib"
! msgstr "sólo se permite -install_name con -dynamiclib"
  
  #: config/darwin.h:194
- #, fuzzy
- #| msgid "-bundle not allowed with -dynamiclib"
  msgid "-bundle not allowed with -shared"
! msgstr "no se permite -bundle con -dynamiclib"
  
  #: config/darwin.h:195
  msgid "-bundle not allowed with -dynamiclib"
--- 341,360 ----
  msgstr "no se permite -private_bundle con -dynamiclib"
  
  #: config/darwin.h:179
  msgid "-compatibility_version only allowed with -dynamiclib"
! msgstr "-compatibility_version solo se permite con -dynamiclib"
  
  #: config/darwin.h:181
  msgid "-current_version only allowed with -dynamiclib"
! msgstr "-current_version solo se permite con -dynamiclib"
  
  #: config/darwin.h:183
  msgid "-install_name only allowed with -dynamiclib"
! msgstr "-install_name solo se permite con -dynamiclib"
  
  #: config/darwin.h:194
  msgid "-bundle not allowed with -shared"
! msgstr "no se permite -bundle con -shared"
  
  #: config/darwin.h:195
  msgid "-bundle not allowed with -dynamiclib"
*************** msgid "this target is little-endian"
*** 464,479 ****
  msgstr "este destino es little endian"
  
  #: config/msp430/msp430.h:90
- #, fuzzy
- #| msgid "-mtoc-fusion requires medium/large code model"
  msgid "-mcode-region requires the large memory model (-mlarge)"
! msgstr "-mtoc-fusion requiere modelo de código medio/grande"
  
  #: config/msp430/msp430.h:92
- #, fuzzy
- #| msgid "-mtoc-fusion requires medium/large code model"
  msgid "-mdata-region requires the large memory model (-mlarge)"
! msgstr "-mtoc-fusion requiere modelo de código medio/grande"
  
  #: config/pa/pa-hpux11.h:134 config/pa/pa-hpux11.h:137 config/pa/pa64-hpux.h:29
  #: config/pa/pa64-hpux.h:32 config/pa/pa64-hpux.h:41 config/pa/pa64-hpux.h:44
--- 452,463 ----
  msgstr "este destino es little endian"
  
  #: config/msp430/msp430.h:90
  msgid "-mcode-region requires the large memory model (-mlarge)"
! msgstr "-mcode-region requiere el modelo de memoria grande (-mlarge)"
  
  #: config/msp430/msp430.h:92
  msgid "-mdata-region requires the large memory model (-mlarge)"
! msgstr "-mdata-region requiere el modelo de memoria grande (-mlarge)"
  
  #: config/pa/pa-hpux11.h:134 config/pa/pa-hpux11.h:137 config/pa/pa64-hpux.h:29
  #: config/pa/pa64-hpux.h:32 config/pa/pa64-hpux.h:41 config/pa/pa64-hpux.h:44
*************** msgid "Warn about possibly incorrect sub
*** 623,632 ****
  msgstr "Avisa sobre la posibilidad de subíndices incorrectos en bucles do"
  
  #: fortran/lang.opt:246
! #, fuzzy, no-c-format
! #| msgid "Warn in case profiles in -fprofile-use do not match."
  msgid "Warn when arguments of external procedures do not match."
! msgstr "Avisa en perfiles case en -fprofile-use que no coincidan."
  
  #: fortran/lang.opt:254
  #, no-c-format
--- 607,615 ----
  msgstr "Avisa sobre la posibilidad de subíndices incorrectos en bucles do"
  
  #: fortran/lang.opt:246
! #, no-c-format
  msgid "Warn when arguments of external procedures do not match."
! msgstr "Avisa cuando los argumentos de procedimientos externos no concuerdan."
  
  #: fortran/lang.opt:254
  #, no-c-format
*************** msgid "Disable preprocessing."
*** 739,748 ****
  msgstr "Desactiva el preprocesamiento."
  
  #: fortran/lang.opt:386
! #, fuzzy, no-c-format
! #| msgid "Argument mismatch for the overriding procedure '%s' at %L: %s"
  msgid "Accept argument mismatches in procedure calls."
! msgstr "La interfaz no coincide en el procedimiento '%s' que sobreescribe en %L: %s"
  
  #: fortran/lang.opt:390
  #, no-c-format
--- 722,730 ----
  msgstr "Desactiva el preprocesamiento."
  
  #: fortran/lang.opt:386
! #, no-c-format
  msgid "Accept argument mismatches in procedure calls."
! msgstr "Acepta discordancia de argumentos en llamadas a procedimientos."
  
  #: fortran/lang.opt:390
  #, no-c-format
*************** msgid "Produce a warning at runtime if a
*** 790,799 ****
  msgstr "Produce un aviso en tiempo de ejecución si se ha creado una matriz temporal para un argumento de procedimiento."
  
  #: fortran/lang.opt:437
! #, fuzzy, no-c-format
! #| msgid "-fconvert=<big-endian|little-endian|native|swap> The endianness used for unformatted files."
  msgid "-fconvert=<big-endian|little-endian|native|swap|r16_ieee|r16_ibm>\tThe endianness used for unformatted files."
! msgstr "-fconvert=<big-endian|little-endian|native|swap> El endianness empleado en ficheros sin formato."
  
  #: fortran/lang.opt:462
  #, no-c-format
--- 772,780 ----
  msgstr "Produce un aviso en tiempo de ejecución si se ha creado una matriz temporal para un argumento de procedimiento."
  
  #: fortran/lang.opt:437
! #, no-c-format
  msgid "-fconvert=<big-endian|little-endian|native|swap|r16_ieee|r16_ibm>\tThe endianness used for unformatted files."
! msgstr "-fconvert=<big-endian|little-endian|native|swap|r16_ieee|r16_ibm>\tEl endianness empleado en ficheros sin formato."
  
  #: fortran/lang.opt:462
  #, no-c-format
*************** msgid "Generate C prototypes from BIND(C
*** 806,815 ****
  msgstr "Genera prototipos C a partir de declaraciones BIND(C)."
  
  #: fortran/lang.opt:470
! #, fuzzy, no-c-format
! #| msgid "Generate C prototypes from BIND(C) declarations."
  msgid "Generate C prototypes from non-BIND(C) external procedure definitions."
! msgstr "Genera prototipos C a partir de declaraciones BIND(C)."
  
  #: fortran/lang.opt:474
  #, no-c-format
--- 787,795 ----
  msgstr "Genera prototipos C a partir de declaraciones BIND(C)."
  
  #: fortran/lang.opt:470
! #, no-c-format
  msgid "Generate C prototypes from non-BIND(C) external procedure definitions."
! msgstr "Genera prototipos C a partir de definiciones de procedimientos externos no BIND(C)."
  
  #: fortran/lang.opt:474
  #, no-c-format
*************** msgstr "Trata las líneas con 'D' en la
*** 824,830 ****
  #: fortran/lang.opt:482
  #, no-c-format
  msgid "Issue debug information for compiler-generated auxiliary variables."
! msgstr ""
  
  #: fortran/lang.opt:486
  #, no-c-format
--- 804,810 ----
  #: fortran/lang.opt:482
  #, no-c-format
  msgid "Issue debug information for compiler-generated auxiliary variables."
! msgstr "Emite información de depuración para variables auxiliares generadas por el compilador."
  
  #: fortran/lang.opt:486
  #, no-c-format
*************** msgid "Enable all DEC language extension
*** 832,841 ****
  msgstr "Permite todas las extensiones del lenguaje DEC."
  
  #: fortran/lang.opt:490
! #, fuzzy, no-c-format
! #| msgid "Enable the use of the short load instructions."
  msgid "Enable the use of blank format items in format strings."
! msgstr "Activa el uso de las instrucciones short load."
  
  #: fortran/lang.opt:494
  #, no-c-format
--- 812,820 ----
  msgstr "Permite todas las extensiones del lenguaje DEC."
  
  #: fortran/lang.opt:490
! #, no-c-format
  msgid "Enable the use of blank format items in format strings."
! msgstr "Activa el uso de elementos con formato en blanco en cadenas de formato."
  
  #: fortran/lang.opt:494
  #, no-c-format
*************** msgid "Display the code tree after front
*** 913,922 ****
  msgstr "Muestra el árbol del código después de la optimización del frente."
  
  #: fortran/lang.opt:559
! #, fuzzy, no-c-format
! #| msgid "Display the code tree after parsing."
  msgid "Display the global symbol table after parsing."
! msgstr "Muestra el árbol del código después de analizar."
  
  #: fortran/lang.opt:563
  #, no-c-format
--- 892,900 ----
  msgstr "Muestra el árbol del código después de la optimización del frente."
  
  #: fortran/lang.opt:559
! #, no-c-format
  msgid "Display the global symbol table after parsing."
! msgstr "Muestra la table de símbolos globales después del análisis."
  
  #: fortran/lang.opt:563
  #, no-c-format
*************** msgid "Statically link the GNU Fortran h
*** 1221,1230 ****
  msgstr "Enlaza estáticamente la biblioteca de ayuda de GNU Fortran (libgfortran)."
  
  #: fortran/lang.opt:915
! #, fuzzy, no-c-format
! #| msgid "Statically link the GNU Fortran helper library (libgfortran)."
  msgid "Statically link the GCC Quad-Precision Math Library (libquadmath)."
! msgstr "Enlaza estáticamente la biblioteca de ayuda de GNU Fortran (libgfortran)."
  
  #: fortran/lang.opt:919
  #, no-c-format
--- 1199,1207 ----
  msgstr "Enlaza estáticamente la biblioteca de ayuda de GNU Fortran (libgfortran)."
  
  #: fortran/lang.opt:915
! #, no-c-format
  msgid "Statically link the GCC Quad-Precision Math Library (libquadmath)."
! msgstr "Enlaza estáticamente la Biblioteca Matemática de Precisión Cuádruple de GCC (libquadmath)."
  
  #: fortran/lang.opt:919
  #, no-c-format
*************** msgid "Conform to the ISO Fortran 2018 s
*** 1247,1261 ****
  msgstr "Conforma al estándar ISO Fortran 2018."
  
  #: fortran/lang.opt:935
! #, fuzzy, no-c-format
! #| msgid "Conform to the ISO Fortran 2003 standard."
  msgid "Conform to the ISO Fortran 2023 standard."
! msgstr "Conforma al estándar ISO Fortran 2003."
  
  #: fortran/lang.opt:939
  #, no-c-format
  msgid "Enable experimental Fortran 202y features."
! msgstr ""
  
  #: fortran/lang.opt:943
  #, no-c-format
--- 1224,1237 ----
  msgstr "Conforma al estándar ISO Fortran 2018."
  
  #: fortran/lang.opt:935
! #, no-c-format
  msgid "Conform to the ISO Fortran 2023 standard."
! msgstr "Conforma al estándar ISO Fortran 2023."
  
  #: fortran/lang.opt:939
  #, no-c-format
  msgid "Enable experimental Fortran 202y features."
! msgstr "Activa las características experimentales de Fortan 202y."
  
  #: fortran/lang.opt:943
  #, no-c-format
*************** msgstr "Avisa si el llamante de una func
*** 1285,1383 ****
  #: rust/lang.opt:59 c-family/c.opt:893 common.opt:660
  #, no-c-format
  msgid "Warn for infinitely recursive calls."
! msgstr ""
  
  #: rust/lang.opt:63
  #, no-c-format
  msgid "-frust-crate=<name>             Set the crate name for the compilation"
! msgstr ""
  
  #: rust/lang.opt:67
  #, no-c-format
  msgid "-frust-extern=              Specify where an external library is located"
! msgstr ""
  
  #: rust/lang.opt:71
  #, no-c-format
  msgid "Dump various Rust front end internals."
! msgstr ""
  
  #: rust/lang.opt:75
! #, fuzzy, no-c-format
! #| msgid "-fgo-dump-<type>\tDump Go frontend internal information."
  msgid "-frust-dump-<type>              Dump Rust frontend internal information."
! msgstr "-fgo-dump-<tipo>\tInformación interna del frente Dump Go."
  
  #: rust/lang.opt:79
  #, no-c-format
  msgid "Enable experimental compilation of Rust files at your own risk"
! msgstr ""
  
  #: rust/lang.opt:83
  #, no-c-format
  msgid "-frust-max-recursion-depth=<integer>"
! msgstr ""
  
  #: rust/lang.opt:87
  #, no-c-format
  msgid "-frust-crate-type=[bin|lib|rlib|dylib|cdylib|staticlib|proc-macro]     Crate type to emit"
! msgstr ""
  
  #: rust/lang.opt:115
  #, no-c-format
  msgid "-frust-mangling=[legacy|v0]     Version to use for name mangling"
! msgstr ""
  
  #: rust/lang.opt:128
  #, no-c-format
  msgid "-frust-cfg=<name>             Set a config expansion option"
! msgstr ""
  
  #: rust/lang.opt:132
  #, no-c-format
  msgid "-frust-edition=[2015|2018|2021]             Edition to use when compiling rust code"
! msgstr ""
  
  #: rust/lang.opt:148
  #, no-c-format
  msgid "Enable embedding metadata directly into object files"
! msgstr ""
  
  #: rust/lang.opt:152
  #, no-c-format
  msgid "-frust-metadata-output=<path.rox>  Path to output crate metadata"
! msgstr ""
  
  #: rust/lang.opt:160
  #, no-c-format
  msgid "-frust-compile-until=[ast|attributecheck|expansion|astvalidation|featuregating|nameresolution|lowering|typecheck|privacy|unsafety|const|borrowcheck|compilation|end]             The pipeline will run up until this stage when compiling Rust code"
! msgstr ""
  
  #: rust/lang.opt:209
  #, no-c-format
  msgid "Use the temporary and experimental name resolution pipeline instead of the stable one"
! msgstr ""
  
  #: rust/lang.opt:213
  #, no-c-format
  msgid "Use the WIP borrow checker."
! msgstr ""
  
  #: rust/lang.opt:217
  #, no-c-format
  msgid "-frust-edition=[unwind|abort]             Panic strategy to compile crate with"
! msgstr ""
  
  #: rust/lang.opt:230
  #, no-c-format
  msgid "Enable the overflow checks in code generation"
! msgstr ""
  
  #: c-family/c.opt:71
! #, fuzzy, no-c-format
! #| msgid "-I <dir>\tAdd <dir> to the end of the main include path."
  msgid "--embed-dir=<dir>\tAdd <dir> to the #embed path."
! msgstr "-I <dir>\tAgrega el <dir>ectorio al final de la ruta de inclusión principal."
  
  #: c-family/c.opt:192
  #, no-c-format
--- 1261,1357 ----
  #: rust/lang.opt:59 c-family/c.opt:893 common.opt:660
  #, no-c-format
  msgid "Warn for infinitely recursive calls."
! msgstr "Advierte de llamadas recursivas infinitas."
  
  #: rust/lang.opt:63
  #, no-c-format
  msgid "-frust-crate=<name>             Set the crate name for the compilation"
! msgstr "-frust-crate=<nombre>           Establece el nombre del «crate» para la compilación"
  
  #: rust/lang.opt:67
  #, no-c-format
  msgid "-frust-extern=              Specify where an external library is located"
! msgstr "-frust-extern=              Especifica dónde se ubica una biblioteca externa"
  
  #: rust/lang.opt:71
  #, no-c-format
  msgid "Dump various Rust front end internals."
! msgstr "Vuelca varios internos del «frontend» de Rust."
  
  #: rust/lang.opt:75
! #, no-c-format
  msgid "-frust-dump-<type>              Dump Rust frontend internal information."
! msgstr "-frust-dump-<tipo>              Vuelca información interna del «frontend» de Rust."
  
  #: rust/lang.opt:79
  #, no-c-format
  msgid "Enable experimental compilation of Rust files at your own risk"
! msgstr "Activa la compilación experimental de ficheros de Rust bajo su propio riesgo"
  
  #: rust/lang.opt:83
  #, no-c-format
  msgid "-frust-max-recursion-depth=<integer>"
! msgstr "-frust-max-recursion-depth=<entero>"
  
  #: rust/lang.opt:87
  #, no-c-format
  msgid "-frust-crate-type=[bin|lib|rlib|dylib|cdylib|staticlib|proc-macro]     Crate type to emit"
! msgstr "-frust-crate-type=[bin|lib|rlib|dylib|cdylib|staticlib|proc-macro]     Tipo de «crate» que se emitirá"
  
  #: rust/lang.opt:115
  #, no-c-format
  msgid "-frust-mangling=[legacy|v0]     Version to use for name mangling"
! msgstr "-frust-mangling=[legacy|v0]     Versión que se utilizará para «mangling» de nombres"
  
  #: rust/lang.opt:128
  #, no-c-format
  msgid "-frust-cfg=<name>             Set a config expansion option"
! msgstr "-frust-cfg=<nombre>           Establece una opción de expansión de la configuración"
  
  #: rust/lang.opt:132
  #, no-c-format
  msgid "-frust-edition=[2015|2018|2021]             Edition to use when compiling rust code"
! msgstr "-frust-edition=[2015|2018|2021]             Edición que se utilizará cuando se compile código rust"
  
  #: rust/lang.opt:148
  #, no-c-format
  msgid "Enable embedding metadata directly into object files"
! msgstr "Activa el empotrado directo de metadatos en ficheros objeto"
  
  #: rust/lang.opt:152
  #, no-c-format
  msgid "-frust-metadata-output=<path.rox>  Path to output crate metadata"
! msgstr "-frust-metadata-output=<ruta.rox>  Ruta de los metadatos del «crate» de salida"
  
  #: rust/lang.opt:160
  #, no-c-format
  msgid "-frust-compile-until=[ast|attributecheck|expansion|astvalidation|featuregating|nameresolution|lowering|typecheck|privacy|unsafety|const|borrowcheck|compilation|end]             The pipeline will run up until this stage when compiling Rust code"
! msgstr "-frust-compile-until=[ast|attributecheck|expansion|astvalidation|featuregating|nameresolution|lowering|typecheck|privacy|unsafety|const|borrowcheck|compilation|end]             La tubería alcanzará esta etapa cuando se compile código Rust"
  
  #: rust/lang.opt:209
  #, no-c-format
  msgid "Use the temporary and experimental name resolution pipeline instead of the stable one"
! msgstr "Utiliza la tubería de resolución de nombres temporal y experimental en lugar de la estable"
  
  #: rust/lang.opt:213
  #, no-c-format
  msgid "Use the WIP borrow checker."
! msgstr "Utiliza el comprobador de préstamos WIP."
  
  #: rust/lang.opt:217
  #, no-c-format
  msgid "-frust-edition=[unwind|abort]             Panic strategy to compile crate with"
! msgstr "-frust-edition=[unwind|abort]             Estrategia de pánico con la que compilar «crate»"
  
  #: rust/lang.opt:230
  #, no-c-format
  msgid "Enable the overflow checks in code generation"
! msgstr "Activa las comprobaciones de desbordamiento en la generación de código"
  
  #: c-family/c.opt:71
! #, no-c-format
  msgid "--embed-dir=<dir>\tAdd <dir> to the #embed path."
! msgstr "--embed-dir=<dir>\tAgrega el <dir>ectorio a la ruta de #embed."
  
  #: c-family/c.opt:192
  #, no-c-format
*************** msgid "Like -MD but ignore system header
*** 1450,1459 ****
  msgstr "Como -MD pero descarta los ficheros de cabecera del sistema."
  
  #: c-family/c.opt:251
! #, fuzzy, no-c-format
! #| msgid "Generate external legend information"
  msgid "Generate C++ Module dependency information."
! msgstr "General información de leyenda externa"
  
  #: c-family/c.opt:259
  #, no-c-format
--- 1424,1432 ----
  msgstr "Como -MD pero descarta los ficheros de cabecera del sistema."
  
  #: c-family/c.opt:251
! #, no-c-format
  msgid "Generate C++ Module dependency information."
! msgstr "Genera información de dependencia de módulos de C++."
  
  #: c-family/c.opt:259
  #, no-c-format
*************** msgid "Generate phony targets for all he
*** 1461,1492 ****
  msgstr "Genera objetivos de prueba para todas las cabecerasa."
  
  #: c-family/c.opt:263
! #, fuzzy, no-c-format
! #| msgid "-MQ <target>\tAdd a MAKE-quoted target."
  msgid "-MQ <target>\tAdd a target that may require quoting."
! msgstr "-MQ <objetivo>\tAgrega un objetivo tipo-MAKE."
  
  #: c-family/c.opt:267
! #, fuzzy, no-c-format
! #| msgid "-MT <target>\tAdd an unquoted target."
  msgid "-MT <target>\tAdd a target that does not require quoting."
! msgstr "-MT <objetivo>\tAgrega un objetivo no citado."
  
  #: c-family/c.opt:271
  #, no-c-format
  msgid "Structured format for output dependency information.  Supported (\"p1689r5\")."
! msgstr ""
  
  #: c-family/c.opt:275
! #, fuzzy, no-c-format
! #| msgid "Emit cross referencing information"
  msgid "File for output dependency information."
! msgstr "Emite información de referencia cruzada"
  
  #: c-family/c.opt:279
  #, no-c-format
  msgid "-fdeps-target=obj.o Output file for the compile step."
! msgstr ""
  
  #: c-family/c.opt:283
  #, no-c-format
--- 1434,1462 ----
  msgstr "Genera objetivos de prueba para todas las cabecerasa."
  
  #: c-family/c.opt:263
! #, no-c-format
  msgid "-MQ <target>\tAdd a target that may require quoting."
! msgstr "-MQ <objetivo>\tAgrega un objetivo que puede requerir entrecomillado."
  
  #: c-family/c.opt:267
! #, no-c-format
  msgid "-MT <target>\tAdd a target that does not require quoting."
! msgstr "-MT <objetivo>\tAgrega un objetivo que no requiere entrecomillado."
  
  #: c-family/c.opt:271
  #, no-c-format
  msgid "Structured format for output dependency information.  Supported (\"p1689r5\")."
! msgstr "Formato estructurado para salida de información de dependencias.  Disponible (\"p1689r5\")."
  
  #: c-family/c.opt:275
! #, no-c-format
  msgid "File for output dependency information."
! msgstr "Fichero para salida de información de dependencias."
  
  #: c-family/c.opt:279
  #, no-c-format
  msgid "-fdeps-target=obj.o Output file for the compile step."
! msgstr "-fdeps-target=obj.o Fichero de salida para el paso de compilación."
  
  #: c-family/c.opt:283
  #, no-c-format
*************** msgid "-U<macro>\tUndefine <macro>."
*** 1499,1508 ****
  msgstr "-U<macro>\tBorra la definición de <macro>."
  
  #: c-family/c.opt:291
! #, fuzzy, no-c-format
! #| msgid "new cannot be applied to a function type"
  msgid "Warn if the NSObject attribute is applied to a non-typedef."
! msgstr "new no se puede aplicar a un tipo de función"
  
  #: c-family/c.opt:295
  #, no-c-format
--- 1469,1477 ----
  msgstr "-U<macro>\tBorra la definición de <macro>."
  
  #: c-family/c.opt:291
! #, no-c-format
  msgid "Warn if the NSObject attribute is applied to a non-typedef."
! msgstr "Avisa si el atribute NSObject se aplica a algo distinto de typedef."
  
  #: c-family/c.opt:295
  #, no-c-format
*************** msgid "Warn if a subobject has an abi_ta
*** 1520,1529 ****
  msgstr "Avisa si un subojeto tiene un atributo abi_tag que el objeto completo no tiene."
  
  #: c-family/c.opt:307
! #, fuzzy, no-c-format
! #| msgid "Warn about casting functions to incompatible types."
  msgid "Warn about code affected by incompatible psABI changes."
! msgstr "Advierte de funciones de conversión a tipos incompatibles."
  
  #: c-family/c.opt:311
  #, no-c-format
--- 1489,1497 ----
  msgstr "Avisa si un subojeto tiene un atributo abi_tag que el objeto completo no tiene."
  
  #: c-family/c.opt:307
! #, no-c-format
  msgid "Warn about code affected by incompatible psABI changes."
! msgstr "Advierte de código afectado por cambios de psABI incompatibles."
  
  #: c-family/c.opt:311
  #, no-c-format
*************** msgstr "Avisa sobre cualquier uso de all
*** 1563,1587 ****
  #: c-family/c.opt:351
  #, no-c-format
  msgid "Warn when allocating insufficient storage for the target type of the assigned pointer."
! msgstr ""
  
  #: c-family/c.opt:355
! #, fuzzy, no-c-format
! #| msgid "-Walloc-size-larger-than=<bytes> Warn for calls to allocation functions that attempt to allocate objects larger than the specified number of bytes."
  msgid "-Walloc-size-larger-than=<bytes>\tWarn for calls to allocation functions that attempt to allocate objects larger than the specified number of bytes."
! msgstr "-Walloc-size-larger-than=<bytes> Avierte de llamadas a funciones de reserva que intenten reservar objetos mayores que el número de bytes especificado."
  
  #: c-family/c.opt:360
! #, fuzzy, no-c-format
! #| msgid "-Wno-alloc-size-larger-than Disable Walloc-size-larger-than= warning.  Equivalent to Walloc-size-larger-than=<SIZE_MAX> or larger."
  msgid "Disable Walloc-size-larger-than= warning.  Equivalent to Walloc-size-larger-than=<SIZE_MAX> or larger."
! msgstr "-Wno-alloc-size-larger-than Desactiva el aviso Walloc-size-larger-than=.  Equivalente a Walloc-size-larger-than=<MAX_TAMAÑO> o mayor."
  
  #: c-family/c.opt:364
! #, fuzzy, no-c-format
! #| msgid "-Walloc-zero Warn for calls to allocation functions that specify zero bytes."
  msgid "Warn for calls to allocation functions that specify zero bytes."
! msgstr "-Walloc-zero Advierte de llamadas a funciones de reserva que especifican cero bytes."
  
  #: c-family/c.opt:368
  #, no-c-format
--- 1531,1552 ----
  #: c-family/c.opt:351
  #, no-c-format
  msgid "Warn when allocating insufficient storage for the target type of the assigned pointer."
! msgstr "Avisa cuando se reserva memoria insuficiente para el tipo objetivo del puntero asignado."
  
  #: c-family/c.opt:355
! #, no-c-format
  msgid "-Walloc-size-larger-than=<bytes>\tWarn for calls to allocation functions that attempt to allocate objects larger than the specified number of bytes."
! msgstr "-Walloc-size-larger-than=<bytes>\tAvierte de llamadas a funciones de reserva que intenten reservar objetos mayores que el número de bytes especificado."
  
  #: c-family/c.opt:360
! #, no-c-format
  msgid "Disable Walloc-size-larger-than= warning.  Equivalent to Walloc-size-larger-than=<SIZE_MAX> or larger."
! msgstr "Desactiva el aviso Walloc-size-larger-than=.  Equivalente a Walloc-size-larger-than=<MAX_TAMAÑO> o mayor."
  
  #: c-family/c.opt:364
! #, no-c-format
  msgid "Warn for calls to allocation functions that specify zero bytes."
! msgstr "Advierte de llamadas a funciones de reserva que especifican cero bytes."
  
  #: c-family/c.opt:368
  #, no-c-format
*************** msgid "-Walloca-larger-than=<number>\tWa
*** 1589,1615 ****
  msgstr "-Walloca-larger-than=<número>\tAdvierte de usos no acotados de alloca y de usos acotados cuyo límite pueda ser más grande que <número> bytes."
  
  #: c-family/c.opt:374
! #, fuzzy, no-c-format
! #| msgid "-Wno-alloca-larger-than Disable Walloca-larger-than= warning.  Equivalent to Walloca-larger-than=<SIZE_MAX> or larger."
  msgid "Disable Walloca-larger-than= warning.  Equivalent to Walloca-larger-than=<SIZE_MAX> or larger."
! msgstr "-Wno-alloca-larger-than Desactiva el aviso Walloca-larger-than=.  Equivalente a Walloca-larger-than=<MAX_TAMAÑO> o mayor."
  
  #: c-family/c.opt:378
  #, no-c-format
  msgid "Warn if conversion of the result of arithmetic might change the value even though converting the operands cannot."
! msgstr ""
  
  #: c-family/c.opt:386
! #, fuzzy, no-c-format
! #| msgid "Warn about comparison of different enum types."
  msgid "Warn about comparisons between two operands of array type."
! msgstr "Avisar sobre comparación de tipos enum diferentes."
  
  #: c-family/c.opt:390 c-family/c.opt:394
! #, fuzzy, no-c-format
! #| msgid "Warn about multiple declarations of the same object."
  msgid "Warn about mismatched declarations of array parameters and unsafe accesses to them."
! msgstr "Avisa sobre declaraciones múltiples del mismo objeto."
  
  #: c-family/c.opt:398
  #, no-c-format
--- 1554,1577 ----
  msgstr "-Walloca-larger-than=<número>\tAdvierte de usos no acotados de alloca y de usos acotados cuyo límite pueda ser más grande que <número> bytes."
  
  #: c-family/c.opt:374
! #, no-c-format
  msgid "Disable Walloca-larger-than= warning.  Equivalent to Walloca-larger-than=<SIZE_MAX> or larger."
! msgstr "Desactiva el aviso Wlloca-larger-than=.  Equivalente a Walloca-larger-than=<MAX_TAMAÑO> o mayor."
  
  #: c-family/c.opt:378
  #, no-c-format
  msgid "Warn if conversion of the result of arithmetic might change the value even though converting the operands cannot."
! msgstr "Avisa si la conversión del resultado de una operación aritmética pudiera cambiar el valor aunque la conversión de los operandos no pudiera."
  
  #: c-family/c.opt:386
! #, no-c-format
  msgid "Warn about comparisons between two operands of array type."
! msgstr "Advierte de comparaciones entre dos operandos de tipo array."
  
  #: c-family/c.opt:390 c-family/c.opt:394
! #, no-c-format
  msgid "Warn about mismatched declarations of array parameters and unsafe accesses to them."
! msgstr "Advierte de declaraciones parámetros de array discrepantes y de accesos inseguros a los mismos."
  
  #: c-family/c.opt:398
  #, no-c-format
*************** msgid "Warn when a built-in preprocessor
*** 1647,1668 ****
  msgstr "Avisa cuando una macro de preprocesador interna está sin definir o redefinida."
  
  #: c-family/c.opt:449
! #, fuzzy, no-c-format
! #| msgid "Warn about features not present in ISO C11, but present in ISO C2X."
  msgid "Warn about features not present in ISO C11, but present in ISO C23."
! msgstr "Avisa sobre características no presentes en ISO C11, pero presentes en ISO C2X."
  
  #: c-family/c.opt:453
! #, fuzzy, no-c-format
! #| msgid "Deprecated in favor of -Wc++11-compat"
  msgid "Deprecated in favor of -Wc11-c23-compat."
! msgstr "Obsoleto en favor de -Wc+11-compat"
  
  #: c-family/c.opt:457
! #, fuzzy, no-c-format
! #| msgid "Warn about features not present in ISO C11, but present in ISO C2X."
  msgid "Warn about features not present in ISO C23, but present in ISO C2Y."
! msgstr "Avisa sobre características no presentes en ISO C11, pero presentes en ISO C2X."
  
  #: c-family/c.opt:461
  #, no-c-format
--- 1609,1627 ----
  msgstr "Avisa cuando una macro de preprocesador interna está sin definir o redefinida."
  
  #: c-family/c.opt:449
! #, no-c-format
  msgid "Warn about features not present in ISO C11, but present in ISO C23."
! msgstr "Avisa sobre características no presentes en ISO C11, pero presentes en ISO C23."
  
  #: c-family/c.opt:453
! #, no-c-format
  msgid "Deprecated in favor of -Wc11-c23-compat."
! msgstr "Obsoleto en favor de -Wc11-c23-compat."
  
  #: c-family/c.opt:457
! #, no-c-format
  msgid "Warn about features not present in ISO C23, but present in ISO C2Y."
! msgstr "Avisa sobre características no presentes en ISO C23, pero presentes en ISO C2Y."
  
  #: c-family/c.opt:461
  #, no-c-format
*************** msgid "Warn about C++ constructs whose m
*** 1695,1755 ****
  msgstr "Avisa sobre construcciones de C++ cuyo significado difiere entre ISO C++ 2014 e ISO C++ 2017."
  
  #: c-family/c.opt:494
! #, fuzzy, no-c-format
! #| msgid "Warn about C++ constructs whose meaning differs between ISO C++ 2014 and ISO C++ 2017."
  msgid "Warn about C++ constructs whose meaning differs between ISO C++ 2017 and ISO C++ 2020."
! msgstr "Avisa sobre construcciones de C++ cuyo significado difiere entre ISO C++ 2014 e ISO C++ 2017."
  
  #: c-family/c.opt:498
  #, no-c-format
  msgid "Warn about C++11 constructs in code compiled with an older standard."
! msgstr ""
  
  #: c-family/c.opt:502
  #, no-c-format
  msgid "Warn about C++14 constructs in code compiled with an older standard."
! msgstr ""
  
  #: c-family/c.opt:506
  #, no-c-format
  msgid "Warn about C++17 constructs in code compiled with an older standard."
! msgstr ""
  
  #: c-family/c.opt:510
  #, no-c-format
  msgid "Warn about C++20 constructs in code compiled with an older standard."
! msgstr ""
  
  #: c-family/c.opt:514
  #, no-c-format
  msgid "Warn about C++23 constructs in code compiled with an older standard."
! msgstr ""
  
  #: c-family/c.opt:518
  #, no-c-format
  msgid "Warn about C++26 constructs in code compiled with an older standard."
! msgstr ""
  
  #: c-family/c.opt:522
! #, fuzzy, no-c-format
! #| msgid "Warn about suspicious divisions of two sizeof expressions that don't work correctly with pointers."
  msgid "Warn about suspicious calls to calloc-like functions where sizeof expression is the earlier size argument and not the latter."
! msgstr "Advierte de divisiones sospechosas de dos expresiones sizeof que no funcionan correctamente con punteros."
  
  #: c-family/c.opt:526
  #, no-c-format
  msgid "Warn about casts between incompatible function types."
! msgstr "Advierte de funciones de conversión entre tipos de función incompatibles."
  
  #: c-family/c.opt:530
  #, no-c-format
  msgid "Warn about casts which discard qualifiers."
! msgstr "Avisa sobre conversiones que descartan calificadores."
  
  #: c-family/c.opt:534
  #, no-c-format
  msgid "Warn about a cast to reference type that does not use a related user-defined conversion function."
! msgstr ""
  
  #: c-family/c.opt:538 c-family/c.opt:542
  #, no-c-format
--- 1654,1712 ----
  msgstr "Avisa sobre construcciones de C++ cuyo significado difiere entre ISO C++ 2014 e ISO C++ 2017."
  
  #: c-family/c.opt:494
! #, no-c-format
  msgid "Warn about C++ constructs whose meaning differs between ISO C++ 2017 and ISO C++ 2020."
! msgstr "Avisa sobre construcciones de C++ cuyo significado difiere entre ISO C++ 2017 e ISO C++ 2020."
  
  #: c-family/c.opt:498
  #, no-c-format
  msgid "Warn about C++11 constructs in code compiled with an older standard."
! msgstr "Avisa sobre construcciones de C++11 presentes en código compilado con un estándar más antiguo."
  
  #: c-family/c.opt:502
  #, no-c-format
  msgid "Warn about C++14 constructs in code compiled with an older standard."
! msgstr "Avisa sobre construcciones de C++14 presentes en código compilado con un estándar más antiguo."
  
  #: c-family/c.opt:506
  #, no-c-format
  msgid "Warn about C++17 constructs in code compiled with an older standard."
! msgstr "Avisa sobre construcciones de C++17 presentes en código compilado con un estándar más antiguo."
  
  #: c-family/c.opt:510
  #, no-c-format
  msgid "Warn about C++20 constructs in code compiled with an older standard."
! msgstr "Avisa sobre construcciones de C++20 presentes en código compilado con un estándar más antiguo."
  
  #: c-family/c.opt:514
  #, no-c-format
  msgid "Warn about C++23 constructs in code compiled with an older standard."
! msgstr "Avisa sobre construcciones de C++23 presentes en código compilado con un estándar más antiguo."
  
  #: c-family/c.opt:518
  #, no-c-format
  msgid "Warn about C++26 constructs in code compiled with an older standard."
! msgstr "Avisa sobre construcciones de C++25 presentes en código compilado con un estándar más antiguo."
  
  #: c-family/c.opt:522
! #, no-c-format
  msgid "Warn about suspicious calls to calloc-like functions where sizeof expression is the earlier size argument and not the latter."
! msgstr "Advierte de llamadas sospechosas a funciones de tipo calloc cuando la expresión sizeof es el argumento del tamaño anterior y no del nuevo."
  
  #: c-family/c.opt:526
  #, no-c-format
  msgid "Warn about casts between incompatible function types."
! msgstr "Advierte de «casts» (conversiones) entre tipos de función incompatibles."
  
  #: c-family/c.opt:530
  #, no-c-format
  msgid "Warn about casts which discard qualifiers."
! msgstr "Avisa sobre «casts» (conversiones) que descartan calificadores."
  
  #: c-family/c.opt:534
  #, no-c-format
  msgid "Warn about a cast to reference type that does not use a related user-defined conversion function."
! msgstr "Avisa sobre «cast» (conversión) a un tipo referencia que no utiliza una función de conversión definida por el usuario correspondiente"
  
  #: c-family/c.opt:538 c-family/c.opt:542
  #, no-c-format
*************** msgstr "Avisa sobre subíndices cuyo tip
*** 1774,1783 ****
  #: c-family/c.opt:1787 c-family/c.opt:1791 c-family/c.opt:1795
  #: c-family/c.opt:1799 c-family/c.opt:1803 c-family/c.opt:1807
  #: config/i386/i386.opt:1005
! #, fuzzy, no-c-format
! #| msgid "Deprecated in GCC 9.  This switch has no effect."
  msgid "Removed in GCC 9.  This switch has no effect."
! msgstr "Obsoleto en GCC 9.  Esta opción no tiene efecto."
  
  #: c-family/c.opt:558
  #, no-c-format
--- 1731,1739 ----
  #: c-family/c.opt:1787 c-family/c.opt:1791 c-family/c.opt:1795
  #: c-family/c.opt:1799 c-family/c.opt:1803 c-family/c.opt:1807
  #: config/i386/i386.opt:1005
! #, no-c-format
  msgid "Removed in GCC 9.  This switch has no effect."
! msgstr "Eliminado en GCC 9.  Esta opción no tiene ningún efecto."
  
  #: c-family/c.opt:558
  #, no-c-format
*************** msgid "Warn about variables that might b
*** 1795,1804 ****
  msgstr "Avisa sobre variables que pueden cambiar por \"longjmp\" o \"vfork\"."
  
  #: c-family/c.opt:570
! #, fuzzy, no-c-format
! #| msgid "Warn about overflow in arithmetic expressions."
  msgid "Warn about uses of a comma operator within a subscripting expression."
! msgstr "Avisa sobre desbordamiento por debajo en expresiones numéricas."
  
  #: c-family/c.opt:574
  #, no-c-format
--- 1751,1759 ----
  msgstr "Avisa sobre variables que pueden cambiar por \"longjmp\" o \"vfork\"."
  
  #: c-family/c.opt:570
! #, no-c-format
  msgid "Warn about uses of a comma operator within a subscripting expression."
! msgstr "Avisa sobre usos de separador coma en una expresión ide subíndice."
  
  #: c-family/c.opt:574
  #, no-c-format
*************** msgid "Warn for converting NULL from/to
*** 1826,1835 ****
  msgstr "Avisa cuando se convierte NULL de/a un tipo que no es puntero."
  
  #: c-family/c.opt:598
! #, fuzzy, no-c-format
! #| msgid "in template argument for type %qT "
  msgid "Warn when performing class template argument deduction on a type with no deduction guides."
! msgstr "en el argumento de plantilla para el tipo %qT "
  
  #: c-family/c.opt:603
  #, no-c-format
--- 1781,1789 ----
  msgstr "Avisa cuando se convierte NULL de/a un tipo que no es puntero."
  
  #: c-family/c.opt:598
! #, no-c-format
  msgid "Warn when performing class template argument deduction on a type with no deduction guides."
! msgstr "Avisa cuando se realiza una deducción de argumento de plantilla de clase sobre un tipo sin guías de deducción."
  
  #: c-family/c.opt:603
  #, no-c-format
*************** msgstr "Avisa sobre else congante."
*** 1844,1855 ****
  #: c-family/c.opt:611 c-family/c.opt:615
  #, no-c-format
  msgid "Warn for uses of pointers to auto variables whose lifetime has ended."
! msgstr ""
  
  #: c-family/c.opt:619
  #, no-c-format
  msgid "Warn when a reference is bound to a temporary whose lifetime has ended."
! msgstr ""
  
  #: c-family/c.opt:623
  #, no-c-format
--- 1798,1809 ----
  #: c-family/c.opt:611 c-family/c.opt:615
  #, no-c-format
  msgid "Warn for uses of pointers to auto variables whose lifetime has ended."
! msgstr "Avisa sobre usos de punteros a auto variables cuya existencia ha concluido."
  
  #: c-family/c.opt:619
  #, no-c-format
  msgid "Warn when a reference is bound to a temporary whose lifetime has ended."
! msgstr "Avisa cuando una referencia está vinculada a un temporal cuya existencia ha concluido."
  
  #: c-family/c.opt:623
  #, no-c-format
*************** msgid "Warn when a declaration is found
*** 1862,1877 ****
  msgstr "Avisa cuando se encuentra una declaración después de una sentencia."
  
  #: c-family/c.opt:631
! #, fuzzy, no-c-format
! #| msgid "Warn about unprototyped function declarations."
  msgid "Warn for missing parameter types in function declarations."
! msgstr "Avisa sobre declaraciones de función sin prototipo."
  
  #: c-family/c.opt:635
! #, fuzzy, no-c-format
! #| msgid "Warn when a Cell microcoded instruction is emitted."
  msgid "Warn when an explicitly defaulted function is deleted."
! msgstr "Avisa cuando se emite una instrucción microcodificada Cell."
  
  #: c-family/c.opt:639
  #, no-c-format
--- 1816,1829 ----
  msgstr "Avisa cuando se encuentra una declaración después de una sentencia."
  
  #: c-family/c.opt:631
! #, no-c-format
  msgid "Warn for missing parameter types in function declarations."
! msgstr "Avisa cuando faltan los tipos de los parámetros en declaraciones de funciones."
  
  #: c-family/c.opt:635
! #, no-c-format
  msgid "Warn when an explicitly defaulted function is deleted."
! msgstr "Avisa cuando se borra una función predeterminada explícitamente."
  
  #: c-family/c.opt:639
  #, no-c-format
*************** msgid "Mark implicitly-declared copy ope
*** 1894,1925 ****
  msgstr "Marca las operaciones de copia declaradas implícitamente como obsoletas si la clase tiene una operación de copia o un destructor definidos por el usuario."
  
  #: c-family/c.opt:661
! #, fuzzy, no-c-format
! #| msgid "Warn about most implicit conversions."
  msgid "Warn about deprecated arithmetic conversions on operands of enumeration types."
! msgstr "Avisa sobre la mayoría de las conversiones implícitas."
  
  #: c-family/c.opt:665
  #, no-c-format
  msgid "Warn about deprecated arithmetic conversions on operands where one is of enumeration type and the other is of a floating-point type."
! msgstr ""
  
  #: c-family/c.opt:670
  #, no-c-format
  msgid "Warn about deprecated space between \"\" and suffix in a user-defined literal operator."
! msgstr ""
  
  #: c-family/c.opt:674
! #, fuzzy, no-c-format
! #| msgid "in a call to function %qD declared here"
  msgid "Warn about calls with arguments to functions declared without parameters."
! msgstr "en una llamada a la función %qD declarada aquí"
  
  #: c-family/c.opt:678
! #, fuzzy, no-c-format
! #| msgid "Warn about semicolon after in-class function definition."
  msgid "Warn about deprecated omission of comma before ... in varargs function declaration."
! msgstr "Advierte de punto y coma después de una definición de función dentro de una clase."
  
  #: c-family/c.opt:682
  #, no-c-format
--- 1846,1874 ----
  msgstr "Marca las operaciones de copia declaradas implícitamente como obsoletas si la clase tiene una operación de copia o un destructor definidos por el usuario."
  
  #: c-family/c.opt:661
! #, no-c-format
  msgid "Warn about deprecated arithmetic conversions on operands of enumeration types."
! msgstr "Avisa sobre conversiones aritméticas de operandos de tipos enumerados que están obsoletas."
  
  #: c-family/c.opt:665
  #, no-c-format
  msgid "Warn about deprecated arithmetic conversions on operands where one is of enumeration type and the other is of a floating-point type."
! msgstr "Avisa sobre conversiones aritméticas de operandos que están obsoletas en las que uno es de tipo enumerado y el otro de coma flotante."
  
  #: c-family/c.opt:670
  #, no-c-format
  msgid "Warn about deprecated space between \"\" and suffix in a user-defined literal operator."
! msgstr "Avisa sobre espacio obsoleto entre \"\" y el sufijo en operadores literales definidos por el usuario."
  
  #: c-family/c.opt:674
! #, no-c-format
  msgid "Warn about calls with arguments to functions declared without parameters."
! msgstr "Avisa sobre llamadas con argumentos a funciones declaradas sin parámetros."
  
  #: c-family/c.opt:678
! #, no-c-format
  msgid "Warn about deprecated omission of comma before ... in varargs function declaration."
! msgstr "Advierte de la omisión obsoleta de coma antes de ... declaraciones de funciones varargs."
  
  #: c-family/c.opt:682
  #, no-c-format
*************** msgid "Warn about comparison of differen
*** 1987,2002 ****
  msgstr "Avisar sobre comparación de tipos enum diferentes."
  
  #: c-family/c.opt:734
! #, fuzzy, no-c-format
! #| msgid "Warn about most implicit conversions."
  msgid "Warn about implicit conversion of enum types."
! msgstr "Avisa sobre la mayoría de las conversiones implícitas."
  
  #: c-family/c.opt:738
! #, fuzzy, no-c-format
! #| msgid "Warn about subscripts whose type is \"char\"."
  msgid "Warn about enum/integer type mismatches."
! msgstr "Avisa sobre subíndices cuyo tipo es \"char\"."
  
  #: c-family/c.opt:746
  #, no-c-format
--- 1936,1949 ----
  msgstr "Avisar sobre comparación de tipos enum diferentes."
  
  #: c-family/c.opt:734
! #, no-c-format
  msgid "Warn about implicit conversion of enum types."
! msgstr "Avisa sobre conversiones implícitas de tipos enum."
  
  #: c-family/c.opt:738
! #, no-c-format
  msgid "Warn about enum/integer type mismatches."
! msgstr "Avisa sobre discrepancias de tipo enum/entero."
  
  #: c-family/c.opt:746
  #, no-c-format
*************** msgid "This switch is deprecated; use -W
*** 2004,2013 ****
  msgstr "Esta opción es obsoleta; utilice en su lugar -Werror=implicit-function-declaration."
  
  #: c-family/c.opt:750
! #, fuzzy, no-c-format
! #| msgid "Warn when one variable shadows another (globally)."
  msgid "Warn when an exception handler is shadowed by another handler."
! msgstr "Avisa cuando una variable oculta otra (globalmente)."
  
  #: c-family/c.opt:754
  #, no-c-format
--- 1951,1959 ----
  msgstr "Esta opción es obsoleta; utilice en su lugar -Werror=implicit-function-declaration."
  
  #: c-family/c.opt:750
! #, no-c-format
  msgid "Warn when an exception handler is shadowed by another handler."
! msgstr "Avisa cuando un manejador de excepciones queda tapado por otro manejador."
  
  #: c-family/c.opt:754
  #, no-c-format
*************** msgstr "Advierte de punto y coma despué
*** 2022,2028 ****
  #: c-family/c.opt:766
  #, no-c-format
  msgid "Warn when a structure containing a C99 flexible array member as the last field is not at the end of another structure."
! msgstr ""
  
  #: c-family/c.opt:771
  #, no-c-format
--- 1968,1974 ----
  #: c-family/c.opt:766
  #, no-c-format
  msgid "Warn when a structure containing a C99 flexible array member as the last field is not at the end of another structure."
! msgstr "Advierte de estructuras que contienen algún miembro de array flexible C99 como último campo y no están al final de otra estructura."
  
  #: c-family/c.opt:771
  #, no-c-format
*************** msgid "Warn about format strings that co
*** 2045,2054 ****
  msgstr "Advierte de cadenas de formato que contengan bytes NUL."
  
  #: c-family/c.opt:787
! #, fuzzy, no-c-format
! #| msgid "Warn about format strings that are not literals."
  msgid "Warn about GCC format strings with strings unsuitable for diagnostics."
! msgstr "Avisa sobre el uso de cadenas de formato que no son literales."
  
  #: c-family/c.opt:791
  #, no-c-format
--- 1991,1999 ----
  msgstr "Advierte de cadenas de formato que contengan bytes NUL."
  
  #: c-family/c.opt:787
! #, no-c-format
  msgid "Warn about GCC format strings with strings unsuitable for diagnostics."
! msgstr "Avisa sobre cadenas de formato GCC con cadenas inadecuadas para diagnósticos."
  
  #: c-family/c.opt:791
  #, no-c-format
*************** msgid "Warn when __builtin_frame_address
*** 2106,2125 ****
  msgstr "Avisa cuando __builtin_frame_address o __builtin_return_address se usan de forma no segura."
  
  #: c-family/c.opt:842
! #, fuzzy, no-c-format
! #| msgid "label at end of compound statement"
  msgid "Warn about labels on declarations and at the end of compound statements."
! msgstr "etiqueta al final de una declaración compuesta"
  
  #: c-family/c.opt:846
  #, no-c-format
  msgid "Warn about the global module fragment not containing only preprocessing directives."
! msgstr ""
  
  #: c-family/c.opt:850
  #, no-c-format
  msgid "Warn when #ifndef of a header guard is followed by #define of a different macro with the header guard macro not defined at the end of header."
! msgstr ""
  
  #: c-family/c.opt:854
  #, no-c-format
--- 2051,2069 ----
  msgstr "Avisa cuando __builtin_frame_address o __builtin_return_address se usan de forma no segura."
  
  #: c-family/c.opt:842
! #, no-c-format
  msgid "Warn about labels on declarations and at the end of compound statements."
! msgstr "Avisa sobre etiquetas en declaraciones y al final de sentencias compuestas."
  
  #: c-family/c.opt:846
  #, no-c-format
  msgid "Warn about the global module fragment not containing only preprocessing directives."
! msgstr "Advierte de que el fragmento del módulo global no contiene únicamente directivas de procesamiento."
  
  #: c-family/c.opt:850
  #, no-c-format
  msgid "Warn when #ifndef of a header guard is followed by #define of a different macro with the header guard macro not defined at the end of header."
! msgstr "Avisa cuando un #ifndef de una guarda de cabecera va seguida de un #define con una macro distinta con la macro de guarda de cabecera no definida al final de la cabecera."
  
  #: c-family/c.opt:854
  #, no-c-format
*************** msgid "Warn when a declaration does not
*** 2152,2161 ****
  msgstr "Avisa cuando una declaración no especifique un tipo."
  
  #: c-family/c.opt:885
! #, fuzzy, no-c-format
! #| msgid "direct base %qT inaccessible in %qT due to ambiguity"
  msgid "Warn when a base is inaccessible in derived due to ambiguity."
! msgstr "base directa %qT inaccesible en %qT debido a ambigüedad"
  
  #: c-family/c.opt:889
  #, no-c-format
--- 2096,2104 ----
  msgstr "Avisa cuando una declaración no especifique un tipo."
  
  #: c-family/c.opt:885
! #, no-c-format
  msgid "Warn when a base is inaccessible in derived due to ambiguity."
! msgstr "Avisa cuando una base es inaccesible en una derivada a causa de ambigüedad."
  
  #: c-family/c.opt:889
  #, no-c-format
*************** msgstr "Avisa sobre usos de std::initial
*** 2175,2181 ****
  #: c-family/c.opt:905
  #, no-c-format
  msgid "Warn about nonsensical values of --param destructive-interference-size or constructive-interference-size."
! msgstr ""
  
  #: c-family/c.opt:910
  #, no-c-format
--- 2118,2124 ----
  #: c-family/c.opt:905
  #, no-c-format
  msgid "Warn about nonsensical values of --param destructive-interference-size or constructive-interference-size."
! msgstr "Advierte de valores sin sentido de --param destructive-interference-size o constructive-interference-size."
  
  #: c-family/c.opt:910
  #, no-c-format
*************** msgid "Warn when there is a cast to a po
*** 2198,2207 ****
  msgstr "Avisa cuando hay una conversión a puntero desde un entero de tamaño diferente."
  
  #: c-family/c.opt:926
! #, fuzzy, no-c-format
! #| msgid "Warn about underflow of numerical constant expressions."
  msgid "Warn when a function never produces a constant expression."
! msgstr "Avisa sobre desbordamiento por debajo de expresiones numéricas constantes."
  
  #: c-family/c.opt:930
  #, no-c-format
--- 2141,2149 ----
  msgstr "Avisa cuando hay una conversión a puntero desde un entero de tamaño diferente."
  
  #: c-family/c.opt:926
! #, no-c-format
  msgid "Warn when a function never produces a constant expression."
! msgstr "Avisa cuando una función nunca produce una expresión constante."
  
  #: c-family/c.opt:930
  #, no-c-format
*************** msgid "Warn about PCH files that are fou
*** 2214,2223 ****
  msgstr "Avisa sobre ficheros PCH que se encuentran pero no se usan."
  
  #: c-family/c.opt:938
! #, fuzzy, no-c-format
! #| msgid "Warn about using variadic macros."
  msgid "Warn about invalid UTF-8 characters."
! msgstr "Avisa sobre el uso de macros variadic."
  
  #: c-family/c.opt:942
  #, no-c-format
--- 2156,2164 ----
  msgstr "Avisa sobre ficheros PCH que se encuentran pero no se usan."
  
  #: c-family/c.opt:938
! #, no-c-format
  msgid "Warn about invalid UTF-8 characters."
! msgstr "Avisa sobre caracteres UTF-8 no válidos."
  
  #: c-family/c.opt:942
  #, no-c-format
*************** msgstr "Avisa cuando un salto pierde la
*** 2227,2233 ****
  #: c-family/c.opt:961
  #, no-c-format
  msgid "Warn about leading whitespace style issues on lines except when in raw string literals."
! msgstr ""
  
  #: c-family/c.opt:965
  #, no-c-format
--- 2168,2174 ----
  #: c-family/c.opt:961
  #, no-c-format
  msgid "Warn about leading whitespace style issues on lines except when in raw string literals."
! msgstr "Advierte de cuestiones de estilo de espacios en blanco iniciales en las líneas excepto si son literales de cadena en bruto."
  
  #: c-family/c.opt:965
  #, no-c-format
*************** msgid "Warn about user-specified include
*** 2310,2319 ****
  msgstr "Avisa sobre directorios de inclusión definidos por el usuario que no existen."
  
  #: c-family/c.opt:1044
! #, fuzzy, no-c-format
! #| msgid "function definition does not declare parameters"
  msgid "Warn about function definitions omitting parameter names."
! msgstr "la definición de la función no declara parámetros"
  
  #: c-family/c.opt:1048
  #, no-c-format
--- 2251,2259 ----
  msgstr "Avisa sobre directorios de inclusión definidos por el usuario que no existen."
  
  #: c-family/c.opt:1044
! #, no-c-format
  msgid "Warn about function definitions omitting parameter names."
! msgstr "Avisa sobre definiciones de función que omiten los nombres de parámetros."
  
  #: c-family/c.opt:1048
  #, no-c-format
*************** msgid "Warn about global functions witho
*** 2326,2346 ****
  msgstr "Avisa sobre funciones globales sin prototipos."
  
  #: c-family/c.opt:1056
! #, fuzzy, no-c-format
! #| msgid "Warn about possibly missing parentheses."
  msgid "Warn about likely missing requires keyword."
! msgstr "Avisa sobre posibles paréntesis ausentes."
  
  #: c-family/c.opt:1060
  #, no-c-format
  msgid "Warn when the template keyword is missing after a member access token in a dependent member access expression if that member is a template."
! msgstr ""
  
  #: c-family/c.opt:1064
! #, fuzzy, no-c-format
! #| msgid "Warn about global functions without previous declarations."
  msgid "Warn about global variables without previous declarations."
! msgstr "Avisa sobre funciones globales sin declaraciones previas."
  
  #: c-family/c.opt:1071
  #, no-c-format
--- 2266,2284 ----
  msgstr "Avisa sobre funciones globales sin prototipos."
  
  #: c-family/c.opt:1056
! #, no-c-format
  msgid "Warn about likely missing requires keyword."
! msgstr "Avisa sobre la probable ausencia de palabra clave requerida."
  
  #: c-family/c.opt:1060
  #, no-c-format
  msgid "Warn when the template keyword is missing after a member access token in a dependent member access expression if that member is a template."
! msgstr "Advierte de la omisión de la palabra clave template después de un «token» de acceso a miembro en una expresión de acceso a miembro dependiente si el miembro es una plantilla."
  
  #: c-family/c.opt:1064
! #, no-c-format
  msgid "Warn about global variables without previous declarations."
! msgstr "Avisa sobre variables globales sin declaraciones previas."
  
  #: c-family/c.opt:1071
  #, no-c-format
*************** msgstr "Avisa si se usa una definición
*** 2425,2437 ****
  #: c-family/c.opt:1167
  #, no-c-format
  msgid "Warn about potentially suboptimal choices related to OpenACC parallelism."
! msgstr ""
  
  #: c-family/c.opt:1171
! #, fuzzy, no-c-format
! #| msgid "Warn about \"suspicious\" constructs."
  msgid "Warn about suspicious OpenMP code."
! msgstr "Avisa sobre construcciones \"sospechosas\"."
  
  #: c-family/c.opt:1175
  #, no-c-format
--- 2363,2374 ----
  #: c-family/c.opt:1167
  #, no-c-format
  msgid "Warn about potentially suboptimal choices related to OpenACC parallelism."
! msgstr "Avisa sobre decisiones potencialmente subóptimas relacionadas con paralelismo OpenACC."
  
  #: c-family/c.opt:1171
! #, no-c-format
  msgid "Warn about suspicious OpenMP code."
! msgstr "Avisa sobre código OpenMP sospechoso."
  
  #: c-family/c.opt:1175
  #, no-c-format
*************** msgid "Warn about misuses of pragmas."
*** 2519,2528 ****
  msgstr "Avisa sobre malos usos de pragmas."
  
  #: c-family/c.opt:1255
! #, fuzzy, no-c-format
! #| msgid "Warn about deprecated compiler features"
  msgid "Warn about #pragma once outside of a header."
! msgstr "Avisa si se usan opciones de compilador obsoletas"
  
  #: c-family/c.opt:1259
  #, no-c-format
--- 2456,2464 ----
  msgstr "Avisa sobre malos usos de pragmas."
  
  #: c-family/c.opt:1255
! #, no-c-format
  msgid "Warn about #pragma once outside of a header."
! msgstr "Advierte de #pragma once fuera de una cabecera."
  
  #: c-family/c.opt:1259
  #, no-c-format
*************** msgstr "Avisa cuando un argumento que se
*** 2577,2583 ****
  #: c-family/c.opt:1300
  #, no-c-format
  msgid "Warn whenever void-returning functions return a non-void expressions, or a return expression is missing in a function not returning void."
! msgstr ""
  
  #: c-family/c.opt:1304
  #, no-c-format
--- 2513,2519 ----
  #: c-family/c.opt:1300
  #, no-c-format
  msgid "Warn whenever void-returning functions return a non-void expressions, or a return expression is missing in a function not returning void."
! msgstr "Avisa siempre que una función que devuelve void devuelve una expresión no void, o si falta expresión de retorno en una función que no devuelve void."
  
  #: c-family/c.opt:1304
  #, no-c-format
*************** msgid "Warn if a selector has multiple m
*** 2595,2604 ****
  msgstr "Avisa si un selector tiene métodos múltiples."
  
  #: c-family/c.opt:1316
! #, fuzzy, no-c-format
! #| msgid "Warn when a variable is only set, otherwise unused."
  msgid "Warn when a value is moved to itself with std::move."
! msgstr "Avisa cuando sólo se define una variable, y no se usa posteriormente."
  
  #: c-family/c.opt:1320
  #, no-c-format
--- 2531,2539 ----
  msgstr "Avisa si un selector tiene métodos múltiples."
  
  #: c-family/c.opt:1316
! #, no-c-format
  msgid "Warn when a value is moved to itself with std::move."
! msgstr "Avisa cuando un valor se mueve a sí mismo con std::move."
  
  #: c-family/c.opt:1320
  #, no-c-format
*************** msgstr "Advierte de desbordamiento de b�
*** 2703,2715 ****
  #: c-family/c.opt:1421
  #, no-c-format
  msgid "Under the control of Object Size type, warn about buffer overflow in string manipulation functions like memcpy and strcpy."
! msgstr ""
  
  #: c-family/c.opt:1426
! #, fuzzy, no-c-format
! #| msgid "Warn about buffer overflow in string manipulation functions like memcpy and strcpy."
  msgid "Warn about reading past the end of a source array in string manipulation functions like memchr and memcpy."
! msgstr "Advierte de desbordamiento de búfer en funciones que manipulan cadenas, como memcpy y strcpy."
  
  #: c-family/c.opt:1430
  #, no-c-format
--- 2638,2649 ----
  #: c-family/c.opt:1421
  #, no-c-format
  msgid "Under the control of Object Size type, warn about buffer overflow in string manipulation functions like memcpy and strcpy."
! msgstr "Bajo el control del tipo de tamao del obejto (Object Size), advierte de desbordamiento de búfer en funciones de manipulación de cadenas como memcpy y strcpy."
  
  #: c-family/c.opt:1426
! #, no-c-format
  msgid "Warn about reading past the end of a source array in string manipulation functions like memchr and memcpy."
! msgstr "Advierte de lecturas más allá del final de un array origen en funciones que manipulan cadenas, como memcpy y strcpy."
  
  #: c-family/c.opt:1430
  #, no-c-format
*************** msgid "Warn on primary template declarat
*** 2772,2797 ****
  msgstr "Avisa en la declaración de la plantilla primeraria."
  
  #: c-family/c.opt:1483
! #, fuzzy, no-c-format
! #| msgid "error while parsing fields"
  msgid "Diagnose errors when parsing a template."
! msgstr "error al decodificar los campos"
  
  #: c-family/c.opt:1487
! #, fuzzy, no-c-format
! #| msgid ""
! #| "\n"
! #| "ldd output with constructors/destructors.\n"
  msgid "Warn about simple-template-id in a constructor or destructor."
! msgstr ""
! "\n"
! "salida de ldd con constructores/destructores.\n"
  
  #: c-family/c.opt:1491
! #, fuzzy, no-c-format
! #| msgid "Warn about code which might break strict aliasing rules."
  msgid "Warn about templates naming TU-local entities in a module."
! msgstr "Avisa sobre código que pueda romper las reglas estrictas de aliases."
  
  #: c-family/c.opt:1495
  #, no-c-format
--- 2706,2724 ----
  msgstr "Avisa en la declaración de la plantilla primeraria."
  
  #: c-family/c.opt:1483
! #, no-c-format
  msgid "Diagnose errors when parsing a template."
! msgstr "Diagnostica errores al analizar plantillas."
  
  #: c-family/c.opt:1487
! #, no-c-format
  msgid "Warn about simple-template-id in a constructor or destructor."
! msgstr "Advierte de simple-template-id en constructores y destructores."
  
  #: c-family/c.opt:1491
! #, no-c-format
  msgid "Warn about templates naming TU-local entities in a module."
! msgstr "Avisa sobre plantillas que designan entidades TU-local en un módulo."
  
  #: c-family/c.opt:1495
  #, no-c-format
*************** msgstr "Advierte de un uso cuestionable
*** 2881,2887 ****
  #: c-family/c.opt:1607
  #, no-c-format
  msgid "Warn about the most vexing parse syntactic ambiguity."
! msgstr ""
  
  #: c-family/c.opt:1611
  #, no-c-format
--- 2808,2814 ----
  #: c-family/c.opt:1607
  #, no-c-format
  msgid "Warn about the most vexing parse syntactic ambiguity."
! msgstr "Advierten de la ambigüedad de análisis sintáctico más irritante."
  
  #: c-family/c.opt:1611
  #, no-c-format
*************** msgid "Warn if a variable length array i
*** 2894,2921 ****
  msgstr "Avisa si se usa una matriz de longitud variable."
  
  #: c-family/c.opt:1619
! #, fuzzy, no-c-format
! #| msgid "-Wvla-larger-than=<number>\tWarn on unbounded uses of variable-length arrays, and on bounded uses of variable-length arrays whose bound can be larger than <number> bytes. <number> bytes."
  msgid "-Wvla-larger-than=<number>\tWarn on unbounded uses of variable-length arrays, and on bounded uses of variable-length arrays whose bound can be larger than <number> bytes."
! msgstr "-Wvla-larger-than=<número>\tAdvierte de usos no acotados de arrays de longitud variable y de usos acotados de arrays de longitud variable cuyo límite pueda ser más grande que <número> bytes. <número> bytes"
  
  #: c-family/c.opt:1625
! #, fuzzy, no-c-format
! #| msgid "-Wno-vla-larger-than Disable Wvla-larger-than= warning.  Equivalent to Wvla-larger-than=<SIZE_MAX> or larger."
  msgid "Disable Wvla-larger-than= warning.  Equivalent to Wvla-larger-than=<SIZE_MAX> or larger."
! msgstr "-Wno-vla-larger-than Desactiva el aviso Wvla-larger-than=.  Equivalente a Wvla-larger-than=<MAX_TAMAÑO> o mayor."
  
  #: c-family/c.opt:1629
! #, fuzzy, no-c-format
! #| msgid "Warn about multiple declarations of the same object."
  msgid "Warn about mismatched declarations of VLA parameters."
! msgstr "Avisa sobre declaraciones múltiples del mismo objeto."
  
  #: c-family/c.opt:1633
! #, fuzzy, no-c-format
! #| msgid "Warn about deprecated compiler features"
  msgid "Warn about deprecated uses of volatile qualifier."
! msgstr "Avisa si se usan opciones de compilador obsoletas"
  
  #: c-family/c.opt:1637
  #, no-c-format
--- 2821,2844 ----
  msgstr "Avisa si se usa una matriz de longitud variable."
  
  #: c-family/c.opt:1619
! #, no-c-format
  msgid "-Wvla-larger-than=<number>\tWarn on unbounded uses of variable-length arrays, and on bounded uses of variable-length arrays whose bound can be larger than <number> bytes."
! msgstr "-Wvla-larger-than=<número>\tAdvierte de usos no acotados de arrays de longitud variable y de usos acotados de arrays de longitud variable cuyo límite pueda ser más grande que <número> bytes."
  
  #: c-family/c.opt:1625
! #, no-c-format
  msgid "Disable Wvla-larger-than= warning.  Equivalent to Wvla-larger-than=<SIZE_MAX> or larger."
! msgstr "Desactiva el aviso Wvla-larger-than=.  Equivalente a Wvla-larger-than=<MAX_TAMAÑO> o mayor."
  
  #: c-family/c.opt:1629
! #, no-c-format
  msgid "Warn about mismatched declarations of VLA parameters."
! msgstr "Avisa sobre declaraciones discrepantes de parámetros VLA."
  
  #: c-family/c.opt:1633
! #, no-c-format
  msgid "Warn about deprecated uses of volatile qualifier."
! msgstr "Advierte de usos obsoletos del cualificador volatile."
  
  #: c-family/c.opt:1637
  #, no-c-format
*************** msgstr "En C++, un valor diferente de ce
*** 2935,2941 ****
  #: c-family/c.opt:1649
  #, no-c-format
  msgid "Warn about xor operators where it appears the user meant exponentiation."
! msgstr ""
  
  #: c-family/c.opt:1653
  #, no-c-format
--- 2858,2864 ----
  #: c-family/c.opt:1649
  #, no-c-format
  msgid "Warn about xor operators where it appears the user meant exponentiation."
! msgstr "Advierte de operadores xor cuando parece que el usuario pretendía exponenciación."
  
  #: c-family/c.opt:1653
  #, no-c-format
*************** msgid "Warn when a literal '0' is used a
*** 2943,2952 ****
  msgstr "Avisa cuando se usa un '0' literal como puntero nulo."
  
  #: c-family/c.opt:1657
! #, fuzzy, no-c-format
! #| msgid "Warn about zero-length formats."
  msgid "Warn about accesses to interior zero-length array members."
! msgstr "Avisa sobre formatos de longitud cero."
  
  #: c-family/c.opt:1661
  #, no-c-format
--- 2866,2874 ----
  msgstr "Avisa cuando se usa un '0' literal como puntero nulo."
  
  #: c-family/c.opt:1657
! #, no-c-format
  msgid "Warn about accesses to interior zero-length array members."
! msgstr "Avisa sobre accesos a miembros de array interiores de longitud cero."
  
  #: c-family/c.opt:1661
  #, no-c-format
*************** msgid "Enforce class member access contr
*** 2964,2973 ****
  msgstr "Cumple las semánticas de control de acceso de miembros de clase."
  
  #: c-family/c.opt:1677
! #, fuzzy, no-c-format
! #| msgid "-fada-spec-parent=unit  Dump Ada specs as child units of given parent."
  msgid "-fada-spec-parent=unit\tDump Ada specs as child units of given parent."
! msgstr "-fada-spec-parent=unidad  Vuelca specs de Ada como unidades hijas del padre dado."
  
  #: c-family/c.opt:1681
  #, no-c-format
--- 2886,2894 ----
  msgstr "Cumple las semánticas de control de acceso de miembros de clase."
  
  #: c-family/c.opt:1677
! #, no-c-format
  msgid "-fada-spec-parent=unit\tDump Ada specs as child units of given parent."
! msgstr "-fada-spec-parent=unidad\tVuelca specs de Ada como unidades hijas del padre dado."
  
  #: c-family/c.opt:1681
  #, no-c-format
*************** msgid "Support C++17 allocation of over-
*** 2975,2984 ****
  msgstr "Admite alojamiento C++17 de tipos sobrealineados."
  
  #: c-family/c.opt:1685
! #, fuzzy, no-c-format
! #| msgid "-faligned-new=<N> Use C++17 over-aligned type allocation for alignments greater than N."
  msgid "-faligned-new=<N>\tUse C++17 over-aligned type allocation for alignments greater than N."
! msgstr "-faligned-new=<N> Usa alojamiento de tipo sobrealineado de C++17 para alineamientos mayores que N."
  
  #: c-family/c.opt:1696 c-family/c.opt:2017 c-family/c.opt:2430
  #: c-family/c.opt:2434 c-family/c.opt:2450
--- 2896,2904 ----
  msgstr "Admite alojamiento C++17 de tipos sobrealineados."
  
  #: c-family/c.opt:1685
! #, no-c-format
  msgid "-faligned-new=<N>\tUse C++17 over-aligned type allocation for alignments greater than N."
! msgstr "-faligned-new=<N>\tUsa alojamiento de tipo sobrealineado de C++17 para alineamientos mayores que N."
  
  #: c-family/c.opt:1696 c-family/c.opt:2017 c-family/c.opt:2430
  #: c-family/c.opt:2434 c-family/c.opt:2450
*************** msgstr "Reconoce la palabra clave \"asm\
*** 2994,3000 ****
  #: c-family/c.opt:1704
  #, no-c-format
  msgid "Assume C++ replaceable global operators new, new[], delete, delete[] don't read or write visible global state."
! msgstr ""
  
  #: c-family/c.opt:1712
  #, no-c-format
--- 2914,2920 ----
  #: c-family/c.opt:1704
  #, no-c-format
  msgid "Assume C++ replaceable global operators new, new[], delete, delete[] don't read or write visible global state."
! msgstr "Asume que los operadores globales C++ reemplazables new, new[], delete, delete[] no leen ni escriben el estado global visible."
  
  #: c-family/c.opt:1712
  #, no-c-format
*************** msgid "Enable the char8_t fundamental ty
*** 3012,3021 ****
  msgstr "Habilita el tipo fundamental char8_t y lo usa como el tipo para los literales de cadenas UTF-8 y de caracteres."
  
  #: c-family/c.opt:1811
! #, fuzzy, no-c-format
! #| msgid "Deprecated in GCC 8.  This switch has no effect."
  msgid "Removed in GCC 8.  This switch has no effect."
! msgstr "Obsoleto en GCC 8.  Esta opción no tiene efecto."
  
  #: c-family/c.opt:1815
  #, no-c-format
--- 2932,2940 ----
  msgstr "Habilita el tipo fundamental char8_t y lo usa como el tipo para los literales de cadenas UTF-8 y de caracteres."
  
  #: c-family/c.opt:1811
! #, no-c-format
  msgid "Removed in GCC 8.  This switch has no effect."
! msgstr "Eliminado en GCC 8.  Esta opción no tiene ningún efecto."
  
  #: c-family/c.opt:1815
  #, no-c-format
*************** msgid "Enable support for C++ concepts."
*** 3023,3037 ****
  msgstr "Activa el soporte para conceptos de C++."
  
  #: c-family/c.opt:1819
! #, fuzzy, no-c-format
! #| msgid "Deprecated in GCC 9.  This switch has no effect."
  msgid "Removed in GCC 15.  This switch has no effect."
! msgstr "Obsoleto en GCC 9.  Esta opción no tiene efecto."
  
  #: c-family/c.opt:1823
  #, no-c-format
  msgid "Specify maximum error replay depth during recursive diagnosis of a constraint satisfaction failure."
! msgstr ""
  
  #: c-family/c.opt:1827
  #, no-c-format
--- 2942,2955 ----
  msgstr "Activa el soporte para conceptos de C++."
  
  #: c-family/c.opt:1819
! #, no-c-format
  msgid "Removed in GCC 15.  This switch has no effect."
! msgstr "Eliminado en GCC 15.  Esta opción no tiene ningún efecto."
  
  #: c-family/c.opt:1823
  #, no-c-format
  msgid "Specify maximum error replay depth during recursive diagnosis of a constraint satisfaction failure."
! msgstr "Especifica la profundidad de reproducción de error máxima durante el diagnóstico recursivo de un fallo de satisfacción de restricciones."
  
  #: c-family/c.opt:1827
  #, no-c-format
*************** msgid "-fconstexpr-depth=<number>\tSpeci
*** 3049,3064 ****
  msgstr "-fconstexpr-depth-<número>\tEspecifica la profundidad de recursión constexpr máxima."
  
  #: c-family/c.opt:1843
! #, fuzzy, no-c-format
! #| msgid "-fconstexpr-depth=<number>\tSpecify maximum constexpr recursion depth."
  msgid "-fconstexpr-cache-depth=<number>\tSpecify maximum constexpr recursion cache depth."
! msgstr "-fconstexpr-depth-<número>\tEspecifica la profundidad de recursión constexpr máxima."
  
  #: c-family/c.opt:1847
! #, fuzzy, no-c-format
! #| msgid "difference of two pointer expressions is not a constant expression"
  msgid "Allow IEC559 floating point exceptions in constant expressions."
! msgstr "la diferencia de dos expresiones puntero no es una expresión constante"
  
  #: c-family/c.opt:1851
  #, no-c-format
--- 2967,2980 ----
  msgstr "-fconstexpr-depth-<número>\tEspecifica la profundidad de recursión constexpr máxima."
  
  #: c-family/c.opt:1843
! #, no-c-format
  msgid "-fconstexpr-cache-depth=<number>\tSpecify maximum constexpr recursion cache depth."
! msgstr "-fconstexpr-cache-depth-<número>\tEspecifica la profundidad de la caché de recursión constexpr máxima."
  
  #: c-family/c.opt:1847
! #, no-c-format
  msgid "Allow IEC559 floating point exceptions in constant expressions."
! msgstr "Permite las excepciones de coma flotante IEC559 en expresiones constantes."
  
  #: c-family/c.opt:1851
  #, no-c-format
*************** msgid "-fconstexpr-ops-limit=<number>\tS
*** 3071,3115 ****
  msgstr "-fconstexpr-ops-limit=<número>\tEspecifica el número máximo de operaciones constexpr durante una evaluación de constexpr."
  
  #: c-family/c.opt:1859
! #, fuzzy, no-c-format
! #| msgid "Warn about features not present in traditional C."
  msgid "Enable certain features present in drafts of C++ Contracts."
! msgstr "Avisa sobre características no presentes en C tradicional."
  
  #: c-family/c.opt:1872
  #, no-c-format
  msgid "-fcontract-assumption-mode=[on|off]\tEnable or disable treating axiom level contracts as assumptions (default on)."
! msgstr ""
  
  #: c-family/c.opt:1876
  #, no-c-format
  msgid "-fcontract-build-level=[off|default|audit]\tSpecify max contract level to generate runtime checks for."
! msgstr ""
  
  #: c-family/c.opt:1880
  #, no-c-format
  msgid "-fcontract-strict-declarations=[on|off]\tEnable or disable warnings on generalized redeclaration of functions with contracts (default off)."
! msgstr ""
  
  #: c-family/c.opt:1884
  #, no-c-format
  msgid "-fcontract-mode=[on|off]\tEnable or disable all contract facilities (default on)."
! msgstr ""
  
  #: c-family/c.opt:1888
  #, no-c-format
  msgid "-fcontract-continuation-mode=[on|off]\tEnable or disable contract continuation mode (default off)."
! msgstr ""
  
  #: c-family/c.opt:1892
  #, no-c-format
  msgid "-fcontract-role=<name>:<semantics>\tSpecify the semantics for all levels in a role (default, review), or a custom contract role with given semantics (ex: opt:assume,assume,assume)."
! msgstr ""
  
  #: c-family/c.opt:1896
  #, no-c-format
  msgid "-fcontract-semantic=<level>:<semantic>\tSpecify the concrete semantics for level."
! msgstr ""
  
  #: c-family/c.opt:1900
  #, no-c-format
--- 2987,3030 ----
  msgstr "-fconstexpr-ops-limit=<número>\tEspecifica el número máximo de operaciones constexpr durante una evaluación de constexpr."
  
  #: c-family/c.opt:1859
! #, no-c-format
  msgid "Enable certain features present in drafts of C++ Contracts."
! msgstr "Activa ciertas características presentes en los borradores de los contratos de C++ ."
  
  #: c-family/c.opt:1872
  #, no-c-format
  msgid "-fcontract-assumption-mode=[on|off]\tEnable or disable treating axiom level contracts as assumptions (default on)."
! msgstr "-fcontract-assumption-mode=[on|off]\tActiva o desactiva el tratamiento de las contracciones del nivel de axiomas como hipótesis (activo por defecto)."
  
  #: c-family/c.opt:1876
  #, no-c-format
  msgid "-fcontract-build-level=[off|default|audit]\tSpecify max contract level to generate runtime checks for."
! msgstr "-fcontract-build-level=[off|default|audit]\tEspecifca el máximo nivel de contrato para el cual se generarán comprobaciones en tiempo de ejecución."
  
  #: c-family/c.opt:1880
  #, no-c-format
  msgid "-fcontract-strict-declarations=[on|off]\tEnable or disable warnings on generalized redeclaration of functions with contracts (default off)."
! msgstr "-fcontract-strict-declarations=[on|off]\tActiva o desactiva los avisos sobre redeclaraciones generalizadas de funciones con contratos (desactivado por defecto)."
  
  #: c-family/c.opt:1884
  #, no-c-format
  msgid "-fcontract-mode=[on|off]\tEnable or disable all contract facilities (default on)."
! msgstr "-fcontract-mode=[on|off]\tActiva o desactiva todo lo relacionado con contratos (activado por defecto)."
  
  #: c-family/c.opt:1888
  #, no-c-format
  msgid "-fcontract-continuation-mode=[on|off]\tEnable or disable contract continuation mode (default off)."
! msgstr "-fcontract-continuation-mode=[on|off]\tActiva o desactiva el modo de continuación de contrato (desactivado por defecto)."
  
  #: c-family/c.opt:1892
  #, no-c-format
  msgid "-fcontract-role=<name>:<semantics>\tSpecify the semantics for all levels in a role (default, review), or a custom contract role with given semantics (ex: opt:assume,assume,assume)."
! msgstr "-fcontract-role=<name>:<semantics>\tEspecifica la semántica de todos los niveles en un rol («review» por defecto) o un rol de contrato personalizado con un significado determinado (ej: opt:assume,assume,assume)."
  
  #: c-family/c.opt:1896
  #, no-c-format
  msgid "-fcontract-semantic=<level>:<semantic>\tSpecify the concrete semantics for level."
! msgstr "-fcontract-semantic=<level>:<semantic>\tEspecifica la semántica concreta para el nivel."
  
  #: c-family/c.opt:1900
  #, no-c-format
*************** msgid "Print hierarchical comparisons wh
*** 3132,3141 ****
  msgstr "Imprime comparaciones jerárquicas cuando los tipos de plantilla no coinciden."
  
  #: c-family/c.opt:1924
! #, fuzzy, no-c-format
! #| msgid "default argument mismatch in overload resolution"
  msgid "Note all candidates during overload resolution failure."
! msgstr "no coincide el argumento por defecto en la resolución de sobrecarga"
  
  #: c-family/c.opt:1928
  #, no-c-format
--- 3047,3055 ----
  msgstr "Imprime comparaciones jerárquicas cuando los tipos de plantilla no coinciden."
  
  #: c-family/c.opt:1924
! #, no-c-format
  msgid "Note all candidates during overload resolution failure."
! msgstr "Anota todos los candidatos en los fallos de resolución de sobrecarga."
  
  #: c-family/c.opt:1928
  #, no-c-format
*************** msgid "Permit '$' as an identifier chara
*** 3148,3157 ****
  msgstr "Permite '$' como un identificador de carácter."
  
  #: c-family/c.opt:1936
! #, fuzzy, no-c-format
! #| msgid "-fmacro-prefix-map=<old>=<new> Map one directory name to another in __FILE__, __BASE_FILE__, and __builtin_FILE()."
  msgid "-fmacro-prefix-map=<old>=<new>\tMap one directory name to another in __FILE__, __BASE_FILE__, and __builtin_FILE()."
! msgstr "-fmacro-prefix-map=<viejo>=<nuevo> Asocia un nombre de directorio a otro en __FILE__, __BASE_FILE__, y __builtin_FILE()."
  
  #: c-family/c.opt:1940
  #, no-c-format
--- 3062,3070 ----
  msgstr "Permite '$' como un identificador de carácter."
  
  #: c-family/c.opt:1936
! #, no-c-format
  msgid "-fmacro-prefix-map=<old>=<new>\tMap one directory name to another in __FILE__, __BASE_FILE__, and __builtin_FILE()."
! msgstr "-fmacro-prefix-map=<viejo>=<nuevo>\tAsocia un nombre de directorio a otro en __FILE__, __BASE_FILE__, y __builtin_FILE()."
  
  #: c-family/c.opt:1940
  #, no-c-format
*************** msgid "Write all declarations as Ada cod
*** 3164,3173 ****
  msgstr "Escribe todas las declaraciones como código Ada solo para el fichero dado."
  
  #: c-family/c.opt:1951
! #, fuzzy, no-c-format
! #| msgid "Do not discard comments in macro expansions."
  msgid "Do not elide common elements in template comparisons."
! msgstr "No descarta comentarios en expansiones de macro."
  
  #: c-family/c.opt:1955
  #, no-c-format
--- 3077,3085 ----
  msgstr "Escribe todas las declaraciones como código Ada solo para el fichero dado."
  
  #: c-family/c.opt:1951
! #, no-c-format
  msgid "Do not elide common elements in template comparisons."
! msgstr "No elude comentarios comunes en comparaciones de plantillas."
  
  #: c-family/c.opt:1955
  #, no-c-format
*************** msgid "Support dynamic initialization of
*** 3195,3204 ****
  msgstr "Admite inicialización dinámica de variables locales de hilo en una unidad de traducción diferente."
  
  #: c-family/c.opt:1981
! #, fuzzy, no-c-format
! #| msgid "No calls in function %s\n"
  msgid "Fold calls to simple inline functions."
! msgstr "No hay llamadas en la función %s\n"
  
  #: c-family/c.opt:1988
  #, no-c-format
--- 3107,3115 ----
  msgstr "Admite inicialización dinámica de variables locales de hilo en una unidad de traducción diferente."
  
  #: c-family/c.opt:1981
! #, no-c-format
  msgid "Fold calls to simple inline functions."
! msgstr "Pliega llamadas en forma de funciones en línea."
  
  #: c-family/c.opt:1988
  #, no-c-format
*************** msgstr "Asume el entorno normal de ejecu
*** 3228,3234 ****
  #: c-family/c.opt:2021
  #, no-c-format
  msgid "Implement P2564 for consteval propagation."
! msgstr ""
  
  #: c-family/c.opt:2025
  #, no-c-format
--- 3139,3145 ----
  #: c-family/c.opt:2021
  #, no-c-format
  msgid "Implement P2564 for consteval propagation."
! msgstr "Implementa P2564 para la propagación de consteval."
  
  #: c-family/c.opt:2025
  #, no-c-format
*************** msgid "Export functions even if they can
*** 3236,3245 ****
  msgstr "Exporta funciones aun si pueden incluir en línea."
  
  #: c-family/c.opt:2029
! #, fuzzy, no-c-format
! #| msgid "Inline member functions by default"
  msgid "Make inline functions constexpr by default."
! msgstr "Incluye en línea a las funciones miembro por defecto"
  
  #: c-family/c.opt:2033
  #, no-c-format
--- 3147,3155 ----
  msgstr "Exporta funciones aun si pueden incluir en línea."
  
  #: c-family/c.opt:2029
! #, no-c-format
  msgid "Make inline functions constexpr by default."
! msgstr "Hace las funciones en línea constexpr por defecto."
  
  #: c-family/c.opt:2033
  #, no-c-format
*************** msgid "Allow implicit conversions betwee
*** 3267,3346 ****
  msgstr "Permite las conversiones implícitas entre vectores con números diferentes de subpartes y/o tipos de elementos diferentes."
  
  #: c-family/c.opt:2059
! #, fuzzy, no-c-format
! #| msgid "Enable C++ coroutines (experimental)."
  msgid "Enable C++20 Modules (experimental)."
! msgstr "Permite corrutinas C++ (experimental)."
  
  #: c-family/c.opt:2067
! #, fuzzy, no-c-format
! #| msgid "Enable C++ coroutines (experimental)."
  msgid "Enable C++ header module (experimental)."
! msgstr "Permite corrutinas C++ (experimental)."
  
  #: c-family/c.opt:2074
  #, no-c-format
  msgid "Member functions defined within their class are inline in module purview."
! msgstr ""
  
  #: c-family/c.opt:2078
  #, no-c-format
  msgid "Only emit Compiled Module Interface."
! msgstr ""
  
  #: c-family/c.opt:2082
  #, no-c-format
  msgid "Mapper for module to CMI files."
! msgstr ""
  
  #: c-family/c.opt:2086
! #, fuzzy, no-c-format
! #| msgid "Enable code hoisting."
  msgid "Enable lazy module importing."
! msgstr "Activa la elevación de código."
  
  #: c-family/c.opt:2094
! #, fuzzy, no-c-format
! #| msgid "Warn about semicolon after in-class function definition."
  msgid "Warn about macros that have conflicting header units definitions."
! msgstr "Advierte de punto y coma después de una definición de función dentro de una clase."
  
  #: c-family/c.opt:2098
! #, fuzzy, no-c-format
! #| msgid "return makes pointer from integer without a cast"
  msgid "Warn if pointers of distinct types are compared without a cast."
! msgstr "la devolución crea un puntero desde un entero sin una conversión"
  
  #: c-family/c.opt:2102
  #, no-c-format
  msgid "Note #include directives translated to import declarations."
! msgstr ""
  
  #: c-family/c.opt:2106
  #, no-c-format
  msgid "Note #include directives not translated to import declarations, and not known to be textual."
! msgstr ""
  
  #: c-family/c.opt:2110
  #, no-c-format
  msgid "Note a #include translation of a specific header."
! msgstr ""
  
  #: c-family/c.opt:2114
  #, no-c-format
  msgid "Note Compiled Module Interface pathnames."
! msgstr ""
  
  #: c-family/c.opt:2118
  #, no-c-format
  msgid "Note Compiled Module Interface pathname of a specific module or header-unit."
! msgstr ""
  
  #: c-family/c.opt:2122
! #, fuzzy, no-c-format
! #| msgid "ffixed-line-length-<number>\tSet the maximum line length to <number>"
  msgid "fmax-include-depth=<number> Set the maximum depth of the nested #include."
! msgstr "ffixed-line-length-<número>\tLimita la longitud máxima de línea a <número>"
  
  #: c-family/c.opt:2126
  #, no-c-format
--- 3177,3250 ----
  msgstr "Permite las conversiones implícitas entre vectores con números diferentes de subpartes y/o tipos de elementos diferentes."
  
  #: c-family/c.opt:2059
! #, no-c-format
  msgid "Enable C++20 Modules (experimental)."
! msgstr "Permite módulos C++ (experimental)."
  
  #: c-family/c.opt:2067
! #, no-c-format
  msgid "Enable C++ header module (experimental)."
! msgstr "Permite módulo cabecera C++ (experimental)."
  
  #: c-family/c.opt:2074
  #, no-c-format
  msgid "Member functions defined within their class are inline in module purview."
! msgstr "Las funciones miembro definidas dentro de sus clases se hacen en línea en el «module purview»."
  
  #: c-family/c.opt:2078
  #, no-c-format
  msgid "Only emit Compiled Module Interface."
! msgstr "Solo se emite el interfaz de módulo compilado."
  
  #: c-family/c.opt:2082
  #, no-c-format
  msgid "Mapper for module to CMI files."
! msgstr "Asociador de módulo a ficheros CMI."
  
  #: c-family/c.opt:2086
! #, no-c-format
  msgid "Enable lazy module importing."
! msgstr "Activa la importación de módulos perezosa."
  
  #: c-family/c.opt:2094
! #, no-c-format
  msgid "Warn about macros that have conflicting header units definitions."
! msgstr "Advierte de macros con definiciones de unidades de cabecera conflictivas."
  
  #: c-family/c.opt:2098
! #, no-c-format
  msgid "Warn if pointers of distinct types are compared without a cast."
! msgstr "Avisa si punteros de tipos distintos se comparan sin cast."
  
  #: c-family/c.opt:2102
  #, no-c-format
  msgid "Note #include directives translated to import declarations."
! msgstr "Nótese las directivas #include traducidas a declaraciones import."
  
  #: c-family/c.opt:2106
  #, no-c-format
  msgid "Note #include directives not translated to import declarations, and not known to be textual."
! msgstr "Nótese las directivas #include no traducidas a declaraciones import y no reconocidas como textuales."
  
  #: c-family/c.opt:2110
  #, no-c-format
  msgid "Note a #include translation of a specific header."
! msgstr "Nótese una traducción de #include de una cabecera específica."
  
  #: c-family/c.opt:2114
  #, no-c-format
  msgid "Note Compiled Module Interface pathnames."
! msgstr "Nótese nombres de rutas de interfaces de módulos compilados (Compiled Module Interface)."
  
  #: c-family/c.opt:2118
  #, no-c-format
  msgid "Note Compiled Module Interface pathname of a specific module or header-unit."
! msgstr "Nótese nombres de rutas de interfaces de módulos compilados (Compiled Module Interface) de un módulo específico o unidad de cabecera."
  
  #: c-family/c.opt:2122
! #, no-c-format
  msgid "fmax-include-depth=<number> Set the maximum depth of the nested #include."
! msgstr "fmax-include-depth-<número> Limita la máxima profundidad de #include anidados."
  
  #: c-family/c.opt:2126
  #, no-c-format
*************** msgid "Implement resolution of DR 150 fo
*** 3353,3362 ****
  msgstr "Implementa la resolución de DR 150 para coincidencias de argumentos de plantilla de plantilla."
  
  #: c-family/c.opt:2149
! #, fuzzy, no-c-format
! #| msgid "Generate code for NeXT (Apple Mac OS X) runtime environment."
  msgid "Generate code for NeXT (Apple macOS) runtime environment."
! msgstr "Genera código para el entorno de tiempo de ejecución NeXT (Apple Mac OS X)."
  
  #: c-family/c.opt:2153
  #, no-c-format
--- 3257,3265 ----
  msgstr "Implementa la resolución de DR 150 para coincidencias de argumentos de plantilla de plantilla."
  
  #: c-family/c.opt:2149
! #, no-c-format
  msgid "Generate code for NeXT (Apple macOS) runtime environment."
! msgstr "Genera código para el entorno de tiempo de ejecución NeXT (Apple macOS)."
  
  #: c-family/c.opt:2153
  #, no-c-format
*************** msgid "Treat the input file as already p
*** 3464,3479 ****
  msgstr "Trata al fichero de entrada como previamente preprocesado."
  
  #: c-family/c.opt:2274
! #, fuzzy, no-c-format
! #| msgid "-ftrack-macro-expansion=<0|1|2>  Track locations of tokens coming from macro expansion and display them in error messages."
  msgid "-ftrack-macro-expansion=<0|1|2>\tTrack locations of tokens coming from macro expansion and display them in error messages."
! msgstr "-ftrack-macro-expansion=<0|1|2>  Rastrea las ubicaciones de los elementos que provienen de la expansión de macros y los muestra en mensajes de error."
  
  #: c-family/c.opt:2278
! #, fuzzy, no-c-format
! #| msgid "-fno-pretty-templates Do not pretty-print template specializations as the template signature followed by the arguments."
  msgid "Do not pretty-print template specializations as the template signature followed by the arguments."
! msgstr "-fno-pretty-templates No da formato legible a las especializaciones de plantilla como la firma de plantilla seguida por los argumentos."
  
  #: c-family/c.opt:2282
  #, no-c-format
--- 3367,3380 ----
  msgstr "Trata al fichero de entrada como previamente preprocesado."
  
  #: c-family/c.opt:2274
! #, no-c-format
  msgid "-ftrack-macro-expansion=<0|1|2>\tTrack locations of tokens coming from macro expansion and display them in error messages."
! msgstr "-ftrack-macro-expansion=<0|1|2>\tRastrea las ubicaciones de los elementos que provienen de la expansión de macros y los muestra en mensajes de error."
  
  #: c-family/c.opt:2278
! #, no-c-format
  msgid "Do not pretty-print template specializations as the template signature followed by the arguments."
! msgstr "No hace especializaciones de plantilla pretty-print como la firma de plantilla seguida por los argumentos."
  
  #: c-family/c.opt:2282
  #, no-c-format
*************** msgstr "Trata los valores de retorno con
*** 3483,3489 ****
  #: c-family/c.opt:2286
  #, no-c-format
  msgid "Enable lifetime extension of range based for temporaries."
! msgstr ""
  
  #: c-family/c.opt:2290
  #, no-c-format
--- 3384,3390 ----
  #: c-family/c.opt:2286
  #, no-c-format
  msgid "Enable lifetime extension of range based for temporaries."
! msgstr "Activa la extensión del tiempo de vida de rango basado en temporales."
  
  #: c-family/c.opt:2290
  #, no-c-format
*************** msgid "Used in Fix-and-Continue mode to
*** 3491,3500 ****
  msgstr "Usa el modo Fix-and-Continue para indicar que los ficheros objeto se pueden intercambiar en tiempo de ejecución."
  
  #: c-family/c.opt:2294
! #, fuzzy, no-c-format
! #| msgid "Deprecated in GCC 9.  This switch has no effect."
  msgid "Removed in GCC 10.  This switch has no effect."
! msgstr "Obsoleto en GCC 9.  Esta opción no tiene efecto."
  
  #: c-family/c.opt:2298
  #, no-c-format
--- 3392,3400 ----
  msgstr "Usa el modo Fix-and-Continue para indicar que los ficheros objeto se pueden intercambiar en tiempo de ejecución."
  
  #: c-family/c.opt:2294
! #, no-c-format
  msgid "Removed in GCC 10.  This switch has no effect."
! msgstr "Eliminado en GCC 10.  Esta opción no tiene efecto."
  
  #: c-family/c.opt:2298
  #, no-c-format
*************** msgid "Generate run time type descriptor
*** 3502,3511 ****
  msgstr "Genera información de descriptor de tipo en tiempo de ejecución."
  
  #: c-family/c.opt:2302
! #, fuzzy, no-c-format
! #| msgid "Do not look for source files in standard path"
  msgid "Look for the main source file on the include path."
! msgstr "No buscar ficheros fuente en la ruta estándar"
  
  #: c-family/c.opt:2309 ada/gcc-interface/lang.opt:81
  #, no-c-format
--- 3402,3410 ----
  msgstr "Genera información de descriptor de tipo en tiempo de ejecución."
  
  #: c-family/c.opt:2302
! #, no-c-format
  msgid "Look for the main source file on the include path."
! msgstr "Busca el fichero fuente pricipal en la ruta de include."
  
  #: c-family/c.opt:2309 ada/gcc-interface/lang.opt:81
  #, no-c-format
*************** msgid "Conform to the ISO 2017 C++ stand
*** 3753,3774 ****
  msgstr "Conforma al estándar ISO 2017 C++."
  
  #: c-family/c.opt:2581 c-family/c.opt:2585
! #, fuzzy, no-c-format
! #| msgid "Conform to the ISO 2020(?) C++ draft standard (experimental and incomplete support)."
  msgid "Conform to the ISO 2020 C++ standard (experimental and incomplete support)."
! msgstr "Conforma al borrador del estándar ISO 2020(?) C++ (soporte experimental e incompleto)."
  
  #: c-family/c.opt:2589 c-family/c.opt:2593
! #, fuzzy, no-c-format
! #| msgid "Conform to the ISO 202X C standard draft (experimental and incomplete support)."
  msgid "Conform to the ISO 2023 C++ standard (published in 2024; experimental and incomplete support)."
! msgstr "Conforma al borrador del estándar ISO 202X C (soporte experimental e incompleto)"
  
  #: c-family/c.opt:2597 c-family/c.opt:2601
! #, fuzzy, no-c-format
! #| msgid "Conform to the ISO 2020(?) C++ draft standard (experimental and incomplete support)."
  msgid "Conform to the ISO 2026 C++ draft standard (experimental and incomplete support)."
! msgstr "Conforma al borrador del estándar ISO 2020(?) C++ (soporte experimental e incompleto)."
  
  #: c-family/c.opt:2605 c-family/c.opt:2767
  #, no-c-format
--- 3652,3670 ----
  msgstr "Conforma al estándar ISO 2017 C++."
  
  #: c-family/c.opt:2581 c-family/c.opt:2585
! #, no-c-format
  msgid "Conform to the ISO 2020 C++ standard (experimental and incomplete support)."
! msgstr "Conforma al estándar ISO 2020 C++ (soporte experimental e incompleto)."
  
  #: c-family/c.opt:2589 c-family/c.opt:2593
! #, no-c-format
  msgid "Conform to the ISO 2023 C++ standard (published in 2024; experimental and incomplete support)."
! msgstr "Conforma al estándar ISO 2023 C++ (publicado en 2024; soporte experimental e incompleto)"
  
  #: c-family/c.opt:2597 c-family/c.opt:2601
! #, no-c-format
  msgid "Conform to the ISO 2026 C++ draft standard (experimental and incomplete support)."
! msgstr "Conforma al borrador del estándar ISO 2026 C++ (soporte experimental e incompleto)."
  
  #: c-family/c.opt:2605 c-family/c.opt:2767
  #, no-c-format
*************** msgid "Conform to the ISO 2017 C standar
*** 3787,3808 ****
  msgstr "Conforma al estándar ISO 2017 C (publicado en 2018)."
  
  #: c-family/c.opt:2621 c-family/c.opt:2779
! #, fuzzy, no-c-format
! #| msgid "Conform to the ISO 2017 C standard (published in 2018)."
  msgid "Conform to the ISO 2023 C standard (published in 2024)."
! msgstr "Conforma al estándar ISO 2017 C (publicado en 2018)."
  
  #: c-family/c.opt:2625
! #, fuzzy, no-c-format
! #| msgid "Deprecated in favor of -std=c11."
  msgid "Deprecated in favor of -std=c23."
! msgstr "Obsoleto en favor de -std=c11."
  
  #: c-family/c.opt:2629
! #, fuzzy, no-c-format
! #| msgid "Conform to the ISO 202X C standard draft (experimental and incomplete support)."
  msgid "Conform to the ISO 202Y C standard draft (experimental and incomplete support)."
! msgstr "Conforma al borrador del estándar ISO 202X C (soporte experimental e incompleto)"
  
  #: c-family/c.opt:2633 c-family/c.opt:2637 c-family/c.opt:2751
  #, no-c-format
--- 3683,3701 ----
  msgstr "Conforma al estándar ISO 2017 C (publicado en 2018)."
  
  #: c-family/c.opt:2621 c-family/c.opt:2779
! #, no-c-format
  msgid "Conform to the ISO 2023 C standard (published in 2024)."
! msgstr "Conforma al estándar ISO 2023 C (publicado en 2024)."
  
  #: c-family/c.opt:2625
! #, no-c-format
  msgid "Deprecated in favor of -std=c23."
! msgstr "Obsoleto en favor de -std=c23."
  
  #: c-family/c.opt:2629
! #, no-c-format
  msgid "Conform to the ISO 202Y C standard draft (experimental and incomplete support)."
! msgstr "Conforma al borrador del estándar ISO 202Y C (soporte experimental e incompleto)"
  
  #: c-family/c.opt:2633 c-family/c.opt:2637 c-family/c.opt:2751
  #, no-c-format
*************** msgid "Conform to the ISO 2017 C++ stand
*** 3855,3876 ****
  msgstr "Conforma al estándar ISO 2017 C++ con extensiones GNU."
  
  #: c-family/c.opt:2683 c-family/c.opt:2687
! #, fuzzy, no-c-format
! #| msgid "Conform to the ISO 2020(?) C++ draft standard with GNU extensions (experimental and incomplete support)."
  msgid "Conform to the ISO 2020 C++ standard with GNU extensions (experimental and incomplete support)."
! msgstr "Conforma al borrador del estándar ISO 2020(?) C++ con extensiones GNU (soporte experimental e incompleto)."
  
  #: c-family/c.opt:2691 c-family/c.opt:2695
! #, fuzzy, no-c-format
! #| msgid "Conform to the ISO 202X C standard draft with GNU extensions (experimental and incomplete support)."
  msgid "Conform to the ISO 2023 C++ standard with GNU extensions (published in 2024; experimental and incomplete support)."
! msgstr "Conforma al borrador del estándar ISO 202X C con extensiones GNU (soporte experimental e incompleto)."
  
  #: c-family/c.opt:2699 c-family/c.opt:2703
! #, fuzzy, no-c-format
! #| msgid "Conform to the ISO 2020(?) C++ draft standard with GNU extensions (experimental and incomplete support)."
  msgid "Conform to the ISO 2026 C++ draft standard with GNU extensions (experimental and incomplete support)."
! msgstr "Conforma al borrador del estándar ISO 2020(?) C++ con extensiones GNU (soporte experimental e incompleto)."
  
  #: c-family/c.opt:2707
  #, no-c-format
--- 3748,3766 ----
  msgstr "Conforma al estándar ISO 2017 C++ con extensiones GNU."
  
  #: c-family/c.opt:2683 c-family/c.opt:2687
! #, no-c-format
  msgid "Conform to the ISO 2020 C++ standard with GNU extensions (experimental and incomplete support)."
! msgstr "Conforma al estándar ISO 2020 C++ con extensiones GNU (soporte experimental e incompleto)."
  
  #: c-family/c.opt:2691 c-family/c.opt:2695
! #, no-c-format
  msgid "Conform to the ISO 2023 C++ standard with GNU extensions (published in 2024; experimental and incomplete support)."
! msgstr "Conforma al estándar ISO 2023 C++ con extensiones GNU (publicado en 2024; soporte experimental e incompleto)."
  
  #: c-family/c.opt:2699 c-family/c.opt:2703
! #, no-c-format
  msgid "Conform to the ISO 2026 C++ draft standard with GNU extensions (experimental and incomplete support)."
! msgstr "Conforma al borrador del estándar ISO 2026 C++ con extensiones GNU (soporte experimental e incompleto)."
  
  #: c-family/c.opt:2707
  #, no-c-format
*************** msgid "Conform to the ISO 2017 C standar
*** 3888,3909 ****
  msgstr "Conforma al estándar ISO 2017 C (publicado en 2018) con extensiones GNU."
  
  #: c-family/c.opt:2723
! #, fuzzy, no-c-format
! #| msgid "Conform to the ISO 2017 C standard (published in 2018) with GNU extensions."
  msgid "Conform to the ISO 2023 C standard (published in 2024) with GNU extensions."
! msgstr "Conforma al estándar ISO 2017 C (publicado en 2018) con extensiones GNU."
  
  #: c-family/c.opt:2727
! #, fuzzy, no-c-format
! #| msgid "Deprecated in favor of -std=gnu11."
  msgid "Deprecated in favor of -std=gnu23."
! msgstr "Obsoleto en favor de -std=gnu11."
  
  #: c-family/c.opt:2731
! #, fuzzy, no-c-format
! #| msgid "Conform to the ISO 202X C standard draft with GNU extensions (experimental and incomplete support)."
  msgid "Conform to the ISO 202Y C standard draft with GNU extensions (experimental and incomplete support)."
! msgstr "Conforma al borrador del estándar ISO 202X C con extensiones GNU (soporte experimental e incompleto)."
  
  #: c-family/c.opt:2735 c-family/c.opt:2739
  #, no-c-format
--- 3778,3796 ----
  msgstr "Conforma al estándar ISO 2017 C (publicado en 2018) con extensiones GNU."
  
  #: c-family/c.opt:2723
! #, no-c-format
  msgid "Conform to the ISO 2023 C standard (published in 2024) with GNU extensions."
! msgstr "Conforma al estándar ISO 2023 C (publicado en 2024) con extensiones GNU."
  
  #: c-family/c.opt:2727
! #, no-c-format
  msgid "Deprecated in favor of -std=gnu23."
! msgstr "Obsoleto en favor de -std=gnu23."
  
  #: c-family/c.opt:2731
! #, no-c-format
  msgid "Conform to the ISO 202Y C standard draft with GNU extensions (experimental and incomplete support)."
! msgstr "Conforma al borrador del estándar ISO 202Y C con extensiones GNU (soporte experimental e incompleto)."
  
  #: c-family/c.opt:2735 c-family/c.opt:2739
  #, no-c-format
*************** msgstr "No predefine las macros específ
*** 3953,3970 ****
  #: cobol/lang.opt:48
  #, no-c-format
  msgid "Accept COBOL constructs used by non-ISO compilers"
! msgstr ""
  
  #: cobol/lang.opt:67
! #, fuzzy, no-c-format
! #| msgid "-fhandle-exceptions has been renamed -fexceptions (and is now on by default)"
  msgid "-fcobol-exceptions=<n>\tEnable some exceptions by default"
! msgstr "se renombró -fhandle-exceptions a -fexceptions (y ahora está activado por defecto)"
  
  #: cobol/lang.opt:71
  #, no-c-format
  msgid "Define alternative implicit copybook filename extension"
! msgstr ""
  
  #: cobol/lang.opt:75
  #, no-c-format
--- 3840,3856 ----
  #: cobol/lang.opt:48
  #, no-c-format
  msgid "Accept COBOL constructs used by non-ISO compilers"
! msgstr "Acepta construcciones de COBOL utilizadas por compiladores no ISO"
  
  #: cobol/lang.opt:67
! #, no-c-format
  msgid "-fcobol-exceptions=<n>\tEnable some exceptions by default"
! msgstr "-fcobol-exceptions=<n>\tHabilita algunas excepciones por defecto"
  
  #: cobol/lang.opt:71
  #, no-c-format
  msgid "Define alternative implicit copybook filename extension"
! msgstr "Define extensión de nombre de fichero copybook implícita alternativa"
  
  #: cobol/lang.opt:75
  #, no-c-format
*************** msgstr ""
*** 3973,4031 ****
  
  # No me gusta mucho esta traducción. cfuga
  #: cobol/lang.opt:79
! #, fuzzy, no-c-format
! #| msgid "Enable backend debugging."
  msgid "Enable Cobol lex debugging"
! msgstr "Habilita la depuración del extremo trasero."
  
  #: cobol/lang.opt:91
  #, no-c-format
  msgid "-findicator-column=<n>\tColumn after which Region A begins"
! msgstr ""
  
  #: cobol/lang.opt:95
  #, no-c-format
  msgid "-finternal-ebcdic\tInternal processing is in EBCDIC Code Page 1140"
! msgstr ""
  
  #: cobol/lang.opt:99
  #, no-c-format
  msgid "Enable/disable static linkage for CALL literals"
! msgstr ""
  
  # No me gusta mucho esta traducción. cfuga
  #: cobol/lang.opt:103
! #, fuzzy, no-c-format
! #| msgid "Enable backend debugging."
  msgid "Enable Cobol parser debugging"
! msgstr "Habilita la depuración del extremo trasero."
  
  # No me gusta mucho esta traducción. cfuga
  #: cobol/lang.opt:107
! #, fuzzy, no-c-format
! #| msgid "Enable backend debugging."
  msgid "Enable Cobol yacc debugging"
! msgstr "Habilita la depuración del extremo trasero."
  
  #: cobol/lang.opt:111
  #, no-c-format
  msgid "preprocess <source_filter> before compiling"
! msgstr ""
  
  #: cobol/lang.opt:131
  #, no-c-format
  msgid "-main\tThe first program-id in the next source file is called by a generated main() entry point"
! msgstr ""
  
  #: cobol/lang.opt:135
  #, no-c-format
  msgid "-main=<source_file> source_file/PROGRAM-ID is called by the generated main()"
! msgstr ""
  
  #: cobol/lang.opt:139
  #, no-c-format
  msgid "-nomain\tNo main() function is created from COBOL source files"
! msgstr ""
  
  #: ada/gcc-interface/lang.opt:61
  #, no-c-format
--- 3859,3914 ----
  
  # No me gusta mucho esta traducción. cfuga
  #: cobol/lang.opt:79
! #, no-c-format
  msgid "Enable Cobol lex debugging"
! msgstr "Habilita la depuración lex de Cobol"
  
  #: cobol/lang.opt:91
  #, no-c-format
  msgid "-findicator-column=<n>\tColumn after which Region A begins"
! msgstr "-findicator-column=<n>\tColumna tras la cual comienza la Región A"
  
  #: cobol/lang.opt:95
  #, no-c-format
  msgid "-finternal-ebcdic\tInternal processing is in EBCDIC Code Page 1140"
! msgstr "-finternal-ebcdic\tProcesamiento interno en EBCDIC página de código 1140"
  
  #: cobol/lang.opt:99
  #, no-c-format
  msgid "Enable/disable static linkage for CALL literals"
! msgstr "Activa/desactiva el enlazamiento estático de literales CALL"
  
  # No me gusta mucho esta traducción. cfuga
  #: cobol/lang.opt:103
! #, no-c-format
  msgid "Enable Cobol parser debugging"
! msgstr "Habilita la depuración del analizador de Cobol"
  
  # No me gusta mucho esta traducción. cfuga
  #: cobol/lang.opt:107
! #, no-c-format
  msgid "Enable Cobol yacc debugging"
! msgstr "Habilita la depuración de yacc de Cobol"
  
  #: cobol/lang.opt:111
  #, no-c-format
  msgid "preprocess <source_filter> before compiling"
! msgstr "preprocesa <filtro_fuente> antes de compilar"
  
  #: cobol/lang.opt:131
  #, no-c-format
  msgid "-main\tThe first program-id in the next source file is called by a generated main() entry point"
! msgstr "-main\tEl primer id de programa en el siguiente fichero fuente lo llama un punto de entrada main() generado"
  
  #: cobol/lang.opt:135
  #, no-c-format
  msgid "-main=<source_file> source_file/PROGRAM-ID is called by the generated main()"
! msgstr "-main=<fichero_fuente> fichero_fuente/ID-PROGRAMA lo llama el main() generado"
  
  #: cobol/lang.opt:139
  #, no-c-format
  msgid "-nomain\tNo main() function is created from COBOL source files"
! msgstr "-nomain\tNo se crea ninguna función main() desde los ficheros fuente COBOL"
  
  #: ada/gcc-interface/lang.opt:61
  #, no-c-format
*************** msgid "Warn about casts that will produc
*** 4083,4097 ****
  msgstr "Avisa sobre conversiones que darán resultado nulo."
  
  #: d/lang.opt:143
! #, fuzzy, no-c-format
! #| msgid "Warn when a built-in function is declared with the wrong signature."
  msgid "Warn when a special enum is declared with the wrong base type."
! msgstr "Avisa cuando una función interna se declara con una firma incorrecta."
  
  #: d/lang.opt:151
  #, no-c-format
  msgid "Warn from speculative compiles such as __traits(compiles)."
! msgstr ""
  
  #: d/lang.opt:163
  #, no-c-format
--- 3966,3979 ----
  msgstr "Avisa sobre conversiones que darán resultado nulo."
  
  #: d/lang.opt:143
! #, no-c-format
  msgid "Warn when a special enum is declared with the wrong base type."
! msgstr "Avisa cuando un enum especial se declara con un tipo base incorrecto."
  
  #: d/lang.opt:151
  #, no-c-format
  msgid "Warn from speculative compiles such as __traits(compiles)."
! msgstr "Advierte de compilaciones especulativas como __traits(compiles)."
  
  #: d/lang.opt:163
  #, no-c-format
*************** msgstr "-fbounds-check=[on|safeonly|off]
*** 4136,4142 ****
  #: d/lang.opt:240
  #, no-c-format
  msgid "-fcheckaction=[throw,halt,context]\tBehavior on contract failure."
! msgstr ""
  
  #: d/lang.opt:256
  #, no-c-format
--- 4018,4024 ----
  #: d/lang.opt:240
  #, no-c-format
  msgid "-fcheckaction=[throw,halt,context]\tBehavior on contract failure."
! msgstr "-fcheckaction=[throw,halt,context]\tComportamiento ante falle de contrato."
  
  #: d/lang.opt:256
  #, no-c-format
*************** msgid "Compile in debug code."
*** 4144,4153 ****
  msgstr "Compila en código de depuración."
  
  #: d/lang.opt:260
! #, fuzzy, no-c-format
! #| msgid "-fdebug=<level|ident>\tCompile in debug code, code <= <level>, or code identified by <ident>."
  msgid "-fdebug=<ident>\tCompile in debug code identified by <ident>."
! msgstr "-fdebug=<level|ident>\tCompila en código de depuración, código <= <nivel>, o código identificado por <ident>."
  
  #: d/lang.opt:264
  #, no-c-format
--- 4026,4034 ----
  msgstr "Compila en código de depuración."
  
  #: d/lang.opt:260
! #, no-c-format
  msgid "-fdebug=<ident>\tCompile in debug code identified by <ident>."
! msgstr "-fdebug=<ident>\tCompila en código de depuración identificado por <ident>."
  
  #: d/lang.opt:264
  #, no-c-format
*************** msgstr "Asume que existen bibliotecas D
*** 4177,4200 ****
  #: d/lang.opt:284
  #, no-c-format
  msgid "Add comments for ignored declarations in the generated C++ header."
! msgstr ""
  
  #: d/lang.opt:288
! #, fuzzy, no-c-format
! #| msgid "-fdump-go-spec=filename\tWrite all declarations to file as Go code."
  msgid "-fdump-cxx-spec=<filename>\tWrite all declarations as C++ code to <filename>."
! msgstr "-fdump-go-spec=fichero\tEscribe todas las declaraciones al fichero como código Go."
  
  #: d/lang.opt:292
! #, fuzzy, no-c-format
! #| msgid "Display the code tree after parsing; deprecated option."
  msgid "Display the frontend AST after parsing and semantic passes."
! msgstr "Muestra el árbol del código después de analizar; opción obsoleta."
  
  #: d/lang.opt:300
  #, no-c-format
  msgid "-fextern-std=<standard>\tSet C++ name mangling compatibility with <standard>."
! msgstr ""
  
  #: d/lang.opt:328
  #, no-c-format
--- 4058,4079 ----
  #: d/lang.opt:284
  #, no-c-format
  msgid "Add comments for ignored declarations in the generated C++ header."
! msgstr "Añade comentarios para declaraciones descartadas en la cabecera C++ generada."
  
  #: d/lang.opt:288
! #, no-c-format
  msgid "-fdump-cxx-spec=<filename>\tWrite all declarations as C++ code to <filename>."
! msgstr "-fdump-cxx-spec=<fichero>\tEscribe todas las declaraciones como código C++ a <fichero>."
  
  #: d/lang.opt:292
! #, no-c-format
  msgid "Display the frontend AST after parsing and semantic passes."
! msgstr "Muestra el frontal AST después de los pases de análisis sintáctico y semántico."
  
  #: d/lang.opt:300
  #, no-c-format
  msgid "-fextern-std=<standard>\tSet C++ name mangling compatibility with <standard>."
! msgstr "-fextern-std=<estándar>\tEstablece la compatibilidad de «mangling» de nombres C++ con <estándar>."
  
  #: d/lang.opt:328
  #, no-c-format
*************** msgid "Ignore unsupported pragmas."
*** 4202,4217 ****
  msgstr "Hace caso omiso de pragmas no admitidas."
  
  #: d/lang.opt:332
! #, fuzzy, no-c-format
! #| msgid "unsupported wide integer operation"
  msgid "Include imported modules in the compilation."
! msgstr "operación de enteros anchos sin soporte"
  
  #: d/lang.opt:336
! #, fuzzy, no-c-format
! #| msgid "Generate code for built-in atomic operations."
  msgid "Generate code for class invariant contracts."
! msgstr "Genera código para operaciones atómicas internas."
  
  #: d/lang.opt:340
  #, no-c-format
--- 4081,4094 ----
  msgstr "Hace caso omiso de pragmas no admitidas."
  
  #: d/lang.opt:332
! #, no-c-format
  msgid "Include imported modules in the compilation."
! msgstr "Incluye módulos importados en la compilación."
  
  #: d/lang.opt:336
! #, no-c-format
  msgid "Generate code for class invariant contracts."
! msgstr "Genera código para contratos invariantes de clase."
  
  #: d/lang.opt:340
  #, no-c-format
*************** msgid "-fmodule-file=<package.module>=<f
*** 4224,4233 ****
  msgstr "-fmodule-file=<paquete.módulo>=<especfich>\tutiliza <especfich> como fichero fuente para <paquete.módulo>."
  
  #: d/lang.opt:348
! #, fuzzy, no-c-format
! #| msgid "Generate code for the user mode."
  msgid "Generate ModuleInfo struct for output module."
! msgstr "Genera código para el modo de usuario."
  
  #: d/lang.opt:352
  #, no-c-format
--- 4101,4109 ----
  msgstr "-fmodule-file=<paquete.módulo>=<especfich>\tutiliza <especfich> como fichero fuente para <paquete.módulo>."
  
  #: d/lang.opt:348
! #, no-c-format
  msgid "Generate ModuleInfo struct for output module."
! msgstr "Genera la estructura ModuleInfo para el módulo de salida."
  
  #: d/lang.opt:352
  #, no-c-format
*************** msgstr "Genera código para contratos de
*** 4247,4358 ****
  #: d/lang.opt:364
  #, no-c-format
  msgid "Turn on all upcoming D language features."
! msgstr ""
  
  #: d/lang.opt:368
  #, no-c-format
  msgid "Implement D bit-fields."
! msgstr ""
  
  #: d/lang.opt:372
  #, no-c-format
  msgid "Implement DIP1000: Scoped pointers."
! msgstr ""
  
  #: d/lang.opt:376
  #, no-c-format
  msgid "Implement DIP1008: Allow exceptions in @nogc code."
! msgstr ""
  
  #: d/lang.opt:380
! #, fuzzy, no-c-format
! #| msgid "malformed spec function arguments"
  msgid "Implement DIP1021: Mutable function arguments."
! msgstr "argumentos de la función de especificación malformados"
  
  #: d/lang.opt:384
  #, no-c-format
  msgid "Destruct fields of partially constructed objects."
! msgstr ""
  
  #: d/lang.opt:388
  #, no-c-format
  msgid "Use field-wise comparisons for struct equality."
! msgstr ""
  
  #: d/lang.opt:392
  #, no-c-format
  msgid "When a symbol is resolved, check `alias this' scope before going to upper scopes."
! msgstr ""
  
  #: d/lang.opt:396
  #, no-c-format
  msgid "Disallow unsound immutable conversions that were formerly incorrectly permitted."
! msgstr ""
  
  #: d/lang.opt:400
  #, no-c-format
  msgid "Implement 'in' parameters to mean scope const."
! msgstr ""
  
  #: d/lang.opt:404
  #, no-c-format
  msgid "Implement 'in' contracts of overridden methods to be a superset of parent contract."
! msgstr ""
  
  #: d/lang.opt:408
! #, fuzzy, no-c-format
! #| msgid "Consider access to byte sized memory slow."
  msgid "Disable access to shared memory objects."
! msgstr "Considera lento el acceso a memoria de tamaño byte."
  
  #: d/lang.opt:412
! #, fuzzy, no-c-format
! #| msgid "Inline member functions by default"
  msgid "Enable safety checks on all functions by default."
! msgstr "Incluye en línea a las funciones miembro por defecto"
  
  #: d/lang.opt:416
! #, fuzzy, no-c-format
! #| msgid "cannot pass rvalue to reference parameter"
  msgid "Enable rvalue arguments to ref parameters."
! msgstr "no se puede pasar un valor-r a un parámetro de referencia"
  
  #: d/lang.opt:420
  #, no-c-format
  msgid "Disable access to variables marked `@system' from @safe code."
! msgstr ""
  
  #: d/lang.opt:424
! #, fuzzy, no-c-format
! #| msgid "Display the compiler's version."
  msgid "Compile release version."
! msgstr "Muestra la versión del compilador."
  
  #: d/lang.opt:428
  #, no-c-format
  msgid "Turn off all revertable D language features."
! msgstr ""
  
  #: d/lang.opt:432
  #, no-c-format
  msgid "Revert DIP1000: Scoped pointers."
! msgstr ""
  
  #: d/lang.opt:436
  #, no-c-format
  msgid "Don't destruct fields of partially constructed objects."
! msgstr ""
  
  #: d/lang.opt:440
  #, no-c-format
  msgid "Don't use C-style integral promotion for unary '+', '-' and '~'."
! msgstr ""
  
  #: d/lang.opt:448
  #, no-c-format
  msgid "-fsave-mixins=<filename>\tExpand and save mixins to file specified by <filename>."
! msgstr ""
  
  #: d/lang.opt:452
  #, no-c-format
--- 4123,4229 ----
  #: d/lang.opt:364
  #, no-c-format
  msgid "Turn on all upcoming D language features."
! msgstr "Activa todas las características venideras del lenguaje D"
  
  #: d/lang.opt:368
  #, no-c-format
  msgid "Implement D bit-fields."
! msgstr "Implementa campos de bit de D."
  
  #: d/lang.opt:372
  #, no-c-format
  msgid "Implement DIP1000: Scoped pointers."
! msgstr "Implementa DIP1000: punteros con alcance."
  
  #: d/lang.opt:376
  #, no-c-format
  msgid "Implement DIP1008: Allow exceptions in @nogc code."
! msgstr "Implementa DIP1008: permite excepciones en código @nogc."
  
  #: d/lang.opt:380
! #, no-c-format
  msgid "Implement DIP1021: Mutable function arguments."
! msgstr "Implement DIP1021: argumentos de funciones mutables."
  
  #: d/lang.opt:384
  #, no-c-format
  msgid "Destruct fields of partially constructed objects."
! msgstr "Destruye campos de objetos parcialmente construidos."
  
  #: d/lang.opt:388
  #, no-c-format
  msgid "Use field-wise comparisons for struct equality."
! msgstr "Utiliza comparaciones campo a campo para igualdad de estructuras."
  
  #: d/lang.opt:392
  #, no-c-format
  msgid "When a symbol is resolved, check `alias this' scope before going to upper scopes."
! msgstr "Cuando se resuelve un símbolo, comprueba el alcance de «alias this» antes de acudir a alcances superiores."
  
  #: d/lang.opt:396
  #, no-c-format
  msgid "Disallow unsound immutable conversions that were formerly incorrectly permitted."
! msgstr "Impide conversiones inmutables defectuosas que anteriormente se permitieron incorrectamente."
  
  #: d/lang.opt:400
  #, no-c-format
  msgid "Implement 'in' parameters to mean scope const."
! msgstr "Implementa parámetros «in» con el significado de «scope const»."
  
  #: d/lang.opt:404
  #, no-c-format
  msgid "Implement 'in' contracts of overridden methods to be a superset of parent contract."
! msgstr "Implementa contratos «in» de métodos anulados como superconjunto del contrato."
  
  #: d/lang.opt:408
! #, no-c-format
  msgid "Disable access to shared memory objects."
! msgstr "Deshabilita el acceso a los objetos de memoria compartida."
  
  #: d/lang.opt:412
! #, no-c-format
  msgid "Enable safety checks on all functions by default."
! msgstr "Habilita las comprobaciones de seguridad en todas las funciones por defecto."
  
  #: d/lang.opt:416
! #, no-c-format
  msgid "Enable rvalue arguments to ref parameters."
! msgstr "Habilita argumentos valor-r a parámetros de referencia."
  
  #: d/lang.opt:420
  #, no-c-format
  msgid "Disable access to variables marked `@system' from @safe code."
! msgstr "Deshabilita el acceso a variables marcadas «@system» desde código @safe."
  
  #: d/lang.opt:424
! #, no-c-format
  msgid "Compile release version."
! msgstr "Compila la versión «release»."
  
  #: d/lang.opt:428
  #, no-c-format
  msgid "Turn off all revertable D language features."
! msgstr "Desactiva todas las características reversibles del lenguaje D."
  
  #: d/lang.opt:432
  #, no-c-format
  msgid "Revert DIP1000: Scoped pointers."
! msgstr "Revierte DIP1000: punteros con alcance."
  
  #: d/lang.opt:436
  #, no-c-format
  msgid "Don't destruct fields of partially constructed objects."
! msgstr "No destruye campos de objetos parcialmente construidos."
  
  #: d/lang.opt:440
  #, no-c-format
  msgid "Don't use C-style integral promotion for unary '+', '-' and '~'."
! msgstr "No utiliza la promoción de enteros estilo C para los unitarios '+', '-' y '~'."
  
  #: d/lang.opt:448
  #, no-c-format
  msgid "-fsave-mixins=<filename>\tExpand and save mixins to file specified by <filename>."
! msgstr "-fsave-mixins=<fichero>\tExpande y guarda «mixins» en <fichero>."
  
  #: d/lang.opt:452
  #, no-c-format
*************** msgid "Generate code for switches withou
*** 4360,4369 ****
  msgstr "Genera código para las opciones sin caso predefinido."
  
  #: d/lang.opt:456
! #, fuzzy, no-c-format
! #| msgid "List information on all language changes."
  msgid "List information on all D language transitions."
! msgstr "Muestra información sobre todos los cambios del lenguaje."
  
  #: d/lang.opt:460
  #, no-c-format
--- 4231,4239 ----
  msgstr "Genera código para las opciones sin caso predefinido."
  
  #: d/lang.opt:456
! #, no-c-format
  msgid "List information on all D language transitions."
! msgstr "Muestra información sobre todas las transiciones del lenguaje D."
  
  #: d/lang.opt:460
  #, no-c-format
*************** msgid "List all non-mutable fields which
*** 4371,4391 ****
  msgstr "Enumera todos los campos no mutables que ocupan la instancia de un objeto."
  
  #: d/lang.opt:464
! #, fuzzy, no-c-format
! #| msgid "List all usages of complex or imaginary types."
  msgid "List all usages of 'in' on parameter."
! msgstr "Enumera todos los usos de los tipos complejo o imaginario."
  
  #: d/lang.opt:468
  #, no-c-format
  msgid "List all hidden GC allocations."
! msgstr ""
  
  #: d/lang.opt:472
! #, fuzzy, no-c-format
! #| msgid "Enable automatic template instantiation."
  msgid "List statistics on template instantiations."
! msgstr "Activa la instanciación automática de plantillas."
  
  #: d/lang.opt:476
  #, no-c-format
--- 4241,4259 ----
  msgstr "Enumera todos los campos no mutables que ocupan la instancia de un objeto."
  
  #: d/lang.opt:464
! #, no-c-format
  msgid "List all usages of 'in' on parameter."
! msgstr "Enumera todos los usos de 'in' en parámetro."
  
  #: d/lang.opt:468
  #, no-c-format
  msgid "List all hidden GC allocations."
! msgstr "Enumera todas las reservas GC ocultas."
  
  #: d/lang.opt:472
! #, no-c-format
  msgid "List statistics on template instantiations."
! msgstr "Muestra una lista de estadísticas sobre instanciaciones de plantillas."
  
  #: d/lang.opt:476
  #, no-c-format
*************** msgid "List all variables going into thr
*** 4393,4414 ****
  msgstr "Enumera todas las variables que van al almacenamiento local del hilo."
  
  #: d/lang.opt:480
! #, fuzzy, no-c-format
! #| msgid "Compile with 32-bit integer mode"
  msgid "Compile in unittest code."
! msgstr "Compila con el modo entero de 32-bit"
  
  #: d/lang.opt:484
! #, fuzzy, no-c-format
! #| msgid "-fdebug=<level|ident>\tCompile in debug code, code <= <level>, or code identified by <ident>."
  msgid "-fversion=<ident>\tCompile in version code identified by <ident>."
! msgstr "-fdebug=<level|ident>\tCompila en código de depuración, código <= <nivel>, o código identificado por <ident>."
  
  #: d/lang.opt:488
! #, fuzzy, no-c-format
! #| msgid "Emit implicit instantiations of templates."
  msgid "Emit template instantiations as weak symbols."
! msgstr "Emite instanciaciones implícitas de plantillas."
  
  #: d/lang.opt:508
  #, no-c-format
--- 4261,4279 ----
  msgstr "Enumera todas las variables que van al almacenamiento local del hilo."
  
  #: d/lang.opt:480
! #, no-c-format
  msgid "Compile in unittest code."
! msgstr "Compila en código unittest."
  
  #: d/lang.opt:484
! #, no-c-format
  msgid "-fversion=<ident>\tCompile in version code identified by <ident>."
! msgstr "-fversion=<ident>\tCompila en código de versión identificado por <ident>."
  
  #: d/lang.opt:488
! #, no-c-format
  msgid "Emit template instantiations as weak symbols."
! msgstr "Emite instanciaciones de plantillas como símbolos débiles."
  
  #: d/lang.opt:508
  #, no-c-format
*************** msgstr "Enlaza la biblioteca D estándar
*** 4428,4596 ****
  #: m2/lang.opt:35
  #, no-c-format
  msgid "turns on case statement label compile time checking when using an expression of an enum type."
! msgstr ""
  
  #: m2/lang.opt:39
  #, no-c-format
  msgid "compiler checks to force definition module procedure parameter names with their implementation module counterpart"
! msgstr ""
  
  #: m2/lang.opt:43
  #, no-c-format
  msgid "compiler warns if a cast is being used on types of differing sizes"
! msgstr ""
  
  #: m2/lang.opt:47
  #, no-c-format
  msgid "inform user which parameters will be passed by reference"
! msgstr ""
  
  #: m2/lang.opt:51
  #, no-c-format
  msgid "extra compile time semantic checking, typically tries to catch poor programming style"
! msgstr ""
  
  #: m2/lang.opt:55
  #, no-c-format
  msgid "turns on compile time analysis in the first basic block of a procedure detecting access to uninitialized data."
! msgstr ""
  
  #: m2/lang.opt:59
  #, no-c-format
  msgid "turns on compile time analysis to detect access to uninitialized variables, the checking can be specified by: known,cond,all."
! msgstr ""
  
  #: m2/lang.opt:63
  #, no-c-format
  msgid "automatically initializes all pointers to NIL"
! msgstr ""
  
  #: m2/lang.opt:67
  #, no-c-format
  msgid "turns on runtime subrange, array index and indirection via NIL pointer checking"
! msgstr ""
  
  #: m2/lang.opt:71
  #, no-c-format
  msgid "turns on runtime checking to check whether a CASE statement requires an ELSE clause when one was not specified"
! msgstr ""
  
  #: m2/lang.opt:75
  #, no-c-format
  msgid "use cpp to preprocess the module"
! msgstr ""
  
  #: m2/lang.opt:79 m2/lang.opt:83
  #, no-c-format
  msgid "passed to the preprocessor if -fcpp is used (internal switch)"
! msgstr ""
  
  #: m2/lang.opt:87
  #, no-c-format
  msgid "call a real function, rather than the builtin equivalent"
! msgstr ""
  
  #: m2/lang.opt:91
! #, fuzzy, no-c-format
! #| msgid "Set name of output ALI file (internal switch)."
  msgid "turn on internal debugging of the compiler (internal switch)"
! msgstr "Establece el nombre del fichero ALI de salida (opción interna)."
  
  #: m2/lang.opt:95
  #, no-c-format
  msgid "turn on tracing of procedure line numbers (internal switch)"
! msgstr ""
  
  #: m2/lang.opt:99
  #, no-c-format
  msgid "recognize the specified suffix as a definition module filename"
! msgstr ""
  
  #: m2/lang.opt:103
  #, no-c-format
  msgid "display all inbuilt system items"
! msgstr ""
  
  #: m2/lang.opt:107
  #, no-c-format
  msgid "allows opaque types to be implemented as any type (a GNU Modula-2 extension)"
! msgstr ""
  
  #: m2/lang.opt:111
  #, no-c-format
  msgid "turns on runtime checking to check whether a floating point number will exceed range"
! msgstr ""
  
  #: m2/lang.opt:115
  #, no-c-format
  msgid "create a topologically sorted module list from all dependent modules used in the application"
! msgstr ""
  
  #: m2/lang.opt:119 m2/lang.opt:235
  #, no-c-format
  msgid "turns on all range checking for numerical values"
! msgstr ""
  
  #: m2/lang.opt:123
  #, no-c-format
  msgid "use ISO dialect of Modula-2"
! msgstr ""
  
  #: m2/lang.opt:127
  #, no-c-format
  msgid "specify the library order, the libraries may be specified by a comma separated abbreviation: log,min,pim,iso or by directory names: m2log,m2min,m2pim,m2iso."
! msgstr ""
  
  #: m2/lang.opt:131
! #, fuzzy, no-c-format
! #| msgid "Set name of output ALI file (internal switch)."
  msgid "set all location values to a specific value (internal switch)"
! msgstr "Establece el nombre del fichero ALI de salida (opción interna)."
  
  #: m2/lang.opt:135
  #, no-c-format
  msgid "turn on internal debug tracing for quad,token,line,all (internal switch)"
! msgstr ""
  
  #: m2/lang.opt:139
  #, no-c-format
  msgid "dump Modula-2 internal intemediate representation specified by: all,quad,decl,gimple"
! msgstr ""
  
  #: m2/lang.opt:143
  #, no-c-format
  msgid "dump Modula-2 decls to the filename stem specified"
! msgstr ""
  
  #: m2/lang.opt:147
  #, no-c-format
  msgid "dump Modula-2 gimple to the filename stem specified"
! msgstr ""
  
  #: m2/lang.opt:151
  #, no-c-format
  msgid "dump Modula-2 quads to the filename stem specified"
! msgstr ""
  
  #: m2/lang.opt:155
  #, no-c-format
  msgid "filter the language dump using a comma separated list of procedures and modules"
! msgstr ""
  
  #: m2/lang.opt:159
  #, no-c-format
  msgid "override the default 64 bit definition of SYSTEM.COFF_T with the argument specified"
! msgstr ""
  
  #: m2/lang.opt:163
  #, no-c-format
  msgid "generate extra nops to improve debugging, producing an instruction for every code related keyword"
! msgstr ""
  
  #: m2/lang.opt:167
  #, no-c-format
  msgid "generate error messages which render keywords in lower case"
! msgstr ""
  
  #: m2/lang.opt:171
  #, no-c-format
--- 4293,4459 ----
  #: m2/lang.opt:35
  #, no-c-format
  msgid "turns on case statement label compile time checking when using an expression of an enum type."
! msgstr "activa la comprobación en tiempo de compilación de etiquetas de sentencias case cuando se utilizan en expresiones de tipo enum."
  
  #: m2/lang.opt:39
  #, no-c-format
  msgid "compiler checks to force definition module procedure parameter names with their implementation module counterpart"
! msgstr "comprobaciones del compilador para forzar los nombres de parámetros de procedimientos de módulos de definición con sus módulos de implementación correspondientes."
  
  #: m2/lang.opt:43
  #, no-c-format
  msgid "compiler warns if a cast is being used on types of differing sizes"
! msgstr "el compilador avisa si un «cast» se está utilizando con tipos de diferente tamaño."
  
  #: m2/lang.opt:47
  #, no-c-format
  msgid "inform user which parameters will be passed by reference"
! msgstr "informa al usuario de qué parámetros se pasarán por referencia"
  
  #: m2/lang.opt:51
  #, no-c-format
  msgid "extra compile time semantic checking, typically tries to catch poor programming style"
! msgstr "comprobación semántica extra en tiempo de compilación, típicamente intenta detectar estilo de programación pobre"
  
  #: m2/lang.opt:55
  #, no-c-format
  msgid "turns on compile time analysis in the first basic block of a procedure detecting access to uninitialized data."
! msgstr "activa análisis en tiempo de compilación en el primer bloque básico de un procedimiento que detecta acceso a datos sin inicializar."
  
  #: m2/lang.opt:59
  #, no-c-format
  msgid "turns on compile time analysis to detect access to uninitialized variables, the checking can be specified by: known,cond,all."
! msgstr "activa análisis en tiempo de compilación para detectar acceso a variables sin inicializar, la comprobación puede especificarse mediante: known,cond,all."
  
  #: m2/lang.opt:63
  #, no-c-format
  msgid "automatically initializes all pointers to NIL"
! msgstr "inicializa automáticamente todos los punteros a NIL"
  
  #: m2/lang.opt:67
  #, no-c-format
  msgid "turns on runtime subrange, array index and indirection via NIL pointer checking"
! msgstr "activa subrango, índice de array e indirección en tiempo de ejecución mediante la comprobación de puntero a NIL"
  
  #: m2/lang.opt:71
  #, no-c-format
  msgid "turns on runtime checking to check whether a CASE statement requires an ELSE clause when one was not specified"
! msgstr "activa la comproboación en tiempo de ejecución para ver si las sentencias CASE requieren cláusula ELSE cuando no se ha especificado"
  
  #: m2/lang.opt:75
  #, no-c-format
  msgid "use cpp to preprocess the module"
! msgstr "utiliza cpp para reprocesar el módulo"
  
  #: m2/lang.opt:79 m2/lang.opt:83
  #, no-c-format
  msgid "passed to the preprocessor if -fcpp is used (internal switch)"
! msgstr "pasado al preprocesador si se utiliza -fcpp (opción interna)"
  
  #: m2/lang.opt:87
  #, no-c-format
  msgid "call a real function, rather than the builtin equivalent"
! msgstr "llama a una función real, en lugar de la equivalente incorporada («builtin»)"
  
  #: m2/lang.opt:91
! #, no-c-format
  msgid "turn on internal debugging of the compiler (internal switch)"
! msgstr "activa la depuración interna del compilador (opción interna)"
  
  #: m2/lang.opt:95
  #, no-c-format
  msgid "turn on tracing of procedure line numbers (internal switch)"
! msgstr "activa el trazado de números de línea de procedimientos (opción interna)"
  
  #: m2/lang.opt:99
  #, no-c-format
  msgid "recognize the specified suffix as a definition module filename"
! msgstr "reconoce el sufijo especificado como el nombre de fichero de un módulo de definición"
  
  #: m2/lang.opt:103
  #, no-c-format
  msgid "display all inbuilt system items"
! msgstr "muestra todos los elementos incorporados del sistema"
  
  #: m2/lang.opt:107
  #, no-c-format
  msgid "allows opaque types to be implemented as any type (a GNU Modula-2 extension)"
! msgstr "permite implementar tipos opacos como cualquier tipo (extensión del Modula-2 de GNU)"
  
  #: m2/lang.opt:111
  #, no-c-format
  msgid "turns on runtime checking to check whether a floating point number will exceed range"
! msgstr "activa la comprobación en tiempo de ejecución de números de coma flotante que puedan exceder el rango"
  
  #: m2/lang.opt:115
  #, no-c-format
  msgid "create a topologically sorted module list from all dependent modules used in the application"
! msgstr "crea lista de módulos oredenados topológicamente a partir de todos los módulos dependientes utilizados en la aplicación"
  
  #: m2/lang.opt:119 m2/lang.opt:235
  #, no-c-format
  msgid "turns on all range checking for numerical values"
! msgstr "activa toda la comprobación de rangos para valores numéricos"
  
  #: m2/lang.opt:123
  #, no-c-format
  msgid "use ISO dialect of Modula-2"
! msgstr "utiliza el dialecto ISO de Modula-2"
  
  #: m2/lang.opt:127
  #, no-c-format
  msgid "specify the library order, the libraries may be specified by a comma separated abbreviation: log,min,pim,iso or by directory names: m2log,m2min,m2pim,m2iso."
! msgstr "especifica el orden de las bibliotecas, pudiendo especificarse estas mediante abreviaturas separadas por comas: log,min,pim,iso o mediante nombres de directorios: m2log,m2min,m2pim,m2iso."
  
  #: m2/lang.opt:131
! #, no-c-format
  msgid "set all location values to a specific value (internal switch)"
! msgstr "establece todos los valores de localización a un valor especificado (opción interna)."
  
  #: m2/lang.opt:135
  #, no-c-format
  msgid "turn on internal debug tracing for quad,token,line,all (internal switch)"
! msgstr "activa las trazas de depuración internas para quad,token,line,all (opción interna)"
  
  #: m2/lang.opt:139
  #, no-c-format
  msgid "dump Modula-2 internal intemediate representation specified by: all,quad,decl,gimple"
! msgstr "vuelca la representación intermedia interna de Modula-2 especificada por: all,quad,decl,gimple"
  
  #: m2/lang.opt:143
  #, no-c-format
  msgid "dump Modula-2 decls to the filename stem specified"
! msgstr "vuelca las declaraciones de Modula-2 a la raíz de nombre de fichero especificada"
  
  #: m2/lang.opt:147
  #, no-c-format
  msgid "dump Modula-2 gimple to the filename stem specified"
! msgstr "vuelca los gimple de Modula-2 a la raíz de nombre de fichero especificada"
  
  #: m2/lang.opt:151
  #, no-c-format
  msgid "dump Modula-2 quads to the filename stem specified"
! msgstr "vuelca los quads de Modula-2 a la raíz de nombre de fichero especificada"
  
  #: m2/lang.opt:155
  #, no-c-format
  msgid "filter the language dump using a comma separated list of procedures and modules"
! msgstr "filtra el volcado del lenguaje utilizando una lista de procedimientos y módulos separados por comas"
  
  #: m2/lang.opt:159
  #, no-c-format
  msgid "override the default 64 bit definition of SYSTEM.COFF_T with the argument specified"
! msgstr "anula la definición de 64 bits predeterminada de SYSTEM.COFF_T con el argumento especificado"
  
  #: m2/lang.opt:163
  #, no-c-format
  msgid "generate extra nops to improve debugging, producing an instruction for every code related keyword"
! msgstr "genera nops extra para mejorar la depuración, produciendo una instrucción para cada palabra clave relacionada con código."
  
  #: m2/lang.opt:167
  #, no-c-format
  msgid "generate error messages which render keywords in lower case"
! msgstr "genera mensajes de error que ponen las palabras clave en minúsculas"
  
  #: m2/lang.opt:171
  #, no-c-format
*************** msgstr ""
*** 4600,4606 ****
  #: m2/lang.opt:179
  #, no-c-format
  msgid "insert plugin to identify runtime errors at compiletime"
! msgstr ""
  
  #: m2/lang.opt:183
  #, no-c-format
--- 4463,4469 ----
  #: m2/lang.opt:179
  #, no-c-format
  msgid "insert plugin to identify runtime errors at compiletime"
! msgstr "inserta un «plugin» para identificar errores de tiempo de ejecución en tiempo de compilación"
  
  #: m2/lang.opt:183
  #, no-c-format
*************** msgstr ""
*** 4610,4729 ****
  #: m2/lang.opt:187
  #, no-c-format
  msgid "display statistics about the amount of source lines compiled and symbols used"
! msgstr ""
  
  #: m2/lang.opt:191
  #, no-c-format
  msgid "experimental flag to turn on the new strict type checker"
! msgstr ""
  
  #: m2/lang.opt:195
  #, no-c-format
  msgid "compile all implementation modules and program module at once"
! msgstr ""
  
  #: m2/lang.opt:199
  #, no-c-format
  msgid "recognize the specified suffix as implementation and module filenames"
! msgstr ""
  
  #: m2/lang.opt:203
  #, no-c-format
  msgid "turns on runtime checking to detect accessing data through a NIL value pointer"
! msgstr ""
  
  #: m2/lang.opt:207
  #, no-c-format
  msgid "use PIM [234] dialect of Modula-2"
! msgstr ""
  
  #: m2/lang.opt:211
  #, no-c-format
  msgid "use PIM 2 dialect of Modula-2"
! msgstr ""
  
  #: m2/lang.opt:215
  #, no-c-format
  msgid "use PIM 3 dialect of Modula-2"
! msgstr ""
  
  #: m2/lang.opt:219
  #, no-c-format
  msgid "use PIM 4 dialect of Modula-2"
! msgstr ""
  
  #: m2/lang.opt:223
  #, no-c-format
  msgid "force positive result from MOD and DIV result floor"
! msgstr ""
  
  #: m2/lang.opt:227
  #, no-c-format
  msgid "link against the pthread library (default on)"
! msgstr ""
  
  #: m2/lang.opt:231
  #, no-c-format
  msgid "internal compiler debugging information, dump the list of quadruples"
! msgstr ""
  
  #: m2/lang.opt:239
  #, no-c-format
  msgid "turns on runtime checking for functions which finish without executing a RETURN statement"
! msgstr ""
  
  #: m2/lang.opt:243
  #, no-c-format
  msgid "specify the list of runtime modules and their initialization order"
! msgstr ""
  
  #: m2/lang.opt:247
  #, no-c-format
  msgid "the modules initialization order is dynamically determined by M2RTS and application dependencies"
! msgstr ""
  
  #: m2/lang.opt:251
  #, no-c-format
  msgid "generate a C source scaffold for the current module being compiled"
! msgstr ""
  
  #: m2/lang.opt:255
  #, no-c-format
  msgid "generate a C++ source scaffold for the current module being compiled"
! msgstr ""
  
  #: m2/lang.opt:259
! #, fuzzy, no-c-format
! #| msgid "Generate bit instructions."
  msgid "generate the main function"
! msgstr "Genera instrucciones de bit."
  
  #: m2/lang.opt:263
  #, no-c-format
  msgid "generate static scaffold initialization and finalization for every module inside main"
! msgstr ""
  
  #: m2/lang.opt:267
! #, fuzzy, no-c-format
! #| msgid "Create a shared library."
  msgid "generate a shared library from the module"
! msgstr "Crea una biblioteca compartida."
  
  #: m2/lang.opt:271
  #, no-c-format
  msgid "turns on all software runtime checking (an abbreviation for -fnil -frange -findex -fwholediv -fcase -freturn -fwholevalue -ffloatvalue)"
! msgstr ""
  
  #: m2/lang.opt:275
! #, fuzzy, no-c-format
! #| msgid "Print the name of header files as they are used."
  msgid "display the location of module source files as they are compiled"
! msgstr "Muestra los nombres de los ficheros de cabecera mientras se utilizan."
  
  #: m2/lang.opt:279
  #, no-c-format
  msgid "create a swig interface file for the module"
! msgstr ""
  
  #: m2/lang.opt:283
  #, no-c-format
--- 4473,4589 ----
  #: m2/lang.opt:187
  #, no-c-format
  msgid "display statistics about the amount of source lines compiled and symbols used"
! msgstr "muestra estadísticas sobre la cantidad de líneas fuente compiladas y símbolos utilizados"
  
  #: m2/lang.opt:191
  #, no-c-format
  msgid "experimental flag to turn on the new strict type checker"
! msgstr "opción experimental para activar el nuevo comprobador de tipso estricto."
  
  #: m2/lang.opt:195
  #, no-c-format
  msgid "compile all implementation modules and program module at once"
! msgstr "compila todos los módulos de implementación y el módulo de programa inmediatamente"
  
  #: m2/lang.opt:199
  #, no-c-format
  msgid "recognize the specified suffix as implementation and module filenames"
! msgstr "reconoce el sufijo especificado como nombres de fichero de implementación y módulo"
  
  #: m2/lang.opt:203
  #, no-c-format
  msgid "turns on runtime checking to detect accessing data through a NIL value pointer"
! msgstr "activa la comprobación en tiempo de ejecución para detectar accesos a datos a través punteros con valor NIL"
  
  #: m2/lang.opt:207
  #, no-c-format
  msgid "use PIM [234] dialect of Modula-2"
! msgstr "utiliza un dialecto PIM [234] de Modula-2"
  
  #: m2/lang.opt:211
  #, no-c-format
  msgid "use PIM 2 dialect of Modula-2"
! msgstr "utiliza el dialecto PIM 2 de Modula-2"
  
  #: m2/lang.opt:215
  #, no-c-format
  msgid "use PIM 3 dialect of Modula-2"
! msgstr "utiliza el dialecto PIM 3 de Modula-2"
  
  #: m2/lang.opt:219
  #, no-c-format
  msgid "use PIM 4 dialect of Modula-2"
! msgstr "utiliza el dialecto PIM 4 de Modula-2"
  
  #: m2/lang.opt:223
  #, no-c-format
  msgid "force positive result from MOD and DIV result floor"
! msgstr "fuerza un resultado positivo del resultado truncado (suelo) de MOD y DIV"
  
  #: m2/lang.opt:227
  #, no-c-format
  msgid "link against the pthread library (default on)"
! msgstr "enlaza con la biblioteca pthread (activado por defecto)"
  
  #: m2/lang.opt:231
  #, no-c-format
  msgid "internal compiler debugging information, dump the list of quadruples"
! msgstr "información de depuración interna del compilador, vuelca la lista de cuádruplas"
  
  #: m2/lang.opt:239
  #, no-c-format
  msgid "turns on runtime checking for functions which finish without executing a RETURN statement"
! msgstr "activa la comprobación en tiempo de ejecución de funciones que finalizan sin ejecutar una sentencia RETURN"
  
  #: m2/lang.opt:243
  #, no-c-format
  msgid "specify the list of runtime modules and their initialization order"
! msgstr "especifica la lista de módulos de tiempo de ejecución y su orden de inicialización"
  
  #: m2/lang.opt:247
  #, no-c-format
  msgid "the modules initialization order is dynamically determined by M2RTS and application dependencies"
! msgstr "el orden de inicialización de los módulos se etermina dinámicamente mediante M2RTS y las dependencias de la aplicación"
  
  #: m2/lang.opt:251
  #, no-c-format
  msgid "generate a C source scaffold for the current module being compiled"
! msgstr "genera un andamio fuente en C para el módulo actualmente compilándose"
  
  #: m2/lang.opt:255
  #, no-c-format
  msgid "generate a C++ source scaffold for the current module being compiled"
! msgstr "genera un andamio fuente en C++ para el módulo actualmente compilándose"
  
  #: m2/lang.opt:259
! #, no-c-format
  msgid "generate the main function"
! msgstr "genera la función principal"
  
  #: m2/lang.opt:263
  #, no-c-format
  msgid "generate static scaffold initialization and finalization for every module inside main"
! msgstr "genera la inicialización y la finalización estáticas del andamio para cada modulo dentro del principal"
  
  #: m2/lang.opt:267
! #, no-c-format
  msgid "generate a shared library from the module"
! msgstr "genera una biblioteca compartida a partir del módulo"
  
  #: m2/lang.opt:271
  #, no-c-format
  msgid "turns on all software runtime checking (an abbreviation for -fnil -frange -findex -fwholediv -fcase -freturn -fwholevalue -ffloatvalue)"
! msgstr "activa todas las comprobaciones de tiempo de ejecución del software (abreviatura de -fnil -frange -findex -fwholediv -fcase -freturn -fwholevalue -ffloatvalue)"
  
  #: m2/lang.opt:275
! #, no-c-format
  msgid "display the location of module source files as they are compiled"
! msgstr "muestra la ubicación de los ficheros fuente mientras se utilizan."
  
  #: m2/lang.opt:279
  #, no-c-format
  msgid "create a swig interface file for the module"
! msgstr "create un fichero de interfaz swig para el módulo"
  
  #: m2/lang.opt:283
  #, no-c-format
*************** msgstr ""
*** 4733,4761 ****
  #: m2/lang.opt:287
  #, no-c-format
  msgid "orders the initialization/finalizations for scaffold-static or force linking of modules if scaffold-dynamic"
! msgstr ""
  
  #: m2/lang.opt:295
  #, no-c-format
  msgid "turns on all division and modulus by zero checking for ordinal values"
! msgstr ""
  
  #: m2/lang.opt:299
  #, no-c-format
  msgid "turns on runtime checking to check whether a whole number will exceed range"
! msgstr ""
  
  #: m2/lang.opt:303
! #, fuzzy, no-c-format
! #| msgid "Link the standard D library statically in the compilation."
  msgid "Link the standard Modula-2 libraries statically in the compilation."
! msgstr "Enlaza la biblioteca D estándar estáticamente en la compilación."
  
  #: m2/lang.opt:448 m2/lang.opt:452
! #, fuzzy, no-c-format
! #| msgid "could not close temporary response file %s"
  msgid "save temporary preprocessed files"
! msgstr "no se puede cerrar el fichero de respuesta temporal %s"
  
  #: go/lang.opt:42
  #, no-c-format
--- 4593,4619 ----
  #: m2/lang.opt:287
  #, no-c-format
  msgid "orders the initialization/finalizations for scaffold-static or force linking of modules if scaffold-dynamic"
! msgstr "ordena la inicialización/finalización de estáticos del andamio o fuerza el enlazamiento de módulos de dinámicos del andamio"
  
  #: m2/lang.opt:295
  #, no-c-format
  msgid "turns on all division and modulus by zero checking for ordinal values"
! msgstr "activa todas las comprobaciones de división y módulo por cero para valroes ordinales"
  
  #: m2/lang.opt:299
  #, no-c-format
  msgid "turns on runtime checking to check whether a whole number will exceed range"
! msgstr "activa la comprobación de tiempo de ejecución para ver si un número enter puede exceder el rango"
  
  #: m2/lang.opt:303
! #, no-c-format
  msgid "Link the standard Modula-2 libraries statically in the compilation."
! msgstr "Enlaza las bibliotecas estándar de Modula-2 estáticamente en la compilación."
  
  #: m2/lang.opt:448 m2/lang.opt:452
! #, no-c-format
  msgid "save temporary preprocessed files"
! msgstr "guarda los ficheros preprocesados temporales"
  
  #: go/lang.opt:42
  #, no-c-format
*************** msgid "-fgo-debug-escape-hash=<string>\t
*** 4828,4837 ****
  msgstr ""
  
  #: go/lang.opt:98
! #, fuzzy, no-c-format
! #| msgid "Enable optional diagnostics"
  msgid "Emit optimization diagnostics."
! msgstr "Activa los diagnósticos opcionales"
  
  #: analyzer/analyzer.opt:27
  #, no-c-format
--- 4686,4694 ----
  msgstr ""
  
  #: go/lang.opt:98
! #, no-c-format
  msgid "Emit optimization diagnostics."
! msgstr "Emite los diagnósticos de optimización"
  
  #: analyzer/analyzer.opt:27
  #, no-c-format
*************** msgid "The maximum number of exploded no
*** 4844,4859 ****
  msgstr ""
  
  #: analyzer/analyzer.opt:35
! #, fuzzy, no-c-format
! #| msgid "The maximum number of loop iterations we predict statically."
  msgid "The maximum number of constraints per state."
! msgstr "El número máximo de iteraciones de bucle que se predicen estáticamente."
  
  #: analyzer/analyzer.opt:39
! #, fuzzy, no-c-format
! #| msgid "The maximum number of incoming edges to consider for crossjumping."
  msgid "The maximum number of infeasible edges to reject before declaring a diagnostic as infeasible."
! msgstr "El número máximo de bordes entrantes para considerar el salto cruzado."
  
  #: analyzer/analyzer.opt:43
  #, no-c-format
--- 4701,4714 ----
  msgstr ""
  
  #: analyzer/analyzer.opt:35
! #, no-c-format
  msgid "The maximum number of constraints per state."
! msgstr "El número máximo de restricciones por estado."
  
  #: analyzer/analyzer.opt:39
! #, no-c-format
  msgid "The maximum number of infeasible edges to reject before declaring a diagnostic as infeasible."
! msgstr "El número máximo de bordes inviables que hay que rechazar antes de declarar un diagnóstico como inviable."
  
  #: analyzer/analyzer.opt:43
  #, no-c-format
*************** msgstr ""
*** 4863,4869 ****
  #: analyzer/analyzer.opt:47
  #, no-c-format
  msgid "The maximum depth of a symbolic value, before approximating the value as unknown."
! msgstr ""
  
  #: analyzer/analyzer.opt:51
  #, no-c-format
--- 4718,4724 ----
  #: analyzer/analyzer.opt:47
  #, no-c-format
  msgid "The maximum depth of a symbolic value, before approximating the value as unknown."
! msgstr "Profundidad máxima de un valor simbólico antes de aproximar el valor como desconocido."
  
  #: analyzer/analyzer.opt:51
  #, no-c-format
*************** msgid "The ideal width in characters of
*** 4896,5343 ****
  msgstr ""
  
  #: analyzer/analyzer.opt:75
! #, fuzzy, no-c-format
! #| msgid "Warn about macros defined in the main file that are not used."
  msgid "Warn about code paths in which a pointer to a buffer is assigned to an incompatible type."
! msgstr "Avisa sobre macros definidas en el fichero principal que no se usan."
  
  #: analyzer/analyzer.opt:79
! #, fuzzy, no-c-format
! #| msgid "Warn about code that will never be executed"
  msgid "Warn about code paths in which a pointer is checked for NULL after it has already been dereferenced."
! msgstr "Avisa sobre código que nunca se ejecutará"
  
  #: analyzer/analyzer.opt:83
  #, no-c-format
  msgid "Warn about code paths in which a stdio FILE can be closed more than once."
! msgstr ""
  
  #: analyzer/analyzer.opt:87
  #, no-c-format
  msgid "Warn about code paths in which a pointer can be freed more than once."
! msgstr ""
  
  #: analyzer/analyzer.opt:91
! #, fuzzy, no-c-format
! #| msgid "Warn about code which might break strict aliasing rules."
  msgid "Warn about code paths in which sensitive data is written to a file."
! msgstr "Avisa sobre código que pueda romper las reglas estrictas de aliases."
  
  #: analyzer/analyzer.opt:95
! #, fuzzy, no-c-format
! #| msgid "Warn about code which might break strict aliasing rules."
  msgid "Warn about code paths in which sensitive data is copied across a security boundary."
! msgstr "Avisa sobre código que pueda romper las reglas estrictas de aliases."
  
  #: analyzer/analyzer.opt:99
! #, fuzzy, no-c-format
! #| msgid "Warn about code which might break strict aliasing rules."
  msgid "Warn about code paths in which read on a write-only file descriptor is attempted, or vice versa."
! msgstr "Avisa sobre código que pueda romper las reglas estrictas de aliases."
  
  #: analyzer/analyzer.opt:103
! #, fuzzy, no-c-format
! #| msgid "Warn about macros defined in the main file that are not used."
  msgid "Warn about code paths in which a file descriptor can be closed more than once."
! msgstr "Avisa sobre macros definidas en el fichero principal que no se usan."
  
  #: analyzer/analyzer.opt:107
! #, fuzzy, no-c-format
! #| msgid "Warn about code which might break strict aliasing rules."
  msgid "Warn about code paths in which a file descriptor is not closed."
! msgstr "Avisa sobre código que pueda romper las reglas estrictas de aliases."
  
  #: analyzer/analyzer.opt:111
! #, fuzzy, no-c-format
! #| msgid "Warn about macros defined in the main file that are not used."
  msgid "Warn about code paths in which an operation is attempted in the wrong phase of a file descriptor's lifetime."
! msgstr "Avisa sobre macros definidas en el fichero principal que no se usan."
  
  #: analyzer/analyzer.opt:115
! #, fuzzy, no-c-format
! #| msgid "Warn about code which might break strict aliasing rules."
  msgid "Warn about code paths in which an operation is attempted on the wrong type of file descriptor."
! msgstr "Avisa sobre código que pueda romper las reglas estrictas de aliases."
  
  #: analyzer/analyzer.opt:119
! #, fuzzy, no-c-format
! #| msgid "Warn about code that will never be executed"
  msgid "Warn about code paths in which a read or write is performed on a closed file descriptor."
! msgstr "Avisa sobre código que nunca se ejecutará"
  
  #: analyzer/analyzer.opt:123
! #, fuzzy, no-c-format
! #| msgid "Warn about code which might break strict aliasing rules."
  msgid "Warn about code paths in which a file descriptor is used without being checked for validity."
! msgstr "Avisa sobre código que pueda romper las reglas estrictas de aliases."
  
  #: analyzer/analyzer.opt:127
! #, fuzzy, no-c-format
! #| msgid "Warn about code which might break strict aliasing rules."
  msgid "Warn about code paths in which a stdio FILE is not closed."
! msgstr "Avisa sobre código que pueda romper las reglas estrictas de aliases."
  
  #: analyzer/analyzer.opt:131
! #, fuzzy, no-c-format
! #| msgid "Warn about code which might break strict aliasing rules."
  msgid "Warn about code paths in which a non-heap pointer is freed."
! msgstr "Avisa sobre código que pueda romper las reglas estrictas de aliases."
  
  #: analyzer/analyzer.opt:135
! #, fuzzy, no-c-format
! #| msgid "Warn about macros defined in the main file that are not used."
  msgid "Warn about code paths in which floating-point arithmetic is used in locations where precise computation is needed."
! msgstr "Avisa sobre macros definidas en el fichero principal que no se usan."
  
  #: analyzer/analyzer.opt:139
! #, fuzzy, no-c-format
! #| msgid "Warn about code which might break strict aliasing rules."
  msgid "Warn about code paths which appear to lead to an infinite loop."
! msgstr "Avisa sobre código que pueda romper las reglas estrictas de aliases."
  
  #: analyzer/analyzer.opt:143
! #, fuzzy, no-c-format
! #| msgid "Warn about code which might break strict aliasing rules."
  msgid "Warn about code paths which appear to lead to infinite recursion."
! msgstr "Avisa sobre código que pueda romper las reglas estrictas de aliases."
  
  #: analyzer/analyzer.opt:147
! #, fuzzy, no-c-format
! #| msgid "Warn about code that will never be executed"
  msgid "Warn about code paths in which a NULL function pointer is called."
! msgstr "Avisa sobre código que nunca se ejecutará"
  
  #: analyzer/analyzer.opt:151
! #, fuzzy, no-c-format
! #| msgid "Warn about calls with implicit interface."
  msgid "Warn about code paths in which a heap-allocated pointer leaks."
! msgstr "Avisa sobre llamadas con interfaz implícita."
  
  #: analyzer/analyzer.opt:155
! #, fuzzy, no-c-format
! #| msgid "Warn about code which might break strict aliasing rules."
  msgid "Warn about code paths in which the wrong deallocation function is called."
! msgstr "Avisa sobre código que pueda romper las reglas estrictas de aliases."
  
  #: analyzer/analyzer.opt:159
! #, fuzzy, no-c-format
! #| msgid "Warn about casts which discard qualifiers."
  msgid "Warn about code paths in which a write or read to a buffer is out-of-bounds."
! msgstr "Avisa sobre conversiones que descartan calificadores."
  
  #: analyzer/analyzer.opt:163
! #, fuzzy, no-c-format
! #| msgid "Warn about code which might break strict aliasing rules."
  msgid "Warn about code paths in which undefined behavior would occur due to overlapping buffers."
! msgstr "Avisa sobre código que pueda romper las reglas estrictas de aliases."
  
  #: analyzer/analyzer.opt:167
  #, no-c-format
  msgid "Warn about code paths in which a possibly-NULL value is passed to a must-not-be-NULL function argument."
! msgstr ""
  
  #: analyzer/analyzer.opt:171
  #, no-c-format
  msgid "Warn about code paths in which a possibly-NULL pointer is dereferenced."
! msgstr ""
  
  #: analyzer/analyzer.opt:175
  #, no-c-format
  msgid "Warn about code paths in which an async-signal-unsafe function is called from a signal handler."
! msgstr ""
  
  #: analyzer/analyzer.opt:179
  #, no-c-format
  msgid "Warn about code paths in which NULL is passed to a must-not-be-NULL function argument."
! msgstr ""
  
  #: analyzer/analyzer.opt:183
! #, fuzzy, no-c-format
! #| msgid "Warn about code that will never be executed"
  msgid "Warn about code paths in which a NULL pointer is dereferenced."
! msgstr "Avisa sobre código que nunca se ejecutará"
  
  #: analyzer/analyzer.opt:187
! #, fuzzy, no-c-format
! #| msgid "Warn about variables which are initialized to themselves."
  msgid "Warn about code paths in which an on-stack buffer is passed to putenv."
! msgstr "Avisa sobre variables que se inicialicen ellas mismas."
  
  #: analyzer/analyzer.opt:191
! #, fuzzy, no-c-format
! #| msgid "Warn about code which might break strict aliasing rules."
  msgid "Warn about code paths in which a shift with negative count is attempted."
! msgstr "Avisa sobre código que pueda romper las reglas estrictas de aliases."
  
  #: analyzer/analyzer.opt:195
! #, fuzzy, no-c-format
! #| msgid "Warn about code which might break strict aliasing rules."
  msgid "Warn about code paths in which a shift with count >= width of type is attempted."
! msgstr "Avisa sobre código que pueda romper las reglas estrictas de aliases."
  
  #: analyzer/analyzer.opt:199
  #, no-c-format
  msgid "Warn about code paths in which a longjmp rewinds to a jmp_buf saved in a stack frame that has returned."
! msgstr ""
  
  #: analyzer/analyzer.opt:203
! #, fuzzy, no-c-format
! #| msgid "Warn about variables which are initialized to themselves."
  msgid "Warn about code paths in which an unsanitized value is used as an allocation size."
! msgstr "Avisa sobre variables que se inicialicen ellas mismas."
  
  #: analyzer/analyzer.opt:207
  #, no-c-format
  msgid "Warn about code paths in which an unsanitized value is used as an array index."
! msgstr ""
  
  #: analyzer/analyzer.opt:211
! #, fuzzy, no-c-format
! #| msgid "Warn about variables which are initialized to themselves."
  msgid "Warn about code paths in which an 'assert()' is made involving an unsanitized value."
! msgstr "Avisa sobre variables que se inicialicen ellas mismas."
  
  #: analyzer/analyzer.opt:215
! #, fuzzy, no-c-format
! #| msgid "Warn about variables which are initialized to themselves."
  msgid "Warn about code paths in which an unsanitized value is used as a divisor."
! msgstr "Avisa sobre variables que se inicialicen ellas mismas."
  
  #: analyzer/analyzer.opt:219
! #, fuzzy, no-c-format
! #| msgid "Warn about variables which are initialized to themselves."
  msgid "Warn about code paths in which an unsanitized value is used as a pointer offset."
! msgstr "Avisa sobre variables que se inicialicen ellas mismas."
  
  #: analyzer/analyzer.opt:223
! #, fuzzy, no-c-format
! #| msgid "Warn about variables which are initialized to themselves."
  msgid "Warn about code paths in which an unsanitized value is used as a size."
! msgstr "Avisa sobre variables que se inicialicen ellas mismas."
  
  #: analyzer/analyzer.opt:227
! #, fuzzy, no-c-format
! #| msgid "Warn about code that will never be executed"
  msgid "Warn about code paths in which pointer subtraction involves undefined behavior."
! msgstr "Avisa sobre código que nunca se ejecutará"
  
  #: analyzer/analyzer.opt:231
! #, fuzzy, no-c-format
! #| msgid "Warn about code that will never be executed"
  msgid "Warn about code paths in which a call is made to strtok with undefined behavior."
! msgstr "Avisa sobre código que nunca se ejecutará"
  
  #: analyzer/analyzer.opt:235
! #, fuzzy, no-c-format
! #| msgid "Warn about casts which discard qualifiers."
  msgid "Warn about code paths in which a freed value is used."
! msgstr "Avisa sobre conversiones que descartan calificadores."
  
  #: analyzer/analyzer.opt:239
! #, fuzzy, no-c-format
! #| msgid "Warn about macros defined in the main file that are not used."
  msgid "Warn about code paths in which a pointer to a stale stack frame is used."
! msgstr "Avisa sobre macros definidas en el fichero principal que no se usan."
  
  #: analyzer/analyzer.opt:243
! #, fuzzy, no-c-format
! #| msgid "Warn about casts which discard qualifiers."
  msgid "Warn about code paths in which va_arg uses the wrong type."
! msgstr "Avisa sobre conversiones que descartan calificadores."
  
  #: analyzer/analyzer.opt:247
! #, fuzzy, no-c-format
! #| msgid "Warn about code which might break strict aliasing rules."
  msgid "Warn about code paths in which va_arg is used too many times on a va_list."
! msgstr "Avisa sobre código que pueda romper las reglas estrictas de aliases."
  
  #: analyzer/analyzer.opt:251
! #, fuzzy, no-c-format
! #| msgid "Warn about code which might break strict aliasing rules."
  msgid "Warn about code paths in which va_start or va_copy is used without a corresponding va_end."
! msgstr "Avisa sobre código que pueda romper las reglas estrictas de aliases."
  
  #: analyzer/analyzer.opt:255
! #, fuzzy, no-c-format
! #| msgid "Warn about casts which discard qualifiers."
  msgid "Warn about code paths in which a va_list is used after va_end."
! msgstr "Avisa sobre conversiones que descartan calificadores."
  
  #: analyzer/analyzer.opt:259
! #, fuzzy, no-c-format
! #| msgid "Warn about code which might break strict aliasing rules."
  msgid "Warn about code paths which attempt to write to a const object."
! msgstr "Avisa sobre código que pueda romper las reglas estrictas de aliases."
  
  #: analyzer/analyzer.opt:263
! #, fuzzy, no-c-format
! #| msgid "Warn about code which might break strict aliasing rules."
  msgid "Warn about code paths which attempt to write to a string literal."
! msgstr "Avisa sobre código que pueda romper las reglas estrictas de aliases."
  
  #: analyzer/analyzer.opt:267
! #, fuzzy, no-c-format
! #| msgid "Warn about variables which are initialized to themselves."
  msgid "Warn about code paths in which an uninitialized value is used."
! msgstr "Avisa sobre variables que se inicialicen ellas mismas."
  
  #: analyzer/analyzer.opt:271
  #, no-c-format
  msgid "Warn if expressions are too complicated for the analyzer to fully track."
! msgstr ""
  
  #: analyzer/analyzer.opt:275
  #, no-c-format
  msgid "Warn if the code is too complicated for the analyzer to fully explore."
! msgstr ""
  
  #: analyzer/analyzer.opt:279
  #, no-c-format
  msgid "Restrict the analyzer to run just the named checker."
! msgstr ""
  
  #: analyzer/analyzer.opt:283
  #, no-c-format
  msgid "Add extra annotations to diagrams."
! msgstr ""
  
  #: analyzer/analyzer.opt:287
  #, no-c-format
  msgid "Avoid combining multiple statements into one exploded edge."
! msgstr ""
  
  #: analyzer/analyzer.opt:291
  #, no-c-format
  msgid "Verify that paths are feasible when emitting diagnostics."
! msgstr ""
  
  #: analyzer/analyzer.opt:295
  #, no-c-format
  msgid "Issue a note when diagnostics are deduplicated."
! msgstr ""
  
  #: analyzer/analyzer.opt:299
  #, no-c-format
  msgid "Purge unneeded state during analysis."
! msgstr ""
  
  #: analyzer/analyzer.opt:303
  #, no-c-format
  msgid "Merge similar-enough states during analysis."
! msgstr ""
  
  #: analyzer/analyzer.opt:307
  #, no-c-format
  msgid "Stop exploring an execution path after certain diagnostics."
! msgstr ""
  
  #: analyzer/analyzer.opt:311
  #, no-c-format
  msgid "Enable transitivity of constraints during analysis."
! msgstr ""
  
  #: analyzer/analyzer.opt:315
  #, no-c-format
  msgid "Show events within system headers in analyzer execution paths."
! msgstr ""
  
  #: analyzer/analyzer.opt:319
  #, no-c-format
  msgid "Approximate the effect of function calls to simplify analysis."
! msgstr ""
  
  #: analyzer/analyzer.opt:323
! #, fuzzy, no-c-format
! #| msgid "originally indirect function call not considered for inlining"
  msgid "Try to reconstruct function calls and returns after inlining."
! msgstr "originalmente la llamada indirecta a función no se considera para la inclusión en línea"
  
  #: analyzer/analyzer.opt:327
  #, no-c-format
  msgid "Emit more verbose descriptions of control flow in diagnostics."
! msgstr ""
  
  #: analyzer/analyzer.opt:331
  #, no-c-format
  msgid "Emit more verbose descriptions of state changes in diagnostics."
! msgstr ""
  
  #: analyzer/analyzer.opt:335
  #, no-c-format
  msgid "Control which events are displayed in diagnostic paths."
! msgstr ""
  
  #: analyzer/analyzer.opt:339
! #, fuzzy, no-c-format
! #| msgid "-fdump-<type>\tDump various compiler internals to a file."
  msgid "Dump various analyzer internals to SRCFILE.analyzer.txt."
! msgstr "-fdump-<tipo>\tVuelca varios internos del compilador a un fichero."
  
  #: analyzer/analyzer.opt:343
! #, fuzzy, no-c-format
! #| msgid "-fdump-<type>\tDump various compiler internals to a file."
  msgid "Dump various analyzer internals to stderr."
! msgstr "-fdump-<tipo>\tVuelca varios internos del compilador a un fichero."
  
  #: analyzer/analyzer.opt:347
  #, no-c-format
  msgid "Dump analyzer-specific call graph information to a SRCFILE.callgraph.dot file."
! msgstr ""
  
  #: analyzer/analyzer.opt:351
  #, no-c-format
  msgid "Dump the analyzer exploded graph to a SRCFILE.eg.dot file."
! msgstr ""
  
  #: analyzer/analyzer.opt:355
  #, no-c-format
  msgid "Emit diagnostics showing the location of nodes in the exploded graph."
! msgstr ""
  
  #: analyzer/analyzer.opt:359
  #, no-c-format
  msgid "Dump a textual representation of the exploded graph to SRCFILE.eg.txt."
! msgstr ""
  
  #: analyzer/analyzer.opt:363
  #, no-c-format
  msgid "Dump a textual representation of the exploded graph to SRCFILE.eg-ID.txt."
! msgstr ""
  
  #: analyzer/analyzer.opt:367
  #, no-c-format
  msgid "Dump a textual representation of each diagnostic's exploded path to SRCFILE.IDX.KIND.epath.txt."
! msgstr ""
  
  #: analyzer/analyzer.opt:371
  #, no-c-format
  msgid "Dump various analyzer internals to SRCFILE.*.fg.dot and SRCFILE.*.tg.dot."
! msgstr ""
  
  #: analyzer/analyzer.opt:375
  #, no-c-format
  msgid "Dump various analyzer internals to SRCFILE.*.infinite-loop.dot."
! msgstr ""
  
  #: analyzer/analyzer.opt:379
  #, no-c-format
  msgid "Dump analyzer-specific data to a SRCFILE.analyzer.json.gz file."
! msgstr ""
  
  #: analyzer/analyzer.opt:383
  #, no-c-format
  msgid "Dump state-purging information to a SRCFILE.state-purge.dot file."
! msgstr ""
  
  #: analyzer/analyzer.opt:387
  #, no-c-format
  msgid "Dump the analyzer supergraph to a SRCFILE.supergraph.dot file."
! msgstr ""
  
  #: analyzer/analyzer.opt:391
  #, no-c-format
  msgid "Emit custom warnings with internal details intended for analyzer developers."
! msgstr ""
  
  #: config/vms/vms.opt:27
  #, no-c-format
--- 4751,5154 ----
  msgstr ""
  
  #: analyzer/analyzer.opt:75
! #, no-c-format
  msgid "Warn about code paths in which a pointer to a buffer is assigned to an incompatible type."
! msgstr "Avisa sobre caminos en el código en los que un puntero a búfer se asigna a un tipo incompatible."
  
  #: analyzer/analyzer.opt:79
! #, no-c-format
  msgid "Warn about code paths in which a pointer is checked for NULL after it has already been dereferenced."
! msgstr "Avisa sobre caminos en el código en los que se comprueba si un puntero es NULL después de haberlo desreferenciado."
  
  #: analyzer/analyzer.opt:83
  #, no-c-format
  msgid "Warn about code paths in which a stdio FILE can be closed more than once."
! msgstr "Avisa sobre caminos en el código en los que un FICHERO stdio puede cerrarse más de una vez."
  
  #: analyzer/analyzer.opt:87
  #, no-c-format
  msgid "Warn about code paths in which a pointer can be freed more than once."
! msgstr "Avisa sobre caminos en el código en los que un puntero puede liberarse más de una vez."
  
  #: analyzer/analyzer.opt:91
! #, no-c-format
  msgid "Warn about code paths in which sensitive data is written to a file."
! msgstr "Avisa sobre caminos en el código en los que se escriben datos sensibles en un fichero."
  
  #: analyzer/analyzer.opt:95
! #, no-c-format
  msgid "Warn about code paths in which sensitive data is copied across a security boundary."
! msgstr "Avisa sobre caminos en el código en los que se copian datos sensibles fuera del perímetro de seguridad."
  
  #: analyzer/analyzer.opt:99
! #, no-c-format
  msgid "Warn about code paths in which read on a write-only file descriptor is attempted, or vice versa."
! msgstr "Avisa sobre caminos en el código en los que se intenta leer un descriptor de fichero de solo escritura, o viceversa."
  
  #: analyzer/analyzer.opt:103
! #, no-c-format
  msgid "Warn about code paths in which a file descriptor can be closed more than once."
! msgstr "Avisa sobre caminos en el código en los que un descriptor de fichero puede cerrarse más de una vez."
  
  #: analyzer/analyzer.opt:107
! #, no-c-format
  msgid "Warn about code paths in which a file descriptor is not closed."
! msgstr "Avisa sobre caminos en el código en los que un descriptor de fichero no se cierra."
  
  #: analyzer/analyzer.opt:111
! #, no-c-format
  msgid "Warn about code paths in which an operation is attempted in the wrong phase of a file descriptor's lifetime."
! msgstr "Avisa sobre caminos en el código en los que se intenta una operación en una fase incorrecta del tiempo de vida de un descriptor de fichero."
  
  #: analyzer/analyzer.opt:115
! #, no-c-format
  msgid "Warn about code paths in which an operation is attempted on the wrong type of file descriptor."
! msgstr "Avisa sobre caminos en el código en los que se intenta una operación sobre un tipo incorrecto de descriptor de fichero."
  
  #: analyzer/analyzer.opt:119
! #, no-c-format
  msgid "Warn about code paths in which a read or write is performed on a closed file descriptor."
! msgstr "Avisa sobre caminos en el código en los que se realiza una lectura o escritura de un descriptor de fichero cerrado."
  
  #: analyzer/analyzer.opt:123
! #, no-c-format
  msgid "Warn about code paths in which a file descriptor is used without being checked for validity."
! msgstr "Avisa sobre caminos en el código en los que se utiliza un descriptor de fichero sin comprobarse su validez."
  
  #: analyzer/analyzer.opt:127
! #, no-c-format
  msgid "Warn about code paths in which a stdio FILE is not closed."
! msgstr "Avisa sobre caminos en el código en los que un FICHERO de stdio no se cierra."
  
  #: analyzer/analyzer.opt:131
! #, no-c-format
  msgid "Warn about code paths in which a non-heap pointer is freed."
! msgstr "Avisa sobre caminos en el código en los que se libera un puntero que no está en la memoria dinámica."
  
  #: analyzer/analyzer.opt:135
! #, no-c-format
  msgid "Warn about code paths in which floating-point arithmetic is used in locations where precise computation is needed."
! msgstr "Avisa sobre caminos en el código en los que se utiliza aritmética de coma flotante donde se necesita computación precisa."
  
  #: analyzer/analyzer.opt:139
! #, no-c-format
  msgid "Warn about code paths which appear to lead to an infinite loop."
! msgstr "Avisa sobre caminos en el código que parecen llevar a bucles infinitos."
  
  #: analyzer/analyzer.opt:143
! #, no-c-format
  msgid "Warn about code paths which appear to lead to infinite recursion."
! msgstr "Avisa sobre caminos en el código que parecen llevar a recursión infinita."
  
  #: analyzer/analyzer.opt:147
! #, no-c-format
  msgid "Warn about code paths in which a NULL function pointer is called."
! msgstr "Avisa sobre caminos en el código en los que se llama a un puntero a función NULL."
  
  #: analyzer/analyzer.opt:151
! #, no-c-format
  msgid "Warn about code paths in which a heap-allocated pointer leaks."
! msgstr "Avisa sobre caminos en el código en los que se pierde un puntero reservado en la memoria dinámica («leak»)."
  
  #: analyzer/analyzer.opt:155
! #, no-c-format
  msgid "Warn about code paths in which the wrong deallocation function is called."
! msgstr "Avisa sobre caminos en el código en los que se llama a una función de liberación de memoria incorrecta."
  
  #: analyzer/analyzer.opt:159
! #, no-c-format
  msgid "Warn about code paths in which a write or read to a buffer is out-of-bounds."
! msgstr "Avisa sobre caminos en el código en los que una escritura o lectura de búfer está fuera de los límites."
  
  #: analyzer/analyzer.opt:163
! #, no-c-format
  msgid "Warn about code paths in which undefined behavior would occur due to overlapping buffers."
! msgstr "Avisa sobre caminos en el código en los que puede darse un comportamiento indefinido a causa de búfers que se solapan."
  
  #: analyzer/analyzer.opt:167
  #, no-c-format
  msgid "Warn about code paths in which a possibly-NULL value is passed to a must-not-be-NULL function argument."
! msgstr "Avisa sobre caminos en el código en los que se pasa un valor que podría ser NULL a un argumento de función que no debe ser NULL."
  
  #: analyzer/analyzer.opt:171
  #, no-c-format
  msgid "Warn about code paths in which a possibly-NULL pointer is dereferenced."
! msgstr "Avisa sobre caminos en el código en los que se desreferencia un puntero que podría ser NULL."
  
  #: analyzer/analyzer.opt:175
  #, no-c-format
  msgid "Warn about code paths in which an async-signal-unsafe function is called from a signal handler."
! msgstr "Avisa sobre caminos en el código en los que se llama a una función de señal asíncrona insegura desde un manejador de señal."
  
  #: analyzer/analyzer.opt:179
  #, no-c-format
  msgid "Warn about code paths in which NULL is passed to a must-not-be-NULL function argument."
! msgstr "Avisa sobre caminos en el código en los que se pasa NULL a un argumento de función que no debe ser NULL."
  
  #: analyzer/analyzer.opt:183
! #, no-c-format
  msgid "Warn about code paths in which a NULL pointer is dereferenced."
! msgstr "Avisa sobre caminos en el código en los que se desreferencia un puntero NULL."
  
  #: analyzer/analyzer.opt:187
! #, no-c-format
  msgid "Warn about code paths in which an on-stack buffer is passed to putenv."
! msgstr "Avisa sobre caminos en el código en los que se oasa un búfer en pila a putenv."
  
  #: analyzer/analyzer.opt:191
! #, no-c-format
  msgid "Warn about code paths in which a shift with negative count is attempted."
! msgstr "Avisa sobre caminos en el código en los que se intenta un desplazamiento con cuenta negativa."
  
  #: analyzer/analyzer.opt:195
! #, no-c-format
  msgid "Warn about code paths in which a shift with count >= width of type is attempted."
! msgstr "Avisa sobre caminos en el código en los que se intenta un desplazamiento con cuenta >= ancho del tipo."
  
  #: analyzer/analyzer.opt:199
  #, no-c-format
  msgid "Warn about code paths in which a longjmp rewinds to a jmp_buf saved in a stack frame that has returned."
! msgstr "Avisa sobre caminos en el código en los que un longjmp se desenrrolla en un jmp_buf guardado en un marco de la pila que ha retornado."
  
  #: analyzer/analyzer.opt:203
! #, no-c-format
  msgid "Warn about code paths in which an unsanitized value is used as an allocation size."
! msgstr "Avisa sobre caminos en el código en los que un valor no saneado se utiliza como tamaño de una reserva."
  
  #: analyzer/analyzer.opt:207
  #, no-c-format
  msgid "Warn about code paths in which an unsanitized value is used as an array index."
! msgstr "Avisa sobre caminos en el código en los que un valor no saneado se utiliza como tamaño de una array."
  
  #: analyzer/analyzer.opt:211
! #, no-c-format
  msgid "Warn about code paths in which an 'assert()' is made involving an unsanitized value."
! msgstr "Avisa sobre caminos en el código en los que se hace un 'assert()' que implica un valor no saneado."
  
  #: analyzer/analyzer.opt:215
! #, no-c-format
  msgid "Warn about code paths in which an unsanitized value is used as a divisor."
! msgstr "Avisa sobre caminos en el código en los que un valor no saneado se utiliza como divisor."
  
  #: analyzer/analyzer.opt:219
! #, no-c-format
  msgid "Warn about code paths in which an unsanitized value is used as a pointer offset."
! msgstr "Avisa sobre caminos en el código en los que un valor no saneado se utiliza como desplazamiento de un puntero."
  
  #: analyzer/analyzer.opt:223
! #, no-c-format
  msgid "Warn about code paths in which an unsanitized value is used as a size."
! msgstr "Avisa sobre caminos en el código en los que un valor no saneado se utiliza como tamaño."
  
  #: analyzer/analyzer.opt:227
! #, no-c-format
  msgid "Warn about code paths in which pointer subtraction involves undefined behavior."
! msgstr "Avisa sobre caminos en el código en los que la sustracción de punteros conlleva comportamiento indefinido."
  
  #: analyzer/analyzer.opt:231
! #, no-c-format
  msgid "Warn about code paths in which a call is made to strtok with undefined behavior."
! msgstr "Avisa sobre caminos en el código en los que se hace una llamada a strtok con comportamiento indefinido."
  
  #: analyzer/analyzer.opt:235
! #, no-c-format
  msgid "Warn about code paths in which a freed value is used."
! msgstr "Avisa sobre caminos en el código en los que se utiliza un valor liberado."
  
  #: analyzer/analyzer.opt:239
! #, no-c-format
  msgid "Warn about code paths in which a pointer to a stale stack frame is used."
! msgstr "Avisa sobre caminos en el código en los que se utiliza un marco de la pila obsoleto."
  
  #: analyzer/analyzer.opt:243
! #, no-c-format
  msgid "Warn about code paths in which va_arg uses the wrong type."
! msgstr "Avisa sobre caminos en el código en los que va_arg utiliza un tipo incorrecto."
  
  #: analyzer/analyzer.opt:247
! #, no-c-format
  msgid "Warn about code paths in which va_arg is used too many times on a va_list."
! msgstr "Avisa sobre caminos en el código en los que se utiliza va_arg demasiadas veces en un va_list."
  
  #: analyzer/analyzer.opt:251
! #, no-c-format
  msgid "Warn about code paths in which va_start or va_copy is used without a corresponding va_end."
! msgstr "Avisa sobre caminos en el código en los que va_start o va_copy se utilizan sin su correspondiente va_end."
  
  #: analyzer/analyzer.opt:255
! #, no-c-format
  msgid "Warn about code paths in which a va_list is used after va_end."
! msgstr "Avisa sobre caminos en el código en los que va_list se utiliza después de va_end."
  
  #: analyzer/analyzer.opt:259
! #, no-c-format
  msgid "Warn about code paths which attempt to write to a const object."
! msgstr "Avisa sobre caminos en el código en los que se intenta escribir un objeto const."
  
  #: analyzer/analyzer.opt:263
! #, no-c-format
  msgid "Warn about code paths which attempt to write to a string literal."
! msgstr "Avisa sobre caminos en el código en los que se intenta escribir una cadena literal."
  
  #: analyzer/analyzer.opt:267
! #, no-c-format
  msgid "Warn about code paths in which an uninitialized value is used."
! msgstr "Avisa sobre caminos en el código en los que se utiliza un valor sin inicializar."
  
  #: analyzer/analyzer.opt:271
  #, no-c-format
  msgid "Warn if expressions are too complicated for the analyzer to fully track."
! msgstr "Advierte de expresiones demasiado complicadas de rastrear completamente para el analizador."
  
  #: analyzer/analyzer.opt:275
  #, no-c-format
  msgid "Warn if the code is too complicated for the analyzer to fully explore."
! msgstr "Advierte de que el código es demasiado complicado de explorar completamente para el analizador."
  
  #: analyzer/analyzer.opt:279
  #, no-c-format
  msgid "Restrict the analyzer to run just the named checker."
! msgstr "Restringe el analizador a solo ejecutar el comprobador con nombre."
  
  #: analyzer/analyzer.opt:283
  #, no-c-format
  msgid "Add extra annotations to diagrams."
! msgstr "Añade anotaciones extra a los diagramas."
  
  #: analyzer/analyzer.opt:287
  #, no-c-format
  msgid "Avoid combining multiple statements into one exploded edge."
! msgstr "Evita combinar sentencias múltiples en un arco explotado."
  
  #: analyzer/analyzer.opt:291
  #, no-c-format
  msgid "Verify that paths are feasible when emitting diagnostics."
! msgstr "Verifica que los caminos son viables al emitir diagnósticos."
  
  #: analyzer/analyzer.opt:295
  #, no-c-format
  msgid "Issue a note when diagnostics are deduplicated."
! msgstr "Genera una nota cuando los diagnósticos están deduplicados."
  
  #: analyzer/analyzer.opt:299
  #, no-c-format
  msgid "Purge unneeded state during analysis."
! msgstr "Purga estados innecesarios durante el análisis"
  
  #: analyzer/analyzer.opt:303
  #, no-c-format
  msgid "Merge similar-enough states during analysis."
! msgstr "Mezcla estados suficientemente parecidos durante el análisis."
  
  #: analyzer/analyzer.opt:307
  #, no-c-format
  msgid "Stop exploring an execution path after certain diagnostics."
! msgstr "Deja de explorar un camino de ejecución después de ciertos diagnósticos."
  
  #: analyzer/analyzer.opt:311
  #, no-c-format
  msgid "Enable transitivity of constraints during analysis."
! msgstr "Activa la transitividad de restricciones durante el análisis."
  
  #: analyzer/analyzer.opt:315
  #, no-c-format
  msgid "Show events within system headers in analyzer execution paths."
! msgstr "Muestra eventos en cabeceras del sistema en los caminos de ejecución del analizador."
  
  #: analyzer/analyzer.opt:319
  #, no-c-format
  msgid "Approximate the effect of function calls to simplify analysis."
! msgstr "Aproxima el efecto de llamadas a funciones para simplificar el análisis."
  
  #: analyzer/analyzer.opt:323
! #, no-c-format
  msgid "Try to reconstruct function calls and returns after inlining."
! msgstr "Trata de reconstruir las llamadas a funciones y retornos después del tratamiento en línea."
  
  #: analyzer/analyzer.opt:327
  #, no-c-format
  msgid "Emit more verbose descriptions of control flow in diagnostics."
! msgstr "Emite descripciones más extensas del flujo de control en los diagnósticos."
  
  #: analyzer/analyzer.opt:331
  #, no-c-format
  msgid "Emit more verbose descriptions of state changes in diagnostics."
! msgstr "Emite descripciones más extensas de los cambios de estado en los diagnósticos."
  
  #: analyzer/analyzer.opt:335
  #, no-c-format
  msgid "Control which events are displayed in diagnostic paths."
! msgstr "Controla los eventos que se muestran en los caminos del diagnóstico."
  
  #: analyzer/analyzer.opt:339
! #, no-c-format
  msgid "Dump various analyzer internals to SRCFILE.analyzer.txt."
! msgstr "Vuelca varios internos del analizador a FICHSRC.analyzer.txt."
  
  #: analyzer/analyzer.opt:343
! #, no-c-format
  msgid "Dump various analyzer internals to stderr."
! msgstr "Vuelca varios internos del analizador a stderr."
  
  #: analyzer/analyzer.opt:347
  #, no-c-format
  msgid "Dump analyzer-specific call graph information to a SRCFILE.callgraph.dot file."
! msgstr "Vuelca información del grafo específica del analizador al fichero FICHSRC.callgraph.dot."
  
  #: analyzer/analyzer.opt:351
  #, no-c-format
  msgid "Dump the analyzer exploded graph to a SRCFILE.eg.dot file."
! msgstr "Vuelca el grafo descompuesto del analizador al fichero FICHSRC.eg.dot."
  
  #: analyzer/analyzer.opt:355
  #, no-c-format
  msgid "Emit diagnostics showing the location of nodes in the exploded graph."
! msgstr "Emite diagnósticos que muestran la ubicación de los nodos en el grafo descompuesto."
  
  #: analyzer/analyzer.opt:359
  #, no-c-format
  msgid "Dump a textual representation of the exploded graph to SRCFILE.eg.txt."
! msgstr "Vuelca una representación textual del grafo descompuesto a FICHSRC.eg.txt."
  
  #: analyzer/analyzer.opt:363
  #, no-c-format
  msgid "Dump a textual representation of the exploded graph to SRCFILE.eg-ID.txt."
! msgstr "Vuelca una representación textual del grafo descompuesto a FICHSRC.eg-ID.txt."
  
  #: analyzer/analyzer.opt:367
  #, no-c-format
  msgid "Dump a textual representation of each diagnostic's exploded path to SRCFILE.IDX.KIND.epath.txt."
! msgstr "Vuelca una representación textual de cada camino descompuesto de diagnóstico a FICHSRC.IDX.KIND.txt."
  
  #: analyzer/analyzer.opt:371
  #, no-c-format
  msgid "Dump various analyzer internals to SRCFILE.*.fg.dot and SRCFILE.*.tg.dot."
! msgstr "Vuelca varios internos del analizador a FICHSRC.*.fg.dot y FICHSRC.*.tg.dot."
  
  #: analyzer/analyzer.opt:375
  #, no-c-format
  msgid "Dump various analyzer internals to SRCFILE.*.infinite-loop.dot."
! msgstr "Vuelca varios internos del analizador a FICHSRC.*.infinite-loop.dot."
  
  #: analyzer/analyzer.opt:379
  #, no-c-format
  msgid "Dump analyzer-specific data to a SRCFILE.analyzer.json.gz file."
! msgstr "Vuelca datos específicos del analizador al fichero FICHSRC.analyzer.json.gz."
  
  #: analyzer/analyzer.opt:383
  #, no-c-format
  msgid "Dump state-purging information to a SRCFILE.state-purge.dot file."
! msgstr "Vuelca información de purga de estados a un fichero FICHSRC.state-purge.dot."
  
  #: analyzer/analyzer.opt:387
  #, no-c-format
  msgid "Dump the analyzer supergraph to a SRCFILE.supergraph.dot file."
! msgstr "Vuelca el supergrafo del analizador a un fichero FICHSRC.supergraph.dot."
  
  #: analyzer/analyzer.opt:391
  #, no-c-format
  msgid "Emit custom warnings with internal details intended for analyzer developers."
! msgstr "Emite avisos personalizados con detalles internos destinados a desarrolladores del analizador."
  
  #: config/vms/vms.opt:27
  #, no-c-format
*************** msgid "Generate code for the kernel or l
*** 5555,5564 ****
  msgstr "Genera código para el núcleo o para las extensiones cargables del núcleo."
  
  #: config/darwin.opt:75
! #, fuzzy, no-c-format
! #| msgid "The earliest MacOS X version on which this program will run."
  msgid "The earliest macOS version on which this program will run."
! msgstr "La versión más temprana de MacOS X en la cual este programa se ejecutará."
  
  #: config/darwin.opt:80
  #, no-c-format
--- 5366,5374 ----
  msgstr "Genera código para el núcleo o para las extensiones cargables del núcleo."
  
  #: config/darwin.opt:75
! #, no-c-format
  msgid "The earliest macOS version on which this program will run."
! msgstr "La versión más temprana de macOS X en la cual este programa se ejecutará."
  
  #: config/darwin.opt:80
  #, no-c-format
*************** msgid "Set sizeof(bool) to 1."
*** 5566,5753 ****
  msgstr "Establece sizeof(bool) a 1."
  
  #: config/darwin.opt:84
! #, fuzzy, no-c-format
! #| msgid "Support code generation of movbe instruction."
  msgid "Force generation of external symbol indirection stubs."
! msgstr "Admite la generación de código de la instrucción movbe."
  
  #: config/darwin.opt:92
  #, no-c-format
  msgid "-mtarget-linker <version>\tSpecify that ld64 <version> is the toolchain linker for the current invocation."
! msgstr ""
  
  #: config/darwin.opt:98
  #, no-c-format
  msgid "Load all members of archive libraries, rather than only those that satisfy undefined symbols."
! msgstr ""
  
  #: config/darwin.opt:102
  #, no-c-format
  msgid "-allowable_client <name>\tThe output dylib is private to the client <name>."
! msgstr ""
  
  #: config/darwin.opt:106
! #, fuzzy, no-c-format
! #| msgid "Generate code for CR16C architecture."
  msgid "-arch <name>\tGenerate output for architecture <name>."
! msgstr "Genera código para la arquitectura CR16C."
  
  #: config/darwin.opt:110
  #, no-c-format
  msgid "Mismatches between file architecture and one specified by \"-arch\" are errors instead of warnings."
! msgstr ""
  
  #: config/darwin.opt:114
! #, fuzzy, no-c-format
! #| msgid "The earliest MacOS X version on which this program will run."
  msgid "The earliest macOS version on which this program will run (formatted for the assembler)."
! msgstr "La versión más temprana de MacOS X en la cual este programa se ejecutará."
  
  #: config/darwin.opt:118
  #, no-c-format
  msgid "Generate an output executable that binds symbols on load, rather than lazily."
! msgstr ""
  
  #: config/darwin.opt:122
  #, no-c-format
  msgid "Generate a Mach-O bundle (file type MH_BUNDLE)."
! msgstr ""
  
  #: config/darwin.opt:126
  #, no-c-format
  msgid "-bundle_loader <executable>\tTreat <executable> (that will be loading this bundle) as if it was one of the dynamic libraries the bundle is linked against for symbol resolution."
! msgstr ""
  
  #: config/darwin.opt:130
  #, no-c-format
  msgid "-client_name <name>\tEnable the executable being built to link against a private dylib (using allowable_client)."
! msgstr ""
  
  #: config/darwin.opt:134
  #, no-c-format
  msgid "-compatibility_version <number>\tSet the version for the client interface.  Client programs must record a value less than or equal to <number>, or the binding will fail at runtime."
! msgstr ""
  
  #: config/darwin.opt:138
  #, no-c-format
  msgid "-current_version <number>\tSet the current version for the library to <number>."
! msgstr ""
  
  #: config/darwin.opt:142
  #, no-c-format
  msgid "Remove code and data that is unreachable from any exported symbol (including the entry point)."
! msgstr ""
  
  #: config/darwin.opt:146
  #, no-c-format
  msgid "-dylib_file install_name:file_name\tThis allows linking of a dylib with \"install_name\" but to be found in a different install position \"file_name\""
! msgstr ""
  
  #: config/darwin.opt:150
  #, no-c-format
  msgid "Produce a Mach-O dylinker (file type MH_DYLINKER), only used for building dyld."
! msgstr ""
  
  #: config/darwin.opt:154
  #, no-c-format
  msgid "-dylinker_install_name <path>\tOnly used for building dyld."
! msgstr ""
  
  #: config/darwin.opt:158
  #, no-c-format
  msgid "The default (and opposite of -static), implied by user mode executables, shared libraries and bundles."
! msgstr ""
  
  #: config/darwin.opt:162
  #, no-c-format
  msgid "Produce a Mach-O shared library (file type MH_DYLIB), synonym for \"-shared\"."
! msgstr ""
  
  #: config/darwin.opt:166
  #, no-c-format
  msgid "-exported_symbols_list <filename>\tExport global symbols in <filename> in linked output file; any symbols not mentioned will be treated as \"hidden\"."
! msgstr ""
  
  #: config/darwin.opt:170
  #, no-c-format
  msgid "Supply a list of objects to be linked from a file, rather than the command line."
! msgstr ""
  
  #: config/darwin.opt:174 config/darwin.opt:194
! #, fuzzy, no-c-format
! #| msgid "Generate code for darwin loadable kernel extensions."
  msgid "Used for generating code for some older kernel revisions."
! msgstr "Genera código para las extensiones cargables de núcleo darwin."
  
  #: config/darwin.opt:178
  #, no-c-format
  msgid "Ignore the normal two-level namespace; resolve symbols in command line order and do not record which library provided the resolved symbol."
! msgstr ""
  
  #: config/darwin.opt:182
  #, no-c-format
  msgid "For the assembler (and linker) permit any architecture sub-variant to be used without error."
! msgstr ""
  
  #: config/darwin.opt:186
  #, no-c-format
  msgid "Set the output object such that, on loading, dyld will ignore any two-level namespace information and resolve symbols in the discovery order for loaded libs."
! msgstr ""
  
  #: config/darwin.opt:190
  #, no-c-format
  msgid "-framework <name>\tThe linker should search for the framework <name> in the framework search path."
! msgstr ""
  
  #: config/darwin.opt:198
  #, no-c-format
  msgid "Abbreviation for \"-g -fno-eliminate-unused-debug-symbols\"."
! msgstr ""
  
  #: config/darwin.opt:202
  #, no-c-format
  msgid "Abbreviation for \"-g -feliminate-unused-debug-symbols\"."
! msgstr ""
  
  #: config/darwin.opt:206
  #, no-c-format
  msgid "Automatically adds space for longer path names in load commands (up to MAXPATHLEN)."
! msgstr ""
  
  #: config/darwin.opt:210
  #, no-c-format
  msgid "-image_base <address>\tSpecify <address> as the base address for a dylib or bundle."
! msgstr ""
  
  #: config/darwin.opt:214
  #, no-c-format
  msgid "-init <symbol_name>\tThe symbol <symbol_name> will be used as the first initializer for a dylib."
! msgstr ""
  
  #: config/darwin.opt:218
  #, no-c-format
  msgid "-install_name <name>\tSet the install name for a dylib."
! msgstr ""
  
  #: config/darwin.opt:222
  #, no-c-format
  msgid "Usually \"private extern\" (hidden) symbols are made local when linking, this command suppresses that such that they remain exported."
! msgstr ""
  
  #: config/darwin.opt:226
  #, no-c-format
  msgid "(Obsolete after 10.4) Multi modules are ignored at runtime since macOS 10.4."
! msgstr ""
  
  #: config/darwin.opt:230
  #, no-c-format
  msgid "(Obsolete after 10.4) -multiply_defined <treatment>\tProvided a mechanism for warning about symbols defined in multiple dylibs."
! msgstr ""
  
  #: config/darwin.opt:234
  #, no-c-format
  msgid "(Obsolete after 10.4) -multiply_defined_unused <treatment>\tProvided a mechanism for warning about symbols defined in the current executable also being defined in linked dylibs."
! msgstr ""
  
  #: config/darwin.opt:238
  #, no-c-format
--- 5376,5559 ----
  msgstr "Establece sizeof(bool) a 1."
  
  #: config/darwin.opt:84
! #, no-c-format
  msgid "Force generation of external symbol indirection stubs."
! msgstr "Fuerza la generación de «stubs» de indirección de símbolos externos."
  
  #: config/darwin.opt:92
  #, no-c-format
  msgid "-mtarget-linker <version>\tSpecify that ld64 <version> is the toolchain linker for the current invocation."
! msgstr "-mtarget-linker <versión>\tEspecifica que ld64 <versión> es el enlazador de la cadena de herramientas para la invocación actual."
  
  #: config/darwin.opt:98
  #, no-c-format
  msgid "Load all members of archive libraries, rather than only those that satisfy undefined symbols."
! msgstr "Carga todos los miembros de las bibliotecas de archivo, en vez de solo aquellas que satisfacen los símbolos indefinidos."
  
  #: config/darwin.opt:102
  #, no-c-format
  msgid "-allowable_client <name>\tThe output dylib is private to the client <name>."
! msgstr "-allowable_client <nombre>\tLa salida dylib es privada del cliente <nombre>."
  
  #: config/darwin.opt:106
! #, no-c-format
  msgid "-arch <name>\tGenerate output for architecture <name>."
! msgstr "-arch <nombre>\tGenera salida para la arquitectura <nombre>."
  
  #: config/darwin.opt:110
  #, no-c-format
  msgid "Mismatches between file architecture and one specified by \"-arch\" are errors instead of warnings."
! msgstr "Las discrepancias entre la arquitectura del fichero y la especificada por «-arch» son errores en lugar de avisos."
  
  #: config/darwin.opt:114
! #, no-c-format
  msgid "The earliest macOS version on which this program will run (formatted for the assembler)."
! msgstr "La versión más temprana de macOS X en la cual este programa se ejecutará (formateado para ensamblador)."
  
  #: config/darwin.opt:118
  #, no-c-format
  msgid "Generate an output executable that binds symbols on load, rather than lazily."
! msgstr "Genera una salida ejecutable que vincula símbolos al cargar, en vez de perezosamente."
  
  #: config/darwin.opt:122
  #, no-c-format
  msgid "Generate a Mach-O bundle (file type MH_BUNDLE)."
! msgstr "Genera un «bundle» Mach-O (tipo de fichero MH_BUNDLE)."
  
  #: config/darwin.opt:126
  #, no-c-format
  msgid "-bundle_loader <executable>\tTreat <executable> (that will be loading this bundle) as if it was one of the dynamic libraries the bundle is linked against for symbol resolution."
! msgstr "-bundle_loader <ejecutable>\tTrata <ejecutable> (el que va a cargar este «bundle») como si fuera una de las bibliotecas dinámicas contra las que el «bundle» está enlazado para resolver símbolos."
  
  #: config/darwin.opt:130
  #, no-c-format
  msgid "-client_name <name>\tEnable the executable being built to link against a private dylib (using allowable_client)."
! msgstr "-client_name <nombre>\tPermite que el ejecutable que se está construyendo se vincule contra una dylib privada (utilizando allowable_client)."
  
  #: config/darwin.opt:134
  #, no-c-format
  msgid "-compatibility_version <number>\tSet the version for the client interface.  Client programs must record a value less than or equal to <number>, or the binding will fail at runtime."
! msgstr "-compatibility_version <número>\tEstablece la versión del interfaz cliente.  Los programas cliente deben registrar un valor menor o igual que <número> o el vínculo fallará en tiempo de ejecución."
  
  #: config/darwin.opt:138
  #, no-c-format
  msgid "-current_version <number>\tSet the current version for the library to <number>."
! msgstr "-current_version <número>\tEstablece la versión actual de la biblioteca como <número>."
  
  #: config/darwin.opt:142
  #, no-c-format
  msgid "Remove code and data that is unreachable from any exported symbol (including the entry point)."
! msgstr "Elimina código y datos inalcanzables desde cualquier símbolo exportado (incluido el punto de entrada)."
  
  #: config/darwin.opt:146
  #, no-c-format
  msgid "-dylib_file install_name:file_name\tThis allows linking of a dylib with \"install_name\" but to be found in a different install position \"file_name\""
! msgstr "-dylib_file nombre_instalado:nombre_fichero\tEsto permite enlazar una dylib con «nombre_instalado» pero ubicado en un lugar de instalación distinto «nombre_fichero»"
  
  #: config/darwin.opt:150
  #, no-c-format
  msgid "Produce a Mach-O dylinker (file type MH_DYLINKER), only used for building dyld."
! msgstr "Produce un dylinker Mach-O (tipo de fichero MH_DYLINKER), utilizado únicamente para la construcción de dyld."
  
  #: config/darwin.opt:154
  #, no-c-format
  msgid "-dylinker_install_name <path>\tOnly used for building dyld."
! msgstr "-dylinker_install_name <ruta>\tUtilizado únicamente para la construcción de dyld."
  
  #: config/darwin.opt:158
  #, no-c-format
  msgid "The default (and opposite of -static), implied by user mode executables, shared libraries and bundles."
! msgstr "Lo predeterminado (y opuesto de -static), implicado por ejecutables de modo usuario, bibliotecas compartidas «bundles»."
  
  #: config/darwin.opt:162
  #, no-c-format
  msgid "Produce a Mach-O shared library (file type MH_DYLIB), synonym for \"-shared\"."
! msgstr "Produce una biblioteca compartida Mach-O (tipo de fichero MH_DYLIB), sinónimo de «-shared»."
  
  #: config/darwin.opt:166
  #, no-c-format
  msgid "-exported_symbols_list <filename>\tExport global symbols in <filename> in linked output file; any symbols not mentioned will be treated as \"hidden\"."
! msgstr "-exported_symbols_list <nombrefich>\tExporta los símbolos globales de <nombrefich> en el fichero de salida enlazado; todo símbolo no mencionado será tratado como «hidden» (oculto)."
  
  #: config/darwin.opt:170
  #, no-c-format
  msgid "Supply a list of objects to be linked from a file, rather than the command line."
! msgstr "Suministra en un fichero una lista de objetos para enlazar, en vez de la línea de órdenes."
  
  #: config/darwin.opt:174 config/darwin.opt:194
! #, no-c-format
  msgid "Used for generating code for some older kernel revisions."
! msgstr "Utilizado para generar código para algunas revisiones del núcleo más antiguas."
  
  #: config/darwin.opt:178
  #, no-c-format
  msgid "Ignore the normal two-level namespace; resolve symbols in command line order and do not record which library provided the resolved symbol."
! msgstr "Descarta el espacio normal de nombres de dos niveles; resuelve los símbolos en el orden de la línea de órdenes y no registra la biblioteca proporcionada que resolvió el símbolo."
  
  #: config/darwin.opt:182
  #, no-c-format
  msgid "For the assembler (and linker) permit any architecture sub-variant to be used without error."
! msgstr "Para que el ensamblador (y enlazador) permitan que se utilice cualquier subvariante de la arquitectura sin error."
  
  #: config/darwin.opt:186
  #, no-c-format
  msgid "Set the output object such that, on loading, dyld will ignore any two-level namespace information and resolve symbols in the discovery order for loaded libs."
! msgstr "Pone el objeto de salida de tal manera que, al cargar, dyld descarte cualquier información de espacio de nombres de dos niveles y resolve los símbolos en el orden en que se descubran para las bibliotecas cargadas."
  
  #: config/darwin.opt:190
  #, no-c-format
  msgid "-framework <name>\tThe linker should search for the framework <name> in the framework search path."
! msgstr "-framework <nombre>\tEl enlazador debería buscar el «framework» <nombre> en la ruta de búsqueda de «frameworks»."
  
  #: config/darwin.opt:198
  #, no-c-format
  msgid "Abbreviation for \"-g -fno-eliminate-unused-debug-symbols\"."
! msgstr "Abreviatura de «-g -fno-eliminate-unused-debug-symbols»."
  
  #: config/darwin.opt:202
  #, no-c-format
  msgid "Abbreviation for \"-g -feliminate-unused-debug-symbols\"."
! msgstr "Abreviatura de «-g -feliminate-unused-debug-symbols»."
  
  #: config/darwin.opt:206
  #, no-c-format
  msgid "Automatically adds space for longer path names in load commands (up to MAXPATHLEN)."
! msgstr "Añade espacio automáticamente a los nombres de ruta más largos en órdenes de carga (hasta MAXPATHLEN)."
  
  #: config/darwin.opt:210
  #, no-c-format
  msgid "-image_base <address>\tSpecify <address> as the base address for a dylib or bundle."
! msgstr "-image_base <dirección>\tEspecifica <dirección> como dirección base de una dylib o un «bundle»."
  
  #: config/darwin.opt:214
  #, no-c-format
  msgid "-init <symbol_name>\tThe symbol <symbol_name> will be used as the first initializer for a dylib."
! msgstr "-init <nombre_símbolo>\tEl símbolo <nombre_símbolo> se utilizará como primer inicializador de una dylib."
  
  #: config/darwin.opt:218
  #, no-c-format
  msgid "-install_name <name>\tSet the install name for a dylib."
! msgstr "-install_name <nombre>\tEstablece el nombre de instalación de una dylib."
  
  #: config/darwin.opt:222
  #, no-c-format
  msgid "Usually \"private extern\" (hidden) symbols are made local when linking, this command suppresses that such that they remain exported."
! msgstr "Normalmente los símbolos «private extern» (ocultos) se hacen locales al enlazar; esta orden anula eso de tal forma que sean exportados."
  
  #: config/darwin.opt:226
  #, no-c-format
  msgid "(Obsolete after 10.4) Multi modules are ignored at runtime since macOS 10.4."
! msgstr "(Obsoleto después de 10.4) Los multimódulos se descartan en tiempo de ejecución desde macOS 10.4."
  
  #: config/darwin.opt:230
  #, no-c-format
  msgid "(Obsolete after 10.4) -multiply_defined <treatment>\tProvided a mechanism for warning about symbols defined in multiple dylibs."
! msgstr "(Obsoleto después de 10.4) -multiply_defined <tratamiento>\tProporciona un mecanismo de advertencia sobre símbolos definidos en más de una dylib."
  
  #: config/darwin.opt:234
  #, no-c-format
  msgid "(Obsolete after 10.4) -multiply_defined_unused <treatment>\tProvided a mechanism for warning about symbols defined in the current executable also being defined in linked dylibs."
! msgstr "(Obsoleto después de 10.4) -multiply_defined_unused <tratamiento>\tProporciona un mecanismo de advertencia sobre símbolos definidos en el ejecutable actual que también se definen en dylibs enlazadas."
  
  #: config/darwin.opt:238
  #, no-c-format
*************** msgstr ""
*** 5767,5953 ****
  #: config/darwin.opt:250
  #, no-c-format
  msgid "(Obsolete after 10.3.9) Set MH_NOPREFIXBINDING, in an executable."
! msgstr ""
  
  #: config/darwin.opt:254
  #, no-c-format
  msgid "(Obsolete after 10.4)\tSet MH_NOMULTIDEFS in an umbrella framework."
! msgstr ""
  
  #: config/darwin.opt:258 config/darwin.opt:279 config/darwin.opt:283
! #, fuzzy, no-c-format
! #| msgid "switch %qs is no longer supported"
  msgid "(Obsolete) LD_PREBIND is no longer supported."
! msgstr "la opción %qs ya no se admite"
  
  #: config/darwin.opt:262
! #, fuzzy, no-c-format
! #| msgid "Stores doubles in 32 bits.  This is the default."
  msgid "(Obsolete) This is the default."
! msgstr "Almacena dobles en 32 bits.  Este es el valor por defecto."
  
  #: config/darwin.opt:275
  #, no-c-format
  msgid "-pagezero_size <size>\tAllows setting the page 0 size to 4kb when required."
! msgstr ""
  
  #: config/darwin.opt:287
  #, no-c-format
  msgid "Produces a Mach-O file suitable for embedded/ROM use."
! msgstr ""
  
  #: config/darwin.opt:291
  #, no-c-format
  msgid "(Obsolete) Allowed linking to proceed with \"-flat_namespace\" when a linked bundle contained a symbol also exported from the main executable."
! msgstr ""
  
  #: config/darwin.opt:298
  #, no-c-format
  msgid "Synonym for \"-export-dynamic\" for linker versions that support it."
! msgstr ""
  
  #: config/darwin.opt:302
  #, no-c-format
  msgid "-read_only_relocs <treatment>\tAllow relocations in read-only pages (not recommended)."
! msgstr ""
  
  #: config/darwin.opt:306
  #, no-c-format
  msgid "-sectalign <segname> <sectname> <value>\tSet section <sectname> in segment <segname> to have alignment <value> which must be an integral power of two expressed in hexadecimal form."
! msgstr ""
  
  #: config/darwin.opt:310
  #, no-c-format
  msgid "-sectcreate <segname> <sectname> <file>\tCreate section <sectname> in segment <segname> from the contents of <file>."
! msgstr ""
  
  #: config/darwin.opt:314
  #, no-c-format
  msgid "(Obsolete) -sectobjectsymbols <segname> <sectname>\tSetting a local symbol at the start of a section is no longer supported."
! msgstr ""
  
  #: config/darwin.opt:318
  #, no-c-format
  msgid "(Obsolete) -sectorder <segname> <sectname> <orderfile>\tReplaced by a more general option \"-order_file\"."
! msgstr ""
  
  #: config/darwin.opt:322
  #, no-c-format
  msgid "-seg_addr_table <file>\tSpecify the base addresses for dynamic libraries; <file> contains a line for each library."
! msgstr ""
  
  #: config/darwin.opt:327
  #, no-c-format
  msgid "(Obsolete, ld_classic only) -seg_addr_table_filename <path>."
! msgstr ""
  
  #: config/darwin.opt:331
! #, fuzzy, no-c-format
! #| msgid "Synonym for -Wcomment."
  msgid "Synonym for \"image_base\"."
! msgstr "Sinónimo de -Wcomment."
  
  #: config/darwin.opt:335
  #, no-c-format
  msgid "-segaddr <name> <address>\tSet the base address of segment <name> to <address> which must be aligned to a page boundary (currently 4kb)."
! msgstr ""
  
  #: config/darwin.opt:340
  #, no-c-format
  msgid "(Obsolete, ld_classic only) -sectcreate <segname> <sectname> <file>\tAllowed creation of a section from a file."
! msgstr ""
  
  #: config/darwin.opt:344
  #, no-c-format
  msgid "(Obsolete) Object files with LINKEDIT sections are no longer supported."
! msgstr ""
  
  #: config/darwin.opt:348
  #, no-c-format
  msgid "-segprot <segname> <max_prot> <init_prot>\tThe virtual memory protections for segment <segname> have maximum and initial values <max_prot> and <init_prot> respectively.  The specified values may contain \"r\", \"w\", \"x\" or \"-\" the latter meaning \"no access\"."
! msgstr ""
  
  #: config/darwin.opt:352
  #, no-c-format
  msgid "-segs_read_only_addr <address>\tSpecify that <address> is the base address of the read-only segments of a dylib."
! msgstr ""
  
  #: config/darwin.opt:356
  #, no-c-format
  msgid "-segs_read_write_addr <address>\tSpecify that <address> is the base address address of the read-write segments of a dylib."
! msgstr ""
  
  #: config/darwin.opt:360
! #, fuzzy, no-c-format
! #| msgid "Stores doubles in 32 bits.  This is the default."
  msgid "(Obsolete)\tThis is the default."
! msgstr "Almacena dobles en 32 bits.  Este es el valor por defecto."
  
  #: config/darwin.opt:364
  #, no-c-format
  msgid "-sub_library <name>\tLibrary named <name> will be re-exported (only useful for dylibs)."
! msgstr ""
  
  #: config/darwin.opt:368
  #, no-c-format
  msgid "-sub_umbrella <name>\tFramework named <name> will be re-exported (only useful for dylibs)."
! msgstr ""
  
  #: config/darwin.opt:372
! #, fuzzy, no-c-format
! #| msgid "this is the first default label"
  msgid "This is the default."
! msgstr "esta es la primera etiqueta por defecto"
  
  #: config/darwin.opt:376
  #, no-c-format
  msgid "Add extra information to the executable that can speed up dynamic loading (provided that dependent libraries are unchanged)."
! msgstr ""
  
  #: config/darwin.opt:380
  #, no-c-format
  msgid "-umbrella <framework>\tThe specified framework will be re-exported."
! msgstr ""
  
  #: config/darwin.opt:384
  #, no-c-format
  msgid "-undefined <treatment>\tSpecify the handling for undefined symbols (default is error)."
! msgstr ""
  
  #: config/darwin.opt:388
  #, no-c-format
  msgid "-unexported_symbols_list <filename>\tDo not export the global symbols listed in <filename>."
! msgstr ""
  
  #: config/darwin.opt:392
  #, no-c-format
  msgid "-weak_framework <framework>\tMake a weak link to the specified framework."
! msgstr ""
  
  #: config/darwin.opt:396
  #, no-c-format
  msgid "-weak_reference_mismatches <treatment>\tSpecifies what to do if a symbol import conflicts between file (weak in one and not in another) the default is to treat the symbol as non-weak."
! msgstr ""
  
  #: config/darwin.opt:400
  #, no-c-format
  msgid "Logs which object files the linker loads."
! msgstr ""
  
  #: config/darwin.opt:404
  #, no-c-format
  msgid "Logs which symbol(s) caused an object to be loaded."
! msgstr ""
  
  #: config/darwin.opt:412
  #, no-c-format
  msgid "(Obsolete, ignored)\tOld support similar to \"-whyload\"."
! msgstr ""
  
  #: config/darwin.opt:416
  #, no-c-format
  msgid "(Obsolete and unhandled by ld64, ignored)\tld should produce an executable (only handled by ld_classic)."
! msgstr ""
  
  #: config/bfin/bfin.opt:40 config/msp430/msp430.opt:3 config/c6x/c6x.opt:38
  #, no-c-format
--- 5573,5754 ----
  #: config/darwin.opt:250
  #, no-c-format
  msgid "(Obsolete after 10.3.9) Set MH_NOPREFIXBINDING, in an executable."
! msgstr "(Obsoleto después de 10.3.9) Establece MH_NOPREFIXBINDING, en un ejecutable."
  
  #: config/darwin.opt:254
  #, no-c-format
  msgid "(Obsolete after 10.4)\tSet MH_NOMULTIDEFS in an umbrella framework."
! msgstr "(Obsoleto después de 10.4)\tEstablece MH_NOMULTIDEFS en un marco paraguas."
  
  #: config/darwin.opt:258 config/darwin.opt:279 config/darwin.opt:283
! #, no-c-format
  msgid "(Obsolete) LD_PREBIND is no longer supported."
! msgstr "(Obsoleto) LD_PREBIND ya no está disponible."
  
  #: config/darwin.opt:262
! #, no-c-format
  msgid "(Obsolete) This is the default."
! msgstr "(Obsoleto) Este es el valor por defecto."
  
  #: config/darwin.opt:275
  #, no-c-format
  msgid "-pagezero_size <size>\tAllows setting the page 0 size to 4kb when required."
! msgstr "-pagezero_size <tamaño>\tPermite establecer el taño de la página 0 a 4kb cuando se requiera."
  
  #: config/darwin.opt:287
  #, no-c-format
  msgid "Produces a Mach-O file suitable for embedded/ROM use."
! msgstr "Produce un fichero Mach-O adecuado para uso empotrado/ROM."
  
  #: config/darwin.opt:291
  #, no-c-format
  msgid "(Obsolete) Allowed linking to proceed with \"-flat_namespace\" when a linked bundle contained a symbol also exported from the main executable."
! msgstr "(Obsoleto) Permitía que el enlazamiento procediera con «-flat_namespace» cuando un «bundle» contenía un símbolo también exportado desde el ejecutable principal."
  
  #: config/darwin.opt:298
  #, no-c-format
  msgid "Synonym for \"-export-dynamic\" for linker versions that support it."
! msgstr "Sinónimo de «-export-dynamic» para las versiones del enlazador que lo admitan."
  
  #: config/darwin.opt:302
  #, no-c-format
  msgid "-read_only_relocs <treatment>\tAllow relocations in read-only pages (not recommended)."
! msgstr "-read_only_relocs <tratamiento>\tPermite reubicaciones en páginas de solo lectura (no recomendado)."
  
  #: config/darwin.opt:306
  #, no-c-format
  msgid "-sectalign <segname> <sectname> <value>\tSet section <sectname> in segment <segname> to have alignment <value> which must be an integral power of two expressed in hexadecimal form."
! msgstr "-sectalign <nombreseg> <nombresec> <valor>\tConfigura la sección <nombresec> en el segmento <nombreseg> para tener alineamiento <valor>, que debe ser una potencia entera de dos expresada en forma hexadecimal."
  
  #: config/darwin.opt:310
  #, no-c-format
  msgid "-sectcreate <segname> <sectname> <file>\tCreate section <sectname> in segment <segname> from the contents of <file>."
! msgstr "-sectcreate <nombreseg> <nombresec> <fichero>\tCrea la sección <nombresec> en el segmento <nombreseg> a partir del contenido de <fichero>."
  
  #: config/darwin.opt:314
  #, no-c-format
  msgid "(Obsolete) -sectobjectsymbols <segname> <sectname>\tSetting a local symbol at the start of a section is no longer supported."
! msgstr "(Obsoleto) -sectobjectsymbols <nombreseg> <nombresec>\tYa no se puede poner establecer un símbolo al comienzo de una sección."
  
  #: config/darwin.opt:318
  #, no-c-format
  msgid "(Obsolete) -sectorder <segname> <sectname> <orderfile>\tReplaced by a more general option \"-order_file\"."
! msgstr "(Obsoleto) -sectorder <nombreseg> <nombresec> <ficheroorden>\tReemplazado por la opción más general «-order_file»."
  
  #: config/darwin.opt:322
  #, no-c-format
  msgid "-seg_addr_table <file>\tSpecify the base addresses for dynamic libraries; <file> contains a line for each library."
! msgstr "-seg_addr_table <fichero>\tEspecifica las direcciones base para bibliotecas dinámicas; <fichero> contiene una línea para cada biblioteca."
  
  #: config/darwin.opt:327
  #, no-c-format
  msgid "(Obsolete, ld_classic only) -seg_addr_table_filename <path>."
! msgstr "(Obsoleto, solamente ld_classic) -seg_addr_table_filename <ruta>."
  
  #: config/darwin.opt:331
! #, no-c-format
  msgid "Synonym for \"image_base\"."
! msgstr "Sinónimo de «image_base»."
  
  #: config/darwin.opt:335
  #, no-c-format
  msgid "-segaddr <name> <address>\tSet the base address of segment <name> to <address> which must be aligned to a page boundary (currently 4kb)."
! msgstr "-segaddr <nombre> <dirección>\tConfigura la dirección base del segmento <nombre> a <dirección>, que debe estar alineada al contorno de página (actualmente 4kb)."
  
  #: config/darwin.opt:340
  #, no-c-format
  msgid "(Obsolete, ld_classic only) -sectcreate <segname> <sectname> <file>\tAllowed creation of a section from a file."
! msgstr "(Obsoleto, solamente ld_classic) -sectcreate <nombreseg> <nombresec> <fichero>\tPermitía la creación de una sección dede un fichero."
  
  #: config/darwin.opt:344
  #, no-c-format
  msgid "(Obsolete) Object files with LINKEDIT sections are no longer supported."
! msgstr "(Obsoleto) Los ficheros objeto con secciones LINKEDIT ya no están disponibles."
  
  #: config/darwin.opt:348
  #, no-c-format
  msgid "-segprot <segname> <max_prot> <init_prot>\tThe virtual memory protections for segment <segname> have maximum and initial values <max_prot> and <init_prot> respectively.  The specified values may contain \"r\", \"w\", \"x\" or \"-\" the latter meaning \"no access\"."
! msgstr "-segprot <nombreseg> <maxprot> <iniprot>\tLas protecciones de la memoria virtual para el segmento <nombreseg> tienen valores máximo e inicial <maxproto> e <initprot>, respectivamente.  Los valores especificados pueden contener «r», «w», «x» o «-», este último con el significado «sin acceso»."
  
  #: config/darwin.opt:352
  #, no-c-format
  msgid "-segs_read_only_addr <address>\tSpecify that <address> is the base address of the read-only segments of a dylib."
! msgstr "-segs_read_only_addr <dirección>\tEspecifica que <dirección> es la dirección base de los segmentos de solo lectura de una dylib."
  
  #: config/darwin.opt:356
  #, no-c-format
  msgid "-segs_read_write_addr <address>\tSpecify that <address> is the base address address of the read-write segments of a dylib."
! msgstr "-segs_read_write_addr <dirección>\tEspecifica que <dirección> es la dirección base de los segmentos de lectura y escritura de una dylib."
  
  #: config/darwin.opt:360
! #, no-c-format
  msgid "(Obsolete)\tThis is the default."
! msgstr "(Obsoleto)\tEste es el valor por defecto."
  
  #: config/darwin.opt:364
  #, no-c-format
  msgid "-sub_library <name>\tLibrary named <name> will be re-exported (only useful for dylibs)."
! msgstr "-sub_library <nombre>\tLa biblioteca llamada <nombre> se va a volver a exportar (útil únicamente para dylibs)."
  
  #: config/darwin.opt:368
  #, no-c-format
  msgid "-sub_umbrella <name>\tFramework named <name> will be re-exported (only useful for dylibs)."
! msgstr "-sub_umbrella <nombre>\tEl marco llamado nombre> se va a volver a exportar (útil únicamente para dylibs)."
  
  #: config/darwin.opt:372
! #, no-c-format
  msgid "This is the default."
! msgstr "Esto es lo predeterminado."
  
  #: config/darwin.opt:376
  #, no-c-format
  msgid "Add extra information to the executable that can speed up dynamic loading (provided that dependent libraries are unchanged)."
! msgstr "Añade información extra al ejecutable, que puede acelerar la carga dinámica (suponiendo que no cambien las bibliotecas de las que depende)."
  
  #: config/darwin.opt:380
  #, no-c-format
  msgid "-umbrella <framework>\tThe specified framework will be re-exported."
! msgstr "-umbrella <marco>\tEl marco especificado se volverá a exportar."
  
  #: config/darwin.opt:384
  #, no-c-format
  msgid "-undefined <treatment>\tSpecify the handling for undefined symbols (default is error)."
! msgstr "-undefined <tratamiento>\tEspecifica el manejo de símbolos indefinidos (lo predeterminado es error)."
  
  #: config/darwin.opt:388
  #, no-c-format
  msgid "-unexported_symbols_list <filename>\tDo not export the global symbols listed in <filename>."
! msgstr "-unexported_symbols_list <nombrefich>\tNo exporta los símbolos globales enumerados en <nombrefich>."
  
  #: config/darwin.opt:392
  #, no-c-format
  msgid "-weak_framework <framework>\tMake a weak link to the specified framework."
! msgstr "-weak_framework <marco>\tCrea un enlace débil al marco especificado."
  
  #: config/darwin.opt:396
  #, no-c-format
  msgid "-weak_reference_mismatches <treatment>\tSpecifies what to do if a symbol import conflicts between file (weak in one and not in another) the default is to treat the symbol as non-weak."
! msgstr "-weak_reference_mismatches <marco>\tEspecifica lo que se hará si al importar un símbolo hay conflicto entre fichero (débil en uno y no en otro) lo predeterminado es tratar el símbolo como no débil."
  
  #: config/darwin.opt:400
  #, no-c-format
  msgid "Logs which object files the linker loads."
! msgstr "Registra los ficheros objeto que carga el enlazador."
  
  #: config/darwin.opt:404
  #, no-c-format
  msgid "Logs which symbol(s) caused an object to be loaded."
! msgstr "Registra los símbolos que provocan la carga de un objeto."
  
  #: config/darwin.opt:412
  #, no-c-format
  msgid "(Obsolete, ignored)\tOld support similar to \"-whyload\"."
! msgstr "(Obsoleto, descartado)\tSoporte viejo similar a «-whyload»."
  
  #: config/darwin.opt:416
  #, no-c-format
  msgid "(Obsolete and unhandled by ld64, ignored)\tld should produce an executable (only handled by ld_classic)."
! msgstr "(Obsoleto y no manejado por ld64, descartado)\tld debería producir un ejecutable (solo manejado por ld_classic)."
  
  #: config/bfin/bfin.opt:40 config/msp430/msp430.opt:3 config/c6x/c6x.opt:38
  #, no-c-format
*************** msgid "-mbranch-cost=N\tSet the cost of
*** 6290,6299 ****
  msgstr "-mbranch-cost=N\tEstablece el costo de las ramificaciones aproximadamente a N instrucciones."
  
  #: config/riscv/riscv.opt:38
! #, fuzzy, no-c-format
! #| msgid "This switch is deprecated; use -Wextra instead."
  msgid "This option is deprecated; use -fplt or -fno-plt instead."
! msgstr "Esta opción es obsoleta; utilice en su lugar -Wextra."
  
  #: config/riscv/riscv.opt:42
  #, no-c-format
--- 6091,6099 ----
  msgstr "-mbranch-cost=N\tEstablece el costo de las ramificaciones aproximadamente a N instrucciones."
  
  #: config/riscv/riscv.opt:38
! #, no-c-format
  msgid "This option is deprecated; use -fplt or -fno-plt instead."
! msgstr "Esta opción es obsoleta; utilice en su lugar -fplt o -fno-plt."
  
  #: config/riscv/riscv.opt:42
  #, no-c-format
*************** msgstr "-march=\tGenera código para el
*** 6328,6334 ****
  #: config/riscv/riscv.opt:91
  #, no-c-format
  msgid "-march=help\tPrint supported -march extensions."
! msgstr ""
  
  #: config/riscv/riscv.opt:103 config/mips/mips.opt:426
  #, no-c-format
--- 6128,6134 ----
  #: config/riscv/riscv.opt:91
  #, no-c-format
  msgid "-march=help\tPrint supported -march extensions."
! msgstr "-march=help\tImprime las extensiones -march disponibles."
  
  #: config/riscv/riscv.opt:103 config/mips/mips.opt:426
  #, no-c-format
*************** msgid "-mtune=PROCESSOR\tOptimize the ou
*** 6336,6345 ****
  msgstr "-mtune=PROCESADOR\tOptimiza la salida para el PROCESADOR."
  
  #: config/riscv/riscv.opt:107
! #, fuzzy, no-c-format
! #| msgid "-mtune=PROCESSOR\tOptimize the output for PROCESSOR."
  msgid "-mcpu=PROCESSOR\tUse architecture of and optimize the output for PROCESSOR."
! msgstr "-mtune=PROCESADOR\tOptimiza la salida para el PROCESADOR."
  
  #: config/riscv/riscv.opt:111
  #, no-c-format
--- 6136,6144 ----
  msgstr "-mtune=PROCESADOR\tOptimiza la salida para el PROCESADOR."
  
  #: config/riscv/riscv.opt:107
! #, no-c-format
  msgid "-mcpu=PROCESSOR\tUse architecture of and optimize the output for PROCESSOR."
! msgstr "-mcpu=PROCESADOR\tUtiliza la arquitectura de y optimiza la salida para el PROCESADOR."
  
  #: config/riscv/riscv.opt:111
  #, no-c-format
*************** msgstr "Usa código de prólogo y epílo
*** 6354,6360 ****
  #: config/riscv/riscv.opt:119
  #, no-c-format
  msgid "Convert BASE + LARGE_OFFSET addresses to NEW_BASE + SMALL_OFFSET to allow more memory accesses to be generated as compressed instructions.  Currently targets 32-bit integer load/stores."
! msgstr ""
  
  #: config/riscv/riscv.opt:125 config/aarch64/aarch64.opt:107
  #: config/loongarch/loongarch.opt:270
--- 6153,6159 ----
  #: config/riscv/riscv.opt:119
  #, no-c-format
  msgid "Convert BASE + LARGE_OFFSET addresses to NEW_BASE + SMALL_OFFSET to allow more memory accesses to be generated as compressed instructions.  Currently targets 32-bit integer load/stores."
! msgstr "Convierte las direcciones BASE + LARGE_OFFSET en NEW_BASE + SMALL_OFFSET para permitir que más accesos a memoria se generen como instrucciones comprimidas."
  
  #: config/riscv/riscv.opt:125 config/aarch64/aarch64.opt:107
  #: config/loongarch/loongarch.opt:270
*************** msgid "Do not generate unaligned memory
*** 6368,6383 ****
  msgstr "No genera accessos a memoria sin alinear"
  
  #: config/riscv/riscv.opt:133
! #, fuzzy, no-c-format
! #| msgid "Do not generate unaligned memory accesses."
  msgid "Do not generate unaligned scalar memory accesses."
! msgstr "No genera accessos a memoria sin alinear"
  
  #: config/riscv/riscv.opt:137
! #, fuzzy, no-c-format
! #| msgid "Do not generate unaligned memory accesses."
  msgid "Do not create element-misaligned vector memory accesses."
! msgstr "No genera accessos a memoria sin alinear"
  
  #: config/riscv/riscv.opt:141 config/i386/i386.opt:308
  #: config/rs6000/aix64.opt:36 config/rs6000/linux64.opt:32
--- 6167,6180 ----
  msgstr "No genera accessos a memoria sin alinear"
  
  #: config/riscv/riscv.opt:133
! #, no-c-format
  msgid "Do not generate unaligned scalar memory accesses."
! msgstr "No genera accessos a memoria escalares sin alinear"
  
  #: config/riscv/riscv.opt:137
! #, no-c-format
  msgid "Do not create element-misaligned vector memory accesses."
! msgstr "No crea accessos a memoria vectoriales con elementos desalineados"
  
  #: config/riscv/riscv.opt:141 config/i386/i386.opt:308
  #: config/rs6000/aix64.opt:36 config/rs6000/linux64.opt:32
*************** msgstr "Aprovecha los descansos del enla
*** 6398,6404 ****
  #: config/riscv/riscv.opt:163
  #, no-c-format
  msgid "Enable the CSR checking for the ISA-dependent CSR and the read-only CSR. The ISA-dependent CSR are only valid when the specific ISA is set.  The read-only CSR can not be written by the CSR instructions."
! msgstr ""
  
  #: config/riscv/riscv.opt:169 config/aarch64/aarch64.opt:150
  #: config/i386/i386.opt:420
--- 6195,6201 ----
  #: config/riscv/riscv.opt:163
  #, no-c-format
  msgid "Enable the CSR checking for the ISA-dependent CSR and the read-only CSR. The ISA-dependent CSR are only valid when the specific ISA is set.  The read-only CSR can not be written by the CSR instructions."
! msgstr "Activa las comprobaciones de CSR para el CSR dependiente de ISA y el CSR de solo lectura. Los CR dependientes de ISA solo son válidos cuando el ISA específico está configurado."
  
  #: config/riscv/riscv.opt:169 config/aarch64/aarch64.opt:150
  #: config/i386/i386.opt:420
*************** msgid "Use the given offset for addressi
*** 6447,6497 ****
  msgstr "Usa el desplazamiento dado para direccionar la guarda de protección de la pila."
  
  #: config/riscv/riscv.opt:543
! #, fuzzy, no-c-format
! #| msgid "Supported ABIs (for use with the -mabi= option):"
  msgid "Supported ISA specs (for use with the -misa-spec= option):"
! msgstr "ABIs admitidas (para usar con la opción -mabi=):"
  
  #: config/riscv/riscv.opt:556
! #, fuzzy, no-c-format
! #| msgid "The version of the C++ ABI in use."
  msgid "Set the version of RISC-V ISA spec."
! msgstr "La versión de la ABI de C++ que se está usando."
  
  #: config/riscv/riscv.opt:560
! #, fuzzy, no-c-format
! #| msgid "enable conditional move instruction usage."
  msgid "Enable conditional moves unconditionally."
! msgstr "activa el uso de la instrucción move condicional."
  
  #: config/riscv/riscv.opt:564
! #, fuzzy, no-c-format
! #| msgid "Specify the model for atomic operations."
  msgid "Always inline subword atomic operations."
! msgstr "Especifica el modelo para operaciones atómicas."
  
  #: config/riscv/riscv.opt:568
! #, fuzzy, no-c-format
! #| msgid "Use caller save register across calls if possible."
  msgid "Inline strcmp calls if possible."
! msgstr "Usa registro de guarda de invocador entre llamadas si es posible."
  
  #: config/riscv/riscv.opt:572
! #, fuzzy, no-c-format
! #| msgid "Use caller save register across calls if possible."
  msgid "Inline strncmp calls if possible."
! msgstr "Usa registro de guarda de invocador entre llamadas si es posible."
  
  #: config/riscv/riscv.opt:576
! #, fuzzy, no-c-format
! #| msgid "Use caller save register across calls if possible."
  msgid "Inline strlen calls if possible."
! msgstr "Usa registro de guarda de invocador entre llamadas si es posible."
  
  #: config/riscv/riscv.opt:580
  #, no-c-format
  msgid "Max number of bytes to compare as part of inlined strcmp/strncmp routines (default: 64)."
! msgstr ""
  
  #: config/riscv/riscv.opt:584
  #, no-c-format
--- 6244,6287 ----
  msgstr "Usa el desplazamiento dado para direccionar la guarda de protección de la pila."
  
  #: config/riscv/riscv.opt:543
! #, no-c-format
  msgid "Supported ISA specs (for use with the -misa-spec= option):"
! msgstr "Especificaciones ISA admitidas (para usar con la opción -misa-spec=):"
  
  #: config/riscv/riscv.opt:556
! #, no-c-format
  msgid "Set the version of RISC-V ISA spec."
! msgstr "Establece la versión de la especificación ISA RISC-V."
  
  #: config/riscv/riscv.opt:560
! #, no-c-format
  msgid "Enable conditional moves unconditionally."
! msgstr "Activa las move condicionales incondicionalmente."
  
  #: config/riscv/riscv.opt:564
! #, no-c-format
  msgid "Always inline subword atomic operations."
! msgstr "Siempre operaciones atómicas de subpalabra en línea."
  
  #: config/riscv/riscv.opt:568
! #, no-c-format
  msgid "Inline strcmp calls if possible."
! msgstr "Las llamadas a strcmp en línea si es posible."
  
  #: config/riscv/riscv.opt:572
! #, no-c-format
  msgid "Inline strncmp calls if possible."
! msgstr "Las llamadas a strncmp en línea si es posible."
  
  #: config/riscv/riscv.opt:576
! #, no-c-format
  msgid "Inline strlen calls if possible."
! msgstr "Las llamadas a strlen en línea si es posible."
  
  #: config/riscv/riscv.opt:580
  #, no-c-format
  msgid "Max number of bytes to compare as part of inlined strcmp/strncmp routines (default: 64)."
! msgstr "Número máximo de bytes que comparar como parte de rutinas strcmp/strncmp en línea (predeterminado: 64)."
  
  #: config/riscv/riscv.opt:584
  #, no-c-format
*************** msgid "-mrvv-max-lmul=<string>\tSet the
*** 6504,6523 ****
  msgstr ""
  
  #: config/riscv/riscv.opt:610
! #, fuzzy, no-c-format
! #| msgid "Valid arguments to -mstringop-strategy=:"
  msgid "Valid arguments to -param=vsetvl-strategy=:"
! msgstr "Argumentos válidos para -mstringop-strategy=:"
  
  #: config/riscv/riscv.opt:623
  #, no-c-format
  msgid "-param=vsetvl-strategy=<string>\tSet the optimization level of VSETVL insert pass."
! msgstr ""
  
  #: config/riscv/riscv.opt:627
  #, no-c-format
  msgid "-param=riscv-two-source-permutes Enable permutes with two source vectors."
! msgstr ""
  
  #: config/riscv/riscv.opt:631 config/i386/i386.opt:496
  #, no-c-format
--- 6294,6312 ----
  msgstr ""
  
  #: config/riscv/riscv.opt:610
! #, no-c-format
  msgid "Valid arguments to -param=vsetvl-strategy=:"
! msgstr "Argumentos válidos para -param=vsetvl-strategy=:"
  
  #: config/riscv/riscv.opt:623
  #, no-c-format
  msgid "-param=vsetvl-strategy=<string>\tSet the optimization level of VSETVL insert pass."
! msgstr "-param=vsetvl-strategy=<cadena>\tEstablece el nivel de optimización del paso de inserción de VSETVL."
  
  #: config/riscv/riscv.opt:627
  #, no-c-format
  msgid "-param=riscv-two-source-permutes Enable permutes with two source vectors."
! msgstr "-param=riscv-two-source-permutes Activa las permutaciones con vectores de dos fuentes."
  
  #: config/riscv/riscv.opt:631 config/i386/i386.opt:496
  #, no-c-format
*************** msgid "Valid arguments to -mstringop-str
*** 6525,6546 ****
  msgstr "Argumentos válidos para -mstringop-strategy=:"
  
  #: config/riscv/riscv.opt:647
! #, fuzzy, no-c-format
! #| msgid "Specify memset expansion strategy when expected size is known."
  msgid "Specify stringop expansion strategy."
! msgstr "Especifica la estrategia de expansión de memset cuando se conoce el tamaño esperado."
  
  #: config/riscv/riscv.opt:651
! #, fuzzy, no-c-format
! #| msgid "The possible SVE vector lengths:"
  msgid "The possible RVV vector register lengths:"
! msgstr "Las direcciones de vector SVE posibles:"
  
  #: config/riscv/riscv.opt:661
! #, fuzzy, no-c-format
! #| msgid "-msve-vector-bits=N\tSet the number of bits in an SVE vector register to N."
  msgid "-mrvv-vector-bits=<string>\tSet the kind of bits for an RVV vector register."
! msgstr "-msve-vector-bits=N\tEstablece el número de bits en un registro de vector SVE a N."
  
  #: config/riscv/riscv.opt:665 config/aarch64/aarch64.opt:58
  #: config/loongarch/loongarch.opt:287
--- 6314,6332 ----
  msgstr "Argumentos válidos para -mstringop-strategy=:"
  
  #: config/riscv/riscv.opt:647
! #, no-c-format
  msgid "Specify stringop expansion strategy."
! msgstr "Especifica la estrategia de expansión de stringop."
  
  #: config/riscv/riscv.opt:651
! #, no-c-format
  msgid "The possible RVV vector register lengths:"
! msgstr "Las longitudes de vector RVV posibles:"
  
  #: config/riscv/riscv.opt:661
! #, no-c-format
  msgid "-mrvv-vector-bits=<string>\tSet the kind of bits for an RVV vector register."
! msgstr "-mrvv-vector-bits=<cadena>\tEstablece la clase de bits para un registro vectorial RVV."
  
  #: config/riscv/riscv.opt:665 config/aarch64/aarch64.opt:58
  #: config/loongarch/loongarch.opt:287
*************** msgid "Specify TLS dialect."
*** 6555,6570 ****
  msgstr "Especifica el dialecto de TLS."
  
  #: config/riscv/riscv.opt:679
! #, fuzzy, no-c-format
! #| msgid "Specify whether the byte access instructions should be used. Enabled by default."
  msgid "Specifies whether the fence.tso instruction should be used."
! msgstr "Especifica si se deben usar las instrucciones de acceso a byte. Activado por defecto."
  
  #: config/riscv/riscv.opt:683
! #, fuzzy, no-c-format
! #| msgid "Enable automatic generation of fused floating point multiply-add instructions"
  msgid "Enable (default) or disable generation of vector segment load/store instructions."
! msgstr "Permite la generación automática de instrucciones multiply-add de coma flotante de corto circuito"
  
  #: config/m32c/m32c.opt:23
  #, no-c-format
--- 6341,6354 ----
  msgstr "Especifica el dialecto de TLS."
  
  #: config/riscv/riscv.opt:679
! #, no-c-format
  msgid "Specifies whether the fence.tso instruction should be used."
! msgstr "Especifica si se deben usar la instrucción fence.tso."
  
  #: config/riscv/riscv.opt:683
! #, no-c-format
  msgid "Enable (default) or disable generation of vector segment load/store instructions."
! msgstr "Activa (predeterminado) o desactiva la generación de instrucciones de carga/almacenamiento de segmento vectorial."
  
  #: config/m32c/m32c.opt:23
  #, no-c-format
*************** msgid "Generate code which uses only the
*** 6697,6706 ****
  msgstr "Genera código que usa solo los registros generales."
  
  #: config/aarch64/aarch64.opt:91 config/i386/i386.opt:1148
! #, fuzzy, no-c-format
! #| msgid "Generate code for all template instantiations."
  msgid "Generate code to mitigate against straight line speculation."
! msgstr "Genera código para todas las instanciaciones de plantillas."
  
  #: config/aarch64/aarch64.opt:95
  #, no-c-format
--- 6481,6489 ----
  msgstr "Genera código que usa solo los registros generales."
  
  #: config/aarch64/aarch64.opt:91 config/i386/i386.opt:1148
! #, no-c-format
  msgid "Generate code to mitigate against straight line speculation."
! msgstr "Genera código para mitigar la especulación de línea recta."
  
  #: config/aarch64/aarch64.opt:95
  #, no-c-format
*************** msgid "Workaround for ARM Cortex-A53 Err
*** 6713,6728 ****
  msgstr "Solución alternativa para la errata de ARM Cortex-A53 número 843419."
  
  #: config/aarch64/aarch64.opt:111
! #, fuzzy, no-c-format
! #| msgid "Specify how to access the thread pointer."
  msgid "The register used to access the thread pointer:"
! msgstr "Especifica cómo accedar al puntero de hilo."
  
  #: config/aarch64/aarch64.opt:142
! #, fuzzy, no-c-format
! #| msgid "Specify thread pointer register number."
  msgid "Specify the thread pointer register."
! msgstr "Especifica el número de registro de puntero del hilo."
  
  #: config/aarch64/aarch64.opt:146
  #, no-c-format
--- 6496,6509 ----
  msgstr "Solución alternativa para la errata de ARM Cortex-A53 número 843419."
  
  #: config/aarch64/aarch64.opt:111
! #, no-c-format
  msgid "The register used to access the thread pointer:"
! msgstr "El registro utilizado para acceder al puntero de hilo:"
  
  #: config/aarch64/aarch64.opt:142
! #, no-c-format
  msgid "Specify the thread pointer register."
! msgstr "Especifica el registro de puntero de hilo."
  
  #: config/aarch64/aarch64.opt:146
  #, no-c-format
*************** msgid "Specifies bit size of immediate T
*** 6735,6767 ****
  msgstr "Especifica el tamaño de bit para los desplazamientos TLS inmediatos. Los valores válidos son 12, 24, 32, 48."
  
  #: config/aarch64/aarch64.opt:177
! #, fuzzy, no-c-format
! #| msgid "-march=ARCH\tUse features of architecture ARCH."
  msgid "Use features of architecture ARCH."
! msgstr "-march=ARCH\tUsa las características de la arquitectura ARCH."
  
  #: config/aarch64/aarch64.opt:181
! #, fuzzy, no-c-format
! #| msgid "-mcpu=CPU\tUse features of and optimize for CPU."
  msgid "Use features of and optimize for CPU."
! msgstr "-mcpu=CPU\tUsa las características de y optimiza para CPU."
  
  #: config/aarch64/aarch64.opt:185
! #, fuzzy, no-c-format
! #| msgid "Optimize for 3900"
  msgid "Optimize for CPU."
! msgstr "Optimizar para 3900"
  
  #: config/aarch64/aarch64.opt:189
! #, fuzzy, no-c-format
! #| msgid "-mabi=ABI\tGenerate code that conforms to the specified ABI."
  msgid "Generate code that conforms to the specified ABI."
! msgstr "-mabi=ABI\tGenera código que cumpla con la ABI especificada."
  
  #: config/aarch64/aarch64.opt:193
  #, no-c-format
  msgid "-moverride=<string>\tPower users only! Override CPU optimization parameters."
! msgstr ""
  
  #: config/aarch64/aarch64.opt:197
  #, no-c-format
--- 6516,6544 ----
  msgstr "Especifica el tamaño de bit para los desplazamientos TLS inmediatos. Los valores válidos son 12, 24, 32, 48."
  
  #: config/aarch64/aarch64.opt:177
! #, no-c-format
  msgid "Use features of architecture ARCH."
! msgstr "Usa las características de la arquitectura ARCH."
  
  #: config/aarch64/aarch64.opt:181
! #, no-c-format
  msgid "Use features of and optimize for CPU."
! msgstr "Usa las características de y optimiza para CPU."
  
  #: config/aarch64/aarch64.opt:185
! #, no-c-format
  msgid "Optimize for CPU."
! msgstr "Optimiza para CPU."
  
  #: config/aarch64/aarch64.opt:189
! #, no-c-format
  msgid "Generate code that conforms to the specified ABI."
! msgstr "Genera código que cumpla con la ABI especificada."
  
  #: config/aarch64/aarch64.opt:193
  #, no-c-format
  msgid "-moverride=<string>\tPower users only! Override CPU optimization parameters."
! msgstr "-moverride=<cadena>\t¡Solo usuarios avanzados! Anula los parámetros de optimización de la CPU."
  
  #: config/aarch64/aarch64.opt:197
  #, no-c-format
*************** msgid "PC relative literal loads."
*** 6774,6794 ****
  msgstr "Cargas literales relativas a PC."
  
  #: config/aarch64/aarch64.opt:211 config/arm/arm.opt:337
! #, fuzzy, no-c-format
! #| msgid "Use given stack-protector guard."
  msgid "Use branch-protection features."
! msgstr "USa la guarda de protección de la pila dada."
  
  #: config/aarch64/aarch64.opt:215
  #, no-c-format
  msgid "Select return address signing scope."
! msgstr ""
  
  #: config/aarch64/aarch64.opt:219
! #, fuzzy, no-c-format
! #| msgid "Known address mode (for use with the -maddress-mode= option):"
  msgid "Supported AArch64 return address signing scope (for use with -msign-return-address= option):"
! msgstr "Modo de dirección conocido (para uso con la opción -maddress-mode=):"
  
  #: config/aarch64/aarch64.opt:232
  #, no-c-format
--- 6551,6569 ----
  msgstr "Cargas literales relativas a PC."
  
  #: config/aarch64/aarch64.opt:211 config/arm/arm.opt:337
! #, no-c-format
  msgid "Use branch-protection features."
! msgstr "Utiliza las características de protección de bifurcación."
  
  #: config/aarch64/aarch64.opt:215
  #, no-c-format
  msgid "Select return address signing scope."
! msgstr "Selecciona el ámbito de la firma de la dirección de retorno."
  
  #: config/aarch64/aarch64.opt:219
! #, no-c-format
  msgid "Supported AArch64 return address signing scope (for use with -msign-return-address= option):"
! msgstr "Ámbito de firma de la dirección de retorno de AArch64 disponible (para uso con la opción -msign-return-address=):"
  
  #: config/aarch64/aarch64.opt:232
  #, no-c-format
*************** msgstr "Activa la aproximación de la di
*** 6808,6814 ****
  #: config/aarch64/aarch64.opt:263
  #, no-c-format
  msgid "Specify when to enable an early register allocation pass.  The possibilities are: all functions, functions that have access to strided multi-register instructions, and no functions."
! msgstr ""
  
  #: config/aarch64/aarch64.opt:269
  #, no-c-format
--- 6583,6589 ----
  #: config/aarch64/aarch64.opt:263
  #, no-c-format
  msgid "Specify when to enable an early register allocation pass.  The possibilities are: all functions, functions that have access to strided multi-register instructions, and no functions."
! msgstr "Especifica cuándo habilitar paso de reserva de registro temprano.  Posibilidades: todas las funciones, funciones con acceso a instrucciones multi-registro por pasos, ninguna función."
  
  #: config/aarch64/aarch64.opt:269
  #, no-c-format
*************** msgid "The possible SVE vector lengths:"
*** 6816,6825 ****
  msgstr "Las direcciones de vector SVE posibles:"
  
  #: config/aarch64/aarch64.opt:291
! #, fuzzy, no-c-format
! #| msgid "-msve-vector-bits=N\tSet the number of bits in an SVE vector register to N."
  msgid "-msve-vector-bits=<number>\tSet the number of bits in an SVE vector register."
! msgstr "-msve-vector-bits=N\tEstablece el número de bits en un registro de vector SVE a N."
  
  #: config/aarch64/aarch64.opt:295
  #, no-c-format
--- 6591,6599 ----
  msgstr "Las direcciones de vector SVE posibles:"
  
  #: config/aarch64/aarch64.opt:291
! #, no-c-format
  msgid "-msve-vector-bits=<number>\tSet the number of bits in an SVE vector register."
! msgstr "-msve-vector-bits=<número>\tEstablece el número de bits en un registro vectorial SVE."
  
  #: config/aarch64/aarch64.opt:295
  #, no-c-format
*************** msgstr "Activa volcado de modelo de cost
*** 6829,6921 ****
  #: config/aarch64/aarch64.opt:299
  #, no-c-format
  msgid "Generate code to track when the CPU might be speculating incorrectly."
! msgstr ""
  
  #: config/aarch64/aarch64.opt:303
  #, no-c-format
  msgid "Enable the copy of the AArch64 load/store pair fusion pass that runs before register allocation."
! msgstr ""
  
  #: config/aarch64/aarch64.opt:308
  #, no-c-format
  msgid "Enable the copy of the AArch64 load/store pair fusion pass that runs after register allocation."
! msgstr ""
  
  #: config/aarch64/aarch64.opt:327
  #, no-c-format
  msgid "Use the system register specified on the command line as the stack protector guard register. This option is for use with fstack-protector-strong and not for use in user-land code."
! msgstr ""
  
  #: config/aarch64/aarch64.opt:333
  #, no-c-format
  msgid "Use an immediate to offset from the stack protector guard register, sp_el0. This option is for use with fstack-protector-strong and not for use in user-land code."
! msgstr ""
  
  #: config/aarch64/aarch64.opt:342
! #, fuzzy, no-c-format
! #| msgid "Generate a call to abort if a noreturn function returns."
  msgid "Generate local calls to out-of-line atomic operations."
! msgstr "Genera una llamada a abortar si una funcion noreturn devuelve."
  
  #: config/aarch64/aarch64.opt:346
  #, no-c-format
  msgid "When vectorizing, consider using multiple different approaches and use the cost model to choose the cheapest one."
! msgstr ""
  
  #: config/aarch64/aarch64.opt:351
  #, no-c-format
  msgid "The number of Newton iterations for calculating the reciprocal for float type.  The precision of division is proportional to this param when division approximation is enabled.  The default value is 1."
! msgstr ""
  
  #: config/aarch64/aarch64.opt:355
  #, no-c-format
  msgid "The number of Newton iterations for calculating the reciprocal for double type.  The precision of division is proportional to this param when division approximation is enabled.  The default value is 2."
! msgstr ""
  
  #: config/aarch64/aarch64.opt:359
  #, no-c-format
  msgid "--param=aarch64-autovec-preference=[default|asimd-only|sve-only|prefer-asimd|prefer-sve] Force an ISA selection strategy for auto-vectorization."
! msgstr ""
  
  #: config/aarch64/aarch64.opt:385
  #, no-c-format
  msgid "Constant memcpy size in bytes above which to start using MOPS sequence."
! msgstr ""
  
  #: config/aarch64/aarch64.opt:389
  #, no-c-format
  msgid "Constant memmove size in bytes above which to start using MOPS sequence."
! msgstr ""
  
  #: config/aarch64/aarch64.opt:393
  #, no-c-format
  msgid "Constant memset size in bytes from which to start using MOPS sequence."
! msgstr ""
  
  #: config/aarch64/aarch64.opt:397
  #, no-c-format
  msgid "Limit how much the autovectorizer may unroll a loop."
! msgstr ""
  
  #: config/aarch64/aarch64.opt:401
  #, no-c-format
  msgid "--param=aarch64-ldp-policy=[default|always|never|aligned] Fine-grained policy for load pairs."
! msgstr ""
  
  #: config/aarch64/aarch64.opt:405
  #, no-c-format
  msgid "--param=aarch64-stp-policy=[default|always|never|aligned] Fine-grained policy for store pairs."
! msgstr ""
  
  #: config/aarch64/aarch64.opt:424
  #, no-c-format
  msgid "Limit on number of alias checks performed when attempting to form an ldp/stp."
! msgstr ""
  
  #: config/aarch64/aarch64.opt:428
  #, no-c-format
  msgid "Param to control which writeback opportunities we try to handle in the load/store pair fusion pass.  A value of zero disables writeback handling.  One means we try to form pairs involving one or more existing individual writeback accesses where possible.  A value of two means we also try to opportunistically form writeback opportunities by folding in trailing destructive updates of the base register used by a pair."
! msgstr ""
  
  #: config/aarch64/aarch64.opt:437
  #, fuzzy, no-c-format
--- 6603,6694 ----
  #: config/aarch64/aarch64.opt:299
  #, no-c-format
  msgid "Generate code to track when the CPU might be speculating incorrectly."
! msgstr "Genera código para rastrear cuándo la CPU podría estar especulando incorrectamente."
  
  #: config/aarch64/aarch64.opt:303
  #, no-c-format
  msgid "Enable the copy of the AArch64 load/store pair fusion pass that runs before register allocation."
! msgstr "Habilita la copia de paso de fusión de parejas load/store de AArch64 que corre antes de la reserva de registros."
  
  #: config/aarch64/aarch64.opt:308
  #, no-c-format
  msgid "Enable the copy of the AArch64 load/store pair fusion pass that runs after register allocation."
! msgstr "Habilita la copia de paso de fusión de parejas load/store de AArch64 que corre después de la reserva de registros."
  
  #: config/aarch64/aarch64.opt:327
  #, no-c-format
  msgid "Use the system register specified on the command line as the stack protector guard register. This option is for use with fstack-protector-strong and not for use in user-land code."
! msgstr "Utiliza el registro del sistema especificado en la línea de órdenes como registro de guarda de protección de la pila. Esta opción es para utilizar con fstack-protector-strong y no para utilizar en código del usuario."
  
  #: config/aarch64/aarch64.opt:333
  #, no-c-format
  msgid "Use an immediate to offset from the stack protector guard register, sp_el0. This option is for use with fstack-protector-strong and not for use in user-land code."
! msgstr "Utiliza un inmediato para desplazar desde el registro de guarda de protección de la pila, sp_el0. Esta opción es para utilizar con fstack-protector-strong y no para utilizar en código del usuario."
  
  #: config/aarch64/aarch64.opt:342
! #, no-c-format
  msgid "Generate local calls to out-of-line atomic operations."
! msgstr "Genera llamadas locales a operaciones atómicas de fuera de línea."
  
  #: config/aarch64/aarch64.opt:346
  #, no-c-format
  msgid "When vectorizing, consider using multiple different approaches and use the cost model to choose the cheapest one."
! msgstr "Cuando se vectoriza, considera el uso de diversas estrategias y utiliza el modelo de costes para elegir la más barata."
  
  #: config/aarch64/aarch64.opt:351
  #, no-c-format
  msgid "The number of Newton iterations for calculating the reciprocal for float type.  The precision of division is proportional to this param when division approximation is enabled.  The default value is 1."
! msgstr "El número de iteraciones de Newton para calcular el recíproco de un tipo float.  La precisión de la división es proporcional a este parámetro cuando la aproximación de la división está habilitada.  El valor predefinido es 1."
  
  #: config/aarch64/aarch64.opt:355
  #, no-c-format
  msgid "The number of Newton iterations for calculating the reciprocal for double type.  The precision of division is proportional to this param when division approximation is enabled.  The default value is 2."
! msgstr "El número de iteraciones de Newton para calcular el recíproco de un tipo double.  La precisión de la división es proporcional a este parámetro cuando la aproximación de la división está habilitada.  El valor predefinido es 2."
  
  #: config/aarch64/aarch64.opt:359
  #, no-c-format
  msgid "--param=aarch64-autovec-preference=[default|asimd-only|sve-only|prefer-asimd|prefer-sve] Force an ISA selection strategy for auto-vectorization."
! msgstr "--param=aarch64-autovec-preference=[default|asimd-only|sve-only|prefer-asimd|prefer-sve] Fuerza una estrategia de selección de ISA para auto vectorización."
  
  #: config/aarch64/aarch64.opt:385
  #, no-c-format
  msgid "Constant memcpy size in bytes above which to start using MOPS sequence."
! msgstr "Tamaño en bytes de memcpy constante por encima del cual empezar a utilizar una secuencia MOPS."
  
  #: config/aarch64/aarch64.opt:389
  #, no-c-format
  msgid "Constant memmove size in bytes above which to start using MOPS sequence."
! msgstr "Tamaño en bytes de memmove constante por encima del cual empezar a utilizar una secuencia MOPS."
  
  #: config/aarch64/aarch64.opt:393
  #, no-c-format
  msgid "Constant memset size in bytes from which to start using MOPS sequence."
! msgstr "Tamaño en bytes de memset constante por encima del cual empezar a utilizar una secuencia MOPS."
  
  #: config/aarch64/aarch64.opt:397
  #, no-c-format
  msgid "Limit how much the autovectorizer may unroll a loop."
! msgstr "Limita cuánto puede desenrrollar un bucle el autovectorizador."
  
  #: config/aarch64/aarch64.opt:401
  #, no-c-format
  msgid "--param=aarch64-ldp-policy=[default|always|never|aligned] Fine-grained policy for load pairs."
! msgstr "--param=aarch64-ldp-policy=[default|always|never|aligned] Política de grano fino para pares de load."
  
  #: config/aarch64/aarch64.opt:405
  #, no-c-format
  msgid "--param=aarch64-stp-policy=[default|always|never|aligned] Fine-grained policy for store pairs."
! msgstr "--param=aarch64-stp-policy=[default|always|never|aligned] Política de grano fino para pares de store."
  
  #: config/aarch64/aarch64.opt:424
  #, no-c-format
  msgid "Limit on number of alias checks performed when attempting to form an ldp/stp."
! msgstr "Límite del número de comprobaciones de alias realizados cuando se intenta formar un ldp/stp."
  
  #: config/aarch64/aarch64.opt:428
  #, no-c-format
  msgid "Param to control which writeback opportunities we try to handle in the load/store pair fusion pass.  A value of zero disables writeback handling.  One means we try to form pairs involving one or more existing individual writeback accesses where possible.  A value of two means we also try to opportunistically form writeback opportunities by folding in trailing destructive updates of the base register used by a pair."
! msgstr "Parámetro para controlar qué oportunidades de retroescritura intentamos manejar en los pasos de fusión load/store.  Un valor de cero deshabilita el manejo de la retroescritura. Uno significa que intentamos formar pares implicando uno o más accesos de retroescritura individuales existentes cuando sea posible.  Un valor de dos significa que también intentamos oportunísticamente formar oportunidades de retroescritura incorporando actualizaciones destructivas residuales del registro base utilizado por un par."
  
  #: config/aarch64/aarch64.opt:437
  #, fuzzy, no-c-format
diff -Nrcpad gcc-16-20251109/gcc/rust/ChangeLog gcc-16-20251116/gcc/rust/ChangeLog
*** gcc-16-20251109/gcc/rust/ChangeLog	Sun Nov  9 22:32:49 2025
--- gcc-16-20251116/gcc/rust/ChangeLog	Sun Nov 16 22:32:57 2025
***************
*** 1,3 ****
--- 1,14 ----
+ 2025-11-12  Arthur Cohen  <arthur.cohen@embecosm.com>
+ 
+ 	* ast/rust-fmt.h: Simplify diagnostic avoidance.
+ 
+ 2025-11-12  Arthur Cohen  <arthur.cohen@embecosm.com>
+ 	    Thomas Schwinge  <tschwinge@gcc.gnu.org>
+ 
+ 	PR rust/122498
+ 	* ast/rust-fmt.h: Add -Warray-bounds pragma to avoid the issue during
+ 	bootstraps
+ 
  2025-10-30  Owen Avery  <powerboat9.gamer@gmail.com>
  
  	* ast/rust-ast-pointer-visitor.cc (PointerVisitor::visit):
diff -Nrcpad gcc-16-20251109/gcc/rust/ast/rust-fmt.h gcc-16-20251116/gcc/rust/ast/rust-fmt.h
*** gcc-16-20251109/gcc/rust/ast/rust-fmt.h	Sun Nov  9 22:32:49 2025
--- gcc-16-20251116/gcc/rust/ast/rust-fmt.h	Sun Nov 16 22:32:57 2025
***************
*** 22,27 ****
--- 22,30 ----
  #include "rust-system.h"
  #include "optional.h"
  
+ // PR122498 "rust-enabled bootstrap is broken after r16-4897"
+ #pragma GCC diagnostic warning "-Warray-bounds"
+ 
  namespace Rust {
  namespace Fmt {
  
diff -Nrcpad gcc-16-20251109/gcc/testsuite/ChangeLog gcc-16-20251116/gcc/testsuite/ChangeLog
*** gcc-16-20251109/gcc/testsuite/ChangeLog	Sun Nov  9 22:32:49 2025
--- gcc-16-20251116/gcc/testsuite/ChangeLog	Sun Nov 16 22:32:57 2025
***************
*** 1,3 ****
--- 1,511 ----
+ 2025-11-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* c-c++-common/asan/asan-stack-small.c (pa, pb, pc): Make these
+ 	vars volatile.
+ 	(uintptr_t): New typedef.
+ 	(main): Use access of b using pa pointer with offset depending on
+ 	how exactly the 3 variables are laid out in the frame.
+ 
+ 2025-11-15  Jason Merrill  <jason@redhat.com>
+ 
+ 	* g++.dg/modules/using-33_a.C: New test.
+ 	* g++.dg/modules/using-33_b.C: New test.
+ 
+ 2025-11-15  Jason Merrill  <jason@redhat.com>
+ 
+ 	* g++.dg/modules/friend-11_a.C: New test.
+ 	* g++.dg/modules/friend-11_b.C: New test.
+ 
+ 2025-11-15  Karl Meakin  <karl.meakin@arm.com>
+ 
+ 	* gcc.target/aarch64/cmpbr-4.c: New test.
+ 	* gcc.target/aarch64/cmpbr-5.c: New test.
+ 
+ 2025-11-14  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	* gcc.target/riscv/rvv/vsetvl/avl_single-37.c: Drop unnecessary output
+ 	test(s).
+ 	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-1.c: Likewise.
+ 	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-2.c: Likewise.
+ 	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-3.c: Likewise.
+ 	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-4.c: Likewise.
+ 	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-5.c: Likewise.
+ 	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-6.c: Likewise.
+ 	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-7.c: Likewise.
+ 	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-8.c: Likewise.
+ 	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-9.c: Likewise.
+ 	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-10.c: Likewise.
+ 	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-11.c: Likewise.
+ 	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-12.c: Likewise.
+ 	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-13.c: Likewise.
+ 	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-14.c: Likewise.
+ 	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-15.c: Likewise.
+ 	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-16.c: Likewise.
+ 	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-17.c: Likewise.
+ 	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-18.c: Likewise.
+ 	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-19.c: Likewise.
+ 	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-20.c: Likewise.
+ 	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-21.c: Likewise.
+ 	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-22.c: Likewise.
+ 	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-23.c: Likewise.
+ 	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-24.c: Likewise.
+ 	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-25.c: Likewise.
+ 	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-26.c: Likewise.
+ 	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-27.c: Likewise.
+ 	* gcc.target/riscv/rvv/vsetvl/vlmax_phi-28.c: Likewise.
+ 
+ 2025-11-14  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* gcc.target/arm/mve/intrinsics/sqshl_check_shift.c: New test.
+ 	* gcc.target/arm/mve/intrinsics/srshr_check_shift.c: New test.
+ 	* gcc.target/arm/mve/intrinsics/uqshl_check_shift.c: New test.
+ 	* gcc.target/arm/mve/intrinsics/urshr_check_shift.c: New test.
+ 
+ 2025-11-14  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* gcc.target/arm/mve/intrinsics/sqshll_check_shift.c: New test.
+ 	* gcc.target/arm/mve/intrinsics/srshrl_check_shift.c: New test.
+ 	* gcc.target/arm/mve/intrinsics/uqshll_check_shift.c: New test.
+ 	* gcc.target/arm/mve/intrinsics/urshrl_check_shift.c: New test.
+ 
+ 2025-11-14  Yuao Ma  <c8ef@outlook.com>
+ 
+ 	* gfortran.dg/value_optional_3.f90: New test.
+ 
+ 2025-11-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR ipa/122663
+ 	* g++.dg/torture/pr122663.C: New testcase.
+ 
+ 2025-11-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122573
+ 	* gcc.dg/vect/slp-58.c: New testcase.
+ 
+ 2025-11-14  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/117070
+ 	* gfortran.dg/proc_target_1.f90: New test.
+ 
+ 2025-11-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122680
+ 	* gcc.dg/vect/pr122680.c: New testcase.
+ 
+ 2025-11-14  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	PR target/122216
+ 	* gcc.target/arm/mve/intrinsics/asrl-various-ranges.c: New test.
+ 	* gcc.target/arm/mve/intrinsics/lsll-various-ranges.c: New test.
+ 
+ 2025-11-14  zhaozhou  <zhaozhou@loongson.cn>
+ 
+ 	* gcc.target/loongarch/vec_reduc_half.c: New test.
+ 
+ 2025-11-13  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/96255
+ 	* gfortran.dg/do_concurrent_typespec_1.f90: Delete three
+ 	dg-bogus directives not needed.
+ 
+ 2025-11-13  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/122646
+ 	* g++.dg/modules/friend-10_a.C: New test.
+ 	* g++.dg/modules/friend-10_b.C: New test.
+ 
+ 2025-11-13  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/122493
+ 	* gcc.target/i386/pr121062-1.c: Update count.
+ 	* gcc.dg/uninit-pred-7_a.c: xfail line 23.
+ 	* g++.dg/uninit-pred-5.C: Change dg-warning to dg-bogus.
+ 	* gcc.dg/tree-ssa/ssa-dom-thread-7.c: Update count of jump thread.
+ 
+ 2025-11-13  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/122637
+ 	* gcc.dg/torture/pr122637-1.c: New test.
+ 
+ 2025-11-13  Michal Jires  <mjires@suse.cz>
+ 
+ 	PR lto/122603
+ 	* gcc.dg/lto/pr122603_0.c: New test.
+ 
+ 2025-11-13  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	* gcc.dg/tree-ssa/forwprop-43.c: Adjust.
+ 
+ 2025-11-13  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	PR rtl-optimization/122627
+ 	* gcc.target/riscv/rvv/autovec/pr122627.c: New test.
+ 
+ 2025-11-13  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* gcc.target/i386/kortest_ccz-1.c: New test.
+ 
+ 2025-11-13  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/122551
+ 	* g++.dg/modules/tpl-friend-20_a.C: New test.
+ 	* g++.dg/modules/tpl-friend-20_b.C: New test.
+ 	* g++.dg/modules/tpl-friend-20_c.C: New test.
+ 
+ 2025-11-13  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* gcc.target/aarch64/eor3-opt.c: New test.
+ 
+ 2025-11-13  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/96255
+ 	* gfortran.dg/do_concurrent_typespec_1.f90: Update testcase to check
+ 	for bugus warnings.
+ 
+ 2025-11-12  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	PR target/122175
+ 	* gcc.target/arm/mve/intrinsics/vbicq_m_n_s16.c: Adjust expected
+ 	output.
+ 	* gcc.target/arm/mve/intrinsics/vbicq_m_n_u16.c: Likewise.
+ 	* gcc.target/arm/mve/intrinsics/vbicq_n_s16.c: Likewise.
+ 	* gcc.target/arm/mve/intrinsics/vbicq_n_u16.c: Likewise.
+ 	* gcc.target/arm/mve/intrinsics/vmvnq_m_n_s16.c: Likewise.
+ 	* gcc.target/arm/mve/intrinsics/vmvnq_m_n_u16.c: Likewise.
+ 	* gcc.target/arm/mve/intrinsics/vmvnq_n_s16.c: Likewise.
+ 	* gcc.target/arm/mve/intrinsics/vmvnq_n_u16.c: Likewise.
+ 	* gcc.target/arm/mve/intrinsics/vmvnq_x_n_s16.c: Likewise.
+ 	* gcc.target/arm/mve/intrinsics/vmvnq_x_n_u16.c: Likewise.
+ 	* gcc.target/arm/mve/intrinsics/vorrq_m_n_s16.c: Likewise.
+ 	* gcc.target/arm/mve/intrinsics/vorrq_m_n_u16.c: Likewise.
+ 	* gcc.target/arm/mve/intrinsics/vorrq_n_s16.c: Likewise.
+ 	* gcc.target/arm/mve/intrinsics/vorrq_n_u16.c: Likewise.
+ 
+ 2025-11-12  Antoni Boucher  <bouanto@zoho.com>
+ 
+ 	* jit.dg/all-non-failing-tests.h: Mention new test.
+ 	* jit.dg/test-abi.c: New test.
+ 
+ 2025-11-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122653
+ 	* gcc.dg/tree-ssa/scev-16.c: New testcase.
+ 
+ 2025-11-12  Christophe Lyon  <christophe.lyon@linaro.org>
+ 	    Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/122175
+ 	* gcc.target/arm/mve/intrinsics/pr122175.c: New test.
+ 
+ 2025-11-12  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* gcc.target/arm/cmse/mainline/8m/hard/union-fp.c: New.
+ 	* gcc.target/arm/cmse/baseline/union-4.c: New.
+ 	* gcc.target/arm/cmse/mainline/8m/hard/union-4.c: New.
+ 	* gcc.target/arm/cmse/mainline/8m/soft/union-4.c: New.
+ 	* gcc.target/arm/cmse/mainline/8m/softfp/union-4.c: New.
+ 	* gcc.target/arm/cmse/union-4.x: New.
+ 
+ 2025-11-12  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* gcc.target/arm/cmse/union-3.x: New test.
+ 	* gcc.target/arm/cmse/baseline/union-3.c: New test.
+ 	* gcc.target/arm/cmse/mainline/8m/union-3.c: New test.
+ 	* gcc.target/arm/cmse/mainline/8_1m/union-3.c: New test.
+ 
+ 2025-11-12  Stefan Schulze Frielinghaus  <stefansf@gcc.gnu.org>
+ 
+ 	* gcc.target/s390/stack-protector-guard-global-1.c: New test.
+ 	* gcc.target/s390/stack-protector-guard-global-2.c: New test.
+ 	* gcc.target/s390/stack-protector-guard-global-3.c: New test.
+ 	* gcc.target/s390/stack-protector-guard-global-4.c: New test.
+ 
+ 2025-11-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122647
+ 	* g++.dg/vect/pr122647.cc: New testcase.
+ 
+ 2025-11-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/warn34.adb: New test.
+ 
+ 2025-11-12  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR libfortran/36725
+ 	* gfortran.dg/fmt_g0_4.f08: Change test case from
+ 	compile only to compile and run. Adjust test conditions.
+ 
+ 2025-11-11  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/90519
+ 	* gfortran.dg/finalizer_recursive_alloc_1.f90: New test for ICE fix.
+ 	* gfortran.dg/finalizer_recursive_alloc_2.f90: New execution test.
+ 	* gfortran.dg/finalizer_self_assign.f90: New test for self-assignment
+ 	including a = a, a = (a), and a = (((a))) cases using if/stop pattern.
+ 	* gfortran.dg/pr112459.f90: Update to expect 6 _final calls instead
+ 	of 12, reflecting corrected self-assignment behavior.
+ 
+ 2025-11-11  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 	    Steve Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/96255
+ 	* gfortran.dg/do_concurrent_typespec_1.f90: New test covering all
+ 	shadowing scenarios: undeclared variable, same kind shadowing, and
+ 	different kind shadowing.
+ 
+ 2025-11-11  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR libfortran/90374
+ 	PR libfortran/90374
+ 	* gfortran.dg/fmt_error_10.f: Update test case to pass.
+ 	* gfortran.dg/fmt_zero_width.f90: Likewise.
+ 	* gfortran.dg/pr111022.f90: Likewise.
+ 	* gfortran.dg/pr96436_4.f90: Likewise.
+ 	* gfortran.dg/pr96436_5.f90: Likewise.
+ 
+ 2025-11-11  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c: Add asm check
+ 	for vmseq.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_vmseq-run-1-u16.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-u32.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-u64.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-u8.c: New test.
+ 
+ 2025-11-11  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c: Add asm check
+ 	for vmseq.vx.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i16.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i16.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-i16.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-i32.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-i64.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-i8.c: New test.
+ 
+ 2025-11-11  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* gcc.dg/match-shift-cmp-1.c: New test.
+ 	* gcc.dg/match-shift-cmp-2.c: Likewise.
+ 	* gcc.dg/match-shift-cmp-3.c: Likewise.
+ 	* gcc.dg/match-shift-cmp-4.c: Likewise.
+ 
+ 2025-11-11  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* g++.target/loongarch/mv-symbols1.C: New test.
+ 	* g++.target/loongarch/mv-symbols2.C: New test.
+ 	* g++.target/loongarch/mv-symbols3.C: New test.
+ 	* g++.target/loongarch/mv-symbols4.C: New test.
+ 	* g++.target/loongarch/mv-symbols5.C: New test.
+ 	* g++.target/loongarch/mv-symbols6.C: New test.
+ 	* g++.target/loongarch/mvc-symbols1.C: New test.
+ 	* g++.target/loongarch/mvc-symbols2.C: New test.
+ 	* g++.target/loongarch/mvc-symbols3.C: New test.
+ 	* g++.target/loongarch/mvc-symbols4.C: New test.
+ 	* g++.target/loongarch/mvc-symbols5.C: New test.
+ 	* gcc.target/loongarch/attr-check-error-message1.c: New test.
+ 	* gcc.target/loongarch/attr-check-error-message2.c: New test.
+ 	* gcc.target/loongarch/attr-check-error-message3.c: New test.
+ 	* gcc.target/loongarch/attr-check-error-message4.c: New test.
+ 	* gcc.target/loongarch/attr-check-error-message5.c: New test.
+ 	* gcc.target/loongarch/attr-check-error-message6.c: New test.
+ 	* gcc.target/loongarch/attr-check-error-message7.c: New test.
+ 	* gcc.target/loongarch/attr-check-error-message8.c: New test.
+ 	* gcc.target/loongarch/attr-check-error-message9.c: New test.
+ 
+ 2025-11-11  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* gcc.target/loongarch/pragma-la64V1_1.c: New test.
+ 	* gcc.target/loongarch/pragma-la64V1_1-2.c: New test.
+ 
+ 2025-11-11  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* gcc.target/loongarch/attr-check-error-message.c: Add tests.
+ 
+ 2025-11-11  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/122629
+ 	* gcc.dg/torture/pr122629-1.c: New test.
+ 	* gcc.dg/torture/pr122629-2.c: New test.
+ 	* gcc.dg/tree-ssa/pr122629-1.c: New test.
+ 
+ 2025-11-11  Hu, Lin1  <lin1.hu@intel.com>
+ 
+ 	PR target/122446
+ 	* gcc.target/i386/amxbf16-asmintel-1.c: Modify dg-final to check intel
+ 	form.
+ 	* gcc.target/i386/amxcomplex-asmintel-1.c: Ditto.
+ 	* gcc.target/i386/amxfp16-asmintel-1.c: Ditto.
+ 	* gcc.target/i386/amxfp8-asmintel-1.c: Ditto.
+ 	* gcc.target/i386/amxint8-asmintel-1.c: Ditto.
+ 	* gcc.target/i386/amxmovrs-asmintel-1.c: Ditto.
+ 	* gcc.target/i386/amxtf32-asmintel-1.c: Ditto.
+ 	* gcc.target/i386/amxtile-asmintel-1.c: Ditto.
+ 	* g++.target/i386/pr122446-1.C: New test.
+ 	* g++.target/i386/pr122446-amxavx512.C: Ditto.
+ 	* g++.target/i386/pr122446-amxbf16.C: Ditto.
+ 	* g++.target/i386/pr122446-amxcomplex.C: Ditto.
+ 	* g++.target/i386/pr122446-amxfp16.C: Ditto.
+ 	* g++.target/i386/pr122446-amxfp8.C: Ditto.
+ 	* g++.target/i386/pr122446-amxint8.C: Ditto.
+ 	* g++.target/i386/pr122446-amxmovrs.C: Ditto.
+ 	* g++.target/i386/pr122446-amxtf32.C: Ditto.
+ 	* g++.target/i386/pr122446-amxtile.C: Ditto.
+ 
+ 2025-11-10  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/122628
+ 	* g++.dg/modules/internal-18.C: New test.
+ 
+ 2025-11-10  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	* g++.dg/modules/tpl-friend-8_a.H: Add testcase.
+ 	* g++.dg/modules/tpl-friend-8_b.C: Add testcase.
+ 
+ 2025-11-10  Alejandro Colomar  <alx@kernel.org>
+ 
+ 	PR c/122591
+ 	* gcc.dg/countof-compile.c (type): Test return type of _Countof.
+ 
+ 2025-11-10  Dimitar Dimitrov  <dimitar@dinux.eu>
+ 
+ 	PR target/122415
+ 	* gcc.target/pru/pr122415-1.c: New test.
+ 	* gcc.target/pru/pr122415-2.c: New test.
+ 
+ 2025-11-10  Tejas Belagod  <tejas.belagod@arm.com>
+ 
+ 	* gcc.target/aarch64/sve/acle/general-c/svcount_1.c: Update message.
+ 
+ 2025-11-10  Tejas Belagod  <tejas.belagod@arm.com>
+ 
+ 	* g++.dg/ext/sve-sizeless-1.C: Add new tests.
+ 	* g++.dg/ext/sve-sizeless-2.C: Add new tests.
+ 	* g++.target/aarch64/sve/acle/general-c++/gnu_vectors_1.C: Add new tests.
+ 	* g++.target/aarch64/sve/acle/general-c++/gnu_vectors_2.C: Add new tests.
+ 	* gcc.target/aarch64/sve/acle/general-c/gnu_vectors_1.c: Add new tests.
+ 	* gcc.target/aarch64/sve/acle/general-c/gnu_vectors_2.c: Add new tests.
+ 	* gcc.target/aarch64/sve/acle/general-c/sizeless-1.c: Add new tests.
+ 	* gcc.target/aarch64/sve/acle/general-c/sizeless-2.c : Add new tests.
+ 
+ 2025-11-10  Tejas Belagod  <tejas.belagod@arm.com>
+ 
+ 	* gcc.target/aarch64/sve/acle/general/cops_bool.c: New.
+ 
+ 2025-11-10  Robin Dapp  <rdapp@ventanamicro.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/pr121985.c: New test.
+ 
+ 2025-11-10  Robin Dapp  <rdapp@ventanamicro.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/pr118019-2.c:
+ 
+ 2025-11-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/119064
+ 	* g++.dg/cpp26/feat-cxx26.C: Revert 2025-07-11 changes.
+ 	* g++.dg/DRs/dr2581-1.C (__cpp_trivial_relocatability): Remove test.
+ 	* g++.dg/DRs/dr2581-2.C (__cpp_trivial_relocatability): Likewise.
+ 	* g++.dg/warn/Wkeyword-macro-1.C: Don't expect any diagnostics on
+ 	#define or #undef of trivially_relocatable_if_eligible or
+ 	replaceable_if_eligible.
+ 	* g++.dg/warn/Wkeyword-macro-2.C: Likewise.
+ 	* g++.dg/warn/Wkeyword-macro-4.C: Likewise.
+ 	* g++.dg/warn/Wkeyword-macro-5.C: Likewise.
+ 	* g++.dg/warn/Wkeyword-macro-7.C: Likewise.
+ 	* g++.dg/warn/Wkeyword-macro-8.C: Likewise.
+ 	* g++.dg/cpp26/trivially-relocatable1.C: Remove.
+ 	* g++.dg/cpp26/trivially-relocatable2.C: Remove.
+ 	* g++.dg/cpp26/trivially-relocatable3.C: Remove.
+ 	* g++.dg/cpp26/trivially-relocatable4.C: Remove.
+ 	* g++.dg/cpp26/trivially-relocatable5.C: Remove.
+ 	* g++.dg/cpp26/trivially-relocatable6.C: Remove.
+ 	* g++.dg/cpp26/trivially-relocatable7.C: Remove.
+ 	* g++.dg/cpp26/trivially-relocatable8.C: Remove.
+ 	* g++.dg/cpp26/trivially-relocatable9.C: Remove.
+ 	* g++.dg/cpp26/trivially-relocatable10.C: Remove.
+ 	* g++.dg/cpp26/trivially-relocatable11.C: Remove.
+ 	* g++.dg/modules/class-11_a.H: Remove trivial relocatability
+ 	related parts.
+ 	* g++.dg/modules/class-11_b.C: Likewise.
+ 
+ 2025-11-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* g++.dg/warn/Wkeyword-macro-1.C: Expect diagnostics on define/undef
+ 	of indeterminate.
+ 	* g++.dg/warn/Wkeyword-macro-2.C: Likewise.
+ 	* g++.dg/warn/Wkeyword-macro-4.C: Likewise.
+ 	* g++.dg/warn/Wkeyword-macro-5.C: Likewise.
+ 	* g++.dg/warn/Wkeyword-macro-7.C: Likewise.
+ 	* g++.dg/warn/Wkeyword-macro-8.C: Likewise.
+ 
+ 2025-11-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* g++.dg/warn/Wkeyword-macro-4.C: Don't diagnose for #undef likely
+ 	or #undef unlikely.
+ 	* g++.dg/warn/Wkeyword-macro-5.C: Likewise.
+ 	* g++.dg/warn/Wkeyword-macro-9.C: Likewise.
+ 	* g++.dg/warn/Wkeyword-macro-8.C: Likewise.
+ 	* g++.dg/warn/Wkeyword-macro-10.C: Likewise.
+ 
+ 2025-11-10  Lewis Hyatt  <lhyatt@gmail.com>
+ 
+ 	PR preprocessor/105608
+ 	* g++.dg/pch/line-map-3.C: Remove xfails.
+ 	* g++.dg/pch/line-map-4.C: New test.
+ 	* g++.dg/pch/line-map-4.Hs: New test.
+ 
+ 2025-11-09  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	* gcc.target/i386/apx-ndd-tls-1b.c: Change to xfail for ! ia32.
+ 
+ 2025-11-09  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	* gcc.target/i386/indirect-thunk-5.c: Drop x32 scan.
+ 	* gcc.target/i386/indirect-thunk-6.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-extern-5.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-extern-6.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-inline-5.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-inline-6.c: Likewise.
+ 
+ 2025-11-09  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	* gcc.target/i386/cmov12.c: Limit to lp64.
+ 
+ 2025-11-09  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	* gcc.target/i386/shrink_wrap_1.c: Limit to lp64.
+ 
+ 2025-11-09  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	* gcc.dg/pr90838.c: Adjust for x32
+ 
  2025-11-08  Eric Botcazou  <ebotcazou@adacore.com>
  
  	* gnat.dg/specs/limited_with4.ads: Rename to...
diff -Nrcpad gcc-16-20251109/gcc/testsuite/c-c++-common/asan/asan-stack-small.c gcc-16-20251116/gcc/testsuite/c-c++-common/asan/asan-stack-small.c
*** gcc-16-20251109/gcc/testsuite/c-c++-common/asan/asan-stack-small.c	Sun Nov  9 22:32:54 2025
--- gcc-16-20251116/gcc/testsuite/c-c++-common/asan/asan-stack-small.c	Sun Nov 16 22:33:12 2025
***************
*** 1,8 ****
  /* { dg-do run } */
  
! char *pa;
! char *pb;
! char *pc;
  
  void access (volatile char *ptr)
  {
--- 1,9 ----
  /* { dg-do run } */
  
! char *volatile pa;
! char *volatile pb;
! char *volatile pc;
! typedef __UINTPTR_TYPE__ uintptr_t;
  
  void access (volatile char *ptr)
  {
*************** int main (int argc, char **argv)
*** 22,28 ****
    access (pb);
    access (pc);
    // access 'b' here
!   access (pa + 32);
  
    return 0;
  }
--- 23,36 ----
    access (pb);
    access (pc);
    // access 'b' here
!   if ((uintptr_t) pb == (uintptr_t) pa + 32)
!     access (pa + 32);
!   else if ((uintptr_t) pb == (uintptr_t) pa - 32)
!     access (pa - 32);
!   else if ((uintptr_t) pb == (uintptr_t) pa + 64)
!     access (pa + 64);
!   else if ((uintptr_t) pb == (uintptr_t) pa - 64)
!     access (pa - 64);
  
    return 0;
  }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/DRs/dr2581-1.C gcc-16-20251116/gcc/testsuite/g++.dg/DRs/dr2581-1.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/DRs/dr2581-1.C	Sun Nov  9 22:32:55 2025
--- gcc-16-20251116/gcc/testsuite/g++.dg/DRs/dr2581-1.C	Sun Nov 16 22:33:13 2025
***************
*** 94,100 ****
  #undef __cpp_template_parameters
  #undef __cpp_template_template_args	// { dg-warning "undefining '__cpp_template_template_args'" "" { target c++20 } }
  #undef __cpp_threadsafe_static_init	// { dg-warning "undefining '__cpp_threadsafe_static_init'" "" { target c++20 } }
- #undef __cpp_trivial_relocatability	// { dg-warning "undefining '__cpp_trivial_relocatability'" "" { target c++26 } }
  #undef __cpp_trivial_union
  #undef __cpp_unicode_characters		// { dg-warning "undefining '__cpp_unicode_characters'" "" { target c++20 } }
  #undef __cpp_unicode_literals		// { dg-warning "undefining '__cpp_unicode_literals'" "" { target c++20 } }
--- 94,99 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/DRs/dr2581-2.C gcc-16-20251116/gcc/testsuite/g++.dg/DRs/dr2581-2.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/DRs/dr2581-2.C	Sun Nov  9 22:32:55 2025
--- gcc-16-20251116/gcc/testsuite/g++.dg/DRs/dr2581-2.C	Sun Nov 16 22:33:13 2025
***************
*** 94,100 ****
  #define __cpp_template_parameters 202502L
  #define __cpp_template_template_args 201611L	// { dg-error "'__cpp_template_template_args' redefined" "" { target c++20 } }
  #define __cpp_threadsafe_static_init 200806L	// { dg-error "'__cpp_threadsafe_static_init' redefined" "" { target c++20 } }
- #define __cpp_trivial_relocatability 202502L	// { dg-error "'__cpp_trivial_relocatability' redefined" "" { target c++26 } }
  #define __cpp_trivial_union 202502L
  #define __cpp_unicode_characters 200704L	// { dg-error "'__cpp_unicode_characters' redefined" "" { target c++17 } }
  #define __cpp_unicode_literals 200710L		// { dg-error "'__cpp_unicode_literals' redefined" "" { target c++20 } }
--- 94,99 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/cpp26/feat-cxx26.C gcc-16-20251116/gcc/testsuite/g++.dg/cpp26/feat-cxx26.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/cpp26/feat-cxx26.C	Sun Nov  9 22:32:57 2025
--- gcc-16-20251116/gcc/testsuite/g++.dg/cpp26/feat-cxx26.C	Sun Nov 16 22:33:16 2025
***************
*** 647,658 ****
  #  error "__cpp_constexpr_exceptions != 202411"
  #endif
  
- #ifndef __cpp_trivial_relocatability
- #  error "__cpp_trivial_relocatability"
- #elif __cpp_trivial_relocatability != 202502
- #  error "__cpp_trivial_relocatability != 202502"
- #endif
- 
  #ifndef __cpp_expansion_statements
  #  error "__cpp_expansion_statements"
  #elif __cpp_expansion_statements != 202506
--- 647,652 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/cpp26/trivially-relocatable1.C gcc-16-20251116/gcc/testsuite/g++.dg/cpp26/trivially-relocatable1.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/cpp26/trivially-relocatable1.C	Sun Nov  9 22:32:57 2025
--- gcc-16-20251116/gcc/testsuite/g++.dg/cpp26/trivially-relocatable1.C	Thu Jan  1 00:00:00 1970
***************
*** 1,137 ****
- // P2786R13 - C++26 Trivial Relocatability
- // { dg-do compile { target c++11 } }
- // { dg-options "" }
- // { dg-additional-options "-pedantic" { target c++17 } }
- 
- #if __cpp_trivial_relocatability < 202502L
- #define trivially_relocatable_if_eligible __trivially_relocatable_if_eligible
- #define replaceable_if_eligible __replaceable_if_eligible
- #endif
- 
- namespace std
- {
- template <typename T, T v>
- struct integral_constant
- {
-   static constexpr T value = v;
- };
- 
- template <typename>
- struct is_trivially_relocatable;
- 
- template <typename>
- struct is_replaceable;
- 
- template<typename T>
- struct is_trivially_relocatable
-   : public integral_constant <bool, __builtin_is_trivially_relocatable (T)>
- {
- };
- 
- template<typename T>
- struct is_replaceable
-   : public integral_constant <bool, __builtin_is_replaceable (T)>
- {
- };
- 
- template <typename T>
- inline constexpr bool is_trivially_relocatable_v	// { dg-warning "inline variables are only available with" "" { target c++14_down } }
-   = __builtin_is_trivially_relocatable (T);		// { dg-warning "variable templates only available with" "" { target c++11_down } .-1 }
- 
- template <typename T>
- inline constexpr bool is_replaceable_v			// { dg-warning "inline variables are only available with" "" { target c++14_down } }
-   = __builtin_is_replaceable (T);			// { dg-warning "variable templates only available with" "" { target c++11_down } .-1 }
- }
- 
- struct A {};
- 
- static_assert (std::is_trivially_relocatable_v <A>, "");
- static_assert (std::is_replaceable_v <A>, "");
- 
- struct B {
-   B ();
-   ~B ();
-   B (const B &);
-   B (B &&);
-   B &operator= (const B &);
-   B &operator= (B &&);
- };
- 
- static_assert (!std::is_trivially_relocatable_v <B>, "");
- static_assert (!std::is_replaceable_v <B>, "");
- 
- struct C {
-   C (C &&) = delete;
-   C &operator= (C &&) = delete;
-   C () = default;
- };
- 
- // Note, P2786R13 says it is trivially relocatable, but I think
- // it isn't default-movable because overload resolution in both
- // cases selects a deleted special member fn.
- static_assert (!std::is_trivially_relocatable_v <C>, "");
- static_assert (!std::is_replaceable_v <C>, "");
- 
- struct D : A {};
- 
- static_assert (std::is_trivially_relocatable_v <D>, "");
- static_assert (std::is_replaceable_v <D>, "");
- 
- struct E : virtual A {};
- 
- static_assert (!std::is_trivially_relocatable_v <E>, "");
- static_assert (std::is_replaceable_v <E>, "");
- 
- struct F trivially_relocatable_if_eligible : virtual A {};
- 
- static_assert (!std::is_trivially_relocatable_v <F>, "");
- static_assert (std::is_replaceable_v <F>, "");
- 
- struct G { B data; };
- 
- static_assert (!std::is_trivially_relocatable_v <G>, "");
- static_assert (!std::is_replaceable_v <G>, "");
- 
- struct H { ~H () = default; };
- 
- static_assert (std::is_trivially_relocatable_v <H>, "");
- static_assert (std::is_replaceable_v <H>, "");
- 
- struct I { ~I (); };
- I::~I () = default;
- 
- static_assert (!std::is_trivially_relocatable_v <I>, "");
- static_assert (!std::is_replaceable_v <I>, "");
- 
- struct J { virtual ~J () = default; };
- 
- // Note, P2786R13 says otherwise for both, but that looks like
- // a bug in the paper, it otherwise says that polymorphic types
- // can be both trivially relocatable and replaceable.
- static_assert (std::is_trivially_relocatable_v <J>, "");
- static_assert (std::is_replaceable_v <J>, "");
- 
- struct K { ~K () = delete; };
- 
- static_assert (!std::is_trivially_relocatable_v <K>, "");
- static_assert (!std::is_replaceable_v <K>, "");
- 
- struct L { L (L &&) = default; };
- 
- // Note, P2786R13 says otherwise for both, but that looks like
- // a bug in the paper to me.  While move ctor is trivial here,
- // copy assignment operator is implicitly declared as deleted
- // and move assignent operator is not declared.
- static_assert (!std::is_trivially_relocatable_v <L>, "");
- static_assert (!std::is_replaceable_v <L>, "");
- 
- struct M { M (M &&); };
- M::M (M &&) = default;
- 
- static_assert (!std::is_trivially_relocatable_v <M>, "");
- static_assert (!std::is_replaceable_v <M>, "");
- 
- struct N { N (N &&) = delete; };
- 
- static_assert (!std::is_trivially_relocatable_v <N>, "");
- static_assert (!std::is_replaceable_v <N>, "");
--- 0 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/cpp26/trivially-relocatable10.C gcc-16-20251116/gcc/testsuite/g++.dg/cpp26/trivially-relocatable10.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/cpp26/trivially-relocatable10.C	Sun Nov  9 22:32:57 2025
--- gcc-16-20251116/gcc/testsuite/g++.dg/cpp26/trivially-relocatable10.C	Thu Jan  1 00:00:00 1970
***************
*** 1,135 ****
- // P2786R13 - C++26 Trivial Relocatability
- // { dg-do compile { target c++11 } }
- // { dg-options "" }
- // { dg-additional-options "-pedantic" { target c++17 } }
- 
- #if __cpp_trivial_relocatability < 202502L
- #define trivially_relocatable_if_eligible __trivially_relocatable_if_eligible
- #define replaceable_if_eligible __replaceable_if_eligible
- #endif
- 
- namespace std
- {
- template <typename T, T v>
- struct integral_constant
- {
-   static constexpr T value = v;
- };
- 
- template <typename>
- struct is_trivially_relocatable;
- 
- template <typename>
- struct is_replaceable;
- 
- template<typename T>
- struct is_trivially_relocatable
-   : public integral_constant <bool, __builtin_is_trivially_relocatable (T)>
- {
- };
- 
- template<typename T>
- struct is_replaceable
-   : public integral_constant <bool, __builtin_is_replaceable (T)>
- {
- };
- 
- template <typename T>
- inline constexpr bool is_trivially_relocatable_v	// { dg-warning "inline variables are only available with" "" { target c++14_down } }
-   = __builtin_is_trivially_relocatable (T);		// { dg-warning "variable templates only available with" "" { target c++11_down } .-1 }
- 
- template <typename T>
- inline constexpr bool is_replaceable_v			// { dg-warning "inline variables are only available with" "" { target c++14_down } }
-   = __builtin_is_replaceable (T);			// { dg-warning "variable templates only available with" "" { target c++11_down } .-1 }
- }
- 
- struct A replaceable_if_eligible { A (A &&); A &operator= (A &&); ~A (); int a; };
- 
- static_assert (std::is_replaceable_v <A>, "");
- static_assert (!std::is_replaceable_v <const A>, "");
- static_assert (!std::is_replaceable_v <A volatile>, "");
- static_assert (!std::is_replaceable_v <const A volatile>, "");
- 
- struct B { B (B &&); B &operator= (B &&); ~B (); int a; };
- 
- static_assert (!std::is_replaceable_v <B>, "");
- 
- struct C replaceable_if_eligible : public A { C (C &&); C &operator= (C &&); ~C (); int a; };
- 
- static_assert (std::is_replaceable_v <C>, "");
- 
- struct D replaceable_if_eligible : public B { D (D &&); D &operator= (D &&); ~D (); int a; };
- 
- static_assert (!std::is_replaceable_v <D>, "");
- 
- struct E replaceable_if_eligible { E (E &&); E &operator= (E &&); ~E (); A a; };
- 
- static_assert (std::is_replaceable_v <E>, "");
- 
- struct F replaceable_if_eligible { F (F &&); F &operator= (F &&); ~F (); B a; };
- 
- static_assert (!std::is_replaceable_v <F>, "");
- 
- struct G replaceable_if_eligible { G (G &&); G &operator= (G &&); ~G () = delete; int a; };
- 
- static_assert (!std::is_replaceable_v <G>, "");
- 
- struct H replaceable_if_eligible : virtual A { H (H &&); H &operator= (H &&); ~H (); int a; };
- 
- static_assert (std::is_replaceable_v <H>, "");
- 
- struct I replaceable_if_eligible { I (I &&) = delete; I &operator= (I &&); ~I (); int a; };
- 
- static_assert (!std::is_replaceable_v <I>, "");
- 
- struct J replaceable_if_eligible { J (J &&); J &operator= (J &&) = delete; ~J (); int a; };
- 
- static_assert (!std::is_replaceable_v <J>, "");
- 
- struct K replaceable_if_eligible { K (const K &) = delete; K &operator= (K &&); ~K (); int a; };
- 
- static_assert (!std::is_replaceable_v <K>, "");
- 
- struct L replaceable_if_eligible { L (L &&); L &operator= (const L &) = delete; ~L (); int a; };
- 
- static_assert (!std::is_replaceable_v <L>, "");
- 
- struct M replaceable_if_eligible { M (); private: M (M &&); M &operator= (M &&); ~M (); int a; };
- 
- static_assert (std::is_replaceable_v <M>, "");
- 
- struct N replaceable_if_eligible { N (N &&); N &operator= (N &&); ~N (); const A a; };
- 
- static_assert (!std::is_replaceable_v <N>, "");
- 
- struct O replaceable_if_eligible { O (O &&); O &operator= (O &&); ~O (); volatile A a; };
- 
- static_assert (!std::is_replaceable_v <O>, "");
- 
- struct P replaceable_if_eligible { P (P &&); P &operator= (P &&); ~P (); const volatile A a; };
- 
- static_assert (!std::is_replaceable_v <P>, "");
- 
- struct Q replaceable_if_eligible { Q (Q &&); Q &operator= (Q &&); ~Q (); union { A a; int b; char c; }; };
- 
- static_assert (!std::is_replaceable_v <Q>, "");
- 
- struct R replaceable_if_eligible { R (R &&); R &operator= (R &&); ~R (); union { int a; B b; short c; }; };
- 
- static_assert (!std::is_replaceable_v <R>, "");
- 
- struct S replaceable_if_eligible { S (S &&); S &operator= (S &&); ~S (); union { int a; const int b; short c; }; };
- 
- static_assert (!std::is_replaceable_v <S>, "");
- 
- struct T replaceable_if_eligible { T (T &&); T &operator= (T &&); ~T () = default; int a; };
- 
- static_assert (std::is_replaceable_v <T>, "");
- 
- struct U replaceable_if_eligible { U (U &&); U &operator= (U &&); ~U (); union { T a; int b; char c; }; };
- 
- static_assert (!std::is_replaceable_v <U>, "");
- 
- struct V replaceable_if_eligible { V (V &&); V &operator= (V &&); ~V (); union { unsigned long long a; int b; char c; }; };
- 
- static_assert (std::is_replaceable_v <V>, "");
--- 0 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/cpp26/trivially-relocatable11.C gcc-16-20251116/gcc/testsuite/g++.dg/cpp26/trivially-relocatable11.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/cpp26/trivially-relocatable11.C	Sun Nov  9 22:32:57 2025
--- gcc-16-20251116/gcc/testsuite/g++.dg/cpp26/trivially-relocatable11.C	Thu Jan  1 00:00:00 1970
***************
*** 1,134 ****
- // P2786R13 - C++26 Trivial Relocatability
- // { dg-do compile { target c++11 } }
- // { dg-options "" }
- // { dg-additional-options "-pedantic" { target c++17 } }
- 
- #if __cpp_trivial_relocatability < 202502L
- #define trivially_relocatable_if_eligible __trivially_relocatable_if_eligible
- #define replaceable_if_eligible __replaceable_if_eligible
- #endif
- 
- namespace std
- {
- template <typename T, T v>
- struct integral_constant
- {
-   static constexpr T value = v;
- };
- 
- template <typename>
- struct is_trivially_relocatable;
- 
- template <typename>
- struct is_replaceable;
- 
- template<typename T>
- struct is_trivially_relocatable
-   : public integral_constant <bool, __builtin_is_trivially_relocatable (T)>
- {
- };
- 
- template<typename T>
- struct is_replaceable
-   : public integral_constant <bool, __builtin_is_replaceable (T)>
- {
- };
- 
- template <typename T>
- inline constexpr bool is_trivially_relocatable_v	// { dg-warning "inline variables are only available with" "" { target c++14_down } }
-   = __builtin_is_trivially_relocatable (T);		// { dg-warning "variable templates only available with" "" { target c++11_down } .-1 }
- 
- template <typename T>
- inline constexpr bool is_replaceable_v			// { dg-warning "inline variables are only available with" "" { target c++14_down } }
-   = __builtin_is_replaceable (T);			// { dg-warning "variable templates only available with" "" { target c++11_down } .-1 }
- }
- 
- struct A { A (A &&) = default; A &operator= (A &&) = default; ~A () = default; int a; };
- 
- static_assert (std::is_trivially_relocatable_v <A>, "");
- static_assert (std::is_replaceable_v <A>, "");
- 
- struct B { B (B &&); B &operator= (B &&) = default; ~B () = default; int a; };
- 
- static_assert (!std::is_trivially_relocatable_v <B>, "");
- static_assert (!std::is_replaceable_v <B>, "");
- 
- union C { int a; A b; };
- 
- static_assert (std::is_trivially_relocatable_v <C>, "");
- static_assert (std::is_replaceable_v <C>, "");
- 
- union D { int a; A b; B c; };
- 
- static_assert (!std::is_trivially_relocatable_v <D>, "");
- static_assert (!std::is_replaceable_v <D>, "");
- 
- union E { E (); int a; A b; };
- 
- static_assert (std::is_trivially_relocatable_v <E>, "");
- static_assert (std::is_replaceable_v <E>, "");
- 
- union F { F () = default; int a; A b; };
- 
- static_assert (std::is_trivially_relocatable_v <F>, "");
- static_assert (std::is_replaceable_v <F>, "");
- 
- union G { G (const G &); int a; A b; };
- 
- static_assert (!std::is_trivially_relocatable_v <G>, "");
- static_assert (!std::is_replaceable_v <G>, "");
- 
- union H { H (const H &) = default; int a; A b; };
- 
- static_assert (!std::is_trivially_relocatable_v <H>, "");
- static_assert (!std::is_replaceable_v <H>, "");
- 
- union I { I (I &&); int a; A b; };
- 
- static_assert (!std::is_trivially_relocatable_v <I>, "");
- static_assert (!std::is_replaceable_v <I>, "");
- 
- union J { J (J &&) = default; int a; A b; };
- 
- static_assert (!std::is_trivially_relocatable_v <J>, "");
- static_assert (!std::is_replaceable_v <J>, "");
- 
- union K { K &operator= (const K &); int a; A b; };
- 
- static_assert (!std::is_trivially_relocatable_v <K>, "");
- static_assert (!std::is_replaceable_v <K>, "");
- 
- union L { L &operator= (const L &) = default; int a; A b; };
- 
- static_assert (!std::is_trivially_relocatable_v <L>, "");
- static_assert (!std::is_replaceable_v <L>, "");
- 
- union M { M &operator= (M &&); int a; A b; };
- 
- static_assert (!std::is_trivially_relocatable_v <M>, "");
- static_assert (!std::is_replaceable_v <M>, "");
- 
- union N { N &operator= (N &&) = default; int a; A b; };
- 
- static_assert (!std::is_trivially_relocatable_v <N>, "");
- static_assert (!std::is_replaceable_v <N>, "");
- 
- union O { ~O (); int a; A b; };
- 
- static_assert (!std::is_trivially_relocatable_v <O>, "");
- static_assert (!std::is_replaceable_v <O>, "");
- 
- union P { ~P () = default; int a; A b; };
- 
- static_assert (!std::is_trivially_relocatable_v <P>, "");
- static_assert (!std::is_replaceable_v <P>, "");
- 
- union Q { int a; const A b; };
- 
- static_assert (std::is_trivially_relocatable_v <Q>, "");
- static_assert (!std::is_replaceable_v <Q>, "");
- 
- union S { volatile int a; A b; };
- 
- static_assert (std::is_trivially_relocatable_v <S>, "");
- static_assert (!std::is_replaceable_v <S>, "");
--- 0 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/cpp26/trivially-relocatable2.C gcc-16-20251116/gcc/testsuite/g++.dg/cpp26/trivially-relocatable2.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/cpp26/trivially-relocatable2.C	Sun Nov  9 22:32:57 2025
--- gcc-16-20251116/gcc/testsuite/g++.dg/cpp26/trivially-relocatable2.C	Thu Jan  1 00:00:00 1970
***************
*** 1,204 ****
- // P2786R13 - C++26 Trivial Relocatability
- // { dg-do compile { target c++11 } }
- // { dg-options "" }
- // { dg-additional-options "-pedantic" { target c++17 } }
- 
- #if __cpp_trivial_relocatability < 202502L
- #define trivially_relocatable_if_eligible __trivially_relocatable_if_eligible
- #define replaceable_if_eligible __replaceable_if_eligible
- #endif
- 
- namespace std
- {
- template <typename T, T v>
- struct integral_constant
- {
-   static constexpr T value = v;
- };
- 
- template <typename>
- struct is_trivially_relocatable;
- 
- template <typename>
- struct is_replaceable;
- 
- template<typename T>
- struct is_trivially_relocatable
-   : public integral_constant <bool, __builtin_is_trivially_relocatable (T)>
- {
- };
- 
- template<typename T>
- struct is_replaceable
-   : public integral_constant <bool, __builtin_is_replaceable (T)>
- {
- };
- 
- template <typename T>
- inline constexpr bool is_trivially_relocatable_v	// { dg-warning "inline variables are only available with" "" { target c++14_down } }
-   = __builtin_is_trivially_relocatable (T);		// { dg-warning "variable templates only available with" "" { target c++11_down } .-1 }
- 
- template <typename T>
- inline constexpr bool is_replaceable_v			// { dg-warning "inline variables are only available with" "" { target c++14_down } }
-   = __builtin_is_replaceable (T);			// { dg-warning "variable templates only available with" "" { target c++11_down } .-1 }
- }
- 
- class A {};
- 
- static_assert (std::is_trivially_relocatable_v <A>, "");
- static_assert (std::is_replaceable_v <A>, "");
- static_assert (std::is_trivially_relocatable <A>::value, "");
- static_assert (std::is_replaceable <A>::value, "");
- 
- struct B { ~B (); };
- static B z;
- 
- static_assert (!std::is_trivially_relocatable_v <B>, "");
- static_assert (!std::is_replaceable_v <B>, "");
- static_assert (!std::is_trivially_relocatable <B>::value, "");
- static_assert (!std::is_replaceable <B>::value, "");
- 
- class C trivially_relocatable_if_eligible {};
- 
- static_assert (std::is_trivially_relocatable_v <C>, "");
- static_assert (std::is_replaceable_v <C>, "");
- 
- class D trivially_relocatable_if_eligible : A {};
- 
- static_assert (std::is_trivially_relocatable_v <D>, "");
- static_assert (std::is_replaceable_v <D>, "");
- 
- class E trivially_relocatable_if_eligible {
-   int a;
-   void *b;
-   int c[3];
-   A d[3];
-   B &e = z;
- };
- 
- static_assert (std::is_trivially_relocatable_v <E>, "");
- static_assert (!std::is_replaceable_v <E>, "");
- 
- class F trivially_relocatable_if_eligible : A {};
- 
- static_assert (std::is_trivially_relocatable_v <F>, "");
- static_assert (std::is_replaceable_v <F>, "");
- 
- class G trivially_relocatable_if_eligible : virtual A {};
- 
- static_assert (!std::is_trivially_relocatable_v <G>, "");
- static_assert (std::is_replaceable_v <G>, "");
- 
- class H trivially_relocatable_if_eligible : B {};
- 
- static_assert (!std::is_trivially_relocatable_v <H>, "");
- static_assert (!std::is_replaceable_v <H>, "");
- 
- class I trivially_relocatable_if_eligible { I (I &&); };
- 
- static_assert (std::is_trivially_relocatable_v <I>, "");
- static_assert (!std::is_replaceable_v <I>, "");
- 
- class J trivially_relocatable_if_eligible { ~J (); };
- 
- static_assert (std::is_trivially_relocatable_v <J>, "");
- static_assert (!std::is_replaceable_v <J>, "");
- 
- class K trivially_relocatable_if_eligible {
-   B a;
-   B b[1];
-   const B c;
-   const B d[1];
- };
- 
- static_assert (!std::is_trivially_relocatable_v <K>, "");
- static_assert (!std::is_replaceable_v <K>, "");
- 
- class L trivially_relocatable_if_eligible: virtual A, B { B a; };
- 
- static_assert (!std::is_trivially_relocatable_v <L>, "");
- static_assert (!std::is_replaceable_v <L>, "");
- 
- static_assert (!std::is_trivially_relocatable_v <void>, "");
- static_assert (!std::is_trivially_relocatable_v <const void>, "");
- static_assert (std::is_trivially_relocatable_v <int>, "");
- static_assert (std::is_trivially_relocatable_v <const int>, "");
- static_assert (std::is_trivially_relocatable_v <char>, "");
- static_assert (std::is_trivially_relocatable_v <char const volatile>, "");
- static_assert (std::is_trivially_relocatable_v <unsigned long long>, "");
- static_assert (std::is_trivially_relocatable_v <void *>, "");
- static_assert (std::is_trivially_relocatable_v <const int *>, "");
- static_assert (!std::is_trivially_relocatable_v <int &>, "");
- static_assert (!std::is_trivially_relocatable_v <A &>, "");
- static_assert (std::is_trivially_relocatable_v <const A>, "");
- static_assert (std::is_trivially_relocatable_v <A [1]>, "");
- static_assert (std::is_trivially_relocatable_v <A []>, "");
- static_assert (!std::is_replaceable_v <void>, "");
- static_assert (!std::is_replaceable_v <const void>, "");
- static_assert (std::is_replaceable_v <int>, "");
- static_assert (!std::is_replaceable_v <const int>, "");
- static_assert (std::is_replaceable_v <char>, "");
- static_assert (!std::is_replaceable_v <char const volatile>, "");
- static_assert (std::is_replaceable_v <unsigned long long>, "");
- static_assert (std::is_replaceable_v <void *>, "");
- static_assert (std::is_replaceable_v <const int *>, "");
- static_assert (!std::is_replaceable_v <int &>, "");
- static_assert (!std::is_replaceable_v <A &>, "");
- static_assert (!std::is_replaceable_v <const A>, "");
- static_assert (std::is_replaceable_v <A [1]>, "");
- static_assert (std::is_replaceable_v <A []>, "");
- 
- struct M { const int i; };
- 
- static_assert (!std::is_trivially_relocatable_v <M>, "");
- static_assert (!std::is_replaceable_v <M>, "");
- 
- struct N trivially_relocatable_if_eligible { const int i; };
- 
- static_assert (std::is_trivially_relocatable_v <N>, "");
- static_assert (!std::is_replaceable_v <N>, "");
- 
- struct O { ~O (); };
- 
- static_assert (!std::is_trivially_relocatable_v <O>, "");
- static_assert (!std::is_replaceable_v <O>, "");
- 
- struct P { ~P () = default; };
- 
- static_assert (std::is_trivially_relocatable_v <P>, "");
- static_assert (std::is_replaceable_v <P>, "");
- 
- struct Q { Q (Q &&); Q (const Q &) = default; };
- 
- static_assert (!std::is_trivially_relocatable_v <Q>, "");
- static_assert (!std::is_replaceable_v <Q>, "");
- 
- struct R { R (R &&); };
- 
- static_assert (!std::is_trivially_relocatable_v <R>, "");
- static_assert (!std::is_replaceable_v <R>, "");
- 
- struct S { S (S &&) = default; };
- 
- static_assert (!std::is_trivially_relocatable_v <S>, "");
- static_assert (!std::is_replaceable_v <S>, "");
- 
- struct T { T (T &&) = default; T &operator= (T &&) = default; };
- 
- static_assert (std::is_trivially_relocatable_v <T>, "");
- static_assert (std::is_replaceable_v <T>, "");
- 
- struct U { U (const U &); };
- 
- static_assert (!std::is_trivially_relocatable_v <U>, "");
- static_assert (!std::is_replaceable_v <U>, "");
- 
- struct V { V (const V&) = default; };
- 
- static_assert (std::is_trivially_relocatable_v <V>, "");
- static_assert (std::is_replaceable_v <V>, "");
- 
- struct W { W (W &&) = delete; W (const W &) = default; };
- 
- static_assert (!std::is_trivially_relocatable_v <W>, "");
- static_assert (!std::is_replaceable_v <W>, "");
--- 0 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/cpp26/trivially-relocatable3.C gcc-16-20251116/gcc/testsuite/g++.dg/cpp26/trivially-relocatable3.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/cpp26/trivially-relocatable3.C	Sun Nov  9 22:32:57 2025
--- gcc-16-20251116/gcc/testsuite/g++.dg/cpp26/trivially-relocatable3.C	Thu Jan  1 00:00:00 1970
***************
*** 1,213 ****
- // P2786R13 - C++26 Trivial Relocatability
- // { dg-do compile { target c++11 } }
- // { dg-options "" }
- // { dg-additional-options "-pedantic" { target c++17 } }
- 
- #if __cpp_trivial_relocatability < 202502L
- #define trivially_relocatable_if_eligible __trivially_relocatable_if_eligible
- #define replaceable_if_eligible __replaceable_if_eligible
- #endif
- 
- namespace std
- {
- template <typename T, T v>
- struct integral_constant
- {
-   static constexpr T value = v;
- };
- 
- template <typename>
- struct is_trivially_relocatable;
- 
- template <typename>
- struct is_replaceable;
- 
- template<typename T>
- struct is_trivially_relocatable
-   : public integral_constant <bool, __builtin_is_trivially_relocatable (T)>
- {
- };
- 
- template<typename T>
- struct is_replaceable
-   : public integral_constant <bool, __builtin_is_replaceable (T)>
- {
- };
- 
- template <typename T>
- inline constexpr bool is_trivially_relocatable_v	// { dg-warning "inline variables are only available with" "" { target c++14_down } }
-   = __builtin_is_trivially_relocatable (T);		// { dg-warning "variable templates only available with" "" { target c++11_down } .-1 }
- 
- template <typename T>
- inline constexpr bool is_replaceable_v			// { dg-warning "inline variables are only available with" "" { target c++14_down } }
-   = __builtin_is_replaceable (T);			// { dg-warning "variable templates only available with" "" { target c++11_down } .-1 }
- }
- 
- class A {};
- 
- struct B { ~B (); };
- 
- class C trivially_relocatable_if_eligible { C (C &&); };
- 
- template <typename T>
- class D trivially_relocatable_if_eligible : T {};
- D<A> a;
- D<B> b;
- 
- static_assert (std::is_trivially_relocatable_v <D<A>>, "");
- static_assert (!std::is_trivially_relocatable_v <D<B>>, "");
- static_assert (std::is_replaceable_v <D<A>>, "");
- static_assert (!std::is_replaceable_v <D<B>>, "");
- 
- struct E { E (E &&) = delete; };
- 
- static_assert (!std::is_trivially_relocatable_v <E>, "");
- static_assert (!std::is_replaceable_v <E>, "");
- 
- struct F { F (const F &) = delete; };
- 
- static_assert (!std::is_trivially_relocatable_v <F>, "");
- static_assert (!std::is_replaceable_v <F>, "");
- 
- struct G { G &operator= (G &&) = delete; };
- 
- static_assert (!std::is_trivially_relocatable_v <G>, "");
- static_assert (!std::is_replaceable_v <G>, "");
- 
- struct H { ~H () = delete; };
- 
- static_assert (!std::is_trivially_relocatable_v <H>, "");
- static_assert (!std::is_replaceable_v <H>, "");
- 
- union U { C u; };
- 
- static_assert (std::is_trivially_relocatable_v <U>, "");
- static_assert (!std::is_replaceable_v <U>, "");
- 
- template <typename T>
- struct I { int s; T t; };
- 
- static_assert (std::is_trivially_relocatable_v <I<int>>, "");
- static_assert (std::is_trivially_relocatable_v <I<volatile int>>, "");
- static_assert (!std::is_trivially_relocatable_v <I<const int>>, "");
- static_assert (!std::is_trivially_relocatable_v <I<const int &>>, "");
- static_assert (!std::is_trivially_relocatable_v <I<int &>>, "");
- static_assert (std::is_trivially_relocatable_v <I<int [2]>>, "");
- static_assert (!std::is_trivially_relocatable_v <I<const int [2]>>, "");
- static_assert (std::is_trivially_relocatable_v <I<int []>>, "");
- static_assert (std::is_replaceable_v <I<int>>, "");
- static_assert (!std::is_replaceable_v <I<volatile int>>, "");
- static_assert (!std::is_replaceable_v <I<const int>>, "");
- static_assert (!std::is_replaceable_v <I<const int &>>, "");
- static_assert (!std::is_replaceable_v <I<int &>>, "");
- static_assert (std::is_replaceable_v <I<int [2]>>, "");
- static_assert (!std::is_replaceable_v <I<const int [2]>>, "");
- 
- template <typename T>
- struct J trivially_relocatable_if_eligible { int s; T t; };
- 
- static_assert (std::is_trivially_relocatable_v <J<int>>, "");
- static_assert (std::is_trivially_relocatable_v <J<volatile int>>, "");
- static_assert (std::is_trivially_relocatable_v <J<const int>>, "");
- static_assert (std::is_trivially_relocatable_v <J<const int &>>, "");
- static_assert (std::is_trivially_relocatable_v <J<int &>>, "");
- static_assert (std::is_trivially_relocatable_v <J<int [2]>>, "");
- static_assert (std::is_trivially_relocatable_v <J<const int [2]>>, "");
- static_assert (std::is_trivially_relocatable_v <J<int []>>, "");
- static_assert (std::is_replaceable_v <J<int>>, "");
- static_assert (!std::is_replaceable_v <J<volatile int>>, "");
- static_assert (!std::is_replaceable_v <J<const int>>, "");
- static_assert (!std::is_replaceable_v <J<const int &>>, "");
- static_assert (!std::is_replaceable_v <J<int &>>, "");
- static_assert (std::is_replaceable_v <J<int [2]>>, "");
- static_assert (!std::is_replaceable_v <J<const int [2]>>, "");
- static_assert (std::is_replaceable_v <J<int []>>, "");
- 
- struct K { K (K &&) = delete; };
- 
- static_assert (!std::is_trivially_relocatable_v <K>, "");
- static_assert (!std::is_replaceable_v <K>, "");
- 
- struct L { L (const L &) = delete; };
- 
- static_assert (!std::is_trivially_relocatable_v <L>, "");
- static_assert (!std::is_replaceable_v <L>, "");
- 
- struct M { M &operator= (M &&) = delete; };
- 
- static_assert (!std::is_trivially_relocatable_v <M>, "");
- static_assert (!std::is_replaceable_v <M>, "");
- 
- struct N { N (N &&) = default; N &operator= (N &&) = default; };
- 
- static_assert (std::is_trivially_relocatable_v <N>, "");
- static_assert (std::is_replaceable_v <N>, "");
- 
- struct O {
-   O (const O &) = default;
-   O (O &&) = default;
-   O &operator= (O &&) = default;
- };
- 
- static_assert (std::is_trivially_relocatable_v <O>, "");
- static_assert (std::is_replaceable_v <O>, "");
- 
- struct P { P (P &&) = default; P &operator= (P &&) = default; };
- 
- static_assert (std::is_trivially_relocatable_v <P>, "");
- static_assert (std::is_replaceable_v <P>, "");
- 
- struct Q { Q (Q &&) {} };
- 
- static_assert (!std::is_trivially_relocatable_v <Q>, "");
- static_assert (!std::is_replaceable_v <Q>, "");
- 
- struct R { R (const R &) {} };
- 
- static_assert (!std::is_trivially_relocatable_v <R>, "");
- static_assert (!std::is_replaceable_v <R>, "");
- 
- struct S { S &operator= (const S &) { return *this; }; };
- 
- static_assert (!std::is_trivially_relocatable_v <S>, "");
- static_assert (!std::is_replaceable_v <S>, "");
- 
- struct T {};
- 
- static_assert (std::is_trivially_relocatable_v <T>, "");
- static_assert (std::is_replaceable_v <T>, "");
- 
- struct V replaceable_if_eligible {};
- 
- static_assert (std::is_trivially_relocatable_v <V>, "");
- static_assert (std::is_replaceable_v <V>, "");
- 
- struct W { template <typename U> W (const U &) = delete; };
- 
- static_assert (std::is_trivially_relocatable_v <W>, "");
- static_assert (std::is_replaceable_v <W>, "");
- 
- template <typename T>
- struct X : T {};
- 
- static_assert (!std::is_trivially_relocatable_v <X<Q>>, "");
- static_assert (!std::is_replaceable_v <X<Q>>, "");
- 
- template <typename T>
- struct Y : virtual T {};
- 
- static_assert (!std::is_trivially_relocatable_v <Y<I<int>>>, "");
- static_assert (!std::is_trivially_relocatable_v <Y<I<const int>>>, "");
- static_assert (!std::is_trivially_relocatable_v <Y<Q>>, "");
- static_assert (std::is_replaceable_v <Y<I<int>>>, "");
- static_assert (!std::is_replaceable_v <Y<I<const int>>>, "");
- static_assert (!std::is_replaceable_v <Y<Q>>, "");
- 
- struct Z {
-   virtual ~Z () = default;
-   Z (Z &&) = default;
-   Z &operator= (Z &&) = default;
- };
- 
- static_assert (std::is_trivially_relocatable_v <Z>, "");
- static_assert (std::is_replaceable_v <Z>, "");
--- 0 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/cpp26/trivially-relocatable4.C gcc-16-20251116/gcc/testsuite/g++.dg/cpp26/trivially-relocatable4.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/cpp26/trivially-relocatable4.C	Sun Nov  9 22:32:57 2025
--- gcc-16-20251116/gcc/testsuite/g++.dg/cpp26/trivially-relocatable4.C	Thu Jan  1 00:00:00 1970
***************
*** 1,128 ****
- // P2786R13 - C++26 Trivial Relocatability
- // { dg-do compile { target c++11 } }
- // { dg-options "" }
- // { dg-additional-options "-pedantic" { target c++17 } }
- 
- #if __cpp_trivial_relocatability < 202502L
- #define trivially_relocatable_if_eligible __trivially_relocatable_if_eligible
- #define replaceable_if_eligible __replaceable_if_eligible
- #endif
- 
- namespace std
- {
- template <typename T, T v>
- struct integral_constant
- {
-   static constexpr T value = v;
- };
- 
- template <typename>
- struct is_trivially_relocatable;
- 
- template <typename>
- struct is_replaceable;
- 
- template<typename T>
- struct is_trivially_relocatable
-   : public integral_constant <bool, __builtin_is_trivially_relocatable (T)>
- {
- };
- 
- template<typename T>
- struct is_replaceable
-   : public integral_constant <bool, __builtin_is_replaceable (T)>
- {
- };
- 
- template <typename T>
- inline constexpr bool is_trivially_relocatable_v	// { dg-warning "inline variables are only available with" "" { target c++14_down } }
-   = __builtin_is_trivially_relocatable (T);		// { dg-warning "variable templates only available with" "" { target c++11_down } .-1 }
- 
- template <typename T>
- inline constexpr bool is_replaceable_v			// { dg-warning "inline variables are only available with" "" { target c++14_down } }
-   = __builtin_is_replaceable (T);			// { dg-warning "variable templates only available with" "" { target c++11_down } .-1 }
- }
- 
- struct A replaceable_if_eligible {
-   ~A () = delete;
-   A (A &&) = default;
-   A &operator= (A &&) = default;
- };
- 
- static_assert (!std::is_trivially_relocatable_v <A>, "");
- static_assert (!std::is_replaceable_v <A>, "");
- 
- struct B replaceable_if_eligible { B (const B &) = delete; };
- 
- static_assert (!std::is_trivially_relocatable_v <B>, "");
- static_assert (!std::is_replaceable_v <B>, "");
- 
- template <typename T>
- struct C replaceable_if_eligible : virtual T {};
- 
- static_assert (!std::is_trivially_relocatable_v <C<A>>, "");
- static_assert (!std::is_trivially_relocatable_v <C<B>>, "");
- static_assert (!std::is_replaceable_v <C<A>>, "");
- static_assert (!std::is_replaceable_v <C<B>>, "");
- 
- template <typename T>
- struct D { int s; T t; };
- 
- static_assert (!std::is_trivially_relocatable_v <C<D<int>>>, "");
- static_assert (std::is_replaceable_v <C<D<int>>>, "");
- 
- struct E trivially_relocatable_if_eligible replaceable_if_eligible {
-   E (E &&);
-   E &operator= (E &&) = default;
- };
- 
- static_assert (std::is_trivially_relocatable_v <E>, "");
- static_assert (std::is_replaceable_v <E>, "");
- 
- struct F trivially_relocatable_if_eligible replaceable_if_eligible {
-   F (F &&) = default;
-   F &operator= (F &&);
- };
- 
- static_assert (std::is_trivially_relocatable_v <F>, "");
- static_assert (std::is_replaceable_v <F>, "");
- 
- struct G replaceable_if_eligible { G (G const &) = default; };
- 
- static_assert (std::is_trivially_relocatable_v <G>, "");
- static_assert (std::is_replaceable_v <G>, "");
- 
- struct H { H (H const &) = default; };
- 
- static_assert (std::is_trivially_relocatable_v <H>, "");
- static_assert (std::is_replaceable_v <H>, "");
- 
- struct I replaceable_if_eligible { I &operator= (const I &) = default; };
- 
- static_assert (std::is_trivially_relocatable_v <I>, "");
- static_assert (std::is_replaceable_v <I>, "");
- 
- struct J { J &operator= (J const &) = default; };
- 
- static_assert (std::is_trivially_relocatable_v <J>, "");
- static_assert (std::is_replaceable_v <J>, "");
- 
- struct K { K (const K &) = delete; };
- 
- static_assert (!std::is_trivially_relocatable_v <K>, "");
- static_assert (!std::is_replaceable_v <K>, "");
- 
- struct L { L (L&&) = delete; };
- 
- static_assert (!std::is_trivially_relocatable_v <L>, "");
- static_assert (!std::is_replaceable_v <L>, "");
- 
- struct M { M operator= (M); };
- 
- static_assert (!std::is_trivially_relocatable_v <M>, "");
- static_assert (!std::is_replaceable_v <M>, "");
- 
- struct N { N operator= (N &&); };
- 
- static_assert (!std::is_trivially_relocatable_v <N>, "");
- static_assert (!std::is_replaceable_v <N>, "");
--- 0 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/cpp26/trivially-relocatable5.C gcc-16-20251116/gcc/testsuite/g++.dg/cpp26/trivially-relocatable5.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/cpp26/trivially-relocatable5.C	Sun Nov  9 22:32:57 2025
--- gcc-16-20251116/gcc/testsuite/g++.dg/cpp26/trivially-relocatable5.C	Thu Jan  1 00:00:00 1970
***************
*** 1,77 ****
- // P2786R13 - C++26 Trivial Relocatability
- // { dg-do compile { target c++11 } }
- // { dg-additional-options "-Wc++26-compat" }
- 
- struct A __trivially_relocatable_if_eligible { A (const A &&); };
- struct B __replaceable_if_eligible { B (const B &&); B &operator= (B &&); };
- struct C __replaceable_if_eligible __final __trivially_relocatable_if_eligible { C (const C &&); C &operator= (C &&); };
- #if __cpp_trivial_relocatability >= 202502L
- struct D trivially_relocatable_if_eligible { D (const D &&); };
- struct E replaceable_if_eligible { E (const E &&); E &operator= (E &&); };
- struct F trivially_relocatable_if_eligible replaceable_if_eligible final { F (const F &&); F &operator= (F &&); };
- #else
- struct D trivially_relocatable_if_eligible {};		// { dg-warning "identifier 'trivially_relocatable_if_eligible' is a conditional keyword in" "" { target c++23_down } }
- // { dg-error "variable 'D trivially_relocatable_if_eligible' has initializer but incomplete type" "" { target c++23_down } .-1 }
- struct E replaceable_if_eligible {};			// { dg-warning "identifier 'replaceable_if_eligible' is a conditional keyword in" "" { target c++23_down } }
- // { dg-error "variable 'E replaceable_if_eligible' has initializer but incomplete type" "" { target c++23_down } .-1 }
- struct F trivially_relocatable_if_eligible replaceable_if_eligible {};		// { dg-warning "identifier 'trivially_relocatable_if_eligible' is a conditional keyword in" "" { target c++23_down } }
- // { dg-error "expected initializer before 'replaceable_if_eligible'" "" { target c++23_down } .-1 }
- #endif
- #if __cplusplus <= 202302L
- struct G {};
- struct G trivially_relocatable_if_eligible {};		// { dg-warning "identifier 'trivially_relocatable_if_eligible' is a conditional keyword in" "" { target c++23_down } }
- struct H {};
- struct H replaceable_if_eligible {};			// { dg-warning "identifier 'replaceable_if_eligible' is a conditional keyword in" "" { target c++23_down } }
- struct I {};
- struct I trivially_relocatable_if_eligible replaceable_if_eligible {};		// { dg-warning "identifier 'trivially_relocatable_if_eligible' is a conditional keyword in" "" { target c++23_down } }
- #endif							// { dg-error "expected initializer before 'replaceable_if_eligible'" "" { target c++23_down } .-1 }
- struct J {};
- struct J __trivially_relocatable_if_eligible {};	// { dg-error "redefinition of 'struct J'" }
- struct K {};
- struct K __replaceable_if_eligible {};			// { dg-error "redefinition of 'struct K'" }
- struct L {};
- struct L __trivially_relocatable_if_eligible __replaceable_if_eligible {};	// { dg-error "redefinition of 'struct L'" }
- struct M __trivially_relocatable_if_eligible __trivially_relocatable_if_eligible {}; // { dg-error "duplicate '__trivially_relocatable_if_eligible' specifier" }
- struct N __replaceable_if_eligible __replaceable_if_eligible {};		// { dg-error "duplicate '__replaceable_if_eligible' specifier" }
- struct O __trivially_relocatable_if_eligible __replaceable_if_eligible __replaceable_if_eligible __trivially_relocatable_if_eligible final final {};
- // { dg-error "duplicate '__replaceable_if_eligible' specifier" "" { target *-*-* } .-1 }
- // { dg-error "duplicate '__trivially_relocatable_if_eligible' specifier" "" { target *-*-* } .-2 }
- // { dg-error "duplicate 'final' specifier" "" { target *-*-* } .-3 }
- #if __cpp_trivial_relocatability >= 202502L
- struct P trivially_relocatable_if_eligible trivially_relocatable_if_eligible {}; // { dg-error "duplicate 'trivially_relocatable_if_eligible' specifier" "" { target c++26 } }
- struct Q replaceable_if_eligible replaceable_if_eligible {};			// { dg-error "duplicate 'replaceable_if_eligible' specifier" "" { target c++26 } }
- struct R trivially_relocatable_if_eligible replaceable_if_eligible replaceable_if_eligible trivially_relocatable_if_eligible final final {};
- // { dg-error "duplicate 'replaceable_if_eligible' specifier" "" { target c++26 } .-1 }
- // { dg-error "duplicate 'trivially_relocatable_if_eligible' specifier" "" { target c++26 } .-2 }
- // { dg-error "duplicate 'final' specifier" "" { target c++26 } .-3 }
- struct S trivially_relocatable_if_eligible __trivially_relocatable_if_eligible {}; // { dg-error "duplicate '__trivially_relocatable_if_eligible' specifier" "" { target c++26 } }
- struct T replaceable_if_eligible __replaceable_if_eligible {};			// { dg-error "duplicate '__replaceable_if_eligible' specifier" "" { target c++26 } }
- struct U trivially_relocatable_if_eligible replaceable_if_eligible __replaceable_if_eligible __trivially_relocatable_if_eligible final __final {};
- // { dg-error "duplicate '__replaceable_if_eligible' specifier" "" { target c++26 } .-1 }
- // { dg-error "duplicate '__trivially_relocatable_if_eligible' specifier" "" { target c++26 } .-2 }
- // { dg-error "duplicate '__final' specifier" "" { target c++26 } .-3 }
- struct V __trivially_relocatable_if_eligible trivially_relocatable_if_eligible {}; // { dg-error "duplicate 'trivially_relocatable_if_eligible' specifier" "" { target c++26 } }
- struct W __replaceable_if_eligible replaceable_if_eligible {};			// { dg-error "duplicate 'replaceable_if_eligible' specifier" "" { target c++26 } }
- struct X __trivially_relocatable_if_eligible __replaceable_if_eligible replaceable_if_eligible trivially_relocatable_if_eligible __final final {};
- // { dg-error "duplicate 'replaceable_if_eligible' specifier" "" { target c++26 } .-1 }
- // { dg-error "duplicate 'trivially_relocatable_if_eligible' specifier" "" { target c++26 } .-2 }
- // { dg-error "duplicate 'final' specifier" "" { target c++26 } .-3 }
- #else
- struct Y {};
- Y foo ();
- struct Y trivially_relocatable_if_eligible = foo ();    // { dg-warning "identifier 'trivially_relocatable_if_eligible' is a conditional keyword in" "" { target c++23_down } }
- struct Z {};
- Z bar ();
- struct Z replaceable_if_eligible = bar ();		// { dg-warning "identifier 'replaceable_if_eligible' is a conditional keyword in" "" { target c++23_down } }
- #endif
- 
- static_assert (__builtin_is_trivially_relocatable (A), "");
- static_assert (__builtin_is_replaceable (B), "");
- static_assert (__builtin_is_trivially_relocatable (C), "");
- static_assert (__builtin_is_replaceable (C), "");
- #if __cpp_trivial_relocatability >= 202502L
- static_assert (__builtin_is_trivially_relocatable (D), "");
- static_assert (__builtin_is_replaceable (E), "");
- static_assert (__builtin_is_trivially_relocatable (F), "");
- static_assert (__builtin_is_replaceable (F), "");
- #endif
--- 0 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/cpp26/trivially-relocatable6.C gcc-16-20251116/gcc/testsuite/g++.dg/cpp26/trivially-relocatable6.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/cpp26/trivially-relocatable6.C	Sun Nov  9 22:32:57 2025
--- gcc-16-20251116/gcc/testsuite/g++.dg/cpp26/trivially-relocatable6.C	Thu Jan  1 00:00:00 1970
***************
*** 1,30 ****
- // P2786R13 - C++26 Trivial Relocatability
- // { dg-do compile { target c++98_only } }
- // { dg-additional-options "-Wc++26-compat" }
- 
- struct A __trivially_relocatable_if_eligible {};
- struct B __replaceable_if_eligible {};
- struct C __replaceable_if_eligible __final __trivially_relocatable_if_eligible {};
- struct D trivially_relocatable_if_eligible {};		// { dg-warning "identifier 'trivially_relocatable_if_eligible' is a conditional keyword in" }
- // { dg-error "variable 'D trivially_relocatable_if_eligible' has initializer but incomplete type" "" { target *-*-* } .-1 }
- // { dg-error "extended initializer lists only available with" "" { target *-*-* } .-2 }
- struct E replaceable_if_eligible {};			// { dg-warning "identifier 'replaceable_if_eligible' is a conditional keyword in" }
- // { dg-error "variable 'E replaceable_if_eligible' has initializer but incomplete type" "" { target *-*-* } .-1 }
- // { dg-error "extended initializer lists only available with" "" { target *-*-* } .-2 }
- struct F trivially_relocatable_if_eligible replaceable_if_eligible {};		// { dg-warning "identifier 'trivially_relocatable_if_eligible' is a conditional keyword in" }
- // { dg-error "expected initializer before 'replaceable_if_eligible'" "" { target *-*-* } .-1 }
- struct G {};
- struct G trivially_relocatable_if_eligible {};		// { dg-warning "identifier 'trivially_relocatable_if_eligible' is a conditional keyword in" }
- // { dg-error "extended initializer lists only available with" "" { target *-*-* } .-1 }
- struct H {};
- struct H replaceable_if_eligible {};			// { dg-warning "identifier 'replaceable_if_eligible' is a conditional keyword in" }
- // { dg-error "extended initializer lists only available with" "" { target *-*-* } .-1 }
- struct I {};
- struct I trivially_relocatable_if_eligible replaceable_if_eligible {};		// { dg-warning "identifier 'trivially_relocatable_if_eligible' is a conditional keyword in" }
- // { dg-error "expected initializer before 'replaceable_if_eligible'" "" { target *-*-* } .-1 }
- struct J {};
- J foo ();
- struct J trivially_relocatable_if_eligible = foo ();	// { dg-warning "identifier 'trivially_relocatable_if_eligible' is a conditional keyword in" }
- struct K {};
- K bar ();
- struct K replaceable_if_eligible = bar ();		// { dg-warning "identifier 'replaceable_if_eligible' is a conditional keyword in" }
--- 0 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/cpp26/trivially-relocatable7.C gcc-16-20251116/gcc/testsuite/g++.dg/cpp26/trivially-relocatable7.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/cpp26/trivially-relocatable7.C	Sun Nov  9 22:32:57 2025
--- gcc-16-20251116/gcc/testsuite/g++.dg/cpp26/trivially-relocatable7.C	Thu Jan  1 00:00:00 1970
***************
*** 1,33 ****
- // P2786R13 - C++26 Trivial Relocatability
- // { dg-do compile { target c++11 } }
- // { dg-options "" }
- // { dg-additional-options "-pedantic" { target c++17 } }
- 
- namespace std
- {
- template <typename T, T v>
- struct integral_constant
- {
-   static constexpr T value = v;
- };
- 
- template <typename T>
- inline constexpr bool is_trivially_relocatable_v	// { dg-warning "inline variables are only available with" "" { target c++14_down } }
-   = __builtin_is_trivially_relocatable (T);		// { dg-warning "variable templates only available with" "" { target c++11_down } .-1 }
- 							// { dg-error "invalid use of incomplete type 'struct A'" "" { target *-*-* } .-1 }
- 
- template <typename T>
- inline constexpr bool is_nothrow_relocatable_v		// { dg-warning "inline variables are only available with" "" { target c++14_down } }
-   = __builtin_is_nothrow_relocatable (T);		// { dg-warning "variable templates only available with" "" { target c++11_down } .-1 }
- 							// { dg-error "invalid use of incomplete type 'struct A'" "" { target *-*-* } .-1 }
- 
- template <typename T>
- inline constexpr bool is_replaceable_v			// { dg-warning "inline variables are only available with" "" { target c++14_down } }
-   = __builtin_is_replaceable (T);			// { dg-warning "variable templates only available with" "" { target c++11_down } .-1 }
- }							// { dg-error "invalid use of incomplete type 'struct A'" "" { target *-*-* } .-1 }
- 
- struct A;						// { dg-message "forward declaration of 'struct A'" }
- 
- auto a = std::is_trivially_relocatable_v <A>;		// { dg-message "required from here" }
- auto b = std::is_nothrow_relocatable_v <A>;		// { dg-message "required from here" }
- auto c = std::is_replaceable_v <A>;			// { dg-message "required from here" }
--- 0 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/cpp26/trivially-relocatable8.C gcc-16-20251116/gcc/testsuite/g++.dg/cpp26/trivially-relocatable8.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/cpp26/trivially-relocatable8.C	Sun Nov  9 22:32:57 2025
--- gcc-16-20251116/gcc/testsuite/g++.dg/cpp26/trivially-relocatable8.C	Thu Jan  1 00:00:00 1970
***************
*** 1,190 ****
- // P2786R13 - C++26 Trivial Relocatability
- // { dg-do compile { target c++11 } }
- // { dg-options "" }
- // { dg-additional-options "-pedantic" { target c++17 } }
- 
- #if __cpp_trivial_relocatability < 202502L
- #define trivially_relocatable_if_eligible __trivially_relocatable_if_eligible
- #define replaceable_if_eligible __replaceable_if_eligible
- #endif
- 
- namespace std
- {
- template <typename T, T v>
- struct integral_constant
- {
-   static constexpr T value = v;
- };
- 
- template <typename>
- struct is_trivially_relocatable;
- 
- template <typename>
- struct is_replaceable;
- 
- template<typename T>
- struct is_trivially_relocatable
-   : public integral_constant <bool, __builtin_is_trivially_relocatable (T)>
- {
- };
- 
- template<typename T>
- struct is_nothrow_relocatable
-   : public integral_constant <bool, __builtin_is_nothrow_relocatable (T)>
- {
- };
- 
- template<typename T>
- struct is_replaceable
-   : public integral_constant <bool, __builtin_is_replaceable (T)>
- {
- };
- 
- template <typename T>
- inline constexpr bool is_trivially_relocatable_v	// { dg-warning "inline variables are only available with" "" { target c++14_down } }
-   = __builtin_is_trivially_relocatable (T);		// { dg-warning "variable templates only available with" "" { target c++11_down } .-1 }
- 
- template <typename T>
- inline constexpr bool is_nothrow_relocatable_v		// { dg-warning "inline variables are only available with" "" { target c++14_down } }
-   = __builtin_is_nothrow_relocatable (T);		// { dg-warning "variable templates only available with" "" { target c++11_down } .-1 }
- 
- template <typename T>
- inline constexpr bool is_replaceable_v			// { dg-warning "inline variables are only available with" "" { target c++14_down } }
-   = __builtin_is_replaceable (T);			// { dg-warning "variable templates only available with" "" { target c++11_down } .-1 }
- }
- 
- struct A { A (A &&) = default; A &operator= (A &&) = default; ~A () = default; int a; };
- 
- static_assert (std::is_trivially_relocatable_v <A>, "");
- static_assert (std::is_nothrow_relocatable_v <A>, "");
- static_assert (std::is_replaceable_v <A>, "");
- 
- struct B { B (B &&); B &operator= (B &&) = default; ~B () = default; int a; };
- 
- static_assert (!std::is_trivially_relocatable_v <B>, "");
- static_assert (!std::is_nothrow_relocatable_v <B>, "");
- static_assert (!std::is_replaceable_v <B>, "");
- 
- struct C { C (C &&) = default; C &operator= (C &&); ~C () = default; int a; };
- 
- static_assert (!std::is_trivially_relocatable_v <C>, "");
- static_assert (std::is_nothrow_relocatable_v <C>, "");
- static_assert (!std::is_replaceable_v <C>, "");
- 
- struct D { D (D &&) = delete; D &operator= (D &&) = default; int a; };
- 
- static_assert (!std::is_trivially_relocatable_v <D>, "");
- static_assert (!std::is_nothrow_relocatable_v <D>, "");
- static_assert (!std::is_replaceable_v <D>, "");
- 
- struct E { E (E &&) = default; E &operator= (E &&) = delete; int a; };
- 
- static_assert (!std::is_trivially_relocatable_v <E>, "");
- static_assert (std::is_nothrow_relocatable_v <E>, "");
- static_assert (!std::is_replaceable_v <E>, "");
- 
- struct F { F (F &&) = default; F &operator= (F &&) = default; ~F () = delete; int a; };
- 
- static_assert (!std::is_trivially_relocatable_v <F>, "");
- static_assert (!std::is_nothrow_relocatable_v <F>, "");
- static_assert (!std::is_replaceable_v <F>, "");
- 
- struct G { G (const G &) = default; G &operator= (const G &) = default; int a; };
- 
- static_assert (std::is_trivially_relocatable_v <G>, "");
- static_assert (std::is_nothrow_relocatable_v <G>, "");
- static_assert (std::is_replaceable_v <G>, "");
- 
- struct H { H (const H &); H &operator= (const H &) = default; int a; };
- 
- static_assert (!std::is_trivially_relocatable_v <H>, "");
- static_assert (!std::is_nothrow_relocatable_v <H>, "");
- static_assert (!std::is_replaceable_v <H>, "");
- 
- struct I { I (const I &) = default; I &operator= (const I &); ~I () = default; int a; };
- 
- static_assert (!std::is_trivially_relocatable_v <I>, "");
- static_assert (std::is_nothrow_relocatable_v <I>, "");
- static_assert (!std::is_replaceable_v <I>, "");
- 
- struct J { J (const J &) = delete; J &operator= (const J &) = default; int a; };
- 
- static_assert (!std::is_trivially_relocatable_v <J>, "");
- static_assert (!std::is_nothrow_relocatable_v <J>, "");
- static_assert (!std::is_replaceable_v <J>, "");
- 
- struct K { K (const K &) = default; K &operator= (const K &) = delete; int a; };
- 
- static_assert (!std::is_trivially_relocatable_v <K>, "");
- static_assert (std::is_nothrow_relocatable_v <K>, "");
- static_assert (!std::is_replaceable_v <K>, "");
- 
- struct M;
- struct L { L (L &&) = default; L (M &&); L &operator= (L &&) = default; int a; };
- 
- static_assert (std::is_trivially_relocatable_v <L>, "");
- static_assert (std::is_nothrow_relocatable_v <L>, "");
- static_assert (std::is_replaceable_v <L>, "");
- 
- struct M : public L { using L::L; M (const M &); M &operator= (M &&) = default; int b; };
- 
- static_assert (!std::is_trivially_relocatable_v <M>, "");
- static_assert (!std::is_nothrow_relocatable_v <M>, "");
- static_assert (!std::is_replaceable_v <M>, "");
- 
- struct O;
- struct N { N (N &&) = default; N &operator= (N &&) = default; N &operator= (O &&); int a; };
- 
- static_assert (std::is_trivially_relocatable_v <N>, "");
- static_assert (std::is_nothrow_relocatable_v <N>, "");
- static_assert (std::is_replaceable_v <N>, "");
- 
- struct O : public N { using N::operator=; O (O &&) = default; int b; };
- 
- static_assert (!std::is_trivially_relocatable_v <O>, "");
- static_assert (std::is_nothrow_relocatable_v <O>, "");
- static_assert (!std::is_replaceable_v <O>, "");
- 
- struct Q;
- struct P { template <typename T> P (T &&) {} };
- 
- static_assert (std::is_trivially_relocatable_v <P>, "");
- static_assert (std::is_nothrow_relocatable_v <P>, "");
- static_assert (std::is_replaceable_v <P>, "");
- 
- struct Q : public P { using P::P; Q (const Q &); };
- 
- static_assert (!std::is_trivially_relocatable_v <Q>, "");
- static_assert (!std::is_nothrow_relocatable_v <Q>, "");
- static_assert (!std::is_replaceable_v <Q>, "");
- 
- struct S;
- struct R { R (const R &) = default; R (const M &); R &operator= (R &&) = default; int a; };
- 
- static_assert (std::is_trivially_relocatable_v <R>, "");
- static_assert (std::is_nothrow_relocatable_v <R>, "");
- static_assert (std::is_replaceable_v <R>, "");
- 
- struct S : public R { using R::R; S &operator= (S &&) = default; int b; };
- 
- static_assert (!std::is_trivially_relocatable_v <S>, "");
- static_assert (!std::is_nothrow_relocatable_v <S>, "");
- static_assert (!std::is_replaceable_v <S>, "");
- 
- struct T { T (T &&) = default; T &operator= (T &&) = default; ~T (); int a; };
- 
- static_assert (!std::is_trivially_relocatable_v <T>, "");
- static_assert (std::is_nothrow_relocatable_v <T>, "");
- static_assert (!std::is_replaceable_v <T>, "");
- 
- struct U { U (const U &) = default; U &operator= (const U &) = default; ~U (); int a; };
- 
- static_assert (!std::is_trivially_relocatable_v <U>, "");
- static_assert (std::is_nothrow_relocatable_v <U>, "");
- static_assert (!std::is_replaceable_v <U>, "");
- 
- struct V { public: V (); private: V (V &&) = default; V &operator= (V &&) = default; ~V () = default; int a; };
- 
- static_assert (std::is_trivially_relocatable_v <V>, "");
- static_assert (std::is_nothrow_relocatable_v <V>, "");
- static_assert (std::is_replaceable_v <V>, "");
--- 0 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/cpp26/trivially-relocatable9.C gcc-16-20251116/gcc/testsuite/g++.dg/cpp26/trivially-relocatable9.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/cpp26/trivially-relocatable9.C	Sun Nov  9 22:32:57 2025
--- gcc-16-20251116/gcc/testsuite/g++.dg/cpp26/trivially-relocatable9.C	Thu Jan  1 00:00:00 1970
***************
*** 1,134 ****
- // P2786R13 - C++26 Trivial Relocatability
- // { dg-do compile { target c++11 } }
- // { dg-options "" }
- // { dg-additional-options "-pedantic" { target c++17 } }
- 
- #if __cpp_trivial_relocatability < 202502L
- #define trivially_relocatable_if_eligible __trivially_relocatable_if_eligible
- #define replaceable_if_eligible __replaceable_if_eligible
- #endif
- 
- namespace std
- {
- template <typename T, T v>
- struct integral_constant
- {
-   static constexpr T value = v;
- };
- 
- template <typename>
- struct is_trivially_relocatable;
- 
- template <typename>
- struct is_replaceable;
- 
- template<typename T>
- struct is_trivially_relocatable
-   : public integral_constant <bool, __builtin_is_trivially_relocatable (T)>
- {
- };
- 
- template<typename T>
- struct is_nothrow_relocatable
-   : public integral_constant <bool, __builtin_is_nothrow_relocatable (T)>
- {
- };
- 
- template<typename T>
- struct is_replaceable
-   : public integral_constant <bool, __builtin_is_replaceable (T)>
- {
- };
- 
- template <typename T>
- inline constexpr bool is_trivially_relocatable_v	// { dg-warning "inline variables are only available with" "" { target c++14_down } }
-   = __builtin_is_trivially_relocatable (T);		// { dg-warning "variable templates only available with" "" { target c++11_down } .-1 }
- 
- template <typename T>
- inline constexpr bool is_nothrow_relocatable_v		// { dg-warning "inline variables are only available with" "" { target c++14_down } }
-   = __builtin_is_nothrow_relocatable (T);		// { dg-warning "variable templates only available with" "" { target c++11_down } .-1 }
- 
- template <typename T>
- inline constexpr bool is_replaceable_v			// { dg-warning "inline variables are only available with" "" { target c++14_down } }
-   = __builtin_is_replaceable (T);			// { dg-warning "variable templates only available with" "" { target c++11_down } .-1 }
- }
- 
- struct A trivially_relocatable_if_eligible { A (A &&); A &operator= (A &&); ~A (); int a; };
- 
- static_assert (std::is_trivially_relocatable_v <A>, "");
- static_assert (std::is_nothrow_relocatable_v <A>, "");
- 
- struct B { B (B &&); B &operator= (B &&); ~B (); int a; };
- 
- static_assert (!std::is_trivially_relocatable_v <B>, "");
- static_assert (!std::is_nothrow_relocatable_v <B>, "");
- 
- struct C trivially_relocatable_if_eligible : public A { C (C &&); C &operator= (C &&); ~C (); int a; };
- 
- static_assert (std::is_trivially_relocatable_v <C>, "");
- static_assert (std::is_nothrow_relocatable_v <C>, "");
- 
- struct D trivially_relocatable_if_eligible : public B { D (D &&); D &operator= (D &&); ~D (); int a; };
- 
- static_assert (!std::is_trivially_relocatable_v <D>, "");
- static_assert (!std::is_nothrow_relocatable_v <D>, "");
- 
- struct E trivially_relocatable_if_eligible { E (E &&); E &operator= (E &&); ~E (); A a; };
- 
- static_assert (std::is_trivially_relocatable_v <E>, "");
- static_assert (std::is_nothrow_relocatable_v <E>, "");
- 
- struct F trivially_relocatable_if_eligible { F (F &&) noexcept; F &operator= (F &&); ~F (); B a; };
- 
- static_assert (!std::is_trivially_relocatable_v <F>, "");
- static_assert (std::is_nothrow_relocatable_v <F>, "");
- 
- struct G trivially_relocatable_if_eligible { G (G &&); G &operator= (G &&); ~G () = delete; int a; };
- 
- static_assert (!std::is_trivially_relocatable_v <G>, "");
- static_assert (!std::is_nothrow_relocatable_v <G>, "");
- 
- struct H trivially_relocatable_if_eligible : virtual A { H (H &&); H &operator= (H &&); ~H (); int a; };
- 
- static_assert (!std::is_trivially_relocatable_v <H>, "");
- static_assert (!std::is_nothrow_relocatable_v <H>, "");
- 
- struct I trivially_relocatable_if_eligible { I (I &&); I &operator= (I &&); ~I (); A &a; int &b; };
- 
- static_assert (std::is_trivially_relocatable_v <I>, "");
- static_assert (std::is_nothrow_relocatable_v <I>, "");
- 
- struct J trivially_relocatable_if_eligible { J (J &&); J &operator= (J &&); ~J (); B &a; int &b; };
- 
- static_assert (std::is_trivially_relocatable_v <J>, "");
- static_assert (std::is_nothrow_relocatable_v <J>, "");
- 
- struct K trivially_relocatable_if_eligible { K (K &&) noexcept; K &operator= (K &&); ~K (); union { A a; int b; char c; }; };
- 
- static_assert (!std::is_trivially_relocatable_v <K>, "");
- static_assert (std::is_nothrow_relocatable_v <K>, "");
- 
- struct L trivially_relocatable_if_eligible { L (L &&); L &operator= (L &&); ~L (); union { int a; B b; short c; }; };
- 
- static_assert (!std::is_trivially_relocatable_v <L>, "");
- static_assert (!std::is_nothrow_relocatable_v <L>, "");
- 
- struct M trivially_relocatable_if_eligible { M (M &&); M &operator= (M &&); ~M () = default; int a; };
- 
- static_assert (std::is_trivially_relocatable_v <M>, "");
- static_assert (std::is_nothrow_relocatable_v <M>, "");
- 
- struct N trivially_relocatable_if_eligible { N (N &&); N &operator= (N &&); ~N (); union { M a; int b; char c; }; };
- 
- static_assert (std::is_trivially_relocatable_v <N>, "");
- static_assert (std::is_nothrow_relocatable_v <N>, "");
- 
- struct O trivially_relocatable_if_eligible { O (O &&); O &operator= (O &&); ~O (); union { unsigned long long a; int b; char c; }; };
- 
- static_assert (std::is_trivially_relocatable_v <O>, "");
- static_assert (std::is_nothrow_relocatable_v <O>, "");
- 
- struct P { P (P &&) noexcept; P &operator= (P &&); ~P (); int a; };
- 
- static_assert (!std::is_trivially_relocatable_v <P>, "");
- static_assert (std::is_nothrow_relocatable_v <P>, "");
--- 0 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/ext/sve-sizeless-1.C gcc-16-20251116/gcc/testsuite/g++.dg/ext/sve-sizeless-1.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/ext/sve-sizeless-1.C	Sun Nov  9 22:33:01 2025
--- gcc-16-20251116/gcc/testsuite/g++.dg/ext/sve-sizeless-1.C	Sun Nov 16 22:33:17 2025
*************** statements (int n)
*** 173,178 ****
--- 173,188 ----
    svint32_t init_sve_vc8 = { 0, 1, 2, 3, 4, 5 }; // { dg-error {too many initializers for 'svint32_t'} }
    svint32_t init_sve_vc9 = { 0, bar (), 2, 3, 4, n }; // { dg-error {too many initializers for 'svint32_t'} }
  
+   svbool_t init_sve_vb1 = { 0, -1 };
+   svbool_t init_sve_vb2 = { 0, bar () }; // { dg-warning {narrowing conversion} "" { target c++11 } }
+   svbool_t init_sve_vb3 = { bar (), n }; // { dg-warning {narrowing conversion} "" { target c++11 } }
+   svbool_t init_sve_vb4 = { 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
+   svbool_t init_sve_vb5 = { 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, bar (), 0, 0 }; // { dg-warning {narrowing conversion} "" { target c++11 } }
+   svbool_t init_sve_vb6 = { 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1 }; // { dg-error {too many initializers for 'svbool_t'} }
+   svbool_t init_sve_vb7 = { 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, bar () }; // { dg-error {too many initializers for 'svbool_t'} }
+   svbool_t init_sve_vb8 = { 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, bar (), -1 }; // { dg-error {too many initializers for 'svbool_t'} }
+   svbool_t init_sve_vb9 = { 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, bar (), n }; // { dg-error {too many initializers for 'svbool_t'} }
+ 
    // Constructor calls.
  
    (0, svint8_t ());
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/ext/sve-sizeless-2.C gcc-16-20251116/gcc/testsuite/g++.dg/ext/sve-sizeless-2.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/ext/sve-sizeless-2.C	Sun Nov  9 22:33:01 2025
--- gcc-16-20251116/gcc/testsuite/g++.dg/ext/sve-sizeless-2.C	Sun Nov 16 22:33:17 2025
*************** statements (int n)
*** 173,178 ****
--- 173,199 ----
    svint32_t init_sve_vc8 = { 0, bar (), 2, 3, 4, n, 5, 6, 7, 8, 9 }; // { dg-error {too many initializers for 'svint32_t'} }
    svint32_t init_sve_vc9 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; // { dg-error {too many initializers for 'svint32_t'} }
  
+   svbool_t init_sve_vb1 = { 0, -1 };
+   svbool_t init_sve_vb2 = { 0, bar () }; // { dg-warning {narrowing conversion} "" { target c++11 } }
+   svbool_t init_sve_vb3 = { bar (), n }; // { dg-warning {narrowing conversion} "" { target c++11 } }
+   svbool_t init_sve_vb4 = { 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 			    0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
+   svbool_t init_sve_vb5 = { 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 			    0, -1, -1, -1, 0, 0, 0, bar (), 0, 0, 0, 0, 0, 0, // { dg-warning {narrowing conversion} "" { target c++11 } }
+ 			    0, 0 };
+   svbool_t init_sve_vb6 = { 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 			    0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 			    0 }; // { dg-error {too many initializers for 'svbool_t'} }
+   svbool_t init_sve_vb7 = { 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 			    0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 			    bar () }; // { dg-error {too many initializers for 'svbool_t'} }
+   svbool_t init_sve_vb8 = { 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 			    0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 			    bar (), -1 }; // { dg-error {too many initializers for 'svbool_t'} }
+   svbool_t init_sve_vb9 = { 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 			    0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 			    bar (), n }; // { dg-error {too many initializers for 'svbool_t'} }
+ 
    // Constructor calls.
  
    (0, svint8_t ());
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/modules/class-11_a.H gcc-16-20251116/gcc/testsuite/g++.dg/modules/class-11_a.H
*** gcc-16-20251109/gcc/testsuite/g++.dg/modules/class-11_a.H	Sun Nov  9 22:33:03 2025
--- gcc-16-20251116/gcc/testsuite/g++.dg/modules/class-11_a.H	Sun Nov 16 22:33:18 2025
***************
*** 3,19 ****
  // { dg-module-cmi {} }
  // { dg-skip-if "test assumes that structs have padding" { default_packed } }
  
- #if __cpp_trivial_relocatability < 202502L
- #define trivially_relocatable_if_eligible __trivially_relocatable_if_eligible
- #define replaceable_if_eligible __replaceable_if_eligible
- #endif
- 
- struct A trivially_relocatable_if_eligible { A(A&&); };
- struct B replaceable_if_eligible { B(B&&); B& operator=(B&&); };
- struct C {};
- static_assert(__builtin_is_trivially_relocatable(C) && __builtin_is_replaceable(C), "");
- 
- 
  struct pr106381 {
    long l;
    char c = -1;
--- 3,8 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/modules/class-11_b.C gcc-16-20251116/gcc/testsuite/g++.dg/modules/class-11_b.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/modules/class-11_b.C	Sun Nov  9 22:33:03 2025
--- gcc-16-20251116/gcc/testsuite/g++.dg/modules/class-11_b.C	Sun Nov 16 22:33:18 2025
***************
*** 3,12 ****
  
  import "class-11_a.H";
  
- static_assert(__builtin_is_trivially_relocatable(A), "");
- static_assert(__builtin_is_replaceable(B), "");
- static_assert(__builtin_is_trivially_relocatable(C) && __builtin_is_replaceable(C), "");
- 
  struct M1 : pr106381 {
    char x;  // { dg-warning "offset" "" { target c++14 } }
  };
--- 3,8 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/modules/friend-10_a.C gcc-16-20251116/gcc/testsuite/g++.dg/modules/friend-10_a.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/modules/friend-10_a.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/g++.dg/modules/friend-10_a.C	Sun Nov 16 22:33:18 2025
***************
*** 0 ****
--- 1,21 ----
+ // PR c++/122646
+ // { dg-additional-options "-fmodules -fconcepts" }
+ // { dg-module-cmi M }
+ 
+ export module M;
+ 
+ template <typename T>
+ struct zip_view_iterator {
+   void operator-(int) {}
+   friend void operator-(zip_view_iterator, zip_view_iterator)
+     requires requires(T x) { x.begin() - x.begin(); }
+   {}
+ };
+ 
+ struct ref_view {
+   ref_view begin();
+ };
+ 
+ export template <typename X> void foo() {
+   zip_view_iterator<ref_view>{} - X();
+ }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/modules/friend-10_b.C gcc-16-20251116/gcc/testsuite/g++.dg/modules/friend-10_b.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/modules/friend-10_b.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/g++.dg/modules/friend-10_b.C	Sun Nov 16 22:33:18 2025
***************
*** 0 ****
--- 1,5 ----
+ // PR c++/122646
+ // { dg-additional-options "-fmodules -fconcepts" }
+ 
+ import M;
+ template void foo<int>();
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/modules/friend-11_a.C gcc-16-20251116/gcc/testsuite/g++.dg/modules/friend-11_a.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/modules/friend-11_a.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/g++.dg/modules/friend-11_a.C	Sun Nov 16 22:33:18 2025
***************
*** 0 ****
--- 1,22 ----
+ // { dg-additional-options "-fmodules" }
+ 
+ export module M;
+ 
+ export {
+ template <class T>
+ int fn() {
+   return T::mem;
+ }
+ 
+ template <class T>
+ class A {
+   inline static int mem = 42;
+   friend int fn<A>();
+ };
+ 
+ template <class T>
+ class B {
+   inline static int mem = 24;
+   friend int fn<B>();
+ };
+ }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/modules/friend-11_b.C gcc-16-20251116/gcc/testsuite/g++.dg/modules/friend-11_b.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/modules/friend-11_b.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/g++.dg/modules/friend-11_b.C	Sun Nov 16 22:33:18 2025
***************
*** 0 ****
--- 1,9 ----
+ // { dg-additional-options "-fmodules" }
+ 
+ import M;
+ 
+ int main()
+ {
+   fn<A<int>>();
+   fn<B<int>>();
+ }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/modules/inst-7_a.C gcc-16-20251116/gcc/testsuite/g++.dg/modules/inst-7_a.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/modules/inst-7_a.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/g++.dg/modules/inst-7_a.C	Sun Nov 16 22:33:18 2025
***************
*** 0 ****
--- 1,33 ----
+ // PR c++/122625
+ // { dg-additional-options "-fmodules" }
+ // { dg-module-cmi M }
+ 
+ export module M;
+ struct integral_constant {
+   void f() const {}
+ };
+ struct span {
+   template <int> static constexpr integral_constant __v{};
+   template <int, int> static constexpr integral_constant partial{};
+ };
+ template <int x> constexpr integral_constant span::partial<x, 0>{};
+ 
+ template <typename T>
+ struct nested {
+   template <typename U> static const U arr[3];
+ };
+ template <typename T>
+ struct nested<T*> {
+   template <typename U> static const U arr[3];
+ };
+ template <typename T> template <typename U> const U nested<T>::arr[3] = {};
+ template <typename T> template <typename U> const U nested<T*>::arr[3] = {};
+ template <typename T> template <typename U> const U nested<T*>::arr<U*>[3] = {};
+ 
+ export inline void format() {
+   span::__v<1>.f();
+   span::partial<5, 0>.f();
+   nested<int>::arr<integral_constant>[0].f();
+   nested<int*>::arr<integral_constant>[0].f();
+   nested<int*>::arr<integral_constant*>[0].f();
+ }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/modules/inst-7_b.C gcc-16-20251116/gcc/testsuite/g++.dg/modules/inst-7_b.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/modules/inst-7_b.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/g++.dg/modules/inst-7_b.C	Sun Nov 16 22:33:18 2025
***************
*** 0 ****
--- 1,13 ----
+ // PR c++/122625
+ // { dg-additional-options "-fmodules" }
+ 
+ import M;
+ int main() {
+   format();
+ }
+ 
+ // { dg-final { scan-assembler {_ZNW1M4span3__vILi1EEE:} } }
+ // { dg-final { scan-assembler {_ZNW1M4span7partialILi5ELi0EEE:} } }
+ // { dg-final { scan-assembler {_ZNW1M6nestedIiE3arrIS_17integral_constantEE:} } }
+ // { dg-final { scan-assembler {_ZNW1M6nestedIPiE3arrIS_17integral_constantEE:} } }
+ // { dg-final { scan-assembler {_ZNW1M6nestedIPiE3arrIPS_17integral_constantEE:} } }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/modules/internal-18.C gcc-16-20251116/gcc/testsuite/g++.dg/modules/internal-18.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/modules/internal-18.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/g++.dg/modules/internal-18.C	Sun Nov 16 22:33:18 2025
***************
*** 0 ****
--- 1,9 ----
+ // PR c++/122628
+ // { dg-additional-options "-fmodules" }
+ 
+ template <typename T> static void baz(T) {}
+ template <typename T> static void bar(T) { baz(0); }
+ 
+ void foo() {
+   bar(0);
+ }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/modules/tpl-friend-20_a.C gcc-16-20251116/gcc/testsuite/g++.dg/modules/tpl-friend-20_a.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/modules/tpl-friend-20_a.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/g++.dg/modules/tpl-friend-20_a.C	Sun Nov 16 22:33:19 2025
***************
*** 0 ****
--- 1,16 ----
+ // PR c++/122551
+ // { dg-additional-options "-fmodules" }
+ // { dg-module-cmi M }
+ 
+ export module M;
+ export template <typename T> struct S {
+   operator int() const { return 123; }
+   template <typename U> friend void f(U);
+   template <typename U> friend void g(U) {}
+   friend void h(int);
+   friend void i(int) {}
+ };
+ template <typename U> void f(U) {}
+ template <typename U> void g(U);
+ void h(int) {}
+ void i(int);
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/modules/tpl-friend-20_b.C gcc-16-20251116/gcc/testsuite/g++.dg/modules/tpl-friend-20_b.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/modules/tpl-friend-20_b.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/g++.dg/modules/tpl-friend-20_b.C	Sun Nov 16 22:33:19 2025
***************
*** 0 ****
--- 1,10 ----
+ // PR c++/122551
+ // { dg-additional-options "-fmodules" }
+ // { dg-module-cmi X }
+ 
+ export module X;
+ import M;
+ 
+ export S<int> test() {
+   return {};
+ }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/modules/tpl-friend-20_c.C gcc-16-20251116/gcc/testsuite/g++.dg/modules/tpl-friend-20_c.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/modules/tpl-friend-20_c.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/g++.dg/modules/tpl-friend-20_c.C	Sun Nov 16 22:33:19 2025
***************
*** 0 ****
--- 1,11 ----
+ // PR c++/122551
+ // { dg-additional-options "-fmodules" }
+ 
+ import X;
+ 
+ int main() {
+   f(test());
+   g(test());
+   h(test());
+   i(test());
+ }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/modules/tpl-friend-8_a.H gcc-16-20251116/gcc/testsuite/g++.dg/modules/tpl-friend-8_a.H
*** gcc-16-20251109/gcc/testsuite/g++.dg/modules/tpl-friend-8_a.H	Sun Nov  9 22:33:03 2025
--- gcc-16-20251116/gcc/testsuite/g++.dg/modules/tpl-friend-8_a.H	Sun Nov 16 22:33:19 2025
*************** namespace std {
*** 7,9 ****
--- 7,19 ----
      friend void f(A) { }
    };
  }
+ 
+ namespace outer {
+   namespace inner {
+     inline namespace more_inner {
+       template<class T> struct B {
+ 	friend void g() {}
+       };
+     }
+   }
+ }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/modules/tpl-friend-8_b.C gcc-16-20251116/gcc/testsuite/g++.dg/modules/tpl-friend-8_b.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/modules/tpl-friend-8_b.C	Sun Nov  9 22:33:03 2025
--- gcc-16-20251116/gcc/testsuite/g++.dg/modules/tpl-friend-8_b.C	Sun Nov 16 22:33:19 2025
***************
*** 1,8 ****
  // PR c++/100134
! // { dg-additional-options -fmodules-ts }
  // { dg-module-cmi pr100134 }
  export module pr100134;
  
  import "tpl-friend-8_a.H";
  
  export std::A<int> a;
--- 1,13 ----
  // PR c++/100134
! // { dg-additional-options "-fmodules -Wno-global-module" }
  // { dg-module-cmi pr100134 }
+ module;
+ namespace outer::inner {
+   inline namespace more_inner {}
+ }
  export module pr100134;
  
  import "tpl-friend-8_a.H";
  
  export std::A<int> a;
+ export outer::inner::B<int> b;
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/modules/using-33_a.C gcc-16-20251116/gcc/testsuite/g++.dg/modules/using-33_a.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/modules/using-33_a.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/g++.dg/modules/using-33_a.C	Sun Nov 16 22:33:19 2025
***************
*** 0 ****
--- 1,10 ----
+ // { dg-additional-options "-fmodules" }
+ module;
+ 
+ #include <string.h>
+ 
+ export module M;
+ 
+ namespace N {
+   export using ::memset;
+ }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/modules/using-33_b.C gcc-16-20251116/gcc/testsuite/g++.dg/modules/using-33_b.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/modules/using-33_b.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/g++.dg/modules/using-33_b.C	Sun Nov 16 22:33:19 2025
***************
*** 0 ****
--- 1,10 ----
+ // { dg-additional-options "-fmodules" }
+ import M;
+ 
+ using N::memset;
+ 
+ int main()
+ {
+   int i = 1;
+   memset (&i, 42, 1);
+ }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/pch/line-map-3.C gcc-16-20251116/gcc/testsuite/g++.dg/pch/line-map-3.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/pch/line-map-3.C	Sun Nov  9 22:33:04 2025
--- gcc-16-20251116/gcc/testsuite/g++.dg/pch/line-map-3.C	Sun Nov 16 22:33:20 2025
***************
*** 1,23 ****
- #define UNUSED_MACRO /* { dg-error "UNUSED_MACRO" "" { xfail *-*-* } } */
- #include "line-map-3.H" /* { dg-bogus "-:UNUSED_MACRO" "" { xfail *-*-* } } */
- 
- /* { dg-do compile } */
- /* { dg-additional-options "-Werror=unused-macros" } */
- 
  /* PR preprocessor/105608 */
! /* This test case is currently xfailed and requires work in libcpp/pch.cc to
!    resolve.  Currently, the macro location is incorrectly assigned to line 2
!    of the header file when read via PCH, because libcpp doesn't try to
!    assign locations relative to the newly loaded line map after restoring
!    the PCH.  */
! 
! /* In PCH mode we also complain incorrectly about the command line macro -Dwith_PCH
!    added by dejagnu; that warning would get suppressed if the macro location were
!    correctly restored by libcpp to reflect that it was a command line macro.  */
! /* { dg-bogus "-:with_PCH" "" { xfail *-*-* } 2 } */
! 
! /* The reason we used -Werror was to prevent pch.exp from rerunning without PCH;
!    in that case we would get unnecessary XPASS outputs since the test does work
!    fine without PCH.  Once the bug is fixed, remove the -Werror and switch to
!    dg-warning.  */
! /* { dg-regexp {[^[:space:]]*: some warnings being treated as errors} } */
--- 1,5 ----
  /* PR preprocessor/105608 */
! /* { dg-do compile } */
! /* { dg-additional-options "-Wunused-macros" } */
! #define UNUSED_MACRO /* { dg-warning "-:UNUSED_MACRO" "" } */
! #include "line-map-3.H" /* { dg-bogus "-:UNUSED_MACRO" "" } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/pch/line-map-4.C gcc-16-20251116/gcc/testsuite/g++.dg/pch/line-map-4.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/pch/line-map-4.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/g++.dg/pch/line-map-4.C	Sun Nov 16 22:33:20 2025
***************
*** 0 ****
--- 1,5 ----
+ /* PR preprocessor/105608 */
+ /* { dg-do compile } */
+ #define INT int /* { dg-error "-:declaration does not declare anything" } */
+ #include "line-map-4.H"
+ INT; /* { dg-note "in expansion of macro" } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/pch/line-map-4.Hs gcc-16-20251116/gcc/testsuite/g++.dg/pch/line-map-4.Hs
*** gcc-16-20251109/gcc/testsuite/g++.dg/pch/line-map-4.Hs	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/g++.dg/pch/line-map-4.Hs	Sun Nov 16 22:33:20 2025
***************
*** 0 ****
--- 1 ----
+ /* This space intentionally left blank.  */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/pr121345.C gcc-16-20251116/gcc/testsuite/g++.dg/pr121345.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/pr121345.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/g++.dg/pr121345.C	Sun Nov 16 22:33:20 2025
***************
*** 0 ****
--- 1,39 ----
+ /* { dg-do compile }  */
+ /* { dg-options "-fdump-tree-evrp -std=c++11 -fmath-errno -fno-exceptions -O3 -W -Wall" } */
+ 
+   struct type {
+         unsigned long long t;
+         int t1;
+   } ;
+ struct a
+ {
+   type per_lane_size_states[16];
+ }TestForGEVectorsState;
+ 
+ void sink(int);
+ 
+ static constexpr int kMaxSupportedLaneSize = 8;
+ 
+ void dead();
+ 
+ void f()
+ {
+   for (int lane_size = 1; lane_size <= kMaxSupportedLaneSize; lane_size <<= 1) {
+     type *tp = &TestForGEVectorsState.per_lane_size_states[lane_size];
+     if (lane_size < 0)
+       dead ();
+     if ((unsigned long long)(lane_size * 8) <= 64llu)
+     {
+       unsigned long long t = lane_size;
+       t = 24 / t;
+       if (tp->t != t)
+       {
+         __builtin_trap();
+       }
+     }
+     else  if (tp->t1)
+     __builtin_trap();
+   }
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "dead" "evrp" } }  */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/torture/pr122663.C gcc-16-20251116/gcc/testsuite/g++.dg/torture/pr122663.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/torture/pr122663.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/g++.dg/torture/pr122663.C	Sun Nov 16 22:33:21 2025
***************
*** 0 ****
--- 1,26 ----
+ // { dg-do compile }
+ // { dg-additional-options "-g" }
+ 
+ int a, b, c;
+ char bk(int, int);
+ void bl(int);
+ inline unsigned d() {
+   bl(c);
+   return bk(b, 0);
+ }
+ struct e {
+   template <class bc> e(bc &);
+ };
+ int g(e) { return 0; }
+ unsigned h(e k) { return g(k); }
+ unsigned i(e k) { return h(k); }
+ inline unsigned j() {
+   unsigned bh = i(a);
+   bh += d();
+   return bh;
+ }
+ void f() {
+   j();
+   j();
+   __builtin_unreachable();
+ }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/tree-ssa/pr117123.C gcc-16-20251116/gcc/testsuite/g++.dg/tree-ssa/pr117123.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/tree-ssa/pr117123.C	Sun Nov  9 22:33:04 2025
--- gcc-16-20251116/gcc/testsuite/g++.dg/tree-ssa/pr117123.C	Sun Nov 16 22:33:22 2025
*************** int patatino(int a) {
*** 49,54 ****
  }
  
  // { dg-final { scan-tree-dump-not "dont_be_here" "optimized" } }
! // Depending on LOGICAL_OP_NON_SHORT_CIRCUIT (or BRANCH_COST) this might
! // or might not be optimized fully
! // { dg-final { scan-tree-dump-times "if " 3 "optimized" { xfail { aarch64-*-* } } } }
--- 49,52 ----
  }
  
  // { dg-final { scan-tree-dump-not "dont_be_here" "optimized" } }
! // { dg-final { scan-tree-dump-times "if " 3 "optimized" } }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/uninit-pred-5.C gcc-16-20251116/gcc/testsuite/g++.dg/uninit-pred-5.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/uninit-pred-5.C	Sun Nov  9 22:33:04 2025
--- gcc-16-20251116/gcc/testsuite/g++.dg/uninit-pred-5.C	Sun Nov 16 22:33:22 2025
*************** public:
*** 41,47 ****
      edit_distance_t __trans_tmp_1;
      if (m_best_candidate) {
        size_t candidate_len = m_best_candidate_len;
!       __trans_tmp_1 = get_edit_distance_cutoff(candidate_len); // { dg-warning "may be used uninitialized" }
      }
      edit_distance_t cutoff = __trans_tmp_1;
      if (cutoff)
--- 41,47 ----
      edit_distance_t __trans_tmp_1;
      if (m_best_candidate) {
        size_t candidate_len = m_best_candidate_len;
!       __trans_tmp_1 = get_edit_distance_cutoff(candidate_len); // { dg-bogus "may be used uninitialized" }
      }
      edit_distance_t cutoff = __trans_tmp_1;
      if (cutoff)
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/vect/pr122647.cc gcc-16-20251116/gcc/testsuite/g++.dg/vect/pr122647.cc
*** gcc-16-20251109/gcc/testsuite/g++.dg/vect/pr122647.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/g++.dg/vect/pr122647.cc	Sun Nov 16 22:33:22 2025
***************
*** 0 ****
--- 1,18 ----
+ // { dg-do compile }
+ 
+ void av(float *au)
+ {
+   for (int i = 0; i < 1024; ++i)
+   {
+     float t = i;
+     int tt = __builtin_bit_cast(int, t);
+     bool t1 = tt;
+     float t2 = t1;
+     int t3 = __builtin_bit_cast(int, t2);
+     bool t4 = t3;
+     float t5 = t5;
+     au[i] = t4;
+   }
+ }
+ 
+ // { dg-final { scan-tree-dump "optimized: loop vectorized" "vect" { target { { vect_uintfloat_cvt && vect_float } && vect_bool_cmp } } } }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/warn/Wkeyword-macro-1.C gcc-16-20251116/gcc/testsuite/g++.dg/warn/Wkeyword-macro-1.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/warn/Wkeyword-macro-1.C	Sun Nov  9 22:33:05 2025
--- gcc-16-20251116/gcc/testsuite/g++.dg/warn/Wkeyword-macro-1.C	Sun Nov 16 22:33:22 2025
***************
*** 95,109 ****
  #define override 1			// { dg-error "keyword 'override' defined as macro" "" { target c++26 } }
  #define post 1
  #define pre 1
! #define replaceable_if_eligible 1	// { dg-error "keyword 'replaceable_if_eligible' defined as macro" "" { target c++26 } }
! #define trivially_relocatable_if_eligible 1	// { dg-error "keyword 'trivially_relocatable_if_eligible' defined as macro" "" { target c++26 } }
  
  // [dcl.attr]
  #define assume 1			// { dg-error "keyword 'assume' defined as macro" "" { target c++26 } }
  #define carries_dependency 1
  #define deprecated 1			// { dg-error "keyword 'deprecated' defined as macro" "" { target c++26 } }
  #define fallthrough 1			// { dg-error "keyword 'fallthrough' defined as macro" "" { target c++26 } }
! #define indeterminate 1
  #define likely 1			// { dg-error "keyword 'likely' defined as macro" "" { target c++26 } }
  #define maybe_unused 1			// { dg-error "keyword 'maybe_unused' defined as macro" "" { target c++26 } }
  #define nodiscard 1			// { dg-error "keyword 'nodiscard' defined as macro" "" { target c++26 } }
--- 95,109 ----
  #define override 1			// { dg-error "keyword 'override' defined as macro" "" { target c++26 } }
  #define post 1
  #define pre 1
! #define replaceable_if_eligible
! #define trivially_relocatable_if_eligible
  
  // [dcl.attr]
  #define assume 1			// { dg-error "keyword 'assume' defined as macro" "" { target c++26 } }
  #define carries_dependency 1
  #define deprecated 1			// { dg-error "keyword 'deprecated' defined as macro" "" { target c++26 } }
  #define fallthrough 1			// { dg-error "keyword 'fallthrough' defined as macro" "" { target c++26 } }
! #define indeterminate 1			// { dg-error "keyword 'indeterminate' defined as macro" "" { target c++26 } }
  #define likely 1			// { dg-error "keyword 'likely' defined as macro" "" { target c++26 } }
  #define maybe_unused 1			// { dg-error "keyword 'maybe_unused' defined as macro" "" { target c++26 } }
  #define nodiscard 1			// { dg-error "keyword 'nodiscard' defined as macro" "" { target c++26 } }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/warn/Wkeyword-macro-10.C gcc-16-20251116/gcc/testsuite/g++.dg/warn/Wkeyword-macro-10.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/warn/Wkeyword-macro-10.C	Sun Nov  9 22:33:05 2025
--- gcc-16-20251116/gcc/testsuite/g++.dg/warn/Wkeyword-macro-10.C	Sun Nov 16 22:33:22 2025
***************
*** 17,23 ****
  #undef inline				// { dg-warning "undefining keyword 'inline'" }
  #define inline __inline__ __attribute__((__always_inline__))	// { dg-warning "keyword 'inline' defined as macro" }
  #define likely(a) a
! #undef likely				// { dg-warning "undefining keyword 'likely'" "" { target c++20 } }
  #define unlikely(a, b, c) a + b + c
  #define unlikely(a, b, c) a + b + c
! #undef unlikely				// { dg-warning "undefining keyword 'unlikely'" "" { target c++20 } }
--- 17,23 ----
  #undef inline				// { dg-warning "undefining keyword 'inline'" }
  #define inline __inline__ __attribute__((__always_inline__))	// { dg-warning "keyword 'inline' defined as macro" }
  #define likely(a) a
! #undef likely
  #define unlikely(a, b, c) a + b + c
  #define unlikely(a, b, c) a + b + c
! #undef unlikely
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/warn/Wkeyword-macro-2.C gcc-16-20251116/gcc/testsuite/g++.dg/warn/Wkeyword-macro-2.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/warn/Wkeyword-macro-2.C	Sun Nov  9 22:33:05 2025
--- gcc-16-20251116/gcc/testsuite/g++.dg/warn/Wkeyword-macro-2.C	Sun Nov 16 22:33:22 2025
***************
*** 95,109 ****
  #define override 1			// { dg-warning "keyword 'override' defined as macro" "" { target c++26 } }
  #define post 1
  #define pre 1
! #define replaceable_if_eligible 1	// { dg-warning "keyword 'replaceable_if_eligible' defined as macro" "" { target c++26 } }
! #define trivially_relocatable_if_eligible 1	// { dg-warning "keyword 'trivially_relocatable_if_eligible' defined as macro" "" { target c++26 } }
  
  // [dcl.attr]
  #define assume 1			// { dg-warning "keyword 'assume' defined as macro" "" { target c++26 } }
  #define carries_dependency 1
  #define deprecated 1			// { dg-warning "keyword 'deprecated' defined as macro" "" { target c++26 } }
  #define fallthrough 1			// { dg-warning "keyword 'fallthrough' defined as macro" "" { target c++26 } }
! #define indeterminate 1
  #define likely 1			// { dg-warning "keyword 'likely' defined as macro" "" { target c++26 } }
  #define maybe_unused 1			// { dg-warning "keyword 'maybe_unused' defined as macro" "" { target c++26 } }
  #define nodiscard 1			// { dg-warning "keyword 'nodiscard' defined as macro" "" { target c++26 } }
--- 95,109 ----
  #define override 1			// { dg-warning "keyword 'override' defined as macro" "" { target c++26 } }
  #define post 1
  #define pre 1
! #define replaceable_if_eligible
! #define trivially_relocatable_if_eligible
  
  // [dcl.attr]
  #define assume 1			// { dg-warning "keyword 'assume' defined as macro" "" { target c++26 } }
  #define carries_dependency 1
  #define deprecated 1			// { dg-warning "keyword 'deprecated' defined as macro" "" { target c++26 } }
  #define fallthrough 1			// { dg-warning "keyword 'fallthrough' defined as macro" "" { target c++26 } }
! #define indeterminate 1			// { dg-warning "keyword 'indeterminate' defined as macro" "" { target c++26 } }
  #define likely 1			// { dg-warning "keyword 'likely' defined as macro" "" { target c++26 } }
  #define maybe_unused 1			// { dg-warning "keyword 'maybe_unused' defined as macro" "" { target c++26 } }
  #define nodiscard 1			// { dg-warning "keyword 'nodiscard' defined as macro" "" { target c++26 } }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/warn/Wkeyword-macro-4.C gcc-16-20251116/gcc/testsuite/g++.dg/warn/Wkeyword-macro-4.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/warn/Wkeyword-macro-4.C	Sun Nov  9 22:33:05 2025
--- gcc-16-20251116/gcc/testsuite/g++.dg/warn/Wkeyword-macro-4.C	Sun Nov 16 22:33:22 2025
***************
*** 95,112 ****
  #undef override 			// { dg-error "undefining keyword 'override'" "" { target c++26 } }
  #undef post
  #undef pre
! #undef replaceable_if_eligible 	// { dg-error "undefining keyword 'replaceable_if_eligible'" "" { target c++26 } }
! #undef trivially_relocatable_if_eligible 	// { dg-error "undefining keyword 'trivially_relocatable_if_eligible'" "" { target c++26 } }
  
  // [dcl.attr]
  #undef assume				// { dg-error "undefining keyword 'assume'" "" { target c++26 } }
  #undef carries_dependency
  #undef deprecated			// { dg-error "undefining keyword 'deprecated'" "" { target c++26 } }
  #undef fallthrough			// { dg-error "undefining keyword 'fallthrough'" "" { target c++26 } }
! #undef indeterminate
! #undef likely				// { dg-error "undefining keyword 'likely'" "" { target c++26 } }
  #undef maybe_unused			// { dg-error "undefining keyword 'maybe_unused'" "" { target c++26 } }
  #undef nodiscard			// { dg-error "undefining keyword 'nodiscard'" "" { target c++26 } }
  #undef noreturn				// { dg-error "undefining keyword 'noreturn'" "" { target c++26 } }
  #undef no_unique_address		// { dg-error "undefining keyword 'no_unique_address'" "" { target c++26 } }
! #undef unlikely				// { dg-error "undefining keyword 'unlikely'" "" { target c++26 } }
--- 95,112 ----
  #undef override 			// { dg-error "undefining keyword 'override'" "" { target c++26 } }
  #undef post
  #undef pre
! #undef replaceable_if_eligible
! #undef trivially_relocatable_if_eligible
  
  // [dcl.attr]
  #undef assume				// { dg-error "undefining keyword 'assume'" "" { target c++26 } }
  #undef carries_dependency
  #undef deprecated			// { dg-error "undefining keyword 'deprecated'" "" { target c++26 } }
  #undef fallthrough			// { dg-error "undefining keyword 'fallthrough'" "" { target c++26 } }
! #undef indeterminate			// { dg-error "undefining keyword 'indeterminate'" "" { target c++26 } }
! #undef likely
  #undef maybe_unused			// { dg-error "undefining keyword 'maybe_unused'" "" { target c++26 } }
  #undef nodiscard			// { dg-error "undefining keyword 'nodiscard'" "" { target c++26 } }
  #undef noreturn				// { dg-error "undefining keyword 'noreturn'" "" { target c++26 } }
  #undef no_unique_address		// { dg-error "undefining keyword 'no_unique_address'" "" { target c++26 } }
! #undef unlikely
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/warn/Wkeyword-macro-5.C gcc-16-20251116/gcc/testsuite/g++.dg/warn/Wkeyword-macro-5.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/warn/Wkeyword-macro-5.C	Sun Nov  9 22:33:05 2025
--- gcc-16-20251116/gcc/testsuite/g++.dg/warn/Wkeyword-macro-5.C	Sun Nov 16 22:33:22 2025
***************
*** 95,112 ****
  #undef override 			// { dg-warning "undefining keyword 'override'" "" { target c++26 } }
  #undef post
  #undef pre
! #undef replaceable_if_eligible 	// { dg-warning "undefining keyword 'replaceable_if_eligible'" "" { target c++26 } }
! #undef trivially_relocatable_if_eligible 	// { dg-warning "undefining keyword 'trivially_relocatable_if_eligible'" "" { target c++26 } }
  
  // [dcl.attr]
  #undef assume				// { dg-warning "undefining keyword 'assume'" "" { target c++26 } }
  #undef carries_dependency
  #undef deprecated			// { dg-warning "undefining keyword 'deprecated'" "" { target c++26 } }
  #undef fallthrough			// { dg-warning "undefining keyword 'fallthrough'" "" { target c++26 } }
! #undef indeterminate
! #undef likely				// { dg-warning "undefining keyword 'likely'" "" { target c++26 } }
  #undef maybe_unused			// { dg-warning "undefining keyword 'maybe_unused'" "" { target c++26 } }
  #undef nodiscard			// { dg-warning "undefining keyword 'nodiscard'" "" { target c++26 } }
  #undef noreturn				// { dg-warning "undefining keyword 'noreturn'" "" { target c++26 } }
  #undef no_unique_address		// { dg-warning "undefining keyword 'no_unique_address'" "" { target c++26 } }
! #undef unlikely				// { dg-warning "undefining keyword 'unlikely'" "" { target c++26 } }
--- 95,112 ----
  #undef override 			// { dg-warning "undefining keyword 'override'" "" { target c++26 } }
  #undef post
  #undef pre
! #undef replaceable_if_eligible
! #undef trivially_relocatable_if_eligible
  
  // [dcl.attr]
  #undef assume				// { dg-warning "undefining keyword 'assume'" "" { target c++26 } }
  #undef carries_dependency
  #undef deprecated			// { dg-warning "undefining keyword 'deprecated'" "" { target c++26 } }
  #undef fallthrough			// { dg-warning "undefining keyword 'fallthrough'" "" { target c++26 } }
! #undef indeterminate			// { dg-warning "undefining keyword 'indeterminate'" "" { target c++26 } }
! #undef likely
  #undef maybe_unused			// { dg-warning "undefining keyword 'maybe_unused'" "" { target c++26 } }
  #undef nodiscard			// { dg-warning "undefining keyword 'nodiscard'" "" { target c++26 } }
  #undef noreturn				// { dg-warning "undefining keyword 'noreturn'" "" { target c++26 } }
  #undef no_unique_address		// { dg-warning "undefining keyword 'no_unique_address'" "" { target c++26 } }
! #undef unlikely
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/warn/Wkeyword-macro-7.C gcc-16-20251116/gcc/testsuite/g++.dg/warn/Wkeyword-macro-7.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/warn/Wkeyword-macro-7.C	Sun Nov  9 22:33:05 2025
--- gcc-16-20251116/gcc/testsuite/g++.dg/warn/Wkeyword-macro-7.C	Sun Nov 16 22:33:22 2025
***************
*** 95,109 ****
  #define override 1			// { dg-warning "keyword 'override' defined as macro" "" { target c++11 } }
  #define post 1
  #define pre 1
! #define replaceable_if_eligible 1	// { dg-warning "keyword 'replaceable_if_eligible' defined as macro" "" { target c++26 } }
! #define trivially_relocatable_if_eligible 1	// { dg-warning "keyword 'trivially_relocatable_if_eligible' defined as macro" "" { target c++26 } }
  
  // [dcl.attr]
  #define assume 1			// { dg-warning "keyword 'assume' defined as macro" "" { target c++23 } }
  #define carries_dependency 1		// { dg-warning "keyword 'carries_dependency' defined as macro" "" { target { c++11 && c++23_down } } }
  #define deprecated 1			// { dg-warning "keyword 'deprecated' defined as macro" "" { target c++14 } }
  #define fallthrough 1			// { dg-warning "keyword 'fallthrough' defined as macro" "" { target c++17 } }
! #define indeterminate 1
  #define likely 1			// { dg-warning "keyword 'likely' defined as macro" "" { target c++20 } }
  #define maybe_unused 1			// { dg-warning "keyword 'maybe_unused' defined as macro" "" { target c++17 } }
  #define nodiscard 1			// { dg-warning "keyword 'nodiscard' defined as macro" "" { target c++17 } }
--- 95,109 ----
  #define override 1			// { dg-warning "keyword 'override' defined as macro" "" { target c++11 } }
  #define post 1
  #define pre 1
! #define replaceable_if_eligible
! #define trivially_relocatable_if_eligible
  
  // [dcl.attr]
  #define assume 1			// { dg-warning "keyword 'assume' defined as macro" "" { target c++23 } }
  #define carries_dependency 1		// { dg-warning "keyword 'carries_dependency' defined as macro" "" { target { c++11 && c++23_down } } }
  #define deprecated 1			// { dg-warning "keyword 'deprecated' defined as macro" "" { target c++14 } }
  #define fallthrough 1			// { dg-warning "keyword 'fallthrough' defined as macro" "" { target c++17 } }
! #define indeterminate 1			// { dg-warning "keyword 'indeterminate' defined as macro" "" { target c++26 } }
  #define likely 1			// { dg-warning "keyword 'likely' defined as macro" "" { target c++20 } }
  #define maybe_unused 1			// { dg-warning "keyword 'maybe_unused' defined as macro" "" { target c++17 } }
  #define nodiscard 1			// { dg-warning "keyword 'nodiscard' defined as macro" "" { target c++17 } }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/warn/Wkeyword-macro-8.C gcc-16-20251116/gcc/testsuite/g++.dg/warn/Wkeyword-macro-8.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/warn/Wkeyword-macro-8.C	Sun Nov  9 22:33:05 2025
--- gcc-16-20251116/gcc/testsuite/g++.dg/warn/Wkeyword-macro-8.C	Sun Nov 16 22:33:22 2025
***************
*** 95,112 ****
  #undef override				// { dg-warning "undefining keyword 'override'" "" { target c++11 } }
  #undef post
  #undef pre
! #undef replaceable_if_eligible		// { dg-warning "undefining keyword 'replaceable_if_eligible'" "" { target c++26 } }
! #undef trivially_relocatable_if_eligible	// { dg-warning "undefining keyword 'trivially_relocatable_if_eligible'" "" { target c++26 } }
  
  // [dcl.attr]
  #undef assume				// { dg-warning "undefining keyword 'assume'" "" { target c++23 } }
  #undef carries_dependency		// { dg-warning "undefining keyword 'carries_dependency'" "" { target { c++11 && c++23_down } } }
  #undef deprecated			// { dg-warning "undefining keyword 'deprecated'" "" { target c++14 } }
  #undef fallthrough			// { dg-warning "undefining keyword 'fallthrough'" "" { target c++17 } }
! #undef indeterminate
! #undef likely				// { dg-warning "undefining keyword 'likely'" "" { target c++20 } }
  #undef maybe_unused			// { dg-warning "undefining keyword 'maybe_unused'" "" { target c++17 } }
  #undef nodiscard			// { dg-warning "undefining keyword 'nodiscard'" "" { target c++17 } }
  #undef noreturn				// { dg-warning "undefining keyword 'noreturn'" "" { target c++11 } }
  #undef no_unique_address		// { dg-warning "undefining keyword 'no_unique_address'" "" { target c++20 } }
! #undef unlikely				// { dg-warning "undefining keyword 'unlikely'" "" { target c++20 } }
--- 95,112 ----
  #undef override				// { dg-warning "undefining keyword 'override'" "" { target c++11 } }
  #undef post
  #undef pre
! #undef replaceable_if_eligible
! #undef trivially_relocatable_if_eligible
  
  // [dcl.attr]
  #undef assume				// { dg-warning "undefining keyword 'assume'" "" { target c++23 } }
  #undef carries_dependency		// { dg-warning "undefining keyword 'carries_dependency'" "" { target { c++11 && c++23_down } } }
  #undef deprecated			// { dg-warning "undefining keyword 'deprecated'" "" { target c++14 } }
  #undef fallthrough			// { dg-warning "undefining keyword 'fallthrough'" "" { target c++17 } }
! #undef indeterminate			// { dg-warning "undefining keyword 'indeterminate'" "" { target c++26 } }
! #undef likely
  #undef maybe_unused			// { dg-warning "undefining keyword 'maybe_unused'" "" { target c++17 } }
  #undef nodiscard			// { dg-warning "undefining keyword 'nodiscard'" "" { target c++17 } }
  #undef noreturn				// { dg-warning "undefining keyword 'noreturn'" "" { target c++11 } }
  #undef no_unique_address		// { dg-warning "undefining keyword 'no_unique_address'" "" { target c++20 } }
! #undef unlikely
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.dg/warn/Wkeyword-macro-9.C gcc-16-20251116/gcc/testsuite/g++.dg/warn/Wkeyword-macro-9.C
*** gcc-16-20251109/gcc/testsuite/g++.dg/warn/Wkeyword-macro-9.C	Sun Nov  9 22:33:05 2025
--- gcc-16-20251116/gcc/testsuite/g++.dg/warn/Wkeyword-macro-9.C	Sun Nov 16 22:33:22 2025
***************
*** 17,22 ****
  #undef inline				// { dg-error "undefining keyword 'inline'" "" { target c++26 } }
  #define inline __inline__ __attribute__((__always_inline__))	// { dg-error "keyword 'inline' defined as macro" "" { target c++26 } }
  #define likely(a) a
! #undef likely				// { dg-error "undefining keyword 'likely'" "" { target c++26 } }
  #define unlikely(a, b, c) a + b + c
  #define unlikely(a, b, c) a + b + c
--- 17,22 ----
  #undef inline				// { dg-error "undefining keyword 'inline'" "" { target c++26 } }
  #define inline __inline__ __attribute__((__always_inline__))	// { dg-error "keyword 'inline' defined as macro" "" { target c++26 } }
  #define likely(a) a
! #undef likely
  #define unlikely(a, b, c) a + b + c
  #define unlikely(a, b, c) a + b + c
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_1.C gcc-16-20251116/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_1.C
*** gcc-16-20251109/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_1.C	Sun Nov  9 22:33:08 2025
--- gcc-16-20251116/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_1.C	Sun Nov 16 22:33:24 2025
***************
*** 5,13 ****
  typedef uint8_t gnu_uint8_t __attribute__ ((vector_size (32)));
  typedef int8_t gnu_int8_t __attribute__ ((vector_size (32)));
  
  void
! f (svuint8_t sve_u1, svint8_t sve_s1,
!    gnu_uint8_t gnu_u1, gnu_int8_t gnu_s1, int n, unsigned char uc)
  {
    // Initialization
  
--- 5,17 ----
  typedef uint8_t gnu_uint8_t __attribute__ ((vector_size (32)));
  typedef int8_t gnu_int8_t __attribute__ ((vector_size (32)));
  
+ typedef int32_t gnu128_int32_t __attribute__ ((vector_size (128)));
+ typedef int32_t gnu32_int32_t __attribute__ ((vector_size (32)));
+ 
  void
! f (svuint8_t sve_u1, svint8_t sve_s1, svbool_t sve_b1, svbool_t sve_b2,
!    gnu_uint8_t gnu_u1, gnu_int8_t gnu_s1, gnu128_int32_t gnu128_s1,
!    int n, unsigned char uc)
  {
    // Initialization
  
*************** f (svuint8_t sve_u1, svint8_t sve_s1,
*** 56,61 ****
--- 60,79 ----
    gnu_uint8_t init_gnu_u20 (sve_s1); // { dg-error {cannot convert 'svint8_t' to 'gnu_uint8_t'[^\n]* in initialization} }
    gnu_uint8_t init_gnu_u21 (gnu_s1); // { dg-error {cannot convert 'gnu_int8_t'[^\n]* to 'gnu_uint8_t'[^\n]* in initialization} }
  
+   // Boolean inits.
+   svbool_t init_sve_b1 = 0; // { dg-error {cannot convert 'int' to 'svbool_t'} }
+   svbool_t init_sve_b2 = {};
+   svbool_t init_sve_b3 = { sve_b1 };
+   svbool_t init_sve_b4 = { gnu_u1 }; // { dg-error {cannot convert 'gnu_uint8_t'[^\n]* to 'signed char:1'} }
+   svbool_t init_sve_b5 = { sve_s1 }; // { dg-error {cannot convert 'svint8_t' to 'signed char:1'} }
+   svbool_t init_sve_b6 = { gnu_s1 }; // { dg-error {cannot convert 'gnu_int8_t'[^\n]* to 'signed char:1'} }
+   svbool_t init_sve_b7 = { 0 };
+ 
+   svbool_t init_sve_b8 = { sve_u1, sve_u1 }; // { dg-error {cannot convert 'svuint8_t' to 'signed char:1'} }
+   svbool_t init_sve_b9 = { gnu_u1, gnu_u1 }; // { dg-error {cannot convert 'gnu_uint8_t'[^\n]* to 'signed char:1'} }
+   init_gnu_u8 = { sve_b1 }; // { dg-error {cannot convert '<brace-enclosed initializer list>' to 'gnu_uint8_t'[^\n]*} }
+   init_gnu_u8 = { sve_b1, sve_b1 }; // { dg-error {cannot convert '<brace-enclosed initializer list>' to 'gnu_uint8_t'[^\n]*} }
+ 
    // Compound literals
  
    (svuint8_t) {};
*************** f (svuint8_t sve_u1, svint8_t sve_s1,
*** 76,81 ****
--- 94,110 ----
    (gnu_uint8_t) { sve_u1, sve_u1 }; // { dg-error {cannot convert 'svuint8_t' to 'unsigned char' in initialization} }
    (gnu_uint8_t) { gnu_u1, gnu_u1 }; // { dg-error {cannot convert 'gnu_uint8_t'[^\n]* to 'unsigned char' in initialization} }
  
+   // Boolean compound literals.
+ 
+   (svbool_t) {};
+   (svbool_t) { 0 };
+   (svbool_t) { sve_b1 };
+   (svbool_t) { gnu_u1 }; // { dg-error {cannot convert 'gnu_uint8_t'[^\n]* to 'signed char:1'} }
+   (svbool_t) { sve_s1 }; // { dg-error {cannot convert 'svint8_t' to 'signed char:1'} }
+   (svbool_t) { sve_u1 }; // { dg-error {cannot convert 'svuint8_t' to 'signed char:1'} }
+   (svbool_t) { gnu_s1 }; // { dg-error {cannot convert 'gnu_int8_t'[^\n]* to 'signed char:1'} }
+   (gnu_uint8_t) { sve_b1 }; // { dg-error {cannot convert 'svbool_t' to 'unsigned char'} }
+ 
    // Assignment
  
    sve_u1 = 0; // { dg-error {cannot convert 'int' to 'svuint8_t' in assignment} }
*************** f (svuint8_t sve_u1, svint8_t sve_s1,
*** 90,95 ****
--- 119,132 ----
    gnu_u1 = sve_s1; // { dg-error {cannot convert 'svint8_t' to 'gnu_uint8_t'[^\n]* in assignment} }
    gnu_u1 = gnu_s1; // { dg-error {cannot convert 'gnu_int8_t'[^\n]* to 'gnu_uint8_t'[^\n]* in assignment} }
  
+   // Boolean Assignments.
+ 
+   sve_b1 = 0; // { dg-error {cannot convert 'int' to 'svbool_t'} }
+   sve_b1 = sve_b1;
+   sve_b1 = sve_s1; // { dg-error {cannot convert 'svint8_t' to 'svbool_t'} }
+   sve_b1 = gnu_s1; // { dg-error {cannot convert 'gnu_int8_t'[^\n]* to 'svbool_t'} }
+   gnu_u1 = sve_b1; // { dg-error {cannot convert 'svbool_t' to 'gnu_uint8_t'} }
+ 
    // Casts
  
    (void) sve_u1;
*************** f (svuint8_t sve_u1, svint8_t sve_s1,
*** 112,117 ****
--- 149,165 ----
    (gnu_uint8_t) sve_s1;
    (gnu_uint8_t) gnu_s1;
  
+   // Boolean casts.
+   (void) sve_b1;
+   (svbool_t) sve_b1;
+   (svbool_t) gnu_u1; // { dg-error {cannot convert a value of type 'gnu_uint8_t'[^\n]* to vector type 'svbool_t' which has different size} }
+   (svbool_t) sve_u1; // { dg-error {cannot convert a value of type 'svuint8_t' to vector type 'svbool_t' which has different size} }
+   (svbool_t) 0;
+   (svbool_t) n;
+   (svint8_t) sve_b1; // { dg-error {cannot convert a value of type 'svbool_t' to vector type 'svint8_t' which has different size} }
+   (gnu_uint8_t) sve_b1; // { dg-error {cannot convert a value of type 'svbool_t' to vector type 'gnu_uint8_t'[^\n]* which has different size} }
+   (gnu_int8_t) sve_b1; // { dg-error {cannot convert a value of type 'svbool_t' to vector type 'gnu_int8_t'[^\n]* which has different size} }
+ 
    // Vector indexing.
  
    sve_u1[0];
*************** f (svuint8_t sve_u1, svint8_t sve_s1,
*** 147,152 ****
--- 195,214 ----
    gnu_u1++;
    gnu_u1--;
  
+   // Boolean unary ops.
+ 
+   +sve_b1;
+   -sve_b1; // { dg-error {negation operation not permitted} }
+   ~sve_b1;
+   !sve_b1;
+   *sve_b1; // { dg-error {invalid type argument of unary '\*'} }
+   __real sve_b1; // { dg-error {wrong type argument to __real} }
+   __imag sve_b1; // { dg-error {wrong type argument to __imag} }
+   ++sve_b1; // { dg-error {not permitted} }
+   --sve_b1; // { dg-error {not permitted} }
+   sve_b1++; // { dg-error {not permitted} }
+   sve_b1--; // { dg-error {not permitted} }
+ 
    // Vector-vector binary arithmetic.
  
    sve_u1 + sve_u1;
*************** f (svuint8_t sve_u1, svint8_t sve_s1,
*** 169,174 ****
--- 231,257 ----
    sve_u1 && sve_u1;
    sve_u1 || sve_u1;
  
+   // Boolean vector-vector binary arithmetic.
+ 
+   sve_b1 + sve_b1; // { dg-error {not permitted} }
+   sve_b1 - sve_b1; // { dg-error {not permitted} }
+   sve_b1 * sve_b1; // { dg-error {not permitted} }
+   sve_b1 / sve_b1; // { dg-error {not permitted} }
+   sve_b1 % sve_b1; // { dg-error {invalid operands} }
+   sve_b1 & sve_b1;
+   sve_b1 | sve_b1;
+   sve_b1 ^ sve_b1;
+   sve_b1 == sve_b1;
+   sve_b1 != sve_b1;
+   sve_b1 <= sve_b1; // { dg-error {only == and != operations permitted} }
+   sve_b1 < sve_b1;  // { dg-error {only == and != operations permitted} }
+   sve_b1 > sve_b1;  // { dg-error {only == and != operations permitted} }
+   sve_b1 >= sve_b1; // { dg-error {only == and != operations permitted} }
+   sve_b1 << sve_b1; // { dg-error {not permitted} }
+   sve_b1 >> sve_b1; // { dg-error {not permitted} }
+   sve_b1 && sve_b1;
+   sve_b1 || sve_b1;
+ 
    sve_u1 + gnu_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} }
    sve_u1 - gnu_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} }
    sve_u1 * gnu_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} }
*************** f (svuint8_t sve_u1, svint8_t sve_s1,
*** 456,461 ****
--- 539,563 ----
    gnu_u1 ? gnu_u1 : uc;
    gnu_u1 ? uc : gnu_u1;
  
+   // Boolean conditional expressions.
+ 
+   uc ? sve_b1 : sve_b2;
+   sve_b1 ? sve_b1 : sve_b2;
+ 
+   sve_b1 ? sve_u1 : sve_u1; // { dg-error {incompatible vector types in conditional expression} }
+   sve_b1 ? sve_s1 : sve_s1; // { dg-error {incompatible vector types in conditional expression} }
+   sve_b1 ? gnu_u1 : sve_u1; // { dg-error {incompatible vector types in conditional expression} }
+   sve_b1 ? sve_u1 : gnu_u1; // { dg-error {incompatible vector types in conditional expression} }
+   sve_b1 ? gnu_u1 : gnu_u1; // { dg-error {incompatible vector types in conditional expression} }
+   sve_b1 ? gnu_s1 : gnu_s1; // { dg-error {incompatible vector types in conditional expression} }
+ 
+   sve_u1 ? sve_b1 : sve_b2; // { dg-error {incompatible vector types in conditional expression} }
+   sve_s1 ? sve_b1 : sve_b2; // { dg-error {incompatible vector types in conditional expression} }
+   gnu_u1 ? sve_b1 : sve_b2; // { dg-error {incompatible vector types in conditional expression} }
+   gnu_s1 ? sve_b1 : sve_b2; // { dg-error {incompatible vector types in conditional expression} }
+   gnu_u1 ? gnu_u1 : sve_b1; // { dg-error {incompatible vector types in conditional expression} }
+   gnu_u1 ? sve_b1 : gnu_u1; // { dg-error {incompatible vector types in conditional expression} }
+ 
    // Vector built-ins.
  
    __builtin_shuffle (sve_u1, sve_u1, sve_u1);
*************** f (svuint8_t sve_u1, svint8_t sve_s1,
*** 469,474 ****
--- 571,603 ----
    __builtin_convertvector (sve_u1, gnu_uint8_t);
    __builtin_convertvector (gnu_u1, gnu_uint8_t);
  
+   // Boolean vector built-ins.
+ 
+   __builtin_shuffle (sve_b1, sve_b1, sve_s1);
+   __builtin_shuffle (sve_b1, sve_b1, sve_u1);
+   __builtin_shuffle (sve_b1, sve_b1, gnu_s1);
+   __builtin_shuffle (sve_b1, sve_b1, gnu_u1);
+ 
+   __builtin_shuffle (sve_b1, gnu_u1, gnu_u1); // { dg-error {'__builtin_shuffle' argument vectors must be of the same type} }
+   __builtin_shuffle (gnu_u1, sve_b1, gnu_u1); // { dg-error {'__builtin_shuffle' argument vectors must be of the same type} }
+ 
+   __builtin_convertvector (sve_b1, svint8_t);
+   __builtin_convertvector (sve_b1, svuint8_t);
+   __builtin_convertvector (sve_b1, gnu_int8_t);
+   __builtin_convertvector (sve_b1, gnu_uint8_t);
+ 
+   __builtin_convertvector (sve_s1, svbool_t);
+   __builtin_convertvector (gnu_s1, svbool_t);
+   __builtin_convertvector (sve_u1, svbool_t);
+   __builtin_convertvector (gnu_u1, svbool_t);
+ 
+   __builtin_convertvector (sve_b1, svint32_t); /* { dg-error {'__builtin_convertvector' number of elements of the first argument vector and the second argument vector type should be the same} } */
+   __builtin_convertvector (sve_b1, svuint32_t); /* { dg-error {'__builtin_convertvector' number of elements of the first argument vector and the second argument vector type should be the same} } */
+   __builtin_convertvector (sve_b1, gnu32_int32_t); /* { dg-error {'__builtin_convertvector' number of elements of the first argument vector and the second argument vector type should be the same} } */
+ 
+   __builtin_convertvector (sve_b1, gnu128_int32_t);
+   __builtin_convertvector (gnu128_s1, svbool_t);
+ 
    // Type queries.
  
    static_assert(__is_literal_type(svuint8_t));
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_2.C gcc-16-20251116/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_2.C
*** gcc-16-20251109/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_2.C	Sun Nov  9 22:33:08 2025
--- gcc-16-20251116/gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/gnu_vectors_2.C	Sun Nov 16 22:33:24 2025
***************
*** 5,13 ****
  typedef uint8_t gnu_uint8_t __attribute__ ((vector_size (32)));
  typedef int8_t gnu_int8_t __attribute__ ((vector_size (32)));
  
  void
! f (svuint8_t sve_u1, svint8_t sve_s1,
!    gnu_uint8_t gnu_u1, gnu_int8_t gnu_s1, int n, unsigned char uc)
  {
    // Initialization
  
--- 5,17 ----
  typedef uint8_t gnu_uint8_t __attribute__ ((vector_size (32)));
  typedef int8_t gnu_int8_t __attribute__ ((vector_size (32)));
  
+ typedef int32_t gnu128_int32_t __attribute__ ((vector_size (128)));
+ typedef int32_t gnu32_int32_t __attribute__ ((vector_size (32)));
+ 
  void
! f (svuint8_t sve_u1, svint8_t sve_s1, svbool_t sve_b1, svbool_t sve_b2,
!    gnu_uint8_t gnu_u1, gnu_int8_t gnu_s1, gnu128_int32_t gnu128_s1, 
!    int n, unsigned char uc)
  {
    // Initialization
  
*************** f (svuint8_t sve_u1, svint8_t sve_s1,
*** 56,61 ****
--- 60,79 ----
    gnu_uint8_t init_gnu_u20 (sve_s1);
    gnu_uint8_t init_gnu_u21 (gnu_s1);
  
+   // Boolean inits.
+   svbool_t init_sve_b1 = 0; // { dg-error {cannot convert 'int' to 'svbool_t'} }
+   svbool_t init_sve_b2 = {};
+   svbool_t init_sve_b3 = { sve_b1 };
+   svbool_t init_sve_b4 = { gnu_u1 }; // { dg-error {cannot convert 'gnu_uint8_t'[^\n]* to 'signed char:1'} }
+   svbool_t init_sve_b5 = { sve_s1 }; // { dg-error {cannot convert 'svint8_t' to 'signed char:1'} }
+   svbool_t init_sve_b6 = { gnu_s1 }; // { dg-error {cannot convert 'gnu_int8_t'[^\n]* to 'signed char:1'} }
+   svbool_t init_sve_b7 = { 0 };
+ 
+   svbool_t init_sve_b8 = { sve_u1, sve_u1 }; // { dg-error {cannot convert 'svuint8_t' to 'signed char:1'} }
+   svbool_t init_sve_b9 = { gnu_u1, gnu_u1 }; // { dg-error {cannot convert 'gnu_uint8_t'[^\n]* to 'signed char:1'} }
+   init_gnu_u8 = { sve_b1 }; // { dg-error {cannot convert '<brace-enclosed initializer list>' to 'gnu_uint8_t'[^\n]*} }
+   init_gnu_u8 = { sve_b1, sve_b1 }; // { dg-error {cannot convert '<brace-enclosed initializer list>' to 'gnu_uint8_t'[^\n]*} }
+ 
    // Compound literals
  
    (svuint8_t) {};
*************** f (svuint8_t sve_u1, svint8_t sve_s1,
*** 76,81 ****
--- 94,110 ----
    (gnu_uint8_t) { sve_u1, sve_u1 }; // { dg-error {cannot convert 'svuint8_t' to 'unsigned char' in initialization} }
    (gnu_uint8_t) { gnu_u1, gnu_u1 }; // { dg-error {cannot convert 'gnu_uint8_t'[^\n]* to 'unsigned char' in initialization} }
  
+   // Boolean compound literals.
+ 
+   (svbool_t) {};
+   (svbool_t) { 0 };
+   (svbool_t) { sve_b1 };
+   (svbool_t) { gnu_u1 }; // { dg-error {cannot convert 'gnu_uint8_t'[^\n]* to 'signed char:1'} }
+   (svbool_t) { sve_s1 }; // { dg-error {cannot convert 'svint8_t' to 'signed char:1'} }
+   (svbool_t) { sve_u1 }; // { dg-error {cannot convert 'svuint8_t' to 'signed char:1'} }
+   (svbool_t) { gnu_s1 }; // { dg-error {cannot convert 'gnu_int8_t'[^\n]* to 'signed char:1'} }
+   (gnu_uint8_t) { sve_b1 }; // { dg-error {cannot convert 'svbool_t' to 'unsigned char'} }
+ 
    // Assignment
  
    sve_u1 = 0; // { dg-error {cannot convert 'int' to 'svuint8_t' in assignment} }
*************** f (svuint8_t sve_u1, svint8_t sve_s1,
*** 90,95 ****
--- 119,132 ----
    gnu_u1 = sve_s1;
    gnu_u1 = gnu_s1;
  
+   // Boolean Assignments.
+ 
+   sve_b1 = 0; // { dg-error {cannot convert 'int' to 'svbool_t'} }
+   sve_b1 = sve_b1;
+   sve_b1 = sve_s1; // { dg-error {cannot convert 'svint8_t' to 'svbool_t'} }
+   sve_b1 = gnu_s1; // { dg-error {cannot convert 'gnu_int8_t'[^\n]* to 'svbool_t'} }
+   gnu_u1 = sve_b1; // { dg-error {cannot convert 'svbool_t' to 'gnu_uint8_t'} }
+ 
    // Casts
  
    (void) sve_u1;
*************** f (svuint8_t sve_u1, svint8_t sve_s1,
*** 112,117 ****
--- 149,165 ----
    (gnu_uint8_t) sve_s1;
    (gnu_uint8_t) gnu_s1;
  
+   // Boolean casts.
+   (void) sve_b1;
+   (svbool_t) sve_b1;
+   (svbool_t) gnu_u1; // { dg-error {cannot convert a value of type 'gnu_uint8_t'[^\n]* to vector type 'svbool_t' which has different size} }
+   (svbool_t) sve_u1; // { dg-error {cannot convert a value of type 'svuint8_t' to vector type 'svbool_t' which has different size} }
+   (svbool_t) 0;
+   (svbool_t) n;
+   (svint8_t) sve_b1; // { dg-error {cannot convert a value of type 'svbool_t' to vector type 'svint8_t' which has different size} }
+   (gnu_uint8_t) sve_b1; // { dg-error {cannot convert a value of type 'svbool_t' to vector type 'gnu_uint8_t'[^\n]* which has different size} }
+   (gnu_int8_t) sve_b1; // { dg-error {cannot convert a value of type 'svbool_t' to vector type 'gnu_int8_t'[^\n]* which has different size} }
+ 
    // Vector indexing.
  
    sve_u1[0];
*************** f (svuint8_t sve_u1, svint8_t sve_s1,
*** 147,152 ****
--- 195,214 ----
    gnu_u1++;
    gnu_u1--;
  
+   // Boolean unary ops.
+ 
+   +sve_b1;
+   -sve_b1; // { dg-error {negation operation not permitted} }
+   ~sve_b1;
+   !sve_b1;
+   *sve_b1; // { dg-error {invalid type argument of unary '\*'} }
+   __real sve_b1; // { dg-error {wrong type argument to __real} }
+   __imag sve_b1; // { dg-error {wrong type argument to __imag} }
+   ++sve_b1; // { dg-error {not permitted} }
+   --sve_b1; // { dg-error {not permitted} }
+   sve_b1++; // { dg-error {not permitted} }
+   sve_b1--; // { dg-error {not permitted} }
+ 
    // Vector-vector binary arithmetic.
  
    sve_u1 + sve_u1;
*************** f (svuint8_t sve_u1, svint8_t sve_s1,
*** 169,174 ****
--- 231,257 ----
    sve_u1 && sve_u1;
    sve_u1 || sve_u1;
  
+   // Boolean vector-vector binary arithmetic.
+ 
+   sve_b1 + sve_b1; // { dg-error {not permitted} }
+   sve_b1 - sve_b1; // { dg-error {not permitted} }
+   sve_b1 * sve_b1; // { dg-error {not permitted} }
+   sve_b1 / sve_b1; // { dg-error {not permitted} }
+   sve_b1 % sve_b1; // { dg-error {invalid operands} }
+   sve_b1 & sve_b1;
+   sve_b1 | sve_b1;
+   sve_b1 ^ sve_b1;
+   sve_b1 == sve_b1;
+   sve_b1 != sve_b1;
+   sve_b1 <= sve_b1; // { dg-error {only == and != operations permitted} }
+   sve_b1 < sve_b1;  // { dg-error {only == and != operations permitted} }
+   sve_b1 > sve_b1;  // { dg-error {only == and != operations permitted} }
+   sve_b1 >= sve_b1; // { dg-error {only == and != operations permitted} }
+   sve_b1 << sve_b1; // { dg-error {not permitted} }
+   sve_b1 >> sve_b1; // { dg-error {not permitted} }
+   sve_b1 && sve_b1;
+   sve_b1 || sve_b1;
+ 
    sve_u1 + gnu_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} }
    sve_u1 - gnu_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} }
    sve_u1 * gnu_u1; // { dg-error {cannot combine GNU and SVE vectors in a binary operation} }
*************** f (svuint8_t sve_u1, svint8_t sve_s1,
*** 456,461 ****
--- 539,563 ----
    gnu_u1 ? gnu_u1 : uc;
    gnu_u1 ? uc : gnu_u1;
  
+   // Boolean conditional expressions.
+ 
+   uc ? sve_b1 : sve_b2;
+   sve_b1 ? sve_b1 : sve_b2;
+ 
+   sve_b1 ? sve_u1 : sve_u1; // { dg-error {incompatible vector types in conditional expression} }
+   sve_b1 ? sve_s1 : sve_s1; // { dg-error {incompatible vector types in conditional expression} }
+   sve_b1 ? gnu_u1 : sve_u1; // { dg-error {incompatible vector types in conditional expression} }
+   sve_b1 ? sve_u1 : gnu_u1; // { dg-error {incompatible vector types in conditional expression} }
+   sve_b1 ? gnu_u1 : gnu_u1; // { dg-error {incompatible vector types in conditional expression} }
+   sve_b1 ? gnu_s1 : gnu_s1; // { dg-error {incompatible vector types in conditional expression} }
+ 
+   sve_u1 ? sve_b1 : sve_b2; // { dg-error {incompatible vector types in conditional expression} }
+   sve_s1 ? sve_b1 : sve_b2; // { dg-error {incompatible vector types in conditional expression} }
+   gnu_u1 ? sve_b1 : sve_b2; // { dg-error {incompatible vector types in conditional expression} }
+   gnu_s1 ? sve_b1 : sve_b2; // { dg-error {incompatible vector types in conditional expression} }
+   gnu_u1 ? gnu_u1 : sve_b1; // { dg-error {incompatible vector types in conditional expression} }
+   gnu_u1 ? sve_b1 : gnu_u1; // { dg-error {incompatible vector types in conditional expression} }
+ 
    // Vector built-ins.
  
    __builtin_shuffle (sve_u1, sve_u1, sve_u1);
*************** f (svuint8_t sve_u1, svint8_t sve_s1,
*** 469,474 ****
--- 571,603 ----
    __builtin_convertvector (sve_u1, gnu_uint8_t);
    __builtin_convertvector (gnu_u1, gnu_uint8_t);
  
+   // Boolean vector built-ins.
+ 
+   __builtin_shuffle (sve_b1, sve_b1, sve_s1);
+   __builtin_shuffle (sve_b1, sve_b1, sve_u1);
+   __builtin_shuffle (sve_b1, sve_b1, gnu_s1);
+   __builtin_shuffle (sve_b1, sve_b1, gnu_u1);
+ 
+   __builtin_shuffle (sve_b1, gnu_u1, gnu_u1); // { dg-error {'__builtin_shuffle' argument vectors must be of the same type} }
+   __builtin_shuffle (gnu_u1, sve_b1, gnu_u1); // { dg-error {'__builtin_shuffle' argument vectors must be of the same type} }
+ 
+   __builtin_convertvector (sve_b1, svint8_t);
+   __builtin_convertvector (sve_b1, svuint8_t);
+   __builtin_convertvector (sve_b1, gnu_int8_t);
+   __builtin_convertvector (sve_b1, gnu_uint8_t);
+ 
+   __builtin_convertvector (sve_s1, svbool_t);
+   __builtin_convertvector (gnu_s1, svbool_t);
+   __builtin_convertvector (sve_u1, svbool_t);
+   __builtin_convertvector (gnu_u1, svbool_t);
+ 
+   __builtin_convertvector (sve_b1, svint32_t); /* { dg-error {'__builtin_convertvector' number of elements of the first argument vector and the second argument vector type should be the same} } */
+   __builtin_convertvector (sve_b1, svuint32_t); /* { dg-error {'__builtin_convertvector' number of elements of the first argument vector and the second argument vector type should be the same} } */
+   __builtin_convertvector (sve_b1, gnu32_int32_t); /* { dg-error {'__builtin_convertvector' number of elements of the first argument vector and the second argument vector type should be the same} } */
+ 
+   __builtin_convertvector (sve_b1, gnu128_int32_t);
+   __builtin_convertvector (gnu128_s1, svbool_t);
+ 
    // Type queries.
  
    static_assert(__is_literal_type(svuint8_t));
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.target/i386/pr122446-1.C gcc-16-20251116/gcc/testsuite/g++.target/i386/pr122446-1.C
*** gcc-16-20251109/gcc/testsuite/g++.target/i386/pr122446-1.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/g++.target/i386/pr122446-1.C	Sun Nov 16 22:33:24 2025
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-mamx-tile -mamx-int8 -O0" } */
+ /* { dg-final { scan-assembler "tdpbssd\[ \\t]+\[^\n\]*%tmm2+\[^\n\]*%tmm1+\[^\n\]*%tmm0" } } */
+ 
+ #include <immintrin.h>
+ 
+ template <int hello, int crazy, int gcc>
+ struct dpbssd
+ {
+   void operator()() { _tile_dpbssd(hello, crazy, gcc); }
+ };
+ 
+ void f()
+ {
+   dpbssd<0, 1, 2>()();
+ }
+ 
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.target/i386/pr122446-amxavx512.C gcc-16-20251116/gcc/testsuite/g++.target/i386/pr122446-amxavx512.C
*** gcc-16-20251109/gcc/testsuite/g++.target/i386/pr122446-amxavx512.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/g++.target/i386/pr122446-amxavx512.C	Sun Nov 16 22:33:24 2025
***************
*** 0 ****
--- 1,104 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-mamx-tile -mamx-avx512 -O0" } */
+ /* { dg-final { scan-assembler "tcvtrowd2ps\[ \\t]+%e.x,\[ \\t\]*%tmm1,\[ \\t\]*%zmm\[0-9\]+" } } */
+ /* { dg-final { scan-assembler "tcvtrowd2ps\[ \\t]+\\\$5,\[ \\t\]*%tmm2,\[ \\t\]*%zmm\[0-9\]+" } } */
+ /* { dg-final { scan-assembler "tcvtrowps2bf16h\[ \\t]+%e.x,\[ \\t\]*%tmm1,\[ \\t\]*%zmm\[0-9\]+" } } */
+ /* { dg-final { scan-assembler "tcvtrowps2bf16h\[ \\t]+\\\$7,\[ \\t\]*%tmm3,\[ \\t\]*%zmm\[0-9\]+" } } */
+ /* { dg-final { scan-assembler "tcvtrowps2bf16l\[ \\t]+%e.x,\[ \\t\]*%tmm2,\[ \\t\]*%zmm\[0-9\]+" } } */
+ /* { dg-final { scan-assembler "tcvtrowps2bf16l\[ \\t]+\\\$3,\[ \\t\]*%tmm4,\[ \\t\]*%zmm\[0-9\]+" } } */
+ /* { dg-final { scan-assembler "tcvtrowps2phh\[ \\t]+%e.x,\[ \\t\]*%tmm1,\[ \\t\]*%zmm\[0-9\]+" } } */
+ /* { dg-final { scan-assembler "tcvtrowps2phh\[ \\t]+\\\$6,\[ \\t\]*%tmm2,\[ \\t\]*%zmm\[0-9\]+" } } */
+ /* { dg-final { scan-assembler "tcvtrowps2phl\[ \\t]+%e.x,\[ \\t\]*%tmm3,\[ \\t\]*%zmm\[0-9\]+" } } */
+ /* { dg-final { scan-assembler "tcvtrowps2phl\[ \\t]+\\\$2,\[ \\t\]*%tmm4,\[ \\t\]*%zmm\[0-9\]+" } } */
+ /* { dg-final { scan-assembler "tilemovrow\[ \\t]+%e.x,\[ \\t\]*%tmm5,\[ \\t\]*%zmm\[0-9\]+" } } */
+ /* { dg-final { scan-assembler "tilemovrow\[ \\t]+\\\$4,\[ \\t\]*%tmm6,\[ \\t\]*%zmm\[0-9\]+" } } */
+ 
+ #include <immintrin.h>
+ 
+ template <int tmm_num>
+ struct tile_cvtrowd2ps_test
+ {
+   __m512 operator()() { return _tile_cvtrowd2ps(tmm_num, 0); }
+ };
+ 
+ template <int tmm_num, int imm>
+ struct tile_cvtrowd2psi_test
+ {
+   __m512 operator()() { return _tile_cvtrowd2psi(tmm_num, imm); }
+ };
+ 
+ template <int tmm_num>
+ struct tile_cvtrowps2bf16h_test
+ {
+   __m512bh operator()() { return _tile_cvtrowps2bf16h(tmm_num, 0); }
+ };
+ 
+ template <int tmm_num, int imm>
+ struct tile_cvtrowps2bf16hi_test
+ {
+   __m512bh operator()() { return _tile_cvtrowps2bf16hi(tmm_num, imm); }
+ };
+ 
+ template <int tmm_num>
+ struct tile_cvtrowps2bf16l_test
+ {
+   __m512bh operator()() { return _tile_cvtrowps2bf16l(tmm_num, 0); }
+ };
+ 
+ template <int tmm_num, int imm>
+ struct tile_cvtrowps2bf16li_test
+ {
+   __m512bh operator()() { return _tile_cvtrowps2bf16li(tmm_num, imm); }
+ };
+ 
+ template <int tmm_num>
+ struct tile_cvtrowps2phh_test
+ {
+   __m512h operator()() { return _tile_cvtrowps2phh(tmm_num, 0); }
+ };
+ 
+ template <int tmm_num, int imm>
+ struct tile_cvtrowps2phhi_test
+ {
+   __m512h operator()() { return _tile_cvtrowps2phhi(tmm_num, imm); }
+ };
+ 
+ template <int tmm_num>
+ struct tile_cvtrowps2phl_test
+ {
+   __m512h operator()() { return _tile_cvtrowps2phl(tmm_num, 0); }
+ };
+ 
+ template <int tmm_num, int imm>
+ struct tile_cvtrowps2phli_test
+ {
+   __m512h operator()() { return _tile_cvtrowps2phli(tmm_num, imm); }
+ };
+ 
+ template <int tmm_num>
+ struct tile_movrow_test
+ {
+   __m512 operator()() { return _tile_movrow(tmm_num, 0); }
+ };
+ 
+ template <int tmm_num, int imm>
+ struct tile_movrowi_test
+ {
+   __m512 operator()() { return _tile_movrowi(tmm_num, imm); }
+ };
+ 
+ void test_amx_avx512()
+ {
+   __m512 r1 = tile_cvtrowd2ps_test<1>()();
+   __m512 r2 = tile_cvtrowd2psi_test<2, 5>()();
+   __m512bh r3 = tile_cvtrowps2bf16h_test<1>()();
+   __m512bh r4 = tile_cvtrowps2bf16hi_test<3, 7>()();
+   __m512bh r5 = tile_cvtrowps2bf16l_test<2>()();
+   __m512bh r6 = tile_cvtrowps2bf16li_test<4, 3>()();
+   __m512h r7 = tile_cvtrowps2phh_test<1>()();
+   __m512h r8 = tile_cvtrowps2phhi_test<2, 6>()();
+   __m512h r9 = tile_cvtrowps2phl_test<3>()();
+   __m512h r10 = tile_cvtrowps2phli_test<4, 2>()();
+   __m512 r11 = tile_movrow_test<5>()();
+   __m512 r12 = tile_movrowi_test<6, 4>()();
+ }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.target/i386/pr122446-amxbf16.C gcc-16-20251116/gcc/testsuite/g++.target/i386/pr122446-amxbf16.C
*** gcc-16-20251109/gcc/testsuite/g++.target/i386/pr122446-amxbf16.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/g++.target/i386/pr122446-amxbf16.C	Sun Nov 16 22:33:24 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-mamx-tile -mamx-bf16 -O0" } */
+ /* { dg-final { scan-assembler "tdpbf16ps\[ \\t]+%tmm2,\[ \\t\]*%tmm1,\[ \\t\]*%tmm0" } } */
+ 
+ #include <immintrin.h>
+ 
+ template <int dst, int src1, int src2>
+ struct dpbf16ps
+ {
+   void operator()() { _tile_dpbf16ps(dst, src1, src2); }
+ };
+ 
+ void test_amx_bf16()
+ {
+   dpbf16ps<0, 1, 2>()();
+ }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.target/i386/pr122446-amxcomplex.C gcc-16-20251116/gcc/testsuite/g++.target/i386/pr122446-amxcomplex.C
*** gcc-16-20251109/gcc/testsuite/g++.target/i386/pr122446-amxcomplex.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/g++.target/i386/pr122446-amxcomplex.C	Sun Nov 16 22:33:24 2025
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-mamx-tile -mamx-complex -O0" } */
+ /* { dg-final { scan-assembler "tcmmimfp16ps\[ \\t]+%tmm2,\[ \\t\]*%tmm1,\[ \\t\]*%tmm0" } } */
+ /* { dg-final { scan-assembler "tcmmrlfp16ps\[ \\t]+%tmm5,\[ \\t\]*%tmm4,\[ \\t\]*%tmm3" } } */
+ 
+ #include <immintrin.h>
+ 
+ template <int dst, int src1, int src2>
+ struct cmmimfp16ps
+ {
+   void operator()() { _tile_cmmimfp16ps(dst, src1, src2); }
+ };
+ 
+ template <int dst, int src1, int src2>
+ struct cmmrlfp16ps
+ {
+   void operator()() { _tile_cmmrlfp16ps(dst, src1, src2); }
+ };
+ 
+ void test_amx_complex()
+ {
+   cmmimfp16ps<0, 1, 2>()();
+   cmmrlfp16ps<3, 4, 5>()();
+ }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.target/i386/pr122446-amxfp16.C gcc-16-20251116/gcc/testsuite/g++.target/i386/pr122446-amxfp16.C
*** gcc-16-20251109/gcc/testsuite/g++.target/i386/pr122446-amxfp16.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/g++.target/i386/pr122446-amxfp16.C	Sun Nov 16 22:33:24 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-mamx-tile -mamx-fp16 -O0" } */
+ /* { dg-final { scan-assembler "tdpfp16ps\[ \\t]+%tmm2,\[ \\t\]*%tmm1,\[ \\t\]*%tmm0" } } */
+ 
+ #include <immintrin.h>
+ 
+ template <int dst, int src1, int src2>
+ struct dpfp16ps
+ {
+   void operator()() { _tile_dpfp16ps(dst, src1, src2); }
+ };
+ 
+ void test_amx_fp16()
+ {
+   dpfp16ps<0, 1, 2>()();
+ }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.target/i386/pr122446-amxfp8.C gcc-16-20251116/gcc/testsuite/g++.target/i386/pr122446-amxfp8.C
*** gcc-16-20251109/gcc/testsuite/g++.target/i386/pr122446-amxfp8.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/g++.target/i386/pr122446-amxfp8.C	Sun Nov 16 22:33:24 2025
***************
*** 0 ****
--- 1,40 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-mamx-tile -mamx-fp8 -O0" } */
+ /* { dg-final { scan-assembler "tdpbf8ps\[ \\t]+%tmm2,\[ \\t\]*%tmm1,\[ \\t\]*%tmm0" } } */
+ /* { dg-final { scan-assembler "tdpbhf8ps\[ \\t]+%tmm5,\[ \\t\]*%tmm4,\[ \\t\]*%tmm3" } } */
+ /* { dg-final { scan-assembler "tdphbf8ps\[ \\t]+%tmm2,\[ \\t\]*%tmm1,\[ \\t\]*%tmm6" } } */
+ /* { dg-final { scan-assembler "tdphf8ps\[ \\t]+%tmm1,\[ \\t\]*%tmm0,\[ \\t\]*%tmm7" } } */
+ 
+ #include <immintrin.h>
+ 
+ template <int dst, int src1, int src2>
+ struct dpbf8ps
+ {
+   void operator()() { _tile_dpbf8ps(dst, src1, src2); }
+ };
+ 
+ template <int dst, int src1, int src2>
+ struct dpbhf8ps
+ {
+   void operator()() { _tile_dpbhf8ps(dst, src1, src2); }
+ };
+ 
+ template <int dst, int src1, int src2>
+ struct dphbf8ps
+ {
+   void operator()() { _tile_dphbf8ps(dst, src1, src2); }
+ };
+ 
+ template <int dst, int src1, int src2>
+ struct dphf8ps
+ {
+   void operator()() { _tile_dphf8ps(dst, src1, src2); }
+ };
+ 
+ void test_amx_fp8()
+ {
+   dpbf8ps<0, 1, 2>()();
+   dpbhf8ps<3, 4, 5>()();
+   dphbf8ps<6, 1, 2>()();
+   dphf8ps<7, 0, 1>()();
+ }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.target/i386/pr122446-amxint8.C gcc-16-20251116/gcc/testsuite/g++.target/i386/pr122446-amxint8.C
*** gcc-16-20251109/gcc/testsuite/g++.target/i386/pr122446-amxint8.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/g++.target/i386/pr122446-amxint8.C	Sun Nov 16 22:33:24 2025
***************
*** 0 ****
--- 1,40 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-mamx-tile -mamx-int8 -O0" } */
+ /* { dg-final { scan-assembler "tdpbssd\[ \\t]+%tmm2,\[ \\t\]*%tmm1,\[ \\t\]*%tmm0" } } */
+ /* { dg-final { scan-assembler "tdpbsud\[ \\t]+%tmm5,\[ \\t\]*%tmm4,\[ \\t\]*%tmm3" } } */
+ /* { dg-final { scan-assembler "tdpbusd\[ \\t]+%tmm2,\[ \\t\]*%tmm1,\[ \\t\]*%tmm6" } } */
+ /* { dg-final { scan-assembler "tdpbuud\[ \\t]+%tmm1,\[ \\t\]*%tmm0,\[ \\t\]*%tmm7" } } */
+ 
+ #include <immintrin.h>
+ 
+ template <int dst, int src1, int src2>
+ struct dpbssd
+ {
+   void operator()() { _tile_dpbssd(dst, src1, src2); }
+ };
+ 
+ template <int dst, int src1, int src2>
+ struct dpbsud
+ {
+   void operator()() { _tile_dpbsud(dst, src1, src2); }
+ };
+ 
+ template <int dst, int src1, int src2>
+ struct dpbusd
+ {
+   void operator()() { _tile_dpbusd(dst, src1, src2); }
+ };
+ 
+ template <int dst, int src1, int src2>
+ struct dpbuud
+ {
+   void operator()() { _tile_dpbuud(dst, src1, src2); }
+ };
+ 
+ void test_amx_int8()
+ {
+   dpbssd<0, 1, 2>()();
+   dpbsud<3, 4, 5>()();
+   dpbusd<6, 1, 2>()();
+   dpbuud<7, 0, 1>()();
+ }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.target/i386/pr122446-amxmovrs.C gcc-16-20251116/gcc/testsuite/g++.target/i386/pr122446-amxmovrs.C
*** gcc-16-20251109/gcc/testsuite/g++.target/i386/pr122446-amxmovrs.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/g++.target/i386/pr122446-amxmovrs.C	Sun Nov 16 22:33:24 2025
***************
*** 0 ****
--- 1,31 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-mamx-tile -mamx-movrs -O0" } */
+ /* { dg-final { scan-assembler "tileloaddrs\[ \\t]+\[^\n\]*,\[ \\t\]*%tmm0" } } */
+ /* { dg-final { scan-assembler "tileloaddrst1\[ \\t]+\[^\n\]*,\[ \\t\]*%tmm1" } } */
+ 
+ #include <immintrin.h>
+ 
+ template <int tmm_num>
+ struct tile_loaddrs_test
+ {
+   void operator()(const void* base, int stride)
+   {
+     _tile_loaddrs(tmm_num, base, stride);
+   }
+ };
+ 
+ template <int tmm_num>
+ struct tile_loaddrst1_test
+ {
+   void operator()(const void* base, int stride)
+   {
+     _tile_loaddrst1(tmm_num, base, stride);
+   }
+ };
+ 
+ void test_amx_movrs()
+ {
+   char buf[1024];
+   tile_loaddrs_test<0>()(buf, 64);
+   tile_loaddrst1_test<1>()(buf, 64);
+ }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.target/i386/pr122446-amxtf32.C gcc-16-20251116/gcc/testsuite/g++.target/i386/pr122446-amxtf32.C
*** gcc-16-20251109/gcc/testsuite/g++.target/i386/pr122446-amxtf32.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/g++.target/i386/pr122446-amxtf32.C	Sun Nov 16 22:33:24 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-mamx-tile -mamx-tf32 -O0" } */
+ /* { dg-final { scan-assembler "tmmultf32ps\[ \\t]+%tmm2,\[ \\t\]*%tmm1,\[ \\t\]*%tmm0" } } */
+ 
+ #include <immintrin.h>
+ 
+ template <int dst, int src1, int src2>
+ struct mmultf32ps
+ {
+   void operator()() { _tile_mmultf32ps(dst, src1, src2); }
+ };
+ 
+ void test_amx_tf32()
+ {
+   mmultf32ps<0, 1, 2>()();
+ }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.target/i386/pr122446-amxtile.C gcc-16-20251116/gcc/testsuite/g++.target/i386/pr122446-amxtile.C
*** gcc-16-20251109/gcc/testsuite/g++.target/i386/pr122446-amxtile.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/g++.target/i386/pr122446-amxtile.C	Sun Nov 16 22:33:24 2025
***************
*** 0 ****
--- 1,50 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-mamx-tile -O0" } */
+ /* { dg-final { scan-assembler "tileloadd\[ \\t]+\[^\n\]*,\[ \\t\]*%tmm0" } } */
+ /* { dg-final { scan-assembler "tilestored\[ \\t]+%tmm1," } } */
+ /* { dg-final { scan-assembler "tilezero\[ \\t]+%tmm3" } } */
+ /* { dg-final { scan-assembler "tileloaddt1\[ \\t]+\[^\n\]*,\[ \\t\]*%tmm2" } } */
+ 
+ #include <immintrin.h>
+ 
+ template <int tmm_num>
+ struct tile_loadd_test
+ {
+   void operator()(const void* base, int stride)
+   {
+     _tile_loadd(tmm_num, base, stride);
+   }
+ };
+ 
+ template <int tmm_num>
+ struct tile_stored_test
+ {
+   void operator()(void* base, int stride)
+   {
+     _tile_stored(tmm_num, base, stride);
+   }
+ };
+ 
+ template <int tmm_num>
+ struct tile_zero_test
+ {
+   void operator()() { _tile_zero(tmm_num); }
+ };
+ 
+ template <int tmm_num>
+ struct tile_stream_loadd_test
+ {
+   void operator()(const void* base, int stride)
+   {
+     _tile_stream_loadd(tmm_num, base, stride);
+   }
+ };
+ 
+ void test_amx_tile()
+ {
+   char buf[1024];
+   tile_loadd_test<0>()(buf, 64);
+   tile_stored_test<1>()(buf, 64);
+   tile_stream_loadd_test<2>()(buf, 64);
+   tile_zero_test<3>()();
+ }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.target/loongarch/mv-symbols1.C gcc-16-20251116/gcc/testsuite/g++.target/loongarch/mv-symbols1.C
*** gcc-16-20251109/gcc/testsuite/g++.target/loongarch/mv-symbols1.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/g++.target/loongarch/mv-symbols1.C	Sun Nov 16 22:33:24 2025
***************
*** 0 ****
--- 1,62 ----
+ /* { dg-do compile } */
+ /* { dg-require-ifunc "" } */
+ /* { dg-options "-O0 -march=loongarch64 -mabi=lp64d -mcmodel=normal" } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.arch_la64v1_0:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.strict_align:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\tbl\t\\\%plt\\\(_Z3foov\\\)\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\t\.type\t_Z3foov, @gnu_indirect_function" 1 } } */
+ /* { dg-final { scan-assembler-times "\t\.set\t_Z3foov,_Z3foov\.resolver" 1 } } */
+ 
+ /* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3fooi\.arch_la64v1_0:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3fooi\.strict_align:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\tbl\t\\\%plt\\\(_Z3fooi\\\)\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\t\.type\t_Z3fooi, @gnu_indirect_function" 1 } } */
+ /* { dg-final { scan-assembler-times "\t\.set\t_Z3fooi,_Z3fooi\.resolver" 1 } } */
+ 
+ int foo ()
+ {
+   return 1;
+ }
+ 
+ __attribute__((target_version("arch=la64v1.0")))
+ int foo ()
+ {
+   return 3;
+ }
+ __attribute__((target_version("strict-align")))
+ int foo ()
+ {
+   return 5;
+ }
+ 
+ int foo (int)
+ {
+   return 2;
+ }
+ 
+ __attribute__((target_version("arch=la64v1.0")))
+ int foo (int)
+ {
+   return 6;
+ }
+ 
+ __attribute__((target_version("strict-align")))
+ int foo (int)
+ {
+   return 4;
+ }
+ 
+ 
+ int bar()
+ {
+   return foo ();
+ }
+ 
+ int bar(int x)
+ {
+   return foo (x);
+ }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.target/loongarch/mv-symbols2.C gcc-16-20251116/gcc/testsuite/g++.target/loongarch/mv-symbols2.C
*** gcc-16-20251109/gcc/testsuite/g++.target/loongarch/mv-symbols2.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/g++.target/loongarch/mv-symbols2.C	Sun Nov 16 22:33:24 2025
***************
*** 0 ****
--- 1,53 ----
+ /* { dg-do compile } */
+ /* { dg-require-ifunc "" } */
+ /* { dg-options "-O0 -march=loongarch64 -mabi=lp64d -mcmodel=normal" } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.arch_la64v1_0:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.strict_align:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } }*/
+ /* { dg-final { scan-assembler-not "\tbl\t\\\%plt\\\(_Z3foov\\\)\n" } } */
+ /* { dg-final { scan-assembler-times "\t\.type\t_Z3foov, @gnu_indirect_function" 1 } } */
+ /* { dg-final { scan-assembler-times "\t\.set\t_Z3foov,_Z3foov\.resolver" 1 } } */
+ 
+ /* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3fooi\.arch_la64v1_0:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3fooi\.strict_align:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 1 } } */
+ /* { dg-final { scan-assembler-not "\tbl\t\\\%plt\\\(_Z3fooi\\\)\n" } } */
+ /* { dg-final { scan-assembler-times "\t\.type\t_Z3fooi, @gnu_indirect_function" 1 } } */
+ /* { dg-final { scan-assembler-times "\t\.set\t_Z3fooi,_Z3fooi\.resolver" 1 } } */
+ 
+ 
+ int foo ()
+ {
+   return 1;
+ }
+ 
+ __attribute__((target_version("arch=la64v1.0")))
+ int foo ()
+ {
+   return 3;
+ }
+ 
+ __attribute__((target_version("strict-align")))
+ int foo ()
+ {
+   return 5;
+ }
+ 
+ int foo (int)
+ {
+   return 2;
+ }
+ 
+ __attribute__((target_version("arch=la64v1.0")))
+ int foo (int)
+ {
+   return 6;
+ }
+ 
+ __attribute__((target_version("strict-align")))
+ int foo (int)
+ {
+   return 4;
+ }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.target/loongarch/mv-symbols3.C gcc-16-20251116/gcc/testsuite/g++.target/loongarch/mv-symbols3.C
*** gcc-16-20251109/gcc/testsuite/g++.target/loongarch/mv-symbols3.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/g++.target/loongarch/mv-symbols3.C	Sun Nov 16 22:33:24 2025
***************
*** 0 ****
--- 1,42 ----
+ /* { dg-do compile } */
+ /* { dg-require-ifunc "" } */
+ /* { dg-options "-O0 -march=loongarch64 -mabi=lp64d -mcmodel=normal" } */
+ /* { dg-final { scan-assembler-not "\n_Z3foov\.default:\n" } } */
+ /* { dg-final { scan-assembler-not "\n_Z3foov\.arch_la64v1_0:\n" } } */
+ /* { dg-final { scan-assembler-not "\n_Z3foov\.strict_align:\n" } } */
+ /* { dg-final { scan-assembler-not "\n_Z3foov\.resolver:\n" } } */
+ /* { dg-final { scan-assembler-times "\tbl\t\\\%plt\\\(_Z3foov\\\)\n" 1 } } */
+ /* { dg-final { scan-assembler-not "\t\.type\t_Z3foov, @gnu_indirect_function" } } */
+ /* { dg-final { scan-assembler-not "\t\.set\t_Z3foov,_Z3foov\.resolver" } } */
+ 
+ /* { dg-final { scan-assembler-not "\n_Z3fooi\.default:\n" } } */
+ /* { dg-final { scan-assembler-not "\n_Z3fooi\.arch_la64v1_0:\n" } } */
+ /* { dg-final { scan-assembler-not "\n_Z3fooi\.strict_align:\n" } } */
+ /* { dg-final { scan-assembler-not "\n_Z3fooi\.resolver:\n" } } */
+ /* { dg-final { scan-assembler-not "\tbl\t\\\%plt\\\(_Z3fooi\\\)\n" } } */
+ /* { dg-final { scan-assembler-not "\t\.type\t_Z3fooi, @gnu_indirect_function" } } */
+ /* { dg-final { scan-assembler-not "\t\.set\t_Z3fooi,_Z3fooi\.resolver" } } */
+ 
+ __attribute__((target_version("default")))
+ int foo ();
+ 
+ __attribute__((target_version("arch=la64v1.0")))
+ int foo ();
+ 
+ __attribute__((target_version("strict-align")))
+ int foo ();
+ 
+ __attribute__((target_version("default")))
+ int foo (int);
+ 
+ __attribute__((target_version("arch=la64v1.0")))
+ int foo (int);
+ 
+ __attribute__((target_version("strict-align")))
+ int foo (int);
+ 
+ int bar()
+ {
+   return foo ();
+ }
+ 
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.target/loongarch/mv-symbols4.C gcc-16-20251116/gcc/testsuite/g++.target/loongarch/mv-symbols4.C
*** gcc-16-20251109/gcc/testsuite/g++.target/loongarch/mv-symbols4.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/g++.target/loongarch/mv-symbols4.C	Sun Nov 16 22:33:24 2025
***************
*** 0 ****
--- 1,48 ----
+ /* { dg-do compile } */
+ /* { dg-require-ifunc "" } */
+ /* { dg-options "-O0 -march=loongarch64 -mabi=lp64d -mcmodel=normal" } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 1 } } */
+ /* { dg-final { scan-assembler-not "\n_Z3foov\.arch_la64v1_0:\n" } } */
+ /* { dg-final { scan-assembler-not "\n_Z3foov\.strict_align:\n" } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\tbl\t\\\%plt\\\(_Z3foov\\\)\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\t\.type\t_Z3foov, @gnu_indirect_function" 1 } } */
+ /* { dg-final { scan-assembler-times "\t\.set\t_Z3foov,_Z3foov\.resolver" 1 } } */
+ 
+ /* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 1 } } */
+ /* { dg-final { scan-assembler-not "\n_Z3fooi\.arch_la64v1_0:\n" } } */
+ /* { dg-final { scan-assembler-not "\n_Z3fooi\.strict_align:\n" } } */
+ /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 1 } } */
+ /* { dg-final { scan-assembler-not "\tbl\t\\\%plt\\\(_Z3fooi\\\)\n" } } */
+ /* { dg-final { scan-assembler-times "\t\.type\t_Z3fooi, @gnu_indirect_function" 1 } } */
+ /* { dg-final { scan-assembler-times "\t\.set\t_Z3fooi,_Z3fooi\.resolver" 1 } } */
+ 
+ __attribute__((target_version("default")))
+ int foo ()
+ {
+   return 1;
+ }
+ 
+ __attribute__((target_version("arch=la64v1.0")))
+ int foo ();
+ 
+ __attribute__((target_version("strict-align")))
+ int foo ();
+ 
+ __attribute__((target_version("default")))
+ int foo (int)
+ {
+   return 2;
+ }
+ 
+ __attribute__((target_version("arch=la64v1.0")))
+ int foo (int);
+ 
+ __attribute__((target_version("strict-align")))
+ int foo (int);
+ 
+ 
+ int bar()
+ {
+   return foo ();
+ }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.target/loongarch/mv-symbols5.C gcc-16-20251116/gcc/testsuite/g++.target/loongarch/mv-symbols5.C
*** gcc-16-20251109/gcc/testsuite/g++.target/loongarch/mv-symbols5.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/g++.target/loongarch/mv-symbols5.C	Sun Nov 16 22:33:24 2025
***************
*** 0 ****
--- 1,55 ----
+ /* { dg-do compile } */
+ /* { dg-require-ifunc "" } */
+ /* { dg-options "-O0 -march=loongarch64 -mabi=lp64d -mcmodel=normal" } */
+ /* { dg-final { scan-assembler-not "\n_Z3foov\.default:\n" } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.arch_la64v1_0:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.strict_align:\n" 1 } } */
+ /* { dg-final { scan-assembler-not "\n_Z3foov\.resolver:\n" } } */
+ /* { dg-final { scan-assembler-times "\tbl\t\\\%plt\\\(_Z3foov\\\)\n" 1 } } */
+ /* { dg-final { scan-assembler-not "\t\.type\t_Z3foov, @gnu_indirect_function" } } */
+ /* { dg-final { scan-assembler-not "\t\.set\t_Z3foov,_Z3foov\.resolver" } } */
+ 
+ /* { dg-final { scan-assembler-not "\n_Z3fooi\.default:\n" } } */
+ /* { dg-final { scan-assembler-times "\n_Z3fooi\.arch_la64v1_0:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3fooi\.strict_align:\n" 1 } } */
+ /* { dg-final { scan-assembler-not "\n_Z3fooi\.resolver:\n" } } */
+ /* { dg-final { scan-assembler-not "\tbl\t\\\%plt\\\(_Z3fooi\\\)\n" } } */
+ /* { dg-final { scan-assembler-not "\t\.type\t_Z3fooi, @gnu_indirect_function" } } */
+ /* { dg-final { scan-assembler-not "\t\.set\t_Z3fooi,_Z3fooi\.resolver" } } */
+ 
+ 
+ __attribute__((target_version("default")))
+ int foo ();
+ 
+ __attribute__((target_version("arch=la64v1.0")))
+ int foo ()
+ {
+   return 3;
+ }
+ __attribute__((target_version("strict-align")))
+ int foo ()
+ {
+   return 5;
+ }
+ 
+ __attribute__((target_version("default")))
+ int foo (int);
+ 
+ __attribute__((target_version("arch=la64v1.0")))
+ int foo (int)
+ {
+   return 6;
+ }
+ 
+ __attribute__((target_version("strict-align")))
+ int foo (int)
+ {
+   return 4;
+ }
+ 
+ 
+ int bar()
+ {
+   return foo ();
+ }
+ 
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.target/loongarch/mv-symbols6.C gcc-16-20251116/gcc/testsuite/g++.target/loongarch/mv-symbols6.C
*** gcc-16-20251109/gcc/testsuite/g++.target/loongarch/mv-symbols6.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/g++.target/loongarch/mv-symbols6.C	Sun Nov 16 22:33:24 2025
***************
*** 0 ****
--- 1,63 ----
+ /* { dg-do compile } */
+ /* { dg-require-ifunc "" } */
+ /* { dg-options "-O0 -march=loongarch64 -mabi=lp64d -mcmodel=normal" } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.arch_la64v1_0_priority_1:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.strict_align_priority_2:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\tbl\t\\\%plt\\\(_Z3foov\\\)\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\t\.type\t_Z3foov, @gnu_indirect_function" 1 } } */
+ /* { dg-final { scan-assembler-times "\t\.set\t_Z3foov,_Z3foov\.resolver" 1 } } */
+ 
+ /* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3fooi\.arch_la64v1_0_priority_1:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3fooi\.strict_align_priority_2:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\tbl\t\\\%plt\\\(_Z3fooi\\\)\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\t\.type\t_Z3fooi, @gnu_indirect_function" 1 } } */
+ /* { dg-final { scan-assembler-times "\t\.set\t_Z3fooi,_Z3fooi\.resolver" 1 } } */
+ 
+ int foo ()
+ {
+   return 1;
+ }
+ 
+ __attribute__((target_version("arch=la64v1.0;priority=1")))
+ int foo ()
+ {
+   return 3;
+ }
+ __attribute__((target_version("strict-align;priority=2")))
+ int foo ()
+ {
+   return 5;
+ }
+ 
+ int foo (int)
+ {
+   return 2;
+ }
+ 
+ __attribute__((target_version("arch=la64v1.0;priority=1")))
+ int foo (int)
+ {
+   return 6;
+ }
+ 
+ __attribute__((target_version("strict-align;priority=2")))
+ int foo (int)
+ {
+   return 4;
+ }
+ 
+ 
+ int bar()
+ {
+   return foo ();
+ }
+ 
+ int bar(int x)
+ {
+   return foo (x);
+ }
+ 
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.target/loongarch/mvc-symbols1.C gcc-16-20251116/gcc/testsuite/g++.target/loongarch/mvc-symbols1.C
*** gcc-16-20251109/gcc/testsuite/g++.target/loongarch/mvc-symbols1.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/g++.target/loongarch/mvc-symbols1.C	Sun Nov 16 22:33:24 2025
***************
*** 0 ****
--- 1,42 ----
+ /* { dg-do compile } */
+ /* { dg-require-ifunc "" } */
+ /* { dg-options "-O0 -march=loongarch64 -mabi=lp64d -mcmodel=normal" } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.arch_la64v1_1:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.lsx:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\tbl\t\\\%plt\\\(_Z3foov\\\)\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\t\.type\t_Z3foov, @gnu_indirect_function" 1 } } */
+ /* { dg-final { scan-assembler-times "\t\.set\t_Z3foov,_Z3foov\.resolver" 1 } } */
+ 
+ /* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3fooi\.arch_la64v1_1:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3fooi\.lsx:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\tbl\t\\\%plt\\\(_Z3fooi\\\)\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\t\.type\t_Z3fooi, @gnu_indirect_function" 1 } } */
+ /* { dg-final { scan-assembler-times "\t\.set\t_Z3fooi,_Z3fooi\.resolver" 1 } } */
+ 
+ __attribute__((target_clones("default", "arch=la64v1.1", "lsx")))
+ int foo ()
+ {
+   return 1;
+ }
+ 
+ __attribute__((target_clones("default", "arch=la64v1.1", "lsx")))
+ int foo (int)
+ {
+   return 2;
+ }
+ 
+ 
+ int bar()
+ {
+   return foo ();
+ }
+ 
+ int bar(int x)
+ {
+   return foo (x);
+ }
+ 
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.target/loongarch/mvc-symbols2.C gcc-16-20251116/gcc/testsuite/g++.target/loongarch/mvc-symbols2.C
*** gcc-16-20251109/gcc/testsuite/g++.target/loongarch/mvc-symbols2.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/g++.target/loongarch/mvc-symbols2.C	Sun Nov 16 22:33:24 2025
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do compile } */
+ /* { dg-require-ifunc "" } */
+ /* { dg-options "-O0 -march=loongarch64 -mabi=lp64d -mcmodel=normal" } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.arch_la64v1_1:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.lsx:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
+ /* { dg-final { scan-assembler-not "\tbl\t\\\%plt\\\(_Z3foov\\\)\n" } } */
+ /* { dg-final { scan-assembler-times "\t\.type\t_Z3foov, @gnu_indirect_function" 1 } } */
+ /* { dg-final { scan-assembler-times "\t\.set\t_Z3foov,_Z3foov\.resolver" 1 } } */
+ 
+ /* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3fooi\.arch_la64v1_1:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3fooi\.lsx:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 1 } } */
+ /* { dg-final { scan-assembler-not "\tbl\t\\\%plt\\\(_Z3fooi\\\)\n" } } */
+ /* { dg-final { scan-assembler-times "\t\.type\t_Z3fooi, @gnu_indirect_function" 1 } } */
+ /* { dg-final { scan-assembler-times "\t\.set\t_Z3fooi,_Z3fooi\.resolver" 1 } } */
+ 
+ __attribute__((target_clones("default", "arch=la64v1.1", "lsx")))
+ int foo ()
+ {
+   return 1;
+ }
+ 
+ __attribute__((target_clones("default", "arch=la64v1.1", "lsx")))
+ int foo (int)
+ {
+   return 2;
+ }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.target/loongarch/mvc-symbols3.C gcc-16-20251116/gcc/testsuite/g++.target/loongarch/mvc-symbols3.C
*** gcc-16-20251109/gcc/testsuite/g++.target/loongarch/mvc-symbols3.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/g++.target/loongarch/mvc-symbols3.C	Sun Nov 16 22:33:24 2025
***************
*** 0 ****
--- 1,36 ----
+ /* { dg-do compile } */
+ /* { dg-require-ifunc "" } */
+ /* { dg-options "-O0 -march=loongarch64 -mabi=lp64d -mcmodel=normal" } */
+ /* { dg-final { scan-assembler-not "\n_Z3foov\.default:\n" } } */
+ /* { dg-final { scan-assembler-not "\n_Z3foov\.arch_la64v1_1:\n" } } */
+ /* { dg-final { scan-assembler-not "\n_Z3foov\.lsx:\n" } } */
+ /* { dg-final { scan-assembler-not "\n_Z3foov\.resolver:\n" } } */
+ /* { dg-final { scan-assembler-times "\tbl\t\\\%plt\\\(_Z3foov\\\)\n" 1 } } */
+ /* { dg-final { scan-assembler-not "\t\.type\t_Z3foov, @gnu_indirect_function" } } */
+ /* { dg-final { scan-assembler-not "\t\.set\t_Z3foov,_Z3foov\.resolver" } } */
+ 
+ /* { dg-final { scan-assembler-not "\n_Z3fooi\.default:\n" } } */
+ /* { dg-final { scan-assembler-not "\n_Z3fooi\.arch_la64v1_1:\n" } } */
+ /* { dg-final { scan-assembler-not "\n_Z3fooi\.lsx:\n" } } */
+ /* { dg-final { scan-assembler-not "\n_Z3fooi\.resolver:\n" } } */
+ /* { dg-final { scan-assembler-times "\tbl\t\\\%plt\\\(_Z3fooi\\\)\n" 1 } } */
+ /* { dg-final { scan-assembler-not "\t\.type\t_Z3fooi, @gnu_indirect_function" } } */
+ /* { dg-final { scan-assembler-not "\t\.set\t_Z3fooi,_Z3fooi\.resolver" } } */
+ 
+ __attribute__((target_clones("default", "arch=la64v1.1", "lsx")))
+ int foo ();
+ 
+ __attribute__((target_clones("default", "arch=la64v1.1", "lsx")))
+ int foo (int);
+ 
+ 
+ int bar()
+ {
+   return foo ();
+ }
+ 
+ int bar(int x)
+ {
+   return foo (x);
+ }
+ 
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.target/loongarch/mvc-symbols4.C gcc-16-20251116/gcc/testsuite/g++.target/loongarch/mvc-symbols4.C
*** gcc-16-20251109/gcc/testsuite/g++.target/loongarch/mvc-symbols4.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/g++.target/loongarch/mvc-symbols4.C	Sun Nov 16 22:33:24 2025
***************
*** 0 ****
--- 1,26 ----
+ /* { dg-do compile } */
+ /* { dg-require-ifunc "" } */
+ /* { dg-options "-O0 -march=loongarch64 -mabi=lp64d -mcmodel=normal" } */
+ /* { dg-final { scan-assembler-not "\n_Z3foov\.default:\n" } } */
+ /* { dg-final { scan-assembler-not "\n_Z3foov\.arch_la64v1_1:\n" } } */
+ /* { dg-final { scan-assembler-not "\n_Z3foov\.lsx:\n" } } */
+ /* { dg-final { scan-assembler-not "\n_Z3foov\.resolver:\n" } } */
+ /* { dg-final { scan-assembler-not "\tbl\t\\\%plt\\\(_Z3foov\\\)\n" } } */
+ /* { dg-final { scan-assembler-not "\t\.type\t_Z3foov, @gnu_indirect_function" } } */
+ /* { dg-final { scan-assembler-not "\t\.set\t_Z3foov,_Z3foov\.resolver" } } */
+ 
+ /* { dg-final { scan-assembler-not "\n_Z3fooi\.default:\n" } } */
+ /* { dg-final { scan-assembler-not "\n_Z3fooi\.arch_la64v1_1:\n" } } */
+ /* { dg-final { scan-assembler-not "\n_Z3fooi\.lsx:\n" } } */
+ /* { dg-final { scan-assembler-not "\n_Z3fooi\.resolver:\n" } } */
+ /* { dg-final { scan-assembler-not "\tbl\t\\\%plt\\\(_Z3fooi\\\)\n" } } */
+ /* { dg-final { scan-assembler-not "\t\.type\t_Z3fooi, @gnu_indirect_function" } } */
+ /* { dg-final { scan-assembler-not "\t\.set\t_Z3fooi,_Z3fooi\.resolver" } } */
+ 
+ __attribute__((target_clones("default", "arch=la64v1.1", "lsx")))
+ int foo ();
+ 
+ __attribute__((target_clones("default", "arch=la64v1.1", "lsx")))
+ int foo (int);
+ 
+ 
diff -Nrcpad gcc-16-20251109/gcc/testsuite/g++.target/loongarch/mvc-symbols5.C gcc-16-20251116/gcc/testsuite/g++.target/loongarch/mvc-symbols5.C
*** gcc-16-20251109/gcc/testsuite/g++.target/loongarch/mvc-symbols5.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/g++.target/loongarch/mvc-symbols5.C	Sun Nov 16 22:33:24 2025
***************
*** 0 ****
--- 1,42 ----
+ /* { dg-do compile } */
+ /* { dg-require-ifunc "" } */
+ /* { dg-options "-O0 -march=loongarch64 -mabi=lp64d -mcmodel=normal" } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.arch_la64v1_1_priority_3:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.lsx:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\tbl\t\\\%plt\\\(_Z3foov\\\)\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\t\.type\t_Z3foov, @gnu_indirect_function" 1 } } */
+ /* { dg-final { scan-assembler-times "\t\.set\t_Z3foov,_Z3foov\.resolver" 1 } } */
+ 
+ /* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3fooi\.arch_la64v1_1:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3fooi\.lsx_priority_1:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\tbl\t\\\%plt\\\(_Z3fooi\\\)\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\t\.type\t_Z3fooi, @gnu_indirect_function" 1 } } */
+ /* { dg-final { scan-assembler-times "\t\.set\t_Z3fooi,_Z3fooi\.resolver" 1 } } */
+ 
+ __attribute__((target_clones("default", "arch=la64v1.1;priority=3", "lsx")))
+ int foo ()
+ {
+   return 1;
+ }
+ 
+ __attribute__((target_clones("default", "arch=la64v1.1", "lsx;priority=1")))
+ int foo (int)
+ {
+   return 2;
+ }
+ 
+ 
+ int bar()
+ {
+   return foo ();
+ }
+ 
+ int bar(int x)
+ {
+   return foo (x);
+ }
+ 
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.dg/countof-compile.c gcc-16-20251116/gcc/testsuite/gcc.dg/countof-compile.c
*** gcc-16-20251109/gcc/testsuite/gcc.dg/countof-compile.c	Sun Nov  9 22:33:10 2025
--- gcc-16-20251116/gcc/testsuite/gcc.dg/countof-compile.c	Sun Nov 16 22:33:31 2025
*************** const_expr(void)
*** 122,124 ****
--- 122,130 ----
    _Static_assert (_Countof (int [3][n]) == 3);
    _Static_assert (_Countof (int [n][3]) == 7); /* { dg-error "not constant" } */
  }
+ 
+ void
+ type(void)
+ {
+   _Generic (_Countof (w), __typeof__ (sizeof 0): 0);
+ }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.dg/lto/pr122603_0.c gcc-16-20251116/gcc/testsuite/gcc.dg/lto/pr122603_0.c
*** gcc-16-20251109/gcc/testsuite/gcc.dg/lto/pr122603_0.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.dg/lto/pr122603_0.c	Sun Nov 16 22:33:34 2025
***************
*** 0 ****
--- 1,6 ----
+ /* PR lto/122603 */
+ /* { dg-lto-do link } */
+ /* { dg-lto-options { "-O0 -flto -flto-partition=cache --param=lto-min-partition=1" } } */
+ 
+ int main() {}
+ asm("");
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.dg/match-shift-cmp-1.c gcc-16-20251116/gcc/testsuite/gcc.dg/match-shift-cmp-1.c
*** gcc-16-20251109/gcc/testsuite/gcc.dg/match-shift-cmp-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.dg/match-shift-cmp-1.c	Sun Nov 16 22:33:34 2025
***************
*** 0 ****
--- 1,50 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ 
+ #define TEST_ONE_CST(n, op, type, cst)                                         \
+   bool lshift_cst_##type##_##n (type x) { return (cst << x) op x; }
+ 
+ #define TEST_OP_CST(n, op, cst)                                                \
+   TEST_ONE_CST (n, op, unsigned, cst)                                          \
+   TEST_ONE_CST (n, op, int, cst)                                               \
+   TEST_ONE_CST (n, op, bool, cst)                                              \
+   TEST_ONE_CST (n, op, test_enum, cst)
+ 
+ #define TEST_ONE(n, op, type)                                                  \
+   bool lshift_##type##_##n (type x, type y)                                    \
+   {                                                                            \
+     if (y <= 0)                                                                \
+       __builtin_unreachable ();                                                \
+     return (y << x) op x;                                                      \
+   }
+ 
+ #define TEST_OP(n, op)                                                         \
+   TEST_ONE (n, op, unsigned)                                                   \
+   TEST_ONE (n, op, int)                                                        \
+   TEST_ONE (n, op, bool)                                                       \
+   TEST_ONE (n, op, test_enum)
+ 
+ typedef enum
+ {
+   MONE = -1,
+   ZERO = 0,
+   ONE = 1,
+   TWO = 2
+ } test_enum;
+ 
+ TEST_OP_CST (eq, ==, 1)
+ TEST_OP_CST (ne, !=, 2)
+ TEST_OP_CST (lt, <, 3)
+ TEST_OP_CST (gt, >, 4)
+ TEST_OP_CST (le, <=, 5)
+ TEST_OP_CST (ge, >=, 6)
+ 
+ TEST_OP (eq, ==)
+ TEST_OP (ne, !=)
+ TEST_OP (lt, <)
+ TEST_OP (gt, >)
+ TEST_OP (le, <=)
+ TEST_OP (ge, >=)
+ 
+ /* FIXME: The lt, le, gt and ge cases for int and enum don't get optimized.  */
+ /* { dg-final { scan-tree-dump-times "<<" 8 optimized } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.dg/match-shift-cmp-2.c gcc-16-20251116/gcc/testsuite/gcc.dg/match-shift-cmp-2.c
*** gcc-16-20251109/gcc/testsuite/gcc.dg/match-shift-cmp-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.dg/match-shift-cmp-2.c	Sun Nov 16 22:33:34 2025
***************
*** 0 ****
--- 1,62 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ 
+ /* The fold (y << x) <op> x -> 0|1 shouldn't trigger when y is 0.  */
+ 
+ #define TEST_ONE_CST(n, op, type, cst)                                         \
+   bool lshift_cst_##type##_##n (type x) { return (cst << x) op x; }
+ 
+ #define TEST_OP_CST(n, op, cst)                                                \
+   TEST_ONE_CST (n, op, unsigned, cst)                                          \
+   TEST_ONE_CST (n, op, int, cst)                                               \
+   TEST_ONE_CST (n, op, bool, cst)                                              \
+   TEST_ONE_CST (n, op, test_enum, cst)
+ 
+ #define TEST_ONE(n, op, type)                                                  \
+   bool lshift_##type##_##n (type x, type y)                                    \
+   {                                                                            \
+     if (y != 0)                                                                \
+       __builtin_unreachable ();                                                \
+     return (y << x) op x;                                                      \
+   }
+ 
+ #define TEST_OP(n, op)                                                         \
+   TEST_ONE (n, op, unsigned)                                                   \
+   TEST_ONE (n, op, int)                                                        \
+   TEST_ONE (n, op, bool)                                                       \
+   TEST_ONE (n, op, test_enum)
+ 
+ typedef enum
+ {
+   MONE = -1,
+   ZERO = 0,
+   ONE = 1,
+   TWO = 2
+ } test_enum;
+ 
+ TEST_OP_CST (eq, ==, 0)
+ TEST_OP_CST (ne, !=, 0)
+ TEST_OP_CST (lt, <, 0)
+ TEST_OP_CST (gt, >, 0)
+ TEST_OP_CST (le, <=, 0)
+ TEST_OP_CST (ge, >=, 0)
+ 
+ TEST_OP (eq, ==)
+ TEST_OP (ne, !=)
+ TEST_OP (lt, <)
+ TEST_OP (gt, >)
+ TEST_OP (le, <=)
+ TEST_OP (ge, >=)
+ 
+ /* These end up getting folded by other patterns.  */
+ /* { dg-final { scan-tree-dump-times "x_\\d\\(D\\) == 0" 8 optimized } } */
+ /* { dg-final { scan-tree-dump-times "x_\\d\\(D\\) != 0" 8 optimized } } */
+ /* { dg-final { scan-tree-dump-times "x_\\d\\(D\\) > 0" 4 optimized } } */
+ /* { dg-final { scan-tree-dump-times "x_\\d\\(D\\) < 0" 4 optimized } } */
+ /* { dg-final { scan-tree-dump-times "x_\\d\\(D\\) >= 0" 4 optimized } } */
+ /* { dg-final { scan-tree-dump-times "x_\\d\\(D\\) <= 0" 4 optimized } } */
+ /* { dg-final { scan-tree-dump-times "~x_\\d\\(D\\)" 4 optimized } } */
+ /* { dg-final { scan-tree-dump-times "return x_\\d\\(D\\);" 4 optimized } } */
+ /* { dg-final { scan-tree-dump-times "return 0;" 4 optimized } } */
+ /* { dg-final { scan-tree-dump-times "return 1;" 4 optimized } } */
+ /* Total: 48.  */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.dg/match-shift-cmp-3.c gcc-16-20251116/gcc/testsuite/gcc.dg/match-shift-cmp-3.c
*** gcc-16-20251109/gcc/testsuite/gcc.dg/match-shift-cmp-3.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.dg/match-shift-cmp-3.c	Sun Nov 16 22:33:34 2025
***************
*** 0 ****
--- 1,44 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ 
+ /* The fold (y << x) <op> x -> 0|1 shouldn't trigger when y is negative or
+    zero unsigned (except for == and !=).  */
+ 
+ #define TEST_ONE_CST(n, op, type, cst)                                         \
+   bool lshift_cst_##type##_##n (type x) { return ((cst << x) op x); }
+ 
+ #define TEST_OP_CST(n, op, cst)                                                \
+   TEST_ONE_CST (n, op, int, cst)                                               \
+   TEST_ONE_CST (n, op, test_enum, cst)
+ 
+ #define TEST_ONE(n, op, type)                                                  \
+   bool lshift_##type##_##n (type x, type y)                                    \
+   {                                                                            \
+     if (y > 0)                                                                 \
+       __builtin_unreachable ();                                                \
+     return ((y << x) op x);                                                    \
+   }
+ 
+ #define TEST_OP(n, op)                                                         \
+   TEST_ONE (n, op, int)                                                        \
+   TEST_ONE (n, op, test_enum)
+ 
+ typedef enum
+ {
+   MONE = -1,
+   ZERO = 0,
+   ONE = 1,
+   TWO = 2
+ } test_enum;
+ 
+ TEST_OP_CST (lt, <, -1)
+ TEST_OP_CST (gt, >, -2)
+ TEST_OP_CST (le, <=, -3)
+ TEST_OP_CST (ge, >=, -4)
+ 
+ TEST_OP (lt, <)
+ TEST_OP (gt, >)
+ TEST_OP (le, <=)
+ TEST_OP (ge, >=)
+ 
+ /* { dg-final { scan-tree-dump-times "<<" 16 optimized } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.dg/match-shift-cmp-4.c gcc-16-20251116/gcc/testsuite/gcc.dg/match-shift-cmp-4.c
*** gcc-16-20251109/gcc/testsuite/gcc.dg/match-shift-cmp-4.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.dg/match-shift-cmp-4.c	Sun Nov 16 22:33:34 2025
***************
*** 0 ****
--- 1,51 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ 
+ /* The fold (y << x) <op> x -> 0|1 should trigger when y is negative
+    unsigned.  */
+ 
+ #define TEST_ONE_CST(n, op, type, cst)                                         \
+   bool lshift_cst_##type##_##n (type x) { return ((unsigned) (cst) << x) op x; }
+ 
+ #define TEST_OP_CST(n, op, cst)                                                \
+   TEST_ONE_CST (n, op, unsigned, cst)                                          \
+   TEST_ONE_CST (n, op, int, cst)                                               \
+   TEST_ONE_CST (n, op, test_enum, cst)
+ 
+ #define TEST_ONE(n, op, type)                                                  \
+   bool lshift_##type##_##n (type x, type y)                                    \
+   {                                                                            \
+     if ((int) y <= 0)                                                          \
+       __builtin_unreachable ();                                                \
+     return ((unsigned) (y) << x) op x;                                         \
+   }
+ 
+ #define TEST_OP(n, op)                                                         \
+   TEST_ONE (n, op, unsigned)                                                   \
+   TEST_ONE (n, op, int)                                                        \
+   TEST_ONE (n, op, test_enum)
+ 
+ typedef enum
+ {
+   MONE = -1,
+   ZERO = 0,
+   ONE = 1,
+   TWO = 2
+ } test_enum;
+ 
+ TEST_OP_CST (eq, ==, -1)
+ TEST_OP_CST (ne, !=, -2)
+ TEST_OP_CST (lt, <, -3)
+ TEST_OP_CST (gt, >, -4)
+ TEST_OP_CST (le, <=, -5)
+ TEST_OP_CST (ge, >=, -6)
+ 
+ TEST_OP (eq, ==)
+ TEST_OP (ne, !=)
+ TEST_OP (lt, <)
+ TEST_OP (gt, >)
+ TEST_OP (le, <=)
+ TEST_OP (ge, >=)
+ 
+ /* { dg-final { scan-tree-dump-times "return 0;" 18 optimized } } */
+ /* { dg-final { scan-tree-dump-times "return 1;" 18 optimized } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.dg/plugin/location-overflow-test-3.c gcc-16-20251116/gcc/testsuite/gcc.dg/plugin/location-overflow-test-3.c
*** gcc-16-20251109/gcc/testsuite/gcc.dg/plugin/location-overflow-test-3.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.dg/plugin/location-overflow-test-3.c	Sun Nov 16 22:33:35 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-fplugin-arg-location_overflow_plugin-value=1024 -fdump-internal-locations" } */
+ 
+ /* The plugin arranges for location_t values to exceed 32 bits; verify the
+    internal dump routines don't crash. The exact output depends on the system
+    and on absolute path names, and this output is only meant for internal
+    purposes, so don't demand an exact form of the output.  */
+ 
+ /* { dg-allow-blank-lines-in-output 1 } */
+ /* { dg-prune-output ".*" } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.dg/plugin/plugin.exp gcc-16-20251116/gcc/testsuite/gcc.dg/plugin/plugin.exp
*** gcc-16-20251109/gcc/testsuite/gcc.dg/plugin/plugin.exp	Sun Nov  9 22:33:11 2025
--- gcc-16-20251116/gcc/testsuite/gcc.dg/plugin/plugin.exp	Sun Nov 16 22:33:35 2025
*************** set plugin_test_list [list \
*** 145,150 ****
--- 145,151 ----
      { location_overflow_plugin.cc \
  	  location-overflow-test-1.c \
  	  location-overflow-test-2.c \
+ 	  location-overflow-test-3.c \
  	  location-overflow-test-pr83173.c \
  	  location-overflow-test-pr116047.c \
  	  location-overflow-test-pr120061.c } \
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.dg/pr102983.c gcc-16-20251116/gcc/testsuite/gcc.dg/pr102983.c
*** gcc-16-20251109/gcc/testsuite/gcc.dg/pr102983.c	Sun Nov  9 22:33:11 2025
--- gcc-16-20251116/gcc/testsuite/gcc.dg/pr102983.c	Sun Nov 16 22:33:35 2025
*************** int main() {
*** 18,21 ****
    }
  }
  
! /* { dg-final { scan-tree-dump-times "Global Exported: c_.*1, 1" 1 "evrp" } } */
--- 18,21 ----
    }
  }
  
! /* { dg-final { scan-tree-dump-not "if \\(c_"  "evrp" } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.dg/torture/pr122629-1.c gcc-16-20251116/gcc/testsuite/gcc.dg/torture/pr122629-1.c
*** gcc-16-20251109/gcc/testsuite/gcc.dg/torture/pr122629-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.dg/torture/pr122629-1.c	Sun Nov 16 22:33:51 2025
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do compile } */
+ /* PR tree-optimization/122629 */
+ 
+ /* factor_out_operators was factoring out BIT_FIELD_REF and BIT_INSERT_EXPR,
+    both which requires constant operands so it would not valid to factor.  */
+ 
+ typedef int ix4 __attribute__((vector_size(4*sizeof(int))));
+ 
+ int f(ix4 *a, int l, int *b)
+ {
+   for (int i =0 ;i < l; i++)
+   {
+     int t;
+     ix4 tt = a[i];
+     if(*b) t = tt[1]; else t = tt[0];
+     *b = t;
+   }
+ }
+ 
+ int g(ix4 *a, int l, int *b)
+ {
+   for (int i =0 ;i < l; i++)
+   {
+     ix4 tt = a[i];
+     if(*b) tt[1] = 1; else tt[0] = 1;
+     *a = tt;
+   }
+ }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.dg/torture/pr122629-2.c gcc-16-20251116/gcc/testsuite/gcc.dg/torture/pr122629-2.c
*** gcc-16-20251109/gcc/testsuite/gcc.dg/torture/pr122629-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.dg/torture/pr122629-2.c	Sun Nov 16 22:33:51 2025
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do compile } */
+ /* PR tree-optimization/122629 */
+ 
+ typedef int ix4 __attribute__((vector_size(4*sizeof(int))));
+ 
+ int f(ix4 *a, int l, int *b, ix4 *c)
+ {
+   for (int i =0 ;i < l; i++)
+   {
+     int t;
+     ix4 tt = a[i];
+     ix4 tt1 = c[i];
+     if(*b) t = tt1[0]; else t = tt[0];
+     *b = t;
+   }
+ }
+ 
+ int g(ix4 *a, int l, int *b, ix4 *c)
+ {
+   for (int i =0 ;i < l; i++)
+   {
+     ix4 tt = a[i];
+     ix4 tt1 = c[i];
+     if(*b) {
+         tt = tt1;
+         tt[0] = 1;
+     } else {
+       tt[0] = 1;
+     }
+     a[i] = tt;
+   }
+ }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.dg/torture/pr122637-1.c gcc-16-20251116/gcc/testsuite/gcc.dg/torture/pr122637-1.c
*** gcc-16-20251109/gcc/testsuite/gcc.dg/torture/pr122637-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.dg/torture/pr122637-1.c	Sun Nov 16 22:33:51 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* PR tree-optimization/122637 */
+ 
+ char a[10][3];
+ int b;
+ void e(short c) {
+   for (; c; c--) {
+     for (int d = 2; d; d--)
+       b = a[d][0] & a[c][d];
+   }
+ }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.dg/tree-ssa/forwprop-43.c gcc-16-20251116/gcc/testsuite/gcc.dg/tree-ssa/forwprop-43.c
*** gcc-16-20251109/gcc/testsuite/gcc.dg/tree-ssa/forwprop-43.c	Sun Nov  9 22:33:12 2025
--- gcc-16-20251116/gcc/testsuite/gcc.dg/tree-ssa/forwprop-43.c	Sun Nov 16 22:33:52 2025
***************
*** 1,5 ****
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -fdump-tree-forwprop1" } */
+ /* { dg-require-effective-target stdint_types } */
+ /* { dg-require-effective-target vect_int } */
  /* { dg-additional-options "-fgimple" } */
  
  #include <stdint.h>
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.dg/tree-ssa/pr122629-1.c gcc-16-20251116/gcc/testsuite/gcc.dg/tree-ssa/pr122629-1.c
*** gcc-16-20251109/gcc/testsuite/gcc.dg/tree-ssa/pr122629-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.dg/tree-ssa/pr122629-1.c	Sun Nov 16 22:33:52 2025
***************
*** 0 ****
--- 1,36 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-ifcvt-details" } */
+ /* PR tree-optimization/122629 */
+ 
+ typedef int ix4 __attribute__((vector_size(4*sizeof(int))));
+ 
+ int f(ix4 *a, int l, int *b, ix4 *c)
+ {
+   for (int i =0 ;i < l; i++)
+   {
+     int t;
+     ix4 tt = a[i];
+     ix4 tt1 = c[i];
+     if(*b) t = tt1[0]; else t = tt[0];
+     *b = t;
+   }
+ }
+ 
+ int g(ix4 *a, int l, int *b, ix4 *c)
+ {
+   for (int i =0 ;i < l; i++)
+   {
+     ix4 tt = a[i];
+     ix4 tt1 = c[i];
+     if(*b) {
+         tt = tt1;
+         tt[0] = 1;
+     } else {
+       tt[0] = 1;
+     }
+     a[i] = tt;
+   }
+ }
+ 
+ /* Make sure BIT_INSERT_EXPR/BIT_FIELD_REF is still factored out for the case if operand 0 is different. */
+ /* { dg-final { scan-tree-dump-times "changed to factor operation out from" 2 "ifcvt" } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.dg/tree-ssa/scev-16.c gcc-16-20251116/gcc/testsuite/gcc.dg/tree-ssa/scev-16.c
*** gcc-16-20251109/gcc/testsuite/gcc.dg/tree-ssa/scev-16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.dg/tree-ssa/scev-16.c	Sun Nov 16 22:33:52 2025
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O -fdump-tree-sccp" } */
+ 
+ extern char a[];
+ int foo ()
+ {
+   int cnt = 0;
+   char *aend = a + 32;
+   char *a0 = a;
+   do
+     {
+       a0 = a0 + 16;
+       cnt++;
+     }
+   while (aend - a0 > 12);
+   return cnt;
+ }
+ 
+ /* { dg-final { scan-tree-dump "return 2" "sccp" } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c gcc-16-20251116/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c
*** gcc-16-20251109/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c	Sun Nov  9 22:33:12 2025
--- gcc-16-20251116/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c	Sun Nov 16 22:33:53 2025
***************
*** 11,18 ****
     to change decisions in switch expansion which in turn can expose new
     jump threading opportunities.  Skip the later tests on aarch64.  */
  /* { dg-final { scan-tree-dump-not "Jumps threaded"  "dom3" { target { ! aarch64*-*-* } } } } */
! /* { dg-final { scan-tree-dump "Jumps threaded: 8"  "thread2" { target { ! aarch64*-*-* } } } } */
! /* { dg-final { scan-tree-dump "Jumps threaded: 8"  "thread2" { target { aarch64*-*-* } } } } */
  
  enum STATE {
    S0=0,
--- 11,18 ----
     to change decisions in switch expansion which in turn can expose new
     jump threading opportunities.  Skip the later tests on aarch64.  */
  /* { dg-final { scan-tree-dump-not "Jumps threaded"  "dom3" { target { ! aarch64*-*-* } } } } */
! /* { dg-final { scan-tree-dump "Jumps threaded: 12"  "thread2" { target { ! aarch64*-*-* } } } } */
! /* { dg-final { scan-tree-dump "Jumps threaded: 12"  "thread2" { target { aarch64*-*-* } } } } */
  
  enum STATE {
    S0=0,
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.dg/uninit-pred-7_a.c gcc-16-20251116/gcc/testsuite/gcc.dg/uninit-pred-7_a.c
*** gcc-16-20251109/gcc/testsuite/gcc.dg/uninit-pred-7_a.c	Sun Nov  9 22:33:13 2025
--- gcc-16-20251116/gcc/testsuite/gcc.dg/uninit-pred-7_a.c	Sun Nov 16 22:33:56 2025
*************** int foo (int n, int l, int m, int r)
*** 20,26 ****
        blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */
  
    if ( n )
!       blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */
  
    if ( l )
        blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */
--- 20,26 ----
        blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */
  
    if ( n )
!       blah(v); /* { dg-bogus "uninitialized" "bogus warning" { xfail *-*-* } } */
  
    if ( l )
        blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.dg/vect/pr122680.c gcc-16-20251116/gcc/testsuite/gcc.dg/vect/pr122680.c
*** gcc-16-20251109/gcc/testsuite/gcc.dg/vect/pr122680.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.dg/vect/pr122680.c	Sun Nov 16 22:33:58 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-O3" } */
+ /* { dg-additional-options "-mavx2" { target avx2 } } */
+ 
+ void
+ foo (float *buf)
+ {
+   for (unsigned long i = 0, j = 100; i < 100; i++, j--)
+     buf[i] = j;
+ }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.dg/vect/slp-58.c gcc-16-20251116/gcc/testsuite/gcc.dg/vect/slp-58.c
*** gcc-16-20251109/gcc/testsuite/gcc.dg/vect/slp-58.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.dg/vect/slp-58.c	Sun Nov 16 22:33:58 2025
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target vect_float } */
+ 
+ struct S {
+     float m_col1[4];
+     float m_col2[4];
+     float m_col3[4];
+     float m_col4[4];
+ };
+ 
+ void apply(struct S *s, const float *in, float *out, long numPixels)
+ {
+   for (long idx = 0; idx < numPixels; ++idx)
+     {
+       const float r = in[0];
+       const float g = in[1];
+       const float b = in[2];
+       const float a = in[3];
+       out[0] = r*s->m_col1[0] + g*s->m_col2[0] + b*s->m_col3[0] + a*s->m_col4[0];
+       out[1] = r*s->m_col1[1] + g*s->m_col2[1] + b*s->m_col3[1] + a*s->m_col4[1];
+       out[2] = r*s->m_col1[2] + g*s->m_col2[2] + b*s->m_col3[2] + a*s->m_col4[2];
+       out[3] = r*s->m_col1[3] + g*s->m_col2[3] + b*s->m_col3[3] + a*s->m_col4[3];
+       in  += 4;
+       out += 4;
+     }
+ }
+ 
+ /* { dg-final { scan-tree-dump "vectorization factor = 1" "vect" { target { ! vect_load_lanes } } } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/aarch64/cmpbr-4.c gcc-16-20251116/gcc/testsuite/gcc.target/aarch64/cmpbr-4.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/aarch64/cmpbr-4.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/aarch64/cmpbr-4.c	Sun Nov 16 22:33:59 2025
***************
*** 0 ****
--- 1,12 ----
+ // { dg-do compile }
+ // { dg-options "-O2" }
+ 
+ #pragma GCC target "+cmpbr"
+ 
+ typedef unsigned short Quantum;
+ 
+ double MagickMax(double x, double y) { return x > y ? x : y; }
+ 
+ void ConvertRGBToHCL(Quantum red, Quantum green) {
+     if (red == MagickMax(red, green)) __builtin_abort();
+ }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/aarch64/cmpbr-5.c gcc-16-20251116/gcc/testsuite/gcc.target/aarch64/cmpbr-5.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/aarch64/cmpbr-5.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/aarch64/cmpbr-5.c	Sun Nov 16 22:33:59 2025
***************
*** 0 ****
--- 1,13 ----
+ /* { dg-do compile } */
+ /* { dg-options "-fgimple -O1" } */
+ #pragma GCC target "+cmpbr"
+ typedef unsigned short us;
+ __GIMPLE double
+ f (us x, us y, double a, double b)
+ {
+   bool c;
+   double d;
+   c = x == y;
+   d = c ? a : b;
+   return d;
+ }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/aarch64/crc-crc32-data16.c gcc-16-20251116/gcc/testsuite/gcc.target/aarch64/crc-crc32-data16.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/aarch64/crc-crc32-data16.c	Sun Nov  9 22:33:15 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/aarch64/crc-crc32-data16.c	Sun Nov 16 22:33:59 2025
*************** uint32_t _crc32_O0 (uint32_t crc, uint16
*** 10,16 ****
    int i;
    crc = crc ^ data;
  
!   for (i = 0; i < 8; i++) {
        if (crc & 1)
  	crc = (crc >> 1) ^ 0xEDB88320;
        else
--- 10,16 ----
    int i;
    crc = crc ^ data;
  
!   for (i = 0; i < 16; i++) {
        if (crc & 1)
  	crc = (crc >> 1) ^ 0xEDB88320;
        else
*************** uint32_t _crc32 (uint32_t crc, uint16_t
*** 24,30 ****
    int i;
    crc = crc ^ data;
  
!   for (i = 0; i < 8; i++) {
        if (crc & 1)
  	crc = (crc >> 1) ^ 0xEDB88320;
        else
--- 24,30 ----
    int i;
    crc = crc ^ data;
  
!   for (i = 0; i < 16; i++) {
        if (crc & 1)
  	crc = (crc >> 1) ^ 0xEDB88320;
        else
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/aarch64/eor3-opt.c gcc-16-20251116/gcc/testsuite/gcc.target/aarch64/eor3-opt.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/aarch64/eor3-opt.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/aarch64/eor3-opt.c	Sun Nov 16 22:34:00 2025
***************
*** 0 ****
--- 1,209 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-O2 -fno-schedule-insns -fno-schedule-insns2" } */
+ /* { dg-final { check-function-bodies "**" "" {} } } */
+ #include <arm_neon.h>
+ 
+ #pragma GCC target ("+sha3")
+ 
+ #define EOR_SCALAR_FN(type)		    \
+ type eor3_##type (type a, type b, type c) { \
+     return a ^ b ^ c;			    \
+ }
+ 
+ 
+ EOR_SCALAR_FN(uint64x1_t)
+ /*
+ ** eor3_uint64x1_t:
+ **	eor3	v0.16b, v0.16b, v1.16b, v2.16b
+ **	ret
+ */
+ EOR_SCALAR_FN(int64x1_t)
+ /*
+ ** eor3_int64x1_t:
+ **	eor3	v0.16b, v0.16b, v1.16b, v2.16b
+ **	ret
+ */
+ 
+ #define EOR_VEC_FN(type)		  \
+ type eor3_##type (type a, type b, type c) \
+ {					  \
+   type res = a;				  \
+   res[0] = a[0] ^ b[0] ^ c[0];		  \
+   return res;				  \
+ }
+ 
+ EOR_VEC_FN(int32x4_t)
+ /*
+ ** eor3_int32x4_t:
+ **	eor3	v([0-2]).16b, v[0-2].16b, v[0-2].16b, v[0-2].16b
+ **	ins	v0.s\[0\], v\1.s\[0\]
+ **	ret
+ */
+ EOR_VEC_FN(int32x2_t)
+ /*
+ ** eor3_int32x2_t:
+ **	eor3	v([0-2]).16b, v[0-2].16b, v[0-2].16b, v[0-2].16b
+ **	ins	v0.s\[0\], v\1.s\[0\]
+ **	ret
+ */
+ EOR_VEC_FN(uint32x4_t)
+ /*
+ ** eor3_uint32x4_t:
+ **	eor3	v([0-2]).16b, v[0-2].16b, v[0-2].16b, v[0-2].16b
+ **	ins	v0.s\[0\], v\1.s\[0\]
+ **	ret
+ */
+ EOR_VEC_FN(uint32x2_t)
+ /*
+ ** eor3_uint32x2_t:
+ **	eor3	v([0-2]).16b, v[0-2].16b, v[0-2].16b, v[0-2].16b
+ **	ins	v0.s\[0\], v\1.s\[0\]
+ **	ret
+ */
+ EOR_VEC_FN(int16x8_t)
+ /*
+ ** eor3_int16x8_t:
+ **	eor3	v([0-2]).16b, v[0-2].16b, v[0-2].16b, v[0-2].16b
+ **	ins	v0.h\[0\], v\1.h\[0\]
+ **	ret
+ */
+ EOR_VEC_FN(int16x4_t)
+ /*
+ ** eor3_int16x4_t:
+ **	eor3	v([0-2]).16b, v[0-2].16b, v[0-2].16b, v[0-2].16b
+ **	ins	v0.h\[0\], v\1.h\[0\]
+ **	ret
+ */
+ EOR_VEC_FN(uint16x8_t)
+ /*
+ ** eor3_uint16x8_t:
+ **	eor3	v([0-2]).16b, v[0-2].16b, v[0-2].16b, v[0-2].16b
+ **	ins	v0.h\[0\], v\1.h\[0\]
+ **	ret
+ */
+ EOR_VEC_FN(uint16x4_t)
+ /*
+ ** eor3_uint16x4_t:
+ **	eor3	v([0-2]).16b, v[0-2].16b, v[0-2].16b, v[0-2].16b
+ **	ins	v0.h\[0\], v\1.h\[0\]
+ **	ret
+ */
+ EOR_VEC_FN(int8x16_t)
+ /*
+ ** eor3_int8x16_t:
+ **	eor3	v([0-2]).16b, v[0-2].16b, v[0-2].16b, v[0-2].16b
+ **	ins	v0.b\[0\], v\1.b\[0\]
+ **	ret
+ */
+ EOR_VEC_FN(int8x8_t)
+ /*
+ ** eor3_int8x8_t:
+ **	eor3	v([0-2]).16b, v[0-2].16b, v[0-2].16b, v[0-2].16b
+ **	ins	v0.b\[0\], v\1.b\[0\]
+ **	ret
+ */
+ EOR_VEC_FN(uint8x16_t)
+ /*
+ ** eor3_uint8x16_t:
+ **	eor3	v([0-2]).16b, v[0-2].16b, v[0-2].16b, v[0-2].16b
+ **	ins	v0.b\[0\], v\1.b\[0\]
+ **	ret
+ */
+ EOR_VEC_FN(uint8x8_t)
+ /*
+ ** eor3_uint8x8_t:
+ **	eor3	v([0-2]).16b, v[0-2].16b, v[0-2].16b, v[0-2].16b
+ **	ins	v0.b\[0\], v\1.b\[0\]
+ **	ret
+ */
+ 
+ /* The following tests should not be optimized to EOR3 as that would involve
+    unnecessary register file moves.  */
+ 
+ EOR_SCALAR_FN(uint64_t)
+ /*
+ ** eor3_uint64_t:
+ **	eor	x1, x1, x2
+ **	eor	x0, x1, x0
+ **	ret
+ */
+ EOR_SCALAR_FN(int64_t)
+ /*
+ ** eor3_int64_t:
+ **	eor	x1, x1, x2
+ **	eor	x0, x1, x0
+ **	ret
+ */
+ EOR_SCALAR_FN(uint32_t)
+ /*
+ ** eor3_uint32_t:
+ **	eor	w1, w1, w2
+ **	eor	w0, w1, w0
+ **	ret
+ */
+ EOR_SCALAR_FN(int32_t)
+ /*
+ ** eor3_int32_t:
+ **	eor	w1, w1, w2
+ **	eor	w0, w1, w0
+ **	ret
+ */
+ EOR_SCALAR_FN(uint16_t)
+ /*
+ ** eor3_uint16_t:
+ **	eor	w1, w1, w2
+ **	eor	w0, w0, w1
+ **	ret
+ */
+ EOR_SCALAR_FN(int16_t)
+ /*
+ ** eor3_int16_t:
+ **	eor	w1, w1, w2
+ **	eor	w0, w0, w1
+ **	ret
+ */
+ EOR_SCALAR_FN(uint8_t)
+ /*
+ ** eor3_uint8_t:
+ **	eor	w1, w1, w2
+ **	eor	w0, w0, w1
+ **	ret
+ */
+ EOR_SCALAR_FN(int8_t)
+ /*
+ ** eor3_int8_t:
+ **	eor	w1, w1, w2
+ **	eor	w0, w0, w1
+ **	ret
+ */
+ 
+ void not_eor3_long(long *p)
+ {
+   p[6] = p[4] ^ p[0] ^ (p[2] << 2);
+ }
+ /*
+ ** not_eor3_long:
+ **	ldr	x1, \[x0\]
+ **	ldr	x2, \[x0, 32\]
+ **	eor	x2, x2, x1
+ **	ldr	x1, \[x0, 16\]
+ **	eor	x1, x2, x1, lsl 2
+ **	str	x1, \[x0, 48\]
+ **	ret
+ */
+ 
+ int64x2_t not_eor3_int64_t (int64x2_t a, int64_t b, int64_t c)
+ {
+   int64x2_t res;
+   res[0] = a[0] ^ b ^ c;
+   return res;
+ }
+ /*
+ ** not_eor3_int64_t:
+ **	eor	x0, x0, x1
+ **	fmov	d31, x0
+ **	eor	v0.8b, v31.8b, v0.8b
+ **	fmov	d0, d0
+ **	ret
+ */
+ 
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/aarch64/sve/acle/general/cops_bool.c gcc-16-20251116/gcc/testsuite/gcc.target/aarch64/sve/acle/general/cops_bool.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/aarch64/sve/acle/general/cops_bool.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/aarch64/sve/acle/general/cops_bool.c	Sun Nov 16 22:34:04 2025
***************
*** 0 ****
--- 1,301 ----
+ /* { dg-do run { target aarch64_sve_hw } } */
+ /* { dg-options "-O2" } */
+ 
+ #include <arm_sve.h>
+ 
+ #ifdef __cplusplus
+ #define BOOL bool
+ #else
+ #define BOOL _Bool
+ #endif
+ 
+ #define DECL_FUNC_UNARY(name, op, intr, n) \
+   svbool_t __attribute__((noipa)) \
+   func_ ## name ## _unary (svbool_t a) { \
+     return op (a); \
+   } \
+   void __attribute__((noipa)) \
+   checkfunc_ ## name ## _unary () { \
+     svbool_t pg = svptrue_b8 (); \
+     svbool_t data = svptrue_pat_b8 (SV_VL ## n); \
+     svbool_t exp = intr (pg, data); \
+     svbool_t actual = func_ ## name ## _unary (data); \
+     svbool_t cmp = sveor_b_z (pg, exp, actual); \
+     if (svptest_any (pg, cmp)) \
+       __builtin_abort (); \
+   }
+ 
+ #define DECL_FUNC_UNARY_COND(name, op, n)  \
+   svbool_t __attribute__ ((noipa)) \
+   func_ ## name  ## _unary_cond (svbool_t a) { \
+     return op (a); \
+   } \
+   svbool_t __attribute__ ((noipa)) \
+   name (svbool_t t, svbool_t a) { \
+     svbool_t pgl = sveor_b_z (t, a, svptrue_b8 ()); \
+     return pgl; \
+   } \
+   void __attribute__((noipa)) \
+   checkfunc_ ## name ## _unary_cond () { \
+     svbool_t a = svptrue_pat_b8 (SV_VL ## n); \
+     svbool_t all_true = svptrue_b8 (); \
+     svbool_t cmp = func_ ## name ## _unary_cond (a); \
+     svbool_t pgc = name (all_true, a) ; \
+     svbool_t res = sveor_b_z (all_true, cmp, pgc); \
+     if (svptest_any (all_true, res)) \
+       __builtin_abort (); \
+   }
+ 
+ #define VECT_CST { -1, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1 } /* { dg-warning "overflow in conversion from" "" { target c } }  */
+ #define VECT_CSTN { -1, t (), 0, -1, 0, f (), 0, 0, 0, -1, 0, -1, 0, -1, 0, -1 } /* { dg-warning "overflow in conversion from" "" { target c } }  */
+ 	/* { dg-warning "narrowing conversion of" "" { target c++ } .-1 }  */
+ 
+ #define DECL_FUNC_INIT() \
+   svbool_t __attribute__ ((noipa)) \
+   func_init1 () { \
+     svbool_t temp = VECT_CST; \
+     return temp; \
+   } \
+   svbool_t __attribute__ ((noipa)) \
+   func_init2 () { \
+     svbool_t temp = { 0 }; \
+     return temp; \
+   } \
+   svbool_t __attribute__ ((noipa)) \
+   func_init3 () { \
+     svbool_t temp = { }; \
+     return temp; \
+   } \
+   int __attribute__ ((noipa)) \
+   t () { \
+     return -1; \
+   } \
+   int __attribute__ ((noipa)) \
+   f () { \
+     return 0; \
+   } \
+   svbool_t __attribute__ ((noipa)) \
+   func_init4 () { \
+     svbool_t temp = VECT_CSTN; \
+     return temp; \
+   } \
+   void __attribute__((noipa)) \
+   checkfunc_init() { \
+     svbool_t all_true = svptrue_b8 (); \
+     svbool_t v16_true = svptrue_pat_b8 (SV_VL16); \
+     int8_t mem[] = VECT_CST; \
+     int8_t memn[] = VECT_CSTN; \
+     svint8_t t8 = svld1_s8 (v16_true, mem); \
+     svbool_t init1 = __builtin_convertvector (t8, svbool_t); \
+     svbool_t init2 = __builtin_convertvector (svindex_s8 (0, 0), svbool_t); \
+     svbool_t init3 = __builtin_convertvector (svindex_s8 (0, 0), svbool_t); \
+     svint8_t tn8 = svld1_s8 (v16_true, memn); \
+     svbool_t init4 = __builtin_convertvector (tn8, svbool_t); \
+ 	\
+     svbool_t res_init1 = func_init1 (); \
+     svbool_t cmp = sveor_b_z (all_true, init1, res_init1); \
+     if (svptest_any (v16_true, cmp)) \
+       __builtin_abort (); \
+ 	\
+     svbool_t res_init2 = func_init2 (); \
+     cmp = sveor_b_z (all_true, init2, res_init2); \
+     if (svptest_any (v16_true, cmp)) \
+       __builtin_abort (); \
+ 	\
+     svbool_t res_init3 = func_init3 (); \
+     cmp = sveor_b_z (all_true, init3, res_init3); \
+     if (svptest_any (v16_true, cmp)) \
+       __builtin_abort (); \
+ 	\
+     svbool_t res_init4 = func_init4 (); \
+     cmp = sveor_b_z (all_true, init4, res_init4); \
+     if (svptest_any (v16_true, cmp)) \
+       __builtin_abort (); \
+   }
+ 
+ #define DECL_FUNC_BINARY(name, op, intr, n) \
+   svbool_t __attribute__((noipa)) \
+   func_ ## name ## _binary(svbool_t a, svbool_t b) { \
+     return (a) op (b); \
+   } \
+   void __attribute__((noipa)) \
+   checkfunc_ ## name ## _binary () { \
+     svbool_t pg = svptrue_b8 (); \
+     svbool_t data1 = svptrue_pat_b8 (SV_VL ## n); \
+     svbool_t data2 = svnot_b_z (pg, data1); \
+     svbool_t exp = intr (pg, data1, data2); \
+     svbool_t actual = func_ ## name ## _binary (data1, data2); \
+     svbool_t cmp = sveor_b_z (pg, exp, actual); \
+     if (svptest_any (pg, cmp)) \
+       __builtin_abort (); \
+   }
+ 
+ #define DECL_FUNC_BINARY_COND(name, op, intr, n) \
+   svbool_t __attribute__ ((noipa)) \
+   func_ ## name ## _binary_cond(svbool_t a, svbool_t b) { \
+     return (a) op (b); \
+   } \
+   svbool_t __attribute__ ((noipa)) \
+   name ## intr (svbool_t t, svbool_t a, svbool_t b) { \
+     return sv ## intr ## _b_z (t, a, b); \
+   } \
+   void __attribute__((noipa)) \
+   checkfunc_ ## name ## _binary_cond () { \
+     svbool_t all_true = svptrue_b8 (); \
+     svbool_t a = svptrue_pat_b8 (SV_VL ## n); \
+     svbool_t b = svnot_b_z (all_true, a); \
+     svbool_t cmp = func_ ## name ## _binary_cond (a, b); \
+     svbool_t pgc = name ## intr (all_true, a, b) ; \
+     svbool_t res = sveor_b_z (all_true, cmp, pgc); \
+     if (svptest_any (all_true, res)) \
+       __builtin_abort (); \
+   }
+ 
+ #define DECL_FUNC_BOOL_TERNARY(n) \
+   svbool_t __attribute__((noipa)) \
+   func_svbool_t_ternary_eq(svbool_t p, svbool_t q, svbool_t a, svbool_t b) { \
+     return (p == q) ? a : b; \
+   } \
+   svbool_t __attribute__((noipa)) \
+   func_svbool_t_ternary_ne(svbool_t p, svbool_t q, svbool_t a, svbool_t b) { \
+     return (p != q) ? a : b; \
+   } \
+   svbool_t __attribute__((noipa)) \
+   func_svbool_t_ternary_ex(svbool_t p, svbool_t a, svbool_t b) { \
+     return (p) ? a : b; \
+   } \
+   void __attribute__((noipa)) \
+   checkfunc_svbool_t_ternary () { \
+     svbool_t pg = svptrue_b8 (); \
+     svbool_t p = svptrue_pat_b8 (SV_VL ## n); \
+     svbool_t q = svnot_b_z (pg, p); \
+     svbool_t a = p; \
+     svbool_t b = q; \
+     svbool_t ne = sveor_b_z (pg, p, q); \
+     svbool_t eq = svnot_b_z (pg, sveor_b_z (pg, p, q)); \
+     svbool_t ex = p; \
+     svbool_t expeq = svsel_b (eq, a, b); \
+     svbool_t expne = svsel_b (ne, a, b); \
+     svbool_t expex = svsel_b (ex, a, b); \
+     svbool_t actualeq = func_svbool_t_ternary_eq (p, q, a, b); \
+     svbool_t actualne = func_svbool_t_ternary_ne (p, q, a, b); \
+     svbool_t actualex = func_svbool_t_ternary_ex (p, a, b); \
+     svbool_t pgc_eq = sveor_b_z (pg, actualeq, expeq); \
+     svbool_t pgc_ne = sveor_b_z (pg, actualne, expne); \
+     svbool_t pgc_ex = sveor_b_z (pg, actualex, expex); \
+     if (svptest_any (pg, pgc_eq)) \
+       __builtin_abort (); \
+     if (svptest_any (pg, pgc_ne)) \
+       __builtin_abort (); \
+     if (svptest_any (pg, pgc_ex)) \
+       __builtin_abort (); \
+   }
+ 
+ svbool_t __attribute__((noipa))
+ my_svneor_b_z (svbool_t pg, svbool_t a, svbool_t b)
+ {
+   return svnot_b_z (pg, sveor_b_z (pg, a, b));
+ }
+ 
+ svbool_t  __attribute__((noipa))
+ func_svbool_t_bc (svint8_t a)
+ {
+   return __builtin_convertvector (a, svbool_t);
+ }
+ 
+ void __attribute__((noipa))
+ checkfunc_svbool_t_bc ()
+ {
+   svbool_t pg = svptrue_b8 ();
+   svint8_t data = { -1, -1, -1, -1 };
+   svbool_t actual = func_svbool_t_bc (data);
+   svbool_t exp = svptrue_pat_b8 (SV_VL4);
+   svbool_t cmp = sveor_b_z (pg, exp, actual);
+   if (svptest_any (pg, cmp))
+     __builtin_abort ();
+ }
+ 
+ svint8_t  __attribute__((noipa))
+ func_svint8_t_bc (svbool_t a)
+ {
+   return __builtin_convertvector (a, svint8_t);
+ }
+ 
+ void __attribute__((noipa))
+ checkfunc_svint8_t_bc ()
+ {
+   svbool_t pg = svptrue_b8 ();
+   svbool_t data = svptrue_pat_b8 (SV_VL4);
+   svint8_t actual = func_svint8_t_bc (data);
+   svint8_t exp = { -1, -1, -1, -1 };
+   svbool_t cmp = svcmpne_s8 (pg, exp, actual);
+   if (svptest_any (pg, cmp))
+     __builtin_abort ();
+ }
+ 
+ DECL_FUNC_UNARY (not, ~, svnot_b_z, 4)
+ DECL_FUNC_BINARY (and, &, svand_b_z, 8)
+ DECL_FUNC_BINARY (orr, |, svorr_b_z, 6)
+ DECL_FUNC_BINARY (eor, ^, sveor_b_z, 3)
+ 
+ DECL_FUNC_BINARY (eq, ==, my_svneor_b_z, 4)
+ DECL_FUNC_BINARY (ne, !=, sveor_b_z, 4)
+ 
+ DECL_FUNC_INIT ()
+ 
+ #ifdef __cplusplus
+ DECL_FUNC_UNARY_COND (lnot, !, 8)
+ DECL_FUNC_BINARY_COND (and_and, &&, and, 8)
+ DECL_FUNC_BINARY_COND (or_or, ||, orr, 8)
+ DECL_FUNC_BOOL_TERNARY (3)
+ #endif
+ 
+ #undef DECL_FUNC_UNARY
+ #define DECL_FUNC_UNARY(name, op, intr, n) \
+   checkfunc_ ## name ## _unary ();
+ 
+ #undef DECL_FUNC_UNARY_COND
+ #define DECL_FUNC_UNARY_COND(name, op, n)  \
+   checkfunc_ ## name ## _unary_cond ();
+ 
+ #undef DECL_FUNC_INIT
+ #define DECL_FUNC_INIT() \
+   checkfunc_init ();
+ 
+ #undef DECL_FUNC_BINARY
+ #define DECL_FUNC_BINARY(name, op, intr, n) \
+   checkfunc_ ## name ## _binary ();
+ 
+ #undef DECL_FUNC_BINARY_COND
+ #define DECL_FUNC_BINARY_COND(name, op, intr, n) \
+   checkfunc_ ## name ## _binary_cond ();
+ 
+ #undef  DECL_FUNC_BOOL_TERNARY
+ #define  DECL_FUNC_BOOL_TERNARY(n) \
+   checkfunc_svbool_t_ternary ();
+ 
+ int
+ main ()
+ {
+   DECL_FUNC_UNARY (not, ~, svnot_b_z, 4)
+   DECL_FUNC_BINARY (and, &, svand_b_z, 8)
+   DECL_FUNC_BINARY (orr, |, svorr_b_z, 6)
+   DECL_FUNC_BINARY (eor, ^, sveor_b_z, 3)
+ 
+   DECL_FUNC_BINARY (ne, !=, sveor_b_z, 4)
+   DECL_FUNC_BINARY (eq, ==, my_svneor_b_z, 4)
+ 
+   DECL_FUNC_INIT ()
+ 
+   checkfunc_svbool_t_bc ();
+   checkfunc_svint8_t_bc ();
+ 
+ #ifdef __cplusplus
+   DECL_FUNC_UNARY_COND (lnot, !, 8)
+   DECL_FUNC_BINARY_COND (and_and, &&, and, 8)
+   DECL_FUNC_BINARY_COND (or_or, ||, orr, 8)
+   DECL_FUNC_BOOL_TERNARY (3)
+ #endif
+ 
+   return 0;
+ }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_1.c gcc-16-20251116/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_1.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_1.c	Sun Nov  9 22:33:17 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_1.c	Sun Nov 16 22:34:04 2025
***************
*** 5,13 ****
  typedef uint8_t gnu_uint8_t __attribute__ ((vector_size (32)));
  typedef int8_t gnu_int8_t __attribute__ ((vector_size (32)));
  
  void
! f (svuint8_t sve_u1, svint8_t sve_s1,
!    gnu_uint8_t gnu_u1, gnu_int8_t gnu_s1, int n, unsigned char uc)
  {
    /* Initialization.  */
  
--- 5,16 ----
  typedef uint8_t gnu_uint8_t __attribute__ ((vector_size (32)));
  typedef int8_t gnu_int8_t __attribute__ ((vector_size (32)));
  
+ typedef int32_t gnu128_int32_t __attribute__ ((vector_size (128)));
+ typedef int32_t gnu32_int32_t __attribute__ ((vector_size (32)));
+ 
  void
! f (svuint8_t sve_u1, svint8_t sve_s1, svbool_t sve_b1, svbool_t sve_b2,
!    gnu_uint8_t gnu_u1, gnu_int8_t gnu_s1, gnu128_int32_t gnu128_s1, int n, unsigned char uc)
  {
    /* Initialization.  */
  
*************** f (svuint8_t sve_u1, svint8_t sve_s1,
*** 19,24 ****
--- 22,36 ----
    svuint8_t init_sve_u6 = { gnu_s1 }; /* { dg-error {incompatible types when initializing type 'unsigned char'} } */
    svuint8_t init_sve_u7 = { 0 };
  
+   /* Boolean inits.  */
+   svbool_t init_sve_b1 = 0; /* { dg-error {incompatible types when initializing type 'svbool_t' using type 'int'} } */
+   svbool_t init_sve_b2 = {};
+   svbool_t init_sve_b3 = { sve_b1 }; /* { dg-error {incompatible types when initializing type 'signed char:1'} } */
+   svbool_t init_sve_b4 = { gnu_u1 }; /* { dg-error {incompatible types when initializing type 'signed char:1'} } */
+   svbool_t init_sve_b5 = { sve_s1 }; /* { dg-error {incompatible types when initializing type 'signed char:1'} } */
+   svbool_t init_sve_b6 = { gnu_s1 }; /* { dg-error {incompatible types when initializing type 'signed char:1'} } */
+   svbool_t init_sve_b7 = { 0 };
+ 
    svuint8_t init_sve_u8 = { sve_u1, sve_u1 }; /* { dg-error {incompatible types when initializing type 'unsigned char'} } */
    svuint8_t init_sve_u9 = { gnu_u1, gnu_u1 }; /* { dg-error {incompatible types when initializing type 'unsigned char'} } */
  
*************** f (svuint8_t sve_u1, svint8_t sve_s1,
*** 30,35 ****
--- 42,52 ----
    gnu_uint8_t init_gnu_u6 = { gnu_s1 }; /* { dg-error {incompatible types when initializing type 'unsigned char'} } */
    gnu_uint8_t init_gnu_u7 = { 0 };
  
+   /* Boolean inits.  */
+   svbool_t init_sve_b8 = { sve_u1, sve_u1 }; /* { dg-error {incompatible types when initializing type 'signed char:1'} } */
+   svbool_t init_sve_b9 = { gnu_u1, gnu_u1 }; /* { dg-error {incompatible types when initializing type 'signed char:1'} } */
+   gnu_uint8_t init_gnu_u8 = { sve_b1 }; /* { dg-error {incompatible types when initializing type 'unsigned char'} } */
+ 
    /* Compound literals.  */
  
    (svuint8_t) {};
*************** f (svuint8_t sve_u1, svint8_t sve_s1,
*** 44,49 ****
--- 61,76 ----
    (gnu_uint8_t) { sve_u1 }; /* { dg-error {incompatible types when initializing type 'unsigned char'} } */
    (gnu_uint8_t) { gnu_u1 }; /* { dg-error {incompatible types when initializing type 'unsigned char'} } */
  
+   /* Boolean compound literals.  */
+   (svbool_t) {};
+   (svbool_t) { 0 };
+   (svbool_t) { sve_b1 }; /* { dg-error {incompatible types when initializing type 'signed char:1'} } */
+   (svbool_t) { gnu_u1 }; /* { dg-error {incompatible types when initializing type 'signed char:1'} } */
+   (svbool_t) { sve_s1 }; /* { dg-error {incompatible types when initializing type 'signed char:1'} } */
+   (svbool_t) { sve_u1 }; /* { dg-error {incompatible types when initializing type 'signed char:1'} } */
+   (svbool_t) { gnu_s1 }; /* { dg-error {incompatible types when initializing type 'signed char:1'} } */
+   (gnu_uint8_t) { sve_b1 }; /* { dg-error {incompatible types when initializing type 'unsigned char'} } */
+ 
    /* Assignment.  */
  
    sve_u1 = 0; /* { dg-error {incompatible types when assigning to type 'svuint8_t' from type 'int'} } */
*************** f (svuint8_t sve_u1, svint8_t sve_s1,
*** 58,63 ****
--- 85,98 ----
    gnu_u1 = sve_s1; /* { dg-error {incompatible types when assigning to type 'gnu_uint8_t'[^\n]* from type 'svint8_t'} } */
    gnu_u1 = gnu_s1; /* { dg-error {incompatible types when assigning to type 'gnu_uint8_t'[^\n]* from type 'gnu_int8_t'} } */
  
+   /* Boolean Assignments.  */
+ 
+   sve_b1 = 0; /* { dg-error {incompatible types when assigning to type 'svbool_t' from type 'int'} } */
+   sve_b1 = sve_b1;
+   sve_b1 = sve_s1; /* { dg-error {incompatible types when assigning to type 'svbool_t' from type 'svint8_t'} } */
+   sve_b1 = gnu_s1; /* { dg-error {incompatible types when assigning to type 'svbool_t' from type 'gnu_int8_t'} } */
+   gnu_u1 = sve_b1; /* { dg-error {incompatible types when assigning to type 'gnu_uint8_t'[^\n]* from type 'svbool_t'} } */
+ 
    /* Casts.  */
  
    (void) sve_u1;
*************** f (svuint8_t sve_u1, svint8_t sve_s1,
*** 76,81 ****
--- 111,129 ----
    (gnu_int8_t) sve_u1;
    (gnu_int8_t) gnu_u1;
  
+   /* Boolean casts.  */
+   (void) sve_b1;
+   (svbool_t) sve_b1;
+   (svbool_t) gnu_u1; /* { dg-error {cannot convert a value of type 'gnu_uint8_t'} } */
+   (svbool_t) sve_u1; /* { dg-error {cannot convert a value of type 'svuint8_t'} } */
+   (svbool_t) 0; /* This is OK.  sizeof (svbool_t) == sizeof (int) for VL == 256.  */
+   (svbool_t) n; /* This is OK.  sizeof (svbool_t) == sizeof (int) for VL == 256.  */
+   (svbool_t) (short)0; /* { dg-error {cannot convert a value of type 'short int'} } */
+   (svbool_t) (short)n; /* { dg-error {cannot convert a value of type 'short int'} } */
+   (svint8_t) sve_b1; /* { dg-error {cannot convert a value of type 'svbool_t'} } */
+   (gnu_uint8_t) sve_b1; /* { dg-error {cannot convert a value of type 'svbool_t'} } */
+   (gnu_int8_t) sve_b1; /* { dg-error {cannot convert a value of type 'svbool_t'} } */
+ 
    /* Vector indexing.  */
  
    sve_u1[0];
*************** f (svuint8_t sve_u1, svint8_t sve_s1,
*** 110,115 ****
--- 158,177 ----
    gnu_u1++;
    gnu_u1--;
  
+   /* Boolean unary ops.  */
+ 
+   +sve_b1;
+   -sve_b1; /* { dg-error {negation operation not permitted} } */
+   ~sve_b1;
+   !sve_b1; /* { dg-error {wrong type argument to unary exclamation mark} } */
+   *sve_b1; /* { dg-error {invalid type argument of unary '\*'} } */
+   __real sve_b1; /* { dg-error {wrong type argument to __real} } */
+   __imag sve_b1; /* { dg-error {wrong type argument to __imag} } */
+   ++sve_b1; /* { dg-error {not permitted} } */
+   --sve_b1; /* { dg-error {not permitted} } */
+   sve_b1++; /* { dg-error {not permitted} } */
+   sve_b1--; /* { dg-error {not permitted} } */
+ 
    /* Vector-vector binary arithmetic.  */
  
    sve_u1 + sve_u1;
*************** f (svuint8_t sve_u1, svint8_t sve_s1,
*** 131,136 ****
--- 193,219 ----
    sve_u1 && sve_u1; /* { dg-error {used vector type where scalar is required} } */
    sve_u1 || sve_u1; /* { dg-error {used vector type where scalar is required} } */
  
+   /* Boolean vector-vector binary arithmetic.  */
+ 
+   sve_b1 + sve_b1; /* { dg-error {not permitted} } */
+   sve_b1 - sve_b1; /* { dg-error {not permitted} } */
+   sve_b1 * sve_b1; /* { dg-error {not permitted} } */
+   sve_b1 / sve_b1; /* { dg-error {not permitted} } */
+   sve_b1 % sve_b1; /* { dg-error {invalid operands to binary} } */
+   sve_b1 & sve_b1;
+   sve_b1 | sve_b1;
+   sve_b1 ^ sve_b1;
+   sve_b1 == sve_b1;
+   sve_b1 != sve_b1;
+   sve_b1 <= sve_b1; /* { dg-error {only == and != operations permitted} } */
+   sve_b1 < sve_b1;  /* { dg-error {only == and != operations permitted} } */
+   sve_b1 > sve_b1;  /* { dg-error {only == and != operations permitted} } */
+   sve_b1 >= sve_b1; /* { dg-error {only == and != operations permitted} } */
+   sve_b1 << sve_b1; /* { dg-error {not permitted} } */
+   sve_b1 >> sve_b1; /* { dg-error {not permitted} } */
+   sve_b1 && sve_b1; /* { dg-error {used vector type where scalar is required} } */
+   sve_b1 || sve_b1; /* { dg-error {used vector type where scalar is required} } */
+ 
    sve_u1 + gnu_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */
    sve_u1 - gnu_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */
    sve_u1 * gnu_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */
*************** f (svuint8_t sve_u1, svint8_t sve_s1,
*** 401,406 ****
--- 484,503 ----
    gnu_u1 ? sve_u1 : gnu_u1; /* { dg-error {used vector type where scalar is required} } */
    gnu_u1 ? gnu_u1 : gnu_u1; /* { dg-error {used vector type where scalar is required} } */
  
+   /* Boolean conditional expressions.  */
+ 
+   uc ? sve_b1 : sve_b2;
+ 
+   sve_b1 ? sve_u1 : sve_u1; /* { dg-error {used vector type where scalar is required} } */
+   sve_b1 ? gnu_u1 : sve_u1; /* { dg-error {used vector type where scalar is required} } */
+   sve_b1 ? sve_u1 : gnu_u1; /* { dg-error {used vector type where scalar is required} } */
+   sve_b1 ? gnu_u1 : gnu_u1; /* { dg-error {used vector type where scalar is required} } */
+ 
+   sve_u1 ? sve_b1 : sve_b2; /* { dg-error {used vector type where scalar is required} } */
+   gnu_u1 ? sve_b1 : sve_b2; /* { dg-error {used vector type where scalar is required} } */
+   gnu_u1 ? gnu_u1 : sve_b1; /* { dg-error {used vector type where scalar is required} } */
+   gnu_u1 ? sve_b1 : gnu_u1; /* { dg-error {used vector type where scalar is required} } */
+ 
    /* Vector built-ins.  */
  
    __builtin_shuffle (sve_u1, sve_u1, sve_u1);
*************** f (svuint8_t sve_u1, svint8_t sve_s1,
*** 413,416 ****
--- 510,540 ----
    __builtin_convertvector (gnu_u1, svuint8_t);
    __builtin_convertvector (sve_u1, gnu_uint8_t);
    __builtin_convertvector (gnu_u1, gnu_uint8_t);
+ 
+   /* Boolean vector built-ins.  */
+ 
+   __builtin_shuffle (sve_b1, sve_b1, sve_s1);
+   __builtin_shuffle (sve_b1, sve_b1, sve_u1);
+   __builtin_shuffle (sve_b1, sve_b1, gnu_s1);
+   __builtin_shuffle (sve_b1, sve_b1, gnu_u1);
+ 
+   __builtin_shuffle (sve_b1, gnu_u1, gnu_u1); /* { dg-error {'__builtin_shuffle' argument vectors must be of the same type} } */
+   __builtin_shuffle (gnu_u1, sve_b1, gnu_u1); /* { dg-error {'__builtin_shuffle' argument vectors must be of the same type} } */
+ 
+   __builtin_convertvector (sve_b1, svint8_t);
+   __builtin_convertvector (sve_b1, svuint8_t);
+   __builtin_convertvector (sve_b1, gnu_int8_t);
+   __builtin_convertvector (sve_b1, gnu_uint8_t);
+ 
+   __builtin_convertvector (sve_s1, svbool_t);
+   __builtin_convertvector (gnu_s1, svbool_t);
+   __builtin_convertvector (sve_u1, svbool_t);
+   __builtin_convertvector (gnu_u1, svbool_t);
+ 
+   __builtin_convertvector (sve_b1, svint32_t); /* { dg-error {'__builtin_convertvector' number of elements of the first argument vector and the second argument vector type should be the same} } */
+   __builtin_convertvector (sve_b1, svuint32_t); /* { dg-error {'__builtin_convertvector' number of elements of the first argument vector and the second argument vector type should be the same} } */
+   __builtin_convertvector (sve_b1, gnu32_int32_t); /* { dg-error {'__builtin_convertvector' number of elements of the first argument vector and the second argument vector type should be the same} } */
+ 
+   __builtin_convertvector (sve_b1, gnu128_int32_t);
+   __builtin_convertvector (gnu128_s1, svbool_t);
  }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_2.c gcc-16-20251116/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_2.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_2.c	Sun Nov  9 22:33:17 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_2.c	Sun Nov 16 22:34:04 2025
***************
*** 5,13 ****
  typedef uint8_t gnu_uint8_t __attribute__ ((vector_size (32)));
  typedef int8_t gnu_int8_t __attribute__ ((vector_size (32)));
  
  void
! f (svuint8_t sve_u1, svint8_t sve_s1,
!    gnu_uint8_t gnu_u1, gnu_int8_t gnu_s1, int n, unsigned char uc)
  {
    /* Initialization.  */
  
--- 5,16 ----
  typedef uint8_t gnu_uint8_t __attribute__ ((vector_size (32)));
  typedef int8_t gnu_int8_t __attribute__ ((vector_size (32)));
  
+ typedef int32_t gnu128_int32_t __attribute__ ((vector_size (128)));
+ typedef int32_t gnu32_int32_t __attribute__ ((vector_size (32)));
+ 
  void
! f (svuint8_t sve_u1, svint8_t sve_s1, svbool_t sve_b1, svbool_t sve_b2,
!    gnu_uint8_t gnu_u1, gnu_int8_t gnu_s1, gnu128_int32_t gnu128_s1, int n, unsigned char uc)
  {
    /* Initialization.  */
  
*************** f (svuint8_t sve_u1, svint8_t sve_s1,
*** 21,26 ****
--- 24,38 ----
    svuint8_t init_sve_u8 = { sve_u1, sve_u1 }; /* { dg-error {incompatible types when initializing type 'unsigned char'} } */
    svuint8_t init_sve_u9 = { gnu_u1, gnu_u1 }; /* { dg-error {incompatible types when initializing type 'unsigned char'} } */
  
+   /* Boolean inits.  */
+   svbool_t init_sve_b1 = 0; /* { dg-error {incompatible types when initializing type 'svbool_t' using type 'int'} } */
+   svbool_t init_sve_b2 = {};
+   svbool_t init_sve_b3 = { sve_b1 }; /* { dg-error {incompatible types when initializing type 'signed char:1'} } */
+   svbool_t init_sve_b4 = { gnu_u1 }; /* { dg-error {incompatible types when initializing type 'signed char:1'} } */
+   svbool_t init_sve_b5 = { sve_s1 }; /* { dg-error {incompatible types when initializing type 'signed char:1'} } */
+   svbool_t init_sve_b6 = { gnu_s1 }; /* { dg-error {incompatible types when initializing type 'signed char:1'} } */
+   svbool_t init_sve_b7 = { 0 };
+ 
    gnu_uint8_t init_gnu_u1 = 0; /* { dg-error {incompatible types when initializing type 'gnu_uint8_t'[^\n]* using type 'int'} } */
    gnu_uint8_t init_gnu_u2 = {};
    gnu_uint8_t init_gnu_u3 = { sve_u1 }; /* { dg-error {incompatible types when initializing type 'unsigned char'} } */
*************** f (svuint8_t sve_u1, svint8_t sve_s1,
*** 29,34 ****
--- 41,51 ----
    gnu_uint8_t init_gnu_u6 = { gnu_s1 }; /* { dg-error {incompatible types when initializing type 'unsigned char'} } */
    gnu_uint8_t init_gnu_u7 = { 0 };
  
+   /* Boolean inits.  */
+   svbool_t init_sve_b8 = { sve_u1, sve_u1 }; /* { dg-error {incompatible types when initializing type 'signed char:1'} } */
+   svbool_t init_sve_b9 = { gnu_u1, gnu_u1 }; /* { dg-error {incompatible types when initializing type 'signed char:1'} } */
+   gnu_uint8_t init_gnu_u8 = { sve_b1 }; /* { dg-error {incompatible types when initializing type 'unsigned char'} } */
+ 
    /* Compound literals.  */
  
    (svuint8_t) {};
*************** f (svuint8_t sve_u1, svint8_t sve_s1,
*** 43,48 ****
--- 60,75 ----
    (gnu_uint8_t) { sve_u1 }; /* { dg-error {incompatible types when initializing type 'unsigned char'} } */
    (gnu_uint8_t) { gnu_u1 }; /* { dg-error {incompatible types when initializing type 'unsigned char'} } */
  
+   /* Boolean compound literals.  */
+   (svbool_t) {};
+   (svbool_t) { 0 };
+   (svbool_t) { sve_b1 }; /* { dg-error {incompatible types when initializing type 'signed char:1'} } */
+   (svbool_t) { gnu_u1 }; /* { dg-error {incompatible types when initializing type 'signed char:1'} } */
+   (svbool_t) { sve_s1 }; /* { dg-error {incompatible types when initializing type 'signed char:1'} } */
+   (svbool_t) { sve_u1 }; /* { dg-error {incompatible types when initializing type 'signed char:1'} } */
+   (svbool_t) { gnu_s1 }; /* { dg-error {incompatible types when initializing type 'signed char:1'} } */
+   (gnu_uint8_t) { sve_b1 }; /* { dg-error {incompatible types when initializing type 'unsigned char'} } */
+ 
    /* Assignment.  */
  
    sve_u1 = 0; /* { dg-error {incompatible types when assigning to type 'svuint8_t' from type 'int'} } */
*************** f (svuint8_t sve_u1, svint8_t sve_s1,
*** 57,62 ****
--- 84,97 ----
    gnu_u1 = sve_s1;
    gnu_u1 = gnu_s1;
  
+   /* Boolean Assignments.  */
+ 
+   sve_b1 = 0; /* { dg-error {incompatible types when assigning to type 'svbool_t' from type 'int'} } */
+   sve_b1 = sve_b1;
+   sve_b1 = sve_s1; /* { dg-error {incompatible types when assigning to type 'svbool_t' from type 'svint8_t'} } */
+   sve_b1 = gnu_s1; /* { dg-error {incompatible types when assigning to type 'svbool_t' from type 'gnu_int8_t'} } */
+   gnu_u1 = sve_b1; /* { dg-error {incompatible types when assigning to type 'gnu_uint8_t'[^\n]* from type 'svbool_t'} } */
+ 
    /* Casts.  */
  
    (void) sve_u1;
*************** f (svuint8_t sve_u1, svint8_t sve_s1,
*** 75,80 ****
--- 110,128 ----
    (gnu_int8_t) sve_u1;
    (gnu_int8_t) gnu_u1;
  
+   /* Boolean casts.  */
+   (void) sve_b1;
+   (svbool_t) sve_b1;
+   (svbool_t) gnu_u1; /* { dg-error {cannot convert a value of type 'gnu_uint8_t'} } */
+   (svbool_t) sve_u1; /* { dg-error {cannot convert a value of type 'svuint8_t'} } */
+   (svbool_t) 0; /* This is OK.  sizeof (svbool_t) == sizeof (int) for VL == 256.  */
+   (svbool_t) n; /* This is OK.  sizeof (svbool_t) == sizeof (int) for VL == 256.  */
+   (svbool_t) (short)0; /* { dg-error {cannot convert a value of type 'short int'} } */
+   (svbool_t) (short)n; /* { dg-error {cannot convert a value of type 'short int'} } */
+   (svint8_t) sve_b1; /* { dg-error {cannot convert a value of type 'svbool_t'} } */
+   (gnu_uint8_t) sve_b1; /* { dg-error {cannot convert a value of type 'svbool_t'} } */
+   (gnu_int8_t) sve_b1; /* { dg-error {cannot convert a value of type 'svbool_t'} } */
+ 
    /* Vector indexing.  */
  
    sve_u1[0];
*************** f (svuint8_t sve_u1, svint8_t sve_s1,
*** 109,114 ****
--- 157,176 ----
    gnu_u1++;
    gnu_u1--;
  
+   /* Boolean unary ops.  */
+ 
+   +sve_b1;
+   -sve_b1; /* { dg-error {negation operation not permitted} } */
+   ~sve_b1;
+   !sve_b1; /* { dg-error {wrong type argument to unary exclamation mark} } */
+   *sve_b1; /* { dg-error {invalid type argument of unary '\*'} } */
+   __real sve_b1; /* { dg-error {wrong type argument to __real} } */
+   __imag sve_b1; /* { dg-error {wrong type argument to __imag} } */
+   ++sve_b1; /* { dg-error {not permitted} } */
+   --sve_b1; /* { dg-error {not permitted} } */
+   sve_b1++; /* { dg-error {not permitted} } */
+   sve_b1--; /* { dg-error {not permitted} } */
+ 
    /* Vector-vector binary arithmetic.  */
  
    sve_u1 + sve_u1;
*************** f (svuint8_t sve_u1, svint8_t sve_s1,
*** 130,135 ****
--- 192,218 ----
    sve_u1 && sve_u1; /* { dg-error {used vector type where scalar is required} } */
    sve_u1 || sve_u1; /* { dg-error {used vector type where scalar is required} } */
  
+   /* Boolean vector-vector binary arithmetic.  */
+ 
+   sve_b1 + sve_b1; /* { dg-error {not permitted} } */
+   sve_b1 - sve_b1; /* { dg-error {not permitted} } */
+   sve_b1 * sve_b1; /* { dg-error {not permitted} } */
+   sve_b1 / sve_b1; /* { dg-error {not permitted} } */
+   sve_b1 % sve_b1; /* { dg-error {invalid operands to binary} } */
+   sve_b1 & sve_b1;
+   sve_b1 | sve_b1;
+   sve_b1 ^ sve_b1;
+   sve_b1 == sve_b1;
+   sve_b1 != sve_b1;
+   sve_b1 <= sve_b1; /* { dg-error {only == and != operations permitted} } */
+   sve_b1 < sve_b1;  /* { dg-error {only == and != operations permitted} } */
+   sve_b1 > sve_b1;  /* { dg-error {only == and != operations permitted} } */
+   sve_b1 >= sve_b1; /* { dg-error {only == and != operations permitted} } */
+   sve_b1 << sve_b1; /* { dg-error {not permitted} } */
+   sve_b1 >> sve_b1; /* { dg-error {not permitted} } */
+   sve_b1 && sve_b1; /* { dg-error {used vector type where scalar is required} } */
+   sve_b1 || sve_b1; /* { dg-error {used vector type where scalar is required} } */
+ 
    sve_u1 + gnu_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */
    sve_u1 - gnu_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */
    sve_u1 * gnu_u1; /* { dg-error {cannot combine GNU and SVE vectors in a binary operation} } */
*************** f (svuint8_t sve_u1, svint8_t sve_s1,
*** 400,405 ****
--- 483,502 ----
    gnu_u1 ? sve_u1 : gnu_u1; /* { dg-error {used vector type where scalar is required} } */
    gnu_u1 ? gnu_u1 : gnu_u1; /* { dg-error {used vector type where scalar is required} } */
  
+   /* Boolean conditional expressions.  */
+ 
+   uc ? sve_b1 : sve_b2;
+ 
+   sve_b1 ? sve_u1 : sve_u1; /* { dg-error {used vector type where scalar is required} } */
+   sve_b1 ? gnu_u1 : sve_u1; /* { dg-error {used vector type where scalar is required} } */
+   sve_b1 ? sve_u1 : gnu_u1; /* { dg-error {used vector type where scalar is required} } */
+   sve_b1 ? gnu_u1 : gnu_u1; /* { dg-error {used vector type where scalar is required} } */
+ 
+   sve_u1 ? sve_b1 : sve_b2; /* { dg-error {used vector type where scalar is required} } */
+   gnu_u1 ? sve_b1 : sve_b2; /* { dg-error {used vector type where scalar is required} } */
+   gnu_u1 ? gnu_u1 : sve_b1; /* { dg-error {used vector type where scalar is required} } */
+   gnu_u1 ? sve_b1 : gnu_u1; /* { dg-error {used vector type where scalar is required} } */
+ 
    /* Vector built-ins.  */
  
    __builtin_shuffle (sve_u1, sve_u1, sve_u1);
*************** f (svuint8_t sve_u1, svint8_t sve_s1,
*** 412,415 ****
--- 509,539 ----
    __builtin_convertvector (gnu_u1, svuint8_t);
    __builtin_convertvector (sve_u1, gnu_uint8_t);
    __builtin_convertvector (gnu_u1, gnu_uint8_t);
+ 
+   /* Boolean vector built-ins.  */
+ 
+   __builtin_shuffle (sve_b1, sve_b1, sve_s1);
+   __builtin_shuffle (sve_b1, sve_b1, sve_u1);
+   __builtin_shuffle (sve_b1, sve_b1, gnu_s1);
+   __builtin_shuffle (sve_b1, sve_b1, gnu_u1);
+ 
+   __builtin_shuffle (sve_b1, gnu_u1, gnu_u1); /* { dg-error {'__builtin_shuffle' argument vectors must be of the same type} } */
+   __builtin_shuffle (gnu_u1, sve_b1, gnu_u1); /* { dg-error {'__builtin_shuffle' argument vectors must be of the same type} } */
+ 
+   __builtin_convertvector (sve_b1, svint8_t);
+   __builtin_convertvector (sve_b1, svuint8_t);
+   __builtin_convertvector (sve_b1, gnu_int8_t);
+   __builtin_convertvector (sve_b1, gnu_uint8_t);
+ 
+   __builtin_convertvector (sve_s1, svbool_t);
+   __builtin_convertvector (gnu_s1, svbool_t);
+   __builtin_convertvector (sve_u1, svbool_t);
+   __builtin_convertvector (gnu_u1, svbool_t);
+ 
+   __builtin_convertvector (sve_b1, svint32_t); /* { dg-error {'__builtin_convertvector' number of elements of the first argument vector and the second argument vector type should be the same} } */
+   __builtin_convertvector (sve_b1, svuint32_t); /* { dg-error {'__builtin_convertvector' number of elements of the first argument vector and the second argument vector type should be the same} } */
+   __builtin_convertvector (sve_b1, gnu32_int32_t); /* { dg-error {'__builtin_convertvector' number of elements of the first argument vector and the second argument vector type should be the same} } */
+ 
+   __builtin_convertvector (sve_b1, gnu128_int32_t);
+   __builtin_convertvector (gnu128_s1, svbool_t);
  }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/sizeless-1.c gcc-16-20251116/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/sizeless-1.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/sizeless-1.c	Sun Nov  9 22:33:17 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/sizeless-1.c	Sun Nov 16 22:34:04 2025
*************** statements (int n)
*** 81,87 ****
    svint32_t init_sve_vc8 = { 0, 1, 2, 3, 4, 5 }; /* { dg-error {excess elements in vector initializer} } */
    svint32_t init_sve_vc9 = { 0, bar (), 2, 3, 4, n }; /* { dg-error {excess elements in vector initializer} } */
  
! 
  
    /* Compound literals.  */
  
--- 81,99 ----
    svint32_t init_sve_vc8 = { 0, 1, 2, 3, 4, 5 }; /* { dg-error {excess elements in vector initializer} } */
    svint32_t init_sve_vc9 = { 0, bar (), 2, 3, 4, n }; /* { dg-error {excess elements in vector initializer} } */
  
!   svbool_t init_sve_vb1 = { 0, -1 }; /* { dg-warning {overflow in conversion from} } */
!   svbool_t init_sve_vb2 = { 0, bar () };
!   svbool_t init_sve_vb3 = { bar (), n };
!   svbool_t init_sve_vb4 = { 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; /* { dg-warning {overflow in conversion from} } */
!   svbool_t init_sve_vb5 = { 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, bar (), 0, 0}; /* { dg-warning {overflow in conversion from} } */
!   svbool_t init_sve_vb6 = { 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1}; /* { dg-error {excess elements in vector initializer} } */
! 	/* { dg-warning "overflow in conversion from" "" { target *-*-* } .-1 } */
!   svbool_t init_sve_vb7 = { 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, bar ()}; /* { dg-error {excess elements in vector initializer} } */
! 	/* { dg-warning "overflow in conversion from" "" { target *-*-* } .-1 } */
!   svbool_t init_sve_vb8 = { 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, bar (), -1}; /* { dg-error {excess elements in vector initializer} } */
! 	/* { dg-warning "overflow in conversion from" "" { target *-*-* } .-1 } */
!   svbool_t init_sve_vb9 = { 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, bar (), n}; /* { dg-error {excess elements in vector initializer} } */
! 	/* { dg-warning "overflow in conversion from" "" { target *-*-* } .-1 } */
  
    /* Compound literals.  */
  
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/sizeless-2.c gcc-16-20251116/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/sizeless-2.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/sizeless-2.c	Sun Nov  9 22:33:17 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/sizeless-2.c	Sun Nov 16 22:34:04 2025
*************** statements (int n)
*** 81,86 ****
--- 81,118 ----
    svint32_t init_sve_vc8 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; /* { dg-warning {excess elements in vector initializer} } */
    svint32_t init_sve_vc9 = { 0, bar (), 2, 3, 4, 5, 6, 7, 8, 9, n }; /* { dg-warning {excess elements in vector initializer} } */
  
+   svbool_t init_sve_vb1 = { 0, -1 }; /* { dg-warning {overflow in conversion from} } */
+   svbool_t init_sve_vb2 = { 0, bar () };
+   svbool_t init_sve_vb3 = { bar (), n };
+   svbool_t init_sve_vb4 = { 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 			    0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
+ 		/* { dg-warning "overflow in conversion from" "" { target *-*-* } .-2 } */
+ 		/* { dg-warning "overflow in conversion from" "" { target *-*-* } .-2 } */
+   svbool_t init_sve_vb5 = { 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 			    0, -1, -1, -1, 0, 0, 0, bar (), 0, 0, 0, 0, 0, 0,
+ 			    0, 0 };
+ 		/* { dg-warning "overflow in conversion from" "" { target *-*-* } .-3 } */
+ 		/* { dg-warning "overflow in conversion from" "" { target *-*-* } .-3 } */
+   svbool_t init_sve_vb6 = { 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 			    0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 			    0 }; /* { dg-warning {excess elements in vector initializer} } */
+ 		/* { dg-warning "overflow in conversion from" "" { target *-*-* } .-3 } */
+ 		/* { dg-warning "overflow in conversion from" "" { target *-*-* } .-3 } */
+   svbool_t init_sve_vb7 = { 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 			    0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 			    bar () }; /* { dg-warning {excess elements in vector initializer} } */
+ 		/* { dg-warning "overflow in conversion from" "" { target *-*-* } .-3 } */
+ 		/* { dg-warning "overflow in conversion from" "" { target *-*-* } .-3 } */
+   svbool_t init_sve_vb8 = { 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 			    0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 			    bar (), -1 }; /* { dg-warning {excess elements in vector initializer} } */
+ 		/* { dg-warning "overflow in conversion from" "" { target *-*-* } .-3 } */
+ 		/* { dg-warning "overflow in conversion from" "" { target *-*-* } .-3 } */
+   svbool_t init_sve_vb9 = { 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 			    0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 			    bar (), n}; /* { dg-warning {excess elements in vector initializer} } */
+ 		/* { dg-warning "overflow in conversion from" "" { target *-*-* } .-3 } */
+ 		/* { dg-warning "overflow in conversion from" "" { target *-*-* } .-3 } */
  
    /* Compound literals.  */
  
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/svcount_1.c gcc-16-20251116/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/svcount_1.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/svcount_1.c	Sun Nov  9 22:33:17 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/svcount_1.c	Sun Nov 16 22:34:04 2025
*************** void f3 (svbool_t *p, svcount_t x) { *p
*** 6,10 ****
  void f4 (svcount_t *p, svbool_t x) { *p = x; } /* { dg-error {incompatible types} } */
  svbool_t *f5 (svcount_t *p) { return p; } /* { dg-error {incompatible return type} } */
  svcount_t *f6 (svbool_t *p) { return p; } /* { dg-error {incompatible return type} } */
! svbool_t f7 (svcount_t x) { return (svbool_t) x; } /* { dg-error {conversion to non-scalar} } */
  svcount_t f8 (svbool_t x) { return (svcount_t) x; } /* { dg-error {conversion to non-scalar} } */
--- 6,10 ----
  void f4 (svcount_t *p, svbool_t x) { *p = x; } /* { dg-error {incompatible types} } */
  svbool_t *f5 (svcount_t *p) { return p; } /* { dg-error {incompatible return type} } */
  svcount_t *f6 (svbool_t *p) { return p; } /* { dg-error {incompatible return type} } */
! svbool_t f7 (svcount_t x) { return (svbool_t) x; } /* { dg-error {cannot convert value to a vector} } */
  svcount_t f8 (svbool_t x) { return (svcount_t) x; } /* { dg-error {conversion to non-scalar} } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/arm/cmse/baseline/union-3.c gcc-16-20251116/gcc/testsuite/gcc.target/arm/cmse/baseline/union-3.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/arm/cmse/baseline/union-3.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/arm/cmse/baseline/union-3.c	Sun Nov 16 22:34:07 2025
***************
*** 0 ****
--- 1,29 ----
+ 
+ /* { dg-do compile } */
+ /* { dg-options "-mcmse" } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ #include "../union-3.x"
+ 
+ /*
+ ** fn_caller_0:
+ ** ...
+ **	lsrs	r4, r4, #1
+ **	lsls	r4, r4, #1
+ **	movs	r2, r4
+ **	movs	r3, r4
+ **	bl	__gnu_cmse_nonsecure_call
+ ** ...
+ */
+ 
+ /*
+ ** fn_caller_1:
+ ** ...
+ **	lsrs	r4, r4, #1
+ **	lsls	r4, r4, #1
+ **	movs	r1, r4
+ **	movs	r2, r4
+ **	movs	r3, r4
+ **	bl	__gnu_cmse_nonsecure_call
+ ** ...
+ */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/arm/cmse/baseline/union-4.c gcc-16-20251116/gcc/testsuite/gcc.target/arm/cmse/baseline/union-4.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/arm/cmse/baseline/union-4.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/arm/cmse/baseline/union-4.c	Sun Nov 16 22:34:07 2025
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mcmse" } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ #include "../union-4.x"
+ 
+ /*
+ ** fn:
+ ** ...
+ **	lsrs	r4, r4, #1
+ **	lsls	r4, r4, #1
+ **	mov	ip, r4
+ **	movw	r4, #7939
+ **	ands	r0, r4
+ **	mov	r4, ip
+ **	movs	r2, r4
+ **	movs	r3, r4
+ **	bl	__gnu_cmse_nonsecure_call
+ ** ...
+ */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/union-3.c gcc-16-20251116/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/union-3.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/union-3.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/union-3.c	Sun Nov 16 22:34:07 2025
***************
*** 0 ****
--- 1,32 ----
+ 
+ /* { dg-do compile } */
+ /* { dg-options "-mcmse" } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ #include "../../union-3.x"
+ 
+ /*
+ ** fn_caller_0:
+ ** ...
+ **	lsrs	r3, r3, #1
+ **	lsls	r3, r3, #1
+ **	push	{r4, r5, r6, r7, r8, r9, r10, fp}
+ This test is not meant to be to test the FP clearing, so accept any, preventing
+ the need to specialize the test further for different float-abi's
+ ** ...
+ **	clrm	{r2, r4, r5, r6, r7, r8, r9, r10, fp, ip, APSR}
+ **	blxns	r3
+ ** ...
+ */
+ 
+ /*
+ ** fn_caller_1:
+ ** ...
+ **	lsrs	r3, r3, #1
+ **	lsls	r3, r3, #1
+ **	push	{r4, r5, r6, r7, r8, r9, r10, fp}
+ ** ...
+ **	clrm	{r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, ip, APSR}
+ **	blxns	r3
+ ** ...
+ */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/arm/cmse/mainline/8m/hard/union-4.c gcc-16-20251116/gcc/testsuite/gcc.target/arm/cmse/mainline/8m/hard/union-4.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/arm/cmse/mainline/8m/hard/union-4.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/arm/cmse/mainline/8m/hard/union-4.c	Sun Nov 16 22:34:07 2025
***************
*** 0 ****
--- 1,27 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mcmse -mfloat-abi=hard -mfpu=fpv5-d16" }  */
+ /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=hard" } } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ #include "../../../union-4.x"
+ 
+ /*
+ ** fn:
+ ** ...
+ **	lsrs	r4, r4, #1
+ **	lsls	r4, r4, #1
+ **	movw	ip, #7939
+ **	and	r0, r0, ip
+ **	mov	r2, r4
+ **	mov	r3, r4
+ **	vmov.f64	d0, #1.0e\+0
+ **	vmov.f64	d1, #1.0e\+0
+ **	vmov.f64	d2, #1.0e\+0
+ **	vmov.f64	d3, #1.0e\+0
+ **	vmov.f64	d4, #1.0e\+0
+ **	vmov.f64	d5, #1.0e\+0
+ **	vmov.f64	d6, #1.0e\+0
+ **	vmov.f64	d7, #1.0e\+0
+ **	bl	__gnu_cmse_nonsecure_call
+ ** ...
+ */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/arm/cmse/mainline/8m/hard/union-fp.c gcc-16-20251116/gcc/testsuite/gcc.target/arm/cmse/mainline/8m/hard/union-fp.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/arm/cmse/mainline/8m/hard/union-fp.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/arm/cmse/mainline/8m/hard/union-fp.c	Sun Nov 16 22:34:07 2025
***************
*** 0 ****
--- 1,66 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mcmse -mfloat-abi=hard -mfpu=fpv5-d16" }  */
+ /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=hard" } } */
+ /* { dg-skip-if "Skip these if testing single precision" {*-*-*} {"-mfpu=*-sp-*"} {""} } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ union u_t_0 {
+     float f;
+ };
+ union u_t_1 {
+     double d;
+ };
+ 
+ typedef void (__attribute__ ((cmse_nonsecure_call)) fn_t_0)(union u_t_0);
+ typedef void (__attribute__ ((cmse_nonsecure_call)) fn_t_1)(union u_t_1);
+ 
+ void fn_caller_0 (fn_t_0 *f_ptr) {
+     union u_t_0 x = {0.0f};
+     f_ptr (x);
+ }
+ 
+ /*
+ ** fn_caller_0:
+ ** ...
+ **	lsrs	r4, r4, #1
+ **	lsls	r4, r4, #1
+ **	mov	r0, r4
+ **	mov	r1, r4
+ **	mov	r2, r4
+ **	mov	r3, r4
+ **	vmov.f32	s1, #1.0e\+0
+ **	vmov.f64	d1, #1.0e\+0
+ **	vmov.f64	d2, #1.0e\+0
+ **	vmov.f64	d3, #1.0e\+0
+ **	vmov.f64	d4, #1.0e\+0
+ **	vmov.f64	d5, #1.0e\+0
+ **	vmov.f64	d6, #1.0e\+0
+ **	vmov.f64	d7, #1.0e\+0
+ **	bl	__gnu_cmse_nonsecure_call
+ ** ...
+ */
+ 
+ void fn_caller_1 (fn_t_1 *f_ptr) {
+     union u_t_1 x = {0.0};
+     f_ptr (x);
+ }
+ 
+ /*
+ ** fn_caller_1:
+ ** ...
+ **	lsrs	r4, r4, #1
+ **	lsls	r4, r4, #1
+ **	mov	r0, r4
+ **	mov	r1, r4
+ **	mov	r2, r4
+ **	mov	r3, r4
+ **	vmov.f64	d1, #1.0e\+0
+ **	vmov.f64	d2, #1.0e\+0
+ **	vmov.f64	d3, #1.0e\+0
+ **	vmov.f64	d4, #1.0e\+0
+ **	vmov.f64	d5, #1.0e\+0
+ **	vmov.f64	d6, #1.0e\+0
+ **	vmov.f64	d7, #1.0e\+0
+ **	bl	__gnu_cmse_nonsecure_call
+ ** ...
+ */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/arm/cmse/mainline/8m/soft/union-4.c gcc-16-20251116/gcc/testsuite/gcc.target/arm/cmse/mainline/8m/soft/union-4.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/arm/cmse/mainline/8m/soft/union-4.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/arm/cmse/mainline/8m/soft/union-4.c	Sun Nov 16 22:34:07 2025
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mcmse" } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ #include "../../../union-4.x"
+ 
+ /*
+ ** fn:
+ ** ...
+ **	lsrs	r4, r4, #1
+ **	lsls	r4, r4, #1
+ **	movw	ip, #7939
+ **	and	r0, r0, ip
+ **	mov	r2, r4
+ **	mov	r3, r4
+ **	bl	__gnu_cmse_nonsecure_call
+ ** ...
+ */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/arm/cmse/mainline/8m/softfp/union-4.c gcc-16-20251116/gcc/testsuite/gcc.target/arm/cmse/mainline/8m/softfp/union-4.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/arm/cmse/mainline/8m/softfp/union-4.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/arm/cmse/mainline/8m/softfp/union-4.c	Sun Nov 16 22:34:07 2025
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mcmse -mfloat-abi=softfp -mfpu=fpv5-d16" }  */
+ /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=softfp" } } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ #include "../../../union-4.x"
+ 
+ /*
+ ** fn:
+ ** ...
+ **	lsrs	r4, r4, #1
+ **	lsls	r4, r4, #1
+ **	movw	ip, #7939
+ **	and	r0, r0, ip
+ **	mov	r2, r4
+ **	mov	r3, r4
+ **	bl	__gnu_cmse_nonsecure_call
+ ** ...
+ */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/arm/cmse/mainline/8m/union-3.c gcc-16-20251116/gcc/testsuite/gcc.target/arm/cmse/mainline/8m/union-3.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/arm/cmse/mainline/8m/union-3.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/arm/cmse/mainline/8m/union-3.c	Sun Nov 16 22:34:07 2025
***************
*** 0 ****
--- 1,33 ----
+ 
+ /* { dg-do compile } */
+ /* { dg-options "-mcmse" } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ #include "../../union-3.x"
+ 
+ /*
+ ** fn_caller_0:
+ ** ...
+ **	lsrs	r4, r4, #1
+ **	lsls	r4, r4, #1
+ **	mov	r2, r4
+ **	mov	r3, r4
+ This test is not meant to be to test the FP clearing, so accept any, preventing
+ the need to specialize the test further for different float-abi's
+ ** ...
+ **	bl	__gnu_cmse_nonsecure_call
+ ** ...
+ */
+ 
+ /*
+ ** fn_caller_1:
+ ** ...
+ **	lsrs	r4, r4, #1
+ **	lsls	r4, r4, #1
+ **	mov	r1, r4
+ **	mov	r2, r4
+ **	mov	r3, r4
+ ** ...
+ **	bl	__gnu_cmse_nonsecure_call
+ ** ...
+ */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/arm/cmse/union-3.x gcc-16-20251116/gcc/testsuite/gcc.target/arm/cmse/union-3.x
*** gcc-16-20251109/gcc/testsuite/gcc.target/arm/cmse/union-3.x	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/arm/cmse/union-3.x	Sun Nov 16 22:34:07 2025
***************
*** 0 ****
--- 1,23 ----
+ #include <arm_cmse.h>
+ 
+ union u_t_0 {
+   long long ll;
+ };
+ 
+ typedef void(__attribute__((cmse_nonsecure_call)) fn_t_0)(union u_t_0);
+ 
+ void fn_caller_0(fn_t_0 *f_ptr) {
+   union u_t_0 x = {1234};
+   f_ptr(x);
+ }
+ 
+ union u_t_1 {
+   long int l;
+ };
+ 
+ typedef void(__attribute__((cmse_nonsecure_call)) fn_t_1)(union u_t_1);
+ 
+ void fn_caller_1(fn_t_1 *f_ptr) {
+   union u_t_1 x = {1234};
+   f_ptr(x);
+ }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/arm/cmse/union-4.x gcc-16-20251116/gcc/testsuite/gcc.target/arm/cmse/union-4.x
*** gcc-16-20251109/gcc/testsuite/gcc.target/arm/cmse/union-4.x	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/arm/cmse/union-4.x	Sun Nov 16 22:34:07 2025
***************
*** 0 ****
--- 1,41 ----
+ typedef struct
+ {
+   unsigned char	  a :2;
+   unsigned char	    :0;
+   unsigned short  b :5;
+   float		  f;
+ } test_st_1;
+ 
+ typedef union
+ {
+   test_st_1 st_1;
+ }test_un;
+ 
+ typedef union
+ {
+   test_un un;
+   struct
+     {
+       unsigned int v1;
+       unsigned int v2;
+       unsigned int v3;
+       unsigned int v4;
+     }values;
+ } read_un;
+ 
+ 
+ typedef void __attribute__ ((cmse_nonsecure_call)) (*foo_ns) (test_un);
+ 
+ int
+ fn (foo_ns fptr)
+ {
+   read_un r;
+ 
+   r.values.v1 = 0xFFFFFFFF;
+   r.values.v2 = 0xFFFFFFFF;
+   r.values.v3 = 0xFFFFFFFF;
+   r.values.v4 = 0xFFFFFFFF;
+ 
+   fptr (r.un);
+   return 0;
+ }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/asrl-various-ranges.c gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/asrl-various-ranges.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/asrl-various-ranges.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/asrl-various-ranges.c	Sun Nov 16 22:34:07 2025
***************
*** 0 ****
--- 1,161 ----
+ /* { dg-require-effective-target arm_v8_1m_mve_ok } */
+ /* { dg-add-options arm_v8_1m_mve } */
+ /* { dg-additional-options "-O2" } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ /* Check that calling asrl with an out of range shift amount is not interpreted
+    as undefined behavior, and that we actually use the asrl instruction (except
+    if a negative shift amount can be handled by lsll).  Check code generation
+    for various special cases:
+    1 <= amount <= 32
+    -32 <= amount <= -1
+    32 < amount < 64
+    -64 < amount < -32
+    amount >= 64
+    amount <= -64
+    amount == 0
+    amount unknown at compile time. */
+ #include "arm_mve.h"
+ 
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+   /* Positive shift amount in [1.32] range, use the immediate:
+ 
+    asrl r0, r1, #3  */
+ /*
+ **foo_3:
+ **	...
+ **	asrl	(?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #3(?:	@.*|)
+ **	...
+ */
+ int64_t
+ foo_3 (int64_t value)
+ {
+   return asrl (value, 3);
+ }
+ 
+   /* Negative shift amount in [-32.-1] range, reverse shift (lsll) with the
+      opposite shift amount as immediate:
+ 
+      lsll r0, r1, #3  */
+ /*
+ **foo_m3:
+ **	...
+ **	lsll	(?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #3(?:	@.*|)
+ **	...
+ */
+ int64_t
+ foo_m3 (int64_t value)
+ {
+   return asrl (value, -3);
+ }
+ 
+   /* Out of [1.32] range positive shift amount, but < 64.
+      lo_out = hi_in >> (amount - 32)
+      hi_out = hi_in >> 31 (to copy the sign bit)
+ 
+      asrs r0, r1, #1
+      asrs r1, r1, #31   */
+ /*
+ **foo_33:
+ **	...
+ **	asrs	(?:ip|fp|r[0-9]+), (ip|fp|r[0-9]+), #1(?:	@.*|)
+ **	asrs	(?:ip|fp|r[0-9]+), \1, #31(?:	@.*|)
+ **	...
+ */
+ int64_t
+ foo_33 (int64_t value)
+ {
+   return asrl (value, 33);
+ }
+ 
+   /* Out of [-32..-1] range negative shift amount, but > -64. Reverse shift
+      (lsll equivalent) in [33.64] range:
+      hi_out = lo_in << (-amount - 32)
+      lo_out = 0 
+ 
+      lsls r1, r0, #1
+      movs r0, #0  */
+ /*
+ **foo_m33:
+ **	...
+ **	lsls	(?:ip|fp|r[0-9]+), (ip|fp|r[0-9]+), #1(?:	@.*|)
+ **	movs	\1, #0(?:	@.*|)
+ **	...
+ */
+ int64_t
+ foo_m33 (int64_t value)
+ {
+   return asrl (value, -33);
+ }
+ 
+   /* Out of range positive shift amount (>= 64)
+      lo_out = hi_in >> 31 (copy sign bit)
+      hi_out = hi_in >> 31
+ 
+      asrs r0, r1, #31
+      mov r1, r0  */
+ /*
+ **foo_65:
+ **	...
+ **	asrs	(ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #31(?:	@.*|)
+ **	mov	(?:ip|fp|r[0-9]+), \1(?:	@.*|)
+ **	...
+ */
+ int64_t
+ foo_65 (int64_t value)
+ {
+   return asrl (value, 65);
+ }
+ 
+   /* Out of range negative shift amount (<= 64), result is 0.
+ 
+    movs r0, #0
+    movs r1, #0  */
+ /*
+ **foo_m65:
+ **	...
+ **	movs	(ip|fp|r[0-9]+), #0(?:	@.*|)
+ **	movs	(ip|fp|r[0-9]+), #0(?:	@.*|)
+ **	...
+ */
+ int64_t
+ foo_m65 (int64_t value)
+ {
+   return asrl (value, -65);
+ }
+ 
+   /* shift amount == 0, use a mov, which is optimized out.  */
+ /*
+ **foo_0:
+ **	bx	lr
+ **	...
+ */
+ int64_t
+ foo_0 (int64_t value)
+ {
+   return asrl (value, 0);
+ }
+ 
+   /* Unknown shift amount, use the register variant.
+ 
+      asrl r0, r1, r2  */
+ /*
+ **foo_var:
+ **	...
+ **	asrl	(?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+)(?:	@.*|)
+ **	...
+ */
+ int64_t
+ foo_var (int64_t value, int32_t amount)
+ {
+   return asrl (value, amount);
+ }
+ 
+ #ifdef __cplusplus
+ }
+ #endif
+ 
+ /* { dg-final { scan-assembler-not "__ARM_undef" } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/lsll-various-ranges.c gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/lsll-various-ranges.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/lsll-various-ranges.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/lsll-various-ranges.c	Sun Nov 16 22:34:07 2025
***************
*** 0 ****
--- 1,160 ----
+  /* { dg-require-effective-target arm_v8_1m_mve_ok } */
+ /* { dg-add-options arm_v8_1m_mve } */
+ /* { dg-additional-options "-O2" } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ /* Check that calling lsll with an out of range shift amount is not interpreted
+    as undefined behavior, and that we actually use the lsll instruction (except
+    if a negative shift amount can be handled by asrl).  Check code generation
+    for various special cases:
+    1 <= amount <= 32
+    -32 <= amount <= -1
+    32 < amount < 64
+    -64 < amount < -32
+    amount >= 64
+    amount <= -64
+    amount == 0
+    amount unknown at compile time. */
+ #include "arm_mve.h"
+ 
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+   /* Positive shift amount in [1.32] range, use the immediate:
+ 
+      lsll r0,r1,#3  */
+ /*
+ **foo_3:
+ **	...
+ **	lsll	(?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #3(?:	@.*|)
+ **	...
+ */
+ uint64_t
+ foo_3 (uint64_t value)
+ {
+   return lsll (value, 3);
+ }
+ 
+   /* Negative shift amount in [-32.-1] range, reverse shift (asrl) with the
+      opposite shift amount as immediate:
+ 
+      lsrl r0, r1, #3  */
+ /*
+ **foo_m3:
+ **	...
+ **	lsrl	(?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #3(?:	@.*|)
+ **	...
+ */
+ uint64_t
+ foo_m3 (uint64_t value)
+ {
+   return lsll (value, -3);
+ }
+ 
+   /* Out of [1..32] range positive shift amount, but < 64.
+      high_out = low_in << (amount - 32) (using lsls, not lsll)
+      low_out = 0
+ 
+      lsls r1,r0,#1
+      movs r0, #0  */
+ /*
+ **foo_33:
+ **	...
+ **	lsls	(?:ip|fp|r[0-9]+), (ip|fp|r[0-9]+), #1(?:	@.*|)
+ **	movs	\1, #0(?:	@.*|)
+ **	...
+ */
+ uint64_t
+ foo_33 (uint64_t value)
+ {
+   return lsll (value, 33);
+ }
+ 
+   /* Out of [-32..-1] range negative shift amount, but > -64.  Reverse shift
+      (lsrl equivalent) in [33..64] range:
+      lo_out = hi_in >> (amount - 32)
+      hi_out = 0
+ 
+      lsrs r0, r1, #1
+      movs r1, #0  */
+ /*
+ **foo_m33:
+ **	...
+ **	lsrs	(?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #1(?:	@.*|)
+ **	movs	(?:ip|fp|r[0-9]+), #0(?:	@.*|)
+ **	...
+ */
+ uint64_t
+ foo_m33 (uint64_t value)
+ {
+   return lsll (value, -33);
+ }
+ 
+   /* Out of range positive shift amount (>= 64), result is 0.
+ 
+      movs r0, #0
+      movs r1, #0  */
+ /*
+ **foo_65:
+ **	...
+ **	movs	(ip|fp|r[0-9]+), #0(?:	@.*|)
+ **	movs	(ip|fp|r[0-9]+), #0(?:	@.*|)
+ **	...
+ */
+ uint64_t
+ foo_65 (uint64_t value)
+ {
+   return lsll (value, 65);
+ }
+ 
+   /* Out of range negative shift amount (<= -64), result is 0, because lsll
+      uses an unsigned input.
+ 
+      movs r0, #0
+      movs r1, #0  */
+ /*
+ **foo_m65:
+ **	...
+ **	movs	(ip|fp|r[0-9]+), #0(?:	@.*|)
+ **	movs	(ip|fp|r[0-9]+), #0(?:	@.*|)
+ **	...
+ */
+ uint64_t
+ foo_m65 (uint64_t value)
+ {
+   return lsll (value, -65);
+ }
+ 
+   /* shift amount == 0, use a mov, which is optimized out.  */
+ /*
+ **foo_0:
+ **	bx	lr
+ **	...
+ */
+ uint64_t
+ foo_0 (uint64_t value)
+ {
+   return lsll (value, 0);
+ }
+ 
+   /* Unknown shift amount, use the register variant.
+ 
+    lsll r0, r1, r2  */
+ /*
+ **foo_var:
+ **	...
+ **	lsll	(?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+)(?:	@.*|)
+ **	...
+ */
+ uint64_t
+ foo_var (uint64_t value, int32_t amount)
+ {
+   return lsll (value, amount);
+ }
+ 
+ #ifdef __cplusplus
+ }
+ #endif
+ 
+ /* { dg-final { scan-assembler-not "__ARM_undef" } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr122175.c gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr122175.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr122175.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr122175.c	Sun Nov 16 22:34:07 2025
***************
*** 0 ****
--- 1,38 ----
+ /* { dg-require-effective-target arm_v8_1m_mve_ok } */
+ /* { dg-add-options arm_v8_1m_mve } */
+ /* { dg-additional-options "-O2" } */
+ 
+ #include <arm_mve.h>
+ 
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+ uint16x8_t test_1(uint16x8_t v11) {
+   return vbicq_n_u16(v11, 0x8000);
+ }
+ 
+ uint16x8_t test_2(uint16x8_t v11) {
+   return vorrq_n_u16(v11, 0x8000);
+ }
+ 
+ uint16x8_t test_3() {
+   return vmvnq_n_u16(0x8000);
+ }
+ 
+ mve_pred16_t pred;
+ uint16x8_t test_4(uint16x8_t v11) {
+   return vbicq_m_n_u16(v11, 0x8000, pred);
+ }
+ 
+ uint16x8_t test_5(uint16x8_t v11) {
+   return vorrq_m_n_u16(v11, 0x8000, pred);
+ }
+ 
+ uint16x8_t test_6() {
+   return vmvnq_x_n_u16(0x8000, pred);
+ }
+ 
+ #ifdef __cplusplus
+ }
+ #endif
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/sqshl_check_shift.c gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/sqshl_check_shift.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/sqshl_check_shift.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/sqshl_check_shift.c	Sun Nov 16 22:34:07 2025
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-require-effective-target arm_v8_1m_mve_ok } */
+ /* { dg-add-options arm_v8_1m_mve } */
+ 
+ #include "arm_mve.h"
+ 
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+ int32_t
+ foo (int32_t value)
+ {
+   return sqshl (value, 33); /* { dg-error {passing 33 to argument 2 of 'sqshl', which expects a value in the range \[1, 32\]} } */
+ }
+ 
+ int32_t
+ foo1 (int32_t value)
+ {
+   return sqshl (value, -1); /* { dg-error {passing -1 to argument 2 of 'sqshl', which expects a value in the range \[1, 32\]} } */
+ }
+ 
+ #ifdef __cplusplus
+ }
+ #endif
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/sqshll_check_shift.c gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/sqshll_check_shift.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/sqshll_check_shift.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/sqshll_check_shift.c	Sun Nov 16 22:34:07 2025
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-require-effective-target arm_v8_1m_mve_ok } */
+ /* { dg-add-options arm_v8_1m_mve } */
+ 
+ #include "arm_mve.h"
+ 
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+ int64_t
+ foo (int64_t value)
+ {
+   return sqshll (value, 33); /* { dg-error {passing 33 to argument 2 of 'sqshll', which expects a value in the range \[1, 32\]} } */
+ }
+ 
+ int64_t
+ foo1 (int64_t value)
+ {
+   return sqshll (value, -1); /* { dg-error {passing -1 to argument 2 of 'sqshll', which expects a value in the range \[1, 32\]} } */
+ }
+ 
+ #ifdef __cplusplus
+ }
+ #endif
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/srshr_check_shift.c gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/srshr_check_shift.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/srshr_check_shift.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/srshr_check_shift.c	Sun Nov 16 22:34:07 2025
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-require-effective-target arm_v8_1m_mve_ok } */
+ /* { dg-add-options arm_v8_1m_mve } */
+ 
+ #include "arm_mve.h"
+ 
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+ int32_t
+ foo (int32_t value)
+ {
+   return srshr (value, 33); /* { dg-error {passing 33 to argument 2 of 'srshr', which expects a value in the range \[1, 32\]} } */
+ }
+ 
+ int32_t
+ foo1 (int32_t value)
+ {
+   return srshr (value, -1); /* { dg-error {passing -1 to argument 2 of 'srshr', which expects a value in the range \[1, 32\]} } */
+ }
+ 
+ #ifdef __cplusplus
+ }
+ #endif
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/srshrl_check_shift.c gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/srshrl_check_shift.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/srshrl_check_shift.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/srshrl_check_shift.c	Sun Nov 16 22:34:07 2025
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-require-effective-target arm_v8_1m_mve_ok } */
+ /* { dg-add-options arm_v8_1m_mve } */
+ 
+ #include "arm_mve.h"
+ 
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+ int64_t
+ foo (int64_t value)
+ {
+   return srshrl (value, 33); /* { dg-error {passing 33 to argument 2 of 'srshrl', which expects a value in the range \[1, 32\]} } */
+ }
+ 
+ int64_t
+ foo1 (int64_t value)
+ {
+   return srshrl (value, -1); /* { dg-error {passing -1 to argument 2 of 'srshrl', which expects a value in the range \[1, 32\]} } */
+ }
+ 
+ #ifdef __cplusplus
+ }
+ #endif
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/uqshl_check_shift.c gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/uqshl_check_shift.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/uqshl_check_shift.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/uqshl_check_shift.c	Sun Nov 16 22:34:07 2025
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-require-effective-target arm_v8_1m_mve_ok } */
+ /* { dg-add-options arm_v8_1m_mve } */
+ 
+ #include "arm_mve.h"
+ 
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+ uint32_t
+ foo (uint32_t value)
+ {
+   return uqshl (value, 33); /* { dg-error {passing 33 to argument 2 of 'uqshl', which expects a value in the range \[1, 32\]} } */
+ }
+ 
+ uint32_t
+ foo1 (uint32_t value)
+ {
+   return uqshl (value, -1); /* { dg-error {passing -1 to argument 2 of 'uqshl', which expects a value in the range \[1, 32\]} } */
+ }
+ 
+ #ifdef __cplusplus
+ }
+ #endif
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/uqshll_check_shift.c gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/uqshll_check_shift.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/uqshll_check_shift.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/uqshll_check_shift.c	Sun Nov 16 22:34:07 2025
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-require-effective-target arm_v8_1m_mve_ok } */
+ /* { dg-add-options arm_v8_1m_mve } */
+ 
+ #include "arm_mve.h"
+ 
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+ uint64_t
+ foo (uint64_t value)
+ {
+   return uqshll (value, 33); /* { dg-error {passing 33 to argument 2 of 'uqshll', which expects a value in the range \[1, 32\]} } */
+ }
+ 
+ uint64_t
+ foo1 (uint64_t value)
+ {
+   return uqshll (value, -1); /* { dg-error {passing -1 to argument 2 of 'uqshll', which expects a value in the range \[1, 32\]} } */
+ }
+ 
+ #ifdef __cplusplus
+ }
+ #endif
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/urshr_check_shift.c gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/urshr_check_shift.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/urshr_check_shift.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/urshr_check_shift.c	Sun Nov 16 22:34:07 2025
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-require-effective-target arm_v8_1m_mve_ok } */
+ /* { dg-add-options arm_v8_1m_mve } */
+ 
+ #include "arm_mve.h"
+ 
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+ uint32_t
+ foo (uint32_t value)
+ {
+   return urshr (value, 33); /* { dg-error {passing 33 to argument 2 of 'urshr', which expects a value in the range \[1, 32\]} } */
+ }
+ 
+ uint32_t
+ foo1 (uint32_t value)
+ {
+   return urshr (value, -1); /* { dg-error {passing -1 to argument 2 of 'urshr', which expects a value in the range \[1, 32\]} } */
+ }
+ 
+ #ifdef __cplusplus
+ }
+ #endif
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/urshrl_check_shift.c gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/urshrl_check_shift.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/urshrl_check_shift.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/urshrl_check_shift.c	Sun Nov 16 22:34:07 2025
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-require-effective-target arm_v8_1m_mve_ok } */
+ /* { dg-add-options arm_v8_1m_mve } */
+ 
+ #include "arm_mve.h"
+ 
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+ uint64_t
+ foo (uint64_t value)
+ {
+   return urshrl (value, 33); /* { dg-error {passing 33 to argument 2 of 'urshrl', which expects a value in the range \[1, 32\]} } */
+ }
+ 
+ uint64_t
+ foo1 (uint64_t value)
+ {
+   return urshrl (value, -1); /* { dg-error {passing -1 to argument 2 of 'urshrl', which expects a value in the range \[1, 32\]} } */
+ }
+ 
+ #ifdef __cplusplus
+ }
+ #endif
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_s16.c gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_s16.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_s16.c	Sun Nov  9 22:33:22 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_s16.c	Sun Nov 16 22:34:07 2025
*************** extern "C" {
*** 16,22 ****
  **	...
  **	vpst(?:	@.*|)
  **	...
! **	vbict.i16	q[0-9]+, #[0-9]+(?:	@.*|)
  **	...
  */
  int16x8_t
--- 16,22 ----
  **	...
  **	vpst(?:	@.*|)
  **	...
! **	vbict.i16	q[0-9]+, [0-9]+(?:	@.*|)
  **	...
  */
  int16x8_t
*************** foo (int16x8_t a, mve_pred16_t p)
*** 33,39 ****
  **	...
  **	vpst(?:	@.*|)
  **	...
! **	vbict.i16	q[0-9]+, #[0-9]+(?:	@.*|)
  **	...
  */
  int16x8_t
--- 33,39 ----
  **	...
  **	vpst(?:	@.*|)
  **	...
! **	vbict.i16	q[0-9]+, [0-9]+(?:	@.*|)
  **	...
  */
  int16x8_t
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_u16.c gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_u16.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_u16.c	Sun Nov  9 22:33:22 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_m_n_u16.c	Sun Nov 16 22:34:07 2025
*************** extern "C" {
*** 16,22 ****
  **	...
  **	vpst(?:	@.*|)
  **	...
! **	vbict.i16	q[0-9]+, #[0-9]+(?:	@.*|)
  **	...
  */
  uint16x8_t
--- 16,22 ----
  **	...
  **	vpst(?:	@.*|)
  **	...
! **	vbict.i16	q[0-9]+, [0-9]+(?:	@.*|)
  **	...
  */
  uint16x8_t
*************** foo (uint16x8_t a, mve_pred16_t p)
*** 33,39 ****
  **	...
  **	vpst(?:	@.*|)
  **	...
! **	vbict.i16	q[0-9]+, #[0-9]+(?:	@.*|)
  **	...
  */
  uint16x8_t
--- 33,39 ----
  **	...
  **	vpst(?:	@.*|)
  **	...
! **	vbict.i16	q[0-9]+, [0-9]+(?:	@.*|)
  **	...
  */
  uint16x8_t
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_s16.c gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_s16.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_s16.c	Sun Nov  9 22:33:22 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_s16.c	Sun Nov 16 22:34:07 2025
*************** extern "C" {
*** 12,18 ****
  /*
  **foo:
  **	...
! **	vbic.i16	q[0-9]+, #[0-9]+(?:	@.*|)
  **	...
  */
  int16x8_t
--- 12,18 ----
  /*
  **foo:
  **	...
! **	vbic.i16	q[0-9]+, [0-9]+(?:	@.*|)
  **	...
  */
  int16x8_t
*************** foo (int16x8_t a)
*** 25,31 ****
  /*
  **foo1:
  **	...
! **	vbic.i16	q[0-9]+, #[0-9]+(?:	@.*|)
  **	...
  */
  int16x8_t
--- 25,31 ----
  /*
  **foo1:
  **	...
! **	vbic.i16	q[0-9]+, [0-9]+(?:	@.*|)
  **	...
  */
  int16x8_t
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_u16.c gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_u16.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_u16.c	Sun Nov  9 22:33:22 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_u16.c	Sun Nov 16 22:34:07 2025
*************** extern "C" {
*** 12,18 ****
  /*
  **foo:
  **	...
! **	vbic.i16	q[0-9]+, #[0-9]+(?:	@.*|)
  **	...
  */
  uint16x8_t
--- 12,18 ----
  /*
  **foo:
  **	...
! **	vbic.i16	q[0-9]+, [0-9]+(?:	@.*|)
  **	...
  */
  uint16x8_t
*************** foo (uint16x8_t a)
*** 25,31 ****
  /*
  **foo1:
  **	...
! **	vbic.i16	q[0-9]+, #[0-9]+(?:	@.*|)
  **	...
  */
  uint16x8_t
--- 25,31 ----
  /*
  **foo1:
  **	...
! **	vbic.i16	q[0-9]+, [0-9]+(?:	@.*|)
  **	...
  */
  uint16x8_t
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_s16.c gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_s16.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_s16.c	Sun Nov  9 22:33:22 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_s16.c	Sun Nov 16 22:34:07 2025
*************** extern "C" {
*** 16,22 ****
  **	...
  **	vpst(?:	@.*|)
  **	...
! **	vmvnt.i16	q[0-9]+, #[0-9]+(?:	@.*|)
  **	...
  */
  int16x8_t
--- 16,22 ----
  **	...
  **	vpst(?:	@.*|)
  **	...
! **	vmvnt.i16	q[0-9]+, [0-9]+(?:	@.*|)
  **	...
  */
  int16x8_t
*************** foo (int16x8_t inactive, mve_pred16_t p)
*** 33,39 ****
  **	...
  **	vpst(?:	@.*|)
  **	...
! **	vmvnt.i16	q[0-9]+, #[0-9]+(?:	@.*|)
  **	...
  */
  int16x8_t
--- 33,39 ----
  **	...
  **	vpst(?:	@.*|)
  **	...
! **	vmvnt.i16	q[0-9]+, [0-9]+(?:	@.*|)
  **	...
  */
  int16x8_t
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_u16.c gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_u16.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_u16.c	Sun Nov  9 22:33:22 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_u16.c	Sun Nov 16 22:34:07 2025
*************** extern "C" {
*** 16,22 ****
  **	...
  **	vpst(?:	@.*|)
  **	...
! **	vmvnt.i16	q[0-9]+, #[0-9]+(?:	@.*|)
  **	...
  */
  uint16x8_t
--- 16,22 ----
  **	...
  **	vpst(?:	@.*|)
  **	...
! **	vmvnt.i16	q[0-9]+, [0-9]+(?:	@.*|)
  **	...
  */
  uint16x8_t
*************** foo (uint16x8_t inactive, mve_pred16_t p
*** 33,39 ****
  **	...
  **	vpst(?:	@.*|)
  **	...
! **	vmvnt.i16	q[0-9]+, #[0-9]+(?:	@.*|)
  **	...
  */
  uint16x8_t
--- 33,39 ----
  **	...
  **	vpst(?:	@.*|)
  **	...
! **	vmvnt.i16	q[0-9]+, [0-9]+(?:	@.*|)
  **	...
  */
  uint16x8_t
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_s16.c gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_s16.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_s16.c	Sun Nov  9 22:33:22 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_s16.c	Sun Nov 16 22:34:07 2025
*************** extern "C" {
*** 12,18 ****
  /*
  **foo:
  **	...
! **	vmvn.i16	q[0-9]+, #[0-9]+(?:	@.*|)
  **	...
  */
  int16x8_t
--- 12,18 ----
  /*
  **foo:
  **	...
! **	vmvn.i16	q[0-9]+, [0-9]+(?:	@.*|)
  **	...
  */
  int16x8_t
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_u16.c gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_u16.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_u16.c	Sun Nov  9 22:33:22 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_n_u16.c	Sun Nov 16 22:34:07 2025
*************** extern "C" {
*** 12,18 ****
  /*
  **foo:
  **	...
! **	vmvn.i16	q[0-9]+, #[0-9]+(?:	@.*|)
  **	...
  */
  uint16x8_t
--- 12,18 ----
  /*
  **foo:
  **	...
! **	vmvn.i16	q[0-9]+, [0-9]+(?:	@.*|)
  **	...
  */
  uint16x8_t
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_s16.c gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_s16.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_s16.c	Sun Nov  9 22:33:22 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_s16.c	Sun Nov 16 22:34:07 2025
*************** extern "C" {
*** 16,22 ****
  **	...
  **	vpst(?:	@.*|)
  **	...
! **	vmvnt.i16	q[0-9]+, #[0-9]+(?:	@.*|)
  **	...
  */
  int16x8_t
--- 16,22 ----
  **	...
  **	vpst(?:	@.*|)
  **	...
! **	vmvnt.i16	q[0-9]+, [0-9]+(?:	@.*|)
  **	...
  */
  int16x8_t
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_u16.c gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_u16.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_u16.c	Sun Nov  9 22:33:22 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_n_u16.c	Sun Nov 16 22:34:07 2025
*************** extern "C" {
*** 16,22 ****
  **	...
  **	vpst(?:	@.*|)
  **	...
! **	vmvnt.i16	q[0-9]+, #[0-9]+(?:	@.*|)
  **	...
  */
  uint16x8_t
--- 16,22 ----
  **	...
  **	vpst(?:	@.*|)
  **	...
! **	vmvnt.i16	q[0-9]+, [0-9]+(?:	@.*|)
  **	...
  */
  uint16x8_t
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_s16.c gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_s16.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_s16.c	Sun Nov  9 22:33:22 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_s16.c	Sun Nov 16 22:34:07 2025
*************** extern "C" {
*** 16,22 ****
  **	...
  **	vpst(?:	@.*|)
  **	...
! **	vorrt.i16	q[0-9]+, #[0-9]+(?:	@.*|)
  **	...
  */
  int16x8_t
--- 16,22 ----
  **	...
  **	vpst(?:	@.*|)
  **	...
! **	vorrt.i16	q[0-9]+, [0-9]+(?:	@.*|)
  **	...
  */
  int16x8_t
*************** foo (int16x8_t a, mve_pred16_t p)
*** 33,39 ****
  **	...
  **	vpst(?:	@.*|)
  **	...
! **	vorrt.i16	q[0-9]+, #[0-9]+(?:	@.*|)
  **	...
  */
  int16x8_t
--- 33,39 ----
  **	...
  **	vpst(?:	@.*|)
  **	...
! **	vorrt.i16	q[0-9]+, [0-9]+(?:	@.*|)
  **	...
  */
  int16x8_t
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_u16.c gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_u16.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_u16.c	Sun Nov  9 22:33:22 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_m_n_u16.c	Sun Nov 16 22:34:07 2025
*************** extern "C" {
*** 16,22 ****
  **	...
  **	vpst(?:	@.*|)
  **	...
! **	vorrt.i16	q[0-9]+, #[0-9]+(?:	@.*|)
  **	...
  */
  uint16x8_t
--- 16,22 ----
  **	...
  **	vpst(?:	@.*|)
  **	...
! **	vorrt.i16	q[0-9]+, [0-9]+(?:	@.*|)
  **	...
  */
  uint16x8_t
*************** foo (uint16x8_t a, mve_pred16_t p)
*** 33,39 ****
  **	...
  **	vpst(?:	@.*|)
  **	...
! **	vorrt.i16	q[0-9]+, #[0-9]+(?:	@.*|)
  **	...
  */
  uint16x8_t
--- 33,39 ----
  **	...
  **	vpst(?:	@.*|)
  **	...
! **	vorrt.i16	q[0-9]+, [0-9]+(?:	@.*|)
  **	...
  */
  uint16x8_t
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_s16.c gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_s16.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_s16.c	Sun Nov  9 22:33:22 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_s16.c	Sun Nov 16 22:34:07 2025
*************** extern "C" {
*** 12,18 ****
  /*
  **foo:
  **	...
! **	vorr.i16	q[0-9]+, #[0-9]+(?:	@.*|)
  **	...
  */
  int16x8_t
--- 12,18 ----
  /*
  **foo:
  **	...
! **	vorr.i16	q[0-9]+, [0-9]+(?:	@.*|)
  **	...
  */
  int16x8_t
*************** foo (int16x8_t a)
*** 25,31 ****
  /*
  **foo1:
  **	...
! **	vorr.i16	q[0-9]+, #[0-9]+(?:	@.*|)
  **	...
  */
  int16x8_t
--- 25,31 ----
  /*
  **foo1:
  **	...
! **	vorr.i16	q[0-9]+, [0-9]+(?:	@.*|)
  **	...
  */
  int16x8_t
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_u16.c gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_u16.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_u16.c	Sun Nov  9 22:33:22 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vorrq_n_u16.c	Sun Nov 16 22:34:07 2025
*************** extern "C" {
*** 12,18 ****
  /*
  **foo:
  **	...
! **	vorr.i16	q[0-9]+, #[0-9]+(?:	@.*|)
  **	...
  */
  uint16x8_t
--- 12,18 ----
  /*
  **foo:
  **	...
! **	vorr.i16	q[0-9]+, [0-9]+(?:	@.*|)
  **	...
  */
  uint16x8_t
*************** foo (uint16x8_t a)
*** 25,31 ****
  /*
  **foo1:
  **	...
! **	vorr.i16	q[0-9]+, #[0-9]+(?:	@.*|)
  **	...
  */
  uint16x8_t
--- 25,31 ----
  /*
  **foo1:
  **	...
! **	vorr.i16	q[0-9]+, [0-9]+(?:	@.*|)
  **	...
  */
  uint16x8_t
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/i386/amxbf16-asmintel-1.c gcc-16-20251116/gcc/testsuite/gcc.target/i386/amxbf16-asmintel-1.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/i386/amxbf16-asmintel-1.c	Sun Nov  9 22:33:24 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/i386/amxbf16-asmintel-1.c	Sun Nov 16 22:34:08 2025
***************
*** 1,7 ****
  /* { dg-do compile { target { ! ia32 } } } */
  /* { dg-require-effective-target masm_intel } */
  /* { dg-options "-O2 -mamx-bf16 -masm=intel" } */
! /* { dg-final { scan-assembler "tdpbf16ps\[ \\t]+\[^\n\]*%tmm1+\[^\n\]*%tmm2+\[^\n\]*%tmm3"  } } */
  #include <immintrin.h>
  
  void TEST ()
--- 1,7 ----
  /* { dg-do compile { target { ! ia32 } } } */
  /* { dg-require-effective-target masm_intel } */
  /* { dg-options "-O2 -mamx-bf16 -masm=intel" } */
! /* { dg-final { scan-assembler "tdpbf16ps\[ \\t]+\[^\n%\]*tmm1+\[^\n%\]*tmm2+\[^\n%\]*tmm3"  } } */
  #include <immintrin.h>
  
  void TEST ()
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/i386/amxcomplex-asmintel-1.c gcc-16-20251116/gcc/testsuite/gcc.target/i386/amxcomplex-asmintel-1.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/i386/amxcomplex-asmintel-1.c	Sun Nov  9 22:33:24 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/i386/amxcomplex-asmintel-1.c	Sun Nov 16 22:34:08 2025
***************
*** 1,8 ****
  /* { dg-do compile { target { ! ia32 } } } */
  /* { dg-require-effective-target masm_intel } */
  /* { dg-options "-O2 -mamx-complex -masm=intel" } */
! /* { dg-final { scan-assembler "tcmmimfp16ps\[ \\t]+\[^\n\]*%tmm1+\[^\n\]*%tmm2+\[^\n\]*%tmm3"  } } */
! /* { dg-final { scan-assembler "tcmmrlfp16ps\[ \\t]+\[^\n\]*%tmm1+\[^\n\]*%tmm2+\[^\n\]*%tmm3"  } } */
  #include <immintrin.h>
  
  void TEST()
--- 1,8 ----
  /* { dg-do compile { target { ! ia32 } } } */
  /* { dg-require-effective-target masm_intel } */
  /* { dg-options "-O2 -mamx-complex -masm=intel" } */
! /* { dg-final { scan-assembler "tcmmimfp16ps\[ \\t]+\[^\n%\]*tmm1+\[^\n%\]*tmm2+\[^\n%\]*tmm3"  } } */
! /* { dg-final { scan-assembler "tcmmrlfp16ps\[ \\t]+\[^\n%\]*tmm1+\[^\n%\]*tmm2+\[^\n%\]*tmm3"  } } */
  #include <immintrin.h>
  
  void TEST()
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/i386/amxfp16-asmintel-1.c gcc-16-20251116/gcc/testsuite/gcc.target/i386/amxfp16-asmintel-1.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/i386/amxfp16-asmintel-1.c	Sun Nov  9 22:33:24 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/i386/amxfp16-asmintel-1.c	Sun Nov 16 22:34:08 2025
***************
*** 1,7 ****
  /* { dg-do compile { target { ! ia32 } } } */
  /* { dg-require-effective-target masm_intel } */
  /* { dg-options "-O2 -mamx-fp16 -masm=intel" } */
! /* { dg-final { scan-assembler "tdpfp16ps\[ \\t]+\[^\n\]*%tmm1+\[^\n\]*%tmm2+\[^\n\]*%tmm3"  } } */
  #include <immintrin.h>
  
  void TEST ()
--- 1,7 ----
  /* { dg-do compile { target { ! ia32 } } } */
  /* { dg-require-effective-target masm_intel } */
  /* { dg-options "-O2 -mamx-fp16 -masm=intel" } */
! /* { dg-final { scan-assembler "tdpfp16ps\[ \\t]+\[^\n%\]*tmm1+\[^\n%\]*tmm2+\[^\n%\]*tmm3"  } } */
  #include <immintrin.h>
  
  void TEST ()
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/i386/amxfp8-asmintel-1.c gcc-16-20251116/gcc/testsuite/gcc.target/i386/amxfp8-asmintel-1.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/i386/amxfp8-asmintel-1.c	Sun Nov  9 22:33:24 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/i386/amxfp8-asmintel-1.c	Sun Nov 16 22:34:08 2025
***************
*** 1,10 ****
  /* { dg-do compile { target { ! ia32 } } } */
  /* { dg-require-effective-target masm_intel } */
  /* { dg-options "-O2 -mamx-fp16 -masm=intel" } */
! /* { dg-final { scan-assembler "tdpbf8ps\[ \\t]+\[^\n\]*%tmm1+\[^\n\]*%tmm2+\[^\n\]*%tmm3"  } } */
! /* { dg-final { scan-assembler "tdpbhf8ps\[ \\t]+\[^\n\]*%tmm1+\[^\n\]*%tmm2+\[^\n\]*%tmm3"  } } */
! /* { dg-final { scan-assembler "tdphbf8ps\[ \\t]+\[^\n\]*%tmm1+\[^\n\]*%tmm2+\[^\n\]*%tmm3"  } } */
! /* { dg-final { scan-assembler "tdphf8ps\[ \\t]+\[^\n\]*%tmm1+\[^\n\]*%tmm2+\[^\n\]*%tmm3"  } } */
  
  #include <immintrin.h>
  
--- 1,10 ----
  /* { dg-do compile { target { ! ia32 } } } */
  /* { dg-require-effective-target masm_intel } */
  /* { dg-options "-O2 -mamx-fp16 -masm=intel" } */
! /* { dg-final { scan-assembler "tdpbf8ps\[ \\t]+\[^\n%\]*tmm1+\[^\n%\]*tmm2+\[^\n%\]*tmm3"  } } */
! /* { dg-final { scan-assembler "tdpbhf8ps\[ \\t]+\[^\n%\]*tmm1+\[^\n%\]*tmm2+\[^\n%\]*tmm3"  } } */
! /* { dg-final { scan-assembler "tdphbf8ps\[ \\t]+\[^\n%\]*tmm1+\[^\n%\]*tmm2+\[^\n%\]*tmm3"  } } */
! /* { dg-final { scan-assembler "tdphf8ps\[ \\t]+\[^\n%\]*tmm1+\[^\n%\]*tmm2+\[^\n%\]*tmm3"  } } */
  
  #include <immintrin.h>
  
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/i386/amxint8-asmintel-1.c gcc-16-20251116/gcc/testsuite/gcc.target/i386/amxint8-asmintel-1.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/i386/amxint8-asmintel-1.c	Sun Nov  9 22:33:24 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/i386/amxint8-asmintel-1.c	Sun Nov 16 22:34:08 2025
***************
*** 1,10 ****
  /* { dg-do compile { target { ! ia32 } } } */
  /* { dg-require-effective-target masm_intel } */
  /* { dg-options "-O2 -mamx-int8 -masm=intel" } */
! /* { dg-final { scan-assembler "tdpbssd\[ \\t]+\[^\n\]*%tmm1+\[^\n\]*%tmm2+\[^\n\]*%tmm3"  } } */
! /* { dg-final { scan-assembler "tdpbsud\[ \\t]+\[^\n\]*%tmm1+\[^\n\]*%tmm2+\[^\n\]*%tmm3"  } } */
! /* { dg-final { scan-assembler "tdpbusd\[ \\t]+\[^\n\]*%tmm1+\[^\n\]*%tmm2+\[^\n\]*%tmm3"  } } */
! /* { dg-final { scan-assembler "tdpbuud\[ \\t]+\[^\n\]*%tmm1+\[^\n\]*%tmm2+\[^\n\]*%tmm3"  } } */
  #include <immintrin.h>
  
  void TEST ()
--- 1,10 ----
  /* { dg-do compile { target { ! ia32 } } } */
  /* { dg-require-effective-target masm_intel } */
  /* { dg-options "-O2 -mamx-int8 -masm=intel" } */
! /* { dg-final { scan-assembler "tdpbssd\[ \\t]+\[^\n%\]*tmm1+\[^\n%\]*tmm2+\[^\n%\]*tmm3"  } } */
! /* { dg-final { scan-assembler "tdpbsud\[ \\t]+\[^\n%\]*tmm1+\[^\n%\]*tmm2+\[^\n%\]*tmm3"  } } */
! /* { dg-final { scan-assembler "tdpbusd\[ \\t]+\[^\n%\]*tmm1+\[^\n%\]*tmm2+\[^\n%\]*tmm3"  } } */
! /* { dg-final { scan-assembler "tdpbuud\[ \\t]+\[^\n%\]*tmm1+\[^\n%\]*tmm2+\[^\n%\]*tmm3"  } } */
  #include <immintrin.h>
  
  void TEST ()
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/i386/amxmovrs-asmintel-1.c gcc-16-20251116/gcc/testsuite/gcc.target/i386/amxmovrs-asmintel-1.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/i386/amxmovrs-asmintel-1.c	Sun Nov  9 22:33:24 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/i386/amxmovrs-asmintel-1.c	Sun Nov 16 22:34:08 2025
***************
*** 1,8 ****
  /* { dg-do compile { target { ! ia32 } } } */
  /* { dg-require-effective-target masm_intel } */
  /* { dg-options "-O2 -mamx-movrs -masm=intel" } */
! /* { dg-final { scan-assembler-times "tileloaddrs\[ \\t]%tmm\[0-9\]" 1 } } */
! /* { dg-final { scan-assembler-times "tileloaddrst1\[ \\t]%tmm\[0-9\]" 1 } } */
  #include <immintrin.h>
  
  extern const void* base;
--- 1,8 ----
  /* { dg-do compile { target { ! ia32 } } } */
  /* { dg-require-effective-target masm_intel } */
  /* { dg-options "-O2 -mamx-movrs -masm=intel" } */
! /* { dg-final { scan-assembler-times "tileloaddrs\[ \\t]tmm\[0-9\]" 1 } } */
! /* { dg-final { scan-assembler-times "tileloaddrst1\[ \\t]tmm\[0-9\]" 1 } } */
  #include <immintrin.h>
  
  extern const void* base;
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/i386/amxtf32-asmintel-1.c gcc-16-20251116/gcc/testsuite/gcc.target/i386/amxtf32-asmintel-1.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/i386/amxtf32-asmintel-1.c	Sun Nov  9 22:33:24 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/i386/amxtf32-asmintel-1.c	Sun Nov 16 22:34:08 2025
***************
*** 1,7 ****
  /* { dg-do compile { target { ! ia32 } } } */
  /* { dg-require-effective-target masm_intel } */
  /* { dg-options "-O2 -mamx-tf32 -masm=intel" } */
! /* { dg-final { scan-assembler "tmmultf32ps\[ \\t]+\[^\n\]*%tmm1+\[^\n\]*%tmm2+\[^\n\]*%tmm3"  } } */
  #include <immintrin.h>
  
  void TEST()
--- 1,7 ----
  /* { dg-do compile { target { ! ia32 } } } */
  /* { dg-require-effective-target masm_intel } */
  /* { dg-options "-O2 -mamx-tf32 -masm=intel" } */
! /* { dg-final { scan-assembler "tmmultf32ps\[ \\t]+\[^\n%\]*tmm1+\[^\n%\]*tmm2+\[^\n%\]*tmm3"  } } */
  #include <immintrin.h>
  
  void TEST()
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/i386/amxtile-asmintel-1.c gcc-16-20251116/gcc/testsuite/gcc.target/i386/amxtile-asmintel-1.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/i386/amxtile-asmintel-1.c	Sun Nov  9 22:33:24 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/i386/amxtile-asmintel-1.c	Sun Nov 16 22:34:08 2025
***************
*** 4,13 ****
  /* { dg-final { scan-assembler "ldtilecfg\[ \\t]"  } } */
  /* { dg-final { scan-assembler "sttilecfg\[ \\t]"  } } */
  /* { dg-final { scan-assembler "tilerelease"  } } */
! /* { dg-final { scan-assembler "tileloadd\[ \\t]%tmm\[0-9\]"  } } */
! /* { dg-final { scan-assembler "tileloaddt1\[ \\t]%tmm\[0-9\]"  } } */
! /* { dg-final { scan-assembler "tilestored\[ \\t]\[^\n\]+\[^\n\]*%tmm\[0-9\]"  } } */
! /* { dg-final { scan-assembler "tilezero\[ \\t]+\[^\n\]*%tmm\[0-9\]"  } } */
  #include <immintrin.h>
  
  extern int a[];
--- 4,13 ----
  /* { dg-final { scan-assembler "ldtilecfg\[ \\t]"  } } */
  /* { dg-final { scan-assembler "sttilecfg\[ \\t]"  } } */
  /* { dg-final { scan-assembler "tilerelease"  } } */
! /* { dg-final { scan-assembler "tileloadd\[ \\t]tmm\[0-9\]"  } } */
! /* { dg-final { scan-assembler "tileloaddt1\[ \\t]tmm\[0-9\]"  } } */
! /* { dg-final { scan-assembler "tilestored\[ \\t]\[^\n\]+\[^\n\]*tmm\[0-9\]"  } } */
! /* { dg-final { scan-assembler "tilezero\[ \\t]+\[^\n%\]*tmm\[0-9\]"  } } */
  #include <immintrin.h>
  
  extern int a[];
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/i386/apx-ndd-tls-1b.c gcc-16-20251116/gcc/testsuite/gcc.target/i386/apx-ndd-tls-1b.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/i386/apx-ndd-tls-1b.c	Sun Nov  9 22:33:24 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/i386/apx-ndd-tls-1b.c	Sun Nov 16 22:34:08 2025
***************
*** 9,12 ****
     usage(r14-6242-gd564198f960a2f).  */
  #include "apx-ndd-tls-1a.c"
  
! /* { dg-final { scan-assembler-times "addq\[ \t]+%r\[a-z0-9\]+, a@gottpoff\\(%rip\\), %r\[a-z0-9\]+" 1 { xfail lp64 } } } */
--- 9,12 ----
     usage(r14-6242-gd564198f960a2f).  */
  #include "apx-ndd-tls-1a.c"
  
! /* { dg-final { scan-assembler-times "addq\[ \t]+%r\[a-z0-9\]+, a@gottpoff\\(%rip\\), %r\[a-z0-9\]+" 1 { xfail { ! ia32 } } } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/i386/cmov12.c gcc-16-20251116/gcc/testsuite/gcc.target/i386/cmov12.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/i386/cmov12.c	Sun Nov  9 22:33:26 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/i386/cmov12.c	Sun Nov 16 22:34:09 2025
***************
*** 1,4 ****
! /* { dg-do compile { target { ! ia32 } } } */
  /* { dg-options "-O2 -mavx2 -mtune=sapphirerapids" } */                             
  /* { dg-final { scan-assembler-times "cmov(\[lq\]\.)?g" 3 } } */
  
--- 1,4 ----
! /* { dg-do compile { target lp64 } } */
  /* { dg-options "-O2 -mavx2 -mtune=sapphirerapids" } */                             
  /* { dg-final { scan-assembler-times "cmov(\[lq\]\.)?g" 3 } } */
  
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/i386/indirect-thunk-5.c gcc-16-20251116/gcc/testsuite/gcc.target/i386/indirect-thunk-5.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/i386/indirect-thunk-5.c	Sun Nov  9 22:33:26 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/i386/indirect-thunk-5.c	Sun Nov 16 22:34:09 2025
*************** foo (void)
*** 9,18 ****
    bar ();
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" { target x32 } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target x32 } } } */
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" { target { ! x32 } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { ! x32 } } } } */
  /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
--- 9,16 ----
    bar ();
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
  /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/i386/indirect-thunk-6.c gcc-16-20251116/gcc/testsuite/gcc.target/i386/indirect-thunk-6.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/i386/indirect-thunk-6.c	Sun Nov  9 22:33:26 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/i386/indirect-thunk-6.c	Sun Nov 16 22:34:09 2025
*************** foo (void)
*** 10,22 ****
    return 0;
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" { target x32 } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target x32 } } } */
! /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 { target x32 } } } */
! /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 { target x32 } } } */
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" { target { ! x32 } } } } */
! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { ! x32 } } } } */
! /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */
! /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
--- 10,18 ----
    return 0;
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" } } */
! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
! /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 1 } } */
! /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 1 } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-5.c gcc-16-20251116/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-5.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-5.c	Sun Nov  9 22:33:26 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-5.c	Sun Nov 16 22:34:09 2025
*************** foo (void)
*** 9,18 ****
    bar ();
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" { target x32 } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target x32 } } } */
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" { target { ! x32 } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { ! x32 } } } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
  /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */
--- 9,16 ----
    bar ();
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
  /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-6.c gcc-16-20251116/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-6.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-6.c	Sun Nov  9 22:33:26 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-6.c	Sun Nov 16 22:34:09 2025
*************** foo (void)
*** 10,17 ****
    return 0;
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" { target x32 } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target x32 } } } */
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" { target { ! x32 } } } } */
! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { ! x32 } } } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
--- 10,15 ----
    return 0;
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" } } */
! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-5.c gcc-16-20251116/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-5.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-5.c	Sun Nov  9 22:33:26 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-5.c	Sun Nov 16 22:34:09 2025
*************** foo (void)
*** 9,16 ****
    bar ();
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" { target x32 } } } */
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" { target { ! x32 } } } } */
  /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
--- 9,15 ----
    bar ();
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" } } */
  /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-6.c gcc-16-20251116/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-6.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-6.c	Sun Nov  9 22:33:26 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-6.c	Sun Nov 16 22:34:09 2025
*************** foo (void)
*** 10,17 ****
    return 0;
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" { target x32 } } } */
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" { target { ! x32 } } } } */
  /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */
  /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */
  /* { dg-final { scan-assembler-times {\tpause} 1 } } */
--- 10,16 ----
    return 0;
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" } } */
  /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */
  /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */
  /* { dg-final { scan-assembler-times {\tpause} 1 } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/i386/kortest_ccz-1.c gcc-16-20251116/gcc/testsuite/gcc.target/i386/kortest_ccz-1.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/i386/kortest_ccz-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/i386/kortest_ccz-1.c	Sun Nov 16 22:34:09 2025
***************
*** 0 ****
--- 1,13 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=x86-64-v4 -O3" } */
+ /* { dg-final { scan-assembler-not "kmov" } } */
+ /* { dg-final { scan-assembler "kortest" } } */
+ 
+ int
+ foo (int *__restrict a, int* __restrict d, int b, int c, int n)
+ {
+   for (int i = 0; i != 10000; i++)
+     if (a[i] > b | d[i] > c)
+       return 1;
+   return 0;
+ }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/i386/pr121062-1.c gcc-16-20251116/gcc/testsuite/gcc.target/i386/pr121062-1.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/i386/pr121062-1.c	Sun Nov  9 22:33:26 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/i386/pr121062-1.c	Sun Nov 16 22:34:09 2025
*************** render_result_from_bake_h(int tx)
*** 31,34 ****
    }
  }
  
! /* { dg-final { scan-assembler-times "movq\[ \\t\]+\\\$-1, %r\[a-z0-9\]+" 2 { target { ! ia32 } } } } */
--- 31,34 ----
    }
  }
  
! /* { dg-final { scan-assembler-times "movq\[ \\t\]+\\\$-1, %r\[a-z0-9\]+" 1 { target { ! ia32 } } } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/loongarch/attr-check-error-message.c gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/attr-check-error-message.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/loongarch/attr-check-error-message.c	Sun Nov  9 22:33:26 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/attr-check-error-message.c	Sun Nov 16 22:34:09 2025
*************** test6 (void)	/* { dg-error "attribute \\
*** 28,30 ****
--- 28,38 ----
  __attribute__ ((target ("lsx,"))) void
  test7 (void)	/* { dg-error "malformed \\\'target\\\(\\\"lsx,\\\"\\\)\\\' pragma or attribute" } */
  {}
+ 
+ __attribute__ ((target ("arch"))) void
+ test8 (void)	/* { dg-error "the value of pragma or attribute \\\'target\\\(\\\"arch\\\"\\\)\\\' not be empty" } */
+ {}
+ 
+ __attribute__ ((target ("lsx;priority=1"))) void
+ test9 (void)	/* { dg-error "attribute \\\'target\\\' argument \\\'lsx;priority=1\\\' is unknown" } */
+ {}
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/loongarch/attr-check-error-message1.c gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/attr-check-error-message1.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/loongarch/attr-check-error-message1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/attr-check-error-message1.c	Sun Nov 16 22:34:09 2025
***************
*** 0 ****
--- 1,6 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -Wno-attributes" } */
+ 
+ __attribute__ ((target_clones ("default;priority=1","lsx"))) void
+ test (void)	/* { dg-error "\\\"default\\\" cannot be set together with other features in \\\'default;priority=1\\\'" } */
+ {}
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/loongarch/attr-check-error-message2.c gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/attr-check-error-message2.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/loongarch/attr-check-error-message2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/attr-check-error-message2.c	Sun Nov 16 22:34:09 2025
***************
*** 0 ****
--- 1,6 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -Wno-attributes" } */
+ 
+ __attribute__ ((target_clones ("default","lsx;"))) void
+ test (void)	/* { dg-error "in attribute \\\'lsx;\\\' priority cannot be empty" } */
+ {}
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/loongarch/attr-check-error-message3.c gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/attr-check-error-message3.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/loongarch/attr-check-error-message3.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/attr-check-error-message3.c	Sun Nov 16 22:34:09 2025
***************
*** 0 ****
--- 1,6 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -Wno-attributes" } */
+ 
+ __attribute__ ((target_clones ("default",";priority=1"))) void
+ test (void)	/* { dg-error "characher before \\\';\\\' in attribute \\\';priority=1\\\' cannot be empty" } */
+ {}
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/loongarch/attr-check-error-message4.c gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/attr-check-error-message4.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/loongarch/attr-check-error-message4.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/attr-check-error-message4.c	Sun Nov 16 22:34:09 2025
***************
*** 0 ****
--- 1,6 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -Wno-attributes" } */
+ 
+ __attribute__ ((target_clones ("default","lsx;priority=1;lasx"))) void
+ test (void)	/* { dg-error "in attribute \\\'lsx;priority=1;lasx\\\' the number of reatures cannot exceed two" } */
+ {}
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/loongarch/attr-check-error-message5.c gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/attr-check-error-message5.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/loongarch/attr-check-error-message5.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/attr-check-error-message5.c	Sun Nov 16 22:34:09 2025
***************
*** 0 ****
--- 1,6 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -Wno-attributes" } */
+ 
+ __attribute__ ((target_clones ("default","lsx;priority=-1"))) void
+ test (void)	/* { dg-error "Setting the priority value to \\\'-1\\\' is illegal in attribute \\\'lsx;priority=-1\\\'" } */
+ {}
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/loongarch/attr-check-error-message6.c gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/attr-check-error-message6.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/loongarch/attr-check-error-message6.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/attr-check-error-message6.c	Sun Nov 16 22:34:09 2025
***************
*** 0 ****
--- 1,6 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -Wno-attributes" } */
+ 
+ __attribute__ ((target_clones ("default","lsx;lasx"))) void
+ test (void)	/* { dg-error "in attribute \\\'lsx;lasx\\\', the second feature should be \\\"priority=\\\'num\\\'\\\" instead of \\\'lasx\\\'" } */
+ {}
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/loongarch/attr-check-error-message7.c gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/attr-check-error-message7.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/loongarch/attr-check-error-message7.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/attr-check-error-message7.c	Sun Nov 16 22:34:09 2025
***************
*** 0 ****
--- 1,6 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -Wno-attributes" } */
+ 
+ __attribute__ ((target_clones ("default","arch="))) void
+ test (void)	/* { dg-error "in attribute \\\'arch=\\\' you need to set a legal value for \\\"arch\\\"" } */
+ {}
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/loongarch/attr-check-error-message8.c gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/attr-check-error-message8.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/loongarch/attr-check-error-message8.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/attr-check-error-message8.c	Sun Nov 16 22:34:09 2025
***************
*** 0 ****
--- 1,6 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -Wno-attributes" } */
+ 
+ __attribute__ ((target_clones ("default","cmodel=normal"))) void
+ test (void)	/* { dg-error "attribute \\\'cmodel=normal\\\' is not supported in \\\'target_version\\\' or \\\'target_clones\\\'" } */
+ {}
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/loongarch/attr-check-error-message9.c gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/attr-check-error-message9.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/loongarch/attr-check-error-message9.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/attr-check-error-message9.c	Sun Nov 16 22:34:09 2025
***************
*** 0 ****
--- 1,6 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -Wno-attributes" } */
+ 
+ __attribute__ ((target_clones ("default","123456"))) void
+ test (void)	/* { dg-error "\\\'123456\\\' is not supported in target attribute" } */
+ {}
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/loongarch/pragma-la64V1_1-2.c gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/pragma-la64V1_1-2.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/loongarch/pragma-la64V1_1-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/pragma-la64V1_1-2.c	Sun Nov 16 22:34:09 2025
***************
*** 0 ****
--- 1,68 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -march=loongarch64 -std=gnu11 -march=la64v1.1" } */
+ 
+ #pragma GCC push_options
+ #pragma GCC target ("no-frecipe")
+ float
+ frecipe (float src)
+ {
+ #ifdef __loongarch_frecipe
+ #error "Should't define __loongarch_frecipe"
+ #endif
+ }
+ #pragma GCC pop_options
+ 
+ #pragma GCC push_options
+ #pragma GCC target ("no-div32")
+ int
+ div32 (unsigned long int a, unsigned long int b)
+ {
+ #ifdef __loongarch_div32
+ #error "Shouldn't define __loongarch_div32"
+ #endif
+ }
+ #pragma GCC pop_options
+ 
+ #pragma GCC push_options
+ #pragma GCC target ("no-lam-bh")
+ short
+ lam_bh (short *ptr, short val)
+ {
+ #ifdef __loongarch_lam_bh
+ #error "Shouldn't define __loongarch_lam_bh"
+ #endif
+ }
+ #pragma GCC pop_options
+ 
+ #pragma GCC push_options
+ #pragma GCC target ("no-lamcas")
+ void
+ lamcas (int *ptr, int *exp, int des)
+ {
+ #ifdef __loongarch_lamcas
+ #error "Shouldn't define __loongarch_lamcas"
+ #endif
+ }
+ #pragma GCC pop_options
+ 
+ #pragma GCC push_options
+ #pragma GCC target ("no-scq")
+ void
+ scq (int *ptr, int *exp, int des)
+ {
+ #ifdef __loongarch_scq
+ #error "Shouldn't define __loongarch_scq"
+ #endif
+ }
+ #pragma GCC pop_options
+ 
+ #pragma GCC push_options
+ #pragma GCC target ("no-ld-seq-sa")
+ void
+ ld_seq_sa (int *ptr, int *exp, int des)
+ {
+ #ifdef __loongarch_ld_seq_sa
+ #error "Shouldn't define __loongarch_ld_seq_sa"
+ #endif
+ }
+ #pragma GCC pop_options
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/loongarch/pragma-la64V1_1.c gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/pragma-la64V1_1.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/loongarch/pragma-la64V1_1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/pragma-la64V1_1.c	Sun Nov 16 22:34:09 2025
***************
*** 0 ****
--- 1,87 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -march=loongarch64 -std=gnu11" } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ 
+ /*
+ ** frecipe:
+ ** 	frecipe.s	\$f0,\$f0
+ ** 	jr	\$r1
+ */
+ #pragma GCC push_options
+ #pragma GCC target ("frecipe")
+ float
+ frecipe (float src)
+ {
+ #ifndef __loongarch_frecipe
+ #error "Not define __loongarch_frecipe"
+ #endif
+   return __builtin_loongarch_frecipe_s (src);
+ }
+ #pragma GCC pop_options
+ 
+ 
+ /*
+ ** div32:
+ ** 	div.w	\$r4,\$r4,\$r5
+ ** 	jr	\$r1
+ */
+ #pragma GCC push_options
+ #pragma GCC target ("div32")
+ int
+ div32 (unsigned long int a, unsigned long int b)
+ {
+ #ifndef __loongarch_div32
+ #error "Not define __loongarch_div32"
+ #endif
+   return (int)a / (int)b;
+ }
+ #pragma GCC pop_options
+ 
+ #pragma GCC push_options
+ #pragma GCC target ("lam-bh")
+ short
+ lam_bh (short *ptr, short val)
+ {
+ #ifndef __loongarch_lam_bh
+ #error "Not define __loongarch_lam_bh"
+ #endif
+   return __atomic_fetch_add (ptr, val, __ATOMIC_RELAXED);
+ }
+ #pragma GCC pop_options
+ /* { dg-final { scan-assembler "lam_bh:.*amadd.h.*lam_bh" } } */
+ 
+ #pragma GCC push_options
+ #pragma GCC target ("lamcas")
+ void
+ lamcas (int *ptr, int *exp, int des)
+ {
+ #ifndef __loongarch_lamcas
+ #error "Not define __loongarch_lamcas"
+ #endif
+   __atomic_compare_exchange_n (ptr, exp, des, 0, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED);
+ }
+ #pragma GCC pop_options
+ /* { dg-final { scan-assembler "lamcas:.*amcas_db.w.*lamcas" } } */
+ 
+ #pragma GCC push_options
+ #pragma GCC target ("scq")
+ void
+ scq (int *ptr, int *exp, int des)
+ {
+ #ifndef __loongarch_scq
+ #error "Not define __loongarch_scq"
+ #endif
+ }
+ #pragma GCC pop_options
+ 
+ #pragma GCC push_options
+ #pragma GCC target ("ld-seq-sa")
+ void
+ ld_seq_sa (int *ptr, int *exp, int des)
+ {
+ #ifndef __loongarch_ld_seq_sa
+ #error "Not define __loongarch_ld_seq_sa"
+ #endif
+ }
+ #pragma GCC pop_options
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/loongarch/vec_reduc_half.c gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/vec_reduc_half.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/loongarch/vec_reduc_half.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/vec_reduc_half.c	Sun Nov 16 22:34:09 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -ffast-math -mlasx" } */
+ 
+ double
+ foo_1 (double *a, double *b)
+ {
+   return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];
+ }
+ 
+ /* { dg-final { scan-assembler-times "xvpermi.d" 1} } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/pru/pr122415-1.c gcc-16-20251116/gcc/testsuite/gcc.target/pru/pr122415-1.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/pru/pr122415-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/pru/pr122415-1.c	Sun Nov 16 22:34:14 2025
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-do assemble } */
+ /* { dg-options "-O1" } */
+ /* { dg-final { object-size text <= 24 } } */
+ 
+ void test(void)
+ {
+   (*(unsigned *)0x11223344) = 1;
+   (*(unsigned *)0x11223364) = 1;
+ }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/pru/pr122415-2.c gcc-16-20251116/gcc/testsuite/gcc.target/pru/pr122415-2.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/pru/pr122415-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/pru/pr122415-2.c	Sun Nov 16 22:34:14 2025
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-options "-O1" } */
+ 
+ void test(void)
+ {
+   (*(unsigned *)0x11223364) = 1;
+   (*(unsigned *)0x11223344) = 1;
+ }
+ /* { dg-final { scan-assembler "sbbo\\tr\[0-9.bw\]*, r\[0-9\]*, 100, 4" } } */
+ /* { dg-final { scan-assembler "sbbo\\tr\[0-9.bw\]*, r\[0-9\]*, 68, 4" } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr118019-2.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr118019-2.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr118019-2.c	Sun Nov  9 22:33:29 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr118019-2.c	Sun Nov 16 22:34:14 2025
*************** x264_pixel_satd_8x4 (uint8_t *pix1, int
*** 47,50 ****
    return (((uint16_t) sum) + ((uint32_t) sum >> 16)) >> 1;
  }
  
! /* { dg-final { scan-assembler-times "vlse64" 8 } } */
--- 47,50 ----
    return (((uint16_t) sum) + ((uint32_t) sum >> 16)) >> 1;
  }
  
! /* { dg-final { scan-assembler-times "vlse32" 4 } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr121985.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr121985.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr121985.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr121985.c	Sun Nov 16 22:34:14 2025
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=rv64gcv_zvl512b -mabi=lp64d -mrvv-max-lmul=m8" } */
+ 
+ unsigned short a=3;
+ char f=1;
+ 
+ int main()
+ {
+   for (char var=f; var<6; var++)
+     a *= 5;
+ 
+   return a;
+ }
+ 
+ /* We would set a wrong niter range that would cause us to extract the wrong
+    element.  */
+ /* { dg-final { scan-assembler-not "vslidedown.vi.*,0" } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr122627.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr122627.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr122627.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr122627.c	Sun Nov 16 22:34:14 2025
***************
*** 0 ****
--- 1,196 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d -w -O0" { target rv64 } } */
+ /* { dg-options "-march=rv32gcv -mabi=ilp32 -w -O0" { target rv32 } } */
+ 
+ 
+ typedef signed char int8_t;
+ typedef short int16_t;
+ typedef int int32_t;
+ typedef long int64_t;
+ typedef char uint8_t;
+ typedef unsigned short uint16_t;
+ typedef unsigned long uint64_t;
+ uint64_t BS_CHECKSUM_ARR_7;
+ struct S0 {
+   unsigned f0 : 9;
+   signed : 26
+ } * g_108, g_148, g_150;
+ int32_t g_8[];
+ int32_t g_44, g_130_0;
+ uint16_t g_76_0;
+ int64_t g_158[];
+ int64_t g_158_1_0_3;
+ uint8_t *func_56_l_165;
+ __attribute__((always_inline)) int32_t
+ backsmith_snippet_544(int16_t __attribute__((vector_size(32 * sizeof(int16_t))))
+                       BS_ARG_0) {
+   BS_ARG_0 = BS_ARG_0 =
+       (int16_t __attribute__((vector_size(32 * sizeof(int16_t))))) -
+       __builtin_convertvector(
+           (int16_t __attribute__((vector_size(32 *sizeof(int16_t))))){
+               ~BS_ARG_0[3], ~BS_ARG_0[3], ~BS_ARG_0[3], ~BS_ARG_0[3],
+               ~BS_ARG_0[3], ~BS_ARG_0[3], ~BS_ARG_0[3], ~BS_ARG_0[3],
+               ~BS_ARG_0[3], ~BS_ARG_0[3], ~BS_ARG_0[3], ~BS_ARG_0[3],
+               ~BS_ARG_0[3], ~BS_ARG_0[3], ~BS_ARG_0[3], ~BS_ARG_0[3],
+               ~BS_ARG_0[3], ~BS_ARG_0[3], ~BS_ARG_0[3], ~BS_ARG_0[3],
+               ~BS_ARG_0[3], ~BS_ARG_0[3], ~BS_ARG_0[3], ~BS_ARG_0[3],
+               ~BS_ARG_0[3], ~BS_ARG_0[3], ~BS_ARG_0[3], ~BS_ARG_0[3],
+               ~BS_ARG_0[3], ~BS_ARG_0[3], ~BS_ARG_0[3], ~BS_ARG_0[3]},
+           uint16_t __attribute__((vector_size(32 * sizeof(uint16_t)))));
+   return ((union {
+            int16_t __attribute__((vector_size(2 * sizeof(int16_t)))) src;
+            int32_t dst
+          })__builtin_shufflevector(BS_ARG_0, BS_ARG_0, 43, 7))
+       .dst;
+ }
+ int8_t(safe_add_func_int8_t_s_s)(int8_t);
+ uint8_t(safe_lshift_func_uint8_t_u_s)(uint8_t);
+ unsigned safe_mul_func_uint32_t_u_u(int, int);
+ uint8_t func_56(uint64_t p_57, int32_t *, int8_t p_59, uint16_t p_60,
+                 int32_t *p_61) {
+   int64_t __attribute__((vector_size(8 * sizeof(int64_t))))
+   BS_VAR_0 = {30330355581};
+   int8_t __attribute__((vector_size(2))) BS_VAR_1 = {7};
+   int64_t __attribute__((vector_size(32 * sizeof(int64_t)))) BS_VAR_2[33] = {};
+   int64_t BS_VAR_2_3_0;
+   int16_t __attribute__((vector_size(32 * sizeof(int16_t)))) BS_VAR_3 = {};
+   int volatile BS_COND_18 = BS_COND_18, BS_COND_19 = 2046083389,
+                BS_COND_20 = BS_COND_20;
+   int64_t __attribute__((vector_size(32 * sizeof(int64_t)))) BS_VAR_5 = {};
+   int16_t __attribute__((vector_size(sizeof(int16_t))))
+   BS_VAR_6 = {90173011178118114616913331460};
+   int64_t __attribute__((vector_size(16))) BS_VAR_7 = {20385270170872471};
+   switch (BS_COND_19)
+   case 4044:
+   case 6463:
+   case 7825:
+   case 40964:
+   case 71504:
+   case 50913903:
+   case 3624:
+   case 3379:
+   case 80451787:
+   case 4004383:
+   case 4133:
+   case 2098801:
+   case 2000071388:
+   case 400611:
+   case 4155:
+   case 6888:
+   case 3506:
+   case 9734:
+   case 100094276:
+   case 3121:
+   case 9659:
+   case 5892:
+   case 9507:
+   case 1067596166:
+   case 2099438381:
+   case 2406:
+   case 5442:
+   case 60746:
+   case 31236:
+   case 3574:
+   case 42025:
+   case 3315:
+   case 2096976873:
+   case 6082416:
+   case 909667:
+   case 5535:
+   case 2554:
+   case 31179:
+   case 2046083389:
+   case 7309:
+   case 4706:
+   case 6816:
+   case 7189:
+   case 3402:
+   case 706316781:
+   case 3570:
+   case 4376:
+   case 9698:
+   case 4190:
+   case 6195:
+   case 6714:
+   case 7540:
+   case 2145:
+   case 61108:
+   case 2442:
+   case 1049158:
+   case 60055:
+   case 4302:
+     break;
+   int64_t __attribute__((vector_size(2 * sizeof(int64_t))))
+   BS_VAR_8[] = {52623717371,
+                 908827026188589,
+                 3253451771131199467,
+                 3253451771131199467,
+                 8379,
+                 1,
+                 500143520836,
+                 0,
+                 5884817202404184392,
+                 5884817202404184392,
+                 (int64_t __attribute__((vector_size(2 * sizeof(int64_t))))){
+                     8741271462101646089, 8741271462101646089}};
+   int BS_VAR_9 = 2177;
+   int64_t __attribute__((vector_size(32 * sizeof(int64_t)))) BS_VAR_10[37] = {};
+   int16_t __attribute__((vector_size(8 * sizeof(int16_t)))) BS_VAR_11[5] = {};
+   uint8_t __attribute__((vector_size(2))) BS_VAR_12 = {4};
+   uint64_t LOCAL_CHECKSUM = BS_CHECKSUM_ARR_7;
+   struct S0 **l_160 = &g_108;
+   int32_t l_161 = 3842;
+   int64_t *l_162[] = {&g_158_1_0_3, &g_158_1_0_3, &g_158_1_0_3, &g_158_1_0_3};
+   struct S0 ***l_176 = &l_160;
+   int32_t l_181 = g_44;
+   int32_t *l_180 = &l_181;
+   *func_56_l_165 = p_60;
+   l_162[7] == g_158 != safe_lshift_func_uint8_t_u_s(*func_56_l_165);
+   g_130_0 |= l_160 != (g_148.f0 & 1 < l_161 >= ((g_76_0 = 0) < g_8[5]), l_160);
+   if (g_148.f0)
+     BS_VAR_8[p_57 < 7 ? p_57 : 0] = __builtin_shufflevector(
+         __builtin_shufflevector(BS_VAR_8[0], BS_VAR_8[0], 1, 0, 1, 2),
+         __builtin_convertvector(
+             (uint64_t __attribute__((vector_size(4 *sizeof(uint64_t))))){
+                 p_57, p_57, p_57, p_57},
+             int64_t __attribute__((vector_size(4 * sizeof(int64_t))))),
+         6, 0);
+   l_161 = safe_add_func_int8_t_s_s(l_161);
+   for (; l_161 != 20;)
+     p_57 = 9;
+   p_57 = safe_add_func_int8_t_s_s(p_57);
+   for (; p_57 > 2;) {
+     int BS_TEMP_89 = 7760,
+         BS_TEMP_90 = backsmith_snippet_544(__builtin_convertvector(
+             __builtin_shufflevector(BS_VAR_8[4], BS_VAR_8[4], 3, 2, 1, 2, 2, 2,
+                                     0, 0, 0, 2, 3, 0, 2, 0, 1, 3, 3, 1, 1, 2, 2,
+                                     0, 2, 3, 3, 0, 1, 3, 0, 1, 3, 3),
+             int16_t __attribute__((vector_size(32 * sizeof(int16_t))))));
+     BS_VAR_2[__builtin_bswap32(BS_TEMP_89 < 2 ? (unsigned)l_161 << BS_TEMP_89
+                                               : BS_VAR_2_3_0) < 3
+                  ? __builtin_bswap32(BS_TEMP_89 < 2
+                                          ? (unsigned)l_161 << BS_TEMP_89
+                                          : BS_VAR_2_3_0)
+                  : 0] =
+         __builtin_convertvector(
+             (int32_t __attribute__((vector_size(32 *sizeof(int32_t))))){
+                 BS_TEMP_90, BS_TEMP_90, BS_TEMP_90, BS_TEMP_90, BS_TEMP_90,
+                 BS_TEMP_90, BS_TEMP_90, BS_TEMP_90, BS_TEMP_90, BS_TEMP_90,
+                 BS_TEMP_90, BS_TEMP_90, BS_TEMP_90, BS_TEMP_90, BS_TEMP_90,
+                 BS_TEMP_90, BS_TEMP_90, BS_TEMP_90, BS_TEMP_90, BS_TEMP_90,
+                 BS_TEMP_90, BS_TEMP_90, BS_TEMP_90, BS_TEMP_90, BS_TEMP_90,
+                 BS_TEMP_90, BS_TEMP_90, BS_TEMP_90, BS_TEMP_90, BS_TEMP_90,
+                 BS_TEMP_90, BS_TEMP_90},
+             int64_t __attribute__((vector_size(32 * sizeof(int64_t)))));
+   }
+   *p_61 &= l_161 >=
+            safe_mul_func_uint32_t_u_u(
+                g_150.f0, ((*l_176 = l_160) != g_108) > l_160 == 0 == g_148.f0);
+   *l_180 = 0;
+   BS_VAR_3 = __builtin_shufflevector(
+       BS_VAR_11[p_59 < (uint64_t)5 ? (uint64_t)p_59 : 0],
+       BS_VAR_11[p_59 < (uint64_t)5 ? (uint64_t)p_59 : 0], 0, 4, 5, 4, 0, 3, 3,
+       2, 5, 4, 3, 0, 4, 3, 9, 1, 8, 8, 4, 3, 4, 0, 1, 9, 0, 0, 0, 1, 5, 2, 0,
+       9);
+   return p_57;
+ }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c	Sun Nov 16 22:34:15 2025
*************** TEST_TERNARY_VX_SIGNED_0(T)
*** 27,29 ****
--- 27,30 ----
  /* { dg-final { scan-assembler-times {vnmsac.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vmadd.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vnmsub.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vmseq.vx} 1 } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i32.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i32.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i32.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i32.c	Sun Nov 16 22:34:15 2025
*************** TEST_TERNARY_VX_SIGNED_0(T)
*** 27,29 ****
--- 27,30 ----
  /* { dg-final { scan-assembler-times {vnmsac.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vmadd.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vnmsub.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vmseq.vx} 1 } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i64.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i64.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i64.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i64.c	Sun Nov 16 22:34:15 2025
*************** TEST_TERNARY_VX_SIGNED_0(T)
*** 30,32 ****
--- 30,33 ----
  /* { dg-final { scan-assembler-times {vnmsac.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vmadd.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vnmsub.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vmseq.vx} 1 } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i8.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i8.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i8.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i8.c	Sun Nov 16 22:34:15 2025
*************** TEST_TERNARY_VX_SIGNED_0(T)
*** 27,29 ****
--- 27,30 ----
  /* { dg-final { scan-assembler-times {vnmsac.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vmadd.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vnmsub.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vmseq.vx} 1 } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c	Sun Nov 16 22:34:15 2025
*************** TEST_WIDEN_TERNARY_VX_UNSIGNED(T, NT)
*** 36,38 ****
--- 36,39 ----
  /* { dg-final { scan-assembler-not {vwaddu.wx} } } */
  /* { dg-final { scan-assembler-not {vwsubu.wx} } } */
  /* { dg-final { scan-assembler-not {vwmaccu.vx} } } */
+ /* { dg-final { scan-assembler-times {vmseq.vx} 1 } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c	Sun Nov 16 22:34:15 2025
*************** TEST_WIDEN_TERNARY_VX_UNSIGNED(T, NT)
*** 36,38 ****
--- 36,39 ----
  /* { dg-final { scan-assembler-not {vwaddu.wx} } } */
  /* { dg-final { scan-assembler-not {vwsubu.wx} } } */
  /* { dg-final { scan-assembler-not {vwmaccu.vx} } } */
+ /* { dg-final { scan-assembler-times {vmseq.vx} 1 } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c	Sun Nov 16 22:34:15 2025
*************** TEST_WIDEN_TERNARY_VX_UNSIGNED(T, NT)
*** 39,41 ****
--- 39,42 ----
  /* { dg-final { scan-assembler-times {vwaddu.wx} 1 } } */
  /* { dg-final { scan-assembler-times {vwsubu.wx} 1 } } */
  /* { dg-final { scan-assembler-times {vwmaccu.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vmseq.vx} 1 } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c	Sun Nov 16 22:34:15 2025
*************** TEST_TERNARY_VX_UNSIGNED_0(T)
*** 26,28 ****
--- 26,29 ----
  /* { dg-final { scan-assembler-times {vnmsac.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vmadd.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vnmsub.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vmseq.vx} 1 } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i16.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i16.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i16.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i16.c	Sun Nov 16 22:34:15 2025
*************** TEST_TERNARY_VX_SIGNED_0(T)
*** 27,29 ****
--- 27,30 ----
  /* { dg-final { scan-assembler-not {vnmsac.vx} } } */
  /* { dg-final { scan-assembler-not {vmadd.vx} } } */
  /* { dg-final { scan-assembler-not {vnmsub.vx} } } */
+ /* { dg-final { scan-assembler-not {vmseq.vx} } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i32.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i32.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i32.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i32.c	Sun Nov 16 22:34:15 2025
*************** TEST_TERNARY_VX_SIGNED_0(T)
*** 27,29 ****
--- 27,30 ----
  /* { dg-final { scan-assembler-not {vnmsac.vx} } } */
  /* { dg-final { scan-assembler-not {vmadd.vx} } } */
  /* { dg-final { scan-assembler-not {vnmsub.vx} } } */
+ /* { dg-final { scan-assembler-not {vmseq.vx} } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i64.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i64.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i64.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i64.c	Sun Nov 16 22:34:15 2025
*************** TEST_TERNARY_VX_SIGNED_0(T)
*** 27,29 ****
--- 27,30 ----
  /* { dg-final { scan-assembler-not {vnmsac.vx} } } */
  /* { dg-final { scan-assembler-not {vmadd.vx} } } */
  /* { dg-final { scan-assembler-not {vnmsub.vx} } } */
+ /* { dg-final { scan-assembler-not {vmseq.vx} } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i8.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i8.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i8.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i8.c	Sun Nov 16 22:34:15 2025
*************** TEST_TERNARY_VX_SIGNED_0(T)
*** 27,29 ****
--- 27,30 ----
  /* { dg-final { scan-assembler-not {vnmsac.vx} } } */
  /* { dg-final { scan-assembler-not {vmadd.vx} } } */
  /* { dg-final { scan-assembler-not {vnmsub.vx} } } */
+ /* { dg-final { scan-assembler-not {vmseq.vx} } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c	Sun Nov 16 22:34:15 2025
*************** TEST_WIDEN_TERNARY_VX_UNSIGNED(T, NT)
*** 36,38 ****
--- 36,39 ----
  /* { dg-final { scan-assembler-not {vwaddu.wx} } } */
  /* { dg-final { scan-assembler-not {vwsubu.wx} } } */
  /* { dg-final { scan-assembler-not {vwmaccu.vx} } } */
+ /* { dg-final { scan-assembler-not {vmseq.vx} } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c	Sun Nov 16 22:34:15 2025
*************** TEST_WIDEN_TERNARY_VX_UNSIGNED(T, NT)
*** 36,38 ****
--- 36,39 ----
  /* { dg-final { scan-assembler-not {vwaddu.wx} } } */
  /* { dg-final { scan-assembler-not {vwsubu.wx} } } */
  /* { dg-final { scan-assembler-not {vwmaccu.vx} } } */
+ /* { dg-final { scan-assembler-not {vmseq.vx} } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c	Sun Nov 16 22:34:15 2025
*************** TEST_WIDEN_TERNARY_VX_UNSIGNED(T, NT)
*** 36,38 ****
--- 36,39 ----
  /* { dg-final { scan-assembler-not {vwaddu.wx} } } */
  /* { dg-final { scan-assembler-not {vwsubu.wx} } } */
  /* { dg-final { scan-assembler-not {vwmaccu.vx} } } */
+ /* { dg-final { scan-assembler-not {vmseq.vx} } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c	Sun Nov 16 22:34:15 2025
*************** TEST_TERNARY_VX_UNSIGNED_0(T)
*** 26,28 ****
--- 26,29 ----
  /* { dg-final { scan-assembler-not {vnmsac.vx} } } */
  /* { dg-final { scan-assembler-not {vmadd.vx} } } */
  /* { dg-final { scan-assembler-not {vnmsub.vx} } } */
+ /* { dg-final { scan-assembler-not {vmseq.vx} } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i16.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i16.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i16.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i16.c	Sun Nov 16 22:34:15 2025
*************** TEST_TERNARY_VX_SIGNED_0(T)
*** 27,29 ****
--- 27,30 ----
  /* { dg-final { scan-assembler-not {vnmsac.vx} } } */
  /* { dg-final { scan-assembler-not {vmadd.vx} } } */
  /* { dg-final { scan-assembler-not {vnmsub.vx} } } */
+ /* { dg-final { scan-assembler-not {vmseq.vx} } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i32.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i32.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i32.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i32.c	Sun Nov 16 22:34:15 2025
*************** TEST_TERNARY_VX_SIGNED_0(T)
*** 27,29 ****
--- 27,30 ----
  /* { dg-final { scan-assembler-not {vnmsac.vx} } } */
  /* { dg-final { scan-assembler-not {vmadd.vx} } } */
  /* { dg-final { scan-assembler-not {vnmsub.vx} } } */
+ /* { dg-final { scan-assembler-not {vmseq.vx} } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i64.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i64.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i64.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i64.c	Sun Nov 16 22:34:15 2025
*************** TEST_TERNARY_VX_SIGNED_0(T)
*** 27,29 ****
--- 27,30 ----
  /* { dg-final { scan-assembler-not {vnmsac.vx} } } */
  /* { dg-final { scan-assembler-not {vmadd.vx} } } */
  /* { dg-final { scan-assembler-not {vnmsub.vx} } } */
+ /* { dg-final { scan-assembler-not {vmseq.vx} } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i8.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i8.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i8.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i8.c	Sun Nov 16 22:34:15 2025
*************** TEST_TERNARY_VX_SIGNED_0(T)
*** 27,29 ****
--- 27,30 ----
  /* { dg-final { scan-assembler-not {vnmsac.vx} } } */
  /* { dg-final { scan-assembler-not {vmadd.vx} } } */
  /* { dg-final { scan-assembler-not {vnmsub.vx} } } */
+ /* { dg-final { scan-assembler-not {vmseq.vx} } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c	Sun Nov 16 22:34:15 2025
*************** TEST_WIDEN_TERNARY_VX_UNSIGNED(T, NT)
*** 36,38 ****
--- 36,39 ----
  /* { dg-final { scan-assembler-not {vwaddu.wx} } } */
  /* { dg-final { scan-assembler-not {vwsubu.wx} } } */
  /* { dg-final { scan-assembler-not {vwmaccu.vx} } } */
+ /* { dg-final { scan-assembler-not {vmseq.vx} } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c	Sun Nov 16 22:34:15 2025
*************** TEST_WIDEN_TERNARY_VX_UNSIGNED(T, NT)
*** 36,38 ****
--- 36,39 ----
  /* { dg-final { scan-assembler-not {vwaddu.wx} } } */
  /* { dg-final { scan-assembler-not {vwsubu.wx} } } */
  /* { dg-final { scan-assembler-not {vwmaccu.vx} } } */
+ /* { dg-final { scan-assembler-not {vmseq.vx} } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c	Sun Nov 16 22:34:15 2025
*************** TEST_WIDEN_TERNARY_VX_UNSIGNED(T, NT)
*** 36,38 ****
--- 36,39 ----
  /* { dg-final { scan-assembler-not {vwaddu.wx} } } */
  /* { dg-final { scan-assembler-not {vwsubu.wx} } } */
  /* { dg-final { scan-assembler-not {vwmaccu.vx} } } */
+ /* { dg-final { scan-assembler-not {vmseq.vx} } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c	Sun Nov 16 22:34:15 2025
*************** TEST_TERNARY_VX_UNSIGNED_0(T)
*** 26,28 ****
--- 26,29 ----
  /* { dg-final { scan-assembler-not {vnmsac.vx} } } */
  /* { dg-final { scan-assembler-not {vmadd.vx} } } */
  /* { dg-final { scan-assembler-not {vnmsub.vx} } } */
+ /* { dg-final { scan-assembler-not {vmseq.vx} } } */
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h	Sun Nov 16 22:34:16 2025
*************** DEF_AVG_CEIL(int32_t, int64_t)
*** 402,407 ****
--- 402,408 ----
    DEF_VX_BINARY_CASE_0_WRAP(T, *, mul)                            \
    DEF_VX_BINARY_CASE_0_WRAP(T, /, div)                            \
    DEF_VX_BINARY_CASE_0_WRAP(T, %, rem)                            \
+   DEF_VX_BINARY_CASE_0_WRAP(T, ==, eq)                            \
    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)           \
*************** DEF_AVG_CEIL(int32_t, int64_t)
*** 420,425 ****
--- 421,427 ----
    DEF_VX_BINARY_CASE_0_WRAP(T, ^, xor)                            \
    DEF_VX_BINARY_CASE_0_WRAP(T, /, div)                            \
    DEF_VX_BINARY_CASE_0_WRAP(T, %, rem)                            \
+   DEF_VX_BINARY_CASE_0_WRAP(T, ==, eq)                            \
    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-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h	Sun Nov 16 22:34:16 2025
*************** uint64_t TEST_BINARY_DATA(uint64_t, rem)
*** 3338,3343 ****
--- 3338,3479 ----
    },
  };
  
+ int8_t TEST_BINARY_DATA(int8_t, eq)[][3][N] =
+ {
+   {
+     { 1 },
+     {
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+       -1, -1, -1, -1,
+       -2, -2, -2, -2,
+     },
+     {
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+        0,  0,  0,  0,
+        0,  0,  0,  0,
+     },
+   },
+   {
+     { 127 },
+     {
+          0,    0,    0,    0,
+        127,  127,  127,  127,
+       -128, -128, -128, -128,
+         -2,   -2,   -2,   -2,
+     },
+     {
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+        0,  0,  0,  0,
+        0,  0,  0,  0,
+     },
+   },
+ };
+ 
+ int16_t TEST_BINARY_DATA(int16_t, eq)[][3][N] =
+ {
+   {
+     { 1 },
+     {
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+       -1, -1, -1, -1,
+       -2, -2, -2, -2,
+     },
+     {
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+        0,  0,  0,  0,
+        0,  0,  0,  0,
+     },
+   },
+   {
+     { -32768 },
+     {
+            0,      0,      0,      0,
+           -1,     -1,     -1,     -1,
+       -32768, -32768, -32768, -32768,
+           -2,     -2,     -2,     -2,
+     },
+     {
+        0,  0,  0,  0,
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+        0,  0,  0,  0,
+     },
+   },
+ };
+ 
+ int32_t TEST_BINARY_DATA(int32_t, eq)[][3][N] =
+ {
+   {
+     { 1 },
+     {
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+       -1, -1, -1, -1,
+       -2, -2, -2, -2,
+     },
+     {
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+        0,  0,  0,  0,
+        0,  0,  0,  0,
+     },
+   },
+   {
+     { -2147483648 },
+     {
+                 0,           0,           0,           0,
+                -1,          -1,          -1,          -1,
+       -2147483648, -2147483648, -2147483648, -2147483648,
+                -2,          -2,          -2,          -2,
+     },
+     {
+        0,  0,  0,  0,
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+        0,  0,  0,  0,
+     },
+   },
+ };
+ 
+ int64_t TEST_BINARY_DATA(int64_t, eq)[][3][N] =
+ {
+   {
+     { 1 },
+     {
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+       -1, -1, -1, -1,
+       -2, -2, -2, -2,
+     },
+     {
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+        0,  0,  0,  0,
+        0,  0,  0,  0,
+     },
+   },
+   {
+     { -9223372036854775808ull },
+     {
+                             0,                       0,                       0,                       0,
+                            -1,                      -1,                      -1,                      -1,
+       -9223372036854775808ull, -9223372036854775808ull, -9223372036854775808ull, -9223372036854775808ull,
+                            -2,                      -2,                      -2,                      -2,
+     },
+     {
+        0,  0,  0,  0,
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+        0,  0,  0,  0,
+     },
+   },
+ };
+ 
  int8_t TEST_BINARY_DATA(int8_t, max)[][3][N] =
  {
    {
*************** int64_t TEST_BINARY_DATA(int64_t, merge)
*** 5885,5889 ****
--- 6021,6161 ----
      },
    },
  };
+ 
+ uint8_t TEST_BINARY_DATA(uint8_t, eq)[][3][N] =
+ {
+   {
+     { 127 },
+     {
+         0,   0,   0,   0,
+         1,   1,   1,   1,
+       127, 127, 127, 127,
+       128, 128, 128, 128,
+     },
+     {
+         0,   0,   0,   0,
+         0,   0,   0,   0,
+         1,   1,   1,   1,
+         0,   0,   0,   0,
+     },
+   },
+   {
+     { 255 },
+     {
+          0,   0,   0,   0,
+          1,   1,   1,   1,
+          2,   2,   2,   2,
+        255, 255, 255, 255,
+     },
+     {
+          0,   0,   0,   0,
+          0,   0,   0,   0,
+          0,   0,   0,   0,
+          1,   1,   1,   1,
+     },
+   },
+ };
+ 
+ uint16_t TEST_BINARY_DATA(uint16_t, eq)[][3][N] =
+ {
+   {
+     { 32767 },
+     {
+           0,     0,     0,     0,
+           1,     1,     1,     1,
+       32767, 32767, 32767, 32767,
+       32768, 32768, 32768, 32768,
+     },
+     {
+         0,   0,   0,   0,
+         0,   0,   0,   0,
+         1,   1,   1,   1,
+         0,   0,   0,   0,
+     },
+   },
+   {
+     { 65535 },
+     {
+            0,     0,     0,     0,
+            1,     1,     1,     1,
+            2,     2,     2,     2,
+        65535, 65535, 65535, 65535,
+     },
+     {
+          0,   0,   0,   0,
+          0,   0,   0,   0,
+          0,   0,   0,   0,
+          1,   1,   1,   1,
+     },
+   },
+ };
+ 
+ uint32_t TEST_BINARY_DATA(uint32_t, eq)[][3][N] =
+ {
+   {
+     { 2147483647 },
+     {
+                0,          0,          0,          0,
+                1,          1,          1,          1,
+       2147483647, 2147483647, 2147483647, 2147483647,
+       2147483648, 2147483648, 2147483648, 2147483648,
+     },
+     {
+         0,   0,   0,   0,
+         0,   0,   0,   0,
+         1,   1,   1,   1,
+         0,   0,   0,   0,
+     },
+   },
+   {
+     { 4294967295 },
+     {
+                 0,          0,          0,          0,
+                 1,          1,          1,          1,
+                 2,          2,          2,          2,
+        4294967295, 4294967295, 4294967295, 4294967295,
+     },
+     {
+          0,   0,   0,   0,
+          0,   0,   0,   0,
+          0,   0,   0,   0,
+          1,   1,   1,   1,
+     },
+   },
+ };
+ 
+ uint64_t TEST_BINARY_DATA(uint64_t, eq)[][3][N] =
+ {
+   {
+     { 9223372036854775807ull },
+     {
+                            0,                      0,                      0,                      0,
+                            1,                      1,                      1,                      1,
+       9223372036854775807ull, 9223372036854775807ull, 9223372036854775807ull, 9223372036854775807ull,
+       9223372036854775808ull, 9223372036854775808ull, 9223372036854775808ull, 9223372036854775808ull,
+     },
+     {
+         0,   0,   0,   0,
+         0,   0,   0,   0,
+         1,   1,   1,   1,
+         0,   0,   0,   0,
+     },
+   },
+   {
+     { 18446744073709551615ull },
+     {
+                              0,                       0,                       0,                       0,
+                              1,                       1,                       1,                       1,
+                              2,                       2,                       2,                       2,
+        18446744073709551615ull, 18446744073709551615ull, 18446744073709551615ull, 18446744073709551615ull,
+     },
+     {
+          0,   0,   0,   0,
+          0,   0,   0,   0,
+          0,   0,   0,   0,
+          1,   1,   1,   1,
+     },
+   },
+ };
  
  #endif
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-i16.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-i16.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-i16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-i16.c	Sun Nov 16 22:34:16 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ #include "vx_binary_data.h"
+ 
+ #define T    int16_t
+ #define NAME eq
+ 
+ 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-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-i32.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-i32.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-i32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-i32.c	Sun Nov 16 22:34:16 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ #include "vx_binary_data.h"
+ 
+ #define T    int32_t
+ #define NAME eq
+ 
+ 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-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-i64.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-i64.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-i64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-i64.c	Sun Nov 16 22:34:16 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ #include "vx_binary_data.h"
+ 
+ #define T    int64_t
+ #define NAME eq
+ 
+ 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-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-i8.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-i8.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-i8.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-i8.c	Sun Nov 16 22:34:16 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ #include "vx_binary_data.h"
+ 
+ #define T    int8_t
+ #define NAME eq
+ 
+ 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-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-u16.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-u16.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-u16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-u16.c	Sun Nov 16 22:34:16 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 eq
+ 
+ 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-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-u32.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-u32.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-u32.c	Sun Nov 16 22:34:16 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 eq
+ 
+ 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-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-u64.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-u64.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-u64.c	Sun Nov 16 22:34:16 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 eq
+ 
+ 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-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-u8.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-u8.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-u8.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-u8.c	Sun Nov 16 22:34:16 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 eq
+ 
+ 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-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-37.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-37.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-37.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-37.c	Sun Nov 16 22:34:16 2025
*************** void f (int8_t * restrict in, int8_t * r
*** 26,29 ****
  
  /* { dg-final { scan-assembler-times {vsetvli\s+zero,\s*[a-x0-9]+,\s*e32,\s*mf2,\s*tu,\s*mu} 2 { target { no-opts "-O0" no-opts "-O1" no-opts "-g" no-opts "-funroll-loops" } } } } */
  /* { dg-final { scan-assembler-times {vsetvli} 3 { target { no-opts "-O0" no-opts "-g" no-opts "-funroll-loops" } } } } */
- /* { dg-final { scan-assembler-times {\.L[0-9]+\:\s+addi\s+\s*[a-x0-9]+,\s*[a-x0-9]+,\s*[0-9]00\s+addi\s+\s*[a-x0-9]+,\s*[a-x0-9]+,\s*[0-9]00\s+addi\s+\s*[a-x0-9]+,\s*[a-x0-9]+,\s*[0-9]00\s+add\s+\s*[a-x0-9]+,\s*[a-x0-9]+,\s*[a-x0-9]+\s+\.L[0-9]+\:} 1 { target { no-opts "-O0" no-opts "-O1" no-opts "-g" no-opts "-funroll-loops" } } } } */
--- 26,28 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-1.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-1.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-1.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-1.c	Sun Nov 16 22:34:17 2025
*************** void f (void * restrict in, void * restr
*** 34,37 ****
  }
  
  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf8,\s*t[au],\s*m[au]} 4 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto" } } } } */
- /* { dg-final { scan-assembler-times {ble\t[a-x0-9]+,zero,\.L[0-9]+\s*\.L[0-9]+\:\s*vle8\.v\s+v[0-9]+,0\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-O1"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto" } } } } */
--- 34,36 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-10.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-10.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-10.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-10.c	Sun Nov 16 22:34:17 2025
*************** void f (void * restrict in, void * restr
*** 34,37 ****
  }
  
  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf2,\s*t[au],\s*m[au]} 4 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto" } } } } */
- /* { dg-final { scan-assembler-times {ble\t[a-x0-9]+,zero,.L[0-9]+\s*\.L[0-9]+\:\s*vle16\.v\s+v[0-9]+,0\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-O1"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto" } } } } */
--- 34,36 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-11.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-11.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-11.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-11.c	Sun Nov 16 22:34:17 2025
*************** void f (void * restrict in, void * restr
*** 34,37 ****
  }
  
  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e32,\s*mf2,\s*t[au],\s*m[au]} 4 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto" } } } } */
- /* { dg-final { scan-assembler-times {ble\t[a-x0-9]+,zero,.L[0-9]+\s*\.L[0-9]+\:\s*vle32\.v\s+v[0-9]+,0\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-O1"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto" } } } } */
--- 34,36 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-12.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-12.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-12.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-12.c	Sun Nov 16 22:34:17 2025
*************** void f (void * restrict in, void * restr
*** 34,37 ****
  }
  
  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e32,\s*mf2,\s*t[au],\s*m[au]} 4 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto" } } } } */
- /* { dg-final { scan-assembler-times {ble\t[a-x0-9]+,zero,.L[0-9]+\s*\.L[0-9]+\:\s*vle32\.v\s+v[0-9]+,0\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-O1"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto" } } } } */
--- 34,36 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-13.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-13.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-13.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-13.c	Sun Nov 16 22:34:17 2025
*************** void f (void * restrict in, void * restr
*** 34,37 ****
  }
  
  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e32,\s*mf2,\s*t[au],\s*m[au]} 4 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto" } } } } */
- /* { dg-final { scan-assembler-times {ble\t[a-x0-9]+,zero,.L[0-9]+\s*\.L[0-9]+\:\s*vle32\.v\s+v[0-9]+,0\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-O1" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto" } } } } */
--- 34,36 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-14.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-14.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-14.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-14.c	Sun Nov 16 22:34:17 2025
*************** void f7 (void * restrict in, void * rest
*** 214,217 ****
  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m2,\s*t[au],\s*m[au]} 4 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto" } } } } */
  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m4,\s*t[au],\s*m[au]} 4 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto" } } } } */
  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m8,\s*t[au],\s*m[au]} 4 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto" } } } } */
- /* { dg-final { scan-assembler-times {ble\t[a-x0-9]+,zero,.L[0-9]+\s+\.L[0-9]+\:\s+vlm\.v\s+v[0-9]+,0\([a-x0-9]+\)} 7 { target { no-opts "-O0" no-opts "-O1" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto" } } } } */
--- 214,216 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-15.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-15.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-15.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-15.c	Sun Nov 16 22:34:17 2025
*************** void f (void * restrict in, void * restr
*** 37,40 ****
  }
  
  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf8,\s*t[au],\s*m[au]} 4 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto" } } } } */
- /* { dg-final { scan-assembler-times {ble\t[a-x0-9]+,zero,.L[0-9]+\s*\.L[0-9]+\:\s*vle8\.v\s+v[0-9]+,0\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-O1" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto"  } } } } */
--- 37,39 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-16.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-16.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-16.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-16.c	Sun Nov 16 22:34:17 2025
*************** void f (void * restrict in, void * restr
*** 37,40 ****
  }
  
  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf8,\s*t[au],\s*m[au]} 4 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto"  } } } } */
- /* { dg-final { scan-assembler-times {ble\t[a-x0-9]+,zero,.L[0-9]+\s*\.L[0-9]+\:\s*vle8\.v\s+v[0-9]+,0\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-O1" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto"  } } } } */
--- 37,39 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-17.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-17.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-17.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-17.c	Sun Nov 16 22:34:17 2025
*************** void f (void * restrict in, void * restr
*** 37,40 ****
  }
  
  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf4,\s*t[au],\s*m[au]} 4 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto"  } } } } */
- /* { dg-final { scan-assembler-times {ble\t[a-x0-9]+,zero,.L[0-9]+\s*\.L[0-9]+\:\s*vle8\.v\s+v[0-9]+,0\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-O1"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto"  } } } } */
--- 37,39 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-18.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-18.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-18.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-18.c	Sun Nov 16 22:34:17 2025
*************** void f (void * restrict in, void * restr
*** 37,40 ****
  }
  
  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf4,\s*t[au],\s*m[au]} 4 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto"  } } } } */
- /* { dg-final { scan-assembler-times {ble\t[a-x0-9]+,zero,.L[0-9]+\s*\.L[0-9]+\:\s*vle8\.v\s+v[0-9]+,0\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-O1"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto"  } } } } */
--- 37,39 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-19.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-19.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-19.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-19.c	Sun Nov 16 22:34:17 2025
*************** void f (void * restrict in, void * restr
*** 37,40 ****
  }
  
  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf2,\s*t[au],\s*m[au]} 4 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto"   } } } } */
- /* { dg-final { scan-assembler-times {ble\t[a-x0-9]+,zero,.L[0-9]+\s+\.L[0-9]+\:\s+vle8\.v\s+v[0-9]+,0\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-O1"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto"   } } } } */
--- 37,39 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-2.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-2.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-2.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-2.c	Sun Nov 16 22:34:17 2025
*************** void f (void * restrict in, void * restr
*** 34,37 ****
  }
  
  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf8,\s*t[au],\s*m[au]} 4 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g"  no-opts "-flto" } } } } */
- /* { dg-final { scan-assembler-times {ble\t[a-x0-9]+,zero,.L[0-9]+\s*\.L[0-9]+\:\s*vle8\.v\s+v[0-9]+,0\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-O1"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto"  } } } } */
--- 34,36 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-20.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-20.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-20.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-20.c	Sun Nov 16 22:34:17 2025
*************** void f (void * restrict in, void * restr
*** 37,40 ****
  }
  
  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf2,\s*t[au],\s*m[au]} 4 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto" } } } } */
- /* { dg-final { scan-assembler-times {ble\t[a-x0-9]+,zero,.L[0-9]+\s+\.L[0-9]+\:\s+vle8\.v\s+v[0-9]+,0\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-O1" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto" } } } } */
--- 37,39 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-21.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-21.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-21.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-21.c	Sun Nov 16 22:34:17 2025
*************** void f (void * restrict in, void * restr
*** 37,40 ****
  }
  
  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf4,\s*t[au],\s*m[au]} 4 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto" } } } } */
- /* { dg-final { scan-assembler-times {ble\t[a-x0-9]+,zero,.L[0-9]+\s+\.L[0-9]+\:\s+vle16\.v\s+v[0-9]+,0\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-O1" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto" } } } } */
--- 37,39 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-22.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-22.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-22.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-22.c	Sun Nov 16 22:34:17 2025
*************** void f (void * restrict in, void * restr
*** 37,40 ****
  }
  
  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf4,\s*t[au],\s*m[au]} 4 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto"  } } } } */
- /* { dg-final { scan-assembler-times {ble\t[a-x0-9]+,zero,.L[0-9]+\s*\.L[0-9]+\:\s*vle16\.v\s+v[0-9]+,0\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-O1" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto"  } } } } */
--- 37,39 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-23.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-23.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-23.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-23.c	Sun Nov 16 22:34:17 2025
*************** void f (void * restrict in, void * restr
*** 37,40 ****
  }
  
  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf2,\s*t[au],\s*m[au]} 4 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto"  } } } } */
- /* { dg-final { scan-assembler-times {ble\t[a-x0-9]+,zero,.L[0-9]+\s*\.L[0-9]+\:\s*vle16\.v\s+v[0-9]+,0\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-O1" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto"  } } } } */
--- 37,39 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-24.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-24.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-24.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-24.c	Sun Nov 16 22:34:17 2025
*************** void f (void * restrict in, void * restr
*** 37,40 ****
  }
  
  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf2,\s*t[au],\s*m[au]} 4 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto"  } } } } */
- /* { dg-final { scan-assembler-times {ble\t[a-x0-9]+,zero,.L[0-9]+\s*\.L[0-9]+\:\s*vle16\.v\s+v[0-9]+,0\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-O1" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto"  } } } } */
--- 37,39 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-25.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-25.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-25.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-25.c	Sun Nov 16 22:34:17 2025
*************** void f (void * restrict in, void * restr
*** 37,40 ****
  }
  
  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e32,\s*mf2,\s*t[au],\s*m[au]} 4 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto"  } } } } */
- /* { dg-final { scan-assembler-times {ble\t[a-x0-9]+,zero,.L[0-9]+\s*\.L[0-9]+\:\s*vle32\.v\s+v[0-9]+,0\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-O1" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto"  } } } } */
--- 37,39 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-26.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-26.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-26.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-26.c	Sun Nov 16 22:34:17 2025
*************** void f (void * restrict in, void * restr
*** 37,40 ****
  }
  
  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e32,\s*mf2,\s*t[au],\s*m[au]} 4 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto"  } } } } */
- /* { dg-final { scan-assembler-times {ble\t[a-x0-9]+,zero,.L[0-9]+\s*\.L[0-9]+\:\s*vle32\.v\s+v[0-9]+,0\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-O1"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto"  } } } } */
--- 37,39 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-27.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-27.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-27.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-27.c	Sun Nov 16 22:34:17 2025
*************** void f (void * restrict in, void * restr
*** 37,40 ****
  }
  
  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e32,\s*mf2,\s*t[au],\s*m[au]} 4 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto"  } } } } */
- /* { dg-final { scan-assembler-times {ble\t[a-x0-9]+,zero,.L[0-9]+\s*\.L[0-9]+\:\s*vle32\.v\s+v[0-9]+,0\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-O1"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto"  } } } } */
--- 37,39 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-28.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-28.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-28.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-28.c	Sun Nov 16 22:34:17 2025
*************** void f7 (void * restrict in, void * rest
*** 234,237 ****
  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m2,\s*t[au],\s*m[au]} 4 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto"  } } } } */
  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m4,\s*t[au],\s*m[au]} 4 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto"  } } } } */
  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*m8,\s*t[au],\s*m[au]} 4 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto"  } } } } */
- /* { dg-final { scan-assembler-times {ble\t[a-x0-9]+,zero,.L[0-9]+\s*\.L[0-9]+\:\s*vlm\.v\s*v[0-9]+,0\([a-x0-9]+\)} 7 { target { no-opts "-O0" no-opts "-O1"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto"  } } } } */
--- 234,236 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-3.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-3.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-3.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-3.c	Sun Nov 16 22:34:17 2025
*************** void f (void * restrict in, void * restr
*** 34,37 ****
  }
  
  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf4,\s*t[au],\s*m[au]} 4 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g"   no-opts "-flto" } } } } */
- /* { dg-final { scan-assembler-times {ble\t[a-x0-9]+,zero,.L[0-9]+\s*\.L[0-9]+\:\s*vle8\.v\s+v[0-9]+,0\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-O1"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g"   no-opts "-flto" } } } } */
--- 34,36 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-4.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-4.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-4.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-4.c	Sun Nov 16 22:34:17 2025
*************** void f (void * restrict in, void * restr
*** 34,37 ****
  }
  
  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf4,\s*t[au],\s*m[au]} 4 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g"  no-opts "-flto"  } } } } */
- /* { dg-final { scan-assembler-times {ble\t[a-x0-9]+,zero,.L[0-9]+\s*\.L[0-9]+\:\s*vle8\.v\s+v[0-9]+,0\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-O1"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g"  no-opts "-flto"  } } } } */
--- 34,36 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-5.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-5.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-5.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-5.c	Sun Nov 16 22:34:17 2025
*************** void f (void * restrict in, void * restr
*** 34,37 ****
  }
  
  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf2,\s*t[au],\s*m[au]} 4 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto" } } } } */
- /* { dg-final { scan-assembler-times {ble\t[a-x0-9]+,zero,.L[0-9]+\s*\.L[0-9]+\:\s*vle8\.v\s+v[0-9]+,0\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-O1"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto" } } } } */
--- 34,36 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-6.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-6.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-6.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-6.c	Sun Nov 16 22:34:17 2025
*************** void f (void * restrict in, void * restr
*** 34,37 ****
  }
  
  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e8,\s*mf2,\s*t[au],\s*m[au]} 4 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto" } } } } */
- /* { dg-final { scan-assembler-times {ble\t[a-x0-9]+,zero,.L[0-9]+\s*\.L[0-9]+\:\s*vle8\.v\s+v[0-9]+,0\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-O1" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto" } } } } */
--- 34,36 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-7.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-7.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-7.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-7.c	Sun Nov 16 22:34:17 2025
*************** void f (void * restrict in, void * restr
*** 34,37 ****
  }
  
  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf4,\s*t[au],\s*m[au]} 4 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto" } } } } */
- /* { dg-final { scan-assembler-times {ble\t[a-x0-9]+,zero,.L[0-9]+\s*\.L[0-9]+\:\s*vle16\.v\s+v[0-9]+,0\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-O1" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto" } } } } */
--- 34,36 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-8.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-8.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-8.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-8.c	Sun Nov 16 22:34:17 2025
*************** void f (void * restrict in, void * restr
*** 34,37 ****
  }
  
  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf4,\s*t[au],\s*m[au]} 4 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto" } } } } */
- /* { dg-final { scan-assembler-times {ble\t[a-x0-9]+,zero,.L[0-9]+\s*\.L[0-9]+\:\s*vle16\.v\s+v[0-9]+,0\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-O1" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto" } } } } */
--- 34,36 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-9.c gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-9.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-9.c	Sun Nov  9 22:33:30 2025
--- gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-9.c	Sun Nov 16 22:34:17 2025
*************** void f (void * restrict in, void * restr
*** 34,37 ****
  }
  
  /* { dg-final { scan-assembler-times {vsetvli\s+[a-x0-9]+,\s*zero,\s*e16,\s*mf2,\s*t[au],\s*m[au]} 4 { target { no-opts "-O0"  no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto" } } } } */
- /* { dg-final { scan-assembler-times {ble\t[a-x0-9]+,zero,.L[0-9]+\s*\.L[0-9]+\:\s*vle16\.v\s+v[0-9]+,0\([a-x0-9]+\)} 1 { target { no-opts "-O0" no-opts "-O1" no-opts "-Os" no-opts "-Oz" no-opts "-funroll-loops" no-opts "-g" no-opts "-flto" } } } } */
--- 34,36 ----
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/s390/stack-protector-guard-global-1.c gcc-16-20251116/gcc/testsuite/gcc.target/s390/stack-protector-guard-global-1.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/s390/stack-protector-guard-global-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/s390/stack-protector-guard-global-1.c	Sun Nov 16 22:34:17 2025
***************
*** 0 ****
--- 1,27 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fstack-protector-all -mstack-protector-guard=global -mstack-protector-guard-record" } */
+ /* { dg-final { scan-assembler-times {\n1:\n\tlarl\t%r[0-9]+,__stack_chk_guard\n} 4 } } */
+ 
+ void test_0 (void) { }
+ 
+ void test_1 (void)
+ {
+   __asm__ __volatile ("" :::
+       "r0",
+       "r1",
+       "r2",
+       "r3",
+       "r4",
+       "r5",
+       "r6",
+       "r7",
+       "r8",
+       "r9",
+       "r10",
+       "r11",
+ #ifndef __PIC__
+       "r12",
+ #endif
+       "r13",
+       "r14");
+ }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/s390/stack-protector-guard-global-2.c gcc-16-20251116/gcc/testsuite/gcc.target/s390/stack-protector-guard-global-2.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/s390/stack-protector-guard-global-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/s390/stack-protector-guard-global-2.c	Sun Nov 16 22:34:17 2025
***************
*** 0 ****
--- 1,5 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fstack-protector-all -mstack-protector-guard=global -mstack-protector-guard-record -fPIC" } */
+ /* { dg-final { scan-assembler-times {\n1:\n\t(larl|lg?rl)\t%r[0-9]+,__stack_chk_guard@GOTENT\n} 4 } } */
+ 
+ #include "stack-protector-guard-global-1.c"
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/s390/stack-protector-guard-global-3.c gcc-16-20251116/gcc/testsuite/gcc.target/s390/stack-protector-guard-global-3.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/s390/stack-protector-guard-global-3.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/s390/stack-protector-guard-global-3.c	Sun Nov 16 22:34:17 2025
***************
*** 0 ****
--- 1,6 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fstack-protector-all -mstack-protector-guard=global" } */
+ /* { dg-final { scan-assembler-times {\tlarl\t%r[0-9]+,__stack_chk_guard\n} 4 } } */
+ /* { dg-final { scan-assembler-not {\n1:\n} } } */
+ 
+ #include "stack-protector-guard-global-1.c"
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gcc.target/s390/stack-protector-guard-global-4.c gcc-16-20251116/gcc/testsuite/gcc.target/s390/stack-protector-guard-global-4.c
*** gcc-16-20251109/gcc/testsuite/gcc.target/s390/stack-protector-guard-global-4.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gcc.target/s390/stack-protector-guard-global-4.c	Sun Nov 16 22:34:17 2025
***************
*** 0 ****
--- 1,6 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fstack-protector-all -mstack-protector-guard=global -fPIC" } */
+ /* { dg-final { scan-assembler-times {\t(larl|lg?rl)\t%r[0-9]+,__stack_chk_guard@GOTENT\n} 4 } } */
+ /* { dg-final { scan-assembler-not {\n1:\n} } } */
+ 
+ #include "stack-protector-guard-global-1.c"
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gfortran.dg/do_concurrent_typespec_1.f90 gcc-16-20251116/gcc/testsuite/gfortran.dg/do_concurrent_typespec_1.f90
*** gcc-16-20251109/gcc/testsuite/gfortran.dg/do_concurrent_typespec_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gfortran.dg/do_concurrent_typespec_1.f90	Sun Nov 16 22:34:25 2025
***************
*** 0 ****
--- 1,111 ----
+ ! { dg-do run }
+ ! { dg-options "-std=f2008 -Wall" }
+ !
+ ! PR fortran/96255
+ ! Test DO CONCURRENT with optional type specification
+ ! Covers all shadowing scenarios per F2018 19.4(6)
+ 
+ program test_do_concurrent_typespec
+   implicit none
+   integer :: test_count
+   test_count = 0
+ 
+   ! Test 1: Type-spec with no outer scope variable (BT_UNKNOWN)
+   ! Should just set the type, no shadow needed
+   call test_no_outer_var()
+   test_count = test_count + 1
+ 
+   ! Test 2: Type-spec shadows outer variable with same kind
+   ! Must create shadow per F2018 19.4(6)
+   call test_shadow_same_kind()
+   test_count = test_count + 1
+ 
+   ! Test 3: Type-spec shadows outer variable with different kind
+   ! Must create shadow per F2018 19.4(6)
+   call test_shadow_different_kind()
+   test_count = test_count + 1
+ 
+   ! Test 4: Multiple iterators with mixed scenarios
+   call test_multiple_iterators()
+   test_count = test_count + 1
+ 
+ contains
+ 
+   subroutine test_no_outer_var()
+     implicit none
+     integer :: sum_val
+ 
+     ! 'j' is not declared in outer scope
+     sum_val = 0
+     do concurrent (integer :: j = 1:5)
+       sum_val = sum_val + j
+     end do
+ 
+     if (sum_val /= 15) stop 1  ! 1+2+3+4+5 = 15
+   end subroutine test_no_outer_var
+ 
+   subroutine test_shadow_same_kind()
+     implicit none
+     integer :: i
+     integer :: outer_val, inner_sum
+ 
+     ! Set outer 'i' to a specific value
+     i = 99
+     outer_val = i
+ 
+     ! DO CONCURRENT with type-spec should shadow 'i'
+     ! even though kind is the same
+     inner_sum = 0
+     do concurrent (integer :: i = 1:3)
+       inner_sum = inner_sum + i
+     end do
+ 
+     ! After loop, outer 'i' should be unchanged
+     if (i /= outer_val) stop 2
+     if (i /= 99) stop 3
+     if (inner_sum /= 6) stop 4  ! 1+2+3 = 6
+   end subroutine test_shadow_same_kind
+ 
+   subroutine test_shadow_different_kind()
+     implicit none
+     integer(kind=4) :: k
+     integer :: result
+ 
+     ! Set outer 'k' to a value
+     k = 77
+ 
+     ! DO CONCURRENT with different kind should shadow
+     result = 0
+     do concurrent (integer(kind=2) :: k = 1:4)
+       result = result + int(k, kind=4)
+     end do
+ 
+     ! Outer 'k' should be unchanged
+     if (k /= 77) stop 5
+     if (result /= 10) stop 6  ! 1+2+3+4 = 10
+   end subroutine test_shadow_different_kind
+ 
+   subroutine test_multiple_iterators()
+     implicit none
+     integer :: i, j
+     integer :: sum_val
+ 
+     ! Set outer variables
+     i = 100
+     j = 200
+ 
+     ! Multiple iterators: i shadows (same kind), m is new (BT_UNKNOWN)
+     ! Per F2018 R1125, ONE type-spec applies to ALL iterators
+     sum_val = 0
+     do concurrent (integer :: i = 1:2, m = 1:2)
+       sum_val = sum_val + i * 10 + m
+     end do
+ 
+     ! Outer i should be unchanged, j should be unchanged
+     if (i /= 100) stop 7
+     if (j /= 200) stop 8
+     ! sum = (1*10+1) + (1*10+2) + (2*10+1) + (2*10+2) = 11+12+21+22 = 66
+     if (sum_val /= 66) stop 9
+   end subroutine test_multiple_iterators
+ 
+ end program test_do_concurrent_typespec
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gfortran.dg/finalizer_recursive_alloc_1.f90 gcc-16-20251116/gcc/testsuite/gfortran.dg/finalizer_recursive_alloc_1.f90
*** gcc-16-20251109/gcc/testsuite/gfortran.dg/finalizer_recursive_alloc_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gfortran.dg/finalizer_recursive_alloc_1.f90	Sun Nov 16 22:34:25 2025
***************
*** 0 ****
--- 1,15 ----
+ ! { dg-do compile }
+ ! PR fortran/90519
+ 
+ module pr90519_finalizer_mod
+   implicit none
+   type :: t
+      type(t), allocatable :: child
+   contains
+      final :: finalize_t
+   end type t
+ contains
+   subroutine finalize_t(self)
+     type(t), intent(inout) :: self
+   end subroutine finalize_t
+ end module pr90519_finalizer_mod
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gfortran.dg/finalizer_recursive_alloc_2.f90 gcc-16-20251116/gcc/testsuite/gfortran.dg/finalizer_recursive_alloc_2.f90
*** gcc-16-20251109/gcc/testsuite/gfortran.dg/finalizer_recursive_alloc_2.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gfortran.dg/finalizer_recursive_alloc_2.f90	Sun Nov 16 22:34:25 2025
***************
*** 0 ****
--- 1,32 ----
+ ! { dg-do run }
+ ! { dg-output " finalizing id\\s+0\\n finalizing id\\s+1\\n finalizer count =\\s+2\\n" }
+ ! PR fortran/90519
+ 
+ module pr90519_finalizer_run_mod
+   implicit none
+   integer :: finalizer_count = 0
+   type :: tree_t
+      integer :: id = -1
+      type(tree_t), allocatable :: child
+   contains
+      final :: finalize_tree
+   end type tree_t
+ contains
+   subroutine finalize_tree(self)
+     type(tree_t), intent(inout) :: self
+     finalizer_count = finalizer_count + 1
+     print *, 'finalizing id', self%id
+   end subroutine finalize_tree
+ end module pr90519_finalizer_run_mod
+ 
+ program test_finalizer
+   use pr90519_finalizer_run_mod
+   implicit none
+   block
+     type(tree_t) :: root
+     root%id = 0
+     allocate(root%child)
+     root%child%id = 1
+   end block
+   print *, 'finalizer count =', finalizer_count
+ end program test_finalizer
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gfortran.dg/finalizer_self_assign.f90 gcc-16-20251116/gcc/testsuite/gfortran.dg/finalizer_self_assign.f90
*** gcc-16-20251109/gcc/testsuite/gfortran.dg/finalizer_self_assign.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gfortran.dg/finalizer_self_assign.f90	Sun Nov 16 22:34:25 2025
***************
*** 0 ****
--- 1,101 ----
+ ! { dg-do run }
+ ! Test self-assignment with recursive allocatable and finalizer
+ ! This should preserve allocatable components after a = a and a = (a)
+ 
+ module self_assign_mod
+   implicit none
+   type :: node_t
+      integer :: value = 0
+      type(node_t), allocatable :: next
+   contains
+      final :: finalize_node
+   end type node_t
+ contains
+   subroutine finalize_node(self)
+     type(node_t), intent(inout) :: self
+   end subroutine finalize_node
+ end module self_assign_mod
+ 
+ program test_self_assign
+   use self_assign_mod
+   implicit none
+ 
+   call test_simple_self_assign()
+   call test_parenthesized_self_assign()
+   call test_triple_parenthesized_self_assign()
+   call test_array_bounds()
+ 
+ contains
+ 
+   subroutine test_simple_self_assign()
+     type(node_t) :: a
+ 
+     a%value = 100
+     allocate(a%next)
+     a%next%value = 200
+ 
+     ! Simple self-assignment should preserve all components
+     a = a
+ 
+     if (a%value /= 100) stop 1
+     if (.not. allocated(a%next)) stop 2
+     if (a%next%value /= 200) stop 3
+   end subroutine test_simple_self_assign
+ 
+   subroutine test_parenthesized_self_assign()
+     type(node_t) :: a
+ 
+     a%value = 100
+     allocate(a%next)
+     a%next%value = 200
+ 
+     ! Parenthesized self-assignment should also preserve all components
+     a = (a)
+ 
+     if (a%value /= 100) stop 4
+     if (.not. allocated(a%next)) stop 5
+     if (a%next%value /= 200) stop 6
+   end subroutine test_parenthesized_self_assign
+ 
+   subroutine test_triple_parenthesized_self_assign()
+     type(node_t) :: a
+ 
+     a%value = 100
+     allocate(a%next)
+     a%next%value = 200
+ 
+     ! Triple-nested parentheses should also work correctly
+     a = (((a)))
+ 
+     if (a%value /= 100) stop 7
+     if (.not. allocated(a%next)) stop 8
+     if (a%next%value /= 200) stop 9
+   end subroutine test_triple_parenthesized_self_assign
+ 
+   subroutine test_array_bounds()
+     type(node_t), allocatable :: b(:), c(:)
+ 
+     ! Test array bounds behavior with parentheses.
+     ! Per F2023:10.2.1.3, lbound((b),1) = 1 even if lbound(b,1) = 5.
+     ! However, for b = (b) where b is already allocated with the right shape,
+     ! NO reallocation occurs, so bounds are preserved.
+     ! For c = (b) where c is unallocated, c gets allocated with default bounds.
+     allocate(b(5:5))
+     b(5)%value = 500
+ 
+     ! Self-assignment with parentheses: no reallocation (same shape), bounds preserved
+     b = (b)
+     if (.not. allocated(b)) stop 10
+     if (lbound(b, 1) /= 5) stop 11  ! Bounds preserved (no realloc)
+     if (ubound(b, 1) /= 5) stop 12
+     if (b(5)%value /= 500) stop 13
+ 
+     ! Assignment to unallocated array: gets default (1-based) bounds
+     c = (b)
+     if (.not. allocated(c)) stop 14
+     if (lbound(c, 1) /= 1) stop 15  ! Default bounds (new allocation)
+     if (ubound(c, 1) /= 1) stop 16
+     if (c(1)%value /= 500) stop 17
+   end subroutine test_array_bounds
+ 
+ end program test_self_assign
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gfortran.dg/fmt_error_10.f gcc-16-20251116/gcc/testsuite/gfortran.dg/fmt_error_10.f
*** gcc-16-20251109/gcc/testsuite/gfortran.dg/fmt_error_10.f	Sun Nov  9 22:33:37 2025
--- gcc-16-20251116/gcc/testsuite/gfortran.dg/fmt_error_10.f	Sun Nov 16 22:34:25 2025
***************
*** 14,25 ****
        
        write (line,'(1pd24.15e6)',iostat=istat, iomsg=msg) 1.0d0, 1.234 ! { dg-warning "Period required" }
        if (istat.ne.0) STOP 3
!       if (line.ne."   1.000000000000000D+001.E+00") STOP 4
  
        str = '(1pd0.15)'
        write (line,str,iostat=istat, iomsg=msg) 1.0d0
!       if (line.ne."1.000000000000000D+0") STOP 5
        read (*,str,iostat=istat, iomsg=msg) x
        if (istat.ne.5006 .or. msg(1:10).ne."Zero width") STOP 6
        if (x.ne.555.25) STOP 7
        
--- 14,26 ----
        
        write (line,'(1pd24.15e6)',iostat=istat, iomsg=msg) 1.0d0, 1.234 ! { dg-warning "Period required" }
        if (istat.ne.0) STOP 3
!       if (line.ne."   1.000000000000000D+001.E+00") STOP 2
  
        str = '(1pd0.15)'
        write (line,str,iostat=istat, iomsg=msg) 1.0d0
!       if (line.ne."1.000000000000000D+000") STOP 4
        read (*,str,iostat=istat, iomsg=msg) x
+       
        if (istat.ne.5006 .or. msg(1:10).ne."Zero width") STOP 6
        if (x.ne.555.25) STOP 7
        
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gfortran.dg/fmt_g0_4.f08 gcc-16-20251116/gcc/testsuite/gfortran.dg/fmt_g0_4.f08
*** gcc-16-20251109/gcc/testsuite/gfortran.dg/fmt_g0_4.f08	Sun Nov  9 22:33:37 2025
--- gcc-16-20251116/gcc/testsuite/gfortran.dg/fmt_g0_4.f08	Sun Nov 16 22:34:25 2025
***************
*** 1,15 ****
! ! { dg-do compile }
  ! { dg-options "-std=f2008" }
  ! PR36725 Compile time error for g0 edit descriptor
  character(30) :: line
  write(line, '(g0.3)') 0.1
! if (line.ne."      1.000E-01") STOP 1
  write(line, '(g0.9)') 1.0
! if (line.ne."1.000000000E+00") STOP 2
  write(line, '(g0.5)') 29.23
! if (line.ne."    2.92300E+01") STOP 3
  write(line, '(g0.8)') -28.4
! if (line.ne."-2.83999996E+01") STOP 4
  write(line, '(g0.8)') -0.0001
! if (line.ne."-9.99999975E-05") STOP 5
  end
--- 1,16 ----
! ! { dg-do run }
  ! { dg-options "-std=f2008" }
  ! PR36725 Compile time error for g0 edit descriptor
  character(30) :: line
  write(line, '(g0.3)') 0.1
! if (line.ne."0.100") STOP 1
  write(line, '(g0.9)') 1.0
! if (line.ne."1.00000000") STOP 2
  write(line, '(g0.5)') 29.23
! if (line.ne."29.230") STOP 3
  write(line, '(g0.8)') -28.4
! if (line.ne."-28.400000") STOP 4
  write(line, '(g0.8)') -0.0001
! if (line.ne."-0.99999997E-04") STOP 5
  end
+ 
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gfortran.dg/fmt_zero_width.f90 gcc-16-20251116/gcc/testsuite/gfortran.dg/fmt_zero_width.f90
*** gcc-16-20251109/gcc/testsuite/gfortran.dg/fmt_zero_width.f90	Sun Nov  9 22:33:37 2025
--- gcc-16-20251116/gcc/testsuite/gfortran.dg/fmt_zero_width.f90	Sun Nov 16 22:34:25 2025
*************** program pr90374
*** 9,40 ****
    rn = 0.00314_4
    afmt = "(D0.3)"
    write (aresult,fmt=afmt) rn
!   if (aresult /= "0.314D-2") stop 12
    afmt = "(E0.10)"
    write (aresult,fmt=afmt) rn
!   if (aresult /= "0.3139999928E-2") stop 15
    afmt = "(ES0.10)"
    write (aresult,fmt=afmt) rn
!   if (aresult /= "3.1399999280E-3") stop 18
    afmt = "(EN0.10)"
    write (aresult,fmt=afmt) rn
!   if (aresult /= "3.1399999280E-3") stop 21
    afmt = "(G0.10)"
    write (aresult,fmt=afmt) rn
!   if (aresult /= "0.3139999928E-2") stop 24
    afmt = "(E0.10e0)"
    write (aresult,fmt=afmt) rn
    if (aresult /= "0.3139999928E-2") stop 27
    write (aresult,fmt="(D0.3)") rn
!   if (aresult /= "0.314D-2") stop 29
    write (aresult,fmt="(E0.10)") rn
!   if (aresult /= "0.3139999928E-2") stop 31
    write (aresult,fmt="(ES0.10)") rn
!   if (aresult /= "3.1399999280E-3") stop 33
    write (aresult,fmt="(EN0.10)") rn
!   if (aresult /= "3.1399999280E-3") stop 35
    write (aresult,fmt="(G0.10)") rn
!   if (aresult /= "0.3139999928E-2") stop 37
    write (aresult,fmt="(E0.10e0)") rn
    if (aresult /= "0.3139999928E-2") stop 39
    write (aresult,fmt="(E0.10e3)") rn
--- 9,40 ----
    rn = 0.00314_4
    afmt = "(D0.3)"
    write (aresult,fmt=afmt) rn
!   if (aresult /= "0.314D-02") stop 12
    afmt = "(E0.10)"
    write (aresult,fmt=afmt) rn
!   if (aresult /= "0.3139999928E-02") stop 15
    afmt = "(ES0.10)"
    write (aresult,fmt=afmt) rn
!   if (aresult /= "3.1399999280E-03") stop 18
    afmt = "(EN0.10)"
    write (aresult,fmt=afmt) rn
!   if (aresult /= "3.1399999280E-03") stop 21
    afmt = "(G0.10)"
    write (aresult,fmt=afmt) rn
!   if (aresult /= "0.3139999928E-02") stop 24
    afmt = "(E0.10e0)"
    write (aresult,fmt=afmt) rn
    if (aresult /= "0.3139999928E-2") stop 27
    write (aresult,fmt="(D0.3)") rn
!   if (aresult /= "0.314D-02") stop 29
    write (aresult,fmt="(E0.10)") rn
!   if (aresult /= "0.3139999928E-02") stop 31
    write (aresult,fmt="(ES0.10)") rn
!   if (aresult /= "3.1399999280E-03") stop 33
    write (aresult,fmt="(EN0.10)") rn
!   if (aresult /= "3.1399999280E-03") stop 35
    write (aresult,fmt="(G0.10)") rn
!   if (aresult /= "0.3139999928E-02") stop 37
    write (aresult,fmt="(E0.10e0)") rn
    if (aresult /= "0.3139999928E-2") stop 39
    write (aresult,fmt="(E0.10e3)") rn
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gfortran.dg/pr111022.f90 gcc-16-20251116/gcc/testsuite/gfortran.dg/pr111022.f90
*** gcc-16-20251109/gcc/testsuite/gfortran.dg/pr111022.f90	Sun Nov  9 22:33:39 2025
--- gcc-16-20251116/gcc/testsuite/gfortran.dg/pr111022.f90	Sun Nov 16 22:34:26 2025
*************** program pr111022
*** 60,72 ****
    write(buffer,"(E0.3E0)") .6660_4
    if (buffer.ne."0.666E+0") stop 27
    write(buffer,"(E0.3)") .6660_4
!   if (buffer.ne."0.666E+0") stop 28
    write(buffer,"(E0.1E0)") .6660_4
    if (buffer.ne."0.7E+0") stop 29
    write(buffer,"(E0.1)") .6660_4
!   if (buffer.ne."0.7E+0") stop 30
    write(buffer,"(E0.5E0)") .6660_4
    if (buffer.ne."0.66600E+0") stop 31
    write(buffer,"(E0.5)") .6660_4
!   if (buffer.ne."0.66600E+0") stop 32
  end program pr111022
--- 60,72 ----
    write(buffer,"(E0.3E0)") .6660_4
    if (buffer.ne."0.666E+0") stop 27
    write(buffer,"(E0.3)") .6660_4
!   if (buffer.ne."0.666E+00") stop 28
    write(buffer,"(E0.1E0)") .6660_4
    if (buffer.ne."0.7E+0") stop 29
    write(buffer,"(E0.1)") .6660_4
!   if (buffer.ne."0.7E+00") stop 30
    write(buffer,"(E0.5E0)") .6660_4
    if (buffer.ne."0.66600E+0") stop 31
    write(buffer,"(E0.5)") .6660_4
!   if (buffer.ne."0.66600E+00") stop 32
  end program pr111022
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gfortran.dg/pr112459.f90 gcc-16-20251116/gcc/testsuite/gfortran.dg/pr112459.f90
*** gcc-16-20251109/gcc/testsuite/gfortran.dg/pr112459.f90	Sun Nov  9 22:33:39 2025
--- gcc-16-20251116/gcc/testsuite/gfortran.dg/pr112459.f90	Sun Nov 16 22:34:26 2025
*************** program myprog
*** 34,37 ****
    print *,"After allocation"
  end program myprog
  ! Final subroutines were called with std=gnu and -w = > 14 "_final"s.
! ! { dg-final { scan-tree-dump-times "_final" 12 "original" } }
--- 34,39 ----
    print *,"After allocation"
  end program myprog
  ! Final subroutines were called with std=gnu and -w = > 14 "_final"s.
! ! Count reduced from 12 after PR90519 fix - separate result symbols
! ! disambiguate procedure references from result variables.
! ! { dg-final { scan-tree-dump-times "_final" 6 "original" } }
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gfortran.dg/pr96436_4.f90 gcc-16-20251116/gcc/testsuite/gfortran.dg/pr96436_4.f90
*** gcc-16-20251109/gcc/testsuite/gfortran.dg/pr96436_4.f90	Sun Nov  9 22:33:40 2025
--- gcc-16-20251116/gcc/testsuite/gfortran.dg/pr96436_4.f90	Sun Nov 16 22:34:26 2025
***************
*** 2,8 ****
  ! { dg-options "-std=f2018 -pedantic" }
  
  character(20) :: fmt
! character(9) :: buffer
  fmt = "(1a1,f0.2,1a1)"
  write(buffer,fmt) ">", 3.0, "<"
  if (buffer.ne.">3.00<") stop 1
--- 2,8 ----
  ! { dg-options "-std=f2018 -pedantic" }
  
  character(20) :: fmt
! character(12) :: buffer
  fmt = "(1a1,f0.2,1a1)"
  write(buffer,fmt) ">", 3.0, "<"
  if (buffer.ne.">3.00<") stop 1
*************** write(buffer,fmt) ">", 0.3, "<"
*** 11,25 ****
  if (buffer.ne.">0.30<") stop 2
  fmt = "(1a1,d0.2,1a1)"
  write(buffer,fmt) ">", 3.0, "<"
! if (buffer.ne.">0.30D+1<") stop 3
  fmt = "(1a1,e0.2,1a1)"
  write(buffer,fmt) ">", 3.0, "<"
! if (buffer.ne.">0.30E+1<") stop 4
  fmt = "(1a1,en0.2,1a1)"
  write(buffer,fmt) ">", 3.0, "<"
! if (buffer.ne.">3.00E+0<") stop 5
  fmt = "(1a1,es0.2,1a1)"
  write(buffer,fmt) ">", 3.0, "<"
! if (buffer.ne.">3.00E+0<") stop 6
  end
  
--- 11,25 ----
  if (buffer.ne.">0.30<") stop 2
  fmt = "(1a1,d0.2,1a1)"
  write(buffer,fmt) ">", 3.0, "<"
! if (buffer.ne.">0.30D+01<") stop 3
  fmt = "(1a1,e0.2,1a1)"
  write(buffer,fmt) ">", 3.0, "<"
! if (buffer.ne.">0.30E+01<") stop 4
  fmt = "(1a1,en0.2,1a1)"
  write(buffer,fmt) ">", 3.0, "<"
! if (buffer.ne.">3.00E+00<") stop 5
  fmt = "(1a1,es0.2,1a1)"
  write(buffer,fmt) ">", 3.0, "<"
! if (buffer.ne.">3.00E+00<") stop 6
  end
  
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gfortran.dg/pr96436_5.f90 gcc-16-20251116/gcc/testsuite/gfortran.dg/pr96436_5.f90
*** gcc-16-20251109/gcc/testsuite/gfortran.dg/pr96436_5.f90	Sun Nov  9 22:33:40 2025
--- gcc-16-20251116/gcc/testsuite/gfortran.dg/pr96436_5.f90	Sun Nov 16 22:34:26 2025
***************
*** 2,8 ****
  ! { dg-options "-pedantic" }
  
  character(20) :: fmt
! character(9) :: buffer
  fmt = "(1a1,f0.2,1a1)"
  write(buffer,fmt) ">", 3.0, "<"
  if (buffer.ne.">3.00<") stop 1
--- 2,8 ----
  ! { dg-options "-pedantic" }
  
  character(20) :: fmt
! character(12) :: buffer
  fmt = "(1a1,f0.2,1a1)"
  write(buffer,fmt) ">", 3.0, "<"
  if (buffer.ne.">3.00<") stop 1
*************** write(buffer,fmt) ">", 0.30, "<"
*** 11,25 ****
  if (buffer.ne.">0.30<") stop 2
  fmt = "(1a1,d0.2,1a1)"
  write(buffer,fmt) ">", 3.0, "<"
! if (buffer.ne.">0.30D+1<") stop 3
  fmt = "(1a1,e0.2,1a1)"
  write(buffer,fmt) ">", 3.0, "<"
! if (buffer.ne.">0.30E+1<") stop 4
  fmt = "(1a1,en0.2,1a1)"
  write(buffer,fmt) ">", 3.0, "<"
! if (buffer.ne.">3.00E+0<") stop 5
  fmt = "(1a1,es0.2,1a1)"
  write(buffer,fmt) ">", 3.0, "<"
! if (buffer.ne.">3.00E+0<") stop 6
  end
  
--- 11,25 ----
  if (buffer.ne.">0.30<") stop 2
  fmt = "(1a1,d0.2,1a1)"
  write(buffer,fmt) ">", 3.0, "<"
! if (buffer.ne.">0.30D+01<") stop 3
  fmt = "(1a1,e0.2,1a1)"
  write(buffer,fmt) ">", 3.0, "<"
! if (buffer.ne.">0.30E+01<") stop 4
  fmt = "(1a1,en0.2,1a1)"
  write(buffer,fmt) ">", 3.0, "<"
! if (buffer.ne.">3.00E+00<") stop 5
  fmt = "(1a1,es0.2,1a1)"
  write(buffer,fmt) ">", 3.0, "<"
! if (buffer.ne.">3.00E+00<") stop 6
  end
  
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gfortran.dg/proc_target_1.f90 gcc-16-20251116/gcc/testsuite/gfortran.dg/proc_target_1.f90
*** gcc-16-20251109/gcc/testsuite/gfortran.dg/proc_target_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gfortran.dg/proc_target_1.f90	Sun Nov 16 22:34:26 2025
***************
*** 0 ****
--- 1,134 ----
+ ! { dg-do run }
+ !
+ ! PR fortran/117070 - Procedure targets in derived-type constructors
+ !
+ ! Contributed by Ivan Pribec
+ 
+ module funcs
+   implicit none
+ 
+   abstract interface
+      function retchar()
+        character(len=1) :: retchar
+      end function retchar
+   end interface
+ contains
+   function a()
+     character(len=1) :: a
+     a = 'a'
+   end function
+   function b()
+       character(len=1) :: b
+       b = 'b'
+   end function
+   function c()
+       character(len=1) :: c
+       c = 'c'
+   end function
+ end module
+ 
+ module dispatch_table
+   use funcs
+   implicit none
+ 
+   ! Procedure container
+   type :: pc
+      procedure(retchar), pointer, nopass :: rc => null()
+   end type pc
+ 
+   type(pc), parameter :: dtab_p(3)  = [pc(a),pc(b),pc(c)] ! Parameter
+   type(pc)            :: dtab_v(3)  = [pc(a),pc(b),pc(c)] ! Variable
+ 
+ contains
+ 
+   ! Dynamic dispatch table
+   function build_table() result(table)
+     type(pc) :: table(3)
+     table = [pc(a),pc(b),pc(c)]
+   end function build_table
+ 
+ end module
+ 
+ program test
+   use dispatch_table
+   implicit none
+   type(pc), parameter :: table_p(3)  = [pc(a),pc(b),pc(c)] ! Parameter
+   type(pc)            :: table_v(3)  = [pc(a),pc(b),pc(c)] ! Variable
+   type(pc) :: table(3)
+ 
+   ! Get dispatch table from local variable
+   table = table_v
+   associate (abc => table(1)%rc()//table(2)%rc()//table(3)%rc())
+     if (abc /= 'abc') stop 1
+   end associate
+ 
+   associate (abc => table_v(1)%rc()//table_v(2)%rc()//table_v(3)%rc())
+     if (abc /= 'abc') stop 2
+   end associate
+ 
+   table = table_p
+   associate (abc => table(1)%rc()//table(2)%rc()//table(3)%rc())
+     if (abc /= 'abc') stop 3
+   end associate
+ 
+ ! Bogus error:
+ ! "Operands of string concatenation operator at (1) are PROCEDURE/PROCEDURE"
+ ! associate (abc => table_p(1)%rc()//table_p(2)%rc()//table_p(3)%rc())
+ !   if (abc /= 'abc') stop 4
+ ! end associate
+ 
+   ! Get dispatch table from other module and passed via local variable
+   table = build_table() ! Dynamic table
+   associate (abc => table(1)%rc()//table(2)%rc()//table(3)%rc())
+     if (abc /= 'abc') stop 5
+   end associate
+ 
+   table = dtab_v
+   associate (abc => table(1)%rc()//table(2)%rc()//table(3)%rc())
+     if (abc /= 'abc') stop 6
+   end associate
+ 
+   table = dtab_p
+   associate (abc => table(1)%rc()//table(2)%rc()//table(3)%rc())
+     if (abc /= 'abc') stop 7
+   end associate
+ 
+   ! Dispatch table from other module directly used in associate
+   associate (abc => dtab_v(1)%rc()//dtab_v(2)%rc()//dtab_v(3)%rc())
+     if (abc /= 'abc') stop 8
+   end associate
+ 
+ ! associate (abc => dtab_p(1)%rc()//dtab_p(2)%rc()//dtab_p(3)%rc())
+ !   if (abc /= 'abc') stop 9
+ ! end associate
+ 
+   ! Several variations
+   block
+     type(pc)            :: table(3) = [pc(a),pc(b),pc(c)]
+     associate (abc => table(1)%rc()//table(2)%rc()//table(3)%rc())
+       if (abc /= 'abc') stop 10
+     end associate
+   end block
+ 
+   block
+     use dispatch_table, only: table => dtab_v
+     associate (abc => table(1)%rc()//table(2)%rc()//table(3)%rc())
+       if (abc /= 'abc') stop 11
+     end associate
+   end block
+ 
+ ! block
+ !   type(pc), parameter :: table(3) = [pc(a),pc(b),pc(c)]
+ !   associate (abc => table(1)%rc()//table(2)%rc()//table(3)%rc())
+ !     if (abc /= 'abc') stop 12
+ !   end associate
+ ! end block
+ 
+ ! block
+ !   use dispatch_table, only: table => dtab_p
+ !   associate (abc => table(1)%rc()//table(2)%rc()//table(3)%rc())
+ !     if (abc /= 'abc') stop 13
+ !   end associate
+ ! end block
+ 
+ end program
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gfortran.dg/value_optional_3.f90 gcc-16-20251116/gcc/testsuite/gfortran.dg/value_optional_3.f90
*** gcc-16-20251109/gcc/testsuite/gfortran.dg/value_optional_3.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gfortran.dg/value_optional_3.f90	Sun Nov 16 22:34:26 2025
***************
*** 0 ****
--- 1,51 ----
+ ! { dg-do run }
+ 
+ module m
+   implicit none(type, external)
+ 
+   logical :: is_present
+   logical :: is_allocated
+   integer :: has_value
+ 
+ contains
+ 
+   subroutine test(a)
+     integer, allocatable :: a
+     call sub_val(a)
+   end subroutine test
+ 
+   subroutine test2(a)
+     integer, allocatable, optional :: a
+     call sub_val(a)
+   end subroutine test2
+ 
+   subroutine sub_val(x)
+     integer, optional, value :: x
+     if (present(x) .neqv. (is_present .and. is_allocated)) stop 1
+     if (present(x)) then
+       if (x /= has_value) stop 2
+     end if
+   end subroutine sub_val
+ 
+ end module m
+ 
+ use m
+ implicit none(type, external)
+ integer, allocatable :: b
+ 
+ is_allocated = .false.
+ is_present = .false.
+ call test2()
+ 
+ is_present = .true.
+ call test(b)
+ call test2(b)
+ 
+ b = 4
+ is_allocated = .true.
+ has_value = b
+ call test(b)
+ call test2(b)
+ deallocate(b)
+ 
+ end program
diff -Nrcpad gcc-16-20251109/gcc/testsuite/gnat.dg/warn34.adb gcc-16-20251116/gcc/testsuite/gnat.dg/warn34.adb
*** gcc-16-20251109/gcc/testsuite/gnat.dg/warn34.adb	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/gnat.dg/warn34.adb	Sun Nov 16 22:34:30 2025
***************
*** 0 ****
--- 1,9 ----
+ -- { dg-do compile }
+ -- { dg-options "-gnatwk" }
+ 
+ function Warn34 (F : Boolean) return String is
+   S : String := -- { dg-warning "could be declared constant" }
+         (if F then "foo" else "bar");
+ begin
+   return S;
+ end;
diff -Nrcpad gcc-16-20251109/gcc/testsuite/jit.dg/all-non-failing-tests.h gcc-16-20251116/gcc/testsuite/jit.dg/all-non-failing-tests.h
*** gcc-16-20251109/gcc/testsuite/jit.dg/all-non-failing-tests.h	Sun Nov  9 22:33:47 2025
--- gcc-16-20251116/gcc/testsuite/jit.dg/all-non-failing-tests.h	Sun Nov 16 22:34:43 2025
***************
*** 8,13 ****
--- 8,16 ----
     hooks provided by each test case.  */
  #define COMBINED_TEST
  
+ /* test-abi.c: This can't be in the testcases array as it
+    is target-specific.  */
+ 
  /* test-accessing-bitfield.c */
  #define create_code create_code_accessing_bitfield
  #define verify_code verify_code_accessing_bitfield
diff -Nrcpad gcc-16-20251109/gcc/testsuite/jit.dg/test-abi.c gcc-16-20251116/gcc/testsuite/jit.dg/test-abi.c
*** gcc-16-20251109/gcc/testsuite/jit.dg/test-abi.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/gcc/testsuite/jit.dg/test-abi.c	Sun Nov 16 22:34:43 2025
***************
*** 0 ****
--- 1,51 ----
+ /* { dg-do compile { target x86_64-*-* } } */
+ 
+ #include <stdlib.h>
+ #include <stdio.h>
+ 
+ #include "libgccjit.h"
+ 
+ #define TEST_COMPILING_TO_FILE
+ #define OUTPUT_KIND      GCC_JIT_OUTPUT_KIND_ASSEMBLER
+ #define OUTPUT_FILENAME  "output-of-test-restrict.c.s"
+ #include "harness.h"
+ 
+ void
+ create_code (gcc_jit_context *ctxt, void *user_data)
+ {
+ 	/* Let's try to inject the equivalent of:
+ __attribute__((__ms_abi__))
+ int t(int x, int y) {
+   return x * y;
+ }
+ 	*/
+   gcc_jit_type *int_type =
+     gcc_jit_context_get_type (ctxt, GCC_JIT_TYPE_INT);
+ 
+   gcc_jit_param *x =
+     gcc_jit_context_new_param (ctxt, NULL, int_type, "x");
+   gcc_jit_param *y =
+     gcc_jit_context_new_param (ctxt, NULL, int_type, "y");
+   gcc_jit_param *params[2] = {x, y};
+ 
+   gcc_jit_function *func_t =
+     gcc_jit_context_new_function (ctxt, NULL,
+       GCC_JIT_FUNCTION_EXPORTED, int_type, "t",
+       2, params, 0);
+   gcc_jit_function_add_attribute (func_t,
+     GCC_JIT_FN_ATTRIBUTE_X86_MS_ABI);
+ 
+   gcc_jit_block *block = gcc_jit_function_new_block (func_t, NULL);
+ 
+   gcc_jit_rvalue *result =
+     gcc_jit_context_new_binary_op (
+       ctxt, NULL, GCC_JIT_BINARY_OP_MULT,
+       int_type,
+       gcc_jit_param_as_rvalue (x),
+       gcc_jit_param_as_rvalue (y));
+ 
+   gcc_jit_block_end_with_return (block, NULL, result);
+ }
+ 
+ /* { dg-final { jit-verify-output-file-was-created "" } } */
+ /* { dg-final { jit-verify-assembler-output "movl\\s+%ecx, %eax" } } */
diff -Nrcpad gcc-16-20251109/gcc/toplev.cc gcc-16-20251116/gcc/toplev.cc
*** gcc-16-20251109/gcc/toplev.cc	Sun Nov  9 22:33:51 2025
--- gcc-16-20251116/gcc/toplev.cc	Sun Nov 16 22:34:45 2025
*************** along with GCC; see the file COPYING3.
*** 22,27 ****
--- 22,28 ----
     in the proper order, and counts the time used by each.
     Error messages and low-level interface to malloc also handled here.  */
  
+ #define INCLUDE_VECTOR
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
*************** along with GCC; see the file COPYING3.
*** 83,88 ****
--- 84,90 ----
  #include "omp-offload.h"
  #include "diagnostics/changes.h"
  #include "diagnostics/file-cache.h"
+ #include "diagnostics/sarif-sink.h"
  #include "tree-pass.h"
  #include "dumpfile.h"
  #include "ipa-fnsummary.h"
*************** toplev::main (int argc, char **argv)
*** 2352,2357 ****
--- 2354,2361 ----
  
    handle_common_deferred_options ();
  
+   diagnostics::maybe_open_sarif_sink_for_socket (*global_dc);
+ 
    init_local_tick ();
  
    initialize_plugins ();
diff -Nrcpad gcc-16-20251109/gcc/tree-cfg.cc gcc-16-20251116/gcc/tree-cfg.cc
*** gcc-16-20251109/gcc/tree-cfg.cc	Sun Nov  9 22:33:51 2025
--- gcc-16-20251116/gcc/tree-cfg.cc	Sun Nov 16 22:34:45 2025
*************** bb_part_of_region_p (basic_block bb, bas
*** 6791,6800 ****
  
  
  /* For each PHI in BB, copy the argument associated with SRC_E to TGT_E.
!    Assuming the argument exists, just does not have a value.  */
  
  void
! copy_phi_arg_into_existing_phi (edge src_e, edge tgt_e)
  {
    int src_idx = src_e->dest_idx;
    int tgt_idx = tgt_e->dest_idx;
--- 6791,6802 ----
  
  
  /* For each PHI in BB, copy the argument associated with SRC_E to TGT_E.
!    Assuming the argument exists, just does not have a value.
!    If USE_MAP is true, then use the redirect edge var map of TGT_E
!    for the new arguments; clearing the map afterwards.  */
  
  void
! copy_phi_arg_into_existing_phi (edge src_e, edge tgt_e, bool use_map)
  {
    int src_idx = src_e->dest_idx;
    int tgt_idx = tgt_e->dest_idx;
*************** copy_phi_arg_into_existing_phi (edge src
*** 6810,6818 ****
--- 6812,6847 ----
        tree val = gimple_phi_arg_def (src_phi, src_idx);
        location_t locus = gimple_phi_arg_location (src_phi, src_idx);
  
+       if (use_map && TREE_CODE (val) == SSA_NAME)
+ 	{
+ 	  /* If DEF is one of the results of PHI nodes removed during
+ 	     redirection, replace it with the PHI argument that used
+ 	     to be on E.  */
+ 	  vec<edge_var_map> *head = redirect_edge_var_map_vector (tgt_e);
+ 	  size_t length = head ? head->length () : 0;
+ 	  for (size_t i = 0; i < length; i++)
+ 	    {
+ 	      edge_var_map *vm = &(*head)[i];
+ 	      tree old_arg = redirect_edge_var_map_result (vm);
+ 	      tree new_arg = redirect_edge_var_map_def (vm);
+ 
+ 	      if (val == old_arg)
+ 		{
+ 		  val = new_arg;
+ 		  location_t locus1 = redirect_edge_var_map_location (vm);
+ 		  /* Don't remove the location if we remap one does not have one.  */
+ 		  if (locus1 != UNKNOWN_LOCATION)
+ 		    locus = locus1;
+ 		  break;
+ 		}
+ 	    }
+ 	}
+ 
        SET_PHI_ARG_DEF (dest_phi, tgt_idx, val);
        gimple_phi_arg_set_location (dest_phi, tgt_idx, locus);
      }
+   if (use_map)
+     redirect_edge_var_map_clear (tgt_e);
  }
  
  /* Duplicates REGION consisting of N_REGION blocks.  The new blocks
diff -Nrcpad gcc-16-20251109/gcc/tree-cfg.h gcc-16-20251116/gcc/tree-cfg.h
*** gcc-16-20251109/gcc/tree-cfg.h	Sun Nov  9 22:33:51 2025
--- gcc-16-20251116/gcc/tree-cfg.h	Sun Nov 16 22:34:45 2025
*************** extern basic_block gimple_switch_default
*** 113,119 ****
  extern edge gimple_switch_edge (function *, gswitch *, unsigned);
  extern edge gimple_switch_default_edge (function *, gswitch *);
  extern bool cond_only_block_p (basic_block);
! extern void copy_phi_arg_into_existing_phi (edge, edge);
  
  /* Return true if the LHS of a call should be removed.  */
  
--- 113,119 ----
  extern edge gimple_switch_edge (function *, gswitch *, unsigned);
  extern edge gimple_switch_default_edge (function *, gswitch *);
  extern bool cond_only_block_p (basic_block);
! extern void copy_phi_arg_into_existing_phi (edge, edge, bool = false);
  
  /* Return true if the LHS of a call should be removed.  */
  
diff -Nrcpad gcc-16-20251109/gcc/tree-cfgcleanup.cc gcc-16-20251116/gcc/tree-cfgcleanup.cc
*** gcc-16-20251109/gcc/tree-cfgcleanup.cc	Sun Nov  9 22:33:51 2025
--- gcc-16-20251116/gcc/tree-cfgcleanup.cc	Sun Nov 16 22:34:45 2025
*************** cleanup_control_flow_bb (basic_block bb)
*** 386,401 ****
     the entry block.  */
  
  static bool
! tree_forwarder_block_p (basic_block bb, bool phi_wanted)
  {
    gimple_stmt_iterator gsi;
    location_t locus;
  
    /* BB must have a single outgoing edge.  */
    if (!single_succ_p (bb)
-       /* If PHI_WANTED is false, BB must not have any PHI nodes.
- 	 Otherwise, BB must have PHI nodes.  */
-       || gimple_seq_empty_p (phi_nodes (bb)) == phi_wanted
        /* BB may not be a predecessor of the exit block.  */
        || single_succ (bb) == EXIT_BLOCK_PTR_FOR_FN (cfun)
        /* Nor should this be an infinite loop.  */
--- 386,398 ----
     the entry block.  */
  
  static bool
! tree_forwarder_block_p (basic_block bb)
  {
    gimple_stmt_iterator gsi;
    location_t locus;
  
    /* BB must have a single outgoing edge.  */
    if (!single_succ_p (bb)
        /* BB may not be a predecessor of the exit block.  */
        || single_succ (bb) == EXIT_BLOCK_PTR_FOR_FN (cfun)
        /* Nor should this be an infinite loop.  */
*************** tree_forwarder_block_p (basic_block bb,
*** 425,430 ****
--- 422,436 ----
  	return false;
    }
  
+   /* If this bb has a single predecessor and that predecssor
+      has a single successor, this bb will be merged with the
+      predecessor so ignore it for removing of the forwarder block. */
+   if (single_pred_p (bb)
+       && single_succ_p (single_pred_edge (bb)->src))
+     return false;
+ 
+   basic_block dest = single_succ_edge (bb)->dest;
+ 
    /* Now walk through the statements backward.  We can ignore labels,
       anything else means this is not a forwarder block.  */
    for (gsi = gsi_last_bb (bb); !gsi_end_p (gsi); gsi_prev (&gsi))
*************** tree_forwarder_block_p (basic_block bb,
*** 434,440 ****
        switch (gimple_code (stmt))
  	{
  	case GIMPLE_LABEL:
! 	  if (DECL_NONLOCAL (gimple_label_label (as_a <glabel *> (stmt))))
  	    return false;
  	  if (!optimize
  	      && (gimple_has_location (stmt)
--- 440,447 ----
        switch (gimple_code (stmt))
  	{
  	case GIMPLE_LABEL:
! 	  if (DECL_NONLOCAL (gimple_label_label (as_a <glabel *> (stmt)))
! 	      || EH_LANDING_PAD_NR (gimple_label_label (as_a <glabel *> (stmt))))
  	    return false;
  	  if (!optimize
  	      && (gimple_has_location (stmt)
*************** tree_forwarder_block_p (basic_block bb,
*** 453,466 ****
  	}
      }
  
    if (current_loops)
      {
-       basic_block dest;
        /* Protect loop headers.  */
        if (bb_loop_header_p (bb))
  	return false;
  
-       dest = EDGE_SUCC (bb, 0)->dest;
        /* Protect loop preheaders and latches if requested.  */
        if (dest->loop_father->header == dest)
  	{
--- 460,508 ----
  	}
      }
  
+   /* If BB has PHIs and does not dominate DEST,
+      then the PHI nodes at DEST must be the only
+      users of the results of the PHI nodes at BB.
+      So only check when BB dominates dest.  */
+   if (!gimple_seq_empty_p (phi_nodes (bb))
+       && dominated_by_p (CDI_DOMINATORS, dest, bb))
+     {
+       gphi_iterator gsi;
+       unsigned int dest_idx = single_succ_edge (bb)->dest_idx;
+ 
+       /* BB dominates DEST.  There may be many users of the PHI
+ 	 nodes in BB.  However, there is still a trivial case we
+ 	 can handle.  If the result of every PHI in BB is used
+ 	 only by a PHI in DEST, then we can trivially merge the
+ 	 PHI nodes from BB into DEST.  */
+       for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi);
+ 	   gsi_next (&gsi))
+ 	{
+ 	  gphi *phi = gsi.phi ();
+ 	  tree result = gimple_phi_result (phi);
+ 	  use_operand_p imm_use;
+ 	  gimple *use_stmt;
+ 
+ 	  /* If the PHI's result is never used, then we can just
+ 	     ignore it an.  */
+ 	  if (has_zero_uses (result))
+ 	    continue;
+ 
+ 	  /* Get the single use of the result of this PHI node.  */
+ 	  if (!single_imm_use (result, &imm_use, &use_stmt)
+ 	      || gimple_code (use_stmt) != GIMPLE_PHI
+ 	      || gimple_bb (use_stmt) != dest
+ 	      || gimple_phi_arg_def (use_stmt, dest_idx) != result)
+ 	    return false;
+ 	}
+     }
+ 
    if (current_loops)
      {
        /* Protect loop headers.  */
        if (bb_loop_header_p (bb))
  	return false;
  
        /* Protect loop preheaders and latches if requested.  */
        if (dest->loop_father->header == dest)
  	{
*************** tree_forwarder_block_p (basic_block bb,
*** 475,485 ****
  		      || loops_state_satisfies_p
  		      	   (LOOPS_MAY_HAVE_MULTIPLE_LATCHES));
  	    }
! 	  else if (bb->loop_father == loop_outer (dest->loop_father))
! 	    return !loops_state_satisfies_p (LOOPS_HAVE_PREHEADERS);
! 	  /* Always preserve other edges into loop headers that are
! 	     not simple latches or preheaders.  */
! 	  return false;
  	}
      }
  
--- 517,532 ----
  		      || loops_state_satisfies_p
  		      	   (LOOPS_MAY_HAVE_MULTIPLE_LATCHES));
  	    }
! 	  /* cleanup_tree_cfg_noloop just created the loop preheader, don't
! 	     remove it if it has phis.  */
! 	  else if (bb->loop_father == loop_outer (dest->loop_father)
! 		   && gimple_seq_empty_p (phi_nodes (bb))
! 		   && !loops_state_satisfies_p (LOOPS_HAVE_PREHEADERS))
! 	    ;
! 	  else
! 	    /* Always preserve other edges into loop headers that are
! 	       not simple latches or preheaders.  */
! 	    return false;
  	}
      }
  
*************** move_debug_stmts_from_forwarder (basic_b
*** 574,601 ****
  /* Removes forwarder block BB.  Returns false if this failed.  */
  
  static bool
! remove_forwarder_block (basic_block bb)
  {
    edge succ = single_succ_edge (bb), e, s;
    basic_block dest = succ->dest;
    gimple *stmt;
-   edge_iterator ei;
    gimple_stmt_iterator gsi, gsi_to;
! 
!   /* We check for infinite loops already in tree_forwarder_block_p.
!      However it may happen that the infinite loop is created
!      afterwards due to removal of forwarders.  */
!   if (dest == bb)
!     return false;
! 
!   /* If the destination block consists of a nonlocal label or is a
!      EH landing pad, do not merge it.  */
!   stmt = first_stmt (dest);
!   if (stmt)
!     if (glabel *label_stmt = dyn_cast <glabel *> (stmt))
!       if (DECL_NONLOCAL (gimple_label_label (label_stmt))
! 	  || EH_LANDING_PAD_NR (gimple_label_label (label_stmt)) != 0)
! 	return false;
  
    /* If there is an abnormal edge to basic block BB, but not into
       dest, problems might occur during removal of the phi node at out
--- 621,633 ----
  /* Removes forwarder block BB.  Returns false if this failed.  */
  
  static bool
! remove_forwarder_block (basic_block bb, bool can_split = false)
  {
    edge succ = single_succ_edge (bb), e, s;
    basic_block dest = succ->dest;
    gimple *stmt;
    gimple_stmt_iterator gsi, gsi_to;
!   bool has_phi = !gimple_seq_empty_p (phi_nodes (bb));
  
    /* If there is an abnormal edge to basic block BB, but not into
       dest, problems might occur during removal of the phi node at out
*************** remove_forwarder_block (basic_block bb)
*** 607,623 ****
       does not like it.
  
       So if there is an abnormal edge to BB, proceed only if there is
!      no abnormal edge to DEST and there are no phi nodes in DEST.  */
    if (bb_has_abnormal_pred (bb)
        && (bb_has_abnormal_pred (dest)
! 	  || !gimple_seq_empty_p (phi_nodes (dest))))
      return false;
  
    /* If there are phi nodes in DEST, and some of the blocks that are
       predecessors of BB are also predecessors of DEST, check that the
!      phi node arguments match.  */
!   if (!gimple_seq_empty_p (phi_nodes (dest)))
      {
        FOR_EACH_EDGE (e, ei, bb->preds)
  	{
  	  s = find_edge (e->src, dest);
--- 639,666 ----
       does not like it.
  
       So if there is an abnormal edge to BB, proceed only if there is
!      no abnormal edge to DEST and there are no phi nodes in DEST.
!      If the BB has phi, we don't want to deal with abnormal edges either. */
    if (bb_has_abnormal_pred (bb)
        && (bb_has_abnormal_pred (dest)
! 	  || !gimple_seq_empty_p (phi_nodes (dest))
! 	  || has_phi))
!     return false;
! 
!   /* When we have a phi, we have to feed into another
!      basic block with PHI nodes.  */
!   if (has_phi && gimple_seq_empty_p (phi_nodes (dest)))
      return false;
  
    /* If there are phi nodes in DEST, and some of the blocks that are
       predecessors of BB are also predecessors of DEST, check that the
!      phi node arguments match.
!      Otherwise we have to split the edge and that becomes
!      a "forwarder" again.  */
!   if ((!can_split || !has_phi)
!       && !gimple_seq_empty_p (phi_nodes (dest)))
      {
+       edge_iterator ei;
        FOR_EACH_EDGE (e, ei, bb->preds)
  	{
  	  s = find_edge (e->src, dest);
*************** remove_forwarder_block (basic_block bb)
*** 635,643 ****
    bool dest_single_pred_p = single_pred_p (dest);
  
    /* Redirect the edges.  */
!   for (ei = ei_start (bb->preds); (e = ei_safe_edge (ei)); )
      {
!       bitmap_set_bit (cfgcleanup_altered_bbs, e->src->index);
  
        if (e->flags & EDGE_ABNORMAL)
  	{
--- 678,696 ----
    bool dest_single_pred_p = single_pred_p (dest);
  
    /* Redirect the edges.  */
!   for (edge_iterator ei = ei_start (bb->preds); (e = ei_safe_edge (ei)); )
      {
!       if (cfgcleanup_altered_bbs)
! 	bitmap_set_bit (cfgcleanup_altered_bbs, e->src->index);
!       s = find_edge (e->src, dest);
! 
!       /* See if we can split the edge if we already have an edge from src to dest.  */
!       if (can_split && has_phi)
! 	/* PHI arguments are different.  Create a forwarder block by
! 	   splitting E so that we can merge PHI arguments on E to
! 	   DEST.  */
! 	if (s && !phi_alternatives_equal (dest, s, succ))
! 	  e = single_succ_edge (split_edge (e));
  
        if (e->flags & EDGE_ABNORMAL)
  	{
*************** remove_forwarder_block (basic_block bb)
*** 650,659 ****
  
        if (s == e)
  	{
  	  /* Copy arguments for the phi nodes, since the edge was not
  	     here before.  */
! 	  copy_phi_arg_into_existing_phi (succ, s);
  	}
      }
  
    /* Move nonlocal labels and computed goto targets as well as user
--- 703,726 ----
  
        if (s == e)
  	{
+ 	  /* If we merge the forwarder with phis into a loop header
+ 	     verify if we are creating another loop latch edge.
+ 	     If so, reset number of iteration information of the loop.  */
+ 	  if (has_phi
+ 	      && dest->loop_father
+ 	      && dest->loop_father->header == dest
+ 	      && dominated_by_p (CDI_DOMINATORS, e->src, dest))
+ 	    {
+ 	      dest->loop_father->any_upper_bound = false;
+ 	      dest->loop_father->any_likely_upper_bound = false;
+ 	      free_numbers_of_iterations_estimates (dest->loop_father);
+ 	    }
  	  /* Copy arguments for the phi nodes, since the edge was not
  	     here before.  */
! 	  copy_phi_arg_into_existing_phi (succ, s, has_phi);
  	}
+       else
+ 	redirect_edge_var_map_clear (s);
      }
  
    /* Move nonlocal labels and computed goto targets as well as user
*************** remove_forwarder_block (basic_block bb)
*** 686,711 ****
    move_debug_stmts_from_forwarder (bb, dest, dest_single_pred_p,
  				   pred, pred && single_succ_p (pred));
  
!   bitmap_set_bit (cfgcleanup_altered_bbs, dest->index);
  
    /* Update the dominators.  */
!   if (dom_info_available_p (CDI_DOMINATORS))
!     {
!       basic_block dom, dombb, domdest;
! 
!       dombb = get_immediate_dominator (CDI_DOMINATORS, bb);
!       domdest = get_immediate_dominator (CDI_DOMINATORS, dest);
!       if (domdest == bb)
! 	{
! 	  /* Shortcut to avoid calling (relatively expensive)
! 	     nearest_common_dominator unless necessary.  */
! 	  dom = dombb;
! 	}
!       else
! 	dom = nearest_common_dominator (CDI_DOMINATORS, domdest, dombb);
  
!       set_immediate_dominator (CDI_DOMINATORS, dest, dom);
      }
  
    /* Adjust latch infomation of BB's parent loop as otherwise
       the cfg hook has a hard time not to kill the loop.  */
--- 753,776 ----
    move_debug_stmts_from_forwarder (bb, dest, dest_single_pred_p,
  				   pred, pred && single_succ_p (pred));
  
!   if (cfgcleanup_altered_bbs)
!     bitmap_set_bit (cfgcleanup_altered_bbs, dest->index);
  
    /* Update the dominators.  */
!   basic_block dom, dombb, domdest;
  
!   dombb = get_immediate_dominator (CDI_DOMINATORS, bb);
!   domdest = get_immediate_dominator (CDI_DOMINATORS, dest);
!   if (domdest == bb)
!     {
!       /* Shortcut to avoid calling (relatively expensive)
! 	 nearest_common_dominator unless necessary.  */
!       dom = dombb;
      }
+   else
+     dom = nearest_common_dominator (CDI_DOMINATORS, domdest, dombb);
+ 
+   set_immediate_dominator (CDI_DOMINATORS, dest, dom);
  
    /* Adjust latch infomation of BB's parent loop as otherwise
       the cfg hook has a hard time not to kill the loop.  */
*************** want_merge_blocks_p (basic_block bb1, ba
*** 807,813 ****
  static bool
  cleanup_tree_cfg_bb (basic_block bb)
  {
!   if (tree_forwarder_block_p (bb, false)
        && remove_forwarder_block (bb))
      return true;
  
--- 872,878 ----
  static bool
  cleanup_tree_cfg_bb (basic_block bb)
  {
!   if (tree_forwarder_block_p (bb)
        && remove_forwarder_block (bb))
      return true;
  
*************** cleanup_tree_cfg (unsigned ssa_update_fl
*** 1251,1405 ****
    return changed;
  }
  
- /* Tries to merge the PHI nodes at BB into those at BB's sole successor.
-    Returns true if successful.  */
- 
- static bool
- remove_forwarder_block_with_phi (basic_block bb)
- {
-   edge succ = single_succ_edge (bb);
-   basic_block dest = succ->dest;
-   gimple *label;
-   basic_block dombb, domdest, dom;
- 
-   /* We check for infinite loops already in tree_forwarder_block_p.
-      However it may happen that the infinite loop is created
-      afterwards due to removal of forwarders.  */
-   if (dest == bb)
-     return false;
- 
-   /* Removal of forwarders may expose new natural loops and thus
-      a block may turn into a loop header.  */
-   if (current_loops && bb_loop_header_p (bb))
-     return false;
- 
-   /* If the destination block consists of a nonlocal label, do not
-      merge it.  */
-   label = first_stmt (dest);
-   if (label)
-     if (glabel *label_stmt = dyn_cast <glabel *> (label))
-       if (DECL_NONLOCAL (gimple_label_label (label_stmt)))
- 	return false;
- 
-   /* Record BB's single pred in case we need to update the father
-      loop's latch information later.  */
-   basic_block pred = NULL;
-   if (single_pred_p (bb))
-     pred = single_pred (bb);
-   bool dest_single_pred_p = single_pred_p (dest);
- 
-   /* Redirect each incoming edge to BB to DEST.  */
-   while (EDGE_COUNT (bb->preds) > 0)
-     {
-       edge e = EDGE_PRED (bb, 0), s;
-       gphi_iterator gsi;
- 
-       s = find_edge (e->src, dest);
-       if (s)
- 	{
- 	  /* We already have an edge S from E->src to DEST.  If S and
- 	     E->dest's sole successor edge have the same PHI arguments
- 	     at DEST, redirect S to DEST.  */
- 	  if (phi_alternatives_equal (dest, s, succ))
- 	    {
- 	      e = redirect_edge_and_branch (e, dest);
- 	      redirect_edge_var_map_clear (e);
- 	      continue;
- 	    }
- 
- 	  /* PHI arguments are different.  Create a forwarder block by
- 	     splitting E so that we can merge PHI arguments on E to
- 	     DEST.  */
- 	  e = single_succ_edge (split_edge (e));
- 	}
-       else
- 	{
- 	  /* If we merge the forwarder into a loop header verify if we
- 	     are creating another loop latch edge.  If so, reset
- 	     number of iteration information of the loop.  */
- 	  if (dest->loop_father->header == dest
- 	      && dominated_by_p (CDI_DOMINATORS, e->src, dest))
- 	    {
- 	      dest->loop_father->any_upper_bound = false;
- 	      dest->loop_father->any_likely_upper_bound = false;
- 	      free_numbers_of_iterations_estimates (dest->loop_father);
- 	    }
- 	}
- 
-       s = redirect_edge_and_branch (e, dest);
- 
-       /* redirect_edge_and_branch must not create a new edge.  */
-       gcc_assert (s == e);
- 
-       /* Add to the PHI nodes at DEST each PHI argument removed at the
- 	 destination of E.  */
-       for (gsi = gsi_start_phis (dest);
- 	   !gsi_end_p (gsi);
- 	   gsi_next (&gsi))
- 	{
- 	  gphi *phi = gsi.phi ();
- 	  tree def = gimple_phi_arg_def (phi, succ->dest_idx);
- 	  location_t locus = gimple_phi_arg_location_from_edge (phi, succ);
- 
- 	  if (TREE_CODE (def) == SSA_NAME)
- 	    {
- 	      /* If DEF is one of the results of PHI nodes removed during
- 		 redirection, replace it with the PHI argument that used
- 		 to be on E.  */
- 	      vec<edge_var_map> *head = redirect_edge_var_map_vector (e);
- 	      size_t length = head ? head->length () : 0;
- 	      for (size_t i = 0; i < length; i++)
- 		{
- 		  edge_var_map *vm = &(*head)[i];
- 		  tree old_arg = redirect_edge_var_map_result (vm);
- 		  tree new_arg = redirect_edge_var_map_def (vm);
- 
- 		  if (def == old_arg)
- 		    {
- 		      def = new_arg;
- 		      locus = redirect_edge_var_map_location (vm);
- 		      break;
- 		    }
- 		}
- 	    }
- 
- 	  add_phi_arg (phi, def, s, locus);
- 	}
- 
-       redirect_edge_var_map_clear (e);
-     }
- 
-   /* Move debug statements.  Reset them if the destination does not
-      have a single predecessor.  */
-   move_debug_stmts_from_forwarder (bb, dest, dest_single_pred_p,
- 				   pred, pred && single_succ_p (pred));
- 
-   /* Update the dominators.  */
-   dombb = get_immediate_dominator (CDI_DOMINATORS, bb);
-   domdest = get_immediate_dominator (CDI_DOMINATORS, dest);
-   if (domdest == bb)
-     {
-       /* Shortcut to avoid calling (relatively expensive)
- 	 nearest_common_dominator unless necessary.  */
-       dom = dombb;
-     }
-   else
-     dom = nearest_common_dominator (CDI_DOMINATORS, domdest, dombb);
- 
-   set_immediate_dominator (CDI_DOMINATORS, dest, dom);
- 
-   /* Adjust latch infomation of BB's parent loop as otherwise
-      the cfg hook has a hard time not to kill the loop.  */
-   if (current_loops && bb->loop_father->latch == bb)
-     bb->loop_father->latch = pred;
- 
-   /* Remove BB since all of BB's incoming edges have been redirected
-      to DEST.  */
-   delete_basic_block (bb);
- 
-   return true;
- }
- 
  /* This pass merges PHI nodes if one feeds into another.  For example,
     suppose we have the following:
  
--- 1316,1321 ----
*************** public:
*** 1456,1539 ****
  unsigned int
  pass_merge_phi::execute (function *fun)
  {
-   basic_block *worklist = XNEWVEC (basic_block, n_basic_blocks_for_fn (fun));
-   basic_block *current = worklist;
-   basic_block bb;
- 
    calculate_dominance_info (CDI_DOMINATORS);
  
    /* Find all PHI nodes that we may be able to merge.  */
!   FOR_EACH_BB_FN (bb, fun)
      {
!       basic_block dest;
! 
!       /* Look for a forwarder block with PHI nodes.  */
!       if (!tree_forwarder_block_p (bb, true))
! 	continue;
! 
!       dest = single_succ (bb);
! 
!       /* We have to feed into another basic block with PHI
! 	 nodes.  */
!       if (gimple_seq_empty_p (phi_nodes (dest))
! 	  /* We don't want to deal with a basic block with
! 	     abnormal edges.  */
! 	  || bb_has_abnormal_pred (bb))
  	continue;
  
!       if (!dominated_by_p (CDI_DOMINATORS, dest, bb))
! 	{
! 	  /* If BB does not dominate DEST, then the PHI nodes at
! 	     DEST must be the only users of the results of the PHI
! 	     nodes at BB.  */
! 	  *current++ = bb;
! 	}
!       else
! 	{
! 	  gphi_iterator gsi;
! 	  unsigned int dest_idx = single_succ_edge (bb)->dest_idx;
! 
! 	  /* BB dominates DEST.  There may be many users of the PHI
! 	     nodes in BB.  However, there is still a trivial case we
! 	     can handle.  If the result of every PHI in BB is used
! 	     only by a PHI in DEST, then we can trivially merge the
! 	     PHI nodes from BB into DEST.  */
! 	  for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi);
! 	       gsi_next (&gsi))
! 	    {
! 	      gphi *phi = gsi.phi ();
! 	      tree result = gimple_phi_result (phi);
! 	      use_operand_p imm_use;
! 	      gimple *use_stmt;
! 
! 	      /* If the PHI's result is never used, then we can just
! 		 ignore it.  */
! 	      if (has_zero_uses (result))
! 		continue;
! 
! 	      /* Get the single use of the result of this PHI node.  */
!   	      if (!single_imm_use (result, &imm_use, &use_stmt)
! 		  || gimple_code (use_stmt) != GIMPLE_PHI
! 		  || gimple_bb (use_stmt) != dest
! 		  || gimple_phi_arg_def (use_stmt, dest_idx) != result)
! 		break;
! 	    }
! 
! 	  /* If the loop above iterated through all the PHI nodes
! 	     in BB, then we can merge the PHIs from BB into DEST.  */
! 	  if (gsi_end_p (gsi))
! 	    *current++ = bb;
! 	}
!     }
! 
!   /* Now let's drain WORKLIST.  */
!   bool changed = false;
!   while (current != worklist)
!     {
!       bb = *--current;
!       changed |= remove_forwarder_block_with_phi (bb);
      }
-   free (worklist);
  
    /* Removing forwarder blocks can cause formerly irreducible loops
       to become reducible if we merged two entry blocks.  */
--- 1372,1393 ----
  unsigned int
  pass_merge_phi::execute (function *fun)
  {
    calculate_dominance_info (CDI_DOMINATORS);
  
    /* Find all PHI nodes that we may be able to merge.  */
!   bool changed = false;
!   unsigned n = last_basic_block_for_fn (fun);
!   for (unsigned i = NUM_FIXED_BLOCKS; i < n; i++)
      {
!       basic_block bb = BASIC_BLOCK_FOR_FN (fun, i);
!       if (!bb)
  	continue;
  
!       /* Look for a forwarder block with PHI nodes.  */
!       if (tree_forwarder_block_p (bb)
! 	  && remove_forwarder_block (bb, true))
! 	changed = true;
      }
  
    /* Removing forwarder blocks can cause formerly irreducible loops
       to become reducible if we merged two entry blocks.  */
diff -Nrcpad gcc-16-20251109/gcc/tree-if-conv.cc gcc-16-20251116/gcc/tree-if-conv.cc
*** gcc-16-20251109/gcc/tree-if-conv.cc	Sun Nov  9 22:33:51 2025
--- gcc-16-20251116/gcc/tree-if-conv.cc	Sun Nov 16 22:34:45 2025
*************** again:
*** 2245,2250 ****
--- 2245,2258 ----
    if (opnum == -1)
      return;
  
+   /* BIT_FIELD_REF and BIT_INSERT_EXPR can't be factored out for non-0 operands
+      as the other operands require constants. */
+   if ((arg1_op.code == BIT_FIELD_REF
+        || arg1_op.code == BIT_INSERT_EXPR)
+       && opnum != 0)
+     return;
+ 
+ 
    if (!types_compatible_p (TREE_TYPE (new_arg0), TREE_TYPE (new_arg1)))
      return;
    tree new_res = make_ssa_name (TREE_TYPE (new_arg0), NULL);
diff -Nrcpad gcc-16-20251109/gcc/tree-scalar-evolution.cc gcc-16-20251116/gcc/tree-scalar-evolution.cc
*** gcc-16-20251109/gcc/tree-scalar-evolution.cc	Sun Nov  9 22:33:51 2025
--- gcc-16-20251116/gcc/tree-scalar-evolution.cc	Sun Nov 16 22:34:45 2025
*************** interpret_rhs_expr (class loop *loop, gi
*** 1753,1758 ****
--- 1753,1772 ----
        res = chrec_fold_plus (type, chrec1, chrec2);
        break;
  
+     case POINTER_DIFF_EXPR:
+       {
+ 	tree utype = unsigned_type_for (type);
+ 	chrec1 = analyze_scalar_evolution (loop, rhs1);
+ 	chrec2 = analyze_scalar_evolution (loop, rhs2);
+ 	chrec1 = chrec_convert (utype, chrec1, at_stmt);
+ 	chrec2 = chrec_convert (utype, chrec2, at_stmt);
+ 	chrec1 = instantiate_parameters (loop, chrec1);
+ 	chrec2 = instantiate_parameters (loop, chrec2);
+ 	res = chrec_fold_minus (utype, chrec1, chrec2);
+ 	res = chrec_convert (type, res, at_stmt);
+ 	break;
+       }
+ 
      case PLUS_EXPR:
        chrec1 = analyze_scalar_evolution (loop, rhs1);
        chrec2 = analyze_scalar_evolution (loop, rhs2);
*************** final_value_replacement_loop (class loop
*** 3952,3957 ****
--- 3966,3976 ----
        gimple_seq stmts;
        def = force_gimple_operand (def, &stmts, false, NULL_TREE);
  
+       /* Propagate constants immediately, but leave an unused initialization
+ 	 around to avoid invalidating the SCEV cache.  */
+       if (CONSTANT_CLASS_P (def) && !SSA_NAME_OCCURS_IN_ABNORMAL_PHI (rslt))
+ 	replace_uses_by (rslt, def);
+ 
        /* Remove the old phi after the gimplification to make sure the
  	 SSA name is defined by a statement so that fold_stmt during
  	 the gimplification does not crash. */
*************** final_value_replacement_loop (class loop
*** 3960,3970 ****
        gimple_set_location (ass, loc);
        gimple_seq_add_stmt (&stmts, ass);
  
-       /* Propagate constants immediately, but leave an unused initialization
- 	 around to avoid invalidating the SCEV cache.  */
-       if (CONSTANT_CLASS_P (def) && !SSA_NAME_OCCURS_IN_ABNORMAL_PHI (rslt))
- 	replace_uses_by (rslt, def);
- 
        /* If def's type has undefined overflow and there were folded
  	 casts, rewrite all stmts added for def into arithmetics
  	 with defined overflow behavior.  */
--- 3979,3984 ----
diff -Nrcpad gcc-16-20251109/gcc/tree-ssa-dce.cc gcc-16-20251116/gcc/tree-ssa-dce.cc
*** gcc-16-20251109/gcc/tree-ssa-dce.cc	Sun Nov  9 22:33:51 2025
--- gcc-16-20251116/gcc/tree-ssa-dce.cc	Sun Nov 16 22:34:45 2025
*************** simple_dce_from_worklist (bitmap worklis
*** 2399,2405 ****
  
        gimple *t = SSA_NAME_DEF_STMT (def);
        if (gimple_has_side_effects (t))
! 	continue;
  
        /* The defining statement needs to be defining only this name.
  	 ASM is the only statement that can define more than one
--- 2399,2413 ----
  
        gimple *t = SSA_NAME_DEF_STMT (def);
        if (gimple_has_side_effects (t))
! 	{
! 	  if (gcall *call = dyn_cast <gcall *> (t))
! 	    {
! 	      gimple_call_set_lhs (call, NULL_TREE);
! 	      update_stmt (call);
! 	      release_ssa_name (def);
! 	    }
! 	  continue;
! 	}
  
        /* The defining statement needs to be defining only this name.
  	 ASM is the only statement that can define more than one
diff -Nrcpad gcc-16-20251109/gcc/tree-ssa-loop-niter.cc gcc-16-20251116/gcc/tree-ssa-loop-niter.cc
*** gcc-16-20251109/gcc/tree-ssa-loop-niter.cc	Sun Nov  9 22:33:51 2025
--- gcc-16-20251116/gcc/tree-ssa-loop-niter.cc	Sun Nov 16 22:34:45 2025
*************** simplify_using_initial_conditions (class
*** 3085,3090 ****
--- 3085,3099 ----
    if (TREE_CODE (expr) == INTEGER_CST)
      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);
  
    /* Limit walking the dominators to avoid quadraticness in
diff -Nrcpad gcc-16-20251109/gcc/tree-ssanames.cc gcc-16-20251116/gcc/tree-ssanames.cc
*** gcc-16-20251109/gcc/tree-ssanames.cc	Sun Nov  9 22:33:51 2025
--- gcc-16-20251116/gcc/tree-ssanames.cc	Sun Nov 16 22:34:45 2025
*************** set_range_info (tree name, const vrange
*** 457,462 ****
--- 457,464 ----
        tmp.dump (dump_file);
        fputc ('\n', dump_file);
      }
+   // Update the active query, if needed.
+   get_range_query (cfun)->update_range_info (name, r);
    return true;
  }
  
diff -Nrcpad gcc-16-20251109/gcc/tree-vect-data-refs.cc gcc-16-20251116/gcc/tree-vect-data-refs.cc
*** gcc-16-20251109/gcc/tree-vect-data-refs.cc	Sun Nov  9 22:33:51 2025
--- gcc-16-20251116/gcc/tree-vect-data-refs.cc	Sun Nov 16 22:34:45 2025
*************** vect_gather_scatter_fn_p (vec_info *vinf
*** 4630,4635 ****
--- 4630,4639 ----
    tree offset_vectype = VECTOR_TYPE_P (offset_type)
      ? offset_type : get_vectype_for_scalar_type (vinfo, offset_type);
  
+   /* If there is no offset vectype, bail.  */
+   if (!offset_vectype)
+     return false;
+ 
    offset_type = TREE_TYPE (offset_vectype);
  
    /* Get all supported configurations for this data vector type.  */
diff -Nrcpad gcc-16-20251109/gcc/tree-vect-loop-manip.cc gcc-16-20251116/gcc/tree-vect-loop-manip.cc
*** gcc-16-20251109/gcc/tree-vect-loop-manip.cc	Sun Nov  9 22:33:51 2025
--- gcc-16-20251116/gcc/tree-vect-loop-manip.cc	Sun Nov 16 22:34:45 2025
*************** vect_gen_scalar_loop_niters (tree niters
*** 2776,2782 ****
  
     In both cases, store niters_vector in *NITERS_VECTOR_PTR and add
     any new statements on the loop preheader edge.  NITERS_NO_OVERFLOW
!    is true if NITERS doesn't overflow (i.e. if NITERS is always nonzero).  */
  
  void
  vect_gen_vector_loop_niters (loop_vec_info loop_vinfo, tree niters,
--- 2776,2789 ----
  
     In both cases, store niters_vector in *NITERS_VECTOR_PTR and add
     any new statements on the loop preheader edge.  NITERS_NO_OVERFLOW
!    is true if NITERS doesn't overflow (i.e. if NITERS is always nonzero).
! 
!    Case (a) is used for LOOP_VINFO_USING_PARTIAL_VECTORS_P or if VF is
!    variable.  As stated above, NITERS_VECTOR then equals the number
!    of scalar iterations and vect_set_loop_condition will handle the
!    step.  As opposed to (b) we don't know anything about NITER_VECTOR's
!    range here.
! */
  
  void
  vect_gen_vector_loop_niters (loop_vec_info loop_vinfo, tree niters,
*************** vect_gen_vector_loop_niters (loop_vec_in
*** 2850,2878 ****
  	 we set range information to make niters analyzer's life easier.
  	 Note the number of latch iteration value can be TYPE_MAX_VALUE so
  	 we have to represent the vector niter TYPE_MAX_VALUE + 1 / vf.  */
!       if (stmts != NULL && const_vf > 0 && !LOOP_VINFO_EPILOGUE_P (loop_vinfo))
  	{
! 	  if (niters_no_overflow
! 	      && LOOP_VINFO_USING_PARTIAL_VECTORS_P (loop_vinfo))
! 	    {
! 	      int_range<1> vr (type,
! 			       wi::one (TYPE_PRECISION (type)),
! 			       wi::div_ceil (wi::max_value
! 							(TYPE_PRECISION (type),
! 							 TYPE_SIGN (type)),
! 					     const_vf,
! 					     TYPE_SIGN (type)));
! 	      set_range_info (niters_vector, vr);
! 	    }
! 	  else if (niters_no_overflow)
  	    {
  	      int_range<1> vr (type,
  			       wi::one (TYPE_PRECISION (type)),
  			       wi::div_trunc (wi::max_value
! 							(TYPE_PRECISION (type),
! 							 TYPE_SIGN (type)),
! 					   const_vf,
! 					   TYPE_SIGN (type)));
  	      set_range_info (niters_vector, vr);
  	    }
  	  /* For VF == 1 the vector IV might also overflow so we cannot
--- 2857,2874 ----
  	 we set range information to make niters analyzer's life easier.
  	 Note the number of latch iteration value can be TYPE_MAX_VALUE so
  	 we have to represent the vector niter TYPE_MAX_VALUE + 1 / vf.  */
!       if (stmts != NULL
! 	  && integer_onep (step_vector))
  	{
! 	  if (niters_no_overflow)
  	    {
  	      int_range<1> vr (type,
  			       wi::one (TYPE_PRECISION (type)),
  			       wi::div_trunc (wi::max_value
! 					      (TYPE_PRECISION (type),
! 					       TYPE_SIGN (type)),
! 					      const_vf,
! 					      TYPE_SIGN (type)));
  	      set_range_info (niters_vector, vr);
  	    }
  	  /* For VF == 1 the vector IV might also overflow so we cannot
*************** vect_do_peeling (loop_vec_info loop_vinf
*** 3730,3741 ****
  		       epilogue_niters,
  		       build_one_cst (TREE_TYPE (epilogue_niters)));
  
!       /* Decide what to do if the number of epilogue iterations is not
! 	 a multiple of the epilogue loop's vectorization factor.
! 	 We should have rejected the loop during the analysis phase
! 	 if this fails.  */
!       bool res = vect_determine_partial_vectors_and_peeling (epilogue_vinfo);
!       gcc_assert (res);
      }
  
    adjust_vec.release ();
--- 3726,3736 ----
  		       epilogue_niters,
  		       build_one_cst (TREE_TYPE (epilogue_niters)));
  
!       /* ???  During analysis phase this is computed wrongly, re-do it
! 	 here.  */
!       LOOP_VINFO_PEELING_FOR_NITER (epilogue_vinfo)
! 	= (!LOOP_VINFO_USING_PARTIAL_VECTORS_P (epilogue_vinfo)
! 	   && vect_need_peeling_or_partial_vectors_p (epilogue_vinfo));
      }
  
    adjust_vec.release ();
diff -Nrcpad gcc-16-20251109/gcc/tree-vect-loop.cc gcc-16-20251116/gcc/tree-vect-loop.cc
*** gcc-16-20251109/gcc/tree-vect-loop.cc	Sun Nov  9 22:33:51 2025
--- gcc-16-20251116/gcc/tree-vect-loop.cc	Sun Nov 16 22:34:45 2025
*************** _loop_vec_info::_loop_vec_info (class lo
*** 740,751 ****
      scan_map (NULL),
      inner_loop_cost_factor (param_vect_inner_loop_cost_factor),
      vectorizable (false),
!     can_use_partial_vectors_p (param_vect_partial_vector_usage != 0),
      must_use_partial_vectors_p (false),
      using_partial_vectors_p (false),
      using_decrementing_iv_p (false),
      using_select_vl_p (false),
-     epil_using_partial_vectors_p (false),
      allow_mutual_alignment (false),
      partial_load_store_bias (0),
      peeling_for_gaps (false),
--- 740,750 ----
      scan_map (NULL),
      inner_loop_cost_factor (param_vect_inner_loop_cost_factor),
      vectorizable (false),
!     can_use_partial_vectors_p (true),
      must_use_partial_vectors_p (false),
      using_partial_vectors_p (false),
      using_decrementing_iv_p (false),
      using_select_vl_p (false),
      allow_mutual_alignment (false),
      partial_load_store_bias (0),
      peeling_for_gaps (false),
*************** vect_min_prec_for_max_niters (loop_vec_i
*** 938,944 ****
  
  /* True if the loop needs peeling or partial vectors when vectorized.  */
  
! static bool
  vect_need_peeling_or_partial_vectors_p (loop_vec_info loop_vinfo)
  {
    unsigned HOST_WIDE_INT const_vf;
--- 937,943 ----
  
  /* True if the loop needs peeling or partial vectors when vectorized.  */
  
! bool
  vect_need_peeling_or_partial_vectors_p (loop_vec_info loop_vinfo)
  {
    unsigned HOST_WIDE_INT const_vf;
*************** vect_get_datarefs_in_loop (loop_p loop,
*** 1995,2001 ****
         In this case:
  
  	 LOOP_VINFO_USING_PARTIAL_VECTORS_P == true
- 	 LOOP_VINFO_EPIL_USING_PARTIAL_VECTORS_P == false
  	 LOOP_VINFO_PEELING_FOR_NITER == false
  
     (2) Make LOOP_VINFO operate on full vectors and use an epilogue loop
--- 1994,1999 ----
*************** vect_get_datarefs_in_loop (loop_p loop,
*** 2004,2025 ****
  	 LOOP_VINFO_USING_PARTIAL_VECTORS_P == false
  	 LOOP_VINFO_PEELING_FOR_NITER == true
  
!        There are two choices:
! 
!        (2a) Consider vectorizing the epilogue loop at the same VF as the
! 	    main loop, but using partial vectors instead of full vectors.
! 	    In this case:
! 
! 	      LOOP_VINFO_EPIL_USING_PARTIAL_VECTORS_P == true
! 
!        (2b) Consider vectorizing the epilogue loop at lower VFs only.
! 	    In this case:
  
- 	      LOOP_VINFO_EPIL_USING_PARTIAL_VECTORS_P == false
   */
  
! opt_result
! vect_determine_partial_vectors_and_peeling (loop_vec_info loop_vinfo)
  {
    /* Determine whether there would be any scalar iterations left over.  */
    bool need_peeling_or_partial_vectors_p
--- 2002,2019 ----
  	 LOOP_VINFO_USING_PARTIAL_VECTORS_P == false
  	 LOOP_VINFO_PEELING_FOR_NITER == true
  
!    The MASKED_P argument specifies to what extent
!    param_vect_partial_vector_usage is to be honored.  For MASKED_P == 0
!    no partial vectors are to be used, for MASKED_P == -1 it's
!    param_vect_partial_vector_usage that gets to decide whether we may
!    consider partial vector usage.  For MASKED_P == 1 partial vectors
!    may be used if possible.
  
   */
  
! static opt_result
! vect_determine_partial_vectors_and_peeling (loop_vec_info loop_vinfo,
! 					    int masked_p)
  {
    /* Determine whether there would be any scalar iterations left over.  */
    bool need_peeling_or_partial_vectors_p
*************** vect_determine_partial_vectors_and_peeli
*** 2027,2035 ****
  
    /* Decide whether to vectorize the loop with partial vectors.  */
    LOOP_VINFO_USING_PARTIAL_VECTORS_P (loop_vinfo) = false;
!   LOOP_VINFO_EPIL_USING_PARTIAL_VECTORS_P (loop_vinfo) = false;
!   if (LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P (loop_vinfo)
!       && LOOP_VINFO_MUST_USE_PARTIAL_VECTORS_P (loop_vinfo))
      LOOP_VINFO_USING_PARTIAL_VECTORS_P (loop_vinfo) = true;
    else if (LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P (loop_vinfo)
  	   && need_peeling_or_partial_vectors_p)
--- 2021,2032 ----
  
    /* Decide whether to vectorize the loop with partial vectors.  */
    LOOP_VINFO_USING_PARTIAL_VECTORS_P (loop_vinfo) = false;
!   if (masked_p == 0
!       || (masked_p == -1 && param_vect_partial_vector_usage == 0))
!     /* If requested explicitly do not use partial vectors.  */
!     LOOP_VINFO_USING_PARTIAL_VECTORS_P (loop_vinfo) = false;
!   else if (LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P (loop_vinfo)
! 	   && LOOP_VINFO_MUST_USE_PARTIAL_VECTORS_P (loop_vinfo))
      LOOP_VINFO_USING_PARTIAL_VECTORS_P (loop_vinfo) = true;
    else if (LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P (loop_vinfo)
  	   && need_peeling_or_partial_vectors_p)
*************** vect_determine_partial_vectors_and_peeli
*** 2050,2056 ****
  	   || loop_vinfo->suggested_unroll_factor > 1)
  	  && !LOOP_VINFO_EPILOGUE_P (loop_vinfo)
  	  && !vect_known_niters_smaller_than_vf (loop_vinfo))
! 	LOOP_VINFO_EPIL_USING_PARTIAL_VECTORS_P (loop_vinfo) = true;
        else
  	LOOP_VINFO_USING_PARTIAL_VECTORS_P (loop_vinfo) = true;
      }
--- 2047,2053 ----
  	   || loop_vinfo->suggested_unroll_factor > 1)
  	  && !LOOP_VINFO_EPILOGUE_P (loop_vinfo)
  	  && !vect_known_niters_smaller_than_vf (loop_vinfo))
! 	;
        else
  	LOOP_VINFO_USING_PARTIAL_VECTORS_P (loop_vinfo) = true;
      }
*************** vect_determine_partial_vectors_and_peeli
*** 2073,2091 ****
      = (!LOOP_VINFO_USING_PARTIAL_VECTORS_P (loop_vinfo)
         && need_peeling_or_partial_vectors_p);
  
-   /* We set LOOP_VINFO_USING_SELECT_VL_P as true before loop vectorization
-      analysis that we don't know whether the loop is vectorized by partial
-      vectors (More details see tree-vect-loop-manip.cc).
- 
-      However, SELECT_VL vectorizaton style should only applied on partial
-      vectorization since SELECT_VL is the GIMPLE IR that calculates the
-      number of elements to be process for each iteration.
- 
-      After loop vectorization analysis, Clear LOOP_VINFO_USING_SELECT_VL_P
-      if it is not partial vectorized loop.  */
-   if (!LOOP_VINFO_USING_PARTIAL_VECTORS_P (loop_vinfo))
-     LOOP_VINFO_USING_SELECT_VL_P (loop_vinfo) = false;
- 
    return opt_result::success ();
  }
  
--- 2070,2075 ----
*************** vect_determine_partial_vectors_and_peeli
*** 2100,2106 ****
     SINGLE_LANE_SLP_DONE_FOR_SUGGESTED_UF is to hold whether single-lane
     slp was forced when the suggested unroll factor was worked out.  */
  static opt_result
! vect_analyze_loop_2 (loop_vec_info loop_vinfo, bool &fatal,
  		     unsigned *suggested_unroll_factor,
  		     bool& single_lane_slp_done_for_suggested_uf)
  {
--- 2084,2090 ----
     SINGLE_LANE_SLP_DONE_FOR_SUGGESTED_UF is to hold whether single-lane
     slp was forced when the suggested unroll factor was worked out.  */
  static opt_result
! vect_analyze_loop_2 (loop_vec_info loop_vinfo, int masked_p, bool &fatal,
  		     unsigned *suggested_unroll_factor,
  		     bool& single_lane_slp_done_for_suggested_uf)
  {
*************** start_over:
*** 2355,2364 ****
  	  LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P (loop_vinfo) = false;
      }
  
    /* If we're vectorizing a loop that uses length "controls" and
       can iterate more than once, we apply decrementing IV approach
       in loop control.  */
!   if (LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P (loop_vinfo)
        && LOOP_VINFO_PARTIAL_VECTORS_STYLE (loop_vinfo) == vect_partial_vectors_len
        && LOOP_VINFO_PARTIAL_LOAD_STORE_BIAS (loop_vinfo) == 0
        && !(LOOP_VINFO_NITERS_KNOWN_P (loop_vinfo)
--- 2339,2356 ----
  	  LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P (loop_vinfo) = false;
      }
  
+   /* Decide whether this loop_vinfo should use partial vectors or peeling,
+      assuming that the loop will be used as a main loop.  We will redo
+      this analysis later if we instead decide to use the loop as an
+      epilogue loop.  */
+   ok = vect_determine_partial_vectors_and_peeling (loop_vinfo, masked_p);
+   if (!ok)
+     return ok;
+ 
    /* If we're vectorizing a loop that uses length "controls" and
       can iterate more than once, we apply decrementing IV approach
       in loop control.  */
!   if (LOOP_VINFO_USING_PARTIAL_VECTORS_P (loop_vinfo)
        && LOOP_VINFO_PARTIAL_VECTORS_STYLE (loop_vinfo) == vect_partial_vectors_len
        && LOOP_VINFO_PARTIAL_LOAD_STORE_BIAS (loop_vinfo) == 0
        && !(LOOP_VINFO_NITERS_KNOWN_P (loop_vinfo)
*************** start_over:
*** 2450,2463 ****
  	    }
      }
  
-   /* Decide whether this loop_vinfo should use partial vectors or peeling,
-      assuming that the loop will be used as a main loop.  We will redo
-      this analysis later if we instead decide to use the loop as an
-      epilogue loop.  */
-   ok = vect_determine_partial_vectors_and_peeling (loop_vinfo);
-   if (!ok)
-     return ok;
- 
    /* If we're vectorizing an epilogue loop, the vectorized loop either needs
       to be able to handle fewer than VF scalars, or needs to have a lower VF
       than the main loop.  */
--- 2442,2447 ----
*************** vect_analyze_loop_1 (class loop *loop, v
*** 2779,2791 ****
  
    machine_mode vector_mode = vector_modes[mode_i];
    loop_vinfo->vector_mode = vector_mode;
-   if (masked_p != -1)
-     loop_vinfo->can_use_partial_vectors_p = masked_p;
    unsigned int suggested_unroll_factor = 1;
    bool single_lane_slp_done_for_suggested_uf = false;
  
    /* Run the main analysis.  */
!   opt_result res = vect_analyze_loop_2 (loop_vinfo, fatal,
  					&suggested_unroll_factor,
  					single_lane_slp_done_for_suggested_uf);
    if (dump_enabled_p ())
--- 2763,2773 ----
  
    machine_mode vector_mode = vector_modes[mode_i];
    loop_vinfo->vector_mode = vector_mode;
    unsigned int suggested_unroll_factor = 1;
    bool single_lane_slp_done_for_suggested_uf = false;
  
    /* Run the main analysis.  */
!   opt_result res = vect_analyze_loop_2 (loop_vinfo, masked_p, fatal,
  					&suggested_unroll_factor,
  					single_lane_slp_done_for_suggested_uf);
    if (dump_enabled_p ())
*************** vect_analyze_loop_1 (class loop *loop, v
*** 2828,2835 ****
  	    unroll_vinfo->vector_mode = vector_mode;
  	    unroll_vinfo->suggested_unroll_factor = suggested_unroll_factor;
  	    opt_result new_res
! 		= vect_analyze_loop_2 (unroll_vinfo, fatal, NULL,
! 				       single_lane_slp_done_for_suggested_uf);
  	    if (new_res)
  	      {
  		delete loop_vinfo;
--- 2810,2817 ----
  	    unroll_vinfo->vector_mode = vector_mode;
  	    unroll_vinfo->suggested_unroll_factor = suggested_unroll_factor;
  	    opt_result new_res
! 	      = vect_analyze_loop_2 (unroll_vinfo, masked_p, fatal, NULL,
! 				     single_lane_slp_done_for_suggested_uf);
  	    if (new_res)
  	      {
  		delete loop_vinfo;
*************** vect_analyze_loop (class loop *loop, gim
*** 3067,3079 ****
  
    bool supports_partial_vectors = (param_vect_partial_vector_usage != 0
  				   || masked_p == 1);
-   machine_mode mask_mode;
    if (supports_partial_vectors
        && !partial_vectors_supported_p ()
!       && !(VECTOR_MODE_P (first_loop_vinfo->vector_mode)
! 	   && targetm.vectorize.get_mask_mode
! 		(first_loop_vinfo->vector_mode).exists (&mask_mode)
! 	   && SCALAR_INT_MODE_P (mask_mode)))
      supports_partial_vectors = false;
    poly_uint64 first_vinfo_vf = LOOP_VINFO_VECT_FACTOR (first_loop_vinfo);
  
--- 3049,3057 ----
  
    bool supports_partial_vectors = (param_vect_partial_vector_usage != 0
  				   || masked_p == 1);
    if (supports_partial_vectors
        && !partial_vectors_supported_p ()
!       && !LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P (first_loop_vinfo))
      supports_partial_vectors = false;
    poly_uint64 first_vinfo_vf = LOOP_VINFO_VECT_FACTOR (first_loop_vinfo);
  
diff -Nrcpad gcc-16-20251109/gcc/tree-vect-patterns.cc gcc-16-20251116/gcc/tree-vect-patterns.cc
*** gcc-16-20251109/gcc/tree-vect-patterns.cc	Sun Nov  9 22:33:51 2025
--- gcc-16-20251116/gcc/tree-vect-patterns.cc	Sun Nov 16 22:34:45 2025
*************** vect_recog_bool_pattern (vec_info *vinfo
*** 5991,6000 ****
    hash_set<gimple *> bool_stmts;
  
    if (CONVERT_EXPR_CODE_P (rhs_code)
!       || rhs_code == VIEW_CONVERT_EXPR)
      {
!       if (! INTEGRAL_TYPE_P (TREE_TYPE (lhs))
! 	  || VECT_SCALAR_BOOLEAN_TYPE_P (TREE_TYPE (lhs)))
  	return NULL;
        vectype = get_vectype_for_scalar_type (vinfo, TREE_TYPE (lhs));
  
--- 5991,6000 ----
    hash_set<gimple *> bool_stmts;
  
    if (CONVERT_EXPR_CODE_P (rhs_code)
!       || rhs_code == VIEW_CONVERT_EXPR
!       || rhs_code == FLOAT_EXPR)
      {
!       if (VECT_SCALAR_BOOLEAN_TYPE_P (TREE_TYPE (lhs)))
  	return NULL;
        vectype = get_vectype_for_scalar_type (vinfo, TREE_TYPE (lhs));
  
*************** vect_recog_bool_pattern (vec_info *vinfo
*** 6023,6029 ****
  				  pattern_stmt, new_vectype);
  
  	  lhs = vect_recog_temp_ssa_var (TREE_TYPE (lhs), NULL);
! 	  pattern_stmt = gimple_build_assign (lhs, CONVERT_EXPR, tmp);
  	}
  
        *type_out = vectype;
--- 6023,6031 ----
  				  pattern_stmt, new_vectype);
  
  	  lhs = vect_recog_temp_ssa_var (TREE_TYPE (lhs), NULL);
! 	  pattern_stmt
! 	    = gimple_build_assign (lhs, (rhs_code == FLOAT_EXPR
! 					 ? FLOAT_EXPR : CONVERT_EXPR), tmp);
  	}
  
        *type_out = vectype;
diff -Nrcpad gcc-16-20251109/gcc/tree-vect-slp.cc gcc-16-20251116/gcc/tree-vect-slp.cc
*** gcc-16-20251109/gcc/tree-vect-slp.cc	Sun Nov  9 22:33:51 2025
--- gcc-16-20251116/gcc/tree-vect-slp.cc	Sun Nov 16 22:34:45 2025
*************** vect_build_slp_tree_1 (vec_info *vinfo,
*** 1539,1547 ****
  	      && !STMT_VINFO_GATHER_SCATTER_P (stmt_info)
  	      /* Not grouped loads are handled as externals for BB
  		 vectorization.  For loop vectorization we can handle
! 		 splats the same we handle single element interleaving.  */
  	      && (is_a <bb_vec_info> (vinfo)
! 		  || stmt_info != first_stmt_info))
  	    {
  	      /* Not grouped load.  */
  	      if (dump_enabled_p ())
--- 1539,1551 ----
  	      && !STMT_VINFO_GATHER_SCATTER_P (stmt_info)
  	      /* Not grouped loads are handled as externals for BB
  		 vectorization.  For loop vectorization we can handle
! 		 splats the same we handle single element interleaving.
! 		 Likewise we can handle a collection of invariant refs.  */
  	      && (is_a <bb_vec_info> (vinfo)
! 		  || (stmt_info != first_stmt_info
! 		  && !(integer_zerop (DR_STEP (STMT_VINFO_DATA_REF (stmt_info)))
! 		      && integer_zerop (DR_STEP (STMT_VINFO_DATA_REF
! 							 (first_stmt_info)))))))
  	    {
  	      /* Not grouped load.  */
  	      if (dump_enabled_p ())
*************** vect_build_slp_tree_2 (vec_info *vinfo,
*** 2094,2100 ****
  		load_place = vect_get_place_in_interleaving_chain
  		    (load_info, first_stmt_info);
  	      else
! 		load_place = 0;
  	      gcc_assert (load_place != -1);
  	      any_permute |= load_place != j;
  	      load_permutation.quick_push (load_place);
--- 2098,2107 ----
  		load_place = vect_get_place_in_interleaving_chain
  		    (load_info, first_stmt_info);
  	      else
! 		/* Recognize the splat case as { 0, 0, ... } but make
! 		   sure to use the appropriate refs for collections
! 		   of invariant refs.  */
! 		load_place = (load_info == stmt_info) ? 0 : j;
  	      gcc_assert (load_place != -1);
  	      any_permute |= load_place != j;
  	      load_permutation.quick_push (load_place);
*************** vllp_cmp (const void *a_, const void *b_
*** 5184,5189 ****
--- 5191,5215 ----
      }
  }
  
+ /* Return whether if the load permutation of NODE is consecutive starting
+    from index START_IDX.  */
+ 
+ bool
+ vect_load_perm_consecutive_p (slp_tree node, unsigned start_idx)
+ {
+   load_permutation_t perm = SLP_TREE_LOAD_PERMUTATION (node);
+ 
+   if (!perm.exists () || perm.length () < start_idx)
+     return false;
+ 
+   unsigned int start = perm[start_idx];
+   for (unsigned int i = start_idx + 1; i < perm.length (); i++)
+     if (perm[i] != start + (unsigned int)i)
+       return false;
+ 
+   return true;
+ }
+ 
  /* Process the set of LOADS that are all from the same dataref group.  */
  
  static void
*************** vect_lower_load_permutations (loop_vec_i
*** 5230,5241 ****
  	    ld_lanes_lanes = 0;
  	    break;
  	  }
! 	for (unsigned i = 1; i < SLP_TREE_LANES (load); ++i)
! 	  if (SLP_TREE_LOAD_PERMUTATION (load)[i] != first + i)
! 	    {
! 	      ld_lanes_lanes = 0;
! 	      break;
! 	    }
        }
  
    /* Only a power-of-two number of lanes matches interleaving with N levels.
--- 5256,5266 ----
  	    ld_lanes_lanes = 0;
  	    break;
  	  }
! 	if (!vect_load_perm_consecutive_p (load))
! 	  {
! 	    ld_lanes_lanes = 0;
! 	    break;
! 	  }
        }
  
    /* Only a power-of-two number of lanes matches interleaving with N levels.
*************** vect_lower_load_permutations (loop_vec_i
*** 5272,5289 ****
  	continue;
  
        /* Build the permute to get the original load permutation order.  */
!       bool contiguous = true;
        lane_permutation_t final_perm;
        final_perm.create (SLP_TREE_LANES (load));
        for (unsigned i = 0; i < SLP_TREE_LANES (load); ++i)
! 	{
! 	  final_perm.quick_push
! 	    (std::make_pair (0, SLP_TREE_LOAD_PERMUTATION (load)[i]));
! 	  if (i != 0
! 	      && (SLP_TREE_LOAD_PERMUTATION (load)[i]
! 		  != SLP_TREE_LOAD_PERMUTATION (load)[i-1] + 1))
! 	    contiguous = false;
! 	}
  
        /* When the load permutation accesses a contiguous unpermuted,
  	 power-of-two aligned and sized chunk leave the load alone.
--- 5297,5308 ----
  	continue;
  
        /* Build the permute to get the original load permutation order.  */
!       bool contiguous = vect_load_perm_consecutive_p (load);
        lane_permutation_t final_perm;
        final_perm.create (SLP_TREE_LANES (load));
        for (unsigned i = 0; i < SLP_TREE_LANES (load); ++i)
! 	final_perm.quick_push (
! 	  std::make_pair (0, SLP_TREE_LOAD_PERMUTATION (load)[i]));
  
        /* When the load permutation accesses a contiguous unpermuted,
  	 power-of-two aligned and sized chunk leave the load alone.
*************** vect_optimize_slp_pass::remove_redundant
*** 7855,7869 ****
        else
  	{
  	  loop_vec_info loop_vinfo = as_a<loop_vec_info> (m_vinfo);
! 	  stmt_vec_info load_info;
! 	  bool this_load_permuted = false;
! 	  unsigned j;
! 	  FOR_EACH_VEC_ELT (SLP_TREE_SCALAR_STMTS (node), j, load_info)
! 	    if (SLP_TREE_LOAD_PERMUTATION (node)[j] != j)
! 	      {
! 		this_load_permuted = true;
! 		break;
! 	      }
  	  /* When this isn't a grouped access we know it's single element
  	     and contiguous.  */
  	  if (!STMT_VINFO_GROUPED_ACCESS (SLP_TREE_SCALAR_STMTS (node)[0]))
--- 7874,7880 ----
        else
  	{
  	  loop_vec_info loop_vinfo = as_a<loop_vec_info> (m_vinfo);
! 	  bool this_load_permuted = !vect_load_perm_consecutive_p (node);
  	  /* When this isn't a grouped access we know it's single element
  	     and contiguous.  */
  	  if (!STMT_VINFO_GROUPED_ACCESS (SLP_TREE_SCALAR_STMTS (node)[0]))
*************** vect_transform_slp_perm_load_1 (vec_info
*** 10971,10977 ****
    machine_mode mode;
  
    if (!STMT_VINFO_GROUPED_ACCESS (stmt_info))
!     dr_group_size = 1;
    else
      {
        stmt_info = DR_GROUP_FIRST_ELEMENT (stmt_info);
--- 10982,10995 ----
    machine_mode mode;
  
    if (!STMT_VINFO_GROUPED_ACCESS (stmt_info))
!     {
!       /* We have both splats of the same non-grouped load and groups
! 	 of distinct invariant loads entering here.  */
!       unsigned max_idx = 0;
!       for (auto idx : perm)
! 	max_idx = idx > max_idx ? idx : max_idx;
!       dr_group_size = max_idx + 1;
!     }
    else
      {
        stmt_info = DR_GROUP_FIRST_ELEMENT (stmt_info);
diff -Nrcpad gcc-16-20251109/gcc/tree-vect-stmts.cc gcc-16-20251116/gcc/tree-vect-stmts.cc
*** gcc-16-20251109/gcc/tree-vect-stmts.cc	Sun Nov  9 22:33:51 2025
--- gcc-16-20251116/gcc/tree-vect-stmts.cc	Sun Nov 16 22:34:45 2025
*************** vector_vector_composition_type (tree vty
*** 2056,2061 ****
--- 2056,2082 ----
    return NULL_TREE;
  }
  
+ /* Check if the load permutation of NODE only refers to a consecutive
+    subset of the group indices where GROUP_SIZE is the size of the
+    dataref's group.  We also assert that the length of the permutation
+    divides the group size and is a power of two.
+    Such load permutations can be elided in strided access schemes as
+    we can "jump over" the gap they leave.  */
+ 
+ bool
+ has_consecutive_load_permutation (slp_tree node, unsigned group_size)
+ {
+   load_permutation_t perm = SLP_TREE_LOAD_PERMUTATION (node);
+   if (!perm.exists ()
+       || perm.length () <= 1
+       || !pow2p_hwi (perm.length ())
+       || group_size % perm.length ())
+     return false;
+ 
+   return vect_load_perm_consecutive_p (node);
+ }
+ 
+ 
  /* Analyze load or store SLP_NODE of type VLS_TYPE.  Return true
     if there is a memory access type that the vectorized form can use,
     storing it in *MEMORY_ACCESS_TYPE if so.  If we decide to use gathers
*************** get_load_store_type (vec_info  *vinfo, s
*** 2103,2108 ****
--- 2124,2130 ----
    *ls_type = NULL_TREE;
    *slp_perm = false;
    *n_perms = -1U;
+   ls->subchain_p = false;
  
    bool perm_ok = true;
    poly_int64 vf = loop_vinfo ? LOOP_VINFO_VECT_FACTOR (loop_vinfo) : 1;
*************** get_load_store_type (vec_info  *vinfo, s
*** 2149,2158 ****
      first_dr_info = STMT_VINFO_DR_INFO (SLP_TREE_SCALAR_STMTS (slp_node)[0]);
  
    if (STMT_VINFO_STRIDED_P (first_stmt_info))
!     /* Try to use consecutive accesses of as many elements as possible,
!        separated by the stride, until we have a complete vector.
!        Fall back to scalar accesses if that isn't possible.  */
!     *memory_access_type = VMAT_STRIDED_SLP;
    else if (STMT_VINFO_GATHER_SCATTER_P (stmt_info))
      {
        slp_tree offset_node = SLP_TREE_CHILDREN (slp_node)[0];
--- 2171,2192 ----
      first_dr_info = STMT_VINFO_DR_INFO (SLP_TREE_SCALAR_STMTS (slp_node)[0]);
  
    if (STMT_VINFO_STRIDED_P (first_stmt_info))
!     {
!       /* Try to use consecutive accesses of as many elements as possible,
! 	 separated by the stride, until we have a complete vector.
! 	 Fall back to scalar accesses if that isn't possible.  */
!       *memory_access_type = VMAT_STRIDED_SLP;
! 
!       /* If the load permutation is consecutive we can reduce the group to
! 	 the elements the permutation accesses.  Then we release the
! 	 permutation.  */
!       if (has_consecutive_load_permutation (slp_node, group_size))
! 	{
! 	  ls->subchain_p = true;
! 	  group_size = SLP_TREE_LANES (slp_node);
! 	  SLP_TREE_LOAD_PERMUTATION (slp_node).release ();
! 	}
!     }
    else if (STMT_VINFO_GATHER_SCATTER_P (stmt_info))
      {
        slp_tree offset_node = SLP_TREE_CHILDREN (slp_node)[0];
*************** get_load_store_type (vec_info  *vinfo, s
*** 2436,2443 ****
    vect_memory_access_type grouped_gather_fallback = VMAT_UNINITIALIZED;
    if (loop_vinfo
        && (*memory_access_type == VMAT_ELEMENTWISE
! 	  || *memory_access_type == VMAT_STRIDED_SLP)
!       && !STMT_VINFO_GATHER_SCATTER_P (stmt_info))
      {
        gather_scatter_info gs_info;
        if (SLP_TREE_LANES (slp_node) == 1
--- 2470,2476 ----
    vect_memory_access_type grouped_gather_fallback = VMAT_UNINITIALIZED;
    if (loop_vinfo
        && (*memory_access_type == VMAT_ELEMENTWISE
! 	  || *memory_access_type == VMAT_STRIDED_SLP))
      {
        gather_scatter_info gs_info;
        if (SLP_TREE_LANES (slp_node) == 1
*************** vectorizable_conversion (vec_info *vinfo
*** 5369,5375 ****
      }
  
    if (VECTOR_BOOLEAN_TYPE_P (vectype_out)
!       && !VECTOR_BOOLEAN_TYPE_P (vectype_in))
      {
        if (dump_enabled_p ())
  	dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
--- 5402,5408 ----
      }
  
    if (VECTOR_BOOLEAN_TYPE_P (vectype_out)
!       != VECTOR_BOOLEAN_TYPE_P (vectype_in))
      {
        if (dump_enabled_p ())
  	dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
*************** vectorizable_conversion (vec_info *vinfo
*** 5547,5569 ****
  	 truncate it to cvt_type and the do FLOAT_EXPR.  */
        else if (code == FLOAT_EXPR)
  	{
! 	  wide_int op_min_value, op_max_value;
! 	  tree def;
! 	  /* ???  Merge ranges in case of more than one lane.  */
! 	  if (SLP_TREE_LANES (slp_op0) != 1
! 	      || !(def = vect_get_slp_scalar_def (slp_op0, 0))
! 	      || !vect_get_range_info (def, &op_min_value, &op_max_value))
! 	    goto unsupported;
  
  	  cvt_type
  	    = build_nonstandard_integer_type (GET_MODE_BITSIZE (lhs_mode), 0);
- 	  if (cvt_type == NULL_TREE
- 	      || (wi::min_precision (op_max_value, SIGNED)
- 		  > TYPE_PRECISION (cvt_type))
- 	      || (wi::min_precision (op_min_value, SIGNED)
- 		  > TYPE_PRECISION (cvt_type)))
- 	    goto unsupported;
- 
  	  cvt_type = get_same_sized_vectype (cvt_type, vectype_out);
  	  if (cvt_type == NULL_TREE)
  	    goto unsupported;
--- 5580,5605 ----
  	 truncate it to cvt_type and the do FLOAT_EXPR.  */
        else if (code == FLOAT_EXPR)
  	{
! 	  if (cost_vec)
! 	    {
! 	      wide_int op_min_value, op_max_value;
! 	      tree def;
! 
! 	      /* ???  Merge ranges in case of more than one lane.  */
! 	      if (SLP_TREE_LANES (slp_op0) != 1
! 		  || !(def = vect_get_slp_scalar_def (slp_op0, 0))
! 		  || !vect_get_range_info (def, &op_min_value, &op_max_value))
! 		goto unsupported;
! 
! 	      if ((wi::min_precision (op_max_value, SIGNED)
! 		   > GET_MODE_BITSIZE (lhs_mode))
! 		  || (wi::min_precision (op_min_value, SIGNED)
! 		      > GET_MODE_BITSIZE (lhs_mode)))
! 		goto unsupported;
! 	    }
  
  	  cvt_type
  	    = build_nonstandard_integer_type (GET_MODE_BITSIZE (lhs_mode), 0);
  	  cvt_type = get_same_sized_vectype (cvt_type, vectype_out);
  	  if (cvt_type == NULL_TREE)
  	    goto unsupported;
*************** vectorizable_load (vec_info *vinfo,
*** 9867,9876 ****
  	 once at analysis time, remembered and used in the
  	 transform time.  */
        bool hoist_p = (LOOP_VINFO_NO_DATA_DEPENDENCIES (loop_vinfo)
! 		      && !nested_in_vect_loop
! 		      && hoist_defs_of_uses (stmt_info->stmt, loop, false));
        if (costing_p)
  	{
  	  enum vect_cost_model_location cost_loc
  	    = hoist_p ? vect_prologue : vect_body;
  	  unsigned int cost = record_stmt_cost (cost_vec, 1, scalar_load,
--- 9903,9926 ----
  	 once at analysis time, remembered and used in the
  	 transform time.  */
        bool hoist_p = (LOOP_VINFO_NO_DATA_DEPENDENCIES (loop_vinfo)
! 		      && !nested_in_vect_loop);
!       bool uniform_p = true;
!       for (stmt_vec_info sinfo : SLP_TREE_SCALAR_STMTS (slp_node))
! 	{
! 	  hoist_p = hoist_p && hoist_defs_of_uses (sinfo->stmt, loop, false);
! 	  if (sinfo != SLP_TREE_SCALAR_STMTS (slp_node)[0])
! 	    uniform_p = false;
! 	}
        if (costing_p)
  	{
+ 	  if (!uniform_p && (!hoist_p || !vf.is_constant ()))
+ 	    {
+ 	      if (dump_enabled_p ())
+ 		dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
+ 				 "not vectorizing non-uniform invariant "
+ 				 "load\n");
+ 	      return false;
+ 	    }
  	  enum vect_cost_model_location cost_loc
  	    = hoist_p ? vect_prologue : vect_body;
  	  unsigned int cost = record_stmt_cost (cost_vec, 1, scalar_load,
*************** vectorizable_load (vec_info *vinfo,
*** 9888,9926 ****
  	}
        if (hoist_p)
  	{
! 	  gassign *stmt = as_a <gassign *> (stmt_info->stmt);
! 	  if (dump_enabled_p ())
! 	    dump_printf_loc (MSG_NOTE, vect_location,
! 			     "hoisting out of the vectorized loop: %G",
! 			     (gimple *) stmt);
! 	  scalar_dest = copy_ssa_name (scalar_dest);
! 	  tree rhs = unshare_expr (gimple_assign_rhs1 (stmt));
! 	  edge pe = loop_preheader_edge (loop);
! 	  gphi *vphi = get_virtual_phi (loop->header);
! 	  tree vuse;
! 	  if (vphi)
! 	    vuse = PHI_ARG_DEF_FROM_EDGE (vphi, pe);
! 	  else
! 	    vuse = gimple_vuse (gsi_stmt (*gsi));
! 	  gimple *new_stmt = gimple_build_assign (scalar_dest, rhs);
! 	  gimple_set_vuse (new_stmt, vuse);
! 	  gsi_insert_on_edge_immediate (pe, new_stmt);
! 	  hoist_defs_of_uses (new_stmt, loop, true);
  	}
-       /* These copies are all equivalent.  */
-       if (hoist_p)
- 	new_temp = vect_init_vector (vinfo, stmt_info, scalar_dest,
- 				     vectype, NULL);
        else
  	{
  	  gimple_stmt_iterator gsi2 = *gsi;
  	  gsi_next (&gsi2);
  	  new_temp = vect_init_vector (vinfo, stmt_info, scalar_dest,
  				       vectype, &gsi2);
  	}
-       gimple *new_stmt = SSA_NAME_DEF_STMT (new_temp);
        for (j = 0; j < (int) vec_num; ++j)
! 	slp_node->push_vec_def (new_stmt);
        return true;
      }
  
--- 9938,10014 ----
  	}
        if (hoist_p)
  	{
! 	  /* ???  For non-uniform lanes there could be still duplicates.
! 	     We're leaving those to post-vectorizer CSE for the moment.  */
! 	  auto_vec<tree> scalar_defs (SLP_TREE_LANES (slp_node));
! 	  for (stmt_vec_info sinfo : SLP_TREE_SCALAR_STMTS (slp_node))
! 	    {
! 	      gassign *stmt = as_a <gassign *> (sinfo->stmt);
! 	      if (dump_enabled_p ())
! 		dump_printf_loc (MSG_NOTE, vect_location,
! 				 "hoisting out of the vectorized loop: %G",
! 				 (gimple *) stmt);
! 	      scalar_dest = copy_ssa_name (gimple_assign_lhs (stmt));
! 	      tree rhs = unshare_expr (gimple_assign_rhs1 (stmt));
! 	      edge pe = loop_preheader_edge (loop);
! 	      gphi *vphi = get_virtual_phi (loop->header);
! 	      tree vuse;
! 	      if (vphi)
! 		vuse = PHI_ARG_DEF_FROM_EDGE (vphi, pe);
! 	      else
! 		vuse = gimple_vuse (gsi_stmt (*gsi));
! 	      gimple *new_stmt = gimple_build_assign (scalar_dest, rhs);
! 	      gimple_set_vuse (new_stmt, vuse);
! 	      gsi_insert_on_edge_immediate (pe, new_stmt);
! 	      hoist_defs_of_uses (new_stmt, loop, true);
! 	      if (!useless_type_conversion_p (TREE_TYPE (vectype),
! 					      TREE_TYPE (scalar_dest)))
! 		{
! 		  tree tem = make_ssa_name (TREE_TYPE (vectype));
! 		  new_stmt = gimple_build_assign (tem,
! 						  NOP_EXPR, scalar_dest);
! 		  gsi_insert_on_edge_immediate (pe, new_stmt);
! 		  scalar_dest = tem;
! 		}
! 	      scalar_defs.quick_push (scalar_dest);
! 	      if (uniform_p)
! 		break;
! 	    }
! 	  if (!uniform_p)
! 	    {
! 	      unsigned const_nunits
! 		= TYPE_VECTOR_SUBPARTS (vectype).to_constant ();
! 	      for (j = 0; j < (int) vec_num; ++j)
! 		{
! 		  vec<constructor_elt, va_gc> *v = NULL;
! 		  vec_safe_reserve (v, const_nunits, true);
! 		  for (unsigned i = 0; i < const_nunits; ++i)
! 		    {
! 		      unsigned def_idx
! 			= (j * const_nunits + i) % SLP_TREE_LANES (slp_node);
! 		      CONSTRUCTOR_APPEND_ELT (v, NULL_TREE,
! 					      scalar_defs[def_idx]);
! 		    }
! 		  scalar_dest = build_constructor (vectype, v);
! 		  new_temp = vect_init_vector (vinfo, stmt_info, scalar_dest,
! 					       vectype, NULL);
! 		  slp_node->push_vec_def (new_temp);
! 		}
! 	      return true;
! 	    }
! 	  new_temp = vect_init_vector (vinfo, stmt_info, scalar_dest,
! 				       vectype, NULL);
  	}
        else
  	{
+ 	  gcc_assert (uniform_p);
  	  gimple_stmt_iterator gsi2 = *gsi;
  	  gsi_next (&gsi2);
  	  new_temp = vect_init_vector (vinfo, stmt_info, scalar_dest,
  				       vectype, &gsi2);
  	}
        for (j = 0; j < (int) vec_num; ++j)
! 	slp_node->push_vec_def (new_temp);
        return true;
      }
  
*************** vectorizable_load (vec_info *vinfo,
*** 9945,9951 ****
  
        if (grouped_load)
  	{
! 	  first_stmt_info = DR_GROUP_FIRST_ELEMENT (stmt_info);
  	  first_dr_info = STMT_VINFO_DR_INFO (first_stmt_info);
  	  ref_type = get_group_alias_ptr_type (first_stmt_info);
  	}
--- 10033,10046 ----
  
        if (grouped_load)
  	{
! 	  /* If we elided a consecutive load permutation, don't
! 	     use the original first statement (which could be elided)
! 	     but the one the load permutation starts with.
! 	     This ensures the stride_base below is correct.  */
! 	  if (!ls.subchain_p)
! 	    first_stmt_info = DR_GROUP_FIRST_ELEMENT (stmt_info);
! 	  else
! 	    first_stmt_info = SLP_TREE_SCALAR_STMTS (slp_node)[0];
  	  first_dr_info = STMT_VINFO_DR_INFO (first_stmt_info);
  	  ref_type = get_group_alias_ptr_type (first_stmt_info);
  	}
*************** vectorizable_load (vec_info *vinfo,
*** 9959,9965 ****
        if (grouped_load)
  	{
  	  if (memory_access_type == VMAT_STRIDED_SLP)
! 	    group_size = DR_GROUP_SIZE (first_stmt_info);
  	  else /* VMAT_ELEMENTWISE */
  	    group_size = SLP_TREE_LANES (slp_node);
  	}
--- 10054,10067 ----
        if (grouped_load)
  	{
  	  if (memory_access_type == VMAT_STRIDED_SLP)
! 	    {
! 	      /* If we elided a consecutive load permutation, adjust
! 		 the group size here.  */
! 	      if (!ls.subchain_p)
! 		group_size = DR_GROUP_SIZE (first_stmt_info);
! 	      else
! 		group_size = SLP_TREE_LANES (slp_node);
! 	    }
  	  else /* VMAT_ELEMENTWISE */
  	    group_size = SLP_TREE_LANES (slp_node);
  	}
diff -Nrcpad gcc-16-20251109/gcc/tree-vectorizer.cc gcc-16-20251116/gcc/tree-vectorizer.cc
*** gcc-16-20251109/gcc/tree-vectorizer.cc	Sun Nov  9 22:33:51 2025
--- gcc-16-20251116/gcc/tree-vectorizer.cc	Sun Nov 16 22:34:45 2025
*************** along with GCC; see the file COPYING3.
*** 83,88 ****
--- 83,89 ----
  #include "internal-fn.h"
  #include "tree-ssa-sccvn.h"
  #include "tree-into-ssa.h"
+ #include "gimple-range.h"
  
  /* Loop or bb location, with hotness information.  */
  dump_user_location_t vect_location;
*************** pass_vectorize::execute (function *fun)
*** 1279,1284 ****
--- 1280,1286 ----
      note_simd_array_uses (&simd_array_to_simduid_htab, fun);
  
    /*  ----------- Analyze loops. -----------  */
+   enable_ranger (fun);
  
    /* If some loop was duplicated, it gets bigger number
       than all previously defined loops.  This fact allows us to run
*************** pass_vectorize::execute (function *fun)
*** 1341,1346 ****
--- 1343,1349 ----
                       num_vectorized_loops);
  
    /*  ----------- Finalize. -----------  */
+   disable_ranger (fun);
  
    if (any_ifcvt_loops)
      for (i = 1; i < number_of_loops (fun); i++)
diff -Nrcpad gcc-16-20251109/gcc/tree-vectorizer.h gcc-16-20251116/gcc/tree-vectorizer.h
*** gcc-16-20251109/gcc/tree-vectorizer.h	Sun Nov  9 22:33:51 2025
--- gcc-16-20251116/gcc/tree-vectorizer.h	Sun Nov 16 22:34:45 2025
*************** struct vect_load_store_data : vect_data
*** 288,293 ****
--- 288,294 ----
        tree decl;	// VMAT_GATHER_SCATTER_DECL
    } gs;
    tree strided_offset_vectype; // VMAT_GATHER_SCATTER_IFN, originally strided
+   /* Load/store type with larger element mode used for punning the vectype.  */
    tree ls_type; // VMAT_GATHER_SCATTER_IFN
    /* This is set to a supported offset vector type if we don't support the
       originally requested offset type, otherwise NULL.
*************** struct vect_load_store_data : vect_data
*** 302,307 ****
--- 303,310 ----
    /* True if the load requires a load permutation.  */
    bool slp_perm;    // SLP_TREE_LOAD_PERMUTATION
    unsigned n_perms; // SLP_TREE_LOAD_PERMUTATION
+   /* Whether the load permutation is consecutive and simple.  */
+   bool subchain_p; // VMAT_STRIDED_SLP and VMAT_GATHER_SCATTER
  };
  
  /* A computation tree of an SLP instance.  Each node corresponds to a group of
*************** public:
*** 1132,1141 ****
       for single-rgroup control.  */
    bool using_select_vl_p;
  
-   /* True if we've decided to use partially-populated vectors for the
-      epilogue of loop.  */
-   bool epil_using_partial_vectors_p;
- 
    /* True if we've decided to use peeling with versioning together, which allows
       unaligned unsupported data refs to be uniformly aligned after a certain
       amount of peeling (mutual alignment).  Otherwise, we use versioning alone
--- 1135,1140 ----
*************** public:
*** 1269,1276 ****
  #define LOOP_VINFO_USING_PARTIAL_VECTORS_P(L) (L)->using_partial_vectors_p
  #define LOOP_VINFO_USING_DECREMENTING_IV_P(L) (L)->using_decrementing_iv_p
  #define LOOP_VINFO_USING_SELECT_VL_P(L) (L)->using_select_vl_p
- #define LOOP_VINFO_EPIL_USING_PARTIAL_VECTORS_P(L)                             \
-   (L)->epil_using_partial_vectors_p
  #define LOOP_VINFO_ALLOW_MUTUAL_ALIGNMENT(L) (L)->allow_mutual_alignment
  #define LOOP_VINFO_PARTIAL_LOAD_STORE_BIAS(L) (L)->partial_load_store_bias
  #define LOOP_VINFO_VECT_FACTOR(L)          (L)->vectorization_factor
--- 1268,1273 ----
*************** extern tree neutral_op_for_reduction (tr
*** 2639,2645 ****
  extern widest_int vect_iv_limit_for_partial_vectors (loop_vec_info loop_vinfo);
  bool vect_rgroup_iv_might_wrap_p (loop_vec_info, rgroup_controls *);
  /* Used in tree-vect-loop-manip.cc */
! extern opt_result vect_determine_partial_vectors_and_peeling (loop_vec_info);
  /* Used in gimple-loop-interchange.c and tree-parloops.cc.  */
  extern bool check_reduction_path (dump_user_location_t, loop_p, gphi *, tree,
  				  enum tree_code);
--- 2636,2642 ----
  extern widest_int vect_iv_limit_for_partial_vectors (loop_vec_info loop_vinfo);
  bool vect_rgroup_iv_might_wrap_p (loop_vec_info, rgroup_controls *);
  /* Used in tree-vect-loop-manip.cc */
! extern bool vect_need_peeling_or_partial_vectors_p (loop_vec_info);
  /* Used in gimple-loop-interchange.c and tree-parloops.cc.  */
  extern bool check_reduction_path (dump_user_location_t, loop_p, gphi *, tree,
  				  enum tree_code);
*************** extern int vect_slp_child_index_for_oper
*** 2763,2768 ****
--- 2760,2766 ----
  extern tree prepare_vec_mask (loop_vec_info, tree, tree, tree,
  			      gimple_stmt_iterator *);
  extern tree vect_get_mask_load_else (int, tree);
+ extern bool vect_load_perm_consecutive_p (slp_tree, unsigned = 0);
  
  /* In tree-vect-patterns.cc.  */
  extern void
diff -Nrcpad gcc-16-20251109/gcc/tree-vrp.cc gcc-16-20251116/gcc/tree-vrp.cc
*** gcc-16-20251109/gcc/tree-vrp.cc	Sun Nov  9 22:33:51 2025
--- gcc-16-20251116/gcc/tree-vrp.cc	Sun Nov 16 22:34:45 2025
*************** execute_ranger_vrp (struct function *fun
*** 1094,1101 ****
  
    set_all_edges_as_executable (fun);
    gimple_ranger *ranger = enable_ranger (fun, false);
    rvrp_folder folder (ranger, final_p);
-   phi_analysis_initialize (ranger->const_query ());
    folder.substitute_and_fold ();
    // Ensure the cache in SCEV has been cleared before processing
    // globals to be removed.
--- 1094,1101 ----
  
    set_all_edges_as_executable (fun);
    gimple_ranger *ranger = enable_ranger (fun, false);
+   phi_analysis (*ranger);
    rvrp_folder folder (ranger, final_p);
    folder.substitute_and_fold ();
    // Ensure the cache in SCEV has been cleared before processing
    // globals to be removed.
*************** execute_ranger_vrp (struct function *fun
*** 1149,1155 ****
  	}
      }
  
-   phi_analysis_finalize ();
    disable_ranger (fun);
    scev_finalize ();
    loop_optimizer_finalize ();
--- 1149,1154 ----
diff -Nrcpad gcc-16-20251109/gcc/value-query.cc gcc-16-20251116/gcc/value-query.cc
*** gcc-16-20251109/gcc/value-query.cc	Sun Nov  9 22:33:51 2025
--- gcc-16-20251116/gcc/value-query.cc	Sun Nov 16 22:34:45 2025
*************** range_query::range_of_stmt (vrange &r, g
*** 66,71 ****
--- 66,77 ----
    return false;
  }
  
+ // Default for updating range info is to do nothing.
+ void
+ range_query::update_range_info (tree, const vrange &)
+ {
+ }
+ 
  // If the range of expr EXPR at STMT is a single value, return it.
  // Otherwise return NULL_TREE.
  
*************** range_query::~range_query ()
*** 294,311 ****
  
  bool
  range_query::invoke_range_of_expr (vrange &r, tree expr, gimple *stmt,
! 				   basic_block bbentry, basic_block bbexit)
  {
    if (bbentry)
      {
!       gcc_checking_assert (!stmt && !bbexit);
        return range_on_entry (r, bbentry, expr);
      }
    if (bbexit)
      {
!       gcc_checking_assert (!stmt);
        return range_on_exit (r, bbexit, expr);
      }
  
    return range_of_expr (r, expr, stmt);
  }
--- 300,323 ----
  
  bool
  range_query::invoke_range_of_expr (vrange &r, tree expr, gimple *stmt,
! 				   basic_block bbentry, basic_block bbexit,
! 				   edge e)
  {
    if (bbentry)
      {
!       gcc_checking_assert (!stmt && !bbexit && !e);
        return range_on_entry (r, bbentry, expr);
      }
    if (bbexit)
      {
!       gcc_checking_assert (!stmt && !e);
        return range_on_exit (r, bbexit, expr);
      }
+   if (e)
+     {
+       gcc_checking_assert (!stmt);
+       return range_on_edge (r, e, expr);
+     }
  
    return range_of_expr (r, expr, stmt);
  }
*************** range_query::invoke_range_of_expr (vrang
*** 316,322 ****
  
  bool
  range_query::get_tree_range (vrange &r, tree expr, gimple *stmt,
! 			     basic_block bbentry, basic_block bbexit)
  {
    tree type;
    if (TYPE_P (expr))
--- 328,334 ----
  
  bool
  range_query::get_tree_range (vrange &r, tree expr, gimple *stmt,
! 			     basic_block bbentry, basic_block bbexit, edge e)
  {
    tree type;
    if (TYPE_P (expr))
*************** range_query::get_tree_range (vrange &r,
*** 364,370 ****
      case SSA_NAME:
        // If this is not an abnormal or virtual ssa, invoke range_of_expr.
        if (gimple_range_ssa_p (expr))
! 	return invoke_range_of_expr (r, expr, stmt, bbentry, bbexit);
        gimple_range_global (r, expr);
        return true;
  
--- 376,382 ----
      case SSA_NAME:
        // If this is not an abnormal or virtual ssa, invoke range_of_expr.
        if (gimple_range_ssa_p (expr))
! 	return invoke_range_of_expr (r, expr, stmt, bbentry, bbexit, e);
        gimple_range_global (r, expr);
        return true;
  
*************** range_query::get_tree_range (vrange &r,
*** 402,409 ****
  	{
  	  value_range r0 (TREE_TYPE (op0));
  	  value_range r1 (TREE_TYPE (op1));
! 	  invoke_range_of_expr (r0, op0, stmt, bbentry, bbexit);
! 	  invoke_range_of_expr (r1, op1, stmt, bbentry, bbexit);
  	  if (!op.fold_range (r, type, r0, r1))
  	    r.set_varying (type);
  	}
--- 414,421 ----
  	{
  	  value_range r0 (TREE_TYPE (op0));
  	  value_range r1 (TREE_TYPE (op1));
! 	  invoke_range_of_expr (r0, op0, stmt, bbentry, bbexit, e);
! 	  invoke_range_of_expr (r1, op1, stmt, bbentry, bbexit, e);
  	  if (!op.fold_range (r, type, r0, r1))
  	    r.set_varying (type);
  	}
*************** range_query::get_tree_range (vrange &r,
*** 421,427 ****
  	  value_range r1 (type);
  	  r1.set_varying (type);
  	  invoke_range_of_expr (r0, TREE_OPERAND (expr, 0), stmt, bbentry,
! 				bbexit);
  	  if (!op.fold_range (r, type, r0, r1))
  	    r.set_varying (type);
  	}
--- 433,439 ----
  	  value_range r1 (type);
  	  r1.set_varying (type);
  	  invoke_range_of_expr (r0, TREE_OPERAND (expr, 0), stmt, bbentry,
! 				bbexit, e);
  	  if (!op.fold_range (r, type, r0, r1))
  	    r.set_varying (type);
  	}
diff -Nrcpad gcc-16-20251109/gcc/value-query.h gcc-16-20251116/gcc/value-query.h
*** gcc-16-20251109/gcc/value-query.h	Sun Nov  9 22:33:51 2025
--- gcc-16-20251116/gcc/value-query.h	Sun Nov 16 22:34:45 2025
*************** public:
*** 75,80 ****
--- 75,82 ----
    virtual bool range_on_entry (vrange &r, basic_block bb, tree expr);
    virtual bool range_on_exit (vrange &r, basic_block bb, tree expr);
  
+   virtual void update_range_info (tree name, const vrange &r);
+ 
    inline class relation_oracle &relation () const  { return *m_relation; }
    void create_relation_oracle (bool do_trans_p = true);
    void destroy_relation_oracle ();
*************** public:
*** 92,100 ****
  
  protected:
    bool get_tree_range (vrange &v, tree expr, gimple *stmt,
! 		       basic_block bbentry = NULL, basic_block bbexit = NULL);
    bool invoke_range_of_expr (vrange &v, tree expr, gimple *stmt,
! 			     basic_block bbentry, basic_block bbexit);
    bool get_arith_expr_range (vrange &r, tree expr, gimple *stmt);
    relation_oracle *m_relation;
    infer_range_oracle *m_infer;
--- 94,103 ----
  
  protected:
    bool get_tree_range (vrange &v, tree expr, gimple *stmt,
! 		       basic_block bbentry = NULL, basic_block bbexit = NULL,
! 		       edge e = NULL);
    bool invoke_range_of_expr (vrange &v, tree expr, gimple *stmt,
! 			     basic_block bbentry, basic_block bbexit, edge e);
    bool get_arith_expr_range (vrange &r, tree expr, gimple *stmt);
    relation_oracle *m_relation;
    infer_range_oracle *m_infer;
*************** protected:
*** 104,110 ****
    // This is an internal interface
    void share_query (range_query &q);
    bool m_shared_copy_p;
- 
  };
  
  // Global ranges for SSA names using SSA_NAME_RANGE_INFO.
--- 107,112 ----
diff -Nrcpad gcc-16-20251109/include/ChangeLog gcc-16-20251116/include/ChangeLog
*** gcc-16-20251109/include/ChangeLog	Sun Nov  9 22:34:06 2025
--- gcc-16-20251116/include/ChangeLog	Sun Nov 16 22:34:45 2025
***************
*** 1,3 ****
--- 1,14 ----
+ 2025-11-13  Andrew Stubbs  <ams@codesourcery.com>
+ 	    Kwok Cheung Yeung  <kcyeung@baylibre.com>
+ 	    Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	* cuda/cuda.h (cuMemAllocManaged): Add declaration and related
+ 	CU_MEM_ATTACH_GLOBAL flag.
+ 	* gomp-constants.h (GOMP_OMPX_PREDEF_ALLOC_MAX): Update to 201.
+ 	(GOMP_OMP_PREDEF_MEMSPACE_MAX): New constant.
+ 	(GOMP_OMPX_PREDEF_MEMSPACE_MIN): New constant.
+ 	(GOMP_OMPX_PREDEF_MEMSPACE_MAX): New constant.
+ 
  2025-10-16  David Faust  <david.faust@oracle.com>
  
  	* dwarf2.def (DW_TAG_GNU_annotation): Add link to wiki page
diff -Nrcpad gcc-16-20251109/include/cuda/cuda.h gcc-16-20251116/include/cuda/cuda.h
*** gcc-16-20251109/include/cuda/cuda.h	Sun Nov  9 22:34:06 2025
--- gcc-16-20251116/include/cuda/cuda.h	Sun Nov 16 22:34:45 2025
*************** typedef enum {
*** 87,92 ****
--- 87,96 ----
    CU_DEVICE_ATTRIBUTE_PAGEABLE_MEMORY_ACCESS = 88
  } CUdevice_attribute;
  
+ typedef enum {
+   CU_MEM_ATTACH_GLOBAL = 0x1
+ } CUmemAttach_flags;
+ 
  enum {
    CU_EVENT_DEFAULT = 0,
    CU_EVENT_DISABLE_TIMING = 2
*************** CUresult cuMemAlloc (CUdeviceptr *, size
*** 254,259 ****
--- 258,264 ----
  #define cuMemAllocHost cuMemAllocHost_v2
  CUresult cuMemAllocHost (void **, size_t);
  CUresult cuMemHostAlloc (void **, size_t, unsigned int);
+ CUresult cuMemAllocManaged(CUdeviceptr *, size_t, unsigned int);
  CUresult cuMemcpy (CUdeviceptr, CUdeviceptr, size_t);
  CUresult cuMemcpyPeer (CUdeviceptr, CUcontext, CUdeviceptr, CUcontext, size_t);
  CUresult cuMemcpyPeerAsync (CUdeviceptr, CUcontext, CUdeviceptr, CUcontext, size_t, CUstream);
diff -Nrcpad gcc-16-20251109/include/gomp-constants.h gcc-16-20251116/include/gomp-constants.h
*** gcc-16-20251109/include/gomp-constants.h	Sun Nov  9 22:34:06 2025
--- gcc-16-20251116/include/gomp-constants.h	Sun Nov 16 22:34:48 2025
*************** enum gomp_map_kind
*** 395,401 ****
  /* Predefined allocator value ranges.  */
  #define GOMP_OMP_PREDEF_ALLOC_MAX	8
  #define GOMP_OMPX_PREDEF_ALLOC_MIN	200
! #define GOMP_OMPX_PREDEF_ALLOC_MAX	200
  
  /* Predefined allocator with access == thread.  */
  #define GOMP_OMP_PREDEF_ALLOC_THREADS	8
--- 395,406 ----
  /* Predefined allocator value ranges.  */
  #define GOMP_OMP_PREDEF_ALLOC_MAX	8
  #define GOMP_OMPX_PREDEF_ALLOC_MIN	200
! #define GOMP_OMPX_PREDEF_ALLOC_MAX	201
! 
! /* Predefined memspace value ranges.  */
! #define GOMP_OMP_PREDEF_MEMSPACE_MAX	4
! #define GOMP_OMPX_PREDEF_MEMSPACE_MIN	200
! #define GOMP_OMPX_PREDEF_MEMSPACE_MAX	200
  
  /* Predefined allocator with access == thread.  */
  #define GOMP_OMP_PREDEF_ALLOC_THREADS	8
diff -Nrcpad gcc-16-20251109/libatomic/ChangeLog gcc-16-20251116/libatomic/ChangeLog
*** gcc-16-20251109/libatomic/ChangeLog	Sun Nov  9 22:34:06 2025
--- gcc-16-20251116/libatomic/ChangeLog	Sun Nov 16 22:34:48 2025
***************
*** 1,3 ****
--- 1,17 ----
+ 2025-11-13  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	* configure.ac (ARCH_LOONGARCH): New AM_CONDITIONAL.
+ 	* Makefile.am (IFUNC_OPT): Separate the item from IFUNC_OPTIONS
+ 	to allow using multiple options for an ISA variant.
+ 	(libatomic_la_LIBADD): Add *_16_1_.lo for LoongArch.
+ 	(IFUNC_OPTIONS): Build *_16_1_.lo for LoongArch with -mlsx and
+ 	-mscq.
+ 	* configure: Regenerate.
+ 	* Makefile.in: Regenerate.
+ 	* configure.tgt (try_ifunc): Set to yes for LoongArch if the
+ 	compiler can produce lock-free 16B atomic with -mlsx -mscq.
+ 	* config/loongarch/host-config.h: Implement ifunc selector.
+ 
  2025-11-03  Sam James  <sam@gentoo.org>
  
  	* configure: Regenerate.
diff -Nrcpad gcc-16-20251109/libatomic/Makefile.am gcc-16-20251116/libatomic/Makefile.am
*** gcc-16-20251109/libatomic/Makefile.am	Sun Nov  9 22:34:06 2025
--- gcc-16-20251116/libatomic/Makefile.am	Sun Nov 16 22:34:48 2025
*************** PAT_BASE	= $(word 1,$(PAT_SPLIT))
*** 107,113 ****
  PAT_N		= $(word 2,$(PAT_SPLIT))
  PAT_S		= $(word 3,$(PAT_SPLIT))
  IFUNC_DEF	= -DIFUNC_ALT=$(PAT_S)
! IFUNC_OPT	= $(word $(PAT_S),$(IFUNC_OPTIONS))
  
  @AMDEP_TRUE@M_DEPS		= -MT $@ -MD -MP -MF $(DEPDIR)/$(@F).Ppo
  @AMDEP_FALSE@M_DEPS		=
--- 107,113 ----
  PAT_N		= $(word 2,$(PAT_SPLIT))
  PAT_S		= $(word 3,$(PAT_SPLIT))
  IFUNC_DEF	= -DIFUNC_ALT=$(PAT_S)
! IFUNC_OPT	= $(subst |,$(space),$(word $(PAT_S),$(IFUNC_OPTIONS)))
  
  @AMDEP_TRUE@M_DEPS		= -MT $@ -MD -MP -MF $(DEPDIR)/$(@F).Ppo
  @AMDEP_FALSE@M_DEPS		=
*************** IFUNC_OPTIONS	     = -mcx16 -mcx16
*** 152,157 ****
--- 152,161 ----
  libatomic_la_LIBADD += $(addsuffix _16_1_.lo,$(SIZEOBJS)) \
  		       $(addsuffix _16_2_.lo,$(SIZEOBJS))
  endif
+ if ARCH_LOONGARCH
+ IFUNC_OPTIONS	     = -mlsx|-mscq
+ libatomic_la_LIBADD += $(addsuffix _16_1_.lo,$(SIZEOBJS))
+ endif
  endif
  
  if ARCH_AARCH64_LINUX
diff -Nrcpad gcc-16-20251109/libatomic/Makefile.in gcc-16-20251116/libatomic/Makefile.in
*** gcc-16-20251109/libatomic/Makefile.in	Sun Nov  9 22:35:24 2025
--- gcc-16-20251116/libatomic/Makefile.in	Sun Nov 16 22:35:54 2025
*************** target_triplet = @target@
*** 100,106 ****
  @ARCH_X86_64_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@am__append_4 = $(addsuffix _16_1_.lo,$(SIZEOBJS)) \
  @ARCH_X86_64_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@		       $(addsuffix _16_2_.lo,$(SIZEOBJS))
  
! @ARCH_AARCH64_LINUX_TRUE@@PARTIAL_VXWORKS_FALSE@am__append_5 = atomic_16.S
  subdir = .
  ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
  am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
--- 100,107 ----
  @ARCH_X86_64_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@am__append_4 = $(addsuffix _16_1_.lo,$(SIZEOBJS)) \
  @ARCH_X86_64_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@		       $(addsuffix _16_2_.lo,$(SIZEOBJS))
  
! @ARCH_LOONGARCH_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@am__append_5 = $(addsuffix _16_1_.lo,$(SIZEOBJS))
! @ARCH_AARCH64_LINUX_TRUE@@PARTIAL_VXWORKS_FALSE@am__append_6 = atomic_16.S
  subdir = .
  ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
  am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
*************** libatomic_la_LDFLAGS = $(libatomic_versi
*** 436,444 ****
  
  @PARTIAL_VXWORKS_FALSE@libatomic_la_SOURCES = gload.c gstore.c gcas.c \
  @PARTIAL_VXWORKS_FALSE@	gexch.c glfree.c lock.c init.c fenv.c \
! @PARTIAL_VXWORKS_FALSE@	fence.c flag.c $(am__append_5)
  @PARTIAL_VXWORKS_TRUE@libatomic_la_SOURCES = fenv.c fence.c flag.c \
! @PARTIAL_VXWORKS_TRUE@	$(am__append_5)
  @PARTIAL_VXWORKS_FALSE@SIZEOBJS = load store cas exch fadd fsub fand fior fxor fnand tas
  @PARTIAL_VXWORKS_FALSE@EXTRA_libatomic_la_SOURCES = $(addsuffix _n.c,$(SIZEOBJS))
  @PARTIAL_VXWORKS_FALSE@libatomic_la_DEPENDENCIES = $(libatomic_la_LIBADD) $(libatomic_version_dep)
--- 437,445 ----
  
  @PARTIAL_VXWORKS_FALSE@libatomic_la_SOURCES = gload.c gstore.c gcas.c \
  @PARTIAL_VXWORKS_FALSE@	gexch.c glfree.c lock.c init.c fenv.c \
! @PARTIAL_VXWORKS_FALSE@	fence.c flag.c $(am__append_6)
  @PARTIAL_VXWORKS_TRUE@libatomic_la_SOURCES = fenv.c fence.c flag.c \
! @PARTIAL_VXWORKS_TRUE@	$(am__append_6)
  @PARTIAL_VXWORKS_FALSE@SIZEOBJS = load store cas exch fadd fsub fand fior fxor fnand tas
  @PARTIAL_VXWORKS_FALSE@EXTRA_libatomic_la_SOURCES = $(addsuffix _n.c,$(SIZEOBJS))
  @PARTIAL_VXWORKS_FALSE@libatomic_la_DEPENDENCIES = $(libatomic_la_LIBADD) $(libatomic_version_dep)
*************** libatomic_la_LDFLAGS = $(libatomic_versi
*** 449,455 ****
  @PARTIAL_VXWORKS_FALSE@PAT_N = $(word 2,$(PAT_SPLIT))
  @PARTIAL_VXWORKS_FALSE@PAT_S = $(word 3,$(PAT_SPLIT))
  @PARTIAL_VXWORKS_FALSE@IFUNC_DEF = -DIFUNC_ALT=$(PAT_S)
! @PARTIAL_VXWORKS_FALSE@IFUNC_OPT = $(word $(PAT_S),$(IFUNC_OPTIONS))
  @PARTIAL_VXWORKS_FALSE@@AMDEP_TRUE@M_DEPS = -MT $@ -MD -MP -MF $(DEPDIR)/$(@F).Ppo
  @PARTIAL_VXWORKS_FALSE@@AMDEP_FALSE@M_DEPS = 
  @PARTIAL_VXWORKS_FALSE@M_SIZE = -DN=$(PAT_N)
--- 450,456 ----
  @PARTIAL_VXWORKS_FALSE@PAT_N = $(word 2,$(PAT_SPLIT))
  @PARTIAL_VXWORKS_FALSE@PAT_S = $(word 3,$(PAT_SPLIT))
  @PARTIAL_VXWORKS_FALSE@IFUNC_DEF = -DIFUNC_ALT=$(PAT_S)
! @PARTIAL_VXWORKS_FALSE@IFUNC_OPT = $(subst |,$(space),$(word $(PAT_S),$(IFUNC_OPTIONS)))
  @PARTIAL_VXWORKS_FALSE@@AMDEP_TRUE@M_DEPS = -MT $@ -MD -MP -MF $(DEPDIR)/$(@F).Ppo
  @PARTIAL_VXWORKS_FALSE@@AMDEP_FALSE@M_DEPS = 
  @PARTIAL_VXWORKS_FALSE@M_SIZE = -DN=$(PAT_N)
*************** libatomic_la_LDFLAGS = $(libatomic_versi
*** 467,476 ****
  @PARTIAL_VXWORKS_FALSE@	s,$(SIZES),$(addsuffix \
  @PARTIAL_VXWORKS_FALSE@	_$(s)_.lo,$(SIZEOBJS))) $(am__append_1) \
  @PARTIAL_VXWORKS_FALSE@	$(am__append_2) $(am__append_3) \
! @PARTIAL_VXWORKS_FALSE@	$(am__append_4)
  @ARCH_AARCH64_LINUX_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@IFUNC_OPTIONS = -march=armv8-a+lse
  @ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@IFUNC_OPTIONS = -march=armv7-a+fp -DHAVE_KERNEL64
  @ARCH_I386_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@IFUNC_OPTIONS = -march=i586
  @ARCH_X86_64_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@IFUNC_OPTIONS = -mcx16 -mcx16
  libatomic_convenience_la_SOURCES = $(libatomic_la_SOURCES)
  libatomic_convenience_la_LIBADD = $(libatomic_la_LIBADD)
--- 468,478 ----
  @PARTIAL_VXWORKS_FALSE@	s,$(SIZES),$(addsuffix \
  @PARTIAL_VXWORKS_FALSE@	_$(s)_.lo,$(SIZEOBJS))) $(am__append_1) \
  @PARTIAL_VXWORKS_FALSE@	$(am__append_2) $(am__append_3) \
! @PARTIAL_VXWORKS_FALSE@	$(am__append_4) $(am__append_5)
  @ARCH_AARCH64_LINUX_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@IFUNC_OPTIONS = -march=armv8-a+lse
  @ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@IFUNC_OPTIONS = -march=armv7-a+fp -DHAVE_KERNEL64
  @ARCH_I386_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@IFUNC_OPTIONS = -march=i586
+ @ARCH_LOONGARCH_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@IFUNC_OPTIONS = -mlsx|-mscq
  @ARCH_X86_64_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@IFUNC_OPTIONS = -mcx16 -mcx16
  libatomic_convenience_la_SOURCES = $(libatomic_la_SOURCES)
  libatomic_convenience_la_LIBADD = $(libatomic_la_LIBADD)
diff -Nrcpad gcc-16-20251109/libatomic/config/loongarch/host-config.h gcc-16-20251116/libatomic/config/loongarch/host-config.h
*** gcc-16-20251109/libatomic/config/loongarch/host-config.h	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libatomic/config/loongarch/host-config.h	Sun Nov 16 22:34:48 2025
***************
*** 0 ****
--- 1,61 ----
+ /* Copyright (C) 2025 Free Software Foundation, Inc.
+ 
+    This file is part of the GNU Atomic Library (libatomic).
+ 
+    Libatomic 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.
+ 
+    Libatomic 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/>.  */
+ 
+ #if HAVE_IFUNC
+ 
+ /* We can assume Linux and Glibc here: otherwise GCC won't define
+    __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 (see HAVE_IFUNC_FOR_LIBATOMIC_16B
+    in gcc/config/loongarch/linux.h) and configure.tgt won't set
+    try_ifunc=1.  */
+ 
+ #include <sys/auxv.h>
+ 
+ #ifndef HWCAP_LOONGARCH_LSX
+ #define HWCAP_LOONGARCH_LSX (1 << 4)
+ #endif
+ 
+ #define IFUNC_NCOND(N) (N == 16)
+ 
+ /* We cannot rely on the argument of ifunc resolver due to
+    https://sourceware.org/bugzilla/show_bug.cgi?id=33610.  Call getauxval
+    on our own.  */
+ #define IFUNC_COND_1 ((getauxval (AT_HWCAP) & HWCAP_LOONGARCH_LSX) && \
+ 		      (__builtin_loongarch_cpucfg (2) & (1 << 30)))
+ 
+ #if IFUNC_ALT == 1
+ #undef HAVE_ATOMIC_CAS_16
+ #define HAVE_ATOMIC_CAS_16 1
+ 
+ #undef HAVE_ATOMIC_LDST_16
+ #define HAVE_ATOMIC_LDST_16 1
+ 
+ #undef HAVE_ATOMIC_FETCH_ADD_16
+ #define HAVE_ATOMIC_FETCH_ADD_16 1
+ 
+ #undef HAVE_ATOMIC_FETCH_OP_16
+ #define HAVE_ATOMIC_FETCH_OP_16 1
+ #endif /* IFUNC_ALT == 1 */
+ 
+ #endif /* HAVE_IFUNC */
+ 
+ #include_next <host-config.h>
diff -Nrcpad gcc-16-20251109/libatomic/configure gcc-16-20251116/libatomic/configure
*** gcc-16-20251109/libatomic/configure	Sun Nov  9 22:35:24 2025
--- gcc-16-20251116/libatomic/configure	Sun Nov 16 22:35:54 2025
*************** ARCH_X86_64_FALSE
*** 637,642 ****
--- 637,644 ----
  ARCH_X86_64_TRUE
  ARCH_I386_FALSE
  ARCH_I386_TRUE
+ ARCH_LOONGARCH_FALSE
+ ARCH_LOONGARCH_TRUE
  ARCH_ARM_LINUX_FALSE
  ARCH_ARM_LINUX_TRUE
  ARCH_AARCH64_LINUX_FALSE
*************** else
*** 11847,11853 ****
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 11850 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
--- 11849,11855 ----
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 11852 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
*************** else
*** 11953,11959 ****
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 11956 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
--- 11955,11961 ----
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 11958 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
*************** else
*** 16199,16204 ****
--- 16201,16214 ----
    ARCH_ARM_LINUX_FALSE=
  fi
  
+  if test "$ARCH" = loongarch; then
+   ARCH_LOONGARCH_TRUE=
+   ARCH_LOONGARCH_FALSE='#'
+ else
+   ARCH_LOONGARCH_TRUE='#'
+   ARCH_LOONGARCH_FALSE=
+ fi
+ 
   if test "$ARCH" = x86 && test x$libat_cv_wordsize = x4; then
    ARCH_I386_TRUE=
    ARCH_I386_FALSE='#'
*************** if test -z "${ARCH_ARM_LINUX_TRUE}" && t
*** 16419,16424 ****
--- 16429,16438 ----
    as_fn_error $? "conditional \"ARCH_ARM_LINUX\" was never defined.
  Usually this means the macro was only invoked conditionally." "$LINENO" 5
  fi
+ if test -z "${ARCH_LOONGARCH_TRUE}" && test -z "${ARCH_LOONGARCH_FALSE}"; then
+   as_fn_error $? "conditional \"ARCH_LOONGARCH\" was never defined.
+ Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ fi
  if test -z "${ARCH_I386_TRUE}" && test -z "${ARCH_I386_FALSE}"; then
    as_fn_error $? "conditional \"ARCH_I386\" was never defined.
  Usually this means the macro was only invoked conditionally." "$LINENO" 5
diff -Nrcpad gcc-16-20251109/libatomic/configure.ac gcc-16-20251116/libatomic/configure.ac
*** gcc-16-20251109/libatomic/configure.ac	Sun Nov  9 22:34:06 2025
--- gcc-16-20251116/libatomic/configure.ac	Sun Nov 16 22:34:48 2025
*************** AM_CONDITIONAL(ARCH_AARCH64_LINUX,
*** 310,315 ****
--- 310,317 ----
  	       [expr "$config_path" : ".* linux/aarch64 .*" > /dev/null])
  AM_CONDITIONAL(ARCH_ARM_LINUX,
  	       [expr "$config_path" : ".* linux/arm .*" > /dev/null])
+ AM_CONDITIONAL(ARCH_LOONGARCH,
+ 	       [test "$ARCH" = loongarch])
  AM_CONDITIONAL(ARCH_I386,
  	       [test "$ARCH" = x86 && test x$libat_cv_wordsize = x4])
  AM_CONDITIONAL(ARCH_X86_64,
diff -Nrcpad gcc-16-20251109/libatomic/configure.tgt gcc-16-20251116/libatomic/configure.tgt
*** gcc-16-20251109/libatomic/configure.tgt	Sun Nov  9 22:34:06 2025
--- gcc-16-20251116/libatomic/configure.tgt	Sun Nov 16 22:34:48 2025
*************** EOF
*** 117,122 ****
--- 117,146 ----
  	ARCH=x86
  	;;
  
+   loongarch*)
+ 	cat > conftestx.c <<EOF
+ #ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16
+ #error lock-free 16-byte atomics is not supported by compiler configuration
+ #endif
+ EOF
+ 	if ${CC} ${CFLAGS} -mlsx -mscq -E conftestx.c > /dev/null 2>&1; then
+ 	  cat > conftesty.c <<EOF
+ #if defined (__loongarch_sx) && defined (__loongarch_scq)
+ #error LSX and SCQ assumed available on target CPU so they are always used
+ #endif
+ EOF
+ 	  if ${CC} ${CFLAGS} -E conftesty.c > /dev/null 2>&1; then
+ 	    try_ifunc=yes
+ 	  else
+ 	    try_ifunc=no
+ 	  fi
+ 	else
+ 	  try_ifunc=no
+ 	fi
+ 	rm -f conftestx.c conftesty.c
+ 	ARCH=loongarch
+ 	;;
+ 
    *)			ARCH="${target_cpu}" ;;
  esac
  
diff -Nrcpad gcc-16-20251109/libcpp/ChangeLog gcc-16-20251116/libcpp/ChangeLog
*** gcc-16-20251109/libcpp/ChangeLog	Sun Nov  9 22:34:06 2025
--- gcc-16-20251116/libcpp/ChangeLog	Sun Nov 16 22:34:48 2025
***************
*** 1,3 ****
--- 1,27 ----
+ 2025-11-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* directives.cc: Implement CWG3053.
+ 	(do_undef): Don't pedwarn or warn about #undef likely or #undef
+ 	unlikely.
+ 
+ 2025-11-10  Lewis Hyatt  <lhyatt@gmail.com>
+ 
+ 	PR preprocessor/105608
+ 	* include/line-map.h: Add new member CMDLINE_LOCATION.
+ 	* lex.cc (get_location_for_byte_range_in_cur_line): Do not expand
+ 	the token location to include range information if token location
+ 	override was requested.
+ 	(warn_about_normalization): Likewise.
+ 	(_cpp_lex_direct): Likewise.
+ 	* pch.cc (struct saved_macro): New local struct.
+ 	(struct save_macro_data): Change DEFNS vector to hold saved_macro
+ 	rather than uchar*.
+ 	(save_macros): Adapt to remember the location information for each
+ 	saved macro in addition to the definition.
+ 	(cpp_prepare_state): Likewise.
+ 	(cpp_read_state): Use the saved location information to generate
+ 	proper locations for the restored macros.
+ 
  2025-10-13  Pierre Marie de Rodat  <derodat@adacore.com>
  
  	* init.cc (read_original_directory): Attempt to decode escape
diff -Nrcpad gcc-16-20251109/libcpp/directives.cc gcc-16-20251116/libcpp/directives.cc
*** gcc-16-20251109/libcpp/directives.cc	Sun Nov  9 22:34:06 2025
--- gcc-16-20251116/libcpp/directives.cc	Sun Nov 16 22:34:48 2025
*************** do_undef (cpp_reader *pfile)
*** 740,748 ****
  	  && !CPP_OPTION (pfile, suppress_builtin_macro_warnings)
  	  && cpp_keyword_p (node))
  	{
! 	  if (CPP_OPTION (pfile, cpp_pedantic)
! 	      && CPP_OPTION (pfile, cplusplus)
! 	      && CPP_OPTION (pfile, lang) >= CLK_GNUCXX26)
  	    cpp_pedwarning (pfile, CPP_W_KEYWORD_MACRO,
  			    "undefining keyword %qs", NODE_NAME (node));
  	  else
--- 740,753 ----
  	  && !CPP_OPTION (pfile, suppress_builtin_macro_warnings)
  	  && cpp_keyword_p (node))
  	{
! 	  if (CPP_OPTION (pfile, cplusplus)
! 	      && (strcmp ((const char *) NODE_NAME (node), "likely") == 0
! 		  || strcmp ((const char *) NODE_NAME (node),
! 			     "unlikely") == 0))
! 	    /* CWG3053: likely and unlikely can be undefined.  */;
! 	  else if (CPP_OPTION (pfile, cpp_pedantic)
! 		   && CPP_OPTION (pfile, cplusplus)
! 		   && CPP_OPTION (pfile, lang) >= CLK_GNUCXX26)
  	    cpp_pedwarning (pfile, CPP_W_KEYWORD_MACRO,
  			    "undefining keyword %qs", NODE_NAME (node));
  	  else
diff -Nrcpad gcc-16-20251109/libcpp/include/line-map.h gcc-16-20251116/libcpp/include/line-map.h
*** gcc-16-20251109/libcpp/include/line-map.h	Sun Nov  9 22:34:06 2025
--- gcc-16-20251116/libcpp/include/line-map.h	Sun Nov 16 22:34:48 2025
*************** public:
*** 878,883 ****
--- 878,889 ----
       built-in tokens.  */
    location_t builtin_location;
  
+   /* The special location value to be used for tokens originating on the
+      command line.  This is currently only needed by the C-family front ends
+      for PCH support; if it would be used for another purpose in the future,
+      then other libcpp-using front ends may need to set it as well.  */
+   location_t cmdline_location;
+ 
    /* The default value of range_bits in ordinary line maps.  */
    unsigned int default_range_bits;
  
diff -Nrcpad gcc-16-20251109/libcpp/lex.cc gcc-16-20251116/libcpp/lex.cc
*** gcc-16-20251109/libcpp/lex.cc	Sun Nov  9 22:34:06 2025
--- gcc-16-20251116/libcpp/lex.cc	Sun Nov 16 22:34:48 2025
*************** get_location_for_byte_range_in_cur_line
*** 1353,1358 ****
--- 1353,1360 ----
  					 const unsigned char *const start,
  					 size_t num_bytes)
  {
+   if (pfile->forced_token_location)
+     return pfile->forced_token_location;
    gcc_checking_assert (num_bytes > 0);
  
    /* CPP_BUF_COLUMN and linemap_position_for_column both refer
*************** warn_about_normalization (cpp_reader *pf
*** 2035,2040 ****
--- 2037,2043 ----
        /* If possible, create a location range for the token.  */
        if (loc >= RESERVED_LOCATION_COUNT
  	  && token->type != CPP_EOF
+ 	  && !pfile->forced_token_location
  	  /* There must be no line notes to process.  */
  	  && (!(pfile->buffer->cur
  		>= pfile->buffer->notes[pfile->buffer->cur_note].pos
*************** _cpp_lex_direct (cpp_reader *pfile)
*** 4399,4405 ****
  
    /* Potentially convert the location of the token to a range.  */
    if (result->src_loc >= RESERVED_LOCATION_COUNT
!       && result->type != CPP_EOF)
      {
        /* Ensure that any line notes are processed, so that we have the
  	 correct physical line/column for the end-point of the token even
--- 4402,4409 ----
  
    /* Potentially convert the location of the token to a range.  */
    if (result->src_loc >= RESERVED_LOCATION_COUNT
!       && result->type != CPP_EOF
!       && !pfile->forced_token_location)
      {
        /* Ensure that any line notes are processed, so that we have the
  	 correct physical line/column for the end-point of the token even
diff -Nrcpad gcc-16-20251109/libcpp/pch.cc gcc-16-20251116/libcpp/pch.cc
*** gcc-16-20251109/libcpp/pch.cc	Sun Nov  9 22:34:06 2025
--- gcc-16-20251116/libcpp/pch.cc	Sun Nov 16 22:34:48 2025
*************** cpp_valid_state (cpp_reader *r, const ch
*** 730,738 ****
  
  /* Save all the existing macros.  */
  
  struct save_macro_data
  {
!   uchar **defns;
    size_t count;
    size_t array_size;
    char **saved_pragmas;
--- 730,749 ----
  
  /* Save all the existing macros.  */
  
+ namespace {
+ 
+ struct saved_macro
+ {
+   uchar *defn;
+   location_t loc;
+   expanded_location xloc;
+ };
+ 
+ } /* unnamed namespace */
+ 
  struct save_macro_data
  {
!   saved_macro *defns;
    size_t count;
    size_t array_size;
    char **saved_pragmas;
*************** save_macros (cpp_reader *r, cpp_hashnode
*** 762,775 ****
        if (data->count == data->array_size)
  	{
  	  data->array_size *= 2;
! 	  data->defns = XRESIZEVEC (uchar *, data->defns, (data->array_size));
  	}
  
        const uchar * defn = cpp_macro_definition (r, h);
        size_t defnlen = ustrlen (defn);
  
!       data->defns[data->count] = (uchar *) xmemdup (defn, defnlen, defnlen + 2);
!       data->defns[data->count][defnlen] = '\n';
        data->count++;
      }
  
--- 773,801 ----
        if (data->count == data->array_size)
  	{
  	  data->array_size *= 2;
! 	  data->defns = XRESIZEVEC (saved_macro, data->defns, data->array_size);
  	}
  
        const uchar * defn = cpp_macro_definition (r, h);
        size_t defnlen = ustrlen (defn);
  
!       const auto d = data->defns + data->count;
!       d->defn = (uchar *) xmemdup (defn, defnlen, defnlen + 2);
!       d->defn[defnlen] = '\n';
!       d->loc = h->value.macro->line;
!       d->xloc = {};
!       if (d->loc == r->line_table->cmdline_location)
! 	{
! 	  /* The cmdline_location may be different when it comes time to
! 	     restore the macros, so use 0 to indicate this.  */
! 	  d->loc = 0;
! 	}
!       else if (d->loc != r->line_table->builtin_location)
! 	{
! 	  const auto map = linemap_lookup (r->line_table, d->loc);
! 	  gcc_assert (map);
! 	  d->xloc = linemap_expand_location (r->line_table, map, d->loc);
! 	}
        data->count++;
      }
  
*************** cpp_prepare_state (cpp_reader *r, struct
*** 785,793 ****
    struct save_macro_data *d = XNEW (struct save_macro_data);
  
    d->array_size = 512;
!   d->defns = XNEWVEC (uchar *, d->array_size);
    d->count = 0;
    cpp_forall_identifiers (r, save_macros, d);
    d->saved_pragmas = _cpp_save_pragma_names (r);
    *data = d;
  }
--- 811,832 ----
    struct save_macro_data *d = XNEW (struct save_macro_data);
  
    d->array_size = 512;
!   d->defns = XNEWVEC (saved_macro, d->array_size);
    d->count = 0;
    cpp_forall_identifiers (r, save_macros, d);
+ 
+   /* Sort the saved macros in order, so the line map gets built up
+      in chronological order as expected when we load them back in.  */
+   static line_maps *line_table;
+   line_table = r->line_table;
+   qsort (d->defns, d->count, sizeof (saved_macro),
+ 	 [] (const void *x1, const void *x2)
+ 	 {
+ 	   const auto d1 = static_cast<const saved_macro *> (x1);
+ 	   const auto d2 = static_cast<const saved_macro *> (x2);
+ 	   return linemap_compare_locations (line_table, d2->loc, d1->loc);
+ 	 });
+ 
    d->saved_pragmas = _cpp_save_pragma_names (r);
    *data = d;
  }
*************** cpp_read_state (cpp_reader *r, const cha
*** 820,835 ****
    r->state.prevent_expansion = 1;
    r->state.angled_headers = 0;
  
    /* Run through the carefully-saved macros, insert them.  */
    for (i = 0; i < data->count; i++)
      {
!       cpp_hashnode *h;
!       size_t namelen;
!       uchar *defn;
! 
!       namelen = ustrcspn (data->defns[i], "( \n");
!       h = cpp_lookup (r, data->defns[i], namelen);
!       defn = data->defns[i] + namelen;
  
        /* The PCH file is valid, so we know that if there is a definition
  	 from the PCH file it must be the same as the one we had
--- 859,874 ----
    r->state.prevent_expansion = 1;
    r->state.angled_headers = 0;
  
+   const auto old_directive_line = r->directive_line;
+ 
    /* Run through the carefully-saved macros, insert them.  */
+   const char *cur_fname = nullptr;
    for (i = 0; i < data->count; i++)
      {
!       const auto d = data->defns + i;
!       const size_t namelen = ustrcspn (d->defn, "( \n");
!       cpp_hashnode *const h = cpp_lookup (r, d->defn, namelen);
!       const auto defn = d->defn + namelen;
  
        /* The PCH file is valid, so we know that if there is a definition
  	 from the PCH file it must be the same as the one we had
*************** cpp_read_state (cpp_reader *r, const cha
*** 839,866 ****
  	  if (cpp_push_buffer (r, defn, ustrchr (defn, '\n') - defn, true)
  	      != NULL)
  	    {
! 	      _cpp_clean_line (r);
  
! 	      /* ??? Using r->line_table->highest_line is not ideal here, but we
! 		 do need to use some location that is relative to the new line
! 		 map just loaded, not the old one that was in effect when these
! 		 macros were lexed.  The proper fix is to remember the file name
! 		 and line number where each macro was defined, and then add
! 		 these locations into the new line map.  See PR105608.  */
! 	      if (!_cpp_create_definition (r, h, r->line_table->highest_line))
  		abort ();
  	      _cpp_pop_buffer (r);
  	    }
  	  else
  	    abort ();
  	}
  
!       free (data->defns[i]);
      }
    r->state = old_state;
  
    _cpp_restore_pragma_names (r, data->saved_pragmas);
  
    free (data);
  
    if (deps_restore (r->deps, f, CPP_OPTION (r, restore_pch_deps) ? name : NULL)
--- 878,949 ----
  	  if (cpp_push_buffer (r, defn, ustrchr (defn, '\n') - defn, true)
  	      != NULL)
  	    {
! 	      if (d->loc == r->line_table->builtin_location)
! 		r->directive_line = r->line_table->builtin_location;
! 	      else if (d->loc == 0)
! 		/* This was a command-line-defined macro, preserve that
! 		   aspect now.  */
! 		r->directive_line = r->line_table->cmdline_location;
! 	      else
! 		{
! 		  /* In practice, almost all of the locations ought to be in the
! 		     main file, since a PCH cannot be loaded after including
! 		     other headers.  The (probably sole) exception is that
! 		     implicit preincludes can be loaded, so if an implicit
! 		     preinclude such as /usr/include/stdc-predef.h has changed
! 		     since the PCH was created (in a way not invalidating the
! 		     PCH), we can end up here with locations that are not in the
! 		     main file.  In that case, we may be adding them to the
! 		     line_map out of order (the implicit preinclude already
! 		     being represented in the line_map we have loaded from the
! 		     PCH), but it is probably not going to cause any observable
! 		     issue given the constraints on what can appear in a header
! 		     before loading a PCH.  */
! 		  if (!cur_fname || strcmp (cur_fname, d->xloc.file))
! 		    {
! 		      linemap_add (r->line_table, LC_RENAME, d->xloc.sysp,
! 				   d->xloc.file, d->xloc.line);
! 		      cur_fname = d->xloc.file;
! 		    }
! 		  r->directive_line = linemap_line_start (r->line_table,
! 							  d->xloc.line, 127);
! 		}
  
! 	      /* Even when the macro was defined in the main file, we have to
! 		 use cpp_force_token_locations here, so all tokens in the macro
! 		 will have location assigned to the directive line with no
! 		 column information.  We no longer know even which line the
! 		 tokens appeared on originally now, much less the column, since
! 		 we only stored the macro definition string after lexing it.  */
! 	      cpp_force_token_locations (r, r->directive_line);
! 
! 	      _cpp_clean_line (r);
! 	      if (!_cpp_create_definition (r, h, r->directive_line))
  		abort ();
+ 	      cpp_stop_forcing_token_locations (r);
  	      _cpp_pop_buffer (r);
+ 
+ 	      if (d->loc < RESERVED_LOCATION_COUNT)
+ 		/* Macros defined on the command line or as builtins are always
+ 		   implicitly used.  It is necessary to note this here or else
+ 		   -Wunused-macros will complain, because these locations do
+ 		   return TRUE for MAIN_FILE_P().  For a command line
+ 		   definition, d->loc was set to 0 when we saved it, so it does
+ 		   satisfy the check performed here.  */
+ 		h->value.macro->used = true;
  	    }
  	  else
  	    abort ();
  	}
  
!       free (data->defns[i].defn);
      }
    r->state = old_state;
+   r->directive_line = old_directive_line;
  
    _cpp_restore_pragma_names (r, data->saved_pragmas);
  
+   XDELETEVEC (data->defns);
    free (data);
  
    if (deps_restore (r->deps, f, CPP_OPTION (r, restore_pch_deps) ? name : NULL)
diff -Nrcpad gcc-16-20251109/libgcc/ChangeLog gcc-16-20251116/libgcc/ChangeLog
*** gcc-16-20251109/libgcc/ChangeLog	Sun Nov  9 22:34:14 2025
--- gcc-16-20251116/libgcc/ChangeLog	Sun Nov 16 22:34:48 2025
***************
*** 1,3 ****
--- 1,8 ----
+ 2025-11-11  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* config/loongarch/t-loongarch64: Add cpuinfo.c to LIB2ADD.
+ 	* config/loongarch/cpuinfo.c: New file.
+ 
  2025-10-25  Olivier Hainque  <hainque@adacore.com>
  
  	* config/t-vxworks (LIBGCC2_INCLUDES): Replace $(VSB_DIR)
diff -Nrcpad gcc-16-20251109/libgcc/config/loongarch/cpuinfo.c gcc-16-20251116/libgcc/config/loongarch/cpuinfo.c
*** gcc-16-20251109/libgcc/config/loongarch/cpuinfo.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgcc/config/loongarch/cpuinfo.c	Sun Nov 16 22:34:48 2025
***************
*** 0 ****
--- 1,90 ----
+ /* CPU feature detection for LoongArch architecture.
+    Copyright (C) 2025 Free Software Foundation, Inc.
+ 
+ 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.
+ 
+ Under Section 7 of GPL version 3, you are granted additional
+ permissions described in the GCC Runtime Library Exception, version
+ 3.1, as published by the Free Software Foundation.
+ 
+ You should have received a copy of the GNU General Public License and
+ a copy of the GCC Runtime Library Exception along with this program;
+ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #include "common/config/loongarch/cpu-features.h"
+ 
+ #if __has_include(<sys/auxv.h>)
+ #include <sys/auxv.h>
+ 
+ #define CPUCFG1_LA64	    2ULL << 0
+ #define CPUCFG1_UAL	    1ULL << 20
+ #define CPUCFG2_LSX	    1ULL << 6
+ #define CPUCFG2_LASX	    1ULL << 7
+ #define CPUCFG2_FRECIPE	    1ULL << 25
+ #define CPUCFG2_DIV32	    1ULL << 26
+ #define CPUCFG2_LAM_BH	    1ULL << 27
+ #define CPUCFG2_LAMCAS	    1ULL << 28
+ #define CPUCFG2_SCQ	    1ULL << 30
+ #define CPUCFG3_LD_SEQ_SA   1ULL << 23
+ 
+ struct {
+     loongarch_fmv_feature_mask features;
+ } __loongarch_feature_bits __attribute__ ((visibility ("hidden"), nocommon));
+ 
+ void __init_loongarch_features_resolver (void);
+ void
+ __init_loongarch_features_resolver (void)
+ {
+   if (__atomic_load_n (&__loongarch_feature_bits.features, __ATOMIC_RELAXED))
+     return;
+ 
+   loongarch_fmv_feature_mask feat = 0ULL;
+ #define setCPUFeature(F) feat |= 1ULL << F;
+   unsigned int CPUCFG1 = __builtin_loongarch_cpucfg (1);
+   unsigned int CPUCFG2 = __builtin_loongarch_cpucfg (2);
+   unsigned int CPUCFG3 = __builtin_loongarch_cpucfg (3);
+   unsigned long hwcap = getauxval (AT_HWCAP);
+ 
+   if (CPUCFG1 & CPUCFG1_LA64)
+     setCPUFeature (FEAT_LA64);
+   if (CPUCFG1 & CPUCFG1_UAL)
+     setCPUFeature (FEAT_UAL);
+   if (CPUCFG2 & CPUCFG2_FRECIPE)
+     setCPUFeature (FEAT_FRECIPE);
+   if (CPUCFG2 & CPUCFG2_DIV32)
+     setCPUFeature (FEAT_DIV32);
+   if (CPUCFG2 & CPUCFG2_LAM_BH)
+     setCPUFeature (FEAT_LAM_BH);
+   if (CPUCFG2 & CPUCFG2_LAMCAS)
+     setCPUFeature (FEAT_LAMCAS);
+   if (CPUCFG2 & CPUCFG2_SCQ)
+     setCPUFeature (FEAT_SCQ);
+   if (CPUCFG3 & CPUCFG3_LD_SEQ_SA)
+     setCPUFeature (FEAT_LD_SEQ_SA);
+ 
+   /* LSX and LASX can be disabled/enabled by kernel: on some old kernel
+      versions the vector context switch wasn't implemented and so they are
+      always disabled, and on Linux >= 6.18-rc1 the user can pass simd=
+      parameter via kernel cmdline to disable LSX or LASX for debug or
+      powersave purpose:
+      https://git.kernel.org/torvalds/c/5dcddd268a8d
+      Thus for LSX and LASX HWCAP must be used.*/
+   if (hwcap & HWCAP_LOONGARCH_LSX)
+     setCPUFeature (FEAT_LSX);
+   if (hwcap & HWCAP_LOONGARCH_LASX)
+     setCPUFeature (FEAT_LASX);
+ #undef setCPUFeature
+   __atomic_store_n (&__loongarch_feature_bits.features, feat, __ATOMIC_RELAXED);
+ }
+ #endif /* __has_include(<sys/auxv.h>)  */
diff -Nrcpad gcc-16-20251109/libgcc/config/loongarch/t-loongarch64 gcc-16-20251116/libgcc/config/loongarch/t-loongarch64
*** gcc-16-20251109/libgcc/config/loongarch/t-loongarch64	Sun Nov  9 22:34:15 2025
--- gcc-16-20251116/libgcc/config/loongarch/t-loongarch64	Sun Nov 16 22:34:48 2025
***************
*** 1 ****
--- 1,3 ----
+ LIB2ADD += $(srcdir)/config/loongarch/cpuinfo.c
+ 
  softfp_int_modes += ti
diff -Nrcpad gcc-16-20251109/libgcobol/.gitignore gcc-16-20251116/libgcobol/.gitignore
*** gcc-16-20251109/libgcobol/.gitignore	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgcobol/.gitignore	Sun Nov 16 22:34:49 2025
***************
*** 0 ****
--- 1,8 ----
+ compat/t/*
+ !compat/t/Makefile
+ !compat/t/*.cbl
+ posix/bin/sizeofs
+ posix/t/*
+ !posix/t/Makefile
+ !posix/t/*.cbl
+ posix/udf/*.scr
diff -Nrcpad gcc-16-20251109/libgcobol/ChangeLog gcc-16-20251116/libgcobol/ChangeLog
*** gcc-16-20251109/libgcobol/ChangeLog	Sun Nov  9 22:34:16 2025
--- gcc-16-20251116/libgcobol/ChangeLog	Sun Nov 16 22:34:49 2025
***************
*** 1,3 ****
--- 1,60 ----
+ 2025-11-13  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	* Makefile.am: Move UDF-support to posix/shim, add install targets
+ 	* Makefile.in: Regenerate
+ 	* charmaps.cc (__gg__currency_signs): Use std::string.
+ 	* charmaps.h: Include string and vector headers.
+ 	(class charmap_t): Use std::string and vector for currency.
+ 	* config.h.in: Regenerate.
+ 	* configure: Regenerate.
+ 	* configure.ac: Check for libxml2.
+ 	* intrinsic.cc (numval_c): Constify.
+ 	* libgcobol.cc (struct program_state): Use std::string and vector.
+ 	(__gg__inspect_format_2): Add debug messages.
+ 	* libgcobol.h (__gg__get_default_currency_string): Constify.
+ 	* valconv.cc (expand_picture): Use std::string and vector.
+ 	(__gg__string_to_numeric_edited): Use std::string and vector.
+ 	(__gg__currency_sign_init): Use std::string and vector.
+ 	(__gg__currency_sign): Use std::string and vector.
+ 	* xmlparse.cc (xml_push_parse): Reformat.
+ 	* posix/stat.cc: Removed.
+ 	* posix/stat.h: Removed.
+ 	* .gitignore: New file.
+ 	* compat/README.md: New file.
+ 	* compat/lib/gnu/CBL_ALLOC_MEM.cbl: New file.
+ 	* compat/lib/gnu/CBL_CHECK_FILE_EXIST.cbl: New file.
+ 	* compat/lib/gnu/CBL_DELETE_FILE.cbl: New file.
+ 	* compat/lib/gnu/CBL_FREE_MEM.cbl: New file.
+ 	* compat/t/Makefile: New file.
+ 	* compat/t/smoke.cbl: New file.
+ 	* posix/README.md: New file.
+ 	* posix/bin/Makefile: New file for UDF-developer.
+ 	* posix/bin/headers: New file.
+ 	* posix/bin/scrape.awk: New file.
+ 	* posix/bin/sizeofs.c: New file.
+ 	* posix/bin/udf-gen: New file.
+ 	* posix/cpy/posix-errno.cbl: New file.
+ 	* posix/cpy/statbuf.cpy: New file.
+ 	* posix/cpy/tm.cpy: New file.
+ 	* posix/errno.cc: Removed.
+ 	* posix/localtime.cc: Removed.
+ 	* posix/shim/stat.cc: New file.
+ 	* posix/shim/stat.h: New file.
+ 	* posix/t/Makefile: New file.
+ 	* posix/t/errno.cbl: New file.
+ 	* posix/t/exit.cbl: New file.
+ 	* posix/t/localtime.cbl: New file.
+ 	* posix/t/stat.cbl: New file.
+ 	* posix/tm.h: Removed.
+ 	* posix/udf/posix-exit.cbl: New file.
+ 	* posix/udf/posix-localtime.cbl: New file.
+ 	* posix/udf/posix-mkdir.cbl: New file.
+ 	* posix/udf/posix-stat.cbl: New file.
+ 	* posix/udf/posix-unlink.cbl: New file.
+ 	* posix/shim/errno.cc: New file.
+ 	* posix/shim/localtime.cc: New file.
+ 	* posix/shim/tm.h: New file.
+ 
  2025-11-06  Robert Dubner  <rdubner@symas.com>
  	    James K. Lowden  <jklowden@cobolworx.com>
  
diff -Nrcpad gcc-16-20251109/libgcobol/Makefile.am gcc-16-20251116/libgcobol/Makefile.am
*** gcc-16-20251109/libgcobol/Makefile.am	Sun Nov  9 22:34:16 2025
--- gcc-16-20251116/libgcobol/Makefile.am	Sun Nov 16 22:34:49 2025
*************** if BUILD_LIBGCOBOL
*** 30,35 ****
--- 30,37 ----
  toolexeclib_LTLIBRARIES  = libgcobol.la
  toolexeclib_DATA = libgcobol.spec
  
+ libsubincludedir = $(libdir)/gcc/cobol/$(target_noncanonical)/$(gcc_version)
+ 
  ##
  ## 2.2.12 Automatic Dependency Tracking
  ## Automake generates code for automatic dependency tracking by default
*************** libgcobol_la_SOURCES =				\
*** 43,60 ****
  	intrinsic.cc				\
  	io.cc					\
  	libgcobol.cc				\
! 	posix/errno.cc				\
! 	posix/localtime.cc			\
! 	posix/stat.cc				\
  	stringbin.cc				\
  	valconv.cc				\
  	xmlparse.cc
  
  libgcobol_la_LIBADD = -lxml2
  
  WARN_CFLAGS = -W -Wall -Wwrite-strings
  
! AM_CPPFLAGS = -I. -I$(srcdir) -I$(srcdir)/posix $(LIBQUADINCLUDE)
  AM_CPPFLAGS += -I /usr/include/libxml2
  
  AM_CFLAGS = $(XCFLAGS)
--- 45,75 ----
  	intrinsic.cc				\
  	io.cc					\
  	libgcobol.cc				\
! 	posix/shim/errno.cc			\
! 	posix/shim/localtime.cc			\
! 	posix/shim/stat.cc			\
  	stringbin.cc				\
  	valconv.cc				\
  	xmlparse.cc
  
  libgcobol_la_LIBADD = -lxml2
  
+ nobase_libsubinclude_HEADERS = 			\
+ 	posix/cpy/posix-errno.cbl		\
+ 	posix/cpy/statbuf.cpy			\
+ 	posix/udf/posix-exit.cbl		\
+ 	posix/udf/posix-localtime.cbl		\
+ 	posix/udf/posix-mkdir.cbl		\
+ 	posix/udf/posix-stat.cbl		\
+ 	posix/udf/posix-unlink.cbl		\
+ 	compat/lib/gnu/CBL_CHECK_FILE_EXIST.cbl	\
+ 	compat/lib/gnu/CBL_ALLOC_MEM.cbl	\
+ 	compat/lib/gnu/CBL_DELETE_FILE.cbl	\
+ 	compat/lib/gnu/CBL_FREE_MEM.cbl
+ 
  WARN_CFLAGS = -W -Wall -Wwrite-strings
  
! AM_CPPFLAGS = -I. -I posix/shim $(LIBQUADINCLUDE)
  AM_CPPFLAGS += -I /usr/include/libxml2
  
  AM_CFLAGS = $(XCFLAGS)
*************** endif
*** 73,79 ****
  libgcobol_la_LINK = $(CXXLINK) $(libgcobol_la_LDFLAGS)
  version_arg = -version-info $(LIBGCOBOL_VERSION)
  libgcobol_la_LDFLAGS = $(LTLDFLAGS) $(LIBQUADLIB) $(LTLIBICONV) \
! 	$(extra_ldflags_libgcobol) $(LIBS) -lxml2 $(version_arg)
  libgcobol_la_DEPENDENCIES = libgcobol.spec $(LIBQUADLIB_DEP)
  
  endif BUILD_LIBGCOBOL
--- 88,94 ----
  libgcobol_la_LINK = $(CXXLINK) $(libgcobol_la_LDFLAGS)
  version_arg = -version-info $(LIBGCOBOL_VERSION)
  libgcobol_la_LDFLAGS = $(LTLDFLAGS) $(LIBQUADLIB) $(LTLIBICONV) \
! 	$(extra_ldflags_libgcobol) $(LIBS) $(version_arg)
  libgcobol_la_DEPENDENCIES = libgcobol.spec $(LIBQUADLIB_DEP)
  
  endif BUILD_LIBGCOBOL
diff -Nrcpad gcc-16-20251109/libgcobol/Makefile.in gcc-16-20251116/libgcobol/Makefile.in
*** gcc-16-20251109/libgcobol/Makefile.in	Sun Nov  9 22:34:16 2025
--- gcc-16-20251116/libgcobol/Makefile.in	Sun Nov 16 22:34:49 2025
***************
*** 36,41 ****
--- 36,42 ----
  # Written de novo for libgcobol.
  
  
+ 
  VPATH = @srcdir@
  am__is_gnu_make = { \
    if test -z '$(MAKELEVEL)'; then \
*************** am__aclocal_m4_deps = $(top_srcdir)/../c
*** 140,146 ****
  am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
  	$(ACLOCAL_M4)
  DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
! 	$(am__configure_deps)
  am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
   configure.lineno config.status.lineno
  mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs
--- 141,147 ----
  am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
  	$(ACLOCAL_M4)
  DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
! 	$(am__configure_deps) $(am__nobase_libsubinclude_HEADERS_DIST)
  am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
   configure.lineno config.status.lineno
  mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs
*************** am__uninstall_files_from_dir = { \
*** 175,189 ****
           $(am__cd) "$$dir" && rm -f $$files; }; \
    }
  am__installdirs = "$(DESTDIR)$(toolexeclibdir)" \
! 	"$(DESTDIR)$(toolexeclibdir)"
  LTLIBRARIES = $(toolexeclib_LTLIBRARIES)
  am__dirstamp = $(am__leading_dot)dirstamp
  @BUILD_LIBGCOBOL_TRUE@am_libgcobol_la_OBJECTS = charmaps.lo \
  @BUILD_LIBGCOBOL_TRUE@	constants.lo gfileio.lo gmath.lo \
  @BUILD_LIBGCOBOL_TRUE@	intrinsic.lo io.lo libgcobol.lo \
! @BUILD_LIBGCOBOL_TRUE@	posix/errno.lo posix/localtime.lo \
! @BUILD_LIBGCOBOL_TRUE@	posix/stat.lo stringbin.lo valconv.lo \
! @BUILD_LIBGCOBOL_TRUE@	xmlparse.lo
  libgcobol_la_OBJECTS = $(am_libgcobol_la_OBJECTS)
  @BUILD_LIBGCOBOL_TRUE@am_libgcobol_la_rpath = -rpath $(toolexeclibdir)
  AM_V_P = $(am__v_P_@AM_V@)
--- 176,191 ----
           $(am__cd) "$$dir" && rm -f $$files; }; \
    }
  am__installdirs = "$(DESTDIR)$(toolexeclibdir)" \
! 	"$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(libsubincludedir)"
  LTLIBRARIES = $(toolexeclib_LTLIBRARIES)
  am__dirstamp = $(am__leading_dot)dirstamp
  @BUILD_LIBGCOBOL_TRUE@am_libgcobol_la_OBJECTS = charmaps.lo \
  @BUILD_LIBGCOBOL_TRUE@	constants.lo gfileio.lo gmath.lo \
  @BUILD_LIBGCOBOL_TRUE@	intrinsic.lo io.lo libgcobol.lo \
! @BUILD_LIBGCOBOL_TRUE@	posix/shim/errno.lo \
! @BUILD_LIBGCOBOL_TRUE@	posix/shim/localtime.lo \
! @BUILD_LIBGCOBOL_TRUE@	posix/shim/stat.lo stringbin.lo \
! @BUILD_LIBGCOBOL_TRUE@	valconv.lo xmlparse.lo
  libgcobol_la_OBJECTS = $(am_libgcobol_la_OBJECTS)
  @BUILD_LIBGCOBOL_TRUE@am_libgcobol_la_rpath = -rpath $(toolexeclibdir)
  AM_V_P = $(am__v_P_@AM_V@)
*************** am__can_run_installinfo = \
*** 231,236 ****
--- 233,247 ----
      *) (install-info --version) >/dev/null 2>&1;; \
    esac
  DATA = $(toolexeclib_DATA)
+ am__nobase_libsubinclude_HEADERS_DIST = posix/cpy/posix-errno.cbl \
+ 	posix/cpy/statbuf.cpy posix/udf/posix-exit.cbl \
+ 	posix/udf/posix-localtime.cbl posix/udf/posix-mkdir.cbl \
+ 	posix/udf/posix-stat.cbl posix/udf/posix-unlink.cbl \
+ 	compat/lib/gnu/CBL_CHECK_FILE_EXIST.cbl \
+ 	compat/lib/gnu/CBL_ALLOC_MEM.cbl \
+ 	compat/lib/gnu/CBL_DELETE_FILE.cbl \
+ 	compat/lib/gnu/CBL_FREE_MEM.cbl
+ HEADERS = $(nobase_libsubinclude_HEADERS)
  am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
  	$(LISP)config.h.in
  # Read a list of newline-separated strings from the standard input,
*************** gcc_version := $(shell @get_gcc_base_ver
*** 402,407 ****
--- 413,419 ----
  # Skip the whole process if we are not building libgcobol.
  @BUILD_LIBGCOBOL_TRUE@toolexeclib_LTLIBRARIES = libgcobol.la
  @BUILD_LIBGCOBOL_TRUE@toolexeclib_DATA = libgcobol.spec
+ @BUILD_LIBGCOBOL_TRUE@libsubincludedir = $(libdir)/gcc/cobol/$(target_noncanonical)/$(gcc_version)
  @BUILD_LIBGCOBOL_TRUE@libgcobol_la_SOURCES = \
  @BUILD_LIBGCOBOL_TRUE@	charmaps.cc				\
  @BUILD_LIBGCOBOL_TRUE@	constants.cc				\
*************** gcc_version := $(shell @get_gcc_base_ver
*** 410,425 ****
  @BUILD_LIBGCOBOL_TRUE@	intrinsic.cc				\
  @BUILD_LIBGCOBOL_TRUE@	io.cc					\
  @BUILD_LIBGCOBOL_TRUE@	libgcobol.cc				\
! @BUILD_LIBGCOBOL_TRUE@	posix/errno.cc				\
! @BUILD_LIBGCOBOL_TRUE@	posix/localtime.cc			\
! @BUILD_LIBGCOBOL_TRUE@	posix/stat.cc				\
  @BUILD_LIBGCOBOL_TRUE@	stringbin.cc				\
  @BUILD_LIBGCOBOL_TRUE@	valconv.cc				\
  @BUILD_LIBGCOBOL_TRUE@	xmlparse.cc
  
  @BUILD_LIBGCOBOL_TRUE@libgcobol_la_LIBADD = -lxml2
  @BUILD_LIBGCOBOL_TRUE@WARN_CFLAGS = -W -Wall -Wwrite-strings
! @BUILD_LIBGCOBOL_TRUE@AM_CPPFLAGS = -I. -I$(srcdir) -I$(srcdir)/posix \
  @BUILD_LIBGCOBOL_TRUE@	$(LIBQUADINCLUDE) -I \
  @BUILD_LIBGCOBOL_TRUE@	/usr/include/libxml2
  @BUILD_LIBGCOBOL_TRUE@AM_CFLAGS = $(XCFLAGS)
--- 422,450 ----
  @BUILD_LIBGCOBOL_TRUE@	intrinsic.cc				\
  @BUILD_LIBGCOBOL_TRUE@	io.cc					\
  @BUILD_LIBGCOBOL_TRUE@	libgcobol.cc				\
! @BUILD_LIBGCOBOL_TRUE@	posix/shim/errno.cc			\
! @BUILD_LIBGCOBOL_TRUE@	posix/shim/localtime.cc			\
! @BUILD_LIBGCOBOL_TRUE@	posix/shim/stat.cc			\
  @BUILD_LIBGCOBOL_TRUE@	stringbin.cc				\
  @BUILD_LIBGCOBOL_TRUE@	valconv.cc				\
  @BUILD_LIBGCOBOL_TRUE@	xmlparse.cc
  
  @BUILD_LIBGCOBOL_TRUE@libgcobol_la_LIBADD = -lxml2
+ @BUILD_LIBGCOBOL_TRUE@nobase_libsubinclude_HEADERS = \
+ @BUILD_LIBGCOBOL_TRUE@	posix/cpy/posix-errno.cbl		\
+ @BUILD_LIBGCOBOL_TRUE@	posix/cpy/statbuf.cpy			\
+ @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-exit.cbl		\
+ @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-localtime.cbl		\
+ @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-mkdir.cbl		\
+ @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-stat.cbl		\
+ @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-unlink.cbl		\
+ @BUILD_LIBGCOBOL_TRUE@	compat/lib/gnu/CBL_CHECK_FILE_EXIST.cbl	\
+ @BUILD_LIBGCOBOL_TRUE@	compat/lib/gnu/CBL_ALLOC_MEM.cbl	\
+ @BUILD_LIBGCOBOL_TRUE@	compat/lib/gnu/CBL_DELETE_FILE.cbl	\
+ @BUILD_LIBGCOBOL_TRUE@	compat/lib/gnu/CBL_FREE_MEM.cbl
+ 
  @BUILD_LIBGCOBOL_TRUE@WARN_CFLAGS = -W -Wall -Wwrite-strings
! @BUILD_LIBGCOBOL_TRUE@AM_CPPFLAGS = -I. -I posix/shim \
  @BUILD_LIBGCOBOL_TRUE@	$(LIBQUADINCLUDE) -I \
  @BUILD_LIBGCOBOL_TRUE@	/usr/include/libxml2
  @BUILD_LIBGCOBOL_TRUE@AM_CFLAGS = $(XCFLAGS)
*************** gcc_version := $(shell @get_gcc_base_ver
*** 430,436 ****
  @BUILD_LIBGCOBOL_TRUE@libgcobol_la_LINK = $(CXXLINK) $(libgcobol_la_LDFLAGS)
  @BUILD_LIBGCOBOL_TRUE@version_arg = -version-info $(LIBGCOBOL_VERSION)
  @BUILD_LIBGCOBOL_TRUE@libgcobol_la_LDFLAGS = $(LTLDFLAGS) $(LIBQUADLIB) $(LTLIBICONV) \
! @BUILD_LIBGCOBOL_TRUE@	$(extra_ldflags_libgcobol) $(LIBS) -lxml2 $(version_arg)
  
  @BUILD_LIBGCOBOL_TRUE@libgcobol_la_DEPENDENCIES = libgcobol.spec $(LIBQUADLIB_DEP)
  all: config.h
--- 455,461 ----
  @BUILD_LIBGCOBOL_TRUE@libgcobol_la_LINK = $(CXXLINK) $(libgcobol_la_LDFLAGS)
  @BUILD_LIBGCOBOL_TRUE@version_arg = -version-info $(LIBGCOBOL_VERSION)
  @BUILD_LIBGCOBOL_TRUE@libgcobol_la_LDFLAGS = $(LTLDFLAGS) $(LIBQUADLIB) $(LTLIBICONV) \
! @BUILD_LIBGCOBOL_TRUE@	$(extra_ldflags_libgcobol) $(LIBS) $(version_arg)
  
  @BUILD_LIBGCOBOL_TRUE@libgcobol_la_DEPENDENCIES = libgcobol.spec $(LIBQUADLIB_DEP)
  all: config.h
*************** clean-toolexeclibLTLIBRARIES:
*** 523,546 ****
  	  echo rm -f $${locs}; \
  	  rm -f $${locs}; \
  	}
! posix/$(am__dirstamp):
! 	@$(MKDIR_P) posix
! 	@: > posix/$(am__dirstamp)
! posix/$(DEPDIR)/$(am__dirstamp):
! 	@$(MKDIR_P) posix/$(DEPDIR)
! 	@: > posix/$(DEPDIR)/$(am__dirstamp)
! posix/errno.lo: posix/$(am__dirstamp) posix/$(DEPDIR)/$(am__dirstamp)
! posix/localtime.lo: posix/$(am__dirstamp) \
! 	posix/$(DEPDIR)/$(am__dirstamp)
! posix/stat.lo: posix/$(am__dirstamp) posix/$(DEPDIR)/$(am__dirstamp)
  
  libgcobol.la: $(libgcobol_la_OBJECTS) $(libgcobol_la_DEPENDENCIES) $(EXTRA_libgcobol_la_DEPENDENCIES) 
  	$(AM_V_GEN)$(libgcobol_la_LINK) $(am_libgcobol_la_rpath) $(libgcobol_la_OBJECTS) $(libgcobol_la_LIBADD) $(LIBS)
  
  mostlyclean-compile:
  	-rm -f *.$(OBJEXT)
! 	-rm -f posix/*.$(OBJEXT)
! 	-rm -f posix/*.lo
  
  distclean-compile:
  	-rm -f *.tab.c
--- 548,573 ----
  	  echo rm -f $${locs}; \
  	  rm -f $${locs}; \
  	}
! posix/shim/$(am__dirstamp):
! 	@$(MKDIR_P) posix/shim
! 	@: > posix/shim/$(am__dirstamp)
! posix/shim/$(DEPDIR)/$(am__dirstamp):
! 	@$(MKDIR_P) posix/shim/$(DEPDIR)
! 	@: > posix/shim/$(DEPDIR)/$(am__dirstamp)
! posix/shim/errno.lo: posix/shim/$(am__dirstamp) \
! 	posix/shim/$(DEPDIR)/$(am__dirstamp)
! posix/shim/localtime.lo: posix/shim/$(am__dirstamp) \
! 	posix/shim/$(DEPDIR)/$(am__dirstamp)
! posix/shim/stat.lo: posix/shim/$(am__dirstamp) \
! 	posix/shim/$(DEPDIR)/$(am__dirstamp)
  
  libgcobol.la: $(libgcobol_la_OBJECTS) $(libgcobol_la_DEPENDENCIES) $(EXTRA_libgcobol_la_DEPENDENCIES) 
  	$(AM_V_GEN)$(libgcobol_la_LINK) $(am_libgcobol_la_rpath) $(libgcobol_la_OBJECTS) $(libgcobol_la_LIBADD) $(LIBS)
  
  mostlyclean-compile:
  	-rm -f *.$(OBJEXT)
! 	-rm -f posix/shim/*.$(OBJEXT)
! 	-rm -f posix/shim/*.lo
  
  distclean-compile:
  	-rm -f *.tab.c
*************** distclean-compile:
*** 555,563 ****
  @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stringbin.Plo@am__quote@
  @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/valconv.Plo@am__quote@
  @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlparse.Plo@am__quote@
! @AMDEP_TRUE@@am__include@ @am__quote@posix/$(DEPDIR)/errno.Plo@am__quote@
! @AMDEP_TRUE@@am__include@ @am__quote@posix/$(DEPDIR)/localtime.Plo@am__quote@
! @AMDEP_TRUE@@am__include@ @am__quote@posix/$(DEPDIR)/stat.Plo@am__quote@
  
  .cc.o:
  @am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
--- 582,590 ----
  @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stringbin.Plo@am__quote@
  @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/valconv.Plo@am__quote@
  @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlparse.Plo@am__quote@
! @AMDEP_TRUE@@am__include@ @am__quote@posix/shim/$(DEPDIR)/errno.Plo@am__quote@
! @AMDEP_TRUE@@am__include@ @am__quote@posix/shim/$(DEPDIR)/localtime.Plo@am__quote@
! @AMDEP_TRUE@@am__include@ @am__quote@posix/shim/$(DEPDIR)/stat.Plo@am__quote@
  
  .cc.o:
  @am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
*************** mostlyclean-libtool:
*** 588,594 ****
  
  clean-libtool:
  	-rm -rf .libs _libs
! 	-rm -rf posix/.libs posix/_libs
  
  distclean-libtool:
  	-rm -f libtool config.lt
--- 615,621 ----
  
  clean-libtool:
  	-rm -rf .libs _libs
! 	-rm -rf posix/shim/.libs posix/shim/_libs
  
  distclean-libtool:
  	-rm -f libtool config.lt
*************** uninstall-toolexeclibDATA:
*** 613,618 ****
--- 640,669 ----
  	@list='$(toolexeclib_DATA)'; test -n "$(toolexeclibdir)" || list=; \
  	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
  	dir='$(DESTDIR)$(toolexeclibdir)'; $(am__uninstall_files_from_dir)
+ install-nobase_libsubincludeHEADERS: $(nobase_libsubinclude_HEADERS)
+ 	@$(NORMAL_INSTALL)
+ 	@list='$(nobase_libsubinclude_HEADERS)'; test -n "$(libsubincludedir)" || list=; \
+ 	if test -n "$$list"; then \
+ 	  echo " $(MKDIR_P) '$(DESTDIR)$(libsubincludedir)'"; \
+ 	  $(MKDIR_P) "$(DESTDIR)$(libsubincludedir)" || exit 1; \
+ 	fi; \
+ 	$(am__nobase_list) | while read dir files; do \
+ 	  xfiles=; for file in $$files; do \
+ 	    if test -f "$$file"; then xfiles="$$xfiles $$file"; \
+ 	    else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \
+ 	  test -z "$$xfiles" || { \
+ 	    test "x$$dir" = x. || { \
+ 	      echo " $(MKDIR_P) '$(DESTDIR)$(libsubincludedir)/$$dir'"; \
+ 	      $(MKDIR_P) "$(DESTDIR)$(libsubincludedir)/$$dir"; }; \
+ 	    echo " $(INSTALL_HEADER) $$xfiles '$(DESTDIR)$(libsubincludedir)/$$dir'"; \
+ 	    $(INSTALL_HEADER) $$xfiles "$(DESTDIR)$(libsubincludedir)/$$dir" || exit $$?; }; \
+ 	done
+ 
+ uninstall-nobase_libsubincludeHEADERS:
+ 	@$(NORMAL_UNINSTALL)
+ 	@list='$(nobase_libsubinclude_HEADERS)'; test -n "$(libsubincludedir)" || list=; \
+ 	$(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \
+ 	dir='$(DESTDIR)$(libsubincludedir)'; $(am__uninstall_files_from_dir)
  
  ID: $(am__tagged_files)
  	$(am__define_uniq_tagged_files); mkid -fID $$unique
*************** distclean-tags:
*** 674,682 ****
  	-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
  check-am: all-am
  check: check-am
! all-am: Makefile $(LTLIBRARIES) $(DATA) config.h
  installdirs:
! 	for dir in "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(toolexeclibdir)"; do \
  	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
  	done
  install: install-am
--- 725,733 ----
  	-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
  check-am: all-am
  check: check-am
! all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS) config.h
  installdirs:
! 	for dir in "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(libsubincludedir)"; do \
  	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
  	done
  install: install-am
*************** clean-generic:
*** 705,712 ****
  distclean-generic:
  	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
  	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
! 	-rm -f posix/$(DEPDIR)/$(am__dirstamp)
! 	-rm -f posix/$(am__dirstamp)
  
  maintainer-clean-generic:
  	@echo "This command is intended for maintainers to use"
--- 756,763 ----
  distclean-generic:
  	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
  	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
! 	-rm -f posix/shim/$(DEPDIR)/$(am__dirstamp)
! 	-rm -f posix/shim/$(am__dirstamp)
  
  maintainer-clean-generic:
  	@echo "This command is intended for maintainers to use"
*************** clean-am: clean-generic clean-libtool cl
*** 718,724 ****
  
  distclean: distclean-am
  	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
! 	-rm -rf ./$(DEPDIR) posix/$(DEPDIR)
  	-rm -f Makefile
  distclean-am: clean-am distclean-compile distclean-generic \
  	distclean-hdr distclean-libtool distclean-tags
--- 769,775 ----
  
  distclean: distclean-am
  	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
! 	-rm -rf ./$(DEPDIR) posix/shim/$(DEPDIR)
  	-rm -f Makefile
  distclean-am: clean-am distclean-compile distclean-generic \
  	distclean-hdr distclean-libtool distclean-tags
*************** info: info-am
*** 735,741 ****
  
  info-am:
  
! install-data-am:
  
  install-dvi: install-dvi-am
  
--- 786,792 ----
  
  info-am:
  
! install-data-am: install-nobase_libsubincludeHEADERS
  
  install-dvi: install-dvi-am
  
*************** installcheck-am:
*** 767,773 ****
  maintainer-clean: maintainer-clean-am
  	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
  	-rm -rf $(top_srcdir)/autom4te.cache
! 	-rm -rf ./$(DEPDIR) posix/$(DEPDIR)
  	-rm -f Makefile
  maintainer-clean-am: distclean-am maintainer-clean-generic
  
--- 818,824 ----
  maintainer-clean: maintainer-clean-am
  	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
  	-rm -rf $(top_srcdir)/autom4te.cache
! 	-rm -rf ./$(DEPDIR) posix/shim/$(DEPDIR)
  	-rm -f Makefile
  maintainer-clean-am: distclean-am maintainer-clean-generic
  
*************** ps: ps-am
*** 784,791 ****
  
  ps-am:
  
! uninstall-am: uninstall-toolexeclibDATA \
! 	uninstall-toolexeclibLTLIBRARIES
  
  .MAKE: all install-am install-strip
  
--- 835,842 ----
  
  ps-am:
  
! uninstall-am: uninstall-nobase_libsubincludeHEADERS \
! 	uninstall-toolexeclibDATA uninstall-toolexeclibLTLIBRARIES
  
  .MAKE: all install-am install-strip
  
*************** uninstall-am: uninstall-toolexeclibDATA
*** 797,810 ****
  	html-am info info-am install install-am install-data \
  	install-data-am install-dvi install-dvi-am install-exec \
  	install-exec-am install-html install-html-am install-info \
! 	install-info-am install-man install-pdf install-pdf-am \
  	install-ps install-ps-am install-strip install-toolexeclibDATA \
  	install-toolexeclibLTLIBRARIES installcheck installcheck-am \
  	installdirs maintainer-clean maintainer-clean-generic \
  	mostlyclean mostlyclean-compile mostlyclean-generic \
  	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
! 	uninstall-am uninstall-toolexeclibDATA \
! 	uninstall-toolexeclibLTLIBRARIES
  
  .PRECIOUS: Makefile
  
--- 848,862 ----
  	html-am info info-am install install-am install-data \
  	install-data-am install-dvi install-dvi-am install-exec \
  	install-exec-am install-html install-html-am install-info \
! 	install-info-am install-man \
! 	install-nobase_libsubincludeHEADERS install-pdf install-pdf-am \
  	install-ps install-ps-am install-strip install-toolexeclibDATA \
  	install-toolexeclibLTLIBRARIES installcheck installcheck-am \
  	installdirs maintainer-clean maintainer-clean-generic \
  	mostlyclean mostlyclean-compile mostlyclean-generic \
  	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
! 	uninstall-am uninstall-nobase_libsubincludeHEADERS \
! 	uninstall-toolexeclibDATA uninstall-toolexeclibLTLIBRARIES
  
  .PRECIOUS: Makefile
  
diff -Nrcpad gcc-16-20251109/libgcobol/charmaps.cc gcc-16-20251116/libgcobol/charmaps.cc
*** gcc-16-20251109/libgcobol/charmaps.cc	Sun Nov  9 22:34:16 2025
--- gcc-16-20251116/libgcobol/charmaps.cc	Sun Nov 16 22:34:49 2025
*************** int __gg__decimal_separator    = ','  ;
*** 55,61 ****
  int __gg__quote_character      = '"'  ;
  int __gg__low_value_character  = 0x00 ;
  int __gg__high_value_character = 0xFF ;
! char **__gg__currency_signs           ;
  int __gg__default_currency_sign;
  char *__gg__ct_currency_signs[256];  // Compile-time currency signs
  
--- 55,61 ----
  int __gg__quote_character      = '"'  ;
  int __gg__low_value_character  = 0x00 ;
  int __gg__high_value_character = 0xFF ;
! std::vector<std::string> __gg__currency_signs(256) ;
  int __gg__default_currency_sign;
  char *__gg__ct_currency_signs[256];  // Compile-time currency signs
  
diff -Nrcpad gcc-16-20251109/libgcobol/charmaps.h gcc-16-20251116/libgcobol/charmaps.h
*** gcc-16-20251109/libgcobol/charmaps.h	Sun Nov  9 22:34:16 2025
--- gcc-16-20251116/libgcobol/charmaps.h	Sun Nov 16 22:34:49 2025
***************
*** 31,36 ****
--- 31,39 ----
  #ifndef CHARMAPS_H
  #define CHARMAPS_H
  
+ #include <string>
+ #include <vector>
+ 
  #include <unistd.h>
  
  /*  There are four distinct codeset domains in the COBOL compiler.
*************** extern int    __gg__decimal_separator
*** 108,118 ****
  extern int    __gg__quote_character      ;
  extern int    __gg__low_value_character  ;
  extern int    __gg__high_value_character ;
! extern char **__gg__currency_signs       ;
  extern int    __gg__default_currency_sign;
  extern cbl_encoding_t __gg__display_encoding ;
  extern cbl_encoding_t __gg__national_encoding ;
- extern char  *__gg__ct_currency_signs[256];  // Compile-time currency signs
  
  #define NULLCH ('\0')
  #define DEGENERATE_HIGH_VALUE 0xFF
--- 111,120 ----
  extern int    __gg__quote_character      ;
  extern int    __gg__low_value_character  ;
  extern int    __gg__high_value_character ;
! extern std::vector<std::string> __gg__currency_signs       ;
  extern int    __gg__default_currency_sign;
  extern cbl_encoding_t __gg__display_encoding ;
  extern cbl_encoding_t __gg__national_encoding ;
  
  #define NULLCH ('\0')
  #define DEGENERATE_HIGH_VALUE 0xFF
*************** class charmap_t
*** 492,495 ****
  
  charmap_t *__gg__get_charmap(cbl_encoding_t encoding);
  
! #endif
\ No newline at end of file
--- 494,497 ----
  
  charmap_t *__gg__get_charmap(cbl_encoding_t encoding);
  
! #endif
diff -Nrcpad gcc-16-20251109/libgcobol/compat/README.md gcc-16-20251116/libgcobol/compat/README.md
*** gcc-16-20251109/libgcobol/compat/README.md	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgcobol/compat/README.md	Sun Nov 16 22:34:49 2025
***************
*** 0 ****
--- 1,25 ----
+ # GCC COBOL Compatibility Functions
+ 
+ ## Purpose
+ 
+ It seems every COBOL compiler includes a library of functions intended
+ to make the COBOL programer's life easier.  All of them, as we
+ demonstrate here, can be written in COBOL.  They are supplied in COBOL
+ form, not as a library. The user is free to compile them into a
+ utility library.
+ 
+ Some of the functions defined here require runtime support from libgcobol. 
+ 
+ ## Fri Oct 10 16:01:58 2025
+ 
+ At the time of this writing, the functions of greatest concern are
+ those that are defined by Rocket Software (formerly MicroFocus) and
+ emulated by GnuCOBOL. Those are implemented in
+ `gcc/cobol/compat/lib/gnu`.  Any calls they would otherwise make to
+ the C library are effected through COBOL POSIX bindings supplied by
+ `gcc/cobol/posix/udf`.
+ 
+ As an aid to the developer, a simple example of how these functions
+ are used is found in `gcc/cobol/compat/t/smoke.cbl`. It may by
+ compiled using `gcc/cobol/compat/Makefile`.
+ 
diff -Nrcpad gcc-16-20251109/libgcobol/compat/lib/gnu/CBL_ALLOC_MEM.cbl gcc-16-20251116/libgcobol/compat/lib/gnu/CBL_ALLOC_MEM.cbl
*** gcc-16-20251109/libgcobol/compat/lib/gnu/CBL_ALLOC_MEM.cbl	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgcobol/compat/lib/gnu/CBL_ALLOC_MEM.cbl	Sun Nov 16 22:34:49 2025
***************
*** 0 ****
--- 1,41 ----
+        >>PUSH SOURCE FORMAT
+        >>SOURCE FIXED
+ 
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+       * MODIFY AFTER SUCCESSFUL TESTING / IMPLEMENTATION (VPH)
+       *  This function is in the public domain.
+       *  Contributed by James K. Lowden
+       * 
+       * CALL "CBL_ALLOC_MEM" using     mem-pointer
+       *                      by value  mem-size
+       *                      by value  flags
+       *                      returning status-code
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *   
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. CBL_ALLOC_MEM. 
+ 
+        DATA DIVISION.
+ 
+        LINKAGE SECTION.
+        01  MEMORY-REQUESTED		PIC X(8) COMP-5.
+        01  MEMORY-ALLOCATED		USAGE IS POINTER.
+        01  FLAGS                	PIC X(8) COMP-5.
+        77  STATUS-CODE                  BINARY-LONG SIGNED VALUE 0.
+ 
+        PROCEDURE DIVISION USING     MEMORY-ALLOCATED,
+                           BY VALUE  MEMORY-REQUESTED, 
+                           BY VALUE  FLAGS
+                           RETURNING STATUS-CODE.
+ 
+       D     Display 'MEMORY-REQUESTED: ' MEMORY-REQUESTED
+       D            ' CHARACTERS INITIALIZED'
+ 
+            ALLOCATE MEMORY-REQUESTED CHARACTERS INITIALIZED,
+                     RETURNING MEMORY-ALLOCATED.
+ 
+       D    IF MEMORY-ALLOCATED = NULLS THEN MOVE 1 TO STATUS-CODE.
+ 
+            END PROGRAM CBL_ALLOC_MEM.
+ 
+         >> POP SOURCE FORMAT
\ No newline at end of file
diff -Nrcpad gcc-16-20251109/libgcobol/compat/lib/gnu/CBL_CHECK_FILE_EXIST.cbl gcc-16-20251116/libgcobol/compat/lib/gnu/CBL_CHECK_FILE_EXIST.cbl
*** gcc-16-20251109/libgcobol/compat/lib/gnu/CBL_CHECK_FILE_EXIST.cbl	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgcobol/compat/lib/gnu/CBL_CHECK_FILE_EXIST.cbl	Sun Nov 16 22:34:49 2025
***************
*** 0 ****
--- 1,47 ----
+        >>PUSH SOURCE FORMAT
+        >>SOURCE FIXED
+       * Include the posix-stat function
+         COPY posix-stat.
+ 
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+       * MODIFY AFTER SUCCESSFUL TESTING / IMPLEMENTATION (VPH)
+       *  This function is in the public domain.
+       *  Contributed by James K. Lowden of Cobolworx in August 2024
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *   
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. CBL_CHECK_FILE_EXIST.
+        DATA DIVISION.
+        WORKING-STORAGE SECTION.
+        77  FUNC-RETURN-VALUE		PIC 9(8) COMP-5.
+        01  STAT-BUFFER.
+            COPY statbuf.
+        LINKAGE SECTION.
+        77  RETURN-CODE			PIC 9(8) COMP-5.
+        01  FILE-PATH 			PIC X ANY LENGTH.
+        01  FI-FILE-INFO.
+            05  FI-FILE-SIZE-IN-BYTES	PIC 9(8) COMP-4.
+            05  FI-FILE-MOD-DATE-TIME.
+                10  FI-FILE-DATE		PIC 9(8) COMP-4.
+                10  FI-FILE-TIME		PIC 9(8) COMP-4.
+ 
+        PROCEDURE DIVISION USING FILE-PATH, FI-FILE-INFO,
+                           RETURNING RETURN-CODE.
+            MOVE FUNCTION posix-stat(FILE-PATH, STAT-BUFFER)
+              TO FUNC-RETURN-VALUE.
+              
+            IF FUNC-RETURN-VALUE = ZERO
+            THEN
+                MOVE ZERO TO RETURN-CODE
+                MOVE st_size  TO FI-FILE-SIZE-IN-BYTES
+                MOVE st_mtime TO FI-FILE-MOD-DATE-TIME
+            ELSE
+                MOVE 1 TO RETURN-CODE
+                MOVE ZERO TO FI-FILE-SIZE-IN-BYTES
+                MOVE ZERO TO FI-FILE-DATE
+                MOVE ZERO TO FI-FILE-TIME.
+ 
+            END PROGRAM CBL_CHECK_FILE_EXIST.
+ 
+         >> POP SOURCE FORMAT
+ `
\ No newline at end of file
diff -Nrcpad gcc-16-20251109/libgcobol/compat/lib/gnu/CBL_DELETE_FILE.cbl gcc-16-20251116/libgcobol/compat/lib/gnu/CBL_DELETE_FILE.cbl
*** gcc-16-20251109/libgcobol/compat/lib/gnu/CBL_DELETE_FILE.cbl	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgcobol/compat/lib/gnu/CBL_DELETE_FILE.cbl	Sun Nov 16 22:34:49 2025
***************
*** 0 ****
--- 1,30 ----
+        >>PUSH SOURCE FORMAT
+        >>SOURCE FIXED
+       * Include the posix-unlink function
+         COPY posix-unlink.
+ 
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+       * MODIFY AFTER SUCCESSFUL TESTING / IMPLEMENTATION (VPH)
+       *  This function is in the public domain.
+       *  Contributed by 
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *   
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. CBL_DELETE_FILE.
+        DATA DIVISION.
+        WORKING-STORAGE SECTION.
+           77 BUFSIZE USAGE BINARY-LONG.
+        LINKAGE SECTION.
+        77  RETURN-CODE			PIC 9(8) COMP-5.
+        01  FILE-PATH			PIC X ANY LENGTH.
+ 
+        PROCEDURE DIVISION USING FILE-PATH, RETURNING RETURN-CODE.
+ 
+            INSPECT FILE-PATH 
+                    REPLACING TRAILING SPACE BY LOW-VALUE
+ 
+            MOVE FUNCTION posix-unlink(FILE-PATH) TO RETURN-CODE.
+ 
+            END PROGRAM CBL_DELETE_FILE.
+ 
+         >> POP SOURCE FORMAT
\ No newline at end of file
diff -Nrcpad gcc-16-20251109/libgcobol/compat/lib/gnu/CBL_FREE_MEM.cbl gcc-16-20251116/libgcobol/compat/lib/gnu/CBL_FREE_MEM.cbl
*** gcc-16-20251109/libgcobol/compat/lib/gnu/CBL_FREE_MEM.cbl	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgcobol/compat/lib/gnu/CBL_FREE_MEM.cbl	Sun Nov 16 22:34:49 2025
***************
*** 0 ****
--- 1,26 ----
+        >>PUSH SOURCE FORMAT
+        >>SOURCE FIXED
+ 
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+       * MODIFY AFTER SUCCESSFUL TESTING / IMPLEMENTATION (VPH)
+       *  This function is in the public domain.
+       *  Contributed by 
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *   
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. CBL_FREE_MEM.
+ 
+        DATA DIVISION.
+        LINKAGE SECTION.
+        77  RETURN-CODE			PIC 9(8) COMP.
+        01  MEMORY-ADDRESS		USAGE IS POINTER.
+ 
+        PROCEDURE DIVISION USING MEMORY-ADDRESS, 
+                       RETURNING RETURN-CODE.
+ 
+            FREE MEMORY-ADDRESS.
+            MOVE ZERO TO RETURN-CODE.
+ 
+            END PROGRAM CBL_FREE_MEM.
+ 
+         >> POP SOURCE FORMAT
\ No newline at end of file
diff -Nrcpad gcc-16-20251109/libgcobol/compat/t/Makefile gcc-16-20251116/libgcobol/compat/t/Makefile
*** gcc-16-20251109/libgcobol/compat/t/Makefile	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgcobol/compat/t/Makefile	Sun Nov 16 22:34:49 2025
***************
*** 0 ****
--- 1,27 ----
+ #
+ # A simple Makefile to demonstrate how the compat/lib programs are used.  
+ #
+ 
+ COBC = gcobol -g -O0
+ 
+ INCLUDE = ../../posix/cpy  ../../posix/udf 
+ 
+ FLAGS = -dialect mf $(addprefix -I,$(INCLUDE))
+ 
+ COMPAT = $(subst .cbl,.o,$(wildcard ../lib/gnu/*.cbl))
+ 
+ test: smoke 
+ 	./$^
+ 
+ smoke: smoke.cbl $(COMPAT)
+ 	$(ENV) $(COBC) -o $@ \
+ 		$(FLAGS) $(COBCFLAGS) $(LDFLAGS) $^
+ 
+ %.o : %.cbl
+ 	$(ENV) $(COBC) -c -o $@ $(FLAGS) $(COBCFLAGS) $^
+ 
+ % : %.cbl
+ 	$(ENV) $(COBC) -o $@ $(FLAGS) $(COBCFLAGS) $(LDFLAGS) $^
+ 
+ 
+ 
diff -Nrcpad gcc-16-20251109/libgcobol/compat/t/smoke.cbl gcc-16-20251116/libgcobol/compat/t/smoke.cbl
*** gcc-16-20251109/libgcobol/compat/t/smoke.cbl	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgcobol/compat/t/smoke.cbl	Sun Nov 16 22:34:49 2025
***************
*** 0 ****
--- 1,95 ----
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+       *  This function is in the public domain.
+       *  Contributed by James K. Lowden of Cobolworx in October 2025
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *   
+         COPY posix-errno.
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. gcobol-smoke-test.
+ 
+        ENVIRONMENT DIVISION.
+        CONFIGURATION SECTION.
+        SOURCE-COMPUTER.
+            GNU-Linux.
+        OBJECT-COMPUTER.
+            GNU-Linux.
+ 
+        >>Define FILENAME as "/tmp/smoke.empty"
+ 
+        INPUT-OUTPUT SECTION.
+        FILE-CONTROL.
+            SELECT EXPENDABLE
+                   ACCESS MODE IS SEQUENTIAL
+                   SEQUENTIAL
+                   ASSIGN TO FILENAME.
+ 
+        DATA DIVISION.
+        FILE SECTION.
+       * FD not required per ISO but fails under gcobol. 
+         FD EXPENDABLE.
+           01 Extraneous PIC X.
+         
+        WORKING-STORAGE SECTION.
+         77 File-Name   PIC X(100) VALUE FILENAME.
+         77 status-code BINARY-LONG SIGNED.
+ 
+       * CBL_ALLOC_MEM
+         01 mem-pointer	usage pointer.
+         77 mem-size	pic x(8) comp-5 VALUE 64.
+         77 flags        pic x(8) comp-5 VALUE 0.
+ 
+       * CBL_CHECK_FILE_EXIST
+         01 file-info.
+           03 file-modification-day.
+             05 File-Size-In-Bytes  PIC 9(18)  COMP.
+             05 Mod-DD              PIC 9(2)   COMP. *> Modification Date
+             05 Mod-MO              PIC 9(2)   COMP.
+             05 Mod-YYYY            PIC 9(4)   COMP.
+           03 file-modification-time.
+             05 Mod-HH              PIC 9(2)   COMP. *> Modification Time
+             05 Mod-MM              PIC 9(2)   COMP.
+             05 Mod-SS              PIC 9(2)   COMP.
+             05 FILLER              PIC 9(2)   COMP. *> Always 00
+ 
+        PROCEDURE DIVISION.
+ 
+         Display 'Allocating ' mem-size ' bytes ... ' with No Advancing.
+         
+         Call "CBL_ALLOC_MEM" using
+                                mem-pointer
+                      by value  mem-size
+                      by value  flags
+                      returning status-code.
+ 
+         Display 'CBL_ALLOC_MEM        status: ' status-code.
+         
+         Display 'Checking on  ' Function Trim(File-Name) ' ...                 '
+                 with No Advancing.
+ 
+         Call "CBL_CHECK_FILE_EXIST"  using    File-Name
+                                      file-info
+                            returning status-code.
+ 
+         Display 'CBL_CHECK_FILE_EXIST status: ' status-code.
+ 
+         Display 'Deleting     ' Function Trim(File-Name) ' ...                 '
+                 with No Advancing.
+ 
+         Call "CBL_DELETE_FILE" using File-Name
+                      returning status-code.
+ 
+         Display 'CBL_DELETE_FILE      status: ' status-code.
+ 
+         Display 'Freeing ' mem-size ' bytes ...    ' with No Advancing.
+ 
+         Call "CBL_FREE_MEM" using by value mem-pointer
+                     returning      status-code.
+ 
+         Display 'CBL_FREE_MEM         status: ' status-code.
+ 
+         >>IF CBL_READ_FILE is defined
+         Call "CBL_READ_FILE" 
+          using handle, offset, count, flags, buf
+          returning status-code.
+         >>END-IF
+ 
diff -Nrcpad gcc-16-20251109/libgcobol/config.h.in gcc-16-20251116/libgcobol/config.h.in
*** gcc-16-20251109/libgcobol/config.h.in	Sun Nov  9 22:34:16 2025
--- gcc-16-20251116/libgcobol/config.h.in	Sun Nov 16 22:34:49 2025
***************
*** 55,60 ****
--- 55,63 ----
  /* Define to 1 if you have the `random_r' function. */
  #undef HAVE_RANDOM_R
  
+ /* Define to 1 if you have the `xmlParseChunk' function. */
+ #undef HAVE_SAX_XML_PARSER
+ 
  /* Define to 1 if you have the `setstate_r' function. */
  #undef HAVE_SETSTATE_R
  
diff -Nrcpad gcc-16-20251109/libgcobol/configure gcc-16-20251116/libgcobol/configure
*** gcc-16-20251109/libgcobol/configure	Sun Nov  9 22:34:16 2025
--- gcc-16-20251116/libgcobol/configure	Sun Nov 16 22:34:49 2025
*************** if test "$ac_res" != no; then :
*** 17650,17655 ****
--- 17650,17749 ----
  fi
  
  
+ # These are libxml2.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for xmlSAXUserParseMemory in -lxml2" >&5
+ $as_echo_n "checking for xmlSAXUserParseMemory in -lxml2... " >&6; }
+ if ${ac_cv_lib_xml2_xmlSAXUserParseMemory+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   ac_check_lib_save_LIBS=$LIBS
+ LIBS="-lxml2  $LIBS"
+ if test x$gcc_no_link = xyes; then
+   as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+ fi
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ 
+ /* Override any GCC internal prototype to avoid an error.
+    Use char because int might match the return type of a GCC
+    builtin and then its argument prototype would still apply.  */
+ #ifdef __cplusplus
+ extern "C"
+ #endif
+ char xmlSAXUserParseMemory ();
+ int
+ main ()
+ {
+ return xmlSAXUserParseMemory ();
+   ;
+   return 0;
+ }
+ _ACEOF
+ if ac_fn_cxx_try_link "$LINENO"; then :
+   ac_cv_lib_xml2_xmlSAXUserParseMemory=yes
+ else
+   ac_cv_lib_xml2_xmlSAXUserParseMemory=no
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+     conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_xml2_xmlSAXUserParseMemory" >&5
+ $as_echo "$ac_cv_lib_xml2_xmlSAXUserParseMemory" >&6; }
+ if test "x$ac_cv_lib_xml2_xmlSAXUserParseMemory" = xyes; then :
+   LIBS="-lxml2 $LIBS"
+ 
+ $as_echo "#define HAVE_SAX_XML_PARSER 1" >>confdefs.h
+ 
+ fi
+ 
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for xmlParseChunk in -lxml2" >&5
+ $as_echo_n "checking for xmlParseChunk in -lxml2... " >&6; }
+ if ${ac_cv_lib_xml2_xmlParseChunk+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   ac_check_lib_save_LIBS=$LIBS
+ LIBS="-lxml2  $LIBS"
+ if test x$gcc_no_link = xyes; then
+   as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+ fi
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ 
+ /* Override any GCC internal prototype to avoid an error.
+    Use char because int might match the return type of a GCC
+    builtin and then its argument prototype would still apply.  */
+ #ifdef __cplusplus
+ extern "C"
+ #endif
+ char xmlParseChunk ();
+ int
+ main ()
+ {
+ return xmlParseChunk ();
+   ;
+   return 0;
+ }
+ _ACEOF
+ if ac_fn_cxx_try_link "$LINENO"; then :
+   ac_cv_lib_xml2_xmlParseChunk=yes
+ else
+   ac_cv_lib_xml2_xmlParseChunk=no
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+     conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_xml2_xmlParseChunk" >&5
+ $as_echo "$ac_cv_lib_xml2_xmlParseChunk" >&6; }
+ if test "x$ac_cv_lib_xml2_xmlParseChunk" = xyes; then :
+   LIBS="-lxml2 $LIBS"
+ 
+ $as_echo "#define HAVE_SAX_XML_PARSER 1" >>confdefs.h
+ 
+ fi
+ 
+ 
  # Copied from gcc/configure.ac. 2025-06-05 R.J.Dubner
  # At least for glibc, clock_gettime is in librt.  But don't pull that
  # in if it still doesn't give us the function we want.
diff -Nrcpad gcc-16-20251109/libgcobol/configure.ac gcc-16-20251116/libgcobol/configure.ac
*** gcc-16-20251109/libgcobol/configure.ac	Sun Nov  9 22:34:16 2025
--- gcc-16-20251116/libgcobol/configure.ac	Sun Nov 16 22:34:49 2025
*************** AC_SEARCH_LIBS([sinf128], [c m], libgcob
*** 232,237 ****
--- 232,247 ----
  libgcobol_have_cacosf128=no
  AC_SEARCH_LIBS([cacosf128], [c m], libgcobol_have_cacosf128=yes)
  
+ # These are libxml2.
+ AC_CHECK_LIB(xml2, xmlSAXUserParseMemory,
+   [LIBS="-lxml2 $LIBS"
+    AC_DEFINE(HAVE_SAX_XML_PARSER, 1,
+ 	     [Define to 1 if you have the `xmlSAXUserParseMemory' function.])])
+ AC_CHECK_LIB(xml2, xmlParseChunk,
+   [LIBS="-lxml2 $LIBS"
+    AC_DEFINE(HAVE_SAX_XML_PARSER, 1,
+ 	     [Define to 1 if you have the `xmlParseChunk' function.])])
+ 
  # Copied from gcc/configure.ac. 2025-06-05 R.J.Dubner
  # At least for glibc, clock_gettime is in librt.  But don't pull that
  # in if it still doesn't give us the function we want.
diff -Nrcpad gcc-16-20251109/libgcobol/intrinsic.cc gcc-16-20251116/libgcobol/intrinsic.cc
*** gcc-16-20251109/libgcobol/intrinsic.cc	Sun Nov  9 22:34:16 2025
--- gcc-16-20251116/libgcobol/intrinsic.cc	Sun Nov 16 22:34:49 2025
*************** numval_c( cblc_field_t *dest,
*** 2714,2721 ****
  
    char *currency_in_ascii;
  
!   char *currency_start;
!   char *currency_end;
    if( crcy )
      {
      converted = __gg__iconverter(crcy->encoding,
--- 2714,2721 ----
  
    char *currency_in_ascii;
  
!   const char *currency_start;
!   const char *currency_end;
    if( crcy )
      {
      converted = __gg__iconverter(crcy->encoding,
*************** numval_c( cblc_field_t *dest,
*** 2736,2742 ****
    currency_start = currency_in_ascii;
    currency_end   = currency_start + strlen(currency_start);
  
!   char *pcurrency = currency_start;
    // Trim off spaces from the currency:
    while( *pcurrency == ascii_space && pcurrency < currency_end )
      {
--- 2736,2742 ----
    currency_start = currency_in_ascii;
    currency_end   = currency_start + strlen(currency_start);
  
!   const char *pcurrency = currency_start;
    // Trim off spaces from the currency:
    while( *pcurrency == ascii_space && pcurrency < currency_end )
      {
diff -Nrcpad gcc-16-20251109/libgcobol/libgcobol.cc gcc-16-20251116/libgcobol/libgcobol.cc
*** gcc-16-20251109/libgcobol/libgcobol.cc	Sun Nov  9 22:34:16 2025
--- gcc-16-20251116/libgcobol/libgcobol.cc	Sun Nov 16 22:34:49 2025
*************** struct program_state
*** 461,473 ****
    int rt_quote_character;
    int rt_low_value_character;
    int rt_high_value_character;
!   char *rt_currency_signs[256];
    const unsigned short *rt_collation;  // Points to a table of 256 values;
    cbl_encoding_t rt_display_encoding;
    cbl_encoding_t rt_national_encoding;
    char *rt_program_name;
  
!   program_state()
      {
      // IBM defaults to the \" QUOTE compiler option.  quote_character must
      // be set to \' when the APOST compiler option is in effect
--- 461,473 ----
    int rt_quote_character;
    int rt_low_value_character;
    int rt_high_value_character;
!   std::vector<std::string> rt_currency_signs;
    const unsigned short *rt_collation;  // Points to a table of 256 values;
    cbl_encoding_t rt_display_encoding;
    cbl_encoding_t rt_national_encoding;
    char *rt_program_name;
  
!   program_state() : rt_currency_signs(256)
      {
      // IBM defaults to the \" QUOTE compiler option.  quote_character must
      // be set to \' when the APOST compiler option is in effect
*************** struct program_state
*** 486,500 ****
  
      // Set all the currency_sign pointers to NULL:
  
-     memset(rt_currency_signs, 0, sizeof(rt_currency_signs));
- 
      rt_display_encoding  = __gg__display_encoding;
      rt_national_encoding = __gg__national_encoding;
      rt_collation = __gg__one_to_one_values;
      rt_program_name = NULL;
      }
  
!   program_state(const program_state &ps)
      {
      rt_decimal_point        = ps.rt_decimal_point         ;
      rt_decimal_separator    = ps.rt_decimal_separator     ;
--- 486,499 ----
  
      // Set all the currency_sign pointers to NULL:
  
      rt_display_encoding  = __gg__display_encoding;
      rt_national_encoding = __gg__national_encoding;
      rt_collation = __gg__one_to_one_values;
      rt_program_name = NULL;
      }
  
!     program_state(const program_state &ps)
!       : rt_currency_signs(ps.rt_currency_signs)
      {
      rt_decimal_point        = ps.rt_decimal_point         ;
      rt_decimal_separator    = ps.rt_decimal_separator     ;
*************** struct program_state
*** 507,538 ****
      rt_display_encoding     = ps.rt_display_encoding      ;
      rt_national_encoding    = ps.rt_national_encoding     ;
      rt_collation            = ps.rt_collation             ;
! 
!     for( int i=0; i<256; i++ )
!       {
!       if( ps.rt_currency_signs[i] )
!         {
!         rt_currency_signs[i] = strdup(ps.rt_currency_signs[i]);
!         }
!       else
!         {
!         rt_currency_signs[i] = NULL;
!         }
!       }
! 
!     rt_program_name                  = ps.rt_program_name                  ;
!     }
! 
!   ~program_state()
!     {
!     for(int symbol=0; symbol<256; symbol++)
!       {
!       if( rt_currency_signs[symbol] )
!         {
!         free(rt_currency_signs[symbol]);
!         rt_currency_signs[symbol] = NULL;
!         }
!       }
      }
    };
  
--- 506,512 ----
      rt_display_encoding     = ps.rt_display_encoding      ;
      rt_national_encoding    = ps.rt_national_encoding     ;
      rt_collation            = ps.rt_collation             ;
!     rt_program_name         = ps.rt_program_name          ;
      }
    };
  
*************** __gg__get_decimal_separator()
*** 584,593 ****
    }
  
  extern "C"
! char *
  __gg__get_default_currency_string()
    {
!   return currency_signs(__gg__default_currency_sign);
    }
  
  extern "C"
--- 558,567 ----
    }
  
  extern "C"
! const char *
  __gg__get_default_currency_string()
    {
!   return currency_signs(__gg__default_currency_sign).c_str();
    }
  
  extern "C"
*************** __gg__inspect_format_2(int backward, siz
*** 8132,8141 ****
    size_t        id1_s = __gg__treeplet_1s[cblc_index];
    cblc_index += 1;
  
    // normalize it, according to the language specification.
    normalized_operand normalized_id_1
                                     = normalize_id(id1, id1_o, id1_s, id1->encoding);
! 
    std::vector<comparand> comparands;
  
    // Pick up the count of operations:
--- 8106,8126 ----
    size_t        id1_s = __gg__treeplet_1s[cblc_index];
    cblc_index += 1;
  
+ #if 0
+   fprintf(stderr, "%s:%d: '%.*s' id1_o %zu, id1_s %zu\n", __func__, __LINE__, 
+           int(id1_s), (char*)id1->data, id1_o, id1_s);
+ #endif
+   
    // normalize it, according to the language specification.
    normalized_operand normalized_id_1
                                     = normalize_id(id1, id1_o, id1_s, id1->encoding);
! #if 0
!   fprintf(stderr, "%s:%d: normalized_id_1 '%s' offset %zu, length %zu\n", __func__, __LINE__, 
!           normalized_id_1.the_characters.c_str(),
!           normalized_id_1.offset, 
!           normalized_id_1.length );
! #endif
!   
    std::vector<comparand> comparands;
  
    // Pick up the count of operations:
diff -Nrcpad gcc-16-20251109/libgcobol/libgcobol.h gcc-16-20251116/libgcobol/libgcobol.h
*** gcc-16-20251109/libgcobol/libgcobol.h	Sun Nov  9 22:34:16 2025
--- gcc-16-20251116/libgcobol/libgcobol.h	Sun Nov 16 22:34:49 2025
*************** extern "C" void __gg__double_to_target(
*** 96,102 ****
                                          cbl_round_t rounded);
  extern "C" char __gg__get_decimal_separator();
  extern "C" char __gg__get_decimal_point();
! extern "C" char * __gg__get_default_currency_string();
  
  struct cbl_timespec
    {
--- 96,102 ----
                                          cbl_round_t rounded);
  extern "C" char __gg__get_decimal_separator();
  extern "C" char __gg__get_decimal_point();
! extern "C" const char * __gg__get_default_currency_string();
  
  struct cbl_timespec
    {
diff -Nrcpad gcc-16-20251109/libgcobol/posix/README.md gcc-16-20251116/libgcobol/posix/README.md
*** gcc-16-20251109/libgcobol/posix/README.md	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgcobol/posix/README.md	Sun Nov 16 22:34:49 2025
***************
*** 0 ****
--- 1,105 ----
+ # GCC COBOL Posix Functions and Adapter
+ 
+ ## Purpose
+ 
+ GCC COBOL provides COBOL bindings for some POSIX functions.  Feel free
+ to contribute more.  Insofar as possible, the functions take the same
+ parameters and return the same values as defined by POSIX.  Among
+ others, they are used by the COBOL compatibility library (see
+ libgcobol/compat/lib/gnu). They are installed in source form.  The
+ user may choose to compile them to a library.
+ 
+ ISO COBOL does not specify any relationship to any particular
+ operating system, and does not reference POSIX. The raw capability is
+ there, of course, via the `CALL` statement.  But that's not very
+ convenient, and offers no parameter validation.
+ 
+ For simple functions, e.g. **unlink**(2), the UDFs simply call the
+ underlying C library.  More complex functions, though,
+ e.g. **stat**(2), pass or return a buffer.  That buffer is normally
+ defined by what members must exist, but its exact layout is left up to
+ the C implementation and defined by the C header files, which are not
+ parsed by GCC COBOL. Consequently we do not know, at the COBOL level,
+ how to define the `struct stat` buffer required by **stat**(2).  For
+ such functions, we use a C "shim" function that accepts a buffer
+ defined by GCC COBOL.  That buffer has the members defined by POSIX
+ and a layout defined by GCC COBOL.  The COBOL application calls the
+ COBOL POSIX binding, which uses the shim function to call the C
+ library.  
+ 
+ To take **stat**(2) as an example, 
+ 
+     COBOL program uses 
+         COPY posix-stat.
+       01 stat-buf.
+         COPY posix-statbuf. *> gcc/cobol/posix/cpy
+       FUNCTION POSIX-STAT(filename, stat-buf)
+     libgcobol/posix/udf/posix-stat.cbl 
+         passes stat-buf to 
+         posix_stat in libgcobol
+     posix_stat calls stat(2), 
+         and copies the returned values to its input buffer
+ 
+ ## Contents
+ 
+ The installed POSIX bindings and associated copybooks are in `cpy` and `udf`: 
+ 
+ - `cpy/`  copybooks used by functions in `udf`
+ - `udf/`  COBOL POSIX bindings
+ - `t/`    simple tests demonstrating use of functions in `udf`
+ 
+ Any buffer shared between the COBOL application and a COBOL POSIX
+ function is defined in `cpy/`.  While these buffers meet the POSIX
+ descriptions -- meaning they have members matching the standard --
+ they probably do not match the buffer defined by the C library in
+ `/usr/include`. GCC COBOL does not parse C, and therefore does not
+ parse C header files, and so has no access to those C buffer definitions. 
+ 
+ The machine-shop tools are in `bin/`. 
+ 
+ - `bin/`  developer tools to aid creation of POSIX bindings
+   - `scrape.awk` extracts function prototypes from the SYNOPSIS of a
+     man page.
+   - `udf-gen` reads function declarations and, for each one, produces
+     a COBOL User Defined Function (UDF) that calls the function.
+ 
+ Finally, 
+ 
+ - `shim/` C support for POSIX bindings, incorporated in libgcobol
+ 
+ ## Prerequisites
+ ### for developers, to generate COBOL POSIX bindings
+ 
+ To use the POSIX bindings, just use the COPY statement. 
+ 
+ To create new ones, use `udf-gen`.  `udf-gen` is a Python program that
+ imports the [PLY pycparser module](http://www.dabeaz.com/ply/) module,
+ which must be installed.
+ 
+ `udf-gen` is lightly documented, use `udf-gen --help`. It can be a
+ little tedious to set up the first time, but if you want to use more a
+ few functions, it will be faster than doing the work by hand.
+ 
+ ## Limitations
+ 
+ `udf-gen` does not
+ 
+ - generate a working UDF for function parameters of type `struct`,
+   such as is used by **stat**(2).  This is because the information is
+   not available in a standardized way in the SYNOPSIS of a man page.
+ - define helpful Level 88 values for "magic" numbers, such as
+   permission bits in **chmod**(2).
+ 
+ None of this is particularly difficult; it's just a matter of time and
+ need. The `scrape.awk` script finds 560 functions in the Ubuntu LTS
+ 22.04 manual.  Which of those is important is for users to decide.
+ 
+ ## Other Options
+ 
+ IBM and MicroFocus both supply intrinsic functions to interface with
+ the OS, each in their own way. GnuCOBOL implements some of those functions.
+ 
+ ## Portability
+ 
+ The UDF produced by `udf-gen` is pure ISO COBOL.  The code should be
+ compilable by any ISO COBOL compiler.
diff -Nrcpad gcc-16-20251109/libgcobol/posix/bin/Makefile gcc-16-20251116/libgcobol/posix/bin/Makefile
*** gcc-16-20251109/libgcobol/posix/bin/Makefile	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgcobol/posix/bin/Makefile	Sun Nov 16 22:34:49 2025
***************
*** 0 ****
--- 1,18 ----
+ #
+ # Demonstrate how to generate a new COBOL binding from a man page. 
+ #
+ 
+ posix-mkdir.cbl:
+ 	man 2 mkdir | ./scrape.awk | \
+ 	../udf-gen -D mode_t=unsigned\ long  > $@~
+ 	@mv $@~ $@
+ 
+ # ... or 
+ 
+ posix-stat-many.scr:
+ 	man 2 stat | col -b | ./scrape.awk > $@~
+ 	@mv $@~ $@
+ 
+ .scr.cbl:
+ 	./udf-gen -D mode_t=unsigned\ long  $^ > $@~
+ 	@mv $@~ $@
diff -Nrcpad gcc-16-20251109/libgcobol/posix/bin/headers gcc-16-20251116/libgcobol/posix/bin/headers
*** gcc-16-20251109/libgcobol/posix/bin/headers	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgcobol/posix/bin/headers	Sun Nov 16 22:34:49 2025
***************
*** 0 ****
--- 1,37 ----
+ #include <stddef.h>
+ #include <stdio.h>
+ #include <stddef.h>
+ #include <unistd.h>
+ #define loff_t ssize_t
+ #define socklen_t size_t
+ #define fd_set struct fd_set
+ #define id_t unsigned int
+ // typedef int mqd_t;
+ #define mqd_t int
+ // typedef unsigned long int nfds_t;
+ #define nfds_t unsigned long int
+ 
+ #if 0
+ typedef struct
+ {
+   unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
+ } __sigset_t;
+ define struct py_sigset_t						\
+ {									\
+   unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];	\
+ };
+ #else
+ #define kernel_sigset_t     sigset_t
+ #define old_kernel_sigset_t sigset_t
+ #endif
+ 
+ #if 0
+ typedef enum
+ {
+   P_ALL,
+   P_PID,
+   P_PGID
+ } idtype_t;
+ #else
+ #define idtype_t int
+ #endif
diff -Nrcpad gcc-16-20251109/libgcobol/posix/bin/scrape.awk gcc-16-20251116/libgcobol/posix/bin/scrape.awk
*** gcc-16-20251109/libgcobol/posix/bin/scrape.awk	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgcobol/posix/bin/scrape.awk	Sun Nov 16 22:34:49 2025
***************
*** 0 ****
--- 1,19 ----
+ #! /usr/bin/awk -f
+ 
+ /^UNIMPLEMENTED/ {
+   exit
+ }
+ 
+ /^DESCRIPTION/ {
+   exit
+ }
+ 
+ /struct sched_param {$/ {
+   exit
+ }
+ 
+ /SYNOPSIS/,/DESCRIPTION/ {
+   if( /([.][.]|[{},;]) *$/ ) {
+     print
+   }
+ }
diff -Nrcpad gcc-16-20251109/libgcobol/posix/bin/sizeofs.c gcc-16-20251116/libgcobol/posix/bin/sizeofs.c
*** gcc-16-20251109/libgcobol/posix/bin/sizeofs.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgcobol/posix/bin/sizeofs.c	Sun Nov 16 22:34:49 2025
***************
*** 0 ****
--- 1,27 ----
+ #include <fcntl.h>           /* Definition of AT_* constants */
+ #include <stdio.h>
+ #include <time.h>
+ #include <unistd.h>
+ 
+ #include <sys/stat.h>
+ #include <sys/stat.h>
+ #include <sys/types.h>
+ 
+ int
+ main(int argc, char *argv[])
+ {
+   printf( "size of dev_t is %zu\n", sizeof(dev_t));
+   printf( "size of ino_t is %zu\n", sizeof(ino_t));
+   printf( "size of mode_t is %zu\n", sizeof(mode_t));
+   printf( "size of nlink_t is %zu\n", sizeof(nlink_t));
+   printf( "size of uid_t is %zu\n", sizeof(uid_t));
+   printf( "size of gid_t is %zu\n", sizeof(gid_t));
+   printf( "size of dev_t is %zu\n", sizeof(dev_t));
+   printf( "size of off_t is %zu\n", sizeof(off_t));
+   printf( "size of blksize_t is %zu\n", sizeof(blksize_t));
+   printf( "size of blkcnt_t is %zu\n", sizeof(blkcnt_t));
+   printf( "size of time_t is %zu\n", sizeof(time_t));
+   printf( "size of struct timespec is %zu\n", sizeof(struct timespec));
+ 
+   return 0;
+ }
diff -Nrcpad gcc-16-20251109/libgcobol/posix/bin/udf-gen gcc-16-20251116/libgcobol/posix/bin/udf-gen
*** gcc-16-20251109/libgcobol/posix/bin/udf-gen	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgcobol/posix/bin/udf-gen	Sun Nov 16 22:34:49 2025
***************
*** 0 ****
--- 1,350 ----
+ #! /usr/bin/python3
+ 
+ # Copyright (c) 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.
+ 
+ import sys, os, getopt, re, copy
+ from pycparser import c_parser, c_generator, c_ast, parse_file
+ 
+ def starify(param):
+     stars = ""
+     while( isinstance(param, c_ast.PtrDecl) ):
+         q = ' '.join(param.quals)
+         stars = '*' + ' '.join((stars, q))
+         param = param.type
+     if( isinstance(param.type, c_ast.PtrDecl) ):
+         (stars, param) = starify(param.type)
+     if( isinstance(param, c_ast.TypeDecl) ):
+         return (stars, param)
+     return (stars, param.type)
+ 
+ def linkage_str( i, name, param ) -> str:
+     if name == 'execve':
+         param.show()
+     if( isinstance(param, c_ast.EllipsisParam) ):
+         return (None, None, '...') # COBOL syntax error: no variadic UDF
+ 
+     is_array = False;
+     node = param
+ 
+     if( isinstance(node, c_ast.Decl) ):
+         node = node.type
+ 
+     if( isinstance(node, c_ast.ArrayDecl) ):
+         is_array = True;
+         node = node.type
+ 
+     (stars, node) = starify(node)
+ 
+     if( isinstance(node, c_ast.TypeDecl) ):
+         level = 1
+         item_name = ''
+         picture = ''
+         usage = ''
+         if node.declname:
+             item_name = 'Lk-' + node.declname
+ 
+         if is_array: # ignore level
+             if stars:
+                 usage = 'Usage POINTER'
+             output = '01 FILLER.\n              02 %s %s %s OCCURS 100' \
+                 % (item_name, picture, usage)
+             return (None, None, output)
+ 
+         if( isinstance(node.type, c_ast.Struct) ):
+             stars = None
+ 
+         if isinstance(node.type, c_ast.IdentifierType):
+             ctype = node.type.names[-1]
+             if ctype == 'void':
+                 if not stars and not item_name:
+                     return (None, None, None)
+             if ctype == 'char':
+                 picture = 'X'
+                 if stars[0] == '*':
+                     picture = 'X ANY LENGTH'
+             if ctype == 'int' or \
+                ctype == 'long' or \
+                ctype == 'mode_t' or \
+                ctype == 'off_t' or \
+                ctype == 'size_t':
+                 picture = '9(8)'
+                 usage = 'Usage COMP'
+                 stars = None
+ 
+         output = "%02d %s" % (level, ' '.join((item_name, 'PIC ' + picture, usage)))
+         return (stars, item_name, output)
+ 
+     node.show()
+     return (None, None, '???')
+ 
+ def using_str( i, name, param ) -> str:
+     item_name = ''
+     if( isinstance(param, c_ast.EllipsisParam) ):
+         return '...' # COBOL syntax error: no variadic UDF
+     node = param
+ 
+     if( isinstance(node, c_ast.Decl) ):
+         node = node.type
+ 
+     if( isinstance(node, c_ast.ArrayDecl) ):
+         node = node.type
+ 
+     (stars, node) = starify(node)
+ 
+     if( isinstance(node, c_ast.TypeDecl) ):
+         item_name = ''
+ 
+         if isinstance(node.type, c_ast.IdentifierType):
+             ctype = node.type.names[-1]
+             how = 'By Reference'
+             if ctype == 'int' or \
+                ctype == 'long' or \
+                ctype == 'mode_t' or \
+                ctype == 'off_t' or \
+                ctype == 'size_t':
+                 how = 'By Value'
+         if node.declname:
+             item_name = '%s Lk-%s' % (how, node.declname)
+ 
+     return item_name
+ 
+ def parameter_str( i, name, param ) -> str:
+     if( isinstance(param, c_ast.EllipsisParam) ):
+         return '...'
+ 
+     t = [0, 1, 2] # qual, type, name
+     is_array = False;
+     node = param
+ 
+     if( isinstance(node, c_ast.Decl) ):
+         node = node.type
+ 
+     if( isinstance(node, c_ast.ArrayDecl) ):
+         is_array = True;
+         node = node.type
+ 
+     (stars, node) = starify(node)
+ 
+     if( isinstance(node, c_ast.TypeDecl) ):
+         t[0] = ' '.join(node.quals)
+         item_name = ''
+         if node.declname:
+             item_name = 'Lk-' + node.declname
+         t[2] = ' '.join((stars, item_name))
+         if( node.declname == None ):
+             t[2] = ''
+         if( isinstance(node.type, c_ast.IdentifierType) ):
+             try:
+                 t[1] = ' '.join(node.type.names)
+             except:
+                 print("oops: node.type of %s is %s" % (name, str(node.type)))
+                 return "could not parse %s arg[%d]" % (name, i)
+         if( isinstance(node.type, c_ast.Struct) ):
+             t[0] = ' '.join(node.quals)
+             t[1] = "struct " + node.type.name
+     if( isinstance(node, c_ast.ArrayDecl) ):
+         return parameter_str(i, name, node.type) + '[]'
+ 
+     try:
+         return ' '.join(t)
+     except:
+         print("oops: %s[%d]: {%s}" % (name, i, str(t)) )
+         param.show()
+ 
+ class VisitPrototypes(c_ast.NodeVisitor):
+     def __init__(self):
+         self.done = set()
+ 
+     def type_of(self, node):
+         while( not isinstance(node.type, c_ast.TypeDecl) ):
+             node = node.type
+         return node.type.type.name
+ 
+     def visit_Decl(self, node):
+         name = node.name
+         if name in self.done:
+             return
+         self.done.add(name)
+ 
+         params = []
+         cbl_args = []
+         linkage_items = []
+         string_items = []
+         returns = '???'
+ 
+         if False and isinstance(node.type, c_ast.FuncDecl):
+             function_decl = node.type
+             print('Function: %s' % node.name)
+             if( node.type.args == None ):
+                 print('  (no arguments)')
+             else:
+                 for param_decl in node.type.args.params:
+                     if( isinstance(param_decl, c_ast.EllipsisParam) ):
+                         param_decl.show(offset=6)
+                         continue
+                     print('  Arg name: %s' % param_decl.name)
+                     print('  Type:')
+                     param_decl.type.show(offset=6)
+ 
+         if isinstance(node.type, c_ast.FuncDecl):
+             args = node.type.args
+             if isinstance(args, c_ast.ParamList):
+                 #rint("params are %s (type %s)" % (str(args.params), type(args.params)))
+                 if( args == None ):
+                     params.append('')
+                 else:
+                     for (i, param) in enumerate(args.params):
+                         params.append(parameter_str(i, name, param))
+                         cbl_args.append(using_str(i, name, param))
+                         (stars, item, definition) = linkage_str(i, name, param)
+                         if definition:
+                             if stars:
+                                 string_items.append(item)
+                             linkage_items.append(definition)
+ 
+             (stars, rets) = starify(node.type)
+ 
+             if isinstance(rets, c_ast.TypeDecl):
+                 q =  ' '.join(rets.quals)
+                 if( isinstance(rets.type, c_ast.Struct) ):
+                     t = "struct " + rets.type.name
+                 else:
+                     t =  ' '.join(rets.type.names)
+                 returns = ' '.join((q, t, stars))
+ 
+         if name == None:
+             return
+ 
+         # print the C version as a comment
+         cparams = [ x.replace('Lk-', '') for x in params ]
+         print( "      * %s %s(%s)"
+                % (returns, name, ', '.join(cparams)) )
+ 
+         # print the UDF
+         print( '        Identification Division.')
+         sname = name
+         if( sname[0] == '_' ):
+             sname = sname[1:]
+         print( '        Function-ID. posix-%s.' % sname)
+ 
+         print( '        Data Division.')
+         print( '        Linkage Section.')
+         print( '          77 Return-Value Binary-Long.')
+         for item  in linkage_items:
+             print( '          %s.' % item.strip())
+         args = ',\n             '.join(cbl_args)
+         args = 'using\n             %s\n            ' % args
+         print( '        Procedure Division %s Returning Return-Value.'
+                % args )
+         for item in string_items:
+             print( '          Inspect Backward %s ' % item +
+                    'Replacing Leading Space By Low-Value' )
+         using_args = ''
+         if args:
+             using_args = '%s' % args
+         print( '          Call "%s" %s Returning Return-Value.'
+                % (name, using_args) )
+         print( '          Goback.')
+         print( '        End Function posix-%s.' % sname)
+ 
+ # Hard code a path to the fake includes
+ # if not using cpp(1) environment variables.
+ cpp_args = ['-I/home/jklowden/projects/3rd/pycparser/utils/fake_libc_include']
+ 
+ for var in ('CPATH', 'C_INCLUDE_PATH'):
+     dir = os.getenv(var)
+     if dir:
+         cpp_args = ''
+ 
+ def process(srcfile):
+     ast = parse_file(srcfile, use_cpp=True, cpp_args=cpp_args)
+     # print(c_generator.CGenerator().visit(ast))
+     v = VisitPrototypes()
+     v.visit(ast)
+ 
+ __doc__ = """
+ SYNOPSIS
+     udf-gen [-I include-path] [header-file ...]
+ 
+ DESCRIPTION
+     For each C function declared in header-file,
+ produce an ISO COBOL user-defined function definition to call it.
+ If no filename is supplied, declarations are read from standard input.
+ All output is written to standard output.
+ 
+     This Python script uses the PLY pycparser module,
+ (http://www.dabeaz.com/ply/), which supplies a set of simplified "fake
+ header files" to avoid parsing the (very complex) standard C header
+ files.  These alost suffice for parsing the Posix function
+ declarations in Section 2 of the manual.
+ 
+     Use the -I option or the cpp(1) environment variables to direct
+ the preprocessor to use the fake header files instead of the system
+ header files.
+ 
+ LIMITATIONS
+     udf-gen does not recognize C struct parameters, such as used by stat(2).
+ 
+      No attempt has been made to define "magic" values, such as would
+ be needed for example by chmod(2).
+ """
+ 
+ def main( argv=None ):
+     global cpp_args
+     if argv is None:
+         argv = sys.argv
+     # parse command line options
+     try:
+         opts, args = getopt.getopt(sys.argv[1:], "D:hI:m:", ["help"])
+     except getopt.error as msg:
+         print(msg)
+         print("for help use --help")
+         sys.exit(2)
+ 
+     # process options
+     astfile = None
+ 
+     for opt, arg in opts:
+         if opt in ("-h", "--help"):
+             print(__doc__)
+             sys.exit(0)
+         if opt == '-D':
+             cpp_args.append('-D%s ' % arg)
+         if opt == '-I':
+             cpp_args[0] = '-I' + arg
+ 
+     # process arguments
+     if not args:
+         args = ('/dev/stdin',)
+ 
+     for arg in args:
+         process(arg)
+ 
+ if __name__ == "__main__":
+     sys.exit(main())
diff -Nrcpad gcc-16-20251109/libgcobol/posix/cpy/posix-errno.cbl gcc-16-20251116/libgcobol/posix/cpy/posix-errno.cbl
*** gcc-16-20251109/libgcobol/posix/cpy/posix-errno.cbl	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgcobol/posix/cpy/posix-errno.cbl	Sun Nov 16 22:34:49 2025
***************
*** 0 ****
--- 1,27 ----
+         >> PUSH source format
+         >>SOURCE format is fixed
+ 
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+       *  This function is in the public domain.
+       *  Contributed by James K. Lowden of Cobolworx in October 2025.
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ 
+        Identification Division.
+        Function-ID. posix-errno.
+ 
+        Data Division.
+        Linkage Section.
+        77 Return-Value Binary-Long.
+        01 Error-Msg PIC X ANY LENGTH.
+ 
+        Procedure Division
+            using Error-Msg
+            Returning Return-Value.
+        CALL "posix_errno"
+            returning Return-Value.
+        CALL "strerror"
+            using by value Return-Value
+            returning error-msg.
+        Goback.
+        END FUNCTION posix-errno.
+         >> POP source format
diff -Nrcpad gcc-16-20251109/libgcobol/posix/cpy/statbuf.cpy gcc-16-20251116/libgcobol/posix/cpy/statbuf.cpy
*** gcc-16-20251109/libgcobol/posix/cpy/statbuf.cpy	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgcobol/posix/cpy/statbuf.cpy	Sun Nov 16 22:34:49 2025
***************
*** 0 ****
--- 1,22 ----
+         >> PUSH source format
+         >>SOURCE format is fixed
+ 
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+       *  This stat(2) buffer definition is in the public domain.
+       *  Contributed by James K. Lowden of Cobolworx in October 2025.
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ 
+              05  st_dev     Usage is Binary-Double  Unsigned.
+              05  st_ino     Usage is Binary-Double  Unsigned.
+              05  st_mode    Usage is Binary-Double  Unsigned.
+              05  st_nlink   Usage is Binary-Double  Unsigned.
+              05  st_uid     Usage is Binary-Double  Unsigned.
+              05  st_gid     Usage is Binary-Double  Unsigned.
+              05  st_rdev    Usage is Binary-Double  Unsigned.
+              05  st_size    Usage is Binary-Double  Unsigned.
+              05  st_blksize Usage is Binary-Double  Unsigned.
+              05  st_blocks  Usage is Binary-Double  Unsigned.
+              05  st_atime   Usage is Binary-Double  Unsigned.
+              05  st_mtime   Usage is Binary-Double  Unsigned.
+              05  st_ctime   Usage is Binary-Double  Unsigned.
+         >> POP source format
diff -Nrcpad gcc-16-20251109/libgcobol/posix/cpy/tm.cpy gcc-16-20251116/libgcobol/posix/cpy/tm.cpy
*** gcc-16-20251109/libgcobol/posix/cpy/tm.cpy	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgcobol/posix/cpy/tm.cpy	Sun Nov 16 22:34:49 2025
***************
*** 0 ****
--- 1,27 ----
+         >> PUSH source format
+         >>SOURCE format is fixed
+ 
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+       *  This function is in the public domain.
+       *  Contributed by James K. Lowden of Cobolworx in October 2025.
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ 
+              02  tm_sec   Usage is Binary-Long.
+              02  tm_min   Usage is Binary-Long.
+              02  tm_hour  Usage is Binary-Long.
+              02  tm_mday  Usage is Binary-Long.
+              02  tm_mon   Usage is Binary-Long.
+              02  tm_year  Usage is Binary-Long.
+              02  tm_wday  Usage is Binary-Long.
+              02  tm_yday  Usage is Binary-Long.
+              02  tm_isdst Usage is Binary-Long.
+         >> POP source format
+   
+   
+   
+   
+   
+   
+   
+   
+   
diff -Nrcpad gcc-16-20251109/libgcobol/posix/errno.cc gcc-16-20251116/libgcobol/posix/errno.cc
*** gcc-16-20251109/libgcobol/posix/errno.cc	Sun Nov  9 22:34:16 2025
--- gcc-16-20251116/libgcobol/posix/errno.cc	Thu Jan  1 00:00:00 1970
***************
*** 1,7 ****
- #include <errno.h>
- 
- extern "C"
- int
- posix_errno() {
-   return errno;
- }
--- 0 ----
diff -Nrcpad gcc-16-20251109/libgcobol/posix/localtime.cc gcc-16-20251116/libgcobol/posix/localtime.cc
*** gcc-16-20251109/libgcobol/posix/localtime.cc	Sun Nov  9 22:34:16 2025
--- gcc-16-20251116/libgcobol/posix/localtime.cc	Thu Jan  1 00:00:00 1970
***************
*** 1,34 ****
- #include <assert.h>
- #include <time.h>
- 
- extern "C" {
- 
- #include "tm.h"
- 
- static struct posix_tm posix_tm;
- 
- 
- struct posix_tm *
- posix_localtime(const time_t *timep, size_t size) {
- 
-   assert(timep);
-   assert(sizeof(posix_tm) == size);
- 
-   struct tm * tm = localtime(timep);
- 
-   if( tm == NULL ) return NULL;
- 
-   posix_tm.tm_sec = tm->tm_sec;
-   posix_tm.tm_min = tm->tm_min;
-   posix_tm.tm_hour = tm->tm_hour;
-   posix_tm.tm_mday = tm->tm_mday;
-   posix_tm.tm_mon = tm->tm_mon;
-   posix_tm.tm_year = tm->tm_year;
-   posix_tm.tm_wday = tm->tm_wday;
-   posix_tm.tm_yday = tm->tm_yday;
-   posix_tm.tm_isdst = tm->tm_isdst;
- 
-   return &posix_tm;
- }
- 
- } // extern "C"
--- 0 ----
diff -Nrcpad gcc-16-20251109/libgcobol/posix/shim/errno.cc gcc-16-20251116/libgcobol/posix/shim/errno.cc
*** gcc-16-20251109/libgcobol/posix/shim/errno.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgcobol/posix/shim/errno.cc	Sun Nov 16 22:34:49 2025
***************
*** 0 ****
--- 1,7 ----
+ #include <errno.h>
+ 
+ extern "C"
+ int
+ posix_errno() {
+   return errno;
+ }
diff -Nrcpad gcc-16-20251109/libgcobol/posix/shim/localtime.cc gcc-16-20251116/libgcobol/posix/shim/localtime.cc
*** gcc-16-20251109/libgcobol/posix/shim/localtime.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgcobol/posix/shim/localtime.cc	Sun Nov 16 22:34:49 2025
***************
*** 0 ****
--- 1,34 ----
+ #include <assert.h>
+ #include <time.h>
+ 
+ extern "C" {
+ 
+ #include "tm.h"
+ 
+ static struct posix_tm posix_tm;
+ 
+ 
+ struct posix_tm *
+ posix_localtime(const time_t *timep, size_t size) {
+ 
+   assert(timep);
+   assert(sizeof(posix_tm) == size);
+ 
+   struct tm * tm = localtime(timep);
+ 
+   if( tm == NULL ) return NULL;
+ 
+   posix_tm.tm_sec = tm->tm_sec;
+   posix_tm.tm_min = tm->tm_min;
+   posix_tm.tm_hour = tm->tm_hour;
+   posix_tm.tm_mday = tm->tm_mday;
+   posix_tm.tm_mon = tm->tm_mon;
+   posix_tm.tm_year = tm->tm_year;
+   posix_tm.tm_wday = tm->tm_wday;
+   posix_tm.tm_yday = tm->tm_yday;
+   posix_tm.tm_isdst = tm->tm_isdst;
+ 
+   return &posix_tm;
+ }
+ 
+ } // extern "C"
diff -Nrcpad gcc-16-20251109/libgcobol/posix/shim/stat.cc gcc-16-20251116/libgcobol/posix/shim/stat.cc
*** gcc-16-20251109/libgcobol/posix/shim/stat.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgcobol/posix/shim/stat.cc	Sun Nov 16 22:34:49 2025
***************
*** 0 ****
--- 1,80 ----
+ #include <assert.h>
+ #include <stddef.h>
+ #include <stdio.h>
+ #include <unistd.h>
+ 
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ 
+ #define offsetof(TYPE, MEMBER) __builtin_offsetof (TYPE, MEMBER)
+ 
+ extern "C" {
+ 
+ #include "stat.h"
+ 
+ #define offset_assert(name, offset) do {                                \
+   if( offsetof(posix_stat_t, name) != offset ) {                        \
+     fprintf(stderr, "C posix_stat_t offset for %s %zu != COBOL offset %d\n", \
+             #name, offsetof(posix_stat_t, name), offset);               \
+     assert(offsetof(posix_stat_t, name) == offset);                     \
+   }                                                                     \
+  } while(false);
+ 
+ int
+ posix_stat(const char *pathname, posix_stat_t *statbuf, size_t size) {
+   struct stat sb;
+   int erc = stat(pathname, &sb);
+ 
+   if( sizeof(posix_stat_t) != size ) {
+     fprintf(stderr, "%s:%d: %lu != received size %lu\n", __func__, __LINE__, 
+             (unsigned long)sizeof(struct posix_stat_t), 
+             (unsigned long)size);
+     fflush(stdout);
+     fflush(stderr);
+   }
+   if( statbuf == nullptr ) {
+     fprintf(stderr, "%s:%d: received NULL statbuf\n", __func__, __LINE__);
+     fflush(stdout);
+     fflush(stderr);
+   }
+ 
+   if( true ) { // Verify last known reported COBOL offsets agree with C offsets.
+     offset_assert( st_dev,         0 ); 
+     offset_assert( st_ino       ,  8 ); 
+     offset_assert( st_mode      , 16 ); 
+     offset_assert( st_nlink     , 24 ); 
+     offset_assert( st_uid       , 32 ); 
+     offset_assert( st_gid       , 40 ); 
+     offset_assert( st_rdev      , 48 ); 
+     offset_assert( st_size      , 56 ); 
+     offset_assert( st_blksize   , 64 ); 
+     offset_assert( st_blocks    , 72 ); 
+     offset_assert( psx_atime    , 80 ); 
+     offset_assert( psx_mtime    , 88 ); 
+     offset_assert( psx_ctime    , 96 ); 
+   }
+ 
+   assert(statbuf);
+ 
+   if( erc == 0 ) {
+     statbuf->st_dev = sb.st_dev;
+     statbuf->st_ino = sb.st_ino;
+     statbuf->st_mode = sb.st_mode;
+     statbuf->st_nlink = sb.st_nlink;
+     statbuf->st_uid = sb.st_uid;
+     statbuf->st_gid = sb.st_gid;
+     statbuf->st_rdev = sb.st_rdev;
+     statbuf->st_size = sb.st_size;
+     statbuf->st_blksize = sb.st_blksize;
+     statbuf->st_blocks = sb.st_blocks;
+     statbuf->psx_atime = sb.st_atime;
+     statbuf->psx_mtime = sb.st_mtime;
+     statbuf->psx_ctime = sb.st_ctime;
+   }
+ 
+   return erc;
+ 
+   
+ }
+ 
+ } // extern "C"
diff -Nrcpad gcc-16-20251109/libgcobol/posix/shim/stat.h gcc-16-20251116/libgcobol/posix/shim/stat.h
*** gcc-16-20251109/libgcobol/posix/shim/stat.h	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgcobol/posix/shim/stat.h	Sun Nov 16 22:34:49 2025
***************
*** 0 ****
--- 1,42 ----
+ #include <cstdint>
+ 
+ /*
+  * This buffer definition matches the one in libgcobol/posix/cpy/statbuf.cpy. 
+  * It is shared between 
+  * 
+  *        libgcobol/posix/udf/posix-stat.cbl
+  * and 
+  *        libgcobol/posix/shim/stat.cc
+  * 
+  * stat.cc copies information from the OS-defined stat buffer to this one. 
+  */
+ 
+ namespace cbl {
+   typedef uint64_t blkcnt_t;
+   typedef uint64_t blksize_t;
+   typedef uint64_t dev_t;
+   typedef uint64_t gid_t;
+   typedef uint64_t ino_t;
+   typedef uint64_t mode_t;
+   typedef uint64_t nlink_t;
+   typedef uint64_t off_t;
+   typedef uint64_t time_t;
+   typedef uint64_t uid_t;
+ };
+ 
+ struct posix_stat_t {
+   cbl::dev_t     st_dev;         /* ID of device containing file */
+   cbl::ino_t     st_ino;         /* Inode number */
+   cbl::mode_t    st_mode;        /* File type and mode */
+   cbl::nlink_t   st_nlink;       /* Number of hard links */
+   cbl::uid_t     st_uid;         /* User ID of owner */
+   cbl::gid_t     st_gid;         /* Group ID of owner */
+   cbl::dev_t     st_rdev;        /* Device ID (if special file) */
+   cbl::off_t     st_size;        /* Total size, in bytes */
+   cbl::blksize_t st_blksize;     /* Block size for filesystem I/O */
+   cbl::blkcnt_t  st_blocks;      /* Number of 512B blocks allocated */
+   // Cannot use st_atime etc because they are defined in the preprocessor. 
+   cbl::time_t    psx_atime;      /* Time of last access */
+   cbl::time_t    psx_mtime;      /* Time of last modification */
+   cbl::time_t    psx_ctime;      /* Time of last status change */
+ };
diff -Nrcpad gcc-16-20251109/libgcobol/posix/shim/tm.h gcc-16-20251116/libgcobol/posix/shim/tm.h
*** gcc-16-20251109/libgcobol/posix/shim/tm.h	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgcobol/posix/shim/tm.h	Sun Nov 16 22:34:49 2025
***************
*** 0 ****
--- 1,11 ----
+ struct posix_tm {
+   int tm_sec;    /* Seconds (0-60) */
+   int tm_min;    /* Minutes (0-59) */
+   int tm_hour;   /* Hours (0-23) */
+   int tm_mday;   /* Day of the month (1-31) */
+   int tm_mon;    /* Month (0-11) */
+   int tm_year;   /* Year - 1900 */
+   int tm_wday;   /* Day of the week (0-6, Sunday = 0) */
+   int tm_yday;   /* Day in the year (0-365, 1 Jan = 0) */
+   int tm_isdst;  /* Daylight saving time */
+ };
diff -Nrcpad gcc-16-20251109/libgcobol/posix/stat.cc gcc-16-20251116/libgcobol/posix/stat.cc
*** gcc-16-20251109/libgcobol/posix/stat.cc	Sun Nov  9 22:34:16 2025
--- gcc-16-20251116/libgcobol/posix/stat.cc	Thu Jan  1 00:00:00 1970
***************
*** 1,90 ****
- #include <assert.h>
- #include <stddef.h>
- #include <stdio.h>
- #include <unistd.h>
- 
- #include <sys/types.h>
- #include <sys/stat.h>
- 
- extern "C" {
- 
- #include "stat.h"
- 
- int
- posix_stat(const char *pathname, struct posix_stat_t *statbuf, size_t size) {
-   struct stat sb;
-   int erc = stat(pathname, &sb);
- 
-   if( sizeof(struct posix_stat_t) != size ) {
-     fprintf(stderr, "posix_stat %lu != received size %lu\n",
-             (unsigned long)sizeof(struct posix_stat_t), 
-             (unsigned long)size);
-   }
- 
-   assert(sizeof(struct posix_stat_t) == size);
-   assert(statbuf);
- 
-   if( erc == 0 ) {
-     statbuf->st_dev = sb.st_dev;
-     statbuf->st_ino = sb.st_ino;
-     statbuf->st_mode = sb.st_mode;
-     statbuf->st_nlink = sb.st_nlink;
-     statbuf->st_uid = sb.st_uid;
-     statbuf->st_gid = sb.st_gid;
-     statbuf->st_rdev = sb.st_rdev;
-     statbuf->st_size = sb.st_size;
-     statbuf->st_blksize = sb.st_blksize;
-     statbuf->st_blocks = sb.st_blocks;
-     statbuf->st_atim = sb.st_atim.tv_sec;
-     statbuf->st_mtim = sb.st_mtim.tv_sec;
-     statbuf->st_ctim = sb.st_ctim.tv_sec;
-   }
- 
-   if( 0 ) {
-     printf("%4lu: st_dev: %lu = %lu\n",
-            (unsigned long)offsetof(struct posix_stat_t, st_dev),
-            (unsigned long)statbuf->st_dev, (unsigned long)sb.st_dev);
-     printf("%4lu: st_ino: %lu = %lu\n", 
-            (unsigned long)offsetof(struct posix_stat_t, st_ino),
-            (unsigned long)statbuf->st_ino, (unsigned long)sb.st_ino);
-     printf("%4lu: st_mode: %lu = %lu\n", 
-            (unsigned long)offsetof(struct posix_stat_t, st_mode),
-            (unsigned long)statbuf->st_mode, (unsigned long)sb.st_mode);
-     printf("%4lu: st_nlink: %lu = %lu\n", 
-            (unsigned long)offsetof(struct posix_stat_t, st_nlink),
-            (unsigned long)statbuf->st_nlink, (unsigned long)sb.st_nlink);
-     printf("%4lu: st_uid: %lu = %lu\n", 
-            (unsigned long)offsetof(struct posix_stat_t, st_uid),
-            (unsigned long)statbuf->st_uid, (unsigned long)sb.st_uid);
-     printf("%4lu: st_gid: %lu = %lu\n", 
-            (unsigned long)offsetof(struct posix_stat_t, st_gid),
-            (unsigned long)statbuf->st_gid, (unsigned long)sb.st_gid);
-     printf("%4lu: st_rdev: %lu = %lu\n", 
-            (unsigned long)offsetof(struct posix_stat_t, st_rdev),
-            (unsigned long)statbuf->st_rdev, (unsigned long)sb.st_rdev);
-     printf("%4lu: st_size: %lu = %lu\n", 
-            (unsigned long)offsetof(struct posix_stat_t, st_size),
-            (unsigned long)statbuf->st_size, (unsigned long)sb.st_size);
-     printf("%4lu: st_blksize: %lu = %lu\n", 
-            (unsigned long)offsetof(struct posix_stat_t, st_blksize),
-            (unsigned long)statbuf->st_blksize, (unsigned long)sb.st_blksize);
-     printf("%4lu: st_blocks: %lu = %lu\n", 
-            (unsigned long)offsetof(struct posix_stat_t, st_blocks),
-            (unsigned long)statbuf->st_blocks, (unsigned long)sb.st_blocks);
-     printf("%4lu: st_atim: %lu = %lu\n", 
-            (unsigned long)offsetof(struct posix_stat_t, st_atim),
-            (unsigned long)statbuf->st_atim, (unsigned long)sb.st_atim.tv_sec);
-     printf("%4lu: st_mtim: %lu = %lu\n", 
-            (unsigned long)offsetof(struct posix_stat_t, st_mtim),
-            (unsigned long)statbuf->st_mtim, (unsigned long)sb.st_mtim.tv_sec);
-     printf("%4lu: st_ctim: %lu = %lu\n", 
-            (unsigned long)offsetof(struct posix_stat_t, st_ctim),
-            (unsigned long)statbuf->st_ctim, (unsigned long)sb.st_ctim.tv_sec);
-   }
- 
-   return erc;
- 
-   
- }
- 
- } // extern "C"
--- 0 ----
diff -Nrcpad gcc-16-20251109/libgcobol/posix/stat.h gcc-16-20251116/libgcobol/posix/stat.h
*** gcc-16-20251109/libgcobol/posix/stat.h	Sun Nov  9 22:34:16 2025
--- gcc-16-20251116/libgcobol/posix/stat.h	Thu Jan  1 00:00:00 1970
***************
*** 1,15 ****
- struct posix_stat_t {
-   dev_t     st_dev;         /* ID of device containing file */
-   ino_t     st_ino;         /* Inode number */
-   mode_t    st_mode;        /* File type and mode */
-   nlink_t   st_nlink;       /* Number of hard links */
-   uid_t     st_uid;         /* User ID of owner */
-   gid_t     st_gid;         /* Group ID of owner */
-   dev_t     st_rdev;        /* Device ID (if special file) */
-   off_t     st_size;        /* Total size, in bytes */
-   blksize_t st_blksize;     /* Block size for filesystem I/O */
-   blkcnt_t  st_blocks;      /* Number of 512B blocks allocated */
-   time_t    st_atim;        /* Time of last access */
-   time_t    st_mtim;        /* Time of last modification */
-   time_t    st_ctim;        /* Time of last status change */
- };
--- 0 ----
diff -Nrcpad gcc-16-20251109/libgcobol/posix/t/Makefile gcc-16-20251116/libgcobol/posix/t/Makefile
*** gcc-16-20251109/libgcobol/posix/t/Makefile	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgcobol/posix/t/Makefile	Sun Nov 16 22:34:49 2025
***************
*** 0 ****
--- 1,36 ----
+ .SUFFIXES: .scr .cbl
+ 
+ #
+ # Ensure UDFs compile and run without crashing. 
+ #
+ 
+ #      COBCFLAGS is defined by the user
+ 
+ COBC = gcobol
+ LDFLAGS = -L $$(pwd) -Wl,-rpath -Wl,$$(pwd)
+ 
+ TESTS = errno exit localtime stat
+ 
+ # Default target builds the tests
+ all: $(TESTS)
+ 
+ % : %.cbl
+ 	$(COBC) -o $@ $(COBCFLAGS) -I. -I../cpy -I../udf $(LDFLAGS) $<
+ 
+ 
+ exit: ../udf/posix-exit.cbl 
+ 
+ errno: ../udf/posix-mkdir.cbl
+ 
+ stat: ../udf/posix-stat.cbl 
+ 
+ localtime: ../udf/posix-stat.cbl 
+ 
+ # Run the tests
+ test: $(TESTS)
+ 	@$(foreach P,$(TESTS),echo $(P):; ./$(P);)
+ 
+ clean:
+ 	rm -f *.o $(basename $(wildcard *.cbl))
+ 
+ 
diff -Nrcpad gcc-16-20251109/libgcobol/posix/t/errno.cbl gcc-16-20251116/libgcobol/posix/t/errno.cbl
*** gcc-16-20251109/libgcobol/posix/t/errno.cbl	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgcobol/posix/t/errno.cbl	Sun Nov 16 22:34:49 2025
***************
*** 0 ****
--- 1,31 ----
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+       *  This program is in the public domain.
+       *  Contributed by James K. Lowden of Cobolworx in October 2025
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ 
+         COPY posix-mkdir.
+         COPY posix-errno.
+ 
+         Identification Division.
+         Program-ID. test-errno.
+         Data Division.
+         Working-Storage Section.
+         77 Return-Value Binary-Long.
+         77 Exit-Status Binary-Long Value 1.
+         77 error-msg PIC X(100).
+         77 errnum Binary-Long.
+         77 Filename PIC X(100) Value '/'.
+ 
+         Procedure Division.
+         Display 'calling posix-mkdir with a foolish name ...'
+         Move Function posix-mkdir(Filename, 0) to Return-Value.
+         If Return-Value <> 0
+             Display 'calling posix-errno ...'
+             Move Function posix-errno(error-msg) to errnum
+             Display 'error: "' Filename '": ' error-msg ' (' errnum ')'
+             Goback with Error Status errnum
+         Else
+             Display 'Return-Value is ' Return-Value
+         End-If.
+ 
+         Goback.
diff -Nrcpad gcc-16-20251109/libgcobol/posix/t/exit.cbl gcc-16-20251116/libgcobol/posix/t/exit.cbl
*** gcc-16-20251109/libgcobol/posix/t/exit.cbl	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgcobol/posix/t/exit.cbl	Sun Nov 16 22:34:49 2025
***************
*** 0 ****
--- 1,20 ----
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+       *  This program is in the public domain.
+       *  Contributed by James K. Lowden of Cobolworx in October 2025
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ 
+         COPY posix-exit.
+ 
+         Identification Division.
+         Program-ID. test-exit.
+         Data Division.
+         Working-Storage Section.
+         77 Return-Value Binary-Long.
+         77 Exit-Status Binary-Long Value 1.
+ 
+         Procedure Division.
+         Display 'calling posix-exit ...'
+         Move Function posix-exit(Exit-Status) to Return-Value.
+       * Does not return, Does not print
+         Display 'How did we get here?'
+         Goback.
diff -Nrcpad gcc-16-20251109/libgcobol/posix/t/localtime.cbl gcc-16-20251116/libgcobol/posix/t/localtime.cbl
*** gcc-16-20251109/libgcobol/posix/t/localtime.cbl	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgcobol/posix/t/localtime.cbl	Sun Nov 16 22:34:49 2025
***************
*** 0 ****
--- 1,52 ----
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+       *  This program is in the public domain.
+       *  Contributed by James K. Lowden of Cobolworx in October 2025
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ 
+       * Include the posix-stat and posix-localtime functions.
+         COPY posix-stat.
+         COPY posix-localtime.
+         COPY posix-errno.
+ 
+         Identification Division.
+         Program-ID. test-localtime.
+         Data Division.
+         Working-Storage Section.
+         77 Return-Value Usage Binary-Long.
+         77 Stat-Status  Usage Binary-Long Value 1.
+         77 Filename     Pic x(80) Value 'Makefile'.
+         77 Msg Pic x(100).
+         01 Lk-statbuf.
+         COPY statbuf.
+         01 Lk-tm.
+         COPY tm.
+         01 Today.
+            02 tm_year PIC 9999.
+            02 tm_mon  PIC 99.
+            02 tm_wday PIC 99.
+ 
+         Procedure Division.
+         Display 'calling posix-stat for ' Function Trim(Filename) ' ...'
+         Move Function posix-stat(Filename, lk-statbuf) to Return-Value.
+         Display 'posix-stat returned: ' Return-Value.
+         If Return-Value < 0 then
+           Display Function Trim(Filename) ': '
+                   'errno ', Function posix-errno(Msg), ': ' Msg
+           Goback.
+ 
+         Display 'calling posix-localtime ...'
+         Move Function posix-localtime(st_mtime, lk-tm) to Return-Value.
+         Display 'posix-localtime returned: ' Return-Value.
+         If Return-Value < 0 then
+           Display 'posix-localtime: ', Function Trim(Filename) ': '
+                   'errno ', Function posix-errno(Msg), ': ' Msg
+                 ' (st_mtime ' st_mtime ')'
+           Goback.
+         Move Corresponding Lk-tm to Today.
+         Add 1900 to tm_year of Today.
+         Display "'" Function trim(Filename) "'"
+                 ' (st_mtime ' st_mtime ') modified '
+                 tm_year of Today '-'
+                 tm_mon  of Today '-'
+                 tm_wday of Today.
+         Goback.
diff -Nrcpad gcc-16-20251109/libgcobol/posix/t/stat.cbl gcc-16-20251116/libgcobol/posix/t/stat.cbl
*** gcc-16-20251109/libgcobol/posix/t/stat.cbl	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgcobol/posix/t/stat.cbl	Sun Nov 16 22:34:49 2025
***************
*** 0 ****
--- 1,29 ----
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+       *  This program is in the public domain.
+       *  Contributed by James K. Lowden of Cobolworx in October 2025
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ 
+       * Include the posix-stat function
+         COPY posix-stat.
+         COPY posix-errno.
+ 
+         Identification Division.
+         Program-ID. test-stat.
+         Data Division.
+         Working-Storage Section.
+         77 Return-Value Usage Binary-Long.
+         77 Stat-Status  Usage Binary-Long Value 1.
+         77 Filename     Pic x(80) Value 'Makefile'.
+         77 Msg Pic x(100).
+         01 Lk-statbuf.
+         COPY statbuf.
+         
+         Procedure Division.
+         Display 'calling posix-stat ...'
+         Move Function posix-stat(Filename, lk-statbuf) to Return-Value.
+         Display 'posix-stat return value:' Return-Value.
+         If Return-Value < 0 then
+           Display Function Trim(Filename) ': '
+                   'errno ', Function posix-errno(Msg), ': ' Msg.
+           
+         Goback.
diff -Nrcpad gcc-16-20251109/libgcobol/posix/tm.h gcc-16-20251116/libgcobol/posix/tm.h
*** gcc-16-20251109/libgcobol/posix/tm.h	Sun Nov  9 22:34:16 2025
--- gcc-16-20251116/libgcobol/posix/tm.h	Thu Jan  1 00:00:00 1970
***************
*** 1,11 ****
- struct posix_tm {
-   int tm_sec;    /* Seconds (0-60) */
-   int tm_min;    /* Minutes (0-59) */
-   int tm_hour;   /* Hours (0-23) */
-   int tm_mday;   /* Day of the month (1-31) */
-   int tm_mon;    /* Month (0-11) */
-   int tm_year;   /* Year - 1900 */
-   int tm_wday;   /* Day of the week (0-6, Sunday = 0) */
-   int tm_yday;   /* Day in the year (0-365, 1 Jan = 0) */
-   int tm_isdst;  /* Daylight saving time */
- };
--- 0 ----
diff -Nrcpad gcc-16-20251109/libgcobol/posix/udf/posix-exit.cbl gcc-16-20251116/libgcobol/posix/udf/posix-exit.cbl
*** gcc-16-20251109/libgcobol/posix/udf/posix-exit.cbl	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgcobol/posix/udf/posix-exit.cbl	Sun Nov 16 22:34:49 2025
***************
*** 0 ****
--- 1,12 ----
+        Identification Division.
+        Function-ID. posix-exit.
+ 
+        Data Division.
+        Linkage Section.
+        77 Return-Value Binary-Long.
+        77 Exit-Status Binary-Long.
+ 
+        Procedure Division using Exit-Status Returning Return-Value.
+        CALL "_exit" using by value Exit-Status.
+        Goback.
+        END FUNCTION posix-exit.
\ No newline at end of file
diff -Nrcpad gcc-16-20251109/libgcobol/posix/udf/posix-localtime.cbl gcc-16-20251116/libgcobol/posix/udf/posix-localtime.cbl
*** gcc-16-20251109/libgcobol/posix/udf/posix-localtime.cbl	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgcobol/posix/udf/posix-localtime.cbl	Sun Nov 16 22:34:49 2025
***************
*** 0 ****
--- 1,35 ----
+       *  int  stat(const char *  pathname,  struct stat *  statbuf)
+         Identification Division.
+         Function-ID. posix-localtime.
+         Data Division.
+         Working-Storage Section.
+           77 bufsize Usage Binary-Long.
+           77 Tm-pointer Usage Pointer.
+           01 Lk-tm-posix Based.
+           COPY tm.
+         Linkage Section.
+           77 Return-Value Usage Binary-Long.
+           01 Lk-timep Usage Binary-Long.
+           01 Lk-tm.
+           COPY tm.
+           
+         Procedure Division using
+              By Reference Lk-timep,
+              By Reference Lk-tm, 
+              Returning Return-Value.
+ 
+           Move Function Length(Lk-tm-posix) to bufsize.
+           Call "posix_localtime" using
+              By Reference Lk-timep,
+              By Value     bufsize, 
+              Returning tm-pointer.
+ 
+           If tm-pointer = NULL
+              move -1 to Return-Value
+           Else
+              move 0 to Return-Value
+              set address of lk-tm-posix to tm-pointer
+              move lk-tm-posix to lk-tm.
+              
+           Goback.
+         End Function posix-localtime.
diff -Nrcpad gcc-16-20251109/libgcobol/posix/udf/posix-mkdir.cbl gcc-16-20251116/libgcobol/posix/udf/posix-mkdir.cbl
*** gcc-16-20251109/libgcobol/posix/udf/posix-mkdir.cbl	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgcobol/posix/udf/posix-mkdir.cbl	Sun Nov 16 22:34:49 2025
***************
*** 0 ****
--- 1,21 ----
+         Identification Division.
+         Function-ID. posix-mkdir.
+         Data Division.
+         Working-Storage Section.
+           77 bufsize Usage Binary-Long.
+         Linkage Section.
+           77 Return-Value Binary-Long.
+           01 Lk-pathname PIC X ANY LENGTH.
+           01 Lk-Mode Binary-Long.
+           
+         Procedure Division using
+              By Reference Lk-pathname,
+              By Value Lk-Mode, 
+              Returning Return-Value.
+           Inspect Backward Lk-pathname Replacing Leading Space By Low-Value
+           Call "mkdir" using
+              By Reference Lk-pathname,
+              By Value Lk-Mode, 
+              Returning Return-Value.
+           Goback.
+         End Function posix-mkdir.
diff -Nrcpad gcc-16-20251109/libgcobol/posix/udf/posix-stat.cbl gcc-16-20251116/libgcobol/posix/udf/posix-stat.cbl
*** gcc-16-20251109/libgcobol/posix/udf/posix-stat.cbl	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgcobol/posix/udf/posix-stat.cbl	Sun Nov 16 22:34:49 2025
***************
*** 0 ****
--- 1,62 ----
+        >>PUSH SOURCE FORMAT
+        >>SOURCE FIXED
+       * int  stat(const char *  pathname,  struct stat *  statbuf)
+         Identification Division.
+         Function-ID. posix-stat.
+ 
+         Environment Division.
+         Configuration Section.
+           Source-Computer. Alpha-Romeo
+         >>IF DEBUGGING-MODE is Defined
+           With Debugging Mode
+         >>END-IF
+           .
+         
+         Data Division.
+         Working-Storage Section.
+           77 bufsize Usage Binary-Long.
+           77 Ws-pathname PIC X(8192).
+         Linkage Section.
+           77 Return-Value Binary-Long.
+           01 Lk-pathname PIC X ANY LENGTH.
+           01 Lk-statbuf.
+           COPY statbuf.
+           
+         Procedure Division using
+              By Reference Lk-pathname,
+              By Reference Lk-statbuf, 
+              Returning Return-Value.
+ 
+           Move Lk-pathname To Ws-pathname.
+           Inspect Ws-pathname 
+                   Replacing Trailing Space By Low-Value
+ 
+           Move Function Byte-Length(Lk-statbuf) to bufsize.
+ 
+       D   Display 'posix-stat: Ws-pathname ', Ws-pathname.
+       D   Display 'posix-stat: Lk-statbuf has ', bufsize ' bytes'.
+ 
+           Call "posix_stat" using Ws-pathname, Lk-statbuf
+                      By Value     bufsize
+                         Returning Return-Value.
+       D      Perform Show-Statbuf.
+           Goback.
+ 
+           Show-Statbuf Section.
+ 
+             Display 'st_dev:     '  st_dev.
+             Display 'st_ino:     '  st_ino.
+             Display 'st_mode:    '  st_mode.
+             Display 'st_nlink:   '  st_nlink.
+             Display 'st_uid:     '  st_uid.
+             Display 'st_gid:     '  st_gid.
+             Display 'st_rdev:    '  st_rdev.
+             Display 'st_size:    '  st_size.
+             Display 'st_blksize: '  st_blksize.
+             Display 'st_blocks:  '  st_blocks.
+             Display 'st_atime:   '  st_atime.
+             Display 'st_mtime:   '  st_mtime.
+             Display 'st_ctime:   '  st_ctime.
+ 
+         End Function posix-stat.
+         >> POP SOURCE FORMAT
diff -Nrcpad gcc-16-20251109/libgcobol/posix/udf/posix-unlink.cbl gcc-16-20251116/libgcobol/posix/udf/posix-unlink.cbl
*** gcc-16-20251109/libgcobol/posix/udf/posix-unlink.cbl	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgcobol/posix/udf/posix-unlink.cbl	Sun Nov 16 22:34:49 2025
***************
*** 0 ****
--- 1,32 ----
+        >>PUSH SOURCE FORMAT
+        >>SOURCE FIXED
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+       *  This function is in the public domain.
+       *  Contributed by 
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *   
+         Identification Division.
+         Function-ID. posix-unlink.
+         Data Division.
+         Working-Storage Section.
+           77 bufsize Usage Binary-Long.
+           77 Ws-pathname PIC X(8192).
+         Linkage Section.
+           77 Return-Value Binary-Long.
+           01 Lk-pathname PIC X ANY LENGTH.
+           
+         Procedure Division using
+              By Reference Lk-pathname,
+              Returning Return-Value.
+ 
+           Move Lk-pathname To Ws-pathname.
+           Inspect Ws-pathname 
+                   Replacing Trailing Space By Low-Value
+ 
+           Inspect Backward Ws-pathname Replacing Leading Space, 
+       -      By Low-Value.
+           Call "unlink" using
+              By Reference Ws-pathname,
+              Returning Return-Value.
+           Goback.
+         End Function posix-unlink.
+         >> POP SOURCE FORMAT
diff -Nrcpad gcc-16-20251109/libgcobol/valconv.cc gcc-16-20251116/libgcobol/valconv.cc
*** gcc-16-20251109/libgcobol/valconv.cc	Sun Nov  9 22:34:16 2025
--- gcc-16-20251116/libgcobol/valconv.cc	Sun Nov 16 22:34:49 2025
*************** expand_picture(char *dest, const char *p
*** 145,151 ****
        *d++ = ch;
        }
  
!     if( __gg__currency_signs[ch] )
        {
        // We are going to be mapping ch to a string in the final result:
        prior_ch = ch;
--- 145,151 ----
        *d++ = ch;
        }
  
!     if( ! __gg__currency_signs[ch].empty() )
        {
        // We are going to be mapping ch to a string in the final result:
        prior_ch = ch;
*************** expand_picture(char *dest, const char *p
*** 160,167 ****
  
    if( currency_symbol )
      {
!     size_t sign_length = strlen(__gg__currency_signs[currency_symbol]) - 1;
!     if( sign_length )
        {
        char *pcurrency = strchr(dest, currency_symbol);
        assert(pcurrency);
--- 160,168 ----
  
    if( currency_symbol )
      {
!     size_t sign_length = __gg__currency_signs[currency_symbol].size();
!     assert(0 < sign_length);    
!     if( --sign_length )
        {
        char *pcurrency = strchr(dest, currency_symbol);
        assert(pcurrency);
*************** __gg__string_to_numeric_edited( char * c
*** 279,288 ****
    for(int i=0; i<dlength; i++)
      {
      int ch = (unsigned int)dest[i] & 0xFF;
!     if( __gg__currency_signs[ch] )
        {
        currency_picture = ch;
!       currency_sign = __gg__currency_signs[ch];
        break;
        }
      }
--- 280,289 ----
    for(int i=0; i<dlength; i++)
      {
      int ch = (unsigned int)dest[i] & 0xFF;
!     if( ! __gg__currency_signs[ch].empty() )
        {
        currency_picture = ch;
!       currency_sign = __gg__currency_signs[ch].c_str();
        break;
        }
      }
*************** __gg__string_to_alpha_edited(   char *de
*** 1276,1298 ****
    
  extern "C"
  void
! __gg__currency_sign_init()
    {
!   for(int symbol=0; symbol<256; symbol++)
!     {
!     if( __gg__currency_signs[symbol] )
!       {
!       free(__gg__currency_signs[symbol]);
!       __gg__currency_signs[symbol] = NULL;
!       }
!     }
    }
  
  extern "C"
  void
  __gg__currency_sign(int symbol, const char *sign)
    {
!   __gg__currency_signs[symbol] = strdup(sign);
    __gg__default_currency_sign = *sign;
    }
  
--- 1277,1294 ----
    
  extern "C"
  void
! __gg__currency_sign_init() // This duplicates the constructor. 
    {
!   for( auto str : __gg__currency_signs ) {
!     str.clear();
!   }
    }
  
  extern "C"
  void
  __gg__currency_sign(int symbol, const char *sign)
    {
!   __gg__currency_signs[symbol] = sign;
    __gg__default_currency_sign = *sign;
    }
  
diff -Nrcpad gcc-16-20251109/libgcobol/xmlparse.cc gcc-16-20251116/libgcobol/xmlparse.cc
*** gcc-16-20251109/libgcobol/xmlparse.cc	Sun Nov  9 22:34:16 2025
--- gcc-16-20251116/libgcobol/xmlparse.cc	Sun Nov 16 22:34:49 2025
*************** static void fatalError(void * CTX, const
*** 408,414 ****
  }
  
  #if 0
- 
  static xmlEntityPtr getEntity(void * CTX,
                                const xmlChar * name)
  { SAYSO_DATAZ(name); }
--- 408,413 ----
*************** xmlchar_of( const char input[] ) {
*** 618,623 ****
--- 617,623 ----
  static const char *
  xmlParserErrors_str( xmlParserErrors erc, const char name[] ) {
    const char *msg = "???";
+ 
    switch( erc ) {
    case XML_ERR_OK:
      msg = "Success";
*************** static class context_t {
*** 675,681 ****
      /* Avoid a NULL entry.  */
      static const char * const ident = "unnamed_COBOL_program";
  #endif
!     // TODO: Program to set option in library via command-line and/or environment.
      //       Library listens to program, not to the environment.
      openlog(ident, option, facility);
  
--- 675,682 ----
      /* Avoid a NULL entry.  */
      static const char * const ident = "unnamed_COBOL_program";
  #endif
!     // TODO: Program to set option in library via command-line and/or
!     // environment.
      //       Library listens to program, not to the environment.
      openlog(ident, option, facility);
  
*************** static class context_t {
*** 683,689 ****
    }
  
    void
!   push( cblc_field_t *input_field, size_t input_offset, size_t len, bool done ) {
      if( ! ctxt ) {
        init();
      }
--- 684,692 ----
    }
  
    void
!   push( const cblc_field_t *input_field,
!         size_t input_offset,
!         size_t len, bool done ) {
      if( ! ctxt ) {
        init();
      }
*************** static class context_t {
*** 712,718 ****
      }
    }
  
- 
   protected:
    void init() {
      const char *external_entities = nullptr;
--- 715,720 ----
*************** static class context_t {
*** 724,730 ****
  } context;
  
  static int
! xml_push_parse( cblc_field_t *input_field,
                    size_t        input_offset,
                    size_t        len,
                    cblc_field_t *encoding __attribute__ ((unused)),
--- 726,732 ----
  } context;
  
  static int
! xml_push_parse(   const cblc_field_t *input_field,
                    size_t        input_offset,
                    size_t        len,
                    cblc_field_t *encoding __attribute__ ((unused)),
diff -Nrcpad gcc-16-20251109/libgfortran/ChangeLog gcc-16-20251116/libgfortran/ChangeLog
*** gcc-16-20251109/libgfortran/ChangeLog	Sun Nov  9 22:34:16 2025
--- gcc-16-20251116/libgfortran/ChangeLog	Sun Nov 16 22:34:49 2025
***************
*** 1,3 ****
--- 1,14 ----
+ 2025-11-11  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR libfortran/90374
+ 	PR libfortran/90374
+ 	* io/format.c (parse_format_list): Set exponent width to unspecified.
+ 
+ 2025-11-09  Mark Wielaard  <mark@klomp.org>
+ 
+ 	* Makefile.in: Regenerate.
+ 	* aclocal.m4: Regenerate.
+ 
  2025-11-08  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
  
  	PR fortran/121628
diff -Nrcpad gcc-16-20251109/libgfortran/io/format.c gcc-16-20251116/libgfortran/io/format.c
*** gcc-16-20251109/libgfortran/io/format.c	Sun Nov  9 22:34:16 2025
--- gcc-16-20251116/libgfortran/io/format.c	Sun Nov 16 22:34:49 2025
*************** parse_format_list (st_parameter_dt *dtp,
*** 945,950 ****
--- 945,951 ----
  	      goto finished;
  	    }
  	  tail->u.real.w = 0;
+ 	  tail->u.real.e = -1;
  
  	  /* Look for the dot seperator.  */
  	  u = format_lex (fmt);
diff -Nrcpad gcc-16-20251109/libgomp/ChangeLog gcc-16-20251116/libgomp/ChangeLog
*** gcc-16-20251109/libgomp/ChangeLog	Sun Nov  9 22:34:22 2025
--- gcc-16-20251116/libgomp/ChangeLog	Sun Nov 16 22:34:53 2025
***************
*** 1,3 ****
--- 1,103 ----
+ 2025-11-13  Andrew Stubbs  <ams@codesourcery.com>
+ 	    Kwok Cheung Yeung  <kcyeung@baylibre.com>
+ 	    Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	* allocator.c (ompx_gnu_max_predefined_alloc): Update to
+ 	ompx_gnu_managed_mem_alloc.
+ 	(_Static_assert): Fix assertion messages for allocators and add
+ 	new assertions for memspace constants.
+ 	(omp_max_predefined_mem_space): New define.
+ 	(ompx_gnu_min_predefined_mem_space): New define.
+ 	(ompx_gnu_max_predefined_mem_space): New define.
+ 	(MEMSPACE_ALLOC): Add check for non-standard memspaces.
+ 	(MEMSPACE_CALLOC): Likewise.
+ 	(MEMSPACE_REALLOC): Likewise.
+ 	(MEMSPACE_VALIDATE): Likewise.
+ 	(predefined_ompx_gnu_alloc_mapping): Add ompx_gnu_managed_mem_space.
+ 	(omp_init_allocator): Add ompx_gnu_managed_mem_space validation.
+ 	* config/gcn/allocator.c (gcn_memspace_alloc): Add check for
+ 	non-standard memspaces.
+ 	(gcn_memspace_calloc): Likewise.
+ 	(gcn_memspace_realloc): Likewise.
+ 	(gcn_memspace_validate): Update to validate standard vs non-standard
+ 	memspaces.
+ 	* config/linux/allocator.c (linux_memspace_alloc): Add managed
+ 	memory space handling.
+ 	(linux_memspace_calloc): Likewise.
+ 	(linux_memspace_free): Likewise.
+ 	(linux_memspace_realloc): Likewise (returns NULL for fallback).
+ 	* config/nvptx/allocator.c (nvptx_memspace_alloc): Add check for
+ 	non-standard memspaces.
+ 	(nvptx_memspace_calloc): Likewise.
+ 	(nvptx_memspace_realloc): Likewise.
+ 	(nvptx_memspace_validate): Update to validate standard vs non-standard
+ 	memspaces.
+ 	* env.c (parse_allocator): Add ompx_gnu_managed_mem_alloc,
+ 	ompx_gnu_managed_mem_space, and some static asserts so I don't forget
+ 	them again.
+ 	* libgomp-plugin.h (GOMP_OFFLOAD_managed_alloc): New declaration.
+ 	(GOMP_OFFLOAD_managed_free): New declaration.
+ 	* libgomp.h (gomp_managed_alloc): New declaration.
+ 	(gomp_managed_free): New declaration.
+ 	(struct gomp_device_descr): Add managed_alloc_func and
+ 	managed_free_func fields.
+ 	* libgomp.texi: Document ompx_gnu_managed_mem_alloc and
+ 	ompx_gnu_managed_mem_space, add C++ template documentation, and
+ 	describe NVPTX and AMD support.
+ 	* omp.h.in: Add ompx_gnu_managed_mem_space and
+ 	ompx_gnu_managed_mem_alloc enumerators, and gnu_managed_mem C++
+ 	allocator template.
+ 	* omp_lib.f90.in: Add Fortran bindings for new allocator and
+ 	memory space.
+ 	* omp_lib.h.in: Likewise.
+ 	* plugin/cuda-lib.def: Add cuMemAllocManaged.
+ 	* plugin/plugin-nvptx.c (nvptx_alloc): Add managed parameter to
+ 	support cuMemAllocManaged.
+ 	(GOMP_OFFLOAD_alloc): Move contents to ...
+ 	(cleanup_and_alloc): ... this new function, and add managed support.
+ 	(GOMP_OFFLOAD_managed_alloc): New function.
+ 	(GOMP_OFFLOAD_managed_free): New function.
+ 	* target.c (gomp_managed_alloc): New function.
+ 	(gomp_managed_free): New function.
+ 	(gomp_load_plugin_for_device): Load optional managed_alloc
+ 	and managed_free plugin APIs.
+ 	* testsuite/lib/libgomp.exp: Add check_effective_target_omp_managedmem.
+ 	* testsuite/libgomp.c++/alloc-managed-1.C: New test.
+ 	* testsuite/libgomp.c/alloc-managed-1.c: New test.
+ 	* testsuite/libgomp.c/alloc-managed-2.c: New test.
+ 	* testsuite/libgomp.c/alloc-managed-3.c: New test.
+ 	* testsuite/libgomp.c/alloc-managed-4.c: New test.
+ 	* testsuite/libgomp.fortran/alloc-managed-1.f90: New test.
+ 
+ 2025-11-12  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	PR libgomp/119677
+ 	* testsuite/libgomp.c-c++-common/target-is-accessible-1.c: Modify
+ 	test as -5 is now a conforming device number.
+ 	* testsuite/libgomp.fortran/target-is-accessible-1.f90: Likewise.
+ 
+ 2025-11-12  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* libgomp.texi (OpenMP Implementation Status): Add TR14.
+ 
+ 2025-11-12  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	PR libgomp/119677
+ 	* omp.h.in (omp_default_device): New enum value.
+ 	* omp_lib.f90.in: New parameter.
+ 	* omp_lib.h.in: Likewise
+ 	* target.c (gomp_get_default_device): New. Split off from ...
+ 	(resolve_device): ... here; call it.
+ 	(omp_target_alloc, omp_target_free, omp_target_is_present,
+ 	omp_target_memcpy_check, omp_target_memset, omp_target_memset_async,
+ 	omp_target_associate_ptr, omp_get_mapped_ptr,
+ 	omp_target_is_accessible, omp_pause_resource,
+ 	omp_get_uid_from_device): Handle omp_default_device.
+ 	* testsuite/libgomp.c/device_uid.c: Likewise.
+ 	* testsuite/libgomp.fortran/device_uid.f90: Likewise.
+ 	* testsuite/libgomp.c-c++-common/omp-default-device.c: New test.
+ 	* testsuite/libgomp.fortran/omp-default-device.f90: New test.
+ 
  2025-11-05  Tobias Burnus  <tburnus@baylibre.com>
  
  	* testsuite/libgomp.c++/target-std__multimap-concurrent.C: Fix memory
diff -Nrcpad gcc-16-20251109/libgomp/allocator.c gcc-16-20251116/libgomp/allocator.c
*** gcc-16-20251109/libgomp/allocator.c	Sun Nov  9 22:34:22 2025
--- gcc-16-20251116/libgomp/allocator.c	Sun Nov 16 22:34:53 2025
*************** GOMP_is_alloc (void *ptr)
*** 100,133 ****
  
  #define omp_max_predefined_alloc omp_thread_mem_alloc
  #define ompx_gnu_min_predefined_alloc ompx_gnu_pinned_mem_alloc
! #define ompx_gnu_max_predefined_alloc ompx_gnu_pinned_mem_alloc
  
  _Static_assert (GOMP_OMP_PREDEF_ALLOC_MAX == omp_thread_mem_alloc,
  		"GOMP_OMP_PREDEF_ALLOC_MAX == omp_thread_mem_alloc");
  _Static_assert (GOMP_OMPX_PREDEF_ALLOC_MIN == ompx_gnu_min_predefined_alloc,
! 		"GOMP_OMP_PREDEF_ALLOC_MAX == omp_thread_mem_alloc");
  _Static_assert (GOMP_OMPX_PREDEF_ALLOC_MAX == ompx_gnu_max_predefined_alloc,
! 		"GOMP_OMP_PREDEF_ALLOC_MAX == omp_thread_mem_alloc");
  _Static_assert (GOMP_OMP_PREDEF_ALLOC_THREADS == omp_thread_mem_alloc,
  		"GOMP_OMP_PREDEF_ALLOC_THREADS == omp_thread_mem_alloc");
  
  /* These macros may be overridden in config/<target>/allocator.c.
     The defaults (no override) are to return NULL for pinned memory requests
!    and pass through to the regular OS calls otherwise.
     The following definitions (ab)use comma operators to avoid unused
     variable errors.  */
  #ifndef MEMSPACE_ALLOC
  #define MEMSPACE_ALLOC(MEMSPACE, SIZE, PIN) \
!   (PIN ? NULL : malloc (((void)(MEMSPACE), (SIZE))))
  #endif
  #ifndef MEMSPACE_CALLOC
  #define MEMSPACE_CALLOC(MEMSPACE, SIZE, PIN) \
!   (PIN ? NULL : calloc (1, (((void)(MEMSPACE), (SIZE)))))
  #endif
  #ifndef MEMSPACE_REALLOC
  #define MEMSPACE_REALLOC(MEMSPACE, ADDR, OLDSIZE, SIZE, OLDPIN, PIN) \
!    ((PIN) || (OLDPIN) ? NULL \
!    : realloc (ADDR, (((void)(MEMSPACE), (void)(OLDSIZE), (SIZE)))))
  #endif
  #ifndef MEMSPACE_FREE
  #define MEMSPACE_FREE(MEMSPACE, ADDR, SIZE, PIN) \
--- 100,156 ----
  
  #define omp_max_predefined_alloc omp_thread_mem_alloc
  #define ompx_gnu_min_predefined_alloc ompx_gnu_pinned_mem_alloc
! #define ompx_gnu_max_predefined_alloc ompx_gnu_managed_mem_alloc
  
  _Static_assert (GOMP_OMP_PREDEF_ALLOC_MAX == omp_thread_mem_alloc,
  		"GOMP_OMP_PREDEF_ALLOC_MAX == omp_thread_mem_alloc");
  _Static_assert (GOMP_OMPX_PREDEF_ALLOC_MIN == ompx_gnu_min_predefined_alloc,
! 		"GOMP_OMPX_PREDEF_ALLOC_MIN == ompx_gnu_min_predefined_alloc");
  _Static_assert (GOMP_OMPX_PREDEF_ALLOC_MAX == ompx_gnu_max_predefined_alloc,
! 		"GOMP_OMPX_PREDEF_ALLOC_MAX == ompx_gnu_max_predefined_alloc");
  _Static_assert (GOMP_OMP_PREDEF_ALLOC_THREADS == omp_thread_mem_alloc,
  		"GOMP_OMP_PREDEF_ALLOC_THREADS == omp_thread_mem_alloc");
  
+ #define omp_max_predefined_mem_space omp_low_lat_mem_space
+ #define ompx_gnu_min_predefined_mem_space ompx_gnu_managed_mem_space
+ #define ompx_gnu_max_predefined_mem_space ompx_gnu_managed_mem_space
+ 
+ _Static_assert (GOMP_OMP_PREDEF_MEMSPACE_MAX == omp_max_predefined_mem_space,
+ 		"GOMP_OMP_PREDEF_MEMSPACE_MAX == omp_max_predefined_mem_space");
+ _Static_assert (GOMP_OMPX_PREDEF_MEMSPACE_MIN == ompx_gnu_min_predefined_mem_space,
+ 		"GOMP_OMPX_PREDEF_MEMSPACE_MIN == ompx_gnu_min_predefined_mem_space");
+ _Static_assert (GOMP_OMPX_PREDEF_MEMSPACE_MAX == ompx_gnu_max_predefined_mem_space,
+ 		"GOMP_OMPX_PREDEF_MEMSPACE_MAX == ompx_gnu_max_predefined_mem_space");
+ 
+ #if 0 /* For testing the fall-back macros compile, only.  */
+ #undef MEMSPACE_ALLOC
+ #undef MEMSPACE_CALLOC
+ #undef MEMSPACE_REALLOC
+ #undef MEMSPACE_FREE
+ #undef MEMSPACE_VALIDATE
+ #endif
+ 
  /* These macros may be overridden in config/<target>/allocator.c.
     The defaults (no override) are to return NULL for pinned memory requests
!    or non-standard memory spaces (these need a deliberate implementation), and
!    pass through to the regular OS calls otherwise.
     The following definitions (ab)use comma operators to avoid unused
     variable errors.  */
  #ifndef MEMSPACE_ALLOC
  #define MEMSPACE_ALLOC(MEMSPACE, SIZE, PIN) \
!   ((PIN) || (MEMSPACE) > GOMP_OMP_PREDEF_MEMSPACE_MAX \
!    ? NULL : malloc (((void)(MEMSPACE), (SIZE))))
  #endif
  #ifndef MEMSPACE_CALLOC
  #define MEMSPACE_CALLOC(MEMSPACE, SIZE, PIN) \
!   ((PIN) || (MEMSPACE) > GOMP_OMP_PREDEF_MEMSPACE_MAX \
!    ? NULL : calloc (1, (((void)(MEMSPACE), (SIZE)))))
  #endif
  #ifndef MEMSPACE_REALLOC
  #define MEMSPACE_REALLOC(MEMSPACE, ADDR, OLDSIZE, SIZE, OLDPIN, PIN) \
!    ((PIN) || (OLDPIN) || (MEMSPACE) > GOMP_OMP_PREDEF_MEMSPACE_MAX \
!     ? NULL \
!     : realloc (ADDR, (((void)(MEMSPACE), (void)(OLDSIZE), (SIZE)))))
  #endif
  #ifndef MEMSPACE_FREE
  #define MEMSPACE_FREE(MEMSPACE, ADDR, SIZE, PIN) \
*************** _Static_assert (GOMP_OMP_PREDEF_ALLOC_TH
*** 135,141 ****
  #endif
  #ifndef MEMSPACE_VALIDATE
  #define MEMSPACE_VALIDATE(MEMSPACE, ACCESS, PIN) \
!   (PIN ? 0 : ((void)(MEMSPACE), (void)(ACCESS), 1))
  #endif
  
  /* Map the predefined allocators to the correct memory space.
--- 158,165 ----
  #endif
  #ifndef MEMSPACE_VALIDATE
  #define MEMSPACE_VALIDATE(MEMSPACE, ACCESS, PIN) \
!   ((PIN) || (MEMSPACE) > GOMP_OMP_PREDEF_MEMSPACE_MAX \
!    ? 0 : ((void)(MEMSPACE), (void)(ACCESS), 1))
  #endif
  
  /* Map the predefined allocators to the correct memory space.
*************** static const omp_memspace_handle_t prede
*** 155,160 ****
--- 179,185 ----
  };
  static const omp_memspace_handle_t predefined_ompx_gnu_alloc_mapping[] = {
    omp_default_mem_space,   /* ompx_gnu_pinned_mem_alloc. */
+   ompx_gnu_managed_mem_space,  /* ompx_gnu_managed_mem_alloc. */
  };
  
  #define ARRAY_SIZE(A) (sizeof (A) / sizeof ((A)[0]))
*************** omp_init_allocator (omp_memspace_handle_
*** 389,395 ****
    struct omp_allocator_data *ret;
    int i;
  
!   if (memspace > omp_low_lat_mem_space)
      return omp_null_allocator;
    for (i = 0; i < ntraits; i++)
      switch (traits[i].key)
--- 414,422 ----
    struct omp_allocator_data *ret;
    int i;
  
!   if (memspace > omp_max_predefined_mem_space
!       && (memspace < ompx_gnu_min_predefined_mem_space
! 	  || memspace > ompx_gnu_max_predefined_mem_space))
      return omp_null_allocator;
    for (i = 0; i < ntraits; i++)
      switch (traits[i].key)
diff -Nrcpad gcc-16-20251109/libgomp/config/gcn/allocator.c gcc-16-20251116/libgomp/config/gcn/allocator.c
*** gcc-16-20251109/libgomp/config/gcn/allocator.c	Sun Nov  9 22:34:22 2025
--- gcc-16-20251116/libgomp/config/gcn/allocator.c	Sun Nov 16 22:34:53 2025
*************** gcn_memspace_alloc (omp_memspace_handle_
*** 56,63 ****
--- 56,67 ----
  
        return __gcn_lowlat_alloc (shared_pool, size);
      }
+   else if (memspace > GOMP_OMP_PREDEF_MEMSPACE_MAX)
+     /* No non-standard memspaces are implemented for device-side amdgcn.  */
+     return NULL;
    else
      return malloc (size);
+ 
  }
  
  static void *
*************** gcn_memspace_calloc (omp_memspace_handle
*** 69,74 ****
--- 73,81 ----
  
        return __gcn_lowlat_calloc (shared_pool, size);
      }
+   else if (memspace > GOMP_OMP_PREDEF_MEMSPACE_MAX)
+     /* No non-standard memspaces are implemented for device-side amdgcn.  */
+     return NULL;
    else
      return calloc (1, size);
  }
*************** gcn_memspace_realloc (omp_memspace_handl
*** 96,101 ****
--- 103,111 ----
  
        return __gcn_lowlat_realloc (shared_pool, addr, oldsize, size);
      }
+   else if (memspace > GOMP_OMP_PREDEF_MEMSPACE_MAX)
+     /* No non-standard memspaces are implemented for device-side amdgcn.  */
+     return NULL;
    else
      return realloc (addr, size);
  }
*************** gcn_memspace_validate (omp_memspace_hand
*** 105,112 ****
  {
    /* Disallow use of low-latency memory when it must be accessible by
       all threads.  */
!   return (memspace != omp_low_lat_mem_space
! 	  || access != omp_atv_all);
  }
  
  #define MEMSPACE_ALLOC(MEMSPACE, SIZE, PIN) \
--- 115,128 ----
  {
    /* Disallow use of low-latency memory when it must be accessible by
       all threads.  */
!   if (memspace == omp_low_lat_mem_space
!       && access == omp_atv_all)
!     return false;
! 
!   /* Otherwise, standard memspaces are accepted, even when we don't have
!      anything special to do with them, and non-standard memspaces are assumed
!      to need explicit support.  */
!   return (memspace <= GOMP_OMP_PREDEF_MEMSPACE_MAX);
  }
  
  #define MEMSPACE_ALLOC(MEMSPACE, SIZE, PIN) \
diff -Nrcpad gcc-16-20251109/libgomp/config/linux/allocator.c gcc-16-20251116/libgomp/config/linux/allocator.c
*** gcc-16-20251109/libgomp/config/linux/allocator.c	Sun Nov  9 22:34:22 2025
--- gcc-16-20251116/libgomp/config/linux/allocator.c	Sun Nov 16 22:34:53 2025
*************** linux_memspace_alloc (omp_memspace_handl
*** 80,86 ****
  {
    void *addr = NULL;
  
!   if (pin)
      {
        int using_device = __atomic_load_n (&using_device_for_page_locked,
  					  MEMMODEL_RELAXED);
--- 80,88 ----
  {
    void *addr = NULL;
  
!   if (memspace == ompx_gnu_managed_mem_space)
!     addr = gomp_managed_alloc (size);
!   else if (pin)
      {
        int using_device = __atomic_load_n (&using_device_for_page_locked,
  					  MEMMODEL_RELAXED);
*************** linux_memspace_alloc (omp_memspace_handl
*** 155,161 ****
  static void *
  linux_memspace_calloc (omp_memspace_handle_t memspace, size_t size, int pin)
  {
!   if (pin)
      return linux_memspace_alloc (memspace, size, pin, true);
    else
      return calloc (1, size);
--- 157,171 ----
  static void *
  linux_memspace_calloc (omp_memspace_handle_t memspace, size_t size, int pin)
  {
!   if (memspace == ompx_gnu_managed_mem_space)
!     {
!       void *ret = gomp_managed_alloc (size);
!       if (!ret)
! 	return NULL;
!       memset (ret, 0, size);
!       return ret;
!     }
!   else if (pin)
      return linux_memspace_alloc (memspace, size, pin, true);
    else
      return calloc (1, size);
*************** static void
*** 165,171 ****
  linux_memspace_free (omp_memspace_handle_t memspace, void *addr, size_t size,
  		     int pin)
  {
!   if (pin)
      {
        int using_device
  	= __atomic_load_n (&using_device_for_page_locked,
--- 175,183 ----
  linux_memspace_free (omp_memspace_handle_t memspace, void *addr, size_t size,
  		     int pin)
  {
!   if (memspace == ompx_gnu_managed_mem_space)
!     gomp_managed_free (addr);
!   else if (pin)
      {
        int using_device
  	= __atomic_load_n (&using_device_for_page_locked,
*************** static void *
*** 186,192 ****
  linux_memspace_realloc (omp_memspace_handle_t memspace, void *addr,
  			size_t oldsize, size_t size, int oldpin, int pin)
  {
!   if (oldpin && pin)
      {
        int using_device
  	= __atomic_load_n (&using_device_for_page_locked,
--- 198,207 ----
  linux_memspace_realloc (omp_memspace_handle_t memspace, void *addr,
  			size_t oldsize, size_t size, int oldpin, int pin)
  {
!   if (memspace == ompx_gnu_managed_mem_space)
!     /* Realloc is not implemented for device Managed Memory.  */
!     ;
!   else if (oldpin && pin)
      {
        int using_device
  	= __atomic_load_n (&using_device_for_page_locked,
*************** linux_memspace_realloc (omp_memspace_han
*** 221,227 ****
  static int
  linux_memspace_validate (omp_memspace_handle_t, unsigned, int)
  {
!   /* Everything should be accepted on Linux, including pinning.  */
    return 1;
  }
  
--- 236,243 ----
  static int
  linux_memspace_validate (omp_memspace_handle_t, unsigned, int)
  {
!   /* Everything should be accepted on Linux, including pinning and
!      non-standard memspaces.  */
    return 1;
  }
  
diff -Nrcpad gcc-16-20251109/libgomp/config/nvptx/allocator.c gcc-16-20251116/libgomp/config/nvptx/allocator.c
*** gcc-16-20251109/libgomp/config/nvptx/allocator.c	Sun Nov  9 22:34:22 2025
--- gcc-16-20251116/libgomp/config/nvptx/allocator.c	Sun Nov 16 22:34:53 2025
*************** nvptx_memspace_alloc (omp_memspace_handl
*** 61,66 ****
--- 61,69 ----
  
        return __nvptx_lowlat_alloc (shared_pool, size);
      }
+   else if (memspace > GOMP_OMP_PREDEF_MEMSPACE_MAX)
+     /* No non-standard memspaces are implemented for device-side nvptx.  */
+     return NULL;
    else
      return malloc (size);
  }
*************** nvptx_memspace_calloc (omp_memspace_hand
*** 75,80 ****
--- 78,86 ----
  
        return __nvptx_lowlat_calloc (shared_pool, size);
      }
+   else if (memspace > GOMP_OMP_PREDEF_MEMSPACE_MAX)
+     /* No non-standard memspaces are implemented for device-side nvptx.  */
+     return NULL;
    else
      return calloc (1, size);
  }
*************** nvptx_memspace_realloc (omp_memspace_han
*** 104,109 ****
--- 110,118 ----
  
        return __nvptx_lowlat_realloc (shared_pool, addr, oldsize, size);
      }
+   else if (memspace > GOMP_OMP_PREDEF_MEMSPACE_MAX)
+     /* No non-standard memspaces are implemented for device-side nvptx.  */
+     return NULL;
    else
      return realloc (addr, size);
  }
*************** nvptx_memspace_validate (omp_memspace_ha
*** 115,126 ****
      || (__PTX_ISA_VERSION_MAJOR__ == 4 && __PTX_ISA_VERSION_MINOR >= 1)
    /* Disallow use of low-latency memory when it must be accessible by
       all threads.  */
!   return (memspace != omp_low_lat_mem_space
! 	  || access != omp_atv_all);
  #else
    /* Low-latency memory is not available before PTX 4.1.  */
!   return (memspace != omp_low_lat_mem_space);
  #endif
  }
  
  #define MEMSPACE_ALLOC(MEMSPACE, SIZE, PIN) \
--- 124,142 ----
      || (__PTX_ISA_VERSION_MAJOR__ == 4 && __PTX_ISA_VERSION_MINOR >= 1)
    /* Disallow use of low-latency memory when it must be accessible by
       all threads.  */
!   if (memspace == omp_low_lat_mem_space
!       && access == omp_atv_all)
!     return false;
  #else
    /* Low-latency memory is not available before PTX 4.1.  */
!   if (memspace == omp_low_lat_mem_space)
!     return false;
  #endif
+ 
+   /* Otherwise, standard memspaces are accepted, even when we don't have
+      anything special to do with them, and non-standard memspaces are assumed
+      to need explicit support.  */
+   return (memspace <= GOMP_OMP_PREDEF_MEMSPACE_MAX);
  }
  
  #define MEMSPACE_ALLOC(MEMSPACE, SIZE, PIN) \
diff -Nrcpad gcc-16-20251109/libgomp/env.c gcc-16-20251116/libgomp/env.c
*** gcc-16-20251109/libgomp/env.c	Sun Nov  9 22:34:22 2025
--- gcc-16-20251116/libgomp/env.c	Sun Nov 16 22:34:53 2025
*************** parse_affinity (bool ignore)
*** 1231,1236 ****
--- 1231,1242 ----
    return false;
  }
  
+ /* These are reminders to add new allocators to parse_allocator.  */
+ _Static_assert (GOMP_OMP_PREDEF_ALLOC_MAX == omp_thread_mem_alloc);
+ _Static_assert (GOMP_OMPX_PREDEF_ALLOC_MAX == ompx_gnu_managed_mem_alloc);
+ _Static_assert (GOMP_OMP_PREDEF_MEMSPACE_MAX == omp_low_lat_mem_space);
+ _Static_assert (GOMP_OMPX_PREDEF_MEMSPACE_MAX == ompx_gnu_managed_mem_space);
+ 
  /* Parse the OMP_ALLOCATOR environment variable and return the value.  */
  static bool
  parse_allocator (const char *env, const char *val, void *const params[])
*************** parse_allocator (const char *env, const
*** 1249,1260 ****
      ++val;
    if (0)
      ;
! #define C(v, m) \
    else if (strncasecmp (val, #v, sizeof (#v) - 1) == 0)	\
      {							\
        *ret = v;						\
        val += sizeof (#v) - 1;				\
!       memspace = m;					\
      }
    C (omp_default_mem_alloc, false)
    C (omp_large_cap_mem_alloc, false)
--- 1255,1266 ----
      ++val;
    if (0)
      ;
! #define C(v, is_memspace) \
    else if (strncasecmp (val, #v, sizeof (#v) - 1) == 0)	\
      {							\
        *ret = v;						\
        val += sizeof (#v) - 1;				\
!       memspace = is_memspace;					\
      }
    C (omp_default_mem_alloc, false)
    C (omp_large_cap_mem_alloc, false)
*************** parse_allocator (const char *env, const
*** 1265,1275 ****
--- 1271,1283 ----
    C (omp_pteam_mem_alloc, false)
    C (omp_thread_mem_alloc, false)
    C (ompx_gnu_pinned_mem_alloc, false)
+   C (ompx_gnu_managed_mem_alloc, false)
    C (omp_default_mem_space, true)
    C (omp_large_cap_mem_space, true)
    C (omp_const_mem_space, true)
    C (omp_high_bw_mem_space, true)
    C (omp_low_lat_mem_space, true)
+   C (ompx_gnu_managed_mem_space, true)
  #undef C
    else
      goto invalid;
diff -Nrcpad gcc-16-20251109/libgomp/libgomp-plugin.h gcc-16-20251116/libgomp/libgomp-plugin.h
*** gcc-16-20251109/libgomp/libgomp-plugin.h	Sun Nov  9 22:34:22 2025
--- gcc-16-20251116/libgomp/libgomp-plugin.h	Sun Nov 16 22:34:53 2025
*************** extern int GOMP_OFFLOAD_load_image (int,
*** 171,176 ****
--- 171,178 ----
  extern bool GOMP_OFFLOAD_unload_image (int, unsigned, const void *);
  extern void *GOMP_OFFLOAD_alloc (int, size_t);
  extern bool GOMP_OFFLOAD_free (int, void *);
+ extern void *GOMP_OFFLOAD_managed_alloc (int, size_t);
+ extern bool GOMP_OFFLOAD_managed_free (int, void *);
  extern bool GOMP_OFFLOAD_page_locked_host_alloc (void **, size_t);
  extern bool GOMP_OFFLOAD_page_locked_host_free (void *);
  extern bool GOMP_OFFLOAD_dev2host (int, void *, const void *, size_t);
diff -Nrcpad gcc-16-20251109/libgomp/libgomp.h gcc-16-20251116/libgomp/libgomp.h
*** gcc-16-20251109/libgomp/libgomp.h	Sun Nov  9 22:34:22 2025
--- gcc-16-20251116/libgomp/libgomp.h	Sun Nov 16 22:34:53 2025
*************** extern int gomp_get_num_devices (void);
*** 1135,1140 ****
--- 1135,1142 ----
  extern bool gomp_target_task_fn (void *);
  extern void gomp_target_rev (uint64_t, uint64_t, uint64_t, uint64_t, uint64_t,
  			     int, struct goacc_asyncqueue *);
+ extern void *gomp_managed_alloc (size_t size);
+ extern void gomp_managed_free (void *device_ptr);
  extern bool gomp_page_locked_host_alloc (void **, size_t);
  extern void gomp_page_locked_host_free (void *);
  
*************** struct gomp_device_descr
*** 1421,1426 ****
--- 1423,1430 ----
    __typeof (GOMP_OFFLOAD_unload_image) *unload_image_func;
    __typeof (GOMP_OFFLOAD_alloc) *alloc_func;
    __typeof (GOMP_OFFLOAD_free) *free_func;
+   __typeof (GOMP_OFFLOAD_managed_alloc) *managed_alloc_func;
+   __typeof (GOMP_OFFLOAD_managed_free) *managed_free_func;
    __typeof (GOMP_OFFLOAD_page_locked_host_alloc) *page_locked_host_alloc_func;
    __typeof (GOMP_OFFLOAD_page_locked_host_free) *page_locked_host_free_func;
    __typeof (GOMP_OFFLOAD_dev2host) *dev2host_func;
diff -Nrcpad gcc-16-20251109/libgomp/libgomp.texi gcc-16-20251116/libgomp/libgomp.texi
*** gcc-16-20251109/libgomp/libgomp.texi	Sun Nov  9 22:34:22 2025
--- gcc-16-20251116/libgomp/libgomp.texi	Sun Nov 16 22:34:53 2025
*************** See also @ref{OpenMP Implementation Stat
*** 170,175 ****
--- 170,176 ----
  * OpenMP 5.1:: Feature completion status to 5.1 specification
  * OpenMP 5.2:: Feature completion status to 5.2 specification
  * OpenMP 6.0:: Feature completion status to 6.0 specification
+ * OpenMP Technical Report 14:: Feature completion status to first 6.1 preview
  @end menu
  
  The @code{_OPENMP} preprocessor macro and Fortran's @code{openmp_version}
*************** to address of matching mapped list item
*** 651,656 ****
--- 652,690 ----
  @end multitable
  
  
+ @node OpenMP Technical Report 14
+ @section OpenMP Technical Report 14
+ 
+ Technical Report (TR) 14 is the first preview for OpenMP 6.1.
+ 
+ @unnumberedsubsec New features listed in Appendix B of the OpenMP specification
+ @multitable @columnfractions .60 .10 .25
+ @item The @code{depth} clause to @code{fuse} directive @tab N @tab
+ @item The @code{attach} modifier to the @code{map} clause @tab N @tab
+ @item The @code{dyn_groupprivate} clause and the
+       @code{omp_get_dyn_groupprivate_ptr}, @code{omp_get_dyn_groupprivate_size},
+       and @code{omp_get_dyn_groupprivate_size} routines @tab N @tab
+ @item @code{begin declare_variant} directive in Fortran @tab N @tab
+ @item @code{grid} and @code{tile} modifier to the @code{size} clause @tab N @tab
+ @item New @code{flatten} loop-transforming directive @tab N @tab
+ @item @code{scaled} modifier to @code{simdlen} clause @tab N @tab
+ @item New @code{omp_default_device} identifier as conforming device number
+       @tab Y @tab
+ @item Clarify when @code{omp_target_is_accessible} routine returns zero
+       @tab N @tab
+ @end multitable
+ 
+ @unnumberedsubsec Deprecated features, unless listed above
+ @multitable @columnfractions .60 .10 .25
+ @item Deprecation of conditional-update-capture structured block without a
+       capture statement @tab N @tab
+ @end multitable
+ 
+ @c @unnumberedsubsec Other new OpenMP 6.1 features
+ @c @multitable @columnfractions .60 .10 .25
+ @c @end multitable
+ 
+ 
  
  @c ---------------------------------------------------------------------
  @c OpenMP Runtime Library Routines
*************** GCC supports the following predefined al
*** 6890,6895 ****
--- 6924,6930 ----
  @item omp_pteam_mem_alloc       @tab omp_low_lat_mem_space (implementation defined)
  @item omp_thread_mem_alloc      @tab omp_low_lat_mem_space (implementation defined)
  @item ompx_gnu_pinned_mem_alloc @tab omp_default_mem_space (GNU extension)
+ @item ompx_gnu_managed_mem_alloc @tab ompx_gnu_managed_mem_space (GNU extension)
  @end multitable
  
  Each predefined allocator, including @code{omp_null_allocator}, has a corresponding
*************** The following allocator templates are su
*** 6917,6922 ****
--- 6952,6958 ----
  @item omp_pteam_mem_alloc       @tab omp::allocator::pteam_mem
  @item omp_thread_mem_alloc      @tab omp::allocator::thread_mem
  @item ompx_gnu_pinned_mem_alloc @tab ompx::allocator::gnu_pinned_mem
+ @item ompx_gnu_managed_mem_alloc @tab ompx::allocator::gnu_managed_mem
  @end multitable
  
  The following traits are available when constructing a new allocator;
*************** For the memory spaces, the following app
*** 6976,6981 ****
--- 7012,7030 ----
        unless the memkind library is available
  @item @code{omp_high_bw_mem_space} maps to @code{omp_default_mem_space},
        unless the memkind library is available
+ @item @code{ompx_gnu_managed_mem_space} is a GNU extension that provides
+       managed memory accessible by both host and devices.  The memory space is
+       available if the offload target associated with the
+       @var{default-device-var} ICV supports managed memory (see
+       @ref{Offload-Target Specifics}).  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.  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.
  @end itemize
  
  On Linux systems, where the @uref{https://github.com/memkind/memkind, memkind
*************** The implementation remark:
*** 7135,7140 ****
--- 7184,7194 ----
        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
*************** The implementation remark:
*** 7297,7302 ****
--- 7351,7370 ----
        @code{omp_thread_mem_alloc}, all use low-latency memory as first
        preference, and fall back to main graphics memory when the low-latency
        pool is exhausted.
+ @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
+       in the CUDA Managed Memory space using @code{cuMemAllocManaged}.  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 CUDA runtime
+       will automatically handle data migration between host and device as
+       needed.  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.
  @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 2D and 3D memory-copy
diff -Nrcpad gcc-16-20251109/libgomp/omp.h.in gcc-16-20251116/libgomp/omp.h.in
*** gcc-16-20251109/libgomp/omp.h.in	Sun Nov  9 22:34:22 2025
--- gcc-16-20251116/libgomp/omp.h.in	Sun Nov 16 22:34:53 2025
*************** typedef enum omp_memspace_handle_t __GOM
*** 121,126 ****
--- 121,127 ----
    omp_const_mem_space = 2,
    omp_high_bw_mem_space = 3,
    omp_low_lat_mem_space = 4,
+   ompx_gnu_managed_mem_space = 200,
    __omp_memspace_handle_t_max__ = __UINTPTR_MAX__
  } omp_memspace_handle_t;
  
*************** typedef enum omp_allocator_handle_t __GO
*** 136,141 ****
--- 137,143 ----
    omp_pteam_mem_alloc = 7,
    omp_thread_mem_alloc = 8,
    ompx_gnu_pinned_mem_alloc = 200,
+   ompx_gnu_managed_mem_alloc = 201,
    __omp_allocator_handle_t_max__ = __UINTPTR_MAX__
  } omp_allocator_handle_t;
  
*************** typedef enum omp_event_handle_t __GOMP_U
*** 189,195 ****
  enum
  {
    omp_initial_device = -1,
!   omp_invalid_device = -4
  };
  
  typedef enum omp_interop_t __GOMP_UINTPTR_T_ENUM
--- 191,198 ----
  enum
  {
    omp_initial_device = -1,
!   omp_invalid_device = -4,
!   omp_default_device = -5
  };
  
  typedef enum omp_interop_t __GOMP_UINTPTR_T_ENUM
*************** template <typename __T>
*** 562,567 ****
--- 565,574 ----
  struct gnu_pinned_mem
    : omp::allocator::__detail::__allocator_templ <__T,
  						 ompx_gnu_pinned_mem_alloc> {};
+ template <typename __T>
+ struct gnu_managed_mem
+   : omp::allocator::__detail::__allocator_templ <__T,
+ 						 ompx_gnu_managed_mem_alloc> {};
  
  } /* namespace allocator */
  
diff -Nrcpad gcc-16-20251109/libgomp/omp_lib.f90.in gcc-16-20251116/libgomp/omp_lib.f90.in
*** gcc-16-20251109/libgomp/omp_lib.f90.in	Sun Nov  9 22:34:22 2025
--- gcc-16-20251116/libgomp/omp_lib.f90.in	Sun Nov 16 22:34:53 2025
***************
*** 164,169 ****
--- 164,171 ----
                   parameter :: omp_thread_mem_alloc = 8
          integer (kind=omp_allocator_handle_kind), &
                   parameter :: ompx_gnu_pinned_mem_alloc = 200
+         integer (kind=omp_allocator_handle_kind), &
+                  parameter :: ompx_gnu_managed_mem_alloc = 201
          integer (omp_memspace_handle_kind), &
                   parameter :: omp_default_mem_space = 0
          integer (omp_memspace_handle_kind), &
***************
*** 174,181 ****
--- 176,186 ----
                   parameter :: omp_high_bw_mem_space = 3
          integer (omp_memspace_handle_kind), &
                   parameter :: omp_low_lat_mem_space = 4
+         integer (omp_memspace_handle_kind), &
+                  parameter :: ompx_gnu_managed_mem_space = 200
          integer, parameter :: omp_initial_device = -1
          integer, parameter :: omp_invalid_device = -4
+         integer, parameter :: omp_default_device = -5
          integer (omp_interop_kind), &
                   parameter :: omp_interop_none = 0_omp_interop_kind
          integer (omp_interop_fr_kind), parameter :: omp_ifr_cuda = 1
diff -Nrcpad gcc-16-20251109/libgomp/omp_lib.h.in gcc-16-20251116/libgomp/omp_lib.h.in
*** gcc-16-20251109/libgomp/omp_lib.h.in	Sun Nov  9 22:34:22 2025
--- gcc-16-20251116/libgomp/omp_lib.h.in	Sun Nov 16 22:34:53 2025
***************
*** 162,167 ****
--- 162,168 ----
        integer (omp_allocator_handle_kind) omp_pteam_mem_alloc
        integer (omp_allocator_handle_kind) omp_thread_mem_alloc
        integer (omp_allocator_handle_kind) ompx_gnu_pinned_mem_alloc
+       integer (omp_allocator_handle_kind) ompx_gnu_managed_mem_alloc
        parameter (omp_null_allocator = 0)
        parameter (omp_default_mem_alloc = 1)
        parameter (omp_large_cap_mem_alloc = 2)
***************
*** 172,190 ****
        parameter (omp_pteam_mem_alloc = 7)
        parameter (omp_thread_mem_alloc = 8)
        parameter (ompx_gnu_pinned_mem_alloc = 200)
        integer (omp_memspace_handle_kind) omp_default_mem_space
        integer (omp_memspace_handle_kind) omp_large_cap_mem_space
        integer (omp_memspace_handle_kind) omp_const_mem_space
        integer (omp_memspace_handle_kind) omp_high_bw_mem_space
        integer (omp_memspace_handle_kind) omp_low_lat_mem_space
        parameter (omp_default_mem_space = 0)
        parameter (omp_large_cap_mem_space = 1)
        parameter (omp_const_mem_space = 2)
        parameter (omp_high_bw_mem_space = 3)
        parameter (omp_low_lat_mem_space = 4)
!       integer omp_initial_device, omp_invalid_device
        parameter (omp_initial_device = -1)
        parameter (omp_invalid_device = -4)
        integer (omp_interop_kind) omp_interop_none
        parameter (omp_interop_none = 0_omp_interop_kind)
        integer (omp_interop_fr_kind) omp_ifr_cuda
--- 173,195 ----
        parameter (omp_pteam_mem_alloc = 7)
        parameter (omp_thread_mem_alloc = 8)
        parameter (ompx_gnu_pinned_mem_alloc = 200)
+       parameter (ompx_gnu_managed_mem_alloc = 201)
        integer (omp_memspace_handle_kind) omp_default_mem_space
        integer (omp_memspace_handle_kind) omp_large_cap_mem_space
        integer (omp_memspace_handle_kind) omp_const_mem_space
        integer (omp_memspace_handle_kind) omp_high_bw_mem_space
        integer (omp_memspace_handle_kind) omp_low_lat_mem_space
+       integer (omp_memspace_handle_kind) ompx_gnu_managed_mem_space
        parameter (omp_default_mem_space = 0)
        parameter (omp_large_cap_mem_space = 1)
        parameter (omp_const_mem_space = 2)
        parameter (omp_high_bw_mem_space = 3)
        parameter (omp_low_lat_mem_space = 4)
!       parameter (ompx_gnu_managed_mem_space = 200)
!       integer omp_initial_device, omp_invalid_device, omp_default_device
        parameter (omp_initial_device = -1)
        parameter (omp_invalid_device = -4)
+       parameter (omp_default_device = -5)
        integer (omp_interop_kind) omp_interop_none
        parameter (omp_interop_none = 0_omp_interop_kind)
        integer (omp_interop_fr_kind) omp_ifr_cuda
diff -Nrcpad gcc-16-20251109/libgomp/plugin/cuda-lib.def gcc-16-20251116/libgomp/plugin/cuda-lib.def
*** gcc-16-20251109/libgomp/plugin/cuda-lib.def	Sun Nov  9 22:34:22 2025
--- gcc-16-20251116/libgomp/plugin/cuda-lib.def	Sun Nov 16 22:34:53 2025
*************** CUDA_ONE_CALL (cuLinkDestroy)
*** 33,38 ****
--- 33,39 ----
  CUDA_ONE_CALL (cuMemAlloc)
  CUDA_ONE_CALL (cuMemAllocHost)
  CUDA_ONE_CALL (cuMemHostAlloc)
+ CUDA_ONE_CALL (cuMemAllocManaged)
  CUDA_ONE_CALL (cuMemcpy)
  CUDA_ONE_CALL (cuMemcpyDtoDAsync)
  CUDA_ONE_CALL (cuMemcpyDtoH)
diff -Nrcpad gcc-16-20251109/libgomp/plugin/plugin-nvptx.c gcc-16-20251116/libgomp/plugin/plugin-nvptx.c
*** gcc-16-20251109/libgomp/plugin/plugin-nvptx.c	Sun Nov  9 22:34:22 2025
--- gcc-16-20251116/libgomp/plugin/plugin-nvptx.c	Sun Nov 16 22:34:53 2025
*************** nvptx_stacks_free (struct ptx_device *pt
*** 1133,1143 ****
  }
  
  static void *
! nvptx_alloc (size_t s, bool suppress_errors)
  {
    CUdeviceptr d;
  
!   CUresult r = CUDA_CALL_NOCHECK (cuMemAlloc, &d, s);
    if (suppress_errors && r == CUDA_ERROR_OUT_OF_MEMORY)
      return NULL;
    else if (r != CUDA_SUCCESS)
--- 1133,1145 ----
  }
  
  static void *
! nvptx_alloc (size_t s, bool suppress_errors, bool managed)
  {
    CUdeviceptr d;
  
!   CUresult r = (managed ? CUDA_CALL_NOCHECK (cuMemAllocManaged, &d, s,
! 					     CU_MEM_ATTACH_GLOBAL)
! 		: CUDA_CALL_NOCHECK (cuMemAlloc, &d, s));
    if (suppress_errors && r == CUDA_ERROR_OUT_OF_MEMORY)
      return NULL;
    else if (r != CUDA_SUCCESS)
*************** GOMP_OFFLOAD_unload_image (int ord, unsi
*** 1843,1850 ****
    return ret;
  }
  
! void *
! GOMP_OFFLOAD_alloc (int ord, size_t size)
  {
    if (!nvptx_attach_host_thread_to_device (ord))
      return NULL;
--- 1845,1852 ----
    return ret;
  }
  
! static void *
! cleanup_and_alloc (int ord, size_t size, bool managed)
  {
    if (!nvptx_attach_host_thread_to_device (ord))
      return NULL;
*************** GOMP_OFFLOAD_alloc (int ord, size_t size
*** 1867,1873 ****
        blocks = tmp;
      }
  
!   void *d = nvptx_alloc (size, true);
    if (d)
      return d;
    else
--- 1869,1875 ----
        blocks = tmp;
      }
  
!   void *d = nvptx_alloc (size, true, managed);
    if (d)
      return d;
    else
*************** GOMP_OFFLOAD_alloc (int ord, size_t size
*** 1875,1884 ****
        /* Memory allocation failed.  Try freeing the stacks block, and
  	 retrying.  */
        nvptx_stacks_free (ptx_dev, true);
!       return nvptx_alloc (size, false);
      }
  }
  
  bool
  GOMP_OFFLOAD_free (int ord, void *ptr)
  {
--- 1877,1898 ----
        /* Memory allocation failed.  Try freeing the stacks block, and
  	 retrying.  */
        nvptx_stacks_free (ptx_dev, true);
!       return nvptx_alloc (size, false, managed);
      }
  }
  
+ void *
+ GOMP_OFFLOAD_alloc (int ord, size_t size)
+ {
+   return cleanup_and_alloc (ord, size, false);
+ }
+ 
+ void *
+ GOMP_OFFLOAD_managed_alloc (int ord, size_t size)
+ {
+   return cleanup_and_alloc (ord, size, true);
+ }
+ 
  bool
  GOMP_OFFLOAD_free (int ord, void *ptr)
  {
*************** GOMP_OFFLOAD_free (int ord, void *ptr)
*** 1887,1892 ****
--- 1901,1912 ----
  }
  
  bool
+ GOMP_OFFLOAD_managed_free (int ord, void *ptr)
+ {
+   return GOMP_OFFLOAD_free (ord, ptr);
+ }
+ 
+ bool
  GOMP_OFFLOAD_page_locked_host_alloc (void **ptr, size_t size)
  {
    if (size == 0)
diff -Nrcpad gcc-16-20251109/libgomp/target.c gcc-16-20251116/libgomp/target.c
*** gcc-16-20251109/libgomp/target.c	Sun Nov  9 22:34:22 2025
--- gcc-16-20251116/libgomp/target.c	Sun Nov 16 22:34:53 2025
*************** gomp_get_num_devices (void)
*** 139,144 ****
--- 139,152 ----
    return num_devices_openmp;
  }
  
+ static int
+ gomp_get_default_device ()
+ {
+   gomp_init_targets_once ();
+   struct gomp_task_icv *icv = gomp_icv (false);
+   return icv->default_device_var;
+ }
+ 
  static struct gomp_device_descr *
  resolve_device (int device_id, bool remapped)
  {
*************** resolve_device (int device_id, bool rema
*** 148,158 ****
  
    if ((remapped && device_id == GOMP_DEVICE_ICV)
        || device_id == GOMP_DEVICE_DEFAULT_OMP_61)
!     {
!       struct gomp_task_icv *icv = gomp_icv (false);
!       device_id = icv->default_device_var;
!       remapped = false;
!     }
  
    if (device_id < 0)
      {
--- 156,162 ----
  
    if ((remapped && device_id == GOMP_DEVICE_ICV)
        || device_id == GOMP_DEVICE_DEFAULT_OMP_61)
!     device_id = gomp_get_default_device ();
  
    if (device_id < 0)
      {
*************** GOMP_teams4 (unsigned int num_teams_low,
*** 4653,4658 ****
--- 4657,4665 ----
  void *
  omp_target_alloc (size_t size, int device_num)
  {
+   if (device_num == omp_default_device)
+     device_num = gomp_get_default_device ();
+ 
    if (device_num == omp_initial_device
        || device_num == gomp_get_num_devices ())
      return malloc (size);
*************** omp_target_alloc (size_t size, int devic
*** 4674,4679 ****
--- 4681,4689 ----
  void
  omp_target_free (void *device_ptr, int device_num)
  {
+   if (device_num == omp_default_device)
+     device_num = gomp_get_default_device ();
+ 
    if (device_num == omp_initial_device
        || device_num == gomp_get_num_devices ())
      {
*************** omp_target_free (void *device_ptr, int d
*** 4697,4702 ****
--- 4707,4752 ----
    gomp_mutex_unlock (&devicep->lock);
  }
  
+ void *
+ gomp_managed_alloc (size_t size)
+ {
+   struct gomp_task_icv *icv = gomp_icv (false);
+   struct gomp_device_descr *devicep = resolve_device (icv->default_device_var,
+ 						      false);
+   if (devicep == NULL)
+     return NULL;
+ 
+   void *ret = NULL;
+   gomp_mutex_lock (&devicep->lock);
+   if (devicep->managed_alloc_func)
+     ret = devicep->managed_alloc_func (devicep->target_id, size);
+   gomp_mutex_unlock (&devicep->lock);
+   return ret;
+ }
+ 
+ void
+ gomp_managed_free (void *device_ptr)
+ {
+   if (device_ptr == NULL)
+     return;
+ 
+   struct gomp_task_icv *icv = gomp_icv (false);
+   struct gomp_device_descr *devicep = resolve_device (icv->default_device_var,
+ 						      false);
+   if (devicep == NULL)
+     gomp_fatal ("attempted to free managed memory at %p, but the default "
+ 		"device is set to the host device", device_ptr);
+ 
+   gomp_mutex_lock (&devicep->lock);
+   if (!devicep->managed_free_func
+       || !devicep->managed_free_func (devicep->target_id, device_ptr))
+     {
+       gomp_mutex_unlock (&devicep->lock);
+       gomp_fatal ("error in freeing managed memory block at %p", device_ptr);
+     }
+   gomp_mutex_unlock (&devicep->lock);
+ }
+ 
  /* Device (really: libgomp plugin) to use for paged-locked memory.  We
     assume there is either none or exactly one such device for the lifetime of
     the process.  */
*************** gomp_page_locked_host_free (void *ptr)
*** 4811,4816 ****
--- 4861,4869 ----
  int
  omp_target_is_present (const void *ptr, int device_num)
  {
+   if (device_num == omp_default_device)
+     device_num = gomp_get_default_device ();
+ 
    if (device_num == omp_initial_device
        || device_num == gomp_get_num_devices ())
      return 1;
*************** omp_target_memcpy_check (int dst_device_
*** 4843,4848 ****
--- 4896,4906 ----
  			 struct gomp_device_descr **dst_devicep,
  			 struct gomp_device_descr **src_devicep)
  {
+   if (dst_device_num == omp_default_device)
+     dst_device_num = gomp_get_default_device ();
+   if (src_device_num == omp_default_device)
+     src_device_num = gomp_get_default_device ();
+ 
    if (dst_device_num != gomp_get_num_devices ()
        /* Above gomp_get_num_devices has to be called unconditionally.  */
        && dst_device_num != omp_initial_device)
*************** omp_target_memset_int (void *ptr, int va
*** 5323,5328 ****
--- 5381,5389 ----
  void*
  omp_target_memset (void *ptr, int val, size_t count, int device_num)
  {
+   if (device_num == omp_default_device)
+     device_num = gomp_get_default_device ();
+ 
    struct gomp_device_descr *devicep;
    if (device_num == omp_initial_device
        || device_num == gomp_get_num_devices ()
*************** omp_target_memset_async (void *ptr, int
*** 5359,5364 ****
--- 5420,5428 ----
    unsigned flags = 0;
    int i;
  
+   if (device_num == omp_default_device)
+     device_num = gomp_get_default_device ();
+ 
    if (device_num == omp_initial_device
        || device_num == gomp_get_num_devices ()
        || (devicep = resolve_device (device_num, false)) == NULL
*************** int
*** 5387,5392 ****
--- 5451,5459 ----
  omp_target_associate_ptr (const void *host_ptr, const void *device_ptr,
  			  size_t size, size_t device_offset, int device_num)
  {
+   if (device_num == omp_default_device)
+     device_num = gomp_get_default_device ();
+ 
    if (device_num == omp_initial_device
        || device_num == gomp_get_num_devices ())
      return EINVAL;
*************** omp_target_disassociate_ptr (const void
*** 5484,5489 ****
--- 5551,5559 ----
  void *
  omp_get_mapped_ptr (const void *ptr, int device_num)
  {
+   if (device_num == omp_default_device)
+     device_num = gomp_get_default_device ();
+ 
    if (device_num == omp_initial_device
        || device_num == omp_get_initial_device ())
      return (void *) ptr;
*************** omp_get_mapped_ptr (const void *ptr, int
*** 5520,5525 ****
--- 5590,5598 ----
  int
  omp_target_is_accessible (const void *ptr, size_t size, int device_num)
  {
+   if (device_num == omp_default_device)
+     device_num = gomp_get_default_device ();
+ 
    if (device_num == omp_initial_device
        || device_num == gomp_get_num_devices ())
      return true;
*************** int
*** 5537,5542 ****
--- 5610,5617 ----
  omp_pause_resource (omp_pause_resource_t kind, int device_num)
  {
    (void) kind;
+   if (device_num == omp_default_device)
+     device_num = gomp_get_default_device ();
    if (device_num == omp_initial_device
        || device_num == gomp_get_num_devices ())
      return gomp_pause_host ();
*************** gomp_get_uid_for_device (struct gomp_dev
*** 5847,5852 ****
--- 5922,5930 ----
  const char *
  omp_get_uid_from_device (int device_num)
  {
+   if (device_num == omp_default_device)
+     device_num = gomp_get_default_device ();
+ 
    if (device_num < omp_initial_device || device_num > gomp_get_num_devices ())
      return NULL;
  
*************** gomp_load_plugin_for_device (struct gomp
*** 5929,5934 ****
--- 6007,6014 ----
    DLSYM (unload_image);
    DLSYM (alloc);
    DLSYM (free);
+   DLSYM_OPT (managed_alloc, managed_alloc);
+   DLSYM_OPT (managed_free, managed_free);
    DLSYM_OPT (page_locked_host_alloc, page_locked_host_alloc);
    DLSYM_OPT (page_locked_host_free, page_locked_host_free);
    DLSYM (dev2host);
diff -Nrcpad gcc-16-20251109/libgomp/testsuite/lib/libgomp.exp gcc-16-20251116/libgomp/testsuite/lib/libgomp.exp
*** gcc-16-20251109/libgomp/testsuite/lib/libgomp.exp	Sun Nov  9 22:34:22 2025
--- gcc-16-20251116/libgomp/testsuite/lib/libgomp.exp	Sun Nov 16 22:34:53 2025
*************** int main() {
*** 722,724 ****
--- 722,733 ----
      return 0;
  } } "-lhipblas" ]
  }
+ 
+ # return 1 if OpenMP Device Managed Memory is supported
+ 
+ proc check_effective_target_omp_managedmem { } {
+     if { [check_effective_target_offload_device_nvptx] } {
+ 	return 1
+     }
+     return 0
+ }
diff -Nrcpad gcc-16-20251109/libgomp/testsuite/libgomp.c/alloc-managed-1.c gcc-16-20251116/libgomp/testsuite/libgomp.c/alloc-managed-1.c
*** gcc-16-20251109/libgomp/testsuite/libgomp.c/alloc-managed-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgomp/testsuite/libgomp.c/alloc-managed-1.c	Sun Nov 16 22:34:54 2025
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target omp_managedmem } */
+ 
+ /* Check that omp_alloc can allocate Managed Memory, and that host and target
+    can see the data, at the same address, without a mapping.  */
+ 
+ #include <omp.h>
+ #include <stdint.h>
+ 
+ int
+ main ()
+ {
+   int *a = (int *) omp_alloc(sizeof(int), ompx_gnu_managed_mem_alloc);
+   if (!a)
+     __builtin_abort ();
+ 
+   *a = 42;
+   uintptr_t a_p = (uintptr_t)a;
+ 
+   #pragma omp target is_device_ptr(a)
+     {
+       if (*a != 42 || a_p != (uintptr_t)a)
+ 	__builtin_abort ();
+     }
+ 
+   omp_free(a, ompx_gnu_managed_mem_alloc);
+   return 0;
+ }
diff -Nrcpad gcc-16-20251109/libgomp/testsuite/libgomp.c/alloc-managed-2.c gcc-16-20251116/libgomp/testsuite/libgomp.c/alloc-managed-2.c
*** gcc-16-20251109/libgomp/testsuite/libgomp.c/alloc-managed-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgomp/testsuite/libgomp.c/alloc-managed-2.c	Sun Nov 16 22:34:54 2025
***************
*** 0 ****
--- 1,38 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target omp_managedmem } */
+ 
+ /* Check that omp_calloc can allocate Managed Memory, and that host and target
+    can see the data, at the same address, without a mapping.  */
+ 
+ #include <omp.h>
+ #include <stdint.h>
+ 
+ int
+ main ()
+ {
+   int *a = (int *) omp_calloc(5, sizeof(int), ompx_gnu_managed_mem_alloc);
+   if (!a)
+     __builtin_abort ();
+ 
+   /* Check that memory is zero-initialized */
+   for (int i = 0; i < 5; i++)
+     if (a[i] != 0)
+       __builtin_abort ();
+ 
+   a[0] = 42;
+   a[4] = 99;
+   uintptr_t a_p = (uintptr_t)a;
+ 
+   #pragma omp target is_device_ptr(a)
+     {
+       if (a[0] != 42 || a[4] != 99 || a_p != (uintptr_t)a)
+ 	__builtin_abort ();
+       /* Check zero-initialization on device side */
+       for (int i = 1; i < 4; i++)
+ 	if (a[i] != 0)
+ 	  __builtin_abort ();
+     }
+ 
+   omp_free(a, ompx_gnu_managed_mem_alloc);
+   return 0;
+ }
diff -Nrcpad gcc-16-20251109/libgomp/testsuite/libgomp.c/alloc-managed-3.c gcc-16-20251116/libgomp/testsuite/libgomp.c/alloc-managed-3.c
*** gcc-16-20251109/libgomp/testsuite/libgomp.c/alloc-managed-3.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgomp/testsuite/libgomp.c/alloc-managed-3.c	Sun Nov 16 22:34:54 2025
***************
*** 0 ****
--- 1,44 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target omp_managedmem } */
+ 
+ /* Check that omp_realloc can allocate Managed Memory, and that host and target
+    can see the data, at the same address, without a mapping.  */
+ 
+ #include <omp.h>
+ #include <stdint.h>
+ 
+ int
+ main ()
+ {
+   int *a = (int *) omp_alloc(2 * sizeof(int), ompx_gnu_managed_mem_alloc);
+   if (!a)
+     __builtin_abort ();
+ 
+   a[0] = 42;
+   a[1] = 43;
+ 
+   /* Reallocate to larger size */
+   int *b = (int *) omp_realloc(a, 5 * sizeof(int), ompx_gnu_managed_mem_alloc,
+ 			       ompx_gnu_managed_mem_alloc);
+   if (!b)
+     __builtin_abort ();
+ 
+   /* Check that original data is preserved */
+   if (b[0] != 42 || b[1] != 43)
+     __builtin_abort ();
+ 
+   b[2] = 44;
+   b[3] = 45;
+   b[4] = 46;
+   uintptr_t b_p = (uintptr_t)b;
+ 
+   #pragma omp target is_device_ptr(b)
+     {
+       if (b[0] != 42 || b[1] != 43 || b[2] != 44 || b[3] != 45 || b[4] != 46
+ 	  || b_p != (uintptr_t)b)
+ 	__builtin_abort ();
+     }
+ 
+   omp_free(b, ompx_gnu_managed_mem_alloc);
+   return 0;
+ }
diff -Nrcpad gcc-16-20251109/libgomp/testsuite/libgomp.c/alloc-managed-4.c gcc-16-20251116/libgomp/testsuite/libgomp.c/alloc-managed-4.c
*** gcc-16-20251109/libgomp/testsuite/libgomp.c/alloc-managed-4.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgomp/testsuite/libgomp.c/alloc-managed-4.c	Sun Nov 16 22:34:54 2025
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target omp_managedmem } */
+ /* { 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" } */
+ 
+ /* Check that omp_free emits an error if the default device has been changed
+    to the host device.  */
+ 
+ #include <omp.h>
+ #include <stdint.h>
+ 
+ int
+ main ()
+ {
+   int *a = (int *) omp_alloc(2 * sizeof(int), ompx_gnu_managed_mem_alloc);
+   if (!a)
+     __builtin_abort ();
+ 
+   omp_set_default_device (omp_initial_device);
+   omp_free(a, ompx_gnu_managed_mem_alloc);
+   return 0;
+ }
diff -Nrcpad gcc-16-20251109/libgomp/testsuite/libgomp.c/device_uid.c gcc-16-20251116/libgomp/testsuite/libgomp.c/device_uid.c
*** gcc-16-20251109/libgomp/testsuite/libgomp.c/device_uid.c	Sun Nov  9 22:34:22 2025
--- gcc-16-20251116/libgomp/testsuite/libgomp.c/device_uid.c	Sun Nov 16 22:34:54 2025
***************
*** 5,14 ****
  int main()
  {
    const char **strs = (const char **) malloc (sizeof (char*) * (omp_get_num_devices () + 1));
!   for (int i = omp_invalid_device - 1; i <= omp_get_num_devices () + 1; i++)
      {
        const char *str = omp_get_uid_from_device (i);
        int dev = omp_get_device_from_uid (str);
  // __builtin_printf("%i -> %s -> %d\n", i, str, dev);
        if (i < omp_initial_device || i > omp_get_num_devices ())
  	{
--- 5,16 ----
  int main()
  {
    const char **strs = (const char **) malloc (sizeof (char*) * (omp_get_num_devices () + 1));
!   for (int i = omp_default_device - 1; i <= omp_get_num_devices () + 1; i++)
      {
        const char *str = omp_get_uid_from_device (i);
        int dev = omp_get_device_from_uid (str);
+       if (i == omp_default_device)
+ 	i = omp_get_default_device ();
  // __builtin_printf("%i -> %s -> %d\n", i, str, dev);
        if (i < omp_initial_device || i > omp_get_num_devices ())
  	{
diff -Nrcpad gcc-16-20251109/libgomp/testsuite/libgomp.c++/alloc-managed-1.C gcc-16-20251116/libgomp/testsuite/libgomp.c++/alloc-managed-1.C
*** gcc-16-20251109/libgomp/testsuite/libgomp.c++/alloc-managed-1.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgomp/testsuite/libgomp.c++/alloc-managed-1.C	Sun Nov 16 22:34:53 2025
***************
*** 0 ****
--- 1,35 ----
+ // { dg-do run }
+ // { dg-require-effective-target omp_managedmem }
+ 
+ // 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
+ // address, without a mapping.
+ 
+ #include <omp.h>
+ #include <cstdint>
+ #include <memory>
+ 
+ int
+ main ()
+ {
+   using Allocator = ompx::allocator::gnu_managed_mem<int>;
+   using Traits = std::allocator_traits<Allocator>;
+ 
+   Allocator alloc;
+   int *a = Traits::allocate (alloc, 1);
+   if (!a)
+     __builtin_abort ();
+ 
+   Traits::construct (alloc, a, 42);
+   std::uintptr_t a_p = reinterpret_cast<std::uintptr_t>(a);
+ 
+   #pragma omp target is_device_ptr(a)
+     {
+       if (*a != 42 || a_p != reinterpret_cast<std::uintptr_t>(a))
+ 	__builtin_abort ();
+     }
+ 
+   Traits::destroy (alloc, a);
+   Traits::deallocate (alloc, a, 1);
+   return 0;
+ }
diff -Nrcpad gcc-16-20251109/libgomp/testsuite/libgomp.c-c++-common/omp-default-device.c gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/omp-default-device.c
*** gcc-16-20251109/libgomp/testsuite/libgomp.c-c++-common/omp-default-device.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/omp-default-device.c	Sun Nov 16 22:34:54 2025
***************
*** 0 ****
--- 1,59 ----
+ #include <omp.h>
+ 
+ #if __cplusplus
+ static_assert (omp_default_device < -1
+ 	       && omp_default_device != omp_invalid_device, "");
+ #else
+ _Static_assert (omp_default_device < -1
+ 		&& omp_default_device != omp_invalid_device, "");
+ #endif
+ 
+ static int
+ is_same_dev (int d1, int d2)
+ {
+   int num_dev = omp_get_num_devices ();
+   if (d1 == omp_initial_device)
+     d1 = num_dev;
+   if (d2 == omp_initial_device)
+     d2 = num_dev;
+   return (d1 == d2);
+ }
+ 
+ int
+ main()
+ {
+   int dev = -99;
+   int def_dev = omp_get_default_device ();
+   #pragma omp target map(from: dev) device(omp_default_device)
+     dev = omp_get_device_num ();
+ 
+   if (!is_same_dev (def_dev, dev))
+     __builtin_abort ();
+ 
+   for (def_dev = omp_initial_device; def_dev <= omp_get_num_devices ();
+        def_dev++)
+     {
+       const char* uid = omp_get_uid_from_device(def_dev);
+       omp_set_default_device (def_dev);
+       dev = -99;
+       #pragma omp target map(from: dev) device(omp_default_device)
+         dev = omp_get_device_num ();
+       if (!is_same_dev (def_dev, dev))
+         __builtin_abort ();
+ 
+       /* Shall not modify the ICV.  */
+       omp_set_default_device (omp_default_device);
+       if (def_dev != omp_get_default_device ())
+         __builtin_abort ();
+ 
+       /* Assume the ptr and no only the string is the same.  */
+       if (uid != omp_get_uid_from_device (omp_default_device))
+         __builtin_abort ();
+     }
+ 
+   omp_set_default_device (omp_invalid_device);
+   /* Shall not modify the ICV.  */
+   omp_set_default_device (omp_default_device);
+   if (omp_invalid_device != omp_get_default_device ())
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-16-20251109/libgomp/testsuite/libgomp.c-c++-common/target-is-accessible-1.c gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/target-is-accessible-1.c
*** gcc-16-20251109/libgomp/testsuite/libgomp.c-c++-common/target-is-accessible-1.c	Sun Nov  9 22:34:22 2025
--- gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/target-is-accessible-1.c	Sun Nov 16 22:34:54 2025
*************** main ()
*** 20,26 ****
    if (!omp_target_is_accessible (p, sizeof (int), omp_initial_device))
      __builtin_abort ();
  
!   if (omp_target_is_accessible (p, sizeof (int), -5))
      __builtin_abort ();
  
    if (omp_target_is_accessible (p, sizeof (int), n + 1))
--- 20,26 ----
    if (!omp_target_is_accessible (p, sizeof (int), omp_initial_device))
      __builtin_abort ();
  
!   if (omp_target_is_accessible (p, sizeof (int), -6 /* omp_default_device - 1 */))
      __builtin_abort ();
  
    if (omp_target_is_accessible (p, sizeof (int), n + 1))
diff -Nrcpad gcc-16-20251109/libgomp/testsuite/libgomp.fortran/alloc-managed-1.f90 gcc-16-20251116/libgomp/testsuite/libgomp.fortran/alloc-managed-1.f90
*** gcc-16-20251109/libgomp/testsuite/libgomp.fortran/alloc-managed-1.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgomp/testsuite/libgomp.fortran/alloc-managed-1.f90	Sun Nov 16 22:34:54 2025
***************
*** 0 ****
--- 1,29 ----
+ ! { dg-do run }
+ ! { dg-require-effective-target omp_managedmem }
+ 
+ ! Check that omp_alloc can allocate Managed Memory, and that host and target
+ ! can see the data, at the same address, without a mapping.
+ 
+ program main
+   use omp_lib
+   use iso_c_binding
+   implicit none
+ 
+   type(c_ptr) :: cptr
+   integer, pointer :: a
+   integer(c_intptr_t) :: a_p, a_p2
+ 
+   cptr = omp_alloc(c_sizeof(a), ompx_gnu_managed_mem_alloc)
+   if (.not. c_associated(cptr)) stop 1
+ 
+   call c_f_pointer(cptr, a)
+   a = 42
+   a_p = transfer(c_loc(a), a_p)
+ 
+   !$omp target is_device_ptr(a)
+     a_p2 = transfer(c_loc(a), a_p2)
+     if (a /= 42 .or. a_p /= a_p2) stop 2
+   !$omp end target
+ 
+   call omp_free(cptr, ompx_gnu_managed_mem_alloc)
+ end program main
diff -Nrcpad gcc-16-20251109/libgomp/testsuite/libgomp.fortran/device_uid.f90 gcc-16-20251116/libgomp/testsuite/libgomp.fortran/device_uid.f90
*** gcc-16-20251109/libgomp/testsuite/libgomp.fortran/device_uid.f90	Sun Nov  9 22:34:23 2025
--- gcc-16-20251116/libgomp/testsuite/libgomp.fortran/device_uid.f90	Sun Nov 16 22:34:55 2025
*************** program main
*** 10,19 ****
  
    allocate(strs(0:omp_get_num_devices ()))
  
!   do i = omp_invalid_device - 1, omp_get_num_devices () + 1
      str => omp_get_uid_from_device (i)
      dev = omp_get_device_from_uid (str)
  ! print *, i, str, dev
      if (i < omp_initial_device .or. i > omp_get_num_devices ()) then
        if (dev /= omp_invalid_device .or. associated(str)) &
          stop 1
--- 10,22 ----
  
    allocate(strs(0:omp_get_num_devices ()))
  
!   do j = omp_default_device - 1, omp_get_num_devices () + 1
!     i = j
      str => omp_get_uid_from_device (i)
      dev = omp_get_device_from_uid (str)
  ! print *, i, str, dev
+     if (i == omp_default_device) &
+       i = omp_get_default_device ()
      if (i < omp_initial_device .or. i > omp_get_num_devices ()) then
        if (dev /= omp_invalid_device .or. associated(str)) &
          stop 1
diff -Nrcpad gcc-16-20251109/libgomp/testsuite/libgomp.fortran/omp-default-device.f90 gcc-16-20251116/libgomp/testsuite/libgomp.fortran/omp-default-device.f90
*** gcc-16-20251109/libgomp/testsuite/libgomp.fortran/omp-default-device.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libgomp/testsuite/libgomp.fortran/omp-default-device.f90	Sun Nov 16 22:34:55 2025
***************
*** 0 ****
--- 1,61 ----
+ program main
+   use omp_lib
+   implicit none (type, external)
+   integer :: dev, def_dev
+ 
+   if (omp_default_device >= -1 .or. omp_default_device == omp_invalid_device) &
+     error stop 1
+ 
+   dev = -99
+   def_dev = omp_get_default_device ()
+   !$omp target map(from: dev) device(omp_default_device)
+     dev = omp_get_device_num ()
+   !$omp end target
+ 
+   if (.not.is_same_dev (def_dev, dev)) &
+     error stop 2
+ 
+   do def_dev = omp_initial_device, omp_get_num_devices ()
+   block
+     character(:), pointer :: uid
+ 
+     uid => omp_get_uid_from_device(def_dev)
+     call omp_set_default_device (def_dev)
+     dev = -99
+     !$omp target map(from: dev) device(omp_default_device)
+       dev = omp_get_device_num ()
+     !$omp end target
+     if (.not.is_same_dev (def_dev, dev)) &
+       error stop 3
+ 
+     ! Shall not modify the ICV.  */
+     call omp_set_default_device (omp_default_device)
+     if (def_dev /= omp_get_default_device ()) &
+       error stop 4
+ 
+     ! Assume the ptr and no only the string is the same.  */
+     if (.not.associated(uid, omp_get_uid_from_device (omp_default_device))) &
+       error stop 5
+   end block
+   end do
+ 
+   call omp_set_default_device (omp_invalid_device)
+   ! Shall not modify the ICV.
+   call omp_set_default_device (omp_default_device)
+   if (omp_invalid_device /= omp_get_default_device ()) &
+     error stop 6
+ 
+ contains
+ 
+   logical function is_same_dev (d1, d2)
+     integer, value :: d1, d2
+     integer :: num_dev
+ 
+     num_dev = omp_get_num_devices ()
+     if (d1 == omp_initial_device) &
+       d1 = num_dev
+     if (d2 == omp_initial_device) &
+       d2 = num_dev
+     is_same_dev = d1 == d2
+   end function is_same_dev
+ end program
diff -Nrcpad gcc-16-20251109/libgomp/testsuite/libgomp.fortran/target-is-accessible-1.f90 gcc-16-20251116/libgomp/testsuite/libgomp.fortran/target-is-accessible-1.f90
*** gcc-16-20251109/libgomp/testsuite/libgomp.fortran/target-is-accessible-1.f90	Sun Nov  9 22:34:23 2025
--- gcc-16-20251116/libgomp/testsuite/libgomp.fortran/target-is-accessible-1.f90	Sun Nov 16 22:34:55 2025
*************** program main
*** 22,28 ****
    if (omp_target_is_accessible (p, c_sizeof (d), omp_initial_device) /= 1) &
      stop 3
  
!   if (omp_target_is_accessible (p, c_sizeof (d), -5) /= 0) &
      stop 4
  
    if (omp_target_is_accessible (p, c_sizeof (d), n + 1) /= 0) &
--- 22,28 ----
    if (omp_target_is_accessible (p, c_sizeof (d), omp_initial_device) /= 1) &
      stop 3
  
!   if (omp_target_is_accessible (p, c_sizeof (d), -6) /= 0) &  ! -6 = omp_default_device - 1
      stop 4
  
    if (omp_target_is_accessible (p, c_sizeof (d), n + 1) /= 0) &
diff -Nrcpad gcc-16-20251109/libstdc++-v3/ChangeLog gcc-16-20251116/libstdc++-v3/ChangeLog
*** gcc-16-20251109/libstdc++-v3/ChangeLog	Sun Nov  9 22:34:26 2025
--- gcc-16-20251116/libstdc++-v3/ChangeLog	Sun Nov 16 22:35:01 2025
***************
*** 1,3 ****
--- 1,157 ----
+ 2025-11-15  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/atomic_base.h: Tweak grammar of static assert
+ 	messages for unsupported atomic wait on volatile.
+ 
+ 2025-11-15  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* src/c++20/atomic.cc (__wait_impl): Fix outdated comment.
+ 	(__wait_until_impl): Simplify return statements.
+ 
+ 2025-11-14  Tom Tromey  <tromey@adacore.com>
+ 
+ 	* python/libstdcxx/v6/printers.py (StdVectorPrinter._bounds):
+ 	New method.
+ 	(StdVectorPrinter.to_string): Use it.
+ 	(StdVectorPrinter.num_children): New method.
+ 	(StdStackOrQueuePrinter.num_children): New method.
+ 	(StdMapPrinter.num_children): New method.
+ 	(StdSetPrinter.num_children): New method.
+ 	(StdDequePrinter._size): New method.
+ 	(StdDequePrinter.to_string): Use it.
+ 	(StdDequePrinter.num_children): New method.
+ 	(Tr1UnorderedSetPrinter.num_children): New method.
+ 	(Tr1UnorderedMapPrinter.num_children): New method.
+ 	(StdSpanPrinter.num_children): New method.
+ 
+ 2025-11-14  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/bits/unicode.h (_Utf_view): Rename the template parameter
+ 	from _Range to _View and constrain it with ranges::view.
+ 	(_Utf_view::_Utf_view): Accept by value instead of rvalue reference.
+ 	* include/std/format (__format::__write_padded): Replace _Utf_view
+ 	over const char32_t(&)[1] with span<const char32_t, 1>.
+ 	* testsuite/ext/unicode/view.cc: Add checks if specialization
+ 	of _Utf_view satisfy view. Wrap arrays into std::span before
+ 	constructing _Utf_view.
+ 
+ 2025-11-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/std/bitset: Add comment to feature test macro test.
+ 
+ 2025-11-14  Karpalo Toivonen  <arktinenkarpalo@gmail.com>
+ 	    Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/121054
+ 	* include/std/bitset: Add string check to constructor.
+ 	* testsuite/20_util/bitset/121054.cc: New test.
+ 	* testsuite/20_util/bitset/cons/constexpr_c++23.cc: Fix.
+ 
+ 2025-11-14  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	PR libstdc++/122032
+ 	* include/std/functional (std::bind_front<f>, std::bind_back<f>):
+ 	Define in terms of _Bind_front_t/_Bind_back_t.
+ 	* testsuite/20_util/function_objects/bind_back/nttp.cc: New tests.
+ 	* testsuite/20_util/function_objects/bind_front/nttp.cc: New tests.
+ 
+ 2025-11-13  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/122661
+ 	* include/bits/forward_list.h (forward_list::assign(I, I)): Fix
+ 	value category in is_assignable check.
+ 	* testsuite/23_containers/forward_list/modifiers/122661.cc:
+ 	New test.
+ 
+ 2025-11-13  Xavier Bonaventura  <xavibonaventura@gmail.com>
+ 
+ 	* testsuite/18_support/headers/csignal/macros.cc: Check for
+ 	SIG_IGN.
+ 
+ 2025-11-13  Xavier Bonaventura  <xavibonaventura@gmail.com>
+ 
+ 	* testsuite/18_support/headers/climits/values.cc: Check for
+ 	LLONG_MIN, LLONG_MAX, and ULLONG_MAX.
+ 
+ 2025-11-13  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/std/optional (__is_optional_ref): Define.
+ 	* include/std/ranges (_Take::operator(), _Drop::operator())
+ 	(_Reverse::operator()):	Handle optional<T> that are view.
+ 	(_AsConst::operator()): Handle optional<T&>.
+ 	* testsuite/20_util/optional/range.cc: New tests.
+ 
+ 2025-11-13  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	PR libstdc++/115402
+ 	PR libstdc++/122584
+ 	* testsuite/29_atomics/atomic_ref/address.cc: Guard test for
+ 	volatile with if constexpr.
+ 	* testsuite/29_atomics/atomic_ref/deduction.cc: Likewise.
+ 	* testsuite/29_atomics/atomic_ref/op_support.cc: Likewise.
+ 	* testsuite/29_atomics/atomic_ref/requirements.cc: Likewise.
+ 	* testsuite/29_atomics/atomic_ref/bool.cc: Use volatile_t alias.
+ 	* testsuite/29_atomics/atomic_ref/generic.cc: Likewise.
+ 	* testsuite/29_atomics/atomic_ref/integral.cc: Likewise.
+ 	* testsuite/29_atomics/atomic_ref/pointer.cc: Likewise.
+ 	* testsuite/29_atomics/atomic_ref/float.cc: Likewise, and remove
+ 	not discarding if constexpr.
+ 
+ 2025-11-12  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	PR libstdc++/122425
+ 	* include/std/optional
+ 	(ranges::enable_borrowed_range<optional<_Tp&>>): Define.
+ 	* testsuite/20_util/optional/range.cc: Update tests.
+ 
+ 2025-11-12  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	PR libstdc++/122396
+ 	* include/std/optional (__optional_ref_base): Define.
+ 	(std::optional<_Tp&>): Inherit from __optional_ref_base<_Tp>.
+ 	(optional<_Tp&>::iterator): Move to base class.
+ 	(optional<_Tp&>::begin, optional<_Tp&>::end): Use deduced return
+ 	type and constrain accordingly.
+ 	* testsuite/20_util/optional/range.cc: Add test for optional<T&>.
+ 
+ 2025-11-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	* testsuite/18_support/exception_ptr/62258.cc: Use
+ 	-Wno-deprecated-declarations instead of -Wno-deprecated.
+ 	* testsuite/18_support/uncaught_exception/14026.cc
+ 	* testsuite/20_util/headers/functional/synopsis.cc
+ 	* testsuite/20_util/is_literal_type/requirements/explicit_instantiation.cc
+ 	* testsuite/20_util/is_literal_type/requirements/typedefs.cc
+ 	* testsuite/20_util/is_literal_type/value.cc
+ 	* testsuite/20_util/is_pod/requirements/explicit_instantiation.cc
+ 	* testsuite/20_util/is_pod/requirements/typedefs.cc
+ 	* testsuite/20_util/is_pod/value.cc
+ 	* testsuite/20_util/shared_ptr/assign/auto_ptr.cc
+ 	* testsuite/20_util/shared_ptr/assign/auto_ptr_neg.cc
+ 	* testsuite/20_util/shared_ptr/assign/auto_ptr_rvalue.cc
+ 	* testsuite/20_util/shared_ptr/atomic/1.cc
+ 	* testsuite/20_util/shared_ptr/atomic/2.cc
+ 	* testsuite/20_util/shared_ptr/atomic/3.cc
+ 	* testsuite/20_util/shared_ptr/cons/43820_neg.cc
+ 	* testsuite/20_util/shared_ptr/cons/auto_ptr.cc
+ 	* testsuite/20_util/shared_ptr/cons/auto_ptr_neg.cc
+ 	* testsuite/20_util/shared_ptr/creation/dr925.cc
+ 	* testsuite/20_util/unique_ptr/cons/auto_ptr.cc
+ 	* testsuite/20_util/unique_ptr/cons/auto_ptr_neg.cc
+ 	* testsuite/20_util/variable_templates_for_traits.cc
+ 	* testsuite/29_atomics/atomic/lwg3220.cc
+ 	* testsuite/experimental/type_traits/value.cc: Likewise.
+ 
+ 2025-11-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	* testsuite/lib/prune.exp: Sync with gcc prune.exp.
+ 
+ 2025-11-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* libsupc++/compare: Implement final wording of C++26 P3778R0 - Fix
+ 	for type_order template definition.
+ 	(std::type_order): Remove type member.
+ 
  2025-11-03  Sam James  <sam@gentoo.org>
  
  	* configure: Regenerate.
diff -Nrcpad gcc-16-20251109/libstdc++-v3/include/bits/atomic_base.h gcc-16-20251116/libstdc++-v3/include/bits/atomic_base.h
*** gcc-16-20251109/libstdc++-v3/include/bits/atomic_base.h	Sun Nov  9 22:34:27 2025
--- gcc-16-20251116/libstdc++-v3/include/bits/atomic_base.h	Sun Nov 16 22:35:07 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1584,1590 ****
        wait(value_type __old, memory_order __m = memory_order_seq_cst) const noexcept
        {
  	// TODO remove when volatile is supported
! 	static_assert(!is_volatile_v<_Tp>, "atomics waits on volatile are not supported");
  	__atomic_impl::wait(_M_ptr, __old, __m);
        }
  #endif // __glibcxx_atomic_wait
--- 1584,1591 ----
        wait(value_type __old, memory_order __m = memory_order_seq_cst) const noexcept
        {
  	// TODO remove when volatile is supported
! 	static_assert(!is_volatile_v<_Tp>,
! 		      "atomic waits on volatile are not supported");
  	__atomic_impl::wait(_M_ptr, __old, __m);
        }
  #endif // __glibcxx_atomic_wait
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1666,1672 ****
        notify_one() const noexcept
        {
  	// TODO remove when volatile is supported
! 	static_assert(!is_volatile_v<_Tp>, "atomics waits on volatile are not supported");
  	__atomic_impl::notify_one(this->_M_ptr);
        }
  
--- 1667,1674 ----
        notify_one() const noexcept
        {
  	// TODO remove when volatile is supported
! 	static_assert(!is_volatile_v<_Tp>,
! 		      "atomic waits on volatile are not supported");
  	__atomic_impl::notify_one(this->_M_ptr);
        }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1674,1680 ****
        notify_all() const noexcept
        {
  	// TODO remove when volatile is supported
! 	static_assert(!is_volatile_v<_Tp>, "atomics waits on volatile are not supported");
  	__atomic_impl::notify_all(this->_M_ptr);
        }
  #endif // __glibcxx_atomic_wait
--- 1676,1683 ----
        notify_all() const noexcept
        {
  	// TODO remove when volatile is supported
! 	static_assert(!is_volatile_v<_Tp>,
! 		      "atomic waits on volatile are not supported");
  	__atomic_impl::notify_all(this->_M_ptr);
        }
  #endif // __glibcxx_atomic_wait
diff -Nrcpad gcc-16-20251109/libstdc++-v3/include/bits/forward_list.h gcc-16-20251116/libstdc++-v3/include/bits/forward_list.h
*** gcc-16-20251109/libstdc++-v3/include/bits/forward_list.h	Sun Nov  9 22:34:27 2025
--- gcc-16-20251116/libstdc++-v3/include/bits/forward_list.h	Sun Nov 16 22:35:07 2025
*************** namespace __fwdlist
*** 1046,1052 ****
  	void
  	assign(_InputIterator __first, _InputIterator __last)
  	{
! 	  if constexpr (is_assignable<_Tp, decltype(*__first)>::value)
  	    {
  	      auto __prev = before_begin();
  	      auto __curr = begin();
--- 1046,1052 ----
  	void
  	assign(_InputIterator __first, _InputIterator __last)
  	{
! 	  if constexpr (is_assignable<_Tp&, decltype(*__first)>::value)
  	    {
  	      auto __prev = before_begin();
  	      auto __curr = begin();
diff -Nrcpad gcc-16-20251109/libstdc++-v3/include/bits/unicode.h gcc-16-20251116/libstdc++-v3/include/bits/unicode.h
*** gcc-16-20251109/libstdc++-v3/include/bits/unicode.h	Sun Nov  9 22:34:27 2025
--- gcc-16-20251116/libstdc++-v3/include/bits/unicode.h	Sun Nov 16 22:35:07 2025
*************** namespace __unicode
*** 695,707 ****
  	friend class _Utf_iterator;
      };
  
!   template<typename _ToFormat, ranges::input_range _Range>
      class _Utf_view
!     : public ranges::view_interface<_Utf_view<_ToFormat, _Range>>
      {
!       using _Iterator = _Utf_iterator<ranges::range_value_t<_Range>,
! 				      _ToFormat, ranges::iterator_t<_Range>,
! 				      ranges::sentinel_t<_Range>>;
  
        template<typename _Iter, typename _Sent>
  	constexpr auto
--- 695,708 ----
  	friend class _Utf_iterator;
      };
  
!   template<typename _ToFormat, ranges::input_range _View>
!     requires ranges::view<_View>
      class _Utf_view
!     : public ranges::view_interface<_Utf_view<_ToFormat, _View>>
      {
!       using _Iterator = _Utf_iterator<ranges::range_value_t<_View>,
! 				      _ToFormat, ranges::iterator_t<_View>,
! 				      ranges::sentinel_t<_View>>;
  
        template<typename _Iter, typename _Sent>
  	constexpr auto
*************** namespace __unicode
*** 725,735 ****
  	    return _Iterator(__last, __last);
  	}
  
!       _Range _M_base;
  
      public:
        constexpr explicit
!       _Utf_view(_Range&& __r) : _M_base(std::forward<_Range>(__r)) { }
  
        constexpr auto begin()
        { return _M_begin(ranges::begin(_M_base), ranges::end(_M_base)); }
--- 726,736 ----
  	    return _Iterator(__last, __last);
  	}
  
!       _View _M_base;
  
      public:
        constexpr explicit
!       _Utf_view(_View __r) : _M_base(std::move(__r)) { }
  
        constexpr auto begin()
        { return _M_begin(ranges::begin(_M_base), ranges::end(_M_base)); }
diff -Nrcpad gcc-16-20251109/libstdc++-v3/include/std/bitset gcc-16-20251116/libstdc++-v3/include/std/bitset
*** gcc-16-20251109/libstdc++-v3/include/std/bitset	Sun Nov  9 22:34:27 2025
--- gcc-16-20251116/libstdc++-v3/include/std/bitset	Sun Nov 16 22:35:08 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1012,1018 ****
  	}
  #endif // HOSTED
  
! #ifdef __cpp_lib_bitset
        /**
         *  Use a subset of a string view.
         *  @param  __s  A `string_view` of a sequence of `0` and `1` characters.
--- 1012,1018 ----
  	}
  #endif // HOSTED
  
! #ifdef __cpp_lib_bitset // C++ >= 23
        /**
         *  Use a subset of a string view.
         *  @param  __s  A `string_view` of a sequence of `0` and `1` characters.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1549,1555 ****
  		       size_t __pos, size_t __n, _CharT __zero, _CharT __one)
        {
  	reset();
! 	const size_t __nbits = std::min(_Nb, std::min(__n, size_t(__len - __pos)));
  	for (size_t __i = __nbits; __i > 0; --__i)
  	  {
  	    const _CharT __c = __s[__pos + __nbits - __i];
--- 1549,1562 ----
  		       size_t __pos, size_t __n, _CharT __zero, _CharT __one)
        {
  	reset();
! 	const size_t __rlen = std::min(__n, size_t(__len - __pos));
! 	const size_t __nbits = std::min(_Nb, __rlen);
! 	for (size_t __i = __rlen - __nbits; __i > 0; --__i)
! 	  {
! 	    const _CharT __c = __s[__pos + __rlen - __i];
! 	    if (!_Traits::eq(__c, __zero) && !_Traits::eq(__c, __one))
! 	      __throw_invalid_argument(__N("bitset::_M_copy_from_ptr"));
! 	  }
  	for (size_t __i = __nbits; __i > 0; --__i)
  	  {
  	    const _CharT __c = __s[__pos + __nbits - __i];
diff -Nrcpad gcc-16-20251109/libstdc++-v3/include/std/format gcc-16-20251116/libstdc++-v3/include/std/format
*** gcc-16-20251109/libstdc++-v3/include/std/format	Sun Nov  9 22:34:27 2025
--- gcc-16-20251116/libstdc++-v3/include/std/format	Sun Nov 16 22:35:08 2025
*************** namespace __format
*** 845,851 ****
  	  {
  	    // Encode fill char as multiple code units of type _CharT.
  	    const char32_t __arr[1]{ __fill_char };
! 	    _Utf_view<_CharT, const char32_t(&)[1]> __v(__arr);
  	    basic_string<_CharT> __padstr(__v.begin(), __v.end());
  	    __padding = __padstr;
  	    while (__l-- > 0)
--- 845,851 ----
  	  {
  	    // Encode fill char as multiple code units of type _CharT.
  	    const char32_t __arr[1]{ __fill_char };
! 	    _Utf_view<_CharT, span<const char32_t, 1>> __v(__arr);
  	    basic_string<_CharT> __padstr(__v.begin(), __v.end());
  	    __padding = __padstr;
  	    while (__l-- > 0)
diff -Nrcpad gcc-16-20251109/libstdc++-v3/include/std/functional gcc-16-20251116/libstdc++-v3/include/std/functional
*** gcc-16-20251109/libstdc++-v3/include/std/functional	Sun Nov  9 22:34:27 2025
--- gcc-16-20251116/libstdc++-v3/include/std/functional	Sun Nov 16 22:35:08 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 957,963 ****
      }
  
  #if __cpp_lib_bind_front >= 202306L
- 
    /** Create call wrapper by partial application of arguments to function.
     *
     * The result of `std::bind_front<fn>(bind_args...)` is a function object
--- 957,962 ----
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 970,1001 ****
    template<auto __fn, typename... _BindArgs>
      constexpr decltype(auto)
      bind_front(_BindArgs&&... __bind_args)
!       noexcept(__and_v<is_nothrow_constructible<_BindArgs>...>)
      {
        using _Fn = decltype(__fn);
-       static_assert(
- 	(is_constructible_v<decay_t<_BindArgs>, _BindArgs> && ...) &&
- 	(is_move_constructible_v<decay_t<_BindArgs>> && ...));
        if constexpr (is_pointer_v<_Fn> || is_member_pointer_v<_Fn>)
  	static_assert(__fn != nullptr);
  
        if constexpr (sizeof...(_BindArgs) == 0)
  	return _Bind_fn_t<__fn>{};
!       else {
! 	return [... __bound_args(std::forward<_BindArgs>(__bind_args))]
! 	  <typename _Self, typename... _CallArgs>
! 	  (this _Self&&, _CallArgs&&... __call_args)
! 	    noexcept(is_nothrow_invocable_v<
! 	      const _Fn&, __like_t<_Self, decay_t<_BindArgs>>..., _CallArgs...>)
! 	    -> decltype(auto)
! 	    requires is_invocable_v<
! 	      const _Fn&, __like_t<_Self, decay_t<_BindArgs>>..., _CallArgs...>
! 	  {
! 	    return std::invoke(__fn,
! 	      std::forward_like<_Self>(__bound_args)...,
! 	      std::forward<_CallArgs>(__call_args)...);
! 	  };
!       }
      }
  
  #endif // __cpp_lib_bind_front  // C++26
--- 969,985 ----
    template<auto __fn, typename... _BindArgs>
      constexpr decltype(auto)
      bind_front(_BindArgs&&... __bind_args)
!     noexcept(__and_v<is_nothrow_constructible<_BindArgs>...>)
      {
        using _Fn = decltype(__fn);
        if constexpr (is_pointer_v<_Fn> || is_member_pointer_v<_Fn>)
  	static_assert(__fn != nullptr);
  
        if constexpr (sizeof...(_BindArgs) == 0)
  	return _Bind_fn_t<__fn>{};
!       else
!         return _Bind_front_t<_Bind_fn_t<__fn>, _BindArgs...>(0,
! 		 _Bind_fn_t<__fn>{}, std::forward<_BindArgs>(__bind_args)...);
      }
  
  #endif // __cpp_lib_bind_front  // C++26
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1035,1070 ****
    template<auto __fn, typename... _BindArgs>
      constexpr decltype(auto)
      bind_back(_BindArgs&&... __bind_args)
!       noexcept(__and_v<is_nothrow_constructible<_BindArgs>...>)
      {
        using _Fn = decltype(__fn);
-       static_assert(
- 	(is_constructible_v<decay_t<_BindArgs>, _BindArgs> && ...) &&
- 	(is_move_constructible_v<decay_t<_BindArgs>> && ...));
        if constexpr (is_pointer_v<_Fn> || is_member_pointer_v<_Fn>)
  	static_assert(__fn != nullptr);
  
        if constexpr (sizeof...(_BindArgs) == 0)
  	return _Bind_fn_t<__fn>{};
        else
!       {
! 	// Capture arguments in a lambda and return that.
! 	return [... __bound_args(std::forward<_BindArgs>(__bind_args))]
! 	  <typename _Self, typename... _CallArgs>
! 	  (this _Self&&, _CallArgs&&... __call_args)
! 	    noexcept(is_nothrow_invocable_v<
! 	      const _Fn&, _CallArgs..., __like_t<_Self, decay_t<_BindArgs>>...>)
! 	    -> decltype(auto)
! 	    requires is_invocable_v<
! 	      const _Fn&, _CallArgs..., __like_t<_Self, decay_t<_BindArgs>>...>
! 	  {
! 	    return std::invoke(__fn,
! 	      std::forward<_CallArgs>(__call_args)...,
! 	      std::forward_like<_Self>(__bound_args)...);
! 	  };
!       }
      }
- 
  #endif // __cpp_lib_bind_back  // C++26, nttp
  #endif // __cpp_lib_bind_back
  
--- 1019,1036 ----
    template<auto __fn, typename... _BindArgs>
      constexpr decltype(auto)
      bind_back(_BindArgs&&... __bind_args)
!     noexcept(__and_v<is_nothrow_constructible<_BindArgs>...>)
      {
        using _Fn = decltype(__fn);
        if constexpr (is_pointer_v<_Fn> || is_member_pointer_v<_Fn>)
  	static_assert(__fn != nullptr);
  
        if constexpr (sizeof...(_BindArgs) == 0)
  	return _Bind_fn_t<__fn>{};
        else
!         return _Bind_back_t<_Bind_fn_t<__fn>, _BindArgs...>(0,
! 		 _Bind_fn_t<__fn>{}, std::forward<_BindArgs>(__bind_args)...);
      }
  #endif // __cpp_lib_bind_back  // C++26, nttp
  #endif // __cpp_lib_bind_back
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1168,1174 ****
      }
  
  #if __cpp_lib_not_fn >= 202306L
- 
    /** Wrap a function type to create a function object that negates its result.
     *
     * The function template `std::not_fn` creates a "forwarding call wrapper",
--- 1134,1139 ----
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1196,1202 ****
  	    !std::invoke(__fn, std::forward<_Args>(__args)...); }
  	{ return !std::invoke(__fn, std::forward<_Args>(__args)...); };
      };
- 
  #endif // __cpp_lib_not_fn >= 202306L
  #endif // __cpp_lib_not_fn
  
--- 1161,1166 ----
diff -Nrcpad gcc-16-20251109/libstdc++-v3/include/std/optional gcc-16-20251116/libstdc++-v3/include/std/optional
*** gcc-16-20251109/libstdc++-v3/include/std/optional	Sun Nov  9 22:34:27 2025
--- gcc-16-20251116/libstdc++-v3/include/std/optional	Sun Nov 16 22:35:08 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1484,1496 ****
  
  #if __cpp_lib_optional >= 202506L // C++26
    template<typename _Tp>
!     class optional<_Tp&>
      {
        static_assert(__is_valid_contained_type_for_optional<_Tp&>);
  
      public:
        using value_type = _Tp;
-       using iterator = __gnu_cxx::__normal_iterator<_Tp*, optional>;
  
        // Constructors.
        constexpr optional() noexcept = default;
--- 1484,1521 ----
  
  #if __cpp_lib_optional >= 202506L // C++26
    template<typename _Tp>
!     class optional<_Tp&>;
! 
!   template<typename _Tp>
!     constexpr bool __is_optional_ref_v = false;
! 
!   template<typename _Tp>
!     constexpr bool __is_optional_ref_v<optional<_Tp&>> = true;
! 
!   template<typename _Tp>
!     struct __optional_ref_base
!     {};
! 
! #ifdef __cpp_lib_optional_range_support // >= C++26
!   template<typename _Tp>
!     struct __optional_ref_base<_Tp[]>
!     {};
! 
!   template<typename _Tp>
!     requires is_object_v<_Tp>
!     struct __optional_ref_base<_Tp>
!     {
!       using iterator = __gnu_cxx::__normal_iterator<_Tp*, optional<_Tp&>>;
!     };
! #endif // __cpp_lib_optional_range_support
! 
!   template<typename _Tp>
!     class optional<_Tp&> : public __optional_ref_base<_Tp>
      {
        static_assert(__is_valid_contained_type_for_optional<_Tp&>);
  
      public:
        using value_type = _Tp;
  
        // Constructors.
        constexpr optional() noexcept = default;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1652,1667 ****
        constexpr void swap(optional& __rhs) noexcept
        { std::swap(_M_val, __rhs._M_val); }
  
        // Iterator support.
!       constexpr iterator begin() const noexcept
!       {
! 	return iterator(_M_val);
!       }
  
!       constexpr iterator end() const noexcept
!       {
! 	return begin() + has_value();
!       }
  
        // Observers.
        constexpr _Tp* operator->() const noexcept
--- 1677,1692 ----
        constexpr void swap(optional& __rhs) noexcept
        { std::swap(_M_val, __rhs._M_val); }
  
+ #ifdef __cpp_lib_optional_range_support // >= C++26
        // Iterator support.
!       constexpr auto begin() const noexcept
! 	requires is_object_v<_Tp> && (!is_unbounded_array_v<_Tp>)
!       { return __gnu_cxx::__normal_iterator<_Tp*, optional>(_M_val); }
  
!       constexpr auto end() const noexcept
! 	requires is_object_v<_Tp> && (!is_unbounded_array_v<_Tp>)
!       { return begin() + has_value(); }
! #endif // __cpp_lib_optional_range_support
  
        // Observers.
        constexpr _Tp* operator->() const noexcept
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2163,2168 ****
--- 2188,2199 ----
      inline constexpr bool
        ranges::enable_view<optional<_Tp>> = true;
  
+ #if __cpp_lib_optional >= 202506L // C++26
+   template<typename _Tp>
+     constexpr bool
+     ranges::enable_borrowed_range<optional<_Tp&>> = true;
+ #endif
+ 
    template<typename _Tp>
      inline constexpr range_format
        format_kind<optional<_Tp>> = range_format::disabled;
diff -Nrcpad gcc-16-20251109/libstdc++-v3/include/std/ranges gcc-16-20251116/libstdc++-v3/include/std/ranges
*** gcc-16-20251109/libstdc++-v3/include/std/ranges	Sun Nov  9 22:34:27 2025
--- gcc-16-20251116/libstdc++-v3/include/std/ranges	Sun Nov 16 22:35:08 2025
*************** namespace views::__adaptor
*** 2403,2408 ****
--- 2403,2412 ----
  	  using _Tp = remove_cvref_t<_Range>;
  	  if constexpr (__detail::__is_empty_view<_Tp>)
  	    return _Tp();
+ #ifdef __cpp_lib_optional_range_support // >= C++26
+ 	  else if constexpr (__is_optional_v<_Tp> && view<_Tp>)
+ 	    return __n ? std::forward<_Range>(__r) : _Tp();
+ #endif
  	  else if constexpr (random_access_range<_Tp>
  			     && sized_range<_Tp>
  			     && (std::__detail::__is_span<_Tp>
*************** namespace views::__adaptor
*** 2679,2684 ****
--- 2683,2692 ----
  	  using _Tp = remove_cvref_t<_Range>;
  	  if constexpr (__detail::__is_empty_view<_Tp>)
  	    return _Tp();
+ #ifdef __cpp_lib_optional_range_support // >= C++26
+ 	  else if constexpr (__is_optional_v<_Tp> && view<_Tp>)
+ 	    return __n ? _Tp() : std::forward<_Range>(__r);
+ #endif
  	  else if constexpr (random_access_range<_Tp>
  			     && sized_range<_Tp>
  			     && (std::__detail::__is_span<_Tp>
*************** namespace views::__adaptor
*** 4156,4161 ****
--- 4164,4173 ----
  	  using _Tp = remove_cvref_t<_Range>;
  	  if constexpr (__detail::__is_reverse_view<_Tp>)
  	    return std::forward<_Range>(__r).base();
+ #ifdef __cpp_lib_optional_range_support // >= C++26
+ 	  else if constexpr (__is_optional_v<_Tp> && view<_Tp>)
+ 	    return std::forward<_Range>(__r);
+ #endif
  	  else if constexpr (__detail::__is_reversible_subrange<_Tp>)
  	    {
  	      using _Iter = decltype(ranges::begin(__r).base());
*************** namespace views::__adaptor
*** 9312,9317 ****
--- 9324,9333 ----
  	  return views::all(std::forward<_Range>(__r));
  	else if constexpr (__detail::__is_empty_view<_Tp>)
  	  return views::empty<const element_type>;
+ #if __cpp_lib_optional >= 202506L && __cpp_lib_optional_range_support // >= C++26
+ 	else if constexpr (__is_optional_ref_v<_Tp>)
+ 	  return optional<const typename _Tp::value_type&>(__r);
+ #endif
  	else if constexpr (std::__detail::__is_span<_Tp>)
  	  return span<const element_type, _Tp::extent>(std::forward<_Range>(__r));
  	else if constexpr (__detail::__is_constable_ref_view<_Tp>)
diff -Nrcpad gcc-16-20251109/libstdc++-v3/libsupc++/compare gcc-16-20251116/libstdc++-v3/libsupc++/compare
*** gcc-16-20251109/libstdc++-v3/libsupc++/compare	Sun Nov  9 22:34:27 2025
--- gcc-16-20251116/libstdc++-v3/libsupc++/compare	Sun Nov 16 22:35:08 2025
*************** namespace std _GLIBCXX_VISIBILITY(defaul
*** 1272,1278 ****
      {
        static constexpr strong_ordering value = __builtin_type_order(_Tp, _Up);
        using value_type = strong_ordering;
-       using type = type_order<_Tp, _Up>;
        constexpr operator value_type() const noexcept { return value; }
        constexpr value_type operator()() const noexcept { return value; }
      };
--- 1272,1277 ----
diff -Nrcpad gcc-16-20251109/libstdc++-v3/python/libstdcxx/v6/printers.py gcc-16-20251116/libstdc++-v3/python/libstdcxx/v6/printers.py
*** gcc-16-20251109/libstdc++-v3/python/libstdcxx/v6/printers.py	Sun Nov  9 22:34:27 2025
--- gcc-16-20251116/libstdc++-v3/python/libstdcxx/v6/printers.py	Sun Nov 16 22:35:08 2025
*************** class StdVectorPrinter(printer_base):
*** 572,578 ****
                                self._val['_M_impl']['_M_finish'],
                                self._is_bool)
  
!     def to_string(self):
          start = self._val['_M_impl']['_M_start']
          finish = self._val['_M_impl']['_M_finish']
          end = self._val['_M_impl']['_M_end_of_storage']
--- 572,581 ----
                                self._val['_M_impl']['_M_finish'],
                                self._is_bool)
  
!     # Helper to compute the bounds of the vector.
!     # Returns a tuple: (length, capacity, suffix)
!     # SUFFIX is a type-name suffix to print.
!     def _bounds(self):
          start = self._val['_M_impl']['_M_start']
          finish = self._val['_M_impl']['_M_finish']
          end = self._val['_M_impl']['_M_end_of_storage']
*************** class StdVectorPrinter(printer_base):
*** 582,594 ****
              fo = self._val['_M_impl']['_M_finish']['_M_offset']
              itype = start.dereference().type
              bl = 8 * itype.sizeof
!             length = bl * (finish - start) + fo
!             capacity = bl * (end - start)
!             return ('%s<bool> of length %d, capacity %d'
!                     % (self._typename, int(length), int(capacity)))
          else:
!             return ('%s of length %d, capacity %d'
!                     % (self._typename, int(finish - start), int(end - start)))
  
      def display_hint(self):
          return 'array'
--- 585,611 ----
              fo = self._val['_M_impl']['_M_finish']['_M_offset']
              itype = start.dereference().type
              bl = 8 * itype.sizeof
!             length = int(bl * (finish - start) + fo)
!             capacity = int(bl * (end - start))
!             suffix = '<bool>'
          else:
!             length = int(finish - start)
!             capacity = int(end - start)
!             suffix = ''
!         if length < 0:
!             # Probably uninitialized.
!             length = 0
!             capacity = 0
!         return (length, capacity, suffix)
! 
!     def to_string(self):
!         (length, capacity, suffix) = self._bounds()
!         return ('%s%s of length %d, capacity %d'
!                 % (self._typename, suffix, length, capacity))
! 
!     def num_children(self):
!         (length, capacity, suffix) = self._bounds()
!         return length
  
      def display_hint(self):
          return 'array'
*************** class StdStackOrQueuePrinter(printer_bas
*** 733,738 ****
--- 750,760 ----
          return '%s wrapping: %s' % (self._typename,
                                      self._visualizer.to_string())
  
+     def num_children(self):
+         if hasattr(self._visualizer, 'num_children'):
+             return self._visualizer.num_children()
+         return None
+ 
      def display_hint(self):
          if hasattr(self._visualizer, 'display_hint'):
              return self._visualizer.display_hint()
*************** class StdMapPrinter(printer_base):
*** 876,881 ****
--- 898,906 ----
          node = lookup_node_type('_Rb_tree_node', self._val.type).pointer()
          return self._iter(RbtreeIterator(self._val), node)
  
+     def num_children(slf):
+         return len(RbtreeIterator(self._val))
+ 
      def display_hint(self):
          return 'map'
  
*************** class StdSetPrinter(printer_base):
*** 915,920 ****
--- 940,947 ----
          node = lookup_node_type('_Rb_tree_node', self._val.type).pointer()
          return self._iter(RbtreeIterator(self._val), node)
  
+     def num_children(slf):
+         return len(RbtreeIterator(self._val))
  
  class StdBitsetPrinter(printer_base):
      """Print a std::bitset."""
*************** class StdDequePrinter(printer_base):
*** 1006,1012 ****
          else:
              self._buffer_size = 1
  
!     def to_string(self):
          start = self._val['_M_impl']['_M_start']
          end = self._val['_M_impl']['_M_finish']
  
--- 1033,1040 ----
          else:
              self._buffer_size = 1
  
!     # Helper to compute the size.
!     def _size(self):
          start = self._val['_M_impl']['_M_start']
          end = self._val['_M_impl']['_M_finish']
  
*************** class StdDequePrinter(printer_base):
*** 1014,1022 ****
          delta_s = start['_M_last'] - start['_M_cur']
          delta_e = end['_M_cur'] - end['_M_first']
  
!         size = self._buffer_size * delta_n + delta_s + delta_e
  
!         return '%s with %s' % (self._typename, num_elements(long(size)))
  
      def children(self):
          start = self._val['_M_impl']['_M_start']
--- 1042,1052 ----
          delta_s = start['_M_last'] - start['_M_cur']
          delta_e = end['_M_cur'] - end['_M_first']
  
!         return long(self._buffer_size * delta_n + delta_s + delta_e)
  
!     def to_string(self):
!         size = self._size()
!         return '%s with %s' % (self._typename, num_elements(size))
  
      def children(self):
          start = self._val['_M_impl']['_M_start']
*************** class StdDequePrinter(printer_base):
*** 1024,1029 ****
--- 1054,1062 ----
          return self._iter(start['_M_node'], start['_M_cur'], start['_M_last'],
                            end['_M_cur'], self._buffer_size)
  
+     def num_children(self):
+         return self._size()
+ 
      def display_hint(self):
          return 'array'
  
*************** class Tr1UnorderedSetPrinter(printer_bas
*** 1210,1215 ****
--- 1243,1251 ----
              return izip(counter, Tr1HashtableIterator(self._hashtable()))
          return izip(counter, StdHashtableIterator(self._hashtable()))
  
+     def num_children(self):
+         return int(self._hashtable()['_M_element_count'])
+ 
  
  class Tr1UnorderedMapPrinter(printer_base):
      """Print a std::unordered_map or tr1::unordered_map."""
*************** class Tr1UnorderedMapPrinter(printer_bas
*** 1254,1259 ****
--- 1290,1298 ----
          # Zip the two iterators together.
          return izip(counter, data)
  
+     def num_children(self):
+         return int(self._hashtable()['_M_element_count'])
+ 
      def display_hint(self):
          return 'map'
  
*************** class StdSpanPrinter(printer_base):
*** 1949,1954 ****
--- 1988,1996 ----
      def children(self):
          return self._iterator(self._val['_M_ptr'], self._size)
  
+     def num_children(self):
+         return int(self._size)
+ 
      def display_hint(self):
          return 'array'
  
diff -Nrcpad gcc-16-20251109/libstdc++-v3/scripts/extract_symvers.pl gcc-16-20251116/libstdc++-v3/scripts/extract_symvers.pl
*** gcc-16-20251109/libstdc++-v3/scripts/extract_symvers.pl	Sun Nov  9 22:34:27 2025
--- gcc-16-20251116/libstdc++-v3/scripts/extract_symvers.pl	Sun Nov 16 22:35:08 2025
*************** close PVS or die "pvs error";
*** 95,101 ****
  # Ignore error output to avoid getting confused by
  # .gnu.version_r: zero sh_entsize information, expected 0x1
  # warning with Solaris 11 elfdump on gld-produced shared objects.
! open ELFDUMP, "/usr/ccs/bin/elfdump -s -N .dynsym $lib 2>/dev/null |" or die $!;
  while (<ELFDUMP>) {
      chomp;
  
--- 95,101 ----
  # Ignore error output to avoid getting confused by
  # .gnu.version_r: zero sh_entsize information, expected 0x1
  # warning with Solaris 11 elfdump on gld-produced shared objects.
! open ELFDUMP, "/usr/bin/elfdump -s -N .dynsym $lib 2>/dev/null |" or die $!;
  while (<ELFDUMP>) {
      chomp;
  
diff -Nrcpad gcc-16-20251109/libstdc++-v3/src/c++20/atomic.cc gcc-16-20251116/libstdc++-v3/src/c++20/atomic.cc
*** gcc-16-20251109/libstdc++-v3/src/c++20/atomic.cc	Sun Nov  9 22:34:27 2025
--- gcc-16-20251116/libstdc++-v3/src/c++20/atomic.cc	Sun Nov 16 22:35:08 2025
*************** __wait_impl(const void* __addr, __wait_a
*** 278,284 ****
      set_wait_state(__addr, __args); // scoped_wait needs a __waitable_state
    scoped_wait s(__args);
    __platform_wait(__wait_addr, __args._M_old);
!   // We haven't loaded a new value so return false as first member:
    return { ._M_val = __args._M_old, ._M_has_val = false, ._M_timeout = false };
  #else
    waiter_lock l(__args);
--- 278,284 ----
      set_wait_state(__addr, __args); // scoped_wait needs a __waitable_state
    scoped_wait s(__args);
    __platform_wait(__wait_addr, __args._M_old);
!   // We haven't loaded a new value so return _M_has_val=false
    return { ._M_val = __args._M_old, ._M_has_val = false, ._M_timeout = false };
  #else
    waiter_lock l(__args);
*************** __wait_until_impl(const void* __addr, __
*** 452,471 ****
    if (__args & __wait_flags::__track_contention)
      set_wait_state(__addr, __args);
    scoped_wait s(__args);
!   if (__platform_wait_until(__wait_addr, __args._M_old, __atime))
!     return { ._M_val = __args._M_old, ._M_has_val = false, ._M_timeout = false };
!   else
!     return { ._M_val = __args._M_old, ._M_has_val = false, ._M_timeout = true };
  #else
    waiter_lock l(__args);
    __platform_wait_t __val;
    __atomic_load(__wait_addr, &__val, __args._M_order);
    if (__val == __args._M_old)
      {
!       if (__cond_wait_until(__state->_M_cv, __state->_M_mtx, __atime))
! 	return { ._M_val = __val, ._M_has_val = false, ._M_timeout = false };
!       else
! 	return { ._M_val = __val, ._M_has_val = false, ._M_timeout = true };
      }
    return { ._M_val = __val, ._M_has_val = true, ._M_timeout = false };
  #endif
--- 452,467 ----
    if (__args & __wait_flags::__track_contention)
      set_wait_state(__addr, __args);
    scoped_wait s(__args);
!   bool timeout = !__platform_wait_until(__wait_addr, __args._M_old, __atime);
!   return { ._M_val = __args._M_old, ._M_has_val = false, ._M_timeout = timeout };
  #else
    waiter_lock l(__args);
    __platform_wait_t __val;
    __atomic_load(__wait_addr, &__val, __args._M_order);
    if (__val == __args._M_old)
      {
!       bool timeout = !__cond_wait_until(__state->_M_cv, __state->_M_mtx, __atime);
!       return { ._M_val = __val, ._M_has_val = false, ._M_timeout = timeout };
      }
    return { ._M_val = __val, ._M_has_val = true, ._M_timeout = false };
  #endif
diff -Nrcpad gcc-16-20251109/libstdc++-v3/src/c++20/syncbuf.cc gcc-16-20251116/libstdc++-v3/src/c++20/syncbuf.cc
*** gcc-16-20251109/libstdc++-v3/src/c++20/syncbuf.cc	Sun Nov  9 22:34:27 2025
--- gcc-16-20251116/libstdc++-v3/src/c++20/syncbuf.cc	Sun Nov 16 22:35:08 2025
***************
*** 23,28 ****
--- 23,29 ----
  // <http://www.gnu.org/licenses/>.
  
  #include <syncstream>
+ #include <mutex>
  #include <bits/functional_hash.h>
  
  #if _GLIBCXX_HAS_GTHREADS
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 32,44 ****
  
  mutex&
  __syncbuf_get_mutex(void* __t)
!   {
!     const unsigned char __mask = 0xf;
!     static mutex __m[__mask + 1];
  
!     auto __key = _Hash_impl::hash(__t) & __mask;
!     return __m[__key];
!   }
  
  _GLIBCXX_END_NAMESPACE_VERSION
  }
--- 33,45 ----
  
  mutex&
  __syncbuf_get_mutex(void* __t)
! {
!   const unsigned char __mask = 0xf;
!   static mutex __m[__mask + 1];
  
!   auto __key = _Hash_impl::hash(__t) & __mask;
!   return __m[__key];
! }
  
  _GLIBCXX_END_NAMESPACE_VERSION
  }
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/18_support/exception_ptr/62258.cc gcc-16-20251116/libstdc++-v3/testsuite/18_support/exception_ptr/62258.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/18_support/exception_ptr/62258.cc	Sun Nov  9 22:34:28 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/18_support/exception_ptr/62258.cc	Sun Nov 16 22:35:08 2025
***************
*** 1,4 ****
! // { dg-options "-Wno-deprecated" }
  // { dg-do run { target c++11 } }
  
  // Copyright (C) 2015-2025 Free Software Foundation, Inc.
--- 1,4 ----
! // { dg-options "-Wno-deprecated-declarations" }
  // { dg-do run { target c++11 } }
  
  // Copyright (C) 2015-2025 Free Software Foundation, Inc.
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/18_support/headers/climits/values.cc gcc-16-20251116/libstdc++-v3/testsuite/18_support/headers/climits/values.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/18_support/headers/climits/values.cc	Sun Nov  9 22:34:28 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/18_support/headers/climits/values.cc	Sun Nov 16 22:35:08 2025
*************** namespace gnu
*** 49,52 ****
--- 49,60 ----
    unsigned short us = USHRT_MAX;
    unsigned long ul = ULONG_MAX;
  
+ #if __cplusplus >= 201103L
+   // long long
+   long long ll1 = LLONG_MIN;
+   long long ll2 = LLONG_MAX;
+ 
+   // unsigned long long
+   unsigned long long ull1 = ULLONG_MAX;
+ #endif
  }
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/18_support/headers/csignal/macros.cc gcc-16-20251116/libstdc++-v3/testsuite/18_support/headers/csignal/macros.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/18_support/headers/csignal/macros.cc	Sun Nov  9 22:34:28 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/18_support/headers/csignal/macros.cc	Sun Nov 16 22:35:08 2025
*************** namespace gnu
*** 37,42 ****
--- 37,46 ----
      #error "SIG_DFL_must_be_a_macro"
  #endif
  
+ #ifndef SIG_IGN
+     #error "SIG_IGN_must_be_a_macro"
+ #endif
+ 
  #ifndef SIGFPE
      #error "SIGFPE_must_be_a_macro"
  #endif
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/18_support/uncaught_exception/14026.cc gcc-16-20251116/libstdc++-v3/testsuite/18_support/uncaught_exception/14026.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/18_support/uncaught_exception/14026.cc	Sun Nov  9 22:34:28 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/18_support/uncaught_exception/14026.cc	Sun Nov 16 22:35:08 2025
***************
*** 18,24 ****
  // PR 14026
  // 18.6.4 uncaught_exception
  
! // { dg-options "-Wno-deprecated" }
  
  #include <cstdlib>
  #include <exception>
--- 18,24 ----
  // PR 14026
  // 18.6.4 uncaught_exception
  
! // { dg-options "-Wno-deprecated-declarations" }
  
  #include <cstdlib>
  #include <exception>
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/20_util/bitset/121054.cc gcc-16-20251116/libstdc++-v3/testsuite/20_util/bitset/121054.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/20_util/bitset/121054.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libstdc++-v3/testsuite/20_util/bitset/121054.cc	Sun Nov 16 22:35:09 2025
***************
*** 0 ****
--- 1,233 ----
+ // { dg-do run }
+ 
+ // PR libstdc++/121054 std::bitset<0>("zero") should throw std::invalid_argument
+ #include <bitset>
+ #include <stdexcept>
+ #include <testsuite_hooks.h>
+ 
+ void
+ test01()
+ {
+   try {
+     std::bitset<0>(std::string("x"));
+     VERIFY( false );
+   }
+   catch(std::invalid_argument& fail) {
+     VERIFY( true );
+   }
+   catch(...) {
+     VERIFY( false );
+   }
+ 
+   try {
+     std::bitset<1>(std::string("0x"));
+     VERIFY( false );
+   }
+   catch(std::invalid_argument& fail) {
+     VERIFY( true );
+   }
+   catch(...) {
+     VERIFY( false );
+   }
+ 
+   try {
+     std::bitset<0>(std::string("01"));
+     VERIFY( true );
+   }
+   catch(std::invalid_argument& fail) {
+     VERIFY( false );
+   }
+   catch(...) {
+     VERIFY( false );
+   }
+ 
+   try {
+     std::bitset<1>(std::string("x0"), 1);
+     VERIFY( true );
+   }
+   catch(std::invalid_argument& fail) {
+     VERIFY( false );
+   }
+   catch(...) {
+     VERIFY( false );
+   }
+ 
+ #if _GLIBCXX_USE_C99_WCHAR
+   try {
+     std::bitset<1>(std::wstring(L"0x"));
+     VERIFY( false );
+   }
+   catch(std::invalid_argument& fail) {
+     VERIFY( true );
+   }
+   catch(...) {
+     VERIFY( false );
+   }
+ 
+   try {
+     std::bitset<1>(std::wstring(L"x0"), 1);
+     VERIFY( true );
+   }
+   catch(std::invalid_argument& fail) {
+     VERIFY( false );
+   }
+   catch(...) {
+     VERIFY( false );
+   }
+ #endif
+ }
+ 
+ void
+ test02()
+ {
+ #if __cplusplus >= 201103L
+   try {
+     std::bitset<0>("x");
+     VERIFY( false );
+   }
+   catch(std::invalid_argument& fail) {
+     VERIFY( true );
+   }
+   catch(...) {
+     VERIFY( false );
+   }
+ 
+   try {
+     std::bitset<1>("0x", 2);
+     VERIFY( false );
+   }
+   catch(std::invalid_argument& fail) {
+     VERIFY( true );
+   }
+   catch(...) {
+     VERIFY( false );
+   }
+ 
+   try {
+     std::bitset<1>("0x", 1);
+     VERIFY( true );
+   }
+   catch(std::invalid_argument& fail) {
+     VERIFY( false );
+   }
+   catch(...) {
+     VERIFY( false );
+   }
+ 
+   try {
+     std::bitset<0>("01");
+     VERIFY( true );
+   }
+   catch(std::invalid_argument& fail) {
+     VERIFY( false );
+   }
+   catch(...) {
+     VERIFY( false );
+   }
+ 
+ #if _GLIBCXX_USE_C99_WCHAR
+   try {
+     std::bitset<1>(L"0x", 2);
+     VERIFY( false );
+   }
+   catch(std::invalid_argument& fail) {
+     VERIFY( true );
+   }
+   catch(...) {
+     VERIFY( false );
+   }
+ 
+   try {
+     std::bitset<1>(L"0x", 1);
+     VERIFY( true );
+   }
+   catch(std::invalid_argument& fail) {
+     VERIFY( false );
+   }
+   catch(...) {
+     VERIFY( false );
+   }
+ #endif
+ #endif
+ }
+ 
+ void
+ test03()
+ {
+ #if __cpp_lib_bitset >= 202202L
+   try {
+     std::bitset<0>(std::string_view("x"));
+     VERIFY( false );
+   }
+   catch(std::invalid_argument& fail) {
+     VERIFY( true );
+   }
+   catch(...) {
+     VERIFY( false );
+   }
+ 
+   try {
+     std::bitset<1>(std::string_view("0x"));
+     VERIFY( false );
+   }
+   catch(std::invalid_argument& fail) {
+     VERIFY( true );
+   }
+   catch(...) {
+     VERIFY( false );
+   }
+ 
+   try {
+     std::bitset<0>(std::string_view("01"));
+     VERIFY( true );
+   }
+   catch(std::invalid_argument& fail) {
+     VERIFY( false );
+   }
+   catch(...) {
+     VERIFY( false );
+   }
+ 
+   try {
+     std::bitset<1>(std::string_view("x0"), 1);
+     VERIFY( true );
+   }
+   catch(std::invalid_argument& fail) {
+     VERIFY( false );
+   }
+   catch(...) {
+     VERIFY( false );
+   }
+ 
+ #if _GLIBCXX_USE_C99_WCHAR
+   try {
+     std::bitset<1>(std::wstring_view(L"0x"));
+     VERIFY( false );
+   }
+   catch(std::invalid_argument& fail) {
+     VERIFY( true );
+   }
+   catch(...) {
+     VERIFY( false );
+   }
+ 
+   try {
+     std::bitset<1>(std::wstring_view(L"x0"), 1);
+     VERIFY( true );
+   }
+   catch(std::invalid_argument& fail) {
+     VERIFY( false );
+   }
+   catch(...) {
+     VERIFY( false );
+   }
+ #endif
+ #endif
+ }
+ 
+ int main()
+ {
+   test01();
+   test02();
+   test03();
+ }
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/20_util/bitset/cons/constexpr_c++23.cc gcc-16-20251116/libstdc++-v3/testsuite/20_util/bitset/cons/constexpr_c++23.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/20_util/bitset/cons/constexpr_c++23.cc	Sun Nov  9 22:34:28 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/20_util/bitset/cons/constexpr_c++23.cc	Sun Nov 16 22:35:09 2025
*************** constexpr bool test_ntbs()
*** 18,25 ****
    VERIFY( std::bitset<0>("000").all() );
    VERIFY( std::bitset<0>("000", 2).all() );
    VERIFY( std::bitset<1>("100", 2).all() );
-   VERIFY( std::bitset<1>("z00", 2, 'z').none() );
-   VERIFY( std::bitset<2>("ab0", 3, 'a', 'b').count() == 1 );
  
    return true;
  }
--- 18,23 ----
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/20_util/function_objects/bind_back/nttp.cc gcc-16-20251116/libstdc++-v3/testsuite/20_util/function_objects/bind_back/nttp.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/20_util/function_objects/bind_back/nttp.cc	Sun Nov  9 22:34:28 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/20_util/function_objects/bind_back/nttp.cc	Sun Nov 16 22:35:09 2025
*************** test01()
*** 24,29 ****
--- 24,48 ----
    struct F { void operator()(int) {} };
    constexpr F f{};
  
+   // Arguments should be decayed:
+   static_assert(std::is_same_v<
+       decltype(bind_back<f>(std::declval<int>())),
+       decltype(bind_back<f>(std::declval<int&>()))
+       >);
+   static_assert(std::is_same_v<
+       decltype(bind_back<f>(std::declval<int>())),
+       decltype(bind_back<f>(std::declval<const int&>()))
+       >);
+ 
+   static_assert(std::is_same_v<
+       decltype(bind_back<f>(std::declval<int>(), std::declval<float>())),
+       decltype(bind_back<f>(std::declval<int&>(), std::declval<float&>()))
+       >);
+   static_assert(std::is_same_v<
+       decltype(bind_back<f>(std::declval<int>(), std::declval<float>())),
+       decltype(bind_back<f>(std::declval<const int&>(), std::declval<const float&>()))
+       >);
+ 
    // Reference wrappers should be handled:
    static_assert(!std::is_same_v<
        decltype(bind_back<f>(std::declval<int&>())),
*************** test04()
*** 270,279 ****
    VERIFY(bind_back<g>(1)(2, 3) == 3*1 + 1*2 + 2*3 );
    constexpr auto g2 = bind_back<f>(1, 2);
    VERIFY(g2(3) == 2*1 + 3*2 + 1*3 );
-   VERIFY(bind_back<g1>(2)(3) == 3*1 + 2*2 + 1*3 );
    constexpr auto g3 = bind_back<f>(1, 2, 3);
    VERIFY(g3() == 1 + 2*2 + 3*3);
-   VERIFY(bind_back<g2>(3)() == 1*2 + 2*3 + 3*1 );
    return true;
  }
  
--- 289,296 ----
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/20_util/function_objects/bind_front/nttp.cc gcc-16-20251116/libstdc++-v3/testsuite/20_util/function_objects/bind_front/nttp.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/20_util/function_objects/bind_front/nttp.cc	Sun Nov  9 22:34:28 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/20_util/function_objects/bind_front/nttp.cc	Sun Nov 16 22:35:09 2025
*************** test01()
*** 24,29 ****
--- 24,48 ----
    struct F { void operator()(int) {} };
    constexpr F f{};
  
+   // Arguments should be decayed:
+   static_assert(std::is_same_v<
+       decltype(bind_front<f>(std::declval<int>())),
+       decltype(bind_front<f>(std::declval<int&>()))
+       >);
+   static_assert(std::is_same_v<
+       decltype(bind_front<f>(std::declval<int>())),
+       decltype(bind_front<f>(std::declval<const int&>()))
+       >);
+ 
+   static_assert(std::is_same_v<
+       decltype(bind_front<f>(std::declval<int>(), std::declval<float>())),
+       decltype(bind_front<f>(std::declval<int&>(), std::declval<float&>()))
+       >);
+   static_assert(std::is_same_v<
+       decltype(bind_front<f>(std::declval<int>(), std::declval<float>())),
+       decltype(bind_front<f>(std::declval<const int&>(), std::declval<const float&>()))
+       >);
+ 
    // Reference wrappers should be handled:
    static_assert(!std::is_same_v<
        decltype(bind_front<f>(std::declval<int&>())),
*************** test04()
*** 269,278 ****
    VERIFY( bind_front<g>(1)(2, 3) == 1 + 2*2 + 3*3 );
    constexpr auto g2 = bind_front<f>(1, 2);
    VERIFY( g2(3) == 1 + 2*2 + 3*3 );
-   VERIFY( bind_front<g1>(2)(3) == 1 + 2*2 + 3*3 );
    constexpr auto g3 = bind_front<f>(1, 2, 3);
    VERIFY( g3() == 1 + 2*2 + 3*3 );
-   VERIFY(bind_front<g2>(3)() == 1 + 2*2 + 3*3 );
    return true;
  }
  
--- 288,295 ----
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/20_util/headers/functional/synopsis.cc gcc-16-20251116/libstdc++-v3/testsuite/20_util/headers/functional/synopsis.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/20_util/headers/functional/synopsis.cc	Sun Nov  9 22:34:29 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/20_util/headers/functional/synopsis.cc	Sun Nov 16 22:35:09 2025
***************
*** 18,24 ****
  // with this library; see the file COPYING3.  If not see
  // <http://www.gnu.org/licenses/>.
  
! // { dg-options "-Wno-deprecated" }
  
  #include <functional>
  
--- 18,24 ----
  // with this library; see the file COPYING3.  If not see
  // <http://www.gnu.org/licenses/>.
  
! // { dg-options "-Wno-deprecated-declarations" }
  
  #include <functional>
  
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/20_util/is_literal_type/requirements/explicit_instantiation.cc gcc-16-20251116/libstdc++-v3/testsuite/20_util/is_literal_type/requirements/explicit_instantiation.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/20_util/is_literal_type/requirements/explicit_instantiation.cc	Sun Nov  9 22:34:29 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/20_util/is_literal_type/requirements/explicit_instantiation.cc	Sun Nov 16 22:35:09 2025
***************
*** 1,4 ****
! // { dg-additional-options "-Wno-deprecated" { target c++17 } }
  // { dg-do compile { target c++11 } }
  // 2010-02-21  Paolo Carlini  <paolo.carlini@oracle.com>
  
--- 1,4 ----
! // { dg-additional-options "-Wno-deprecated-declarations" { target c++17 } }
  // { dg-do compile { target c++11 } }
  // 2010-02-21  Paolo Carlini  <paolo.carlini@oracle.com>
  
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/20_util/is_literal_type/requirements/typedefs.cc gcc-16-20251116/libstdc++-v3/testsuite/20_util/is_literal_type/requirements/typedefs.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/20_util/is_literal_type/requirements/typedefs.cc	Sun Nov  9 22:34:29 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/20_util/is_literal_type/requirements/typedefs.cc	Sun Nov 16 22:35:09 2025
***************
*** 1,4 ****
! // { dg-additional-options "-Wno-deprecated" { target c++17 } }
  // { dg-do compile { target c++11 } }
  
  // 2010-02-21  Paolo Carlini  <paolo.carlini@oracle.com>
--- 1,4 ----
! // { dg-additional-options "-Wno-deprecated-declarations" { target c++17 } }
  // { dg-do compile { target c++11 } }
  
  // 2010-02-21  Paolo Carlini  <paolo.carlini@oracle.com>
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/20_util/is_literal_type/value.cc gcc-16-20251116/libstdc++-v3/testsuite/20_util/is_literal_type/value.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/20_util/is_literal_type/value.cc	Sun Nov  9 22:34:29 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/20_util/is_literal_type/value.cc	Sun Nov 16 22:35:09 2025
***************
*** 1,4 ****
! // { dg-additional-options "-Wno-deprecated" { target c++17 } }
  // { dg-do compile { target c++11 } }
  
  // 2010-03-23  Paolo Carlini  <paolo.carlini@oracle.com>
--- 1,4 ----
! // { dg-additional-options "-Wno-deprecated-declarations" { target c++17 } }
  // { dg-do compile { target c++11 } }
  
  // 2010-03-23  Paolo Carlini  <paolo.carlini@oracle.com>
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/20_util/is_pod/requirements/explicit_instantiation.cc gcc-16-20251116/libstdc++-v3/testsuite/20_util/is_pod/requirements/explicit_instantiation.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/20_util/is_pod/requirements/explicit_instantiation.cc	Sun Nov  9 22:34:29 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/20_util/is_pod/requirements/explicit_instantiation.cc	Sun Nov 16 22:35:09 2025
***************
*** 1,5 ****
  // { dg-do compile { target c++11 } }
! // { dg-additional-options "-Wno-deprecated" { target { c++2a } } }
  // 2010-02-21  Paolo Carlini  <paolo.carlini@oracle.com>
  
  // Copyright (C) 2010-2025 Free Software Foundation, Inc.
--- 1,5 ----
  // { dg-do compile { target c++11 } }
! // { dg-additional-options "-Wno-deprecated-declarations" { target { c++2a } } }
  // 2010-02-21  Paolo Carlini  <paolo.carlini@oracle.com>
  
  // Copyright (C) 2010-2025 Free Software Foundation, Inc.
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/20_util/is_pod/requirements/typedefs.cc gcc-16-20251116/libstdc++-v3/testsuite/20_util/is_pod/requirements/typedefs.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/20_util/is_pod/requirements/typedefs.cc	Sun Nov  9 22:34:29 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/20_util/is_pod/requirements/typedefs.cc	Sun Nov 16 22:35:09 2025
***************
*** 1,5 ****
  // { dg-do compile { target c++11 } }
! // { dg-additional-options "-Wno-deprecated" { target { c++2a } } }
  
  // 2010-02-21  Paolo Carlini  <paolo.carlini@oracle.com>
  //
--- 1,5 ----
  // { dg-do compile { target c++11 } }
! // { dg-additional-options "-Wno-deprecated-declarations" { target { c++2a } } }
  
  // 2010-02-21  Paolo Carlini  <paolo.carlini@oracle.com>
  //
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/20_util/is_pod/value.cc gcc-16-20251116/libstdc++-v3/testsuite/20_util/is_pod/value.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/20_util/is_pod/value.cc	Sun Nov  9 22:34:29 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/20_util/is_pod/value.cc	Sun Nov 16 22:35:09 2025
***************
*** 1,5 ****
  // { dg-do compile { target c++11 } }
! // { dg-additional-options "-Wno-deprecated" { target { c++2a } } }
  
  // 2010-02-21  Paolo Carlini  <pcarlini@suse.de>
  //
--- 1,5 ----
  // { dg-do compile { target c++11 } }
! // { dg-additional-options "-Wno-deprecated-declarations" { target { c++2a } } }
  
  // 2010-02-21  Paolo Carlini  <pcarlini@suse.de>
  //
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/20_util/optional/range.cc gcc-16-20251116/libstdc++-v3/testsuite/20_util/optional/range.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/20_util/optional/range.cc	Sun Nov  9 22:34:29 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/20_util/optional/range.cc	Sun Nov 16 22:35:17 2025
***************
*** 10,30 ****
  
  #include <testsuite_hooks.h>
  
! template<typename O>
  constexpr
  void
  test_range_concepts()
  {
    static_assert(std::ranges::contiguous_range<O>);
    static_assert(std::ranges::sized_range<O>);
    static_assert(std::ranges::common_range<O>);
-   static_assert(!std::ranges::borrowed_range<O>);
  
!   // an optional<const T> is not assignable, and therefore does not satisfy ranges::view
!   using T = typename O::value_type;
!   constexpr bool is_const_opt = std::is_const_v<T>;
!   static_assert(std::ranges::view<O> == !is_const_opt);
!   static_assert(std::ranges::viewable_range<O> == !is_const_opt);
  }
  
  template<typename O>
--- 10,55 ----
  
  #include <testsuite_hooks.h>
  
! struct NonMovable
! {
!   constexpr NonMovable() {}
!   constexpr NonMovable(int) {}
! 
!   NonMovable(NonMovable&&) = delete;
!   NonMovable& operator=(NonMovable&&) = delete;
! 
!   friend bool operator==(NonMovable const&, NonMovable const&) = default;
! };
! 
! struct NonAssignable
! {
!   NonAssignable() = default;
!   NonAssignable(NonAssignable&&) = default;
!   NonAssignable& operator=(NonAssignable&&) = delete;
!   
!   friend bool operator==(NonAssignable const&, NonAssignable const&) = default;
! };
! 
! template<typename T>
  constexpr
  void
  test_range_concepts()
  {
+   using O = std::optional<T>;
    static_assert(std::ranges::contiguous_range<O>);
    static_assert(std::ranges::sized_range<O>);
    static_assert(std::ranges::common_range<O>);
  
!   // an optional<T&> is borrowed range
!   constexpr bool is_ref_opt = std::is_reference_v<T>;
!   static_assert(std::ranges::borrowed_range<O> == is_ref_opt);
! 
!   // for any T (including const U) such that optional<T> is not assignable,
!   // it does not satisfy ranges::view
!   constexpr bool is_opt_view = std::is_reference_v<T> || std::movable<T>;
!   static_assert(std::ranges::view<O> == is_opt_view);
!   static_assert(std::ranges::viewable_range<O> == is_opt_view);
! 
  }
  
  template<typename O>
*************** test_iterator_concepts()
*** 39,45 ****
--- 64,77 ----
    static_assert(std::is_same_v<std::iter_value_t<iterator>, std::remove_cv_t<T>>);
    static_assert(std::is_same_v<typename std::iterator_traits<iterator>::reference, T&>);
    static_assert(std::is_same_v<std::iter_reference_t<iterator>, T&>);
+ }
  
+ template<typename O>
+ constexpr
+ void
+ test_const_iterator_concepts()
+ {
+   using T = typename O::value_type;
    using const_iterator = typename O::const_iterator;
    static_assert(std::contiguous_iterator<const_iterator>);
    static_assert(std::is_same_v<typename std::iterator_traits<const_iterator>::value_type, std::remove_cv_t<T>>);
*************** test_iterator_concepts()
*** 48,58 ****
    static_assert(std::is_same_v<std::iter_reference_t<const_iterator>, const T&>);
  }
  
! template<typename O>
  constexpr
  void
  test_empty()
  {
    O empty;
    VERIFY(!empty);
    VERIFY(empty.begin() == empty.end());
--- 80,91 ----
    static_assert(std::is_same_v<std::iter_reference_t<const_iterator>, const T&>);
  }
  
! template<typename T>
  constexpr
  void
  test_empty()
  {
+   using O = std::optional<T>;
    O empty;
    VERIFY(!empty);
    VERIFY(empty.begin() == empty.end());
*************** test_empty()
*** 69,82 ****
    VERIFY(count == 0);
  }
  
! template<typename O, typename T>
  constexpr
  void
  test_non_empty(const T& value)
  {
!   O non_empty = std::make_optional(value);
    VERIFY(non_empty);
!   VERIFY(*non_empty == value);
    VERIFY(non_empty.begin() != non_empty.end());
    VERIFY(non_empty.begin() < non_empty.end());
    VERIFY(std::as_const(non_empty).begin() != std::as_const(non_empty).end());
--- 102,119 ----
    VERIFY(count == 0);
  }
  
! template<typename T>
  constexpr
  void
  test_non_empty(const T& value)
  {
!   using O = std::optional<T>;
!   using V = typename O::value_type;
!   O non_empty(std::in_place, value);
    VERIFY(non_empty);
!   if constexpr (!std::is_array_v<V>)
!     VERIFY(*non_empty == value);
! 
    VERIFY(non_empty.begin() != non_empty.end());
    VERIFY(non_empty.begin() < non_empty.end());
    VERIFY(std::as_const(non_empty).begin() != std::as_const(non_empty).end());
*************** test_non_empty(const T& value)
*** 92,102 ****
      ++count;
    VERIFY(count == 1);
  
!   if constexpr (!std::is_const_v<typename O::value_type>) {
      for (auto& x : non_empty)
!       x = T{};
      VERIFY(non_empty);
!     VERIFY(*non_empty == T{});
    }
  }
  
--- 129,139 ----
      ++count;
    VERIFY(count == 1);
  
!   if constexpr (std::is_move_assignable_v<V>) {
      for (auto& x : non_empty)
!       x = V{};
      VERIFY(non_empty);
!     VERIFY(*non_empty == V{});
    }
  }
  
*************** void
*** 106,115 ****
  test(const T& value)
  {
    using O = std::optional<T>;
!   test_range_concepts<O>();
    test_iterator_concepts<O>();
!   test_empty<O>();
!   test_non_empty<O>(value);
    static_assert(!std::formattable<O, char>);
    static_assert(!std::formattable<O, wchar_t>);
    static_assert(std::format_kind<O> == std::range_format::disabled);
--- 143,154 ----
  test(const T& value)
  {
    using O = std::optional<T>;
!   test_range_concepts<T>();
    test_iterator_concepts<O>();
!   if constexpr (!std::is_reference_v<T>)
!     test_const_iterator_concepts<O>();
!   test_empty<T>();
!   test_non_empty<T>(value);
    static_assert(!std::formattable<O, char>);
    static_assert(!std::formattable<O, wchar_t>);
    static_assert(std::format_kind<O> == std::range_format::disabled);
*************** range_chain_example() // from P3168
*** 142,161 ****
--- 181,348 ----
    VERIFY(ok);
  }
  
+ template<typename T>
+ constexpr void test_not_range()
+ {
+   static_assert(!requires { typename std::optional<T>::iterator; });
+   static_assert(!requires(std::optional<T> o) { o.begin(); });
+   static_assert(!requires(std::optional<T> o) { o.end(); });
+ };
+ 
+ template<typename T>
+ constexpr bool is_optional = false;
+ 
+ template<typename T>
+ constexpr bool is_optional<std::optional<T>> = true;
+ 
+ template<bool usesOptional, typename T, typename U = std::remove_cv_t<T>>
+ constexpr void test_as_const(std::type_identity_t<U> u)
+ {
+   std::optional<T> o(std::in_place, std::forward<U>(u));
+   auto cv = std::views::as_const(o);
+   static_assert(is_optional<decltype(cv)> == usesOptional);
+   static_assert(std::is_same_v<decltype(*cv.begin()), const std::remove_reference_t<T>&>);
+   VERIFY(!std::ranges::empty(cv));
+       
+   std::optional<T> e;
+   auto cve = std::views::as_const(e);
+   static_assert(is_optional<decltype(cve)> == usesOptional);
+   static_assert(std::is_same_v<decltype(*cve.begin()), const std::remove_reference_t<T>&>);
+   VERIFY(std::ranges::empty(cve));
+ }
+ 
+ template<bool usesOptional, typename T, typename U = std::remove_cv_t<T>>
+ constexpr void
+ test_reverse(std::type_identity_t<U> u)
+ {
+   std::optional<T> o(std::in_place, std::forward<U>(u));
+   auto rv = std::views::reverse(o);
+   static_assert(is_optional<decltype(rv)> == usesOptional);
+   static_assert(std::is_same_v<decltype(*rv.begin()), T&>);
+   VERIFY(!std::ranges::empty(rv));
+       
+   std::optional<T> e;
+   auto rve = std::views::reverse(e);
+   static_assert(is_optional<decltype(rve)> == usesOptional);
+   static_assert(std::is_same_v<decltype(*rve.begin()), T&>);
+   VERIFY(std::ranges::empty(rve));
+ }
+ 
+ template<bool usesOptional, typename T, typename U = std::remove_cv_t<T>>
+ constexpr void
+ test_take(std::type_identity_t<U> u)
+ {
+   std::optional<T> o(std::in_place, std::forward<U>(u));
+   auto tvp = std::views::take(o, 3);
+   static_assert(is_optional<decltype(tvp)> == usesOptional);
+   static_assert(std::is_same_v<decltype(*tvp.begin()), T&>);
+   VERIFY(!std::ranges::empty(tvp));
+ 
+   auto tvz = std::views::take(o, 0);
+   static_assert(is_optional<decltype(tvz)> == usesOptional);
+   static_assert(std::is_same_v<decltype(*tvz.begin()), T&>);
+   VERIFY(std::ranges::empty(tvz));
+ 
+   std::optional<T> e;
+   auto tvep = std::views::take(e, 5);
+   static_assert(is_optional<decltype(tvep)> == usesOptional);
+   static_assert(std::is_same_v<decltype(*tvep.begin()), T&>);
+   VERIFY(std::ranges::empty(tvep));
+ 
+   auto tvez = std::views::take(e, 0);
+   static_assert(is_optional<decltype(tvez)> == usesOptional);
+   static_assert(std::is_same_v<decltype(*tvez.begin()), T&>);
+   VERIFY(std::ranges::empty(tvez));
+ }
+ 
+ template<bool usesOptional, typename T, typename U = std::remove_cv_t<T>>
+ constexpr void
+ test_drop(std::type_identity_t<U> u)
+ {
+   std::optional<T> o(std::in_place, std::forward<U>(u));
+   auto dvp = std::views::drop(o, 3);
+   static_assert(is_optional<decltype(dvp)> == usesOptional);
+   static_assert(std::is_same_v<decltype(*dvp.begin()), T&>);
+   VERIFY(std::ranges::empty(dvp));
+ 
+   auto dvz = std::views::drop(o, 0);
+   static_assert(is_optional<decltype(dvz)> == usesOptional);
+   static_assert(std::is_same_v<decltype(*dvz.begin()), T&>);
+   VERIFY(!std::ranges::empty(dvz));
+ 
+   std::optional<T> e;
+   auto dvep = std::views::drop(e, 5);
+   static_assert(is_optional<decltype(dvep)> == usesOptional);
+   static_assert(std::is_same_v<decltype(*dvep.begin()), T&>);
+   VERIFY(std::ranges::empty(dvep));
+ 
+   auto dvez = std::views::drop(e, 0);
+   static_assert(is_optional<decltype(dvez)> == usesOptional);
+   static_assert(std::is_same_v<decltype(*dvez.begin()), T&>);
+   VERIFY(std::ranges::empty(dvez));
+ }
+ 
  constexpr
  bool
  all_tests()
  {
    test(42);
    int i = 42;
+   int arr[10]{};
+   NonMovable nm;
+   NonAssignable na;
    test(&i);
    test(std::string_view("test"));
    test(std::vector<int>{1, 2, 3, 4});
    test(std::optional<int>(42));
    test<const int>(42);
  
+   test<int&>(i);
+   test<const int&>(i);
+   test<int(&)[10]>(arr);
+   test<const int(&)[10]>(arr);
+   test<NonMovable&>(nm);
+   test<const NonMovable&>(nm);
+   test<NonAssignable&>(na);
+   test<const NonAssignable&>(na);
+   test_not_range<void(&)()>();
+   test_not_range<void(&)(int)>();
+   test_not_range<int(&)[]>();
+   test_not_range<const int(&)[]>();
+ 
    range_chain_example();
  
+   test_as_const<false, int>(i);
+   test_as_const<false, const int>(i);
+   test_as_const<true, int&>(i);
+   test_as_const<true, const int&>(i);
+   test_as_const<false, NonMovable, int>(10);
+   test_as_const<false, const NonMovable, int>(10);
+   test_as_const<true, NonMovable&>(nm);
+   test_as_const<true, const NonMovable&>(nm);
+   test_as_const<false, NonAssignable>({});
+   test_as_const<false, const NonAssignable>({});
+   test_as_const<true, NonAssignable&>(na);
+   test_as_const<true, const NonAssignable&>(na);
+ 
+ #define TEST_ADAPTOR(name) \
+   test_##name<true, int>(i); \
+   test_##name<false, const int>(i); \
+   test_##name<true, int&>(i); \
+   test_##name<true, const int&>(i); \
+   test_##name<false, NonMovable, int>(10); \
+   test_##name<false, const NonMovable, int>(10); \
+   test_##name<true, NonMovable&>(nm); \
+   test_##name<true, const NonMovable&>(nm); \
+   test_##name<false, NonAssignable>({}); \
+   test_##name<false, const NonAssignable>({}); \
+   test_##name<true, NonAssignable&>(na); \
+   test_##name<true, const NonAssignable&>(na)
+ 
+   TEST_ADAPTOR(reverse);
+   TEST_ADAPTOR(take);
+   TEST_ADAPTOR(drop);
+ #undef TEST_ADAPTOR
    return true;
  }
  
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr.cc gcc-16-20251116/libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr.cc	Sun Nov  9 22:34:30 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr.cc	Sun Nov 16 22:35:17 2025
***************
*** 1,4 ****
! // { dg-options "-Wno-deprecated" }
  // { dg-add-options using-deprecated }
  // { dg-do run { target c++11 } }
  // { dg-require-effective-target hosted }
--- 1,4 ----
! // { dg-options "-Wno-deprecated-declarations" }
  // { dg-add-options using-deprecated }
  // { dg-do run { target c++11 } }
  // { dg-require-effective-target hosted }
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr_neg.cc gcc-16-20251116/libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr_neg.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr_neg.cc	Sun Nov  9 22:34:30 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr_neg.cc	Sun Nov 16 22:35:17 2025
***************
*** 1,4 ****
! // { dg-options "-Wno-deprecated" }
  // { dg-add-options using-deprecated }
  // { dg-do compile { target c++11 } }
  // { dg-require-effective-target hosted }
--- 1,4 ----
! // { dg-options "-Wno-deprecated-declarations" }
  // { dg-add-options using-deprecated }
  // { dg-do compile { target c++11 } }
  // { dg-require-effective-target hosted }
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr_rvalue.cc gcc-16-20251116/libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr_rvalue.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr_rvalue.cc	Sun Nov  9 22:34:30 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr_rvalue.cc	Sun Nov 16 22:35:17 2025
***************
*** 1,4 ****
! // { dg-options "-Wno-deprecated" }
  // { dg-add-options using-deprecated }
  // { dg-do compile { target c++11 } }
  // { dg-require-effective-target hosted }
--- 1,4 ----
! // { dg-options "-Wno-deprecated -Wno-deprecated-declarations" }
  // { dg-add-options using-deprecated }
  // { dg-do compile { target c++11 } }
  // { dg-require-effective-target hosted }
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/20_util/shared_ptr/atomic/1.cc gcc-16-20251116/libstdc++-v3/testsuite/20_util/shared_ptr/atomic/1.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/20_util/shared_ptr/atomic/1.cc	Sun Nov  9 22:34:30 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/20_util/shared_ptr/atomic/1.cc	Sun Nov 16 22:35:17 2025
***************
*** 18,24 ****
  // { dg-do run { target c++11 } }
  // { dg-require-gthreads "" }
  // { dg-require-effective-target hosted }
! // { dg-additional-options "-Wno-deprecated" { target c++20 } }
  
  #include <memory>
  
--- 18,24 ----
  // { dg-do run { target c++11 } }
  // { dg-require-gthreads "" }
  // { dg-require-effective-target hosted }
! // { dg-additional-options "-Wno-deprecated-declarations" { target c++20 } }
  
  #include <memory>
  
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/20_util/shared_ptr/atomic/2.cc gcc-16-20251116/libstdc++-v3/testsuite/20_util/shared_ptr/atomic/2.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/20_util/shared_ptr/atomic/2.cc	Sun Nov  9 22:34:30 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/20_util/shared_ptr/atomic/2.cc	Sun Nov 16 22:35:17 2025
***************
*** 18,24 ****
  // { dg-do run { target c++11 } }
  // { dg-require-gthreads "" }
  // { dg-require-effective-target hosted }
! // { dg-additional-options "-Wno-deprecated" { target c++20 } }
  
  #include <memory>
  
--- 18,24 ----
  // { dg-do run { target c++11 } }
  // { dg-require-gthreads "" }
  // { dg-require-effective-target hosted }
! // { dg-additional-options "-Wno-deprecated-declarations" { target c++20 } }
  
  #include <memory>
  
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/20_util/shared_ptr/atomic/3.cc gcc-16-20251116/libstdc++-v3/testsuite/20_util/shared_ptr/atomic/3.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/20_util/shared_ptr/atomic/3.cc	Sun Nov  9 22:34:30 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/20_util/shared_ptr/atomic/3.cc	Sun Nov 16 22:35:17 2025
***************
*** 1,7 ****
  // { dg-do run { target c++11 } }
  // { dg-additional-options "-pthread" { target pthread } }
  // { dg-require-gthreads "" }
! // { dg-additional-options "-Wno-deprecated" { target c++20 } }
  
  // Copyright (C) 2014-2025 Free Software Foundation, Inc.
  //
--- 1,7 ----
  // { dg-do run { target c++11 } }
  // { dg-additional-options "-pthread" { target pthread } }
  // { dg-require-gthreads "" }
! // { dg-additional-options "-Wno-deprecated-declarations" { target c++20 } }
  
  // Copyright (C) 2014-2025 Free Software Foundation, Inc.
  //
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc gcc-16-20251116/libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc	Sun Nov  9 22:34:30 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc	Sun Nov 16 22:35:17 2025
***************
*** 1,4 ****
! // { dg-options "-Wno-deprecated" }
  // { dg-add-options using-deprecated }
  // { dg-do compile { target c++11 } }
  // { dg-require-effective-target hosted }
--- 1,4 ----
! // { dg-options "-Wno-deprecated-declarations" }
  // { dg-add-options using-deprecated }
  // { dg-do compile { target c++11 } }
  // { dg-require-effective-target hosted }
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/20_util/shared_ptr/cons/auto_ptr.cc gcc-16-20251116/libstdc++-v3/testsuite/20_util/shared_ptr/cons/auto_ptr.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/20_util/shared_ptr/cons/auto_ptr.cc	Sun Nov  9 22:34:30 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/20_util/shared_ptr/cons/auto_ptr.cc	Sun Nov 16 22:35:17 2025
***************
*** 1,4 ****
! // { dg-options "-Wno-deprecated" }
  // { dg-add-options using-deprecated }
  // { dg-do run { target c++11 } }
  // { dg-require-effective-target hosted }
--- 1,4 ----
! // { dg-options "-Wno-deprecated-declarations" }
  // { dg-add-options using-deprecated }
  // { dg-do run { target c++11 } }
  // { dg-require-effective-target hosted }
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/20_util/shared_ptr/cons/auto_ptr_neg.cc gcc-16-20251116/libstdc++-v3/testsuite/20_util/shared_ptr/cons/auto_ptr_neg.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/20_util/shared_ptr/cons/auto_ptr_neg.cc	Sun Nov  9 22:34:30 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/20_util/shared_ptr/cons/auto_ptr_neg.cc	Sun Nov 16 22:35:17 2025
***************
*** 1,4 ****
! // { dg-options "-Wno-deprecated" }
  // { dg-add-options using-deprecated }
  // { dg-do compile { target c++11 } }
  // { dg-require-effective-target hosted }
--- 1,4 ----
! // { dg-options "-Wno-deprecated-declarations" }
  // { dg-add-options using-deprecated }
  // { dg-do compile { target c++11 } }
  // { dg-require-effective-target hosted }
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/20_util/shared_ptr/creation/dr925.cc gcc-16-20251116/libstdc++-v3/testsuite/20_util/shared_ptr/creation/dr925.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/20_util/shared_ptr/creation/dr925.cc	Sun Nov  9 22:34:30 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/20_util/shared_ptr/creation/dr925.cc	Sun Nov 16 22:35:17 2025
***************
*** 1,4 ****
! // { dg-options "-Wno-deprecated" }
  // { dg-add-options using-deprecated }
  // { dg-do run { target c++11 } }
  // { dg-require-effective-target hosted }
--- 1,4 ----
! // { dg-options "-Wno-deprecated-declarations" }
  // { dg-add-options using-deprecated }
  // { dg-do run { target c++11 } }
  // { dg-require-effective-target hosted }
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/20_util/unique_ptr/cons/auto_ptr.cc gcc-16-20251116/libstdc++-v3/testsuite/20_util/unique_ptr/cons/auto_ptr.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/20_util/unique_ptr/cons/auto_ptr.cc	Sun Nov  9 22:34:30 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/20_util/unique_ptr/cons/auto_ptr.cc	Sun Nov 16 22:35:17 2025
***************
*** 1,4 ****
! // { dg-options "-Wno-deprecated" }
  // { dg-add-options using-deprecated }
  // { dg-do run { target c++11 } }
  
--- 1,4 ----
! // { dg-options "-Wno-deprecated-declarations" }
  // { dg-add-options using-deprecated }
  // { dg-do run { target c++11 } }
  
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/20_util/unique_ptr/cons/auto_ptr_neg.cc gcc-16-20251116/libstdc++-v3/testsuite/20_util/unique_ptr/cons/auto_ptr_neg.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/20_util/unique_ptr/cons/auto_ptr_neg.cc	Sun Nov  9 22:34:30 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/20_util/unique_ptr/cons/auto_ptr_neg.cc	Sun Nov 16 22:35:17 2025
***************
*** 1,4 ****
! // { dg-options "-Wno-deprecated" }
  // { dg-add-options using-deprecated }
  // { dg-do compile { target c++11 } }
  
--- 1,4 ----
! // { dg-options "-Wno-deprecated-declarations" }
  // { dg-add-options using-deprecated }
  // { dg-do compile { target c++11 } }
  
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/20_util/variable_templates_for_traits.cc gcc-16-20251116/libstdc++-v3/testsuite/20_util/variable_templates_for_traits.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/20_util/variable_templates_for_traits.cc	Sun Nov  9 22:34:30 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/20_util/variable_templates_for_traits.cc	Sun Nov 16 22:35:17 2025
***************
*** 1,4 ****
! // { dg-additional-options "-Wno-deprecated" { target c++2a } }
  // { dg-do compile { target c++17 } }
  
  // Copyright (C) 2014-2025 Free Software Foundation, Inc.
--- 1,4 ----
! // { dg-additional-options "-Wno-deprecated-declarations" { target c++2a } }
  // { dg-do compile { target c++17 } }
  
  // Copyright (C) 2014-2025 Free Software Foundation, Inc.
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/23_containers/forward_list/modifiers/122661.cc gcc-16-20251116/libstdc++-v3/testsuite/23_containers/forward_list/modifiers/122661.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/23_containers/forward_list/modifiers/122661.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251116/libstdc++-v3/testsuite/23_containers/forward_list/modifiers/122661.cc	Sun Nov 16 22:35:18 2025
***************
*** 0 ****
--- 1,20 ----
+ // { dg-do compile { target c++11 } }
+ 
+ // Bug 122661 - Incorrect value category handling in forward_list::assign
+ 
+ #include <forward_list>
+ 
+ struct S
+ {
+   S();
+   S& operator=(S const&) & = delete;
+   S& operator=(S const&) &&;
+ };
+ 
+ void
+ test_pr122661()
+ {
+   std::forward_list<S> fl;
+   S* iter = nullptr;
+   fl.assign(iter, iter);
+ }
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/29_atomics/atomic/lwg3220.cc gcc-16-20251116/libstdc++-v3/testsuite/29_atomics/atomic/lwg3220.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/29_atomics/atomic/lwg3220.cc	Sun Nov  9 22:34:35 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/29_atomics/atomic/lwg3220.cc	Sun Nov 16 22:35:21 2025
***************
*** 1,4 ****
! // { dg-options "-Wno-deprecated" }
  // { dg-do compile { target c++11 } }
  
  // std::shared_ptr is not freestanding.
--- 1,4 ----
! // { dg-options "-Wno-deprecated-declarations" }
  // { dg-do compile { target c++11 } }
  
  // std::shared_ptr is not freestanding.
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/29_atomics/atomic_ref/address.cc gcc-16-20251116/libstdc++-v3/testsuite/29_atomics/atomic_ref/address.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/29_atomics/atomic_ref/address.cc	Sun Nov  9 22:34:35 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/29_atomics/atomic_ref/address.cc	Sun Nov 16 22:35:21 2025
*************** void testAtomicRefAddressForCV()
*** 24,31 ****
  {
    testAtomicRefAddress<T>();
    testAtomicRefAddress<const T>();
!   testAtomicRefAddress<volatile T>();
!   testAtomicRefAddress<const volatile T>();
  }
  
  int
--- 24,34 ----
  {
    testAtomicRefAddress<T>();
    testAtomicRefAddress<const T>();
!   if constexpr (std::atomic_ref<T>::is_always_lock_free)
!   {
!     testAtomicRefAddress<volatile T>();
!     testAtomicRefAddress<const volatile T>();
!   }
  }
  
  int
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/29_atomics/atomic_ref/bool.cc gcc-16-20251116/libstdc++-v3/testsuite/29_atomics/atomic_ref/bool.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/29_atomics/atomic_ref/bool.cc	Sun Nov  9 22:34:35 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/29_atomics/atomic_ref/bool.cc	Sun Nov 16 22:35:21 2025
***************
*** 21,32 ****
  
  #include <atomic>
  #include <testsuite_hooks.h>
  
  void
  test01()
  {
    bool value;
- 
    {
      const auto mo = std::memory_order_relaxed;
      std::atomic_ref<bool> a(value);
--- 21,36 ----
  
  #include <atomic>
  #include <testsuite_hooks.h>
+ #include <type_traits>
+ 
+ template<typename T>
+ using volatile_
+  = std::conditional_t<std::atomic_ref<T>::is_always_lock_free, volatile T, T>;
  
  void
  test01()
  {
    bool value;
    {
      const auto mo = std::memory_order_relaxed;
      std::atomic_ref<bool> a(value);
*************** test02()
*** 66,73 ****
    std::atomic_ref<bool> a0(b);
    std::atomic_ref<bool> a1(b);
    std::atomic_ref<const bool> a1c(b);
!   std::atomic_ref<volatile bool> a1v(b);
!   std::atomic_ref<const volatile bool> a1cv(b);
    std::atomic_ref<bool> a2(a0);
    b = true;
    VERIFY( a1.load() );
--- 70,77 ----
    std::atomic_ref<bool> a0(b);
    std::atomic_ref<bool> a1(b);
    std::atomic_ref<const bool> a1c(b);
!   std::atomic_ref<volatile_<bool>> a1v(b);
!   std::atomic_ref<volatile_<const bool>> a1cv(b);
    std::atomic_ref<bool> a2(a0);
    b = true;
    VERIFY( a1.load() );
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/29_atomics/atomic_ref/deduction.cc gcc-16-20251116/libstdc++-v3/testsuite/29_atomics/atomic_ref/deduction.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/29_atomics/atomic_ref/deduction.cc	Sun Nov  9 22:34:35 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/29_atomics/atomic_ref/deduction.cc	Sun Nov 16 22:35:21 2025
*************** test(T v)
*** 33,40 ****
  {
    test_impl<T>(v);
    test_impl<const T>(v);
!   test_impl<volatile T>(v);
!   test_impl<const volatile T>(v);
  }
  
  int main()
--- 33,43 ----
  {
    test_impl<T>(v);
    test_impl<const T>(v);
!   if constexpr (std::atomic_ref<T>::is_always_lock_free)
!   {
!     test_impl<volatile T>(v);
!     test_impl<const volatile T>(v);
!   }
  }
  
  int main()
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/29_atomics/atomic_ref/float.cc gcc-16-20251116/libstdc++-v3/testsuite/29_atomics/atomic_ref/float.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/29_atomics/atomic_ref/float.cc	Sun Nov  9 22:34:35 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/29_atomics/atomic_ref/float.cc	Sun Nov 16 22:35:21 2025
***************
*** 19,24 ****
--- 19,29 ----
  
  #include <atomic>
  #include <testsuite_hooks.h>
+ #include <type_traits>
+ 
+ template<typename T>
+ using volatile_
+  = std::conditional_t<std::atomic_ref<T>::is_always_lock_free, volatile T, T>;
  
  void
  test01()
*************** test03()
*** 297,318 ****
  void
  test04()
  {
!   if constexpr (std::atomic_ref<float>::is_always_lock_free)
!   {
!     float i = 0.0f;
!     std::atomic_ref<float> a0(i);
!     std::atomic_ref<float> a1(i);
!     std::atomic_ref<const float> a1c(i);
!     std::atomic_ref<volatile float> a1v(i);
!     std::atomic_ref<const volatile float> a1cv(i);
!     std::atomic_ref<float> a2(a0);
!     a0 = 1.0f;
!     VERIFY( a1 == 1.0f );
!     VERIFY( a1c == 1.0f );
!     VERIFY( a1v == 1.0f );
!     VERIFY( a1cv == 1.0f );
!     VERIFY( a2 == 1.0f );
!   }
  }
  
  int
--- 302,320 ----
  void
  test04()
  {
!   float i = 0.0f;
!   std::atomic_ref<float> a0(i);
!   std::atomic_ref<float> a1(i);
!   std::atomic_ref<const float> a1c(i);
!   std::atomic_ref<volatile_<float>> a1v(i);
!   std::atomic_ref<volatile_<const float>> a1cv(i);
!   std::atomic_ref<float> a2(a0);
!   a0 = 1.0f;
!   VERIFY( a1 == 1.0f );
!   VERIFY( a1c == 1.0f );
!   VERIFY( a1v == 1.0f );
!   VERIFY( a1cv == 1.0f );
!   VERIFY( a2 == 1.0f );
  }
  
  int
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/29_atomics/atomic_ref/generic.cc gcc-16-20251116/libstdc++-v3/testsuite/29_atomics/atomic_ref/generic.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/29_atomics/atomic_ref/generic.cc	Sun Nov  9 22:34:35 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/29_atomics/atomic_ref/generic.cc	Sun Nov 16 22:35:21 2025
***************
*** 22,27 ****
--- 22,32 ----
  #include <atomic>
  #include <limits.h>
  #include <testsuite_hooks.h>
+ #include <type_traits>
+ 
+ template<typename T>
+ using volatile_
+  = std::conditional_t<std::atomic_ref<T>::is_always_lock_free, volatile T, T>;
  
  struct X
  {
*************** test02()
*** 109,116 ****
    std::atomic_ref<X> a0(i);
    std::atomic_ref<X> a1(i);
    std::atomic_ref<const X> a1c(i);
!   std::atomic_ref<volatile X> a1v(i);
!   std::atomic_ref<const volatile X> a1cv(i);
    std::atomic_ref<X> a2(a0);
    a0 = 42;
    VERIFY( a1.load() == 42 );
--- 114,121 ----
    std::atomic_ref<X> a0(i);
    std::atomic_ref<X> a1(i);
    std::atomic_ref<const X> a1c(i);
!   std::atomic_ref<volatile_<X>> a1v(i);
!   std::atomic_ref<volatile_<const X>> a1cv(i);
    std::atomic_ref<X> a2(a0);
    a0 = 42;
    VERIFY( a1.load() == 42 );
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/29_atomics/atomic_ref/integral.cc gcc-16-20251116/libstdc++-v3/testsuite/29_atomics/atomic_ref/integral.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/29_atomics/atomic_ref/integral.cc	Sun Nov  9 22:34:35 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/29_atomics/atomic_ref/integral.cc	Sun Nov 16 22:35:21 2025
***************
*** 22,27 ****
--- 22,32 ----
  #include <atomic>
  #include <limits.h>
  #include <testsuite_hooks.h>
+ #include <type_traits>
+ 
+ template<typename T>
+ using volatile_
+  = std::conditional_t<std::atomic_ref<T>::is_always_lock_free, volatile T, T>;
  
  void
  test01()
*************** test03()
*** 303,310 ****
    std::atomic_ref<int> a0(i);
    std::atomic_ref<int> a1(i);
    std::atomic_ref<const int> a1c(i);
!   std::atomic_ref<volatile int> a1v(i);
!   std::atomic_ref<const volatile int> a1cv(i);
    std::atomic_ref<int> a2(a0);
    a0 = 42;
    VERIFY( a1 == 42 );
--- 308,315 ----
    std::atomic_ref<int> a0(i);
    std::atomic_ref<int> a1(i);
    std::atomic_ref<const int> a1c(i);
!   std::atomic_ref<volatile_<int>> a1v(i);
!   std::atomic_ref<volatile_<const int>> a1cv(i);
    std::atomic_ref<int> a2(a0);
    a0 = 42;
    VERIFY( a1 == 42 );
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/29_atomics/atomic_ref/op_support.cc gcc-16-20251116/libstdc++-v3/testsuite/29_atomics/atomic_ref/op_support.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/29_atomics/atomic_ref/op_support.cc	Sun Nov  9 22:34:35 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/29_atomics/atomic_ref/op_support.cc	Sun Nov 16 22:35:21 2025
***************
*** 2,7 ****
--- 2,12 ----
  
  #include <atomic>
  
+ template<typename T>
+ concept is_supported
+   = !std::is_volatile_v<T>
+   || std::atomic_ref<std::remove_cv_t<T>>::is_always_lock_free;
+ 
  template<class T> concept has_and = requires (T& a) { a &= false; };
  template<class T> concept has_or = requires (T& a) { a |= false; };
  template<class T> concept has_xor = requires (T& a) { a ^= false; };
*************** template<typename T>
*** 16,68 ****
  void
  no_stores()
  {
!   static_assert( !HAS(a = t) );
!   static_assert( !HAS(a.store(t)) );
!   static_assert( !HAS(a.store(t, mo)) );
!   static_assert( !HAS(a.exchange(t)) );
!   static_assert( !HAS(a.exchange(t, mo)) );
  
!   static_assert( !HAS(a.compare_exchange_weak(t, t)) );
!   static_assert( !HAS(a.compare_exchange_weak(t, t, mo)) );
!   static_assert( !HAS(a.compare_exchange_weak(t, t, mo, mo)) );
  
!   static_assert( !HAS(a.compare_exchange_strong(t, t)) );
!   static_assert( !HAS(a.compare_exchange_strong(t, t, mo)) );
!   static_assert( !HAS(a.compare_exchange_strong(t, t, mo, mo)) );
  }
  
  template<typename T>
  void
  no_additions()
  {
!   static_assert( !HAS(a++) );
!   static_assert( !HAS(++a) );
!   static_assert( !HAS(a += t) );
!   static_assert( !HAS(a.fetch_add(t)) );
!   static_assert( !HAS(a.fetch_add(t, mo)) );
  
!   static_assert( !HAS(a--) );
!   static_assert( !HAS(--a) );
!   static_assert( !HAS(a -= t) );
!   static_assert( !HAS(a.fetch_sub(t)) );
!   static_assert( !HAS(a.fetch_sub(t, mo)) );
  }
  
  template<typename T>
  void
  no_bitops()
  {
!   static_assert( !HAS(a &= t) );
!   static_assert( !HAS(a.fetch_and(t)) );
!   static_assert( !HAS(a.fetch_and(t, mo)) );
  
!   static_assert( !HAS(a |= t) );
!   static_assert( !HAS(a.fetch_or(t)) );
!   static_assert( !HAS(a.fetch_or(t, mo)) );
  
!   static_assert( !HAS(a ^= t) );
!   static_assert( !HAS(a.fetch_xor(t)) );
!   static_assert( !HAS(a.fetch_xor(t, mo)) );
  }
  
  template<typename T>
--- 21,82 ----
  void
  no_stores()
  {
!   if constexpr (is_supported<T>)
!   {
!     static_assert( !HAS(a = t) );
!     static_assert( !HAS(a.store(t)) );
!     static_assert( !HAS(a.store(t, mo)) );
!     static_assert( !HAS(a.exchange(t)) );
!     static_assert( !HAS(a.exchange(t, mo)) );
  
!     static_assert( !HAS(a.compare_exchange_weak(t, t)) );
!     static_assert( !HAS(a.compare_exchange_weak(t, t, mo)) );
!     static_assert( !HAS(a.compare_exchange_weak(t, t, mo, mo)) );
  
!     static_assert( !HAS(a.compare_exchange_strong(t, t)) );
!     static_assert( !HAS(a.compare_exchange_strong(t, t, mo)) );
!     static_assert( !HAS(a.compare_exchange_strong(t, t, mo, mo)) );
!   }
  }
  
  template<typename T>
  void
  no_additions()
  {
!   if constexpr (is_supported<T>)
!   {
!     static_assert( !HAS(a++) );
!     static_assert( !HAS(++a) );
!     static_assert( !HAS(a += t) );
!     static_assert( !HAS(a.fetch_add(t)) );
!     static_assert( !HAS(a.fetch_add(t, mo)) );
  
!     static_assert( !HAS(a--) );
!     static_assert( !HAS(--a) );
!     static_assert( !HAS(a -= t) );
!     static_assert( !HAS(a.fetch_sub(t)) );
!     static_assert( !HAS(a.fetch_sub(t, mo)) );
!   }
  }
  
  template<typename T>
  void
  no_bitops()
  {
!   if constexpr (is_supported<T>)
!   {
!     static_assert( !HAS(a &= t) );
!     static_assert( !HAS(a.fetch_and(t)) );
!     static_assert( !HAS(a.fetch_and(t, mo)) );
  
!     static_assert( !HAS(a |= t) );
!     static_assert( !HAS(a.fetch_or(t)) );
!     static_assert( !HAS(a.fetch_or(t, mo)) );
  
!     static_assert( !HAS(a ^= t) );
!     static_assert( !HAS(a.fetch_xor(t)) );
!     static_assert( !HAS(a.fetch_xor(t, mo)) );
!   }
  }
  
  template<typename T>
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/29_atomics/atomic_ref/pointer.cc gcc-16-20251116/libstdc++-v3/testsuite/29_atomics/atomic_ref/pointer.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/29_atomics/atomic_ref/pointer.cc	Sun Nov  9 22:34:35 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/29_atomics/atomic_ref/pointer.cc	Sun Nov 16 22:35:21 2025
***************
*** 21,26 ****
--- 21,31 ----
  
  #include <atomic>
  #include <testsuite_hooks.h>
+ #include <type_traits>
+ 
+ template<typename T>
+ using volatile_
+  = std::conditional_t<std::atomic_ref<T>::is_always_lock_free, volatile T, T>;
  
  void
  test01()
*************** test03()
*** 211,218 ****
    std::atomic_ref<int*> a0(ptr);
    std::atomic_ref<int*> a1(ptr);
    std::atomic_ref<int* const> a1c(ptr);
!   std::atomic_ref<int* volatile> a1v(ptr);
!   std::atomic_ref<int* const volatile> a1cv(ptr);
    std::atomic_ref<int*> a2(a0);
    a0 = &i;
    VERIFY( a1 == &i );
--- 216,223 ----
    std::atomic_ref<int*> a0(ptr);
    std::atomic_ref<int*> a1(ptr);
    std::atomic_ref<int* const> a1c(ptr);
!   std::atomic_ref<volatile_<int*>> a1v(ptr);
!   std::atomic_ref<volatile_<int* const>> a1cv(ptr);
    std::atomic_ref<int*> a2(a0);
    a0 = &i;
    VERIFY( a1 == &i );
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/29_atomics/atomic_ref/requirements.cc gcc-16-20251116/libstdc++-v3/testsuite/29_atomics/atomic_ref/requirements.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/29_atomics/atomic_ref/requirements.cc	Sun Nov  9 22:34:35 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/29_atomics/atomic_ref/requirements.cc	Sun Nov 16 22:35:21 2025
***************
*** 20,80 ****
  #include <atomic>
  #include <type_traits>
  
  template <class T>
  void
  test_generic()
  {
!   using A = std::atomic_ref<T>;
!   static_assert( std::is_standard_layout_v<A> );
!   static_assert( std::is_nothrow_copy_constructible_v<A> );
!   static_assert( std::is_trivially_destructible_v<A> );
!   static_assert( std::is_same_v<typename A::value_type, std::remove_cv_t<T>> );
!   static_assert( !requires { typename A::difference_type; } );
!   static_assert( !std::is_copy_assignable_v<A> );
!   static_assert( !std::is_move_assignable_v<A> );
  }
  
  template <class T>
  void
  test_integral()
  {
!   using A = std::atomic_ref<T>;
!   static_assert( std::is_standard_layout_v<A> );
!   static_assert( std::is_nothrow_copy_constructible_v<A> );
!   static_assert( std::is_trivially_destructible_v<A> );
!   static_assert( std::is_same_v<typename A::value_type, std::remove_cv_t<T>> );
!   static_assert( std::is_same_v<typename A::difference_type, typename A::value_type> );
!   static_assert( !std::is_copy_assignable_v<A> );
!   static_assert( !std::is_move_assignable_v<A> );
  }
  
  template <class T>
  void
  test_floating_point()
  {
!   using A = std::atomic_ref<T>;
!   static_assert( std::is_standard_layout_v<A> );
!   static_assert( std::is_nothrow_copy_constructible_v<A> );
!   static_assert( std::is_trivially_destructible_v<A> );
!   static_assert( std::is_same_v<typename A::value_type, std::remove_cv_t<T>> );
!   static_assert( std::is_same_v<typename A::difference_type, typename A::value_type> );
!   static_assert( !std::is_copy_assignable_v<A> );
!   static_assert( !std::is_move_assignable_v<A> );
  }
  
  template <class T>
  void
  test_pointer()
  {
!   using A = std::atomic_ref<T>;
!   static_assert( std::is_standard_layout_v<A> );
!   static_assert( std::is_nothrow_copy_constructible_v<A> );
!   static_assert( std::is_trivially_destructible_v<A> );
!   static_assert( std::is_same_v<typename A::value_type, std::remove_cv_t<T>> );
!   static_assert( std::is_same_v<typename A::difference_type, std::ptrdiff_t> );
!   static_assert( std::is_nothrow_copy_constructible_v<A> );
!   static_assert( !std::is_copy_assignable_v<A> );
!   static_assert( !std::is_move_assignable_v<A> );
  }
  
  int
--- 20,97 ----
  #include <atomic>
  #include <type_traits>
  
+ template<typename T>
+ concept is_supported
+   = !std::is_volatile_v<T>
+   || std::atomic_ref<std::remove_cv_t<T>>::is_always_lock_free;
+ 
  template <class T>
  void
  test_generic()
  {
!   if constexpr (is_supported<T>)
!   {
!     using A = std::atomic_ref<T>;
!     static_assert( std::is_standard_layout_v<A> );
!     static_assert( std::is_nothrow_copy_constructible_v<A> );
!     static_assert( std::is_trivially_destructible_v<A> );
!     static_assert( std::is_same_v<typename A::value_type, std::remove_cv_t<T>> );
!     static_assert( !requires { typename A::difference_type; } );
!     static_assert( !std::is_copy_assignable_v<A> );
!     static_assert( !std::is_move_assignable_v<A> );
!   }
  }
  
  template <class T>
  void
  test_integral()
  {
!   if constexpr (is_supported<T>)
!   {
!     using A = std::atomic_ref<T>;
!     static_assert( std::is_standard_layout_v<A> );
!     static_assert( std::is_nothrow_copy_constructible_v<A> );
!     static_assert( std::is_trivially_destructible_v<A> );
!     static_assert( std::is_same_v<typename A::value_type, std::remove_cv_t<T>> );
!     static_assert( std::is_same_v<typename A::difference_type, typename A::value_type> );
!     static_assert( !std::is_copy_assignable_v<A> );
!     static_assert( !std::is_move_assignable_v<A> );
!   }
  }
  
  template <class T>
  void
  test_floating_point()
  {
!   if constexpr (is_supported<T>)
!   {
!     using A = std::atomic_ref<T>;
!     static_assert( std::is_standard_layout_v<A> );
!     static_assert( std::is_nothrow_copy_constructible_v<A> );
!     static_assert( std::is_trivially_destructible_v<A> );
!     static_assert( std::is_same_v<typename A::value_type, std::remove_cv_t<T>> );
!     static_assert( std::is_same_v<typename A::difference_type, typename A::value_type> );
!     static_assert( !std::is_copy_assignable_v<A> );
!     static_assert( !std::is_move_assignable_v<A> );
!   }
  }
  
  template <class T>
  void
  test_pointer()
  {
!   if constexpr (is_supported<T>)
!   {
!     using A = std::atomic_ref<T>;
!     static_assert( std::is_standard_layout_v<A> );
!     static_assert( std::is_nothrow_copy_constructible_v<A> );
!     static_assert( std::is_trivially_destructible_v<A> );
!     static_assert( std::is_same_v<typename A::value_type, std::remove_cv_t<T>> );
!     static_assert( std::is_same_v<typename A::difference_type, std::ptrdiff_t> );
!     static_assert( std::is_nothrow_copy_constructible_v<A> );
!     static_assert( !std::is_copy_assignable_v<A> );
!     static_assert( !std::is_move_assignable_v<A> );
!   }
  }
  
  int
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/experimental/type_traits/value.cc gcc-16-20251116/libstdc++-v3/testsuite/experimental/type_traits/value.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/experimental/type_traits/value.cc	Sun Nov  9 22:34:36 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/experimental/type_traits/value.cc	Sun Nov 16 22:35:21 2025
***************
*** 1,5 ****
  // { dg-do compile { target c++14 } }
! // { dg-additional-options "-Wno-deprecated" { target { c++2a } } }
  
  // Copyright (C) 2014-2025 Free Software Foundation, Inc.
  //
--- 1,5 ----
  // { dg-do compile { target c++14 } }
! // { dg-additional-options "-Wno-deprecated-declarations" { target { c++2a } } }
  
  // Copyright (C) 2014-2025 Free Software Foundation, Inc.
  //
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/ext/unicode/view.cc gcc-16-20251116/libstdc++-v3/testsuite/ext/unicode/view.cc
*** gcc-16-20251109/libstdc++-v3/testsuite/ext/unicode/view.cc	Sun Nov  9 22:34:36 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/ext/unicode/view.cc	Sun Nov 16 22:35:21 2025
***************
*** 7,12 ****
--- 7,16 ----
  namespace uc = std::__unicode;
  using namespace std::string_view_literals;
  
+ static_assert( std::ranges::view<uc::_Utf8_view<std::string_view>> );
+ static_assert( std::ranges::view<uc::_Utf16_view<std::string_view>> );
+ static_assert( std::ranges::view<uc::_Utf32_view<std::string_view>> );
+ 
  template<std::ranges::range View>
  constexpr void
  compare(View v, std::basic_string_view<std::ranges::range_value_t<View>> s)
*************** test_illformed_utf16()
*** 87,104 ****
    compare(uc::_Utf16_view(s.substr(0, 1)), r);
    compare(uc::_Utf16_view(s.substr(1, 1)), r);
    std::array s2{ s[0], s[0] };
!   compare(uc::_Utf16_view(s2), u"\uFFFD\uFFFD"sv);
    std::array s3{ s[0], s[0], s[1] };
!   compare(uc::_Utf16_view(s3), u"\uFFFD\N{CLOWN FACE}"sv);
    std::array s4{ s[1], s[0] };
!   compare(uc::_Utf16_view(s4), u"\uFFFD\uFFFD"sv);
    std::array s5{ s[1], s[0], s[1] };
!   compare(uc::_Utf16_view(s5), u"\uFFFD\N{CLOWN FACE}"sv);
  
    std::array<char16_t, 2> s6{ 0xDC00, 0xDC01 };
!   compare(uc::_Utf16_view(s6), u"\uFFFD\uFFFD"sv);
    std::array<char16_t, 2> s7{ 0xD7FF, 0xDC00 };
!   compare(uc::_Utf16_view(s7), u"\uD7FF\uFFFD"sv);
  }
  
  constexpr void
--- 91,108 ----
    compare(uc::_Utf16_view(s.substr(0, 1)), r);
    compare(uc::_Utf16_view(s.substr(1, 1)), r);
    std::array s2{ s[0], s[0] };
!   compare(uc::_Utf16_view(std::span(s2)), u"\uFFFD\uFFFD"sv);
    std::array s3{ s[0], s[0], s[1] };
!   compare(uc::_Utf16_view(std::span(s3)), u"\uFFFD\N{CLOWN FACE}"sv);
    std::array s4{ s[1], s[0] };
!   compare(uc::_Utf16_view(std::span(s4)), u"\uFFFD\uFFFD"sv);
    std::array s5{ s[1], s[0], s[1] };
!   compare(uc::_Utf16_view(std::span(s5)), u"\uFFFD\N{CLOWN FACE}"sv);
  
    std::array<char16_t, 2> s6{ 0xDC00, 0xDC01 };
!   compare(uc::_Utf16_view(std::span(s6)), u"\uFFFD\uFFFD"sv);
    std::array<char16_t, 2> s7{ 0xD7FF, 0xDC00 };
!   compare(uc::_Utf16_view(std::span(s7)), u"\uD7FF\uFFFD"sv);
  }
  
  constexpr void
diff -Nrcpad gcc-16-20251109/libstdc++-v3/testsuite/lib/prune.exp gcc-16-20251116/libstdc++-v3/testsuite/lib/prune.exp
*** gcc-16-20251109/libstdc++-v3/testsuite/lib/prune.exp	Sun Nov  9 22:34:36 2025
--- gcc-16-20251116/libstdc++-v3/testsuite/lib/prune.exp	Sun Nov 16 22:35:21 2025
*************** proc libstdc++-dg-prune { system text }
*** 53,64 ****
      regsub -all "(^|\n)\[^\n\]*:   (recursively )?required \[^\n\]*" $text "" text
      regsub -all "(^|\n)\[^\n\]*:   . skipping \[0-9\]* instantiation contexts \[^\n\]*" $text "" text
      regsub -all "(^|\n)\[^\n\]*:   in .constexpr. expansion \[^\n\]*" $text "" text
!     regsub -all "(^|\n)\[^\n\]*:   in requirements  .with\[^\n\]*" $text "" text
!     regsub -all "(^|\n)\[^\n\]*:   in requirements with\[^\n\]*" $text "" text
      regsub -all "(^|\n)    inlined from \[^\n\]*" $text "" text
!     # Why doesn't GCC need these to strip header context?
!     regsub -all "(^|\n)In file included from \[^\n\]*" $text "" text
!     regsub -all "(^|\n)\[ \t\]*from \[^\n\]*" $text "" text
  
      # Ignore informational notes.
      #TODO As this isn't even using 'gcc-dg.exp', cannot consider its
--- 53,65 ----
      regsub -all "(^|\n)\[^\n\]*:   (recursively )?required \[^\n\]*" $text "" text
      regsub -all "(^|\n)\[^\n\]*:   . skipping \[0-9\]* instantiation contexts \[^\n\]*" $text "" text
      regsub -all "(^|\n)\[^\n\]*:   in .constexpr. expansion \[^\n\]*" $text "" text
!     regsub -all "(^|\n)\[^\n\]*:   in requirements \[^\n\]*" $text "" text
      regsub -all "(^|\n)    inlined from \[^\n\]*" $text "" text
! 
!     # Diagnostic inclusion stack
!     regsub -all "(^|\n)(In file)?\[ \]+included from \[^\n\]*" $text "" text
!     regsub -all "(^|\n)\[ \]+from \[^\n\]*" $text "" text
!     regsub -all "(^|\n)(In|of) module( \[^\n \]*,)? imported at \[^\n\]*" $text "" text
  
      # Ignore informational notes.
      #TODO As this isn't even using 'gcc-dg.exp', cannot consider its
