diff -Nrcpad gcc-16-20260301/ChangeLog gcc-16-20260308/ChangeLog
*** gcc-16-20260301/ChangeLog	Sun Mar  1 22:32:05 2026
--- gcc-16-20260308/ChangeLog	Sun Mar  8 22:32:04 2026
***************
*** 1,3 ****
--- 1,9 ----
+ 2026-02-27  Christophe Lyon  <christophe.lyon@arm.com>
+ 
+ 	* .forgejo/workflows/sanity-checks.yaml: Rename testjob to
+ 	format-checks. Rename file to ...
+ 	* .forgejo/workflows/format-checks.yaml: ... this.
+ 
  2026-02-18  Maciej W. Rozycki  <macro@orcam.me.uk>
  
  	* configure.ac <amdgcn-*-*> (noconfigdirs): Add `ld' and `gas'.
diff -Nrcpad gcc-16-20260301/LAST_UPDATED gcc-16-20260308/LAST_UPDATED
*** gcc-16-20260301/LAST_UPDATED	Sun Mar  1 22:32:24 2026
--- gcc-16-20260308/LAST_UPDATED	Sun Mar  8 22:32:19 2026
***************
*** 1 ****
! Obtained from git: master revision 14a3c867601a65fc306ec4ed2892b50638f795d0
--- 1 ----
! Obtained from git: master revision 8ee479c278104ab6f1755e82c323fbb81c82ce79
diff -Nrcpad gcc-16-20260301/MD5SUMS gcc-16-20260308/MD5SUMS
*** gcc-16-20260301/MD5SUMS	Sun Mar  1 22:32:29 2026
--- gcc-16-20260308/MD5SUMS	Sun Mar  8 22:32:24 2026
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-16-20260301.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-20260308.tar.xz tarball.
  #
  # Besides verifying that all files in the tarball were correctly expanded,
  # it also can be used to determine if any files have changed since the
*************** ac5a8807f431d3dab46a7425b96379e4  .gitig
*** 24,34 ****
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! 677c4911438c676a5a4700113d6541d1  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 02e22d9f9beab6ccc183ad9d302d3d73  LAST_UPDATED
  b8fa044b3336d9cc6214e6ff3e9b467d  MAINTAINERS
  af43617880b3cd9c10627c97e639d29e  Makefile.def
  734342371d8ccc2c81cb2d8b3d040f33  Makefile.in
--- 24,34 ----
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! 4e115f3f50b594357c0e3190277d3643  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 07e837f5578039740d5727baf49a6551  LAST_UPDATED
  b8fa044b3336d9cc6214e6ff3e9b467d  MAINTAINERS
  af43617880b3cd9c10627c97e639d29e  Makefile.def
  734342371d8ccc2c81cb2d8b3d040f33  Makefile.in
*************** e2dc6b4fd62b77bff96b7951ef74f78f  config
*** 159,165 ****
  db74a73c3c9c3cc71edec37c2436e082  config/zstd.m4
  f4a7d891c0d09f14fb5ed903f0475fc2  configure
  ed59804e21951f404fa6ecd283c6ffa3  configure.ac
! 3d037dbcdfbd600c4e730c9165d08715  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
  0928ae42250fbb57246cf6e9bff2276b  contrib/analyze_brprob.py
--- 159,165 ----
  db74a73c3c9c3cc71edec37c2436e082  config/zstd.m4
  f4a7d891c0d09f14fb5ed903f0475fc2  configure
  ed59804e21951f404fa6ecd283c6ffa3  configure.ac
! c44a582df4cb2c70130ae718e23b5878  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
  0928ae42250fbb57246cf6e9bff2276b  contrib/analyze_brprob.py
*************** d577ea19d05f19a8364f73c9901223b7  contri
*** 213,219 ****
  1462df56c813a6a6cdf97c7baa877d7c  contrib/gcc-changelog/git_commit.py
  4f7f7ef965f965a23efd54be62ace12d  contrib/gcc-changelog/git_email.py
  c9b38a05e2da6bd427df5301db56e913  contrib/gcc-changelog/git_repository.py
! aeb20a80f2ac8e9ef708f39a387d2c90  contrib/gcc-changelog/git_update_version.py
  6e731268209cc6d4936196233e28bae9  contrib/gcc-changelog/setup.cfg
  7f6fb197e7f7926991055526054c2240  contrib/gcc-changelog/test_email.py
  6662a65218b0a11d673a65656b98d821  contrib/gcc-changelog/test_patches.txt
--- 213,219 ----
  1462df56c813a6a6cdf97c7baa877d7c  contrib/gcc-changelog/git_commit.py
  4f7f7ef965f965a23efd54be62ace12d  contrib/gcc-changelog/git_email.py
  c9b38a05e2da6bd427df5301db56e913  contrib/gcc-changelog/git_repository.py
! 516cf9f9b1537ba3a91bd9987afeccac  contrib/gcc-changelog/git_update_version.py
  6e731268209cc6d4936196233e28bae9  contrib/gcc-changelog/setup.cfg
  7f6fb197e7f7926991055526054c2240  contrib/gcc-changelog/test_email.py
  6662a65218b0a11d673a65656b98d821  contrib/gcc-changelog/test_patches.txt
*************** f15bc3c5de22eac0bdd4f611502139a0  gcc/AB
*** 530,536 ****
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 9f34c48bf3ce870d16600ce8b9906471  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
--- 530,536 ----
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! c3f9723ed49dfea3525a360695c8b1ba  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 568,586 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 8bf62f7a89d06e4ee2190474a27b3d6d  gcc/DATESTAMP
  deb513e591f23901188e22323bd3b1d4  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
  36698274bb69e2ada20f5cc434f3caa5  gcc/FSFChangeLog.11
  a817c5577f2b35f8d2481c787e3ff7e2  gcc/LANGUAGES
! 7ce5b3fd283c507e7a636e54cd1c2af8  gcc/Makefile.in
  ec6799501b2eb2923d5de6a66169dbd2  gcc/ONEWS
  c8c9dd1eaee4ffd4d5d9f3ab70fddd4b  gcc/README.Portability
  270ba6dfb4ecba066773fe20f2dc0053  gcc/acinclude.m4
  e74733ebf762151e601c9e0aa1461a20  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! ea1bafcbc277d9727df2927e1c8a8988  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
--- 568,586 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 86bda1038bd132bf252ced91182572b5  gcc/DATESTAMP
  deb513e591f23901188e22323bd3b1d4  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
  36698274bb69e2ada20f5cc434f3caa5  gcc/FSFChangeLog.11
  a817c5577f2b35f8d2481c787e3ff7e2  gcc/LANGUAGES
! ecfd3dc22c2ac0496e9f5d7e15ab88e6  gcc/Makefile.in
  ec6799501b2eb2923d5de6a66169dbd2  gcc/ONEWS
  c8c9dd1eaee4ffd4d5d9f3ab70fddd4b  gcc/README.Portability
  270ba6dfb4ecba066773fe20f2dc0053  gcc/acinclude.m4
  e74733ebf762151e601c9e0aa1461a20  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! ca4d1b74c9b46a0c017be65c7725eac6  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
*************** e990b94c2deda2688532716fbe75bb0e  gcc/ad
*** 923,929 ****
  2fa42d36d02ccd2dd6e280ff1b9e6959  gcc/ada/indepsw-gnu.adb
  eb3b6f429c0b93cc8e9788ea4ac4e8c6  gcc/ada/indepsw.adb
  18250f749f24e01ba1da7cf90a1d60c2  gcc/ada/indepsw.ads
! f85ef85ff175aeda5ac7311baf2c22bb  gcc/ada/init.c
  bc9cb67c7c529d85eae0a62d8155e31e  gcc/ada/initialize.c
  049ac897ccad3e1d7f7b2e41108ceef2  gcc/ada/inline.adb
  09c0c05a4b1ccd65d2cb5612e8b023b1  gcc/ada/inline.ads
--- 923,929 ----
  2fa42d36d02ccd2dd6e280ff1b9e6959  gcc/ada/indepsw-gnu.adb
  eb3b6f429c0b93cc8e9788ea4ac4e8c6  gcc/ada/indepsw.adb
  18250f749f24e01ba1da7cf90a1d60c2  gcc/ada/indepsw.ads
! 57cdf164c35e90e76488988290c08dd4  gcc/ada/init.c
  bc9cb67c7c529d85eae0a62d8155e31e  gcc/ada/initialize.c
  049ac897ccad3e1d7f7b2e41108ceef2  gcc/ada/inline.adb
  09c0c05a4b1ccd65d2cb5612e8b023b1  gcc/ada/inline.ads
*************** d22c314f3748309f812d78f5217dda61  gcc/ad
*** 3071,3077 ****
  06b46bffb1b84e16a6f48b29177f42c4  gcc/ada/xutil.ads
  faeebcb240c1559aceb7d9c18c8e6b89  gcc/addresses.h
  ebe64421041bf4ef9153e26a6dc60532  gcc/adjust-alignment.cc
! 177212b03a96e0f61e70ce126c81a1f5  gcc/algol68/ChangeLog
  26769610e1968ef85392859d2d3e3859  gcc/algol68/Make-lang.in
  3d3f2f95b917d0f77d57d977f3eb93d8  gcc/algol68/README
  43ae40e82c1a7a144e905d40b101214e  gcc/algol68/a68-diagnostics.cc
--- 3071,3077 ----
  06b46bffb1b84e16a6f48b29177f42c4  gcc/ada/xutil.ads
  faeebcb240c1559aceb7d9c18c8e6b89  gcc/addresses.h
  ebe64421041bf4ef9153e26a6dc60532  gcc/adjust-alignment.cc
! b5ae57cb8af227c660a8446f33d2baa1  gcc/algol68/ChangeLog
  26769610e1968ef85392859d2d3e3859  gcc/algol68/Make-lang.in
  3d3f2f95b917d0f77d57d977f3eb93d8  gcc/algol68/README
  43ae40e82c1a7a144e905d40b101214e  gcc/algol68/a68-diagnostics.cc
*************** b8582dd8bfb1b150fad9cafd7bbaa3c6  gcc/al
*** 3088,3094 ****
  5aa76e1c20ed5b89f9d01211f6bb6cc6  gcc/algol68/a68-low-complex.cc
  fb2d06e1ab97449a52e96618e292e987  gcc/algol68/a68-low-decls.cc
  c57bfad420a3fc9e3f36e22e0b61c523  gcc/algol68/a68-low-generator.cc
! 73d726592dc0708ecc67a46a5f17dbab  gcc/algol68/a68-low-holes.cc
  d609e1b57e69ce1d260c21cc2fad12d4  gcc/algol68/a68-low-ints.cc
  949d0f0a5f79da34ba44f79c6ebfe282  gcc/algol68/a68-low-misc.cc
  8e958b50675b076eba75cf460e2332bb  gcc/algol68/a68-low-moids.cc
--- 3088,3094 ----
  5aa76e1c20ed5b89f9d01211f6bb6cc6  gcc/algol68/a68-low-complex.cc
  fb2d06e1ab97449a52e96618e292e987  gcc/algol68/a68-low-decls.cc
  c57bfad420a3fc9e3f36e22e0b61c523  gcc/algol68/a68-low-generator.cc
! 060012b299f601a60e72193962d6699f  gcc/algol68/a68-low-holes.cc
  d609e1b57e69ce1d260c21cc2fad12d4  gcc/algol68/a68-low-ints.cc
  949d0f0a5f79da34ba44f79c6ebfe282  gcc/algol68/a68-low-misc.cc
  8e958b50675b076eba75cf460e2332bb  gcc/algol68/a68-low-moids.cc
*************** aebb4c3b9e607164c25541593333b832  gcc/al
*** 3103,3109 ****
  a3640e0464c9f225e1f6e23c6e1b7a25  gcc/algol68/a68-low-strings.cc
  de4cb485173b396d55860a98e328be5b  gcc/algol68/a68-low-structs.cc
  7675b3dfcea25bedcbe52f98cecdf7e2  gcc/algol68/a68-low-unions.cc
! 11d1135730383faa70dc24571aca094e  gcc/algol68/a68-low-units.cc
  54f1fa37c18841cdd2ba1534e4f56878  gcc/algol68/a68-low.cc
  cc144936af15a60bf305436168b9c147  gcc/algol68/a68-moids-diagnostics.cc
  d81998d1a6b085f7b7f0fa13a8a9d297  gcc/algol68/a68-moids-misc.cc
--- 3103,3109 ----
  a3640e0464c9f225e1f6e23c6e1b7a25  gcc/algol68/a68-low-strings.cc
  de4cb485173b396d55860a98e328be5b  gcc/algol68/a68-low-structs.cc
  7675b3dfcea25bedcbe52f98cecdf7e2  gcc/algol68/a68-low-unions.cc
! 8869ad21fefe0ecdbd9cb6edfdf404f3  gcc/algol68/a68-low-units.cc
  54f1fa37c18841cdd2ba1534e4f56878  gcc/algol68/a68-low.cc
  cc144936af15a60bf305436168b9c147  gcc/algol68/a68-moids-diagnostics.cc
  d81998d1a6b085f7b7f0fa13a8a9d297  gcc/algol68/a68-moids-misc.cc
*************** eb200628692c30c1ade0eaeabcddf008  gcc/al
*** 3121,3127 ****
  3789b4b4b2b84341d4e2c050f5f10acf  gcc/algol68/a68-parser-moids-equivalence.cc
  7264507a5832537766582e01e375c299  gcc/algol68/a68-parser-pragmat.cc
  f91e068f5bebeeb403dde2649036a024  gcc/algol68/a68-parser-prelude.cc
! 89e5f393f35ce19378d020d90ffc3725  gcc/algol68/a68-parser-scanner.cc
  3e6a35051de9ec13b96de4c1070096c5  gcc/algol68/a68-parser-scope.cc
  d259fcdbab02c9c536b330f7111ae7cf  gcc/algol68/a68-parser-serial-dsa.cc
  fd40974691f816e7061a5c3332353478  gcc/algol68/a68-parser-taxes.cc
--- 3121,3127 ----
  3789b4b4b2b84341d4e2c050f5f10acf  gcc/algol68/a68-parser-moids-equivalence.cc
  7264507a5832537766582e01e375c299  gcc/algol68/a68-parser-pragmat.cc
  f91e068f5bebeeb403dde2649036a024  gcc/algol68/a68-parser-prelude.cc
! 66c161c03f5c103b8442e38420158113  gcc/algol68/a68-parser-scanner.cc
  3e6a35051de9ec13b96de4c1070096c5  gcc/algol68/a68-parser-scope.cc
  d259fcdbab02c9c536b330f7111ae7cf  gcc/algol68/a68-parser-serial-dsa.cc
  fd40974691f816e7061a5c3332353478  gcc/algol68/a68-parser-taxes.cc
*************** b7dd8bd2dd68f81643704bf0b73553a1  gcc/al
*** 3149,3155 ****
  71901705cb0e11732bae53ff9de25faf  gcc/align.h
  f2345b2fdc9d2d5a75fe90d30444a114  gcc/alloc-pool.cc
  7657598f465321837951c858ab918f57  gcc/alloc-pool.h
! 489be2b64a5c6637a4506064e0086bd9  gcc/analyzer/ChangeLog
  a53ebffbaabe6bc3664d659c554fedb3  gcc/analyzer/access-diagram.cc
  c41fa6be7ca91f40a15a7b8f03732d25  gcc/analyzer/access-diagram.h
  d97e417faf9694fdbd68f91aee129bd2  gcc/analyzer/ana-state-to-diagnostic-state.cc
--- 3149,3155 ----
  71901705cb0e11732bae53ff9de25faf  gcc/align.h
  f2345b2fdc9d2d5a75fe90d30444a114  gcc/alloc-pool.cc
  7657598f465321837951c858ab918f57  gcc/alloc-pool.h
! a76afadc5d6592774c45571d94948c04  gcc/analyzer/ChangeLog
  a53ebffbaabe6bc3664d659c554fedb3  gcc/analyzer/access-diagram.cc
  c41fa6be7ca91f40a15a7b8f03732d25  gcc/analyzer/access-diagram.h
  d97e417faf9694fdbd68f91aee129bd2  gcc/analyzer/ana-state-to-diagnostic-state.cc
*************** a8c275843686611dd10e89cc7569f89d  gcc/an
*** 3219,3225 ****
  4df6e8532c302bc59b4e417ab38a741a  gcc/analyzer/record-layout.cc
  f93ef89d263e02c779ec129aeead8a28  gcc/analyzer/record-layout.h
  8998fc6abdaaf4914e8f43f86a20d895  gcc/analyzer/region-model-asm.cc
! 2d255c7272b8312dbb2efdb100c6719b  gcc/analyzer/region-model-manager.cc
  1659367392030852cffeaddae0f5baac  gcc/analyzer/region-model-manager.h
  c24460f53b22bdecc3b9e8af24da1575  gcc/analyzer/region-model-reachability.cc
  93431d9eca086e4c7811afc3a66197ea  gcc/analyzer/region-model-reachability.h
--- 3219,3225 ----
  4df6e8532c302bc59b4e417ab38a741a  gcc/analyzer/record-layout.cc
  f93ef89d263e02c779ec129aeead8a28  gcc/analyzer/record-layout.h
  8998fc6abdaaf4914e8f43f86a20d895  gcc/analyzer/region-model-asm.cc
! dcc0557c418a05081c779c16ebd38ae4  gcc/analyzer/region-model-manager.cc
  1659367392030852cffeaddae0f5baac  gcc/analyzer/region-model-manager.h
  c24460f53b22bdecc3b9e8af24da1575  gcc/analyzer/region-model-reachability.cc
  93431d9eca086e4c7811afc3a66197ea  gcc/analyzer/region-model-reachability.h
*************** ea987115b0f67bce5cc4745e6d5bc4d1  gcc/at
*** 3265,3277 ****
  2d462a57a0a7bbe8bcb22db63f9377ef  gcc/attr-callback.h
  cbe63f3e975481a17ed49898fbbb9d2a  gcc/attr-fnspec.h
  377ef2db41c57304d86699bc3197d818  gcc/attr-urls.def
! bfdf4b9211be2c263ea8377fc068c5cc  gcc/attribs.cc
  feed071e9f711f8ebbc91f8636422f93  gcc/attribs.h
  bd317e24faffad6f2106396f1c3401b1  gcc/auto-inc-dec.cc
  fc353966a860a12cbc161a87f5619b51  gcc/auto-obstack.h
  765c378053f0808752b738ff984ab7fc  gcc/auto-profile.cc
  fbf9a8443f1c2d9cdb04294c02e8e280  gcc/auto-profile.h
! d33bdba156fd3cb19e4dedcfbf7f0ec7  gcc/avoid-store-forwarding.cc
  df8fff5733f0af601cd10d3e2611b94a  gcc/avoid-store-forwarding.h
  8ec9314e9edefe43a037289f48e6602a  gcc/backend.h
  836731448e64bbca8b5b1aa56ca90cdd  gcc/basic-block.h
--- 3265,3277 ----
  2d462a57a0a7bbe8bcb22db63f9377ef  gcc/attr-callback.h
  cbe63f3e975481a17ed49898fbbb9d2a  gcc/attr-fnspec.h
  377ef2db41c57304d86699bc3197d818  gcc/attr-urls.def
! 41ebf84dcf3c0a1da25d48a3c9fa72d4  gcc/attribs.cc
  feed071e9f711f8ebbc91f8636422f93  gcc/attribs.h
  bd317e24faffad6f2106396f1c3401b1  gcc/auto-inc-dec.cc
  fc353966a860a12cbc161a87f5619b51  gcc/auto-obstack.h
  765c378053f0808752b738ff984ab7fc  gcc/auto-profile.cc
  fbf9a8443f1c2d9cdb04294c02e8e280  gcc/auto-profile.h
! 348aded51535e9938807c88b8e51d784  gcc/avoid-store-forwarding.cc
  df8fff5733f0af601cd10d3e2611b94a  gcc/avoid-store-forwarding.h
  8ec9314e9edefe43a037289f48e6602a  gcc/backend.h
  836731448e64bbca8b5b1aa56ca90cdd  gcc/basic-block.h
*************** ebb1ceb69d6cf8ac2cdc227ae45f0eca  gcc/bi
*** 3286,3296 ****
  cdcd35bde318b22092b0788986b03a47  gcc/builtins.cc
  4dbe6686097ec6c197a24ac373bb9554  gcc/builtins.def
  99d9ddd60ff804d8e24732db43d38bca  gcc/builtins.h
! b9d5d1d7af2cebf197ca4a183bfeea9d  gcc/c-family/ChangeLog
  ea3fa1f4d7390a105fa3caab4f79aaf7  gcc/c-family/ChangeLog.gimple-classes
  aaea141fd41a559841cb76e33800c289  gcc/c-family/c-ada-spec.cc
  f60a13b470e8e51db83383bf9f9f921e  gcc/c-family/c-ada-spec.h
! 374e50066ee36fc7f227105c350323f6  gcc/c-family/c-attribs.cc
  9c4e2d12e48f052bafabdf6281744002  gcc/c-family/c-common.cc
  6522339cd83ff225a1ff9e0eab971eab  gcc/c-family/c-common.def
  81cb275a3cf181ff08d23b453a35d711  gcc/c-family/c-common.h
--- 3286,3296 ----
  cdcd35bde318b22092b0788986b03a47  gcc/builtins.cc
  4dbe6686097ec6c197a24ac373bb9554  gcc/builtins.def
  99d9ddd60ff804d8e24732db43d38bca  gcc/builtins.h
! d706a49d8f2035f0f35e6d7b7fb56aec  gcc/c-family/ChangeLog
  ea3fa1f4d7390a105fa3caab4f79aaf7  gcc/c-family/ChangeLog.gimple-classes
  aaea141fd41a559841cb76e33800c289  gcc/c-family/c-ada-spec.cc
  f60a13b470e8e51db83383bf9f9f921e  gcc/c-family/c-ada-spec.h
! 070946aa1b55a55d613bad8af07ad174  gcc/c-family/c-attribs.cc
  9c4e2d12e48f052bafabdf6281744002  gcc/c-family/c-common.cc
  6522339cd83ff225a1ff9e0eab971eab  gcc/c-family/c-common.def
  81cb275a3cf181ff08d23b453a35d711  gcc/c-family/c-common.h
*************** f7be2688a5d3b3987de70c31a6a5e374  gcc/c-
*** 3319,3325 ****
  38a6ba552ef0b2855739836a1238dc30  gcc/c-family/c-target.h
  d5acf2497b583d0fedcf4e2ac5f4ac4a  gcc/c-family/c-type-mismatch.cc
  ea821c9d267c64dd8b74aad9d0189834  gcc/c-family/c-type-mismatch.h
! 01c192d46b70ed6bbb440272922e8aad  gcc/c-family/c-ubsan.cc
  298f1278576690ff4398c33310700f52  gcc/c-family/c-ubsan.h
  29b7425b7315dcfbd0c9f89296e90df0  gcc/c-family/c-warn.cc
  64f70ea877ef6fdb6e5a9fc36357732d  gcc/c-family/c.opt
--- 3319,3325 ----
  38a6ba552ef0b2855739836a1238dc30  gcc/c-family/c-target.h
  d5acf2497b583d0fedcf4e2ac5f4ac4a  gcc/c-family/c-type-mismatch.cc
  ea821c9d267c64dd8b74aad9d0189834  gcc/c-family/c-type-mismatch.h
! 3edbaab3dbb840e71c737c842f0efc6b  gcc/c-family/c-ubsan.cc
  298f1278576690ff4398c33310700f52  gcc/c-family/c-ubsan.h
  29b7425b7315dcfbd0c9f89296e90df0  gcc/c-family/c-warn.cc
  64f70ea877ef6fdb6e5a9fc36357732d  gcc/c-family/c.opt
*************** ea821c9d267c64dd8b74aad9d0189834  gcc/c-
*** 3329,3350 ****
  377686cbbf62a7d61d251d3f74cddb5b  gcc/c-family/known-headers.h
  431045382c41554804be1959c1596be4  gcc/c-family/name-hint.h
  3bae9e281cc87b35f63e906373f3b446  gcc/c-family/stub-objc.cc
! c1ee1975e821fe96531c11d79ede5a5a  gcc/c/ChangeLog
  3cd646f5b83b1b6ad35b21836044f6be  gcc/c/Make-lang.in
  3920e3ee16f5b5955d40584fea53c441  gcc/c/c-aux-info.cc
  cd5bab8a4deeaa0369ae59b9403d06a2  gcc/c/c-convert.cc
! 0c7ce262f0e242dfc7fde7e4123a32af  gcc/c/c-decl.cc
  92707173973fa48fbb8dda88f5af625a  gcc/c/c-errors.cc
  a59a5f126151616976b68fde0c703dd4  gcc/c/c-fold.cc
  817e08cf2d2f4169cb1e5cc26bad1174  gcc/c/c-lang.cc
  62012039da265ed806754029f67a24a9  gcc/c/c-lang.h
  1c9369d5b3d8abe53761b5e048d56351  gcc/c/c-objc-common.cc
  cbfdd140f14c43c01a6bdf8b1c24b317  gcc/c/c-objc-common.h
! 9a5c692aff17c3c5eed76edcd09c08ad  gcc/c/c-parser.cc
  f6b634d7c0204c419cf4fb7b48193fad  gcc/c/c-parser.h
  4db955734effe2d0c9aac0379d2e6a8c  gcc/c/c-tree.def
! 13c823cb921888cb458c5573917275ac  gcc/c/c-tree.h
! 414624a4fc71bc91337c7588f3e6ed50  gcc/c/c-typeck.cc
  5804f7ee3eccdfb7c9a64e40b20ccc79  gcc/c/config-lang.in
  58370619d5c4739b7d81d5f899913a0c  gcc/c/gccspec.cc
  3ae90e1d8085765b7e7488ac9673a927  gcc/c/gimple-parser.cc
--- 3329,3350 ----
  377686cbbf62a7d61d251d3f74cddb5b  gcc/c-family/known-headers.h
  431045382c41554804be1959c1596be4  gcc/c-family/name-hint.h
  3bae9e281cc87b35f63e906373f3b446  gcc/c-family/stub-objc.cc
! 800b0bb46504d5fd37a09e6a535f9374  gcc/c/ChangeLog
  3cd646f5b83b1b6ad35b21836044f6be  gcc/c/Make-lang.in
  3920e3ee16f5b5955d40584fea53c441  gcc/c/c-aux-info.cc
  cd5bab8a4deeaa0369ae59b9403d06a2  gcc/c/c-convert.cc
! 7dd8f80c2a43f8de457531f6c4e444b8  gcc/c/c-decl.cc
  92707173973fa48fbb8dda88f5af625a  gcc/c/c-errors.cc
  a59a5f126151616976b68fde0c703dd4  gcc/c/c-fold.cc
  817e08cf2d2f4169cb1e5cc26bad1174  gcc/c/c-lang.cc
  62012039da265ed806754029f67a24a9  gcc/c/c-lang.h
  1c9369d5b3d8abe53761b5e048d56351  gcc/c/c-objc-common.cc
  cbfdd140f14c43c01a6bdf8b1c24b317  gcc/c/c-objc-common.h
! bb645136b8228c4df81f31b878165339  gcc/c/c-parser.cc
  f6b634d7c0204c419cf4fb7b48193fad  gcc/c/c-parser.h
  4db955734effe2d0c9aac0379d2e6a8c  gcc/c/c-tree.def
! 9e8033c7045324daa1c7f4b56f466b48  gcc/c/c-tree.h
! 5bd65fca7506ea0d56201db5098a6c40  gcc/c/c-typeck.cc
  5804f7ee3eccdfb7c9a64e40b20ccc79  gcc/c/config-lang.in
  58370619d5c4739b7d81d5f899913a0c  gcc/c/gccspec.cc
  3ae90e1d8085765b7e7488ac9673a927  gcc/c/gimple-parser.cc
*************** de90956fd0fa66b3093b818874bbb4f4  gcc/cg
*** 3381,3387 ****
  e49d05909919035f9ad4633fc056bc56  gcc/cgraphunit.cc
  2a45e3be9216480f88930217fee8fc7b  gcc/channels.h
  931fe41c17df7e7a6074418f8e41f010  gcc/cif-code.def
! 5a3d9766f64b68f99997408c8a53de68  gcc/cobol/ChangeLog
  56c564c4cfd3395214baa46684218f3d  gcc/cobol/Make-lang.in
  0a84e784d2bc4066654d2377fc6a2930  gcc/cobol/TODO
  721fae29d54f2a632cdf024f72b079d3  gcc/cobol/cbldiag.h
--- 3381,3387 ----
  e49d05909919035f9ad4633fc056bc56  gcc/cgraphunit.cc
  2a45e3be9216480f88930217fee8fc7b  gcc/channels.h
  931fe41c17df7e7a6074418f8e41f010  gcc/cif-code.def
! 384e3d089f1794d9754f5a6de0c85681  gcc/cobol/ChangeLog
  56c564c4cfd3395214baa46684218f3d  gcc/cobol/Make-lang.in
  0a84e784d2bc4066654d2377fc6a2930  gcc/cobol/TODO
  721fae29d54f2a632cdf024f72b079d3  gcc/cobol/cbldiag.h
*************** d3e145b932227aa8e5b26dec41c06d6a  gcc/co
*** 3400,3412 ****
  c1d1d6fdb8f1ee38a9046444b9fefc1a  gcc/cobol/gcobol.1
  527925049a81a36c06220d368570f55a  gcc/cobol/gcobol.3
  a0a0120d2e52dd9bbe26a6d64ba9dc64  gcc/cobol/gcobolspec.cc
! 4146d16c70c44d46b1e240a9813be893  gcc/cobol/genapi.cc
  b0e08dd5c1b33b9edf9f3c89fc4e118a  gcc/cobol/genapi.h
  fc04ff820a76db685ff052ebcd99abd4  gcc/cobol/gengen.cc
  45fc19b3aa2b4be68121b618833d2b38  gcc/cobol/gengen.h
  02c1973b92cba6c2803b133cd4b16eb0  gcc/cobol/genmath.cc
  78d263e35c67698f367e118c95157cb4  gcc/cobol/genmath.h
! 60d0dd531324b33a4b8bf1b02e803709  gcc/cobol/genutil.cc
  b5404217fb1c5bce54c445c6a8d877f4  gcc/cobol/genutil.h
  7b9c1ead6f9d3661133f7f732811719c  gcc/cobol/help.gen
  0c56a591cf166a8d83553c2afd4b3ce3  gcc/cobol/inspect.h
--- 3400,3412 ----
  c1d1d6fdb8f1ee38a9046444b9fefc1a  gcc/cobol/gcobol.1
  527925049a81a36c06220d368570f55a  gcc/cobol/gcobol.3
  a0a0120d2e52dd9bbe26a6d64ba9dc64  gcc/cobol/gcobolspec.cc
! a852c25a195d24a55da250786c933cb1  gcc/cobol/genapi.cc
  b0e08dd5c1b33b9edf9f3c89fc4e118a  gcc/cobol/genapi.h
  fc04ff820a76db685ff052ebcd99abd4  gcc/cobol/gengen.cc
  45fc19b3aa2b4be68121b618833d2b38  gcc/cobol/gengen.h
  02c1973b92cba6c2803b133cd4b16eb0  gcc/cobol/genmath.cc
  78d263e35c67698f367e118c95157cb4  gcc/cobol/genmath.h
! 19301b3ac88e87d5ac61826dd999568c  gcc/cobol/genutil.cc
  b5404217fb1c5bce54c445c6a8d877f4  gcc/cobol/genutil.h
  7b9c1ead6f9d3661133f7f732811719c  gcc/cobol/help.gen
  0c56a591cf166a8d83553c2afd4b3ce3  gcc/cobol/inspect.h
*************** d48c86bc52a7b8ee38281d6069d3eb6a  gcc/co
*** 3443,3449 ****
  af093931f440b1ff2d8eaf64045fbf9b  gcc/combine.cc
  9f2835a8fa18cfce2249127014eb7edd  gcc/common.md
  4b25af59e1f8a07782dbddb00afc272c  gcc/common.opt
! b555a79a0cb9f4062f9c73e695b6f2cb  gcc/common.opt.urls
  d3b28fb0d49a8d683dde6011400fd7e7  gcc/common/common-target-def.h
  93cf11d6a27d42f73799ae012d2f876e  gcc/common/common-target.def
  d8f7142c05c4102806a8b26817df17a6  gcc/common/common-target.h
--- 3443,3449 ----
  af093931f440b1ff2d8eaf64045fbf9b  gcc/combine.cc
  9f2835a8fa18cfce2249127014eb7edd  gcc/common.md
  4b25af59e1f8a07782dbddb00afc272c  gcc/common.opt
! e7c326a5938ec004f6b9f245c0c64caa  gcc/common.opt.urls
  d3b28fb0d49a8d683dde6011400fd7e7  gcc/common/common-target-def.h
  93cf11d6a27d42f73799ae012d2f876e  gcc/common/common-target.def
  d8f7142c05c4102806a8b26817df17a6  gcc/common/common-target.h
*************** c47b4191f7bac0196ab63ca2c66bfa98  gcc/co
*** 3513,3519 ****
  148fedc3acd410f7a82133d0e78b02df  gcc/config/aarch64/aarch64-abi-ms.h
  9b6ffa67b7e7f7cc2348fa0dc728072e  gcc/config/aarch64/aarch64-arches.def
  c8a924cfcb693679febdcde3a0cc0809  gcc/config/aarch64/aarch64-builtin-pairs.def
! 0ffe2c04e5ec55f9fcbbcb3d24d22c59  gcc/config/aarch64/aarch64-builtins.cc
  a1a7d26ecab3d6681a1d3f5c2cb77275  gcc/config/aarch64/aarch64-builtins.h
  454756bd5d5d8b78854cce8634809e6b  gcc/config/aarch64/aarch64-c.cc
  3effce0415a0994753b7865834e56638  gcc/config/aarch64/aarch64-coff.h
--- 3513,3519 ----
  148fedc3acd410f7a82133d0e78b02df  gcc/config/aarch64/aarch64-abi-ms.h
  9b6ffa67b7e7f7cc2348fa0dc728072e  gcc/config/aarch64/aarch64-arches.def
  c8a924cfcb693679febdcde3a0cc0809  gcc/config/aarch64/aarch64-builtin-pairs.def
! 3b4b552144d47e66a0b131b2e5aa5df9  gcc/config/aarch64/aarch64-builtins.cc
  a1a7d26ecab3d6681a1d3f5c2cb77275  gcc/config/aarch64/aarch64-builtins.h
  454756bd5d5d8b78854cce8634809e6b  gcc/config/aarch64/aarch64-c.cc
  3effce0415a0994753b7865834e56638  gcc/config/aarch64/aarch64-coff.h
*************** a3364cc2343afdc4fa084e07d1f457d3  gcc/co
*** 3916,3929 ****
  76fcb1fa7f4c0d008c2bc05d36308c21  gcc/config/bpf/bpf-c.cc
  a2d0f6c9bad8a3879b580272be69f1f2  gcc/config/bpf/bpf-opts.h
  75577eb7c709c0b2fc654b674a23a488  gcc/config/bpf/bpf-passes.def
! fd3376de883f1d923fa2b6bc26539ac4  gcc/config/bpf/bpf-protos.h
! 9af059359c649d0e5182406ffea93506  gcc/config/bpf/bpf.cc
  67f05cbf853ae3716726b8b8088f7239  gcc/config/bpf/bpf.h
! 7074332add0929bff663f1aacef70981  gcc/config/bpf/bpf.md
  8cc13feabe144c7b67f08306f49e22bf  gcc/config/bpf/bpf.opt
  3e2cdf3e83af474ef9980280e6ae16a5  gcc/config/bpf/bpf.opt.urls
! fe1ef24a9fba2a2cf70030577495696f  gcc/config/bpf/btfext-out.cc
! 53645a8e8ef18334bc04ce2cb5a63c5b  gcc/config/bpf/btfext-out.h
  6a2b2e4c63b3a8475b313e2b2f79242b  gcc/config/bpf/constraints.md
  03f82e469696d935ec02ad9ef77751e6  gcc/config/bpf/core-builtins.cc
  988e922d069a72cea8291afbd9c40fe5  gcc/config/bpf/core-builtins.h
--- 3916,3929 ----
  76fcb1fa7f4c0d008c2bc05d36308c21  gcc/config/bpf/bpf-c.cc
  a2d0f6c9bad8a3879b580272be69f1f2  gcc/config/bpf/bpf-opts.h
  75577eb7c709c0b2fc654b674a23a488  gcc/config/bpf/bpf-passes.def
! 492ee8a7f8cc45aed1396e6ae7512e4f  gcc/config/bpf/bpf-protos.h
! 4bda675b20f7054117fb2665f5699949  gcc/config/bpf/bpf.cc
  67f05cbf853ae3716726b8b8088f7239  gcc/config/bpf/bpf.h
! c10aa3d725f989f5bd6d5fc2b3e17c81  gcc/config/bpf/bpf.md
  8cc13feabe144c7b67f08306f49e22bf  gcc/config/bpf/bpf.opt
  3e2cdf3e83af474ef9980280e6ae16a5  gcc/config/bpf/bpf.opt.urls
! 69c770efee22658702c18a3fa3e284c5  gcc/config/bpf/btfext-out.cc
! 50fcdf526a0a6304507b91f5a086a4fd  gcc/config/bpf/btfext-out.h
  6a2b2e4c63b3a8475b313e2b2f79242b  gcc/config/bpf/constraints.md
  03f82e469696d935ec02ad9ef77751e6  gcc/config/bpf/core-builtins.cc
  988e922d069a72cea8291afbd9c40fe5  gcc/config/bpf/core-builtins.h
*************** b63569ecff9557acb7963f14a101bce1  gcc/co
*** 4299,4311 ****
  106bb7043496820d393f0522178e1287  gcc/config/i386/i386-options.h
  2db6ec1e569468279f31d11379fe9d8f  gcc/config/i386/i386-opts.h
  9a75f0c116528508f4f48d128eceac38  gcc/config/i386/i386-passes.def
! c28514790f4784d421517c5a6b2f7d4f  gcc/config/i386/i386-protos.h
  5b778b3296ea91dab0ca82338ca6828d  gcc/config/i386/i386-rust-and-jit.inc
  91b8b50cba997aef17a61929b5b55a87  gcc/config/i386/i386-rust.cc
  25b3947a11eb9ca52892133ddb36f3f2  gcc/config/i386/i386-rust.h
! f94d8ad14d000d633c2f704227ba363e  gcc/config/i386/i386.cc
  483853f45756ffc10a3acbe55d2d0920  gcc/config/i386/i386.h
! 89df2a613c67e17ead3c5e21ec133f78  gcc/config/i386/i386.md
  f431cbff6410e63b4e2de0e11adf19fb  gcc/config/i386/i386.opt
  b9e680863ab278314c1f2990d2d04fcc  gcc/config/i386/i386.opt.urls
  7570cb8763bf53e7144db7d6cd97f846  gcc/config/i386/i386elf.h
--- 4299,4311 ----
  106bb7043496820d393f0522178e1287  gcc/config/i386/i386-options.h
  2db6ec1e569468279f31d11379fe9d8f  gcc/config/i386/i386-opts.h
  9a75f0c116528508f4f48d128eceac38  gcc/config/i386/i386-passes.def
! 599c3a0da7643105c19e7d0f2fcf6e17  gcc/config/i386/i386-protos.h
  5b778b3296ea91dab0ca82338ca6828d  gcc/config/i386/i386-rust-and-jit.inc
  91b8b50cba997aef17a61929b5b55a87  gcc/config/i386/i386-rust.cc
  25b3947a11eb9ca52892133ddb36f3f2  gcc/config/i386/i386-rust.h
! 52002b38d11081c4b401acb305710c40  gcc/config/i386/i386.cc
  483853f45756ffc10a3acbe55d2d0920  gcc/config/i386/i386.h
! 4bc145833a85488000c9a9d4e5842542  gcc/config/i386/i386.md
  f431cbff6410e63b4e2de0e11adf19fb  gcc/config/i386/i386.opt
  b9e680863ab278314c1f2990d2d04fcc  gcc/config/i386/i386.opt.urls
  7570cb8763bf53e7144db7d6cd97f846  gcc/config/i386/i386elf.h
*************** db114ac74c87743a142214fddaad2687  gcc/co
*** 4368,4374 ****
  92210572b9f9f6481e4649a42d9ac3b0  gcc/config/i386/sm4intrin.h
  5298b8261e081859bbf068b710158e8f  gcc/config/i386/smmintrin.h
  a525527b360fda04d5bd85e98e2595b6  gcc/config/i386/sol2.h
! 77578e9a423d4d2ca1da27c15179b84a  gcc/config/i386/sse.md
  52e0114cb9ab8d55aac3c17d06657d71  gcc/config/i386/ssemath.h
  8a6ab9e02097018bc9f1c2b347d29cfa  gcc/config/i386/stringop.def
  a626b4e6cd3e15f4e9d5c769b6391243  gcc/config/i386/subst.md
--- 4368,4374 ----
  92210572b9f9f6481e4649a42d9ac3b0  gcc/config/i386/sm4intrin.h
  5298b8261e081859bbf068b710158e8f  gcc/config/i386/smmintrin.h
  a525527b360fda04d5bd85e98e2595b6  gcc/config/i386/sol2.h
! 9777a2100663b188f2b18e9a3cbaa9b9  gcc/config/i386/sse.md
  52e0114cb9ab8d55aac3c17d06657d71  gcc/config/i386/ssemath.h
  8a6ab9e02097018bc9f1c2b347d29cfa  gcc/config/i386/stringop.def
  a626b4e6cd3e15f4e9d5c769b6391243  gcc/config/i386/subst.md
*************** c7eeb48ab4223ecfdb09fa5e4ce61d71  gcc/co
*** 4540,4546 ****
  dadec2097ca9c4947a49a5766ac8ee89  gcc/config/loongarch/loongarch-str.h
  7ccddf81e7d405d89aab58e4ff863b49  gcc/config/loongarch/loongarch-target-attr.cc
  3cfb174db8bc99a9361e597a3e9bd35e  gcc/config/loongarch/loongarch-tune.h
! 2581ad6f4e655a110c429071f2821228  gcc/config/loongarch/loongarch.cc
  57abfb8c653a24903f61e5cf93ac929f  gcc/config/loongarch/loongarch.h
  1b11d059c390458cbbf8e16a8efa5e6f  gcc/config/loongarch/loongarch.md
  62f9bea81246c3dac622d969dabefc1b  gcc/config/loongarch/loongarch.opt
--- 4540,4546 ----
  dadec2097ca9c4947a49a5766ac8ee89  gcc/config/loongarch/loongarch-str.h
  7ccddf81e7d405d89aab58e4ff863b49  gcc/config/loongarch/loongarch-target-attr.cc
  3cfb174db8bc99a9361e597a3e9bd35e  gcc/config/loongarch/loongarch-tune.h
! 6f5f7d4b4798dab768bdcf9a85e86c78  gcc/config/loongarch/loongarch.cc
  57abfb8c653a24903f61e5cf93ac929f  gcc/config/loongarch/loongarch.h
  1b11d059c390458cbbf8e16a8efa5e6f  gcc/config/loongarch/loongarch.md
  62f9bea81246c3dac622d969dabefc1b  gcc/config/loongarch/loongarch.opt
*************** b65281b3d979c9c774d30d65281a07ab  gcc/co
*** 5094,5100 ****
  75866c86ec05a7abe2fa3f55828938b0  gcc/config/riscv/riscv-vsetvl.cc
  10ae51c30c9b8e6dce66f20016fae344  gcc/config/riscv/riscv-vsetvl.def
  85dee253312a7f85a1d4f8554a601105  gcc/config/riscv/riscv-zicfilp.cc
! 6f508eb00f8fd8dbcd7072857cc19a9c  gcc/config/riscv/riscv.cc
  cff2fc59ab1defbd178f75bdcd643bcc  gcc/config/riscv/riscv.h
  69bf57d0406b6ab66b5fd796932171e7  gcc/config/riscv/riscv.md
  c721fa1217a74f723ccf84813f721944  gcc/config/riscv/riscv.opt
--- 5094,5100 ----
  75866c86ec05a7abe2fa3f55828938b0  gcc/config/riscv/riscv-vsetvl.cc
  10ae51c30c9b8e6dce66f20016fae344  gcc/config/riscv/riscv-vsetvl.def
  85dee253312a7f85a1d4f8554a601105  gcc/config/riscv/riscv-zicfilp.cc
! 766b27da49efcec3efb6e0634a603662  gcc/config/riscv/riscv.cc
  cff2fc59ab1defbd178f75bdcd643bcc  gcc/config/riscv/riscv.h
  69bf57d0406b6ab66b5fd796932171e7  gcc/config/riscv/riscv.md
  c721fa1217a74f723ccf84813f721944  gcc/config/riscv/riscv.opt
*************** c08812561648d9be8b2c465101f02f55  gcc/co
*** 5463,5469 ****
  710bcf4b6ac9924f665a6ed578c037f2  gcc/config/sparc/sparc-passes.def
  24d69dfb87c13754d1f394397cf82632  gcc/config/sparc/sparc-protos.h
  f38e54026c1e92a40ed859913c7b01ec  gcc/config/sparc/sparc.cc
! 643f1dc40720ac724fea41ca22f6e185  gcc/config/sparc/sparc.h
  baa4d437af36181c641fd909d270531a  gcc/config/sparc/sparc.md
  d35b9f07de59a46cdbdd2bfb5aefaa3e  gcc/config/sparc/sparc.opt
  7989b30c48125e3c3acf6b37e76bd44f  gcc/config/sparc/sparc.opt.urls
--- 5463,5469 ----
  710bcf4b6ac9924f665a6ed578c037f2  gcc/config/sparc/sparc-passes.def
  24d69dfb87c13754d1f394397cf82632  gcc/config/sparc/sparc-protos.h
  f38e54026c1e92a40ed859913c7b01ec  gcc/config/sparc/sparc.cc
! baabc77cf540cfecc78f116e0b744ebb  gcc/config/sparc/sparc.h
  baa4d437af36181c641fd909d270531a  gcc/config/sparc/sparc.md
  d35b9f07de59a46cdbdd2bfb5aefaa3e  gcc/config/sparc/sparc.opt
  7989b30c48125e3c3acf6b37e76bd44f  gcc/config/sparc/sparc.opt.urls
*************** c5ad0142a191862e3e81ecd3573754b3  gcc/co
*** 5643,5649 ****
  55a33ae415bde0fd2e36ba584894e50b  gcc/coroutine-passes.cc
  7c2ad47e271f9b832badf1740a09c77e  gcc/coverage.cc
  8524318f81a8af8cfaa8d35966d8fdc2  gcc/coverage.h
! d3f6e8879494ff4638e837aa04e2e1ce  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
--- 5643,5649 ----
  55a33ae415bde0fd2e36ba584894e50b  gcc/coroutine-passes.cc
  7c2ad47e271f9b832badf1740a09c77e  gcc/coverage.cc
  8524318f81a8af8cfaa8d35966d8fdc2  gcc/coverage.h
! 9efde4341e3767ef3c8bfb225cf41147  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
*************** c1c7801b9b0f379e702a4f6cb83972e7  gcc/cp
*** 5683,5692 ****
  af8e3b118f098072fafadf8cddd33d9b  gcc/cp/call.cc
  144dd1ae510a7436b569b007470b62da  gcc/cp/cfns.gperf
  39dd4c5a96c7ea132eb3c7ed039a065e  gcc/cp/cfns.h
! 42560849d6bf913e4564a0a58513a9e7  gcc/cp/class.cc
  e51f295e858583af5f9cf88b9530adf7  gcc/cp/config-lang.in
! 4b07a09542f4b8c692a0a71d13dacea2  gcc/cp/constexpr.cc
! 79e598a6c7f212d6781869817d0ab467  gcc/cp/constraint.cc
  99c403ab218e024bcf6d5d2108ad1f3b  gcc/cp/contracts.cc
  e77a681f560f3e9500f126febdc67ef6  gcc/cp/contracts.h
  f31a917ecaa91652f1ddad33816b79d8  gcc/cp/coroutines.cc
--- 5683,5692 ----
  af8e3b118f098072fafadf8cddd33d9b  gcc/cp/call.cc
  144dd1ae510a7436b569b007470b62da  gcc/cp/cfns.gperf
  39dd4c5a96c7ea132eb3c7ed039a065e  gcc/cp/cfns.h
! 4a5a02469458f5a17e932ae0133f2ce7  gcc/cp/class.cc
  e51f295e858583af5f9cf88b9530adf7  gcc/cp/config-lang.in
! 69deea1a041ca0dc6f39eaaf173c7af9  gcc/cp/constexpr.cc
! e4894157c7dd2b2253a316497614e8f0  gcc/cp/constraint.cc
  99c403ab218e024bcf6d5d2108ad1f3b  gcc/cp/contracts.cc
  e77a681f560f3e9500f126febdc67ef6  gcc/cp/contracts.h
  f31a917ecaa91652f1ddad33816b79d8  gcc/cp/coroutines.cc
*************** eba8d8a1725223519fba5d4d69afd5c9  gcc/cp
*** 5698,5712 ****
  370b42bcdf211125186c37665052c30c  gcc/cp/cp-objcp-common.h
  64fa302e46b7097f7d989f5ab418d244  gcc/cp/cp-trait.def
  bc9b29434f2e35fa68caf656161b5c0f  gcc/cp/cp-tree.def
! faf305fc863c9b8ba2a4e01fedf21fa6  gcc/cp/cp-tree.h
  e2854dfa428fab45fc41bf58fef71e61  gcc/cp/cp-ubsan.cc
  0f660920514d4f51007f6841a25e3af6  gcc/cp/cvt.cc
  f067718cf3d629084d8347c4e017afd4  gcc/cp/cxx-pretty-print.cc
  1d04eec9859d91686ca501e9221f30ac  gcc/cp/cxx-pretty-print.h
  82a41d873e1c90067158c89e6c1bd4bb  gcc/cp/cxxapi-data.csv
! 5214fb6ea2b438d996d4b2f27e170063  gcc/cp/decl.cc
  6b0c9433f7d3f129a44b59d54babb4eb  gcc/cp/decl.h
! 604caef71e607a1c086b5a2fe2908469  gcc/cp/decl2.cc
  12ccd5244973d74a0536adf58261b416  gcc/cp/dump.cc
  57d1fa0a3980884b82ca4f3198be131f  gcc/cp/error.cc
  59d3d272a504a462c1f7081637e7f3e5  gcc/cp/except.cc
--- 5698,5712 ----
  370b42bcdf211125186c37665052c30c  gcc/cp/cp-objcp-common.h
  64fa302e46b7097f7d989f5ab418d244  gcc/cp/cp-trait.def
  bc9b29434f2e35fa68caf656161b5c0f  gcc/cp/cp-tree.def
! 8ed70f4ea8c06e827888952ba3de23fa  gcc/cp/cp-tree.h
  e2854dfa428fab45fc41bf58fef71e61  gcc/cp/cp-ubsan.cc
  0f660920514d4f51007f6841a25e3af6  gcc/cp/cvt.cc
  f067718cf3d629084d8347c4e017afd4  gcc/cp/cxx-pretty-print.cc
  1d04eec9859d91686ca501e9221f30ac  gcc/cp/cxx-pretty-print.h
  82a41d873e1c90067158c89e6c1bd4bb  gcc/cp/cxxapi-data.csv
! 7ccacae7028b3499e606afbaa5b5c378  gcc/cp/decl.cc
  6b0c9433f7d3f129a44b59d54babb4eb  gcc/cp/decl.h
! eb77bf90b77e8585aa773ccdf953c298  gcc/cp/decl2.cc
  12ccd5244973d74a0536adf58261b416  gcc/cp/dump.cc
  57d1fa0a3980884b82ca4f3198be131f  gcc/cp/error.cc
  59d3d272a504a462c1f7081637e7f3e5  gcc/cp/except.cc
*************** b3ff7f1e11444c1a8a1b9471e54c8cdd  gcc/cp
*** 5719,5741 ****
  bc388fb8287f2de7cdf4d78eb8f5d998  gcc/cp/lang-specs.h
  2c33328276b7ca5633320581eb891129  gcc/cp/lex.cc
  e4ccdd9cbe95dde4cce27394a7613dd9  gcc/cp/logic.cc
! 88a17dec11f2923228a87b655c448a7a  gcc/cp/mangle.cc
  3d68343c4a9d614bb00b91ad53e79a0b  gcc/cp/mapper-client.cc
  27465babcaf6195d4f438ed36bdd6aff  gcc/cp/mapper-client.h
  4be7487ea09330ba02fb0695bc32c905  gcc/cp/mapper-resolver.cc
  4f8663190bd54ce6e6c71816f7ea934f  gcc/cp/metafns.gperf
  13e5b9c99aa3729623f43052b1f10688  gcc/cp/metafns.h
  99dcd5706d056d3c446e2d90d8060632  gcc/cp/method.cc
! 1ce8a1013620201b2d0f93434420b69b  gcc/cp/module.cc
! d2039b7cf999d52dbae3cee137675034  gcc/cp/name-lookup.cc
  0dfa003b8204ccdc1ef6f78d2752575f  gcc/cp/name-lookup.h
  b98d31c57aa038618db60991b17e0d35  gcc/cp/operators.def
  9efebf39da56d681d4405dfb9e55e3f5  gcc/cp/optimize.cc
  6db67deaa4315228bd4977aaa82e129b  gcc/cp/parser.cc
  7973a34c47e3d3c580832655a3a5c3c2  gcc/cp/parser.h
! a16ba8a6a9438cd1380c9cf4495d2558  gcc/cp/pt.cc
  25322928eaff39cf167372554c639e02  gcc/cp/ptree.cc
! ea361ae3c08b3b00e529f6d3cf1a3c0f  gcc/cp/reflect.cc
  97df067b24bdcb46ea1a2ca984c26a33  gcc/cp/rtti.cc
  9f7af4d4e940116a4fb0176d09ad180a  gcc/cp/search.cc
  240e42d55cb3dd45bb86725892670585  gcc/cp/semantics.cc
--- 5719,5741 ----
  bc388fb8287f2de7cdf4d78eb8f5d998  gcc/cp/lang-specs.h
  2c33328276b7ca5633320581eb891129  gcc/cp/lex.cc
  e4ccdd9cbe95dde4cce27394a7613dd9  gcc/cp/logic.cc
! 2af956b93a6588c9362a695e325af9f7  gcc/cp/mangle.cc
  3d68343c4a9d614bb00b91ad53e79a0b  gcc/cp/mapper-client.cc
  27465babcaf6195d4f438ed36bdd6aff  gcc/cp/mapper-client.h
  4be7487ea09330ba02fb0695bc32c905  gcc/cp/mapper-resolver.cc
  4f8663190bd54ce6e6c71816f7ea934f  gcc/cp/metafns.gperf
  13e5b9c99aa3729623f43052b1f10688  gcc/cp/metafns.h
  99dcd5706d056d3c446e2d90d8060632  gcc/cp/method.cc
! e12f256a66123bd0717a877ed837f722  gcc/cp/module.cc
! cafeff1e0944f6afbf379d48485d9eba  gcc/cp/name-lookup.cc
  0dfa003b8204ccdc1ef6f78d2752575f  gcc/cp/name-lookup.h
  b98d31c57aa038618db60991b17e0d35  gcc/cp/operators.def
  9efebf39da56d681d4405dfb9e55e3f5  gcc/cp/optimize.cc
  6db67deaa4315228bd4977aaa82e129b  gcc/cp/parser.cc
  7973a34c47e3d3c580832655a3a5c3c2  gcc/cp/parser.h
! 9c8df1b4457329aa562dccb16d6cf7f6  gcc/cp/pt.cc
  25322928eaff39cf167372554c639e02  gcc/cp/ptree.cc
! ad5dbe489dc9fb232c9d35cc2613ec2e  gcc/cp/reflect.cc
  97df067b24bdcb46ea1a2ca984c26a33  gcc/cp/rtti.cc
  9f7af4d4e940116a4fb0176d09ad180a  gcc/cp/search.cc
  240e42d55cb3dd45bb86725892670585  gcc/cp/semantics.cc
*************** dd21e0771211da03ea52000a335b44a9  gcc/cp
*** 5753,5759 ****
  39b4704938fb780fdd57ddb7cbb0fdba  gcc/cprop.cc
  bb146ea57855f57a97f23f7c748b05ed  gcc/crc-verification.cc
  b7bf54d1a28938f620902d5d360e7000  gcc/crc-verification.h
! 594e1fb873ba1aee8130cefcd7b4b337  gcc/cse.cc
  d8e63039ff02f156025e0e64f467b032  gcc/cselib.cc
  f4482f497f6e3a2eae101f16c79b4b27  gcc/cselib.h
  1ded054093de910d9786c62bc4fe8cc6  gcc/cstamp-h.in
--- 5753,5759 ----
  39b4704938fb780fdd57ddb7cbb0fdba  gcc/cprop.cc
  bb146ea57855f57a97f23f7c748b05ed  gcc/crc-verification.cc
  b7bf54d1a28938f620902d5d360e7000  gcc/crc-verification.h
! bcc29cbbf3a7aaec0df9ce9e8dc77504  gcc/cse.cc
  d8e63039ff02f156025e0e64f467b032  gcc/cselib.cc
  f4482f497f6e3a2eae101f16c79b4b27  gcc/cselib.h
  1ded054093de910d9786c62bc4fe8cc6  gcc/cstamp-h.in
*************** ee65c9e3e7c3fb1fd0128c23f4130e51  gcc/do
*** 6128,6138 ****
  301ed7e567732d1f0d5899a624068bdd  gcc/doc/cppinternals.texi
  b0cd5e1000a4e1467a9880e1d1f46201  gcc/doc/cppopts.texi
  d8b2becdc7d9c570f256e19e1b1ac4f1  gcc/doc/cppwarnopts.texi
! 63a86bb4560d9d7e02abe2624d42d776  gcc/doc/extend.texi
  483a7b956113f0370528460e842ff7b0  gcc/doc/fragments.texi
  7fb1e4199b2e70228fda69b8065d83c4  gcc/doc/frontends.texi
  66d5868616d429f3e34b575b3efc6ccc  gcc/doc/gcc.texi
! 12456fc9951c0396af8774f0f9961a5a  gcc/doc/gccint.texi
  c4c2d60b79a670894debcf60da0e71e9  gcc/doc/gcov-dump.texi
  aa98c00cad5e7ccb99b898a166288d0c  gcc/doc/gcov-tool.texi
  8910763f8e2d80436cd2a70891012ad7  gcc/doc/gcov.texi
--- 6128,6138 ----
  301ed7e567732d1f0d5899a624068bdd  gcc/doc/cppinternals.texi
  b0cd5e1000a4e1467a9880e1d1f46201  gcc/doc/cppopts.texi
  d8b2becdc7d9c570f256e19e1b1ac4f1  gcc/doc/cppwarnopts.texi
! 86f9365a8cda97d87c0971ac70275cda  gcc/doc/extend.texi
  483a7b956113f0370528460e842ff7b0  gcc/doc/fragments.texi
  7fb1e4199b2e70228fda69b8065d83c4  gcc/doc/frontends.texi
  66d5868616d429f3e34b575b3efc6ccc  gcc/doc/gcc.texi
! d65494b01ae16d772dcb4656484c1a0f  gcc/doc/gccint.texi
  c4c2d60b79a670894debcf60da0e71e9  gcc/doc/gcov-dump.texi
  aa98c00cad5e7ccb99b898a166288d0c  gcc/doc/gcov-tool.texi
  8910763f8e2d80436cd2a70891012ad7  gcc/doc/gcov.texi
*************** f47d236d7ee7e48319a13461771035d6  gcc/do
*** 6150,6158 ****
  37d898a82683588b62cca104098ad182  gcc/doc/include/gcc-common.texi
  95c90bf85d3eab67f348ee3ce0bf4050  gcc/doc/include/gpl_v3.texi
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
! 592c83c2f1efccb66e9eef3856d9e65b  gcc/doc/install.texi
  30a2209eee0a2bed76e2d9ff3bd646f2  gcc/doc/install.texi2html
! 01042815557b82ed9ce172dcae13e409  gcc/doc/invoke.texi
  dd9d4097ebfa9e936c41913343807268  gcc/doc/languages.texi
  46d2bbbd37002bb71569d0b1f27d7a5a  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
--- 6150,6158 ----
  37d898a82683588b62cca104098ad182  gcc/doc/include/gcc-common.texi
  95c90bf85d3eab67f348ee3ce0bf4050  gcc/doc/include/gpl_v3.texi
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
! b7955182831f08491b0967e9674fbdcd  gcc/doc/install.texi
  30a2209eee0a2bed76e2d9ff3bd646f2  gcc/doc/install.texi2html
! c1f5915deede97022528ce4f492ee674  gcc/doc/invoke.texi
  dd9d4097ebfa9e936c41913343807268  gcc/doc/languages.texi
  46d2bbbd37002bb71569d0b1f27d7a5a  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
*************** e5c04f2c02ba7e9b9b88758cda8b8da2  gcc/do
*** 6205,6210 ****
--- 6205,6211 ----
  6f98d16fa4778171ab6b051c404717c2  gcc/doc/rtl.texi
  b12261ad56bcabd07b4a1b739f271527  gcc/doc/service.texi
  244685a8e65d2616e55749c070fe9911  gcc/doc/sourcebuild.texi
+ b7126b6a68ee9e95413e9de4a566ba0d  gcc/doc/specs.texi
  d2b53a62ec4e23a8e4cbe16d2843c100  gcc/doc/standards.texi
  785cd9c395e7523657cf24e3547288ce  gcc/doc/tm.texi
  7e96646cc37dce39721bdc1ebba8e4d9  gcc/doc/tm.texi.in
*************** f80b38c70a85f9aeae9688b937b028ba  gcc/fi
*** 6263,6272 ****
  85741de0b8ea9e109ee1355d60bfd397  gcc/flags.h
  4c030e20bb385d0d71edd6f9e1b647b0  gcc/fold-const-call.cc
  0b4405bca4b699887c6a47e1d25b216c  gcc/fold-const-call.h
! d79bc4b80952ea5aa928867119646566  gcc/fold-const.cc
  0ec02a37dbbe9cb267f0ea1263085ed3  gcc/fold-const.h
  764b231c53a63f6a622c187ac0d381d0  gcc/fold-mem-offsets.cc
! 3b91806cc5cf5cb0589a589be0bba290  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
--- 6264,6273 ----
  85741de0b8ea9e109ee1355d60bfd397  gcc/flags.h
  4c030e20bb385d0d71edd6f9e1b647b0  gcc/fold-const-call.cc
  0b4405bca4b699887c6a47e1d25b216c  gcc/fold-const-call.h
! 50b999b375e3a5a95a002f592e6d4514  gcc/fold-const.cc
  0ec02a37dbbe9cb267f0ea1263085ed3  gcc/fold-const.h
  764b231c53a63f6a622c187ac0d381d0  gcc/fold-mem-offsets.cc
! 46df1ccc7a764a5f482a5fe4fcb2d09b  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
*************** b211f0e83f64dd7af1ae1c02e8f6c78f  gcc/gi
*** 6550,6556 ****
  b7f2d2a1581d62bd760fe18e028954fe  gcc/ginclude/unwind-arm-common.h
  8d9ecf0d6ef93c79623ce1d27a32a2cb  gcc/ginclude/varargs.h
  e949ccd61b5eda0115c017b9f638225a  gcc/glimits.h
! 68edc87a79160aa950c3dbe16c523a07  gcc/go/ChangeLog
  b61d8a2887c33788f322082383ac88a3  gcc/go/Make-lang.in
  60ea054548c83c7f66170073f9f3e74c  gcc/go/README.gcc
  fc3aa9d328045b0971e06eac5b627662  gcc/go/config-lang.in
--- 6551,6557 ----
  b7f2d2a1581d62bd760fe18e028954fe  gcc/ginclude/unwind-arm-common.h
  8d9ecf0d6ef93c79623ce1d27a32a2cb  gcc/ginclude/varargs.h
  e949ccd61b5eda0115c017b9f638225a  gcc/glimits.h
! b1438bef085191d779678444cf99398f  gcc/go/ChangeLog
  b61d8a2887c33788f322082383ac88a3  gcc/go/Make-lang.in
  60ea054548c83c7f66170073f9f3e74c  gcc/go/README.gcc
  fc3aa9d328045b0971e06eac5b627662  gcc/go/config-lang.in
*************** cf0a44d67ef2094ff7b0a6fe8cfb4600  gcc/ip
*** 6714,6720 ****
  6be870b33158bb3c3a5b384401b73d9d  gcc/ipa-utils.cc
  1b3adda32a23d96454915564afd44757  gcc/ipa-utils.h
  e8fdd0fb4c0781c9b4e61b76ab303698  gcc/ipa-visibility.cc
! ed3caa191ea3399d582433dc0f2ddb09  gcc/ipa.cc
  2f84ec368b172642597dbc94650a54e9  gcc/ira-build.cc
  8ea2643892cc48a87ac4ac49ebcc8a9c  gcc/ira-color.cc
  9c6c7682ae19f9fa3d8b9ba1746b39b5  gcc/ira-conflicts.cc
--- 6715,6721 ----
  6be870b33158bb3c3a5b384401b73d9d  gcc/ipa-utils.cc
  1b3adda32a23d96454915564afd44757  gcc/ipa-utils.h
  e8fdd0fb4c0781c9b4e61b76ab303698  gcc/ipa-visibility.cc
! 0e1d906c3f0262784074bd48468f47d8  gcc/ipa.cc
  2f84ec368b172642597dbc94650a54e9  gcc/ira-build.cc
  8ea2643892cc48a87ac4ac49ebcc8a9c  gcc/ira-color.cc
  9c6c7682ae19f9fa3d8b9ba1746b39b5  gcc/ira-conflicts.cc
*************** c6ab645f373e1d6e9ddd212bfc3a95ba  gcc/lo
*** 6856,6868 ****
  d49cf408f9415ef037523414c6e80764  gcc/lower-subreg.h
  841cfef931adce1d98b9755eb3231569  gcc/lra-assigns.cc
  5d1aa184ea3e3c5990e02acbdc762f00  gcc/lra-coalesce.cc
! 9acd247578ba6c094677b43437a6da41  gcc/lra-constraints.cc
  2f34a2e53204408e2578f69fb831b0ac  gcc/lra-eliminations.cc
! 85acbbcbdffebc493023f27c4cbe388d  gcc/lra-int.h
  57ce9967bab48c81b11b698d319f4d8d  gcc/lra-lives.cc
  22cf0d7ee40c23d417d1d0a134ec0fe5  gcc/lra-remat.cc
  39b048a65c498c5357cb27a2ce50a4df  gcc/lra-spills.cc
! f65ba4df83cf84ac22d8c8b445382ddf  gcc/lra.cc
  7a689be5eced38293e966e1291a1d1b9  gcc/lra.h
  a2447b9f89d62f80177f9fa725d4749e  gcc/lto-cgraph.cc
  642fbdeaf8df2a150746f15ad409d071  gcc/lto-compress.cc
--- 6857,6869 ----
  d49cf408f9415ef037523414c6e80764  gcc/lower-subreg.h
  841cfef931adce1d98b9755eb3231569  gcc/lra-assigns.cc
  5d1aa184ea3e3c5990e02acbdc762f00  gcc/lra-coalesce.cc
! 9bc6994b654a9dd3ca7ecdd388c918a0  gcc/lra-constraints.cc
  2f34a2e53204408e2578f69fb831b0ac  gcc/lra-eliminations.cc
! ed7c49918557e8e7d34488711171abef  gcc/lra-int.h
  57ce9967bab48c81b11b698d319f4d8d  gcc/lra-lives.cc
  22cf0d7ee40c23d417d1d0a134ec0fe5  gcc/lra-remat.cc
  39b048a65c498c5357cb27a2ce50a4df  gcc/lra-spills.cc
! b9fcc1996ccb833f1d43c26a4c7f9cf6  gcc/lra.cc
  7a689be5eced38293e966e1291a1d1b9  gcc/lra.h
  a2447b9f89d62f80177f9fa725d4749e  gcc/lto-cgraph.cc
  642fbdeaf8df2a150746f15ad409d071  gcc/lto-compress.cc
*************** f9608e9005487c369e6c38949ab36fa1  gcc/m2
*** 7877,7883 ****
  2a18164ee5f162ac117e6fedb58158a2  gcc/machmode.def
  0c9209452a934f189aa0860038b3a65c  gcc/machmode.h
  197298337dae14fdd7ab928a1f03bec6  gcc/main.cc
! 4d5d646af3c4582f5ee545cbc0379d7d  gcc/match.pd
  b106a08a1793a5495dd87c412456484b  gcc/mcf.cc
  897c541ca992e145ad451c98941c7647  gcc/mem-stats-traits.h
  4f86eeea7af520ce0b773c1f2e34b5b4  gcc/mem-stats.h
--- 7878,7884 ----
  2a18164ee5f162ac117e6fedb58158a2  gcc/machmode.def
  0c9209452a934f189aa0860038b3a65c  gcc/machmode.h
  197298337dae14fdd7ab928a1f03bec6  gcc/main.cc
! 81aa55272f2775dcad2400173c81f124  gcc/match.pd
  b106a08a1793a5495dd87c412456484b  gcc/mcf.cc
  897c541ca992e145ad451c98941c7647  gcc/mem-stats-traits.h
  4f86eeea7af520ce0b773c1f2e34b5b4  gcc/mem-stats.h
*************** b2f9b18f946c2e60e4f6cba0ab2df54e  gcc/pe
*** 7980,7986 ****
  51380e9db88b682bc96a35cc4bce56a5  gcc/plugin.cc
  af6268dd53154434eb4c4d1c299e0ee2  gcc/plugin.def
  5678cfbc9cf98f9e69bee1118c787a42  gcc/plugin.h
! 822a81fb60a5e1cb1e1663ef015f9d2c  gcc/po/ChangeLog
  2c2fbc71d2acc1ddfb9fb9501458921b  gcc/po/EXCLUDES
  c5974911369d0bad48f42329deee1913  gcc/po/be.po
  aeca8daf3d86bb6aa6ec3a32dc4288d4  gcc/po/da.po
--- 7981,7987 ----
  51380e9db88b682bc96a35cc4bce56a5  gcc/plugin.cc
  af6268dd53154434eb4c4d1c299e0ee2  gcc/plugin.def
  5678cfbc9cf98f9e69bee1118c787a42  gcc/plugin.h
! 9a9191b1373bbd4a99b368df054c4612  gcc/po/ChangeLog
  2c2fbc71d2acc1ddfb9fb9501458921b  gcc/po/EXCLUDES
  c5974911369d0bad48f42329deee1913  gcc/po/be.po
  aeca8daf3d86bb6aa6ec3a32dc4288d4  gcc/po/da.po
*************** f612009c0dae0b9621d75ba76cdbdcea  gcc/po
*** 7989,7995 ****
  2e0cf84e6ba491d1d694d3e1a5fd2250  gcc/po/es.po
  7a6d51f7527e21e20156259c98cac705  gcc/po/exgettext
  d87f34867b0a2975834dea38388f14ae  gcc/po/fi.po
! 4fd2cd6f9a399e55d318b425c1a38050  gcc/po/fr.po
  4005c79864e5581593af05986c2fe32e  gcc/po/gcc.pot
  8c42df098218b77ac270c663ec1f779f  gcc/po/hr.po
  2ac2e5d625f381b33be26ad7a999fdbb  gcc/po/id.po
--- 7990,7996 ----
  2e0cf84e6ba491d1d694d3e1a5fd2250  gcc/po/es.po
  7a6d51f7527e21e20156259c98cac705  gcc/po/exgettext
  d87f34867b0a2975834dea38388f14ae  gcc/po/fi.po
! 31ada25c812dfe9e0ec5fdb54bf0a60a  gcc/po/fr.po
  4005c79864e5581593af05986c2fe32e  gcc/po/gcc.pot
  8c42df098218b77ac270c663ec1f779f  gcc/po/hr.po
  2ac2e5d625f381b33be26ad7a999fdbb  gcc/po/id.po
*************** d87f34867b0a2975834dea38388f14ae  gcc/po
*** 7998,8004 ****
  465c33e277c596f7da7c98986f3c9d71  gcc/po/nl.po
  129add1a4fc37c5acffdb868128eaab8  gcc/po/ru.po
  ba3d9819d0d6d40fcac6530a45c338ee  gcc/po/sr.po
! 8cbef9973f8774239fc5be32fae289a6  gcc/po/sv.po
  68206d7ec30d4dcbdd0157fc54ffa432  gcc/po/tr.po
  7908faec83e4ae8c0b1f3ac8aeec183d  gcc/po/uk.po
  6304893b915690328bf19fb051ca8859  gcc/po/vi.po
--- 7999,8005 ----
  465c33e277c596f7da7c98986f3c9d71  gcc/po/nl.po
  129add1a4fc37c5acffdb868128eaab8  gcc/po/ru.po
  ba3d9819d0d6d40fcac6530a45c338ee  gcc/po/sr.po
! 4ad7301a2034bdeea7cc1dffc8f13fb3  gcc/po/sv.po
  68206d7ec30d4dcbdd0157fc54ffa432  gcc/po/tr.po
  7908faec83e4ae8c0b1f3ac8aeec183d  gcc/po/uk.po
  6304893b915690328bf19fb051ca8859  gcc/po/vi.po
*************** ac7d33b09aee404c618a7d3574b98ea1  gcc/po
*** 8010,8016 ****
  8e1ad60e1364794de50c869dcc263271  gcc/poly-int.h
  a76391e64013dd91801b9ed642b3c817  gcc/postreload-gcse.cc
  ba4c53fadd2e92e3f30ae3b8a953c340  gcc/postreload.cc
! bb246998cb5fc94f4652c10de992f722  gcc/predict.cc
  94064e652fd0a138c0dc656a3d96a966  gcc/predict.def
  c6b043ce6b64f82009d2f3763b6360db  gcc/predict.h
  eb92f089fe1cc11940fb41c338d0b6be  gcc/prefix.cc
--- 8011,8017 ----
  8e1ad60e1364794de50c869dcc263271  gcc/poly-int.h
  a76391e64013dd91801b9ed642b3c817  gcc/postreload-gcse.cc
  ba4c53fadd2e92e3f30ae3b8a953c340  gcc/postreload.cc
! 93fa12f13036c5d9952405e984cc24cd  gcc/predict.cc
  94064e652fd0a138c0dc656a3d96a966  gcc/predict.def
  c6b043ce6b64f82009d2f3763b6360db  gcc/predict.h
  eb92f089fe1cc11940fb41c338d0b6be  gcc/prefix.cc
*************** a2f6c6250981e92b37bcd0b9e26f3e4c  gcc/rt
*** 8078,8092 ****
  3b355603e06cd41aa623bb1825681c3c  gcc/rtl-ssa/access-utils.h
  d33406fc284f7698dc08cb0d9e66f6ce  gcc/rtl-ssa/accesses.cc
  0d841dc8cb9b917713df3a7e505847c7  gcc/rtl-ssa/accesses.h
! 1760a5fce4e35684b8e59f8635b6bafc  gcc/rtl-ssa/blocks.cc
  8b5c9d7cc52410c30ee4a6d5ab70b075  gcc/rtl-ssa/blocks.h
  5cde2269552a7c21c0cf0ea191677f6f  gcc/rtl-ssa/change-utils.h
  f3e87a0023b856d08711692c25499feb  gcc/rtl-ssa/changes.cc
  7a1cab9d5d9fc3565371c693311cb6de  gcc/rtl-ssa/changes.h
  82782cb9a0b1d420ccdaeb45e17c49f5  gcc/rtl-ssa/functions.cc
! 0ea8d3099ebd0c7bb8686100a58069a0  gcc/rtl-ssa/functions.h
  b9205c8e82c85da2f7a035b090000f11  gcc/rtl-ssa/insn-utils.h
! 0b17b13c57ce905dc8a106033bcd56d4  gcc/rtl-ssa/insns.cc
  5675ab32e73f48abe40c4d985345b1d1  gcc/rtl-ssa/insns.h
  93f7cdc164ed1bff5e2d2492fb7deed3  gcc/rtl-ssa/internals.h
  b437011708852e18def6acbf8fc4e1b7  gcc/rtl-ssa/internals.inl
--- 8079,8093 ----
  3b355603e06cd41aa623bb1825681c3c  gcc/rtl-ssa/access-utils.h
  d33406fc284f7698dc08cb0d9e66f6ce  gcc/rtl-ssa/accesses.cc
  0d841dc8cb9b917713df3a7e505847c7  gcc/rtl-ssa/accesses.h
! 1fc53212b578a2db70679f5cf28f33b5  gcc/rtl-ssa/blocks.cc
  8b5c9d7cc52410c30ee4a6d5ab70b075  gcc/rtl-ssa/blocks.h
  5cde2269552a7c21c0cf0ea191677f6f  gcc/rtl-ssa/change-utils.h
  f3e87a0023b856d08711692c25499feb  gcc/rtl-ssa/changes.cc
  7a1cab9d5d9fc3565371c693311cb6de  gcc/rtl-ssa/changes.h
  82782cb9a0b1d420ccdaeb45e17c49f5  gcc/rtl-ssa/functions.cc
! 1d9e3601c2ed322fbec7674c7cf75326  gcc/rtl-ssa/functions.h
  b9205c8e82c85da2f7a035b090000f11  gcc/rtl-ssa/insn-utils.h
! 6b1c602802fb71d34e4807f74aef1860  gcc/rtl-ssa/insns.cc
  5675ab32e73f48abe40c4d985345b1d1  gcc/rtl-ssa/insns.h
  93f7cdc164ed1bff5e2d2492fb7deed3  gcc/rtl-ssa/internals.h
  b437011708852e18def6acbf8fc4e1b7  gcc/rtl-ssa/internals.inl
*************** ff662645190de703b9423727e52d659c  gcc/rt
*** 8110,8116 ****
  92e356710b1aae5aaabc8f47d6977fff  gcc/run-rtl-passes.cc
  f4eae48a3e90b34e88b5789e54f5f29a  gcc/run-rtl-passes.h
  add9bd82fcec23469a4d0f7df03d9589  gcc/rust/CONTRIBUTING.md
! 9593ece98950c104e46820c1cf307804  gcc/rust/ChangeLog
  22b3673f2e20b00a2fb62a9fa49ec4d3  gcc/rust/Make-lang.in
  f3527e161e6e2827d299c1a928ebe1c6  gcc/rust/README.md
  07b6198fd46568909422706f2d588e20  gcc/rust/ast/rust-ast-builder.cc
--- 8111,8117 ----
  92e356710b1aae5aaabc8f47d6977fff  gcc/run-rtl-passes.cc
  f4eae48a3e90b34e88b5789e54f5f29a  gcc/run-rtl-passes.h
  add9bd82fcec23469a4d0f7df03d9589  gcc/rust/CONTRIBUTING.md
! 22b7cd31be6a965f63b54894a51bf715  gcc/rust/ChangeLog
  22b3673f2e20b00a2fb62a9fa49ec4d3  gcc/rust/Make-lang.in
  f3527e161e6e2827d299c1a928ebe1c6  gcc/rust/README.md
  07b6198fd46568909422706f2d588e20  gcc/rust/ast/rust-ast-builder.cc
*************** b21c32de4ac41afaa112df92995fbc7b  gcc/ta
*** 8703,8709 ****
  bf20a6542e361b29f15f9f2b47d47e2f  gcc/targhooks.cc
  b1068b0d3d77d5a55802a29a9f8a08d7  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 716608e77a87ea9b1cf576c4bad6265b  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
--- 8704,8710 ----
  bf20a6542e361b29f15f9f2b47d47e2f  gcc/targhooks.cc
  b1068b0d3d77d5a55802a29a9f8a08d7  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 1fb0400e4fa250e660f5b8376e85395e  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
*************** e8c412b9eaf42745a7fc07cc52fd19af  gcc/te
*** 18143,18149 ****
  f2131bfa61003086112f4727e3acb289  gcc/testsuite/c-c++-common/analyzer/conditionals-pr98447-1.c
  90d538195723afedc20809c0e3299ea3  gcc/testsuite/c-c++-common/analyzer/conditionals-pr98447-2.c
  d7794ed91b592bdaaebd423b3d5d046d  gcc/testsuite/c-c++-common/analyzer/coreutils-cksum-pr108664.c
! 41577e8108f61dd2242681d7534b7d2b  gcc/testsuite/c-c++-common/analyzer/coreutils-group_number.c
  cc0f23b2ce68c195b7e03c19c98794a7  gcc/testsuite/c-c++-common/analyzer/coreutils-sum-pr108666.c
  155d36ab3fdd051347569701effe1700  gcc/testsuite/c-c++-common/analyzer/data-model-11.c
  ed3e5f87e61e0018134586c5a1a64feb  gcc/testsuite/c-c++-common/analyzer/data-model-12.c
--- 18144,18150 ----
  f2131bfa61003086112f4727e3acb289  gcc/testsuite/c-c++-common/analyzer/conditionals-pr98447-1.c
  90d538195723afedc20809c0e3299ea3  gcc/testsuite/c-c++-common/analyzer/conditionals-pr98447-2.c
  d7794ed91b592bdaaebd423b3d5d046d  gcc/testsuite/c-c++-common/analyzer/coreutils-cksum-pr108664.c
! a42e31835cb440aad70d530954f539ee  gcc/testsuite/c-c++-common/analyzer/coreutils-group_number.c
  cc0f23b2ce68c195b7e03c19c98794a7  gcc/testsuite/c-c++-common/analyzer/coreutils-sum-pr108666.c
  155d36ab3fdd051347569701effe1700  gcc/testsuite/c-c++-common/analyzer/data-model-11.c
  ed3e5f87e61e0018134586c5a1a64feb  gcc/testsuite/c-c++-common/analyzer/data-model-12.c
*************** aa884d944cf2bbf71c7c642a33b7244f  gcc/te
*** 19068,19073 ****
--- 19069,19075 ----
  6409b79dc5abde19a70909f1a884d018  gcc/testsuite/c-c++-common/cpp/pr93545-4.c
  53ddac2799c628f00a456708b4eab264  gcc/testsuite/c-c++-common/cpp/pr96323.c
  7b4c563757483bd5f5e1b37915f01b6d  gcc/testsuite/c-c++-common/cpp/pr97471.c
+ 0de1fcdab32c4259957dfd7cb2607fac  gcc/testsuite/c-c++-common/cpp/pr97991-1.c
  78b86e942f6ab90a6dd28fc081da8cbb  gcc/testsuite/c-c++-common/cpp/pragma-diagnostic-loc-2.c
  8778e50ab186dc2b484fc031c674edb6  gcc/testsuite/c-c++-common/cpp/pragma-diagnostic-loc.c
  f2e2a6171e51d284aef6b4356f338ad3  gcc/testsuite/c-c++-common/cpp/pragma-eof.c
*************** c544d34e1df7955e274df53b85725097  gcc/te
*** 28116,28121 ****
--- 28118,28124 ----
  e8e285d5f17f18710b7136f0f788f9c8  gcc/testsuite/g++.dg/cpp26/constexpr-eh15.C
  3b5f2464be3b6237317c355178b6abbf  gcc/testsuite/g++.dg/cpp26/constexpr-eh16.C
  65a22a49338fcb7526f2379bbc7d8666  gcc/testsuite/g++.dg/cpp26/constexpr-eh17.C
+ a6073e074c44b5f830037756b9110934  gcc/testsuite/g++.dg/cpp26/constexpr-eh18.C
  5dd3cceecaa6ec4f3aba7e8c298dc74c  gcc/testsuite/g++.dg/cpp26/constexpr-eh2.C
  4c13defc41912f8fa4785f3953df88ed  gcc/testsuite/g++.dg/cpp26/constexpr-eh3.C
  6ef0a812fa0528be79afea3ada17a5eb  gcc/testsuite/g++.dg/cpp26/constexpr-eh4.C
*************** d8e5e351c8023abfb93d35657ce2b584  gcc/te
*** 28203,28208 ****
--- 28206,28212 ----
  023f480b6fe6eb322955e11226585a32  gcc/testsuite/g++.dg/cpp26/expansion-stmt3.C
  5fb94c5ef1f906ede9ed5c73551cb2d1  gcc/testsuite/g++.dg/cpp26/expansion-stmt30.C
  b005ade0b8af8c8f0685f948a8651ab5  gcc/testsuite/g++.dg/cpp26/expansion-stmt31.C
+ b94ae032c2758e1cda2c6f6e583ac044  gcc/testsuite/g++.dg/cpp26/expansion-stmt32.C
  05972a123b20a66b9c7899c2bb0b5042  gcc/testsuite/g++.dg/cpp26/expansion-stmt4.C
  7cfc2afc603d55bfd66b320b3d190acd  gcc/testsuite/g++.dg/cpp26/expansion-stmt5.C
  8419176a2bf5898de53901daf6efe2a9  gcc/testsuite/g++.dg/cpp26/expansion-stmt6.C
*************** aed2a0a9cf898a444bd5803ebd1fd5fc  gcc/te
*** 28675,28684 ****
  f713831318164c8a8d53cee4f41a5feb  gcc/testsuite/g++.dg/cpp2a/concepts-pr98394.C
  47d56c0b8e4b2e304785aae26d0409fb  gcc/testsuite/g++.dg/cpp2a/concepts-pr98644.C
  7bff00217f0937919ad829a2aa4986de  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat1.C
! 494a9362815e7269cd14d3b6eb900c68  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat2.C
  c74823853141d61f8e8a8e1d3a3f8bd4  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat3.C
  58cbdb27d3cbc7ef7d656e1588509527  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat4.C
! a5dcc7f1104645e397389de9dc3d2362  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat5.C
  05d0c4aeef396d36ed2d0d824682b06c  gcc/testsuite/g++.dg/cpp2a/concepts-redecl1.C
  89a75de6ffea2b5931b15021369b2a4e  gcc/testsuite/g++.dg/cpp2a/concepts-requires1.C
  2a75164ac4ebdba51dd415fcd578a8f9  gcc/testsuite/g++.dg/cpp2a/concepts-requires10.C
--- 28679,28688 ----
  f713831318164c8a8d53cee4f41a5feb  gcc/testsuite/g++.dg/cpp2a/concepts-pr98394.C
  47d56c0b8e4b2e304785aae26d0409fb  gcc/testsuite/g++.dg/cpp2a/concepts-pr98644.C
  7bff00217f0937919ad829a2aa4986de  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat1.C
! b0679a6958bd99749db8630269b69a2c  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat2.C
  c74823853141d61f8e8a8e1d3a3f8bd4  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat3.C
  58cbdb27d3cbc7ef7d656e1588509527  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat4.C
! 068f4770bb6848b516017a203e505522  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat5.C
  05d0c4aeef396d36ed2d0d824682b06c  gcc/testsuite/g++.dg/cpp2a/concepts-redecl1.C
  89a75de6ffea2b5931b15021369b2a4e  gcc/testsuite/g++.dg/cpp2a/concepts-requires1.C
  2a75164ac4ebdba51dd415fcd578a8f9  gcc/testsuite/g++.dg/cpp2a/concepts-requires10.C
*************** d29bcca633bb639bebf16b846292cebc  gcc/te
*** 28775,28780 ****
--- 28779,28785 ----
  dcaf7dd2f1e98c3d3da49fbec7b5d2ab  gcc/testsuite/g++.dg/cpp2a/concepts-variadic1.C
  48e56d9773523969e244eb7e1261e6c1  gcc/testsuite/g++.dg/cpp2a/concepts-variadic2.C
  249b3f4302b45c107e3ce9d2aebc31b4  gcc/testsuite/g++.dg/cpp2a/concepts-variadic3.C
+ 16227ac96ffc620f5d64f7be301db195  gcc/testsuite/g++.dg/cpp2a/concepts-variadic4.C
  964df1291fcb4864e1cbee5cd3e2daaf  gcc/testsuite/g++.dg/cpp2a/concepts.C
  160297ff756513e092454f628e8488b8  gcc/testsuite/g++.dg/cpp2a/concepts1.C
  1deb98908cc4b11e53587a5a2210f89a  gcc/testsuite/g++.dg/cpp2a/concepts2.C
*************** bb58849ed5ff08289f5c5392f492c7f2  gcc/te
*** 29223,29228 ****
--- 29228,29236 ----
  d363d5590bc863dbb1f6bb96bad95b3c  gcc/testsuite/g++.dg/cpp2a/lambda-targ2.C
  4a6ffc2b771825c108a429a4faf02bcc  gcc/testsuite/g++.dg/cpp2a/lambda-targ20.C
  e20c87111262a5e61bd6b3d5b3c21beb  gcc/testsuite/g++.dg/cpp2a/lambda-targ21.C
+ cf4951735fc79d21719a1d9d147e601f  gcc/testsuite/g++.dg/cpp2a/lambda-targ22.C
+ cda34ab516f0f3b749efab4ba8f525af  gcc/testsuite/g++.dg/cpp2a/lambda-targ22a.C
+ c9c401dee234950a35f6baa7697a4559  gcc/testsuite/g++.dg/cpp2a/lambda-targ23.C
  d948ecca981f7c5de5ca48afc987ea36  gcc/testsuite/g++.dg/cpp2a/lambda-targ2a.C
  096118fef57f992a05319e3b6f8ba6a7  gcc/testsuite/g++.dg/cpp2a/lambda-targ3.C
  21c4749dcabd9a286db03db935f9cd86  gcc/testsuite/g++.dg/cpp2a/lambda-targ4.C
*************** c951a3e5bb4bc2d67ee9dcf55822ab1e  gcc/te
*** 29559,29565 ****
  4c3fe43b12a27162ef61531d3a01f9e4  gcc/testsuite/g++.dg/cpp2a/srcloc7.C
  dc5fdccda9bb74a8259751885239a45b  gcc/testsuite/g++.dg/cpp2a/srcloc8.C
  3cf98e82d56549304f8eada21a181a96  gcc/testsuite/g++.dg/cpp2a/srcloc9.C
! 2effe1c35234e9247f687208ff298fb8  gcc/testsuite/g++.dg/cpp2a/typedef1.C
  5de890e01a292e99b75abedf4b2aa561  gcc/testsuite/g++.dg/cpp2a/typename1.C
  da817b2e1901bc27f9d38ebf5e51459b  gcc/testsuite/g++.dg/cpp2a/typename10.C
  736ca6dbc6d6e66b218a41d3aaeec22a  gcc/testsuite/g++.dg/cpp2a/typename11.C
--- 29567,29573 ----
  4c3fe43b12a27162ef61531d3a01f9e4  gcc/testsuite/g++.dg/cpp2a/srcloc7.C
  dc5fdccda9bb74a8259751885239a45b  gcc/testsuite/g++.dg/cpp2a/srcloc8.C
  3cf98e82d56549304f8eada21a181a96  gcc/testsuite/g++.dg/cpp2a/srcloc9.C
! 84804685f4de259de28700f0e1eed24c  gcc/testsuite/g++.dg/cpp2a/typedef1.C
  5de890e01a292e99b75abedf4b2aa561  gcc/testsuite/g++.dg/cpp2a/typename1.C
  da817b2e1901bc27f9d38ebf5e51459b  gcc/testsuite/g++.dg/cpp2a/typename10.C
  736ca6dbc6d6e66b218a41d3aaeec22a  gcc/testsuite/g++.dg/cpp2a/typename11.C
*************** a3ef5649648039007c89bf5cb9fe814b  gcc/te
*** 32525,32531 ****
  38cc93e595d53663e7624f3bf745ba39  gcc/testsuite/g++.dg/ipa/devirt-20.C
  67e019ff1f3d279e2c6b5f223b061ebc  gcc/testsuite/g++.dg/ipa/devirt-21.C
  ef2c20211e1e4ece4ec9e3d8ea3d585f  gcc/testsuite/g++.dg/ipa/devirt-22.C
! e4bbbef263835020ccf2c62595fa7b76  gcc/testsuite/g++.dg/ipa/devirt-23.C
  1452587dc751d6f5ca96dbe317eb41db  gcc/testsuite/g++.dg/ipa/devirt-24.C
  8e1a95281390a20596d1470878312533  gcc/testsuite/g++.dg/ipa/devirt-25.C
  abf9c5109aa819804228db274d44a58c  gcc/testsuite/g++.dg/ipa/devirt-26.C
--- 32533,32539 ----
  38cc93e595d53663e7624f3bf745ba39  gcc/testsuite/g++.dg/ipa/devirt-20.C
  67e019ff1f3d279e2c6b5f223b061ebc  gcc/testsuite/g++.dg/ipa/devirt-21.C
  ef2c20211e1e4ece4ec9e3d8ea3d585f  gcc/testsuite/g++.dg/ipa/devirt-22.C
! 2592d96d2c48ecaded3e5add75feeb51  gcc/testsuite/g++.dg/ipa/devirt-23.C
  1452587dc751d6f5ca96dbe317eb41db  gcc/testsuite/g++.dg/ipa/devirt-24.C
  8e1a95281390a20596d1470878312533  gcc/testsuite/g++.dg/ipa/devirt-25.C
  abf9c5109aa819804228db274d44a58c  gcc/testsuite/g++.dg/ipa/devirt-26.C
*************** c00c06950f2ab5091059c09b8c43e900  gcc/te
*** 33747,33752 ****
--- 33755,33761 ----
  cb642b297719a8133fff6a8330998c3d  gcc/testsuite/g++.dg/modules/dep-3.C
  687e578a797b430dd89299946b47eb21  gcc/testsuite/g++.dg/modules/dep-4.H
  513d518822a90ec26a35dc6619af4345  gcc/testsuite/g++.dg/modules/dep-5.C
+ 44427c1d95e444fb79e9b02a389635ad  gcc/testsuite/g++.dg/modules/dep-6.C
  a523b04ab1811e6a7b5c26428897e155  gcc/testsuite/g++.dg/modules/depflags-f-MD.C
  c8a1eb4ced10a42d80ad249e890f366e  gcc/testsuite/g++.dg/modules/depflags-f.C
  80d9bef84b86ef3877494d9ab5a6045f  gcc/testsuite/g++.dg/modules/depflags-fi.C
*************** a1fd3a6a97a773f4f193235ad05dca1c  gcc/te
*** 37281,37286 ****
--- 37290,37296 ----
  db186235554be9b7c4c4cd1d64102448  gcc/testsuite/g++.dg/reflect/alignment_of2.C
  11bc606636185e720abfec102a446450  gcc/testsuite/g++.dg/reflect/annotations1.C
  e0ee95e9b95793ee4d57f8204bf8645d  gcc/testsuite/g++.dg/reflect/annotations10.C
+ f6da6bc220f84f52571fc202af3e6006  gcc/testsuite/g++.dg/reflect/annotations11.C
  34282065614c60c1eeb497cec04d2977  gcc/testsuite/g++.dg/reflect/annotations2.C
  fb8ce2f40d098f2bd078b7384d6665b6  gcc/testsuite/g++.dg/reflect/annotations3.C
  95036b72f565c8ac8e22eb21a94626f1  gcc/testsuite/g++.dg/reflect/annotations4.C
*************** bae6d6398266dd286951a779994c5fea  gcc/te
*** 37292,37298 ****
  92881a77a05ad9d04320fc70d49d0772  gcc/testsuite/g++.dg/reflect/anon1.C
  240095cc5fa8d5e850cc3b6a3df6cdf5  gcc/testsuite/g++.dg/reflect/anon2.C
  c43e40fe08389dac58e1fabc0937b315  gcc/testsuite/g++.dg/reflect/anon3.C
! 5ca05966c4107ac7f771071163056715  gcc/testsuite/g++.dg/reflect/anon4.C
  71a5a17d31dea5a7a7d60fd3b36453dc  gcc/testsuite/g++.dg/reflect/bases_of1.C
  50d204becc5a564d003524bbda54d480  gcc/testsuite/g++.dg/reflect/bases_of2.C
  a3ca02798bae6834626899e3f48626d9  gcc/testsuite/g++.dg/reflect/bases_of3.C
--- 37302,37308 ----
  92881a77a05ad9d04320fc70d49d0772  gcc/testsuite/g++.dg/reflect/anon1.C
  240095cc5fa8d5e850cc3b6a3df6cdf5  gcc/testsuite/g++.dg/reflect/anon2.C
  c43e40fe08389dac58e1fabc0937b315  gcc/testsuite/g++.dg/reflect/anon3.C
! 952c09f4c08d3854d99361fdfcff4fb9  gcc/testsuite/g++.dg/reflect/anon4.C
  71a5a17d31dea5a7a7d60fd3b36453dc  gcc/testsuite/g++.dg/reflect/bases_of1.C
  50d204becc5a564d003524bbda54d480  gcc/testsuite/g++.dg/reflect/bases_of2.C
  a3ca02798bae6834626899e3f48626d9  gcc/testsuite/g++.dg/reflect/bases_of3.C
*************** eb3f835094fc060a3320066f75665133  gcc/te
*** 37408,37413 ****
--- 37418,37424 ----
  b6e5358e929ecce99496e00535aeba9d  gcc/testsuite/g++.dg/reflect/error8.C
  9c8bebf2a51bdac66f56ebcd8d2e79b5  gcc/testsuite/g++.dg/reflect/error9.C
  b8eb86b029a2ffb0d23c96945ba35e78  gcc/testsuite/g++.dg/reflect/expansion-stmt1.C
+ d0c3aa9a3c90bdcdec43e03e5dbf0a42  gcc/testsuite/g++.dg/reflect/expansion-stmt2.C
  92058e6db958dd512a0f906581bd91a8  gcc/testsuite/g++.dg/reflect/expr1.C
  a8a15705ab8187b001c195f1cec551cf  gcc/testsuite/g++.dg/reflect/expr10.C
  dd2e7162c7d5dd2ca76a4c15861d9607  gcc/testsuite/g++.dg/reflect/expr11.C
*************** cb62b6f411eaa0edabe6a10520d7652c  gcc/te
*** 37423,37430 ****
--- 37434,37443 ----
  160b9d3b4135ae1cabc2c2562502ca2f  gcc/testsuite/g++.dg/reflect/expr7.C
  1cd7741d2f6f90710374d1931630135d  gcc/testsuite/g++.dg/reflect/expr8.C
  8fe2397dfdbd64875570160305cc0f58  gcc/testsuite/g++.dg/reflect/expr9.C
+ ae495996d548d703161c69615987ad3a  gcc/testsuite/g++.dg/reflect/extent1.C
  fc8eb9caec31ed43b28a325abfd37d2c  gcc/testsuite/g++.dg/reflect/extract1.C
  d06fc880f882040192ade82d9d976678  gcc/testsuite/g++.dg/reflect/extract10.C
+ e84593bf159c34f20e485a74c1b6a95e  gcc/testsuite/g++.dg/reflect/extract11.C
  44596b8acd054952983a5a4fb33bd17a  gcc/testsuite/g++.dg/reflect/extract2.C
  515a58bb25a97ee5979dc2cc0a4acce9  gcc/testsuite/g++.dg/reflect/extract3.C
  31ce562c358fd306cdee178e270282ea  gcc/testsuite/g++.dg/reflect/extract4.C
*************** d7bf4b2b4a12e0e7c5f568c235fe50c9  gcc/te
*** 37582,37587 ****
--- 37595,37601 ----
  6587073d195a9349db99c70b4f9a4f02  gcc/testsuite/g++.dg/reflect/member8.C
  33fa6f389e0fccc76ade8dfeb1535b4c  gcc/testsuite/g++.dg/reflect/member9.C
  d1fd504ae938ad7e3b0edbf6834ec3b4  gcc/testsuite/g++.dg/reflect/members_of1.C
+ 003961dd53b2e05e53a6b911f852ef9c  gcc/testsuite/g++.dg/reflect/members_of10.C
  689453102e4425f8d2c4ff89cb939595  gcc/testsuite/g++.dg/reflect/members_of2.C
  80a032eb31d0998f2d288e303356773a  gcc/testsuite/g++.dg/reflect/members_of3.C
  5ececa99994de569abffae1671b71870  gcc/testsuite/g++.dg/reflect/members_of4.C
*************** d769c20d76953f9e88aaec8b648608d2  gcc/te
*** 37642,37647 ****
--- 37656,37662 ----
  22cf22648a9e3d3b08f4ff8def822d38  gcc/testsuite/g++.dg/reflect/parameters_of5.C
  27f03672191efb3132b9a4258c69a3fc  gcc/testsuite/g++.dg/reflect/parameters_of6.C
  a51ba46fac5afc88adb4713e3d136a72  gcc/testsuite/g++.dg/reflect/parameters_of7.C
+ 0ee2cee54b894b3d12f09f8a07bc93e0  gcc/testsuite/g++.dg/reflect/parameters_of8.C
  d6715d284c87d041e08a5fbebff9821e  gcc/testsuite/g++.dg/reflect/parent_of1.C
  55769fcd329e50bcfdf1c40931b35db5  gcc/testsuite/g++.dg/reflect/parm1.C
  ee2a5065f194d0c1d1360c2d2a8f5d8b  gcc/testsuite/g++.dg/reflect/parm2.C
*************** deddb1584f584cf686cd42b793483827  gcc/te
*** 37717,37722 ****
--- 37732,37738 ----
  fb988bd3ed4b676491a6a1bc94c867aa  gcc/testsuite/g++.dg/reflect/substitute3.C
  e24c084d73cca9b28a4c473c5918117f  gcc/testsuite/g++.dg/reflect/substitute4.C
  127280869c2a6dcc31194aacecdbe006  gcc/testsuite/g++.dg/reflect/substitute5.C
+ 38ca28226f1eeb270c2ef69782415db2  gcc/testsuite/g++.dg/reflect/substitute6.C
  41d388bcacebad49d2c3fd3646f62c3e  gcc/testsuite/g++.dg/reflect/symbol_of1.C
  50aad9cdb1b735a5db8189b077851c47  gcc/testsuite/g++.dg/reflect/symbol_of2.C
  3c4a6b28fbbc43055df381d76f413b2f  gcc/testsuite/g++.dg/reflect/template_arguments_of1.C
*************** ae55d6e48a2ac8b72c938dc82c696408  gcc/te
*** 38573,38578 ****
--- 38589,38595 ----
  40f2052ca29ac45703070d7e1c57ce4d  gcc/testsuite/g++.dg/template/friend86.C
  8b5a278d3c02cae63edfc0733831aca7  gcc/testsuite/g++.dg/template/friend87.C
  caaef5f71ace9c745eacf4ef132c6647  gcc/testsuite/g++.dg/template/friend88.C
+ 99ddfedf4b85949e6b8e3db74361caa3  gcc/testsuite/g++.dg/template/friend89.C
  59b5bf61b7f6210d3cf3b9b45692794a  gcc/testsuite/g++.dg/template/friend9.C
  d5d24fc94d133229a10c5b13f44c253b  gcc/testsuite/g++.dg/template/func1.C
  363cfac4cb9c49757acf9e6f0861b62e  gcc/testsuite/g++.dg/template/func2.C
*************** fd8e483532e07909315ca8711ef4503b  gcc/te
*** 39765,39770 ****
--- 39782,39789 ----
  6f13a12612ea67402e5ee7928ab2f956  gcc/testsuite/g++.dg/torture/pr123820-1.C
  1aa558892fb81543beeef357c4f49d60  gcc/testsuite/g++.dg/torture/pr124086-1.C
  947406bbc75c3117568a96cd4a4cc34b  gcc/testsuite/g++.dg/torture/pr124130.C
+ 61fcf1bc001bfcf25117da95aaa8edd8  gcc/testsuite/g++.dg/torture/pr124135-1.C
+ 101facde39ac59f9b142786ef251d0ca  gcc/testsuite/g++.dg/torture/pr124135-2.C
  8e35f2bc9bda0c081ac5347d83e9f80c  gcc/testsuite/g++.dg/torture/pr124137.C
  161154ed9f6193a2a7da119e068c3f3f  gcc/testsuite/g++.dg/torture/pr27218.C
  a84e9fff95df4801f8e582fbc33303b8  gcc/testsuite/g++.dg/torture/pr30252.C
*************** bb04402a5286da0c2b2bd970e15a7c0a  gcc/te
*** 40870,40875 ****
--- 40889,40895 ----
  750c3d825061bd1ca9b4587c0081a7aa  gcc/testsuite/g++.dg/vect/vect-novector-pragma.cc
  c9f2a8124f076b5bb673e6fab2b06069  gcc/testsuite/g++.dg/vect/vect-novector-pragma_2.cc
  d755361dca7e8678de65cef4fd2ec24d  gcc/testsuite/g++.dg/vect/vect-pr107690.cc
+ 6ea043da31323bceea5e262689eb3373  gcc/testsuite/g++.dg/vect/vect-pr124037.cc
  0a23130ea4ce46e0a0236cd4d6c8e7fa  gcc/testsuite/g++.dg/vect/vect-uncounted-prolog-peel_1.cc
  27913e4564f67b015965c39a5afd64d0  gcc/testsuite/g++.dg/vect/vect.exp
  71d10a285587bb46cc1bf1ab339fa743  gcc/testsuite/g++.dg/warn/83895.C
*************** c8698b784efebd06777683e03d5bbfc7  gcc/te
*** 45189,45194 ****
--- 45209,45215 ----
  6bf6be8a46ca37d38164b2be2534e2c7  gcc/testsuite/g++.target/aarch64/pr119498.C
  47d08c40b71990fcfb466ef02b924211  gcc/testsuite/g++.target/aarch64/pr121290_1.C
  8e1e90695dc0c9fe994d520fb00bb0c8  gcc/testsuite/g++.target/aarch64/pr122890.C
+ cee7440840fa58ea5280af197f3054eb  gcc/testsuite/g++.target/aarch64/pr124126-1.C
  1755134bcb84bdbcfd658df7150649e0  gcc/testsuite/g++.target/aarch64/pr89752.C
  ba9d23bf9864be2b6061429c3faa49b7  gcc/testsuite/g++.target/aarch64/pr94052.C
  376b3a47b3ddd89e448a765321d0e622  gcc/testsuite/g++.target/aarch64/pr94514.C
*************** b7150a91a8e64c0a2f8d47a9f857fd6e  gcc/te
*** 49229,49238 ****
--- 49250,49261 ----
  e88a36f4cba0e85d5491d4b566b19508  gcc/testsuite/gcc.c-torture/execute/pr119428.c
  6cd050f88ca0f122ca3d062c32ebb9cf  gcc/testsuite/gcc.c-torture/execute/pr120630.c
  eda2af339f8dd266a02b2d61a5444a03  gcc/testsuite/gcc.c-torture/execute/pr120677.c
+ d41fd1ea09327fdf9b68f657aea5661c  gcc/testsuite/gcc.c-torture/execute/pr122000.c
  529fc2a1e92dc790d3766cd8554fc89c  gcc/testsuite/gcc.c-torture/execute/pr122943.c
  55bc090de1c97a85eaf8103e85c7cb36  gcc/testsuite/gcc.c-torture/execute/pr123753.c
  cb4c82184137c0933c1bae60a7df15bc  gcc/testsuite/gcc.c-torture/execute/pr123864.c
  95b7f2d687a5a5e2df1e09fad845a195  gcc/testsuite/gcc.c-torture/execute/pr123978.c
+ 256e8d04f36f265861609fbe23468388  gcc/testsuite/gcc.c-torture/execute/pr124358.c
  80c02c70a0b6b91b06942e395c34960f  gcc/testsuite/gcc.c-torture/execute/pr15262-1.c
  987c511633ad57d9f08d352eb9512819  gcc/testsuite/gcc.c-torture/execute/pr15262-2.c
  f7f514cfbd791b0c828e0710493b0910  gcc/testsuite/gcc.c-torture/execute/pr15262.c
*************** d4c1a7113a33d3c2137dc2348b102dc0  gcc/te
*** 56284,56290 ****
  43d5c0e314a3292dcc193afd2be619bf  gcc/testsuite/gcc.dg/ipa/iinline-5.c
  c7f0626e05751d9c20b2246acd8fee16  gcc/testsuite/gcc.dg/ipa/iinline-6.c
  9cdfc8f1f86ba8ace89ecfd4d060e448  gcc/testsuite/gcc.dg/ipa/iinline-7.c
! f46b592a81a9f58646c56f40d5705a05  gcc/testsuite/gcc.dg/ipa/iinline-attr.c
  b396e5f65410b5143443d020f227239a  gcc/testsuite/gcc.dg/ipa/iinline-cstagg-1.c
  5c4798c50999146427b6978726ba79ca  gcc/testsuite/gcc.dg/ipa/iinline-cstagg-2.c
  7dd63b0614a8121704ba4953d8c90e49  gcc/testsuite/gcc.dg/ipa/inline-1.c
--- 56307,56313 ----
  43d5c0e314a3292dcc193afd2be619bf  gcc/testsuite/gcc.dg/ipa/iinline-5.c
  c7f0626e05751d9c20b2246acd8fee16  gcc/testsuite/gcc.dg/ipa/iinline-6.c
  9cdfc8f1f86ba8ace89ecfd4d060e448  gcc/testsuite/gcc.dg/ipa/iinline-7.c
! 0a0236a87efbc4a56efbeb8d138eae73  gcc/testsuite/gcc.dg/ipa/iinline-attr.c
  b396e5f65410b5143443d020f227239a  gcc/testsuite/gcc.dg/ipa/iinline-cstagg-1.c
  5c4798c50999146427b6978726ba79ca  gcc/testsuite/gcc.dg/ipa/iinline-cstagg-2.c
  7dd63b0614a8121704ba4953d8c90e49  gcc/testsuite/gcc.dg/ipa/inline-1.c
*************** a03a5109c087726181cf7cc2241d1a9e  gcc/te
*** 57039,57045 ****
  46d188c0319bf02d664cc2c49c9df2ef  gcc/testsuite/gcc.dg/lto/simd-function_0.c
  eb3f74ee254d840e57e48daa509a2c8c  gcc/testsuite/gcc.dg/lto/tag-1_0.c
  0e59139568f3499106d8c9c073cb93a6  gcc/testsuite/gcc.dg/lto/tag-1_1.c
! ff72ee008248159f695f0ca37b881541  gcc/testsuite/gcc.dg/lto/toplevel-extended-asm-1_0.c
  0b8c0686fa89ada1fa46aaffc51ae2d6  gcc/testsuite/gcc.dg/lto/toplevel-extended-asm-1_1.c
  2f3085ffb05c46c86675a6fd661a7db8  gcc/testsuite/gcc.dg/lto/toplevel-extended-asm-2_0.c
  152671209927831994b7b3877d72b182  gcc/testsuite/gcc.dg/lto/toplevel-extended-asm-2_1.c
--- 57062,57068 ----
  46d188c0319bf02d664cc2c49c9df2ef  gcc/testsuite/gcc.dg/lto/simd-function_0.c
  eb3f74ee254d840e57e48daa509a2c8c  gcc/testsuite/gcc.dg/lto/tag-1_0.c
  0e59139568f3499106d8c9c073cb93a6  gcc/testsuite/gcc.dg/lto/tag-1_1.c
! d3373213fac75fe8c0cf9a95609aee57  gcc/testsuite/gcc.dg/lto/toplevel-extended-asm-1_0.c
  0b8c0686fa89ada1fa46aaffc51ae2d6  gcc/testsuite/gcc.dg/lto/toplevel-extended-asm-1_1.c
  2f3085ffb05c46c86675a6fd661a7db8  gcc/testsuite/gcc.dg/lto/toplevel-extended-asm-2_0.c
  152671209927831994b7b3877d72b182  gcc/testsuite/gcc.dg/lto/toplevel-extended-asm-2_1.c
*************** d9f2439f176b4f73afa0c30baa468855  gcc/te
*** 57518,57524 ****
  72712f41dcc921ba1827000fc0809a9c  gcc/testsuite/gcc.dg/pie-link.c
  000d3a6c8dca7e54f5be771190d10f29  gcc/testsuite/gcc.dg/pie-static-1.c
  be052bceddbf752586b645bc9e048e9c  gcc/testsuite/gcc.dg/pie-static-2.c
! 29be1b46e8b40a94185f18ca9191d25f  gcc/testsuite/gcc.dg/plugin/analyzer_cpython_plugin.cc
  5867991ade2460ff758bf1c9acb53ea5  gcc/testsuite/gcc.dg/plugin/analyzer_gil_plugin.cc
  5ca0a78bc13a9f93219a600bd3f503b5  gcc/testsuite/gcc.dg/plugin/analyzer_kernel_plugin.cc
  03b55fa47d8cb58f8a5312a7e01558f2  gcc/testsuite/gcc.dg/plugin/analyzer_known_fns_plugin.cc
--- 57541,57547 ----
  72712f41dcc921ba1827000fc0809a9c  gcc/testsuite/gcc.dg/pie-link.c
  000d3a6c8dca7e54f5be771190d10f29  gcc/testsuite/gcc.dg/pie-static-1.c
  be052bceddbf752586b645bc9e048e9c  gcc/testsuite/gcc.dg/pie-static-2.c
! b23c1e5355cb757c15f1583734836933  gcc/testsuite/gcc.dg/plugin/analyzer_cpython_plugin.cc
  5867991ade2460ff758bf1c9acb53ea5  gcc/testsuite/gcc.dg/plugin/analyzer_gil_plugin.cc
  5ca0a78bc13a9f93219a600bd3f503b5  gcc/testsuite/gcc.dg/plugin/analyzer_kernel_plugin.cc
  03b55fa47d8cb58f8a5312a7e01558f2  gcc/testsuite/gcc.dg/plugin/analyzer_known_fns_plugin.cc
*************** b975ebfa27ac446e553bacbb75421590  gcc/te
*** 58397,58402 ****
--- 58420,58426 ----
  ea90b28181a941740c845e0095310a27  gcc/testsuite/gcc.dg/pr122200.c
  47e5eee5a7b9e8a561523488f8af584f  gcc/testsuite/gcc.dg/pr122343-1.c
  e6de60b5642934aef50f416afd0dfef5  gcc/testsuite/gcc.dg/pr122348.c
+ 97e3ae8b831374d54e4e70a229baa234  gcc/testsuite/gcc.dg/pr122572.c
  afbbdc9160c7bbb463b8a9a0ccecc1ec  gcc/testsuite/gcc.dg/pr122756.c
  6f902818ec608b0949c72df134c134a3  gcc/testsuite/gcc.dg/pr122773.c
  7344e7d40edaaaf0a7feba4fc50f3e85  gcc/testsuite/gcc.dg/pr122898.c
*************** a7854fc3636527bc932319df4a19bc42  gcc/te
*** 58415,58420 ****
--- 58439,58446 ----
  785eb6e7b2c08f02c9e8a5f33f827f1a  gcc/testsuite/gcc.dg/pr123309.c
  42c347a411cbc63b24f2602bf954a4b7  gcc/testsuite/gcc.dg/pr123314.c
  afeafc726f9068066b4e782197455056  gcc/testsuite/gcc.dg/pr123319.c
+ abcd5a197963ed0347e0d79e6d9ce62f  gcc/testsuite/gcc.dg/pr123356-1.c
+ ce83c5e57a56f41479e8822e32d633ea  gcc/testsuite/gcc.dg/pr123356-2.c
  3e218010f127737b8ec6efbf8cb00273  gcc/testsuite/gcc.dg/pr123431.c
  4288ef3d117ee2b6aabf0d6303eeb663  gcc/testsuite/gcc.dg/pr123435-1.c
  4e3fe4e93ab76bd43ab7833b477c70e9  gcc/testsuite/gcc.dg/pr123435-2.c
*************** b64bff50aa325d3cdf648a6b7fec2e46  gcc/te
*** 58428,58433 ****
--- 58454,58460 ----
  1d51dc92bcea9d1f45d53070aed9c180  gcc/testsuite/gcc.dg/pr123672.c
  46c8447cd9ed9e727c11f1f0d3e8967d  gcc/testsuite/gcc.dg/pr123716.c
  01c4bfafe1ef8627df22f4a8e2581122  gcc/testsuite/gcc.dg/pr123803-1.c
+ c862a5d1aff47e4a5a9bc1b257f3fd19  gcc/testsuite/gcc.dg/pr123856.c
  5cd501fa005281d9c622810307478c79  gcc/testsuite/gcc.dg/pr123882.c
  f402be89e4891c76c691c8144fe168f7  gcc/testsuite/gcc.dg/pr124138.c
  bc5ddfbbc46f4e0cce1629d1b58d3090  gcc/testsuite/gcc.dg/pr12603.c
*************** c66363249ca43baee9f09bde5baeb896  gcc/te
*** 61135,61140 ****
--- 61162,61168 ----
  6c551fbb45a2e62474fcd9aa76cc7676  gcc/testsuite/gcc.dg/strub-internal-volatile.c
  f863f39bb99153211219b4664754af40  gcc/testsuite/gcc.dg/strub-pr118007.c
  e1737f9100fe39030ff4b356bc6ff29e  gcc/testsuite/gcc.dg/struct-alias-1.c
+ edef350b4a9e0e8719343e4da222a540  gcc/testsuite/gcc.dg/struct-alias-2.c
  756d07d22a151e89582543f5a88bda9f  gcc/testsuite/gcc.dg/struct-by-value-1.c
  fff906a27910e082e50f16054f4642c4  gcc/testsuite/gcc.dg/struct-by-value-2.c
  690c0c9a2bb5e991b2ad555aa009a37c  gcc/testsuite/gcc.dg/struct-empty-1.c
*************** d41266e6594db1994e416e7a7353751e  gcc/te
*** 62218,62223 ****
--- 62246,62252 ----
  c06f548f435382c42c50e8e66b702266  gcc/testsuite/gcc.dg/torture/pr121422-2.c
  0646579839fceb4f511ae3c6f4122d62  gcc/testsuite/gcc.dg/torture/pr121478-1.c
  f42b1c4e861e4207759994e34bbd715d  gcc/testsuite/gcc.dg/torture/pr121514.c
+ c2d31caef52166d51e81e4dc165eda16  gcc/testsuite/gcc.dg/torture/pr121649.c
  65afbddf71e988e03a780ba874f578fb  gcc/testsuite/gcc.dg/torture/pr121656.c
  ce9e02c12e351b909cd41d27cbe670cc  gcc/testsuite/gcc.dg/torture/pr121661-1.c
  8c70b765139663212d50df6e388155b7  gcc/testsuite/gcc.dg/torture/pr121695-1.c
*************** c6c07c813f67e0f94f1352f2810dfcff  gcc/te
*** 62271,62276 ****
--- 62300,62306 ----
  846de4745dc42cf6d9abe36308df2301  gcc/testsuite/gcc.dg/torture/pr123887-2.c
  45e84720260c50c6a2acdec6f8eec9ca  gcc/testsuite/gcc.dg/torture/pr123887.c
  e551c09a78d645c98f9a47869b65d718  gcc/testsuite/gcc.dg/torture/pr123994.c
+ 015d558dd16860f33d586dedd3cddfd9  gcc/testsuite/gcc.dg/torture/pr124041.c
  3512b1f432642c2b26467b9236415c88  gcc/testsuite/gcc.dg/torture/pr124062-1.c
  c1c484a49281243452ee6209dd770016  gcc/testsuite/gcc.dg/torture/pr124108.c
  d4f9bc1a728b13f9940b71ab03cc40fd  gcc/testsuite/gcc.dg/torture/pr124132.c
*************** d2e1860fa8199fa9cae01ffe45caa0c0  gcc/te
*** 63388,63394 ****
  d870c565ecc3624fb4fbcb1510c36484  gcc/testsuite/gcc.dg/torture/tree-loop-1.c
  95f12088e6a4e2a5036a44816c58215b  gcc/testsuite/gcc.dg/torture/type-generic-1.c
  bd588e9316f28797985023db337c730b  gcc/testsuite/gcc.dg/torture/va-arg-25.c
! 5c82e599e9517c158609d3871bb6ab3f  gcc/testsuite/gcc.dg/torture/vec-cvt-1.c
  70a7b1e7d786a67e8b07f4d2d0baba21  gcc/testsuite/gcc.dg/torture/vect-bool-1.c
  d78a2ef37d672306b0b94ccae92d42cf  gcc/testsuite/gcc.dg/torture/vect-permute-ice.c
  b8ce84a799f856b87c466889006803da  gcc/testsuite/gcc.dg/torture/vector-1.c
--- 63418,63424 ----
  d870c565ecc3624fb4fbcb1510c36484  gcc/testsuite/gcc.dg/torture/tree-loop-1.c
  95f12088e6a4e2a5036a44816c58215b  gcc/testsuite/gcc.dg/torture/type-generic-1.c
  bd588e9316f28797985023db337c730b  gcc/testsuite/gcc.dg/torture/va-arg-25.c
! a2fa4a55ce8fbbb549f006c693524abb  gcc/testsuite/gcc.dg/torture/vec-cvt-1.c
  70a7b1e7d786a67e8b07f4d2d0baba21  gcc/testsuite/gcc.dg/torture/vect-bool-1.c
  d78a2ef37d672306b0b94ccae92d42cf  gcc/testsuite/gcc.dg/torture/vect-permute-ice.c
  b8ce84a799f856b87c466889006803da  gcc/testsuite/gcc.dg/torture/vector-1.c
*************** b6636fcf606d4b2a9b3c129b082bc808  gcc/te
*** 66168,66173 ****
--- 66198,66208 ----
  3325507ff87bcf4f63df3972ec6895c4  gcc/testsuite/gcc.dg/ubsan/ipa-icf-1.c
  20138e45bcf86067b02f18ee36d2a451  gcc/testsuite/gcc.dg/ubsan/object-size-9.c
  4e0da97c15afa52d7e5b234e4f20fb83  gcc/testsuite/gcc.dg/ubsan/object-size-dyn.c
+ ff67662e443c4c2342a61fcc8b49fa51  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-char.c
+ a54b7ba09da80c0c34480370f680bd80  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-float.c
+ 6347b95d14e1d49cc381a4e01ce31162  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-struct.c
+ a1ffc0a57c0651fd28b468f33372ff64  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-union.c
+ e996be05f2813b3912182783baab0bc8  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230.c
  05bb20a3d7386d43eb1e3dd852eeffe3  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-2.c
  9a2a9a3d06ff9ff7cb6952d4035bdbe0  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-3.c
  90a10543424a4e0854a58f9c2eaea888  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-4.c
*************** bc23526547bfbe3d5724aba7cd30e796  gcc/te
*** 66549,66555 ****
  282e214d76f206f19be94906193df2d5  gcc/testsuite/gcc.dg/vect/bb-slp-54.c
  26ea60176ceb55d6a9f68d55da12eead  gcc/testsuite/gcc.dg/vect/bb-slp-55.c
  f6f8e2090f5d8d3cd0224f32d3592771  gcc/testsuite/gcc.dg/vect/bb-slp-56.c
! a6375b757b6e1250b67fba30647311fa  gcc/testsuite/gcc.dg/vect/bb-slp-57.c
  1e9c87c5632512dcac49bac1a9a3fb59  gcc/testsuite/gcc.dg/vect/bb-slp-58.c
  f98c36a85842c3528928d9455929dfcf  gcc/testsuite/gcc.dg/vect/bb-slp-59.c
  70097c9bab004cdd540c4469854ec47f  gcc/testsuite/gcc.dg/vect/bb-slp-6.c
--- 66584,66590 ----
  282e214d76f206f19be94906193df2d5  gcc/testsuite/gcc.dg/vect/bb-slp-54.c
  26ea60176ceb55d6a9f68d55da12eead  gcc/testsuite/gcc.dg/vect/bb-slp-55.c
  f6f8e2090f5d8d3cd0224f32d3592771  gcc/testsuite/gcc.dg/vect/bb-slp-56.c
! f93b02d31aed00cc3e4e8f9ee580d661  gcc/testsuite/gcc.dg/vect/bb-slp-57.c
  1e9c87c5632512dcac49bac1a9a3fb59  gcc/testsuite/gcc.dg/vect/bb-slp-58.c
  f98c36a85842c3528928d9455929dfcf  gcc/testsuite/gcc.dg/vect/bb-slp-59.c
  70097c9bab004cdd540c4469854ec47f  gcc/testsuite/gcc.dg/vect/bb-slp-6.c
*************** b63209d5f0331da4f3a28d32c2d7ae4a  gcc/te
*** 66700,66706 ****
  54eb093dbdffbcd90c078ffda3d3000a  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-half-float.c
  93b8b2dbb2616c94964b483223d953e4  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-double.c
  f665de684a4402a83ad5818e28d6e5a9  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-float.c
! b0e762a990e73a1498f505307af782d6  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-half-float.c
  df707465bb7e4b000207abad1e61b5e2  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-double.c
  8b50a783b711fe688d16139298fd6541  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-float.c
  57e15b7ef9d601bd655447090b2bb7d3  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-half-float.c
--- 66735,66741 ----
  54eb093dbdffbcd90c078ffda3d3000a  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-half-float.c
  93b8b2dbb2616c94964b483223d953e4  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-double.c
  f665de684a4402a83ad5818e28d6e5a9  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-float.c
! 71f906ad3b08f012d600d3888982a90e  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-half-float.c
  df707465bb7e4b000207abad1e61b5e2  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-double.c
  8b50a783b711fe688d16139298fd6541  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-float.c
  57e15b7ef9d601bd655447090b2bb7d3  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-half-float.c
*************** efc5db1b97ea06d470c57048d8966ea1  gcc/te
*** 68537,68542 ****
--- 68572,68578 ----
  8d72fe60d77b174c40a9709fbc10c86b  gcc/testsuite/gcc.dg/vect/vect-pr123755.c
  71a5a3f0c2e34ed3e033a36a47f5cf20  gcc/testsuite/gcc.dg/vect/vect-pr123756.c
  86a15a6fc01f17ec534cc4e8962c430f  gcc/testsuite/gcc.dg/vect/vect-pr123983.c
+ 6e7e37674ce24845e8e616543cc88fa6  gcc/testsuite/gcc.dg/vect/vect-pr124037.c
  464c872c62ad2fc5d241ed918e0cf5de  gcc/testsuite/gcc.dg/vect/vect-pr61247.c
  4d57df9e3b3522c9f1a6707c05f1da45  gcc/testsuite/gcc.dg/vect/vect-pr69848.c
  3a3a316ff2f2496494ecb0bd77d61aad  gcc/testsuite/gcc.dg/vect/vect-pre-interact.c
*************** b6aeb022dde69e8ffe448352fd61d3bd  gcc/te
*** 68615,68621 ****
  4ac381c0ce01711ae42fa052dd047242  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16b.c
  3f79364b1434591b07c839635489cfd3  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16c.c
  ca6e771116f4437958e97e625ac80a4f  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8a.c
! be1416228cbe9615f3cd5a04f1e761c7  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8b.c
  594729e48529b6e77fd028ff43ccf9cf  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8c.c
  f2115c849db56b36f9016249488854e1  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-slp-1.c
  036d9ff842e9f175b38e691d0d35a492  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u16a.c
--- 68651,68657 ----
  4ac381c0ce01711ae42fa052dd047242  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16b.c
  3f79364b1434591b07c839635489cfd3  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16c.c
  ca6e771116f4437958e97e625ac80a4f  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8a.c
! 94c3a4b110737f6d4ecadd37f16062de  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8b.c
  594729e48529b6e77fd028ff43ccf9cf  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8c.c
  f2115c849db56b36f9016249488854e1  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-slp-1.c
  036d9ff842e9f175b38e691d0d35a492  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u16a.c
*************** bd52e3921544e1711ab57051060881cb  gcc/te
*** 68642,68648 ****
  6679dbda60426ef7dff489665a6e4cfc  gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2a.c
  09b1ae89a1a12ffd0a4298ede5d16d67  gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2b-big-array.c
  0286cd7b14fa72279d00b58b4ca208c9  gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2b.c
! 3cdb53796ba9ac625a2f405dd5838c04  gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2c.c
  427dcb0ed4cb20c8579fd8447ff07df3  gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-3.c
  a97648332804477d3b1a53fb5ddfa560  gcc/testsuite/gcc.dg/vect/vect-reduc-sad-1.c
  cc77fc24b5c39d53318d789666b5c9d0  gcc/testsuite/gcc.dg/vect/vect-reduc-sad-2.c
--- 68678,68684 ----
  6679dbda60426ef7dff489665a6e4cfc  gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2a.c
  09b1ae89a1a12ffd0a4298ede5d16d67  gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2b-big-array.c
  0286cd7b14fa72279d00b58b4ca208c9  gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2b.c
! 9241d4a10e702b2c5c8623b66351fafd  gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2c.c
  427dcb0ed4cb20c8579fd8447ff07df3  gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-3.c
  a97648332804477d3b1a53fb5ddfa560  gcc/testsuite/gcc.dg/vect/vect-reduc-sad-1.c
  cc77fc24b5c39d53318d789666b5c9d0  gcc/testsuite/gcc.dg/vect/vect-reduc-sad-2.c
*************** b968fcc4d85aae78066422161712adf6  gcc/te
*** 69172,69178 ****
  e849b1f9c287a448bf8c2017ed97f8af  gcc/testsuite/gcc.misc-tests/gcov-28.c
  298b7a4aa97865c16d5df3d22765e4ad  gcc/testsuite/gcc.misc-tests/gcov-29.c
  bfde4845f4a814d2ee6c2745349086cc  gcc/testsuite/gcc.misc-tests/gcov-3.c
! db84bdb59baf6710656536c6ee8439dc  gcc/testsuite/gcc.misc-tests/gcov-30.c
  13e63323e5ef1451f30fd4147d4fe687  gcc/testsuite/gcc.misc-tests/gcov-31.c
  5167fb7d00d3ad6eb4b44556fcd02729  gcc/testsuite/gcc.misc-tests/gcov-32.c
  36e6bfa6f1fa471f408919b16be06d89  gcc/testsuite/gcc.misc-tests/gcov-33.c
--- 69208,69214 ----
  e849b1f9c287a448bf8c2017ed97f8af  gcc/testsuite/gcc.misc-tests/gcov-28.c
  298b7a4aa97865c16d5df3d22765e4ad  gcc/testsuite/gcc.misc-tests/gcov-29.c
  bfde4845f4a814d2ee6c2745349086cc  gcc/testsuite/gcc.misc-tests/gcov-3.c
! 76667198561bcf4ba7a75aef4b55d87b  gcc/testsuite/gcc.misc-tests/gcov-30.c
  13e63323e5ef1451f30fd4147d4fe687  gcc/testsuite/gcc.misc-tests/gcov-31.c
  5167fb7d00d3ad6eb4b44556fcd02729  gcc/testsuite/gcc.misc-tests/gcov-32.c
  36e6bfa6f1fa471f408919b16be06d89  gcc/testsuite/gcc.misc-tests/gcov-33.c
*************** d2975f7c701c2a4ea6b0a9d184d948aa  gcc/te
*** 70760,70766 ****
  6a36a3923a86bb78a9b80e79c524c20f  gcc/testsuite/gcc.target/aarch64/min_plus_6.c
  dca9505b42b2f6c7239de3ce44690e1e  gcc/testsuite/gcc.target/aarch64/min_plus_7.c
  5e88c7749f96e67a7b8fcee82a864c48  gcc/testsuite/gcc.target/aarch64/mingw/long_double_size.c
! 983ecfefd9c90d4c0c6096e8f1144b03  gcc/testsuite/gcc.target/aarch64/mingw/mingw.exp
  7cfd292a52f5e9954493826946105c32  gcc/testsuite/gcc.target/aarch64/mingw/variadic_hfa.c
  7b2c336fd8c7f0fe38dd21823360a36c  gcc/testsuite/gcc.target/aarch64/mingw/variadic_hva.c
  5ae56c00b38446fe95b7db31dae48056  gcc/testsuite/gcc.target/aarch64/mingw/variadic_int.c
--- 70796,70803 ----
  6a36a3923a86bb78a9b80e79c524c20f  gcc/testsuite/gcc.target/aarch64/min_plus_6.c
  dca9505b42b2f6c7239de3ce44690e1e  gcc/testsuite/gcc.target/aarch64/min_plus_7.c
  5e88c7749f96e67a7b8fcee82a864c48  gcc/testsuite/gcc.target/aarch64/mingw/long_double_size.c
! d4ac8ae270bd6cc66c3f1a3fd58864e9  gcc/testsuite/gcc.target/aarch64/mingw/mingw.exp
! aac5b0a2d815cfee6d6e67caa6c7e72a  gcc/testsuite/gcc.target/aarch64/mingw/minimal_new_del.C
  7cfd292a52f5e9954493826946105c32  gcc/testsuite/gcc.target/aarch64/mingw/variadic_hfa.c
  7b2c336fd8c7f0fe38dd21823360a36c  gcc/testsuite/gcc.target/aarch64/mingw/variadic_hva.c
  5ae56c00b38446fe95b7db31dae48056  gcc/testsuite/gcc.target/aarch64/mingw/variadic_int.c
*************** b15614b849a2403ba76800ef1356aab5  gcc/te
*** 71130,71137 ****
--- 71167,71177 ----
  95306727ea8db0e2fdb8e199f754c587  gcc/testsuite/gcc.target/aarch64/pr123285-1.c
  3525a5777032197cdd1e39b2aad94c29  gcc/testsuite/gcc.target/aarch64/pr123294-1.c
  085f7e2087fb0cf8d5d9a44259bb616c  gcc/testsuite/gcc.target/aarch64/pr123548.c
+ def5c2749854b129e22c1e5c9a817159  gcc/testsuite/gcc.target/aarch64/pr123786.c
  d5b3fbe2571cb9f95ff3b80e54a79a15  gcc/testsuite/gcc.target/aarch64/pr123791.c
  0fb432038c1a084913bbbe8d8d8b8bd8  gcc/testsuite/gcc.target/aarch64/pr123792.c
+ a588c84982135f60225d2a017f7b53df  gcc/testsuite/gcc.target/aarch64/pr124078-1.c
+ 3416e11e7fd77f36803f713303e6145a  gcc/testsuite/gcc.target/aarch64/pr124167.c
  9adb42733d9f5e2b1f2dbb364b62100d  gcc/testsuite/gcc.target/aarch64/pr37780_1.c
  e668fb9e0d32efadd671247467dc90db  gcc/testsuite/gcc.target/aarch64/pr58460.c
  9023f817c07ddec673c5b546525fc184  gcc/testsuite/gcc.target/aarch64/pr60034.c
*************** ad7292efdc490279906e7c95bdda09d7  gcc/te
*** 78858,78867 ****
  c65022a81cf8898ea37c82f9a6fe227f  gcc/testsuite/gcc.target/arm/acle/stc2l.c
  fc648f69779c2ae9f4075ca8aed84b4f  gcc/testsuite/gcc.target/arm/acle/stcl.c
  040dfdd8abd27c81f014da36e605a1ca  gcc/testsuite/gcc.target/arm/addr-modes-float.c
! e83f97202504a386d4e913ce29128f75  gcc/testsuite/gcc.target/arm/addr-modes-int.c
  d21ea73439704c16e82e0898ae8bc79e  gcc/testsuite/gcc.target/arm/addr-modes.h
! c99e8c6f6d97bb7edb8dc7d1102978c7  gcc/testsuite/gcc.target/arm/aes-fuse-1.c
! ad025c91232cb7114b15020e9a7c7aaa  gcc/testsuite/gcc.target/arm/aes-fuse-2.c
  beeedfa6811e6847c3cf97dc8034edc6  gcc/testsuite/gcc.target/arm/aes_xor_combine.c
  4c670413ffa35c00c8cf86a9eda18d8b  gcc/testsuite/gcc.target/arm/anddi3-opt.c
  dfc4bf650d099d2aff3f9e5f3d4b62ac  gcc/testsuite/gcc.target/arm/anddi3-opt2.c
--- 78898,78907 ----
  c65022a81cf8898ea37c82f9a6fe227f  gcc/testsuite/gcc.target/arm/acle/stc2l.c
  fc648f69779c2ae9f4075ca8aed84b4f  gcc/testsuite/gcc.target/arm/acle/stcl.c
  040dfdd8abd27c81f014da36e605a1ca  gcc/testsuite/gcc.target/arm/addr-modes-float.c
! b604cc7251da4bfb8a20a095cd4444c8  gcc/testsuite/gcc.target/arm/addr-modes-int.c
  d21ea73439704c16e82e0898ae8bc79e  gcc/testsuite/gcc.target/arm/addr-modes.h
! 22aa6ac448a2401f8d5141e8c3cab826  gcc/testsuite/gcc.target/arm/aes-fuse-1.c
! fa423ed9adef04f77c3e87ee2b99d233  gcc/testsuite/gcc.target/arm/aes-fuse-2.c
  beeedfa6811e6847c3cf97dc8034edc6  gcc/testsuite/gcc.target/arm/aes_xor_combine.c
  4c670413ffa35c00c8cf86a9eda18d8b  gcc/testsuite/gcc.target/arm/anddi3-opt.c
  dfc4bf650d099d2aff3f9e5f3d4b62ac  gcc/testsuite/gcc.target/arm/anddi3-opt2.c
*************** b623510ec705d6b7193e2c0e2a0f5f94  gcc/te
*** 78960,78978 ****
  ddf5f8837478e164c620abb8c7ac47ca  gcc/testsuite/gcc.target/arm/bf16_dup.c
  6e41b96954872461a57e818eb21c53b9  gcc/testsuite/gcc.target/arm/bf16_reinterpret.c
  16b8dfe53a0a7665d068bc910c72ced3  gcc/testsuite/gcc.target/arm/bfloat16_scalar_1_1.c
! bd5ec5e2db0882814e63c4239cc0bf29  gcc/testsuite/gcc.target/arm/bfloat16_scalar_1_2.c
  0c2940f05ea77e9f0bdcba867434e70a  gcc/testsuite/gcc.target/arm/bfloat16_scalar_2_1.c
! cb038f195fa6428125fcfa17e4b0cfb4  gcc/testsuite/gcc.target/arm/bfloat16_scalar_2_2.c
  16b8dfe53a0a7665d068bc910c72ced3  gcc/testsuite/gcc.target/arm/bfloat16_scalar_3_1.c
! bd5ec5e2db0882814e63c4239cc0bf29  gcc/testsuite/gcc.target/arm/bfloat16_scalar_3_2.c
  ebd9a7e3125d7b51692987388532dfb3  gcc/testsuite/gcc.target/arm/bfloat16_scalar_4.c
  7f6fca1944d2c355117b62adc96d2e90  gcc/testsuite/gcc.target/arm/bfloat16_scalar_typecheck.c
  9d566a8c25c9173357e8d1701a9c9181  gcc/testsuite/gcc.target/arm/bfloat16_simd_1_1.c
! 6ff2d55b28e457c01e5f57c33217acd1  gcc/testsuite/gcc.target/arm/bfloat16_simd_1_2.c
  3d1619ca156d9442f835868012752a98  gcc/testsuite/gcc.target/arm/bfloat16_simd_2_1.c
! d477d122096a7671049840e4df85c931  gcc/testsuite/gcc.target/arm/bfloat16_simd_2_2.c
  a30e0a4d7a48b01ccc07bd5be4a0d065  gcc/testsuite/gcc.target/arm/bfloat16_simd_3_1.c
! 66a3582813f242f6acb7952136e2b12f  gcc/testsuite/gcc.target/arm/bfloat16_simd_3_2.c
  fd023d3635562de2ff5e0ed5260d21d5  gcc/testsuite/gcc.target/arm/bfloat16_vector_typecheck_1.c
  3a97f76c1b98b4d2244bb1a213d2e4b5  gcc/testsuite/gcc.target/arm/bfloat16_vector_typecheck_2.c
  6fd7f87aeac118d347a74f2afe95ddc0  gcc/testsuite/gcc.target/arm/bics_1.c
--- 79000,79018 ----
  ddf5f8837478e164c620abb8c7ac47ca  gcc/testsuite/gcc.target/arm/bf16_dup.c
  6e41b96954872461a57e818eb21c53b9  gcc/testsuite/gcc.target/arm/bf16_reinterpret.c
  16b8dfe53a0a7665d068bc910c72ced3  gcc/testsuite/gcc.target/arm/bfloat16_scalar_1_1.c
! e8ab41d916d8e2b8cf6767a9c6f7a7bc  gcc/testsuite/gcc.target/arm/bfloat16_scalar_1_2.c
  0c2940f05ea77e9f0bdcba867434e70a  gcc/testsuite/gcc.target/arm/bfloat16_scalar_2_1.c
! f65c4b7a27a8aec0d8103faccb863fe2  gcc/testsuite/gcc.target/arm/bfloat16_scalar_2_2.c
  16b8dfe53a0a7665d068bc910c72ced3  gcc/testsuite/gcc.target/arm/bfloat16_scalar_3_1.c
! e8ab41d916d8e2b8cf6767a9c6f7a7bc  gcc/testsuite/gcc.target/arm/bfloat16_scalar_3_2.c
  ebd9a7e3125d7b51692987388532dfb3  gcc/testsuite/gcc.target/arm/bfloat16_scalar_4.c
  7f6fca1944d2c355117b62adc96d2e90  gcc/testsuite/gcc.target/arm/bfloat16_scalar_typecheck.c
  9d566a8c25c9173357e8d1701a9c9181  gcc/testsuite/gcc.target/arm/bfloat16_simd_1_1.c
! 9ae9028157abc62f080659db0deab915  gcc/testsuite/gcc.target/arm/bfloat16_simd_1_2.c
  3d1619ca156d9442f835868012752a98  gcc/testsuite/gcc.target/arm/bfloat16_simd_2_1.c
! f6f05a47f13ea1da4f4c79d7eccea4e8  gcc/testsuite/gcc.target/arm/bfloat16_simd_2_2.c
  a30e0a4d7a48b01ccc07bd5be4a0d065  gcc/testsuite/gcc.target/arm/bfloat16_simd_3_1.c
! 04842fa2d7ec5aa982fc3d231022ef93  gcc/testsuite/gcc.target/arm/bfloat16_simd_3_2.c
  fd023d3635562de2ff5e0ed5260d21d5  gcc/testsuite/gcc.target/arm/bfloat16_vector_typecheck_1.c
  3a97f76c1b98b4d2244bb1a213d2e4b5  gcc/testsuite/gcc.target/arm/bfloat16_vector_typecheck_2.c
  6fd7f87aeac118d347a74f2afe95ddc0  gcc/testsuite/gcc.target/arm/bics_1.c
*************** cb9e119b328b5c2a1e304f019876ecad  gcc/te
*** 79263,79281 ****
  ecf3e369bf7ea3b785fa7c81fca39ca9  gcc/testsuite/gcc.target/arm/headmerge-1.c
  0e04489397aa1c1db41d2fe6d47ed574  gcc/testsuite/gcc.target/arm/headmerge-2.c
  b7fc1639bee153568add250d53ea751f  gcc/testsuite/gcc.target/arm/identical-invariants.c
! 6b37d9e567d7851e4e037dc6ffb87d9c  gcc/testsuite/gcc.target/arm/ifcvt-size-check.c
  8584a9f991443ef7f54d4d5430591db3  gcc/testsuite/gcc.target/arm/interrupt-1.c
  d22bd89adb71b05462d565b8be4d3b3c  gcc/testsuite/gcc.target/arm/interrupt-2.c
  5fb126c6d9486e40aebcb4051dcefd2a  gcc/testsuite/gcc.target/arm/iordi3-opt.c
  942d9efedfb779e0de45df976f1585de  gcc/testsuite/gcc.target/arm/iordi_notdi-1.c
  59dfbecb0e1eaf59bd06be7035a171eb  gcc/testsuite/gcc.target/arm/its-1.c
  571194dc627ca9e3dc33c608029df503  gcc/testsuite/gcc.target/arm/its-2.c
! ed8f53ad845cace075e82259961588c1  gcc/testsuite/gcc.target/arm/ivopts-2.c
! 0f144636bf943d81ee8e39fb28c2f9a2  gcc/testsuite/gcc.target/arm/ivopts-3.c
! 64a2a899a5a2180399e5178ea86adc4e  gcc/testsuite/gcc.target/arm/ivopts-4.c
! 07838a70a70c703269fa0783335a34b7  gcc/testsuite/gcc.target/arm/ivopts-5.c
  371c001d833d940cd40d8aa3fee9915d  gcc/testsuite/gcc.target/arm/ivopts-orig_biv-inc.c
! 945ef3f3dcc8a43bf5273258fd73ecdf  gcc/testsuite/gcc.target/arm/ivopts.c
  f34b883201d67907215163e81a1e647d  gcc/testsuite/gcc.target/arm/lceil-vcvt_1.c
  a38561d69fa262860777d4da466d538e  gcc/testsuite/gcc.target/arm/ldrd-strd-offset.c
  02b9352efc9d3dded38ac3a6281bcdd1  gcc/testsuite/gcc.target/arm/ldrd-strd-pair-1.c
--- 79303,79321 ----
  ecf3e369bf7ea3b785fa7c81fca39ca9  gcc/testsuite/gcc.target/arm/headmerge-1.c
  0e04489397aa1c1db41d2fe6d47ed574  gcc/testsuite/gcc.target/arm/headmerge-2.c
  b7fc1639bee153568add250d53ea751f  gcc/testsuite/gcc.target/arm/identical-invariants.c
! 65b53bdc4356148e3666f4e6a91e21b2  gcc/testsuite/gcc.target/arm/ifcvt-size-check.c
  8584a9f991443ef7f54d4d5430591db3  gcc/testsuite/gcc.target/arm/interrupt-1.c
  d22bd89adb71b05462d565b8be4d3b3c  gcc/testsuite/gcc.target/arm/interrupt-2.c
  5fb126c6d9486e40aebcb4051dcefd2a  gcc/testsuite/gcc.target/arm/iordi3-opt.c
  942d9efedfb779e0de45df976f1585de  gcc/testsuite/gcc.target/arm/iordi_notdi-1.c
  59dfbecb0e1eaf59bd06be7035a171eb  gcc/testsuite/gcc.target/arm/its-1.c
  571194dc627ca9e3dc33c608029df503  gcc/testsuite/gcc.target/arm/its-2.c
! bc8a51f7d60d525838b5735d67fbda46  gcc/testsuite/gcc.target/arm/ivopts-2.c
! 03da67048daf58177fd289f47a8e80b9  gcc/testsuite/gcc.target/arm/ivopts-3.c
! 9d3bdbe8d2d4e2e3033944d7704a661f  gcc/testsuite/gcc.target/arm/ivopts-4.c
! 5e41daf8ab3411b1ac1597c2a760ec01  gcc/testsuite/gcc.target/arm/ivopts-5.c
  371c001d833d940cd40d8aa3fee9915d  gcc/testsuite/gcc.target/arm/ivopts-orig_biv-inc.c
! aaf1767c15a83bfbd59e30737843d56c  gcc/testsuite/gcc.target/arm/ivopts.c
  f34b883201d67907215163e81a1e647d  gcc/testsuite/gcc.target/arm/lceil-vcvt_1.c
  a38561d69fa262860777d4da466d538e  gcc/testsuite/gcc.target/arm/ldrd-strd-offset.c
  02b9352efc9d3dded38ac3a6281bcdd1  gcc/testsuite/gcc.target/arm/ldrd-strd-pair-1.c
*************** fd9597acaf90b4fc0a611739248cecea  gcc/te
*** 79304,79310 ****
  7d48850c7c0f14894c8ae56eda6aa27b  gcc/testsuite/gcc.target/arm/macro_defs1.c
  55356a1ea88fba61f865de51904eb4a9  gcc/testsuite/gcc.target/arm/macro_defs2.c
  992923ff987c3f4f952a04e11fea3029  gcc/testsuite/gcc.target/arm/maskdata.c
! 005470d1710eae11e6e158418d79d3a7  gcc/testsuite/gcc.target/arm/max-insns-skipped.c
  5e453265227c0dc9fd4b94eca341d6d9  gcc/testsuite/gcc.target/arm/memcpy-aligned-1.c
  18a42aeddd7c110c5ef42f3d0677e7db  gcc/testsuite/gcc.target/arm/memset-inline-1.c
  ba8ade52fcec08e9fc2a71480fa7129b  gcc/testsuite/gcc.target/arm/memset-inline-10.c
--- 79344,79350 ----
  7d48850c7c0f14894c8ae56eda6aa27b  gcc/testsuite/gcc.target/arm/macro_defs1.c
  55356a1ea88fba61f865de51904eb4a9  gcc/testsuite/gcc.target/arm/macro_defs2.c
  992923ff987c3f4f952a04e11fea3029  gcc/testsuite/gcc.target/arm/maskdata.c
! af94e342ff2dea36837acc918c624002  gcc/testsuite/gcc.target/arm/max-insns-skipped.c
  5e453265227c0dc9fd4b94eca341d6d9  gcc/testsuite/gcc.target/arm/memcpy-aligned-1.c
  18a42aeddd7c110c5ef42f3d0677e7db  gcc/testsuite/gcc.target/arm/memset-inline-1.c
  ba8ade52fcec08e9fc2a71480fa7129b  gcc/testsuite/gcc.target/arm/memset-inline-10.c
*************** fb7ca982317505366c93c07e9b92b72a  gcc/te
*** 82036,82042 ****
  d8b987b87850e95ff360d2e9cb8b68e7  gcc/testsuite/gcc.target/arm/pr42879.c
  8dc5ba1f369b2c8434ddba2b57f99669  gcc/testsuite/gcc.target/arm/pr43137.c
  54eaa734563d8ef237864db2cd0d66a5  gcc/testsuite/gcc.target/arm/pr43404.c
! 609cb335a66879b9f451cc0e94b6f081  gcc/testsuite/gcc.target/arm/pr43597.c
  23fca63696cb34a1eff4c0826111a6c5  gcc/testsuite/gcc.target/arm/pr43698.c
  ecfd9e0633dd2f87b4224cd1d4ba57e7  gcc/testsuite/gcc.target/arm/pr43920-1.c
  b76ab98650530cb2a051203e1024252b  gcc/testsuite/gcc.target/arm/pr43920-2.c
--- 82076,82082 ----
  d8b987b87850e95ff360d2e9cb8b68e7  gcc/testsuite/gcc.target/arm/pr42879.c
  8dc5ba1f369b2c8434ddba2b57f99669  gcc/testsuite/gcc.target/arm/pr43137.c
  54eaa734563d8ef237864db2cd0d66a5  gcc/testsuite/gcc.target/arm/pr43404.c
! 954a00a2a9b48f052c5ff79a404d40ef  gcc/testsuite/gcc.target/arm/pr43597.c
  23fca63696cb34a1eff4c0826111a6c5  gcc/testsuite/gcc.target/arm/pr43698.c
  ecfd9e0633dd2f87b4224cd1d4ba57e7  gcc/testsuite/gcc.target/arm/pr43920-1.c
  b76ab98650530cb2a051203e1024252b  gcc/testsuite/gcc.target/arm/pr43920-2.c
*************** dd89c1faa772f50df78a54a9514f4728  gcc/te
*** 82098,82104 ****
  80d8b2b95ce38433be26f63633a0c397  gcc/testsuite/gcc.target/arm/pr60657.c
  8944fa0da632677ab8035fce58e92bb2  gcc/testsuite/gcc.target/arm/pr60663.c
  8b14f6a79d37229ed4d5153fe3389de1  gcc/testsuite/gcc.target/arm/pr61948.c
! 5fdae85bb8a321060a991fe154549488  gcc/testsuite/gcc.target/arm/pr63210.c
  090e3a4d2e2fdbab7b1d5b0be5ab12a3  gcc/testsuite/gcc.target/arm/pr63408.c
  224b028685bb00477b6281c95ad71ca7  gcc/testsuite/gcc.target/arm/pr64453.c
  ba50e02461bee64efbeb4ab6a3ee0cbb  gcc/testsuite/gcc.target/arm/pr64460_1.c
--- 82138,82144 ----
  80d8b2b95ce38433be26f63633a0c397  gcc/testsuite/gcc.target/arm/pr60657.c
  8944fa0da632677ab8035fce58e92bb2  gcc/testsuite/gcc.target/arm/pr60663.c
  8b14f6a79d37229ed4d5153fe3389de1  gcc/testsuite/gcc.target/arm/pr61948.c
! ad767c6aaa3399bd309669ff6733b494  gcc/testsuite/gcc.target/arm/pr63210.c
  090e3a4d2e2fdbab7b1d5b0be5ab12a3  gcc/testsuite/gcc.target/arm/pr63408.c
  224b028685bb00477b6281c95ad71ca7  gcc/testsuite/gcc.target/arm/pr64453.c
  ba50e02461bee64efbeb4ab6a3ee0cbb  gcc/testsuite/gcc.target/arm/pr64460_1.c
*************** fda45d52e2070b6f03ce26c5f2f21d9d  gcc/te
*** 82306,82312 ****
  0319dc2665b102f172d97dc610d63799  gcc/testsuite/gcc.target/arm/simd/vect-dot-u8.c
  8e5d88eef0890cd5cf63cc64c80d96a8  gcc/testsuite/gcc.target/arm/simd/vextQf32_1.c
  1877fed963644ac239dae282d98ddfbd  gcc/testsuite/gcc.target/arm/simd/vextQp16_1.c
! 850b679907e2dcc8255e04ff194cd91a  gcc/testsuite/gcc.target/arm/simd/vextQp64_1.c
  5f3cef4ef90f61dc5adff5229cb0e178  gcc/testsuite/gcc.target/arm/simd/vextQp8_1.c
  f756b467d28619f570087e77c6dca98c  gcc/testsuite/gcc.target/arm/simd/vextQs16_1.c
  e473ece6b049004597cfc7d31d31ceec  gcc/testsuite/gcc.target/arm/simd/vextQs32_1.c
--- 82346,82352 ----
  0319dc2665b102f172d97dc610d63799  gcc/testsuite/gcc.target/arm/simd/vect-dot-u8.c
  8e5d88eef0890cd5cf63cc64c80d96a8  gcc/testsuite/gcc.target/arm/simd/vextQf32_1.c
  1877fed963644ac239dae282d98ddfbd  gcc/testsuite/gcc.target/arm/simd/vextQp16_1.c
! d7291552f0b9a86f8806b9c918b3717d  gcc/testsuite/gcc.target/arm/simd/vextQp64_1.c
  5f3cef4ef90f61dc5adff5229cb0e178  gcc/testsuite/gcc.target/arm/simd/vextQp8_1.c
  f756b467d28619f570087e77c6dca98c  gcc/testsuite/gcc.target/arm/simd/vextQs16_1.c
  e473ece6b049004597cfc7d31d31ceec  gcc/testsuite/gcc.target/arm/simd/vextQs32_1.c
*************** a84e7e550093e2969e1e9f59824f4052  gcc/te
*** 82467,82473 ****
  8008a7e138765cf948a213e51ecfb80d  gcc/testsuite/gcc.target/arm/smlaltt-1.c
  61ccb5d8433a6f8e4eae1fe9703cf28f  gcc/testsuite/gcc.target/arm/smlatb-1.c
  75b19de937a605ce7ed7e1026e54bbf8  gcc/testsuite/gcc.target/arm/smlatt-1.c
! ed39b4c31a81f4f17ea556e45805a496  gcc/testsuite/gcc.target/arm/split-live-ranges-for-shrink-wrap.c
  3ebeca3ed0f25632879b6c5261fa73b9  gcc/testsuite/gcc.target/arm/ssadv16qi.c
  2e30a53910cdcc3b73ee4ec5cef30bcb  gcc/testsuite/gcc.target/arm/stack-checking.c
  3e7aee3ca3268716b7e56cda15a6ccc3  gcc/testsuite/gcc.target/arm/stack-corruption.c
--- 82507,82513 ----
  8008a7e138765cf948a213e51ecfb80d  gcc/testsuite/gcc.target/arm/smlaltt-1.c
  61ccb5d8433a6f8e4eae1fe9703cf28f  gcc/testsuite/gcc.target/arm/smlatb-1.c
  75b19de937a605ce7ed7e1026e54bbf8  gcc/testsuite/gcc.target/arm/smlatt-1.c
! 3ac69cc815d15b748ea87c1062de7290  gcc/testsuite/gcc.target/arm/split-live-ranges-for-shrink-wrap.c
  3ebeca3ed0f25632879b6c5261fa73b9  gcc/testsuite/gcc.target/arm/ssadv16qi.c
  2e30a53910cdcc3b73ee4ec5cef30bcb  gcc/testsuite/gcc.target/arm/stack-checking.c
  3e7aee3ca3268716b7e56cda15a6ccc3  gcc/testsuite/gcc.target/arm/stack-corruption.c
*************** bf9ee92c02481fc487e6bdb697cd1b46  gcc/te
*** 83128,83134 ****
  df7859ccc4fa99578f3c302c440d4605  gcc/testsuite/gcc.target/bpf/bswap-1.c
  c4a6ad70ac74c8733e479dfebcba3f60  gcc/testsuite/gcc.target/bpf/bswap-2.c
  702aee4a9b7aaab7fabe02878e894d4c  gcc/testsuite/gcc.target/bpf/btfext-funcinfo-nocore.c
! e548674ceff126911c821129892cc7b4  gcc/testsuite/gcc.target/bpf/btfext-funcinfo.c
  764fe5926bb10fe72fe4f44a1b56005a  gcc/testsuite/gcc.target/bpf/builtin-load.c
  c15ffd0fcf13b8089eb979818ca695d3  gcc/testsuite/gcc.target/bpf/constant-calls-1.c
  308ec3c13b184f3b2a8e46ea0f32f4c8  gcc/testsuite/gcc.target/bpf/constant-calls-2.c
--- 83168,83175 ----
  df7859ccc4fa99578f3c302c440d4605  gcc/testsuite/gcc.target/bpf/bswap-1.c
  c4a6ad70ac74c8733e479dfebcba3f60  gcc/testsuite/gcc.target/bpf/bswap-2.c
  702aee4a9b7aaab7fabe02878e894d4c  gcc/testsuite/gcc.target/bpf/btfext-funcinfo-nocore.c
! 96fc35d6dbcd0838545c0f81650f715f  gcc/testsuite/gcc.target/bpf/btfext-funcinfo.c
! 70e3d53a6ac9dc8b0f50d5f64c1ee874  gcc/testsuite/gcc.target/bpf/btfext-lineinfo.c
  764fe5926bb10fe72fe4f44a1b56005a  gcc/testsuite/gcc.target/bpf/builtin-load.c
  c15ffd0fcf13b8089eb979818ca695d3  gcc/testsuite/gcc.target/bpf/constant-calls-1.c
  308ec3c13b184f3b2a8e46ea0f32f4c8  gcc/testsuite/gcc.target/bpf/constant-calls-2.c
*************** ddae9e3f25193c53de97e445f19efb5b  gcc/te
*** 84546,84551 ****
--- 84587,84596 ----
  4af5f36c571f416f48647ffb75a45045  gcc/testsuite/gcc.target/i386/avx10_2-partial-bf16-vector-fma-1.c
  060256f3db21d28f61a90f026c37c557  gcc/testsuite/gcc.target/i386/avx10_2-partial-bf16-vector-operations-1.c
  fa1d703c5c27e1abbf55a158e4d6ee34  gcc/testsuite/gcc.target/i386/avx10_2-partial-bf16-vector-smaxmin-1.c
+ b4a1927c931b8d7d2db97fa832391d68  gcc/testsuite/gcc.target/i386/avx10_2-pr124294.c
+ 7f70c3fddea0473820a89abc96523295  gcc/testsuite/gcc.target/i386/avx10_2-pr124341.c
+ 2069fc0ccb52a5d108ccb3dc947847f0  gcc/testsuite/gcc.target/i386/avx10_2-pr124349-2.c
+ 08b72689ae08221da32807545d916afe  gcc/testsuite/gcc.target/i386/avx10_2-pr124349.c
  cb98d94646b2520b2ad879a3a7daa717  gcc/testsuite/gcc.target/i386/avx10_2-satcvt-1.c
  60a72d0c1e55bd425da17835c9d885cb  gcc/testsuite/gcc.target/i386/avx10_2-vaddbf16-2.c
  43e4fed44125a0ba83d21beca0f9f0ea  gcc/testsuite/gcc.target/i386/avx10_2-vaddbf16-2.h
*************** fa2c17673f6ee0e3a3910298a93d723d  gcc/te
*** 85916,85921 ****
--- 85961,85967 ----
  678b1780c696a211b19a271bd7501f61  gcc/testsuite/gcc.target/i386/avx512f-pr116738-2.c
  f20f5c3dc20ef0309b2a3dc9fdde483e  gcc/testsuite/gcc.target/i386/avx512f-pr124138-1.c
  efe0a21951178063e3b3f10cf90f0adb  gcc/testsuite/gcc.target/i386/avx512f-pr124138-2.c
+ 1f47d4671c0dd3d13b733838385048ed  gcc/testsuite/gcc.target/i386/avx512f-pr124315.c
  88877c518076ecdec1dba128743ad627  gcc/testsuite/gcc.target/i386/avx512f-pr57233.c
  0272e0fc54cb34ee03db4b0027dbec3d  gcc/testsuite/gcc.target/i386/avx512f-pr63594-1.c
  381f53de01f1e9893e6903d9fac40b87  gcc/testsuite/gcc.target/i386/avx512f-pr63594-2.c
*************** cd26c5b9b2d79ae190b4c24e39a2ac2e  gcc/te
*** 86795,86800 ****
--- 86841,86847 ----
  a0059c72ee5f8a3b553da9a85e2e8686  gcc/testsuite/gcc.target/i386/avx512fp16-pr101846.c
  2e18bcbca55b5eaa82a1fe477d2bf780  gcc/testsuite/gcc.target/i386/avx512fp16-pr103750-1.c
  a89ea8a687198b0e470fb31d938c2a3f  gcc/testsuite/gcc.target/i386/avx512fp16-pr103750-2.c
+ c0aba89383e573771d0b9ccacbca61eb  gcc/testsuite/gcc.target/i386/avx512fp16-pr124335.c
  b5d5082a6d865b8b24dbefc908fafb2d  gcc/testsuite/gcc.target/i386/avx512fp16-pr94680.c
  0be682c7ab6c675fa46f84d592d76785  gcc/testsuite/gcc.target/i386/avx512fp16-recip-1.c
  38a807ac8fade227ea34604df002fb5f  gcc/testsuite/gcc.target/i386/avx512fp16-recip-2.c
*************** a2e2af8ff03c5796d335ffb9b6d5cc1c  gcc/te
*** 87012,87018 ****
  d3064bc8e32fbd4b222b12baf22ca2f0  gcc/testsuite/gcc.target/i386/avx512fp16-vsubph-1b.c
  3ceefff146ab36e49f465a71bb91897a  gcc/testsuite/gcc.target/i386/avx512fp16-vsubsh-1a.c
  a1f4b75339c19727d3758c22b23b84a4  gcc/testsuite/gcc.target/i386/avx512fp16-vsubsh-1b.c
! fcf70bfc3c79dd61e55358d5bad50223  gcc/testsuite/gcc.target/i386/avx512fp16-xorsign-1.c
  9124b923004bf790ed4da1d0c675d320  gcc/testsuite/gcc.target/i386/avx512fp16vl-builtin-sqrt-1.c
  5e4929aedf1814bce1f01dc3cbc59c66  gcc/testsuite/gcc.target/i386/avx512fp16vl-complex-broadcast-1.c
  a047d78dfdd4df74e0489ca1aa22d951  gcc/testsuite/gcc.target/i386/avx512fp16vl-conjugation-1.c
--- 87059,87065 ----
  d3064bc8e32fbd4b222b12baf22ca2f0  gcc/testsuite/gcc.target/i386/avx512fp16-vsubph-1b.c
  3ceefff146ab36e49f465a71bb91897a  gcc/testsuite/gcc.target/i386/avx512fp16-vsubsh-1a.c
  a1f4b75339c19727d3758c22b23b84a4  gcc/testsuite/gcc.target/i386/avx512fp16-vsubsh-1b.c
! 138cb068fbcd58bbcd96b9dfb34da3af  gcc/testsuite/gcc.target/i386/avx512fp16-xorsign-1.c
  9124b923004bf790ed4da1d0c675d320  gcc/testsuite/gcc.target/i386/avx512fp16vl-builtin-sqrt-1.c
  5e4929aedf1814bce1f01dc3cbc59c66  gcc/testsuite/gcc.target/i386/avx512fp16vl-complex-broadcast-1.c
  a047d78dfdd4df74e0489ca1aa22d951  gcc/testsuite/gcc.target/i386/avx512fp16vl-conjugation-1.c
*************** b797edd22d4e7e81caca22f64d06f39d  gcc/te
*** 87219,87224 ****
--- 87266,87272 ----
  1156c3947fee64640053c33ec3a1d627  gcc/testsuite/gcc.target/i386/avx512vl-pr112435-1.c
  de717f1cf1bd87731a52727c854e17f3  gcc/testsuite/gcc.target/i386/avx512vl-pr112435-2.c
  ff7d4b178317336c918bd3d476aa77a8  gcc/testsuite/gcc.target/i386/avx512vl-pr112435-3.c
+ f66d7d39f6629aaa01b835c3db736017  gcc/testsuite/gcc.target/i386/avx512vl-pr124367.c
  1ce70da2226efd6f3d5d92c101fb79d9  gcc/testsuite/gcc.target/i386/avx512vl-pr79299-1.c
  e3cc31b3308cdb56423451f2cd8c2a00  gcc/testsuite/gcc.target/i386/avx512vl-pr79299-2.c
  7cff0350d919ed5edc42e841b11e38f2  gcc/testsuite/gcc.target/i386/avx512vl-pr82370.c
*************** dfd6d048c4cc790cbf85d5080d1b5a6e  gcc/te
*** 88198,88203 ****
--- 88246,88252 ----
  e420c76b5d51167be532aea06e242b7d  gcc/testsuite/gcc.target/i386/cet-notrack-icf-2.c
  ecf5960debbf0be72bff47ede8c8800e  gcc/testsuite/gcc.target/i386/cet-notrack-icf-3.c
  8f1538b43a15c0827f66b6f4352ef5fb  gcc/testsuite/gcc.target/i386/cet-notrack-icf-4.c
+ c62171467fd6ad70fac732b022943ed4  gcc/testsuite/gcc.target/i386/cet-pr124366.c
  b8e1eda2f252f129a90e54617fa39500  gcc/testsuite/gcc.target/i386/cet-property-1.c
  f03688bba56369ec92f324db56599b3d  gcc/testsuite/gcc.target/i386/cet-property-2.c
  a4dff4664eff59fc1d1d6ac49e52a6b6  gcc/testsuite/gcc.target/i386/cet-rdssp-1.c
*************** b3082251265483716a53827b31517936  gcc/te
*** 92909,92919 ****
  a9f88e9f5dc3a65651e4aac1c477bd99  gcc/testsuite/gcc.target/i386/ssse3-psignw.c
  c090869f11057c7ff1b23d043c14ed85  gcc/testsuite/gcc.target/i386/ssse3-truncsfbf.c
  350a25c3aea2becac5c56cff7b4bf401  gcc/testsuite/gcc.target/i386/ssse3-vals.h
! 477939a29a89fa9e24f140cf485795a0  gcc/testsuite/gcc.target/i386/stack-check-11.c
  663ee911f5f6c14483010012c61ad672  gcc/testsuite/gcc.target/i386/stack-check-12.c
  750a7405dd4a2eeed037db510a92fe3e  gcc/testsuite/gcc.target/i386/stack-check-17.c
! f4f31f4c82164ce7b9fec1c877d2f06a  gcc/testsuite/gcc.target/i386/stack-check-18.c
! 85ba669397fb051dbc3e76f146553033  gcc/testsuite/gcc.target/i386/stack-check-19.c
  6d828053525a31dec8d546a5f991ca0f  gcc/testsuite/gcc.target/i386/stack-clash-protection.c
  ca5571ee490db85826dd15cbfd5c6555  gcc/testsuite/gcc.target/i386/stack-prot-guard.c
  79da87a540843a0e1db2e7c3a4c97b4a  gcc/testsuite/gcc.target/i386/stack-prot-kernel.c
--- 92958,92968 ----
  a9f88e9f5dc3a65651e4aac1c477bd99  gcc/testsuite/gcc.target/i386/ssse3-psignw.c
  c090869f11057c7ff1b23d043c14ed85  gcc/testsuite/gcc.target/i386/ssse3-truncsfbf.c
  350a25c3aea2becac5c56cff7b4bf401  gcc/testsuite/gcc.target/i386/ssse3-vals.h
! 4d5b022ba48d0703844d30e35dceab26  gcc/testsuite/gcc.target/i386/stack-check-11.c
  663ee911f5f6c14483010012c61ad672  gcc/testsuite/gcc.target/i386/stack-check-12.c
  750a7405dd4a2eeed037db510a92fe3e  gcc/testsuite/gcc.target/i386/stack-check-17.c
! 71e5823ee8ff8e3d846b5174c1173624  gcc/testsuite/gcc.target/i386/stack-check-18.c
! 8d863fbbb497366592d9900bf050ad98  gcc/testsuite/gcc.target/i386/stack-check-19.c
  6d828053525a31dec8d546a5f991ca0f  gcc/testsuite/gcc.target/i386/stack-clash-protection.c
  ca5571ee490db85826dd15cbfd5c6555  gcc/testsuite/gcc.target/i386/stack-prot-guard.c
  79da87a540843a0e1db2e7c3a4c97b4a  gcc/testsuite/gcc.target/i386/stack-prot-kernel.c
*************** de9eeadec9703aff96169206e31a3a22  gcc/te
*** 127541,127547 ****
  275f7eb9618e6b097a58c1fba25cdb9c  gcc/testsuite/lib/scanwpaipa.exp
  9bc4cbcf0cb4f1aa30a8cf3142d157eb  gcc/testsuite/lib/target-libpath.exp
  ba9ca262f3c7ac3b9717ac474fa255b8  gcc/testsuite/lib/target-supports-dg.exp
! 8d2b20b9b5102b25fecbe25e394b1a82  gcc/testsuite/lib/target-supports.exp
  b1eb2edcf4941bfb00c200eb000a0a7b  gcc/testsuite/lib/target-utils.exp
  98b890f6c455deafd6ca241993fc5d67  gcc/testsuite/lib/timeout-dg.exp
  0afb0c69501fa44908d13017be208db3  gcc/testsuite/lib/timeout.exp
--- 127590,127596 ----
  275f7eb9618e6b097a58c1fba25cdb9c  gcc/testsuite/lib/scanwpaipa.exp
  9bc4cbcf0cb4f1aa30a8cf3142d157eb  gcc/testsuite/lib/target-libpath.exp
  ba9ca262f3c7ac3b9717ac474fa255b8  gcc/testsuite/lib/target-supports-dg.exp
! 87d5db7137e02f557dced6b1aab0d6ce  gcc/testsuite/lib/target-supports.exp
  b1eb2edcf4941bfb00c200eb000a0a7b  gcc/testsuite/lib/target-utils.exp
  98b890f6c455deafd6ca241993fc5d67  gcc/testsuite/lib/timeout-dg.exp
  0afb0c69501fa44908d13017be208db3  gcc/testsuite/lib/timeout.exp
*************** d7c0da59494a51ae966d29f4618b2f9a  gcc/tr
*** 130281,130287 ****
  f8be97e59befb22cc3869e742a095cca  gcc/tree-hasher.h
  74a1d8bf597d9fcfa84e6ac9f2297cb5  gcc/tree-if-conv.cc
  87f110e202a07bb1d7e6402808531851  gcc/tree-if-conv.h
! 3a91a6f9b1eaaec2cc1b81edb0bc684f  gcc/tree-inline.cc
  6bebd695468e1b608400eecde4c37451  gcc/tree-inline.h
  c6ce99fc424184a60f3dd558c37751bd  gcc/tree-into-ssa.cc
  72f7e515faeeb8223adbdd63816cd07d  gcc/tree-into-ssa.h
--- 130330,130336 ----
  f8be97e59befb22cc3869e742a095cca  gcc/tree-hasher.h
  74a1d8bf597d9fcfa84e6ac9f2297cb5  gcc/tree-if-conv.cc
  87f110e202a07bb1d7e6402808531851  gcc/tree-if-conv.h
! c520d71c27395911241851fc48b86339  gcc/tree-inline.cc
  6bebd695468e1b608400eecde4c37451  gcc/tree-inline.h
  c6ce99fc424184a60f3dd558c37751bd  gcc/tree-into-ssa.cc
  72f7e515faeeb8223adbdd63816cd07d  gcc/tree-into-ssa.h
*************** a24cff30baef257a999b4fac3ca47d5a  gcc/tr
*** 130306,130312 ****
  47856333edaecc32813dad93ecb96fbe  gcc/tree-pretty-print-markup.h
  45c5e55c37764fad83ea33411f4eb348  gcc/tree-pretty-print.cc
  c021bc7a8aa59f2b8184de8bff6b1d14  gcc/tree-pretty-print.h
! 82882fd59c37488a774ecb1dc5934265  gcc/tree-profile.cc
  a39e1901dac55b45c25e4542501e20ff  gcc/tree-scalar-evolution.cc
  0ac41331ad8cbe754ee005d5ef9aff94  gcc/tree-scalar-evolution.h
  17c4c00ded2905c04437f79e44e63c75  gcc/tree-sra.cc
--- 130355,130361 ----
  47856333edaecc32813dad93ecb96fbe  gcc/tree-pretty-print-markup.h
  45c5e55c37764fad83ea33411f4eb348  gcc/tree-pretty-print.cc
  c021bc7a8aa59f2b8184de8bff6b1d14  gcc/tree-pretty-print.h
! 901d83de1ee3ac4c63b85a576913a3e1  gcc/tree-profile.cc
  a39e1901dac55b45c25e4542501e20ff  gcc/tree-scalar-evolution.cc
  0ac41331ad8cbe754ee005d5ef9aff94  gcc/tree-scalar-evolution.h
  17c4c00ded2905c04437f79e44e63c75  gcc/tree-sra.cc
*************** ebf22ffd803f5b75a6819a8b565bcea0  gcc/tr
*** 130345,130351 ****
  7d41277dc2b070fc20de82de11dfe8bc  gcc/tree-ssa-loop-unswitch.cc
  faa18178392bba086edee765e464318c  gcc/tree-ssa-loop.cc
  c1590659dad2b41a69adb7654db65644  gcc/tree-ssa-loop.h
! 3ff6077b954e38433c267a209217dc3e  gcc/tree-ssa-math-opts.cc
  fa83f982a805985b3a3da2ca5e10e43a  gcc/tree-ssa-math-opts.h
  9b5221bc2087b040736afeb799949b04  gcc/tree-ssa-operands.cc
  f83d0b12185538e6f679296bebfe3d2f  gcc/tree-ssa-operands.h
--- 130394,130400 ----
  7d41277dc2b070fc20de82de11dfe8bc  gcc/tree-ssa-loop-unswitch.cc
  faa18178392bba086edee765e464318c  gcc/tree-ssa-loop.cc
  c1590659dad2b41a69adb7654db65644  gcc/tree-ssa-loop.h
! 895ec87fac3252b3f3cf780e31ae7020  gcc/tree-ssa-math-opts.cc
  fa83f982a805985b3a3da2ca5e10e43a  gcc/tree-ssa-math-opts.h
  9b5221bc2087b040736afeb799949b04  gcc/tree-ssa-operands.cc
  f83d0b12185538e6f679296bebfe3d2f  gcc/tree-ssa-operands.h
*************** f8119a019450befbbf3e3e40b010cf74  gcc/tr
*** 130388,130401 ****
  a276a785e139fcb28cbe71af406290bf  gcc/tree-switch-conversion.cc
  e316eddfbf9a02433a4ee93e648f3aa4  gcc/tree-switch-conversion.h
  6a0f6268d598b3c59871ad41e01f33c1  gcc/tree-tailcall.cc
! b3c26856142e8b3ee37b06adeb29afae  gcc/tree-vect-data-refs.cc
  a423c268d5ba9ac563732fd6d038c572  gcc/tree-vect-generic.cc
  5945009d0ba922b53aacbb6f724d3caf  gcc/tree-vect-loop-manip.cc
! eb6c727eb79283f03756b620bc7f9e00  gcc/tree-vect-loop.cc
  b65839ac30937104b9a0643233f69538  gcc/tree-vect-patterns.cc
  ef0b51a362b8764cf6b0628ed16b2dde  gcc/tree-vect-slp-patterns.cc
! 0298aeb5a5f9949f82a646703e6bab32  gcc/tree-vect-slp.cc
! 9695979e51e10a7946813d726e06e456  gcc/tree-vect-stmts.cc
  42032e04f389a2e0f43fbb46ac091dac  gcc/tree-vector-builder.cc
  4a1b4947e64a076fdca46d14aab2181f  gcc/tree-vector-builder.h
  29624134a45fa2e54db69b6ee376164d  gcc/tree-vectorizer.cc
--- 130437,130450 ----
  a276a785e139fcb28cbe71af406290bf  gcc/tree-switch-conversion.cc
  e316eddfbf9a02433a4ee93e648f3aa4  gcc/tree-switch-conversion.h
  6a0f6268d598b3c59871ad41e01f33c1  gcc/tree-tailcall.cc
! 9d1d629a67b789d8cb739163675798bd  gcc/tree-vect-data-refs.cc
  a423c268d5ba9ac563732fd6d038c572  gcc/tree-vect-generic.cc
  5945009d0ba922b53aacbb6f724d3caf  gcc/tree-vect-loop-manip.cc
! 384d05f4e6601d24648a099b00f8abcc  gcc/tree-vect-loop.cc
  b65839ac30937104b9a0643233f69538  gcc/tree-vect-patterns.cc
  ef0b51a362b8764cf6b0628ed16b2dde  gcc/tree-vect-slp-patterns.cc
! 9136f1f28ed76d0dd737074abc82bad2  gcc/tree-vect-slp.cc
! 869589c9d9d30dd6d1c4b36f06f34046  gcc/tree-vect-stmts.cc
  42032e04f389a2e0f43fbb46ac091dac  gcc/tree-vector-builder.cc
  4a1b4947e64a076fdca46d14aab2181f  gcc/tree-vector-builder.h
  29624134a45fa2e54db69b6ee376164d  gcc/tree-vectorizer.cc
*************** d26583cbbddfb0c82d15d845129a84da  libcpp
*** 130768,130774 ****
  513bef3dd142eee93a5ab0328c142287  libcpp/makeuname2c.cc
  6544ec5e82ba4b4cf48c5cde6ecbd7e0  libcpp/mkdeps.cc
  a7f5b54d144fd860606986c00f6a78e9  libcpp/pch.cc
! 24819f528ab44a0743b34f4e0343484c  libcpp/po/ChangeLog
  dad91056edfeea82b8282e6f9a27188e  libcpp/po/be.po
  c29e7314c960f426112db55835fc5a58  libcpp/po/ca.po
  566390fb94e511353374f19347e8e85c  libcpp/po/cpplib.pot
--- 130817,130823 ----
  513bef3dd142eee93a5ab0328c142287  libcpp/makeuname2c.cc
  6544ec5e82ba4b4cf48c5cde6ecbd7e0  libcpp/mkdeps.cc
  a7f5b54d144fd860606986c00f6a78e9  libcpp/pch.cc
! 4e2ca8cdca88ca04e838ff0cdbe3b523  libcpp/po/ChangeLog
  dad91056edfeea82b8282e6f9a27188e  libcpp/po/be.po
  c29e7314c960f426112db55835fc5a58  libcpp/po/ca.po
  566390fb94e511353374f19347e8e85c  libcpp/po/cpplib.pot
*************** fc49680d0c6e77e437523ea496a6b8c4  libga6
*** 131284,131292 ****
  095aff369c31681c96b933fbedd8e05f  libga68/posix.a68
  b0d017b83148520411f1c1ebdbf28b58  libga68/sppp.awk
  cd3da7bd958f98b310cbf50e009841c2  libga68/standard.a68.in
! 98a98b8f18e6bbcf9b588e3c21490ea5  libgcc/ChangeLog
  9ce0b8c50fec68eb0555ae800e4e457e  libgcc/Makefile.in
! 0dafba01dbe15f4c680f6fe25dd268f1  libgcc/config.host
  46412830a2ee8a02503ccc921912c3cf  libgcc/config.in
  453dd2d1f5f7e9b0683ae1c960ef7eac  libgcc/config/aarch64/__aarch64_have_sme.c
  eb163fd195dca13a6d0d216955877234  libgcc/config/aarch64/__arm_get_current_vg.S
--- 131333,131341 ----
  095aff369c31681c96b933fbedd8e05f  libga68/posix.a68
  b0d017b83148520411f1c1ebdbf28b58  libga68/sppp.awk
  cd3da7bd958f98b310cbf50e009841c2  libga68/standard.a68.in
! de99c180067cb1260ee864c07de61d1a  libgcc/ChangeLog
  9ce0b8c50fec68eb0555ae800e4e457e  libgcc/Makefile.in
! 2b9348444d9de49bc1530dca76b52015  libgcc/config.host
  46412830a2ee8a02503ccc921912c3cf  libgcc/config.in
  453dd2d1f5f7e9b0683ae1c960ef7eac  libgcc/config/aarch64/__aarch64_have_sme.c
  eb163fd195dca13a6d0d216955877234  libgcc/config/aarch64/__arm_get_current_vg.S
*************** d1dea04ccca0a3e0d8c326ec80ed9e0b  libgcc
*** 131297,131303 ****
  6c2c3710b9c76f04f3343af5aa6c3492  libgcc/config/aarch64/aarch64-asm.h
  9f312c9f3db89426a0989d3893f9eff5  libgcc/config/aarch64/aarch64-unwind-def.h
  4f5b35f3742a00078d24b0a176ade3f1  libgcc/config/aarch64/aarch64-unwind.h
! a1040b3fecd5383781b772eb395feb3c  libgcc/config/aarch64/cpuinfo.c
  6cc87f33b499891be619a53a7f9be46b  libgcc/config/aarch64/crtfastmath.c
  1d706d7d57d1bc606988c8f2a24906a7  libgcc/config/aarch64/crti.S
  b7e4f2d06c74d19d48bfafcd4a25248a  libgcc/config/aarch64/crtn.S
--- 131346,131352 ----
  6c2c3710b9c76f04f3343af5aa6c3492  libgcc/config/aarch64/aarch64-asm.h
  9f312c9f3db89426a0989d3893f9eff5  libgcc/config/aarch64/aarch64-unwind-def.h
  4f5b35f3742a00078d24b0a176ade3f1  libgcc/config/aarch64/aarch64-unwind.h
! bd96de89003e020f3d23b68bd4e4eb93  libgcc/config/aarch64/cpuinfo.c
  6cc87f33b499891be619a53a7f9be46b  libgcc/config/aarch64/crtfastmath.c
  1d706d7d57d1bc606988c8f2a24906a7  libgcc/config/aarch64/crti.S
  b7e4f2d06c74d19d48bfafcd4a25248a  libgcc/config/aarch64/crtn.S
*************** e285d996cc17616afc2142f182dcf46d  libgcc
*** 131316,131322 ****
  5711e1b4b7c7ceabdfb54e3632fcd89c  libgcc/config/aarch64/t-heap-trampoline
  f6faf82ffcac18f8015a25c68040cc15  libgcc/config/aarch64/t-lse
  c6e6cbb6c43ce130d0d7f7f64a205fd8  libgcc/config/aarch64/t-mingw
- d6586ed230a3a8c33629f331c34c1209  libgcc/config/aarch64/t-no-eh
  a1c468d840900375aadbcb9a871a8cb5  libgcc/config/aarch64/t-softfp
  6b7b0592a1a1796e5b445ce46c3f04c5  libgcc/config/aarch64/value-unwind.h
  f409a970e1f6fdc5e00cbeb6c215b389  libgcc/config/alpha/crtfastmath.c
--- 131365,131370 ----
*************** e831a13e330d0eb6ffa779c755d5fe3d  libgcc
*** 131685,131691 ****
  226cdff862bdab3d98ad952ff21a40a8  libgcc/config/i386/t-mingw32
  5d85ed8e4ae93489c3433d591a68312c  libgcc/config/i386/t-msabi
  0c1d77cb54c2a81694d96a9ff5e8180c  libgcc/config/i386/t-nto
- 12cdd13a4838418e9805277c7b2fcd92  libgcc/config/i386/t-seh-eh
  aae3ba90f7a9172b2dff6b8d61c25735  libgcc/config/i386/t-sjlj-eh
  641dd355005c77e8135f1c6482f1422b  libgcc/config/i386/t-slibgcc-cygming
  97e2e74784f32597a8c5d88288a87562  libgcc/config/i386/t-slibgcc-mingw
--- 131733,131738 ----
*************** b64b6c664626abd9a6b6205a4fb9f929  libgcc
*** 131956,131961 ****
--- 132003,132009 ----
  21a697b3742c466bc6b268a906529ab6  libgcc/config/mingw/t-gthr-win32
  1bbab852ec95edb798886ed925c7e989  libgcc/config/mingw/t-mingw-mcfgthread
  80f832afb70afb11a4a1c2e403944b73  libgcc/config/mingw/t-mingw-pthread
+ 12cdd13a4838418e9805277c7b2fcd92  libgcc/config/mingw/t-seh-eh
  135caffec31ed0dde9914f0d95b90d90  libgcc/config/mips/crtfastmath.c
  99151a2e5affd1acf9c2264d5dd8f2f5  libgcc/config/mips/crti.S
  394c89724b7cfb6b11eba4023e7a814f  libgcc/config/mips/crtn.S
*************** d5f038474fd5faad3f79701cbb81bf30  libgco
*** 132938,132944 ****
  9486776ee88dd841ac94aa73290a74bf  libgcobol/valconv.cc
  3466db9e6fc5748c08c947e71a566c07  libgcobol/valconv.h
  63e4476774f5019f68c29568b23f2478  libgcobol/xmlparse.cc
! c48523e1fdaa03dd503649849dd70bb6  libgfortran/ChangeLog
  d99469a76bfe825683f8d94fe07b508c  libgfortran/ChangeLog-2002
  522fdb2df6cefe6bcaed3c7c7311eae1  libgfortran/ChangeLog-2003
  5a3a93e76d878d063aba66079340cfe0  libgfortran/ChangeLog-2004
--- 132986,132992 ----
  9486776ee88dd841ac94aa73290a74bf  libgcobol/valconv.cc
  3466db9e6fc5748c08c947e71a566c07  libgcobol/valconv.h
  63e4476774f5019f68c29568b23f2478  libgcobol/xmlparse.cc
! a2a796aef37f8bd94cb37a751f25f4f2  libgfortran/ChangeLog
  d99469a76bfe825683f8d94fe07b508c  libgfortran/ChangeLog-2002
  522fdb2df6cefe6bcaed3c7c7311eae1  libgfortran/ChangeLog-2003
  5a3a93e76d878d063aba66079340cfe0  libgfortran/ChangeLog-2004
*************** ebf5c1c3a8e1e5c5750ec00d6a3db5f2  libgfo
*** 132984,132992 ****
  1af560fedc23042851aecb06f4b853b8  libgfortran/caf/shmem/counter_barrier.h
  837c711c57953134789345afcb9434d2  libgfortran/caf/shmem/hashmap.c
  e7927e8ac37aadde10166d102f91e8c7  libgfortran/caf/shmem/hashmap.h
! 1ea17ac85b0faf40c619472fab273ede  libgfortran/caf/shmem/shared_memory.c
  32a2b4ba6f617c2bfb0f03bd996afc8c  libgfortran/caf/shmem/shared_memory.h
! 0da7c99501fdc0fb7d75abf382331955  libgfortran/caf/shmem/supervisor.c
  7aca4f000daf6108f7739c66259f8fd4  libgfortran/caf/shmem/supervisor.h
  42306556bde23093798070a6878ae066  libgfortran/caf/shmem/sync.c
  998172b736d35eaa5b2f431248ffc781  libgfortran/caf/shmem/sync.h
--- 133032,133040 ----
  1af560fedc23042851aecb06f4b853b8  libgfortran/caf/shmem/counter_barrier.h
  837c711c57953134789345afcb9434d2  libgfortran/caf/shmem/hashmap.c
  e7927e8ac37aadde10166d102f91e8c7  libgfortran/caf/shmem/hashmap.h
! 5b82673a763b4e2c7db4011cc0dbffbe  libgfortran/caf/shmem/shared_memory.c
  32a2b4ba6f617c2bfb0f03bd996afc8c  libgfortran/caf/shmem/shared_memory.h
! 3552294349776026bacfc07236aff05b  libgfortran/caf/shmem/supervisor.c
  7aca4f000daf6108f7739c66259f8fd4  libgfortran/caf/shmem/supervisor.h
  42306556bde23093798070a6878ae066  libgfortran/caf/shmem/sync.c
  998172b736d35eaa5b2f431248ffc781  libgfortran/caf/shmem/sync.h
*************** e7927e8ac37aadde10166d102f91e8c7  libgfo
*** 132995,133001 ****
  b2b65ee692b191d3ef51734a1316c6ab  libgfortran/caf/shmem/thread_support.c
  80fb39bb4d1dde28283539a76db11ec0  libgfortran/caf/shmem/thread_support.h
  1e516cc9226f1e63c9fb8039a798a31e  libgfortran/caf/single.c
! 56a8fd627a0ee6a091ef5c9877656389  libgfortran/config.h.in
  c3cb798c6d9f19a5c854b16c133da31d  libgfortran/config/fpu-387.h
  887929d7578664b9442e4bee95f386f7  libgfortran/config/fpu-aarch64.h
  3bea843eefdc6b5d90f9ae3efa3d873a  libgfortran/config/fpu-aix.h
--- 133043,133049 ----
  b2b65ee692b191d3ef51734a1316c6ab  libgfortran/caf/shmem/thread_support.c
  80fb39bb4d1dde28283539a76db11ec0  libgfortran/caf/shmem/thread_support.h
  1e516cc9226f1e63c9fb8039a798a31e  libgfortran/caf/single.c
! 7a6ec8aeacc22a6626157daea7f1fbfd  libgfortran/config.h.in
  c3cb798c6d9f19a5c854b16c133da31d  libgfortran/config/fpu-387.h
  887929d7578664b9442e4bee95f386f7  libgfortran/config/fpu-aarch64.h
  3bea843eefdc6b5d90f9ae3efa3d873a  libgfortran/config/fpu-aix.h
*************** ac74e4020ecd3c7da1e7f62154e313ae  libgfo
*** 133005,133011 ****
  a3016b0ad57cd1fac79d02298c4bb67e  libgfortran/config/fpu-sysv.h
  f9917563df7bac5d534cef935bdce401  libgfortran/config/t-aix
  3e9dd2029734b8f2c6a1eb2a364d1cbf  libgfortran/config/t-nvptx
! c1afdbc735973441165150763f4eb18d  libgfortran/configure
  358bcc72fb1e862659455203dd5ee6d1  libgfortran/configure.ac
  78e88d1cf66770f3359f0a232708eb4b  libgfortran/configure.host
  af09dd745a601ab5f0fb73fde635b041  libgfortran/generated/_abs_c10.F90
--- 133053,133059 ----
  a3016b0ad57cd1fac79d02298c4bb67e  libgfortran/config/fpu-sysv.h
  f9917563df7bac5d534cef935bdce401  libgfortran/config/t-aix
  3e9dd2029734b8f2c6a1eb2a364d1cbf  libgfortran/config/t-nvptx
! f657190b45328b1a5ef909065916b880  libgfortran/configure
  358bcc72fb1e862659455203dd5ee6d1  libgfortran/configure.ac
  78e88d1cf66770f3359f0a232708eb4b  libgfortran/configure.host
  af09dd745a601ab5f0fb73fde635b041  libgfortran/generated/_abs_c10.F90
*************** a3a7e9ca6057da9ca42e03e41e1c73f7  libgo/
*** 139526,139532 ****
  dcdf1b680b15b372bdb64cc5107d51b6  libgo/testsuite/libgo-test-support.exp.in
  bf162aa572f7b96b25dbd2b027845d32  libgo/testsuite/libgo.testmain/testmain.exp
  cc9d2a0e34e31ba866a8caf9f46f48f3  libgomp/.gitattributes
! 36a459fa0c41df1fc95563e2fb7e0661  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
  714e3b9c0810a61df01246c2a97e825a  libgomp/Makefile.am
  ebb578201b0bfde5d8221fca34ee44c4  libgomp/Makefile.in
--- 139574,139580 ----
  dcdf1b680b15b372bdb64cc5107d51b6  libgo/testsuite/libgo-test-support.exp.in
  bf162aa572f7b96b25dbd2b027845d32  libgo/testsuite/libgo.testmain/testmain.exp
  cc9d2a0e34e31ba866a8caf9f46f48f3  libgomp/.gitattributes
! 5bb1c77903976770a9e0be8f93124f8a  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
  714e3b9c0810a61df01246c2a97e825a  libgomp/Makefile.am
  ebb578201b0bfde5d8221fca34ee44c4  libgomp/Makefile.in
*************** d1c33a8b5e0f3d9a19ffe583f8e72f56  libgru
*** 143145,143151 ****
  c21183b1df7f7afb240d765035277db1  libgrust/rustc-lib/version-info
  99c2e5e712b990ee07be10f53e41f3fb  libiberty/.gitignore
  a916467b91076e631dd8edb7424769c7  libiberty/COPYING.LIB
! c6f65ba3e3fb1f3f5c74b845126ff1a2  libiberty/ChangeLog
  347c31392973de6a4872d540c1718dc1  libiberty/ChangeLog.jit
  de0b0731d5d06e748df71e896c6078a5  libiberty/Makefile.in
  8b93d0e0369daed24e2260ccfd102eb3  libiberty/README
--- 143193,143199 ----
  c21183b1df7f7afb240d765035277db1  libgrust/rustc-lib/version-info
  99c2e5e712b990ee07be10f53e41f3fb  libiberty/.gitignore
  a916467b91076e631dd8edb7424769c7  libiberty/COPYING.LIB
! 1def024f9aca76c2faf15e9774271943  libiberty/ChangeLog
  347c31392973de6a4872d540c1718dc1  libiberty/ChangeLog.jit
  de0b0731d5d06e748df71e896c6078a5  libiberty/Makefile.in
  8b93d0e0369daed24e2260ccfd102eb3  libiberty/README
*************** fd7b0f956a27a9c003becee0f7127dc9  libibe
*** 143258,143264 ****
  0f48244c3d903b42615870ec6763e7dd  libiberty/simple-object-elf.c
  5eea7a0264697812cc1cb751094bb348  libiberty/simple-object-mach-o.c
  d66a370bb6427e3e775064e74b0a4f86  libiberty/simple-object-xcoff.c
! b05d9518efe43e4dccde122127e46e6b  libiberty/simple-object.c
  4863a11e04a2021af582edf86f156954  libiberty/simple-object.txh
  c888635c772cbeac48ae318b1a9cac59  libiberty/snprintf.c
  bf663d93c7c95b9c7708bef84e6c7fc4  libiberty/sort.c
--- 143306,143312 ----
  0f48244c3d903b42615870ec6763e7dd  libiberty/simple-object-elf.c
  5eea7a0264697812cc1cb751094bb348  libiberty/simple-object-mach-o.c
  d66a370bb6427e3e775064e74b0a4f86  libiberty/simple-object-xcoff.c
! d83b0f719987de9d9cc6ea43bd6441b7  libiberty/simple-object.c
  4863a11e04a2021af582edf86f156954  libiberty/simple-object.txh
  c888635c772cbeac48ae318b1a9cac59  libiberty/snprintf.c
  bf663d93c7c95b9c7708bef84e6c7fc4  libiberty/sort.c
*************** a73d560a3ba317c5ad0a7919d87b4b6d  libssp
*** 145149,145155 ****
  7d75fa0d30318408fe4cd91d9cbe3ac7  libssp/vsnprintf-chk.c
  e9ff0f4bdd1be75a507480ed1267459d  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! fa2d0c90a58de38ad85d0940ebefc2b0  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
--- 145197,145203 ----
  7d75fa0d30318408fe4cd91d9cbe3ac7  libssp/vsnprintf-chk.c
  e9ff0f4bdd1be75a507480ed1267459d  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! 61f45687c3a5c9457d94d6916bdd8bdb  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** f053b22f5819f7ed1f6ed5ffe14dc5a3  libstd
*** 145859,145865 ****
  6f26512074a75529ba29871026bd71d5  libstdc++-v3/include/bits/fs_dir.h
  2a39eb878ffd3fb88661d1eeaab059dd  libstdc++-v3/include/bits/fs_fwd.h
  3ef9bc83cb8c079eb15ebfb1a50ab14b  libstdc++-v3/include/bits/fs_ops.h
! f1f4b17886751071689a063b7eb79e89  libstdc++-v3/include/bits/fs_path.h
  c2f893fbd3fb2e778cc648a1e309d2f5  libstdc++-v3/include/bits/fstream.tcc
  a7fdff0e3cbc9de43937f64f26f7b528  libstdc++-v3/include/bits/funcref_impl.h
  e77032281bd301430e499d5bb46db4a1  libstdc++-v3/include/bits/functexcept.h
--- 145907,145913 ----
  6f26512074a75529ba29871026bd71d5  libstdc++-v3/include/bits/fs_dir.h
  2a39eb878ffd3fb88661d1eeaab059dd  libstdc++-v3/include/bits/fs_fwd.h
  3ef9bc83cb8c079eb15ebfb1a50ab14b  libstdc++-v3/include/bits/fs_ops.h
! e537fce403d66fa1efeb8d9265be9c0f  libstdc++-v3/include/bits/fs_path.h
  c2f893fbd3fb2e778cc648a1e309d2f5  libstdc++-v3/include/bits/fstream.tcc
  a7fdff0e3cbc9de43937f64f26f7b528  libstdc++-v3/include/bits/funcref_impl.h
  e77032281bd301430e499d5bb46db4a1  libstdc++-v3/include/bits/functexcept.h
*************** e77032281bd301430e499d5bb46db4a1  libstd
*** 145867,145874 ****
  76d369b48d0ecf0eabf5ba98117636b2  libstdc++-v3/include/bits/funcwrap.h
  a437a10ba7525a3935bec765a5604a4f  libstdc++-v3/include/bits/gslice.h
  39aca2727a08f07f0043ee164eaa09a4  libstdc++-v3/include/bits/gslice_array.h
! 1773f2cf2b816c5909a3f4540395f895  libstdc++-v3/include/bits/hashtable.h
! 36aca6e3e79dd2db864e8df1b15f002d  libstdc++-v3/include/bits/hashtable_policy.h
  95eb0b92d5c9a8ddf313e412fee97770  libstdc++-v3/include/bits/indirect.h
  286812f00b93c6b48c444cf624dc6983  libstdc++-v3/include/bits/indirect_array.h
  02fc060959019f916137494b7725ead3  libstdc++-v3/include/bits/intcmp.h
--- 145915,145922 ----
  76d369b48d0ecf0eabf5ba98117636b2  libstdc++-v3/include/bits/funcwrap.h
  a437a10ba7525a3935bec765a5604a4f  libstdc++-v3/include/bits/gslice.h
  39aca2727a08f07f0043ee164eaa09a4  libstdc++-v3/include/bits/gslice_array.h
! c54a2bf350f6bc9b6cc9a91ee9728c5a  libstdc++-v3/include/bits/hashtable.h
! 5355ab483dbe848e187a9e1f0d9a1e81  libstdc++-v3/include/bits/hashtable_policy.h
  95eb0b92d5c9a8ddf313e412fee97770  libstdc++-v3/include/bits/indirect.h
  286812f00b93c6b48c444cf624dc6983  libstdc++-v3/include/bits/indirect_array.h
  02fc060959019f916137494b7725ead3  libstdc++-v3/include/bits/intcmp.h
*************** eba2c9ee0f0d650f6223eb4f40e83b02  libstd
*** 145919,145925 ****
  95b0223d89eb3c556603e4541958028d  libstdc++-v3/include/bits/regex.tcc
  d62176e59366818434c2a0ad6ef3b77b  libstdc++-v3/include/bits/regex_automaton.h
  7f7a38e87eaa1a1df665e82e34676187  libstdc++-v3/include/bits/regex_automaton.tcc
! 1bcc93fd798e3cfceb03153cece2319c  libstdc++-v3/include/bits/regex_compiler.h
  491f2e1710d8e0ee4cbfadbbd2892662  libstdc++-v3/include/bits/regex_compiler.tcc
  d3f233b7eec1704a8dbae3ba302cd591  libstdc++-v3/include/bits/regex_constants.h
  50ec2de0a344b64a276e732b37641aae  libstdc++-v3/include/bits/regex_error.h
--- 145967,145973 ----
  95b0223d89eb3c556603e4541958028d  libstdc++-v3/include/bits/regex.tcc
  d62176e59366818434c2a0ad6ef3b77b  libstdc++-v3/include/bits/regex_automaton.h
  7f7a38e87eaa1a1df665e82e34676187  libstdc++-v3/include/bits/regex_automaton.tcc
! b7326fd9eeb7faad6b76163d33684925  libstdc++-v3/include/bits/regex_compiler.h
  491f2e1710d8e0ee4cbfadbbd2892662  libstdc++-v3/include/bits/regex_compiler.tcc
  d3f233b7eec1704a8dbae3ba302cd591  libstdc++-v3/include/bits/regex_constants.h
  50ec2de0a344b64a276e732b37641aae  libstdc++-v3/include/bits/regex_error.h
*************** bd2e27c602ee02023df28ac89c0ad816  libstd
*** 145955,145961 ****
  08f3002267b4b29c0a28c75c6da5cf82  libstdc++-v3/include/bits/stl_iterator_base_funcs.h
  e8556ffa25de8ce12d02235826b7f595  libstdc++-v3/include/bits/stl_iterator_base_types.h
  0b716dbdfa551e19bc190dc3329971b4  libstdc++-v3/include/bits/stl_list.h
! f0dfe5e9bcfea27b41b1eb6c72204ac7  libstdc++-v3/include/bits/stl_map.h
  ffa344f61cf489be8d6b4b4c50bf5043  libstdc++-v3/include/bits/stl_multimap.h
  0c8e2dae6126ed4fad55da6b9aa553bc  libstdc++-v3/include/bits/stl_multiset.h
  a6a59bb1a7d77735fcea0ae5adfd387a  libstdc++-v3/include/bits/stl_numeric.h
--- 146003,146009 ----
  08f3002267b4b29c0a28c75c6da5cf82  libstdc++-v3/include/bits/stl_iterator_base_funcs.h
  e8556ffa25de8ce12d02235826b7f595  libstdc++-v3/include/bits/stl_iterator_base_types.h
  0b716dbdfa551e19bc190dc3329971b4  libstdc++-v3/include/bits/stl_list.h
! 9eabe306b41395cad23fba00fb3272bd  libstdc++-v3/include/bits/stl_map.h
  ffa344f61cf489be8d6b4b4c50bf5043  libstdc++-v3/include/bits/stl_multimap.h
  0c8e2dae6126ed4fad55da6b9aa553bc  libstdc++-v3/include/bits/stl_multiset.h
  a6a59bb1a7d77735fcea0ae5adfd387a  libstdc++-v3/include/bits/stl_numeric.h
*************** a6a59bb1a7d77735fcea0ae5adfd387a  libstd
*** 145963,145972 ****
  fbc48edc025e7c818e5275b166c99273  libstdc++-v3/include/bits/stl_queue.h
  c5fe27c6f3b2737405f15913f248aa5f  libstdc++-v3/include/bits/stl_raw_storage_iter.h
  c786caa278e3160f3daa8327ee1002a1  libstdc++-v3/include/bits/stl_relops.h
! 2e309a117b1fec85cdcd81e28d207748  libstdc++-v3/include/bits/stl_set.h
  2e947ba181d169443bd32dfa77c0e138  libstdc++-v3/include/bits/stl_stack.h
  ab35557852793a413e25819ddee53990  libstdc++-v3/include/bits/stl_tempbuf.h
! ac9eb66129112ec11bcc7c7ed83d7313  libstdc++-v3/include/bits/stl_tree.h
  7335f212f65e8e6b7a27886bc7ea7c4e  libstdc++-v3/include/bits/stl_uninitialized.h
  fa6a2197d9927c61c24b530816008594  libstdc++-v3/include/bits/stl_vector.h
  96570e9668a903cd69d5febdf0595994  libstdc++-v3/include/bits/stream_iterator.h
--- 146011,146020 ----
  fbc48edc025e7c818e5275b166c99273  libstdc++-v3/include/bits/stl_queue.h
  c5fe27c6f3b2737405f15913f248aa5f  libstdc++-v3/include/bits/stl_raw_storage_iter.h
  c786caa278e3160f3daa8327ee1002a1  libstdc++-v3/include/bits/stl_relops.h
! fd681bc8fff37ce524a3ff77a7645f33  libstdc++-v3/include/bits/stl_set.h
  2e947ba181d169443bd32dfa77c0e138  libstdc++-v3/include/bits/stl_stack.h
  ab35557852793a413e25819ddee53990  libstdc++-v3/include/bits/stl_tempbuf.h
! 174d90b3517e6902a73d75b9860b3408  libstdc++-v3/include/bits/stl_tree.h
  7335f212f65e8e6b7a27886bc7ea7c4e  libstdc++-v3/include/bits/stl_uninitialized.h
  fa6a2197d9927c61c24b530816008594  libstdc++-v3/include/bits/stl_vector.h
  96570e9668a903cd69d5febdf0595994  libstdc++-v3/include/bits/stream_iterator.h
*************** a315f61009849bba79498b388f94c177  libstd
*** 145981,145988 ****
  3d2b88f1657e6f77a55d546f589e7415  libstdc++-v3/include/bits/uniform_int_dist.h
  966bb21f0f44c4b2b6e713e62aeb90ae  libstdc++-v3/include/bits/unique_lock.h
  a911e8012ebb64890a0e12c16e4345ed  libstdc++-v3/include/bits/unique_ptr.h
! 6d7c0d0c0e03883b31759b97046758e8  libstdc++-v3/include/bits/unordered_map.h
! 70fbe494b0eb57905d4ae41e2ba3a8b8  libstdc++-v3/include/bits/unordered_set.h
  4fbbeaf99e17abfaf62cec53ac3c9193  libstdc++-v3/include/bits/uses_allocator.h
  9d01cfbd90824dde5e36d65c0c160ad5  libstdc++-v3/include/bits/uses_allocator_args.h
  cc888ad11b5889a85843f6fa7a0611f5  libstdc++-v3/include/bits/utility.h
--- 146029,146036 ----
  3d2b88f1657e6f77a55d546f589e7415  libstdc++-v3/include/bits/uniform_int_dist.h
  966bb21f0f44c4b2b6e713e62aeb90ae  libstdc++-v3/include/bits/unique_lock.h
  a911e8012ebb64890a0e12c16e4345ed  libstdc++-v3/include/bits/unique_ptr.h
! 2b09c3270b98aeb2f01b0719d2f73e27  libstdc++-v3/include/bits/unordered_map.h
! 6285bd49bf5d7a152ec9262daf5fa447  libstdc++-v3/include/bits/unordered_set.h
  4fbbeaf99e17abfaf62cec53ac3c9193  libstdc++-v3/include/bits/uses_allocator.h
  9d01cfbd90824dde5e36d65c0c160ad5  libstdc++-v3/include/bits/uses_allocator_args.h
  cc888ad11b5889a85843f6fa7a0611f5  libstdc++-v3/include/bits/utility.h
*************** d1cf5a35c4ad3820cb023d8f84762cc7  libstd
*** 145991,145998 ****
  ddd4bdc2fa29f8f2aa3386cead9ebcb2  libstdc++-v3/include/bits/valarray_array.tcc
  16c6db3f5b1e7b3e37c3febbf4dc4e8c  libstdc++-v3/include/bits/valarray_before.h
  5a7dd3eca21d4650e654ea51da466c59  libstdc++-v3/include/bits/vector.tcc
! 2ce40a0d7316843536325f43a2019ac4  libstdc++-v3/include/bits/version.def
! e1df21e58d4d89c2fe1adacec72b7324  libstdc++-v3/include/bits/version.h
  f92789aa59d1ed5207e13c936667059d  libstdc++-v3/include/bits/version.tpl
  d99b1b69e5f87e5a631c8a881d053766  libstdc++-v3/include/c/cassert
  7f5b12607c4d7cbbcf705b672613447b  libstdc++-v3/include/c/cctype
--- 146039,146046 ----
  ddd4bdc2fa29f8f2aa3386cead9ebcb2  libstdc++-v3/include/bits/valarray_array.tcc
  16c6db3f5b1e7b3e37c3febbf4dc4e8c  libstdc++-v3/include/bits/valarray_before.h
  5a7dd3eca21d4650e654ea51da466c59  libstdc++-v3/include/bits/vector.tcc
! 0f12b79a764775b656641d02a690ac9d  libstdc++-v3/include/bits/version.def
! 1ad240d3ca20aa82510bfd4ec723ac4b  libstdc++-v3/include/bits/version.h
  f92789aa59d1ed5207e13c936667059d  libstdc++-v3/include/bits/version.tpl
  d99b1b69e5f87e5a631c8a881d053766  libstdc++-v3/include/c/cassert
  7f5b12607c4d7cbbcf705b672613447b  libstdc++-v3/include/c/cctype
*************** ddcad2ef48c62d7053209fd20d56de52  libstd
*** 146093,146105 ****
  7fdb7557490d0ace3e8a0ba82440b63b  libstdc++-v3/include/debug/deque
  baa7e2585de42c6e51eb820e90b56c63  libstdc++-v3/include/debug/formatter.h
  4199ddb13d757d5a7c46dbd4527c6eda  libstdc++-v3/include/debug/forward_list
! c72074a7f63bf80ae04cadd106a7041b  libstdc++-v3/include/debug/functions.h
! bd71d671c65cc1f20da69aeb099763cb  libstdc++-v3/include/debug/helper_functions.h
  bc86cb62e462f512b0117c4dfef12789  libstdc++-v3/include/debug/inplace_vector
  f967a7391ba2b17cdc66d9e175a90e06  libstdc++-v3/include/debug/list
  19ec1c383d4909ba5ee9ecb5b6cf6024  libstdc++-v3/include/debug/macros.h
  74765900798729999c3b75d77ac6b179  libstdc++-v3/include/debug/map
! 93d072edf828510a1ae4c0cdca3cba91  libstdc++-v3/include/debug/map.h
  d33f07a2c476cc45af97a78f4020e731  libstdc++-v3/include/debug/multimap.h
  86f440721d11a555ec97526d018eabf7  libstdc++-v3/include/debug/multiset.h
  05b2e599111f72660b0453d2350d1feb  libstdc++-v3/include/debug/safe_base.h
--- 146141,146153 ----
  7fdb7557490d0ace3e8a0ba82440b63b  libstdc++-v3/include/debug/deque
  baa7e2585de42c6e51eb820e90b56c63  libstdc++-v3/include/debug/formatter.h
  4199ddb13d757d5a7c46dbd4527c6eda  libstdc++-v3/include/debug/forward_list
! d95660c2645f7e9361491fcf14b38da3  libstdc++-v3/include/debug/functions.h
! 18233e054900d62697fa627bf4b56b9b  libstdc++-v3/include/debug/helper_functions.h
  bc86cb62e462f512b0117c4dfef12789  libstdc++-v3/include/debug/inplace_vector
  f967a7391ba2b17cdc66d9e175a90e06  libstdc++-v3/include/debug/list
  19ec1c383d4909ba5ee9ecb5b6cf6024  libstdc++-v3/include/debug/macros.h
  74765900798729999c3b75d77ac6b179  libstdc++-v3/include/debug/map
! 7dc5bf4d880114b1ba17398977a2d2ca  libstdc++-v3/include/debug/map.h
  d33f07a2c476cc45af97a78f4020e731  libstdc++-v3/include/debug/multimap.h
  86f440721d11a555ec97526d018eabf7  libstdc++-v3/include/debug/multiset.h
  05b2e599111f72660b0453d2350d1feb  libstdc++-v3/include/debug/safe_base.h
*************** c623155558d82a21f1f31630a36eca85  libstd
*** 146111,146124 ****
  392e27915296eb29f6bdecbb19f55342  libstdc++-v3/include/debug/safe_sequence.h
  8d1537993d217646970f1b966af4b73f  libstdc++-v3/include/debug/safe_sequence.tcc
  d50a83aff93b89a5438f2854774f452b  libstdc++-v3/include/debug/safe_unordered_base.h
! 7373eb2a105eb19da61db7304043f7b9  libstdc++-v3/include/debug/safe_unordered_container.h
! 937bc696e0a11a83462e796404e73054  libstdc++-v3/include/debug/safe_unordered_container.tcc
  995ba6e76562637a31c8fa671052d734  libstdc++-v3/include/debug/set
! 7020bfffc1a9ef153a0b47ebe7678f1e  libstdc++-v3/include/debug/set.h
  96d411ed834e01fdb383e36bfc0cec51  libstdc++-v3/include/debug/stl_iterator.h
  0cd39d2918072d9eaee76a5aeaa86d29  libstdc++-v3/include/debug/string
! 201d04027b50f81653a448c98364d1b3  libstdc++-v3/include/debug/unordered_map
! 17150041609ac214cde99cd3349faa8c  libstdc++-v3/include/debug/unordered_set
  6623cb54a3a91bb96aee3df30de2b717  libstdc++-v3/include/debug/vector
  bd768b905048126ba3c8ccfc9f5d7c30  libstdc++-v3/include/decimal/decimal
  cb86182d3c0277ef7f96801aaf93d5b0  libstdc++-v3/include/decimal/decimal.h
--- 146159,146172 ----
  392e27915296eb29f6bdecbb19f55342  libstdc++-v3/include/debug/safe_sequence.h
  8d1537993d217646970f1b966af4b73f  libstdc++-v3/include/debug/safe_sequence.tcc
  d50a83aff93b89a5438f2854774f452b  libstdc++-v3/include/debug/safe_unordered_base.h
! f91ad76fdf9c8fa108df1249c27a6a62  libstdc++-v3/include/debug/safe_unordered_container.h
! 6d9dc6ce3be6995e0a3de56df57d843f  libstdc++-v3/include/debug/safe_unordered_container.tcc
  995ba6e76562637a31c8fa671052d734  libstdc++-v3/include/debug/set
! b922ccf9b7c37515224ce52d1fb1d177  libstdc++-v3/include/debug/set.h
  96d411ed834e01fdb383e36bfc0cec51  libstdc++-v3/include/debug/stl_iterator.h
  0cd39d2918072d9eaee76a5aeaa86d29  libstdc++-v3/include/debug/string
! b493a4998a52a7ca9c12ee6a68a93611  libstdc++-v3/include/debug/unordered_map
! 4774bf209805ae454bdffc2ab5328851  libstdc++-v3/include/debug/unordered_set
  6623cb54a3a91bb96aee3df30de2b717  libstdc++-v3/include/debug/vector
  bd768b905048126ba3c8ccfc9f5d7c30  libstdc++-v3/include/decimal/decimal
  cb86182d3c0277ef7f96801aaf93d5b0  libstdc++-v3/include/decimal/decimal.h
*************** f1cc3238df41adc204bc4f90accc63f3  libstd
*** 146541,146550 ****
  4598b57244995567c24672d3c0cdb7b3  libstdc++-v3/include/std/algorithm
  f1c08a4c9a736109edfd3c39c60c1669  libstdc++-v3/include/std/any
  7eec97c02f2ad002721647488d07f1d7  libstdc++-v3/include/std/array
! 68cc4ac26c2e097b814d54bf8823b454  libstdc++-v3/include/std/atomic
  43d5b40ea90d5c416339579b4b867b3f  libstdc++-v3/include/std/barrier
  085ec2d298f0be079b303330b81b05d1  libstdc++-v3/include/std/bit
! c3ffcd8b87d4589e457faa7a3a7601d6  libstdc++-v3/include/std/bitset
  221c225c0ffb7ac1a214c4da510bfdcc  libstdc++-v3/include/std/charconv
  f626b898ff7fcaf45e839e0aaaf8b995  libstdc++-v3/include/std/chrono
  6250fdc57cc9fcf4c5cc699808a8871f  libstdc++-v3/include/std/codecvt
--- 146589,146598 ----
  4598b57244995567c24672d3c0cdb7b3  libstdc++-v3/include/std/algorithm
  f1c08a4c9a736109edfd3c39c60c1669  libstdc++-v3/include/std/any
  7eec97c02f2ad002721647488d07f1d7  libstdc++-v3/include/std/array
! 296bd89909b318bdabaa47ea5703c2b3  libstdc++-v3/include/std/atomic
  43d5b40ea90d5c416339579b4b867b3f  libstdc++-v3/include/std/barrier
  085ec2d298f0be079b303330b81b05d1  libstdc++-v3/include/std/bit
! 2f7194edee13481e4e56129caf4cc769  libstdc++-v3/include/std/bitset
  221c225c0ffb7ac1a214c4da510bfdcc  libstdc++-v3/include/std/charconv
  f626b898ff7fcaf45e839e0aaaf8b995  libstdc++-v3/include/std/chrono
  6250fdc57cc9fcf4c5cc699808a8871f  libstdc++-v3/include/std/codecvt
*************** eaba00749e45860b0ef18ff847c1a79d  libstd
*** 146556,146566 ****
  f945d16289e71c13744e7d9177de9ccc  libstdc++-v3/include/std/debugging
  7d736af3f0c3ef350561362e2e73c5a6  libstdc++-v3/include/std/deque
  649d9183a0fa35d50371bb1bce3f70c2  libstdc++-v3/include/std/execution
! cf1ce3b9ae9b0bf218dd78fc89d04300  libstdc++-v3/include/std/expected
  d1dc8325fc8c069a07bab71a935bced3  libstdc++-v3/include/std/filesystem
  f004e380db68bad2f1a8548323345a5c  libstdc++-v3/include/std/flat_map
  b384f6e8eb77f0d5747534b3ed9a89cb  libstdc++-v3/include/std/flat_set
! eda2429c066ad12d7ee12dc07ae43773  libstdc++-v3/include/std/format
  7e1c7765d1205d0a0571065e7e1f111d  libstdc++-v3/include/std/forward_list
  c85826e5073be733076e4825a96a991c  libstdc++-v3/include/std/fstream
  1a481560a4cf3d2ef6733f38a1afb84f  libstdc++-v3/include/std/functional
--- 146604,146614 ----
  f945d16289e71c13744e7d9177de9ccc  libstdc++-v3/include/std/debugging
  7d736af3f0c3ef350561362e2e73c5a6  libstdc++-v3/include/std/deque
  649d9183a0fa35d50371bb1bce3f70c2  libstdc++-v3/include/std/execution
! a8e79cb6c591611cd6113eed355c3de6  libstdc++-v3/include/std/expected
  d1dc8325fc8c069a07bab71a935bced3  libstdc++-v3/include/std/filesystem
  f004e380db68bad2f1a8548323345a5c  libstdc++-v3/include/std/flat_map
  b384f6e8eb77f0d5747534b3ed9a89cb  libstdc++-v3/include/std/flat_set
! 07d19d4530594fef1e18b35cee16a02f  libstdc++-v3/include/std/format
  7e1c7765d1205d0a0571065e7e1f111d  libstdc++-v3/include/std/forward_list
  c85826e5073be733076e4825a96a991c  libstdc++-v3/include/std/fstream
  1a481560a4cf3d2ef6733f38a1afb84f  libstdc++-v3/include/std/functional
*************** b33d9f7d5e6dae4596b350ebc5fd6b8f  libstd
*** 146577,146583 ****
  be169e901166777d5be3e557682b7af2  libstdc++-v3/include/std/limits
  2f3eb4865a149d33afc45095dfd51d15  libstdc++-v3/include/std/list
  979d756bd9149a01a697b92c921e75a0  libstdc++-v3/include/std/locale
! fbe9390cea7dfde51f9f111ed20c727d  libstdc++-v3/include/std/map
  d32f4d5de93df38e266253ca53ae1f89  libstdc++-v3/include/std/mdspan
  78c1d1dab9dcd12a4cb99d5911d27568  libstdc++-v3/include/std/memory
  ea0d67f29f1a73f1ccdade0115646a1c  libstdc++-v3/include/std/memory_resource
--- 146625,146631 ----
  be169e901166777d5be3e557682b7af2  libstdc++-v3/include/std/limits
  2f3eb4865a149d33afc45095dfd51d15  libstdc++-v3/include/std/list
  979d756bd9149a01a697b92c921e75a0  libstdc++-v3/include/std/locale
! b9368104d884bddd988db2b9e69ab485  libstdc++-v3/include/std/map
  d32f4d5de93df38e266253ca53ae1f89  libstdc++-v3/include/std/mdspan
  78c1d1dab9dcd12a4cb99d5911d27568  libstdc++-v3/include/std/memory
  ea0d67f29f1a73f1ccdade0115646a1c  libstdc++-v3/include/std/memory_resource
*************** ee576f89ae347224177df91fe86d905d  libstd
*** 146595,146601 ****
  a5c4f3df840ba7c3fbc9b7b9d5567ef2  libstdc++-v3/include/std/regex
  8e6ef0834acfc88dd03f5eae2990e41a  libstdc++-v3/include/std/scoped_allocator
  a53d359dd7618cc0d3f2447f5f60fff3  libstdc++-v3/include/std/semaphore
! 68ab8a6e31a5c6d6520b39be081a44e3  libstdc++-v3/include/std/set
  d9b30ac9f13a2d342a56ff319aca749e  libstdc++-v3/include/std/shared_mutex
  b3171714703fcfc5d8fe69ffe22d9cc8  libstdc++-v3/include/std/source_location
  b5619289ac9c606b19a5eaf5008fe7df  libstdc++-v3/include/std/span
--- 146643,146649 ----
  a5c4f3df840ba7c3fbc9b7b9d5567ef2  libstdc++-v3/include/std/regex
  8e6ef0834acfc88dd03f5eae2990e41a  libstdc++-v3/include/std/scoped_allocator
  a53d359dd7618cc0d3f2447f5f60fff3  libstdc++-v3/include/std/semaphore
! ef61193c582c0e8e18efb7f27f37f833  libstdc++-v3/include/std/set
  d9b30ac9f13a2d342a56ff319aca749e  libstdc++-v3/include/std/shared_mutex
  b3171714703fcfc5d8fe69ffe22d9cc8  libstdc++-v3/include/std/source_location
  b5619289ac9c606b19a5eaf5008fe7df  libstdc++-v3/include/std/span
*************** f5a5ebc7b6133572f8f361cde93ec52f  libstd
*** 146606,146614 ****
  5a01cfa5d80dcfd00d0912607effe056  libstdc++-v3/include/std/stdexcept
  1172bfca0fe1fdb144e0d95b173239d1  libstdc++-v3/include/std/stdfloat
  8000144a02174c1b4e859b4cc4af6301  libstdc++-v3/include/std/stop_token
! 3773b676d041cd3a500431ae737f5859  libstdc++-v3/include/std/streambuf
  76bd18b5fc744472aa3988d57a5928c5  libstdc++-v3/include/std/string
! 9d6f67398a2616b7786c9adeaf643e2c  libstdc++-v3/include/std/string_view
  2357e8bc64ed236c453da02aa0eab3ea  libstdc++-v3/include/std/syncstream
  0574b134b5132494e9294186a6a4511c  libstdc++-v3/include/std/system_error
  608edef7344e2e25c7b00170df6fa9e6  libstdc++-v3/include/std/text_encoding
--- 146654,146662 ----
  5a01cfa5d80dcfd00d0912607effe056  libstdc++-v3/include/std/stdexcept
  1172bfca0fe1fdb144e0d95b173239d1  libstdc++-v3/include/std/stdfloat
  8000144a02174c1b4e859b4cc4af6301  libstdc++-v3/include/std/stop_token
! e6e7d75896bc3f784a372c70020e9d04  libstdc++-v3/include/std/streambuf
  76bd18b5fc744472aa3988d57a5928c5  libstdc++-v3/include/std/string
! f1890d5dbe9c9ef672c11e6397c881b9  libstdc++-v3/include/std/string_view
  2357e8bc64ed236c453da02aa0eab3ea  libstdc++-v3/include/std/syncstream
  0574b134b5132494e9294186a6a4511c  libstdc++-v3/include/std/system_error
  608edef7344e2e25c7b00170df6fa9e6  libstdc++-v3/include/std/text_encoding
*************** f5a5ebc7b6133572f8f361cde93ec52f  libstd
*** 146616,146623 ****
  bf9dc0b041052f9a9e59ac623efd295a  libstdc++-v3/include/std/tuple
  0b1c3fb907e580cb0afc67d1ca0268e0  libstdc++-v3/include/std/type_traits
  66a7939bfcb3a6f5966552f3fb49a384  libstdc++-v3/include/std/typeindex
! c7f5e5532f97d423c06bfcf8f5e5346f  libstdc++-v3/include/std/unordered_map
! ee4e96cfeb6f951ca642e8d6c4c12ee7  libstdc++-v3/include/std/unordered_set
  7f92a82eac9afc94cc840349f66fb7c8  libstdc++-v3/include/std/utility
  bd07fa105994eb5d05ee66c7c9f10b7d  libstdc++-v3/include/std/valarray
  f4935a7b92bee0179976443347292535  libstdc++-v3/include/std/variant
--- 146664,146671 ----
  bf9dc0b041052f9a9e59ac623efd295a  libstdc++-v3/include/std/tuple
  0b1c3fb907e580cb0afc67d1ca0268e0  libstdc++-v3/include/std/type_traits
  66a7939bfcb3a6f5966552f3fb49a384  libstdc++-v3/include/std/typeindex
! 994522acd96f1b6084469da322d17c19  libstdc++-v3/include/std/unordered_map
! 5393bc9d8b494917b25afd3714e8014a  libstdc++-v3/include/std/unordered_set
  7f92a82eac9afc94cc840349f66fb7c8  libstdc++-v3/include/std/utility
  bd07fa105994eb5d05ee66c7c9f10b7d  libstdc++-v3/include/std/valarray
  f4935a7b92bee0179976443347292535  libstdc++-v3/include/std/variant
*************** c9dcdd9b0b5c806e787dc702505f57e1  libstd
*** 146892,146898 ****
  deb1f4d1d9cd6c05167daf4631b56267  libstdc++-v3/src/c++17/floating_to_chars.cc
  ab713104bd5f979c12c01a7037584aa9  libstdc++-v3/src/c++17/fs_dir.cc
  22566e9052cc60799b49194e4a2296be  libstdc++-v3/src/c++17/fs_ops.cc
! 9ab7a218cbf16ffab3187c338c28c523  libstdc++-v3/src/c++17/fs_path.cc
  702e1413956c4c9873d78ce075b24e4e  libstdc++-v3/src/c++17/memory_resource.cc
  5fc15b3f8bf3bb0c0b6b692daffe193e  libstdc++-v3/src/c++17/ostream-inst.cc
  f7696e2f5518e5e873ced4beacb8d107  libstdc++-v3/src/c++17/ryu/LOCAL_PATCHES
--- 146940,146946 ----
  deb1f4d1d9cd6c05167daf4631b56267  libstdc++-v3/src/c++17/floating_to_chars.cc
  ab713104bd5f979c12c01a7037584aa9  libstdc++-v3/src/c++17/fs_dir.cc
  22566e9052cc60799b49194e4a2296be  libstdc++-v3/src/c++17/fs_ops.cc
! 8d632f182ac98fb214bc28ee5c0e45a1  libstdc++-v3/src/c++17/fs_path.cc
  702e1413956c4c9873d78ce075b24e4e  libstdc++-v3/src/c++17/memory_resource.cc
  5fc15b3f8bf3bb0c0b6b692daffe193e  libstdc++-v3/src/c++17/ostream-inst.cc
  f7696e2f5518e5e873ced4beacb8d107  libstdc++-v3/src/c++17/ryu/LOCAL_PATCHES
*************** c0edeeaaf9a022df2a3ca636e28ac7f2  libstd
*** 147425,147432 ****
--- 147473,147485 ----
  3b84ebf0c9a974f5f5e873ace50bdc2f  libstdc++-v3/testsuite/20_util/bitset/121054.cc
  27b97107d70f673ab11441621b049a0a  libstdc++-v3/testsuite/20_util/bitset/18604.cc
  466a96d6727812ce897a9095b374779b  libstdc++-v3/testsuite/20_util/bitset/45713.cc
+ 2047271876b091f06c4e2c0c833658db  libstdc++-v3/testsuite/20_util/bitset/access/118341_neg1.cc
+ e5fcb5f023bfc3d27671aa858bd578e5  libstdc++-v3/testsuite/20_util/bitset/access/118341_neg2.cc
+ ef5ce132b10534bed9b3ad7fdd12c45b  libstdc++-v3/testsuite/20_util/bitset/access/118341_smoke.cc
  0be3c1005581d429a9faed927cfeb925  libstdc++-v3/testsuite/20_util/bitset/access/constexpr.cc
  43d71c85a4ec0e174c7f0b853dbd8d54  libstdc++-v3/testsuite/20_util/bitset/access/dr396.cc
+ a6b86f8a55e9b1eead484667cf6253fb  libstdc++-v3/testsuite/20_util/bitset/access/subscript.cc
+ ccca031a446625e2bda8a0f43d00b14f  libstdc++-v3/testsuite/20_util/bitset/access/subscript_const_neg.cc
  12a0b968a4d225ad6b88e083c68c47b0  libstdc++-v3/testsuite/20_util/bitset/access/to_string.cc
  452eacf2d6bce2bfb99d016c5bf76d34  libstdc++-v3/testsuite/20_util/bitset/access/to_ullong.cc
  6d27d7ab5878b6845b879682a8c4a629  libstdc++-v3/testsuite/20_util/bitset/access/to_ulong.cc
*************** a38aea17302645ad4fb50b83d7d27c1b  libstd
*** 147559,147564 ****
--- 147612,147618 ----
  c6b0e6b2516e98ed623f2810bce8343b  libstdc++-v3/testsuite/20_util/exchange/1.cc
  8d74694a29c35fcdb010215deee017de  libstdc++-v3/testsuite/20_util/exchange/constexpr.cc
  54ac023f0845d5c919380e1309b7fb5b  libstdc++-v3/testsuite/20_util/exchange/noexcept.cc
+ 2a4811607204efd3f780f2dd3a56dee3  libstdc++-v3/testsuite/20_util/expected/119197.cc
  b886d3a0593a98cc18b3735af80a8882  libstdc++-v3/testsuite/20_util/expected/119714.cc
  af8a06346aa0e3af134afc89141593df  libstdc++-v3/testsuite/20_util/expected/assign.cc
  e8a5d4c4f0e447896dac59a5a84ec9c0  libstdc++-v3/testsuite/20_util/expected/bad.cc
*************** dee24f2d89f9cfeda5a21b7232d9fccd  libstd
*** 150581,150586 ****
--- 150635,150641 ----
  00acf96e02908db04479269a066646d8  libstdc++-v3/testsuite/23_containers/map/modifiers/erase/end_neg.cc
  eb1848935192587eebbfdc1a32f69b82  libstdc++-v3/testsuite/23_containers/map/modifiers/extract.cc
  fa970dcd0b8af7bf3761f9cc8585fcde  libstdc++-v3/testsuite/23_containers/map/modifiers/hetero/erase.cc
+ 990b9eca968cf65d423dc899e777251d  libstdc++-v3/testsuite/23_containers/map/modifiers/hetero/insert.cc
  9b3c828026424d5d1038ae3d7609f4c7  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/1.cc
  2272bcb8df0f8105aa55b890bc92e701  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/16813.cc
  ba2cdcb5b5eca69b7b8ab683a22f1e04  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/2.cc
*************** c94cfb2ed1f4b7fe8f7ab5c07c4745eb  libstd
*** 150926,150931 ****
--- 150981,150987 ----
  84eebae90487c486688f7475d7fd38e6  libstdc++-v3/testsuite/23_containers/set/modifiers/erase/dr130-linkage-check.cc
  687ddfea02b6a32f9bdc9eadee224ad7  libstdc++-v3/testsuite/23_containers/set/modifiers/extract.cc
  32adda000df6b1f75de5e23a71362f41  libstdc++-v3/testsuite/23_containers/set/modifiers/hetero/erase.cc
+ 198dd8d84c1a0eee2aa95c9d4022f5db  libstdc++-v3/testsuite/23_containers/set/modifiers/hetero/insert.cc
  43403bc296bfbcffaf9c1f499f7a9ae9  libstdc++-v3/testsuite/23_containers/set/modifiers/insert/1.cc
  776c7765eefe362400581db5981b8827  libstdc++-v3/testsuite/23_containers/set/modifiers/insert/2.cc
  55f68bf8edaeebdd286409ff2b4ae308  libstdc++-v3/testsuite/23_containers/set/modifiers/insert/3.cc
*************** bf96d509f3bb8a68f0b9483fc182b6b3  libstd
*** 151111,151116 ****
--- 151167,151173 ----
  60a22af06f9a1e7ae34fbf9396f6eb1c  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/emplace.cc
  0f27bf6cc675b69645ffab40177c6138  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/extract.cc
  160db1cfa3c5d86e97017b0f287d814b  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/hetero/erase.cc
+ c8de8fb8dc3faaf76a5f6a069a35392b  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/hetero/insert.cc
  626219b7a3efc1844d9ebfbc2c950095  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/insert_or_assign.cc
  ad01e00eff3c7f80c31b6f90669ad326  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/insert_range.cc
  0b43e5aebdcd6c568bbccb3f7301b63a  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/merge.cc
*************** b62ff9c81cb7a5d385fec58522e77ed0  libstd
*** 151228,151233 ****
--- 151285,151291 ----
  ed1023af0886cb8732ad2d3ea5aa938c  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/emplace.cc
  034792d8ac3479ee830894edb7c33e5f  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/extract.cc
  8f18eb4e240741bda6417bc25408406b  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/hetero/erase.cc
+ 7f58c379743ba349225e7e56a66f02d7  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/hetero/insert.cc
  73d0c8e42401f6cf69f1f0af0ff90e3a  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/insert_range.cc
  2621d79726565a771366536a36d830ad  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/merge.cc
  1857554ce78bdf0c0a5813031b42f41e  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/reserve.cc
*************** c899f5b982928adbe31126282ddb1599  libstd
*** 151331,151336 ****
--- 151389,151395 ----
  96b28ee79dc5972c013bcd8ae40c587e  libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/emplace.cc
  4366d356c83e4ed113a7195c6b96a46b  libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/extract.cc
  be50715ad11bd926a96072389178a81f  libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/hetero/erase.cc
+ 99133ff04621ce64ad629dc1286383dc  libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/hetero/insert.cc
  c0e606fdb83ff823f737ea8ed1a87a92  libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/insert_range.cc
  6bfddae70b47bed9c4d395bdfc0a4247  libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/merge.cc
  20204aaa16168b1dadf98180f21f1678  libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/reserve.cc
*************** dd25f6c395534aed6d7360bf474438bd  libstd
*** 151458,151463 ****
--- 151517,151523 ----
  bb5e26a4cf39bfbd43ea6a4290218495  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/emplace.cc
  7b3ab6fe39cf60211bfd1c7d0f373a55  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/extract.cc
  3d66fb2dbd65a3afc5ebf6e47c05255f  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/hetero/erase.cc
+ 72ca7165aaba59ef70ddd4e79686f3ed  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/hetero/insert.cc
  c79e310a57e8ab117853a33fda2f3806  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/insert.cc
  0d6ba2efbfbcb910de8b5c5a7482640b  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/insert_range.cc
  3e58cc18025c358982881a419b57461f  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/merge.cc
*************** be996b25c8ef1439ea19bf5195600447  libstd
*** 151810,151816 ****
  d6d11350cf8ab8df03ef7200d4a0780b  libstdc++-v3/testsuite/24_iterators/istream_iterator/requirements/explicit_instantiation.cc
  16fc7fe4ef465e60ef744c7605395b8b  libstdc++-v3/testsuite/24_iterators/istream_iterator/requirements/typedefs.cc
  e569186d63466f61fb9efd8a252846ab  libstdc++-v3/testsuite/24_iterators/istream_iterator/sentinel.cc
! a60604b78130f7f952fdad26c24047e8  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/105580.cc
  760ec72aec19e561ff5ebdd8628478ba  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/2.cc
  056750d63b569b4e5db468fd95af8d9a  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/2627.cc
  1a5f450007f055452b3fb783807645f9  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/92285.cc
--- 151870,151876 ----
  d6d11350cf8ab8df03ef7200d4a0780b  libstdc++-v3/testsuite/24_iterators/istream_iterator/requirements/explicit_instantiation.cc
  16fc7fe4ef465e60ef744c7605395b8b  libstdc++-v3/testsuite/24_iterators/istream_iterator/requirements/typedefs.cc
  e569186d63466f61fb9efd8a252846ab  libstdc++-v3/testsuite/24_iterators/istream_iterator/sentinel.cc
! 862f1dc0fb56816781018a1ce8edff35  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/105580.cc
  760ec72aec19e561ff5ebdd8628478ba  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/2.cc
  056750d63b569b4e5db468fd95af8d9a  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/2627.cc
  1a5f450007f055452b3fb783807645f9  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/92285.cc
*************** c4a0f1988ab64c05d8acb1647b35c6b6  libstd
*** 154170,154175 ****
--- 154230,154239 ----
  832f8d573494c3abf8c0f6500b2032dd  libstdc++-v3/testsuite/27_io/filesystem/operations/copy.cc
  a2aabc0ccf542933e77337b730a20b4e  libstdc++-v3/testsuite/27_io/filesystem/operations/copy_file.cc
  10b6e95add9984bd29138cd25bc3a19f  libstdc++-v3/testsuite/27_io/filesystem/operations/copy_file_108178.cc
+ cffb913862500cfd29affa80e490e98a  libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/1.cc
+ 05dc7e66d0dfa60391d177d38acd0c39  libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/2.cc
+ d9bf221401c7689900c22be0c813dced  libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/3.cc
+ 64e47d79625895207fe2b6d78a89ded6  libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/4.cc
  5fcd86f1a789d066b4a083fe71dabed4  libstdc++-v3/testsuite/27_io/filesystem/operations/create_directories.cc
  c71f77900df86672b089222e0d14255b  libstdc++-v3/testsuite/27_io/filesystem/operations/create_directory.cc
  1a5b1ee849c9982ffc64129da7d6b274  libstdc++-v3/testsuite/27_io/filesystem/operations/create_symlink.cc
*************** f974f6fadf4fc3e716ea96f793a66be8  libstd
*** 154662,154668 ****
  8b7b0b498791a603f2f537f3d5035766  libstdc++-v3/testsuite/29_atomics/atomic/cons/trivial.cc
  1af166c5b6bdcfe858d6133bb80062d3  libstdc++-v3/testsuite/29_atomics/atomic/cons/user_pod.cc
  a05451f608e6909543bc4a6f1e5e6143  libstdc++-v3/testsuite/29_atomics/atomic/cons/value_init.cc
! f2694c990b173c2f406022e2d327a1b7  libstdc++-v3/testsuite/29_atomics/atomic/cons/zero_padding.cc
  6ec8c77bd0b9550e1af1efd741f41ded  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
--- 154726,154732 ----
  8b7b0b498791a603f2f537f3d5035766  libstdc++-v3/testsuite/29_atomics/atomic/cons/trivial.cc
  1af166c5b6bdcfe858d6133bb80062d3  libstdc++-v3/testsuite/29_atomics/atomic/cons/user_pod.cc
  a05451f608e6909543bc4a6f1e5e6143  libstdc++-v3/testsuite/29_atomics/atomic/cons/value_init.cc
! 822ec88a7f5dfe8ce7d354c55824d6bb  libstdc++-v3/testsuite/29_atomics/atomic/cons/zero_padding.cc
  6ec8c77bd0b9550e1af1efd741f41ded  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
diff -Nrcpad gcc-16-20260301/contrib/ChangeLog gcc-16-20260308/contrib/ChangeLog
*** gcc-16-20260301/contrib/ChangeLog	Sun Mar  1 22:32:05 2026
--- gcc-16-20260308/contrib/ChangeLog	Sun Mar  8 22:32:04 2026
***************
*** 1,3 ****
--- 1,8 ----
+ 2026-03-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gcc-changelog/git_update_version.py (ignored_commits): Add
+ 	9a7da540b63e7d77e747b5cdd6fdbbd3954e28c8.
+ 
  2026-02-24  Piyush Raj  <piyushraj92739@gmail.com>
  
  	* bpf-vmtest-tool/README: New file.
diff -Nrcpad gcc-16-20260301/contrib/gcc-changelog/git_update_version.py gcc-16-20260308/contrib/gcc-changelog/git_update_version.py
*** gcc-16-20260301/contrib/gcc-changelog/git_update_version.py	Sun Mar  1 22:32:05 2026
--- gcc-16-20260308/contrib/gcc-changelog/git_update_version.py	Sun Mar  8 22:32:04 2026
*************** ignored_commits = {
*** 49,55 ****
          'de3b277247ce98d189f121155b75f490725a42f6',
          '13cf22eb557eb5e3d796822247d8d4957bdb25da',
          'b40ef6e9dc096c8c19399e94947a1965258a6942',
!         'e69bea9b4ccfe79efeec6e87d7d24e6350f31375'}
  
  FORMAT = '%(asctime)s:%(levelname)s:%(name)s:%(message)s'
  logging.basicConfig(level=logging.INFO, format=FORMAT,
--- 49,56 ----
          'de3b277247ce98d189f121155b75f490725a42f6',
          '13cf22eb557eb5e3d796822247d8d4957bdb25da',
          'b40ef6e9dc096c8c19399e94947a1965258a6942',
!         'e69bea9b4ccfe79efeec6e87d7d24e6350f31375',
!         '9a7da540b63e7d77e747b5cdd6fdbbd3954e28c8'}
  
  FORMAT = '%(asctime)s:%(levelname)s:%(name)s:%(message)s'
  logging.basicConfig(level=logging.INFO, format=FORMAT,
diff -Nrcpad gcc-16-20260301/gcc/ChangeLog gcc-16-20260308/gcc/ChangeLog
*** gcc-16-20260301/gcc/ChangeLog	Sun Mar  1 22:32:05 2026
--- gcc-16-20260308/gcc/ChangeLog	Sun Mar  8 22:32:05 2026
***************
*** 1,3 ****
--- 1,547 ----
+ 2026-03-07  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	PR driver/69367
+ 	PR driver/69849
+ 	* Makefile.in (TEXI_GCCINT_FILES): Add specs.texi.
+ 	* doc/gccint.texi: Include it.
+ 	* doc/install.texi: Fix cross-references.
+ 	* doc/invoke.texi: Likewise.
+ 	(Option Summary): Reclassify -specs/--specs as a developer option.
+ 	(Overall Options): Move -specs= documentation to...
+ 	(Developer Options): ...here.
+ 	(Spec Files): Move entire section to....
+ 	* doc/specs.texi: ....new file.
+ 	* common.opt.urls: Regenerated.
+ 
+ 2026-03-07  Jørgen Kvalsvik  <j@lambda.is>
+ 
+ 	* tree-profile.cc (struct conds_ctx): Add edges.
+ 	(topological_src_cmp): New function.
+ 	(masking_vectors): New search strategy.
+ 
+ 2026-03-07  Robin Dapp  <rdapp@oss.qualcomm.com>
+ 
+ 	PR rtl-optimization/121649
+ 	* cse.cc (find_sets_in_insn):  Only use non-reg vec_select
+ 	simplifications.
+ 
+ 2026-03-06  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR target/124126
+ 	* config/aarch64/aarch64-builtins.cc (aarch64_init_ls64_builtins_types): Copy
+ 	the array type before setting the mode.
+ 
+ 2026-03-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/124135
+ 	* tree-inline.cc (expand_call_inline): If both gimple_call_lhs (stmt)
+ 	and use_retvar aren't gimple regs but have gimple reg type, use
+ 	separate load of use_retva into SSA_NAME and then store of it
+ 	into gimple_call_lhs (stmt).
+ 
+ 2026-03-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/124358
+ 	* match.pd ((ptr) (x p+ y) p+ z -> (ptr) (x p+ (y + z))): Simplify
+ 	into (ptr) x p+ (y + z) instead.
+ 
+ 2026-03-05  Victor Do Nascimento  <victor.donascimento@arm.com>
+ 
+ 	PR tree-optimization/124037
+ 	* tree-vect-stmts.cc (get_load_store_type): Fix
+ 	alignment_support_scheme categorization for early
+ 	break VMAT_ELEMENTWISE accesses.
+ 
+ 2026-03-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-loop.cc (vectorizable_live_operation): Fix typo.
+ 
+ 2026-03-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/98064
+ 	* tree-vect-loop.cc (vectorizable_live_operation): Do
+ 	not restrict replacing uses in a LC PHI.
+ 
+ 2026-03-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* config/i386/i386.md (swap<mode>): Swap operand order for
+ 	-masm=intel.
+ 
+ 2026-03-05  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	PR target/123807
+ 	PR middle-end/124250
+ 	* config/loongarch/loongarch.cc
+ 	(loongarch_expand_vector_init_same): Revert r16-7163 change.
+ 
+ 2026-03-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/124349
+ 	* config/i386/sse.md (iptrssebvec_2): New define_mode_attr.
+ 	(cvthf82ph<mode><mask_name>): Use it for -masm=intel input
+ 	operand.
+ 
+ 2026-03-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/124367
+ 	* config/i386/sse.md (*andnot<mode>3): Use 0x44 rather than $0x44
+ 	for -masm=intel.
+ 
+ 2026-03-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/124366
+ 	* config/i386/i386.md (@wrss<mode>, @wruss<mode>): Swap operand
+ 	order for -masm=intel.
+ 
+ 2026-03-04  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/119568
+ 	* tree-ssa-math-opts.cc (convert_plusminus_to_widen): Reject different
+ 	mode classes.
+ 
+ 2026-03-04  Robin Dapp  <rdapp@oss.qualcomm.com>
+ 
+ 	PR rtl-optimization/124041
+ 	* lra-constraints.cc (curr_insn_transform): Check if hardreg is
+ 	valid in subreg context.
+ 
+ 2026-03-04  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	PR rtl-optimization/124351
+ 	* avoid-store-forwarding.cc (process_store_forwarding): Add
+ 	bitmap_clear after allocating forwarded_bytes.
+ 
+ 2026-03-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/124341
+ 	* config/i386/sse.md (vcvt<convertfp8_pack><mode><mask_name>): Use
+ 	<mask_operand3> rather than <mask_operand2> for -masm=intel.
+ 
+ 2026-03-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/124349
+ 	* config/i386/sse.md (avx10_2_comisbf16_v8bf): Use %w1 instead of %1
+ 	for -masm=intel.
+ 
+ 2026-03-03  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/124165
+ 	* config/i386/i386-protos.h (symbolic_reference_mentioned_p):
+ 	Change the argument type from rtx to const_rtx.
+ 	* config/i386/i386.cc (symbolic_reference_mentioned_p): Likewise.
+ 	(ix86_access_stack_p): Add 2 auto_bitmap[] arguments.  Cache
+ 	the register BB domination result.
+ 	(ix86_symbolic_const_load_p_1): New.
+ 	(ix86_symbolic_const_load_p): Likewise.
+ 	(ix86_find_max_used_stack_alignment): If there is no symbolic
+ 	constant load into the register, don't call ix86_access_stack_p.
+ 
+ 2026-03-03  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	PR target/115042
+ 	* lra-int.h (lra_postponed_insns): New.
+ 	* lra.cc (lra_set_insn_deleted, lra_asm_insn_error): Clear
+ 	postponed insn flag.
+ 	(lra_process_new_insns): Propagate postponed insn flag for asm
+ 	gotos.
+ 	(lra_postponed_insns): New.
+ 	(lra): Initialize lra_postponed_insns.  Push postponed insns on
+ 	the stack.
+ 	* lra-constraints.cc (postpone_insns): New function.
+ 	(curr_insn_transform): Use it to postpone processing reload insn
+ 	constraints.  Skip processing postponed insns.
+ 
+ 2026-03-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/45273
+ 	* predict.cc (combine_predictions_for_insn): Use int64_t
+ 	math instead of double.
+ 
+ 2026-03-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/124336
+ 	* config/i386/i386.cc (output_adjust_stack_and_probe): Use
+ 	or{b} rather than or%z0 and BYTE PTR rather than DWORD PTR.
+ 	(output_probe_stack_range): Likewise.
+ 	* config/i386/i386.md (probe_stack): Pass just 2 arguments
+ 	to gen_probe_stack_1, first adjust_address to QImode, second
+ 	const0_rtx.
+ 	(@probe_stack_1_<mode>): Remove.
+ 	(probe_stack_1): New define_insn.
+ 
+ 2026-03-03  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* fold-const.cc: Fix "Conveinece" typo in comment.
+ 
+ 2026-03-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.cc (vect_make_slp_decision): Do not call
+ 	vect_mark_slp_stmts.
+ 	* tree-vect-data-refs.cc (vect_enhance_data_refs_alignment):
+ 	We are always doing SLP.
+ 	(vect_supportable_dr_alignment): Likewise.
+ 	* tree-vect-loop.cc (vect_analyze_loop_2): No need to reset
+ 	STMT_SLP_TYPE.
+ 
+ 2026-03-03  Jonathan Yong  <10walls@gmail.com>
+ 
+ 	* Makefile.in: the libgdiagnostics shared object for mingw
+ 	should be based on host name, not target name.
+ 
+ 2026-03-03  Richard Sandiford  <rdsandiford@googlemail.com>
+ 	    Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	PR rtl-optimization/123786
+ 	* rtl-ssa/functions.h (function_info::live_out_value): Delete.
+ 	(function_info::create_degenerate_phi): New overload.
+ 	* rtl-ssa/blocks.cc (all_uses_are_live_out_uses): Delete.
+ 	(function_info::live_out_value): Likewise.
+ 	(function_info::replace_phi): Keep live-out uses if they are followed
+ 	by a definition in the same EBB.
+ 	(function_info::create_degenerate_phi): New overload, extracted
+ 	from create_reg_use.
+ 	(function_info::add_phi_nodes): Ensure that there is a phi for
+ 	every live input that is redefined by a second or subsequent
+ 	block in the EBB.  Record that such phis need live-out uses.
+ 	(function_info::record_block_live_out): Use look_through_degenerate_phi
+ 	rather than live_out_value when setting phi inputs.  Remove use of
+ 	live_out_value for live-out uses.  Inline the old handling of
+ 	bb_mem_live_out.
+ 	(function_info::start_block): Move append_bb call to...
+ 	(function_info::create_ebbs): ...here.
+ 	* rtl-ssa/insns.cc (function_info::create_reg_use): Use the new
+ 	create_degenerate_phi overload.
+ 
+ 2026-03-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/124315
+ 	* config/i386/sse.md (avx512f_vmfmadd_<mode>_mask3<round_name>,
+ 	avx512f_vmfmsub_<mode>_mask3<round_name>,
+ 	avx512f_vmfnmadd_<mode>_mask3<round_name>,
+ 	avx512f_vmfnmsub_<mode>_mask3<round_name>): Use %<iptr>1 instead of
+ 	%<iptr>3 in -masm=intel syntax.
+ 
+ 2026-03-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/124335
+ 	* config/i386/sse.md (*avx512f_load<mode>_mask): Use %{%3%} instead of
+ 	%{3%} for -masm=intel syntax.
+ 
+ 2026-03-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* config/i386/sse.md (avx512fp16_mov<mode>): Rename pattern to...
+ 	(*avx512fp16_mov<mode>): ... this.
+ 
+ 2026-03-02  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	PR c++/102397
+ 	* doc/extend.texi (Attributes): Explicitly say that all attributes
+ 	work in both syntaxes and examples may show either form.
+ 	(Common Attributes): Convert some examples to use the new syntax.
+ 
+ 2026-03-02  Filip Kastl  <fkastl@suse.cz>
+ 
+ 	PR target/123926
+ 	* config/sparc/sparc.h (HAVE_AS_TLS): Default to 0.
+ 
+ 2026-03-02  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	PR target/124167
+ 	* attribs.cc (make_dispatcher_decl): Change node->definition
+ 	to inherit from the node its called on.
+ 	* ipa.cc (remote_unreachable_nodes): Move FMV logic out of
+ 	(!in_boundary_p) if block.
+ 
+ 2026-03-02  Cupertino Miranda  <cupertino.miranda@oracle.com>
+ 
+ 	PR target/113453
+ 	* config/bpf/bpf-protos.h (bpf_output_call): Change prototype.
+ 	* config/bpf/bpf.cc (bpf_output_call): Change to adapt operands
+ 	and return
+ 	the instruction template instead of immediately emit asm and
+ 	not allow proper final expected execution flow.
+ 	(bpf_output_line_info): Add function to introduce line info
+ 	entries in respective structures
+ 	(bpf_asm_out_unwind_emit): Add function as hook to
+ 	TARGET_ASM_UNWIND_EMIT. This hook is called before any
+ 	instruction is emitted.
+ 	* config/bpf/bpf.md: Change calls to bpf_output_call.
+ 	* config/bpf/btfext-out.cc (struct btf_ext_lineinfo): Add fields
+ 	to struct.
+ 	(bpf_create_lineinfo, btf_add_line_info_for): Add support
+ 	function to insert line_info data in respective structures.
+ 	(output_btfext_line_info): Function to emit line_info data in
+ 	.BTF.ext section.
+ 	(btf_ext_output): Call output_btfext_line_info.
+ 	* config/bpf/btfext-out.h: Add prototype for
+ 	btf_add_line_info_for.
+ 
+ 2026-03-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/124294
+ 	* config/i386/sse.md (avx512fp16_mov<mode>): Fix ordering of operands
+ 	for -masm=intel for the avx10_2 alternative.  Fix up indentation in
+ 	the insn condition.
+ 	(vec_set<mode>_0): Fix comment typo, higer -> higher.
+ 
+ 2026-03-01  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	PR target/57261
+ 	* configure.ac (gcc_cv_ld_as_needed) <i?86-*-solaris2* |
+ 	x86_64-*-solaris2*>: Don't disable.
+ 	* configure: Regenerate.
+ 
+ 2026-03-01  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* configure.ac (solaris_ld): New check.
+ 	Test solaris_ld instead of gnu_ld_flag.
+ 	* configure: Regenerate.
+ 	* config.in: Regenerate.
+ 	* config/i386/sol2.h: Switch to HAVE_SOLARIS_LD.
+ 	* config/sol2.h: Likewise.
+ 	* config/sparc/sol2.h: Likewise.
+ 	* config/sparc/sparc.md: Likewise.
+ 
+ 2026-03-01  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* configure.ac (solaris_as): New check.
+ 	* configure: Regenerate.
+ 	* config.in: Regenerate.
+ 	* config/i386/i386.cc: Switch to HAVE_SOLARIS_AS.
+ 	* config/i386/sol2.h: Likewise.
+ 	* config/sol2.h: Likewise.
+ 	* config/sparc/sol2.h: Likewise.
+ 	* config/sparc/sparc.cc: Likewise.
+ 	* config/sparc/sparc.md: Likewise.
+ 
+ 2026-02-28  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/90036
+ 	* tree-ssa-dom.cc (back_propagate_equivalences): Accept new
+ 	argument for available expression stack.  Lookup equivalences
+ 	in the expression hash table too.  If an expression hash a
+ 	known constant value, record it and recurse.
+ 	(record_temporary_equivalences): Back propagate for a subset of
+ 	edge equivalences.
+ 
+ 2026-02-28  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR target/124094
+ 	* config/aarch64/aarch64-generate-json-tuning-routines.py
+ 	(generate_field_code): Add "ctxt, " arg to function call when
+ 	operation is "parse".
+ 	(generate_function): Add "gcc_json_context &ctxt, " param to
+ 	function decl when operation is "parse".
+ 	* config/aarch64/aarch64-json-tunings-parser-generated.inc:
+ 	Regenerate, passing around a gcc_json_context &.
+ 	* config/aarch64/aarch64-json-tunings-parser.cc: Include
+ 	"json-diagnostic.h".
+ 	(WARNING_OPT) New macro.
+ 	(PARSE_INTEGER_FIELD): Add "ctxt" param and pass it around.
+ 	(PARSE_UNSIGNED_INTEGER_FIELD): Likewise.
+ 	(PARSE_BOOLEAN_FIELD): Likewise.
+ 	(PARSE_STRING_FIELD): Likewise.
+ 	(PARSE_OBJECT): Likewise.
+ 	(PARSE_ARRAY_FIELD): Likewise.
+ 	(PARSE_ENUM_FIELD): Likewise.
+ 	(parse_func_type): Likewise.
+ 	(parse_object_helper): Likewise.  Use json_error rather than error.
+ 	(inform_about_wrong_kind_of_json_value): New.
+ 	(extract_string): Add "ctxt" param.  Replace "warning" with a pair
+ 	of calls to json_warning and
+ 	inform_about_wrong_kind_of_json_value, tweaking wording
+ 	accordingly.
+ 	(extract_integer): Likewise.
+ 	(extract_unsigned_integer): Likewise.
+ 	(parse_enum_field): Likewise.
+ 	(validate_and_traverse): Replace "warning" and "error" with
+ 	"json_warning" and "json_error".
+ 	(check_version_compatibility): Use WARNING_OPT.  Add
+ 	auto_diagnostic_group to group the error and note.
+ 	(aarch64_load_tuning_params_from_json_string): Add "js_filename"
+ 	param.  Use gcc_json_context to capture location info.  Use it
+ 	when reporting errors to get file/line/column info.  Replace check
+ 	on root being non-null with assertion, as this is guaranteed if
+ 	error is non-null.  Replace warning with json_warning.
+ 	(aarch64_load_tuning_params_from_json): Pass data_filename to
+ 	aarch64_load_tuning_params_from_json_string for use when reporting
+ 	diagnostics.
+ 	(selftest::test_json_integers): Add a placeholder filename.
+ 	(selftest::test_json_boolean): Likewise.
+ 	(selftest::test_json_strings): Likewise.
+ 	(selftest::test_json_enums): Likewise.
+ 
+ 2026-02-28  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* Makefile.in (OBJS-libcommon): Add json-diagnostic.o.
+ 	* diagnostics/client-data-hooks.h
+ 	(class client_data_hooks_decorator): New.
+ 	* diagnostics/context.cc (context::set_client_data_hooks): Return
+ 	the old hooks.
+ 	* diagnostics/context.h (context::set_client_data_hooks): Update
+ 	decl likewise.
+ 	* json-diagnostic.cc: New file.
+ 	* json-diagnostic.h: New file.
+ 
+ 2026-02-28  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* config/aarch64/aarch64-json-tunings-parser.cc: Define
+ 	INCLUDE_MAP.
+ 	* json-parsing.cc: Likewise.
+ 	* json-parsing.h (class simple_location_map): New class, moved and
+ 	renamed from...
+ 	* libsarifreplay.cc (class replayer_location_map): ...here.
+ 	(sarif_replayer::m_json_location_map): Update for renaming of
+ 	class.
+ 
+ 2026-02-28  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* Makefile.in (OBJS-libcommon):
+ 	Add diagnostics/physical-location-maker.o.
+ 	* diagnostics/physical-location-maker.cc: New file, adapted from
+ 	material in libgdiagnostics.cc.
+ 	* diagnostics/physical-location-maker.h: New file, adapted from
+ 	material in libgdiagnostics.cc.
+ 	* libgdiagnostics.cc: Include
+ 	"diagnostics/physical-location-maker.h".
+ 	(diagnostic_manager::diagnostic_manager): Initialize
+ 	m_phys_loc_maker.
+ 	(diagnostic_manager::new_location_from_file_and_line): Split out
+ 	into physical_location_maker.
+ 	(diagnostic_manager::new_location_from_file_line_column):
+ 	Likewise.
+ 	(diagnostic_manager::ensure_linemap_for_file_and_line): Likewise.
+ 	(diagnostic_manager::m_phys_loc_maker): New field.
+ 
+ 2026-02-28  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* diagnostics/html-sink.cc
+ 	(html_builder::make_element_for_diagnostic): Update for logical
+ 	location strings being returned as  label_text rather than
+ 	const char *.
+ 	* diagnostics/logical-locations.h
+ 	(logical_locations::manager::get_short_name): Return label_text
+ 	rather than const char *.
+ 	(logical_locations::manager::get_name_with_scope): Likewise.
+ 	(logical_locations::manager::get_internal_name): Likewise.
+ 	* diagnostics/sarif-sink.cc
+ 	(sarif_builder::ensure_sarif_logical_location_for): Update for
+ 	logical location strings being returned as label_text rather than
+ 	const char *.
+ 	(sarif_builder::make_minimal_sarif_logical_location): Likewise.
+ 	* diagnostics/selftest-logical-locations.cc
+ 	(test_manager::get_short_name): Likewise.
+ 	(test_manager::get_name_with_scope): Likewise.
+ 	(test_manager::get_internal_name): Likewise.
+ 	(selftest_logical_locations_cc_tests): Likewise.
+ 	* diagnostics/selftest-logical-locations.h
+ 	(test_manager::get_short_name): Likewise.
+ 	(test_manager::get_name_with_scope): Likewise.
+ 	(test_manager::get_internal_name): Likewise.
+ 	* diagnostics/state-graphs-to-dot.cc
+ 	(state_diagram::on_node_in_table): Likewise.
+ 	* libgdiagnostics.cc
+ 	(impl_logical_location_manager::get_short_name): Likewise.
+ 	(impl_logical_location_manager::get_name_with_scope): Likewise.
+ 	(impl_logical_location_manager::get_internal_name): Likewise.
+ 	* tree-logical-location.cc
+ 	(tree_logical_location_manager::get_short_name): Likewise.
+ 	(tree_logical_location_manager::get_name_with_scope): Likewise.
+ 	(tree_logical_location_manager::get_internal_name): Likewise.
+ 	* tree-logical-location.h
+ 	(tree_logical_location_manager::get_short_name): Likewise.
+ 	(tree_logical_location_manager::get_name_with_scope): Likewise.
+ 	(tree_logical_location_manager::get_internal_name): Likewise.
+ 
+ 2026-02-28  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	PR c/87591
+ 	* doc/extend.texi (Attributes): Document __attribute keyword.
+ 	(Attribute Syntax): Here too.
+ 
+ 2026-02-28  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	* doc/extend.texi (Attributes): Rename the node "GNU Attribute
+ 	Syntax" node back to "Attribute Syntax"; fix references.  Add
+ 	@anchor for sections recently merged away at the new location of
+ 	the material they used to contain.
+ 
+ 2026-02-28  Kwok Cheung Yeung  <kcyeung@baylibre.com>
+ 
+ 	PR middle-end/113436
+ 	* omp-low.cc (lower_omp_target): Merge branches for allocating memory
+ 	for private clauses.  Add handling for references when allocator
+ 	clause not specified.
+ 
+ 2026-02-27  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/124142
+ 	* tree-vect-data-refs.cc (vect_analyze_early_break_dependences):
+ 	For early break require masking when operation can trap.
+ 
+ 2026-02-27  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/90036
+ 	* tree-ssa-scopedtables.cc (avail_exprs_stack::record_cond): Always
+ 	record the new hash table entry.
+ 
+ 2026-02-27  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	PR middle-end/124280
+ 	* optabs.cc (expand_vector_broadcast): Allow broadcasting QImode
+ 	to BImode vector.
+ 
+ 2026-02-27  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	Revert:
+ 	2026-02-26  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	PR target/115042
+ 	* lra-int.h (lra_constraint_insn_stack_clear): New prototype.
+ 	* lra.cc (lra_constraint_insn_stack2): New vector.
+ 	(lra_constraint_insn_stack_clear): New function.
+ 	(lra): Initialize/finalize lra_constraint_insn_stack2.
+ 	* lra-constraints.cc (lra_constraints): Use
+ 	lra_constraint_insn_stack_clear to postpone processing new reload
+ 	insns.
+ 
+ 2026-02-27  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/123229
+ 	* ipa-prop.cc (update_indirect_edges_after_inlining): Reset parameter
+ 	index associated with an indirect edge if the inlined edge does not
+ 	have any jump functions.
+ 
+ 2026-02-27  Soumya AR  <soumyaa@nvidia.com>
+ 
+ 	* config/aarch64/aarch64-json-tunings-parser.cc (parse_object_helper):
+ 	Zero-initialize objects that are NULL in the base tunings, if provided
+ 	in JSON tunings.
+ 	* config/aarch64/aarch64-protos.h (struct sve_vec_cost): Add default
+ 	constructor.
+ 	(struct aarch64_simd_vec_issue_info): Likewise.
+ 	(struct aarch64_sve_vec_issue_info): Likewise.
+ 
+ 2026-02-27  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/123629
+ 	* ipa-polymorphic-call.cc
+ 	(ipa_polymorphic_call_context::meet_with): When an outer context is
+ 	NULL, call make_speculative on the other one.
+ 
+ 2026-02-27  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR target/124162
+ 	* config/aarch64/aarch64-sve.md (cond_vec_cbranch_any,
+ 	cond_vec_cbranch_all): Drop partial vectors support.
+ 
+ 2026-02-27  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/117935
+ 	* tree-ssa-phiopt.cc (contains_hot_cold_predict): New function.
+ 	(match_simplify_replacement): Return early if early_p and one of
+ 	the middle bb(s) have a hot/cold predict statement.
+ 
  2026-02-26  Vladimir N. Makarov  <vmakarov@redhat.com>
  
  	PR target/115042
diff -Nrcpad gcc-16-20260301/gcc/DATESTAMP gcc-16-20260308/gcc/DATESTAMP
*** gcc-16-20260301/gcc/DATESTAMP	Sun Mar  1 22:32:05 2026
--- gcc-16-20260308/gcc/DATESTAMP	Sun Mar  8 22:32:05 2026
***************
*** 1 ****
! 20260227
--- 1 ----
! 20260308
diff -Nrcpad gcc-16-20260301/gcc/Makefile.in gcc-16-20260308/gcc/Makefile.in
*** gcc-16-20260301/gcc/Makefile.in	Sun Mar  1 22:32:05 2026
--- gcc-16-20260308/gcc/Makefile.in	Sun Mar  8 22:32:05 2026
*************** ALL_LINKERFLAGS = $(ALL_CXXFLAGS) $(LD_P
*** 1133,1139 ****
  
  # Use the "pic" build of libiberty if --enable-host-shared or --enable-host-pie,
  # unless we are building for mingw.
! LIBIBERTY_PICDIR=$(if $(findstring mingw,$(target)),,pic)
  ifneq ($(enable_host_shared)$(enable_host_pie),)
  LIBIBERTY = ../libiberty/$(LIBIBERTY_PICDIR)/libiberty.a
  else
--- 1133,1139 ----
  
  # Use the "pic" build of libiberty if --enable-host-shared or --enable-host-pie,
  # unless we are building for mingw.
! LIBIBERTY_PICDIR=$(if $(findstring mingw,$(host)),,pic)
  ifneq ($(enable_host_shared)$(enable_host_pie),)
  LIBIBERTY = ../libiberty/$(LIBIBERTY_PICDIR)/libiberty.a
  else
*************** LIBGDIAGNOSTICS_VERSION_NUM = 0
*** 2374,2380 ****
  LIBGDIAGNOSTICS_MINOR_NUM = 0
  LIBGDIAGNOSTICS_RELEASE_NUM = 1
  
! ifneq (,$(findstring mingw,$(target)))
  LIBGDIAGNOSTICS_FILENAME = libgdiagnostics-$(LIBGDIAGNOSTICS_VERSION_NUM).dll
  LIBGDIAGNOSTICS_IMPORT_LIB = libgdiagnostics.dll.a
  
--- 2374,2380 ----
  LIBGDIAGNOSTICS_MINOR_NUM = 0
  LIBGDIAGNOSTICS_RELEASE_NUM = 1
  
! ifneq (,$(findstring mingw,$(host)))
  LIBGDIAGNOSTICS_FILENAME = libgdiagnostics-$(LIBGDIAGNOSTICS_VERSION_NUM).dll
  LIBGDIAGNOSTICS_IMPORT_LIB = libgdiagnostics.dll.a
  
*************** libgdiagnostics.serial = $(LIBGDIAGNOSTI
*** 2447,2453 ****
  # Tell GNU make to ignore these if they exist.
  .PHONY: libgdiagnostics
  
! ifneq (,$(findstring mingw,$(target)))
  # Create import library
  LIBGDIAGNOSTICS_EXTRA_OPTS = -Wl,--out-implib,$(LIBGDIAGNOSTICS_IMPORT_LIB)
  else
--- 2447,2453 ----
  # Tell GNU make to ignore these if they exist.
  .PHONY: libgdiagnostics
  
! ifneq (,$(findstring mingw,$(host)))
  # Create import library
  LIBGDIAGNOSTICS_EXTRA_OPTS = -Wl,--out-implib,$(LIBGDIAGNOSTICS_IMPORT_LIB)
  else
*************** $(LIBGDIAGNOSTICS_FILENAME): $(libgdiagn
*** 2475,2481 ****
  	@$(call LINK_PROGRESS,$(INDEX.libgdiagnostics),end)
  
  # Create symlinks when not building for Windows
! ifeq (,$(findstring mingw,$(target)))
  
  ifeq (,$(findstring darwin,$(host)))
  # but only one level for Darwin, version info is embedded.
--- 2475,2481 ----
  	@$(call LINK_PROGRESS,$(INDEX.libgdiagnostics),end)
  
  # Create symlinks when not building for Windows
! ifeq (,$(findstring mingw,$(host)))
  
  ifeq (,$(findstring darwin,$(host)))
  # but only one level for Darwin, version info is embedded.
*************** TEXI_GCCINT_FILES = gccint.texi gcc-comm
*** 3809,3815 ****
  	 sourcebuild.texi gty.texi libgcc.texi cfg.texi tree-ssa.texi	\
  	 loop.texi generic.texi gimple.texi plugins.texi optinfo.texi   \
  	 match-and-simplify.texi analyzer.texi ux.texi poly-int.texi	\
! 	 params.texi
  
  TEXI_GCCINSTALL_FILES = install.texi fdl.texi		\
  	 gcc-common.texi gcc-vers.texi
--- 3809,3815 ----
  	 sourcebuild.texi gty.texi libgcc.texi cfg.texi tree-ssa.texi	\
  	 loop.texi generic.texi gimple.texi plugins.texi optinfo.texi   \
  	 match-and-simplify.texi analyzer.texi ux.texi poly-int.texi	\
! 	 params.texi specs.texi
  
  TEXI_GCCINSTALL_FILES = install.texi fdl.texi		\
  	 gcc-common.texi gcc-vers.texi
*************** libgdiagnostics.install-headers: install
*** 4294,4300 ****
  	$(INSTALL_DATA) $(srcdir)/libgdiagnostics++.h \
  	  $(DESTDIR)$(includedir)/libgdiagnostics++.h
  
! ifneq (,$(findstring mingw,$(target)))
  libgdiagnostics.install-common: installdirs libgdiagnostics.install-headers
  # Install import library
  	$(INSTALL_PROGRAM) $(LIBGDIAGNOSTICS_IMPORT_LIB) \
--- 4294,4300 ----
  	$(INSTALL_DATA) $(srcdir)/libgdiagnostics++.h \
  	  $(DESTDIR)$(includedir)/libgdiagnostics++.h
  
! ifneq (,$(findstring mingw,$(host)))
  libgdiagnostics.install-common: installdirs libgdiagnostics.install-headers
  # Install import library
  	$(INSTALL_PROGRAM) $(LIBGDIAGNOSTICS_IMPORT_LIB) \
diff -Nrcpad gcc-16-20260301/gcc/ada/ChangeLog gcc-16-20260308/gcc/ada/ChangeLog
*** gcc-16-20260301/gcc/ada/ChangeLog	Sun Mar  1 22:32:05 2026
--- gcc-16-20260308/gcc/ada/ChangeLog	Sun Mar  8 22:32:05 2026
***************
*** 1,3 ****
--- 1,42 ----
+ 2026-03-07  Eric Botcazou  <ebotcazou@gcc.gnu.org>
+ 
+ 	PR target/124336
+ 	* init.c (__gnat_adjust_context_for_raise) [x86/Linux]: Fix typo.
+ 
+ 2026-03-07  Eric Botcazou  <ebotcazou@gcc.gnu.org>
+ 
+ 	PR target/124336
+ 	* init.c (__gnat_adjust_context_for_raise) [x86/Linux]: Adjust
+ 	pattern matching to new stack probes.
+ 
+ 2026-02-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/124285
+ 	* gcc-interface/decl.cc (components_to_record): Force a packed
+ 	layout for the innermost variant of an unchecked union type with
+ 	fixed part and full representation clause.
+ 
+ 2026-02-27  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/124201
+ 	PR ada/124282
+ 	* exp_aggr.adb (Expand_Iterated_Component): Replace the iteration
+ 	variable in the expression as well.
+ 	* sem_aggr.adb (Resolve_Iterated_Component_Association): Preanalyze
+ 	the expression directly as well.
+ 
+ 2026-02-27  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/123306
+ 	* freeze.adb (Freeze_Entity): For a class-wide equivalent type of
+ 	a non-interface root type, freeze the root type before it.
+ 	* sem_ch3.adb (Derived_Type_Declaration): Minor tweak.
+ 	* sem_ch12.adb (Analyze_One_Association): Revert latest change.
+ 	* sem_ch13.adb (Analyze_Attribute_Definition_Clause) <Size>: When
+ 	the prefix is a class-wide type, insert the declaration of the CW-
+ 	equivalent type immediately after that of the root type, and the
+ 	size check for the root type into its own freezing actions.
+ 
  2026-02-26  Eric Botcazou  <ebotcazou@adacore.com>
  
  	PR ada/124201
diff -Nrcpad gcc-16-20260301/gcc/ada/init.c gcc-16-20260308/gcc/ada/init.c
*** gcc-16-20260301/gcc/ada/init.c	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/ada/init.c	Sun Mar  8 22:32:05 2026
*************** __gnat_adjust_context_for_raise (int sig
*** 507,523 ****
  
  #if defined (__i386__)
    unsigned long *pc = (unsigned long *)mcontext->gregs[REG_EIP];
!   /* The pattern is "orl $0x0,(%esp)" for a probe in 32-bit mode.  */
!   if (signo == SIGSEGV && pc && *pc == 0x00240c83)
      mcontext->gregs[REG_ESP] += 4096 + 4 * sizeof (unsigned long);
  #elif defined (__x86_64__)
    unsigned long long *pc = (unsigned long long *)mcontext->gregs[REG_RIP];
    if (signo == SIGSEGV && pc
        /* The pattern is "orq $0x0,(%rsp)" for a probe in 64-bit mode.  */
        && ((*pc & 0xffffffffffLL) == 0x00240c8348LL
! 	  /* The pattern may also be "orl $0x0,(%esp)" for a probe in
! 	     x32 mode.  */
! 	  || (*pc & 0xffffffffLL) == 0x00240c83LL))
      mcontext->gregs[REG_RSP] += 4096 + 4 * sizeof (unsigned long);
  #elif defined (__ia64__)
    /* ??? The IA-64 unwinder doesn't compensate for signals.  */
--- 507,524 ----
  
  #if defined (__i386__)
    unsigned long *pc = (unsigned long *)mcontext->gregs[REG_EIP];
!   /* The pattern is "or{l,b} $0x0,(%esp)" for a probe in 32-bit mode.  */
!   if (signo == SIGSEGV && pc && (*pc == 0x00240c83 || *pc == 0x00240c80))
      mcontext->gregs[REG_ESP] += 4096 + 4 * sizeof (unsigned long);
  #elif defined (__x86_64__)
    unsigned long long *pc = (unsigned long long *)mcontext->gregs[REG_RIP];
    if (signo == SIGSEGV && pc
        /* The pattern is "orq $0x0,(%rsp)" for a probe in 64-bit mode.  */
        && ((*pc & 0xffffffffffLL) == 0x00240c8348LL
! 	  /* The pattern is "orl $0x0,(%rsp)" for a probe in x32 mode.  */
! 	  || (*pc & 0xffffffffLL) == 0x00240c83LL
! 	  /* The pattern may also be "orb $0x0,(%rsp)" in both modes.  */
! 	  || (*pc & 0xffffffffLL) == 0x00240c80LL))
      mcontext->gregs[REG_RSP] += 4096 + 4 * sizeof (unsigned long);
  #elif defined (__ia64__)
    /* ??? The IA-64 unwinder doesn't compensate for signals.  */
diff -Nrcpad gcc-16-20260301/gcc/algol68/ChangeLog gcc-16-20260308/gcc/algol68/ChangeLog
*** gcc-16-20260301/gcc/algol68/ChangeLog	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/algol68/ChangeLog	Sun Mar  8 22:32:05 2026
***************
*** 1,3 ****
--- 1,19 ----
+ 2026-03-05  Jose E. Marchesi  <jemarch@gnu.org>
+ 
+ 	PR algol68/124322
+ 	* a68-low-holes.cc (a68_wrap_formal_proc_hole): Wrap functions
+ 	returning void properly.
+ 
+ 2026-02-27  James Bohl  <bohlj47@gmail.com>
+ 
+ 	* a68-low-prelude.cc (a68_lower_negate2): Annotate denotation
+ 	as being negated.
+ 	* a68-low-units.cc (a68_lower_denotation): Allow the full range
+ 	of negative values if the denotation is negated.
+ 	* a68-types.h (struct NODE_T): Add negated field.
+ 	(NEGATED): Define.
+ 	* a68-parser.cc (a68_new_node): Initialize NEGATED.
+ 
  2026-02-26  James Bohl  <bohlj47@gmail.com>
  
  	* a68-low-units.cc (a68_lower_denotation): Add error on
diff -Nrcpad gcc-16-20260301/gcc/algol68/a68-low-holes.cc gcc-16-20260308/gcc/algol68/a68-low-holes.cc
*** gcc-16-20260301/gcc/algol68/a68-low-holes.cc	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/algol68/a68-low-holes.cc	Sun Mar  8 22:32:05 2026
*************** a68_wrap_formal_proc_hole (NODE_T *p, tr
*** 110,116 ****
  
    /* Now build the type of the wrapped function.  */
    tree wrapper_ret_type = TREE_TYPE (TREE_TYPE (wrapper));
!   tree wrapped_ret_type = (SUB (m) == M_STRING
  			   ? void_type_node : wrapper_ret_type);
    tree *wrapped_args_types = XALLOCAVEC (tree, wrapped_nargs);
    int nwrappedarg = 0;
--- 110,116 ----
  
    /* Now build the type of the wrapped function.  */
    tree wrapper_ret_type = TREE_TYPE (TREE_TYPE (wrapper));
!   tree wrapped_ret_type = (SUB (m) == M_STRING || SUB (m) == M_VOID
  			   ? void_type_node : wrapper_ret_type);
    tree *wrapped_args_types = XALLOCAVEC (tree, wrapped_nargs);
    int nwrappedarg = 0;
*************** a68_wrap_formal_proc_hole (NODE_T *p, tr
*** 227,232 ****
--- 227,241 ----
  	  }
  	body = a68_pop_range ();
        }
+     else if (SUB (m) == M_VOID)
+       {
+ 	a68_push_range (M_VOID);
+ 	a68_add_stmt (build_call_vec (TREE_TYPE (wrapped_type),
+ 				      wrapped,
+ 				      wrapped_args));
+ 	a68_add_stmt (a68_get_empty ());
+ 	body = a68_pop_range ();
+       }
      else
        body = build_call_vec (TREE_TYPE (wrapped_type), wrapped, wrapped_args);
    }
diff -Nrcpad gcc-16-20260301/gcc/algol68/a68-low-units.cc gcc-16-20260308/gcc/algol68/a68-low-units.cc
*** gcc-16-20260301/gcc/algol68/a68-low-units.cc	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/algol68/a68-low-units.cc	Sun Mar  8 22:32:05 2026
*************** a68_lower_denotation (NODE_T *p, LOW_CTX
*** 287,304 ****
  	s = SUB (p);
  
        type = CTYPE (moid);
!       int64_t radix = strtol (NSYMBOL (s), &end, 10);
!       gcc_assert (end != NSYMBOL (s) && *end == 'r');
        end++;
!       int64_t val = strtol (end, &end, radix);
!       gcc_assert (end[0] == '\0');
        return build_int_cst (type, val);
      }
    else if (moid == M_REAL
  	   || moid == M_LONG_REAL
  	   || moid == M_LONG_LONG_REAL)
      {
!       /* SIZETY INT */
        tree type;
        NODE_T *s = NO_NODE;
        if (IS (SUB (p), LONGETY) || IS (SUB (p), SHORTETY))
--- 287,314 ----
  	s = SUB (p);
  
        type = CTYPE (moid);
!       errno = 0;
! #if defined(INT64_T_IS_LONG)
!       uint64_t radix = strtoul (NSYMBOL (s), &end, 10);
! #else
!       uint64_t radix = strtoull (NSYMBOL (s), &end, 10);
! #endif
!       gcc_assert (errno == 0 && end != NSYMBOL (s) && *end == 'r');
        end++;
!       errno = 0;
! #if defined(INT64_T_IS_LONG)
!       uint64_t val = strtoul (end, &end, radix);
! #else
!       uint64_t val = strtoull (end, &end, radix);
! #endif
!       gcc_assert (errno == 0 && end[0] == '\0');
        return build_int_cst (type, val);
      }
    else if (moid == M_REAL
  	   || moid == M_LONG_REAL
  	   || moid == M_LONG_LONG_REAL)
      {
!       /* SIZETY REAL */
        tree type;
        NODE_T *s = NO_NODE;
        if (IS (SUB (p), LONGETY) || IS (SUB (p), SHORTETY))
diff -Nrcpad gcc-16-20260301/gcc/algol68/a68-parser-scanner.cc gcc-16-20260308/gcc/algol68/a68-parser-scanner.cc
*** gcc-16-20260301/gcc/algol68/a68-parser-scanner.cc	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/algol68/a68-parser-scanner.cc	Sun Mar  8 22:32:05 2026
*************** get_next_token (bool in_format,
*** 1675,1682 ****
  	  /* Parse the radix, which is expressed in base 10.  */
  	  (sym++)[0] = c;
  	  char *end;
! 	  int64_t radix = strtol (A68_PARSER (scan_buf), &end, 10);
! 	  gcc_assert (end != A68_PARSER (scan_buf) && *end == 'r');
  
  	  /* Get the rest of the bits literal.  Typographical display features
  	     are allowed in the reference language between the digit symbols
--- 1675,1683 ----
  	  /* Parse the radix, which is expressed in base 10.  */
  	  (sym++)[0] = c;
  	  char *end;
! 	  errno = 0;
! 	  uint64_t radix = strtoul (A68_PARSER (scan_buf), &end, 10);
! 	  gcc_assert (errno == 0 && end != A68_PARSER (scan_buf) && *end == 'r');
  
  	  /* Get the rest of the bits literal.  Typographical display features
  	     are allowed in the reference language between the digit symbols
diff -Nrcpad gcc-16-20260301/gcc/analyzer/ChangeLog gcc-16-20260308/gcc/analyzer/ChangeLog
*** gcc-16-20260301/gcc/analyzer/ChangeLog	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/analyzer/ChangeLog	Sun Mar  8 22:32:05 2026
***************
*** 1,3 ****
--- 1,9 ----
+ 2026-03-06  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR testsuite/112520
+ 	* region-model-manager.cc
+ 	(region_model_manager::get_field_region): Assert that the args are non-null.
+ 
  2026-02-26  David Malcolm  <dmalcolm@redhat.com>
  
  	PR analyzer/124232
diff -Nrcpad gcc-16-20260301/gcc/analyzer/region-model-manager.cc gcc-16-20260308/gcc/analyzer/region-model-manager.cc
*** gcc-16-20260301/gcc/analyzer/region-model-manager.cc	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/analyzer/region-model-manager.cc	Sun Mar  8 22:32:05 2026
*************** region_model_manager::get_unknown_symbol
*** 1689,1694 ****
--- 1689,1696 ----
  const region *
  region_model_manager::get_field_region (const region *parent, tree field)
  {
+   gcc_assert (parent);
+   gcc_assert (field);
    gcc_assert (TREE_CODE (field) == FIELD_DECL);
  
    /* (*UNKNOWN_PTR).field is (*UNKNOWN_PTR_OF_&FIELD_TYPE).  */
diff -Nrcpad gcc-16-20260301/gcc/attribs.cc gcc-16-20260308/gcc/attribs.cc
*** gcc-16-20260301/gcc/attribs.cc	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/attribs.cc	Sun Mar  8 22:32:05 2026
*************** make_dispatcher_decl (const tree decl)
*** 1230,1236 ****
    /* Set flags on the cgraph_node for the new decl.  */
    cgraph_node *func_node = cgraph_node::get_create (func_decl);
    func_node->dispatcher_function = true;
!   func_node->definition = true;
  
    cgraph_function_version_info *func_v
      = func_node->insert_new_function_version ();
--- 1230,1240 ----
    /* Set flags on the cgraph_node for the new decl.  */
    cgraph_node *func_node = cgraph_node::get_create (func_decl);
    func_node->dispatcher_function = true;
!   /* For targets with TARGET_HAS_FMV_TARGET_ATTRIBUTE, the resolver is created
!      unconditionally if any versioned nodes are present.
!      For !TARGET_HAS_FMV_TARGET_ATTRIBUTE, the dispatcher is only defined when
!      the default node is defined.  */
!   func_node->definition = node->definition || TARGET_HAS_FMV_TARGET_ATTRIBUTE;
  
    cgraph_function_version_info *func_v
      = func_node->insert_new_function_version ();
diff -Nrcpad gcc-16-20260301/gcc/avoid-store-forwarding.cc gcc-16-20260308/gcc/avoid-store-forwarding.cc
*** gcc-16-20260301/gcc/avoid-store-forwarding.cc	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/avoid-store-forwarding.cc	Sun Mar  8 22:32:05 2026
*************** process_store_forwarding (vec<store_fwd_
*** 177,182 ****
--- 177,184 ----
       by later stores.  */
  
    auto_sbitmap forwarded_bytes (load_size);
+   bitmap_clear (forwarded_bytes);
+ 
    unsigned int i;
    store_fwd_info* it;
    auto_vec<store_fwd_info> redundant_stores;
diff -Nrcpad gcc-16-20260301/gcc/c/ChangeLog gcc-16-20260308/gcc/c/ChangeLog
*** gcc-16-20260301/gcc/c/ChangeLog	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/c/ChangeLog	Sun Mar  8 22:32:05 2026
***************
*** 1,3 ****
--- 1,22 ----
+ 2026-03-06  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR c/97991
+ 	* c-parser.cc (c_parser_consume_token): Allow
+ 	CPP_PRAGMA if inside a pragma.
+ 
+ 2026-03-03  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	PR c/122572
+ 	* c-decl.cc (finish_struct): Add distinct canonical type.
+ 	* c-tree.h (c_type_canonical): Prototype for new function.
+ 	* c-typeck.cc (c_type_canonical): New function.
+ 	(ptr_to_tagged_member): New function.
+ 
+ 2026-03-03  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	PR c/122572
+ 	* c-typeck.cc (tagged_types_tu_compatible_p): Fix check.
+ 
  2026-02-18  Jakub Jelinek  <jakub@redhat.com>
  
  	PR c/123365
diff -Nrcpad gcc-16-20260301/gcc/c/c-decl.cc gcc-16-20260308/gcc/c/c-decl.cc
*** gcc-16-20260301/gcc/c/c-decl.cc	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/c/c-decl.cc	Sun Mar  8 22:32:05 2026
*************** finish_struct (location_t loc, tree t, t
*** 9995,10004 ****
  
        tree *e = c_struct_htab->find_slot_with_hash (t, hash, INSERT);
        if (*e)
! 	TYPE_CANONICAL (t) = *e;
        else
  	{
! 	  TYPE_CANONICAL (t) = t;
  	  *e = t;
  	}
        c_update_type_canonical (t);
--- 9995,10004 ----
  
        tree *e = c_struct_htab->find_slot_with_hash (t, hash, INSERT);
        if (*e)
! 	TYPE_CANONICAL (t) = TYPE_CANONICAL (*e);
        else
  	{
! 	  TYPE_CANONICAL (t) = c_type_canonical (t);
  	  *e = t;
  	}
        c_update_type_canonical (t);
diff -Nrcpad gcc-16-20260301/gcc/c/c-parser.cc gcc-16-20260308/gcc/c/c-parser.cc
*** gcc-16-20260301/gcc/c/c-parser.cc	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/c/c-parser.cc	Sun Mar  8 22:32:05 2026
*************** c_parser_consume_token (c_parser *parser
*** 960,966 ****
    gcc_assert (parser->tokens_avail >= 1);
    gcc_assert (parser->tokens[0].type != CPP_EOF);
    gcc_assert (!parser->in_pragma || parser->tokens[0].type != CPP_PRAGMA_EOL);
!   gcc_assert (parser->error || parser->tokens[0].type != CPP_PRAGMA);
    parser->last_token_location = parser->tokens[0].location;
    if (parser->tokens != &parser->tokens_buf[0])
      parser->tokens++;
--- 960,970 ----
    gcc_assert (parser->tokens_avail >= 1);
    gcc_assert (parser->tokens[0].type != CPP_EOF);
    gcc_assert (!parser->in_pragma || parser->tokens[0].type != CPP_PRAGMA_EOL);
!   /* CPP_PRAGMA should not show up here except if there was an error or inside
!      another pragma.  */
!   gcc_assert (parser->in_pragma
! 	      || parser->error
! 	      || parser->tokens[0].type != CPP_PRAGMA);
    parser->last_token_location = parser->tokens[0].location;
    if (parser->tokens != &parser->tokens_buf[0])
      parser->tokens++;
diff -Nrcpad gcc-16-20260301/gcc/c/c-tree.h gcc-16-20260308/gcc/c/c-tree.h
*** gcc-16-20260301/gcc/c/c-tree.h	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/c/c-tree.h	Sun Mar  8 22:32:05 2026
*************** extern tree c_build_function_call_vec (l
*** 931,936 ****
--- 931,937 ----
  				       vec<tree, va_gc> *);
  extern tree c_omp_clause_copy_ctor (tree, tree, tree);
  extern tree c_reconstruct_complex_type (tree, tree);
+ extern tree c_type_canonical (tree);
  extern tree c_build_type_attribute_variant (tree ntype, tree attrs);
  extern tree c_build_pointer_type (tree type);
  extern tree c_build_array_type (tree type, tree domain);
diff -Nrcpad gcc-16-20260301/gcc/c/c-typeck.cc gcc-16-20260308/gcc/c/c-typeck.cc
*** gcc-16-20260301/gcc/c/c-typeck.cc	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/c/c-typeck.cc	Sun Mar  8 22:32:05 2026
*************** c_reconstruct_complex_type (tree type, t
*** 543,550 ****
  
        gcc_checking_assert (C_TYPE_VARIABLE_SIZE (type)
  			   == C_TYPE_VARIABLE_SIZE (outer));
-       gcc_checking_assert (C_TYPE_VARIABLY_MODIFIED (outer)
- 			   == C_TYPE_VARIABLY_MODIFIED (type));
      }
    else if (TREE_CODE (type) == FUNCTION_TYPE)
      {
--- 543,548 ----
*************** c_reconstruct_complex_type (tree type, t
*** 562,567 ****
--- 560,635 ----
  					      TYPE_QUALS (type));
  }
  
+ 
+ /* Helper function for c_canonical_type.  Check whether FIELD
+    contains a pointer to a structure or union with tag,
+    possibly nested in other type derivations.  */
+ static bool
+ ptr_to_tagged_member (tree field)
+ {
+   gcc_assert (FIELD_DECL == TREE_CODE (field));
+   tree type = TREE_TYPE (field);
+   bool ptr_seen = false;
+   while (TREE_CODE (type) == ARRAY_TYPE
+ 	 || TREE_CODE (type) == FUNCTION_TYPE
+ 	 || TREE_CODE (type) == POINTER_TYPE)
+     {
+       if (TREE_CODE (type) == POINTER_TYPE)
+ 	ptr_seen = true;
+       type = TREE_TYPE (type);
+     }
+ 
+   if (ptr_seen
+       && RECORD_OR_UNION_TYPE_P (type)
+       && NULL_TREE != c_type_tag (type))
+     return true;
+ 
+   return false;
+ }
+ 
+ /* For a record or union type, make necessary adaptations so that the
+    type can be used as TYPE_CANONICAL.
+ 
+    If the TYPE contains a pointer (possibly nested in other type
+    derivations) to a structure or union as a member, create a copy
+    and change such pointers to void pointers.  Otherwise, the middle-end
+    gets confused when recording component aliases in the case where we
+    have formed equivalency classes that include types for which these
+    member pointers end up pointing to other structure or unions types
+    which have the same tag but are not compatible.  */
+ tree
+ c_type_canonical (tree type)
+ {
+   gcc_assert (RECORD_OR_UNION_TYPE_P (type));
+ 
+   bool needs_mod = false;
+   for (tree x = TYPE_FIELDS (type); x; x = DECL_CHAIN (x))
+     {
+       if (!ptr_to_tagged_member (x))
+ 	continue;
+       needs_mod = true;
+       break;
+     }
+   if (!needs_mod)
+     return type;
+ 
+   /* Construct new version with such members replaced.  */
+   tree n = build_distinct_type_copy (type);
+   tree *fields = &TYPE_FIELDS (n);
+   for (tree x = TYPE_FIELDS (type); x; x = DECL_CHAIN (x))
+     {
+       tree f = copy_node (x);
+       if (ptr_to_tagged_member (x))
+ 	TREE_TYPE (f) = c_reconstruct_complex_type (TREE_TYPE (x),
+ 						    ptr_type_node);
+       *fields = f;
+       fields = &DECL_CHAIN (f);
+     }
+   TYPE_CANONICAL (n) = n;
+   return n;
+ }
+ 
+ 
  /* If NTYPE is a type of a non-variadic function with a prototype
     and OTYPE is a type of a function without a prototype and ATTRS
     contains attribute format, diagnosess and removes it from ATTRS.
*************** tagged_types_tu_compatible_p (const_tree
*** 1857,1863 ****
    /* When forming equivalence classes for TYPE_CANONICAL in C23, we treat
       structs with the same tag as equivalent, but only when they are targets
       of pointers inside other structs.  */
!   if (data->equiv && data->pointedto)
      return true;
  
    /* Different types without tag are incompatible except as an anonymous
--- 1925,1931 ----
    /* When forming equivalence classes for TYPE_CANONICAL in C23, we treat
       structs with the same tag as equivalent, but only when they are targets
       of pointers inside other structs.  */
!   if (data->equiv && data->pointedto && NULL_TREE != c_type_tag (t1))
      return true;
  
    /* Different types without tag are incompatible except as an anonymous
diff -Nrcpad gcc-16-20260301/gcc/c-family/ChangeLog gcc-16-20260308/gcc/c-family/ChangeLog
*** gcc-16-20260301/gcc/c-family/ChangeLog	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/c-family/ChangeLog	Sun Mar  8 22:32:05 2026
***************
*** 1,3 ****
--- 1,14 ----
+ 2026-03-07  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	PR c/123856
+ 	* c-attribs.cc (handle_hardbool_attribute): Fix TYPE_NAME.
+ 
+ 2026-03-06  Qing Zhao  <qing.zhao@oracle.com>
+ 
+ 	PR c/124230
+ 	* c-ubsan.cc (get_index_from_offset): Handle the special case when
+ 	the offset is an integer constant.
+ 
  2026-02-12  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
  
  	PR c/105555
diff -Nrcpad gcc-16-20260301/gcc/c-family/c-attribs.cc gcc-16-20260308/gcc/c-family/c-attribs.cc
*** gcc-16-20260301/gcc/c-family/c-attribs.cc	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/c-family/c-attribs.cc	Sun Mar  8 22:32:05 2026
*************** handle_hardbool_attribute (tree *node, t
*** 1229,1241 ****
  
    gcc_checking_assert (!TYPE_CACHED_VALUES_P (*node));
    TYPE_VALUES (*node) = values;
-   TYPE_NAME (*node) = unqual;
  
    if (TYPE_QUALS (orig) != TYPE_QUALS (*node))
!     {
!       *node = build_qualified_type (*node, TYPE_QUALS (orig));
!       TYPE_NAME (*node) = orig;
!     }
  
    return NULL_TREE;
  }
--- 1229,1242 ----
  
    gcc_checking_assert (!TYPE_CACHED_VALUES_P (*node));
    TYPE_VALUES (*node) = values;
  
    if (TYPE_QUALS (orig) != TYPE_QUALS (*node))
!     *node = build_qualified_type (*node, TYPE_QUALS (orig));
! 
!   if (TREE_CODE (orig) == TYPE_DECL)
!     TYPE_NAME (*node) = TYPE_NAME (orig);
!   else
!     TYPE_NAME (*node) = NULL_TREE;
  
    return NULL_TREE;
  }
diff -Nrcpad gcc-16-20260301/gcc/c-family/c-ubsan.cc gcc-16-20260308/gcc/c-family/c-ubsan.cc
*** gcc-16-20260301/gcc/c-family/c-ubsan.cc	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/c-family/c-ubsan.cc	Sun Mar  8 22:32:05 2026
*************** get_factors_from_mul_expr (tree mult_exp
*** 659,664 ****
--- 659,667 ----
     ELEMENT_SIZE:
      (sizetype) SAVE_EXPR <n> * 4
     get the index as (long unsigned int) m, and return it.
+    One special case is when the OFFSET is an integer constant, and the
+    element_size is also an integer constant, we should get the index
+    as OFFSET/element_size.
     The INDEX_P holds the pointer to the parent tree of the index,
     INDEX_N holds the position of the index in its parent.  */
  
*************** static tree
*** 666,674 ****
  get_index_from_offset (tree offset, tree *index_p,
  		       int *index_n, tree element_size)
  {
!   if (TREE_CODE (offset) != MULT_EXPR)
      return NULL_TREE;
  
    auto_vec<factor_t> e_factors, o_factors;
    get_factors_from_mul_expr (element_size, NULL, -1, &e_factors);
    get_factors_from_mul_expr (offset, *index_p, *index_n, &o_factors);
--- 669,687 ----
  get_index_from_offset (tree offset, tree *index_p,
  		       int *index_n, tree element_size)
  {
!   if (TREE_CODE (offset) != MULT_EXPR
!       && TREE_CODE (offset) != INTEGER_CST)
      return NULL_TREE;
  
+   if (TREE_CODE (offset) == INTEGER_CST
+       && TREE_CODE (element_size) != INTEGER_CST)
+     return NULL_TREE;
+ 
+   if (TREE_CODE (offset) == INTEGER_CST
+       && TREE_CODE (element_size) == INTEGER_CST)
+     return fold_build2 (EXACT_DIV_EXPR, TREE_TYPE (offset),
+ 			offset, element_size);
+ 
    auto_vec<factor_t> e_factors, o_factors;
    get_factors_from_mul_expr (element_size, NULL, -1, &e_factors);
    get_factors_from_mul_expr (offset, *index_p, *index_n, &o_factors);
diff -Nrcpad gcc-16-20260301/gcc/cobol/ChangeLog gcc-16-20260308/gcc/cobol/ChangeLog
*** gcc-16-20260301/gcc/cobol/ChangeLog	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/cobol/ChangeLog	Sun Mar  8 22:32:05 2026
***************
*** 1,3 ****
--- 1,26 ----
+ 2026-03-02  Robert Dubner  <rdubner@symas.com>
+ 
+ 	PR cobol/119456
+ 	* genapi.cc (mh_source_is_literalA): Don't set refmod_e attribute
+ 	unless it is necessary.
+ 	(have_common_parent): Helper routine that determines whether two
+ 	COBOL variables are members of the same data description.
+ 	(mh_alpha_to_alpha): Modified for greater efficiency when table
+ 	subscripts and reference modification parameters are numeric
+ 	literals.
+ 	* genutil.cc (get_data_offset): Recognizes when table subscripts
+ 	and refmod offsets are numeric literals.
+ 	(refer_size): Recognizes when refmod offsets are numeric literals.
+ 	(refer_size_source): Recognizes when table subscripts are numeric
+ 	literals.
+ 
+ 2026-02-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR cobol/123238
+ 	* lexio.cc: Remove <iostream> include.
+ 	(cdftext::process_file): Remove if (false) gated use of
+ 	iostream code.
+ 
  2026-02-26  Robert Dubner  <rdubner@symas.com>
  
  	* parse.y: BASECONVERT and TRIM take their type from their first
diff -Nrcpad gcc-16-20260301/gcc/cobol/genapi.cc gcc-16-20260308/gcc/cobol/genapi.cc
*** gcc-16-20260301/gcc/cobol/genapi.cc	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/cobol/genapi.cc	Sun Mar  8 22:32:05 2026
*************** mh_source_is_literalA(const cbl_refer_t
*** 15859,15871 ****
      cbl_encoding_t encoding_dest =   destref.field->codeset.encoding;
      charmap_t *charmap_dest = __gg__get_charmap(encoding_dest);
  
-     if(    destref.refmod.from
-         || destref.refmod.len )
-       {
-       // Let the move routine know to treat the destination as alphanumeric
-       gg_attribute_bit_set(destref.field, refmod_e);
-       }
- 
      static char *buffer = NULL;
      static size_t buffer_size = 0;
      size_t source_length;
--- 15859,15864 ----
*************** mh_source_is_literalA(const cbl_refer_t
*** 16001,16006 ****
--- 15994,16000 ----
          }
        else
          {
+         // The refer has some information in it.
          gg_memcpy(gg_add(member(destref.field->var_decl_node, "data"),
                           refer_offset(destref)),
                    build_string_literal(dest_bytes, src),
*************** mh_source_is_literalA(const cbl_refer_t
*** 16011,16017 ****
      else
        {
        // This is more complicated than a simple alpha-to-alpha move
! 
        // If the source is flagged ALL, or if we are setting the destination to
        // a figurative constant, pass along the ALL bit:
        int rounded_parameter = rounded
--- 16005,16016 ----
      else
        {
        // This is more complicated than a simple alpha-to-alpha move
!       if(    destref.refmod.from
!           || destref.refmod.len )
!         {
!         // Let the move routine know to treat the destination as alphanumeric
!         gg_attribute_bit_set(destref.field, refmod_e);
!         }
        // If the source is flagged ALL, or if we are setting the destination to
        // a figurative constant, pass along the ALL bit:
        int rounded_parameter = rounded
*************** mh_source_is_literalA(const cbl_refer_t
*** 16044,16063 ****
                                  build_int_cst_type( SIZE_T, outlength),
                                  NULL_TREE);
          }
        }
  
-     if(    destref.refmod.from
-         || destref.refmod.len )
-       {
-       // Return that value to its original form
-       gg_attribute_bit_clear(destref.field, refmod_e);
-       }
      moved = true;
      }
    return moved;
    }
  
  static bool
  mh_alpha_to_alpha(const cbl_refer_t &destref,
                    const cbl_refer_t &sourceref,
                          cbl_round_t /*rounded*/,
--- 16043,16125 ----
                                  build_int_cst_type( SIZE_T, outlength),
                                  NULL_TREE);
          }
+       if(    destref.refmod.from
+           || destref.refmod.len )
+         {
+         // Return that value to its original form
+         gg_attribute_bit_clear(destref.field, refmod_e);
+         }
        }
  
      moved = true;
      }
    return moved;
    }
  
  static bool
+ have_common_parent(const cbl_refer_t &destref,
+                    const cbl_refer_t &sourceref)
+   {
+   /* We are trying to lay down fast code when possible.  But sometimes we have
+      to go slower in order to be accurate. The COBOL specification explicitly
+      says that when the storage areas of sending and receiving operands
+      overlap:
+       1) When the data items are not described by the same data description
+          entry, the result of the statement is undefined.
+       2)  When the data items are described by the same data description entry,
+           the result of the statement is the same as if the data items shared
+           no part of their respective storage areas.
+ 
+      There is an additional paragraph:
+       In the case of reference modification, the unique data item produced by
+       reference modification is not considered to be the same data description
+       entry as any other data description entry. Therefore, if an overlapping
+       situation exists, the results of the operation are undefined.
+ 
+       This routine will return TRUE when neither reference is a refmod, and
+       both operands ultimately have the same parent (indicating that they are
+       part of the same data description.
+ 
+       The point is that when we return True, then the two are not refmods, and
+       they have a common parent, so we have to use a memmove.  When we return
+       False, then we can use a faster memcpy.
+       */
+   bool retval = true;
+   if( destref.is_refmod_reference() )
+     {
+     retval = false;
+     }
+   else if( sourceref.is_refmod_reference() )
+     {
+     retval = false;
+     }
+   else
+     {
+     // Neither is a refmod.  Check for common parentage:
+     const cbl_field_t *poppa = destref.field;
+     const cbl_field_t *momma = sourceref.field;
+     while( parent_of(poppa) )
+       {
+       // Follow the first family_tree up as far as we can.
+       poppa = parent_of(poppa);
+       }
+     while( parent_of(momma) )
+       {
+       // Follow the second family_tree up as far as we can.
+       momma = parent_of(momma);
+       }
+     if( poppa != momma )
+       {
+       /* Okay, so the analogy breaks down.  Think of momma and poppa as
+          bacteria, or something.  */
+       retval = false;
+       }
+     }
+ 
+   return retval;
+   }
+ 
+ static bool
  mh_alpha_to_alpha(const cbl_refer_t &destref,
                    const cbl_refer_t &sourceref,
                          cbl_round_t /*rounded*/,
*************** mh_alpha_to_alpha(const cbl_refer_t &des
*** 16070,16077 ****
       && destref.field->type   == FldAlphanumeric
       && !size_error
       && sourceref.field->codeset.encoding == destref.field->codeset.encoding
-      && !destref.refmod.from
-      && !destref.refmod.len
       && !(destref.field->attr   & rjust_e)
       && !(sourceref.field->attr & any_length_e)
       && !(destref.field->attr   & any_length_e)
--- 16132,16137 ----
*************** mh_alpha_to_alpha(const cbl_refer_t &des
*** 16079,16084 ****
--- 16139,16147 ----
       && !sourceref.all
       )
      {
+     void (*mover)(tree, tree, tree); // dest, source, count
+     mover = have_common_parent(destref, sourceref) ? gg_memmove : gg_memcpy;
+ 
      // We are in a position to simply move bytes from the source to the dest.
      if( refer_is_clean(sourceref) && refer_is_clean(destref) )
        {
*************** mh_alpha_to_alpha(const cbl_refer_t &des
*** 16086,16092 ****
        if( destref.field->data.capacity() <= sourceref.field->data.capacity() )
          {
          // This is the simplest case of all
!         gg_memcpy(member(  destref.field->var_decl_node, "data"),
                    member(sourceref.field->var_decl_node, "data"),
                    build_int_cst_type(SIZE_T, destref.field->data.capacity()));
          moved = true;
--- 16149,16155 ----
        if( destref.field->data.capacity() <= sourceref.field->data.capacity() )
          {
          // This is the simplest case of all
!         mover(member(  destref.field->var_decl_node, "data"),
                    member(sourceref.field->var_decl_node, "data"),
                    build_int_cst_type(SIZE_T, destref.field->data.capacity()));
          moved = true;
*************** mh_alpha_to_alpha(const cbl_refer_t &des
*** 16095,16101 ****
          {
          // This is a tad more complicated.  The source is too short, so we need
          // to copy over what we can...
!         gg_memcpy(member(  destref.field->var_decl_node, "data"),
                   member(sourceref.field->var_decl_node, "data"),
                   build_int_cst_type(SIZE_T, sourceref.field->data.capacity()));
          // And then space-fill the rest:
--- 16158,16164 ----
          {
          // This is a tad more complicated.  The source is too short, so we need
          // to copy over what we can...
!         mover(member(  destref.field->var_decl_node, "data"),
                   member(sourceref.field->var_decl_node, "data"),
                   build_int_cst_type(SIZE_T, sourceref.field->data.capacity()));
          // And then space-fill the rest:
*************** mh_alpha_to_alpha(const cbl_refer_t &des
*** 16109,16115 ****
                          charmap->mapped_character(ascii_space),
                          fill_bytes);
          // ...and then copy those spaces into place.
!         gg_memcpy(
            gg_add(member(destref.field->var_decl_node, "data"),
                   build_int_cst_type(SIZE_T, sourceref.field->data.capacity())),
            build_string_literal(fill_bytes, spaces),
--- 16172,16178 ----
                          charmap->mapped_character(ascii_space),
                          fill_bytes);
          // ...and then copy those spaces into place.
!         mover(
            gg_add(member(destref.field->var_decl_node, "data"),
                   build_int_cst_type(SIZE_T, sourceref.field->data.capacity())),
            build_string_literal(fill_bytes, spaces),
*************** mh_alpha_to_alpha(const cbl_refer_t &des
*** 16118,16127 ****
          moved = true;
          }
        }
!     else
        {
!       // Either the source or the dest is a table or refmod, so we need to do
!       // more work.
        tree source_data = gg_define_variable(UCHAR_P);
        tree source_len  = gg_define_variable(SIZE_T);
  
--- 16181,16276 ----
          moved = true;
          }
        }
! 
!     if( !refer_is_clean(sourceref) && refer_is_clean(destref) )
        {
!       // The source is dirty, but the destination is clean:
!       tree source_data;
!       tree source_len;
! 
!       tree dest_data;
!       tree dest_len;
! 
!       source_data = gg_add(member(sourceref.field->var_decl_node, "data"),
!                            refer_offset(sourceref));
!       source_len = refer_size_source(sourceref);
! 
!       dest_data = member(destref.field->var_decl_node, "data");
! 
!       dest_len = build_int_cst_type(SIZE_T, destref.field->data.capacity());
!       IF( source_len, ge_op, dest_len )
!         {
!         // The source has enough (or more) bytes to fill the destination:
!         mover(dest_data, source_data, dest_len);
!         }
!       ELSE
!         {
!         // The source data is too short.  We need to copy over what we have...
!         mover(dest_data, source_data, source_len);
! 
!         // And then right-fill the remainder with spaces. Create a buffer with
!         // more than enough spaces for our purposes:
!         size_t fill_bytes = destref.field->data.capacity();
!         char *spaces = static_cast<char *>(xmalloc(fill_bytes));
!         charmap_t *charmap =__gg__get_charmap(destref.field->codeset.encoding);
!         charmap->memset(spaces,
!                         charmap->mapped_character(ascii_space),
!                         fill_bytes);
!         // And then copy enough of those spaces into place.
!         mover(gg_add(dest_data, source_len),
!                   build_string_literal(fill_bytes, spaces),
!                   gg_subtract(dest_len, source_len));
!         free(spaces);
!         }
!       ENDIF
!       moved = true;
!       }
!     if( refer_is_clean(sourceref) && !refer_is_clean(destref) )
!       {
!       // The source is clean but the destination is dirty:
!       tree source_data;
!       tree source_len;
! 
!       tree dest_data;
!       tree dest_len ;
! 
!       source_data = member(sourceref.field->var_decl_node, "data");
!       source_len  = build_int_cst_type(SIZE_T,
!                                        sourceref.field->data.capacity());
!       dest_data = gg_add(member(destref.field->var_decl_node, "data"),
!                          refer_offset(destref));
!       dest_len = refer_size_dest(destref);
!       IF( source_len, ge_op, dest_len )
!         {
!         // The source has enough (or more) bytes to fill the destination:
!         mover(dest_data, source_data, dest_len);
!         }
!       ELSE
!         {
!         // The source data is too short.  We need to copy over what we have...
!         mover(dest_data, source_data, source_len);
! 
!         // And then right-fill the remainder with spaces. Create a buffer with
!         // more than enough spaces for our purposes:
!         size_t fill_bytes = destref.field->data.capacity();
!         char *spaces = static_cast<char *>(xmalloc(fill_bytes));
!         charmap_t *charmap =__gg__get_charmap(destref.field->codeset.encoding);
!         charmap->memset(spaces,
!                         charmap->mapped_character(ascii_space),
!                         fill_bytes);
!         // And then copy enough of those spaces into place.
!         mover(gg_add(dest_data, source_len),
!                   build_string_literal(fill_bytes, spaces),
!                   gg_subtract(dest_len, source_len));
!         free(spaces);
!         }
!       ENDIF
! 
!       moved = true;
!       }
!     if( !refer_is_clean(sourceref) && !refer_is_clean(destref) )
!       {
!       // Both the source and the dest are "dirty"
        tree source_data = gg_define_variable(UCHAR_P);
        tree source_len  = gg_define_variable(SIZE_T);
  
*************** mh_alpha_to_alpha(const cbl_refer_t &des
*** 16140,16151 ****
        IF( source_len, ge_op, dest_len )
          {
          // The source has enough (or more) bytes to fill the destination:
!         gg_memcpy(dest_data, source_data, dest_len);
          }
        ELSE
          {
          // The source data is too short.  We need to copy over what we have...
!         gg_memcpy(dest_data, source_data, source_len);
  
          // And then right-fill the remainder with spaces. Create a buffer with
          // more than enough spaces for our purposes:
--- 16289,16300 ----
        IF( source_len, ge_op, dest_len )
          {
          // The source has enough (or more) bytes to fill the destination:
!         mover(dest_data, source_data, dest_len);
          }
        ELSE
          {
          // The source data is too short.  We need to copy over what we have...
!         mover(dest_data, source_data, source_len);
  
          // And then right-fill the remainder with spaces. Create a buffer with
          // more than enough spaces for our purposes:
*************** mh_alpha_to_alpha(const cbl_refer_t &des
*** 16156,16162 ****
                          charmap->mapped_character(ascii_space),
                          fill_bytes);
          // And then copy enough of those spaces into place.
!         gg_memcpy(gg_add(dest_data, source_len),
                    build_string_literal(fill_bytes, spaces),
                    gg_subtract(dest_len, source_len));
          free(spaces);
--- 16305,16311 ----
                          charmap->mapped_character(ascii_space),
                          fill_bytes);
          // And then copy enough of those spaces into place.
!         mover(gg_add(dest_data, source_len),
                    build_string_literal(fill_bytes, spaces),
                    gg_subtract(dest_len, source_len));
          free(spaces);
diff -Nrcpad gcc-16-20260301/gcc/cobol/genutil.cc gcc-16-20260308/gcc/cobol/genutil.cc
*** gcc-16-20260301/gcc/cobol/genutil.cc	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/cobol/genutil.cc	Sun Mar  8 22:32:05 2026
*************** tree
*** 570,579 ****
  get_data_offset(const cbl_refer_t &refer,
                        int *pflags = NULL)
    {
-   Analyze();
    // This routine returns a tree which is the size_t offset to the data in the
    // refer/field
  
    // Because this is for source / sending variables, checks are made for
    // OCCURS DEPENDING ON violations (when those exceptions are enabled)
  
--- 570,668 ----
  get_data_offset(const cbl_refer_t &refer,
                        int *pflags = NULL)
    {
    // This routine returns a tree which is the size_t offset to the data in the
    // refer/field
  
+   /* Let's first attempt to handle commonly-occurring situations that can
+      be handled efficiently.  */
+ 
+   const cbl_enabled_exceptions_t &enabled_exceptions(cdf_enabled_exceptions());
+   if(    !enabled_exceptions.match(ec_bound_subscript_e) 
+       && !enabled_exceptions.match(ec_bound_odo_e)
+       && !enabled_exceptions.match(ec_bound_ref_mod_e) )
+     {
+     // There is no subscript bounds checking
+     bool all_literals = true;
+     for( size_t i=0; i<refer.nsubscript(); i++ )
+       {
+       if( (refer.subscripts[i].field->attr & FIGCONST_MASK) == zero_value_e )
+         {
+         // This refer is a figconst ZERO; we treat it as an ALL ZERO
+         // This is our internal representation for ALL, as in TABLE(ALL)
+         all_literals = false;
+         break;
+         }
+       if( !is_literal(refer.subscripts[i].field) )
+         {
+         // A subscript is not a literal.  Too bad.
+         all_literals = false;
+         break;
+         }
+       }
+     if( refer.refmod.from && !is_literal(refer.refmod.from->field) )
+       {
+       all_literals = false;
+       }
+     if( all_literals )
+       {
+       // We are dealing with foo(x)(y:z) where x and y are integer constants.
+       size_t offset = 0;
+ 
+       if( refer.nsubscript() )
+         {
+         // We have at least one subscript:
+ 
+         // Figure we have three subscripts, so nsubscript is 3
+         // Figure that the subscripts are {5, 4, 3}
+ 
+         // We expect that starting from refer.field, that three of our ancestors --
+         // call them A1, A2, and A3 -- have occurs clauses.
+ 
+         // We need to start with the rightmost subscript, and work our way up through
+         // our parents.  As we find each parent with an OCCURS, we increment qual_data
+         // by (subscript-1)*An->data.capacity()
+ 
+         // Establish the field_t pointer for walking up through our ancestors:
+         cbl_field_t *parent = refer.field;
+ 
+         // Note the backwards test, because refer->nsubscript is an unsigned value
+         for(size_t i=refer.nsubscript()-1; i<refer.nsubscript(); i-- )
+           {
+           // We need to search upward for an ancestor with occurs_max:
+           while(parent)
+             {
+             if( parent->occurs.ntimes() )
+               {
+               break;
+               }
+             parent = parent_of(parent);
+             }
+           // we might have an error condition at this point:
+           if( !parent )
+             {
+             cbl_internal_error("Too many subscripts");
+             }
+           // Pick up the integer value of the subscript.
+           long subscript = atol(refer.subscripts[i].field->data.original());
+ 
+           // Subscript is one-based integer
+           // Make it zero-based:
+           subscript = subscript - 1;
+           offset += subscript * parent->data.capacity();
+           parent = parent_of(parent);
+           }
+         }
+ 
+       if( refer.refmod.from )
+         {
+         // We know the refmod is a literal
+         offset +=   (atol(refer.refmod.from->field->data.original()) - 1)
+                   * refer.field->codeset.stride();
+         return build_int_cst_type(SIZE_T, offset);
+         }
+       }
+     }
+ 
    // Because this is for source / sending variables, checks are made for
    // OCCURS DEPENDING ON violations (when those exceptions are enabled)
  
*************** get_data_offset(const cbl_refer_t &refer
*** 636,643 ****
          }
        else
          {
-         const cbl_enabled_exceptions_t&
-                                 enabled_exceptions( cdf_enabled_exceptions() );
          if( !enabled_exceptions.match(ec_bound_subscript_e) )
            {
            // With no exception testing, just pick up the value
--- 725,730 ----
*************** get_data_offset(const cbl_refer_t &refer
*** 698,706 ****
        // Although we strictly don't need to look at the ODO value at this
        // point, we do want it checked for the purposes of ec-bound-odo
  
-       const cbl_enabled_exceptions_t&
-                                 enabled_exceptions( cdf_enabled_exceptions() );
- 
        if( enabled_exceptions.match(ec_bound_odo_e) )
          {
          if( parent->occurs.depending_on )
--- 785,790 ----
*************** tree   // size_t
*** 1933,1973 ****
  refer_size(const cbl_refer_t &refer, refer_type_t refer_type)
    {
    Analyze();
!   static tree retval = gg_define_variable(SIZE_T, "..rs_retval", vs_file_static);
! 
!   if( !refer.field )
      {
!     return size_t_zero_node;
      }
! 
!   if( refer_is_clean(refer) )
      {
!     return get_any_capacity(refer.field);
!     }
  
!   // Step the first:  Get the actual full length:
  
!   if( refer_has_depends(refer, refer_type) )
!     {
!     // Because there is a depends, we might have to change the length:
!     gg_assign(retval, refer_fill_depends(refer));
!     }
!   else
!     {
!     gg_assign(retval, get_any_capacity(refer.field));
!     }
  
!   if( refer.refmod.from || refer.refmod.len )
!     {
!     tree refmod = refer_refmod_length(refer);
!     // retval is the ODO based total length.
!     // refmod is the length resulting from refmod(from:len)
!     // We have to reduce retval by the effect of refmod:
!     tree diff = gg_subtract(get_any_capacity(refer.field),
!                             refmod);
!     gg_assign(retval, gg_subtract(retval, diff));
      }
-   return retval;
    }
  
  tree  // size_t
--- 2017,2066 ----
  refer_size(const cbl_refer_t &refer, refer_type_t refer_type)
    {
    Analyze();
!   if( refer.refmod.len && refer.refmod.len->field->type == FldLiteralN )
      {
!     return build_int_cst_type(SIZE_T,
!                               atol(  refer.refmod.len->field->data.original())
!                                    * refer.field->codeset.stride());
      }
!   else
      {
!     static tree retval = gg_define_variable(SIZE_T, "..rs_retval", vs_file_static);
  
!     if( !refer.field )
!       {
!       return size_t_zero_node;
!       }
  
!     if( refer_is_clean(refer) )
!       {
!       return get_any_capacity(refer.field);
!       }
  
!     // Step the first:  Get the actual full length:
! 
!     if( refer_has_depends(refer, refer_type) )
!       {
!       // Because there is a depends, we might have to change the length:
!       gg_assign(retval, refer_fill_depends(refer));
!       }
!     else
!       {
!       gg_assign(retval, get_any_capacity(refer.field));
!       }
! 
!     if( refer.refmod.from || refer.refmod.len )
!       {
!       tree refmod = refer_refmod_length(refer);
!       // retval is the ODO based total length.
!       // refmod is the length resulting from refmod(from:len)
!       // We have to reduce retval by the effect of refmod:
!       tree diff = gg_subtract(get_any_capacity(refer.field),
!                               refmod);
!       gg_assign(retval, gg_subtract(retval, diff));
!       }
!     return retval;
      }
    }
  
  tree  // size_t
*************** refer_size_source(const cbl_refer_t &ref
*** 1989,1995 ****
        other.  But there conceivably might be others,.
  
        You have been warned.
- 
        */
  
    if( !refer.field )
--- 2082,2087 ----
*************** refer_size_source(const cbl_refer_t &ref
*** 2004,2009 ****
--- 2096,2115 ----
      return get_any_capacity(refer.field);
      }
  
+   // We are dealing with a refer
+   const cbl_enabled_exceptions_t&
+                                 enabled_exceptions( cdf_enabled_exceptions() );
+   if( !enabled_exceptions.match(ec_bound_ref_mod_e) )
+     {
+     // ref_mod bounds checking is off
+     if( refer.refmod.len && refer.refmod.len->field->type == FldLiteralN )
+       {
+       // And the refmod.len is a literal.
+       return build_int_cst_type(SIZE_T,
+                               atol(  refer.refmod.len->field->data.original())
+                                    * refer.field->codeset.stride());      }
+     }
+ 
    // This assignment has to be here. Simply returning refer_size() results
    // in regression testing errors.
    static tree retval = gg_define_variable(SIZE_T, "..rss_retval", vs_file_static);
diff -Nrcpad gcc-16-20260301/gcc/common.opt.urls gcc-16-20260308/gcc/common.opt.urls
*** gcc-16-20260301/gcc/common.opt.urls	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/common.opt.urls	Sun Mar  8 22:32:05 2026
*************** shared-libgcc
*** 2003,2012 ****
  UrlSuffix(gcc/Link-Options.html#index-shared-libgcc)
  
  specs
! UrlSuffix(gcc/Overall-Options.html#index-specs)
  
  specs=
! UrlSuffix(gcc/Overall-Options.html#index-specs)
  
  static
  UrlSuffix(gcc/Link-Options.html#index-static)
--- 2003,2012 ----
  UrlSuffix(gcc/Link-Options.html#index-shared-libgcc)
  
  specs
! UrlSuffix(gcc/Developer-Options.html#index-specs)
  
  specs=
! UrlSuffix(gcc/Developer-Options.html#index-specs)
  
  static
  UrlSuffix(gcc/Link-Options.html#index-static)
diff -Nrcpad gcc-16-20260301/gcc/config/aarch64/aarch64-builtins.cc gcc-16-20260308/gcc/config/aarch64/aarch64-builtins.cc
*** gcc-16-20260301/gcc/config/aarch64/aarch64-builtins.cc	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/config/aarch64/aarch64-builtins.cc	Sun Mar  8 22:32:05 2026
*************** aarch64_init_ls64_builtins_types (void)
*** 2321,2326 ****
--- 2321,2327 ----
    const char *tuple_type_name = "__arm_data512_t";
    tree node_type = get_typenode_from_name (UINT64_TYPE);
    tree array_type = build_array_type_nelts (node_type, 8);
+   array_type = build_distinct_type_copy (array_type);
    SET_TYPE_MODE (array_type, V8DImode);
  
    gcc_assert (TYPE_MODE_RAW (array_type) == TYPE_MODE (array_type));
diff -Nrcpad gcc-16-20260301/gcc/config/bpf/bpf-protos.h gcc-16-20260308/gcc/config/bpf/bpf-protos.h
*** gcc-16-20260301/gcc/config/bpf/bpf-protos.h	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/config/bpf/bpf-protos.h	Sun Mar  8 22:32:05 2026
*************** along with GCC; see the file COPYING3.
*** 23,29 ****
  /* Routines implemented in bpf.cc.  */
  
  extern HOST_WIDE_INT bpf_initial_elimination_offset (int, int);
! extern const char *bpf_output_call (rtx);
  extern void bpf_target_macros (cpp_reader *);
  extern void bpf_print_operand (FILE *, rtx, int);
  extern void bpf_print_operand_address (FILE *, rtx);
--- 23,29 ----
  /* Routines implemented in bpf.cc.  */
  
  extern HOST_WIDE_INT bpf_initial_elimination_offset (int, int);
! extern const char *bpf_output_call (const char *templ, rtx *, int target_index);
  extern void bpf_target_macros (cpp_reader *);
  extern void bpf_print_operand (FILE *, rtx, int);
  extern void bpf_print_operand_address (FILE *, rtx);
diff -Nrcpad gcc-16-20260301/gcc/config/bpf/bpf.cc gcc-16-20260308/gcc/config/bpf/bpf.cc
*** gcc-16-20260301/gcc/config/bpf/bpf.cc	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/config/bpf/bpf.cc	Sun Mar  8 22:32:05 2026
*************** bpf_output_destructor (rtx symbol, int p
*** 745,758 ****
     bpf.md.  */
  
  const char *
! bpf_output_call (rtx target)
  {
!   rtx xops[1];
! 
    switch (GET_CODE (target))
      {
      case CONST_INT:
-       output_asm_insn ("call\t%0", &target);
        break;
      case SYMBOL_REF:
        {
--- 745,756 ----
     bpf.md.  */
  
  const char *
! bpf_output_call (const char *templ, rtx *operands, int target_index)
  {
!   rtx target = operands[target_index];
    switch (GET_CODE (target))
      {
      case CONST_INT:
        break;
      case SYMBOL_REF:
        {
*************** bpf_output_call (rtx target)
*** 765,790 ****
  	  {
  	    tree attr_args = TREE_VALUE (attr);
  
! 	    xops[0] = GEN_INT (TREE_INT_CST_LOW (TREE_VALUE (attr_args)));
! 	    output_asm_insn ("call\t%0", xops);
  	  }
- 	else
- 	  output_asm_insn ("call\t%0", &target);
- 
  	break;
        }
      default:
!       if (TARGET_XBPF)
! 	output_asm_insn ("call\t%0", &target);
!       else
  	{
  	  error ("indirect call in function, which are not supported by eBPF");
! 	  output_asm_insn ("call 0", NULL);
  	}
        break;
      }
  
!   return "";
  }
  
  const char *
--- 763,783 ----
  	  {
  	    tree attr_args = TREE_VALUE (attr);
  
! 	    operands[target_index] =
! 	      GEN_INT (TREE_INT_CST_LOW (TREE_VALUE (attr_args)));
  	  }
  	break;
        }
      default:
!       if (!TARGET_XBPF)
  	{
  	  error ("indirect call in function, which are not supported by eBPF");
! 	  operands[target_index] = GEN_INT (0);
  	}
        break;
      }
  
!   return templ;
  }
  
  const char *
*************** bpf_debug_unwind_info ()
*** 1145,1150 ****
--- 1138,1227 ----
  #undef TARGET_DEBUG_UNWIND_INFO
  #define TARGET_DEBUG_UNWIND_INFO bpf_debug_unwind_info
  
+ /* Create a BTF.ext line_info entry.  */
+ 
+ static void
+ bpf_output_line_info (FILE *asm_out_file, rtx_insn *insn)
+ {
+   static unsigned int line_info_label = 1;
+   static tree cfun_decl = NULL_TREE;
+   static bool func_start_added = false;
+   const char *label = NULL;
+   unsigned int loc = 0;
+   expanded_location exploc = {NULL, 0, 0, NULL, false};
+   static expanded_location prev_exploc = {NULL, 0, 0, NULL, false};
+ 
+   if(!btf_debuginfo_p () || flag_building_libgcc)
+     return;
+ 
+   gcc_assert (insn != NULL_RTX);
+ 
+   if (current_function_decl != cfun_decl
+       && GET_CODE (insn) == NOTE)
+     {
+       label = current_function_func_begin_label;
+       loc = DECL_SOURCE_LOCATION (current_function_decl);
+       exploc = expand_location (loc);
+       func_start_added = true;
+       prev_exploc = exploc;
+     }
+   else
+     {
+       if (GET_CODE (insn) == NOTE)
+ 	return;
+ 
+       /* Already added a label for this location.  This might not be fully
+ 	 accurate but it is better then adding 2 entries on the same location,
+ 	 which is incompatible with the verifier expectations.  */
+       if (func_start_added == true)
+ 	{
+ 	  func_start_added = false;
+ 	  return;
+ 	}
+ 
+ 
+       if (!INSN_HAS_LOCATION (insn))
+ 	return;
+ 
+       exploc = insn_location (insn);
+ 
+       if (exploc.file == NULL || exploc.line == 0
+ 	  || (exploc.line == prev_exploc.line
+ 	      && exploc.column == prev_exploc.column))
+ 	return;
+ 
+       prev_exploc = exploc;
+ 
+       char tmp_label[25];
+       sprintf (tmp_label, "LI%u", line_info_label);
+       ASM_OUTPUT_LABEL (asm_out_file, tmp_label);
+       line_info_label += 1;
+       label = const_cast<char *> (ggc_strdup (tmp_label));
+     }
+ 
+   cfun_decl = current_function_decl;
+ 
+   if (exploc.file != NULL && exploc.line != 0)
+     btf_add_line_info_for (label, exploc.file, exploc.line, exploc.column);
+ }
+ 
+ 
+ /* This hook is defined as a way for BPF target to create a label before each
+    emitted instruction and emit line_info information.  This data is later
+    output in .BTF.ext section.
+    This approach expects TARGET_EMIT_BEFORE_INSN to be returning TRUE as
+    this function needs to be called before the instruction is emitted.  Current
+    default behaviour returns TRUE and the hook is left undefined.  */
+ 
+ static void
+ bpf_asm_out_unwind_emit (FILE *asm_out_file, rtx_insn *insn)
+ {
+   bpf_output_line_info (asm_out_file, insn);
+ }
+ 
+ #undef TARGET_ASM_UNWIND_EMIT
+ #define TARGET_ASM_UNWIND_EMIT bpf_asm_out_unwind_emit
+ 
  /* Output assembly directives to assemble data of various sized and
     alignments.  */
  
diff -Nrcpad gcc-16-20260301/gcc/config/bpf/bpf.md gcc-16-20260308/gcc/config/bpf/bpf.md
*** gcc-16-20260301/gcc/config/bpf/bpf.md	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/config/bpf/bpf.md	Sun Mar  8 22:32:05 2026
***************
*** 545,551 ****
    ;; operands[2] is next_arg_register
    ;; operands[3] is struct_value_size_rtx.
    ""
!   { return bpf_output_call (operands[0]); }
    [(set_attr "type" "jmp")])
  
  (define_expand "call_value"
--- 545,551 ----
    ;; operands[2] is next_arg_register
    ;; operands[3] is struct_value_size_rtx.
    ""
!   { return bpf_output_call ("call\t%0", operands, 0); }
    [(set_attr "type" "jmp")])
  
  (define_expand "call_value"
***************
*** 568,574 ****
    ;; operands[3] is next_arg_register
    ;; operands[4] is struct_value_size_rtx.
    ""
!   { return bpf_output_call (operands[1]); }
    [(set_attr "type" "jmp")])
  
  (define_insn "sibcall"
--- 568,574 ----
    ;; operands[3] is next_arg_register
    ;; operands[4] is struct_value_size_rtx.
    ""
!   { return bpf_output_call ("call\t%1", operands, 1); }
    [(set_attr "type" "jmp")])
  
  (define_insn "sibcall"
diff -Nrcpad gcc-16-20260301/gcc/config/bpf/btfext-out.cc gcc-16-20260308/gcc/config/bpf/btfext-out.cc
*** gcc-16-20260301/gcc/config/bpf/btfext-out.cc	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/config/bpf/btfext-out.cc	Sun Mar  8 22:32:05 2026
***************
*** 32,37 ****
--- 32,38 ----
  #include "rtl.h"
  #include "tree-pretty-print.h"
  #include "cgraph.h"
+ #include "toplev.h"  /* get_src_pwd */
  
  #include "btfext-out.h"
  
*************** struct GTY ((chain_next ("%h.next"))) bt
*** 124,137 ****
  /* A lineinfo record, in the .BTF.ext lineinfo section.  */
  struct GTY ((chain_next ("%h.next"))) btf_ext_lineinfo
  {
!   uint32_t insn_off;      /* Offset of the instruction.  */
    uint32_t file_name_off; /* Offset of file name in BTF string table.  */
    uint32_t line_off;      /* Offset of source line in BTF string table.  */
!   uint32_t line_col;      /* Line number (bits 31-11) and column (11-0).  */
  
    struct btf_ext_lineinfo *next; /* Linked list to collect line_info elems.  */
  };
  
  /* Internal representation of a BPF CO-RE relocation record.  */
  struct GTY ((chain_next ("%h.next"))) btf_ext_core_reloc {
    ctf_dtdef_ref bpfcr_type;		/* BTF type involved in relocation.  */
--- 125,143 ----
  /* A lineinfo record, in the .BTF.ext lineinfo section.  */
  struct GTY ((chain_next ("%h.next"))) btf_ext_lineinfo
  {
!   const char *insn_label; /* Instruction label.  */
!   const char *file_name;  /* Source-code file name.  */
    uint32_t file_name_off; /* Offset of file name in BTF string table.  */
    uint32_t line_off;      /* Offset of source line in BTF string table.  */
!   uint32_t line_col;      /* Line number (bits 31-10) and column (9-0).  */
  
    struct btf_ext_lineinfo *next; /* Linked list to collect line_info elems.  */
  };
  
+ #define BTF_LINE_INFO_LINE(line_col)	      ((line_col) >> 10)
+ #define BTF_LINE_INFO_COLUMN(line_col)        ((line_col) & 0x3ff)
+ #define BTF_LINE_INFO_LINE_COL(line, column)  (line << 10 | (column & 0x3ff))
+ 
  /* Internal representation of a BPF CO-RE relocation record.  */
  struct GTY ((chain_next ("%h.next"))) btf_ext_core_reloc {
    ctf_dtdef_ref bpfcr_type;		/* BTF type involved in relocation.  */
*************** bpf_create_or_find_funcinfo (const char
*** 235,240 ****
--- 241,266 ----
    return *head;
  }
  
+ /* Function to create a lineinfo node in info.  */
+ 
+ static struct btf_ext_lineinfo *
+ bpf_create_lineinfo (const char *sec_name, btf_ext_info_sec **in_sec = NULL)
+ {
+   struct btf_ext_info_sec *sec_elem =
+     btfext_info_sec_find_or_add (sec_name, true);
+ 
+   if (in_sec != NULL)
+     *in_sec = sec_elem;
+ 
+   struct btf_ext_lineinfo **head =
+     SEARCH_NODE_AND_RETURN(struct btf_ext_lineinfo,
+ 			   sec_elem->line_info.head,
+ 			   false);
+   *head = ggc_cleared_alloc<struct btf_ext_lineinfo> ();
+ 
+   return *head;
+ }
+ 
  /* Function to create a core_reloc node in info.  */
  
  static struct btf_ext_core_reloc *
*************** btf_validate_funcinfo (btf_ext_info_sec
*** 438,443 ****
--- 464,506 ----
      }
  }
  
+ #define STR_BUFF_SIZE 256
+ 
+ struct btf_ext_lineinfo *
+ btf_add_line_info_for (const char *label, const char *filename,
+ 		       unsigned int line, unsigned int column)
+ {
+   const char *sec_name = decl_section_name (current_function_decl);
+ 
+   if (sec_name == NULL)
+     sec_name = ".text";
+ 
+   struct btf_ext_info_sec *sec = NULL;
+   struct btf_ext_lineinfo *info =
+     bpf_create_lineinfo (sec_name, &sec);
+ 
+   info->insn_label = label;
+ 
+   if (!IS_DIR_SEPARATOR (filename[0]))
+     {
+       char *s = xasprintf ("%s%c%s", get_src_pwd (),
+ 				 DIR_SEPARATOR, filename);
+       info->file_name = ggc_strdup (s);
+       free (s);
+     }
+   else
+     /* Filename is an absolute path.  */
+     info->file_name = ggc_strdup (filename);
+ 
+   info->file_name_off = btf_ext_add_string (info->file_name);
+   info->line_off = 0;
+   info->line_col = BTF_LINE_INFO_LINE_COL (line, column);
+ 
+   sec->line_info.num_info += 1;
+   return info;
+ }
+ #undef STR_BUFF_SIZE
+ 
  /* Compute the section size in section for func_info, line_info and core_info
     regions of .BTF.ext.  */
  
*************** output_btfext_func_info (struct btf_ext_
*** 545,550 ****
--- 608,655 ----
      }
  }
  
+ /* Outputs line_info region on .BTF.ext.  */
+ 
+ static void
+ output_btfext_line_info (struct btf_ext_info_sec *sec)
+ {
+   unsigned int str_aux_off = ctfc_get_strtab_len (ctf_get_tu_ctfc (),
+ 						  CTF_STRTAB);
+   bool executed = false;
+   while (sec != NULL)
+     {
+       uint32_t count = 0;
+       if (sec->line_info.num_info > 0)
+ 	{
+ 	  if (executed == false && (executed = true))
+ 	    dw2_asm_output_data (4, 16, "LineInfo entry size");
+ 	  dw2_asm_output_data (4, sec->sec_name_off + str_aux_off,
+ 			       "LineInfo section string for %s",
+ 			       sec->sec_name);
+ 	  dw2_asm_output_data (4, sec->line_info.num_info, "Number of entries");
+ 
+ 	  struct btf_ext_lineinfo *elem = sec->line_info.head;
+ 	  while (elem != NULL)
+ 	    {
+ 	      count += 1;
+ 	      dw2_asm_output_offset (4, elem->insn_label, NULL, "insn_label");
+ 
+ 	      unsigned int file_name_off = btf_ext_add_string (elem->file_name);
+ 	      dw2_asm_output_data (4, file_name_off + str_aux_off,
+ 				   "file_name_off");
+ 	      dw2_asm_output_data (4, elem->line_off, "line_off");
+ 	      dw2_asm_output_data (4, elem->line_col, "(line, col) (%u, %u)",
+ 				   BTF_LINE_INFO_LINE (elem->line_col),
+ 				   BTF_LINE_INFO_COLUMN (elem->line_col));
+ 	      elem = elem->next;
+ 	    }
+ 	}
+ 
+       gcc_assert (count == sec->line_info.num_info);
+       sec = sec->next;
+     }
+ }
+ 
  /* Output all CO-RE relocation sections.  */
  
  static void
*************** btf_ext_output (void)
*** 622,627 ****
--- 727,733 ----
  
    output_btfext_header ();
    output_btfext_func_info (btf_ext);
+   output_btfext_line_info (btf_ext);
    if (TARGET_BPF_CORE)
      output_btfext_core_sections ();
  
diff -Nrcpad gcc-16-20260301/gcc/config/bpf/btfext-out.h gcc-16-20260308/gcc/config/bpf/btfext-out.h
*** gcc-16-20260301/gcc/config/bpf/btfext-out.h	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/config/bpf/btfext-out.h	Sun Mar  8 22:32:05 2026
*************** extern int bpf_core_get_sou_member_index
*** 99,104 ****
--- 99,108 ----
  
  struct btf_ext_funcinfo *btf_add_func_info_for (tree decl,
  						const char *label);
+ struct btf_ext_lineinfo *
+ btf_add_line_info_for (const char *label, const char *filename,
+ 		       unsigned int line, unsigned int column);
+ 
  unsigned int btf_ext_add_string (const char *str);
  
  #ifdef	__cplusplus
diff -Nrcpad gcc-16-20260301/gcc/config/i386/i386-protos.h gcc-16-20260308/gcc/config/i386/i386-protos.h
*** gcc-16-20260301/gcc/config/i386/i386-protos.h	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/config/i386/i386-protos.h	Sun Mar  8 22:32:06 2026
*************** extern int standard_sse_constant_p (rtx,
*** 60,66 ****
  extern const char *standard_sse_constant_opcode (rtx_insn *, rtx *);
  extern bool ix86_standard_x87sse_constant_load_p (const rtx_insn *, rtx);
  extern bool ix86_pre_reload_split (void);
! extern bool symbolic_reference_mentioned_p (rtx);
  extern bool extended_reg_mentioned_p (rtx);
  extern bool x86_extended_QIreg_mentioned_p (rtx_insn *);
  extern bool x86_extended_reg_mentioned_p (rtx);
--- 60,66 ----
  extern const char *standard_sse_constant_opcode (rtx_insn *, rtx *);
  extern bool ix86_standard_x87sse_constant_load_p (const rtx_insn *, rtx);
  extern bool ix86_pre_reload_split (void);
! extern bool symbolic_reference_mentioned_p (const_rtx);
  extern bool extended_reg_mentioned_p (rtx);
  extern bool x86_extended_QIreg_mentioned_p (rtx_insn *);
  extern bool x86_extended_reg_mentioned_p (rtx);
diff -Nrcpad gcc-16-20260301/gcc/config/i386/i386.cc gcc-16-20260308/gcc/config/i386/i386.cc
*** gcc-16-20260301/gcc/config/i386/i386.cc	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/config/i386/i386.cc	Sun Mar  8 22:32:06 2026
*************** ix86_output_ssemov (rtx_insn *insn, rtx
*** 5990,5996 ****
  /* Returns true if OP contains a symbol reference */
  
  bool
! symbolic_reference_mentioned_p (rtx op)
  {
    const char *fmt;
    int i;
--- 5990,5996 ----
  /* Returns true if OP contains a symbol reference */
  
  bool
! symbolic_reference_mentioned_p (const_rtx op)
  {
    const char *fmt;
    int i;
*************** output_adjust_stack_and_probe (rtx reg)
*** 8438,8444 ****
  
    /* Probe at SP.  */
    xops[1] = const0_rtx;
!   output_asm_insn ("or%z0\t{%1, (%0)|DWORD PTR [%0], %1}", xops);
  
    /* Test if SP == LAST_ADDR.  */
    xops[0] = stack_pointer_rtx;
--- 8438,8444 ----
  
    /* Probe at SP.  */
    xops[1] = const0_rtx;
!   output_asm_insn ("or{b}\t{%1, (%0)|BYTE PTR [%0], %1}", xops);
  
    /* Test if SP == LAST_ADDR.  */
    xops[0] = stack_pointer_rtx;
*************** output_probe_stack_range (rtx reg, rtx e
*** 8574,8580 ****
    xops[0] = stack_pointer_rtx;
    xops[1] = reg;
    xops[2] = const0_rtx;
!   output_asm_insn ("or%z0\t{%2, (%0,%1)|DWORD PTR [%0+%1], %2}", xops);
  
    /* Test if TEST_ADDR == LAST_ADDR.  */
    xops[0] = reg;
--- 8574,8580 ----
    xops[0] = stack_pointer_rtx;
    xops[1] = reg;
    xops[2] = const0_rtx;
!   output_asm_insn ("or{b}\t{%2, (%0,%1)|BYTE PTR [%0+%1], %2}", xops);
  
    /* Test if TEST_ADDR == LAST_ADDR.  */
    xops[0] = reg;
*************** ix86_find_all_reg_uses (HARD_REG_SET &re
*** 8717,8724 ****
  static bool
  ix86_access_stack_p (unsigned int regno, basic_block bb,
  		     HARD_REG_SET &set_up_by_prologue,
! 		     HARD_REG_SET &prologue_used)
  {
    /* Get all BBs which set REGNO and dominate the current BB from all
       DEFs of REGNO.  */
    for (df_ref def = DF_REG_DEF_CHAIN (regno);
--- 8717,8731 ----
  static bool
  ix86_access_stack_p (unsigned int regno, basic_block bb,
  		     HARD_REG_SET &set_up_by_prologue,
! 		     HARD_REG_SET &prologue_used,
! 		     auto_bitmap reg_dominate_bbs_known[],
! 		     auto_bitmap reg_dominate_bbs[])
  {
+   if (bitmap_bit_p (reg_dominate_bbs_known[regno], bb->index))
+     return bitmap_bit_p (reg_dominate_bbs[regno], bb->index);
+ 
+   bitmap_set_bit (reg_dominate_bbs_known[regno], bb->index);
+ 
    /* Get all BBs which set REGNO and dominate the current BB from all
       DEFs of REGNO.  */
    for (df_ref def = DF_REG_DEF_CHAIN (regno);
*************** ix86_access_stack_p (unsigned int regno,
*** 8735,8744 ****
  	    /* Return true if INSN requires stack.  */
  	    if (requires_stack_frame_p (insn, prologue_used,
  					set_up_by_prologue))
! 	      return true;
  	  }
        }
  
    return false;
  }
  
--- 8742,8817 ----
  	    /* Return true if INSN requires stack.  */
  	    if (requires_stack_frame_p (insn, prologue_used,
  					set_up_by_prologue))
! 	      {
! 		bitmap_set_bit (reg_dominate_bbs[regno], bb->index);
! 		return true;
! 	      }
  	  }
        }
  
+   /* When we get here, REGNO used in the current BB doesn't access
+      stack.  */
+   return false;
+ }
+ 
+ /* Helper function for ix86_symbolic_const_load_p.  */
+ 
+ static bool
+ ix86_symbolic_const_load_p_1 (rtx set)
+ {
+   rtx dest = SET_DEST (set);
+ 
+   if (!REG_P (dest))
+     return false;
+ 
+   /* Reject non-Pmode modes.  */
+   if (GET_MODE (dest) != Pmode)
+     return false;
+ 
+   const_rtx src = SET_SRC (set);
+ 
+   subrtx_iterator::array_type array;
+   FOR_EACH_SUBRTX (iter, array, src, ALL)
+     {
+       auto op = *iter;
+ 
+       if (MEM_P (op))
+ 	iter.skip_subrtxes ();
+       else if (SYMBOLIC_CONST (op))
+ 	return true;
+     }
+ 
+   return false;
+ }
+ 
+ /* Return true if INSN loads a symbolic constant into register REGNO.  */
+ 
+ static bool
+ ix86_symbolic_const_load_p (rtx_insn *insn, unsigned int regno)
+ {
+   rtx set = single_set (insn);
+   if (set)
+     return ix86_symbolic_const_load_p_1 (set);
+ 
+   rtx pat = PATTERN (insn);
+   if (GET_CODE (pat) != PARALLEL)
+     return false;
+ 
+   for (int i = 0; i < XVECLEN (pat, 0); i++)
+     {
+       rtx exp = XVECEXP (pat, 0, i);
+ 
+       if (GET_CODE (exp) == SET)
+ 	{
+ 	  rtx dest = SET_DEST (exp);
+ 	  if (REG_P (dest)
+ 	      && GET_MODE (dest) == Pmode
+ 	      && REGNO (dest) == regno
+ 	      && ix86_symbolic_const_load_p_1 (exp))
+ 	    return true;
+ 	}
+     }
+ 
    return false;
  }
  
*************** ix86_find_max_used_stack_alignment (unsi
*** 8818,8849 ****
    hard_reg_set_iterator hrsi;
    stack_access_data data;
  
    data.stack_alignment = &stack_alignment;
  
    EXECUTE_IF_SET_IN_HARD_REG_SET (stack_slot_access, 0, regno, hrsi)
!     for (df_ref ref = DF_REG_USE_CHAIN (regno);
! 	 ref != NULL;
! 	 ref = DF_REF_NEXT_REG (ref))
!       {
! 	if (DF_REF_IS_ARTIFICIAL (ref))
! 	  continue;
  
! 	rtx_insn *insn = DF_REF_INSN (ref);
  
! 	if (!NONJUMP_INSN_P (insn))
! 	  continue;
  
! 	if (TEST_HARD_REG_BIT (hard_stack_slot_access, regno)
! 	    || ix86_access_stack_p (regno, BLOCK_FOR_INSN (insn),
! 				    set_up_by_prologue, prologue_used))
! 	  {
! 	    /* Update stack alignment if REGNO is used for stack
! 	       access.  */
! 	    data.reg = DF_REF_REG (ref);
! 	    note_stores (insn, ix86_update_stack_alignment, &data);
  	    continue;
! 	  }
!       }
  
    free_dominance_info (CDI_DOMINATORS);
  }
--- 8891,8949 ----
    hard_reg_set_iterator hrsi;
    stack_access_data data;
  
+   auto_bitmap reg_dominate_bbs_known[FIRST_PSEUDO_REGISTER];
+   auto_bitmap reg_dominate_bbs[FIRST_PSEUDO_REGISTER];
+ 
    data.stack_alignment = &stack_alignment;
  
    EXECUTE_IF_SET_IN_HARD_REG_SET (stack_slot_access, 0, regno, hrsi)
!     {
!       /* Set to true if there is a symbolic constant load into REGNO.  */
!       bool symbolic_const_load_p = false;
  
!       if (!TEST_HARD_REG_BIT (hard_stack_slot_access, regno))
! 	for (df_ref def = DF_REG_DEF_CHAIN (regno);
! 	     def;
! 	     def = DF_REF_NEXT_REG (def))
! 	  if (!DF_REF_IS_ARTIFICIAL (def)
! 	      && !DF_REF_FLAGS_IS_SET (def, DF_REF_MAY_CLOBBER)
! 	      && !DF_REF_FLAGS_IS_SET (def, DF_REF_MUST_CLOBBER))
! 	    {
! 	      rtx_insn *insn = DF_REF_INSN (def);
! 	      if (ix86_symbolic_const_load_p (insn, regno))
! 		{
! 		  symbolic_const_load_p = true;
! 		  break;
! 		}
! 	    }
  
!       for (df_ref ref = DF_REG_USE_CHAIN (regno);
! 	   ref != NULL;
! 	   ref = DF_REF_NEXT_REG (ref))
! 	{
! 	  if (DF_REF_IS_ARTIFICIAL (ref))
! 	    continue;
  
! 	  rtx_insn *insn = DF_REF_INSN (ref);
! 
! 	  if (!NONJUMP_INSN_P (insn))
  	    continue;
! 
! 	  /* If there is no symbolic constant load into the register,
! 	     don't call ix86_access_stack_p.  */
! 	  if (!symbolic_const_load_p
! 	      || ix86_access_stack_p (regno, BLOCK_FOR_INSN (insn),
! 				      set_up_by_prologue, prologue_used,
! 				      reg_dominate_bbs_known,
! 				      reg_dominate_bbs))
! 	    {
! 	      /* Update stack alignment if REGNO is used for stack
! 		 access.  */
! 	      data.reg = DF_REF_REG (ref);
! 	      note_stores (insn, ix86_update_stack_alignment, &data);
! 	    }
! 	}
!     }
  
    free_dominance_info (CDI_DOMINATORS);
  }
diff -Nrcpad gcc-16-20260301/gcc/config/i386/i386.md gcc-16-20260308/gcc/config/i386/i386.md
*** gcc-16-20260301/gcc/config/i386/i386.md	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/config/i386/i386.md	Sun Mar  8 22:32:06 2026
***************
*** 3360,3366 ****
     (set (match_dup 1)
  	(match_dup 0))]
    ""
!   "xchg{<imodesuffix>}\t%1, %0"
    [(set_attr "type" "imov")
     (set_attr "mode" "<MODE>")
     (set_attr "pent_pair" "np")
--- 3360,3366 ----
     (set (match_dup 1)
  	(match_dup 0))]
    ""
!   "xchg{<imodesuffix>}\t{%1, %0|%0, %1}"
    [(set_attr "type" "imov")
     (set_attr "mode" "<MODE>")
     (set_attr "pent_pair" "np")
***************
*** 3375,3382 ****
  	(match_dup 0))]
    ""
    "@
!    xchg{<imodesuffix>}\t%1, %0
!    xchg{l}\t%k1, %k0"
    [(set_attr "type" "imov")
     (set_attr "mode" "<MODE>,SI")
     (set (attr "preferred_for_size")
--- 3375,3382 ----
  	(match_dup 0))]
    ""
    "@
!    xchg{<imodesuffix>}\t{%1, %0|%0, %1}
!    xchg{l}\t{%k1, %k0|%k0, %k1}"
    [(set_attr "type" "imov")
     (set_attr "mode" "<MODE>,SI")
     (set (attr "preferred_for_size")
***************
*** 27798,27820 ****
    [(match_operand 0 "memory_operand")]
    ""
  {
!   emit_insn (gen_probe_stack_1
! 	     (word_mode, operands[0], const0_rtx));
    DONE;
  })
  
  ;; Use OR for stack probes, this is shorter.
! (define_insn "@probe_stack_1_<mode>"
!   [(set (match_operand:W 0 "memory_operand" "=m")
! 	(unspec:W [(match_operand:W 1 "const0_operand")]
  		  UNSPEC_PROBE_STACK))
     (clobber (reg:CC FLAGS_REG))]
    ""
!   "or{<imodesuffix>}\t{%1, %0|%0, %1}"
    [(set_attr "type" "alu1")
!    (set_attr "mode" "<MODE>")
     (set_attr "length_immediate" "1")])
!   
  (define_insn "@adjust_stack_and_probe_<mode>"
    [(set (match_operand:P 0 "register_operand" "=r")
  	(unspec_volatile:P [(match_operand:P 1 "register_operand" "0")]
--- 27798,27820 ----
    [(match_operand 0 "memory_operand")]
    ""
  {
!   emit_insn (gen_probe_stack_1 (adjust_address (operands[0], QImode, 0),
! 				const0_rtx));
    DONE;
  })
  
  ;; Use OR for stack probes, this is shorter.
! (define_insn "probe_stack_1"
!   [(set (match_operand:QI 0 "memory_operand" "=m")
! 	(unspec:QI [(match_operand:QI 1 "const0_operand")]
  		  UNSPEC_PROBE_STACK))
     (clobber (reg:CC FLAGS_REG))]
    ""
!   "or{b}\t{%1, %0|%0, %1}"
    [(set_attr "type" "alu1")
!    (set_attr "mode" "QI")
     (set_attr "length_immediate" "1")])
! 
  (define_insn "@adjust_stack_and_probe_<mode>"
    [(set (match_operand:P 0 "register_operand" "=r")
  	(unspec_volatile:P [(match_operand:P 1 "register_operand" "0")]
***************
*** 30267,30273 ****
  		     (match_operand:SWI48 1 "memory_operand" "m")]
  		    UNSPECV_WRSS)]
    "TARGET_SHSTK"
!   "wrss<mskmodesuffix>\t%0, %1"
    [(set_attr "length" "3")
     (set_attr "type" "other")])
  
--- 30267,30273 ----
  		     (match_operand:SWI48 1 "memory_operand" "m")]
  		    UNSPECV_WRSS)]
    "TARGET_SHSTK"
!   "wrss<mskmodesuffix>\t{%0, %1|%1, %0}"
    [(set_attr "length" "3")
     (set_attr "type" "other")])
  
***************
*** 30276,30282 ****
  		     (match_operand:SWI48 1 "memory_operand" "m")]
  		    UNSPECV_WRUSS)]
    "TARGET_SHSTK"
!   "wruss<mskmodesuffix>\t%0, %1"
    [(set_attr "length" "4")
     (set_attr "type" "other")])
  
--- 30276,30282 ----
  		     (match_operand:SWI48 1 "memory_operand" "m")]
  		    UNSPECV_WRUSS)]
    "TARGET_SHSTK"
!   "wruss<mskmodesuffix>\t{%0, %1|%1, %0}"
    [(set_attr "length" "4")
     (set_attr "type" "other")])
  
diff -Nrcpad gcc-16-20260301/gcc/config/i386/sse.md gcc-16-20260308/gcc/config/i386/sse.md
*** gcc-16-20260301/gcc/config/i386/sse.md	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/config/i386/sse.md	Sun Mar  8 22:32:06 2026
***************
*** 1744,1750 ****
  	  (match_operand:<ssevecmode> 4 "const0_operand")
  	  (const_int 1)))]
    "TARGET_AVX512F"
!   "vmov<ssescalarmodesuffix>\t{%1, %0%{%3%}%N2|%0%{3%}%N2, %1}"
    [(set_attr "type" "ssemov")
     (set_attr "prefix" "evex")
     (set_attr "memory" "load")
--- 1744,1750 ----
  	  (match_operand:<ssevecmode> 4 "const0_operand")
  	  (const_int 1)))]
    "TARGET_AVX512F"
!   "vmov<ssescalarmodesuffix>\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}"
    [(set_attr "type" "ssemov")
     (set_attr "prefix" "evex")
     (set_attr "memory" "load")
***************
*** 5241,5247 ****
  	    (match_operand:V8BF 1 "nonimmediate_operand" "vm")
  	    (parallel [(const_int 0)]))))]
    "TARGET_AVX10_2"
!   "vcomisbf16\t{%1, %0|%0, %1}"
    [(set_attr "prefix" "evex")
     (set_attr "type" "ssecomi")])
  
--- 5241,5247 ----
  	    (match_operand:V8BF 1 "nonimmediate_operand" "vm")
  	    (parallel [(const_int 0)]))))]
    "TARGET_AVX10_2"
!   "vcomisbf16\t{%1, %0|%0, %w1}"
    [(set_attr "prefix" "evex")
     (set_attr "type" "ssecomi")])
  
***************
*** 7036,7042 ****
  	  (match_dup 3)
  	  (const_int 1)))]
    "TARGET_AVX512F"
!   "vfmadd231<ssescalarmodesuffix>\t{<round_op5>%2, %1, %0%{%4%}|%0%{%4%}, %<iptr>3, %<iptr>2<round_op5>}"
    [(set_attr "type" "ssemuladd")
     (set_attr "prefix" "evex")
     (set_attr "mode" "<MODE>")])
--- 7036,7042 ----
  	  (match_dup 3)
  	  (const_int 1)))]
    "TARGET_AVX512F"
!   "vfmadd231<ssescalarmodesuffix>\t{<round_op5>%2, %1, %0%{%4%}|%0%{%4%}, %<iptr>1, %<iptr>2<round_op5>}"
    [(set_attr "type" "ssemuladd")
     (set_attr "prefix" "evex")
     (set_attr "mode" "<MODE>")])
***************
*** 7110,7116 ****
  	  (match_dup 3)
  	  (const_int 1)))]
    "TARGET_AVX512F"
!   "vfmsub231<ssescalarmodesuffix>\t{<round_op5>%2, %1, %0%{%4%}|%0%{%4%}, %<iptr>3, %<iptr>2<round_op5>}"
    [(set_attr "type" "ssemuladd")
     (set_attr "prefix" "evex")
     (set_attr "mode" "<MODE>")])
--- 7110,7116 ----
  	  (match_dup 3)
  	  (const_int 1)))]
    "TARGET_AVX512F"
!   "vfmsub231<ssescalarmodesuffix>\t{<round_op5>%2, %1, %0%{%4%}|%0%{%4%}, %<iptr>1, %<iptr>2<round_op5>}"
    [(set_attr "type" "ssemuladd")
     (set_attr "prefix" "evex")
     (set_attr "mode" "<MODE>")])
***************
*** 7171,7177 ****
  	  (match_dup 3)
  	  (const_int 1)))]
    "TARGET_AVX512F"
!   "vfnmadd231<ssescalarmodesuffix>\t{<round_op5>%2, %1, %0%{%4%}|%0%{%4%}, %<iptr>3, %<iptr>2<round_op5>}"
    [(set_attr "type" "ssemuladd")
     (set_attr "prefix" "evex")
     (set_attr "mode" "<MODE>")])
--- 7171,7177 ----
  	  (match_dup 3)
  	  (const_int 1)))]
    "TARGET_AVX512F"
!   "vfnmadd231<ssescalarmodesuffix>\t{<round_op5>%2, %1, %0%{%4%}|%0%{%4%}, %<iptr>1, %<iptr>2<round_op5>}"
    [(set_attr "type" "ssemuladd")
     (set_attr "prefix" "evex")
     (set_attr "mode" "<MODE>")])
***************
*** 7248,7254 ****
  	  (match_dup 3)
  	  (const_int 1)))]
    "TARGET_AVX512F"
!   "vfnmsub231<ssescalarmodesuffix>\t{<round_op5>%2, %1, %0%{%4%}|%0%{%4%}, %<iptr>3, %<iptr>2<round_op5>}"
    [(set_attr "type" "ssemuladd")
     (set_attr "prefix" "evex")
     (set_attr "mode" "<MODE>")])
--- 7248,7254 ----
  	  (match_dup 3)
  	  (const_int 1)))]
    "TARGET_AVX512F"
!   "vfnmsub231<ssescalarmodesuffix>\t{<round_op5>%2, %1, %0%{%4%}|%0%{%4%}, %<iptr>1, %<iptr>2<round_op5>}"
    [(set_attr "type" "ssemuladd")
     (set_attr "prefix" "evex")
     (set_attr "mode" "<MODE>")])
***************
*** 12377,12383 ****
    operands[2] = gen_lowpart (<ssescalarmode>mode, operands[2]);
  })
  
! ;; vmovw clears also the higer bits
  (define_insn "vec_set<mode>_0"
    [(set (match_operand:VI2F_256_512 0 "register_operand" "=v,v,v")
  	(vec_merge:VI2F_256_512
--- 12377,12383 ----
    operands[2] = gen_lowpart (<ssescalarmode>mode, operands[2]);
  })
  
! ;; vmovw clears also the higher bits
  (define_insn "vec_set<mode>_0"
    [(set (match_operand:VI2F_256_512 0 "register_operand" "=v,v,v")
  	(vec_merge:VI2F_256_512
***************
*** 12435,12451 ****
    DONE;
  })
  
! (define_insn "avx512fp16_mov<mode>"
    [(set (match_operand:V8_128 0 "register_operand" "=v,v")
  	(vec_merge:V8_128
  	  (match_operand:V8_128 2 "register_operand" "v,v")
  	  (match_operand:V8_128 1 "reg_or_0_operand" "v,C")
  	  (const_int 1)))]
    "TARGET_AVX512FP16
!   || (TARGET_AVX10_2 && const0_operand (operands[1], <MODE>mode))"
    "@
      vmovsh\t{%2, %1, %0|%0, %1, %2}
!     vmovw\t{%2, %0|%2, %0}"
    [(set_attr "isa" "*,avx10_2")
     (set_attr "type" "ssemov")
     (set_attr "prefix" "evex")
--- 12435,12451 ----
    DONE;
  })
  
! (define_insn "*avx512fp16_mov<mode>"
    [(set (match_operand:V8_128 0 "register_operand" "=v,v")
  	(vec_merge:V8_128
  	  (match_operand:V8_128 2 "register_operand" "v,v")
  	  (match_operand:V8_128 1 "reg_or_0_operand" "v,C")
  	  (const_int 1)))]
    "TARGET_AVX512FP16
!    || (TARGET_AVX10_2 && const0_operand (operands[1], <MODE>mode))"
    "@
      vmovsh\t{%2, %1, %0|%0, %1, %2}
!     vmovw\t{%2, %0|%0, %2}"
    [(set_attr "isa" "*,avx10_2")
     (set_attr "type" "ssemov")
     (set_attr "prefix" "evex")
***************
*** 18897,18905 ****
        tmp = "pternlog";
        ssesuffix = "<ternlogsuffix>";
        if (which_alternative != 4 || TARGET_AVX512VL)
! 	ops = "v%s%s\t{$0x44, %%1, %%2, %%0|%%0, %%2, %%1, $0x44}";
        else
! 	ops = "v%s%s\t{$0x44, %%g1, %%g2, %%g0|%%g0, %%g2, %%g1, $0x44}";
        break;
      default:
        gcc_unreachable ();
--- 18897,18905 ----
        tmp = "pternlog";
        ssesuffix = "<ternlogsuffix>";
        if (which_alternative != 4 || TARGET_AVX512VL)
! 	ops = "v%s%s\t{$0x44, %%1, %%2, %%0|%%0, %%2, %%1, 0x44}";
        else
! 	ops = "v%s%s\t{$0x44, %%g1, %%g2, %%g0|%%g0, %%g2, %%g1, 0x44}";
        break;
      default:
        gcc_unreachable ();
***************
*** 32444,32455 ****
  	   (match_operand:VHF_AVX512VL 2 "nonimmediate_operand" "vm")]
  	  UNSPEC_CONVERTFP8_PACK))]
    "TARGET_AVX10_2"
!   "vcvt<convertfp8_pack>\t{%2, %1, %0<mask_operand3>|%0<mask_operand2>, %1, %2}"
    [(set_attr "prefix" "evex")])
  
  (define_mode_attr ssebvecmode_2
    [(V8HF "V16QI") (V16HF "V16QI") (V32HF "V32QI")])
  
  (define_int_iterator UNSPEC_VCVTBIASPH2FP8_PACK
     [UNSPEC_VCVTBIASPH2BF8 UNSPEC_VCVTBIASPH2BF8S
      UNSPEC_VCVTBIASPH2HF8 UNSPEC_VCVTBIASPH2HF8S])
--- 32444,32458 ----
  	   (match_operand:VHF_AVX512VL 2 "nonimmediate_operand" "vm")]
  	  UNSPEC_CONVERTFP8_PACK))]
    "TARGET_AVX10_2"
!   "vcvt<convertfp8_pack>\t{%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2}"
    [(set_attr "prefix" "evex")])
  
  (define_mode_attr ssebvecmode_2
    [(V8HF "V16QI") (V16HF "V16QI") (V32HF "V32QI")])
  
+ (define_mode_attr iptrssebvec_2
+   [(V8HF "q") (V16HF "") (V32HF "")])
+ 
  (define_int_iterator UNSPEC_VCVTBIASPH2FP8_PACK
     [UNSPEC_VCVTBIASPH2BF8 UNSPEC_VCVTBIASPH2BF8S
      UNSPEC_VCVTBIASPH2HF8 UNSPEC_VCVTBIASPH2HF8S])
***************
*** 32626,32632 ****
  	  [(match_operand:<ssebvecmode_2> 1 "nonimmediate_operand" "vm")]
  	  UNSPEC_VCVTHF82PH))]
    "TARGET_AVX10_2"
!   "vcvthf82ph\t{%1, %0<mask_operand2>|%0<mask_operand2>, %1}"
    [(set_attr "prefix" "evex")])
  
  (define_int_iterator VPDPWPROD
--- 32629,32635 ----
  	  [(match_operand:<ssebvecmode_2> 1 "nonimmediate_operand" "vm")]
  	  UNSPEC_VCVTHF82PH))]
    "TARGET_AVX10_2"
!   "vcvthf82ph\t{%1, %0<mask_operand2>|%0<mask_operand2>, %<iptrssebvec_2>1}"
    [(set_attr "prefix" "evex")])
  
  (define_int_iterator VPDPWPROD
diff -Nrcpad gcc-16-20260301/gcc/config/loongarch/loongarch.cc gcc-16-20260308/gcc/config/loongarch/loongarch.cc
*** gcc-16-20260301/gcc/config/loongarch/loongarch.cc	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/config/loongarch/loongarch.cc	Sun Mar  8 22:32:06 2026
*************** loongarch_expand_vector_init_same (rtx t
*** 10378,10393 ****
  	}
      }
  
!   if (GET_CODE (same) == MEM && GET_MODE (same) != imode)
!     {
!       rtx reg_tmp = gen_reg_rtx (GET_MODE (same));
!       loongarch_emit_move (reg_tmp, same);
!       temp = lowpart_subreg (imode, reg_tmp, GET_MODE (reg_tmp));
!     }
!   else
!     temp = same;
! 
!   temp = force_reg (imode, temp);
  
    switch (vmode)
      {
--- 10378,10384 ----
  	}
      }
  
!   temp = force_reg (imode, same);
  
    switch (vmode)
      {
diff -Nrcpad gcc-16-20260301/gcc/config/riscv/riscv.cc gcc-16-20260308/gcc/config/riscv/riscv.cc
*** gcc-16-20260301/gcc/config/riscv/riscv.cc	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/config/riscv/riscv.cc	Sun Mar  8 22:32:06 2026
*************** riscv_get_vls_cc_attr (const_tree args,
*** 7461,7468 ****
    if (!riscv_valid_abi_vlen_vls_cc_p (abi_vlen) && !check_only)
      {
        error_at (input_location,
! 		"unsupported %<ABI_VLEN%> value %d for %qs attribute;"
! 		"%<ABI_VLEN must%> be in the range [32, 16384] and must be "
  		"a power of 2",
  		abi_vlen, "riscv_vls_cc");
        return RISCV_CC_UNKNOWN;
--- 7461,7468 ----
    if (!riscv_valid_abi_vlen_vls_cc_p (abi_vlen) && !check_only)
      {
        error_at (input_location,
! 		"unsupported %<ABI_VLEN%> value %d for %qs attribute; "
! 		"%<ABI_VLEN%> must be in the range [32, 16384] and must be "
  		"a power of 2",
  		abi_vlen, "riscv_vls_cc");
        return RISCV_CC_UNKNOWN;
diff -Nrcpad gcc-16-20260301/gcc/config/sparc/sparc.h gcc-16-20260308/gcc/config/sparc/sparc.h
*** gcc-16-20260301/gcc/config/sparc/sparc.h	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/config/sparc/sparc.h	Sun Mar  8 22:32:06 2026
*************** extern int sparc_indent_opcode;
*** 1620,1625 ****
--- 1620,1629 ----
        }					\
    } while (0)
  
+ #ifndef HAVE_AS_TLS
+ #define HAVE_AS_TLS 0
+ #endif
+ 
  /* TLS support defaults to GNU extensions.  The original Sun flavor must be
     activated in separate configuration files.  */
  #define TARGET_TLS HAVE_AS_TLS
diff -Nrcpad gcc-16-20260301/gcc/cp/ChangeLog gcc-16-20260308/gcc/cp/ChangeLog
*** gcc-16-20260301/gcc/cp/ChangeLog	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/cp/ChangeLog	Sun Mar  8 22:32:06 2026
***************
*** 1,3 ****
--- 1,118 ----
+ 2026-03-07  Jason Merrill  <jason@redhat.com>
+ 	     <mtxn@duck.com>
+ 
+ 	PR c++/123622
+ 	* module.cc (preprocess_module): Check deps.missing_files.
+ 
+ 2026-03-06  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/124297
+ 	* mangle.cc (write_template_param_decl) <case PARM_DECL>:
+ 	Strip fold-expression before calling write_type_constraint.
+ 
+ 2026-03-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/124145
+ 	* constexpr.cc (cxx_eval_constant_expression) <case TARGET_EXPR>: Move
+ 	ctx->save_expr->safe_push (slot) call before if (*jump_target) test.
+ 	Use TARGET_EXPR_INITIAL instead of TREE_OPERAND.
+ 
+ 2026-03-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/123810
+ 	* cp-tree.h (TYPE_DECL_FOR_LINKAGE_PURPOSES_P): Define.
+ 	(TYPE_DECL_WAS_UNNAMED): Likewise.
+ 	(TYPE_WAS_UNNAMED): Also check TYPE_DECL_WAS_UNNAMED.
+ 	* decl.cc (start_decl): Use TYPE_DECL_FOR_LINKAGE_PURPOSES_P.
+ 	(maybe_diagnose_non_c_class_typedef_for_l): If t == type, use
+ 	DECL_SOURCE_LOCATION (orig) instead of
+ 	DECL_SOURCE_LOCATION (TYPE_NAME (t)).
+ 	(name_unnamed_type): Set TYPE_DECL_FOR_LINKAGE_PURPOSES_P
+ 	on decl.  For -freflection don't change TYPE_NAME from
+ 	orig to decl, but instead change DECL_NAME (orig) to
+ 	DECL_NAME (decl) and set TYPE_DECL_FOR_LINKAGE_PURPOSES_P on
+ 	orig too.
+ 	* decl2.cc (grokfield): Use TYPE_DECL_FOR_LINKAGE_PURPOSES_P.
+ 	* name-lookup.cc (fields_linear_search): Ignore
+ 	TYPE_DECL_WAS_UNNAMED decls.
+ 	(count_class_fields): Likewise.
+ 	(member_vec_append_class_fields): Likewise.
+ 	(pop_local_binding): Likewise.
+ 	* reflect.cc (namespace_members_of): For TYPE_DECL with
+ 	TYPE_DECL_FOR_LINKAGE_PURPOSES_P set also append
+ 	reflection of strip_typedefs (m).
+ 	* class.cc (find_flexarrays): Handle TYPE_DECLs with
+ 	TYPE_DECL_WAS_UNNAMED like the ones with IDENTIFIER_ANON_P
+ 	name.
+ 
+ 2026-03-04  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/124368
+ 	* reflect.cc (eval_extent): Convert the result to size_type_node.
+ 
+ 2026-03-04  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/124229
+ 	* pt.cc (in_expansion_stmt_p): New.
+ 	(tsubst): When reusing typedefs, do retrieve_local_specialization also
+ 	when in_expansion_stmt_p is true.
+ 
+ 2026-03-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/123866
+ 	* reflect.cc (eval_annotations_of): For type aliases look for
+ 	annotations in DECL_ATTRIBUTES (TYPE_NAME (r)).
+ 
+ 2026-03-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/124306
+ 	* pt.cc (regenerate_decl_from_template): Mark the old PARM_DECLs
+ 	replaced with tsubst_decl result with OLD_PARM_DECL_P flag.
+ 
+ 2026-03-03  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/124324
+ 	* reflect.cc (eval_substitute): Call resolve_nondeduced_context.
+ 
+ 2026-03-03  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* constraint.cc (struct sat_entry): New data member inst_entry.
+ 	(satisfaction_cache::satisfaction_cache): Initialize inst_entry.
+ 	(satisfaction_cache::get): Use it to prefer printing the
+ 	instantiated atom in case of constraint recursion.
+ 	(satisfy_atom): Set inst_entry of the first cache entry to point
+ 	to the second entry.
+ 
+ 2026-03-03  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/123665
+ 	PR c++/123408
+ 	* pt.cc (build_extra_args): If TREE_STATIC was set on the
+ 	arguments, keep it set.
+ 	(add_extra_args): Set TREE_STATIC on the resulting arguments
+ 	when substituting templated arguments into a full set of
+ 	deferred arguments.
+ 	(tsubst_lambda_expr): Always defer templated substitution if
+ 	LAMBDA_EXPR_EXTRA_ARGS was set.
+ 
+ 2026-03-01  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	* constexpr.cc (diagnose_failing_condition): Also decompose
+ 	comparisons of reflections.
+ 
+ 2026-03-01  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/123143
+ 	* pt.cc (tsubst_expr) <case COMPONENT_REF>: Check identifier_p
+ 	before doing lookup for a template function.
+ 
+ 2026-03-01  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/123608
+ 	* cp-tree.h (unevaluated_p): Include REFLECT_EXPR.
+ 	* reflect.cc (check_out_of_consteval_use_r): Don't give up early
+ 	on REFLECT_EXPR_P.
+ 
  2026-02-26  Marek Polacek  <polacek@redhat.com>
  
  	PR c++/124204
diff -Nrcpad gcc-16-20260301/gcc/cp/class.cc gcc-16-20260308/gcc/cp/class.cc
*** gcc-16-20260301/gcc/cp/class.cc	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/cp/class.cc	Sun Mar  8 22:32:06 2026
*************** find_flexarrays (tree t, flexmems_t *fme
*** 7608,7614 ****
        if (TREE_CODE (fld) == TYPE_DECL
  	  && DECL_IMPLICIT_TYPEDEF_P (fld)
  	  && CLASS_TYPE_P (TREE_TYPE (fld))
! 	  && IDENTIFIER_ANON_P (DECL_NAME (fld)))
  	{
  	  /* Check the nested unnamed type referenced via a typedef
  	     independently of FMEM (since it's not a data member of
--- 7608,7615 ----
        if (TREE_CODE (fld) == TYPE_DECL
  	  && DECL_IMPLICIT_TYPEDEF_P (fld)
  	  && CLASS_TYPE_P (TREE_TYPE (fld))
! 	  && (IDENTIFIER_ANON_P (DECL_NAME (fld))
! 	      || TYPE_DECL_WAS_UNNAMED (fld)))
  	{
  	  /* Check the nested unnamed type referenced via a typedef
  	     independently of FMEM (since it's not a data member of
diff -Nrcpad gcc-16-20260301/gcc/cp/constexpr.cc gcc-16-20260308/gcc/cp/constexpr.cc
*** gcc-16-20260301/gcc/cp/constexpr.cc	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/cp/constexpr.cc	Sun Mar  8 22:32:06 2026
*************** cxx_eval_constant_expression (const cons
*** 9486,9496 ****
  
  	/* Pass vc_prvalue because this indicates
  	   initialization of a temporary.  */
! 	r = cxx_eval_constant_expression (ctx, TREE_OPERAND (t, 1), vc_prvalue,
! 					  non_constant_p, overflow_p,
! 					  jump_target);
  	if (*non_constant_p)
  	  break;
  	if (*jump_target)
  	  return NULL_TREE;
  	if (!is_complex)
--- 9486,9498 ----
  
  	/* Pass vc_prvalue because this indicates
  	   initialization of a temporary.  */
! 	r = cxx_eval_constant_expression (ctx, TARGET_EXPR_INITIAL (t),
! 					  vc_prvalue, non_constant_p,
! 					  overflow_p, jump_target);
  	if (*non_constant_p)
  	  break;
+ 	if (ctx->save_exprs)
+ 	  ctx->save_exprs->safe_push (slot);
  	if (*jump_target)
  	  return NULL_TREE;
  	if (!is_complex)
*************** cxx_eval_constant_expression (const cons
*** 9509,9516 ****
  	    if (CLEANUP_EH_ONLY (t))
  	      ctx->global->cleanups->safe_push (NULL_TREE);
  	  }
- 	if (ctx->save_exprs)
- 	  ctx->save_exprs->safe_push (slot);
  	if (lval)
  	  return slot;
  	if (is_complex)
--- 9511,9516 ----
diff -Nrcpad gcc-16-20260301/gcc/cp/constraint.cc gcc-16-20260308/gcc/cp/constraint.cc
*** gcc-16-20260301/gcc/cp/constraint.cc	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/cp/constraint.cc	Sun Mar  8 22:32:06 2026
*************** struct GTY((for_user)) sat_entry
*** 1972,1977 ****
--- 1972,1981 ----
       the first time.  */
    tree result;
  
+   /* For a !ATOMIC_CONSTR_MAP_INSTANTIATED_P atom, this conveniently points to
+      the entry for the corresponding atom after instantiating its mapping.  */
+   sat_entry *inst_entry;
+ 
    /* The value of input_location when satisfaction of ATOM+ARGS was first
       performed.  */
    location_t location;
*************** satisfaction_cache
*** 2131,2136 ****
--- 2135,2141 ----
        entry->atom = atom;
        entry->args = args;
        entry->result = NULL_TREE;
+       entry->inst_entry = nullptr;
        entry->location = input_location;
        entry->ftc_begin = entry->ftc_end = -1;
        entry->diagnose_instability = false;
*************** satisfaction_cache::get ()
*** 2170,2179 ****
      {
        /* If we get here, it means satisfaction is self-recursive.  */
        gcc_checking_assert (!entry->result || seen_error ());
        if (info.noisy ())
! 	error_at (EXPR_LOCATION (ATOMIC_CONSTR_EXPR (entry->atom)),
  		  "satisfaction of atomic constraint %qE depends on itself",
! 		  entry->atom);
        return error_mark_node;
      }
  
--- 2175,2186 ----
      {
        /* If we get here, it means satisfaction is self-recursive.  */
        gcc_checking_assert (!entry->result || seen_error ());
+       /* Prefer printing the instantiated mapping.  */
+       tree atom = entry->inst_entry ? entry->inst_entry->atom : entry->atom;
        if (info.noisy ())
! 	error_at (EXPR_LOCATION (ATOMIC_CONSTR_EXPR (atom)),
  		  "satisfaction of atomic constraint %qE depends on itself",
! 		  atom);
        return error_mark_node;
      }
  
*************** satisfy_atom (tree t, tree args, sat_inf
*** 2493,2498 ****
--- 2500,2507 ----
    gcc_assert (!ATOMIC_CONSTR_MAP_INSTANTIATED_P (t));
    ATOMIC_CONSTR_MAP_INSTANTIATED_P (t) = true;
    satisfaction_cache inst_cache (t, /*args=*/NULL_TREE, info);
+   if (cache.entry && inst_cache.entry)
+     cache.entry->inst_entry = inst_cache.entry;
    if (tree r = inst_cache.get ())
      {
        cache.entry->location = inst_cache.entry->location;
diff -Nrcpad gcc-16-20260301/gcc/cp/cp-tree.h gcc-16-20260308/gcc/cp/cp-tree.h
*** gcc-16-20260301/gcc/cp/cp-tree.h	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/cp/cp-tree.h	Sun Mar  8 22:32:06 2026
*************** extern GTY(()) tree cp_global_trees[CPTI
*** 591,596 ****
--- 591,597 ----
     7: DECL_THUNK_P (in a member FUNCTION_DECL)
        DECL_NORMAL_CAPTURE_P (in FIELD_DECL)
        DECL_DECLARED_CONSTINIT_P (in VAR_DECL)
+       TYPE_DECL_FOR_LINKAGE_PURPOSES_P (in TYPE_DECL)
     8: DECL_DECLARED_CONSTEXPR_P (in VAR_DECL, FUNCTION_DECL)
  
     Usage of language-independent fields in a language-dependent manner:
*************** struct GTY(()) lang_decl {
*** 4000,4005 ****
--- 4001,4020 ----
     && TREE_CODE (TYPE_NAME (NODE)) == TYPE_DECL	\
     && TYPE_DECL_ALIAS_P (TYPE_NAME (NODE)))
  
+ /* Nonzero for typedef name for linkage purposes.  For -freflection
+    set also on the originally unnamed TYPE_DECL.  */
+ #define TYPE_DECL_FOR_LINKAGE_PURPOSES_P(NODE) \
+   DECL_LANG_FLAG_7 (TYPE_DECL_CHECK (NODE))
+ 
+ /* Nonzero for TYPE_DECL originally with IDENTIFIER_ANON_P DECL_NAME
+    later on named by a typedef name for linkage purposes in the
+    -freflection case (otherwise the TYPE_DECL keeps IDENTIFIER_ANON_P
+    DECL_NAME).  */
+ #define TYPE_DECL_WAS_UNNAMED(NODE) \
+   (TREE_CODE (NODE) == TYPE_DECL \
+    && TYPE_DECL_FOR_LINKAGE_PURPOSES_P (NODE) \
+    && DECL_IMPLICIT_TYPEDEF_P (NODE))
+ 
  /* If non-NULL for a VAR_DECL, FUNCTION_DECL, TYPE_DECL, TEMPLATE_DECL,
     or CONCEPT_DECL, the entity is either a template specialization (if
     DECL_USE_TEMPLATE is nonzero) or the abstract instance of the
*************** get_vec_init_expr (tree t)
*** 5372,5381 ****
  
  /* True if TYPE is an unnamed structured type with a typedef for
     linkage purposes.  In that case TYPE_NAME and TYPE_STUB_DECL of the
!    MAIN-VARIANT are different.  */
  #define TYPE_WAS_UNNAMED(NODE)				\
    (TYPE_NAME (TYPE_MAIN_VARIANT (NODE))			\
!    != TYPE_STUB_DECL (TYPE_MAIN_VARIANT (NODE)))
  
  /* C++: all of these are overloaded!  These apply only to TYPE_DECLs.  */
  
--- 5387,5399 ----
  
  /* True if TYPE is an unnamed structured type with a typedef for
     linkage purposes.  In that case TYPE_NAME and TYPE_STUB_DECL of the
!    MAIN-VARIANT are different or TYPE_DECL_WAS_UNNAMED
!    is true for the TYPE_NAME.  */
  #define TYPE_WAS_UNNAMED(NODE)				\
    (TYPE_NAME (TYPE_MAIN_VARIANT (NODE))			\
!    != TYPE_STUB_DECL (TYPE_MAIN_VARIANT (NODE))		\
!    || TYPE_DECL_WAS_UNNAMED		\
! 	(TYPE_NAME (TYPE_MAIN_VARIANT (NODE))))
  
  /* C++: all of these are overloaded!  These apply only to TYPE_DECLs.  */
  
diff -Nrcpad gcc-16-20260301/gcc/cp/decl.cc gcc-16-20260308/gcc/cp/decl.cc
*** gcc-16-20260301/gcc/cp/decl.cc	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/cp/decl.cc	Sun Mar  8 22:32:06 2026
*************** start_decl (const cp_declarator *declara
*** 6618,6625 ****
    /* If this is a typedef that names the class for linkage purposes
       (7.1.3p8), apply any attributes directly to the type.  */
    if (TREE_CODE (decl) == TYPE_DECL
!       && OVERLOAD_TYPE_P (TREE_TYPE (decl))
!       && decl == TYPE_NAME (TYPE_MAIN_VARIANT (TREE_TYPE (decl))))
      flags = ATTR_FLAG_TYPE_IN_PLACE;
    else
      flags = 0;
--- 6618,6624 ----
    /* If this is a typedef that names the class for linkage purposes
       (7.1.3p8), apply any attributes directly to the type.  */
    if (TREE_CODE (decl) == TYPE_DECL
!       && TYPE_DECL_FOR_LINKAGE_PURPOSES_P (decl))
      flags = ATTR_FLAG_TYPE_IN_PLACE;
    else
      flags = 0;
*************** maybe_diagnose_non_c_class_typedef_for_l
*** 13731,13737 ****
      {
        auto_diagnostic_group d;
        if (diagnose_non_c_class_typedef_for_linkage (type, orig))
! 	inform (DECL_SOURCE_LOCATION (TYPE_NAME (t)),
  		"type is not C-compatible because it has a base class");
        return true;
      }
--- 13730,13737 ----
      {
        auto_diagnostic_group d;
        if (diagnose_non_c_class_typedef_for_linkage (type, orig))
! 	inform (type == t ? DECL_SOURCE_LOCATION (orig)
! 		: DECL_SOURCE_LOCATION (TYPE_NAME (t)),
  		"type is not C-compatible because it has a base class");
        return true;
      }
*************** name_unnamed_type (tree type, tree decl)
*** 13797,13808 ****
    gcc_assert (TYPE_UNNAMED_P (type)
  	      || enum_with_enumerator_for_linkage_p (type));
  
-   /* Replace the anonymous decl with the real decl.  Be careful not to
-      rename other typedefs (such as the self-reference) of type.  */
    tree orig = TYPE_NAME (type);
!   for (tree t = TYPE_MAIN_VARIANT (type); t; t = TYPE_NEXT_VARIANT (t))
!     if (TYPE_NAME (t) == orig)
!       TYPE_NAME (t) = decl;
  
    /* If this is a typedef within a template class, the nested
       type is a (non-primary) template.  The name for the
--- 13797,13818 ----
    gcc_assert (TYPE_UNNAMED_P (type)
  	      || enum_with_enumerator_for_linkage_p (type));
  
    tree orig = TYPE_NAME (type);
!   if (flag_reflection)
!     {
!       /* For -freflection for typedef struct { ... } S; ^^S needs to be
! 	 a reflection of a type alias.  So, TREE_TYPE (DECL) can't be
! 	 TYPE.  Instead of what we do below, override DECL_NAME (orig).  */
!       DECL_NAME (orig) = DECL_NAME (decl);
!       TYPE_DECL_FOR_LINKAGE_PURPOSES_P (orig) = 1;
!     }
!   else
!     /* Replace the anonymous decl with the real decl.  Be careful not to
!        rename other typedefs (such as the self-reference) of type.  */
!     for (tree t = TYPE_MAIN_VARIANT (type); t; t = TYPE_NEXT_VARIANT (t))
!       if (TYPE_NAME (t) == orig)
! 	TYPE_NAME (t) = decl;
!   TYPE_DECL_FOR_LINKAGE_PURPOSES_P (decl) = 1;
  
    /* If this is a typedef within a template class, the nested
       type is a (non-primary) template.  The name for the
diff -Nrcpad gcc-16-20260301/gcc/cp/decl2.cc gcc-16-20260308/gcc/cp/decl2.cc
*** gcc-16-20260301/gcc/cp/decl2.cc	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/cp/decl2.cc	Sun Mar  8 22:32:06 2026
*************** grokfield (const cp_declarator *declarat
*** 1303,1310 ****
  
  	  /* If this is a typedef that names the class for linkage purposes
  	     (7.1.3p8), apply any attributes directly to the type.  */
! 	  if (OVERLOAD_TYPE_P (TREE_TYPE (value))
! 	      && value == TYPE_NAME (TYPE_MAIN_VARIANT (TREE_TYPE (value))))
  	    attrflags = ATTR_FLAG_TYPE_IN_PLACE;
  
  	  cplus_decl_attributes (&value, attrlist, attrflags);
--- 1303,1309 ----
  
  	  /* If this is a typedef that names the class for linkage purposes
  	     (7.1.3p8), apply any attributes directly to the type.  */
! 	  if (TYPE_DECL_FOR_LINKAGE_PURPOSES_P (value))
  	    attrflags = ATTR_FLAG_TYPE_IN_PLACE;
  
  	  cplus_decl_attributes (&value, attrlist, attrflags);
diff -Nrcpad gcc-16-20260301/gcc/cp/mangle.cc gcc-16-20260308/gcc/cp/mangle.cc
*** gcc-16-20260301/gcc/cp/mangle.cc	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/cp/mangle.cc	Sun Mar  8 22:32:06 2026
*************** write_template_param_decl (tree parm)
*** 1927,1932 ****
--- 1927,1937 ----
  		      ? TEMPLATE_PARM_CONSTRAINTS (parm)
  		      : NULL_TREE))
  	  {
+ 	    if (TREE_CODE (c) == UNARY_LEFT_FOLD_EXPR)
+ 	      {
+ 		c = FOLD_EXPR_PACK (c);
+ 		c = PACK_EXPANSION_PATTERN (c);
+ 	      }
  	    if (AUTO_IS_DECLTYPE (type))
  	      write_string ("DK");
  	    else
diff -Nrcpad gcc-16-20260301/gcc/cp/module.cc gcc-16-20260308/gcc/cp/module.cc
*** gcc-16-20260301/gcc/cp/module.cc	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/cp/module.cc	Sun Mar  8 22:32:06 2026
*************** preprocess_module (module_state *module,
*** 23319,23325 ****
  	      if (!(import->is_module ()
  		    && (import->is_partition () || import->is_exported ()))
  		  && import->loadedness == ML_NONE
! 		  && (import->is_header () || !flag_preprocess_only))
  		{
  		  unsigned n = dump.push (import);
  		  import->do_import (reader, true);
--- 23319,23331 ----
  	      if (!(import->is_module ()
  		    && (import->is_partition () || import->is_exported ()))
  		  && import->loadedness == ML_NONE
! 		  && (!flag_preprocess_only
! 		      || (import->is_header ()
! 			  /* Allow a missing/unimportable GCM with -MG.
! 			     FIXME We should also try falling back to #include
! 			     before giving up entirely.  */
! 			  && (!cpp_get_options (reader)->deps.missing_files
! 			      || import->check_importable (reader)))))
  		{
  		  unsigned n = dump.push (import);
  		  import->do_import (reader, true);
diff -Nrcpad gcc-16-20260301/gcc/cp/name-lookup.cc gcc-16-20260308/gcc/cp/name-lookup.cc
*** gcc-16-20260301/gcc/cp/name-lookup.cc	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/cp/name-lookup.cc	Sun Mar  8 22:32:06 2026
*************** fields_linear_search (tree klass, tree n
*** 1869,1874 ****
--- 1869,1879 ----
  	    continue;
  	}
  
+       if (TYPE_DECL_WAS_UNNAMED (decl))
+ 	/* Ignore DECL_NAME given to unnamed TYPE_DECLs named for linkage
+ 	   purposes.  */
+ 	continue;
+ 
        if (DECL_DECLARES_FUNCTION_P (decl))
  	/* Functions are found separately.  */
  	continue;
*************** count_class_fields (tree klass)
*** 2345,2351 ****
  	     && ANON_AGGR_TYPE_P (TREE_TYPE (fields)))
        n_fields += count_class_fields (TREE_TYPE (fields));
      else if (DECL_NAME (fields))
!       n_fields += 1;
  
    return n_fields;
  }
--- 2350,2362 ----
  	     && ANON_AGGR_TYPE_P (TREE_TYPE (fields)))
        n_fields += count_class_fields (TREE_TYPE (fields));
      else if (DECL_NAME (fields))
!       {
! 	if (TYPE_DECL_WAS_UNNAMED (fields))
! 	  /* Ignore DECL_NAME given to unnamed TYPE_DECLs named for linkage
! 	     purposes.  */
! 	  continue;
! 	n_fields += 1;
!       }
  
    return n_fields;
  }
*************** member_vec_append_class_fields (vec<tree
*** 2369,2374 ****
--- 2380,2389 ----
  	if (TREE_CODE (field) == USING_DECL
  	    && IDENTIFIER_CONV_OP_P (DECL_NAME (field)))
  	  field = ovl_make (conv_op_marker, field);
+ 	else if (TYPE_DECL_WAS_UNNAMED (field))
+ 	  /* Ignore DECL_NAME given to unnamed TYPE_DECLs named for linkage
+ 	     purposes.  */
+ 	  continue;
  	member_vec->quick_push (field);
        }
  }
*************** pop_local_binding (tree id, tree decl)
*** 2700,2706 ****
      binding->value = NULL_TREE;
    else if (binding->type == decl)
      binding->type = NULL_TREE;
!   else
      {
        /* Name-independent variable was found after at least one declaration
  	 with the same name.  */
--- 2715,2723 ----
      binding->value = NULL_TREE;
    else if (binding->type == decl)
      binding->type = NULL_TREE;
!   /* Ignore DECL_NAME given to unnamed TYPE_DECLs named for linkage
!      purposes.  */
!   else if (!TYPE_DECL_WAS_UNNAMED (decl))
      {
        /* Name-independent variable was found after at least one declaration
  	 with the same name.  */
diff -Nrcpad gcc-16-20260301/gcc/cp/pt.cc gcc-16-20260308/gcc/cp/pt.cc
*** gcc-16-20260301/gcc/cp/pt.cc	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/cp/pt.cc	Sun Mar  8 22:32:06 2026
*************** build_extra_args (tree pattern, tree arg
*** 13968,13974 ****
    /* Make a copy of the extra arguments so that they won't get changed
       out from under us.  */
    tree extra = preserve_args (copy_template_args (args), /*cow_p=*/false);
!   if (complain & tf_partial)
      /* Remember whether this is a partial substitution.  */
      TREE_STATIC (extra) = true;
    if (local_specializations)
--- 13968,13974 ----
    /* Make a copy of the extra arguments so that they won't get changed
       out from under us.  */
    tree extra = preserve_args (copy_template_args (args), /*cow_p=*/false);
!   if ((complain & tf_partial) || TREE_STATIC (args))
      /* Remember whether this is a partial substitution.  */
      TREE_STATIC (extra) = true;
    if (local_specializations)
*************** add_extra_args (tree extra, tree args, t
*** 14007,14017 ****
        extra = TREE_VALUE (extra);
      }
    if (TREE_STATIC (extra))
!     /* This is a partial substitution into e.g. a requires-expr or lambda-expr
!        inside a default template argument; we expect 'extra' to be a full set
!        of template arguments for the template context, so it suffices to just
!        substitute into them.  */
!     args = tsubst_template_args (extra, args, complain, in_decl);
    else
      args = add_to_template_args (extra, args);
    return args;
--- 14007,14023 ----
        extra = TREE_VALUE (extra);
      }
    if (TREE_STATIC (extra))
!     {
!       /* This is a partial substitution into e.g. a requires-expr or lambda-expr
! 	 inside a default template argument; we expect 'extra' to be a full set
! 	 of template arguments for the template context, so it suffices to just
! 	 substitute into them.  */
!       args = tsubst_template_args (extra, args, complain, in_decl);
!       if (processing_template_decl)
! 	/* A templated substitution into a partial substitution is still a
! 	   partial substitution.  */
! 	TREE_STATIC (args) = true;
!     }
    else
      args = add_to_template_args (extra, args);
    return args;
*************** tsubst_splice_expr (tree t, tree args, t
*** 16826,16831 ****
--- 16832,16854 ----
    return op;
  }
  
+ /* Return true iff we're in an expansion statement.  */
+ 
+ static bool
+ in_expansion_stmt_p ()
+ {
+   if (in_expansion_stmt)
+     return true;
+ 
+   /* In instantiations in_expansion_stmt is false.  */
+   for (cp_binding_level *b = current_binding_level;
+        b && b->kind != sk_function_parms;
+        b = b->level_chain)
+     if (b->kind == sk_template_for)
+       return true;
+   return false;
+ }
+ 
  /* Take the tree structure T and replace template parameters used
     therein with the argument vector ARGS.  IN_DECL is an associated
     decl for diagnostics.  If an error occurs, returns ERROR_MARK_NODE.
*************** tsubst (tree t, tree args, tsubst_flags_
*** 16906,16914 ****
  	  tree gen_args = tsubst (DECL_TI_ARGS (decl), args, complain, in_decl);
  	  r = retrieve_specialization (tmpl, gen_args, 0);
  	}
!       else if (DECL_FUNCTION_SCOPE_P (decl)
! 	       && DECL_TEMPLATE_INFO (DECL_CONTEXT (decl))
! 	       && uses_template_parms (DECL_TI_ARGS (DECL_CONTEXT (decl))))
  	r = retrieve_local_specialization (decl);
        else
  	/* The typedef is from a non-template context.  */
--- 16929,16940 ----
  	  tree gen_args = tsubst (DECL_TI_ARGS (decl), args, complain, in_decl);
  	  r = retrieve_specialization (tmpl, gen_args, 0);
  	}
!       else if ((DECL_FUNCTION_SCOPE_P (decl)
! 		&& DECL_TEMPLATE_INFO (DECL_CONTEXT (decl))
! 		&& uses_template_parms (DECL_TI_ARGS (DECL_CONTEXT (decl))))
! 	       /* The { } of an expansion-statement is considered a template
! 		  definition.  */
! 	       || in_expansion_stmt_p ())
  	r = retrieve_local_specialization (decl);
        else
  	/* The typedef is from a non-template context.  */
*************** tsubst_lambda_expr (tree t, tree args, t
*** 20774,20780 ****
  
    args = add_extra_args (LAMBDA_EXPR_EXTRA_ARGS (t), args, complain, in_decl);
    if (processing_template_decl
!       && (!in_template_context || (complain & tf_partial)))
      {
        /* Defer templated substitution into a lambda-expr if we lost the
  	 necessary template context.  This may happen for a lambda-expr
--- 20800,20807 ----
  
    args = add_extra_args (LAMBDA_EXPR_EXTRA_ARGS (t), args, complain, in_decl);
    if (processing_template_decl
!       && (!in_template_context || (complain & tf_partial)
! 	  || LAMBDA_EXPR_EXTRA_ARGS (t)))
      {
        /* Defer templated substitution into a lambda-expr if we lost the
  	 necessary template context.  This may happen for a lambda-expr
*************** tsubst_lambda_expr (tree t, tree args, t
*** 20782,20788 ****
  
  	 Defer dependent substitution as well so that we don't prematurely
  	 lower the level of a deduced return type or any other auto or
! 	 template parameter belonging to the lambda.  */
        t = copy_node (t);
        LAMBDA_EXPR_EXTRA_ARGS (t) = NULL_TREE;
        LAMBDA_EXPR_EXTRA_ARGS (t) = build_extra_args (t, args, complain);
--- 20809,20819 ----
  
  	 Defer dependent substitution as well so that we don't prematurely
  	 lower the level of a deduced return type or any other auto or
! 	 template parameter belonging to the lambda.
! 
! 	 Finally, if a substitution into this lambda was previously
! 	 deferred, keep deferring until the final (non-templated)
! 	 substitution.  */
        t = copy_node (t);
        LAMBDA_EXPR_EXTRA_ARGS (t) = NULL_TREE;
        LAMBDA_EXPR_EXTRA_ARGS (t) = build_extra_args (t, args, complain);
*************** regenerate_decl_from_template (tree decl
*** 28032,28040 ****
--- 28063,28080 ----
  	  tree *p = &DECL_ARGUMENTS (decl);
  	  for (int skip = num_artificial_parms_for (decl); skip; --skip)
  	    p = &DECL_CHAIN (*p);
+ 	  tree oldarg = *p;
  	  *p = tsubst_decl (pattern_parm, args, tf_error);
  	  for (tree t = *p; t; t = DECL_CHAIN (t))
  	    DECL_CONTEXT (t) = decl;
+ 	  /* Mark the old PARM_DECLs in case std::meta::parameters_of has
+ 	     been called on the old declaration and reflections of those
+ 	     arguments are held across this point and used later.
+ 	     Such PARM_DECLs are no longer present in
+ 	     DECL_ARGUMENTS (DECL_CONTEXT (oldarg)) chain.  */
+ 	  if (*p != oldarg)
+ 	    for (tree t = oldarg; t; t = DECL_CHAIN (t))
+ 	      OLD_PARM_DECL_P (t) = 1;
  	}
  
        if (tree attr = get_fn_contract_specifiers (decl))
diff -Nrcpad gcc-16-20260301/gcc/cp/reflect.cc gcc-16-20260308/gcc/cp/reflect.cc
*** gcc-16-20260301/gcc/cp/reflect.cc	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/cp/reflect.cc	Sun Mar  8 22:32:06 2026
*************** eval_annotations_of (location_t loc, con
*** 3799,3805 ****
  	  }
      }
    else if (TYPE_P (r))
!     r = TYPE_ATTRIBUTES (r);
    else if (DECL_P (r))
      r = DECL_ATTRIBUTES (r);
    else
--- 3799,3810 ----
  	  }
      }
    else if (TYPE_P (r))
!     {
!       if (typedef_variant_p (r))
! 	r = DECL_ATTRIBUTES (TYPE_NAME (r));
!       else
! 	r = TYPE_ATTRIBUTES (r);
!     }
    else if (DECL_P (r))
      r = DECL_ATTRIBUTES (r);
    else
*************** eval_extent (location_t loc, tree type,
*** 4688,4699 ****
        --rank;
        type = TREE_TYPE (type);
      }
    if (rank
        || TREE_CODE (type) != ARRAY_TYPE
        || eval_is_bounded_array_type (loc, type) == boolean_false_node)
!      return size_zero_node;
!   return size_binop (PLUS_EXPR, TYPE_MAX_VALUE (TYPE_DOMAIN (type)),
! 		     size_one_node);
  }
  
  /* Process std::meta::is_same_type.  */
--- 4693,4708 ----
        --rank;
        type = TREE_TYPE (type);
      }
+   tree r;
    if (rank
        || TREE_CODE (type) != ARRAY_TYPE
        || eval_is_bounded_array_type (loc, type) == boolean_false_node)
!     r = size_zero_node;
!   else
!     r = size_binop (PLUS_EXPR, TYPE_MAX_VALUE (TYPE_DOMAIN (type)),
! 		    size_one_node);
!   /* std::meta::extent returns a value of type size_t.  */
!   return cp_fold_convert (size_type_node, r);
  }
  
  /* Process std::meta::is_same_type.  */
*************** eval_substitute (location_t loc, const c
*** 5399,5404 ****
--- 5408,5414 ----
        if (DECL_FUNCTION_TEMPLATE_P (r))
  	r = ovl_make (r, NULL_TREE);
        ret = lookup_template_function (r, rvec);
+       ret = resolve_nondeduced_context (ret, tf_none);
      }
    return get_reflection_raw (loc, ret);
  }
*************** namespace_members_of (location_t loc, tr
*** 6539,6544 ****
--- 6549,6562 ----
  	     so don't bother calling it here.  */
  	  CONSTRUCTOR_APPEND_ELT (elts, NULL_TREE,
  				  get_reflection_raw (loc, m));
+ 	  /* For typedef struct { ... } S; include both the S type
+ 	     alias (added above) and dealias of that for the originally
+ 	     unnamed type (added below).  */
+ 	  if (TREE_CODE (b) == TYPE_DECL
+ 	      && TYPE_DECL_FOR_LINKAGE_PURPOSES_P (b))
+ 	    CONSTRUCTOR_APPEND_ELT (elts, NULL_TREE,
+ 				    get_reflection_raw (loc,
+ 							strip_typedefs (m)));
  	}
      }
    delete seen;
diff -Nrcpad gcc-16-20260301/gcc/cse.cc gcc-16-20260308/gcc/cse.cc
*** gcc-16-20260301/gcc/cse.cc	Sun Mar  1 22:32:06 2026
--- gcc-16-20260308/gcc/cse.cc	Sun Mar  8 22:32:06 2026
*************** find_sets_in_insn (rtx_insn *insn, vec<s
*** 4298,4305 ****
  		 used to tell CSE how to get to a particular constant.  */
  	      rtx y = simplify_gen_vec_select (SET_DEST (x), i);
  	      gcc_assert (y);
! 	      rtx set = gen_rtx_SET (y, CONST_VECTOR_ELT (src, i));
! 	      add_to_set (psets, set, true);
  	    }
  	}
        else
--- 4298,4308 ----
  		 used to tell CSE how to get to a particular constant.  */
  	      rtx y = simplify_gen_vec_select (SET_DEST (x), i);
  	      gcc_assert (y);
! 	      if (!REG_P (y))
! 		{
! 		  rtx set = gen_rtx_SET (y, CONST_VECTOR_ELT (src, i));
! 		  add_to_set (psets, set, true);
! 		}
  	    }
  	}
        else
diff -Nrcpad gcc-16-20260301/gcc/doc/extend.texi gcc-16-20260308/gcc/doc/extend.texi
*** gcc-16-20260301/gcc/doc/extend.texi	Sun Mar  1 22:32:07 2026
--- gcc-16-20260308/gcc/doc/extend.texi	Sun Mar  8 22:32:06 2026
*************** __attribute__ ((section ("bar"))) __attr
*** 1766,1771 ****
--- 1766,1775 ----
  void g4 (void) @{ f2 (); @}
  @end smallexample
  
+ In the sections that follow, either or both syntaxes may appear in code
+ examples.  All attributes can be used with both syntaxes even if only one
+ is used in the examples for a given attribute.
+ 
  Compatible attribute specifications on distinct declarations
  of the same entity are merged.  An attribute specification that is not
  compatible with attributes already applied to a declaration of the same
*************** the @code{puts} function, or the second
*** 1866,1875 ****
  the @code{memcpy} function.
  
  @smallexample
! __attribute__ ((access (read_only, 1)))
  int puts (const char*);
  
! __attribute__ ((access (read_only, 2, 3)))
  void* memcpy (void*, const void*, size_t);
  @end smallexample
  
--- 1870,1879 ----
  the @code{memcpy} function.
  
  @smallexample
! [[gnu::access (read_only, 1)]]
  int puts (const char*);
  
! [[gnu::access (read_only, 2, 3)]]
  void* memcpy (void*, const void*, size_t);
  @end smallexample
  
*************** of the use of the @code{read_write} acce
*** 1882,1888 ****
  the @code{strcat} function.
  
  @smallexample
! __attribute__ ((access (read_write, 1), access (read_only, 2)))
  char* strcat (char*, const char*);
  @end smallexample
  
--- 1886,1892 ----
  the @code{strcat} function.
  
  @smallexample
! [[gnu::access (read_write, 1), gnu::access (read_only, 2)]]
  char* strcat (char*, const char*);
  @end smallexample
  
*************** For instance, the following
*** 1934,1940 ****
  
  @smallexample
  int var_target;
! extern int __attribute__ ((alias ("var_target"))) var_alias;
  @end smallexample
  
  @noindent
--- 1938,1944 ----
  
  @smallexample
  int var_target;
! extern int var_alias [[gnu::alias ("var_target")]];
  @end smallexample
  
  @noindent
*************** When specified, @var{alignment} must be
*** 1977,1983 ****
  For example, the declaration:
  
  @smallexample
! int x __attribute__ ((aligned (16))) = 0;
  @end smallexample
  
  @noindent
--- 1981,1987 ----
  For example, the declaration:
  
  @smallexample
! int x [[gnu::aligned (16)]] = 0;
  @end smallexample
  
  @noindent
*************** which is the largest alignment ever used
*** 2030,2036 ****
  target machine you are compiling for.  For example, you could write:
  
  @smallexample
! short array[3] __attribute__ ((aligned (__BIGGEST_ALIGNMENT__)));
  @end smallexample
  
  @noindent
--- 2034,2040 ----
  target machine you are compiling for.  For example, you could write:
  
  @smallexample
! short array[3] [[gnu::aligned (__BIGGEST_ALIGNMENT__)]];
  @end smallexample
  
  @noindent
*************** both C and C++.
*** 2190,2197 ****
  int
  foo (int x, int y)
  @{
!   __attribute__((assume(x == 42)));
!   __attribute__((assume(++y == 43)));
    return x + y;
  @}
  @end smallexample
--- 2194,2201 ----
  int
  foo (int x, int y)
  @{
!   [[gnu::assume(x == 42)]];
!   [[gnu::assume(++y == 43)]];
    return x + y;
  @}
  @end smallexample
*************** guaranteed to maintain the order of attr
*** 2252,2258 ****
  For example:
  
  @smallexample
! int *foo __attribute__ ((btf_decl_tag ("__percpu")));
  @end smallexample
  
  @noindent
--- 2256,2262 ----
  For example:
  
  @smallexample
! int *foo [[gnu::btf_decl_tag ("__percpu")]];
  @end smallexample
  
  @noindent
*************** maintain the order of attributes in the
*** 2287,2293 ****
  For example the following code:
  
  @smallexample
! int * __attribute__ ((btf_type_tag ("__user"))) foo;
  @end smallexample
  
  @noindent
--- 2291,2297 ----
  For example the following code:
  
  @smallexample
! int * [[gnu::btf_type_tag ("__user")]] foo;
  @end smallexample
  
  @noindent
*************** values.
*** 2400,2406 ****
  For example,
  
  @smallexample
! int square (int) __attribute__ ((const));
  @end smallexample
  
  @noindent
--- 2404,2410 ----
  For example,
  
  @smallexample
! [[gnu::const]] int square (int);
  @end smallexample
  
  @noindent
*************** For instance, the following code:
*** 2549,2555 ****
  struct P @{
    size_t count;
    char other;
!   char array[] __attribute__ ((counted_by (count)));
  @} *p;
  @end smallexample
  
--- 2553,2559 ----
  struct P @{
    size_t count;
    char other;
!   [[gnu::counted_by (count)]] char array[];
  @} *p;
  @end smallexample
  
*************** of elements is given by the field @code{
*** 2561,2567 ****
  struct PP @{
    size_t count2;
    char other1;
!   char *array2 __attribute__ ((counted_by (count2)));
    int other2;
  @} *pp;
  @end smallexample
--- 2565,2571 ----
  struct PP @{
    size_t count2;
    char other1;
!   [[gnu::counted_by (count2)]] char *array2;
    int other2;
  @} *pp;
  @end smallexample
*************** should be type-checked against a format
*** 2878,2886 ****
  declaration:
  
  @smallexample
  extern int
! my_printf (void *my_object, const char *my_format, ...)
!       __attribute__ ((format (printf, 2, 3)));
  @end smallexample
  
  @noindent
--- 2882,2890 ----
  declaration:
  
  @smallexample
+ [[gnu::format (printf, 2, 3)]]
  extern int
! my_printf (void *my_object, const char *my_format, ...);
  @end smallexample
  
  @noindent
*************** calls.
*** 3287,3294 ****
  @atindex @code{malloc}
  @cindex functions that behave like malloc
  @item malloc
! @item malloc (@var{deallocator})
! @item malloc (@var{deallocator}, @var{ptr-index})
  This attribute applies to functions.
  
  Attribute @code{malloc} indicates that a function is @code{malloc}-like,
--- 3291,3298 ----
  @atindex @code{malloc}
  @cindex functions that behave like malloc
  @item malloc
! @itemx malloc (@var{deallocator})
! @itemx malloc (@var{deallocator}, @var{ptr-index})
  This attribute applies to functions.
  
  Attribute @code{malloc} indicates that a function is @code{malloc}-like,
*************** be declared before they can be reference
*** 3338,3352 ****
  int fclose (FILE*);
  int pclose (FILE*);
  
! __attribute__ ((malloc, malloc (fclose, 1)))
    FILE* fdopen (int, const char*);
! __attribute__ ((malloc, malloc (fclose, 1)))
    FILE* fopen (const char*, const char*);
! __attribute__ ((malloc, malloc (fclose, 1)))
    FILE* fmemopen(void *, size_t, const char *);
! __attribute__ ((malloc, malloc (pclose, 1)))
    FILE* popen (const char*, const char*);
! __attribute__ ((malloc, malloc (fclose, 1)))
    FILE* tmpfile (void);
  @end smallexample
  
--- 3342,3356 ----
  int fclose (FILE*);
  int pclose (FILE*);
  
! [[gnu::malloc, gnu::malloc (fclose, 1)]]
    FILE* fdopen (int, const char*);
! [[gnu::malloc, gnu::malloc (fclose, 1)]]
    FILE* fopen (const char*, const char*);
! [[gnu::malloc, gnu::malloc (fclose, 1)]]
    FILE* fmemopen(void *, size_t, const char *);
! [[gnu::malloc, gnu::malloc (fclose, 1)]]
    FILE* popen (const char*, const char*);
! [[gnu::malloc, gnu::malloc (fclose, 1)]]
    FILE* tmpfile (void);
  @end smallexample
  
*************** arguments are zero and if both are non-z
*** 3842,3858 ****
  be null.
  
  @smallexample
  extern void *
! my_memcpy (void *dest, const void *src, size_t len)
!         __attribute__((nonnull (1, 2)));
  extern void *
! my_memcpy2 (void *dest, const void *src, size_t len)
!         __attribute__((nonnull_if_nonzero (1, 3),
!                        nonnull_if_nonzero (2, 3)));
  extern size_t
! my_fread (void *buf, size_t size, size_t count, FILE *stream)
!         __attribute__((nonnull (4),
!                        nonnull_if_nonzero (1, 2, 3)));
  @end smallexample
  
  With these declarations, it is invalid to call
--- 3846,3864 ----
  be null.
  
  @smallexample
+ [[gnu::nonnull (1, 2)]]
  extern void *
! my_memcpy (void *dest, const void *src, size_t len);
! 
! [[gnu::nonnull_if_nonzero (1, 3),
!   gnu::nonnull_if_nonzero (2, 3)]]
  extern void *
! my_memcpy2 (void *dest, const void *src, size_t len);
! 
! [[gnu::nonnull (4),
!   gnu::nonnull_if_nonzero (1, 2, 3)]]
  extern size_t
! my_fread (void *buf, size_t size, size_t count, FILE *stream);
  @end smallexample
  
  With these declarations, it is invalid to call
*************** do not use the PLT.
*** 3918,3924 ****
  @smallexample
  @group
  /* Externally defined function foo.  */
! int foo () __attribute__ ((noplt));
  
  int
  main (/* @r{@dots{}} */)
--- 3924,3930 ----
  @smallexample
  @group
  /* Externally defined function foo.  */
! [[gnu::noplt]] int foo ();
  
  int
  main (/* @r{@dots{}} */)
*************** referring to a size argument, this expre
*** 4042,4051 ****
  For example, given:
  
  @smallexample
! extern char *example_fn (const char *p, size_t n)
!   __attribute__((null_terminated_string_arg (1),
!                  access (read_only, 1, 2),
!                  nonnull (1)));
  @end smallexample
  
  @noindent
--- 4048,4057 ----
  For example, given:
  
  @smallexample
! [[gnu::null_terminated_string_arg (1),
!   gnu::access (read_only, 1, 2),
!   gnu::nonnull (1)]]
! extern char *example_fn (const char *p, size_t n);
  @end smallexample
  
  @noindent
*************** be packed too.
*** 4167,4182 ****
  
  @smallexample
  struct my_unpacked_struct
!  @{
!     char c;
!     int i;
!  @};
  
! struct __attribute__ ((__packed__)) my_packed_struct
!   @{
!      char c;
!      int  i;
!      struct my_unpacked_struct s;
    @};
  @end smallexample
  
--- 4173,4188 ----
  
  @smallexample
  struct my_unpacked_struct
! @{
!   char c;
!   int i;
! @};
  
! struct [[gnu::__packed__]] my_packed_struct
! @{
!   char c;
!   int  i;
!   struct my_unpacked_struct s;
    @};
  @end smallexample
  
*************** The @code{returns_nonnull} attribute spe
*** 4335,4342 ****
  return value should be a non-null pointer.  For instance, the declaration:
  
  @smallexample
! extern void *
! mymalloc (size_t len) __attribute__((returns_nonnull));
  @end smallexample
  
  @noindent
--- 4341,4348 ----
  return value should be a non-null pointer.  For instance, the declaration:
  
  @smallexample
! [[gnu::returns_nonnull]]
! extern void *mymalloc (size_t len);
  @end smallexample
  
  @noindent
*************** argument of the function call.  If the o
*** 4480,4490 ****
  is specified to the attribute, the sentinel must be located at
  @var{position} counting backwards from the end of the argument list.
  
! @smallexample
! __attribute__ ((sentinel))
! is equivalent to
! __attribute__ ((sentinel(0)))
! @end smallexample
  
  The attribute is automatically set with a position of 0 for the built-in
  functions @code{execl} and @code{execlp}.  The built-in function
--- 4486,4492 ----
  is specified to the attribute, the sentinel must be located at
  @var{position} counting backwards from the end of the argument list.
  
! @samp{[[gnu::sentinel]]} is equivalent to @samp{[[gnu::sentinel(0)]]}.
  
  The attribute is automatically set with a position of 0 for the built-in
  functions @code{execl} and @code{execlp}.  The built-in function
*************** with @option{-fstrub=strict}, that cause
*** 4690,4701 ****
  to @code{disabled}.
  
  @smallexample
! extern int __attribute__ ((strub ("callable"))) bac (void);
! extern int __attribute__ ((strub ("disabled"))) bad (void);
   /* Implicitly disabled with -fstrub=strict, otherwise callable.  */
  extern int bah (void);
  
! int __attribute__ ((strub))
  bal (void)
  @{
    /* Not allowed, bad is not strub-callable.  */
--- 4692,4704 ----
  to @code{disabled}.
  
  @smallexample
! [[gnu::strub("callable")]] extern int bac (void);
! [[gnu::strub("disabled")]] extern int bad (void);
   /* Implicitly disabled with -fstrub=strict, otherwise callable.  */
  extern int bah (void);
  
! [[gnu::strub]]
! int
  bal (void)
  @{
    /* Not allowed, bad is not strub-callable.  */
*************** This example produces a @code{.symver fo
*** 4853,4859 ****
  directive in the assembler output.:
  
  @smallexample
! __attribute__ ((__symver__ ("foo@@VERS_1"))) int
  foo_v1 (void)
  @{
  @}
--- 4856,4862 ----
  directive in the assembler output.:
  
  @smallexample
! [[gnu::__symver__ ("foo@@VERS_1")]] int
  foo_v1 (void)
  @{
  @}
*************** You can also define multiple versions fo
*** 4863,4869 ****
  (starting from binutils 2.35):
  
  @smallexample
! __attribute__ ((__symver__ ("foo@@VERS_2"), __symver__ ("foo@@VERS_3")))
  int symver_foo_v1 (void)
  @{
  @}
--- 4866,4872 ----
  (starting from binutils 2.35):
  
  @smallexample
! [[gnu::__symver__ ("foo@@VERS_2"), gnu::__symver__ ("foo@@VERS_3")]]
  int symver_foo_v1 (void)
  @{
  @}
*************** return type.
*** 5237,5243 ****
  This attribute specifies the vector size for the type, measured in bytes.
  The type to which it applies is known as the @dfn{base type}.  The @var{bytes}
  argument must be a positive power-of-two multiple of the base type size.  For
! example, the following declarations:
  
  @smallexample
  typedef __attribute__ ((vector_size (32))) int int_vec32_t ;
--- 5240,5246 ----
  This attribute specifies the vector size for the type, measured in bytes.
  The type to which it applies is known as the @dfn{base type}.  The @var{bytes}
  argument must be a positive power-of-two multiple of the base type size.  For
! example, the following declarations using the legacy attribute syntax:
  
  @smallexample
  typedef __attribute__ ((vector_size (32))) int int_vec32_t ;
*************** typedef __attribute__ ((vector_size (32)
*** 5246,5251 ****
--- 5249,5264 ----
  @end smallexample
  
  @noindent
+ or, alternatively, these declarations using the standard syntax:
+ 
+ @smallexample
+ typedef int int_vec32_t [[gnu::vector_size (32)]];
+ typedef int * int_vec32_ptr_t [[gnu::vector_size (32)]];
+ typedef int int_vec32_arr3_t[3] [[gnu::vector_size (32)]];
+ @end smallexample
+ 
+ @noindent
+ both
  define @code{int_vec32_t} to be a 32-byte vector type composed of @code{int}
  sized units.  With @code{int} having a size of 4 bytes, the type defines
  a vector of eight units, four bytes each.  The mode of variables of type
*************** a 16-byte vector with the base type @cod
*** 5264,5270 ****
  
  This example:
  @smallexample
! int foo __attribute__ ((vector_size (16)));
  @end smallexample
  
  @noindent
--- 5277,5283 ----
  
  This example:
  @smallexample
! int foo [[gnu::vector_size (16)]];
  @end smallexample
  
  @noindent
*************** There are four supported @var{visibility
*** 5302,5310 ****
  @code{hidden}, @code{protected}, or @code{internal} visibility.
  
  @smallexample
! void __attribute__ ((visibility ("protected")))
! f () @{ /* @r{Do something.} */; @}
! int i __attribute__ ((visibility ("hidden")));
  @end smallexample
  
  The possible values of @var{visibility_type} correspond to the
--- 5315,5324 ----
  @code{hidden}, @code{protected}, or @code{internal} visibility.
  
  @smallexample
! [[gnu::visibility ("protected")]]
! void f () @{ /* @r{Do something.} */; @}
! 
! int i [[gnu::visibility ("hidden")]];
  @end smallexample
  
  The possible values of @var{visibility_type} correspond to the
*************** For example, this code:
*** 5452,5458 ****
  
  @smallexample
  typedef unsigned long long __u64
!    __attribute__((aligned (4), warn_if_not_aligned (8)));
  
  struct foo
  @{
--- 5466,5472 ----
  
  @smallexample
  typedef unsigned long long __u64
!   [[gnu::aligned (4), gnu::warn_if_not_aligned (8)]];
  
  struct foo
  @{
*************** the result is either a security problem
*** 5480,5487 ****
  @code{realloc}.
  
  @smallexample
! int fn () __attribute__ ((warn_unused_result));
! int foo ()
  @{
    if (fn () < 0) return -1;
    fn ();
--- 5494,5501 ----
  @code{realloc}.
  
  @smallexample
! [[gnu::warn_unused_result]] int fn (void);
! int foo (void)
  @{
    if (fn () < 0) return -1;
    fn ();
*************** int foo ()
*** 5490,5496 ****
  @end smallexample
  
  @noindent
! results in warning on line 5.
  
  @atindex @code{weak}
  @cindex weak symbols
--- 5504,5510 ----
  @end smallexample
  
  @noindent
! results in a warning on line 5.
  
  @atindex @code{weak}
  @cindex weak symbols
diff -Nrcpad gcc-16-20260301/gcc/doc/gccint.texi gcc-16-20260308/gcc/doc/gccint.texi
*** gcc-16-20260301/gcc/doc/gccint.texi	Sun Mar  1 22:32:07 2026
--- gcc-16-20260308/gcc/doc/gccint.texi	Sun Mar  8 22:32:06 2026
*************** Additional tutorial information is linke
*** 108,113 ****
--- 108,114 ----
  * Source Tree::     GCC source tree structure and build system.
  * Testsuites::      GCC testsuites.
  * Options::         Option specification files.
+ * Spec Files::      Specifying subprocesses and the switches to pass to them.
  * Passes::          Order of passes, what they do, and what each file is for.
  * poly_int::        Representation of runtime sizes and offsets.
  * GENERIC::         Language-independent representation generated by Front Ends
*************** Additional tutorial information is linke
*** 149,154 ****
--- 150,156 ----
  @include languages.texi
  @include sourcebuild.texi
  @include options.texi
+ @include specs.texi
  @include passes.texi
  @include poly-int.texi
  @include generic.texi
diff -Nrcpad gcc-16-20260301/gcc/doc/install.texi gcc-16-20260308/gcc/doc/install.texi
*** gcc-16-20260301/gcc/doc/install.texi	Sun Mar  1 22:32:07 2026
--- gcc-16-20260308/gcc/doc/install.texi	Sun Mar  8 22:32:06 2026
*************** This can be useful if you need to turn o
*** 986,998 ****
  default without modifying the compiler's source code, for instance
  @option{--with-specs=%@{!fcommon:%@{!fno-common:-fno-common@}@}}.
  @ifnothtml
! @xref{Spec Files,, Specifying subprocesses and the switches to pass to them,
! gcc, Using the GNU Compiler Collection (GCC)},
  @end ifnothtml
  @ifhtml
! See ``Spec Files'' in the main manual
  @end ifhtml
- 
  @end table
  
  @item --program-prefix=@var{prefix}
--- 986,997 ----
  default without modifying the compiler's source code, for instance
  @option{--with-specs=%@{!fcommon:%@{!fno-common:-fno-common@}@}}.
  @ifnothtml
! @xref{Spec Files,, Specifying Subprocesses and the Switches to Pass to Them,
! gccint, GNU Compiler Collection (GCC) Internals}.
  @end ifnothtml
  @ifhtml
! See ``Spec Files'' in the GCC Internals manual.
  @end ifhtml
  @end table
  
  @item --program-prefix=@var{prefix}
diff -Nrcpad gcc-16-20260301/gcc/doc/invoke.texi gcc-16-20260308/gcc/doc/invoke.texi
*** gcc-16-20260301/gcc/doc/invoke.texi	Sun Mar  1 22:32:07 2026
--- gcc-16-20260308/gcc/doc/invoke.texi	Sun Mar  8 22:32:06 2026
*************** listing and explanation of the binary an
*** 171,177 ****
                          debugging dumps.
  * Submodel Options::    Target-specific options, such as compiling for a
                          specific processor variant.
- * Spec Files::          How to pass switches to sub-processes.
  * Environment Variables:: Env vars that affect GCC.
  * Precompiled Headers:: Compiling a header once, and using it many times.
  * C++ Modules::		Experimental C++20 module system.
--- 171,176 ----
*************** in the following sections.
*** 192,198 ****
  -dumpbase @var{dumpbase}  -dumpbase-ext @var{auxdropsuf}
  -dumpdir @var{dumppfx}  -x @var{language}
  -v  -###  --help@r{[}=@var{class}@r{[},@dots{}@r{]]}  --target-help  --version
! -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}
--- 191,197 ----
  -dumpbase @var{dumpbase}  -dumpbase-ext @var{auxdropsuf}
  -dumpdir @var{dumppfx}  -x @var{language}
  -v  -###  --help@r{[}=@var{class}@r{[},@dots{}@r{]]}  --target-help  --version
! -pass-exit-codes  -pipe  -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}
*************** in the following sections.
*** 200,206 ****
  --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}.
--- 199,205 ----
  --assemble  --compile  --dumpbase @var{dumpbase}
  --dumpbase-ext @var{auxdropsuf}  --dumpdir @var{dumppfx}
  --language=@var{language}  --output=@var{file}  --pass-exit-codes
! --pipe  --preprocess  --verbose}
  
  @item C Language Options
  @xref{C Dialect Options,,Options Controlling C Dialect}.
*************** Objective-C and Objective-C++ Dialects}.
*** 870,882 ****
  -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
  --param @var{name}=@var{value}
  }
  
--- 869,882 ----
  -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
! -specs=@var{file}  -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  --specs=@var{file}
  --param @var{name}=@var{value}
  }
  
*************** various stages of compilation.  This fai
*** 2329,2346 ****
  the assembler is unable to read from a pipe; but the GNU assembler has
  no trouble.
  
- @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},
- @command{cc1plus}, @command{as}, @command{ld}, etc.  More than one
- @option{-specs=@var{file}} can be specified on the command line, and they
- are processed in order, from left to right.  @xref{Spec Files}, for
- information about the format of the @var{file}.
- 
  @opindex wrapper
  @item -wrapper
  Invoke all subcommands under a wrapper program.  The name of the
--- 2329,2334 ----
*************** Equivalent to @option{-save-temps -dumpd
*** 20765,20770 ****
--- 20753,20772 ----
  @option{-o} option is not used, the @option{-save-temps=obj} switch
  behaves like @option{-save-temps=cwd}.
  
+ @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},
+ @command{cc1plus}, @command{as}, @command{ld}, etc.  More than one
+ @option{-specs=@var{file}} can be specified on the command line, and they
+ are processed in order, from left to right.
+ @xref{Spec Files,, Specifying Subprocesses and the Switches to Pass to Them,
+ gccint, GNU Compiler Collection (GCC) Internals}, for
+ information about the format of the @var{file}.
+ 
  @opindex time
  @item -time@r{[}=@var{file}@r{]}
  Report the CPU time taken by each subprocess in the compilation
*************** allocation before or after interprocedur
*** 20935,20942 ****
  @item -fmultiflags
  This option enables multilib-aware @code{TFLAGS} to be used to build
  target libraries with options different from those the compiler is
! configured to use by default, through the use of specs (@pxref{Spec
! Files}) set up by compiler internals, by the target, or by builders at
  configure time.
  
  Like @code{TFLAGS}, this allows the target libraries to be built for
--- 20937,20946 ----
  @item -fmultiflags
  This option enables multilib-aware @code{TFLAGS} to be used to build
  target libraries with options different from those the compiler is
! configured to use by default, through the use of specs
! (@pxref{Spec Files,, Specifying Subprocesses and the Switches to Pass to Them,
! gccint, GNU Compiler Collection (GCC) Internals})
! set up by compiler internals, by the target, or by builders at
  configure time.
  
  Like @code{TFLAGS}, this allows the target libraries to be built for
*************** always three numbers separated by dots,
*** 21136,21142 ****
  @opindex dumpspecs
  @item -dumpspecs
  Print the compiler's built-in specs---and don't do anything else.  (This
! is used when GCC itself is being built.)  @xref{Spec Files}.
  
  @opindex param
  @item --param @var{name}=@var{value}
--- 21140,21148 ----
  @opindex dumpspecs
  @item -dumpspecs
  Print the compiler's built-in specs---and don't do anything else.  (This
! is used when GCC itself is being built.)
! @xref{Spec Files,, Specifying Subprocesses and the Switches to Pass to Them,
! gccint, GNU Compiler Collection (GCC) Internals}.
  
  @opindex param
  @item --param @var{name}=@var{value}
*************** These are listed under @xref{S/390 and z
*** 37354,38053 ****
  
  @c man end
  
- @node Spec Files
- @section Specifying Subprocesses and the Switches to Pass to Them
- @cindex Spec Files
- 
- @command{gcc} is a driver program.  It performs its job by invoking a
- sequence of other programs to do the work of compiling, assembling and
- linking.  GCC interprets its command-line parameters and uses these to
- deduce which programs it should invoke, and which command-line options
- it ought to place on their command lines.  This behavior is controlled
- by @dfn{spec strings}.  In most cases there is one spec string for each
- program that GCC can invoke, but a few programs have multiple spec
- strings to control their behavior.  The spec strings built into GCC can
- be overridden by using the @option{-specs=} command-line switch to specify
- a spec file.
- 
- @dfn{Spec files} are plain-text files that are used to construct spec
- strings.  They consist of a sequence of directives separated by blank
- lines.  The type of directive is determined by the first non-whitespace
- character on the line, which can be one of the following:
- 
- @table @code
- @item %@var{command}
- Issues a @var{command} to the spec file processor.  The commands that can
- appear here are:
- 
- @table @code
- @cindex @code{%include}
- @item %include <@var{file}>
- Search for @var{file} and insert its text at the current point in the
- specs file.
- 
- @cindex @code{%include_noerr}
- @item %include_noerr <@var{file}>
- Just like @samp{%include}, but do not generate an error message if the include
- file cannot be found.
- 
- @cindex @code{%rename}
- @item %rename @var{old_name} @var{new_name}
- Rename the spec string @var{old_name} to @var{new_name}.
- 
- @end table
- 
- @item *[@var{spec_name}]:
- This tells the compiler to create, override or delete the named spec
- string.  All lines after this directive up to the next directive or
- blank line are considered to be the text for the spec string.  If this
- results in an empty string then the spec is deleted.  (Or, if the
- spec did not exist, then nothing happens.)  Otherwise, if the spec
- does not currently exist a new spec is created.  If the spec does
- exist then its contents are overridden by the text of this
- directive, unless the first character of that text is the @samp{+}
- character, in which case the text is appended to the spec.
- 
- @item [@var{suffix}]:
- Creates a new @samp{[@var{suffix}] spec} pair.  All lines after this directive
- and up to the next directive or blank line are considered to make up the
- spec string for the indicated suffix.  When the compiler encounters an
- input file with the named suffix, it processes the spec string in
- order to work out how to compile that file.  For example:
- 
- @smallexample
- .ZZ:
- z-compile -input %i
- @end smallexample
- 
- This says that any input file whose name ends in @samp{.ZZ} should be
- passed to the program @samp{z-compile}, which should be invoked with the
- command-line switch @option{-input} and with the result of performing the
- @samp{%i} substitution.  (See below.)
- 
- As an alternative to providing a spec string, the text following a
- suffix directive can be one of the following:
- 
- @table @code
- @item @@@var{language}
- This says that the suffix is an alias for a known @var{language}.  This is
- similar to using the @option{-x} command-line switch to GCC to specify a
- language explicitly.  For example:
- 
- @smallexample
- .ZZ:
- @@c++
- @end smallexample
- 
- Says that .ZZ files are, in fact, C++ source files.
- 
- @item #@var{name}
- This causes an error messages saying:
- 
- @smallexample
- @var{name} compiler not installed on this system.
- @end smallexample
- @end table
- 
- GCC already has an extensive list of suffixes built into it.
- This directive adds an entry to the end of the list of suffixes, but
- since the list is searched from the end backwards, it is effectively
- possible to override earlier entries using this technique.
- 
- @end table
- 
- GCC has the following spec strings built into it.  Spec files can
- override these strings or create their own.  Note that individual
- targets can also add their own spec strings to this list.
- 
- @smallexample
- asm          Options to pass to the assembler
- asm_final    Options to pass to the assembler post-processor
- cpp          Options to pass to the C preprocessor
- cc1          Options to pass to the C compiler
- cc1plus      Options to pass to the C++ compiler
- endfile      Object files to include at the end of the link
- link         Options to pass to the linker
- lib          Libraries to include on the command line to the linker
- libgcc       Decides which GCC support library to pass to the linker
- linker       Sets the name of the linker
- startfile    Object files to include at the start of the link
- @end smallexample
- 
- Here is a small example of a spec file:
- 
- @smallexample
- %rename lib                 old_lib
- 
- *lib:
- --start-group -lgcc -lc -leval1 --end-group %(old_lib)
- @end smallexample
- 
- This example renames the spec called @samp{lib} to @samp{old_lib} and
- then overrides the previous definition of @samp{lib} with a new one.
- The new definition adds in some extra command-line options before
- including the text of the old definition.
- 
- @dfn{Spec strings} are a list of command-line options to be passed to their
- corresponding program.  In addition, the spec strings can contain
- @samp{%}-prefixed sequences to substitute variable text or to
- conditionally insert text into the command line.  Using these constructs
- it is possible to generate quite complex command lines.
- 
- Here is a table of all defined @samp{%}-sequences for spec
- strings.  Note that spaces are not generated automatically around the
- results of expanding these sequences.  Therefore you can concatenate them
- together or combine them with constant text in a single argument.
- 
- @table @code
- @item %%
- Substitute one @samp{%} into the program name or argument.
- 
- @item %"
- Substitute an empty argument.
- 
- @item %i
- Substitute the name of the input file being processed.
- 
- @item %b
- Substitute the basename for outputs related with the input file being
- processed.  This is often the substring up to (and not including) the
- last period and not including the directory but, unless %w is active, it
- expands to the basename for auxiliary outputs, which may be influenced
- by an explicit output name, and by various other options that control
- how auxiliary outputs are named.
- 
- @item %B
- This is the same as @samp{%b}, but include the file suffix (text after
- the last period).  Without %w, it expands to the basename for dump
- outputs.
- 
- @item %d
- Marks the argument containing or following the @samp{%d} as a
- temporary file name, so that that file is deleted if GCC exits
- successfully.  Unlike @samp{%g}, this contributes no text to the
- argument.
- 
- @item %g@var{suffix}
- Substitute a file name that has suffix @var{suffix} and is chosen
- once per compilation, and mark the argument in the same way as
- @samp{%d}.  To reduce exposure to denial-of-service attacks, the file
- name is now chosen in a way that is hard to predict even when previously
- chosen file names are known.  For example, @samp{%g.s @dots{} %g.o @dots{} %g.s}
- might turn into @samp{ccUVUUAU.s ccXYAXZ12.o ccUVUUAU.s}.  @var{suffix} matches
- the regexp @samp{[.A-Za-z]*} or the special string @samp{%O}, which is
- treated exactly as if @samp{%O} had been preprocessed.  Previously, @samp{%g}
- was simply substituted with a file name chosen once per compilation,
- without regard to any appended suffix (which was therefore treated
- just like ordinary text), making such attacks more likely to succeed.
- 
- @item %u@var{suffix}
- Like @samp{%g}, but generates a new temporary file name
- each time it appears instead of once per compilation.
- 
- @item %U@var{suffix}
- Substitutes the last file name generated with @samp{%u@var{suffix}}, generating a
- new one if there is no such last file name.  In the absence of any
- @samp{%u@var{suffix}}, this is just like @samp{%g@var{suffix}}, except they don't share
- the same suffix @emph{space}, so @samp{%g.s @dots{} %U.s @dots{} %g.s @dots{} %U.s}
- involves the generation of two distinct file names, one
- for each @samp{%g.s} and another for each @samp{%U.s}.  Previously, @samp{%U} was
- simply substituted with a file name chosen for the previous @samp{%u},
- without regard to any appended suffix.
- 
- @item %j@var{suffix}
- Substitutes the name of the @code{HOST_BIT_BUCKET}, if any, and if it is
- writable, and if @option{-save-temps} is not used;
- otherwise, substitute the name
- of a temporary file, just like @samp{%u}.  This temporary file is not
- meant for communication between processes, but rather as a junk
- disposal mechanism.
- 
- @item %|@var{suffix}
- @itemx %m@var{suffix}
- Like @samp{%g}, except if @option{-pipe} is in effect.  In that case
- @samp{%|} substitutes a single dash and @samp{%m} substitutes nothing at
- all.  These are the two most common ways to instruct a program that it
- should read from standard input or write to standard output.  If you
- need something more elaborate you can use an @samp{%@{pipe:@code{X}@}}
- construct: see for example @file{gcc/fortran/lang-specs.h}.
- 
- @item %.@var{SUFFIX}
- Substitutes @var{.SUFFIX} for the suffixes of a matched switch's args
- when it is subsequently output with @samp{%*}.  @var{SUFFIX} is
- terminated by the next space or %.
- 
- @item %w
- Marks the argument containing or following the @samp{%w} as the
- designated output file of this compilation.  This puts the argument
- into the sequence of arguments that @samp{%o} substitutes.
- 
- @item %V
- Indicates that this compilation produces no output file.
- 
- @item %o
- Substitutes the names of all the output files, with spaces
- automatically placed around them.  You should write spaces
- around the @samp{%o} as well or the results are undefined.
- @samp{%o} is for use in the specs for running the linker.
- Input files whose names have no recognized suffix are not compiled
- at all, but they are included among the output files, so they are
- linked.
- 
- @item %O
- Substitutes the suffix for object files.  Note that this is
- handled specially when it immediately follows @samp{%g, %u, or %U},
- because of the need for those to form complete file names.  The
- handling is such that @samp{%O} is treated exactly as if it had already
- been substituted, except that @samp{%g, %u, and %U} do not currently
- support additional @var{suffix} characters following @samp{%O} as they do
- following, for example, @samp{.o}.
- 
- @item %I
- Substitute any of @option{-iprefix} (made from @env{GCC_EXEC_PREFIX}),
- @option{-isysroot} (made from @env{TARGET_SYSTEM_ROOT}),
- @option{-isystem} (made from @env{COMPILER_PATH} and @option{-B} options)
- and @option{-imultilib} as necessary.
- 
- @item %s
- Current argument is the name of a library or startup file of some sort.
- Search for that file in a standard list of directories and substitute
- the full name found.  The current working directory is included in the
- list of directories scanned.
- 
- @item %T
- Current argument is the name of a linker script.  Search for that file
- in the current list of directories to scan for libraries. If the file
- is located insert a @option{--script} option into the command line
- followed by the full path name found.  If the file is not found then
- generate an error message.  Note: the current working directory is not
- searched.
- 
- @item %e@var{str}
- Print @var{str} as an error message.  @var{str} is terminated by a newline.
- Use this when inconsistent options are detected.
- 
- @item %n@var{str}
- Print @var{str} as a notice.  @var{str} is terminated by a newline.
- 
- @item %(@var{name})
- Substitute the contents of spec string @var{name} at this point.
- 
- @item %x@{@var{option}@}
- Accumulate an option for @samp{%X}.
- 
- @item %X
- Output the accumulated linker options specified by a @samp{%x} spec string.
- 
- @item %Y
- Output the accumulated assembler options specified by @option{-Wa}.
- 
- @item %Z
- Output the accumulated preprocessor options specified by @option{-Wp}.
- 
- @item %M
- Output @code{multilib_os_dir}.
- 
- @item %R
- Output the concatenation of @code{target_system_root} and @code{target_sysroot_suffix}.
- 
- @item %a
- Process the @code{asm} spec.  This is used to compute the
- switches to be passed to the assembler.
- 
- @item %A
- Process the @code{asm_final} spec.  This is a spec string for
- passing switches to an assembler post-processor, if such a program is
- needed.
- 
- @item %l
- Process the @code{link} spec.  This is the spec for computing the
- command line passed to the linker.  Typically it makes use of the
- @samp{%L %G %S %D and %E} sequences.
- 
- @item %D
- Dump out a @option{-L} option for each directory that GCC believes might
- contain startup files.  If the target supports multilibs then the
- current multilib directory is prepended to each of these paths.
- 
- @item %L
- Process the @code{lib} spec.  This is a spec string for deciding which
- libraries are included on the command line to the linker.
- 
- @item %G
- Process the @code{libgcc} spec.  This is a spec string for deciding
- which GCC support library is included on the command line to the linker.
- 
- @item %S
- Process the @code{startfile} spec.  This is a spec for deciding which
- object files are the first ones passed to the linker.  Typically
- this might be a file named @file{crt0.o}.
- 
- @item %E
- Process the @code{endfile} spec.  This is a spec string that specifies
- the last object files that are passed to the linker.
- 
- @item %C
- Process the @code{cpp} spec.  This is used to construct the arguments
- to be passed to the C preprocessor.
- 
- @item %1
- Process the @code{cc1} spec.  This is used to construct the options to be
- passed to the actual C compiler (@command{cc1}).
- 
- @item %2
- Process the @code{cc1plus} spec.  This is used to construct the options to be
- passed to the actual C++ compiler (@command{cc1plus}).
- 
- @item %*
- Substitute the variable part of a matched option.  See below.
- Note that each comma in the substituted string is replaced by
- a single space.
- 
- @item %<@var{S}
- Remove all occurrences of @code{-@var{S}} from the command line.  Note---this
- command is position dependent.  @samp{%} commands in the spec string
- before this one see @code{-@var{S}}, @samp{%} commands in the spec string
- after this one do not.
- 
- @item %<@var{S}*
- Similar to @samp{%<@var{S}}, but match all switches beginning with @code{-@var{S}}.
- 
- @item %>@var{S}
- Similar to @samp{%<@var{S}}, but keep @code{-@var{S}} in the GCC command line.
- 
- @item %:@var{function}(@var{args})
- Call the named function @var{function}, passing it @var{args}.
- @var{args} is first processed as a nested spec string, then split
- into an argument vector in the usual fashion.  The function returns
- a string which is processed as if it had appeared literally as part
- of the current spec.
- 
- The following built-in spec functions are provided:
- 
- @table @code
- @item @code{getenv}
- The @code{getenv} spec function takes two arguments: an environment
- variable name and a string.  If the environment variable is not
- defined, a fatal error is issued.  Otherwise, the return value is the
- value of the environment variable concatenated with the string.  For
- example, if @env{TOPDIR} is defined as @file{/path/to/top}, then:
- 
- @smallexample
- %:getenv(TOPDIR /include)
- @end smallexample
- 
- expands to @file{/path/to/top/include}.
- 
- @item @code{if-exists}
- The @code{if-exists} spec function takes one argument, an absolute
- pathname to a file.  If the file exists, @code{if-exists} returns the
- pathname.  Here is a small example of its usage:
- 
- @smallexample
- *startfile:
- crt0%O%s %:if-exists(crti%O%s) crtbegin%O%s
- @end smallexample
- 
- @item @code{if-exists-else}
- The @code{if-exists-else} spec function is similar to the @code{if-exists}
- spec function, except that it takes two arguments.  The first argument is
- an absolute pathname to a file.  If the file exists, @code{if-exists-else}
- returns the pathname.  If it does not exist, it returns the second argument.
- This way, @code{if-exists-else} can be used to select one file or another,
- based on the existence of the first.  Here is a small example of its usage:
- 
- @smallexample
- *startfile:
- crt0%O%s %:if-exists(crti%O%s) \
- %:if-exists-else(crtbeginT%O%s crtbegin%O%s)
- @end smallexample
- 
- @item @code{if-exists-then-else}
- The @code{if-exists-then-else} spec function takes at least two arguments
- and an optional third one. The first argument is an absolute pathname to a
- file.  If the file exists, the function returns the second argument.
- If the file does not exist, the function returns the third argument if there
- is one, or NULL otherwise. This can be used to expand one text, or optionally
- another, based on the existence of a file.  Here is a small example of its
- usage:
- 
- @smallexample
- -l%:if-exists-then-else(%:getenv(VSB_DIR rtnet.h) rtnet net)
- @end smallexample
- 
- @item @code{sanitize}
- The @code{sanitize} spec function takes no arguments.  It returns non-NULL if
- any address, thread or undefined behavior sanitizers are active.
- 
- @smallexample
- %@{%:sanitize(address):-funwind-tables@}
- @end smallexample
- 
- @item @code{replace-outfile}
- The @code{replace-outfile} spec function takes two arguments.  It looks for the
- first argument in the outfiles array and replaces it with the second argument.  Here
- is a small example of its usage:
- 
- @smallexample
- %@{fgnu-runtime:%:replace-outfile(-lobjc -lobjc-gnu)@}
- @end smallexample
- 
- @item @code{remove-outfile}
- The @code{remove-outfile} spec function takes one argument.  It looks for the
- first argument in the outfiles array and removes it.  Here is a small example
- its usage:
- 
- @smallexample
- %:remove-outfile(-lm)
- @end smallexample
- 
- @item @code{version-compare}
- The @code{version-compare} spec function takes four or five arguments of the following
- form:
- 
- @smallexample
- <comparison-op> <arg1> [<arg2>] <switch> <result>
- @end smallexample
- 
- It returns @code{result} if the comparison evaluates to true, and NULL if it doesn't.
- The supported @code{comparison-op} values are:
- 
- @table @code
- @item >=
- True if @code{switch} is a later (or same) version than @code{arg1}
- 
- @item !>
- Opposite of @code{>=}
- 
- @item <
- True if @code{switch} is an earlier version than @code{arg1}
- 
- @item !<
- Opposite of @code{<}
- 
- @item ><
- True if @code{switch} is @code{arg1} or later, and earlier than @code{arg2}
- 
- @item <>
- True if @code{switch} is earlier than @code{arg1}, or is @code{arg2} or later
- @end table
- 
- If the @code{switch} is not present at all, the condition is false unless the first character
- of the @code{comparison-op} is @code{!}.
- 
- @smallexample
- %:version-compare(>= 10.3 mmacosx-version-min= -lmx)
- @end smallexample
- 
- The above example would add @option{-lmx} if @option{-mmacosx-version-min=10.3.9} was
- passed.
- 
- @item @code{include}
- The @code{include} spec function behaves much like @code{%include}, with the advantage
- that it can be nested inside a spec and thus be conditionalized.  It takes one argument,
- the filename, and looks for it in the startfile path.  It always returns NULL.
- 
- @smallexample
- %@{static-libasan|static:%:include(libsanitizer.spec)%(link_libasan)@}
- @end smallexample
- 
- @item @code{pass-through-libs}
- The @code{pass-through-libs} spec function takes any number of arguments.  It
- finds any @option{-l} options and any non-options ending in @file{.a} (which it
- assumes are the names of linker input library archive files) and returns a
- result containing all the found arguments each prepended by
- @option{-plugin-opt=-pass-through=} and joined by spaces.  This list is
- intended to be passed to the LTO linker plugin.
- 
- @smallexample
- %:pass-through-libs(%G %L %G)
- @end smallexample
- 
- @item @code{print-asm-header}
- The @code{print-asm-header} function takes no arguments and simply
- prints a banner like:
- 
- @smallexample
- Assembler options
- =================
- 
- Use "-Wa,OPTION" to pass "OPTION" to the assembler.
- @end smallexample
- 
- It is used to separate compiler options from assembler options
- in the @option{--target-help} output.
- 
- @item @code{gt}
- The @code{gt} spec function takes two or more arguments.  It returns @code{""} (the
- empty string) if the second-to-last argument is greater than the last argument, and NULL
- otherwise.  The following example inserts the @code{link_gomp} spec if the last
- @option{-ftree-parallelize-loops=} option given on the command line is greater than 1:
- 
- @smallexample
- %@{%:gt(%@{ftree-parallelize-loops=*:%*@} 1):%:include(libgomp.spec)%(link_gomp)@}
- @end smallexample
- 
- @item @code{debug-level-gt}
- The @code{debug-level-gt} spec function takes one argument and returns @code{""} (the
- empty string) if @code{debug_info_level} is greater than the specified number, and NULL
- otherwise.
- 
- @smallexample
- %@{%:debug-level-gt(0):%@{gdwarf*:--gdwarf2@}@}
- @end smallexample
- @end table
- 
- @item %@{@var{S}@}
- Substitutes the @code{-@var{S}} switch, if that switch is given to GCC@.
- If that switch is not specified, this substitutes nothing.  Note that
- the leading dash is omitted when specifying this option, and it is
- automatically inserted if the substitution is performed.  Thus the spec
- string @samp{%@{foo@}} matches the command-line option @option{-foo}
- and outputs the command-line option @option{-foo}.
- 
- @item %W@{@var{S}@}
- Like %@{@code{@var{S}}@} but mark last argument supplied within as a file to be
- deleted on failure.
- 
- @item %@@@{@var{S}@}
- Like %@{@code{@var{S}}@} but puts the result into a @code{FILE} and substitutes
- @code{@@FILE} if an @code{@@file} argument has been supplied.
- 
- @item %@{@var{S}*@}
- Substitutes all the switches specified to GCC whose names start
- with @code{-@var{S}}, but which also take an argument.  This is used for
- switches like @option{-o}, @option{-D}, @option{-I}, etc.
- GCC considers @option{-o foo} as being
- one switch whose name starts with @samp{o}.  %@{o*@} substitutes this
- text, including the space.  Thus two arguments are generated.
- 
- @item %@{@var{S}*&@var{T}*@}
- Like %@{@code{@var{S}}*@}, but preserve order of @code{@var{S}} and @code{@var{T}} options
- (the order of @code{@var{S}} and @code{@var{T}} in the spec is not significant).
- There can be any number of ampersand-separated variables; for each the
- wild card is optional.  Useful for CPP as @samp{%@{D*&U*&A*@}}.
- 
- @item %@{@var{S}:@var{X}@}
- Substitutes @code{@var{X}}, if the @option{-@var{S}} switch is given to GCC@.
- 
- @item %@{!@var{S}:@var{X}@}
- Substitutes @code{@var{X}}, if the @option{-@var{S}} switch is @emph{not} given to GCC@.
- 
- @item %@{@var{S}*:@var{X}@}
- Substitutes @code{@var{X}} if one or more switches whose names start with
- @code{-@var{S}} are specified to GCC@.  Normally @code{@var{X}} is substituted only
- once, no matter how many such switches appeared.  However, if @code{%*}
- appears somewhere in @code{@var{X}}, then @code{@var{X}} is substituted once
- for each matching switch, with the @code{%*} replaced by the part of
- that switch matching the @code{*}.
- 
- If @code{%*} appears as the last part of a spec sequence then a space
- is added after the end of the last substitution.  If there is more
- text in the sequence, however, then a space is not generated.  This
- allows the @code{%*} substitution to be used as part of a larger
- string.  For example, a spec string like this:
- 
- @smallexample
- %@{mcu=*:--script=%*/memory.ld@}
- @end smallexample
- 
- @noindent
- when matching an option like @option{-mcu=newchip} produces:
- 
- @smallexample
- --script=newchip/memory.ld
- @end smallexample
- 
- @item %@{.@var{S}:@var{X}@}
- Substitutes @code{@var{X}}, if processing a file with suffix @code{@var{S}}.
- 
- @item %@{!.@var{S}:@var{X}@}
- Substitutes @code{@var{X}}, if @emph{not} processing a file with suffix @code{@var{S}}.
- 
- @item %@{,@var{S}:@var{X}@}
- Substitutes @code{@var{X}}, if processing a file for language @code{@var{S}}.
- 
- @item %@{!,@var{S}:@var{X}@}
- Substitutes @code{@var{X}}, if not processing a file for language @code{@var{S}}.
- 
- @item %@{@var{S}|@var{P}:@var{X}@}
- Substitutes @code{@var{X}} if either @code{-@var{S}} or @code{-@var{P}} is given to
- GCC@.  This may be combined with @samp{!}, @samp{.}, @samp{,}, and
- @code{*} sequences as well, although they have a stronger binding than
- the @samp{|}.  If @code{%*} appears in @code{@var{X}}, all of the
- alternatives must be starred, and only the first matching alternative
- is substituted.
- 
- For example, a spec string like this:
- 
- @smallexample
- %@{.c:-foo@} %@{!.c:-bar@} %@{.c|d:-baz@} %@{!.c|d:-boggle@}
- @end smallexample
- 
- @noindent
- outputs the following command-line options from the following input
- command-line options:
- 
- @smallexample
- fred.c        -foo -baz
- jim.d         -bar -boggle
- -d fred.c     -foo -baz -boggle
- -d jim.d      -bar -baz -boggle
- @end smallexample
- 
- @item %@{%:@var{function}(@var{args}):@var{X}@}
- 
- Call function named @var{function} with args @var{args}.  If the
- function returns non-NULL, then @code{@var{X}} is substituted, if it returns
- NULL, it isn't substituted.
- 
- @item %@{@var{S}:@var{X}; @var{T}:@var{Y}; :@var{D}@}
- 
- If @code{@var{S}} is given to GCC, substitutes @code{@var{X}}; else if @code{@var{T}} is
- given to GCC, substitutes @code{@var{Y}}; else substitutes @code{@var{D}}.  There can
- be as many clauses as you need.  This may be combined with @code{.},
- @code{,}, @code{!}, @code{|}, and @code{*} as needed.
- 
- 
- @end table
- 
- The switch matching text @code{@var{S}} in a @samp{%@{@var{S}@}}, @samp{%@{@var{S}:@var{X}@}}
- or similar construct can use a backslash to ignore the special meaning
- of the character following it, thus allowing literal matching of a
- character that is otherwise specially treated.  For example,
- @samp{%@{std=iso9899\:1999:@var{X}@}} substitutes @code{@var{X}} if the
- @option{-std=iso9899:1999} option is given.
- 
- The conditional text @code{@var{X}} in a @samp{%@{@var{S}:@var{X}@}} or similar
- construct may contain other nested @samp{%} constructs or spaces, or
- even newlines.  They are processed as usual, as described above.
- Trailing white space in @code{@var{X}} is ignored.  White space may also
- appear anywhere on the left side of the colon in these constructs,
- except between @code{.} or @code{*} and the corresponding word.
- 
- The @option{-O}, @option{-f}, @option{-m}, and @option{-W} switches are
- handled specifically in these constructs.  If another value of
- @option{-O} or the negated form of a @option{-f}, @option{-m}, or
- @option{-W} switch is found later in the command line, the earlier
- switch value is ignored, except with @{@code{@var{S}}*@} where @code{@var{S}} is
- just one letter, which passes all matching options.
- 
- The character @samp{|} at the beginning of the predicate text is used to
- indicate that a command should be piped to the following command, but
- only if @option{-pipe} is specified.
- 
- It is built into GCC which switches take arguments and which do not.
- (You might think it would be useful to generalize this to allow each
- compiler's spec to say which switches take arguments.  But this cannot
- be done in a consistent fashion.  GCC cannot even decide which input
- files have been specified without knowing which switches take arguments,
- and it must know which input files to compile in order to tell which
- compilers to run).
- 
- GCC also knows implicitly that arguments starting in @option{-l} are to be
- treated as compiler output files, and passed to the linker in their
- proper position among the other output files.
- 
  @node Environment Variables
  @section Environment Variables Affecting GCC
  @cindex environment variables
--- 37360,37365 ----
diff -Nrcpad gcc-16-20260301/gcc/doc/specs.texi gcc-16-20260308/gcc/doc/specs.texi
*** gcc-16-20260301/gcc/doc/specs.texi	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/doc/specs.texi	Sun Mar  8 22:32:06 2026
***************
*** 0 ****
--- 1,693 ----
+ @node Spec Files
+ @chapter Specifying Subprocesses and the Switches to Pass to Them
+ @cindex Spec Files
+ 
+ @command{gcc} is a driver program.  It performs its job by invoking a
+ sequence of other programs to do the work of compiling, assembling and
+ linking.  GCC interprets its command-line parameters and uses these to
+ deduce which programs it should invoke, and which command-line options
+ it ought to place on their command lines.  This behavior is controlled
+ by @dfn{spec strings}.  In most cases there is one spec string for each
+ program that GCC can invoke, but a few programs have multiple spec
+ strings to control their behavior.  The spec strings built into GCC can
+ be overridden by using the @option{-specs=} command-line switch to specify
+ a spec file.
+ 
+ @dfn{Spec files} are plain-text files that are used to construct spec
+ strings.  They consist of a sequence of directives separated by blank
+ lines.  The type of directive is determined by the first non-whitespace
+ character on the line, which can be one of the following:
+ 
+ @table @code
+ @item %@var{command}
+ Issues a @var{command} to the spec file processor.  The commands that can
+ appear here are:
+ 
+ @table @code
+ @cindex @code{%include}
+ @item %include <@var{file}>
+ Search for @var{file} and insert its text at the current point in the
+ specs file.
+ 
+ @cindex @code{%include_noerr}
+ @item %include_noerr <@var{file}>
+ Just like @samp{%include}, but do not generate an error message if the include
+ file cannot be found.
+ 
+ @cindex @code{%rename}
+ @item %rename @var{old_name} @var{new_name}
+ Rename the spec string @var{old_name} to @var{new_name}.
+ 
+ @end table
+ 
+ @item *[@var{spec_name}]:
+ This tells the compiler to create, override or delete the named spec
+ string.  All lines after this directive up to the next directive or
+ blank line are considered to be the text for the spec string.  If this
+ results in an empty string then the spec is deleted.  (Or, if the
+ spec did not exist, then nothing happens.)  Otherwise, if the spec
+ does not currently exist a new spec is created.  If the spec does
+ exist then its contents are overridden by the text of this
+ directive, unless the first character of that text is the @samp{+}
+ character, in which case the text is appended to the spec.
+ 
+ @item [@var{suffix}]:
+ Creates a new @samp{[@var{suffix}] spec} pair.  All lines after this directive
+ and up to the next directive or blank line are considered to make up the
+ spec string for the indicated suffix.  When the compiler encounters an
+ input file with the named suffix, it processes the spec string in
+ order to work out how to compile that file.  For example:
+ 
+ @smallexample
+ .ZZ:
+ z-compile -input %i
+ @end smallexample
+ 
+ This says that any input file whose name ends in @samp{.ZZ} should be
+ passed to the program @samp{z-compile}, which should be invoked with the
+ command-line switch @option{-input} and with the result of performing the
+ @samp{%i} substitution.  (See below.)
+ 
+ As an alternative to providing a spec string, the text following a
+ suffix directive can be one of the following:
+ 
+ @table @code
+ @item @@@var{language}
+ This says that the suffix is an alias for a known @var{language}.  This is
+ similar to using the @option{-x} command-line switch to GCC to specify a
+ language explicitly.  For example:
+ 
+ @smallexample
+ .ZZ:
+ @@c++
+ @end smallexample
+ 
+ Says that .ZZ files are, in fact, C++ source files.
+ 
+ @item #@var{name}
+ This causes an error messages saying:
+ 
+ @smallexample
+ @var{name} compiler not installed on this system.
+ @end smallexample
+ @end table
+ 
+ GCC already has an extensive list of suffixes built into it.
+ This directive adds an entry to the end of the list of suffixes, but
+ since the list is searched from the end backwards, it is effectively
+ possible to override earlier entries using this technique.
+ 
+ @end table
+ 
+ GCC has the following spec strings built into it.  Spec files can
+ override these strings or create their own.  Note that individual
+ targets can also add their own spec strings to this list.
+ 
+ @smallexample
+ asm          Options to pass to the assembler
+ asm_final    Options to pass to the assembler post-processor
+ cpp          Options to pass to the C preprocessor
+ cc1          Options to pass to the C compiler
+ cc1plus      Options to pass to the C++ compiler
+ endfile      Object files to include at the end of the link
+ link         Options to pass to the linker
+ lib          Libraries to include on the command line to the linker
+ libgcc       Decides which GCC support library to pass to the linker
+ linker       Sets the name of the linker
+ startfile    Object files to include at the start of the link
+ @end smallexample
+ 
+ Here is a small example of a spec file:
+ 
+ @smallexample
+ %rename lib                 old_lib
+ 
+ *lib:
+ --start-group -lgcc -lc -leval1 --end-group %(old_lib)
+ @end smallexample
+ 
+ This example renames the spec called @samp{lib} to @samp{old_lib} and
+ then overrides the previous definition of @samp{lib} with a new one.
+ The new definition adds in some extra command-line options before
+ including the text of the old definition.
+ 
+ @dfn{Spec strings} are a list of command-line options to be passed to their
+ corresponding program.  In addition, the spec strings can contain
+ @samp{%}-prefixed sequences to substitute variable text or to
+ conditionally insert text into the command line.  Using these constructs
+ it is possible to generate quite complex command lines.
+ 
+ Here is a table of all defined @samp{%}-sequences for spec
+ strings.  Note that spaces are not generated automatically around the
+ results of expanding these sequences.  Therefore you can concatenate them
+ together or combine them with constant text in a single argument.
+ 
+ @table @code
+ @item %%
+ Substitute one @samp{%} into the program name or argument.
+ 
+ @item %"
+ Substitute an empty argument.
+ 
+ @item %i
+ Substitute the name of the input file being processed.
+ 
+ @item %b
+ Substitute the basename for outputs related with the input file being
+ processed.  This is often the substring up to (and not including) the
+ last period and not including the directory but, unless %w is active, it
+ expands to the basename for auxiliary outputs, which may be influenced
+ by an explicit output name, and by various other options that control
+ how auxiliary outputs are named.
+ 
+ @item %B
+ This is the same as @samp{%b}, but include the file suffix (text after
+ the last period).  Without %w, it expands to the basename for dump
+ outputs.
+ 
+ @item %d
+ Marks the argument containing or following the @samp{%d} as a
+ temporary file name, so that that file is deleted if GCC exits
+ successfully.  Unlike @samp{%g}, this contributes no text to the
+ argument.
+ 
+ @item %g@var{suffix}
+ Substitute a file name that has suffix @var{suffix} and is chosen
+ once per compilation, and mark the argument in the same way as
+ @samp{%d}.  To reduce exposure to denial-of-service attacks, the file
+ name is now chosen in a way that is hard to predict even when previously
+ chosen file names are known.  For example, @samp{%g.s @dots{} %g.o @dots{} %g.s}
+ might turn into @samp{ccUVUUAU.s ccXYAXZ12.o ccUVUUAU.s}.  @var{suffix} matches
+ the regexp @samp{[.A-Za-z]*} or the special string @samp{%O}, which is
+ treated exactly as if @samp{%O} had been preprocessed.  Previously, @samp{%g}
+ was simply substituted with a file name chosen once per compilation,
+ without regard to any appended suffix (which was therefore treated
+ just like ordinary text), making such attacks more likely to succeed.
+ 
+ @item %u@var{suffix}
+ Like @samp{%g}, but generates a new temporary file name
+ each time it appears instead of once per compilation.
+ 
+ @item %U@var{suffix}
+ Substitutes the last file name generated with @samp{%u@var{suffix}}, generating a
+ new one if there is no such last file name.  In the absence of any
+ @samp{%u@var{suffix}}, this is just like @samp{%g@var{suffix}}, except they don't share
+ the same suffix @emph{space}, so @samp{%g.s @dots{} %U.s @dots{} %g.s @dots{} %U.s}
+ involves the generation of two distinct file names, one
+ for each @samp{%g.s} and another for each @samp{%U.s}.  Previously, @samp{%U} was
+ simply substituted with a file name chosen for the previous @samp{%u},
+ without regard to any appended suffix.
+ 
+ @item %j@var{suffix}
+ Substitutes the name of the @code{HOST_BIT_BUCKET}, if any, and if it is
+ writable, and if @option{-save-temps} is not used;
+ otherwise, substitute the name
+ of a temporary file, just like @samp{%u}.  This temporary file is not
+ meant for communication between processes, but rather as a junk
+ disposal mechanism.
+ 
+ @item %|@var{suffix}
+ @itemx %m@var{suffix}
+ Like @samp{%g}, except if @option{-pipe} is in effect.  In that case
+ @samp{%|} substitutes a single dash and @samp{%m} substitutes nothing at
+ all.  These are the two most common ways to instruct a program that it
+ should read from standard input or write to standard output.  If you
+ need something more elaborate you can use an @samp{%@{pipe:@code{X}@}}
+ construct: see for example @file{gcc/fortran/lang-specs.h}.
+ 
+ @item %.@var{SUFFIX}
+ Substitutes @var{.SUFFIX} for the suffixes of a matched switch's args
+ when it is subsequently output with @samp{%*}.  @var{SUFFIX} is
+ terminated by the next space or %.
+ 
+ @item %w
+ Marks the argument containing or following the @samp{%w} as the
+ designated output file of this compilation.  This puts the argument
+ into the sequence of arguments that @samp{%o} substitutes.
+ 
+ @item %V
+ Indicates that this compilation produces no output file.
+ 
+ @item %o
+ Substitutes the names of all the output files, with spaces
+ automatically placed around them.  You should write spaces
+ around the @samp{%o} as well or the results are undefined.
+ @samp{%o} is for use in the specs for running the linker.
+ Input files whose names have no recognized suffix are not compiled
+ at all, but they are included among the output files, so they are
+ linked.
+ 
+ @item %O
+ Substitutes the suffix for object files.  Note that this is
+ handled specially when it immediately follows @samp{%g, %u, or %U},
+ because of the need for those to form complete file names.  The
+ handling is such that @samp{%O} is treated exactly as if it had already
+ been substituted, except that @samp{%g, %u, and %U} do not currently
+ support additional @var{suffix} characters following @samp{%O} as they do
+ following, for example, @samp{.o}.
+ 
+ @item %I
+ Substitute any of @option{-iprefix} (made from @env{GCC_EXEC_PREFIX}),
+ @option{-isysroot} (made from @env{TARGET_SYSTEM_ROOT}),
+ @option{-isystem} (made from @env{COMPILER_PATH} and @option{-B} options)
+ and @option{-imultilib} as necessary.
+ 
+ @item %s
+ Current argument is the name of a library or startup file of some sort.
+ Search for that file in a standard list of directories and substitute
+ the full name found.  The current working directory is included in the
+ list of directories scanned.
+ 
+ @item %T
+ Current argument is the name of a linker script.  Search for that file
+ in the current list of directories to scan for libraries. If the file
+ is located insert a @option{--script} option into the command line
+ followed by the full path name found.  If the file is not found then
+ generate an error message.  Note: the current working directory is not
+ searched.
+ 
+ @item %e@var{str}
+ Print @var{str} as an error message.  @var{str} is terminated by a newline.
+ Use this when inconsistent options are detected.
+ 
+ @item %n@var{str}
+ Print @var{str} as a notice.  @var{str} is terminated by a newline.
+ 
+ @item %(@var{name})
+ Substitute the contents of spec string @var{name} at this point.
+ 
+ @item %x@{@var{option}@}
+ Accumulate an option for @samp{%X}.
+ 
+ @item %X
+ Output the accumulated linker options specified by a @samp{%x} spec string.
+ 
+ @item %Y
+ Output the accumulated assembler options specified by @option{-Wa}.
+ 
+ @item %Z
+ Output the accumulated preprocessor options specified by @option{-Wp}.
+ 
+ @item %M
+ Output @code{multilib_os_dir}.
+ 
+ @item %R
+ Output the concatenation of @code{target_system_root} and @code{target_sysroot_suffix}.
+ 
+ @item %a
+ Process the @code{asm} spec.  This is used to compute the
+ switches to be passed to the assembler.
+ 
+ @item %A
+ Process the @code{asm_final} spec.  This is a spec string for
+ passing switches to an assembler post-processor, if such a program is
+ needed.
+ 
+ @item %l
+ Process the @code{link} spec.  This is the spec for computing the
+ command line passed to the linker.  Typically it makes use of the
+ @samp{%L %G %S %D and %E} sequences.
+ 
+ @item %D
+ Dump out a @option{-L} option for each directory that GCC believes might
+ contain startup files.  If the target supports multilibs then the
+ current multilib directory is prepended to each of these paths.
+ 
+ @item %L
+ Process the @code{lib} spec.  This is a spec string for deciding which
+ libraries are included on the command line to the linker.
+ 
+ @item %G
+ Process the @code{libgcc} spec.  This is a spec string for deciding
+ which GCC support library is included on the command line to the linker.
+ 
+ @item %S
+ Process the @code{startfile} spec.  This is a spec for deciding which
+ object files are the first ones passed to the linker.  Typically
+ this might be a file named @file{crt0.o}.
+ 
+ @item %E
+ Process the @code{endfile} spec.  This is a spec string that specifies
+ the last object files that are passed to the linker.
+ 
+ @item %C
+ Process the @code{cpp} spec.  This is used to construct the arguments
+ to be passed to the C preprocessor.
+ 
+ @item %1
+ Process the @code{cc1} spec.  This is used to construct the options to be
+ passed to the actual C compiler (@command{cc1}).
+ 
+ @item %2
+ Process the @code{cc1plus} spec.  This is used to construct the options to be
+ passed to the actual C++ compiler (@command{cc1plus}).
+ 
+ @item %*
+ Substitute the variable part of a matched option.  See below.
+ Note that each comma in the substituted string is replaced by
+ a single space.
+ 
+ @item %<@var{S}
+ Remove all occurrences of @code{-@var{S}} from the command line.  Note---this
+ command is position dependent.  @samp{%} commands in the spec string
+ before this one see @code{-@var{S}}, @samp{%} commands in the spec string
+ after this one do not.
+ 
+ @item %<@var{S}*
+ Similar to @samp{%<@var{S}}, but match all switches beginning with @code{-@var{S}}.
+ 
+ @item %>@var{S}
+ Similar to @samp{%<@var{S}}, but keep @code{-@var{S}} in the GCC command line.
+ 
+ @item %:@var{function}(@var{args})
+ Call the named function @var{function}, passing it @var{args}.
+ @var{args} is first processed as a nested spec string, then split
+ into an argument vector in the usual fashion.  The function returns
+ a string which is processed as if it had appeared literally as part
+ of the current spec.
+ 
+ The following built-in spec functions are provided:
+ 
+ @table @code
+ @item @code{getenv}
+ The @code{getenv} spec function takes two arguments: an environment
+ variable name and a string.  If the environment variable is not
+ defined, a fatal error is issued.  Otherwise, the return value is the
+ value of the environment variable concatenated with the string.  For
+ example, if @env{TOPDIR} is defined as @file{/path/to/top}, then:
+ 
+ @smallexample
+ %:getenv(TOPDIR /include)
+ @end smallexample
+ 
+ expands to @file{/path/to/top/include}.
+ 
+ @item @code{if-exists}
+ The @code{if-exists} spec function takes one argument, an absolute
+ pathname to a file.  If the file exists, @code{if-exists} returns the
+ pathname.  Here is a small example of its usage:
+ 
+ @smallexample
+ *startfile:
+ crt0%O%s %:if-exists(crti%O%s) crtbegin%O%s
+ @end smallexample
+ 
+ @item @code{if-exists-else}
+ The @code{if-exists-else} spec function is similar to the @code{if-exists}
+ spec function, except that it takes two arguments.  The first argument is
+ an absolute pathname to a file.  If the file exists, @code{if-exists-else}
+ returns the pathname.  If it does not exist, it returns the second argument.
+ This way, @code{if-exists-else} can be used to select one file or another,
+ based on the existence of the first.  Here is a small example of its usage:
+ 
+ @smallexample
+ *startfile:
+ crt0%O%s %:if-exists(crti%O%s) \
+ %:if-exists-else(crtbeginT%O%s crtbegin%O%s)
+ @end smallexample
+ 
+ @item @code{if-exists-then-else}
+ The @code{if-exists-then-else} spec function takes at least two arguments
+ and an optional third one. The first argument is an absolute pathname to a
+ file.  If the file exists, the function returns the second argument.
+ If the file does not exist, the function returns the third argument if there
+ is one, or NULL otherwise. This can be used to expand one text, or optionally
+ another, based on the existence of a file.  Here is a small example of its
+ usage:
+ 
+ @smallexample
+ -l%:if-exists-then-else(%:getenv(VSB_DIR rtnet.h) rtnet net)
+ @end smallexample
+ 
+ @item @code{sanitize}
+ The @code{sanitize} spec function takes no arguments.  It returns non-NULL if
+ any address, thread or undefined behavior sanitizers are active.
+ 
+ @smallexample
+ %@{%:sanitize(address):-funwind-tables@}
+ @end smallexample
+ 
+ @item @code{replace-outfile}
+ The @code{replace-outfile} spec function takes two arguments.  It looks for the
+ first argument in the outfiles array and replaces it with the second argument.  Here
+ is a small example of its usage:
+ 
+ @smallexample
+ %@{fgnu-runtime:%:replace-outfile(-lobjc -lobjc-gnu)@}
+ @end smallexample
+ 
+ @item @code{remove-outfile}
+ The @code{remove-outfile} spec function takes one argument.  It looks for the
+ first argument in the outfiles array and removes it.  Here is a small example
+ its usage:
+ 
+ @smallexample
+ %:remove-outfile(-lm)
+ @end smallexample
+ 
+ @item @code{version-compare}
+ The @code{version-compare} spec function takes four or five arguments of the following
+ form:
+ 
+ @smallexample
+ <comparison-op> <arg1> [<arg2>] <switch> <result>
+ @end smallexample
+ 
+ It returns @code{result} if the comparison evaluates to true, and NULL if it doesn't.
+ The supported @code{comparison-op} values are:
+ 
+ @table @code
+ @item >=
+ True if @code{switch} is a later (or same) version than @code{arg1}
+ 
+ @item !>
+ Opposite of @code{>=}
+ 
+ @item <
+ True if @code{switch} is an earlier version than @code{arg1}
+ 
+ @item !<
+ Opposite of @code{<}
+ 
+ @item ><
+ True if @code{switch} is @code{arg1} or later, and earlier than @code{arg2}
+ 
+ @item <>
+ True if @code{switch} is earlier than @code{arg1}, or is @code{arg2} or later
+ @end table
+ 
+ If the @code{switch} is not present at all, the condition is false unless the first character
+ of the @code{comparison-op} is @code{!}.
+ 
+ @smallexample
+ %:version-compare(>= 10.3 mmacosx-version-min= -lmx)
+ @end smallexample
+ 
+ The above example would add @option{-lmx} if @option{-mmacosx-version-min=10.3.9} was
+ passed.
+ 
+ @item @code{include}
+ The @code{include} spec function behaves much like @code{%include}, with the advantage
+ that it can be nested inside a spec and thus be conditionalized.  It takes one argument,
+ the filename, and looks for it in the startfile path.  It always returns NULL.
+ 
+ @smallexample
+ %@{static-libasan|static:%:include(libsanitizer.spec)%(link_libasan)@}
+ @end smallexample
+ 
+ @item @code{pass-through-libs}
+ The @code{pass-through-libs} spec function takes any number of arguments.  It
+ finds any @option{-l} options and any non-options ending in @file{.a} (which it
+ assumes are the names of linker input library archive files) and returns a
+ result containing all the found arguments each prepended by
+ @option{-plugin-opt=-pass-through=} and joined by spaces.  This list is
+ intended to be passed to the LTO linker plugin.
+ 
+ @smallexample
+ %:pass-through-libs(%G %L %G)
+ @end smallexample
+ 
+ @item @code{print-asm-header}
+ The @code{print-asm-header} function takes no arguments and simply
+ prints a banner like:
+ 
+ @smallexample
+ Assembler options
+ =================
+ 
+ Use "-Wa,OPTION" to pass "OPTION" to the assembler.
+ @end smallexample
+ 
+ It is used to separate compiler options from assembler options
+ in the @option{--target-help} output.
+ 
+ @item @code{gt}
+ The @code{gt} spec function takes two or more arguments.  It returns @code{""} (the
+ empty string) if the second-to-last argument is greater than the last argument, and NULL
+ otherwise.  The following example inserts the @code{link_gomp} spec if the last
+ @option{-ftree-parallelize-loops=} option given on the command line is greater than 1:
+ 
+ @smallexample
+ %@{%:gt(%@{ftree-parallelize-loops=*:%*@} 1):%:include(libgomp.spec)%(link_gomp)@}
+ @end smallexample
+ 
+ @item @code{debug-level-gt}
+ The @code{debug-level-gt} spec function takes one argument and returns @code{""} (the
+ empty string) if @code{debug_info_level} is greater than the specified number, and NULL
+ otherwise.
+ 
+ @smallexample
+ %@{%:debug-level-gt(0):%@{gdwarf*:--gdwarf2@}@}
+ @end smallexample
+ @end table
+ 
+ @item %@{@var{S}@}
+ Substitutes the @code{-@var{S}} switch, if that switch is given to GCC@.
+ If that switch is not specified, this substitutes nothing.  Note that
+ the leading dash is omitted when specifying this option, and it is
+ automatically inserted if the substitution is performed.  Thus the spec
+ string @samp{%@{foo@}} matches the command-line option @option{-foo}
+ and outputs the command-line option @option{-foo}.
+ 
+ @item %W@{@var{S}@}
+ Like %@{@code{@var{S}}@} but mark last argument supplied within as a file to be
+ deleted on failure.
+ 
+ @item %@@@{@var{S}@}
+ Like %@{@code{@var{S}}@} but puts the result into a @code{FILE} and substitutes
+ @code{@@FILE} if an @code{@@file} argument has been supplied.
+ 
+ @item %@{@var{S}*@}
+ Substitutes all the switches specified to GCC whose names start
+ with @code{-@var{S}}, but which also take an argument.  This is used for
+ switches like @option{-o}, @option{-D}, @option{-I}, etc.
+ GCC considers @option{-o foo} as being
+ one switch whose name starts with @samp{o}.  %@{o*@} substitutes this
+ text, including the space.  Thus two arguments are generated.
+ 
+ @item %@{@var{S}*&@var{T}*@}
+ Like %@{@code{@var{S}}*@}, but preserve order of @code{@var{S}} and @code{@var{T}} options
+ (the order of @code{@var{S}} and @code{@var{T}} in the spec is not significant).
+ There can be any number of ampersand-separated variables; for each the
+ wild card is optional.  Useful for CPP as @samp{%@{D*&U*&A*@}}.
+ 
+ @item %@{@var{S}:@var{X}@}
+ Substitutes @code{@var{X}}, if the @option{-@var{S}} switch is given to GCC@.
+ 
+ @item %@{!@var{S}:@var{X}@}
+ Substitutes @code{@var{X}}, if the @option{-@var{S}} switch is @emph{not} given to GCC@.
+ 
+ @item %@{@var{S}*:@var{X}@}
+ Substitutes @code{@var{X}} if one or more switches whose names start with
+ @code{-@var{S}} are specified to GCC@.  Normally @code{@var{X}} is substituted only
+ once, no matter how many such switches appeared.  However, if @code{%*}
+ appears somewhere in @code{@var{X}}, then @code{@var{X}} is substituted once
+ for each matching switch, with the @code{%*} replaced by the part of
+ that switch matching the @code{*}.
+ 
+ If @code{%*} appears as the last part of a spec sequence then a space
+ is added after the end of the last substitution.  If there is more
+ text in the sequence, however, then a space is not generated.  This
+ allows the @code{%*} substitution to be used as part of a larger
+ string.  For example, a spec string like this:
+ 
+ @smallexample
+ %@{mcu=*:--script=%*/memory.ld@}
+ @end smallexample
+ 
+ @noindent
+ when matching an option like @option{-mcu=newchip} produces:
+ 
+ @smallexample
+ --script=newchip/memory.ld
+ @end smallexample
+ 
+ @item %@{.@var{S}:@var{X}@}
+ Substitutes @code{@var{X}}, if processing a file with suffix @code{@var{S}}.
+ 
+ @item %@{!.@var{S}:@var{X}@}
+ Substitutes @code{@var{X}}, if @emph{not} processing a file with suffix @code{@var{S}}.
+ 
+ @item %@{,@var{S}:@var{X}@}
+ Substitutes @code{@var{X}}, if processing a file for language @code{@var{S}}.
+ 
+ @item %@{!,@var{S}:@var{X}@}
+ Substitutes @code{@var{X}}, if not processing a file for language @code{@var{S}}.
+ 
+ @item %@{@var{S}|@var{P}:@var{X}@}
+ Substitutes @code{@var{X}} if either @code{-@var{S}} or @code{-@var{P}} is given to
+ GCC@.  This may be combined with @samp{!}, @samp{.}, @samp{,}, and
+ @code{*} sequences as well, although they have a stronger binding than
+ the @samp{|}.  If @code{%*} appears in @code{@var{X}}, all of the
+ alternatives must be starred, and only the first matching alternative
+ is substituted.
+ 
+ For example, a spec string like this:
+ 
+ @smallexample
+ %@{.c:-foo@} %@{!.c:-bar@} %@{.c|d:-baz@} %@{!.c|d:-boggle@}
+ @end smallexample
+ 
+ @noindent
+ outputs the following command-line options from the following input
+ command-line options:
+ 
+ @smallexample
+ fred.c        -foo -baz
+ jim.d         -bar -boggle
+ -d fred.c     -foo -baz -boggle
+ -d jim.d      -bar -baz -boggle
+ @end smallexample
+ 
+ @item %@{%:@var{function}(@var{args}):@var{X}@}
+ 
+ Call function named @var{function} with args @var{args}.  If the
+ function returns non-NULL, then @code{@var{X}} is substituted, if it returns
+ NULL, it isn't substituted.
+ 
+ @item %@{@var{S}:@var{X}; @var{T}:@var{Y}; :@var{D}@}
+ 
+ If @code{@var{S}} is given to GCC, substitutes @code{@var{X}}; else if @code{@var{T}} is
+ given to GCC, substitutes @code{@var{Y}}; else substitutes @code{@var{D}}.  There can
+ be as many clauses as you need.  This may be combined with @code{.},
+ @code{,}, @code{!}, @code{|}, and @code{*} as needed.
+ 
+ 
+ @end table
+ 
+ The switch matching text @code{@var{S}} in a @samp{%@{@var{S}@}}, @samp{%@{@var{S}:@var{X}@}}
+ or similar construct can use a backslash to ignore the special meaning
+ of the character following it, thus allowing literal matching of a
+ character that is otherwise specially treated.  For example,
+ @samp{%@{std=iso9899\:1999:@var{X}@}} substitutes @code{@var{X}} if the
+ @option{-std=iso9899:1999} option is given.
+ 
+ The conditional text @code{@var{X}} in a @samp{%@{@var{S}:@var{X}@}} or similar
+ construct may contain other nested @samp{%} constructs or spaces, or
+ even newlines.  They are processed as usual, as described above.
+ Trailing white space in @code{@var{X}} is ignored.  White space may also
+ appear anywhere on the left side of the colon in these constructs,
+ except between @code{.} or @code{*} and the corresponding word.
+ 
+ The @option{-O}, @option{-f}, @option{-m}, and @option{-W} switches are
+ handled specifically in these constructs.  If another value of
+ @option{-O} or the negated form of a @option{-f}, @option{-m}, or
+ @option{-W} switch is found later in the command line, the earlier
+ switch value is ignored, except with @{@code{@var{S}}*@} where @code{@var{S}} is
+ just one letter, which passes all matching options.
+ 
+ The character @samp{|} at the beginning of the predicate text is used to
+ indicate that a command should be piped to the following command, but
+ only if @option{-pipe} is specified.
+ 
+ It is built into GCC which switches take arguments and which do not.
+ (You might think it would be useful to generalize this to allow each
+ compiler's spec to say which switches take arguments.  But this cannot
+ be done in a consistent fashion.  GCC cannot even decide which input
+ files have been specified without knowing which switches take arguments,
+ and it must know which input files to compile in order to tell which
+ compilers to run).
+ 
+ GCC also knows implicitly that arguments starting in @option{-l} are to be
+ treated as compiler output files, and passed to the linker in their
+ proper position among the other output files.
diff -Nrcpad gcc-16-20260301/gcc/fold-const.cc gcc-16-20260308/gcc/fold-const.cc
*** gcc-16-20260301/gcc/fold-const.cc	Sun Mar  1 22:32:07 2026
--- gcc-16-20260308/gcc/fold-const.cc	Sun Mar  8 22:32:06 2026
*************** operand_compare::verify_hash_value (cons
*** 4340,4346 ****
  
  static operand_compare default_compare_instance;
  
! /* Conveinece wrapper around operand_compare class because usually we do
     not need to play with the valueizer.  */
  
  bool
--- 4340,4346 ----
  
  static operand_compare default_compare_instance;
  
! /* Convenience wrapper around operand_compare class because usually we do
     not need to play with the valueizer.  */
  
  bool
diff -Nrcpad gcc-16-20260301/gcc/fortran/ChangeLog gcc-16-20260308/gcc/fortran/ChangeLog
*** gcc-16-20260301/gcc/fortran/ChangeLog	Sun Mar  1 22:32:07 2026
--- gcc-16-20260308/gcc/fortran/ChangeLog	Sun Mar  8 22:32:06 2026
***************
*** 1,3 ****
--- 1,10 ----
+ 2026-02-27  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/78187
+ 	* trans-decl.cc (gfc_trans_deferred_vars): An initialization block
+ 	shall be generated for deferred-length character results even
+ 	when -fno-automatic is given.
+ 
  2026-02-26  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
  
  	PR fortran/88076
diff -Nrcpad gcc-16-20260301/gcc/go/ChangeLog gcc-16-20260308/gcc/go/ChangeLog
*** gcc-16-20260301/gcc/go/ChangeLog	Sun Mar  1 22:32:07 2026
--- gcc-16-20260308/gcc/go/ChangeLog	Sun Mar  8 22:32:06 2026
***************
*** 1,3 ****
--- 1,7 ----
+ 2026-03-01  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* gospec.cc (lang_specific_driver): Switch to HAVE_SOLARIS_LD.
+ 
  2026-01-01  Jakub Jelinek  <jakub@redhat.com>
  
  	* gccgo.texi: Bump @copyrights-go year.
diff -Nrcpad gcc-16-20260301/gcc/ipa.cc gcc-16-20260308/gcc/ipa.cc
*** gcc-16-20260301/gcc/ipa.cc	Sun Mar  1 22:32:07 2026
--- gcc-16-20260308/gcc/ipa.cc	Sun Mar  8 22:32:06 2026
*************** symbol_table::remove_unreachable_nodes (
*** 441,456 ****
  		    }
  		}
  
- 	      /* A reference to the default node implies use of all the other
- 		 versions (they get used in the function resolver made later
- 		 in multiple_target.cc)  */
- 	      cgraph_function_version_info *node_v = cnode->function_version ();
- 	      if (node_v && is_function_default_version (node->decl))
- 		for (cgraph_function_version_info *fvi = node_v->next;
- 		     fvi;
- 		     fvi = fvi->next)
- 		  enqueue_node (fvi->this_node, &first, &reachable);
- 
  	      for (e = cnode->callees; e; e = e->next_callee)
  		{
  	          symtab_node *body = e->callee->function_symbol ();
--- 441,446 ----
*************** symbol_table::remove_unreachable_nodes (
*** 494,499 ****
--- 484,498 ----
  	  else if (cnode->thunk)
  	    enqueue_node (cnode->callees->callee, &first, &reachable);
  
+ 	  /* A reference to the default node implies use of all the other
+ 	     versions (they get used in the function resolver made later
+ 	     in multiple_target.cc)  */
+ 	  cgraph_function_version_info *node_v = cnode->function_version ();
+ 	  if (node_v && is_function_default_version (node->decl))
+ 	    for (cgraph_function_version_info *fvi = node_v->next; fvi;
+ 		 fvi = fvi->next)
+ 	      enqueue_node (fvi->this_node, &first, &reachable);
+ 
  	  /* If any reachable function has simd clones, mark them as
  	     reachable as well.  */
  	  if (cnode->simd_clones)
diff -Nrcpad gcc-16-20260301/gcc/lra-constraints.cc gcc-16-20260308/gcc/lra-constraints.cc
*** gcc-16-20260301/gcc/lra-constraints.cc	Sun Mar  1 22:32:07 2026
--- gcc-16-20260308/gcc/lra-constraints.cc	Sun Mar  8 22:32:06 2026
*************** simple_move_p (void)
*** 4245,4251 ****
  	  /* The backend guarantees that register moves of cost 2
  	     never need reloads.  */
  	  && targetm.register_move_cost (GET_MODE (src), sclass, dclass) == 2);
!  }
  
  /* Swap operands NOP and NOP + 1. */
  static inline void
--- 4245,4251 ----
  	  /* The backend guarantees that register moves of cost 2
  	     never need reloads.  */
  	  && targetm.register_move_cost (GET_MODE (src), sclass, dclass) == 2);
! }
  
  /* Swap operands NOP and NOP + 1. */
  static inline void
*************** multiple_insn_refs_p (int regno)
*** 4293,4298 ****
--- 4293,4314 ----
    return false;
  }
  
+ /* Mark insns starting with FIRST as postponed for processing their
+    constraints.  See comments for lra_postponed_insns.  */
+ static void
+ postpone_insns (rtx_insn *first)
+ {
+   for (auto insn = first; insn != NULL_RTX; insn = NEXT_INSN (insn))
+     {
+       bitmap_set_bit (&lra_postponed_insns, INSN_UID (insn));
+       if (lra_dump_file != NULL)
+ 	{
+ 	  fprintf (lra_dump_file, "    Postponing constraint processing: ");
+ 	  dump_insn_slim (lra_dump_file, insn);
+ 	}
+     }
+ }
+ 
  /* Main entry point of the constraint code: search the body of the
     current insn to choose the best alternative.  It is mimicking insn
     alternative cost calculation model of former reload pass.  That is
*************** curr_insn_transform (bool check_only_p)
*** 4386,4396 ****
  	  continue;
  
  	old = op = *curr_id->operand_loc[i];
  	if (GET_CODE (old) == SUBREG)
! 	  old = SUBREG_REG (old);
  	subst = get_equiv_with_elimination (old, curr_insn);
  	original_subreg_reg_mode[i] = VOIDmode;
  	equiv_substition_p[i] = false;
  	if (subst != old)
  	  {
  	    equiv_substition_p[i] = true;
--- 4402,4424 ----
  	  continue;
  
  	old = op = *curr_id->operand_loc[i];
+ 	machine_mode outer_mode = GET_MODE (old);
+ 	bool subreg_p = false;
  	if (GET_CODE (old) == SUBREG)
! 	  {
! 	    old = SUBREG_REG (old);
! 	    subreg_p = true;
! 	  }
  	subst = get_equiv_with_elimination (old, curr_insn);
  	original_subreg_reg_mode[i] = VOIDmode;
  	equiv_substition_p[i] = false;
+ 
+ 	/* If we are about to replace a register inside a subreg, check if
+ 	   the target can handle that.  */
+ 	if (subreg_p && REG_P (subst) && HARD_REGISTER_P (subst)
+ 	    && !targetm.hard_regno_mode_ok (REGNO (subst), outer_mode))
+ 	  continue;
+ 
  	if (subst != old)
  	  {
  	    equiv_substition_p[i] = true;
*************** curr_insn_transform (bool check_only_p)
*** 4442,4450 ****
         we chose previously may no longer be valid.  */
      lra_set_used_insn_alternative (curr_insn, LRA_UNKNOWN_ALT);
  
!   if (! check_only_p && curr_insn_set != NULL_RTX
!       && check_and_process_move (&change_p, &sec_mem_p))
!     return change_p;
  
   try_swapped:
  
--- 4470,4486 ----
         we chose previously may no longer be valid.  */
      lra_set_used_insn_alternative (curr_insn, LRA_UNKNOWN_ALT);
  
!   if (! check_only_p)
!     {
!       if (bitmap_bit_p (&lra_postponed_insns, INSN_UID (curr_insn)))
! 	/* Processing insn constraints were postponed.  Do nothing, the insn
! 	   will be processed on the next constraint sub-pass after assignment
! 	   of reload pseudos in the insn.  */
! 	return true;
!       if (curr_insn_set != NULL_RTX
! 	  && check_and_process_move (&change_p, &sec_mem_p))
! 	return change_p;
!     }
  
   try_swapped:
  
*************** curr_insn_transform (bool check_only_p)
*** 5092,5097 ****
--- 5128,5141 ----
  	  const_insn = prev;
  	}
      }
+   if (asm_noperands (PATTERN (curr_insn)) >= 0)
+     {
+       /* Asm can have a lot of operands.  To guarantee their assignment,
+ 	 postpone processing the reload insns until the reload pseudos are
+ 	 assigned.  */
+       postpone_insns (before);
+       postpone_insns (after);
+     }
    lra_process_new_insns (curr_insn, before, after,
  			 "Inserting insn reload", true);
    if (const_regno >= 0) {
diff -Nrcpad gcc-16-20260301/gcc/lra-int.h gcc-16-20260308/gcc/lra-int.h
*** gcc-16-20260301/gcc/lra-int.h	Sun Mar  1 22:32:07 2026
--- gcc-16-20260308/gcc/lra-int.h	Sun Mar  8 22:32:06 2026
*************** extern bitmap_head lra_inheritance_pseud
*** 356,361 ****
--- 356,362 ----
  extern bitmap_head lra_split_regs;
  extern bitmap_head lra_subreg_reload_pseudos;
  extern bitmap_head lra_optional_reload_pseudos;
+ extern bitmap_head lra_postponed_insns;
  
  /* lra-constraints.cc: */
  
diff -Nrcpad gcc-16-20260301/gcc/lra.cc gcc-16-20260308/gcc/lra.cc
*** gcc-16-20260301/gcc/lra.cc	Sun Mar  1 22:32:07 2026
--- gcc-16-20260308/gcc/lra.cc	Sun Mar  8 22:32:06 2026
*************** lra_invalidate_insn_data (rtx_insn *insn
*** 260,265 ****
--- 260,266 ----
  void
  lra_set_insn_deleted (rtx_insn *insn)
  {
+   bitmap_clear_bit (&lra_postponed_insns, INSN_UID (insn));
    lra_invalidate_insn_data (insn);
    SET_INSN_DELETED (insn);
  }
*************** lra_asm_insn_error (rtx_insn *insn)
*** 559,564 ****
--- 560,566 ----
      {
        ira_nullify_asm_goto (insn);
        lra_invalidate_insn_data (insn);
+       bitmap_clear_bit (&lra_postponed_insns, INSN_UID (insn));
      }
    else
      {
*************** lra_process_new_insns (rtx_insn *insn, r
*** 2014,2020 ****
  	      {
  		/* We already made the edge no-critical in ira.cc::ira */
  		lra_assert (!EDGE_CRITICAL_P (e));
! 		rtx_insn *curr, *tmp = BB_HEAD (e->dest);
  		if (LABEL_P (tmp))
  		  tmp = NEXT_INSN (tmp);
  		if (NOTE_INSN_BASIC_BLOCK_P (tmp))
--- 2016,2022 ----
  	      {
  		/* We already made the edge no-critical in ira.cc::ira */
  		lra_assert (!EDGE_CRITICAL_P (e));
! 		rtx_insn *tmp = BB_HEAD (e->dest);
  		if (LABEL_P (tmp))
  		  tmp = NEXT_INSN (tmp);
  		if (NOTE_INSN_BASIC_BLOCK_P (tmp))
*************** lra_process_new_insns (rtx_insn *insn, r
*** 2024,2031 ****
  		if (tmp == NULL)
  		  continue;
  		start_sequence ();
! 		for (curr = after; curr != NULL_RTX; curr = NEXT_INSN (curr))
! 		  emit_insn (copy_insn (PATTERN (curr)));
  		rtx_insn *copy = get_insns (), *last = get_last_insn ();
  		end_sequence ();
  		if (lra_dump_file != NULL)
--- 2026,2039 ----
  		if (tmp == NULL)
  		  continue;
  		start_sequence ();
! 		for (rtx_insn *curr = after; curr != NULL_RTX; curr = NEXT_INSN (curr))
! 		  {
! 		    rtx pat = copy_insn (PATTERN (curr));
! 		    rtx_insn *copy = emit_insn (pat);
! 		    if (bitmap_bit_p (&lra_postponed_insns, INSN_UID (curr)))
! 		      /* Propagate flags of postponed insns.  */
! 		      bitmap_set_bit (&lra_postponed_insns, INSN_UID (copy));
! 		  }
  		rtx_insn *copy = get_insns (), *last = get_last_insn ();
  		end_sequence ();
  		if (lra_dump_file != NULL)
*************** lra_process_new_insns (rtx_insn *insn, r
*** 2045,2050 ****
--- 2053,2062 ----
  		   will be updated before the next assignment
  		   sub-pass. */
  	      }
+ 	  for (rtx_insn *curr = after; curr != NULL_RTX; curr = NEXT_INSN (curr))
+ 	    /* Clear flags of postponed insns which will be absent in the
+ 	       result code.  */
+ 	    bitmap_clear_bit (&lra_postponed_insns, INSN_UID (curr));
  	}
      }
    if (lra_dump_file != NULL)
*************** bitmap_head lra_optional_reload_pseudos;
*** 2354,2359 ****
--- 2366,2379 ----
     pass.  */
  bitmap_head lra_subreg_reload_pseudos;
  
+ /* UIDs of reload insns which should be processed after assigning the reload
+    pseudos.  We need to do this when reload pseudo should be a general reg but
+    we have different mov insns for different subsets of general regs, e.g. hi
+    and lo regs of arm thumb.  Such way we can guarantee finding regs for the
+    reload pseudos of asm insn which can have a lot of operands (general regs in
+    our example).  */
+ bitmap_head lra_postponed_insns;
+ 
  /* File used for output of LRA debug information.  */
  FILE *lra_dump_file;
  
*************** lra (FILE *f, int verbose)
*** 2469,2474 ****
--- 2489,2495 ----
    bitmap_initialize (&lra_split_regs, &reg_obstack);
    bitmap_initialize (&lra_optional_reload_pseudos, &reg_obstack);
    bitmap_initialize (&lra_subreg_reload_pseudos, &reg_obstack);
+   bitmap_initialize (&lra_postponed_insns, &reg_obstack);
    live_p = false;
    if (maybe_ne (get_frame_size (), 0) && crtl->stack_alignment_needed)
      /* If we have a stack frame, we must align it now.  The stack size
*************** lra (FILE *f, int verbose)
*** 2575,2580 ****
--- 2596,2606 ----
  	    lra_create_live_ranges (true, true);
  	    live_p = true;
  	  }
+ 	  bitmap_iterator bi;
+ 	  unsigned int uid;
+ 	  EXECUTE_IF_SET_IN_BITMAP (&lra_postponed_insns, 0, uid, bi)
+ 	    lra_push_insn_by_uid (uid);
+ 	  bitmap_clear (&lra_postponed_insns);
  	}
        /* Don't clear optional reloads bitmap until all constraints are
  	 satisfied as we need to differ them from regular reloads.  */
diff -Nrcpad gcc-16-20260301/gcc/match.pd gcc-16-20260308/gcc/match.pd
*** gcc-16-20260301/gcc/match.pd	Sun Mar  1 22:32:07 2026
--- gcc-16-20260308/gcc/match.pd	Sun Mar  8 22:32:06 2026
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 3136,3142 ****
  #if GENERIC
  (simplify
    (pointer_plus (convert:s (pointer_plus:s @0 @1)) @3)
!   (convert:type (pointer_plus @0 (plus @1 @3))))
  #endif
  
  /* Pattern match
--- 3136,3142 ----
  #if GENERIC
  (simplify
    (pointer_plus (convert:s (pointer_plus:s @0 @1)) @3)
!   (pointer_plus (convert:type @0) (plus @1 @3)))
  #endif
  
  /* Pattern match
diff -Nrcpad gcc-16-20260301/gcc/po/ChangeLog gcc-16-20260308/gcc/po/ChangeLog
*** gcc-16-20260301/gcc/po/ChangeLog	Sun Mar  1 22:32:07 2026
--- gcc-16-20260308/gcc/po/ChangeLog	Sun Mar  8 22:32:06 2026
***************
*** 1,3 ****
--- 1,17 ----
+ 2026-03-06  Joseph Myers  <josmyers@redhat.com>
+ 
+ 	* fr.po: Update.
+ 
+ 2026-03-02  Joseph Myers  <josmyers@redhat.com>
+ 
+ 	* sv.po: Update.
+ 
+ 2026-02-27  Joseph Myers  <josmyers@redhat.com>
+ 
+ 	* be.po, da.po, de.po, el.po, es.po, fi.po, fr.po, hr.po, id.po,
+ 	ja.po, ka.po, nl.po, ru.po, sr.po, sv.po, tr.po, uk.po, vi.po,
+ 	zh_CN.po, zh_TW.po: Update.
+ 
  2026-02-19  Joseph Myers  <josmyers@redhat.com>
  
  	* gcc.pot: Regenerate.
diff -Nrcpad gcc-16-20260301/gcc/po/fr.po gcc-16-20260308/gcc/po/fr.po
*** gcc-16-20260301/gcc/po/fr.po	Sun Mar  1 22:32:07 2026
--- gcc-16-20260308/gcc/po/fr.po	Sun Mar  8 22:32:07 2026
***************
*** 1,12 ****
  # This file is distributed under the same license as the gcc package.
  #
  # Messages français pour GNU concernant gcc.
! # Copyright © 2025 Free Software Foundation, Inc.
  #
  # Michel Robitaille <robitail@IRO.UMontreal.CA>, traducteur depuis/since 1996.
  # François-Xavier Coudert <fxcoudert@gmail.com>, 2008.
  # Stéphane Aulery <lkppo@free.fr>, 2015, 2016.
! # Frédéric Marchal <fmarchal@perso.be>, 2025.
  #
  # Vocabulaire utilisé
  #   lvalue            = l-valeur
--- 1,12 ----
  # This file is distributed under the same license as the gcc package.
  #
  # Messages français pour GNU concernant gcc.
! # Copyright © 2026 Free Software Foundation, Inc.
  #
  # Michel Robitaille <robitail@IRO.UMontreal.CA>, traducteur depuis/since 1996.
  # François-Xavier Coudert <fxcoudert@gmail.com>, 2008.
  # Stéphane Aulery <lkppo@free.fr>, 2015, 2016.
! # Frédéric Marchal <fmarchal@perso.be>, 2026.
  #
  # Vocabulaire utilisé
  #   lvalue            = l-valeur
***************
*** 97,106 ****
  #
  msgid ""
  msgstr ""
! "Project-Id-Version: gcc-15.2.0\n"
  "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n"
  "POT-Creation-Date: 2026-02-19 21:05+0000\n"
! "PO-Revision-Date: 2025-08-09 16:51+0200\n"
  "Last-Translator: Frédéric Marchal <fmarchal@perso.be>\n"
  "Language-Team: French <traduc@traduc.org>\n"
  "Language: fr\n"
--- 97,106 ----
  #
  msgid ""
  msgstr ""
! "Project-Id-Version: gcc-16.1-b20260222\n"
  "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n"
  "POT-Creation-Date: 2026-02-19 21:05+0000\n"
! "PO-Revision-Date: 2026-03-06 19:55+0100\n"
  "Last-Translator: Frédéric Marchal <fmarchal@perso.be>\n"
  "Language-Team: French <traduc@traduc.org>\n"
  "Language: fr\n"
*************** msgid "function has external linkage whe
*** 219,238 ****
  msgstr "la fonction a un lien externe alors que l'utilisateur demande uniquement la mise en ligne statique pour la correction à chaud"
  
  #: cif-code.def:145
- #, fuzzy
- #| msgid "errors during merging of translation units"
  msgid "callee must remain in translation unit"
! msgstr "erreurs durant la fusion des unités de traductions"
  
  #: cif-code.def:149
  msgid "unreachable"
  msgstr "inatteignable"
  
  #: cif-code.def:154
- #, fuzzy
- #| msgid "caller edge count invalid"
  msgid "callback edges cannot be inlined"
! msgstr "le nombre d'arêtes de l'appelant est invalide"
  
  #: config/i386/djgpp.h:143
  #, c-format
--- 219,234 ----
  msgstr "la fonction a un lien externe alors que l'utilisateur demande uniquement la mise en ligne statique pour la correction à chaud"
  
  #: cif-code.def:145
  msgid "callee must remain in translation unit"
! msgstr "l'appelant doit rester dans l'unité de traductions"
  
  #: cif-code.def:149
  msgid "unreachable"
  msgstr "inatteignable"
  
  #: cif-code.def:154
  msgid "callback edges cannot be inlined"
! msgstr "les arêtes de la fonction d'appel ne peuvent pas être mise en ligne"
  
  #: config/i386/djgpp.h:143
  #, c-format
*************** msgid "does not support multilib"
*** 353,362 ****
  msgstr "ne supporte pas multilib"
  
  #: config/sol2.h:362 config/sol2.h:371
- #, fuzzy
- #| msgid "-gz is not supported in this configuration"
  msgid "-gsctf is not supported in this configuration"
! msgstr "-gz n'est pas supporté par cette configuration"
  
  #: config/vxworks.h:236
  msgid "-Xbind-now and -Xbind-lazy are incompatible"
--- 349,356 ----
  msgstr "ne supporte pas multilib"
  
  #: config/sol2.h:362 config/sol2.h:371
  msgid "-gsctf is not supported in this configuration"
! msgstr "-gsctf n'est pas supporté par cette configuration"
  
  #: config/vxworks.h:236
  msgid "-Xbind-now and -Xbind-lazy are incompatible"
*************** msgstr " support pour le profilage sont
*** 436,448 ****
  
  #: config/riscv/riscv.h:127
  msgid "At least one valid -mcpu option must be given after -march=unset"
! msgstr ""
  
  #: config/rs6000/aix.h:286
- #, fuzzy
- #| msgid "%<-fstack-protector%> not supported for this target"
  msgid "stack-protector not supported on AIX"
! msgstr "%<-fstack-protector%> n'est pas supporté pour cette cible"
  
  #: config/rs6000/darwin.h:126
  msgid " conflicting code gen style switches are used"
--- 430,440 ----
  
  #: config/riscv/riscv.h:127
  msgid "At least one valid -mcpu option must be given after -march=unset"
! msgstr "Au moins une option -mcpu valide doit être donnée après -march=unset"
  
  #: config/rs6000/aix.h:286
  msgid "stack-protector not supported on AIX"
! msgstr "fstack-protector n'est pas supporté sur AIX"
  
  #: config/rs6000/darwin.h:126
  msgid " conflicting code gen style switches are used"
*************** msgid "Specify an OS support library to
*** 623,644 ****
  msgstr ""
  
  #: config/picolibc.opt:33
! #, fuzzy, no-c-format
! #| msgid "Specify the name of the target CPU."
  msgid "Specify an alternate startup file."
! msgstr "Spécifier le nom du processeur cible."
  
  #: config/picolibc.opt:40
! #, fuzzy, no-c-format
! #| msgid "Specify the PTX ISA version to use."
  msgid "Specify the printf version linked from libc."
! msgstr "Spécifier la version de la version PTX ISA à utiliser."
  
  #: config/picolibc.opt:47
! #, fuzzy, no-c-format
! #| msgid "Specify the PTX ISA version to use."
  msgid "Specify the scanf version linked from libc."
! msgstr "Spécifier la version de la version PTX ISA à utiliser."
  
  #: config/nds32/nds32-elf.opt:3 config/nds32/nds32-linux.opt:3
  #, no-c-format
--- 615,633 ----
  msgstr ""
  
  #: config/picolibc.opt:33
! #, no-c-format
  msgid "Specify an alternate startup file."
! msgstr "Spécifier le nom du fichier de démarrage alternatif."
  
  #: config/picolibc.opt:40
! #, no-c-format
  msgid "Specify the printf version linked from libc."
! msgstr "Spécifier la version de printf liée depuis libc."
  
  #: config/picolibc.opt:47
! #, no-c-format
  msgid "Specify the scanf version linked from libc."
! msgstr "Spécifier la version de scanf liée depuis libc."
  
  #: config/nds32/nds32-elf.opt:3 config/nds32/nds32-linux.opt:3
  #, no-c-format
*************** msgid "Known ABIs (for use with the -mab
*** 681,696 ****
  msgstr "ABI connues (à utiliser avec l'option -mabi=):"
  
  #: config/nds32/nds32.opt:61
! #, fuzzy, no-c-format
! #| msgid "Specify use soft floating point ABI which mean alias to -mabi=2."
  msgid "Specify the soft floating-point ABI, aliased to -mabi=2."
! msgstr "Spécifier l'utilisation de l'ABI en virgule flottante logicielle ce qui est synonyme de -mabi=2."
  
  #: config/nds32/nds32.opt:65
! #, fuzzy, no-c-format
! #| msgid "Specify use soft floating point ABI which mean alias to -mabi=2fp+."
  msgid "Specify the hard floating-point ABI, aliased to -mabi=2fp+."
! msgstr "Spécifier l'utilisation de l'ABI en virgule flottante logicielle ce qui est synonyme de -mabi=2fp+."
  
  #: config/nds32/nds32.opt:71
  #, no-c-format
--- 670,683 ----
  msgstr "ABI connues (à utiliser avec l'option -mabi=):"
  
  #: config/nds32/nds32.opt:61
! #, no-c-format
  msgid "Specify the soft floating-point ABI, aliased to -mabi=2."
! msgstr "Spécifier l'ABI en virgule flottante logicielle, est un synonyme de -mabi=2."
  
  #: config/nds32/nds32.opt:65
! #, no-c-format
  msgid "Specify the hard floating-point ABI, aliased to -mabi=2fp+."
! msgstr "Spécifier l'ABI en virgule flottante matérielle, est un synonyme de -mabi=2fp+."
  
  #: config/nds32/nds32.opt:71
  #, no-c-format
*************** msgid "Always align function entry, jump
*** 708,715 ****
  msgstr "Toujours aligner l'entrée de la fonction, la cible du saut et l'adresse de retour."
  
  #: config/nds32/nds32.opt:85
! #, fuzzy, no-c-format
! #| msgid "Align function entry to 4 byte."
  msgid "Align function entry to 4 bytes."
  msgstr "Aligner l'entrée d'une fonction sur 4 octets."
  
--- 695,701 ----
  msgstr "Toujours aligner l'entrée de la fonction, la cible du saut et l'adresse de retour."
  
  #: config/nds32/nds32.opt:85
! #, no-c-format
  msgid "Align function entry to 4 bytes."
  msgstr "Aligner l'entrée d'une fonction sur 4 octets."
  
*************** msgid "Known cpu types (for use with the
*** 820,829 ****
  msgstr "Types de processeurs connus (à utiliser avec l'option -mcpu=):"
  
  #: config/nds32/nds32.opt:361
! #, fuzzy, no-c-format
! #| msgid "Specify a fpu configuration value from 0 to 7; 0-3 is as FPU spec says, and 4-7 is corresponding to 0-3."
  msgid "Specify a FPU configuration value from 0 to 7; 0-3 is as FPU spec says, and 4-7 correspond to 0-3."
! msgstr "Spécifie une valeur de configuration fpu entre 0 et 7: 0-3 respecte la spec du FPU et 4-7 correspondent à 0-3."
  
  #: config/nds32/nds32.opt:365
  #, no-c-format
--- 806,814 ----
  msgstr "Types de processeurs connus (à utiliser avec l'option -mcpu=):"
  
  #: config/nds32/nds32.opt:361
! #, no-c-format
  msgid "Specify a FPU configuration value from 0 to 7; 0-3 is as FPU spec says, and 4-7 correspond to 0-3."
! msgstr "Spécifie une valeur de configuration FPU entre 0 et 7: 0-3 respecte la spec du FPU et 4-7 correspondent à 0-3."
  
  #: config/nds32/nds32.opt:365
  #, no-c-format
*************** msgid "Generate call insns as register i
*** 1029,1038 ****
  msgstr "Générer des insns d'appels comme appels indirects aux registres."
  
  #: config/arc/arc.opt:188
! #, fuzzy, no-c-format
! #| msgid "Do no generate BRcc instructions in arc_reorg."
  msgid "Generate BRcc instructions in arc_reorg."
! msgstr "Ne pas générer des instructions BRcc dans arc_reorg."
  
  #: config/arc/arc.opt:192
  #, no-c-format
--- 1014,1022 ----
  msgstr "Générer des insns d'appels comme appels indirects aux registres."
  
  #: config/arc/arc.opt:188
! #, no-c-format
  msgid "Generate BRcc instructions in arc_reorg."
! msgstr "Générer des instructions BRcc dans arc_reorg."
  
  #: config/arc/arc.opt:192
  #, no-c-format
*************** msgid "FPX: Generate Double Precision FP
*** 1070,1079 ****
  msgstr "FPX: Générer des instructions FPX (rapide) en double précision."
  
  #: config/arc/arc.opt:229
! #, fuzzy, no-c-format
! #| msgid "Disable LR and SR instructions from using FPX extension aux registers."
  msgid "Enable LR and SR instructions to use FPX extension aux registers."
! msgstr "Empêcher les instructions LR et SR d'utiliser les registres « aux » de l'extension FPX."
  
  #: config/arc/arc.opt:233
  #, no-c-format
--- 1054,1062 ----
  msgstr "FPX: Générer des instructions FPX (rapide) en double précision."
  
  #: config/arc/arc.opt:229
! #, no-c-format
  msgid "Enable LR and SR instructions to use FPX extension aux registers."
! msgstr "Autoriser les instructions LR et SR à utiliser les registres « aux » de l'extension FPX."
  
  #: config/arc/arc.opt:233
  #, no-c-format
*************** msgid "Put uninitialized constants in RO
*** 1406,1415 ****
  msgstr "Placer les constantes non initialisées dans la ROM (a besoin de -membedded-data)."
  
  #: config/sol2.opt:32
! #, fuzzy, no-c-format
! #| msgid "Generate SH4a code."
  msgid "Generate Solaris CTF."
! msgstr "Générer du code SH4a."
  
  #: config/sol2.opt:36
  #, no-c-format
--- 1389,1397 ----
  msgstr "Placer les constantes non initialisées dans la ROM (a besoin de -membedded-data)."
  
  #: config/sol2.opt:32
! #, no-c-format
  msgid "Generate Solaris CTF."
! msgstr "Générer du code Solaris CTF."
  
  #: config/sol2.opt:36
  #, no-c-format
*************** msgid "Specify stringop expansion strate
*** 2873,2894 ****
  msgstr "Spécifier la stratégie d'expansion de stringop."
  
  #: config/riscv/riscv.opt:381
! #, fuzzy, no-c-format
! #| msgid "Constant memcpy size in bytes above which to start using MOPS sequence."
  msgid "Constant memcpy size in bytes above which to start using libcalls over inlining."
! msgstr "Taille de memcpy constante en octets au delà de laquelle commencer à utiliser une séquence MOPS."
  
  #: config/riscv/riscv.opt:385
! #, fuzzy, no-c-format
! #| msgid "Constant memmove size in bytes above which to start using MOPS sequence."
  msgid "Constant memmove size in bytes above which to start using libcalls over inlining."
! msgstr "Taille de memmove constante en octets au delà de laquelle commencer à utiliser une séquence MOPS."
  
  #: config/riscv/riscv.opt:389
! #, fuzzy, no-c-format
! #| msgid "Constant memmove size in bytes above which to start using MOPS sequence."
  msgid "Constant memset size in bytes above which to start using libcalls over inlining."
! msgstr "Taille de memmove constante en octets au delà de laquelle commencer à utiliser une séquence MOPS."
  
  #: config/riscv/riscv.opt:393
  #, no-c-format
--- 2855,2873 ----
  msgstr "Spécifier la stratégie d'expansion de stringop."
  
  #: config/riscv/riscv.opt:381
! #, no-c-format
  msgid "Constant memcpy size in bytes above which to start using libcalls over inlining."
! msgstr "Taille de memcpy constante en octets au delà de laquelle commencer à utiliser des appels de bibliothèque au lieu de la mise en ligne."
  
  #: config/riscv/riscv.opt:385
! #, no-c-format
  msgid "Constant memmove size in bytes above which to start using libcalls over inlining."
! msgstr "Taille de memmove constante en octets au delà de laquelle commencer à utiliser des appels de bibliothèque au lieu de la mise en ligne."
  
  #: config/riscv/riscv.opt:389
! #, no-c-format
  msgid "Constant memset size in bytes above which to start using libcalls over inlining."
! msgstr "Taille de memset constante en octets au delà de laquelle commencer à utiliser des appels de bibliothèque au lieu de la mise en ligne."
  
  #: config/riscv/riscv.opt:393
  #, no-c-format
*************** msgid "Align code and data to 32 bits."
*** 3527,3536 ****
  msgstr "Aligner le code et les données sur 32 bits."
  
  #: config/cris/cris.opt:122 config/cris/cris.opt:127
! #, fuzzy, no-c-format
! #| msgid "Align code and data to 32 bits."
  msgid "Align code and data to 16 bits."
! msgstr "Aligner le code et les données sur 32 bits."
  
  #: config/cris/cris.opt:132 config/cris/cris.opt:137
  #, no-c-format
--- 3506,3514 ----
  msgstr "Aligner le code et les données sur 32 bits."
  
  #: config/cris/cris.opt:122 config/cris/cris.opt:127
! #, no-c-format
  msgid "Align code and data to 16 bits."
! msgstr "Aligner le code et les données sur 16 bits."
  
  #: config/cris/cris.opt:132 config/cris/cris.opt:137
  #, no-c-format
*************** msgid "Generate vzeroupper instruction b
*** 4478,4487 ****
  msgstr "Générer l'instruction vzeroupper avant un transfert du flux de contrôle hors d'une fonction."
  
  #: config/i386/i386.opt:610
! #, fuzzy, no-c-format
! #| msgid "Disable Scalar to Vector optimization pass transforming 64-bit integer computations into a vector ones."
  msgid "Enable Scalar to Vector optimization pass transforming 64-bit integer computations into vector ones."
! msgstr "Désactiver l'étape d'optimisation de scalaires en vecteurs qui transforme les calculs sur des entiers de 64 bits en calculs sur des vecteurs."
  
  #: config/i386/i386.opt:615
  #, no-c-format
--- 4456,4464 ----
  msgstr "Générer l'instruction vzeroupper avant un transfert du flux de contrôle hors d'une fonction."
  
  #: config/i386/i386.opt:610
! #, no-c-format
  msgid "Enable Scalar to Vector optimization pass transforming 64-bit integer computations into vector ones."
! msgstr "Activer l'étape d'optimisation de scalaires en vecteurs qui transforme les calculs sur des entiers de 64 bits en calculs sur des vecteurs."
  
  #: config/i386/i386.opt:615
  #, no-c-format
*************** msgid "Support MMX, SSE, SSE2, SSE3, SSS
*** 4604,4643 ****
  msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 et AVX512F et la génération de code."
  
  #: config/i386/i386.opt:737
! #, fuzzy, no-c-format
! #| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512CD built-in functions and code generation."
  msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512CD built-in functions and code generation."
  msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F et AVX512CD et la génération de code."
  
  #: config/i386/i386.opt:741
! #, fuzzy, no-c-format
! #| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512DQ built-in functions and code generation."
  msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512DQ built-in functions and code generation."
  msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F et AVX512DQ et la génération de code."
  
  #: config/i386/i386.opt:745
! #, fuzzy, no-c-format
! #| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512BF16 built-in functions and code generation."
  msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512BW built-in functions and code generation."
! msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F et AVX512BF16 et la génération de code."
  
  #: config/i386/i386.opt:749
! #, fuzzy, no-c-format
! #| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512VL built-in functions and code generation."
  msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512VL built-in functions and code generation."
  msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F et AVX512VL et la génération de code."
  
  #: config/i386/i386.opt:753
! #, fuzzy, no-c-format
! #| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX5124FMAPS built-in functions and code generation."
  msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512IFMA built-in functions and code generation."
! msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F et AVX5124FMAPS et la génération de code."
  
  #: config/i386/i386.opt:757
! #, fuzzy, no-c-format
! #| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512VBMI2 built-in functions and code generation."
  msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512VBMI built-in functions and code generation."
! msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F et AVX512VBMI2 et la génération de code."
  
  #: config/i386/i386.opt:761
  #, no-c-format
--- 4581,4614 ----
  msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 et AVX512F et la génération de code."
  
  #: config/i386/i386.opt:737
! #, no-c-format
  msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512CD built-in functions and code generation."
  msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F et AVX512CD et la génération de code."
  
  #: config/i386/i386.opt:741
! #, no-c-format
  msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512DQ built-in functions and code generation."
  msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F et AVX512DQ et la génération de code."
  
  #: config/i386/i386.opt:745
! #, no-c-format
  msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512BW built-in functions and code generation."
! msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F et AVX512BW et la génération de code."
  
  #: config/i386/i386.opt:749
! #, no-c-format
  msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512VL built-in functions and code generation."
  msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F et AVX512VL et la génération de code."
  
  #: config/i386/i386.opt:753
! #, no-c-format
  msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512IFMA built-in functions and code generation."
! msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F et AVX512IFMA et la génération de code."
  
  #: config/i386/i386.opt:757
! #, no-c-format
  msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512VBMI built-in functions and code generation."
! msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F et AVX512VBMI et la génération de code."
  
  #: config/i386/i386.opt:761
  #, no-c-format
*************** msgid "Support MMX, SSE, SSE2, SSE3, SSS
*** 5253,5262 ****
  msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX10.1 et ACX10.2 et la génération de code."
  
  #: config/i386/i386.opt:1370
! #, fuzzy, no-c-format
! #| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX10.1-512, AVX10.2 and AMX-AVX512 built-in functions and code generation."
  msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX10.1, AVX10.2 and AMX-AVX512 built-in functions and code generation."
! msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX10.1-512, AVX10.2 et AMX-AVX512 et la génération de code."
  
  #: config/i386/i386.opt:1375
  #, no-c-format
--- 5224,5232 ----
  msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX10.1 et ACX10.2 et la génération de code."
  
  #: config/i386/i386.opt:1370
! #, no-c-format
  msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX10.1, AVX10.2 and AMX-AVX512 built-in functions and code generation."
! msgstr "Supporter les fonctions internes MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX10.1, AVX10.2 et AMX-AVX512 et la génération de code."
  
  #: config/i386/i386.opt:1375
  #, no-c-format
*************** msgid "Support AMX-MOVRS built-in functi
*** 5279,5288 ****
  msgstr "Supporter les fonctions internes AMX-MOVRS et la génération de code."
  
  #: config/i386/i386.opt:1391
! #, fuzzy, no-c-format
! #| msgid "Support AVX512VNNI built-in functions and code generation."
  msgid "Support AVX512BMM built-in functions and code generation."
! msgstr "Supporter les fonctions internes AVX512VNNI et la génération de code."
  
  #: config/i386/mingw-w64.opt:23
  #, no-c-format
--- 5249,5257 ----
  msgstr "Supporter les fonctions internes AMX-MOVRS et la génération de code."
  
  #: config/i386/i386.opt:1391
! #, no-c-format
  msgid "Support AVX512BMM built-in functions and code generation."
! msgstr "Supporter les fonctions internes AVX512BMM et la génération de code."
  
  #: config/i386/mingw-w64.opt:23
  #, no-c-format
*************** msgid "Generate APCS conformant stack fr
*** 5330,5339 ****
  msgstr "Générer des trames de pile conformes à APCS."
  
  #: config/arm/arm.opt:76
! #, fuzzy, no-c-format
! #| msgid "Generate re-entrant, PIC code."
  msgid "Unimplemented option to generate re-entrant, PIC code."
! msgstr "Générer du code PIC ré-entrant."
  
  #: config/arm/arm.opt:80
  #, no-c-format
--- 5299,5307 ----
  msgstr "Générer des trames de pile conformes à APCS."
  
  #: config/arm/arm.opt:76
! #, no-c-format
  msgid "Unimplemented option to generate re-entrant, PIC code."
! msgstr "Option non implémentée pour générer du code PIC ré-entrant."
  
  #: config/arm/arm.opt:80
  #, no-c-format
*************** msgid "Allow (or do not allow) gcc to us
*** 5624,5639 ****
  msgstr "Autoriser (ou ne pas autoriser) gcc à utiliser l'instruction LOOP."
  
  #: config/pru/pru.opt:44
! #, fuzzy, no-c-format
! #| msgid "Allow (or do not allow) gcc to use the LOOP instruction."
  msgid "Allow (or do not allow) gcc to use the PRU multiplier unit."
! msgstr "Autoriser (ou ne pas autoriser) gcc à utiliser l'instruction LOOP."
  
  #: config/pru/pru.opt:48
! #, fuzzy, no-c-format
! #| msgid "Allow (or do not allow) gcc to use the LOOP instruction."
  msgid "Allow (or do not allow) gcc to use the FILL and ZERO instructions."
! msgstr "Autoriser (ou ne pas autoriser) gcc à utiliser l'instruction LOOP."
  
  #: config/pru/pru.opt:52
  #, no-c-format
--- 5592,5605 ----
  msgstr "Autoriser (ou ne pas autoriser) gcc à utiliser l'instruction LOOP."
  
  #: config/pru/pru.opt:44
! #, no-c-format
  msgid "Allow (or do not allow) gcc to use the PRU multiplier unit."
! msgstr "Autoriser (ou ne pas autoriser) gcc à utiliser l'unité de multiplication PRU."
  
  #: config/pru/pru.opt:48
! #, no-c-format
  msgid "Allow (or do not allow) gcc to use the FILL and ZERO instructions."
! msgstr "Autoriser (ou ne pas autoriser) gcc à utiliser les instructions FILL et ZERO."
  
  #: config/pru/pru.opt:52
  #, no-c-format
*************** msgid "-msve-vector-bits=<number>\tSet t
*** 5952,5961 ****
  msgstr "-msve-vector-bits=<nombre>\tFixe le nombre de bits dans le registre vectoriel SVE."
  
  #: config/aarch64/aarch64.opt:308
! #, fuzzy, 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."
  msgid "-mautovec-preference=[default|asimd-only|sve-only|prefer-asimd|prefer-sve] Force an ISA selection strategy for auto-vectorization.  For best performance it is highly recommended to use -mcpu or -mtune instead.  This parameter should only be used for code exploration."
! msgstr "--param=aarch64-autovec-preference=[default|asimd-only|sve-only|prefer-asimd|prefer-sve] Forcer une stratégie de sélection ISA pour l'auto vectorisation."
  
  #: config/aarch64/aarch64.opt:319
  #, no-c-format
--- 5918,5926 ----
  msgstr "-msve-vector-bits=<nombre>\tFixe le nombre de bits dans le registre vectoriel SVE."
  
  #: config/aarch64/aarch64.opt:308
! #, no-c-format
  msgid "-mautovec-preference=[default|asimd-only|sve-only|prefer-asimd|prefer-sve] Force an ISA selection strategy for auto-vectorization.  For best performance it is highly recommended to use -mcpu or -mtune instead.  This parameter should only be used for code exploration."
! msgstr "-mautovec-preference=[default|asimd-only|sve-only|prefer-asimd|prefer-sve] Forcer une stratégie de sélection ISA pour l'auto vectorisation. Pour une meilleure performance, il est fortement recommandé d'utiliser -mcpu ou -mtune. Ce paramètre ne devrait être utilisé que pour explorer du code."
  
  #: config/aarch64/aarch64.opt:319
  #, no-c-format
*************** msgid "Param to control the treshold in
*** 6053,6062 ****
  msgstr ""
  
  #: config/aarch64/aarch64.opt:466
! #, fuzzy, no-c-format
! #| msgid "This option is deprecated and has no effect."
  msgid "This option is deprecated."
! msgstr "Cette option est obsolète et n'a pas d'effet."
  
  #: config/vms/vms.opt:27
  #, no-c-format
--- 6018,6026 ----
  msgstr ""
  
  #: config/aarch64/aarch64.opt:466
! #, no-c-format
  msgid "This option is deprecated."
! msgstr "Cette option est obsolète."
  
  #: config/vms/vms.opt:27
  #, no-c-format
*************** msgid "Do not use the callt instruction
*** 6209,6228 ****
  msgstr "Ne pas utiliser l'instruction callt (par défaut)."
  
  #: config/v850/v850.opt:45
! #, fuzzy, no-c-format
! #| msgid "Reuse r30 on a per function basis."
  msgid "Reuse r30 on a per-function basis."
  msgstr "Réutiliser r30 à chaque fonction."
  
  #: config/v850/v850.opt:49
! #, fuzzy, no-c-format
! #| msgid "Alias for -mcpu=g10."
  msgid "Alias for -mrh850-abi."
! msgstr "Synonyme de -mcpu=g10."
  
  #: config/v850/v850.opt:53
! #, fuzzy, no-c-format
! #| msgid "Prohibit PC relative function calls."
  msgid "Prohibit PC-relative function calls."
  msgstr "Interdire les appels de fonctions relatifs au PC."
  
--- 6173,6189 ----
  msgstr "Ne pas utiliser l'instruction callt (par défaut)."
  
  #: config/v850/v850.opt:45
! #, no-c-format
  msgid "Reuse r30 on a per-function basis."
  msgstr "Réutiliser r30 à chaque fonction."
  
  #: config/v850/v850.opt:49
! #, no-c-format
  msgid "Alias for -mrh850-abi."
! msgstr "Synonyme de -mrh850-abi"
  
  #: config/v850/v850.opt:53
! #, no-c-format
  msgid "Prohibit PC-relative function calls."
  msgstr "Interdire les appels de fonctions relatifs au PC."
  
*************** msgid "Use 32-bit offsets in jump tables
*** 6492,6499 ****
  msgstr "Utiliser des décalages sur 32 bits dans les tables de sauts au lieu de décalages sur 16 bits."
  
  #: config/m68k/m68k.opt:151
! #, fuzzy, no-c-format
! #| msgid "Usa LRA for reload instead of the old reload framework.  This option is experimental, and it may be removed in future versions of the compiler."
  msgid "Use LRA for reload instead of the old reload framework.  This option is experimental, and it may be removed in future versions of the compiler."
  msgstr "Utiliser un LRA pour recharger au lieu de l'ancien rechargement du framework. Cette option est expérimentale et elle peut être retirée dans les futures versions de ce compilateur."
  
--- 6453,6459 ----
  msgstr "Utiliser des décalages sur 32 bits dans les tables de sauts au lieu de décalages sur 16 bits."
  
  #: config/m68k/m68k.opt:151
! #, no-c-format
  msgid "Use LRA for reload instead of the old reload framework.  This option is experimental, and it may be removed in future versions of the compiler."
  msgstr "Utiliser un LRA pour recharger au lieu de l'ancien rechargement du framework. Cette option est expérimentale et elle peut être retirée dans les futures versions de ce compilateur."
  
*************** msgid "Support amcas[_db].{b/h/w/d} inst
*** 6788,6797 ****
  msgstr "Supporter les instructions amcas[_db].{b/h/w/d}."
  
  #: config/loongarch/loongarch.opt:367
! #, fuzzy, no-c-format
! #| msgid "Support CLWB instruction."
  msgid "Support sc.q instruction."
! msgstr "Supporter l'instruction CLWB."
  
  #: config/loongarch/loongarch.opt:371
  #, no-c-format
--- 6748,6756 ----
  msgstr "Supporter les instructions amcas[_db].{b/h/w/d}."
  
  #: config/loongarch/loongarch.opt:367
! #, no-c-format
  msgid "Support sc.q instruction."
! msgstr "Supporter l'instruction sc.q."
  
  #: config/loongarch/loongarch.opt:371
  #, no-c-format
*************** msgid "Split unaligned 8 byte vector mov
*** 6884,6891 ****
  msgstr "Scinder les déplacements de vecteurs de 8 octets non-alignés avant la génération d'adresse post-modifiée."
  
  #: config/epiphany/epiphany.opt:137
! #, fuzzy, no-c-format
! #| msgid "Use the floating point unit for integer add/subtract."
  msgid "Use the floating-point unit for integer add/subtract."
  msgstr "Utiliser l'unité en virgule flottante pour ajouter/soustraire des entiers."
  
--- 6843,6849 ----
  msgstr "Scinder les déplacements de vecteurs de 8 octets non-alignés avant la génération d'adresse post-modifiée."
  
  #: config/epiphany/epiphany.opt:137
! #, no-c-format
  msgid "Use the floating-point unit for integer add/subtract."
  msgstr "Utiliser l'unité en virgule flottante pour ajouter/soustraire des entiers."
  
*************** msgid "(Obsolete) This is the default."
*** 7160,7175 ****
  msgstr "(Obsolète) Ceci est le défaut."
  
  #: config/darwin.opt:268
! #, fuzzy, no-c-format
! #| msgid "Equivalent to -mgpopt=none."
  msgid "Equivalent to -xobjective-c."
! msgstr "Équivalent à -mgpopt=none."
  
  #: config/darwin.opt:272
! #, fuzzy, no-c-format
! #| msgid "Equivalent to -mgpopt=none."
  msgid "Equivalent to -xobjective-c++."
! msgstr "Équivalent à -mgpopt=none."
  
  #: config/darwin.opt:282
  #, no-c-format
--- 7118,7131 ----
  msgstr "(Obsolète) Ceci est le défaut."
  
  #: config/darwin.opt:268
! #, no-c-format
  msgid "Equivalent to -xobjective-c."
! msgstr "Équivalent à -xobjective-c."
  
  #: config/darwin.opt:272
! #, no-c-format
  msgid "Equivalent to -xobjective-c++."
! msgstr "Équivalent à -xobjective-c++."
  
  #: config/darwin.opt:282
  #, no-c-format
*************** msgid "When -mhard-float is selected, en
*** 8162,8171 ****
  msgstr "Quand -mhard-float est sélectionné, active la génération des instructions de comparaison et activation du fanion en virgule flottante sans ordre (lf.sfun*). Par défaut, les fonctions de libgcc sont utilisées pour réaliser les opérations de comparaison et activation du fanion en virgule flottante sans ordre."
  
  #: config/or1k/or1k.opt:71
! #, fuzzy, no-c-format
! #| msgid "Specify the code model used for accessing memory addresses.  Specifying large enables generating binaries with large global offset tables.  By default the value is small."
  msgid "Specify the code model used for accessing memory addresses.  Specifying large enables generating binaries with large global offset tables and calling functions anywhere in an executable.  By default the value is small."
! msgstr "Spécifier le modèle de code à utiliser pour accéder aux adresses mémoire.  Spécifier « large » autoriser la génération de binaires avec de grandes tables de décalages globaux.  La valeur par défaut est « small »."
  
  #: config/or1k/or1k.opt:77
  #, no-c-format
--- 8118,8126 ----
  msgstr "Quand -mhard-float est sélectionné, active la génération des instructions de comparaison et activation du fanion en virgule flottante sans ordre (lf.sfun*). Par défaut, les fonctions de libgcc sont utilisées pour réaliser les opérations de comparaison et activation du fanion en virgule flottante sans ordre."
  
  #: config/or1k/or1k.opt:71
! #, no-c-format
  msgid "Specify the code model used for accessing memory addresses.  Specifying large enables generating binaries with large global offset tables and calling functions anywhere in an executable.  By default the value is small."
! msgstr "Spécifier le modèle de code à utiliser pour accéder aux adresses mémoire.  Spécifier « large » autoriser la génération de binaires avec de grandes tables de décalages globaux et l'appel de fonctions n'importe où dans l'exécutable.  La valeur par défaut est « small »."
  
  #: config/or1k/or1k.opt:77
  #, no-c-format
*************** msgid "Known code model types (for use w
*** 8173,8182 ****
  msgstr "Types de modèles de codes connus (à utiliser avec l'option -mcmodel=) :"
  
  #: config/or1k/or1k.opt:87
! #, fuzzy, no-c-format
! #| msgid "Enable generation of conditional move (l.cmov) instructions.  By default the equivalent will be generated using set and branch."
  msgid "Enable generation of conditional move (l.cmov) instructions.  By default the equivalents are generated using set and branch."
! msgstr "Activer la génération d'instruction de déplacement conditionnel (l.cmov). Par défaut, un équivalent sera généré en utilisant les instructions set et branch."
  
  #: config/or1k/or1k.opt:92
  #, no-c-format
--- 8128,8136 ----
  msgstr "Types de modèles de codes connus (à utiliser avec l'option -mcmodel=) :"
  
  #: config/or1k/or1k.opt:87
! #, no-c-format
  msgid "Enable generation of conditional move (l.cmov) instructions.  By default the equivalents are generated using set and branch."
! msgstr "Activer la génération d'instruction de déplacement conditionnel (l.cmov). Par défaut, les équivalents seront générés en utilisant les instructions set et branch."
  
  #: config/or1k/or1k.opt:92
  #, no-c-format
*************** msgid "Enable generation of sign extensi
*** 8194,8207 ****
  msgstr "Activer la génération d'instructions d'extension de signe (l.ext*). Par défaut, les chargements depuis la mémoire sont réalisés sans extension de signe."
  
  #: config/or1k/or1k.opt:108
! #, fuzzy, no-c-format
! #| msgid "Enable generation of compare and set flag with immediate (l.sf*i) instructions. By default extra instructions will be generated to store the immediate to a register first."
  msgid "Enable generation of compare and set flag with immediate (l.sf*i) instructions. By default extra instructions are generated to store the immediate to a register first."
  msgstr "Activer la génération d'instructions de comparaison et d'activation du fanion avec immédiat (l.sf*i). Par défaut, des instructions supplémentaires sont générées pour stocker d'abord l'immédiat dans un registre."
  
  #: config/or1k/or1k.opt:114
! #, fuzzy, no-c-format
! #| msgid "Enable generation of shift with immediate (l.srai, l.srli, l.slli) instructions. By default extra instructions will be generated to store the immediate to a register first."
  msgid "Enable generation of shift with immediate (l.srai, l.srli, l.slli) instructions. By default extra instructions are generated to store the immediate to a register first."
  msgstr "Activer la génération d'instructions de décalage avec immédiat (l.srai, l.srli, l.slli). Par défaut, des instructions supplémentaires sont générées pour stocker d'abord l'immédiat dans un registre."
  
--- 8148,8159 ----
  msgstr "Activer la génération d'instructions d'extension de signe (l.ext*). Par défaut, les chargements depuis la mémoire sont réalisés sans extension de signe."
  
  #: config/or1k/or1k.opt:108
! #, no-c-format
  msgid "Enable generation of compare and set flag with immediate (l.sf*i) instructions. By default extra instructions are generated to store the immediate to a register first."
  msgstr "Activer la génération d'instructions de comparaison et d'activation du fanion avec immédiat (l.sf*i). Par défaut, des instructions supplémentaires sont générées pour stocker d'abord l'immédiat dans un registre."
  
  #: config/or1k/or1k.opt:114
! #, no-c-format
  msgid "Enable generation of shift with immediate (l.srai, l.srli, l.slli) instructions. By default extra instructions are generated to store the immediate to a register first."
  msgstr "Activer la génération d'instructions de décalage avec immédiat (l.srai, l.srli, l.slli). Par défaut, des instructions supplémentaires sont générées pour stocker d'abord l'immédiat dans un registre."
  
*************** msgid "Always use JSR, never BSR, for ca
*** 8842,9243 ****
  msgstr "Toujours utiliser JSR pour les appels, jamais BSR."
  
  #: m2/lang.opt:35
! #, fuzzy, no-c-format
! #| msgid "turns on case statement label compile time checking when using an expression of an enum type."
  msgid "Case statement label compile time checking when using an expression of an enum type."
! msgstr "activer la vérification à la compilation des étiquettes de l'instruction case lors de l'utilisation d'une expression d'un type énuméré."
  
  #: m2/lang.opt:39
! #, fuzzy, no-c-format
! #| msgid "compiler checks to force definition module procedure parameter names with their implementation module counterpart"
  msgid "Check definition module procedure parameter names match their implementation module counterpart."
! msgstr "vérifications du compilateur pour forcer les noms des paramètre des procédures des définitions de modules avec leur équivalent du module de l'implémentation"
  
  #: m2/lang.opt:43
! #, fuzzy, no-c-format
! #| msgid "compiler warns if a cast is being used on types of differing sizes"
  msgid "Warn if a cast is being used on types of differing sizes."
! msgstr "le compilateur avertit si le transtypage est utilisé sur des types de tailles différentes"
  
  #: m2/lang.opt:47
! #, fuzzy, no-c-format
! #| msgid "inform user which parameters will be passed by reference"
  msgid "Inform user which parameters will be passed by reference."
! msgstr "informe l'utilisateur à propos des paramètres qui seront passés par référence"
  
  #: m2/lang.opt:51
! #, fuzzy, no-c-format
! #| msgid "extra compile time semantic checking, typically tries to catch poor programming style"
  msgid "Semantic checking to catch poor programming style."
! msgstr "vérification supplémentaire de la sémantique lors de la compilation, essaie typiquement de détecter un style médiocre de programmation"
  
  #: m2/lang.opt:55
! #, fuzzy, no-c-format
! #| msgid "turns on compile time analysis in the first basic block of a procedure detecting access to uninitialized data."
  msgid "Compile time analysis in the first basic block of a procedure detecting access to uninitialized data."
! msgstr "activer l'analyse à la compilation dans le premier bloc de base d'une procédure détectant l'accès à une donnée non initialisée."
  
  #: m2/lang.opt:59
! #, fuzzy, no-c-format
! #| msgid "turns on compile time analysis to detect access to uninitialized variables, the checking can be specified by: known,cond,all."
  msgid "Compile time analysis to detect access to uninitialized variables, the checking can be specified by: known,cond,all."
! msgstr "activer l'analyse à la compilation pour détecter l'accès à des variables non initialisées, la vérification peut être spécifiée par : known,cond,all."
  
  #: m2/lang.opt:63
! #, fuzzy, no-c-format
! #| msgid "automatically initializes all pointers to NIL"
  msgid "Automatically initializes all pointers to NIL."
! msgstr "initialiser automatiquement tous les pointeurs à NIL"
  
  #: m2/lang.opt:67
! #, fuzzy, no-c-format
! #| msgid "turns on runtime subrange, array index and indirection via NIL pointer checking"
  msgid "Runtime subrange, array index and indirection via NIL pointer checking."
! msgstr "activer la vérification à l'exécution des sous-plages, indexation de tableaux et des indirections via un pointeur NIL"
  
  #: m2/lang.opt:71
! #, fuzzy, no-c-format
! #| msgid "turns on runtime checking to check whether a CASE statement requires an ELSE clause when one was not specified"
  msgid "Runtime checking to check whether a CASE statement requires an ELSE clause when one was not specified."
! msgstr "activer la vérification à l'exécution pour assurer qu'une instruction CASE requiert une clause ELSE alors qu'aucune n'a été spécifiée"
  
  #: m2/lang.opt:75
! #, fuzzy, no-c-format
! #| msgid "use cpp to preprocess the module"
  msgid "Preprocess the module using cpp."
! msgstr "utiliser cpp pour prétraiter le module"
  
  #: m2/lang.opt:79 m2/lang.opt:83
! #, fuzzy, no-c-format
! #| msgid "passed to the preprocessor if -fcpp is used (internal switch)"
  msgid "Passed to the preprocessor if -fcpp is used (internal switch)."
! msgstr "passé au pré-processeur si -fcpp est utilisé (commutateur interne)"
  
  #: m2/lang.opt:87
! #, fuzzy, no-c-format
! #| msgid "call a real function, rather than the builtin equivalent"
  msgid "Call a real function, rather than the builtin equivalent."
! msgstr "appeler une fonction réelle plutôt que l'équivalent intégré"
  
  #: m2/lang.opt:91
! #, fuzzy, no-c-format
! #| msgid "turn on internal debugging of the compiler (internal switch)"
  msgid "Internal debugging of the compiler (internal switch)."
! msgstr "activer le débogage interne du compilateur (commutateur interne)."
  
  #: m2/lang.opt:95
! #, fuzzy, no-c-format
! #| msgid "turn on tracing of procedure line numbers (internal switch)"
  msgid "Trace procedure line numbers (internal switch)."
! msgstr "activer le pistage des numéros de lignes des procédures (commutateur interne)"
  
  #: m2/lang.opt:99
! #, fuzzy, no-c-format
! #| msgid "recognize the specified suffix as a definition module filename"
  msgid "Recognize the specified suffix as a definition module filename."
! msgstr "reconnaître le suffixe spécifié comme un nom de fichier de module de définitions"
  
  #: m2/lang.opt:103
! #, fuzzy, no-c-format
! #| msgid "display all inbuilt system items"
  msgid "Display all inbuilt system items."
! msgstr "afficher tous les éléments système intégrés"
  
  #: m2/lang.opt:107
! #, fuzzy, no-c-format
! #| msgid "allows opaque types to be implemented as any type (a GNU Modula-2 extension)"
  msgid "Allows opaque types to be implemented as any type (a GNU Modula-2 extension)."
! msgstr "autoriser l'implémentation des types opaques comme n'importe quel type (une extension GNU Modula-2)"
  
  #: m2/lang.opt:111
! #, fuzzy, no-c-format
! #| msgid "turns on runtime checking to check whether a floating point number will exceed range"
  msgid "Runtime checking to check whether a floating point number will exceed range."
! msgstr "activer la vérification à l'exécution pour détecter si un nombre en virgule flottante débordera de la plage autorisée"
  
  #: m2/lang.opt:115
! #, fuzzy, no-c-format
! #| msgid "create a topologically sorted module list from all dependent modules used in the application"
  msgid "Create a topologically sorted module list from all dependent modules used in the application."
! msgstr "créer une liste des modules triés topologiquement depuis tous les dépendances de modules utilisées dans l'application"
  
  #: m2/lang.opt:119
! #, fuzzy, no-c-format
! #| msgid "turns on all range checking for numerical values"
  msgid "Range checking for numerical values."
! msgstr "activer toutes les vérifications de bornes pour les valeurs numériques"
  
  #: m2/lang.opt:123
! #, fuzzy, no-c-format
! #| msgid "use ISO dialect of Modula-2"
  msgid "ISO dialect of Modula-2."
! msgstr "utiliser le dialecte ISO de Modula-2"
  
  #: m2/lang.opt:127
! #, fuzzy, 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."
  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 "spécifier l'ordre des bibliothèques. Les bibliothèques peuvent être spécifiées par des abréviations séparées par des virgules : log,min,pim,iso ou par noms de répertoires : m2log,m2min,m2pim,m2iso."
  
  #: m2/lang.opt:131
! #, fuzzy, no-c-format
! #| msgid "set all location values to a specific value (internal switch)"
  msgid "Set all location values to a specific value (internal switch)."
! msgstr "définir toutes les valeurs d'emplacement à une valeur spécifiée (commutateur interne)."
  
  #: m2/lang.opt:135
! #, fuzzy, no-c-format
! #| msgid "turn on internal debug tracing for quad,token,line,all (internal switch)"
  msgid "Internal debug tracing for quad,token,line,all (internal switch)."
! msgstr "activer le pistage du débogage interne pour quad,token,line,all (commutateur interne)"
  
  #: m2/lang.opt:139
! #, fuzzy, no-c-format
! #| msgid "dump Modula-2 internal intemediate representation specified by: all,quad,decl,gimple"
  msgid "Dump Modula-2 internal intemediate representation specified by: all,quad,decl,gimple."
! msgstr "vidanger la représentation intermédiaire interne Modula-2 spécifiée par : all,quad,dcl,gimple"
  
  #: m2/lang.opt:143
! #, fuzzy, no-c-format
! #| msgid "dump Modula-2 decls to the filename stem specified"
  msgid "Dump Modula-2 decls to the filename stem specified."
! msgstr "vidanger les déclarations Modula-2 vers la racine de nom de fichier spécifiée"
  
  #: m2/lang.opt:147
! #, fuzzy, no-c-format
! #| msgid "dump Modula-2 gimple to the filename stem specified"
  msgid "Dump Modula-2 gimple to the filename stem specified."
! msgstr "vidanger le gimple Modula-2 vers la racine de nom de fichier spécifiée"
  
  #: m2/lang.opt:151
! #, fuzzy, no-c-format
! #| msgid "dump Modula-2 quads to the filename stem specified"
  msgid "Dump Modula-2 quads to the filename stem specified."
! msgstr "vidanger les quads Modula-2 vers la racine de nom de fichier spécifiée"
  
  #: m2/lang.opt:155
! #, fuzzy, no-c-format
! #| msgid "filter the language dump using a comma separated list of procedures and modules"
  msgid "Filter the language dump using a comma separated list of procedures and modules."
! msgstr "filtrer le vidangage du langage en utilisant une liste de procédures et de modules séparés par des virgules"
  
  #: m2/lang.opt:159
! #, fuzzy, no-c-format
! #| msgid "override the default 64 bit definition of SYSTEM.COFF_T with the argument specified"
  msgid "Override the default 64 bit definition of SYSTEM.COFF_T with the argument specified."
! msgstr "écraser la définition 64 bits par défaut de SYSTEM.COFF_T avec l'argument spécifié"
  
  #: m2/lang.opt:163
! #, fuzzy, no-c-format
! #| msgid "generate extra nops to improve debugging, producing an instruction for every code related keyword"
  msgid "Generate extra nops to improve debugging, producing an instruction for every code related keyword."
! msgstr "générer des nops supplémentaires pour améliorer le débogage. Une instruction est produite pour chaque mot clé du code"
  
  #: m2/lang.opt:167
! #, fuzzy, no-c-format
! #| msgid "generate error messages which render keywords in lower case"
  msgid "Generate error messages which render keywords in lower case."
! msgstr "générer des messages d'erreur qui affichent les mots clés en minuscules"
  
  #: m2/lang.opt:171
! #, fuzzy, no-c-format
! #| msgid "specify the module mangled prefix name for all modules in the following include paths"
  msgid "Specify the module mangled prefix name for all modules in the following include paths."
! msgstr "spécifier le nom de préfixe décoré du module pour tous les modules dans les chemins d'inclusion suivants"
  
  #: m2/lang.opt:179
  #, no-c-format
  msgid "Add include paths for all the library names in -flibs= to this directory root."
! msgstr ""
  
  #: m2/lang.opt:187
! #, fuzzy, no-c-format
! #| msgid "insert plugin to identify runtime errors at compiletime"
  msgid "Insert plugin to identify runtime errors at compiletime."
! msgstr "insérer le greffon pour détecter les erreurs à l'exécution durant la compilation"
  
  #: m2/lang.opt:191
! #, fuzzy, no-c-format
! #| msgid "specify the module mangled prefix name"
  msgid "Specify the module mangled prefix name."
! msgstr "spécifier le nom de préfixe décoré du module"
  
  #: m2/lang.opt:195
! #, fuzzy, no-c-format
! #| msgid "display statistics about the amount of source lines compiled and symbols used"
  msgid "Display statistics about the amount of source lines compiled and symbols used."
! msgstr "afficher les statistiques à propos du nombre de lignes sources compilées et les symboles utilisés"
  
  #: m2/lang.opt:199
! #, fuzzy, no-c-format
! #| msgid "experimental flag to turn on the new strict type checker"
  msgid "Experimental flag to turn on the new strict type checker."
! msgstr "commutateur expérimental pour activer le nouveau validateur de type strict"
  
  #: m2/lang.opt:203
  #, no-c-format
  msgid "Provides more detail why the types are incompatible."
! msgstr ""
  
  #: m2/lang.opt:207
! #, fuzzy, no-c-format
! #| msgid "compile all implementation modules and program module at once"
  msgid "Compile all implementation modules and program module at once."
! msgstr "compiler tous les modules des implémentations et le module du programme en une fois"
  
  #: m2/lang.opt:215
! #, fuzzy, no-c-format
! #| msgid "recognize the specified suffix as implementation and module filenames"
  msgid "Recognize the specified suffix as implementation and module filenames."
! msgstr "reconnaître le suffixe spécifié comme étant des noms de fichiers d'implémentation et de module"
  
  #: m2/lang.opt:219
! #, fuzzy, no-c-format
! #| msgid "turns on runtime checking to detect accessing data through a NIL value pointer"
  msgid "Runtime checking to detect accessing data through a NIL value pointer."
! msgstr "activer la vérification à l'exécution pour détecter l'accès à des données via un pointeur ayant la valeur NIL"
  
  #: m2/lang.opt:223
! #, fuzzy, no-c-format
! #| msgid "use PIM [234] dialect of Modula-2"
  msgid "PIM [234] dialect of Modula-2."
! msgstr "utiliser le dialecte PIM [234] de Modula-2"
  
  #: m2/lang.opt:227
! #, fuzzy, no-c-format
! #| msgid "use PIM 2 dialect of Modula-2"
  msgid "PIM 2 dialect of Modula-2."
! msgstr "utiliser le dialecte PIM 2 de Modula-2"
  
  #: m2/lang.opt:231
! #, fuzzy, no-c-format
! #| msgid "use PIM 3 dialect of Modula-2"
  msgid "PIM 3 dialect of Modula-2."
! msgstr "utiliser le dialecte PIM 3 de Modula-2"
  
  #: m2/lang.opt:235
! #, fuzzy, no-c-format
! #| msgid "use PIM 4 dialect of Modula-2"
  msgid "PIM 4 dialect of Modula-2."
! msgstr "utiliser le dialecte PIM 4 de Modula-2"
  
  #: m2/lang.opt:239
! #, fuzzy, no-c-format
! #| msgid "force positive result from MOD and DIV result floor"
  msgid "Force positive result from MOD and DIV result floor."
! msgstr "forcer le résultat positif dans l'arrondi de MOD et DIV"
  
  #: m2/lang.opt:243
! #, fuzzy, no-c-format
! #| msgid "link against the pthread library (default on)"
  msgid "Link against the pthread library (default on)."
! msgstr "lier avec la bibliothèque pthread (actif par défaut)"
  
  #: m2/lang.opt:247
! #, fuzzy, no-c-format
! #| msgid "internal compiler debugging information, dump the list of quadruples"
  msgid "Internal compiler debugging information, dump the list of quadruples."
! msgstr "information de débogage du compilateur interne, vidange la liste des quadruples"
  
  #: m2/lang.opt:251
! #, fuzzy, no-c-format
! #| msgid "turns on all range checking for numerical values"
  msgid "Runtime range checking for numerical values."
! msgstr "activer toutes les vérifications de bornes pour les valeurs numériques"
  
  #: m2/lang.opt:255
! #, fuzzy, no-c-format
! #| msgid "turns on runtime checking for functions which finish without executing a RETURN statement"
  msgid "Runtime checking for functions which finish without executing a RETURN statement."
! msgstr "activer la vérification à l'exécution pour les fonctions qui se terminent sans exécuter d'instruction RETURN"
  
  #: m2/lang.opt:259
! #, fuzzy, no-c-format
! #| msgid "specify the list of runtime modules and their initialization order"
  msgid "Specify the list of runtime modules and their initialization order."
! msgstr "spécifier la liste des modules à l'exécution et leur ordre d'initialisation"
  
  #: m2/lang.opt:263
! #, fuzzy, no-c-format
! #| msgid "the modules initialization order is dynamically determined by M2RTS and application dependencies"
  msgid "Modules are initialized dynamically, determined by M2RTS and application dependencies."
! msgstr "l'ordre d'initialisation des modules est déterminée dynamiquement par M2RTS et les dépendances de l'application"
  
  #: m2/lang.opt:267
! #, fuzzy, no-c-format
! #| msgid "generate a C source scaffold for the current module being compiled"
  msgid "Generate a C source scaffold for the current module being compiled."
! msgstr "générer un échafaudage en source C pour que le module courant soit compilé"
  
  #: m2/lang.opt:271
! #, fuzzy, no-c-format
! #| msgid "generate a C++ source scaffold for the current module being compiled"
  msgid "Generate a C++ source scaffold for the current module being compiled."
! msgstr "générer un échafaudage en source C++ pour que le module courant soit compilé"
  
  #: m2/lang.opt:275
! #, fuzzy, no-c-format
! #| msgid "generate the main function"
  msgid "Generate the main function."
! msgstr "générer la fonction principale"
  
  #: m2/lang.opt:279
! #, fuzzy, no-c-format
! #| msgid "generate static scaffold initialization and finalization for every module inside main"
  msgid "Generate static scaffold initialization and finalization for every module inside main."
! msgstr "générer des échafaudages d'initialisation et de finalisation statiques pour chaque module dans la fonction principale"
  
  #: m2/lang.opt:283
! #, fuzzy, no-c-format
! #| msgid "generate a shared library from the module"
  msgid "Generate a shared library from the module."
! msgstr "générer une bibliothèque partagée depuis le module"
  
  #: m2/lang.opt:287
! #, fuzzy, no-c-format
! #| msgid "turns on all software runtime checking (an abbreviation for -fnil -frange -findex -fwholediv -fcase -freturn -fwholevalue -ffloatvalue)"
  msgid "All software runtime checking (an abbreviation for -fnil -frange -findex -fwholediv -fcase -freturn -fwholevalue -ffloatvalue)."
! msgstr "activer toutes les vérifications à l'exécution du logiciel (une abréviation pour -fnil -frange -findex -fwholediv -fcase -freturn -fwholevalue -ffloatvalue)"
  
  #: m2/lang.opt:291
! #, fuzzy, no-c-format
! #| msgid "display the location of module source files as they are compiled"
  msgid "Display the location of module source files as they are compiled."
! msgstr "afficher l'emplacement des fichiers sources des modules au fur et à mesure qu'ils sont compilés"
  
  #: m2/lang.opt:295
! #, fuzzy, no-c-format
! #| msgid "create a swig interface file for the module"
  msgid "Create a swig interface file for the module."
! msgstr "créer un fichier d'interface swig pour le module"
  
  #: m2/lang.opt:303
! #, fuzzy, no-c-format
! #| msgid "optimize non var unbounded parameters by passing it by reference, providing it is not written to within the callee procedure."
  msgid "Optimize non var unbounded parameters by passing it by reference, providing it is not written to within the callee procedure."
! msgstr "optimiser les paramètres non liés et non var en les passant par référence pour autant qu'ils ne soient pas écrits à l'intérieur de la procédure appelée."
  
  #: m2/lang.opt:307
! #, fuzzy, no-c-format
! #| msgid "orders the initialization/finalizations for scaffold-static or force linking of modules if scaffold-dynamic"
  msgid "Order the initialization/finalizations for scaffold-static or force linking of modules if scaffold-dynamic."
! msgstr "ordonne les initialisations/finalisations pour l'échafaudage statique ou force la l'édition de liens des modules en cas d'échafaudage dynamique"
  
  #: m2/lang.opt:315
  #, no-c-format
  msgid "Link against the module M2WIDESET to perform the wideset operator, the negative version of this option will generate a warning if this module is required."
! msgstr ""
  
  #: m2/lang.opt:319
! #, fuzzy, no-c-format
! #| msgid "turns on all division and modulus by zero checking for ordinal values"
  msgid "Runtime checking of all division and modulus by zero checking for ordinal values."
! msgstr "activer toutes les vérifications de division et modulo par zéro pour les valeurs ordinales"
  
  #: m2/lang.opt:323
  #, no-c-format
  msgid "Runtime checking for whole numbers."
! msgstr ""
  
  #: m2/lang.opt:327
  #, no-c-format
--- 8794,9132 ----
  msgstr "Toujours utiliser JSR pour les appels, jamais BSR."
  
  #: m2/lang.opt:35
! #, no-c-format
  msgid "Case statement label compile time checking when using an expression of an enum type."
! msgstr "Vérifier, à la compilation, les étiquettes de l'instruction case lors de l'utilisation d'une expression d'un type énuméré."
  
  #: m2/lang.opt:39
! #, no-c-format
  msgid "Check definition module procedure parameter names match their implementation module counterpart."
! msgstr "Vérifier que les noms des paramètre des procédures des définitions de modules correspondent à leur équivalent du module d'implémentation."
  
  #: m2/lang.opt:43
! #, no-c-format
  msgid "Warn if a cast is being used on types of differing sizes."
! msgstr "Avertir si le transtypage est utilisé sur des types de tailles différentes."
  
  #: m2/lang.opt:47
! #, no-c-format
  msgid "Inform user which parameters will be passed by reference."
! msgstr "Informer l'utilisateur à propos des paramètres qui seront passés par référence."
  
  #: m2/lang.opt:51
! #, no-c-format
  msgid "Semantic checking to catch poor programming style."
! msgstr "Vérifier la sémantique pour détecter un style médiocre de programmation."
  
  #: m2/lang.opt:55
! #, no-c-format
  msgid "Compile time analysis in the first basic block of a procedure detecting access to uninitialized data."
! msgstr "Analyse à la compilation dans le premier bloc de base d'une procédure pour détecter l'accès à une donnée non initialisée."
  
  #: m2/lang.opt:59
! #, no-c-format
  msgid "Compile time analysis to detect access to uninitialized variables, the checking can be specified by: known,cond,all."
! msgstr "Analyse à la compilation pour détecter l'accès à des variables non initialisées, la vérification peut être spécifiée par : known,cond,all."
  
  #: m2/lang.opt:63
! #, no-c-format
  msgid "Automatically initializes all pointers to NIL."
! msgstr "Initialiser automatiquement tous les pointeurs à NIL."
  
  #: m2/lang.opt:67
! #, no-c-format
  msgid "Runtime subrange, array index and indirection via NIL pointer checking."
! msgstr "Vérification des sous-plages, de l'indexation de tableaux et des indirections via un pointeur NIL."
  
  #: m2/lang.opt:71
! #, no-c-format
  msgid "Runtime checking to check whether a CASE statement requires an ELSE clause when one was not specified."
! msgstr "Vérification à l'exécution pour assurer qu'une instruction CASE requiert une clause ELSE alors qu'aucune n'a été spécifiée"
  
  #: m2/lang.opt:75
! #, no-c-format
  msgid "Preprocess the module using cpp."
! msgstr "Pré-traiter le module avec cpp."
  
  #: m2/lang.opt:79 m2/lang.opt:83
! #, no-c-format
  msgid "Passed to the preprocessor if -fcpp is used (internal switch)."
! msgstr "Passé au pré-processeur si -fcpp est utilisé (commutateur interne)."
  
  #: m2/lang.opt:87
! #, no-c-format
  msgid "Call a real function, rather than the builtin equivalent."
! msgstr "Appeler une fonction réelle plutôt que l'équivalent intégré."
  
  #: m2/lang.opt:91
! #, no-c-format
  msgid "Internal debugging of the compiler (internal switch)."
! msgstr "Débogage interne du compilateur (commutateur interne)."
  
  #: m2/lang.opt:95
! #, no-c-format
  msgid "Trace procedure line numbers (internal switch)."
! msgstr "Pister des numéros de lignes des procédures (commutateur interne)."
  
  #: m2/lang.opt:99
! #, no-c-format
  msgid "Recognize the specified suffix as a definition module filename."
! msgstr "Reconnaître le suffixe spécifié comme un nom de fichier de module de définitions"
  
  #: m2/lang.opt:103
! #, no-c-format
  msgid "Display all inbuilt system items."
! msgstr "Afficher tous les éléments système intégrés."
  
  #: m2/lang.opt:107
! #, no-c-format
  msgid "Allows opaque types to be implemented as any type (a GNU Modula-2 extension)."
! msgstr "autoriser l'implémentation des types opaques comme n'importe quel type (une extension GNU Modula-2)."
  
  #: m2/lang.opt:111
! #, no-c-format
  msgid "Runtime checking to check whether a floating point number will exceed range."
! msgstr "Vérifier à l'exécution pour détecter si un nombre en virgule flottante débordera de la plage autorisée."
  
  #: m2/lang.opt:115
! #, no-c-format
  msgid "Create a topologically sorted module list from all dependent modules used in the application."
! msgstr "Créer une liste des modules triés topologiquement depuis tous les dépendances de modules utilisées dans l'application."
  
  #: m2/lang.opt:119
! #, no-c-format
  msgid "Range checking for numerical values."
! msgstr "Vérifier les bornes pour les valeurs numériques."
  
  #: m2/lang.opt:123
! #, no-c-format
  msgid "ISO dialect of Modula-2."
! msgstr "Dialecte 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 "Spécifier l'ordre des bibliothèques. Les bibliothèques peuvent être spécifiées par des abréviations séparées par des virgules : log,min,pim,iso ou par noms de répertoires : m2log,m2min,m2pim,m2iso."
  
  #: m2/lang.opt:131
! #, no-c-format
  msgid "Set all location values to a specific value (internal switch)."
! msgstr "Définir toutes les valeurs d'emplacement à une valeur spécifiée (commutateur interne)."
  
  #: m2/lang.opt:135
! #, no-c-format
  msgid "Internal debug tracing for quad,token,line,all (internal switch)."
! msgstr "Pistage du débogage interne pour quad,token,line,all (commutateur interne)."
  
  #: m2/lang.opt:139
! #, no-c-format
  msgid "Dump Modula-2 internal intemediate representation specified by: all,quad,decl,gimple."
! msgstr "Vidanger la représentation intermédiaire interne Modula-2 spécifiée par : all,quad,dcl,gimple."
  
  #: m2/lang.opt:143
! #, no-c-format
  msgid "Dump Modula-2 decls to the filename stem specified."
! msgstr "Vidanger les déclarations Modula-2 vers la racine de nom de fichier spécifiée."
  
  #: m2/lang.opt:147
! #, no-c-format
  msgid "Dump Modula-2 gimple to the filename stem specified."
! msgstr "Vidanger le gimple Modula-2 vers la racine de nom de fichier spécifiée."
  
  #: m2/lang.opt:151
! #, no-c-format
  msgid "Dump Modula-2 quads to the filename stem specified."
! msgstr "Vidanger les quads Modula-2 vers la racine de nom de fichier spécifiée."
  
  #: m2/lang.opt:155
! #, no-c-format
  msgid "Filter the language dump using a comma separated list of procedures and modules."
! msgstr "Filtrer le vidangage du langage en utilisant une liste de procédures et de modules séparés par des virgules."
  
  #: m2/lang.opt:159
! #, no-c-format
  msgid "Override the default 64 bit definition of SYSTEM.COFF_T with the argument specified."
! msgstr "Écraser la définition 64 bits par défaut de SYSTEM.COFF_T avec l'argument spécifié."
  
  #: m2/lang.opt:163
! #, no-c-format
  msgid "Generate extra nops to improve debugging, producing an instruction for every code related keyword."
! msgstr "Générer des nops supplémentaires pour améliorer le débogage. Une instruction est produite pour chaque mot clé du code."
  
  #: m2/lang.opt:167
! #, no-c-format
  msgid "Generate error messages which render keywords in lower case."
! msgstr "Générer des messages d'erreur qui affichent les mots clés en minuscules."
  
  #: m2/lang.opt:171
! #, no-c-format
  msgid "Specify the module mangled prefix name for all modules in the following include paths."
! msgstr "Spécifier le nom de préfixe décoré du module pour tous les modules dans les chemins d'inclusion suivants."
  
  #: m2/lang.opt:179
  #, no-c-format
  msgid "Add include paths for all the library names in -flibs= to this directory root."
! msgstr "Ajouter les chemins d'inclusion de tous les noms de bibliothèques dans -flibs à cette racine de répertoire."
  
  #: m2/lang.opt:187
! #, no-c-format
  msgid "Insert plugin to identify runtime errors at compiletime."
! msgstr "Insérer le greffon pour détecter les erreurs à l'exécution durant la compilation."
  
  #: m2/lang.opt:191
! #, no-c-format
  msgid "Specify the module mangled prefix name."
! msgstr "Spécifier le nom de préfixe décoré du module."
  
  #: m2/lang.opt:195
! #, no-c-format
  msgid "Display statistics about the amount of source lines compiled and symbols used."
! msgstr "Afficher les statistiques à propos du nombre de lignes sources compilées et les symboles utilisés."
  
  #: m2/lang.opt:199
! #, no-c-format
  msgid "Experimental flag to turn on the new strict type checker."
! msgstr "Commutateur expérimental pour activer le nouveau validateur de type strict."
  
  #: m2/lang.opt:203
  #, no-c-format
  msgid "Provides more detail why the types are incompatible."
! msgstr "Fournir plus de détails expliquant pourquoi les types sont incompatibles."
  
  #: m2/lang.opt:207
! #, no-c-format
  msgid "Compile all implementation modules and program module at once."
! msgstr "Compiler tous les modules des implémentations et le module du programme en une fois."
  
  #: m2/lang.opt:215
! #, no-c-format
  msgid "Recognize the specified suffix as implementation and module filenames."
! msgstr "Reconnaître le suffixe spécifié comme étant des noms de fichiers d'implémentation et de module."
  
  #: m2/lang.opt:219
! #, no-c-format
  msgid "Runtime checking to detect accessing data through a NIL value pointer."
! msgstr "Vérifier à l'exécution pour détecter l'accès à des données via un pointeur ayant la valeur NIL."
  
  #: m2/lang.opt:223
! #, no-c-format
  msgid "PIM [234] dialect of Modula-2."
! msgstr "Dialecte PIM [234] de Modula-2."
  
  #: m2/lang.opt:227
! #, no-c-format
  msgid "PIM 2 dialect of Modula-2."
! msgstr "Dialecte PIM 2 de Modula-2."
  
  #: m2/lang.opt:231
! #, no-c-format
  msgid "PIM 3 dialect of Modula-2."
! msgstr "Dialecte PIM 3 de Modula-2."
  
  #: m2/lang.opt:235
! #, no-c-format
  msgid "PIM 4 dialect of Modula-2."
! msgstr "Dialecte PIM 4 de Modula-2."
  
  #: m2/lang.opt:239
! #, no-c-format
  msgid "Force positive result from MOD and DIV result floor."
! msgstr "Forcer le résultat positif dans l'arrondi vers le bas de MOD et DIV."
  
  #: m2/lang.opt:243
! #, no-c-format
  msgid "Link against the pthread library (default on)."
! msgstr "Lier avec la bibliothèque pthread (actif par défaut)."
  
  #: m2/lang.opt:247
! #, no-c-format
  msgid "Internal compiler debugging information, dump the list of quadruples."
! msgstr "Information de débogage du compilateur interne, vidange la liste des quadruples."
  
  #: m2/lang.opt:251
! #, no-c-format
  msgid "Runtime range checking for numerical values."
! msgstr "Vérifier, à l'exécution, les bornes pour les valeurs numériques."
  
  #: m2/lang.opt:255
! #, no-c-format
  msgid "Runtime checking for functions which finish without executing a RETURN statement."
! msgstr "Vérifier, à l'exécution, les fonctions qui se terminent sans exécuter d'instruction RETURN."
  
  #: m2/lang.opt:259
! #, no-c-format
  msgid "Specify the list of runtime modules and their initialization order."
! msgstr "Spécifier la liste des modules à l'exécution et leur ordre d'initialisation."
  
  #: m2/lang.opt:263
! #, no-c-format
  msgid "Modules are initialized dynamically, determined by M2RTS and application dependencies."
! msgstr "Les modules sont initialisés dynamiquement, déterminé par M2RTS et les dépendances de l'application."
  
  #: m2/lang.opt:267
! #, no-c-format
  msgid "Generate a C source scaffold for the current module being compiled."
! msgstr "Générer un échafaudage en source C pour que le module courant soit compilé."
  
  #: m2/lang.opt:271
! #, no-c-format
  msgid "Generate a C++ source scaffold for the current module being compiled."
! msgstr "Générer un échafaudage en source C++ pour que le module courant soit compilé."
  
  #: m2/lang.opt:275
! #, no-c-format
  msgid "Generate the main function."
! msgstr "Générer la fonction principale."
  
  #: m2/lang.opt:279
! #, no-c-format
  msgid "Generate static scaffold initialization and finalization for every module inside main."
! msgstr "Générer des échafaudages d'initialisation et de finalisation statiques pour chaque module dans la fonction principale."
  
  #: m2/lang.opt:283
! #, no-c-format
  msgid "Generate a shared library from the module."
! msgstr "Générer une bibliothèque partagée depuis le module."
  
  #: m2/lang.opt:287
! #, no-c-format
  msgid "All software runtime checking (an abbreviation for -fnil -frange -findex -fwholediv -fcase -freturn -fwholevalue -ffloatvalue)."
! msgstr "Toutes les vérifications à l'exécution du logiciel (une abréviation pour -fnil -frange -findex -fwholediv -fcase -freturn -fwholevalue -ffloatvalue)."
  
  #: m2/lang.opt:291
! #, no-c-format
  msgid "Display the location of module source files as they are compiled."
! msgstr "Afficher l'emplacement des fichiers sources des modules au fur et à mesure qu'ils sont compilés."
  
  #: m2/lang.opt:295
! #, no-c-format
  msgid "Create a swig interface file for the module."
! msgstr "Créer un fichier d'interface swig pour le module."
  
  #: m2/lang.opt:303
! #, no-c-format
  msgid "Optimize non var unbounded parameters by passing it by reference, providing it is not written to within the callee procedure."
! msgstr "Optimiser les paramètres non liés et non var en les passant par référence pour autant qu'ils ne soient pas écrits à l'intérieur de la procédure appelée."
  
  #: m2/lang.opt:307
! #, no-c-format
  msgid "Order the initialization/finalizations for scaffold-static or force linking of modules if scaffold-dynamic."
! msgstr "Ordonner les initialisations/finalisations pour l'échafaudage statique ou forcer l'édition de liens des modules en cas d'échafaudage dynamique."
  
  #: m2/lang.opt:315
  #, no-c-format
  msgid "Link against the module M2WIDESET to perform the wideset operator, the negative version of this option will generate a warning if this module is required."
! msgstr "Lier par rapport au module M2WIDESET pour réaliser l'opérateur « wideset », la version négative de cette option génère un avertissement si ce module est requis."
  
  #: m2/lang.opt:319
! #, no-c-format
  msgid "Runtime checking of all division and modulus by zero checking for ordinal values."
! msgstr "Vérifier toute les division et modulo par zéro pour les valeurs ordinales."
  
  #: m2/lang.opt:323
  #, no-c-format
  msgid "Runtime checking for whole numbers."
! msgstr "Vérifier, à l'exécution, pour les nombres entiers."
  
  #: m2/lang.opt:327
  #, no-c-format
*************** msgid "Link the standard Modula-2 librar
*** 9245,9254 ****
  msgstr "Lier les bibliothèques Modula-2 standard statiquement pendant la compilation."
  
  #: m2/lang.opt:472 m2/lang.opt:476
! #, fuzzy, no-c-format
! #| msgid "save temporary preprocessed files"
  msgid "save temporary preprocessed files."
! msgstr "enregistrer les fichiers prétraités temporaires"
  
  #: fortran/lang.opt:146
  #, no-c-format
--- 9134,9142 ----
  msgstr "Lier les bibliothèques Modula-2 standard statiquement pendant la compilation."
  
  #: m2/lang.opt:472 m2/lang.opt:476
! #, no-c-format
  msgid "save temporary preprocessed files."
! msgstr "enregistrer les fichiers prétraités temporaires."
  
  #: fortran/lang.opt:146
  #, no-c-format
*************** msgid "Specify that an external BLAS lib
*** 9601,9610 ****
  msgstr "Spécifier qu'une bibliothèque BLAS externe doit être utilisée pour les appels matmul sur des tableaux de grande taille."
  
  #: fortran/lang.opt:575
! #, fuzzy, no-c-format
! #| msgid "Specify that an external BLAS library should be used for matmul calls on large-size arrays."
  msgid "Use an external BLAS library with 64-bit indexing for matmul on large-size arrays."
! msgstr "Spécifier qu'une bibliothèque BLAS externe doit être utilisée pour les appels matmul sur des tableaux de grande taille."
  
  #: fortran/lang.opt:579
  #, no-c-format
--- 9489,9497 ----
  msgstr "Spécifier qu'une bibliothèque BLAS externe doit être utilisée pour les appels matmul sur des tableaux de grande taille."
  
  #: fortran/lang.opt:575
! #, no-c-format
  msgid "Use an external BLAS library with 64-bit indexing for matmul on large-size arrays."
! msgstr "Utiliser une bibliothèque BLAS externe avec une indexation 64 bits pour les appels matmul sur des tableaux de grande taille."
  
  #: fortran/lang.opt:579
  #, no-c-format
*************** msgid "Emit optimization diagnostics."
*** 10007,10016 ****
  msgstr "Émettre des diagnostiques d'optimisation."
  
  #: params.opt:27
! #, fuzzy, no-c-format
! #| msgid "Loops iterating at least selected number of iterations will get loop alignment."
  msgid "Loops iterating at least selected number of iterations get loop alignment."
! msgstr "Les boucles qui itèrent au moins le nombre de fois sélectionné recevront un alignement de boucle."
  
  #: params.opt:31
  #, no-c-format
--- 9894,9902 ----
  msgstr "Émettre des diagnostiques d'optimisation."
  
  #: params.opt:27
! #, no-c-format
  msgid "Loops iterating at least selected number of iterations get loop alignment."
! msgstr "Les boucles qui itèrent au moins le nombre de fois sélectionné reçoivent un alignement de boucle."
  
  #: params.opt:31
  #, no-c-format
*************** msgstr "Autoriser la détection par ASan
*** 10065,10077 ****
  #: params.opt:71
  #, no-c-format
  msgid "Build basic block profile using auto profile."
! msgstr ""
  
  #: params.opt:75
! #, fuzzy, no-c-format
! #| msgid "Enable function reordering that improves code placement."
  msgid "Enable only function reordering with auto-profile."
! msgstr "Activer la réorganisation des fonctions qui améliore le placement du code."
  
  #: params.opt:79
  #, no-c-format
--- 9951,9962 ----
  #: params.opt:71
  #, no-c-format
  msgid "Build basic block profile using auto profile."
! msgstr "Construire le profil du bloc de base en utilisant le profil automatique."
  
  #: params.opt:75
! #, no-c-format
  msgid "Enable only function reordering with auto-profile."
! msgstr "Activer uniquement la réorganisation des fonctions avec le profil automatique."
  
  #: params.opt:79
  #, no-c-format
*************** msgid "Whether the scheduling descriptio
*** 10079,10086 ****
  msgstr "Est-ce que la description de l'ordonnancement est principalement un modèle fidèle du cycle du processeur cible et va probablement déborder agressivement pour remplir toute bulle du pipeline."
  
  #: params.opt:83
! #, fuzzy, no-c-format
! #| msgid "Enable hwasan instrumentation of statically sized stack-allocated variables."
  msgid "Enable hwasan instrumentation of statically-sized stack-allocated variables."
  msgstr "Autoriser l'instrumentalisattion hwasan des variables allouées sur la pile de taille statique."
  
--- 9964,9970 ----
  msgstr "Est-ce que la description de l'ordonnancement est principalement un modèle fidèle du cycle du processeur cible et va probablement déborder agressivement pour remplir toute bulle du pipeline."
  
  #: params.opt:83
! #, no-c-format
  msgid "Enable hwasan instrumentation of statically-sized stack-allocated variables."
  msgstr "Autoriser l'instrumentalisattion hwasan des variables allouées sur la pile de taille statique."
  
*************** msgstr "Autoriser l'instrumentalisation
*** 10112,10124 ****
  #: params.opt:107
  #, no-c-format
  msgid "When sanitizing using MTE instructions, add checks for all stack allocas."
! msgstr ""
  
  #: params.opt:111
! #, fuzzy, no-c-format
! #| msgid "Enable hwasan instrumentation of builtin functions."
  msgid "When sanitizing using MTE instructions, include builtin functions."
! msgstr "Autoriser l'instrumentalisation hwasan des fonctions internes."
  
  #: params.opt:115
  #, no-c-format
--- 9996,10007 ----
  #: params.opt:107
  #, no-c-format
  msgid "When sanitizing using MTE instructions, add checks for all stack allocas."
! msgstr "Lors du nettoyage en utilisant les instructions MTE, ajouter les vérifications pour toutes les allocations de pile."
  
  #: params.opt:111
! #, no-c-format
  msgid "When sanitizing using MTE instructions, include builtin functions."
! msgstr "Lors du nettoyage en utilisant les instructions MTE, inclure les fonctions internes."
  
  #: params.opt:115
  #, no-c-format
*************** msgid "Set the estimated probability in
*** 10136,10155 ****
  msgstr "Fixe la probabilité estimée en pourcentage pour « builtin expect ». La valeur par défaut est une probabilité de 90%%. (NdT: à cause d'une erreur dans le message original, je dois ajouter un %p inutile dans la traduction: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93759)."
  
  #: params.opt:127
! #, fuzzy, no-c-format
! #| msgid "The maximum length of a constant string for a builtin string cmp call eligible for inlining. The default value is 3."
  msgid "The maximum length of a constant string for a builtin string comparison call eligible for inlining. The default value is 3."
  msgstr "La longueur maximale d'une chaîne constante pour la fonction interne de comparaison de chaînes qui peut être mise en ligne. La valeur par défaut est 3."
  
  #: params.opt:131
! #, fuzzy, no-c-format
! #| msgid "The smallest number of different values for which it is best to use a jump-table instead of a tree of conditional branches, if 0, use the default for the machine."
  msgid "The smallest number of different values for which it is best to use a jump-table instead of a tree of conditional branches.  If 0, use the default for the machine."
  msgstr "Le plus petit nombre de valeurs différentes pour lequel il est préférable d'utiliser une table de sauts plutôt qu'un arbre de branchements conditionnels. Si 0, utilise le choix par défaut pour la machine."
  
  #: params.opt:135
! #, fuzzy, no-c-format
! #| msgid "Probability that COMDAT function will be shared with different compilation unit."
  msgid "Probability that COMDAT function is shared with a different compilation unit."
  msgstr "Probabilité qu'une fonction COMDAT soit partagée avec des unités de compilation différentes."
  
--- 10019,10035 ----
  msgstr "Fixe la probabilité estimée en pourcentage pour « builtin expect ». La valeur par défaut est une probabilité de 90%%. (NdT: à cause d'une erreur dans le message original, je dois ajouter un %p inutile dans la traduction: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93759)."
  
  #: params.opt:127
! #, no-c-format
  msgid "The maximum length of a constant string for a builtin string comparison call eligible for inlining. The default value is 3."
  msgstr "La longueur maximale d'une chaîne constante pour la fonction interne de comparaison de chaînes qui peut être mise en ligne. La valeur par défaut est 3."
  
  #: params.opt:131
! #, no-c-format
  msgid "The smallest number of different values for which it is best to use a jump-table instead of a tree of conditional branches.  If 0, use the default for the machine."
  msgstr "Le plus petit nombre de valeurs différentes pour lequel il est préférable d'utiliser une table de sauts plutôt qu'un arbre de branchements conditionnels. Si 0, utilise le choix par défaut pour la machine."
  
  #: params.opt:135
! #, no-c-format
  msgid "Probability that COMDAT function is shared with a different compilation unit."
  msgstr "Probabilité qu'une fonction COMDAT soit partagée avec des unités de compilation différentes."
  
*************** msgid "Maximal estimated growth of funct
*** 10174,10193 ****
  msgstr "Croissance maximale estimée du corps d'une fonction causée par la première vague de mises en ligne des appels uniques."
  
  #: params.opt:155
! #, fuzzy, no-c-format
! #| msgid "Max number of files in the file cache."
  msgid "Maximum number of files in the file cache."
! msgstr "Nombre max de fichiers dans la cache des fichiers."
  
  #: params.opt:159
! #, fuzzy, no-c-format
! #| msgid "Max number of lines to index into file cache. When 0 this is automatically sized."
  msgid "Maximum number of lines to index into file cache. When 0 this is automatically sized."
! msgstr "Nombre max de lignes à indexer dans la cache des fichiers. Si 0, elle est automatiquement dimensionnée."
  
  #: params.opt:163
! #, fuzzy, no-c-format
! #| msgid "Scale factor to apply to the number of statements in a threading path crossing a loop backedge when comparing to max-jump-thread-duplication-stmts."
  msgid "Scale factor to apply to the number of statements in a threading path crossing a loop back edge when comparing to max-jump-thread-duplication-stmts."
  msgstr "Facteur d'échelle à appliquer au nombre d'expressions dans un chemin de sauts enchaînés traversant l'arrête inverse d'une boucle lors d'une comparaison avec max-jump-thread-duplication-stmts."
  
--- 10054,10070 ----
  msgstr "Croissance maximale estimée du corps d'une fonction causée par la première vague de mises en ligne des appels uniques."
  
  #: params.opt:155
! #, no-c-format
  msgid "Maximum number of files in the file cache."
! msgstr "Nombre maximum de fichiers dans la cache des fichiers."
  
  #: params.opt:159
! #, no-c-format
  msgid "Maximum number of lines to index into file cache. When 0 this is automatically sized."
! msgstr "Nombre maximum de lignes à indexer dans la cache des fichiers. Si 0, elle est automatiquement dimensionnée."
  
  #: params.opt:163
! #, no-c-format
  msgid "Scale factor to apply to the number of statements in a threading path crossing a loop back edge when comparing to max-jump-thread-duplication-stmts."
  msgstr "Facteur d'échelle à appliquer au nombre d'expressions dans un chemin de sauts enchaînés traversant l'arrête inverse d'une boucle lors d'une comparaison avec max-jump-thread-duplication-stmts."
  
*************** msgid "Scaling factor in calculation of
*** 10212,10221 ****
  msgstr "Facteur d'échelle dans le calcul de la distance maximale qu'une expression peut être déplacée par les optimisations de GCSE."
  
  #: params.opt:186
! #, fuzzy, no-c-format
! #| msgid "Cost at which GCSE optimizations will not constraint the distance an expression can travel."
  msgid "Cost at which GCSE optimizations does not constrain the distance an expression can travel."
! msgstr "Coût auquel les optimisations de GCSE ne contraindront pas la distance de déplacement d'une expression."
  
  #: params.opt:190
  #, no-c-format
--- 10089,10097 ----
  msgstr "Facteur d'échelle dans le calcul de la distance maximale qu'une expression peut être déplacée par les optimisations de GCSE."
  
  #: params.opt:186
! #, no-c-format
  msgid "Cost at which GCSE optimizations does not constrain the distance an expression can travel."
! msgstr "Coût auquel les optimisations de GCSE ne contraignent pas la distance de déplacement d'une expression."
  
  #: params.opt:190
  #, no-c-format
*************** msgid "The denominator n of fraction 1/n
*** 10278,10285 ****
  msgstr "Le dénominateur n de la fraction 1/n de la fréquence d'exécution du bloc d'entrée d'une fonction qu'un bloc de base de cette fonction doit avoir au moins pour être considéré comme « chaud »."
  
  #: params.opt:238
! #, fuzzy, no-c-format
! #| msgid "The scale (in percents) applied to inline-insns-single and auto limits when heuristics hints that inlining is very profitable."
  msgid "The scale (as a percentage) applied to inline-insns-single and auto limits when heuristics hints that inlining is very profitable."
  msgstr "L'échelle (en pourcents) appliquée à inline-insns-single et les limites auto quand l'heuristique indique que la mise en ligne est très profitable."
  
--- 10154,10160 ----
  msgstr "Le dénominateur n de la fraction 1/n de la fréquence d'exécution du bloc d'entrée d'une fonction qu'un bloc de base de cette fonction doit avoir au moins pour être considéré comme « chaud »."
  
  #: params.opt:238
! #, no-c-format
  msgid "The scale (as a percentage) applied to inline-insns-single and auto limits when heuristics hints that inlining is very profitable."
  msgstr "L'échelle (en pourcents) appliquée à inline-insns-single et les limites auto quand l'heuristique indique que la mise en ligne est très profitable."
  
*************** msgid "The minimal estimated speedup all
*** 10289,10296 ****
  msgstr "L'estimation de l'accélération minimale permettant au code de mise en ligne d'ignorer inline-insns-single et inline-insns-auto."
  
  #: params.opt:246
! #, fuzzy, no-c-format
! #| msgid "How much can given compilation unit grow because of the inlining (in percent)."
  msgid "How much can given compilation unit grow because of the inlining (as a percentage)."
  msgstr "Quelle croissance d'une unité de compilation peut être tolérée en raison de la mise en ligne (en pourcentage)."
  
--- 10164,10170 ----
  msgstr "L'estimation de l'accélération minimale permettant au code de mise en ligne d'ignorer inline-insns-single et inline-insns-auto."
  
  #: params.opt:246
! #, no-c-format
  msgid "How much can given compilation unit grow because of the inlining (as a percentage)."
  msgstr "Quelle croissance d'une unité de compilation peut être tolérée en raison de la mise en ligne (en pourcentage)."
  
*************** msgid "When propagating IPA-CP effect es
*** 10325,10349 ****
  msgstr "Lors de la propagation des estimations des effets IPA-CP, multiplier les fréquences des arêtes récursives qui ramènent une valeur inchangée par ce facteur."
  
  #: params.opt:274
! #, fuzzy, no-c-format
! #| msgid "Percentage penalty the recursive functions will receive when they are evaluated for cloning."
  msgid "Percentage penalty recursive functions receive when they are evaluated for cloning."
! msgstr "Le pourcentage de pénalité que des fonctions récursives recevront quand elles seront évaluées pour un clonage."
  
  #: params.opt:278
! #, fuzzy, no-c-format
! #| msgid "Percentage penalty functions containing a single call to another function will receive when they are evaluated for cloning."
  msgid "Percentage penalty functions containing a single call to another function receive when they are evaluated for cloning."
! msgstr "Le pourcentage de pénalité que des fonctions contenant un unique appel à une autre fonction recevront quand elles seront évaluées pour un clonage."
  
  #: params.opt:282
  #, no-c-format
  msgid "The number of times the interprocedural constant propagation traverses all functions to make cloning decisions."
! msgstr ""
  
  #: params.opt:286
! #, fuzzy, no-c-format
! #| msgid "How much can given compilation unit grow because of the interprocedural constant propagation (in percent)."
  msgid "How much can given compilation unit grow because of the interprocedural constant propagation (as a percentage)."
  msgstr "Quelle croissance d'une unité de compilation peut être tolérée à cause de la propagation interprocédurale de constantes (en pourcentage)."
  
--- 10199,10220 ----
  msgstr "Lors de la propagation des estimations des effets IPA-CP, multiplier les fréquences des arêtes récursives qui ramènent une valeur inchangée par ce facteur."
  
  #: params.opt:274
! #, no-c-format
  msgid "Percentage penalty recursive functions receive when they are evaluated for cloning."
! msgstr "Le pourcentage de pénalité que des fonctions récursives reçoivent quand elles sont évaluées pour un clonage."
  
  #: params.opt:278
! #, no-c-format
  msgid "Percentage penalty functions containing a single call to another function receive when they are evaluated for cloning."
! msgstr "Le pourcentage de pénalité que des fonctions contenant un unique appel à une autre fonction reçoivent quand elles sont évaluées pour un clonage."
  
  #: params.opt:282
  #, no-c-format
  msgid "The number of times the interprocedural constant propagation traverses all functions to make cloning decisions."
! msgstr "Le nombre de fois qu'une propagation de constante entre procédures traverse toutes les fonctions pour décider du clonage."
  
  #: params.opt:286
! #, no-c-format
  msgid "How much can given compilation unit grow because of the interprocedural constant propagation (as a percentage)."
  msgstr "Quelle croissance d'une unité de compilation peut être tolérée à cause de la propagation interprocédurale de constantes (en pourcentage)."
  
*************** msgid "Maximum number of statements visi
*** 10363,10372 ****
  msgstr "Le nombre maximum d'instructions visitées durant la découverte de l'offset d'une fonction de saut."
  
  #: params.opt:302
! #, fuzzy, no-c-format
! #| msgid "Maximum number of statements that will be visited by IPA formal parameter analysis based on alias analysis in any given function."
  msgid "Maximum number of statements that are visited by IPA formal parameter analysis based on alias analysis in any given function."
! msgstr "Le nombre maximum d'expressions qui seront visitées par l'analyse des paramètres formels de IPA basé sur l'analyse d'alias dans une fonction quelconque."
  
  #: params.opt:306
  #, no-c-format
--- 10234,10242 ----
  msgstr "Le nombre maximum d'instructions visitées durant la découverte de l'offset d'une fonction de saut."
  
  #: params.opt:302
! #, no-c-format
  msgid "Maximum number of statements that are visited by IPA formal parameter analysis based on alias analysis in any given function."
! msgstr "Le nombre maximum d'expressions qui sont visitées par l'analyse des paramètres formels de IPA basé sur l'analyse d'alias dans une fonction quelconque."
  
  #: params.opt:306
  #, no-c-format
*************** msgid "Maximal number of boundary endpoi
*** 10390,10399 ****
  msgstr "Le nombre maximum d'extrémités de frontière de plage de « case » dans une instruction « switch » utilisée durant la génération du résumé de la fonction IPA."
  
  #: params.opt:322
! #, fuzzy, no-c-format
! #| msgid "Minimum probability (in percent) of dereferencing of a function pointer parameter for it to be considered for replacement with simple values."
  msgid "Minimum probability (as a percentage) of dereferencing of a function pointer parameter for it to be considered for replacement with simple values."
! msgstr "Probabilité minimale (en pour-cent) de déréférencer un paramètre pointeur d'une fonction pour que son remplacement par de simples valeurs soit considéré."
  
  #: params.opt:326
  #, no-c-format
--- 10260,10268 ----
  msgstr "Le nombre maximum d'extrémités de frontière de plage de « case » dans une instruction « switch » utilisée durant la génération du résumé de la fonction IPA."
  
  #: params.opt:322
! #, no-c-format
  msgid "Minimum probability (as a percentage) of dereferencing of a function pointer parameter for it to be considered for replacement with simple values."
! msgstr "Probabilité minimale (en pourcentage) de déréférencer un paramètre pointeur d'une fonction pour que son remplacement par de simples valeurs soit considéré."
  
  #: params.opt:326
  #, no-c-format
*************** msgid "The number of registers in each c
*** 10416,10425 ****
  msgstr "Le nombre de registres de chaque classe laissés inutilisés par les déplacements invariants au niveau des boucles."
  
  #: params.opt:342
! #, fuzzy, no-c-format
! #| msgid "Max size of conflict table in MB."
  msgid "Maximum size of conflict table in MB."
! msgstr "La taille max de la table des conflits en Mo."
  
  #: params.opt:346
  #, no-c-format
--- 10285,10293 ----
  msgstr "Le nombre de registres de chaque classe laissés inutilisés par les déplacements invariants au niveau des boucles."
  
  #: params.opt:342
! #, no-c-format
  msgid "Maximum size of conflict table in MB."
! msgstr "La taille maximale de la table des conflits en Mo."
  
  #: params.opt:346
  #, no-c-format
*************** msgid "Approximate function insn number
*** 10427,10472 ****
  msgstr "Nombre d'instructions de fonction approximatif en unité de 1K qui déclenche un simple RA local."
  
  #: params.opt:350
! #, fuzzy, no-c-format
! #| msgid "Max loops number for regional RA."
  msgid "Maximum number of loops for regional RA."
! msgstr "Le nombre max de boucles pour l'allocation de registre régional."
  
  #: params.opt:354
! #, fuzzy, no-c-format
! #| msgid "Control ira to consider matching constraint (duplicated operand number) heavily in all available alternatives for preferred register class.  If it is set as zero, it means ira only respects the matching constraint when it's in the only available alternative with an appropriate register class.  Otherwise, it means ira will check all available alternatives for preferred register class even if it has found some choice with an appropriate register class and respect the found qualified matching constraint."
  msgid "Control IRA to consider matching constraint (duplicated operand number) heavily in all available alternatives for preferred register class.  If it is set as zero, it means IRA only respects the matching constraint when it's in the only available alternative with an appropriate register class.  Otherwise, it means IRA checks all available alternatives for preferred register class even if it has found some choice with an appropriate register class and respect the found qualified matching constraint."
! msgstr "Contrôle comment ira considère la correspondance des contraintes (numéro d'opérande dupliqué) dans toutes les alternatives disponibles pour la classe de registre préférée. Une valeur de zéro signifie que ira respecte uniquement la contrainte correspondante uniquement quand elle est dans l'unique alternative disponible avec la classe de registre appropriée. Sinon, ira vérifiera toutes les alternatives disponibles pour la classe de registre préférée même s'il a trouvé quelques choix avec une classe de registre appropriée et respectant la contrainte correspondante qualifiée."
  
  #: params.opt:358
! #, fuzzy, no-c-format
! #| msgid "If number of candidates in the set is smaller, we always try to remove unused ivs during its optimization."
  msgid "If number of candidates in the set is smaller, we always try to remove unused induction variables during its optimization."
! msgstr "Si le nombre de candidats dans l'ensemble est plus petit, on essaie toujours de retirer les IV inutilisés durant son optimisation."
  
  #: params.opt:362
! #, fuzzy, no-c-format
! #| msgid "Bound on number of candidates below that all candidates are considered in iv optimizations."
  msgid "Bound on number of candidates below that all candidates are considered in induction variable optimizations."
! msgstr "Limite sur le nombre de candidats en dessous de laquelle tous les candidats sont pris en compte dans les optimisations d'IV."
  
  #: params.opt:366
! #, fuzzy, no-c-format
! #| msgid "Bound on number of iv uses in loop optimized in iv optimizations."
  msgid "Bound on number of induction variable uses in loop optimized in IV optimizations."
! msgstr "Limite sur le nombre d'utilisations d'IV dans une boucle optimisée dans des optimisations d'IV."
  
  #: params.opt:370
! #, fuzzy, no-c-format
! #| msgid "The maximum code size growth ratio when expanding into a jump table (in percent).  The parameter is used when optimizing for size."
  msgid "The maximum code size growth ratio when expanding into a jump table (as a percentage).  The parameter is used when optimizing for size."
! msgstr "Le rapport maximum d'augmentation de la taille du code lors de l'expansion en une table de sauts (en pourcent). Le paramètre est utilisé lors d'une optimisation pour la taille."
  
  #: params.opt:374
! #, fuzzy, no-c-format
! #| msgid "The maximum code size growth ratio when expanding into a jump table (in percent).  The parameter is used when optimizing for speed."
  msgid "The maximum code size growth ratio when expanding into a jump table (as a percentage).  The parameter is used when optimizing for speed."
! msgstr "Le rapport maximum d'augmentation de la taille du code lors de l'expansion en une table de sauts (en pourcent). Le paramètre est utilisé lors d'une optimisation pour la vitesse."
  
  #: params.opt:378
  #, no-c-format
--- 10295,10333 ----
  msgstr "Nombre d'instructions de fonction approximatif en unité de 1K qui déclenche un simple RA local."
  
  #: params.opt:350
! #, no-c-format
  msgid "Maximum number of loops for regional RA."
! msgstr "Le nombre maximum de boucles pour l'allocation de registre régional."
  
  #: params.opt:354
! #, no-c-format
  msgid "Control IRA to consider matching constraint (duplicated operand number) heavily in all available alternatives for preferred register class.  If it is set as zero, it means IRA only respects the matching constraint when it's in the only available alternative with an appropriate register class.  Otherwise, it means IRA checks all available alternatives for preferred register class even if it has found some choice with an appropriate register class and respect the found qualified matching constraint."
! msgstr "Contrôle comment IRA considère la correspondance des contraintes (numéro d'opérande dupliqué) dans toutes les alternatives disponibles pour la classe de registre préférée. Une valeur de zéro signifie que IRA respecte uniquement la contrainte correspondante uniquement quand elle est dans l'unique alternative disponible avec la classe de registre appropriée. Sinon, IRA vérifiera toutes les alternatives disponibles pour la classe de registre préférée même s'il a trouvé quelques choix avec une classe de registre appropriée et respectant la contrainte correspondante qualifiée."
  
  #: params.opt:358
! #, no-c-format
  msgid "If number of candidates in the set is smaller, we always try to remove unused induction variables during its optimization."
! msgstr "Si le nombre de candidats dans l'ensemble est plus petit, on essaie toujours de retirer les variables d'induction inutilisés durant son optimisation."
  
  #: params.opt:362
! #, no-c-format
  msgid "Bound on number of candidates below that all candidates are considered in induction variable optimizations."
! msgstr "Limite sur le nombre de candidats en dessous de laquelle tous les candidats sont pris en compte dans les optimisations des variables d'induction."
  
  #: params.opt:366
! #, no-c-format
  msgid "Bound on number of induction variable uses in loop optimized in IV optimizations."
! msgstr "Limite sur le nombre d'utilisations de variables d'induction dans une boucle optimisée dans des optimisations des variables d'induction."
  
  #: params.opt:370
! #, no-c-format
  msgid "The maximum code size growth ratio when expanding into a jump table (as a percentage).  The parameter is used when optimizing for size."
! msgstr "Le rapport maximum d'augmentation de la taille du code lors de l'expansion en une table de sauts (en pourcentage). Le paramètre est utilisé lors d'une optimisation pour la taille."
  
  #: params.opt:374
! #, no-c-format
  msgid "The maximum code size growth ratio when expanding into a jump table (as a percentage).  The parameter is used when optimizing for speed."
! msgstr "Le rapport maximum d'augmentation de la taille du code lors de l'expansion en une table de sauts (en pourcentage). Le paramètre est utilisé lors d'une optimisation pour la vitesse."
  
  #: params.opt:378
  #, no-c-format
*************** msgid "The size of L2 cache."
*** 10494,10501 ****
  msgstr "La taille du cache L2."
  
  #: params.opt:406
! #, fuzzy, no-c-format
! #| msgid "Maximal growth due to inlining of large function (in percent)."
  msgid "Maximal growth due to inlining of large function (as a percentage)."
  msgstr "Croissance maximale due à la mise en ligne d'une grande fonction (en pourcentage)."
  
--- 10355,10361 ----
  msgstr "La taille du cache L2."
  
  #: params.opt:406
! #, no-c-format
  msgid "Maximal growth due to inlining of large function (as a percentage)."
  msgstr "Croissance maximale due à la mise en ligne d'une grande fonction (en pourcentage)."
  
*************** msgid "The size of stack frame to be con
*** 10510,10517 ****
  msgstr "La taille de la trame de pile qui est considérée comme étant grande"
  
  #: params.opt:418
! #, fuzzy, no-c-format
! #| msgid "Maximal stack frame growth due to inlining (in percent)."
  msgid "Maximal stack frame growth due to inlining (as a percentage)."
  msgstr "Croissance maximale de la trame de pile causée par la mise en ligne (en pourcentage)."
  
--- 10370,10376 ----
  msgstr "La taille de la trame de pile qui est considérée comme étant grande"
  
  #: params.opt:418
! #, no-c-format
  msgid "Maximal stack frame growth due to inlining (as a percentage)."
  msgstr "Croissance maximale de la trame de pile causée par la mise en ligne (en pourcentage)."
  
*************** msgid "The maximum number of instruction
*** 10571,10578 ****
  msgstr "Le nombre maximum d'instructions dans une boucle externe qui est envisagée pour la déclinaison de version en plus des instruction dans la boucle interne."
  
  #: params.opt:466
! #, fuzzy, no-c-format
! #| msgid "Minimal fall-through edge probability in percentage used to add BB to inheritance EBB in LRA."
  msgid "Minimal fall-through edge probability as a percentage, used to add BB to inheritance EBB in LRA."
  msgstr "La probabilité minimale, en pourcents, qu'une arrête enchaîne immédiatement sur une autre pour décider d'ajouter un BB à un EBB d'héritage dans LRA."
  
--- 10430,10436 ----
  msgstr "Le nombre maximum d'instructions dans une boucle externe qui est envisagée pour la déclinaison de version en plus des instruction dans la boucle interne."
  
  #: params.opt:466
! #, no-c-format
  msgid "Minimal fall-through edge probability as a percentage, used to add BB to inheritance EBB in LRA."
  msgstr "La probabilité minimale, en pourcents, qu'une arrête enchaîne immédiatement sur une autre pour décider d'ajouter un BB à un EBB d'héritage dans LRA."
  
*************** msgid "Maximal size of a partition for L
*** 10592,10601 ****
  msgstr "La taille maximale d'une partition pour LTO (en instructions estimées)."
  
  #: params.opt:486
! #, fuzzy, no-c-format
! #| msgid "maximal number of LTO partitions streamed in parallel."
  msgid "Maximal number of LTO partitions streamed in parallel."
! msgstr "nombre maximum de partitions LTO envoyées en parallèle dans le flux."
  
  #: params.opt:490
  #, no-c-format
--- 10450,10458 ----
  msgstr "La taille maximale d'une partition pour LTO (en instructions estimées)."
  
  #: params.opt:486
! #, no-c-format
  msgid "Maximal number of LTO partitions streamed in parallel."
! msgstr "Nombre maximum de partitions LTO envoyées en parallèle dans le flux."
  
  #: params.opt:490
  #, no-c-format
*************** msgid "The maximum memory locations reco
*** 10678,10687 ****
  msgstr "Les positions mémoire maximum enregistrées par cselib."
  
  #: params.opt:575
! #, fuzzy, no-c-format
! #| msgid "Max. count of debug markers to expand or inline."
  msgid "Maximum count of debug markers to expand or inline."
! msgstr "Nombre max de marqueurs de débogage à étendre ou mettre en ligne."
  
  #: params.opt:579
  #, no-c-format
--- 10535,10543 ----
  msgstr "Les positions mémoire maximum enregistrées par cselib."
  
  #: params.opt:575
! #, no-c-format
  msgid "Maximum count of debug markers to expand or inline."
! msgstr "Nombre maximum de marqueurs de débogage à étendre ou mettre en ligne."
  
  #: params.opt:579
  #, no-c-format
*************** msgid "Maximum number of active local st
*** 10699,10708 ****
  msgstr "Le nombre maximum de stockages locaux actifs dans l'élimination des stockages morts de RTL."
  
  #: params.opt:591
! #, fuzzy, no-c-format
! #| msgid "Max number of bytes to move inline."
  msgid "Maximum number of targets to devirutalize."
! msgstr "Nombre max d'octets à déplacer en ligne."
  
  #: params.opt:595
  #, no-c-format
--- 10555,10563 ----
  msgstr "Le nombre maximum de stockages locaux actifs dans l'élimination des stockages morts de RTL."
  
  #: params.opt:591
! #, no-c-format
  msgid "Maximum number of targets to devirutalize."
! msgstr "Nombre maximal de cibles à dévirtualiser."
  
  #: params.opt:595
  #, no-c-format
*************** msgid "Maximum amount of iterations of t
*** 10960,10969 ****
  msgstr "Le nombre maximum d'itérations du passage sur une fonction."
  
  #: params.opt:811
! #, fuzzy, no-c-format
! #| msgid "Maximum number of strings for which strlen optimization pass will track string lengths."
  msgid "Maximum number of strings for which strlen optimization pass tracks string lengths."
! msgstr "Le nombre maximum de chaînes pour lesquelles l'optimisation de strlen conserve la longueur des chaînes."
  
  #: params.opt:815
  #, no-c-format
--- 10815,10823 ----
  msgstr "Le nombre maximum d'itérations du passage sur une fonction."
  
  #: params.opt:811
! #, no-c-format
  msgid "Maximum number of strings for which strlen optimization pass tracks string lengths."
! msgstr "Le nombre maximum de chaînes pour lesquelles l'étape d'optimisation de strlen conserve la longueur des chaînes."
  
  #: params.opt:815
  #, no-c-format
*************** msgid "The maximum depth of a loop nest
*** 10991,11018 ****
  msgstr "La profondeur maximum de boucles imbriquées qui peuvent être déplacées à l'intérieur des branchements."
  
  #: params.opt:835
! #, fuzzy, no-c-format
! #| msgid "If -fvariable-expansion-in-unroller is used, the maximum number of times that an individual variable will be expanded during loop unrolling."
  msgid "If -fvariable-expansion-in-unroller is used, the maximum number of times that an individual variable is expanded during loop unrolling."
! msgstr "Si -fvariable-expansion-in-unroller est utilisé, le nombre maximum de fois qu'une variable individuelle sera développée pendant le dépliage de la boucle."
  
  #: params.opt:839
! #, fuzzy, no-c-format
! #| msgid "Max. recursion depth for expanding var tracking expressions."
  msgid "Maximum recursion depth for expanding var tracking expressions."
! msgstr "La profondeur de récursion max pour développer les expressions de pistage de variables."
  
  #: params.opt:843
! #, fuzzy, no-c-format
! #| msgid "Max. size of loc list for which reverse ops should be added."
  msgid "Maximum size of loc list for which reverse ops should be added."
! msgstr "La taille max de la liste des emplacements pour laquelle des opérations inverses devraient être ajoutées."
  
  #: params.opt:847
! #, fuzzy, no-c-format
! #| msgid "Max. size of var tracking hash tables."
  msgid "Maximum size of var tracking hash tables."
! msgstr "La taille max des tables de hachage pour le pistage des variables."
  
  #: params.opt:851
  #, no-c-format
--- 10845,10868 ----
  msgstr "La profondeur maximum de boucles imbriquées qui peuvent être déplacées à l'intérieur des branchements."
  
  #: params.opt:835
! #, no-c-format
  msgid "If -fvariable-expansion-in-unroller is used, the maximum number of times that an individual variable is expanded during loop unrolling."
! msgstr "Si -fvariable-expansion-in-unroller est utilisé, le nombre maximum de fois qu'une variable individuelle est développée pendant le dépliage de la boucle."
  
  #: params.opt:839
! #, no-c-format
  msgid "Maximum recursion depth for expanding var tracking expressions."
! msgstr "La profondeur de récursion maximale pour développer les expressions de pistage de variables."
  
  #: params.opt:843
! #, no-c-format
  msgid "Maximum size of loc list for which reverse ops should be added."
! msgstr "La taille maximale de la liste des emplacements pour laquelle des opérations inverses devraient être ajoutées."
  
  #: params.opt:847
! #, no-c-format
  msgid "Maximum size of var tracking hash tables."
! msgstr "La taille maximale des tables de hachage pour le pistage des variables."
  
  #: params.opt:851
  #, no-c-format
*************** msgid "Inline recursively only when the
*** 11030,11039 ****
  msgstr "Mettre en ligne récursif uniquement quand la probabilité que l'appel soit exécuté dépasse le paramètre."
  
  #: params.opt:863
! #, fuzzy, no-c-format
! #| msgid "Min. ratio of insns to prefetches to enable prefetching for a loop with an unknown trip count."
  msgid "Minimum ratio of insns to prefetches to enable prefetching for a loop with an unknown trip count."
! msgstr "Le rapport min entre les insns et les pré-extractions pour activer la pré-extraction dans une boucle avec un nombre inconnu d'itérations."
  
  #: params.opt:867
  #, no-c-format
--- 10880,10888 ----
  msgstr "Mettre en ligne récursif uniquement quand la probabilité que l'appel soit exécuté dépasse le paramètre."
  
  #: params.opt:863
! #, no-c-format
  msgid "Minimum ratio of insns to prefetches to enable prefetching for a loop with an unknown trip count."
! msgstr "Le rapport minimum entre les insns et les pré-extractions pour activer la pré-extraction dans une boucle avec un nombre inconnu d'itérations."
  
  #: params.opt:867
  #, no-c-format
*************** msgid "--param=parloops-schedule=[static
*** 11086,11095 ****
  msgstr "--param=parloops-schedule=[static|dynamic|guided|auto|runtime]\tType d'ordonnancement de l'ordonnanceur OMP pour des boucles parallélisées par parloops."
  
  #: params.opt:943
! #, fuzzy, no-c-format
! #| msgid "Maximum probability of the entry BB of split region (in percent relative to entry BB of the function) to make partial inlining happen."
  msgid "Maximum probability of the entry BB of split region (as a percentage relative to entry BB of the function) to make partial inlining happen."
! msgstr "Probabilité maximum que l'entrée B8 d'une région scindée (en pourcent relatif à l'entrée B8 de la fonction) pour réaliser la mise en ligne partielle."
  
  #: params.opt:947
  #, no-c-format
--- 10935,10943 ----
  msgstr "--param=parloops-schedule=[static|dynamic|guided|auto|runtime]\tType d'ordonnancement de l'ordonnanceur OMP pour des boucles parallélisées par parloops."
  
  #: params.opt:943
! #, no-c-format
  msgid "Maximum probability of the entry BB of split region (as a percentage relative to entry BB of the function) to make partial inlining happen."
! msgstr "Probabilité maximum que l'entrée BB d'une région scindée (en pourcent relatif à l'entrée BB de la fonction) pour réaliser la mise en ligne partielle."
  
  #: params.opt:947
  #, no-c-format
*************** msgid "The number of insns executed befo
*** 11112,11121 ****
  msgstr "Le nombre d'insns exécutées avant que la pré-extraction soit terminée."
  
  #: params.opt:963
! #, fuzzy, no-c-format
! #| msgid "Min. ratio of insns to mem ops to enable prefetching in a loop."
  msgid "Minimum ratio of insns to mem ops to enable prefetching in a loop."
! msgstr "Le rapport min entre les insns et les opérandes mémoire pour activer la pré-extraction dans une boucle."
  
  #: params.opt:967
  #, no-c-format
--- 10960,10968 ----
  msgstr "Le nombre d'insns exécutées avant que la pré-extraction soit terminée."
  
  #: params.opt:963
! #, no-c-format
  msgid "Minimum ratio of insns to mem ops to enable prefetching in a loop."
! msgstr "Le rapport minimum entre les insns et les opérandes mémoire pour activer la pré-extraction dans une boucle."
  
  #: params.opt:967
  #, no-c-format
*************** msgid "--param=ranger-debug=[none|trace|
*** 11133,11142 ****
  msgstr "--param=ranger-debug=[none|trace|gori|cache|tracegori|all] Spécifie le mode de sortie pour la plage de débogage."
  
  #: params.opt:1000
! #, fuzzy, no-c-format
! #| msgid "Maximum depth of logical expression evaluation ranger will look through when evaluating outgoing edge ranges."
  msgid "Maximum depth of logical expression evaluation ranger looks through when evaluating outgoing edge ranges."
! msgstr "La profondeur maximale de l'évaluation d'expressions logiques qui sera examinée en évaluant les portées des arrêtes sortantes."
  
  #: params.opt:1005
  #, no-c-format
--- 10980,10988 ----
  msgstr "--param=ranger-debug=[none|trace|gori|cache|tracegori|all] Spécifie le mode de sortie pour la plage de débogage."
  
  #: params.opt:1000
! #, no-c-format
  msgid "Maximum depth of logical expression evaluation ranger looks through when evaluating outgoing edge ranges."
! msgstr "La profondeur maximale de l'évaluation d'expressions logiques qui est examinée en évaluant les portées des arrêtes sortantes."
  
  #: params.opt:1005
  #, no-c-format
*************** msgid "Maximum depth of instruction chai
*** 11144,11153 ****
  msgstr "La profondeur maximale des chaînes d'instructions à envisager pour le recalcule dans le calculateur de la plage de sortie."
  
  #: params.opt:1010
! #, fuzzy, no-c-format
! #| msgid "Maximum number of relations the oracle will register in a basic block."
  msgid "Maximum number of relations the oracle registers in a basic block."
! msgstr "Le nombre maximum de relations que l'oracle enregistrera dans un bloc de base."
  
  #: params.opt:1014
  #, no-c-format
--- 10990,10998 ----
  msgstr "La profondeur maximale des chaînes d'instructions à envisager pour le recalcule dans le calculateur de la plage de sortie."
  
  #: params.opt:1010
! #, no-c-format
  msgid "Maximum number of relations the oracle registers in a basic block."
! msgstr "Le nombre maximum de relations que l'oracle enregistre dans un bloc de base."
  
  #: params.opt:1014
  #, no-c-format
*************** msgid "Which -fsched-pressure algorithm
*** 11190,11199 ****
  msgstr "Quel algorithme de -fsched-pressure appliquer."
  
  #: params.opt:1046
! #, fuzzy, no-c-format
! #| msgid "The minimal probability of speculation success (in percents), so that speculative insn will be scheduled."
  msgid "The minimal probability of speculation success (as a percentage), so that speculative insns are scheduled."
! msgstr "La probabilité minimale de succès de spéculation (en pourcent) de telle manière que l'insn spéculative sera ordonnancée."
  
  #: params.opt:1050
  #, no-c-format
--- 11035,11043 ----
  msgstr "Quel algorithme de -fsched-pressure appliquer."
  
  #: params.opt:1046
! #, no-c-format
  msgid "The minimal probability of speculation success (as a percentage), so that speculative insns are scheduled."
! msgstr "La probabilité minimale de succès de spéculation (en pourcentage) de telle manière que l'insn spéculative soit ordonnancée."
  
  #: params.opt:1050
  #, no-c-format
*************** msgid "A factor for tuning the upper bou
*** 11241,11250 ****
  msgstr "Un facteur pour ajuster la limite supérieure que le « Swing Modulo Scheduler » utilise pour ordonnancer une boucle."
  
  #: params.opt:1086
! #, fuzzy, no-c-format
! #| msgid "The minimum value of stage count that swing modulo scheduler will generate."
  msgid "The minimum value of stage count that swing modulo scheduler generates."
! msgstr "La valeur minimum du décompte des étapes que le « Swing Modulo Scheduler » va générer."
  
  #: params.opt:1090
  #, no-c-format
--- 11085,11093 ----
  msgstr "Un facteur pour ajuster la limite supérieure que le « Swing Modulo Scheduler » utilise pour ordonnancer une boucle."
  
  #: params.opt:1086
! #, no-c-format
  msgid "The minimum value of stage count that swing modulo scheduler generates."
! msgstr "La valeur minimum du décompte des étapes que le « Swing Modulo Scheduler » génère."
  
  #: params.opt:1090
  #, no-c-format
*************** msgid "Maximum size, in storage units, o
*** 11257,11266 ****
  msgstr "La taille maximale, en unité de stockage, d'un agrégat qui devrait être considéré pour une conversion scalaire lors d'une compilation pour la vitesse."
  
  #: params.opt:1098
! #, fuzzy, no-c-format
! #| msgid "Maximum number of artificial accesses to enable forward propagation that Scalar Replacement of Aggregates will keep for one local variable."
  msgid "Maximum number of artificial accesses to enable forward propagation that Scalar Replacement of Aggregates keeps for one local variable."
! msgstr "Nombre maximum d'accès artificiels pour activer la propagation vers l'avant que le remplacement scalaire d'agrégats gardera pour une variable locale."
  
  #: params.opt:1102
  #, no-c-format
--- 11100,11108 ----
  msgstr "La taille maximale, en unité de stockage, d'un agrégat qui devrait être considéré pour une conversion scalaire lors d'une compilation pour la vitesse."
  
  #: params.opt:1098
! #, no-c-format
  msgid "Maximum number of artificial accesses to enable forward propagation that Scalar Replacement of Aggregates keeps for one local variable."
! msgstr "Nombre maximum d'accès artificiels pour activer la propagation vers l'avant que le remplacement scalaire d'agrégats garde pour une variable locale."
  
  #: params.opt:1102
  #, no-c-format
*************** msgid "The percentage of function, weigh
*** 11358,11389 ****
  msgstr "Le pourcentage d'une fonction, pondéré par la fréquence d'exécution, qui doit être couvert par la formation de la trace. Utilisé lorsque le feedback par profilage est disponible."
  
  #: params.opt:1187
! #, fuzzy, no-c-format
! #| msgid "Maximal code growth caused by tail duplication (in percent)."
  msgid "Maximal code growth caused by tail duplication (as a percentage)."
  msgstr "Croissance maximale du code par la duplication de queue (en pourcentage)."
  
  #: params.opt:1191
! #, fuzzy, no-c-format
! #| msgid "Stop forward growth if the probability of best edge is less than this threshold (in percent). Used when profile feedback is not available."
  msgid "Stop forward growth if the probability of best edge is less than this threshold (as a percentage). Used when profile feedback is not available."
  msgstr "Stopper la croissance anticipée si la probabilité des meilleures arêtes est inférieure à ce seuil (en pourcentage). Utilisé lorsque le feedback par profilage n'est pas disponible."
  
  #: params.opt:1195
! #, fuzzy, no-c-format
! #| msgid "Stop forward growth if the probability of best edge is less than this threshold (in percent). Used when profile feedback is available."
  msgid "Stop forward growth if the probability of best edge is less than this threshold (as a percentage). Used when profile feedback is available."
  msgstr "Stopper la croissance anticipée si la probabilité des meilleures arêtes est inférieure à ce seuil (en pourcentage). Utilisé lorsque le feedback par profilage est disponible."
  
  #: params.opt:1199
! #, fuzzy, no-c-format
! #| msgid "Stop reverse growth if the reverse probability of best edge is less than this threshold (in percent)."
  msgid "Stop reverse growth if the reverse probability of best edge is less than this threshold (as a percentage)."
  msgstr "Stopper la croissance renversée si la probabilité inverse des meilleures arêtes est inférieure à ce seuil (en pourcentage)."
  
  #: params.opt:1203
! #, fuzzy, no-c-format
! #| msgid "Set the maximum number of instructions executed in parallel in reassociated tree.  If 0, use the target dependent heuristic."
  msgid "Set the maximum number of instructions executed in parallel in reassociated tree.  If 0, use the target-dependent heuristic."
  msgstr "Fixe le nombre maximum d'instructions exécutées en parallèle dans un arbre ré-associé. Si 0, utilise l'heuristique dépendant de la cible."
  
--- 11200,11226 ----
  msgstr "Le pourcentage d'une fonction, pondéré par la fréquence d'exécution, qui doit être couvert par la formation de la trace. Utilisé lorsque le feedback par profilage est disponible."
  
  #: params.opt:1187
! #, no-c-format
  msgid "Maximal code growth caused by tail duplication (as a percentage)."
  msgstr "Croissance maximale du code par la duplication de queue (en pourcentage)."
  
  #: params.opt:1191
! #, no-c-format
  msgid "Stop forward growth if the probability of best edge is less than this threshold (as a percentage). Used when profile feedback is not available."
  msgstr "Stopper la croissance anticipée si la probabilité des meilleures arêtes est inférieure à ce seuil (en pourcentage). Utilisé lorsque le feedback par profilage n'est pas disponible."
  
  #: params.opt:1195
! #, no-c-format
  msgid "Stop forward growth if the probability of best edge is less than this threshold (as a percentage). Used when profile feedback is available."
  msgstr "Stopper la croissance anticipée si la probabilité des meilleures arêtes est inférieure à ce seuil (en pourcentage). Utilisé lorsque le feedback par profilage est disponible."
  
  #: params.opt:1199
! #, no-c-format
  msgid "Stop reverse growth if the reverse probability of best edge is less than this threshold (as a percentage)."
  msgstr "Stopper la croissance renversée si la probabilité inverse des meilleures arêtes est inférieure à ce seuil (en pourcentage)."
  
  #: params.opt:1203
! #, no-c-format
  msgid "Set the maximum number of instructions executed in parallel in reassociated tree.  If 0, use the target-dependent heuristic."
  msgstr "Fixe le nombre maximum d'instructions exécutées en parallèle dans un arbre ré-associé. Si 0, utilise l'heuristique dépendant de la cible."
  
*************** msgid "Maximum number of basic blocks be
*** 11523,11530 ****
  msgstr "Le nombre maximum de blocs de base avant que VRP utilise une cache peu dense."
  
  #: params.opt:1316
! #, fuzzy, no-c-format
! #| msgid "Maximum number of outgoing edges in a switch before VRP will not process it."
  msgid "Maximum number of outgoing edges in a switch before VRP does not process it."
  msgstr "Le nombre maximum d'arêtes sortantes dans un switch avant que VRP ne le traite pas."
  
--- 11360,11366 ----
  msgstr "Le nombre maximum de blocs de base avant que VRP utilise une cache peu dense."
  
  #: params.opt:1316
! #, no-c-format
  msgid "Maximum number of outgoing edges in a switch before VRP does not process it."
  msgstr "Le nombre maximum d'arêtes sortantes dans un switch avant que VRP ne le traite pas."
  
*************** msgid "Warn about code paths in which an
*** 11784,11793 ****
  msgstr "Avertir à propos de chemins dans le code où une valeur brute est utilisée comme taille."
  
  #: analyzer/analyzer.opt:227
! #, fuzzy, no-c-format
! #| msgid "Warn about code paths in which a non-heap pointer is freed."
  msgid "Warn about code paths in which an exception of unexpected type is thrown."
! msgstr "Avertir à propos de chemins dans le code où un pointeur qui n'est pas sur le tas est libéré."
  
  #: analyzer/analyzer.opt:231
  #, no-c-format
--- 11620,11628 ----
  msgstr "Avertir à propos de chemins dans le code où une valeur brute est utilisée comme taille."
  
  #: analyzer/analyzer.opt:227
! #, no-c-format
  msgid "Warn about code paths in which an exception of unexpected type is thrown."
! msgstr "Avertir à propos de chemins dans le code dans lesquels une exception d'un type inattendu est levée."
  
  #: analyzer/analyzer.opt:231
  #, no-c-format
*************** msgid "Warn if the code is too complicat
*** 11855,11864 ****
  msgstr "Avertir si le code est trop compliqué pour que l'analyseur réussisse à l'explorer entièrement."
  
  #: analyzer/analyzer.opt:283
! #, fuzzy, no-c-format
! #| msgid "Delete dead instructions that may throw exceptions."
  msgid "Assume that no function calls can throw exceptions."
! msgstr "Supprimer les instructions inutiles qui peuvent déclencher des exceptions."
  
  #: analyzer/analyzer.opt:287
  #, no-c-format
--- 11690,11698 ----
  msgstr "Avertir si le code est trop compliqué pour que l'analyseur réussisse à l'explorer entièrement."
  
  #: analyzer/analyzer.opt:283
! #, no-c-format
  msgid "Assume that no function calls can throw exceptions."
! msgstr "Supposer qu'aucun appel de fonction peut déclencher des exceptions."
  
  #: analyzer/analyzer.opt:287
  #, no-c-format
*************** msgstr "Afficher les options de la ligne
*** 12023,12032 ****
  #: common.opt:460 common.opt:502 common.opt:506 common.opt:510 common.opt:514
  #: common.opt:518 common.opt:522 common.opt:526 common.opt:943 common.opt:3861
  #: common.opt:3956 common.opt:4070
! #, fuzzy, no-c-format
! #| msgid "Pass -z text to linker."
  msgid "Passed to the linker."
! msgstr "Passer le texte -z à l'éditeur de liens."
  
  #: common.opt:464
  #, no-c-format
--- 11857,11865 ----
  #: common.opt:460 common.opt:502 common.opt:506 common.opt:510 common.opt:514
  #: common.opt:518 common.opt:522 common.opt:526 common.opt:943 common.opt:3861
  #: common.opt:3956 common.opt:4070
! #, no-c-format
  msgid "Passed to the linker."
! msgstr "Passer à l'éditeur de liens."
  
  #: common.opt:464
  #, no-c-format
*************** msgid "Warn if an array is accessed out
*** 12084,12093 ****
  msgstr "Avertir si un tableau est accédé en dehors de ses limites."
  
  #: common.opt:558
! #, fuzzy, no-c-format
! #| msgid "Warn about zero-length formats."
  msgid "Warn about problems with auto-profile data."
! msgstr "Avertir à propos des chaînes de format de longueur nulle."
  
  #: common.opt:562 common.opt:566
  #, no-c-format
--- 11917,11925 ----
  msgstr "Avertir si un tableau est accédé en dehors de ses limites."
  
  #: common.opt:558
! #, no-c-format
  msgid "Warn about problems with auto-profile data."
! msgstr "Avertir à propos de problèmes avec les données de du profil automatique."
  
  #: common.opt:562 common.opt:566
  #, no-c-format
*************** msgid "-fdiagnostics-column-origin=<numb
*** 12855,12864 ****
  msgstr "-fdiagnostics-column-origin=<numéro>\tDéfini le numéro de la première colonne.  Le défaut est basé sur 1 en accord avec le style GNU mais certains utilitaires peuvent attendre une base zéro, par exemple."
  
  #: common.opt:1513
! #, fuzzy, no-c-format
! #| msgid "-fdiagnostics-format=[text|sarif-stderr|sarif-file|json|json-stderr|json-file]\tSelect output format."
  msgid "-fdiagnostics-format=[text|sarif-stderr|sarif-file]\tSelect output format."
! msgstr "-fdiagnostics-format=[text|sarif-stderr|sarif-file|json|json-stderr|json-file]\tChoisir le format de sortie."
  
  #: common.opt:1517
  #, no-c-format
--- 12687,12695 ----
  msgstr "-fdiagnostics-column-origin=<numéro>\tDéfini le numéro de la première colonne.  Le défaut est basé sur 1 en accord avec le style GNU mais certains utilitaires peuvent attendre une base zéro, par exemple."
  
  #: common.opt:1513
! #, no-c-format
  msgid "-fdiagnostics-format=[text|sarif-stderr|sarif-file]\tSelect output format."
! msgstr "-fdiagnostics-format=[text|sarif-stderr|sarif-file]\tChoisir le format de sortie."
  
  #: common.opt:1517
  #, no-c-format
*************** msgid "-fhardcfr-check-noreturn-calls=[a
*** 13267,13276 ****
  msgstr "-fhardcfr-check-noreturn-calls=[always|no-xthrow|nothrow|never]\tVérifier les chemins d'exécution CFR aussi avant les fonctions qui ne retournent pas."
  
  #: common.opt:2008
! #, fuzzy, no-c-format
! #| msgid "Emit .stack_size directives."
  msgid "Emit .ident assembler directives."
! msgstr "Générer des directives .stack_size."
  
  #: common.opt:2012
  #, no-c-format
--- 13098,13106 ----
  msgstr "-fhardcfr-check-noreturn-calls=[always|no-xthrow|nothrow|never]\tVérifier les chemins d'exécution CFR aussi avant les fonctions qui ne retournent pas."
  
  #: common.opt:2008
! #, no-c-format
  msgid "Emit .ident assembler directives."
! msgstr "Générer des directives .ident en assembleur."
  
  #: common.opt:2012
  #, no-c-format
*************** msgid "-ftree-parallelize-loops=<number>
*** 14476,14485 ****
  msgstr "-ftree-parallelize-loops=<number>\tActiver la parallélisation automatique des boucles."
  
  #: common.opt:3333
! #, fuzzy, no-c-format
! #| msgid "-ftree-parallelize-loops=<number>\tEnable automatic parallelization of loops."
  msgid "Enable automatic parallelization of loops."
! msgstr "-ftree-parallelize-loops=<number>\tActiver la parallélisation automatique des boucles."
  
  #: common.opt:3337
  #, no-c-format
--- 14306,14314 ----
  msgstr "-ftree-parallelize-loops=<number>\tActiver la parallélisation automatique des boucles."
  
  #: common.opt:3333
! #, no-c-format
  msgid "Enable automatic parallelization of loops."
! msgstr "Activer la parallélisation automatique des boucles."
  
  #: common.opt:3337
  #, no-c-format
*************** msgid "Use the Modern linker (MOLD) link
*** 14617,14632 ****
  msgstr "Utiliser l'éditeur de liens Modern (MOLD) au lieu de l'éditeur par défaut."
  
  #: common.opt:3470
! #, fuzzy, no-c-format
! #| msgid "Use the gold linker instead of the default linker."
  msgid "Use the Wild linker instead of the default linker."
! msgstr "Utiliser l'éditeur de liens gold au lieu de l'éditeur par défaut."
  
  #: common.opt:3477
! #, fuzzy, no-c-format
! #| msgid "Enable link-time optimization."
  msgid "Enable linking of libatomic."
! msgstr "Activer les optimisations durant l'édition de liens."
  
  #: common.opt:3484
  #, no-c-format
--- 14446,14459 ----
  msgstr "Utiliser l'éditeur de liens Modern (MOLD) au lieu de l'éditeur par défaut."
  
  #: common.opt:3470
! #, no-c-format
  msgid "Use the Wild linker instead of the default linker."
! msgstr "Utiliser l'éditeur de liens Wild au lieu de l'éditeur par défaut."
  
  #: common.opt:3477
! #, no-c-format
  msgid "Enable linking of libatomic."
! msgstr "Activer l'édition de lien de libatomic."
  
  #: common.opt:3484
  #, no-c-format
*************** msgid "Do not display functions compiled
*** 14929,14938 ****
  msgstr "Ne pas afficher les fonctions compilées ni le temps écoulé."
  
  #: common.opt:3942
! #, fuzzy, no-c-format
! #| msgid "Produce code relocatable at runtime."
  msgid "Produce a relocatable object as output."
! msgstr "Produire du code relocalisable au moment de l'exécution."
  
  #: common.opt:3946
  #, no-c-format
--- 14756,14764 ----
  msgstr "Ne pas afficher les fonctions compilées ni le temps écoulé."
  
  #: common.opt:3942
! #, no-c-format
  msgid "Produce a relocatable object as output."
! msgstr "Produire un code relocalisable en sortie."
  
  #: common.opt:3946
  #, no-c-format
*************** msgstr "Éliminer le code mort sur des z
*** 14987,15021 ****
  #: algol68/lang.opt:37
  #, no-c-format
  msgid "Warn for usage of non-portable extensions of Algol 68."
! msgstr ""
  
  #: algol68/lang.opt:41
! #, fuzzy, no-c-format
! #| msgid "Warn when a variable is unused."
  msgid "Warn when voiding occurs."
! msgstr "Avertir lorsqu'une variable est inutilisée."
  
  #: algol68/lang.opt:49
! #, fuzzy, no-c-format
! #| msgid "Warn on namespace definition."
  msgid "Warn for potential name scope violations."
! msgstr "Avertir à propos des définitions d'espaces de noms."
  
  #: algol68/lang.opt:65
! #, fuzzy, no-c-format
! #| msgid "Warn about \"extern\" declarations not at file scope."
  msgid "Warn about hidden declarations in inner scopes."
! msgstr "Avertir à propos des déclarations « extern » qui ne sont pas au niveau global du fichier."
  
  #: algol68/lang.opt:69
  #, no-c-format
  msgid "-Whidden-declarations=[none|prelude|all] Warn about declarations hidden in inner scopes."
! msgstr ""
  
  #: algol68/lang.opt:73
  #, no-c-format
  msgid "-fbrackets  \tConsider [ .. ] and { .. } as being equivalent to ( .. )."
! msgstr ""
  
  #: algol68/lang.opt:77 d/lang.opt:190
  #, no-c-format
--- 14813,14844 ----
  #: algol68/lang.opt:37
  #, no-c-format
  msgid "Warn for usage of non-portable extensions of Algol 68."
! msgstr "Avertir à propos de l'utilisation d'extensions non portables de Algol 68."
  
  #: algol68/lang.opt:41
! #, no-c-format
  msgid "Warn when voiding occurs."
! msgstr "Avertir en cas de conversion vers void."
  
  #: algol68/lang.opt:49
! #, no-c-format
  msgid "Warn for potential name scope violations."
! msgstr "Avertir à propos de violations potentielles de la portée nommée."
  
  #: algol68/lang.opt:65
! #, no-c-format
  msgid "Warn about hidden declarations in inner scopes."
! msgstr "Avertir à propos des déclarations cachées dans les portées internes."
  
  #: algol68/lang.opt:69
  #, no-c-format
  msgid "-Whidden-declarations=[none|prelude|all] Warn about declarations hidden in inner scopes."
! msgstr "-Whidden-declarations=[none|prelude|all] Avertir à propos de déclarations cachées dans les portées internes."
  
  #: algol68/lang.opt:73
  #, no-c-format
  msgid "-fbrackets  \tConsider [ .. ] and { .. } as being equivalent to ( .. )."
! msgstr "-fbrackets  \tConsidérer [ .. ] et { .. } comme étant équivalents à ( .. )."
  
  #: algol68/lang.opt:77 d/lang.opt:190
  #, no-c-format
*************** msgid "Generate code for assert contract
*** 15023,15081 ****
  msgstr "Générer du code pour les contrats assert."
  
  #: algol68/lang.opt:85
! #, fuzzy, no-c-format
! #| msgid "Display the code tree after parsing."
  msgid "Dump Algol 68 modes after parsing."
! msgstr "Afficher l'arbre du code après analyse."
  
  #: algol68/lang.opt:89
! #, fuzzy, no-c-format
! #| msgid "Display the code tree after parsing."
  msgid "Dump Algol 68 parse tree after parsing."
! msgstr "Afficher l'arbre du code après analyse."
  
  #: algol68/lang.opt:93
  #, no-c-format
  msgid "Dump the interfaces of module definitions in the compiled packet."
! msgstr ""
  
  #: algol68/lang.opt:97
! #, fuzzy, no-c-format
! #| msgid "Link the standard D library statically in the compilation."
  msgid "Link the GNU Algol run-time library statically in the compilation."
! msgstr "Lier la bibliothèque D standard statiquement pendant la compilation."
  
  #: algol68/lang.opt:101
! #, fuzzy, no-c-format
! #| msgid "Link the standard D library dynamically in the compilation."
  msgid "Link the GNU Algol 68 run-time library dynamically in the compilation."
! msgstr "Lier la bibliothèque D standard dynamiquement pendant la compilation."
  
  #: algol68/lang.opt:105
  #, no-c-format
  msgid "Compile strict Algol 68 as defined by the Revised Report."
! msgstr ""
  
  #: algol68/lang.opt:109
! #, fuzzy, no-c-format
! #| msgid "Accept extensions to support legacy code."
  msgid "Accept GNU extensions to Algol 68."
! msgstr "Accepter les extensions pour prendre en charge du code ancien."
  
  #: algol68/lang.opt:115
  #, no-c-format
  msgid "-fstropping=[upper|supper]              Stropping regime to expect in Algol 68 programs."
! msgstr ""
  
  #: algol68/lang.opt:130 algol68/lang.opt:134
  #, no-c-format
  msgid "-fmodules-map=<mapstring>                 Association between module indicants and files."
! msgstr ""
  
  #: algol68/lang.opt:138 algol68/lang.opt:142
  #, no-c-format
  msgid "-fmodules-map-file=<filename>              File containing modules map."
! msgstr ""
  
  #: rust/lang.opt:47 rust/lang.opt:51 c-family/c.opt:1609 c-family/c.opt:1613
  #, no-c-format
--- 14846,14899 ----
  msgstr "Générer du code pour les contrats assert."
  
  #: algol68/lang.opt:85
! #, no-c-format
  msgid "Dump Algol 68 modes after parsing."
! msgstr "Vidanger les modes d'Algol 68 après l'analyse."
  
  #: algol68/lang.opt:89
! #, no-c-format
  msgid "Dump Algol 68 parse tree after parsing."
! msgstr "Vidanger l'arbre d'analyse d'Algol 68 après analyse."
  
  #: algol68/lang.opt:93
  #, no-c-format
  msgid "Dump the interfaces of module definitions in the compiled packet."
! msgstr "Vidanger les interfaces des définitions du module dans le paquet compilé."
  
  #: algol68/lang.opt:97
! #, no-c-format
  msgid "Link the GNU Algol run-time library statically in the compilation."
! msgstr "Lier la bibliothèque d'exécution de GNU Algol statiquement pendant la compilation."
  
  #: algol68/lang.opt:101
! #, no-c-format
  msgid "Link the GNU Algol 68 run-time library dynamically in the compilation."
! msgstr "Lier la bibliothèque d'exécution de GNU Algol 68 dynamiquement pendant la compilation."
  
  #: algol68/lang.opt:105
  #, no-c-format
  msgid "Compile strict Algol 68 as defined by the Revised Report."
! msgstr "Compiler de l'Algol 68 strict tel que défini dans le rapport révisé."
  
  #: algol68/lang.opt:109
! #, no-c-format
  msgid "Accept GNU extensions to Algol 68."
! msgstr "Accepter les extensions GNU pour l'Algol 68."
  
  #: algol68/lang.opt:115
  #, no-c-format
  msgid "-fstropping=[upper|supper]              Stropping regime to expect in Algol 68 programs."
! msgstr "-fstropping=[upper|supper]              Régime de marquage à attendre dans les programmes en Algol 68."
  
  #: algol68/lang.opt:130 algol68/lang.opt:134
  #, no-c-format
  msgid "-fmodules-map=<mapstring>                 Association between module indicants and files."
! msgstr "-fmodules-map=<mapstring>                 Association entre les indicateurs de modules et les fichiers."
  
  #: algol68/lang.opt:138 algol68/lang.opt:142
  #, no-c-format
  msgid "-fmodules-map-file=<filename>              File containing modules map."
! msgstr "-fmodules-map-file=<filename>              Fichier contenant la carte des modules."
  
  #: rust/lang.opt:47 rust/lang.opt:51 c-family/c.opt:1609 c-family/c.opt:1613
  #, no-c-format
*************** msgid "Warn if a caller of a function, m
*** 15088,15103 ****
  msgstr "Avertir si l'appelant d'une fonction marquée avec l'attribut « warn_unused_result » n'utilise pas la valeur retournée."
  
  #: rust/lang.opt:63
! #, fuzzy, no-c-format
! #| msgid "-frust-crate=<name>             Set the crate name for the compilation"
  msgid "-frust-crate=<name>             Set the crate name for the compilation."
! msgstr "-frust-crate=<name>             Défini le nom de cageot (crate) pour la compilation"
  
  #: rust/lang.opt:67
! #, fuzzy, no-c-format
! #| msgid "-frust-extern=              Specify where an external library is located"
  msgid "-frust-extern=              Specify where an external library is located."
! msgstr "-ftruxt-extern=             Spécifier où une bibliothèque externe est placée"
  
  #: rust/lang.opt:71
  #, no-c-format
--- 14906,14919 ----
  msgstr "Avertir si l'appelant d'une fonction marquée avec l'attribut « warn_unused_result » n'utilise pas la valeur retournée."
  
  #: rust/lang.opt:63
! #, no-c-format
  msgid "-frust-crate=<name>             Set the crate name for the compilation."
! msgstr "-frust-crate=<name>             Défini le nom de cageot (crate) pour la compilation."
  
  #: rust/lang.opt:67
! #, no-c-format
  msgid "-frust-extern=              Specify where an external library is located."
! msgstr "-ftruxt-extern=             Spécifier où une bibliothèque externe est placée."
  
  #: rust/lang.opt:71
  #, no-c-format
*************** msgid "-frust-dump-<type>              D
*** 15110,15200 ****
  msgstr "-frust-dump-<type>             Décharger les informations internes de l'interface Rust."
  
  #: rust/lang.opt:79
! #, fuzzy, no-c-format
! #| msgid "Enable experimental compilation of Rust files at your own risk"
  msgid "Enable experimental compilation of Rust files at your own risk."
! msgstr "Activez la compilation expérimentale de fichiers Rust à vos propres risques"
  
  #: rust/lang.opt:83
! #, fuzzy, no-c-format
! #| msgid "-frust-max-recursion-depth=<integer>"
  msgid "-frust-max-recursion-depth=<integer>."
! msgstr "-frust-max-recursion-depth=<entier>"
  
  #: rust/lang.opt:87
! #, fuzzy, no-c-format
! #| msgid "-frust-crate-type=[bin|lib|rlib|dylib|cdylib|staticlib|proc-macro]     Crate type to emit"
  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]     Type de cageot (crate) a émettre"
  
  #: rust/lang.opt:115
! #, fuzzy, no-c-format
! #| msgid "-frust-mangling=[legacy|v0]     Version to use for name mangling"
  msgid "-frust-mangling=[legacy|v0]     Version to use for name mangling."
! msgstr "-frust-mangling=[legacy|v0]     Version à utiliser pour la décoration de noms"
  
  #: rust/lang.opt:128
! #, fuzzy, no-c-format
! #| msgid "-frust-cfg=<name>             Set a config expansion option"
  msgid "-frust-cfg=<name>             Set a config expansion option."
! msgstr "-frust-cfg=<name>             Définir une option d'expansion de configuration"
  
  #: rust/lang.opt:132
! #, fuzzy, no-c-format
! #| msgid "-frust-edition=[2015|2018|2021]             Edition to use when compiling rust code"
  msgid "-frust-edition=[2015|2018|2021]             Edition to use when compiling rust code."
! msgstr "-frust-edition=[2015|2018|2021]             Édition à utiliser pour la compilation de code rust"
  
  #: rust/lang.opt:148
! #, fuzzy, no-c-format
! #| msgid "Enable embedding metadata directly into object files"
  msgid "Enable embedding metadata directly into object files."
! msgstr "Activer l'intégration de méta-données directement des les fichiers objets"
  
  #: rust/lang.opt:152
! #, fuzzy, no-c-format
! #| msgid "-frust-metadata-output=<path.rox>  Path to output crate metadata"
  msgid "-frust-metadata-output=<path.rox>  Path to output crate metadata."
! msgstr "-frust-metadata-output=<path.rox>  Chemin pour sortir les méta-données des cageots (crate)"
  
  #: rust/lang.opt:160
! #, fuzzy, 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"
  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|copimlation|end]             Le pipeline va s'exécuter jusqu'à cette étape lors de la compilation de code Rust"
  
  #: rust/lang.opt:209
! #, fuzzy, no-c-format
! #| msgid "Use the temporary and experimental name resolution pipeline instead of the stable one"
  msgid "Use the temporary and experimental name resolution pipeline instead of the stable one."
! msgstr "Utiliser un pipeline temporaire et expérimental pour la résolution de noms au lieu de celui qui est stable"
  
  #: rust/lang.opt:213
  #, no-c-format
  msgid "Use the WIP borrow checker."
! msgstr "Utiliser le vérificateur d'emprunts WIP"
  
  #: rust/lang.opt:217
! #, fuzzy, no-c-format
! #| msgid "-frust-edition=[unwind|abort]             Panic strategy to compile crate with"
  msgid "-frust-edition=[unwind|abort]             Panic strategy to compile crate with."
! msgstr "-frust-edition=[unwind|abort]             Stratégie de panique à utiliser pour compiler le cageot"
  
  #: rust/lang.opt:230
! #, fuzzy, no-c-format
! #| msgid "Enable the overflow checks in code generation"
  msgid "Enable the overflow checks in code generation."
! msgstr "Activer les vérifications de débordement dans la génération de code"
  
  #: rust/lang.opt:234
  #, no-c-format
  msgid "Define a built-in offset_of macro in the compiler and assume it is present."
! msgstr ""
  
  #: rust/lang.opt:238
  #, no-c-format
  msgid "Use the new unused variable check implementation."
! msgstr ""
  
  #: ada/gcc-interface/lang.opt:57 c-family/c.opt:349
  #, no-c-format
--- 14926,15004 ----
  msgstr "-frust-dump-<type>             Décharger les informations internes de l'interface Rust."
  
  #: rust/lang.opt:79
! #, no-c-format
  msgid "Enable experimental compilation of Rust files at your own risk."
! msgstr "Activez la compilation expérimentale de fichiers Rust à vos propres risques."
  
  #: rust/lang.opt:83
! #, no-c-format
  msgid "-frust-max-recursion-depth=<integer>."
! msgstr "-frust-max-recursion-depth=<entier>."
  
  #: 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]     Type de cageot (crate) a émettre."
  
  #: rust/lang.opt:115
! #, no-c-format
  msgid "-frust-mangling=[legacy|v0]     Version to use for name mangling."
! msgstr "-frust-mangling=[legacy|v0]     Version à utiliser pour la décoration de noms."
  
  #: rust/lang.opt:128
! #, no-c-format
  msgid "-frust-cfg=<name>             Set a config expansion option."
! msgstr "-frust-cfg=<name>             Définir une option d'expansion de configuration."
  
  #: 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]             Édition à utiliser pour la compilation de code rust."
  
  #: rust/lang.opt:148
! #, no-c-format
  msgid "Enable embedding metadata directly into object files."
! msgstr "Activer l'intégration de méta-données directement des les fichiers objets."
  
  #: rust/lang.opt:152
! #, no-c-format
  msgid "-frust-metadata-output=<path.rox>  Path to output crate metadata."
! msgstr "-frust-metadata-output=<path.rox>  Chemin pour sortir les méta-données des cageots (crate)."
  
  #: 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|copimlation|end]             Le pipeline va s'exécuter jusqu'à cette étape lors de la compilation de code Rust."
  
  #: rust/lang.opt:209
! #, no-c-format
  msgid "Use the temporary and experimental name resolution pipeline instead of the stable one."
! msgstr "Utiliser un pipeline temporaire et expérimental pour la résolution de noms au lieu de celui qui est stable."
  
  #: rust/lang.opt:213
  #, no-c-format
  msgid "Use the WIP borrow checker."
! msgstr "Utiliser le vérificateur d'emprunts WIP."
  
  #: rust/lang.opt:217
! #, no-c-format
  msgid "-frust-edition=[unwind|abort]             Panic strategy to compile crate with."
! msgstr "-frust-edition=[unwind|abort]             Stratégie de panique à utiliser pour compiler le cageot."
  
  #: rust/lang.opt:230
! #, no-c-format
  msgid "Enable the overflow checks in code generation."
! msgstr "Activer les vérifications de débordement dans la génération de code."
  
  #: rust/lang.opt:234
  #, no-c-format
  msgid "Define a built-in offset_of macro in the compiler and assume it is present."
! msgstr "Définir une macro de offset_of interne dans le compilateur et supposer qu'elle est présente."
  
  #: rust/lang.opt:238
  #, no-c-format
  msgid "Use the new unused variable check implementation."
! msgstr "Utiliser la nouvelle implémentation de vérification des variables inutilisées."
  
  #: ada/gcc-interface/lang.opt:57 c-family/c.opt:349
  #, no-c-format
*************** msgid "Warn about C++ constructs whose m
*** 15572,15581 ****
  msgstr "Avertir à propos de constructions C++ dont la signification diffère entre le C++ ISO 2017 et le C++ ISO 2020."
  
  #: c-family/c.opt:508
! #, fuzzy, no-c-format
! #| msgid "Warn about C++ constructs whose meaning differs between ISO C++ 2017 and ISO C++ 2020."
  msgid "Warn about C++ constructs whose meaning differs between ISO C++ 2023 and ISO C++ 2026."
! msgstr "Avertir à propos de constructions C++ dont la signification diffère entre le C++ ISO 2017 et le C++ ISO 2020."
  
  #: c-family/c.opt:512
  #, no-c-format
--- 15376,15384 ----
  msgstr "Avertir à propos de constructions C++ dont la signification diffère entre le C++ ISO 2017 et le C++ ISO 2020."
  
  #: c-family/c.opt:508
! #, no-c-format
  msgid "Warn about C++ constructs whose meaning differs between ISO C++ 2023 and ISO C++ 2026."
! msgstr "Avertir à propos de constructions C++ dont la signification diffère entre le C++ ISO 2023 et le C++ ISO 2026."
  
  #: c-family/c.opt:512
  #, no-c-format
*************** msgid "Warn about calls with arguments t
*** 15773,15782 ****
  msgstr "Avertir à propos d'appels avec des arguments à une fonction déclarée sans paramètres."
  
  #: c-family/c.opt:692
! #, fuzzy, no-c-format
! #| msgid "Warn about suspicious OpenMP code."
  msgid "Warn about deprecated OpenMP code."
! msgstr "Avertir à propos de code OpenMP douteux."
  
  #: c-family/c.opt:696
  #, no-c-format
--- 15576,15584 ----
  msgstr "Avertir à propos d'appels avec des arguments à une fonction déclarée sans paramètres."
  
  #: c-family/c.opt:692
! #, no-c-format
  msgid "Warn about deprecated OpenMP code."
! msgstr "Avertir à propos de code OpenMP déprécié."
  
  #: c-family/c.opt:696
  #, no-c-format
*************** msgid "Warn if \"defined\" is used outsi
*** 15874,15889 ****
  msgstr "Avertir si « defined » est utilisé en dehors de #if."
  
  #: c-family/c.opt:776
! #, fuzzy, no-c-format
! #| msgid "the incompatible type defined in another translation unit"
  msgid "Warn about naming a TU-local entity declared in another translation unit."
! msgstr "le type incomplet défini dans une autre unité de traduction"
  
  #: c-family/c.opt:780
! #, fuzzy, no-c-format
! #| msgid "Warn about templates naming TU-local entities in a module."
  msgid "Warn when a module exposes a TU-local entity from the global module fragment."
! msgstr "Avertir à propos de modèles nommant des entités TU-local dans un module."
  
  #: c-family/c.opt:788
  #, no-c-format
--- 15676,15689 ----
  msgstr "Avertir si « defined » est utilisé en dehors de #if."
  
  #: c-family/c.opt:776
! #, no-c-format
  msgid "Warn about naming a TU-local entity declared in another translation unit."
! msgstr "Avertir à propos du nommage d'une entité locale à la TU déclarée dans une autre unité de traduction"
  
  #: c-family/c.opt:780
! #, no-c-format
  msgid "Warn when a module exposes a TU-local entity from the global module fragment."
! msgstr "Avertir quand un module expose une entité locale à la TU depuis le fragment d'un module global."
  
  #: c-family/c.opt:788
  #, no-c-format
*************** msgid "Warn on direct multiple inheritan
*** 16221,16230 ****
  msgstr "Avertir à propos des héritages multiples directs."
  
  #: c-family/c.opt:1109
! #, fuzzy, no-c-format
! #| msgid "Warn about mismatched declarations of VLA parameters."
  msgid "Warn for multiple lists of forward declarations of function parameters."
! msgstr "Avertir à propos de déclarations discordantes de paramètres VLA."
  
  #: c-family/c.opt:1113
  #, no-c-format
--- 16021,16029 ----
  msgstr "Avertir à propos des héritages multiples directs."
  
  #: c-family/c.opt:1109
! #, no-c-format
  msgid "Warn for multiple lists of forward declarations of function parameters."
! msgstr "Avertir pour des listes multiples de déclarations avancées de paramètres de fonction."
  
  #: c-family/c.opt:1113
  #, no-c-format
*************** msgid "-fconstexpr-ops-limit=<number>\tS
*** 16930,16970 ****
  msgstr "-fconstexpr-ops-limit=<nombre>\tSpécifier le nombre maximum d'opérations constexpr lors d'une unique évaluation d'un constexpr."
  
  #: c-family/c.opt:1905
! #, fuzzy, no-c-format
! #| msgid "Enable certain features present in drafts of C++ Contracts."
  msgid "Enable features proposed for C++26 Contracts."
! msgstr "Activer certaines fonctionnalités présentes dans les brouillons des Contracts du C++."
  
  #: c-family/c.opt:1926
  #, no-c-format
  msgid "-fcontract-evaluation-semantic=[ignore|observe|enforce|quick_enforce]\tSelect the contract evaluation semantic (defaults to enforce)."
! msgstr ""
  
  #: c-family/c.opt:1930
  #, no-c-format
  msgid "-fcontracts-conservative-ipa\tDo not allow certain optimisations between functions in contract assertions."
! msgstr ""
  
  #: c-family/c.opt:1935
  #, no-c-format
  msgid "-fcontract-checks-outlined\tBuild contract checks using outlined functions."
! msgstr ""
  
  #: c-family/c.opt:1939
  #, no-c-format
  msgid "-fcontract-disable-optimized-checks\tDisable optimisation of contract checks."
! msgstr ""
  
  #: c-family/c.opt:1955
  #, no-c-format
  msgid "-fcontracts-client-check=[none|pre|all] Select which contracts will be checked on the client side for non virtual functions."
! msgstr ""
  
  #: c-family/c.opt:1968
! #, fuzzy, no-c-format
! #| msgid "-fcontract-continuation-mode=[on|off]\tEnable or disable contract continuation mode (default off)."
  msgid "-fcontracts-definition-check=[on|off]\tEnable or disable contract checks on the definition side for all functions (default on)."
! msgstr "-fcontract-continuation-mode=[on|off]\tActiver ou désactiver le mode de continuation de contrat (désactivé par défaut)."
  
  #: c-family/c.opt:1972
  #, no-c-format
--- 16729,16767 ----
  msgstr "-fconstexpr-ops-limit=<nombre>\tSpécifier le nombre maximum d'opérations constexpr lors d'une unique évaluation d'un constexpr."
  
  #: c-family/c.opt:1905
! #, no-c-format
  msgid "Enable features proposed for C++26 Contracts."
! msgstr "Activer des fonctionnalités proposées pour les contrats C++26."
  
  #: c-family/c.opt:1926
  #, no-c-format
  msgid "-fcontract-evaluation-semantic=[ignore|observe|enforce|quick_enforce]\tSelect the contract evaluation semantic (defaults to enforce)."
! msgstr "-fcontract-evaluation-semantic=[ignore|observe|enforce|quick_enforce]\tSélectionner la sémantique d'évaluation du contrat (« enforce » par défaut)."
  
  #: c-family/c.opt:1930
  #, no-c-format
  msgid "-fcontracts-conservative-ipa\tDo not allow certain optimisations between functions in contract assertions."
! msgstr "-fcontracts-conservative-ipa\tNe pas autoriser certaines optimisations entre des fonctions dans les assertions de contrat."
  
  #: c-family/c.opt:1935
  #, no-c-format
  msgid "-fcontract-checks-outlined\tBuild contract checks using outlined functions."
! msgstr "-fcontract-checks-outlined\tConstruire des vérification de contrat utilisant les fonctions exposées."
  
  #: c-family/c.opt:1939
  #, no-c-format
  msgid "-fcontract-disable-optimized-checks\tDisable optimisation of contract checks."
! msgstr "-fcontract-disable-optimized-checks\tDésactiver l'optimisation des vérifications de contrat."
  
  #: c-family/c.opt:1955
  #, no-c-format
  msgid "-fcontracts-client-check=[none|pre|all] Select which contracts will be checked on the client side for non virtual functions."
! msgstr "-fcontracts-client-check=[none|pre|all] Sélectionner quels contrats seront vérifiés du côté du client pour les fonctions non virtuelles."
  
  #: c-family/c.opt:1968
! #, no-c-format
  msgid "-fcontracts-definition-check=[on|off]\tEnable or disable contract checks on the definition side for all functions (default on)."
! msgstr "-fcontracts-definition-check=[on|off]\tActiver ou désactiver les vérifications de contrat du côté de la définition pour toutes les fonctions (activé par défaut)."
  
  #: c-family/c.opt:1972
  #, no-c-format
*************** msgid "Enable lifetime extension of rang
*** 17327,17336 ****
  msgstr "Activer l'extension de la durée de vie de temporaires basés sur une plage."
  
  #: c-family/c.opt:2362
! #, fuzzy, no-c-format
! #| msgid "Enable experimental Fortran 202y features."
  msgid "Enable experimental C++26 Reflection."
! msgstr "Activez les fonctionnalités expérimentales du Fortran 202y."
  
  #: c-family/c.opt:2366
  #, no-c-format
--- 17124,17132 ----
  msgstr "Activer l'extension de la durée de vie de temporaires basés sur une plage."
  
  #: c-family/c.opt:2362
! #, no-c-format
  msgid "Enable experimental C++26 Reflection."
! msgstr "Activer la réflexion C++26 expérimentale."
  
  #: c-family/c.opt:2366
  #, no-c-format
*************** msgid "Conform to the ISO 2017 C++ stand
*** 17583,17604 ****
  msgstr "Être conforme au standard C++ ISO 2017."
  
  #: c-family/c.opt:2657
! #, fuzzy, no-c-format
! #| msgid "Deprecated in favor of -std=c++11."
  msgid "Deprecated in favor of -std=c++20."
! msgstr "Rendu obsolète en faveur de -std=c++11."
  
  #: c-family/c.opt:2661
! #, fuzzy, no-c-format
! #| msgid "Conform to the ISO 2011 C++ standard."
  msgid "Conform to the ISO 2020 C++ standard."
! msgstr "Être conforme au standard C++ ISO 2011."
  
  #: c-family/c.opt:2665
! #, fuzzy, no-c-format
! #| msgid "Deprecated in favor of -std=c23."
  msgid "Deprecated in favor of -std=c++23."
! msgstr "Rendu obsolète en faveur de -std=c23."
  
  #: c-family/c.opt:2669
  #, no-c-format
--- 17379,17397 ----
  msgstr "Être conforme au standard C++ ISO 2017."
  
  #: c-family/c.opt:2657
! #, no-c-format
  msgid "Deprecated in favor of -std=c++20."
! msgstr "Rendu obsolète en faveur de -std=c++20."
  
  #: c-family/c.opt:2661
! #, no-c-format
  msgid "Conform to the ISO 2020 C++ standard."
! msgstr "Être conforme au standard C++ ISO 2020."
  
  #: c-family/c.opt:2665
! #, no-c-format
  msgid "Deprecated in favor of -std=c++23."
! msgstr "Rendu obsolète en faveur de -std=c++23."
  
  #: c-family/c.opt:2669
  #, no-c-format
*************** msgid "Conform to the ISO 2017 C++ stand
*** 17692,17713 ****
  msgstr "Être conforme au standard C++ ISO 2017 avec les extensions GNU."
  
  #: c-family/c.opt:2759
! #, fuzzy, no-c-format
! #| msgid "Deprecated in favor of -std=gnu++11."
  msgid "Deprecated in favor of -std=gnu++20."
! msgstr "Rendu obsolète en faveur de -std=gnu++11."
  
  #: c-family/c.opt:2763
! #, fuzzy, no-c-format
! #| msgid "Conform to the ISO 2011 C++ standard with GNU extensions."
  msgid "Conform to the ISO 2020 C++ standard with GNU extensions."
! msgstr "Être conforme au standard C++ ISO 2011 avec les extensions GNU."
  
  #: c-family/c.opt:2767
! #, fuzzy, no-c-format
! #| msgid "Deprecated in favor of -std=gnu23."
  msgid "Deprecated in favor of -std=gnu++23."
! msgstr "Rendu obsolète en faveur de -std=gnu23."
  
  #: c-family/c.opt:2771
  #, no-c-format
--- 17485,17503 ----
  msgstr "Être conforme au standard C++ ISO 2017 avec les extensions GNU."
  
  #: c-family/c.opt:2759
! #, no-c-format
  msgid "Deprecated in favor of -std=gnu++20."
! msgstr "Rendu obsolète en faveur de -std=gnu++20."
  
  #: c-family/c.opt:2763
! #, no-c-format
  msgid "Conform to the ISO 2020 C++ standard with GNU extensions."
! msgstr "Être conforme au standard C++ ISO 2020 avec les extensions GNU."
  
  #: c-family/c.opt:2767
! #, no-c-format
  msgid "Deprecated in favor of -std=gnu++23."
! msgstr "Rendu obsolète en faveur de -std=gnu++23."
  
  #: c-family/c.opt:2771
  #, no-c-format
*************** msgid "Do not predefine system-specific
*** 17795,18142 ****
  msgstr "Ne pas prédéfinir les macros spécifiques au système et à GCC."
  
  #: cobol/lang.opt:48
! #, fuzzy, no-c-format
! #| msgid "Accept COBOL constructs used by non-ISO compilers"
  msgid "Accept COBOL constructs used by non-ISO compilers."
! msgstr "Accepter les constructions COBOL utilisées par les compilateurs non ISO"
  
  #: cobol/lang.opt:70
! #, fuzzy, no-c-format
! #| msgid "-fcobol-exceptions=<n>\tEnable some exceptions by default"
  msgid "-fcobol-exceptions=<n>\tEnable some exceptions by default."
! msgstr "-fcobol-exceptions=<n>\tActiver quelques exceptions par défaut"
  
  #: cobol/lang.opt:74
! #, fuzzy, no-c-format
! #| msgid "Define alternative implicit copybook filename extension"
  msgid "Define alternative implicit copybook filename extension."
! msgstr "Définir une extension alternative et implicite pour le nom de fichier copybook"
  
  #: cobol/lang.opt:82
  #, no-c-format
  msgid "Set the default execution character set for NATIONAL data items."
! msgstr ""
  
  #: cobol/lang.opt:89
  #, no-c-format
  msgid "Warn if CDF defines Level 78 constant."
! msgstr ""
  
  #: cobol/lang.opt:94
  #, no-c-format
  msgid "Warn if BINARY-LONG-LONG is used."
! msgstr ""
  
  #: cobol/lang.opt:99
  #, no-c-format
  msgid "Warn if CALL ... GIVING is used."
! msgstr ""
  
  #: cobol/lang.opt:104
  #, no-c-format
  msgid "Warn if CALL is used is used with a literal parameter by reference."
! msgstr ""
  
  #: cobol/lang.opt:109
  #, no-c-format
  msgid "Warn if CDF %<$IF%> is used."
! msgstr ""
  
  #: cobol/lang.opt:114
  #, no-c-format
  msgid "Warn if COMPUTATIONAL-6 is used."
! msgstr ""
  
  #: cobol/lang.opt:119
  #, no-c-format
  msgid "Warn if COMPUTATIONAL is used with PICTURE X."
! msgstr ""
  
  #: cobol/lang.opt:124
  #, no-c-format
  msgid "Warn if INSPECT ... TRAILING is used."
! msgstr ""
  
  #: cobol/lang.opt:129
  #, no-c-format
  msgid "Warn if Level 01 is used with OCCURS."
! msgstr ""
  
  #: cobol/lang.opt:134
! #, fuzzy, no-c-format
! #| msgid "Warn if a variable length array is used."
  msgid "Warn if Level 78 is used."
! msgstr "Avertir si un tableau de longueur variable est utilisé."
  
  #: cobol/lang.opt:139
! #, fuzzy, no-c-format
! #| msgid "Warn if a C-style cast is used in a program."
  msgid "Warn if ANY LENGTH is used in outermost program."
! msgstr "Avertir si un transtypage de type C est utilisé dans un programme."
  
  #: cobol/lang.opt:144
  #, no-c-format
  msgid "Warn if MOVE INDEX is used."
! msgstr ""
  
  #: cobol/lang.opt:149
  #, no-c-format
  msgid "Warn if MOVE POINTER is used."
! msgstr ""
  
  #: cobol/lang.opt:154
  #, no-c-format
  msgid "Warn if RETURNING <number> is used."
! msgstr ""
  
  #: cobol/lang.opt:159
  #, no-c-format
  msgid "Warn if USAGE IS TYPENAME is used."
! msgstr ""
  
  #: cobol/lang.opt:164
! #, fuzzy, no-c-format
! #| msgid "Warn if left shifting a negative value."
  msgid "Warn if numeric string is invalid."
! msgstr "Avertir à propos des décalages à gauche de valeurs négatives."
  
  #: cobol/lang.opt:169
! #, fuzzy, no-c-format
! #| msgid "Label %d referenced at %L is never defined"
  msgid "Warn if referenced CDF PARAMETER is not defined."
! msgstr "L'étiquette %d référencée à %L n'est jamais définie"
  
  #: cobol/lang.opt:174
! #, fuzzy, no-c-format
! #| msgid "Label %d referenced at %L is never defined"
  msgid "Warn if referenced CDF name is not defined."
! msgstr "L'étiquette %d référencée à %L n'est jamais définie"
  
  #: cobol/lang.opt:179
  #, no-c-format
  msgid "Print message when copybook is processed."
! msgstr ""
  
  #: cobol/lang.opt:184
  #, no-c-format
  msgid "Warn if unimplemented/unknown exception condition is referenced."
! msgstr ""
  
  #: cobol/lang.opt:189
  #, no-c-format
  msgid "Print message when ENTRY CONVENTION is specified."
! msgstr ""
  
  #: cobol/lang.opt:194
! #, fuzzy, no-c-format
! #| msgid "Treat the input file as already preprocessed."
  msgid "Print message when include file is processed."
! msgstr "Considérer que le fichier d'entrée a déjà été pré-traité."
  
  #: cobol/lang.opt:199
! #, fuzzy, no-c-format
! #| msgid "created and used with different endianness"
  msgid "Warn if concatenated literals use different encodings."
! msgstr "créé et utilisé avec des boutismes différents"
  
  #: cobol/lang.opt:204
  #, no-c-format
  msgid "Warn if locale(3) fails."
! msgstr ""
  
  #: cobol/lang.opt:209
  #, no-c-format
  msgid "Warn if COBOL MOVE has no corresponding fields."
! msgstr ""
  
  #: cobol/lang.opt:214
  #, no-c-format
  msgid "Warn if nlanglanginfo(3) fails."
! msgstr ""
  
  #: cobol/lang.opt:219
  #, no-c-format
  msgid "Warn if LENGTH OF is used."
! msgstr ""
  
  #: cobol/lang.opt:224
  #, no-c-format
  msgid "Warn if PROCEDURE POINTER is used."
! msgstr ""
  
  #: cobol/lang.opt:229
! #, fuzzy, no-c-format
! #| msgid "Warn if deprecated empty statements are found."
  msgid "Warn if SECTION segments are used."
! msgstr "Avertir si des déclarations vides obsolètes sont trouvées."
  
  #: cobol/lang.opt:234
  #, no-c-format
  msgid "Warn if resume is used (instead of error for IBM)."
! msgstr ""
  
  #: cobol/lang.opt:241
  #, no-c-format
  msgid "Warn if APPLY COMMIT is used."
! msgstr ""
  
  #: cobol/lang.opt:246
  #, no-c-format
  msgid "Warn if HIGH-ORDER-LEFT HIGH-ORDER-RIGHT is used."
! msgstr ""
  
  #: cobol/lang.opt:251
  #, no-c-format
  msgid "Warn if FILE CODE SET is used."
! msgstr ""
  
  #: cobol/lang.opt:256
  #, no-c-format
  msgid "Warn if RECORDING MODE is used."
! msgstr ""
  
  #: cobol/lang.opt:261
  #, no-c-format
  msgid "Warn if SET LOCALE ... TO is used."
! msgstr ""
  
  #: cobol/lang.opt:266
  #, no-c-format
  msgid "Warn if SET ... TO LOCALE is used."
! msgstr ""
  
  #: cobol/lang.opt:273
  #, no-c-format
  msgid "Warn if a line directive is malformed (instead of error)."
! msgstr ""
  
  #: cobol/lang.opt:278
  #, no-c-format
  msgid "Warn if EQUAL used as assignment operator (instead of error)."
! msgstr ""
  
  #: cobol/lang.opt:283
  #, no-c-format
  msgid "Warn if iconv(3) cannot convert between encodings (instead of error)."
! msgstr ""
  
  #: cobol/lang.opt:288
! #, fuzzy, no-c-format
! #| msgid "Warn if .class files are out of date."
  msgid "Warn if include file is not found (instead of error)."
! msgstr "Avertir si des fichiers .class sont périmés."
  
  #: cobol/lang.opt:293
  #, no-c-format
  msgid "Warn if a preprocessor fails (instead of error)."
! msgstr ""
  
  #: cobol/lang.opt:298
  #, no-c-format
  msgid "Warn if a referenced procedure is not found (instead of error)."
! msgstr ""
  
  #: cobol/lang.opt:303
  #, no-c-format
  msgid "Warn if REPLACE cannot be processed (instead of error)."
! msgstr ""
  
  #: cobol/lang.opt:308
  #, no-c-format
  msgid "Warn if a SEGMENT section is invalid (instead of error)."
! msgstr ""
  
  #: cobol/lang.opt:313
  #, no-c-format
  msgid "Warn if a SEGMENT range is negative (instead of error)."
! msgstr ""
  
  #: cobol/lang.opt:318
  #, no-c-format
  msgid "Warn if indicator column has no recognized meaning (instead of error)."
! msgstr ""
  
  #: cobol/lang.opt:323
  #, no-c-format
  msgid "Warn if relational operator not followed by space (instead of error)."
! msgstr ""
  
  #: cobol/lang.opt:328
! #, fuzzy, no-c-format
! #| msgid "Warn if a C-style cast is used in a program."
  msgid "Warn if IBM-style EJECT is used (instead of error)."
! msgstr "Avertir si un transtypage de type C est utilisé dans un programme."
  
  #: cobol/lang.opt:333
! #, fuzzy, no-c-format
! #| msgid "Warn if a C-style cast is used in a program."
  msgid "Warn if IBM-style STOP <number> is used (instead of error)."
! msgstr "Avertir si un transtypage de type C est utilisé dans un programme."
  
  #: cobol/lang.opt:338
  #, no-c-format
  msgid "Warn if VOLATILE is used (instead of error if -dialect ibm)."
! msgstr ""
  
  #: cobol/lang.opt:344
! #, fuzzy, no-c-format
! #| msgid "Set Working-Storage data items to the supplied value"
  msgid "Set Working-Storage data items to the supplied value."
! msgstr "Définir les éléments de données Working-Storage à la valeur fournie"
  
  #: cobol/lang.opt:348
! #, fuzzy, no-c-format
! #| msgid "Enable Cobol lex debugging"
  msgid "Enable Cobol lex debugging."
! msgstr "Activer le débogage lex du Cobol"
  
  #: cobol/lang.opt:360
! #, fuzzy, no-c-format
! #| msgid "-findicator-column=<n>\tColumn after which Region A begins"
  msgid "-findicator-column=<n>\tColumn after which Region A begins."
! msgstr "-findicator-column=<n>\tColonne après laquelle la Région A commence"
  
  #: cobol/lang.opt:364
! #, fuzzy, no-c-format
! #| msgid "Enable/disable static linkage for CALL literals"
  msgid "Enable/disable static linkage for CALL literals."
! msgstr "Activer/désactiver l'édition de liens statique pour les CALL littéraux"
  
  #: cobol/lang.opt:368
! #, fuzzy, no-c-format
! #| msgid "Enable Cobol parser debugging"
  msgid "Enable Cobol parser debugging."
! msgstr "Activer le débogage de l'analyseur Cobol"
  
  #: cobol/lang.opt:372
! #, fuzzy, no-c-format
! #| msgid "Enable Cobol yacc debugging"
  msgid "Enable Cobol yacc debugging."
! msgstr "Activer le débogage yacc du Cobol"
  
  #: cobol/lang.opt:376
! #, fuzzy, no-c-format
! #| msgid "preprocess <source_filter> before compiling"
  msgid "Preprocess <source_filter> before compiling."
! msgstr "prétraiter <filtre_source> avant la compilation"
  
  #: cobol/lang.opt:396
! #, fuzzy, no-c-format
! #| msgid "-main\tThe first program-id in the next source file is called by a generated main() entry point"
  msgid "-main\tThe first program-id in the next source file is called by a generated main() entry point."
! msgstr "-main\tLe premier ID de programme dans le fichier source suivant est appelé par le point d'entrée main() généré"
  
  #: cobol/lang.opt:400
! #, fuzzy, no-c-format
! #| msgid "-main=<source_file> source_file/PROGRAM-ID is called by the generated main()"
  msgid "-main=<source_file> source_file/PROGRAM-ID is called by the generated main()."
! msgstr "-main=<fichier_source> fichier_source/ID-PROGRAMME est appelé par le main() généré"
  
  #: cobol/lang.opt:404
! #, fuzzy, no-c-format
! #| msgid "-nomain\tNo main() function is created from COBOL source files"
  msgid "-nomain\tNo main() function is created from COBOL source files."
! msgstr "-nomain\tAucune fonction main() est créé depuis les fichiers source COBOL"
  
  #: d/lang.opt:51
  #, no-c-format
--- 17585,17908 ----
  msgstr "Ne pas prédéfinir les macros spécifiques au système et à GCC."
  
  #: cobol/lang.opt:48
! #, no-c-format
  msgid "Accept COBOL constructs used by non-ISO compilers."
! msgstr "Accepter les constructions COBOL utilisées par les compilateurs non ISO."
  
  #: cobol/lang.opt:70
! #, no-c-format
  msgid "-fcobol-exceptions=<n>\tEnable some exceptions by default."
! msgstr "-fcobol-exceptions=<n>\tActiver quelques exceptions par défaut."
  
  #: cobol/lang.opt:74
! #, no-c-format
  msgid "Define alternative implicit copybook filename extension."
! msgstr "Définir une extension alternative et implicite pour le nom de fichier copybook."
  
  #: cobol/lang.opt:82
  #, no-c-format
  msgid "Set the default execution character set for NATIONAL data items."
! msgstr "Définir le jeu de caractères d'exécution par défaut pour les éléments de données NATIONAL."
  
  #: cobol/lang.opt:89
  #, no-c-format
  msgid "Warn if CDF defines Level 78 constant."
! msgstr "Avertir si CDF défini une constante de niveau 78."
  
  #: cobol/lang.opt:94
  #, no-c-format
  msgid "Warn if BINARY-LONG-LONG is used."
! msgstr "Avertir si BINARY-LONG-LONG est utilisé."
  
  #: cobol/lang.opt:99
  #, no-c-format
  msgid "Warn if CALL ... GIVING is used."
! msgstr "Avertir si CALL ... GIVING est utilisé."
  
  #: cobol/lang.opt:104
  #, no-c-format
  msgid "Warn if CALL is used is used with a literal parameter by reference."
! msgstr "Avertir si CALL est utilise avec un paramètre littéral par référence."
  
  #: cobol/lang.opt:109
  #, no-c-format
  msgid "Warn if CDF %<$IF%> is used."
! msgstr "Avertir si CDF %<$IF%> est utilisé."
  
  #: cobol/lang.opt:114
  #, no-c-format
  msgid "Warn if COMPUTATIONAL-6 is used."
! msgstr "Avertir si COMPUTATIONAL-6 est utilisé."
  
  #: cobol/lang.opt:119
  #, no-c-format
  msgid "Warn if COMPUTATIONAL is used with PICTURE X."
! msgstr "Avertir si COMPUTATIONAL est utilisé avec PICTURE X."
  
  #: cobol/lang.opt:124
  #, no-c-format
  msgid "Warn if INSPECT ... TRAILING is used."
! msgstr "Avertir si INSPECT ... TRAILING est utilisé."
  
  #: cobol/lang.opt:129
  #, no-c-format
  msgid "Warn if Level 01 is used with OCCURS."
! msgstr "Avertir si Level 01 est utilisé avec OCCURS."
  
  #: cobol/lang.opt:134
! #, no-c-format
  msgid "Warn if Level 78 is used."
! msgstr "Avertir si le niveau 78 est utilisé."
  
  #: cobol/lang.opt:139
! #, no-c-format
  msgid "Warn if ANY LENGTH is used in outermost program."
! msgstr "Avertir si ANY LENGTH est utilisé dans le programme le plus à l'extérieur."
  
  #: cobol/lang.opt:144
  #, no-c-format
  msgid "Warn if MOVE INDEX is used."
! msgstr "Avertir si MOVE INDEX est utilisé."
  
  #: cobol/lang.opt:149
  #, no-c-format
  msgid "Warn if MOVE POINTER is used."
! msgstr "Avertir si MOVE POINTER est utilisé."
  
  #: cobol/lang.opt:154
  #, no-c-format
  msgid "Warn if RETURNING <number> is used."
! msgstr "Avertir si RETURNING <nombre> est utilisé."
  
  #: cobol/lang.opt:159
  #, no-c-format
  msgid "Warn if USAGE IS TYPENAME is used."
! msgstr "Avertir si USAGE IS TYPENAME est utilisé."
  
  #: cobol/lang.opt:164
! #, no-c-format
  msgid "Warn if numeric string is invalid."
! msgstr "Avertir si une chaîne numérique est invalide."
  
  #: cobol/lang.opt:169
! #, no-c-format
  msgid "Warn if referenced CDF PARAMETER is not defined."
! msgstr "Avertir si le CDF PARAMETER référence n'est pas défini."
  
  #: cobol/lang.opt:174
! #, no-c-format
  msgid "Warn if referenced CDF name is not defined."
! msgstr "Avertir si le nom CDF référencé n'est pas défini."
  
  #: cobol/lang.opt:179
  #, no-c-format
  msgid "Print message when copybook is processed."
! msgstr "Afficher un message quand le copybook est traité."
  
  #: cobol/lang.opt:184
  #, no-c-format
  msgid "Warn if unimplemented/unknown exception condition is referenced."
! msgstr "Avertir si une condition d'exception non implémentée/inconnue est référencée."
  
  #: cobol/lang.opt:189
  #, no-c-format
  msgid "Print message when ENTRY CONVENTION is specified."
! msgstr "Afficher un message quand ENTRY CONVENTION est spécifié."
  
  #: cobol/lang.opt:194
! #, no-c-format
  msgid "Print message when include file is processed."
! msgstr "Afficher un message quand le fichier d'inclusion est traité."
  
  #: cobol/lang.opt:199
! #, no-c-format
  msgid "Warn if concatenated literals use different encodings."
! msgstr "Avertir si des littéraux concaténés utilisent des encodages différents."
  
  #: cobol/lang.opt:204
  #, no-c-format
  msgid "Warn if locale(3) fails."
! msgstr "Avertir si locale(3) échoue."
  
  #: cobol/lang.opt:209
  #, no-c-format
  msgid "Warn if COBOL MOVE has no corresponding fields."
! msgstr "Avertir si COBOL MOVE n'a pas de champ correspondant."
  
  #: cobol/lang.opt:214
  #, no-c-format
  msgid "Warn if nlanglanginfo(3) fails."
! msgstr "Avertir si nlanglanginfo(3) échoue."
  
  #: cobol/lang.opt:219
  #, no-c-format
  msgid "Warn if LENGTH OF is used."
! msgstr "Avertir si LENGTH OF est utilisé."
  
  #: cobol/lang.opt:224
  #, no-c-format
  msgid "Warn if PROCEDURE POINTER is used."
! msgstr "Avertir si PROCEDURE POINTER est utilisé."
  
  #: cobol/lang.opt:229
! #, no-c-format
  msgid "Warn if SECTION segments are used."
! msgstr "Avertir si des segments SECTION sont utilisés."
  
  #: cobol/lang.opt:234
  #, no-c-format
  msgid "Warn if resume is used (instead of error for IBM)."
! msgstr "Avertir si « resume » est utilisé (au lieu de l'erreur pour IBM)."
  
  #: cobol/lang.opt:241
  #, no-c-format
  msgid "Warn if APPLY COMMIT is used."
! msgstr "Avertir si APPLY COMMIT est utilisé."
  
  #: cobol/lang.opt:246
  #, no-c-format
  msgid "Warn if HIGH-ORDER-LEFT HIGH-ORDER-RIGHT is used."
! msgstr "Avertir si HIGH-ORDER-LEFT HIGH-ORDER-RIGHT est utilisé."
  
  #: cobol/lang.opt:251
  #, no-c-format
  msgid "Warn if FILE CODE SET is used."
! msgstr "Avertir si FILE CODE SET est utilisé."
  
  #: cobol/lang.opt:256
  #, no-c-format
  msgid "Warn if RECORDING MODE is used."
! msgstr "Avertir si RECORDING MODE est utilisé."
  
  #: cobol/lang.opt:261
  #, no-c-format
  msgid "Warn if SET LOCALE ... TO is used."
! msgstr "Avertir si SET LOCALE ... TO est utilisé."
  
  #: cobol/lang.opt:266
  #, no-c-format
  msgid "Warn if SET ... TO LOCALE is used."
! msgstr "Avertir si SET ... TO LOCALE est utilisé."
  
  #: cobol/lang.opt:273
  #, no-c-format
  msgid "Warn if a line directive is malformed (instead of error)."
! msgstr "Avertir si une directive de ligne est mal formée (au lieu d'une erreur)."
  
  #: cobol/lang.opt:278
  #, no-c-format
  msgid "Warn if EQUAL used as assignment operator (instead of error)."
! msgstr "Avertir si EQUAL est utilisé comme opérateur d'assignation (au lieu d'une erreur)."
  
  #: cobol/lang.opt:283
  #, no-c-format
  msgid "Warn if iconv(3) cannot convert between encodings (instead of error)."
! msgstr "Avertir si iconv(3) ne sait pas convertir entre les encodages (au lieu d'une erreur)."
  
  #: cobol/lang.opt:288
! #, no-c-format
  msgid "Warn if include file is not found (instead of error)."
! msgstr "Avertir si le fichier inclus n'est pas trouvé (au lieu d'une erreur)."
  
  #: cobol/lang.opt:293
  #, no-c-format
  msgid "Warn if a preprocessor fails (instead of error)."
! msgstr "Avertir si le pré-processeur échoue (au lieu d'une erreur)."
  
  #: cobol/lang.opt:298
  #, no-c-format
  msgid "Warn if a referenced procedure is not found (instead of error)."
! msgstr "Avertir si une procédure référencée n'est pas trouvée (au lieu d'une erreur)."
  
  #: cobol/lang.opt:303
  #, no-c-format
  msgid "Warn if REPLACE cannot be processed (instead of error)."
! msgstr "Avertir si REPLACE ne peut pas être traité (au lieu d'une erreur)."
  
  #: cobol/lang.opt:308
  #, no-c-format
  msgid "Warn if a SEGMENT section is invalid (instead of error)."
! msgstr "Avertir si une section SEGMENT est invalide (au lieu d'une erreur)."
  
  #: cobol/lang.opt:313
  #, no-c-format
  msgid "Warn if a SEGMENT range is negative (instead of error)."
! msgstr "Avertir si une plage SEGMENT est négative (au lieu d'une erreur)."
  
  #: cobol/lang.opt:318
  #, no-c-format
  msgid "Warn if indicator column has no recognized meaning (instead of error)."
! msgstr "Avertir si la colonne d'indicateur n'a pas de signification reconnue (au lieu d'une erreur)."
  
  #: cobol/lang.opt:323
  #, no-c-format
  msgid "Warn if relational operator not followed by space (instead of error)."
! msgstr "Avertir si l'opérateur relationnel n'est pas suivi d'une espace (au lieu d'une erreur)."
  
  #: cobol/lang.opt:328
! #, no-c-format
  msgid "Warn if IBM-style EJECT is used (instead of error)."
! msgstr "Avertir si EJECT dans le style IBM est utilisé (au lieu d'une erreur)."
  
  #: cobol/lang.opt:333
! #, no-c-format
  msgid "Warn if IBM-style STOP <number> is used (instead of error)."
! msgstr "Avertir si STOP <nombre> dans le style IBM est utilisé (au lieu d'une erreur)."
  
  #: cobol/lang.opt:338
  #, no-c-format
  msgid "Warn if VOLATILE is used (instead of error if -dialect ibm)."
! msgstr "Avertir si VOLATILE est utilisé (au lieu d'une erreur si -dialect ibm)."
  
  #: cobol/lang.opt:344
! #, no-c-format
  msgid "Set Working-Storage data items to the supplied value."
! msgstr "Définir les éléments de données Working-Storage à la valeur fournie."
  
  #: cobol/lang.opt:348
! #, no-c-format
  msgid "Enable Cobol lex debugging."
! msgstr "Activer le débogage lex du Cobol."
  
  #: cobol/lang.opt:360
! #, no-c-format
  msgid "-findicator-column=<n>\tColumn after which Region A begins."
! msgstr "-findicator-column=<n>\tColonne après laquelle la Région A commence."
  
  #: cobol/lang.opt:364
! #, no-c-format
  msgid "Enable/disable static linkage for CALL literals."
! msgstr "Activer/désactiver l'édition de liens statique pour les CALL littéraux."
  
  #: cobol/lang.opt:368
! #, no-c-format
  msgid "Enable Cobol parser debugging."
! msgstr "Activer le débogage de l'analyseur Cobol."
  
  #: cobol/lang.opt:372
! #, no-c-format
  msgid "Enable Cobol yacc debugging."
! msgstr "Activer le débogage yacc du Cobol."
  
  #: cobol/lang.opt:376
! #, no-c-format
  msgid "Preprocess <source_filter> before compiling."
! msgstr "Prétraiter <filtre_source> avant la compilation."
  
  #: cobol/lang.opt:396
! #, no-c-format
  msgid "-main\tThe first program-id in the next source file is called by a generated main() entry point."
! msgstr "-main\tLe premier ID de programme dans le fichier source suivant est appelé par le point d'entrée main() généré."
  
  #: cobol/lang.opt:400
! #, no-c-format
  msgid "-main=<source_file> source_file/PROGRAM-ID is called by the generated main()."
! msgstr "-main=<fichier_source> fichier_source/ID-PROGRAMME est appelé par le main() généré."
  
  #: cobol/lang.opt:404
! #, no-c-format
  msgid "-nomain\tNo main() function is created from COBOL source files."
! msgstr "-nomain\tAucune fonction main() est créé depuis les fichiers source COBOL."
  
  #: d/lang.opt:51
  #, no-c-format
*************** msgid "Link the standard D library dynam
*** 18474,18489 ****
  msgstr "Lier la bibliothèque D standard dynamiquement pendant la compilation."
  
  #: d/lang.opt:524
! #, fuzzy, no-c-format
! #| msgid "Conform to the ISO 2014 C++ standard."
  msgid "Conform to the 2024 D language edition."
! msgstr "Être conforme au standard C++ ISO 2014."
  
  #: d/lang.opt:528
! #, fuzzy, no-c-format
! #| msgid "Conform to the ISO 202Y C standard draft (experimental and incomplete support)."
  msgid "Conform to the latest 202Y D language edition (experimental)."
! msgstr "Conforme au brouillon du standard ISO C de 202Y (support expérimental et incomplet)."
  
  #: calls.cc:1467
  msgid "a callee-copied argument is stored in the current function's frame"
--- 18240,18253 ----
  msgstr "Lier la bibliothèque D standard dynamiquement pendant la compilation."
  
  #: d/lang.opt:524
! #, no-c-format
  msgid "Conform to the 2024 D language edition."
! msgstr "Être conforme à l'édition du langage D 2024."
  
  #: d/lang.opt:528
! #, no-c-format
  msgid "Conform to the latest 202Y D language edition (experimental)."
! msgstr "Être conforme à la dernière édition du langage D 202Y (expérimental)."
  
  #: calls.cc:1467
  msgid "a callee-copied argument is stored in the current function's frame"
*************** msgstr ""
*** 19272,19281 ****
  "%s.\n"
  
  #: gcov-tool.cc:595
! #, fuzzy, c-format
! #| msgid "Copyright %s 2025 Free Software Foundation, Inc.\n"
  msgid "Copyright %s 2026 Free Software Foundation, Inc.\n"
! msgstr "Copyright %s 2025 Free Software Foundation, Inc.\n"
  
  #: gcov.cc:1096
  #, c-format
--- 19036,19044 ----
  "%s.\n"
  
  #: gcov-tool.cc:595
! #, c-format
  msgid "Copyright %s 2026 Free Software Foundation, Inc.\n"
! msgstr "Copyright %s 2026 Free Software Foundation, Inc.\n"
  
  #: gcov.cc:1096
  #, c-format
*************** msgid "path coverage omitted\n"
*** 19766,19775 ****
  msgstr "couverture de chemin omise\n"
  
  #: gcov.cc:3731
! #, fuzzy, c-format
! #| msgid "paths covered %u of %zu\n"
  msgid "paths covered %u of "
! msgstr "chemins couverts %u sur %zu\n"
  
  #: gcov.cc:3806
  #, c-format
--- 19529,19537 ----
  msgstr "couverture de chemin omise\n"
  
  #: gcov.cc:3731
! #, c-format
  msgid "paths covered %u of "
! msgstr "chemins couverts %u sur "
  
  #: gcov.cc:3806
  #, c-format
*************** msgid "    inlined from %qs"
*** 19865,19977 ****
  msgstr "    mis en ligne depuis %qs"
  
  #: libgdiagnostics.cc:1529
- #, fuzzy
- #| msgid "In member function %qs"
  msgid "In member %qs"
! msgstr "Dans la fonction membre %qs"
  
  #: libgdiagnostics.cc:1530
- #, fuzzy
- #| msgid "In module"
  msgid "In module %qs"
! msgstr "Dans le module"
  
  #: libgdiagnostics.cc:1531
- #, fuzzy
- #| msgid "namespace %qD entered"
  msgid "In namespace %qs"
! msgstr "entrée dans l'espace de noms %qD"
  
  #: libgdiagnostics.cc:1532
- #, fuzzy
- #| msgid "for type %qT"
  msgid "In type %qs"
! msgstr "pour le type %qT"
  
  #: libgdiagnostics.cc:1534
- #, fuzzy
- #| msgid "invalid receiver type %qs"
  msgid "In return type %qs"
! msgstr "type du receveur %qs invalide"
  
  #: libgdiagnostics.cc:1535
- #, fuzzy
- #| msgid "invalid parameter %qs"
  msgid "In parameter %qs"
! msgstr "paramètre invalide %qs"
  
  #: libgdiagnostics.cc:1536
- #, fuzzy
- #| msgid "unused variable %qD"
  msgid "In variable %qs"
! msgstr "variable %qD inutilisée"
  
  #. Kinds within XML or HTML documents.
  #: libgdiagnostics.cc:1539
- #, fuzzy
- #| msgid "In member function %qs"
  msgid "In element %qs"
! msgstr "Dans la fonction membre %qs"
  
  #: libgdiagnostics.cc:1540
- #, fuzzy
- #| msgid "unknown attribute %qs"
  msgid "In attribute %qs"
! msgstr "attribut %qs inconnu"
  
  #: libgdiagnostics.cc:1541
- #, fuzzy
- #| msgid "In function %qs"
  msgid "In text %qs"
! msgstr "Dans la fonction %qs"
  
  #: libgdiagnostics.cc:1542
- #, fuzzy
- #| msgid "In function %qs"
  msgid "In comment %qs"
! msgstr "Dans la fonction %qs"
  
  #: libgdiagnostics.cc:1544
- #, fuzzy
- #| msgid "Enable coprocessor instructions."
  msgid "In processing instruction %qs"
! msgstr "Activer les instructions coprocesseur."
  
  #: libgdiagnostics.cc:1545
  msgid "In DTD %qs"
! msgstr ""
  
  #: libgdiagnostics.cc:1547
- #, fuzzy
- #| msgid "in declaration %q+D"
  msgid "In declaration %qs"
! msgstr "dans la déclaration de %q+D"
  
  #. Kinds within JSON documents.
  #: libgdiagnostics.cc:1550
- #, fuzzy
- #| msgid "JSON object"
  msgid "In JSON object %qs"
! msgstr "objet JSON"
  
  #: libgdiagnostics.cc:1551
- #, fuzzy
- #| msgid "JSON array"
  msgid "In JSON array %qs"
! msgstr "tableau JSON"
  
  #: libgdiagnostics.cc:1553
  msgid "In JSON property %qs"
! msgstr ""
  
  #: libgdiagnostics.cc:1554
  msgid "In JSON value %qs"
! msgstr ""
  
  #: libgdiagnostics.cc:1701
  #, c-format
  msgid "%e"
! msgstr ""
  
  #: libsarifreplay.cc:760
  msgid "JSON object"
--- 19627,19709 ----
  msgstr "    mis en ligne depuis %qs"
  
  #: libgdiagnostics.cc:1529
  msgid "In member %qs"
! msgstr "Dans le membre %qs"
  
  #: libgdiagnostics.cc:1530
  msgid "In module %qs"
! msgstr "Dans le module %qs"
  
  #: libgdiagnostics.cc:1531
  msgid "In namespace %qs"
! msgstr "Dans l'espace de noms %qD"
  
  #: libgdiagnostics.cc:1532
  msgid "In type %qs"
! msgstr "Dans le type %qs"
  
  #: libgdiagnostics.cc:1534
  msgid "In return type %qs"
! msgstr "Dans le type de retour %qs"
  
  #: libgdiagnostics.cc:1535
  msgid "In parameter %qs"
! msgstr "Dans le paramètre %qs"
  
  #: libgdiagnostics.cc:1536
  msgid "In variable %qs"
! msgstr "Dans la variable %qs"
  
  #. Kinds within XML or HTML documents.
  #: libgdiagnostics.cc:1539
  msgid "In element %qs"
! msgstr "Dans l'élément %qs"
  
  #: libgdiagnostics.cc:1540
  msgid "In attribute %qs"
! msgstr "Dans l'attribut %qs"
  
  #: libgdiagnostics.cc:1541
  msgid "In text %qs"
! msgstr "Dans le texte %qs"
  
  #: libgdiagnostics.cc:1542
  msgid "In comment %qs"
! msgstr "Dans le commentaire %qs"
  
  #: libgdiagnostics.cc:1544
  msgid "In processing instruction %qs"
! msgstr "Dans l'instruction de traitement %qs"
  
  #: libgdiagnostics.cc:1545
  msgid "In DTD %qs"
! msgstr "Dans le DTD %qs"
  
  #: libgdiagnostics.cc:1547
  msgid "In declaration %qs"
! msgstr "Dans la déclaration %qs"
  
  #. Kinds within JSON documents.
  #: libgdiagnostics.cc:1550
  msgid "In JSON object %qs"
! msgstr "Dans l'objet JSON %qs"
  
  #: libgdiagnostics.cc:1551
  msgid "In JSON array %qs"
! msgstr "Dans le tableau JSON %qs"
  
  #: libgdiagnostics.cc:1553
  msgid "In JSON property %qs"
! msgstr "Dans la propriété JSON %qs"
  
  #: libgdiagnostics.cc:1554
  msgid "In JSON value %qs"
! msgstr "Dans la valeur JSON %qs"
  
  #: libgdiagnostics.cc:1701
  #, c-format
  msgid "%e"
! msgstr "%e"
  
  #: libsarifreplay.cc:760
  msgid "JSON object"
*************** msgid "this is the insn:"
*** 19998,20007 ****
  msgstr "ceci est la insn :"
  
  #: lra-constraints.cc:4182
- #, fuzzy
- #| msgid "invalid operand address"
  msgid "unable to reload address in "
! msgstr "adresse d'opérande invalide"
  
  #: lra-constraints.cc:4478 reload.cc:3852
  msgid "unable to generate reloads for:"
--- 19730,19737 ----
  msgstr "ceci est la insn :"
  
  #: lra-constraints.cc:4182
  msgid "unable to reload address in "
! msgstr "impossible de recharger l'adresse dans "
  
  #: lra-constraints.cc:4478 reload.cc:3852
  msgid "unable to generate reloads for:"
*************** msgid "invalid conversion to type %<mflo
*** 20667,20740 ****
  msgstr "conversion invalide vers le type %<mfloat8_t%>"
  
  #: config/aarch64/aarch64.cc:31104
- #, fuzzy
- #| msgid "operation not permitted on type %<bfloat16_t%>"
  msgid "preincrement operation not permitted on svbool_t"
! msgstr "opération non permise sur le type %<bfloat16_t%>"
  
  #: config/aarch64/aarch64.cc:31106
- #, fuzzy
- #| msgid "operation not permitted on type %<bfloat16_t%>"
  msgid "predecrement operation not permitted on svbool_t"
! msgstr "opération non permise sur le type %<bfloat16_t%>"
  
  #: config/aarch64/aarch64.cc:31108
- #, fuzzy
- #| msgid "operation not permitted on type %<bfloat16_t%>"
  msgid "postincrement operation not permitted on svbool_t"
! msgstr "opération non permise sur le type %<bfloat16_t%>"
  
  #: config/aarch64/aarch64.cc:31110
- #, fuzzy
- #| msgid "operation not permitted on type %<bfloat16_t%>"
  msgid "postdecrement operation not permitted on svbool_t"
! msgstr "opération non permise sur le type %<bfloat16_t%>"
  
  #: config/aarch64/aarch64.cc:31112
- #, fuzzy
- #| msgid "operation not permitted on type %<bfloat16_t%>"
  msgid "negation operation not permitted on svbool_t"
! msgstr "opération non permise sur le type %<bfloat16_t%>"
  
  #: config/aarch64/aarch64.cc:31114
- #, fuzzy
- #| msgid "operation not permitted on type %<bfloat16_t%>"
  msgid "plus operation not permitted on svbool_t"
! msgstr "opération non permise sur le type %<bfloat16_t%>"
  
  #: config/aarch64/aarch64.cc:31116
- #, fuzzy
- #| msgid "operation not permitted on type %<bfloat16_t%>"
  msgid "minus operation not permitted on svbool_t"
! msgstr "opération non permise sur le type %<bfloat16_t%>"
  
  #: config/aarch64/aarch64.cc:31118
- #, fuzzy
- #| msgid "operation not permitted on type %<bfloat16_t%>"
  msgid "multiply operation not permitted on svbool_t"
! msgstr "opération non permise sur le type %<bfloat16_t%>"
  
  #: config/aarch64/aarch64.cc:31120
- #, fuzzy
- #| msgid "operation not permitted on type %<bfloat16_t%>"
  msgid "divide operation not permitted on svbool_t"
! msgstr "opération non permise sur le type %<bfloat16_t%>"
  
  #: config/aarch64/aarch64.cc:31123
- #, fuzzy
- #| msgid "operation not permitted on type %<bfloat16_t%>"
  msgid "shift operation not permitted on svbool_t"
! msgstr "opération non permise sur le type %<bfloat16_t%>"
  
  #: config/aarch64/aarch64.cc:31128
  msgid "only == and != operations permitted on svbool_t"
! msgstr ""
  
  #: config/aarch64/aarch64.cc:31130
- #, fuzzy
- #| msgid "stack usage computation not supported for this target"
  msgid "subscript operation not supported on svbool_t"
! msgstr "le calcul de l'utilisation de la pile n'est pas supporté pour cette cible"
  
  #: config/aarch64/aarch64.cc:31151 config/aarch64/aarch64.cc:31184
  msgid "operation not permitted on type %<mfloat8_t%>"
--- 20397,20448 ----
  msgstr "conversion invalide vers le type %<mfloat8_t%>"
  
  #: config/aarch64/aarch64.cc:31104
  msgid "preincrement operation not permitted on svbool_t"
! msgstr "opération de pré-incrémentation non permise sur svbool_t"
  
  #: config/aarch64/aarch64.cc:31106
  msgid "predecrement operation not permitted on svbool_t"
! msgstr "opération de pré-décrémentation non permise sur svbool_t"
  
  #: config/aarch64/aarch64.cc:31108
  msgid "postincrement operation not permitted on svbool_t"
! msgstr "opération de post incrémentation non permise sur svbool_t"
  
  #: config/aarch64/aarch64.cc:31110
  msgid "postdecrement operation not permitted on svbool_t"
! msgstr "opération de post décrémentation non permise sur svbool_t"
  
  #: config/aarch64/aarch64.cc:31112
  msgid "negation operation not permitted on svbool_t"
! msgstr "opération de négation non permise sur svbool_t"
  
  #: config/aarch64/aarch64.cc:31114
  msgid "plus operation not permitted on svbool_t"
! msgstr "opération plus non permise sur svbool_t"
  
  #: config/aarch64/aarch64.cc:31116
  msgid "minus operation not permitted on svbool_t"
! msgstr "opération moins non permise sur svbool_t"
  
  #: config/aarch64/aarch64.cc:31118
  msgid "multiply operation not permitted on svbool_t"
! msgstr "opération multiplication non permise sur svbool_t"
  
  #: config/aarch64/aarch64.cc:31120
  msgid "divide operation not permitted on svbool_t"
! msgstr "opération division non permise sur svbool_t"
  
  #: config/aarch64/aarch64.cc:31123
  msgid "shift operation not permitted on svbool_t"
! msgstr "opération décalage non permise sur svbool_t"
  
  #: config/aarch64/aarch64.cc:31128
  msgid "only == and != operations permitted on svbool_t"
! msgstr "seules les opérations == et !- sont permises sur svbool_t"
  
  #: config/aarch64/aarch64.cc:31130
  msgid "subscript operation not supported on svbool_t"
! msgstr "opération d'indice non supportée sur svbool_t"
  
  #: config/aarch64/aarch64.cc:31151 config/aarch64/aarch64.cc:31184
  msgid "operation not permitted on type %<mfloat8_t%>"
*************** msgstr "code de format Maverick « %c 
*** 20978,20987 ****
  
  #. Former iWMMXT support, removed after GCC-15.
  #: config/arm/arm.cc:24455
! #, fuzzy, c-format
! #| msgid "obsolete FPA format code '%c'"
  msgid "obsolete iWMMXT format code '%c'"
! msgstr "code de format FPA « %c » obsolète"
  
  #: config/arm/arm.cc:34277
  msgid "invalid conversion from type %<bfloat16_t%>"
--- 20686,20694 ----
  
  #. Former iWMMXT support, removed after GCC-15.
  #: config/arm/arm.cc:24455
! #, c-format
  msgid "obsolete iWMMXT format code '%c'"
! msgstr "code de format iWMMXT « %c » obsolète"
  
  #: config/arm/arm.cc:34277
  msgid "invalid conversion from type %<bfloat16_t%>"
*************** msgid "operand is not a specific integer
*** 21451,21460 ****
  msgstr "l'opérande n'est pas un entier spécifique, code d'opérande « R » invalide"
  
  #: config/i386/i386.cc:14530
! #, fuzzy, c-format
! #| msgid "operand is not an offsettable memory reference, invalid operand code 'H'"
  msgid "operand is not a memory reference, invalid operand code 'v'"
! msgstr "l'opérande n'est pas une référence mémoire avec décalage, code d'opérande « H » invalide"
  
  #: config/i386/i386.cc:14618
  #, c-format
--- 21158,21166 ----
  msgstr "l'opérande n'est pas un entier spécifique, code d'opérande « R » invalide"
  
  #: config/i386/i386.cc:14530
! #, c-format
  msgid "operand is not a memory reference, invalid operand code 'v'"
! msgstr "l'opérande n'est pas une référence mémoire, code d'opérande « v » invalide"
  
  #: config/i386/i386.cc:14618
  #, c-format
*************** msgid "invalid register number for 'N' m
*** 21782,21803 ****
  msgstr "numéro de registre invalide pour le modificateur « N »"
  
  #: config/riscv/riscv.cc:8236
! #, fuzzy, c-format
! #| msgid "modifier 'N' require register operand"
  msgid "modifier 'H' require register operand"
! msgstr "le modificateur « N » requiert un opérande registre"
  
  #: config/riscv/riscv.cc:8241
! #, fuzzy, c-format
! #| msgid "modifier 'N' require register operand"
  msgid "modifier 'H' is for integer registers only"
! msgstr "le modificateur « N » requiert un opérande registre"
  
  #: config/riscv/riscv.cc:8246
! #, fuzzy, c-format
! #| msgid "%qV qualifiers cannot be applied to %qT"
  msgid "modifier 'H' cannot be applied to R31"
! msgstr "les qualificatifs %qV ne peuvent pas être appliqués à %qT"
  
  #: config/rl78/rl78.cc:1999 config/rl78/rl78.cc:2085
  #, c-format
--- 21488,21506 ----
  msgstr "numéro de registre invalide pour le modificateur « N »"
  
  #: config/riscv/riscv.cc:8236
! #, c-format
  msgid "modifier 'H' require register operand"
! msgstr "le modificateur « H » requiert un opérande registre"
  
  #: config/riscv/riscv.cc:8241
! #, c-format
  msgid "modifier 'H' is for integer registers only"
! msgstr "le modificateur « H » est uniquement pour des registres entiers"
  
  #: config/riscv/riscv.cc:8246
! #, c-format
  msgid "modifier 'H' cannot be applied to R31"
! msgstr "le modificateur « H » ne peut pas être appliqué à R31"
  
  #: config/rl78/rl78.cc:1999 config/rl78/rl78.cc:2085
  #, c-format
*************** msgid "At global scope:"
*** 22629,22804 ****
  msgstr "Au niveau global:"
  
  #: cp/reflect.cc:559
- #, fuzzy
- #| msgid "accumulator is not a constant integer"
  msgid "array element not a constant integer"
! msgstr "l'accumulateur n'est pas une constante entière"
  
  #: cp/reflect.cc:567 cp/reflect.cc:3862
- #, fuzzy
- #| msgid "expected constant size"
  msgid "reflect_constant failed"
! msgstr "taille constante attendue"
  
  #: cp/reflect.cc:1000
- #, fuzzy
- #| msgid "function does not return string type"
  msgid "reflection does not represent a type"
! msgstr "la fonction ne retourne pas un type « string »"
  
  #: cp/reflect.cc:1012
- #, fuzzy
- #| msgid "redeclaration of friend %q#D may not have default template arguments"
  msgid "reflection does not have template arguments"
! msgstr "la redéclaration de l'ami %q#D ne peut pas avoir d'arguments de patron par défaut"
  
  #: cp/reflect.cc:1023
- #, fuzzy
- #| msgid "called object is not a function or function pointer"
  msgid "reflection does not represent a function or function type"
! msgstr "l'objet appelé n'est pas une fonction ou un pointeur de fonction"
  
  #: cp/reflect.cc:2324
  msgid "reflection does not represent an operator function or operator function template"
! msgstr ""
  
  #: cp/reflect.cc:2374
- #, fuzzy
- #| msgid "%<-Werror=%> argument %qs is not valid for %s"
  msgid "operators argument is not a valid operator"
! msgstr "l'argument de %<-Werror=%> %qs n'est pas valide pour %s"
  
  #: cp/reflect.cc:2505
- #, fuzzy
- #| msgid "%T is not a class type"
  msgid "reflection does not have a type"
! msgstr "« %T » n'est pas un type de classe"
  
  #: cp/reflect.cc:2621
  msgid "reflection does not represent an object with static storage duration, or a reference to such an object"
! msgstr ""
  
  #: cp/reflect.cc:2702
  msgid "reflection does not represent an annotation or a valid argument to a splice-expression"
! msgstr ""
  
  #: cp/reflect.cc:2922
- #, fuzzy
- #| msgid "function does not return a value to test"
  msgid "reflection does not represent an entity with parent"
! msgstr "la fonction ne retourne pas de valeur à tester"
  
  #: cp/reflect.cc:3045
- #, fuzzy
- #| msgid "friend declaration does not name a class or function"
  msgid "reflection does not represent parameter of current function"
! msgstr "la déclaration amie ne nomme pas une classe ou une fonction"
  
  #: cp/reflect.cc:3066
- #, fuzzy
- #| msgid "called object is not a function or function pointer"
  msgid "reflection does not represent a function or function type with a return type"
! msgstr "l'objet appelé n'est pas une fonction ou un pointeur de fonction"
  
  #: cp/reflect.cc:3097
  msgid "reflection of virtual direct base relationship with abstract derived class"
! msgstr ""
  
  #: cp/reflect.cc:3103
  msgid "reflection unsuitable for offset_of"
! msgstr ""
  
  #: cp/reflect.cc:3108
- #, fuzzy
- #| msgid "non-constant condition for static assertion"
  msgid "non-constant offset for offset_of"
! msgstr "condition non constante pour l'assertion statique"
  
  #: cp/reflect.cc:3172
  msgid "reflection not suitable for size_of"
! msgstr ""
  
  #: cp/reflect.cc:3191
- #, fuzzy
- #| msgid "dereferencing pointer to incomplete type %qT"
  msgid "reflection with incomplete type in size_of"
! msgstr "déréférencement d'un pointeur du type incomplet %qT"
  
  #: cp/reflect.cc:3227
- #, fuzzy
- #| msgid "Do not tune writable data alignment."
  msgid "reflection not suitable for alignment_of"
! msgstr "Ne pas ajuster l'alignement des donnés accessibles en écriture."
  
  #: cp/reflect.cc:3263
- #, fuzzy
- #| msgid "assignment of function %qD"
  msgid "alignment_of on function type"
! msgstr "affectation de la fonction %qD"
  
  #: cp/reflect.cc:3272
- #, fuzzy
- #| msgid "indirection will not access object of incomplete type %qT in statement"
  msgid "reflection with incomplete type in alignment_of"
! msgstr "l'indirection n'accèdera pas à l'objet du type incomplet %qT dans l'instruction"
  
  #: cp/reflect.cc:3307
  msgid "reflection not suitable for bit_size_of"
! msgstr ""
  
  #: cp/reflect.cc:3331
- #, fuzzy
- #| msgid "dereferencing pointer to incomplete type %qT"
  msgid "reflection with incomplete type in bit_size_of"
! msgstr "déréférencement d'un pointeur du type incomplet %qT"
  
  #: cp/reflect.cc:3507
  msgid "reflection with has_identifier false"
! msgstr ""
  
  #: cp/reflect.cc:3547 cp/reflect.cc:3630
  msgid "identifier_of not representable in ordinary literal encoding"
! msgstr ""
  
  #: cp/reflect.cc:3551 cp/reflect.cc:3634
  msgid "u8identifier_of not representable in UTF-8"
! msgstr ""
  
  #: cp/reflect.cc:3767
  msgid "reflection does not represent a type, type alias, variable, function, namespace, enumerator, direct base class relationship, or non-static data member"
! msgstr ""
  
  #: cp/reflect.cc:3779
- #, fuzzy
- #| msgid "function does not return a value to test"
  msgid "reflection does not represent a complete type or type alias"
! msgstr "la fonction ne retourne pas de valeur à tester"
  
  #: cp/reflect.cc:3886
  msgid "reflect_object failed"
! msgstr ""
  
  #: cp/reflect.cc:3913
- #, fuzzy
- #| msgid "expected function name"
  msgid "reflect_function failed"
! msgstr "nom de fonction attendu"
  
  #: cp/reflect.cc:4792
- #, fuzzy
- #| msgid "invalid embedcfg: missing Files"
  msgid "value member missing"
! msgstr "embedcfg invalide : Files manquant"
  
  #: cp/reflect.cc:4803 cp/reflect.cc:4812
- #, fuzzy
- #| msgid "expected loop number"
  msgid "unexpected value of value member"
! msgstr "numéro de boucle attendu"
  
  #: cp/reflect.cc:4919
  msgid "type member missing"
! msgstr ""
  
  #: cp/reflect.cc:4943
  #, fuzzy
--- 22332,22467 ----
  msgstr "Au niveau global:"
  
  #: cp/reflect.cc:559
  msgid "array element not a constant integer"
! msgstr "l'élément du tableau n'est pas une constante entière"
  
  #: cp/reflect.cc:567 cp/reflect.cc:3862
  msgid "reflect_constant failed"
! msgstr "reflect_constant a échoué"
  
  #: cp/reflect.cc:1000
  msgid "reflection does not represent a type"
! msgstr "la réflexion ne représente pas un type"
  
  #: cp/reflect.cc:1012
  msgid "reflection does not have template arguments"
! msgstr "la réflexion n'a pas d'arguments de patron"
  
  #: cp/reflect.cc:1023
  msgid "reflection does not represent a function or function type"
! msgstr "la réflexion ne représente pas une fonction ou un pointeur de fonction"
  
  #: cp/reflect.cc:2324
  msgid "reflection does not represent an operator function or operator function template"
! msgstr "la réflexion ne représente pas une fonction opérateur ou un patron de fonction opérateur"
  
  #: cp/reflect.cc:2374
  msgid "operators argument is not a valid operator"
! msgstr "l'argument des opérateurs n'est pas un opérateur valide"
  
  #: cp/reflect.cc:2505
  msgid "reflection does not have a type"
! msgstr "la réflexion n'a pas de type"
  
  #: cp/reflect.cc:2621
  msgid "reflection does not represent an object with static storage duration, or a reference to such an object"
! msgstr "la réflexion ne représente pas un objet avec une durée de stockage statique ou une référence à un tel objet"
  
  #: cp/reflect.cc:2702
  msgid "reflection does not represent an annotation or a valid argument to a splice-expression"
! msgstr "la réflexion ne représente pas une annotation ou un argument valable à une expression de tranche"
  
  #: cp/reflect.cc:2922
  msgid "reflection does not represent an entity with parent"
! msgstr "la réflexion ne représente pas une entité avec un parent"
  
  #: cp/reflect.cc:3045
  msgid "reflection does not represent parameter of current function"
! msgstr "la réflexion ne représente pas un paramètre de la fonction courante"
  
  #: cp/reflect.cc:3066
  msgid "reflection does not represent a function or function type with a return type"
! msgstr "la réflexion ne représente pas une fonction ou un type de fonction avec un type de retour"
  
  #: cp/reflect.cc:3097
  msgid "reflection of virtual direct base relationship with abstract derived class"
! msgstr "la réflexion d'une relation de base directe virtuelle avec une classe dérivée abstraite"
  
  #: cp/reflect.cc:3103
  msgid "reflection unsuitable for offset_of"
! msgstr "la réflexion est inappropriée pour offset_of"
  
  #: cp/reflect.cc:3108
  msgid "non-constant offset for offset_of"
! msgstr "décalage non constant pour offset_of"
  
  #: cp/reflect.cc:3172
  msgid "reflection not suitable for size_of"
! msgstr "la réflexion n'est pas appropriée pour size_of"
  
  #: cp/reflect.cc:3191
  msgid "reflection with incomplete type in size_of"
! msgstr "réflexion avec un type incomplet dans size_of"
  
  #: cp/reflect.cc:3227
  msgid "reflection not suitable for alignment_of"
! msgstr "réflexion inappropriée pour alignment_of"
  
  #: cp/reflect.cc:3263
  msgid "alignment_of on function type"
! msgstr "alignment_of sur un type de fonction"
  
  #: cp/reflect.cc:3272
  msgid "reflection with incomplete type in alignment_of"
! msgstr "réflexion avec un type incomplet dans alignment_of"
  
  #: cp/reflect.cc:3307
  msgid "reflection not suitable for bit_size_of"
! msgstr "la réflexion est inappropriée pour bit_size_of"
  
  #: cp/reflect.cc:3331
  msgid "reflection with incomplete type in bit_size_of"
! msgstr "réflexion avec un type incomplet dans bit_size_of"
  
  #: cp/reflect.cc:3507
  msgid "reflection with has_identifier false"
! msgstr "réflexion avec has_identifier false"
  
  #: cp/reflect.cc:3547 cp/reflect.cc:3630
  msgid "identifier_of not representable in ordinary literal encoding"
! msgstr "identifier_of pas représentable dans un encodage littéral ordinaire"
  
  #: cp/reflect.cc:3551 cp/reflect.cc:3634
  msgid "u8identifier_of not representable in UTF-8"
! msgstr "u8identifier_of pas représentable en UTF-8"
  
  #: cp/reflect.cc:3767
  msgid "reflection does not represent a type, type alias, variable, function, namespace, enumerator, direct base class relationship, or non-static data member"
! msgstr "la réflexion ne représente pas un type, un synonyme de type, une variable, une fonction, un espace de noms, un énumérateur, une relation de classe de base directe ou un membre de données non statique"
  
  #: cp/reflect.cc:3779
  msgid "reflection does not represent a complete type or type alias"
! msgstr "la réflexion ne représente pas un type complet ou un synonyme de type"
  
  #: cp/reflect.cc:3886
  msgid "reflect_object failed"
! msgstr "reflect_object a échoué"
  
  #: cp/reflect.cc:3913
  msgid "reflect_function failed"
! msgstr "reflect_function a échoué"
  
  #: cp/reflect.cc:4792
  msgid "value member missing"
! msgstr "membre de valeur manquant"
  
  #: cp/reflect.cc:4803 cp/reflect.cc:4812
  msgid "unexpected value of value member"
! msgstr "valeur de membre de valeur inattendue"
  
  #: cp/reflect.cc:4919
  msgid "type member missing"
! msgstr "membre de type manquant"
  
  #: cp/reflect.cc:4943
  #, fuzzy
diff -Nrcpad gcc-16-20260301/gcc/po/sv.po gcc-16-20260308/gcc/po/sv.po
*** gcc-16-20260301/gcc/po/sv.po	Sun Mar  1 22:32:07 2026
--- gcc-16-20260308/gcc/po/sv.po	Sun Mar  8 22:32:07 2026
***************
*** 29,38 ****
  # thunk			snutt
  msgid ""
  msgstr ""
! "Project-Id-Version: gcc 15.2.0\n"
  "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n"
  "POT-Creation-Date: 2026-02-19 21:05+0000\n"
! "PO-Revision-Date: 2026-01-27 21:14+0100\n"
  "Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n"
  "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
  "Language: sv\n"
--- 29,38 ----
  # thunk			snutt
  msgid ""
  msgstr ""
! "Project-Id-Version: gcc 16.1-b20260222\n"
  "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n"
  "POT-Creation-Date: 2026-02-19 21:05+0000\n"
! "PO-Revision-Date: 2026-03-01 12:21+0100\n"
  "Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n"
  "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
  "Language: sv\n"
*************** msgid "function has external linkage whe
*** 151,170 ****
  msgstr "funktionen har extern länkning när användaren begär endast inline:ade static för uppdatering i drift"
  
  #: cif-code.def:145
- #, fuzzy
- #| msgid "errors during merging of translation units"
  msgid "callee must remain in translation unit"
! msgstr "fel vid sammanslagning av översättningsenheter"
  
  #: cif-code.def:149
  msgid "unreachable"
  msgstr "onåbar"
  
  #: cif-code.def:154
- #, fuzzy
- #| msgid "caller edge count invalid"
  msgid "callback edges cannot be inlined"
! msgstr "antal anropande bågar är felaktigt"
  
  #: config/i386/djgpp.h:143
  #, c-format
--- 151,166 ----
  msgstr "funktionen har extern länkning när användaren begär endast inline:ade static för uppdatering i drift"
  
  #: cif-code.def:145
  msgid "callee must remain in translation unit"
! msgstr "anroparen måste finnas kvar i översättningsenheten"
  
  #: cif-code.def:149
  msgid "unreachable"
  msgstr "onåbar"
  
  #: cif-code.def:154
  msgid "callback edges cannot be inlined"
! msgstr "återanropsbågar kan inte inline:as"
  
  #: config/i386/djgpp.h:143
  #, c-format
*************** msgid "does not support multilib"
*** 285,294 ****
  msgstr "stödjer inte multilib"
  
  #: config/sol2.h:362 config/sol2.h:371
- #, fuzzy
- #| msgid "-gz is not supported in this configuration"
  msgid "-gsctf is not supported in this configuration"
! msgstr "-gz stödjs inte i denna konfiguration"
  
  #: config/vxworks.h:236
  msgid "-Xbind-now and -Xbind-lazy are incompatible"
--- 281,288 ----
  msgstr "stödjer inte multilib"
  
  #: config/sol2.h:362 config/sol2.h:371
  msgid "-gsctf is not supported in this configuration"
! msgstr "-gsctf stödjs inte i denna konfiguration"
  
  #: config/vxworks.h:236
  msgid "-Xbind-now and -Xbind-lazy are incompatible"
*************** msgstr "  profileringsstöd endast finns
*** 368,380 ****
  
  #: config/riscv/riscv.h:127
  msgid "At least one valid -mcpu option must be given after -march=unset"
! msgstr ""
  
  #: config/rs6000/aix.h:286
- #, fuzzy
- #| msgid "%<-fstack-protector%> not supported for this target"
  msgid "stack-protector not supported on AIX"
! msgstr "%<-fstack-protector%> stödjs inte av denna målarkitektur"
  
  #: config/rs6000/darwin.h:126
  msgid " conflicting code gen style switches are used"
--- 362,372 ----
  
  #: config/riscv/riscv.h:127
  msgid "At least one valid -mcpu option must be given after -march=unset"
! msgstr "Åtminstone en giltig flagga -mcpu måste anges efter -march=unset"
  
  #: config/rs6000/aix.h:286
  msgid "stack-protector not supported on AIX"
! msgstr "stack-protector stödjs inte på AIX"
  
  #: config/rs6000/darwin.h:126
  msgid " conflicting code gen style switches are used"
*************** msgstr "Dumpa symboltabellanropsgrafen."
*** 552,576 ****
  #: config/picolibc.opt:26
  #, no-c-format
  msgid "Specify an OS support library to load after libc."
! msgstr ""
  
  #: config/picolibc.opt:33
! #, fuzzy, no-c-format
! #| msgid "Specify the name of the target CPU."
  msgid "Specify an alternate startup file."
! msgstr "Ange namnet på målprocessorn."
  
  #: config/picolibc.opt:40
! #, fuzzy, no-c-format
! #| msgid "Specify the PTX ISA version to use."
  msgid "Specify the printf version linked from libc."
! msgstr "Ange PTX-ISA-versionen att använda."
  
  #: config/picolibc.opt:47
! #, fuzzy, no-c-format
! #| msgid "Specify the PTX ISA version to use."
  msgid "Specify the scanf version linked from libc."
! msgstr "Ange PTX-ISA-versionen att använda."
  
  #: config/nds32/nds32-elf.opt:3 config/nds32/nds32-linux.opt:3
  #, no-c-format
--- 544,565 ----
  #: config/picolibc.opt:26
  #, no-c-format
  msgid "Specify an OS support library to load after libc."
! msgstr "Ange ett OS-stödsbibliotek att ladda efter libc."
  
  #: config/picolibc.opt:33
! #, no-c-format
  msgid "Specify an alternate startup file."
! msgstr "Ange en alternativ uppstartsfil."
  
  #: config/picolibc.opt:40
! #, no-c-format
  msgid "Specify the printf version linked from libc."
! msgstr "Ange printf-versionen som länkas från libc."
  
  #: config/picolibc.opt:47
! #, no-c-format
  msgid "Specify the scanf version linked from libc."
! msgstr "Ange scanf-versionen som länkas från libc."
  
  #: config/nds32/nds32-elf.opt:3 config/nds32/nds32-linux.opt:3
  #, no-c-format
*************** msgid "Known ABIs (for use with the -mab
*** 613,628 ****
  msgstr "Kända ABI:er (att användas med flaggan -mabi=):"
  
  #: config/nds32/nds32.opt:61
! #, fuzzy, no-c-format
! #| msgid "Specify use soft floating point ABI which mean alias to -mabi=2."
  msgid "Specify the soft floating-point ABI, aliased to -mabi=2."
! msgstr "Ange användning av ABI för mjuka flyttal vilket betyder ett alias för -mabi=2."
  
  #: config/nds32/nds32.opt:65
! #, fuzzy, no-c-format
! #| msgid "Specify use soft floating point ABI which mean alias to -mabi=2fp+."
  msgid "Specify the hard floating-point ABI, aliased to -mabi=2fp+."
! msgstr "Ange användning av ABI för mjuka flyttal vilket betyder ett alias för -mabi=2fp+."
  
  #: config/nds32/nds32.opt:71
  #, no-c-format
--- 602,615 ----
  msgstr "Kända ABI:er (att användas med flaggan -mabi=):"
  
  #: config/nds32/nds32.opt:61
! #, no-c-format
  msgid "Specify the soft floating-point ABI, aliased to -mabi=2."
! msgstr "Ange ABI:et för mjuka flyttal, alias till -mabi=2."
  
  #: config/nds32/nds32.opt:65
! #, no-c-format
  msgid "Specify the hard floating-point ABI, aliased to -mabi=2fp+."
! msgstr "Ange ABI:et för hårda flyttal, alias till -mabi=2fp+."
  
  #: config/nds32/nds32.opt:71
  #, no-c-format
*************** msgid "Always align function entry, jump
*** 640,647 ****
  msgstr "Justera alltid funktionsingång, hoppmål och returadress."
  
  #: config/nds32/nds32.opt:85
! #, fuzzy, no-c-format
! #| msgid "Align function entry to 4 byte."
  msgid "Align function entry to 4 bytes."
  msgstr "Justera funktionsingångar till 4 byte."
  
--- 627,633 ----
  msgstr "Justera alltid funktionsingång, hoppmål och returadress."
  
  #: config/nds32/nds32.opt:85
! #, no-c-format
  msgid "Align function entry to 4 bytes."
  msgstr "Justera funktionsingångar till 4 byte."
  
*************** msgstr "Förhindra att $fp allokeras und
*** 653,659 ****
  #: config/nds32/nds32.opt:101
  #, no-c-format
  msgid "Forbid using $fp to access static and global variables.  This option strictly forbids fp-as-gp optimization regardless of '-mforce-fp-as-gp'."
! msgstr "Förbud användning av $fp för att komma åt statiska och globala variabler.  Denna flagga förbjuder strikt fp-as-gp-optimeringar oavsett ”-mforce-fp-as-gp”."
  
  #: config/nds32/nds32.opt:105
  #, no-c-format
--- 639,645 ----
  #: config/nds32/nds32.opt:101
  #, no-c-format
  msgid "Forbid using $fp to access static and global variables.  This option strictly forbids fp-as-gp optimization regardless of '-mforce-fp-as-gp'."
! msgstr "Förbud användning av $fp för att komma åt statiska och globala variabler. Denna flagga förbjuder strikt fp-as-gp-optimeringar oavsett ”-mforce-fp-as-gp”."
  
  #: config/nds32/nds32.opt:105
  #, no-c-format
*************** msgid "Known cpu types (for use with the
*** 752,761 ****
  msgstr "Kända arkitekturtyper (att användas med flaggan -mcpu=):"
  
  #: config/nds32/nds32.opt:361
! #, fuzzy, no-c-format
! #| msgid "Specify a fpu configuration value from 0 to 7; 0-3 is as FPU spec says, and 4-7 is corresponding to 0-3."
  msgid "Specify a FPU configuration value from 0 to 7; 0-3 is as FPU spec says, and 4-7 correspond to 0-3."
! msgstr "Ange ett fpu-konfigurationsvärde från 0 till 7; 0-3 är vad FPU-specifikationen säger, och 4-7 motsvarar 0-3."
  
  #: config/nds32/nds32.opt:365
  #, no-c-format
--- 738,746 ----
  msgstr "Kända arkitekturtyper (att användas med flaggan -mcpu=):"
  
  #: config/nds32/nds32.opt:361
! #, no-c-format
  msgid "Specify a FPU configuration value from 0 to 7; 0-3 is as FPU spec says, and 4-7 correspond to 0-3."
! msgstr "Ange ett FPU-konfigurationsvärde från 0 till 7; 0-3 är vad FPU-specifikationen säger, och 4-7 motsvarar 0-3."
  
  #: config/nds32/nds32.opt:365
  #, no-c-format
*************** msgstr "Känt antal flyttalsregister (at
*** 765,776 ****
  #: config/nds32/nds32.opt:393
  #, no-c-format
  msgid "Specify configuration of instruction mul: fast1, fast2 or slow. The default is fast1."
! msgstr "Ange konfiguration av instruktionen mul: fast1, fast2 eller slow.  Standardvärdet är fast1."
  
  #: config/nds32/nds32.opt:412
  #, no-c-format
  msgid "Specify how many read/write ports for n9/n10 cores.  The value should be 3r2w or 2r1w."
! msgstr "Ange antalet läs-/skrivportar för n9-/n10-kärnor.  Värdet skall vara 3r2w eller 2r1w."
  
  #: config/nds32/nds32.opt:425
  #, no-c-format
--- 750,761 ----
  #: config/nds32/nds32.opt:393
  #, no-c-format
  msgid "Specify configuration of instruction mul: fast1, fast2 or slow. The default is fast1."
! msgstr "Ange konfiguration av instruktionen mul: fast1, fast2 eller slow. Standardvärdet är fast1."
  
  #: config/nds32/nds32.opt:412
  #, no-c-format
  msgid "Specify how many read/write ports for n9/n10 cores.  The value should be 3r2w or 2r1w."
! msgstr "Ange antalet läs-/skrivportar för n9-/n10-kärnor. Värdet skall vara 3r2w eller 2r1w."
  
  #: config/nds32/nds32.opt:425
  #, no-c-format
*************** msgstr "Kompilera kod för rak byteordni
*** 840,846 ****
  #: config/arc/arc.opt:32
  #, no-c-format
  msgid "Compile code for little endian mode.  This is the default."
! msgstr "Kompilera kod för omvänd byteordning.  Detta är standard."
  
  #: config/arc/arc.opt:36
  #, no-c-format
--- 825,831 ----
  #: config/arc/arc.opt:32
  #, no-c-format
  msgid "Compile code for little endian mode.  This is the default."
! msgstr "Kompilera kod för omvänd byteordning. Detta är standard."
  
  #: config/arc/arc.opt:36
  #, no-c-format
*************** msgstr "Använd koddensitetsinstruktione
*** 908,914 ****
  #: c-family/c.opt:2319
  #, no-c-format
  msgid "Does nothing.  Preserved for backward compatibility."
! msgstr "Gör ingenting.  Bevarad för bakåtkompatibilitet."
  
  #: config/arc/arc.opt:148
  #, no-c-format
--- 893,899 ----
  #: c-family/c.opt:2319
  #, no-c-format
  msgid "Does nothing.  Preserved for backward compatibility."
! msgstr "Gör ingenting. Bevarad för bakåtkompatibilitet."
  
  #: config/arc/arc.opt:148
  #, no-c-format
*************** msgstr "Generera utökade aritmetiska in
*** 953,959 ****
  #: config/arc/arc.opt:180
  #, no-c-format
  msgid "Dummy flag. This is the default unless FPX switches are provided explicitly."
! msgstr "Attrappflagga.  Detta är standard om inte FPX-flaggor uttryckligen ges."
  
  #: config/arc/arc.opt:184
  #, no-c-format
--- 938,944 ----
  #: config/arc/arc.opt:180
  #, no-c-format
  msgid "Dummy flag. This is the default unless FPX switches are provided explicitly."
! msgstr "Attrappflagga. Detta är standard om inte FPX-flaggor uttryckligen ges."
  
  #: config/arc/arc.opt:184
  #, no-c-format
*************** msgid "Generate call insns as register i
*** 961,975 ****
  msgstr "Generera anropsinstruktioner som registerindirekta anrop."
  
  #: config/arc/arc.opt:188
! #, fuzzy, no-c-format
! #| msgid "Do no generate BRcc instructions in arc_reorg."
  msgid "Generate BRcc instructions in arc_reorg."
! msgstr "Generera inte BRcc-instruktioner i arc_reorg."
  
  #: config/arc/arc.opt:192
  #, no-c-format
  msgid "Generate sdata references.  This is the default, unless you compile for PIC."
! msgstr "Generera sdata-referenser.  Detta är standard, om man inte kompilerar för PIC."
  
  #: config/arc/arc.opt:196
  #, no-c-format
--- 946,959 ----
  msgstr "Generera anropsinstruktioner som registerindirekta anrop."
  
  #: config/arc/arc.opt:188
! #, no-c-format
  msgid "Generate BRcc instructions in arc_reorg."
! msgstr "Generera BRcc-instruktioner i arc_reorg."
  
  #: config/arc/arc.opt:192
  #, no-c-format
  msgid "Generate sdata references.  This is the default, unless you compile for PIC."
! msgstr "Generera sdata-referenser. Detta är standard, om man inte kompilerar för PIC."
  
  #: config/arc/arc.opt:196
  #, no-c-format
*************** msgid "FPX: Generate Double Precision FP
*** 1002,1011 ****
  msgstr "FPX: generera dubbelprecisions FPX- (snabba) instruktioner."
  
  #: config/arc/arc.opt:229
! #, fuzzy, no-c-format
! #| msgid "Disable LR and SR instructions from using FPX extension aux registers."
  msgid "Enable LR and SR instructions to use FPX extension aux registers."
! msgstr "Avaktivera LR- och SR-instruktioner från att använda FPX-utöknings-aux-register."
  
  #: config/arc/arc.opt:233
  #, no-c-format
--- 986,994 ----
  msgstr "FPX: generera dubbelprecisions FPX- (snabba) instruktioner."
  
  #: config/arc/arc.opt:229
! #, no-c-format
  msgid "Enable LR and SR instructions to use FPX extension aux registers."
! msgstr "Aktivera LR- och SR-instruktioner till att använda FPX-utöknings-aux-register."
  
  #: config/arc/arc.opt:233
  #, no-c-format
*************** msgid "Put uninitialized constants in RO
*** 1338,1347 ****
  msgstr "Placera oinitierade konstanter i ROM (kräver -membedded-data)."
  
  #: config/sol2.opt:32
! #, fuzzy, no-c-format
! #| msgid "Generate SH4a code."
  msgid "Generate Solaris CTF."
! msgstr "Generera SH4a-kod."
  
  #: config/sol2.opt:36
  #, no-c-format
--- 1321,1329 ----
  msgstr "Placera oinitierade konstanter i ROM (kräver -membedded-data)."
  
  #: config/sol2.opt:32
! #, no-c-format
  msgid "Generate Solaris CTF."
! msgstr "Generera Solaris CTF."
  
  #: config/sol2.opt:36
  #, no-c-format
*************** msgstr "Placera allting i den vanliga TO
*** 1878,1884 ****
  #: config/rs6000/rs6000.opt:305
  #, no-c-format
  msgid "Emit NOPs before global and after local entry point for -fpatchable-function-entry."
! msgstr "Mata ut NOP:ar före globala och efter lokala ingångspunkter för -fpatchable-function-entry"
  
  #: config/rs6000/rs6000.opt:309
  #, no-c-format
--- 1860,1866 ----
  #: config/rs6000/rs6000.opt:305
  #, no-c-format
  msgid "Emit NOPs before global and after local entry point for -fpatchable-function-entry."
! msgstr "Mata ut NOP:ar före globala och efter lokala ingångspunkter för -fpatchable-function-entry."
  
  #: config/rs6000/rs6000.opt:309
  #, no-c-format
*************** msgstr "Max antal byte att jämföra som
*** 2741,2767 ****
  #: config/riscv/riscv.opt:287
  #, no-c-format
  msgid "Set the cost value of the rvv instruction when operate from GPR to VR."
! msgstr ""
  
  #: config/riscv/riscv.opt:291
  #, no-c-format
  msgid "Set the cost value of the rvv instruction when operate from VR to GPR ."
! msgstr ""
  
  #: config/riscv/riscv.opt:295
  #, no-c-format
  msgid "Set the cost value of the rvv instruction when operate from FPR to VR."
! msgstr ""
  
  #: config/riscv/riscv.opt:299
  #, no-c-format
  msgid "Set the cost value of the rvv instruction when operate from VR to FPR."
! msgstr ""
  
  #: config/riscv/riscv.opt:303
  #, no-c-format
  msgid "Set the only autovec mode to try."
! msgstr ""
  
  #: config/riscv/riscv.opt:307
  #, no-c-format
--- 2723,2749 ----
  #: config/riscv/riscv.opt:287
  #, no-c-format
  msgid "Set the cost value of the rvv instruction when operate from GPR to VR."
! msgstr "Sätt kostnadsvärdet på instruktionen rvv vid körning från GPR till VR."
  
  #: config/riscv/riscv.opt:291
  #, no-c-format
  msgid "Set the cost value of the rvv instruction when operate from VR to GPR ."
! msgstr "Sätt kostnadsvärdet på instruktionen rvv vid körning från VR till GPR."
  
  #: config/riscv/riscv.opt:295
  #, no-c-format
  msgid "Set the cost value of the rvv instruction when operate from FPR to VR."
! msgstr "Sätt kostnadsvärdet på instruktionen rvv vid körning från FPR till VR."
  
  #: config/riscv/riscv.opt:299
  #, no-c-format
  msgid "Set the cost value of the rvv instruction when operate from VR to FPR."
! msgstr "Sätt kostnadsvärdet på instruktionen rvv vid körning från VR till FPR."
  
  #: config/riscv/riscv.opt:303
  #, no-c-format
  msgid "Set the only autovec mode to try."
! msgstr "Ange det enda autovec-läget att prova."
  
  #: config/riscv/riscv.opt:307
  #, no-c-format
*************** msgid "Specify stringop expansion strate
*** 2804,2825 ****
  msgstr "Ange strategi för expansion av stringop."
  
  #: config/riscv/riscv.opt:381
! #, fuzzy, no-c-format
! #| msgid "Constant memcpy size in bytes above which to start using MOPS sequence."
  msgid "Constant memcpy size in bytes above which to start using libcalls over inlining."
! msgstr "Konstant memcpy-storlek i byte över vilken MOPS-sekvenser skall användas."
  
  #: config/riscv/riscv.opt:385
! #, fuzzy, no-c-format
! #| msgid "Constant memmove size in bytes above which to start using MOPS sequence."
  msgid "Constant memmove size in bytes above which to start using libcalls over inlining."
! msgstr "Konstant memmove-storlek i byte över vilken MOPS-sekvenser skall användas."
  
  #: config/riscv/riscv.opt:389
! #, fuzzy, no-c-format
! #| msgid "Constant memmove size in bytes above which to start using MOPS sequence."
  msgid "Constant memset size in bytes above which to start using libcalls over inlining."
! msgstr "Konstant memmove-storlek i byte över vilken MOPS-sekvenser skall användas."
  
  #: config/riscv/riscv.opt:393
  #, no-c-format
--- 2786,2804 ----
  msgstr "Ange strategi för expansion av stringop."
  
  #: config/riscv/riscv.opt:381
! #, no-c-format
  msgid "Constant memcpy size in bytes above which to start using libcalls over inlining."
! msgstr "Konstant memcpy-storlek i byte över vilken biblioteksanrop skall skall börja användas framför inline:ing."
  
  #: config/riscv/riscv.opt:385
! #, no-c-format
  msgid "Constant memmove size in bytes above which to start using libcalls over inlining."
! msgstr "Konstant memmove-storlek i byte över vilken biblioteksanrop skall börja användas framför inline:ing."
  
  #: config/riscv/riscv.opt:389
! #, no-c-format
  msgid "Constant memset size in bytes above which to start using libcalls over inlining."
! msgstr "Konstant memset-storlek i byte över vilken biblioteksanrop skall börja användas framför inline:ing."
  
  #: config/riscv/riscv.opt:393
  #, no-c-format
*************** msgid "Align code and data to 32 bits."
*** 3458,3467 ****
  msgstr "Justera kod och data till 32 bitar."
  
  #: config/cris/cris.opt:122 config/cris/cris.opt:127
! #, fuzzy, no-c-format
! #| msgid "Align code and data to 32 bits."
  msgid "Align code and data to 16 bits."
! msgstr "Justera kod och data till 32 bitar."
  
  #: config/cris/cris.opt:132 config/cris/cris.opt:137
  #, no-c-format
--- 3437,3445 ----
  msgstr "Justera kod och data till 32 bitar."
  
  #: config/cris/cris.opt:122 config/cris/cris.opt:127
! #, no-c-format
  msgid "Align code and data to 16 bits."
! msgstr "Justera kod och data till 16 bitar."
  
  #: config/cris/cris.opt:132 config/cris/cris.opt:137
  #, no-c-format
*************** msgstr "Aktivera strikt 32-bits psABI-ko
*** 4016,4022 ****
  #: config/sparc/sparc.opt:258
  #, no-c-format
  msgid "Enable workaround for single erratum of AT697F processor (corresponding to erratum #13 of AT697E processor)."
! msgstr "Aktivera en lösning för ensamt errata för processorn AT697F (motsvarar errata nr. 13 för processorn AT697E.)"
  
  #: config/sparc/sparc.opt:263
  #, no-c-format
--- 3994,4000 ----
  #: config/sparc/sparc.opt:258
  #, no-c-format
  msgid "Enable workaround for single erratum of AT697F processor (corresponding to erratum #13 of AT697E processor)."
! msgstr "Aktivera en lösning för ensamt errata för processorn AT697F (motsvarar errata nr. 13 för processorn AT697E)."
  
  #: config/sparc/sparc.opt:263
  #, no-c-format
*************** msgstr "Använd inbyggd (MS) bitfältsla
*** 4262,4268 ****
  #: config/i386/i386.opt:417
  #, no-c-format
  msgid "Relax cmpxchg loop for atomic_fetch_{or,xor,and,nand} by adding load and cmp before cmpxchg, execute pause and loop back to load and compare if load value is not expected."
! msgstr "Lätta på cmpxchg-slingor för atomic_fetch_{or,xor,and,nand} genom att lägga till load och cmp före cmpxchg, kör pause och gå tillbaka till load och compare om load-värdet inte är det förväntade"
  
  #: config/i386/i386.opt:421
  #, no-c-format
--- 4240,4246 ----
  #: config/i386/i386.opt:417
  #, no-c-format
  msgid "Relax cmpxchg loop for atomic_fetch_{or,xor,and,nand} by adding load and cmp before cmpxchg, execute pause and loop back to load and compare if load value is not expected."
! msgstr "Lätta på cmpxchg-slingor för atomic_fetch_{or,xor,and,nand} genom att lägga till load och cmp före cmpxchg, kör pause och gå tillbaka till load och compare om load-värdet inte är det förväntade."
  
  #: config/i386/i386.opt:421
  #, no-c-format
*************** msgid "Generate vzeroupper instruction b
*** 4410,4419 ****
  msgstr "Generera vzeroupper-instruktion före en övergång av kontrollflödet ut ur funktionen."
  
  #: config/i386/i386.opt:610
! #, fuzzy, no-c-format
! #| msgid "Disable Scalar to Vector optimization pass transforming 64-bit integer computations into a vector ones."
  msgid "Enable Scalar to Vector optimization pass transforming 64-bit integer computations into vector ones."
! msgstr "Avaktivera optimeringspasset skalär till vektor som transformerar 64-bitars heltalsberäkningar till vektorberäkningar."
  
  #: config/i386/i386.opt:615
  #, no-c-format
--- 4388,4396 ----
  msgstr "Generera vzeroupper-instruktion före en övergång av kontrollflödet ut ur funktionen."
  
  #: config/i386/i386.opt:610
! #, no-c-format
  msgid "Enable Scalar to Vector optimization pass transforming 64-bit integer computations into vector ones."
! msgstr "Aktivera optimeringspasset skalär till vektor som transformerar 64-bitars heltalsberäkningar till vektorberäkningar."
  
  #: config/i386/i386.opt:615
  #, no-c-format
*************** msgid "Support MMX, SSE, SSE2, SSE3, SSS
*** 4536,4575 ****
  msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX-, AVX2- och AVX512F-funktioner och -kodgenerering."
  
  #: config/i386/i386.opt:737
! #, fuzzy, no-c-format
! #| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512CD built-in functions and code generation."
  msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512CD built-in functions and code generation."
! msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX-, AVX2- och AVX512F- och AVX512CD-funktioner och -kodgenerering."
  
  #: config/i386/i386.opt:741
! #, fuzzy, no-c-format
! #| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512DQ built-in functions and code generation."
  msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512DQ built-in functions and code generation."
! msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX-, AVX2- och AVX512F- och AVX512DQ-funktioner och -kodgenerering."
  
  #: config/i386/i386.opt:745
! #, fuzzy, no-c-format
! #| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512BF16 built-in functions and code generation."
  msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512BW built-in functions and code generation."
! msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX-, AVX2-, AVX512F- och AVX512BF16-funktioner och -kodgenerering."
  
  #: config/i386/i386.opt:749
! #, fuzzy, no-c-format
! #| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512VL built-in functions and code generation."
  msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512VL built-in functions and code generation."
! msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX-, AVX2- och AVX512F- och AVX512VL-funktioner och -kodgenerering."
  
  #: config/i386/i386.opt:753
! #, fuzzy, no-c-format
! #| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512IFMA built-in functions and code generation."
  msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512IFMA built-in functions and code generation."
! msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX-, AVX2- och AVX512F- och AVX512IFMA-funktioner och -kodgenerering."
  
  #: config/i386/i386.opt:757
! #, fuzzy, no-c-format
! #| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512VBMI2 built-in functions and code generation."
  msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512VBMI built-in functions and code generation."
! msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX-, AVX2-, AVX512F- och AVX512VBMI2-funktioner och -kodgenerering."
  
  #: config/i386/i386.opt:761
  #, no-c-format
--- 4513,4546 ----
  msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX-, AVX2- och AVX512F-funktioner och -kodgenerering."
  
  #: config/i386/i386.opt:737
! #, no-c-format
  msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512CD built-in functions and code generation."
! msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX-, AVX2-, AVX512F- och AVX512CD-funktioner och -kodgenerering."
  
  #: config/i386/i386.opt:741
! #, no-c-format
  msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512DQ built-in functions and code generation."
! msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX-, AVX2-, AVX512F- och AVX512DQ-funktioner och -kodgenerering."
  
  #: config/i386/i386.opt:745
! #, no-c-format
  msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512BW built-in functions and code generation."
! msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX-, AVX2-, AVX512F- och AVX512BW-funktioner och -kodgenerering."
  
  #: config/i386/i386.opt:749
! #, no-c-format
  msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512VL built-in functions and code generation."
! msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX-, AVX2-, AVX512F- och AVX512VL-funktioner och -kodgenerering."
  
  #: config/i386/i386.opt:753
! #, no-c-format
  msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512IFMA built-in functions and code generation."
! msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX-, AVX2-, AVX512F- och AVX512IFMA-funktioner och -kodgenerering."
  
  #: config/i386/i386.opt:757
! #, no-c-format
  msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512VBMI built-in functions and code generation."
! msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX-, AVX2-, AVX512F- och AVX512VBMI-funktioner och -kodgenerering."
  
  #: config/i386/i386.opt:761
  #, no-c-format
*************** msgid "Support USER_MSR built-in functio
*** 5174,5195 ****
  msgstr "Stöd inbyggda USER_MSR-funktioner och -kodgenerering."
  
  #: config/i386/i386.opt:1360
! #, fuzzy, no-c-format
! #| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and AVX10.1-256 built-in functions and code generation."
  msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and AVX10.1 built-in functions and code generation."
! msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX-, AVX2- och AVX10.1-256-funktioner och -kodgenerering."
  
  #: config/i386/i386.opt:1365
! #, fuzzy, no-c-format
! #| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX10.1-512 and AVX10.2 built-in functions and code generation."
  msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX10.1 and AVX10.2 built-in functions and code generation."
! msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX-, AVX2-, AVX10.1-512- och AVX10.2-funktioner och -kodgenerering."
  
  #: config/i386/i386.opt:1370
! #, fuzzy, no-c-format
! #| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX10.1-512, AVX10.2 and AMX-AVX512 built-in functions and code generation."
  msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX10.1, AVX10.2 and AMX-AVX512 built-in functions and code generation."
! msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX-, AVX2-, AVX10.1-512-, AVX10.2- och AMX-AVX512-funktioner och -kodgenerering."
  
  #: config/i386/i386.opt:1375
  #, no-c-format
--- 5145,5163 ----
  msgstr "Stöd inbyggda USER_MSR-funktioner och -kodgenerering."
  
  #: config/i386/i386.opt:1360
! #, no-c-format
  msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and AVX10.1 built-in functions and code generation."
! msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX-, AVX2- och AVX10.1-funktioner och -kodgenerering."
  
  #: config/i386/i386.opt:1365
! #, no-c-format
  msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX10.1 and AVX10.2 built-in functions and code generation."
! msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX-, AVX2-, AVX10.1- och AVX10.2-funktioner och -kodgenerering."
  
  #: config/i386/i386.opt:1370
! #, no-c-format
  msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX10.1, AVX10.2 and AMX-AVX512 built-in functions and code generation."
! msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX-, AVX2-, AVX10.1-, AVX10.2- och AMX-AVX512-funktioner och -kodgenerering."
  
  #: config/i386/i386.opt:1375
  #, no-c-format
*************** msgid "Support AMX-MOVRS built-in functi
*** 5212,5221 ****
  msgstr "Stöd inbyggda AMX-MOVRS-funktioner och -kodgenerering."
  
  #: config/i386/i386.opt:1391
! #, fuzzy, no-c-format
! #| msgid "Support AVX512VNNI built-in functions and code generation."
  msgid "Support AVX512BMM built-in functions and code generation."
! msgstr "Stöd inbyggda AVX512VNNI-funktioner och -kodgenerering."
  
  #: config/i386/mingw-w64.opt:23
  #, no-c-format
--- 5180,5188 ----
  msgstr "Stöd inbyggda AMX-MOVRS-funktioner och -kodgenerering."
  
  #: config/i386/i386.opt:1391
! #, no-c-format
  msgid "Support AVX512BMM built-in functions and code generation."
! msgstr "Stöd inbyggda AVX512BMM-funktioner och -kodgenerering."
  
  #: config/i386/mingw-w64.opt:23
  #, no-c-format
*************** msgid "Generate APCS conformant stack fr
*** 5263,5272 ****
  msgstr "Generera stackramar enligt APCS."
  
  #: config/arm/arm.opt:76
! #, fuzzy, no-c-format
! #| msgid "Generate re-entrant, PIC code."
  msgid "Unimplemented option to generate re-entrant, PIC code."
! msgstr "Generera återstartbar, PIC-kod."
  
  #: config/arm/arm.opt:80
  #, no-c-format
--- 5230,5238 ----
  msgstr "Generera stackramar enligt APCS."
  
  #: config/arm/arm.opt:76
! #, no-c-format
  msgid "Unimplemented option to generate re-entrant, PIC code."
! msgstr "Oimplementerad flagga för att generera återstartbar, PIC-kod."
  
  #: config/arm/arm.opt:80
  #, no-c-format
*************** msgid "Allow (or do not allow) gcc to us
*** 5554,5569 ****
  msgstr "Tillåt (eller tillåt inte) gcc att använda LOOP-instruktionen."
  
  #: config/pru/pru.opt:44
! #, fuzzy, no-c-format
! #| msgid "Allow (or do not allow) gcc to use the LOOP instruction."
  msgid "Allow (or do not allow) gcc to use the PRU multiplier unit."
! msgstr "Tillåt (eller tillåt inte) gcc att använda LOOP-instruktionen."
  
  #: config/pru/pru.opt:48
! #, fuzzy, no-c-format
! #| msgid "Allow (or do not allow) gcc to use the LOOP instruction."
  msgid "Allow (or do not allow) gcc to use the FILL and ZERO instructions."
! msgstr "Tillåt (eller tillåt inte) gcc att använda LOOP-instruktionen."
  
  #: config/pru/pru.opt:52
  #, no-c-format
--- 5520,5533 ----
  msgstr "Tillåt (eller tillåt inte) gcc att använda LOOP-instruktionen."
  
  #: config/pru/pru.opt:44
! #, no-c-format
  msgid "Allow (or do not allow) gcc to use the PRU multiplier unit."
! msgstr "Tillåt (eller tillåt inte) gcc att använda PRU-multiplicerarenheten."
  
  #: config/pru/pru.opt:48
! #, no-c-format
  msgid "Allow (or do not allow) gcc to use the FILL and ZERO instructions."
! msgstr "Tillåt (eller tillåt inte) gcc att använda FILL och ZERO-instruktioner."
  
  #: config/pru/pru.opt:52
  #, no-c-format
*************** msgid "-msve-vector-bits=<number>\tSet t
*** 5881,5890 ****
  msgstr "-msve-vector-bits=<antal>\tAnge antalet bitar i ett SVE-vektorregister."
  
  #: config/aarch64/aarch64.opt:308
! #, fuzzy, 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."
  msgid "-mautovec-preference=[default|asimd-only|sve-only|prefer-asimd|prefer-sve] Force an ISA selection strategy for auto-vectorization.  For best performance it is highly recommended to use -mcpu or -mtune instead.  This parameter should only be used for code exploration."
! msgstr "--param=aarch64-autovec-preference=[default|asimd-only|sve-only|prefer-asimd|prefer-sve] Framtvinga en ISA-valsstrategi för autovektorisering."
  
  #: config/aarch64/aarch64.opt:319
  #, no-c-format
--- 5845,5853 ----
  msgstr "-msve-vector-bits=<antal>\tAnge antalet bitar i ett SVE-vektorregister."
  
  #: config/aarch64/aarch64.opt:308
! #, no-c-format
  msgid "-mautovec-preference=[default|asimd-only|sve-only|prefer-asimd|prefer-sve] Force an ISA selection strategy for auto-vectorization.  For best performance it is highly recommended to use -mcpu or -mtune instead.  This parameter should only be used for code exploration."
! msgstr "-autovec-preference=[default|asimd-only|sve-only|prefer-asimd|prefer-sve] Framtvinga en ISA-valsstrategi för autovektorisering. För bästa prestanda rekommenderas det starkt att använda -mcpu eller -mtune istället. Denna parameter bör bara användas för kodutforskning."
  
  #: config/aarch64/aarch64.opt:319
  #, no-c-format
*************** msgstr "Antalet Newtoniterationer för a
*** 5934,5940 ****
  #: config/aarch64/aarch64.opt:379
  #, 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 "Antalet Newtoniterationer för att beräkna inversen för typen double.  Precisionen i divisionen är proportionell mot denna parameter när divisionsapproximering är aktiverat.  Standardvärdet är 2."
  
  #: config/aarch64/aarch64.opt:383
  #, no-c-format
--- 5897,5903 ----
  #: config/aarch64/aarch64.opt:379
  #, 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 "Antalet Newtoniterationer för att beräkna inversen för typen double. Precisionen i divisionen är proportionell mot denna parameter när divisionsapproximering är aktiverat. Standardvärdet är 2."
  
  #: config/aarch64/aarch64.opt:383
  #, no-c-format
*************** msgid "Param to control the treshold in
*** 5982,5991 ****
  msgstr ""
  
  #: config/aarch64/aarch64.opt:466
! #, fuzzy, no-c-format
! #| msgid "This option is deprecated and has no effect."
  msgid "This option is deprecated."
! msgstr "Denna flagga bör undvikas och har ingen effekt."
  
  #: config/vms/vms.opt:27
  #, no-c-format
--- 5945,5953 ----
  msgstr ""
  
  #: config/aarch64/aarch64.opt:466
! #, no-c-format
  msgid "This option is deprecated."
! msgstr "Denna flagga bör undvikas."
  
  #: config/vms/vms.opt:27
  #, no-c-format
*************** msgid "Do not use the callt instruction
*** 6138,6157 ****
  msgstr "Använd inte callt-instruktionen (standard)."
  
  #: config/v850/v850.opt:45
! #, fuzzy, no-c-format
! #| msgid "Reuse r30 on a per function basis."
  msgid "Reuse r30 on a per-function basis."
  msgstr "Återanvänd r30 i varje funktion."
  
  #: config/v850/v850.opt:49
! #, fuzzy, no-c-format
! #| msgid "Alias for -mcpu=g10."
  msgid "Alias for -mrh850-abi."
! msgstr "Alias för -mcpu=g10."
  
  #: config/v850/v850.opt:53
! #, fuzzy, no-c-format
! #| msgid "Prohibit PC relative function calls."
  msgid "Prohibit PC-relative function calls."
  msgstr "Förhindra PC-relativa funktionsanrop."
  
--- 6100,6116 ----
  msgstr "Använd inte callt-instruktionen (standard)."
  
  #: config/v850/v850.opt:45
! #, no-c-format
  msgid "Reuse r30 on a per-function basis."
  msgstr "Återanvänd r30 i varje funktion."
  
  #: config/v850/v850.opt:49
! #, no-c-format
  msgid "Alias for -mrh850-abi."
! msgstr "Alias för -mrh850-abi."
  
  #: config/v850/v850.opt:53
! #, no-c-format
  msgid "Prohibit PC-relative function calls."
  msgstr "Förhindra PC-relativa funktionsanrop."
  
*************** msgid "Use 32-bit offsets in jump tables
*** 6421,6428 ****
  msgstr "Använd 32-bitars avstånd i hopptabeller istället för 16-bitars avstånd."
  
  #: config/m68k/m68k.opt:151
! #, fuzzy, no-c-format
! #| msgid "Usa LRA for reload instead of the old reload framework.  This option is experimental, and it may be removed in future versions of the compiler."
  msgid "Use LRA for reload instead of the old reload framework.  This option is experimental, and it may be removed in future versions of the compiler."
  msgstr "Använd LRA för omladdning istället för det gamla omladdningsramverket. Denna flagga är experimentell, och kan komma att tas bort i framtida versioner av kompilatorn."
  
--- 6380,6386 ----
  msgstr "Använd 32-bitars avstånd i hopptabeller istället för 16-bitars avstånd."
  
  #: config/m68k/m68k.opt:151
! #, no-c-format
  msgid "Use LRA for reload instead of the old reload framework.  This option is experimental, and it may be removed in future versions of the compiler."
  msgstr "Använd LRA för omladdning istället för det gamla omladdningsramverket. Denna flagga är experimentell, och kan komma att tas bort i framtida versioner av kompilatorn."
  
*************** msgid "Support amcas[_db].{b/h/w/d} inst
*** 6717,6726 ****
  msgstr "Stöd instruktionerna amcas[_db].{b/h/w/d}."
  
  #: config/loongarch/loongarch.opt:367
! #, fuzzy, no-c-format
! #| msgid "Support CLWB instruction."
  msgid "Support sc.q instruction."
! msgstr "Stöd instruktionen CLWB."
  
  #: config/loongarch/loongarch.opt:371
  #, no-c-format
--- 6675,6683 ----
  msgstr "Stöd instruktionerna amcas[_db].{b/h/w/d}."
  
  #: config/loongarch/loongarch.opt:367
! #, no-c-format
  msgid "Support sc.q instruction."
! msgstr "Stöd instruktionen sc.q."
  
  #: config/loongarch/loongarch.opt:371
  #, no-c-format
*************** msgid "Split unaligned 8 byte vector mov
*** 6813,6820 ****
  msgstr "Dela ojusterade 8-bytes vektorförflyttningar före adressgenerering efter ändring."
  
  #: config/epiphany/epiphany.opt:137
! #, fuzzy, no-c-format
! #| msgid "Use the floating point unit for integer add/subtract."
  msgid "Use the floating-point unit for integer add/subtract."
  msgstr "Använd flyttalsenheten för addition/subtraktion av heltal."
  
--- 6770,6776 ----
  msgstr "Dela ojusterade 8-bytes vektorförflyttningar före adressgenerering efter ändring."
  
  #: config/epiphany/epiphany.opt:137
! #, no-c-format
  msgid "Use the floating-point unit for integer add/subtract."
  msgstr "Använd flyttalsenheten för addition/subtraktion av heltal."
  
*************** msgid "(Obsolete) This is the default."
*** 7089,7104 ****
  msgstr "(Föråldrad) Detta är standard."
  
  #: config/darwin.opt:268
! #, fuzzy, no-c-format
! #| msgid "Equivalent to -fcf-protection=full."
  msgid "Equivalent to -xobjective-c."
! msgstr "Ekvivalent med -fcf-protection=full."
  
  #: config/darwin.opt:272
! #, fuzzy, no-c-format
! #| msgid "Equivalent to -fcf-protection=full."
  msgid "Equivalent to -xobjective-c++."
! msgstr "Ekvivalent med -fcf-protection=full."
  
  #: config/darwin.opt:282
  #, no-c-format
--- 7045,7058 ----
  msgstr "(Föråldrad) Detta är standard."
  
  #: config/darwin.opt:268
! #, no-c-format
  msgid "Equivalent to -xobjective-c."
! msgstr "Ekvivalent med -xobjective-c."
  
  #: config/darwin.opt:272
! #, no-c-format
  msgid "Equivalent to -xobjective-c++."
! msgstr "Ekvivalent med -xobjective-c++."
  
  #: config/darwin.opt:282
  #, no-c-format
*************** msgid "When -mhard-float is selected, en
*** 8091,8100 ****
  msgstr "När -mhard-float är valt, aktiverar generering av instruktioner för oordnad flyttalsjämförelse och för att sätta flaggor (lf.sfun*).  Som standard används funktioner från libgcc för att utföra oordnad jämförelse av flyttal och operationer för att sätta flaggor."
  
  #: config/or1k/or1k.opt:71
! #, fuzzy, no-c-format
! #| msgid "Specify the code model used for accessing memory addresses.  Specifying large enables generating binaries with large global offset tables.  By default the value is small."
  msgid "Specify the code model used for accessing memory addresses.  Specifying large enables generating binaries with large global offset tables and calling functions anywhere in an executable.  By default the value is small."
! msgstr "Ange kodmodellen som skall användas för att komma åt minnesadresser. Att ange large möjliggör generering av binärer med stora globala avståndstabeller. Som standard är värdet small."
  
  #: config/or1k/or1k.opt:77
  #, no-c-format
--- 8045,8053 ----
  msgstr "När -mhard-float är valt, aktiverar generering av instruktioner för oordnad flyttalsjämförelse och för att sätta flaggor (lf.sfun*).  Som standard används funktioner från libgcc för att utföra oordnad jämförelse av flyttal och operationer för att sätta flaggor."
  
  #: config/or1k/or1k.opt:71
! #, no-c-format
  msgid "Specify the code model used for accessing memory addresses.  Specifying large enables generating binaries with large global offset tables and calling functions anywhere in an executable.  By default the value is small."
! msgstr "Ange kodmodellen som skall användas för att komma åt minnesadresser. Att ange large möjliggör generering av binärer med stora globala avståndstabeller och att anropa funktioner var som helst i den körbara. Som standard är värdet small."
  
  #: config/or1k/or1k.opt:77
  #, no-c-format
*************** msgid "Known code model types (for use w
*** 8102,8111 ****
  msgstr "Kända kodmodelltyper (att användas med flaggan -mcmodel=):"
  
  #: config/or1k/or1k.opt:87
! #, fuzzy, no-c-format
! #| msgid "Enable generation of conditional move (l.cmov) instructions.  By default the equivalent will be generated using set and branch."
  msgid "Enable generation of conditional move (l.cmov) instructions.  By default the equivalents are generated using set and branch."
! msgstr "Aktivera generering av instruktioner för villkorlig förflyttning (l.cmov).  Som standard kommer det motsvarande genereras med set och branch."
  
  #: config/or1k/or1k.opt:92
  #, no-c-format
--- 8055,8063 ----
  msgstr "Kända kodmodelltyper (att användas med flaggan -mcmodel=):"
  
  #: config/or1k/or1k.opt:87
! #, no-c-format
  msgid "Enable generation of conditional move (l.cmov) instructions.  By default the equivalents are generated using set and branch."
! msgstr "Aktivera generering av instruktioner för villkorlig förflyttning (l.cmov).  Som standard genereras motsvarande med set och branch."
  
  #: config/or1k/or1k.opt:92
  #, no-c-format
*************** msgid "Enable generation of sign extensi
*** 8123,8138 ****
  msgstr "Aktivera generering av instruktioner för teckenutökning (l.ext*).  Som standard används minnesinläsning för att utföra teckenutökning."
  
  #: config/or1k/or1k.opt:108
! #, fuzzy, no-c-format
! #| msgid "Enable generation of compare and set flag with immediate (l.sf*i) instructions. By default extra instructions will be generated to store the immediate to a register first."
  msgid "Enable generation of compare and set flag with immediate (l.sf*i) instructions. By default extra instructions are generated to store the immediate to a register first."
! msgstr "Aktivera generering av instruktioner för jämförelse och sätt flagga med omedelbar (l.sf*i).  Som standard kommer extra instruktioner genereras för att lagra den omedelbara i ett register först."
  
  #: config/or1k/or1k.opt:114
! #, fuzzy, no-c-format
! #| msgid "Enable generation of shift with immediate (l.srai, l.srli, l.slli) instructions. By default extra instructions will be generated to store the immediate to a register first."
  msgid "Enable generation of shift with immediate (l.srai, l.srli, l.slli) instructions. By default extra instructions are generated to store the immediate to a register first."
! msgstr "Aktivera generering av instruktioner för skift med omedelbar (l.srai, l.srli, l.slli).  Som standard kommer extra instruktioner genereras för att lagra den omedelbara i ett register först."
  
  #: config/or1k/elf.opt:28
  #, no-c-format
--- 8075,8088 ----
  msgstr "Aktivera generering av instruktioner för teckenutökning (l.ext*).  Som standard används minnesinläsning för att utföra teckenutökning."
  
  #: config/or1k/or1k.opt:108
! #, no-c-format
  msgid "Enable generation of compare and set flag with immediate (l.sf*i) instructions. By default extra instructions are generated to store the immediate to a register first."
! msgstr "Aktivera generering av instruktioner för jämförelse och sätt flagga med omedelbar (l.sf*i).  Som standard genereras extra instruktioner för att lagra den omedelbara i ett register först."
  
  #: config/or1k/or1k.opt:114
! #, no-c-format
  msgid "Enable generation of shift with immediate (l.srai, l.srli, l.slli) instructions. By default extra instructions are generated to store the immediate to a register first."
! msgstr "Aktivera generering av instruktioner för skift med omedelbar (l.srai, l.srli, l.slli).  Som standard genereras extra instruktioner för att lagra den omedelbara i ett register först."
  
  #: config/or1k/elf.opt:28
  #, no-c-format
*************** msgid "Always use JSR, never BSR, for ca
*** 8770,8977 ****
  msgstr "Använd alltid JSR, aldrig BSR, för anrop."
  
  #: m2/lang.opt:35
! #, fuzzy, no-c-format
! #| msgid "turns on case statement label compile time checking when using an expression of an enum type."
  msgid "Case statement label compile time checking when using an expression of an enum type."
! msgstr "slår på kontroller av etiketter i case-satser vid kompileringstillfället när ett uttryck av en enum-typ används."
  
  #: m2/lang.opt:39
! #, fuzzy, no-c-format
! #| msgid "compiler checks to force definition module procedure parameter names with their implementation module counterpart"
  msgid "Check definition module procedure parameter names match their implementation module counterpart."
! msgstr "kompilatorkontroller för att framtvinga procedurparameternamn för definitionsmoduler med sina motsvarande implementationsmoduler"
  
  #: m2/lang.opt:43
! #, fuzzy, no-c-format
! #| msgid "compiler warns if a cast is being used on types of differing sizes"
  msgid "Warn if a cast is being used on types of differing sizes."
! msgstr "kompilatorn varnar om en typkonvertering används på typer av olika storlek"
  
  #: m2/lang.opt:47
! #, fuzzy, no-c-format
! #| msgid "inform user which parameters will be passed by reference"
  msgid "Inform user which parameters will be passed by reference."
! msgstr "informera användaren om vilka parametrar som kommer skickas som referenser"
  
  #: m2/lang.opt:51
! #, fuzzy, no-c-format
! #| msgid "extra compile time semantic checking, typically tries to catch poor programming style"
  msgid "Semantic checking to catch poor programming style."
! msgstr "extra semantiska kontroller vid kompileringstillfället, typiskt försöker att fånga dålig programmeringsstil"
  
  #: m2/lang.opt:55
! #, fuzzy, no-c-format
! #| msgid "turns on compile time analysis in the first basic block of a procedure detecting access to uninitialized data."
  msgid "Compile time analysis in the first basic block of a procedure detecting access to uninitialized data."
! msgstr "slår på analys vid kompileringstillfället i det första grundblocket i en procedurdetekterad åtkomst av oinitierade data."
  
  #: m2/lang.opt:59
! #, fuzzy, no-c-format
! #| msgid "turns on compile time analysis to detect access to uninitialized variables, the checking can be specified by: known,cond,all."
  msgid "Compile time analysis to detect access to uninitialized variables, the checking can be specified by: known,cond,all."
! msgstr "slår på analys vid kompileringstillfället för att upptäcka åtkomst av oinitierade variabler, kontrollerandet kan anges med :known,cond,all."
  
  #: m2/lang.opt:63
! #, fuzzy, no-c-format
! #| msgid "automatically initializes all pointers to NIL"
  msgid "Automatically initializes all pointers to NIL."
! msgstr "initierar automatiskt alla pekare till NIL"
  
  #: m2/lang.opt:67
! #, fuzzy, no-c-format
! #| msgid "turns on runtime subrange, array index and indirection via NIL pointer checking"
  msgid "Runtime subrange, array index and indirection via NIL pointer checking."
! msgstr "slår på kontroll under körtid av delintervall, vektorindex och indirektion via NIL-pekare"
  
  #: m2/lang.opt:71
! #, fuzzy, no-c-format
! #| msgid "turns on runtime checking to check whether a CASE statement requires an ELSE clause when one was not specified"
  msgid "Runtime checking to check whether a CASE statement requires an ELSE clause when one was not specified."
! msgstr "slår på körtidskontroller för att kontrollera huruvida en CASE-sats kräver en ELSE-klausul när inte någon var angiven"
  
  #: m2/lang.opt:75
! #, fuzzy, no-c-format
! #| msgid "use cpp to preprocess the module"
  msgid "Preprocess the module using cpp."
! msgstr "använd cpp för att preprocessa modulen"
  
  #: m2/lang.opt:79 m2/lang.opt:83
! #, fuzzy, no-c-format
! #| msgid "passed to the preprocessor if -fcpp is used (internal switch)"
  msgid "Passed to the preprocessor if -fcpp is used (internal switch)."
! msgstr "skickas till proprocessorn om -fcpp används (intern flagga)"
  
  #: m2/lang.opt:87
! #, fuzzy, no-c-format
! #| msgid "call a real function, rather than the builtin equivalent"
  msgid "Call a real function, rather than the builtin equivalent."
! msgstr "anropa en verklig funktion, snarare än den inbyggda likvärdiga"
  
  #: m2/lang.opt:91
! #, fuzzy, no-c-format
! #| msgid "turn on internal debugging of the compiler (internal switch)"
  msgid "Internal debugging of the compiler (internal switch)."
! msgstr "slå på intern felsökning av kompilatorn (intern flagga)"
  
  #: m2/lang.opt:95
! #, fuzzy, no-c-format
! #| msgid "turn on tracing of procedure line numbers (internal switch)"
  msgid "Trace procedure line numbers (internal switch)."
! msgstr "slå på spårning av procedurers radnummer (intern flagga)"
  
  #: m2/lang.opt:99
! #, fuzzy, no-c-format
! #| msgid "recognize the specified suffix as a definition module filename"
  msgid "Recognize the specified suffix as a definition module filename."
! msgstr "känn igen det angivna suffixet som ett definitionsmudulsfilnamn"
  
  #: m2/lang.opt:103
! #, fuzzy, no-c-format
! #| msgid "display all inbuilt system items"
  msgid "Display all inbuilt system items."
! msgstr "visa alla inbyggda systemelement"
  
  #: m2/lang.opt:107
! #, fuzzy, no-c-format
! #| msgid "allows opaque types to be implemented as any type (a GNU Modula-2 extension)"
  msgid "Allows opaque types to be implemented as any type (a GNU Modula-2 extension)."
! msgstr "tillåt ogenomskinliga typer att implementeras som godtycklig typ (en utökning i GNU Modula-2)"
  
  #: m2/lang.opt:111
! #, fuzzy, no-c-format
! #| msgid "turns on runtime checking to check whether a floating point number will exceed range"
  msgid "Runtime checking to check whether a floating point number will exceed range."
! msgstr "slår på körtidskontroll för att kontrollera huruvida ett flyttal kommer överskrida sitt intervall"
  
  #: m2/lang.opt:115
! #, fuzzy, no-c-format
! #| msgid "create a topologically sorted module list from all dependent modules used in the application"
  msgid "Create a topologically sorted module list from all dependent modules used in the application."
! msgstr "skapa en topologiskt sorterad modullista av alla beroende moduler som används i programmet"
  
  #: m2/lang.opt:119
! #, fuzzy, no-c-format
! #| msgid "turns on all range checking for numerical values"
  msgid "Range checking for numerical values."
! msgstr "slår på all intervallkontroll av numeriska värden"
  
  #: m2/lang.opt:123
! #, fuzzy, no-c-format
! #| msgid "use ISO dialect of Modula-2"
  msgid "ISO dialect of Modula-2."
! msgstr "använd ISO-dialekten av Modula-2"
  
  #: m2/lang.opt:127
! #, fuzzy, 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."
  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 "ange biblioteksordningen, biblioteken kan anges med en kommaseparerad förkortning: log,min,pim,iso eller med katalognamn: m2log,m2min,m2pim,m2iso.\""
  
  #: m2/lang.opt:131
! #, fuzzy, no-c-format
! #| msgid "set all location values to a specific value (internal switch)"
  msgid "Set all location values to a specific value (internal switch)."
! msgstr "sätt alla platsvärden till ett specifikt värde (intern flagga)"
  
  #: m2/lang.opt:135
! #, fuzzy, no-c-format
! #| msgid "turn on internal debug tracing for quad,token,line,all (internal switch)"
  msgid "Internal debug tracing for quad,token,line,all (internal switch)."
! msgstr "slå på intern felsökningsspårning för quad,token,line,all (intern flagga)"
  
  #: m2/lang.opt:139
! #, fuzzy, no-c-format
! #| msgid "dump Modula-2 internal intemediate representation specified by: all,quad,decl,gimple"
  msgid "Dump Modula-2 internal intemediate representation specified by: all,quad,decl,gimple."
! msgstr "dumpa Modula-2:s interna intermediära representation specificerad med: all,quad,decl,gimple"
  
  #: m2/lang.opt:143
! #, fuzzy, no-c-format
! #| msgid "dump Modula-2 decls to the filename stem specified"
  msgid "Dump Modula-2 decls to the filename stem specified."
! msgstr "dumpa Modula-2:s decl:ar till den angiva filnamnsstammen"
  
  #: m2/lang.opt:147
! #, fuzzy, no-c-format
! #| msgid "dump Modula-2 gimple to the filename stem specified"
  msgid "Dump Modula-2 gimple to the filename stem specified."
! msgstr "dumpa Modula-2:s gimple till den angivna filnamnsstammen"
  
  #: m2/lang.opt:151
! #, fuzzy, no-c-format
! #| msgid "dump Modula-2 quads to the filename stem specified"
  msgid "Dump Modula-2 quads to the filename stem specified."
! msgstr "dumpa Modula-2:s quad:ar till den angivna filnamnsstammen"
  
  #: m2/lang.opt:155
! #, fuzzy, no-c-format
! #| msgid "filter the language dump using a comma separated list of procedures and modules"
  msgid "Filter the language dump using a comma separated list of procedures and modules."
! msgstr "filtrera språkdumpen med en kommaseparerad lista av procedurer och moduler"
  
  #: m2/lang.opt:159
! #, fuzzy, no-c-format
! #| msgid "override the default 64 bit definition of SYSTEM.COFF_T with the argument specified"
  msgid "Override the default 64 bit definition of SYSTEM.COFF_T with the argument specified."
! msgstr "ersätt den standard 64-bitars definitionen av SYSTEM.COFF_T med det angivna argumentet"
  
  #: m2/lang.opt:163
! #, fuzzy, no-c-format
! #| msgid "generate extra nops to improve debugging, producing an instruction for every code related keyword"
  msgid "Generate extra nops to improve debugging, producing an instruction for every code related keyword."
! msgstr "generera extra nop:ar för att förbättra felsökningen, producera en instruktion för varje kodrelaterat nyckelord"
  
  #: m2/lang.opt:167
! #, fuzzy, no-c-format
! #| msgid "generate error messages which render keywords in lower case"
  msgid "Generate error messages which render keywords in lower case."
! msgstr "generera felmeddelanden som visar nyckelord i gemener"
  
  #: m2/lang.opt:171
! #, fuzzy, no-c-format
! #| msgid "specify the module mangled prefix name for all modules in the following include paths"
  msgid "Specify the module mangled prefix name for all modules in the following include paths."
! msgstr "ange det modulmanglade prefixnamnet för alla moduler i följande inkluderingssökvägar"
  
  #: m2/lang.opt:179
  #, no-c-format
--- 8720,8893 ----
  msgstr "Använd alltid JSR, aldrig BSR, för anrop."
  
  #: m2/lang.opt:35
! #, no-c-format
  msgid "Case statement label compile time checking when using an expression of an enum type."
! msgstr "Kontroller av etiketter i case-satser vid kompileringstillfället när ett uttryck av en enum-typ används."
  
  #: m2/lang.opt:39
! #, no-c-format
  msgid "Check definition module procedure parameter names match their implementation module counterpart."
! msgstr "Kontrollera att procedurparameternamn för definitionsmoduler stämmer med sina motsvarande implementationsmoduler."
  
  #: m2/lang.opt:43
! #, no-c-format
  msgid "Warn if a cast is being used on types of differing sizes."
! msgstr "Varna om en typkonvertering används på typer av olika storlek."
  
  #: m2/lang.opt:47
! #, no-c-format
  msgid "Inform user which parameters will be passed by reference."
! msgstr "Informera användaren om vilka parametrar som kommer skickas som referenser."
  
  #: m2/lang.opt:51
! #, no-c-format
  msgid "Semantic checking to catch poor programming style."
! msgstr "Semantisk kontroll för att fånga dålig programmeringsstil."
  
  #: m2/lang.opt:55
! #, no-c-format
  msgid "Compile time analysis in the first basic block of a procedure detecting access to uninitialized data."
! msgstr "Analys vid kompileringstillfället i det första grundblocket i en procedurdetekterad åtkomst av oinitierade data."
  
  #: m2/lang.opt:59
! #, no-c-format
  msgid "Compile time analysis to detect access to uninitialized variables, the checking can be specified by: known,cond,all."
! msgstr "Analys vid kompileringstillfället för att upptäcka åtkomst av oinitierade variabler, kontrollerandet kan anges med :known,cond,all."
  
  #: m2/lang.opt:63
! #, no-c-format
  msgid "Automatically initializes all pointers to NIL."
! msgstr "Initierar automatiskt alla pekare till NIL."
  
  #: m2/lang.opt:67
! #, no-c-format
  msgid "Runtime subrange, array index and indirection via NIL pointer checking."
! msgstr "Kontroll under körtid av delintervall, vektorindex och indirektion via NIL-pekare."
  
  #: m2/lang.opt:71
! #, no-c-format
  msgid "Runtime checking to check whether a CASE statement requires an ELSE clause when one was not specified."
! msgstr "Körtidskontroller för att kontrollera huruvida en CASE-sats kräver en ELSE-klausul när inte någon var angiven."
  
  #: m2/lang.opt:75
! #, no-c-format
  msgid "Preprocess the module using cpp."
! msgstr "Preprocessa modulen med cpp."
  
  #: m2/lang.opt:79 m2/lang.opt:83
! #, no-c-format
  msgid "Passed to the preprocessor if -fcpp is used (internal switch)."
! msgstr "Skickas till proprocessorn om -fcpp används (intern flagga)."
  
  #: m2/lang.opt:87
! #, no-c-format
  msgid "Call a real function, rather than the builtin equivalent."
! msgstr "Anropa en verklig funktion, snarare än den inbyggda likvärdiga."
  
  #: m2/lang.opt:91
! #, no-c-format
  msgid "Internal debugging of the compiler (internal switch)."
! msgstr "Intern felsökning av kompilatorn (intern flagga)."
  
  #: m2/lang.opt:95
! #, no-c-format
  msgid "Trace procedure line numbers (internal switch)."
! msgstr "Spåra procedurers radnummer (intern flagga)."
  
  #: m2/lang.opt:99
! #, no-c-format
  msgid "Recognize the specified suffix as a definition module filename."
! msgstr "Känn igen det angivna suffixet som ett definitionsmudulsfilnamn."
  
  #: m2/lang.opt:103
! #, no-c-format
  msgid "Display all inbuilt system items."
! msgstr "Visa alla inbyggda systemelement."
  
  #: m2/lang.opt:107
! #, no-c-format
  msgid "Allows opaque types to be implemented as any type (a GNU Modula-2 extension)."
! msgstr "Tillåt ogenomskinliga typer att implementeras som godtycklig typ (en utökning i GNU Modula-2)."
  
  #: m2/lang.opt:111
! #, no-c-format
  msgid "Runtime checking to check whether a floating point number will exceed range."
! msgstr "Körtidskontroll för att kontrollera huruvida ett flyttal kommer överskrida sitt intervall."
  
  #: m2/lang.opt:115
! #, no-c-format
  msgid "Create a topologically sorted module list from all dependent modules used in the application."
! msgstr "Skapa en topologiskt sorterad modullista av alla beroende moduler som används i programmet."
  
  #: m2/lang.opt:119
! #, no-c-format
  msgid "Range checking for numerical values."
! msgstr "Intervallkontroll av numeriska värden."
  
  #: m2/lang.opt:123
! #, no-c-format
  msgid "ISO dialect of Modula-2."
! msgstr "ISO-dialekt av 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 "Ange biblioteksordningen, biblioteken kan anges med en kommaseparerad förkortning: log,min,pim,iso eller med katalognamn: m2log,m2min,m2pim,m2iso.\""
  
  #: m2/lang.opt:131
! #, no-c-format
  msgid "Set all location values to a specific value (internal switch)."
! msgstr "Sätt alla platsvärden till ett specifikt värde (intern flagga)."
  
  #: m2/lang.opt:135
! #, no-c-format
  msgid "Internal debug tracing for quad,token,line,all (internal switch)."
! msgstr "Intern felsökningsspårning för quad,token,line,all (intern flagga)."
  
  #: m2/lang.opt:139
! #, no-c-format
  msgid "Dump Modula-2 internal intemediate representation specified by: all,quad,decl,gimple."
! msgstr "Dumpa Modula-2:s interna intermediära representation specificerad med: all,quad,decl,gimple."
  
  #: m2/lang.opt:143
! #, no-c-format
  msgid "Dump Modula-2 decls to the filename stem specified."
! msgstr "Dumpa Modula-2:s decl:ar till den angiva filnamnsstammen."
  
  #: m2/lang.opt:147
! #, no-c-format
  msgid "Dump Modula-2 gimple to the filename stem specified."
! msgstr "Dumpa Modula-2:s gimple till den angivna filnamnsstammen."
  
  #: m2/lang.opt:151
! #, no-c-format
  msgid "Dump Modula-2 quads to the filename stem specified."
! msgstr "Dumpa Modula-2:s quad:ar till den angivna filnamnsstammen."
  
  #: m2/lang.opt:155
! #, no-c-format
  msgid "Filter the language dump using a comma separated list of procedures and modules."
! msgstr "Filtrera språkdumpen med en kommaseparerad lista av procedurer och moduler."
  
  #: m2/lang.opt:159
! #, no-c-format
  msgid "Override the default 64 bit definition of SYSTEM.COFF_T with the argument specified."
! msgstr "Ersätt standard 64-bitars definitionen av SYSTEM.COFF_T med det angivna argumentet."
  
  #: m2/lang.opt:163
! #, no-c-format
  msgid "Generate extra nops to improve debugging, producing an instruction for every code related keyword."
! msgstr "Generera extra nop:ar för att förbättra felsökningen, producera en instruktion för varje kodrelaterat nyckelord."
  
  #: m2/lang.opt:167
! #, no-c-format
  msgid "Generate error messages which render keywords in lower case."
! msgstr "Generera felmeddelanden som visar nyckelord i gemener."
  
  #: m2/lang.opt:171
! #, no-c-format
  msgid "Specify the module mangled prefix name for all modules in the following include paths."
! msgstr "Ange det modulmanglade prefixnamnet för alla moduler i följande inkluderingssökvägar."
  
  #: m2/lang.opt:179
  #, no-c-format
*************** msgid "Add include paths for all the lib
*** 8979,9006 ****
  msgstr ""
  
  #: m2/lang.opt:187
! #, fuzzy, no-c-format
! #| msgid "insert plugin to identify runtime errors at compiletime"
  msgid "Insert plugin to identify runtime errors at compiletime."
! msgstr "infoga insticksmodulen för att identifiera körtidsfel vid kompileringstillfället"
  
  #: m2/lang.opt:191
! #, fuzzy, no-c-format
! #| msgid "specify the module mangled prefix name"
  msgid "Specify the module mangled prefix name."
! msgstr "ange det modulmanglade prefixnamnet"
  
  #: m2/lang.opt:195
! #, fuzzy, no-c-format
! #| msgid "display statistics about the amount of source lines compiled and symbols used"
  msgid "Display statistics about the amount of source lines compiled and symbols used."
! msgstr "visa statistik om antalet kompilerade källkodsrader och använda symboler"
  
  #: m2/lang.opt:199
! #, fuzzy, no-c-format
! #| msgid "experimental flag to turn on the new strict type checker"
  msgid "Experimental flag to turn on the new strict type checker."
! msgstr "experimentell flagga för att slå på den nya strikta typkontrolleraren"
  
  #: m2/lang.opt:203
  #, no-c-format
--- 8895,8918 ----
  msgstr ""
  
  #: m2/lang.opt:187
! #, no-c-format
  msgid "Insert plugin to identify runtime errors at compiletime."
! msgstr "Infoga insticksmodulen för att identifiera körtidsfel vid kompileringstillfället."
  
  #: m2/lang.opt:191
! #, no-c-format
  msgid "Specify the module mangled prefix name."
! msgstr "Ange det modulmanglade prefixnamnet."
  
  #: m2/lang.opt:195
! #, no-c-format
  msgid "Display statistics about the amount of source lines compiled and symbols used."
! msgstr "Visa statistik om antalet kompilerade källkodsrader och använda symboler."
  
  #: m2/lang.opt:199
! #, no-c-format
  msgid "Experimental flag to turn on the new strict type checker."
! msgstr "Experimentell flagga för att slå på den nya strikta typkontrolleraren."
  
  #: m2/lang.opt:203
  #, no-c-format
*************** msgid "Provides more detail why the type
*** 9008,9155 ****
  msgstr ""
  
  #: m2/lang.opt:207
! #, fuzzy, no-c-format
! #| msgid "compile all implementation modules and program module at once"
  msgid "Compile all implementation modules and program module at once."
! msgstr "kompilera alla implementationsmoduler och programmoduler på en gång"
  
  #: m2/lang.opt:215
! #, fuzzy, no-c-format
! #| msgid "recognize the specified suffix as implementation and module filenames"
  msgid "Recognize the specified suffix as implementation and module filenames."
! msgstr "känn igen det angivna suffixet som implementation och modulfilnamn"
  
  #: m2/lang.opt:219
! #, fuzzy, no-c-format
! #| msgid "turns on runtime checking to detect accessing data through a NIL value pointer"
  msgid "Runtime checking to detect accessing data through a NIL value pointer."
! msgstr "slår på körtidskontroll för att upptäcka åtkomst av data via en NIL-värdespekare"
  
  #: m2/lang.opt:223
! #, fuzzy, no-c-format
! #| msgid "use PIM [234] dialect of Modula-2"
  msgid "PIM [234] dialect of Modula-2."
! msgstr "använd PIM [234]-dialekten av Modula-2"
  
  #: m2/lang.opt:227
! #, fuzzy, no-c-format
! #| msgid "use PIM 2 dialect of Modula-2"
  msgid "PIM 2 dialect of Modula-2."
! msgstr "använd PIM 2-dialekten av Modula-2"
  
  #: m2/lang.opt:231
! #, fuzzy, no-c-format
! #| msgid "use PIM 3 dialect of Modula-2"
  msgid "PIM 3 dialect of Modula-2."
! msgstr "använd PIM 3-dialekten av Modula-2"
  
  #: m2/lang.opt:235
! #, fuzzy, no-c-format
! #| msgid "use PIM 4 dialect of Modula-2"
  msgid "PIM 4 dialect of Modula-2."
! msgstr "använd PIM 4-dialekten av Modula-2"
  
  #: m2/lang.opt:239
! #, fuzzy, no-c-format
! #| msgid "force positive result from MOD and DIV result floor"
  msgid "Force positive result from MOD and DIV result floor."
! msgstr "framtvinga positiva resultat från MOD och DIV resultatgolv"
  
  #: m2/lang.opt:243
! #, fuzzy, no-c-format
! #| msgid "link against the pthread library (default on)"
  msgid "Link against the pthread library (default on)."
! msgstr "länka mot biblioteket pthread (standard på)"
  
  #: m2/lang.opt:247
! #, fuzzy, no-c-format
! #| msgid "internal compiler debugging information, dump the list of quadruples"
  msgid "Internal compiler debugging information, dump the list of quadruples."
! msgstr "inter information för kompilatorfelsökning, dumpa listan av kvadrupler"
  
  #: m2/lang.opt:251
! #, fuzzy, no-c-format
! #| msgid "turns on all range checking for numerical values"
  msgid "Runtime range checking for numerical values."
! msgstr "slår på all intervallkontroll av numeriska värden"
  
  #: m2/lang.opt:255
! #, fuzzy, no-c-format
! #| msgid "turns on runtime checking for functions which finish without executing a RETURN statement"
  msgid "Runtime checking for functions which finish without executing a RETURN statement."
! msgstr "slår på körtidskontroll av funktioner vilka avslutar utan att utföra en RETURN-sats"
  
  #: m2/lang.opt:259
! #, fuzzy, no-c-format
! #| msgid "specify the list of runtime modules and their initialization order"
  msgid "Specify the list of runtime modules and their initialization order."
! msgstr "ange listan av körtidsmoduler och deras initieringsordning"
  
  #: m2/lang.opt:263
! #, fuzzy, no-c-format
! #| msgid "the modules initialization order is dynamically determined by M2RTS and application dependencies"
  msgid "Modules are initialized dynamically, determined by M2RTS and application dependencies."
! msgstr "modulinitieringsordningen är dynamiskt bestämd av M2RTS och programberoenden"
  
  #: m2/lang.opt:267
! #, fuzzy, no-c-format
! #| msgid "generate a C source scaffold for the current module being compiled"
  msgid "Generate a C source scaffold for the current module being compiled."
! msgstr "generera en C-kodsställning för den aktuella modulen som kompileras"
  
  #: m2/lang.opt:271
! #, fuzzy, no-c-format
! #| msgid "generate a C++ source scaffold for the current module being compiled"
  msgid "Generate a C++ source scaffold for the current module being compiled."
! msgstr "generera en C++-kodställingsinitiering och -avslutning för varje modul inuti main"
  
  #: m2/lang.opt:275
! #, fuzzy, no-c-format
! #| msgid "generate the main function"
  msgid "Generate the main function."
! msgstr "generera huvudfunktionen"
  
  #: m2/lang.opt:279
! #, fuzzy, no-c-format
! #| msgid "generate static scaffold initialization and finalization for every module inside main"
  msgid "Generate static scaffold initialization and finalization for every module inside main."
! msgstr "generera statisk ställningsinitiering och avslutning för varje modul inuti main"
  
  #: m2/lang.opt:283
! #, fuzzy, no-c-format
! #| msgid "generate a shared library from the module"
  msgid "Generate a shared library from the module."
! msgstr "generera ett delat bibliotek av modulen"
  
  #: m2/lang.opt:287
! #, fuzzy, no-c-format
! #| msgid "turns on all software runtime checking (an abbreviation for -fnil -frange -findex -fwholediv -fcase -freturn -fwholevalue -ffloatvalue)"
  msgid "All software runtime checking (an abbreviation for -fnil -frange -findex -fwholediv -fcase -freturn -fwholevalue -ffloatvalue)."
! msgstr "slår på all kontroll i programvara vid körtillfället (en förkortning av -fnil -frange -findex -fwholediv -fcase -freturn -fwholevalue -ffloatvalue)"
  
  #: m2/lang.opt:291
! #, fuzzy, no-c-format
! #| msgid "display the location of module source files as they are compiled"
  msgid "Display the location of module source files as they are compiled."
! msgstr "visa platsen för modulkällkodsfiler allteftersom de kompileras"
  
  #: m2/lang.opt:295
! #, fuzzy, no-c-format
! #| msgid "create a swig interface file for the module"
  msgid "Create a swig interface file for the module."
! msgstr "skapa en swig-gränssnittsfil för modulen"
  
  #: m2/lang.opt:303
! #, fuzzy, no-c-format
! #| msgid "optimize non var unbounded parameters by passing it by reference, providing it is not written to within the callee procedure."
  msgid "Optimize non var unbounded parameters by passing it by reference, providing it is not written to within the callee procedure."
! msgstr "optimera icke-var obegränsade parametrar genom att skicka dem via referens, förutsatt att den inte skrivs till i den anropade proceduren."
  
  #: m2/lang.opt:307
! #, fuzzy, no-c-format
! #| msgid "orders the initialization/finalizations for scaffold-static or force linking of modules if scaffold-dynamic"
  msgid "Order the initialization/finalizations for scaffold-static or force linking of modules if scaffold-dynamic."
! msgstr "ordrar initieringar/avslutningar för ställnings-statiska eller tvingad länkning av moduler om ställning-dynamisk"
  
  #: m2/lang.opt:315
  #, no-c-format
--- 8920,9043 ----
  msgstr ""
  
  #: m2/lang.opt:207
! #, no-c-format
  msgid "Compile all implementation modules and program module at once."
! msgstr "Kompilera alla implementationsmoduler och programmoduler på en gång."
  
  #: m2/lang.opt:215
! #, no-c-format
  msgid "Recognize the specified suffix as implementation and module filenames."
! msgstr "Känn igen det angivna suffixet som implementation och modulfilnamn."
  
  #: m2/lang.opt:219
! #, no-c-format
  msgid "Runtime checking to detect accessing data through a NIL value pointer."
! msgstr "Körtidskontroll för att upptäcka åtkomst av data via en NIL-värdespekare."
  
  #: m2/lang.opt:223
! #, no-c-format
  msgid "PIM [234] dialect of Modula-2."
! msgstr "PIM [234]-dialekten av Modula-2."
  
  #: m2/lang.opt:227
! #, no-c-format
  msgid "PIM 2 dialect of Modula-2."
! msgstr "PIM 2-dialekten av Modula-2."
  
  #: m2/lang.opt:231
! #, no-c-format
  msgid "PIM 3 dialect of Modula-2."
! msgstr "PIM 3-dialekten av Modula-2."
  
  #: m2/lang.opt:235
! #, no-c-format
  msgid "PIM 4 dialect of Modula-2."
! msgstr "PIM 4-dialekten av Modula-2."
  
  #: m2/lang.opt:239
! #, no-c-format
  msgid "Force positive result from MOD and DIV result floor."
! msgstr "Framtvinga positiva resultat från MOD och DIV resultatgolv."
  
  #: m2/lang.opt:243
! #, no-c-format
  msgid "Link against the pthread library (default on)."
! msgstr "Länka mot biblioteket pthread (standard på)."
  
  #: m2/lang.opt:247
! #, no-c-format
  msgid "Internal compiler debugging information, dump the list of quadruples."
! msgstr "Intern information för kompilatorfelsökning, dumpa listan av kvadrupler."
  
  #: m2/lang.opt:251
! #, no-c-format
  msgid "Runtime range checking for numerical values."
! msgstr "Körtidkontrol av intervall för numeriska värden."
  
  #: m2/lang.opt:255
! #, no-c-format
  msgid "Runtime checking for functions which finish without executing a RETURN statement."
! msgstr "Körtidskontroll av funktioner vilka avslutar utan att utföra en RETURN-sats."
  
  #: m2/lang.opt:259
! #, no-c-format
  msgid "Specify the list of runtime modules and their initialization order."
! msgstr "Ange listan av körtidsmoduler och deras initieringsordning."
  
  #: m2/lang.opt:263
! #, no-c-format
  msgid "Modules are initialized dynamically, determined by M2RTS and application dependencies."
! msgstr "Moduler initieras dynamiskt, bestämt av M2RTS och programberoenden."
  
  #: m2/lang.opt:267
! #, no-c-format
  msgid "Generate a C source scaffold for the current module being compiled."
! msgstr "Generera en C-kodsställning för den aktuella modulen som kompileras."
  
  #: m2/lang.opt:271
! #, no-c-format
  msgid "Generate a C++ source scaffold for the current module being compiled."
! msgstr "Generera en C++-kodställingsinitiering och -avslutning för varje modul inuti main."
  
  #: m2/lang.opt:275
! #, no-c-format
  msgid "Generate the main function."
! msgstr "Generera huvudfunktionen."
  
  #: m2/lang.opt:279
! #, no-c-format
  msgid "Generate static scaffold initialization and finalization for every module inside main."
! msgstr "Generera statisk ställningsinitiering och avslutning för varje modul inuti main."
  
  #: m2/lang.opt:283
! #, no-c-format
  msgid "Generate a shared library from the module."
! msgstr "Generera ett delat bibliotek av modulen."
  
  #: m2/lang.opt:287
! #, no-c-format
  msgid "All software runtime checking (an abbreviation for -fnil -frange -findex -fwholediv -fcase -freturn -fwholevalue -ffloatvalue)."
! msgstr "All kontroll i programvara vid körtillfället (en förkortning av -fnil -frange -findex -fwholediv -fcase -freturn -fwholevalue -ffloatvalue)."
  
  #: m2/lang.opt:291
! #, no-c-format
  msgid "Display the location of module source files as they are compiled."
! msgstr "Visa platsen för modulkällkodsfiler allteftersom de kompileras."
  
  #: m2/lang.opt:295
! #, no-c-format
  msgid "Create a swig interface file for the module."
! msgstr "Skapa en swig-gränssnittsfil för modulen."
  
  #: m2/lang.opt:303
! #, no-c-format
  msgid "Optimize non var unbounded parameters by passing it by reference, providing it is not written to within the callee procedure."
! msgstr "Optimera icke-var obegränsade parametrar genom att skicka dem via referens, förutsatt att den inte skrivs till i den anropade proceduren.."
  
  #: m2/lang.opt:307
! #, no-c-format
  msgid "Order the initialization/finalizations for scaffold-static or force linking of modules if scaffold-dynamic."
! msgstr "Ordrar initieringar/avslutningar för ställnings-statiska eller tvingad länkning av moduler om ställning-dynamisk."
  
  #: m2/lang.opt:315
  #, no-c-format
*************** msgid "Link against the module M2WIDESET
*** 9157,9166 ****
  msgstr ""
  
  #: m2/lang.opt:319
! #, fuzzy, no-c-format
! #| msgid "turns on all division and modulus by zero checking for ordinal values"
  msgid "Runtime checking of all division and modulus by zero checking for ordinal values."
! msgstr "slår på kontroller av noll för ordinalvärden för alla divisioner och moduloberäkningar"
  
  #: m2/lang.opt:323
  #, no-c-format
--- 9045,9053 ----
  msgstr ""
  
  #: m2/lang.opt:319
! #, no-c-format
  msgid "Runtime checking of all division and modulus by zero checking for ordinal values."
! msgstr "Körtidskontroll av division och modulus med noll för ordinalvärden."
  
  #: m2/lang.opt:323
  #, no-c-format
*************** msgid "Link the standard Modula-2 librar
*** 9173,9182 ****
  msgstr "Länka standard Modula-2-biblioteken statiskt i kompileringen."
  
  #: m2/lang.opt:472 m2/lang.opt:476
! #, fuzzy, no-c-format
! #| msgid "save temporary preprocessed files"
  msgid "save temporary preprocessed files."
! msgstr "spara temporära preprocessade filer"
  
  #: fortran/lang.opt:146
  #, no-c-format
--- 9060,9068 ----
  msgstr "Länka standard Modula-2-biblioteken statiskt i kompileringen."
  
  #: m2/lang.opt:472 m2/lang.opt:476
! #, no-c-format
  msgid "save temporary preprocessed files."
! msgstr "spara temporära preprocessade filer."
  
  #: fortran/lang.opt:146
  #, no-c-format
*************** msgid "Specify that an external BLAS lib
*** 9529,9538 ****
  msgstr "Ange att ett externt BLAS-bibliotek skall användas för matmul-anrop på större vektorer."
  
  #: fortran/lang.opt:575
! #, fuzzy, no-c-format
! #| msgid "Specify that an external BLAS library should be used for matmul calls on large-size arrays."
  msgid "Use an external BLAS library with 64-bit indexing for matmul on large-size arrays."
! msgstr "Ange att ett externt BLAS-bibliotek skall användas för matmul-anrop på större vektorer."
  
  #: fortran/lang.opt:579
  #, no-c-format
--- 9415,9423 ----
  msgstr "Ange att ett externt BLAS-bibliotek skall användas för matmul-anrop på större vektorer."
  
  #: fortran/lang.opt:575
! #, no-c-format
  msgid "Use an external BLAS library with 64-bit indexing for matmul on large-size arrays."
! msgstr "Använd ett externt BLAS-bibliotek med 64-bitars inderxering för matmul-anrop på stora vektorer."
  
  #: fortran/lang.opt:579
  #, no-c-format
*************** msgid "Emit optimization diagnostics."
*** 9935,9944 ****
  msgstr "Skriv ut optimeringsmeddelanden."
  
  #: params.opt:27
! #, fuzzy, no-c-format
! #| msgid "Loops iterating at least selected number of iterations will get loop alignment."
  msgid "Loops iterating at least selected number of iterations get loop alignment."
! msgstr "Slingor som itererar åtminstone det valda antalet gånger kommer att få slingjustering."
  
  #: params.opt:31
  #, no-c-format
--- 9820,9828 ----
  msgstr "Skriv ut optimeringsmeddelanden."
  
  #: params.opt:27
! #, no-c-format
  msgid "Loops iterating at least selected number of iterations get loop alignment."
! msgstr "Slingor som itererar åtminstone det valda antalet gånger får slingjustering."
  
  #: params.opt:31
  #, no-c-format
*************** msgid "Build basic block profile using a
*** 9996,10005 ****
  msgstr ""
  
  #: params.opt:75
! #, fuzzy, no-c-format
! #| msgid "Enable function reordering that improves code placement."
  msgid "Enable only function reordering with auto-profile."
! msgstr "Aktivera omflyttning av funktioner för att förbättra kodplacering."
  
  #: params.opt:79
  #, no-c-format
--- 9880,9888 ----
  msgstr ""
  
  #: params.opt:75
! #, no-c-format
  msgid "Enable only function reordering with auto-profile."
! msgstr "Aktivera endast omflyttning av funktioner med auto-profil."
  
  #: params.opt:79
  #, no-c-format
*************** msgid "Whether the scheduling descriptio
*** 10007,10014 ****
  msgstr "Huruvida schemaläggningsbeskrivningen är huvudsakligen en modell med cykelnoggrannhet av målprocessorn och troligen kommer att spilla över aggressivt för att fylla eventuella pipeline-bubblor."
  
  #: params.opt:83
! #, fuzzy, no-c-format
! #| msgid "Enable hwasan instrumentation of statically sized stack-allocated variables."
  msgid "Enable hwasan instrumentation of statically-sized stack-allocated variables."
  msgstr "Aktivera hwasan-instrumentering av stackallokerade variabler med statisk storlek."
  
--- 9890,9896 ----
  msgstr "Huruvida schemaläggningsbeskrivningen är huvudsakligen en modell med cykelnoggrannhet av målprocessorn och troligen kommer att spilla över aggressivt för att fylla eventuella pipeline-bubblor."
  
  #: params.opt:83
! #, no-c-format
  msgid "Enable hwasan instrumentation of statically-sized stack-allocated variables."
  msgstr "Aktivera hwasan-instrumentering av stackallokerade variabler med statisk storlek."
  
*************** msgid "When sanitizing using MTE instruc
*** 10043,10052 ****
  msgstr ""
  
  #: params.opt:111
! #, fuzzy, no-c-format
! #| msgid "Enable hwasan instrumentation of builtin functions."
  msgid "When sanitizing using MTE instructions, include builtin functions."
! msgstr "Aktivera hwasan-instrumentering av inbyggda funktioner."
  
  #: params.opt:115
  #, no-c-format
--- 9925,9933 ----
  msgstr ""
  
  #: params.opt:111
! #, no-c-format
  msgid "When sanitizing using MTE instructions, include builtin functions."
! msgstr "Vid sanering använd MTE-instruktioner, inklusive inbyggda funktioner."
  
  #: params.opt:115
  #, no-c-format
*************** msgid "Set the estimated probability in
*** 10064,10079 ****
  msgstr "Ange den uppskattade sannolikheten i procent för den inbyggda expect.  Standardvärdet är 90 % sannolikhet."
  
  #: params.opt:127
! #, fuzzy, no-c-format
! #| msgid "The maximum length of a constant string for a builtin string cmp call eligible for inlining. The default value is 3."
  msgid "The maximum length of a constant string for a builtin string comparison call eligible for inlining. The default value is 3."
  msgstr "Den maximala längden på en konstant sträng för att ett inbyggt strängjämförelseanrop skall vara tänkbart för inline:ing.  Standardvärdet är 3."
  
  #: params.opt:131
! #, fuzzy, no-c-format
! #| msgid "The smallest number of different values for which it is best to use a jump-table instead of a tree of conditional branches, if 0, use the default for the machine."
  msgid "The smallest number of different values for which it is best to use a jump-table instead of a tree of conditional branches.  If 0, use the default for the machine."
! msgstr "Det minsta antalet olika värden för vilka det är bäst att använda hopptabeller istället för ett träd med villkorliga grenar, om 0, använd standardvärdet för maskinen."
  
  #: params.opt:135
  #, fuzzy, no-c-format
--- 9945,9958 ----
  msgstr "Ange den uppskattade sannolikheten i procent för den inbyggda expect.  Standardvärdet är 90 % sannolikhet."
  
  #: params.opt:127
! #, no-c-format
  msgid "The maximum length of a constant string for a builtin string comparison call eligible for inlining. The default value is 3."
  msgstr "Den maximala längden på en konstant sträng för att ett inbyggt strängjämförelseanrop skall vara tänkbart för inline:ing.  Standardvärdet är 3."
  
  #: params.opt:131
! #, no-c-format
  msgid "The smallest number of different values for which it is best to use a jump-table instead of a tree of conditional branches.  If 0, use the default for the machine."
! msgstr "Det minsta antalet olika värden för vilka det är bäst att använda hopptabeller istället för ett träd med villkorliga grenar- Om 0, använd standardvärdet för maskinen."
  
  #: params.opt:135
  #, fuzzy, no-c-format
diff -Nrcpad gcc-16-20260301/gcc/predict.cc gcc-16-20260308/gcc/predict.cc
*** gcc-16-20260301/gcc/predict.cc	Sun Mar  1 22:32:07 2026
--- gcc-16-20260308/gcc/predict.cc	Sun Mar  8 22:32:07 2026
*************** combine_predictions_for_insn (rtx_insn *
*** 1046,1058 ****
  	     + (REG_BR_PROB_BASE - combined_probability)
  	     * (REG_BR_PROB_BASE - probability));
  
! 	/* Use FP math to avoid overflows of 32bit integers.  */
  	if (d == 0)
  	  /* If one probability is 0% and one 100%, avoid division by zero.  */
  	  combined_probability = REG_BR_PROB_BASE / 2;
  	else
! 	  combined_probability = (((double) combined_probability) * probability
! 				  * REG_BR_PROB_BASE / d + 0.5);
        }
  
    /* Decide which heuristic to use.  In case we didn't match anything,
--- 1046,1059 ----
  	     + (REG_BR_PROB_BASE - combined_probability)
  	     * (REG_BR_PROB_BASE - probability));
  
! 	/* Use int64_t math to avoid overflows of 32bit integers.  */
  	if (d == 0)
  	  /* If one probability is 0% and one 100%, avoid division by zero.  */
  	  combined_probability = REG_BR_PROB_BASE / 2;
  	else
! 	  combined_probability = ((((int64_t) combined_probability)
! 				   * probability
! 				   * REG_BR_PROB_BASE + (d / 2)) / d);
        }
  
    /* Decide which heuristic to use.  In case we didn't match anything,
*************** combine_predictions_for_bb (basic_block
*** 1399,1412 ****
  	       + (REG_BR_PROB_BASE - combined_probability)
  	       * (REG_BR_PROB_BASE - probability));
  
! 	  /* Use FP math to avoid overflows of 32bit integers.  */
  	  if (d == 0)
  	    /* If one probability is 0% and one 100%, avoid division by zero.  */
  	    combined_probability = REG_BR_PROB_BASE / 2;
  	  else
! 	    combined_probability = (((double) combined_probability)
! 				    * probability
! 		    		    * REG_BR_PROB_BASE / d + 0.5);
  	}
      }
  
--- 1400,1413 ----
  	       + (REG_BR_PROB_BASE - combined_probability)
  	       * (REG_BR_PROB_BASE - probability));
  
! 	  /* Use int64_t math to avoid overflows of 32bit integers.  */
  	  if (d == 0)
  	    /* If one probability is 0% and one 100%, avoid division by zero.  */
  	    combined_probability = REG_BR_PROB_BASE / 2;
  	  else
! 	    combined_probability = ((((int64_t) combined_probability)
! 				     * probability
! 				     * REG_BR_PROB_BASE + (d / 2)) / d);
  	}
      }
  
diff -Nrcpad gcc-16-20260301/gcc/rtl-ssa/blocks.cc gcc-16-20260308/gcc/rtl-ssa/blocks.cc
*** gcc-16-20260301/gcc/rtl-ssa/blocks.cc	Sun Mar  1 22:32:07 2026
--- gcc-16-20260308/gcc/rtl-ssa/blocks.cc	Sun Mar  8 22:32:07 2026
*************** function_info::add_live_out_use (bb_info
*** 327,364 ****
    add_use (use);
  }
  
- // Return true if all nondebug uses of DEF are live-out uses.
- static bool
- all_uses_are_live_out_uses (set_info *def)
- {
-   for (use_info *use : def->all_uses ())
-     if (!use->is_in_debug_insn () && !use->is_live_out_use ())
-       return false;
-   return true;
- }
- 
- // SET, if nonnull, is a definition of something that is live out from BB.
- // Return the live-out value itself.
- set_info *
- function_info::live_out_value (bb_info *bb, set_info *set)
- {
-   // Degenerate phis only exist to provide a definition for uses in the
-   // same EBB.  The live-out value is the same as the live-in value.
-   if (auto *phi = safe_dyn_cast<phi_info *> (set))
-     if (phi->is_degenerate ())
-       {
- 	set = phi->input_value (0);
- 
- 	// Remove the phi if it turned out to be useless.  This is
- 	// mainly useful for memory, because we don't know ahead of time
- 	// whether a block will use memory or not.
- 	if (bb == bb->ebb ()->last_bb () && all_uses_are_live_out_uses (phi))
- 	  replace_phi (phi, set);
-       }
- 
-   return set;
- }
- 
  // Make USE's definition available at USE, if it isn't already.  Assume that
  // the caller has properly used make_use_available to check that this is
  // possible.
--- 327,332 ----
*************** function_info::replace_phi (phi_info *ph
*** 454,460 ****
  
    if (new_value)
      for (use_info *use : phi->nondebug_insn_uses ())
!       if (!use->is_live_out_use ())
  	{
  	  // We need to keep the phi around for its local uses.
  	  // Turn it into a degenerate phi, if it isn't already.
--- 422,432 ----
  
    if (new_value)
      for (use_info *use : phi->nondebug_insn_uses ())
!       // Live-out uses act as a movement barrier for later definitions
!       // in the same EBB.
!       if (!use->is_live_out_use ()
! 	  || (phi->next_def ()
! 	      && phi->next_def ()->ebb () == phi->ebb ()))
  	{
  	  // We need to keep the phi around for its local uses.
  	  // Turn it into a degenerate phi, if it isn't already.
*************** function_info::create_phi (ebb_info *ebb
*** 543,548 ****
--- 515,531 ----
    return phi;
  }
  
+ // Called while building an extended basic block's SSA form using BI.
+ // Create and return a degenerate phi whose single input is VALUE.
+ phi_info *
+ function_info::create_degenerate_phi (build_info &bi, set_info *value)
+ {
+   access_info *inputs[] = { look_through_degenerate_phi (value) };
+   auto *phi = create_phi (bi.current_ebb, value->resource (), inputs, 1);
+   bi.record_reg_def (phi);
+   return phi;
+ }
+ 
  // Create and return a degenerate phi for EBB whose input comes from DEF.
  // This is used in cases where DEF is known to be available on entry to
  // EBB but was not previously used within it.  If DEF is for a register,
*************** void
*** 822,827 ****
--- 805,811 ----
  function_info::add_phi_nodes (build_info &bi)
  {
    ebb_info *ebb = bi.current_ebb;
+   bb_info *bb = ebb->first_bb ();
    basic_block cfg_bb = ebb->first_bb ()->cfg_bb ();
  
    // Create the register phis for this EBB.
*************** function_info::add_phi_nodes (build_info
*** 846,851 ****
--- 830,855 ----
  
    bitmap_copy (bi.ebb_def_regs, &phis.regs);
  
+   if (bb->next_bb ())
+     {
+       // If a live input is redefined by later blocks in the same EBB, we need
+       // to add live-out uses to prevent the later definition from being moved
+       // into earlier blocks.  Create degenerate phis that can be used for
+       // that purpose, if phis are not naturally needed.
+       auto_bitmap extra_regs;
+       for (auto *bb2 : ebb->bbs ())
+ 	if (bb2 != bb)
+ 	  bitmap_ior_into (extra_regs, &DF_LR_BB_INFO (bb2->cfg_bb ())->def);
+       bitmap_and_compl_into (extra_regs, &phis.regs);
+       EXECUTE_IF_AND_IN_BITMAP (extra_regs, DF_LR_IN (cfg_bb), 0, regno, in_bi)
+ 	if (set_info *value = bi.current_reg_value (regno))
+ 	  {
+ 	    create_degenerate_phi (bi, value);
+ 	    // Record that live-out uses are needed for this phi.
+ 	    bitmap_set_bit (bi.ebb_def_regs, regno);
+ 	  }
+     }
+ 
    // Collect the live-in memory definitions and record whether they're
    // all the same.
    m_temp_defs.reserve (num_preds);
*************** function_info::record_block_live_out (bu
*** 1021,1028 ****
        bitmap_iterator out_bi;
        EXECUTE_IF_SET_IN_BITMAP (&phis.regs, 0, regno, out_bi)
  	{
! 	  phis.inputs[input_i]
! 	    = live_out_value (bb, bi.current_reg_value (regno));
  	  input_i += 1;
  	}
      }
--- 1025,1036 ----
        bitmap_iterator out_bi;
        EXECUTE_IF_SET_IN_BITMAP (&phis.regs, 0, regno, out_bi)
  	{
! 	  set_info *value = bi.current_reg_value (regno);
! 	  // Degenerate phis only exist to provide a definition for uses in the
! 	  // same EBB.  The live-out value is the same as the live-in value.
! 	  if (value)
! 	    value = look_through_degenerate_phi (value);
! 	  phis.inputs[input_i] = value;
  	  input_i += 1;
  	}
      }
*************** function_info::record_block_live_out (bu
*** 1039,1045 ****
        bitmap_iterator out_bi;
        EXECUTE_IF_AND_IN_BITMAP (bi.ebb_def_regs, live_out, 0, regno, out_bi)
  	{
! 	  set_info *value = live_out_value (bb, bi.current_reg_value (regno));
  	  if (value && value->ebb () == ebb)
  	    add_live_out_use (bb, value);
  	}
--- 1047,1053 ----
        bitmap_iterator out_bi;
        EXECUTE_IF_AND_IN_BITMAP (bi.ebb_def_regs, live_out, 0, regno, out_bi)
  	{
! 	  set_info *value = bi.current_reg_value (regno);
  	  if (value && value->ebb () == ebb)
  	    add_live_out_use (bb, value);
  	}
*************** function_info::record_block_live_out (bu
*** 1059,1066 ****
        }
  
    // Record the live-out memory value.
!   bi.bb_mem_live_out[cfg_bb->index]
!     = live_out_value (bb, bi.current_mem_value ());
  }
  
  // Add BB and its contents to the SSA information.
--- 1067,1081 ----
        }
  
    // Record the live-out memory value.
!   set_info *mem_value = bi.current_mem_value ();
!   if (auto *phi = safe_dyn_cast <phi_info *> (mem_value))
!     if (phi->is_degenerate ())
!       {
! 	mem_value = phi->input_value (0);
! 	if (bb == ebb->last_bb () && !phi->has_nondebug_uses ())
! 	  replace_phi (phi, mem_value);
!       }
!   bi.bb_mem_live_out[cfg_bb->index] = mem_value;
  }
  
  // Add BB and its contents to the SSA information.
*************** function_info::start_block (build_info &
*** 1079,1087 ****
    // Record the start of this block's definitions in the definitions stack.
    bi.old_def_stack_limit.safe_push (bi.def_stack.length ());
  
-   // Add the block itself.
-   append_bb (bb);
- 
    // If the block starts an EBB, create the phi insn.  This insn should exist
    // for all EBBs, even if they don't (yet) need phis.
    if (bb == ebb->first_bb ())
--- 1094,1099 ----
*************** function_info::create_ebbs (build_info &
*** 1299,1305 ****
  	// Create the EBB itself.
  	auto *ebb = allocate<ebb_info> (bbs[0], bbs.last ());
  	for (bb_info *bb : bbs)
! 	  bb->set_ebb (ebb);
  	bbs.truncate (0);
        }
  
--- 1311,1320 ----
  	// Create the EBB itself.
  	auto *ebb = allocate<ebb_info> (bbs[0], bbs.last ());
  	for (bb_info *bb : bbs)
! 	  {
! 	    bb->set_ebb (ebb);
! 	    append_bb (bb);
! 	  }
  	bbs.truncate (0);
        }
  
diff -Nrcpad gcc-16-20260301/gcc/rtl-ssa/functions.h gcc-16-20260308/gcc/rtl-ssa/functions.h
*** gcc-16-20260301/gcc/rtl-ssa/functions.h	Sun Mar  1 22:32:07 2026
--- gcc-16-20260308/gcc/rtl-ssa/functions.h	Sun Mar  8 22:32:07 2026
*************** private:
*** 308,314 ****
    void add_reg_unused_notes (insn_info *);
  
    void add_live_out_use (bb_info *, set_info *);
-   set_info *live_out_value (bb_info *, set_info *);
    void commit_make_use_available (use_info *);
  
    void append_phi (ebb_info *, phi_info *);
--- 308,313 ----
*************** private:
*** 336,341 ****
--- 335,341 ----
    void create_ebbs (build_info &);
    void add_entry_block_defs (build_info &);
    void calculate_ebb_live_in_for_debug (build_info &);
+   phi_info *create_degenerate_phi (build_info &, set_info *);
    void add_phi_nodes (build_info &);
    void add_artificial_accesses (build_info &, df_ref_flags);
    void add_block_contents (build_info &);
diff -Nrcpad gcc-16-20260301/gcc/rtl-ssa/insns.cc gcc-16-20260308/gcc/rtl-ssa/insns.cc
*** gcc-16-20260301/gcc/rtl-ssa/insns.cc	Sun Mar  1 22:32:07 2026
--- gcc-16-20260308/gcc/rtl-ssa/insns.cc	Sun Mar  8 22:32:07 2026
*************** function_info::create_reg_use (build_inf
*** 482,496 ****
        if (insn->is_debug_insn ())
  	value = look_through_degenerate_phi (value);
        else if (bitmap_bit_p (bi.potential_phi_regs, resource.regno))
! 	{
! 	  // VALUE is defined by a previous EBB and RESOURCE has multiple
! 	  // definitions.  Create a degenerate phi in the current EBB
! 	  // so that all definitions and uses follow a linear RPO view;
! 	  // see rtl.texi for details.
! 	  access_info *inputs[] = { look_through_degenerate_phi (value) };
! 	  value = create_phi (bi.current_ebb, value->resource (), inputs, 1);
! 	  bi.record_reg_def (value);
! 	}
      }
    auto *use = allocate<use_info> (insn, resource, value);
    add_use (use);
--- 482,492 ----
        if (insn->is_debug_insn ())
  	value = look_through_degenerate_phi (value);
        else if (bitmap_bit_p (bi.potential_phi_regs, resource.regno))
! 	// VALUE is defined by a previous EBB and RESOURCE has multiple
! 	// definitions.  Create a degenerate phi in the current EBB
! 	// so that all definitions and uses follow a linear RPO view;
! 	// see rtl.texi for details.
! 	value = create_degenerate_phi (bi, value);
      }
    auto *use = allocate<use_info> (insn, resource, value);
    add_use (use);
diff -Nrcpad gcc-16-20260301/gcc/rust/ChangeLog gcc-16-20260308/gcc/rust/ChangeLog
*** gcc-16-20260301/gcc/rust/ChangeLog	Sun Mar  1 22:32:07 2026
--- gcc-16-20260308/gcc/rust/ChangeLog	Sun Mar  8 22:32:07 2026
***************
*** 1,3 ****
--- 1,308 ----
+ 2026-02-27  Islam-Imad  <islamimad404@gmail.com>
+ 
+ 	* typecheck/rust-hir-type-check-struct.cc: enhance missing fields error message
+ 
+ 2026-02-27  Owen Avery  <powerboat9.gamer@gmail.com>
+ 
+ 	* ast/rust-ast.h (struct Crate): Make final.
+ 
+ 2026-02-27  Owen Avery  <powerboat9.gamer@gmail.com>
+ 
+ 	* Make-lang.in (GRS_OBJS): Remove entries.
+ 	* ast/rust-ast.cc (DelimTokenTree::parse_to_meta_item): Handle
+ 	changes to AttributeParser.
+ 	(AttributeParser::AttributeParser): Change signature.
+ 	* ast/rust-macro.h (AttributeParser::AttributeParser): Likewise.
+ 	* expand/rust-macro-expand.cc
+ 	(MacroExpander::expand_eager_invocations): Handle changes to
+ 	MacroInvocLexer.
+ 	(MacroExpander::parse_proc_macro_output): Use MacroInvocLexer
+ 	instead of ProcMacroInvocLexer.
+ 	* expand/rust-macro-expand.h: Remove inclusion of
+ 	"rust-proc-macro-invoc-lexer.h".
+ 	* expand/rust-macro-invoc-lexer.cc
+ 	(MacroInvocLexer::peek_token): Handle changes to MacroInvocLexer
+ 	internal representation.
+ 	(MacroInvocLexer::get_token_slice): Likewise.
+ 	(MacroInvocLexer::split_current_token): Likewise and fix
+ 	iterator handling.
+ 	* expand/rust-macro-invoc-lexer.h (class MacroInvocLexerBase):
+ 	Remove and combine with...
+ 	(class MacroInvocLexer): ...its now only derived class.
+ 	* expand/rust-proc-macro-invoc-lexer.cc: Removed.
+ 	* expand/rust-proc-macro-invoc-lexer.h: Removed.
+ 	* parse/rust-parse-impl-proc-macro.cc: Removed.
+ 
+ 2026-02-27  Harishankar  <harishankarpp7@gmail.com>
+ 
+ 	* parse/rust-parse-impl-expr.hxx (null_denotation_path):
+ 	Check for null struct and tuple expressions to prevent segmentation fault.
+ 
+ 2026-02-27  Harishankar  <harishankarpp7@gmail.com>
+ 
+ 	* parse/rust-parse-impl-expr.hxx (parse_arithmetic_or_logical_expr):
+ 	Check for null left operand to prevent segmentation fault.
+ 
+ 2026-02-27  Jayant Chauhan  <0001jayant@gmail.com>
+ 
+ 	* ast/rust-ast-builder.h (Builder::qualified_call): New method declaration.
+ 	* ast/rust-ast-builder.cc (Builder::qualified_call): Implement new method.
+ 	* expand/rust-derive-clone.cc (DeriveClone::clone_call): Use builder.qualified_call.
+ 
+ 2026-02-27  jayant chauhan  <0001jayant@gmail.com>
+ 
+ 	* parse/rust-parse-impl-expr.hxx (null_denotation_path): Check
+ 	if macro invocation returns null and return error.
+ 
+ 2026-02-27  Islam-Imad  <islamimad404@gmail.com>
+ 
+ 	* lex/rust-lex.cc (is_whitespace): refactor if-else to switch
+ 	* lex/rust-token.h: refactor if-else to switch
+ 	* parse/rust-parse-impl.hxx: return nullptr when type is in invalid state
+ 
+ 2026-02-27  jayant chauhan  <0001jayant@gmail.com>
+ 
+ 	* util/rust-attributes.cc (check_deprecated_attribute): Guard against
+ 	attributes without input.
+ 
+ 2026-02-27  Owen Avery  <powerboat9.gamer@gmail.com>
+ 
+ 	* ast/rust-ast-builder.cc (Builder::trait_bound): Replace copy
+ 	with move.
+ 	(Builder::trait_impl): Likewise.
+ 	(Builder::new_const_param): Replace cloning with reconstruction.
+ 	* ast/rust-path.h (TypePath::TypePath): Use TypeNoBounds copy
+ 	constructor.
+ 	(TypePath::operator=): Use TypeNoBounds copy assignment.
+ 	* expand/rust-derive-clone.cc (DeriveClone::clone_impl): Produce
+ 	trait bounds lazily.
+ 	* expand/rust-derive-copy.cc (DeriveCopy::copy_impl): Likewise.
+ 	* expand/rust-derive-debug.cc (DeriveDebug::stub_derive_impl):
+ 	Likewise.
+ 	* expand/rust-derive-default.cc (DeriveDefault::default_impl):
+ 	Likewise.
+ 	* expand/rust-derive-eq.cc (DeriveEq::eq_impls): Likewise.
+ 	* expand/rust-derive-hash.cc (DeriveHash::hash_impl): Likewise.
+ 	* expand/rust-derive-ord.cc (DeriveOrd::cmp_impl): Likewise.
+ 	* expand/rust-derive-partial-eq.cc
+ 	(DerivePartialEq::partialeq_impls): Likewise.
+ 	* expand/rust-derive.cc (DeriveVisitor::setup_impl_generics):
+ 	Likewise.
+ 	* expand/rust-derive.h (DeriveVisitor::setup_impl_generics):
+ 	Likewise.
+ 
+ 2026-02-27  Harishankar  <harishankarpp7@gmail.com>
+ 
+ 	* ast/rust-ast.cc (Module::process_file_path): Add fallback search
+ 	for sibling modules when subdirectory search fails.
+ 
+ 2026-02-27  Jayant Chauhan  <0001jayant@gmail.com>
+ 
+ 	* util/rust-attributes.cc (check_lint_attribute): New helper.
+ 	(AttributeChecker::visit): Call helper for lint attributes on functions.
+ 
+ 2026-02-27  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+ 
+ 	* ast/rust-ast.cc (Crate::inject_extern_crate): Add a function to
+ 	inject an extern crate item to a crate.
+ 	* ast/rust-ast.h: Add function prototype for inject_extern_crate.
+ 	* rust-session-manager.cc (has_attribute): Add helper to determine if
+ 	a crate has a given inner attribute.
+ 	(Session::compile_crate): Add a step to inject the core extern crate
+ 	when the no_core attribute is missing.
+ 	* util/rust-attribute-values.h: Add the no_core attribute value.
+ 
+ 2026-02-27  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+ 
+ 	* ast/rust-ast-collector.cc (TokenCollector::visit): Add colon and
+ 	type param bound tokens when collecting a trait ast node.
+ 
+ 2026-02-27  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+ 
+ 	* resolve/rust-forever-stack.hxx: Prevent iteration on parent ribs.
+ 
+ 2026-02-27  Owen Avery  <powerboat9.gamer@gmail.com>
+ 
+ 	* expand/rust-macro-expand.cc
+ 	(MacroExpander::expand_decl_macro): Prevent excess errors.
+ 	(MacroExpander::match_matcher): Detect duplicate metavariable
+ 	names.
+ 	* expand/rust-macro-expand.h (MacroExpander::MacroExpander):
+ 	Initialize field had_duplicate_error.
+ 	(MacroExpander::had_duplicate_error): New field.
+ 
+ 2026-02-27  Yap Zhi Heng  <yapzhhg@gmail.com>
+ 
+ 	* typecheck/rust-hir-type-check-pattern.cc (visit(StructPattern)): Implement
+ 	type check case for HIR::StructPatternFieldTuplePat.
+ 	* checks/errors/rust-hir-pattern-analysis.cc (lower_struct_pattern): Implement
+ 	case for HIR::StructPatternField::ItemType::TUPLE_PAT.
+ 	* backend/rust-compile-pattern.cc:
+ 		* CompilePatternCheckExpr::visit (HIR::StructPattern): Implement code
+ 		gen for HIR::StructPatternField::ItemType::TUPLE_PAT case.
+ 		* CompilePatternBindings::handle_struct_pattern_tuple_pat: Implement
+ 		bindings for HIR::StructPatternFieldTuplePat.
+ 	* backend/rust-compile-pattern.h: Update function definition for
+ 	handle_struct_pattern_tuple_pat.
+ 
+ 2026-02-27  Jayant Chauhan  <0001jayant@gmail.com>
+ 
+ 	* expand/rust-derive-eq.cc (get_eq_trait_path): New helper.
+ 	(DeriveEq::assert_param_is_eq): Use helper.
+ 	(DeriveEq::eq_impls): Use helper.
+ 
+ 2026-02-27  Mason Pike  <m@sonpike.net>
+ 
+ 	* util/rust-attributes.cc: add attributes to the __outer_attributes set.
+ 	This prevents some inconsistent behavior, like: https://godbolt.org/z/Eq1GE7xxY
+ 
+ 2026-02-27  Mason Pike  <m@sonpike.net>
+ 
+ 	* util/rust-attributes.cc: remove loop helper functions
+ 	* util/rust-attributes.h: remove function defs
+ 
+ 2026-02-27  Mason Pike  <m@sonpike.net>
+ 
+ 	* util/rust-attributes.cc: factor out loops from
+ 	several functions to prevent us from having to loop
+ 	several times over the same attributes
+ 
+ 2026-02-27  Mason Pike  <m@sonpike.net>
+ 
+ 	* util/rust-attributes.cc: add new function to validate that an
+ 	attribute is assigned to a valid item type
+ 
+ 2026-02-27  Jayant Chauhan  <0001jayant@gmail.com>
+ 
+ 	* expand/rust-expand-visitor.h (expand_closure_params): Add documentation.
+ 	(expand_fields): New private template helper.
+ 	* expand/rust-expand-visitor.cc (expand_struct_fields): Use helper.
+ 	(expand_tuple_fields): Use helper.
+ 
+ 2026-02-27  Jayant Chauhan  <0001jayant@gmail.com>
+ 
+ 	* backend/rust-compile-asm.cc (chain_asm_operand): New helper.
+ 	(CompileAsm::asm_construct_outputs): Use helper and remove dead code.
+ 	(CompileAsm::asm_construct_inputs): Use helper and remove dead code.
+ 
+ 2026-02-27  lenny.chiadmi-delage  <lenny.chiadmi-delage@epita.fr>
+ 
+ 	* hir/rust-ast-lower-expr.cc (ASTLoweringExpr::visit): Replace
+ 	unreachable with sorry_at.
+ 
+ 2026-02-27  lenny.chiadmi-delage  <lenny.chiadmi-delage@epita.fr>
+ 
+ 	* resolve/rust-late-name-resolver-2.0.cc (Late::visit): Visit
+ 	else_expr if has_else_expr, not init_expr.
+ 
+ 2026-02-27  Jayant Chauhan  <0001jayant@gmail.com>
+ 
+ 	* util/rust-attributes.cc (AttributeChecker::visit): Add check for
+ 	export_name on static items.
+ 
+ 2026-02-27  Jayant Chauhan  <0001jayant@gmail.com>
+ 
+ 	* util/rust-attributes.cc (check_export_name_attribute): New helper.
+ 	(AttributeChecker::visit): Check export_name on functions.
+ 
+ 2026-02-27  Arthur Cohen  <arthur.cohen@embecosm.com>
+ 
+ 	* ast/rust-ast.h: Add Type::Kind.
+ 	* ast/rust-macro.h: Use it.
+ 	* ast/rust-path.h: Likewise.
+ 	* ast/rust-type.h: Likewise.
+ 	* resolve/rust-default-resolver.cc (is_lang_impl): New method.
+ 	(DefaultResolver::visit): Collect lang item implementations in the
+ 	prelude.
+ 	* resolve/rust-forever-stack.h: Add new method for lang prelude injection.
+ 	* resolve/rust-forever-stack.hxx: Define it.
+ 	* resolve/rust-late-name-resolver-2.0.cc (Late::visit): Identifier patterns
+ 	can resolve to empty structs or variants.
+ 	* resolve/rust-name-resolution-context.h: Improve resolution.
+ 
+ 2026-02-27  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+ 
+ 	* util/rust-attributes.cc (AttributeChecker::visit): Use const
+ 	variable.
+ 
+ 2026-02-27  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+ 
+ 	* backend/rust-compile-base.cc: Change the assembly name on functions
+ 	with the export_name attribute. Do not mangle the name.
+ 	* util/rust-attribute-values.h: Add export_name attribute value.
+ 	* util/rust-attributes.cc: Add export_name attribute to builtin
+ 	attribute list.
+ 
+ 2026-02-27  Jayant Chauhan  <0001jayant@gmail.com>
+ 
+ 	* util/rust-attributes.cc (AttributeChecker::visit):
+ 	Reject #[target_feature] on non-unsafe functions.
+ 
+ 2026-02-27  Lucas Ly Ba  <lucas.ly-ba@outlook.com>
+ 
+ 	* checks/lints/unused/rust-unused-checker.cc (is_snake_case):
+ 	Add warning for variables, methods, functions,
+ 	lifetime parameters and modules.
+ 	(UnusedChecker::visit):
+ 	New.
+ 	* checks/lints/unused/rust-unused-checker.h:
+ 	New.
+ 
+ 2026-02-27  Lucas Ly Ba  <lucas.ly-ba@outlook.com>
+ 
+ 	* checks/lints/unused/rust-unused-checker.cc (UnusedChecker::visit):
+ 	Add warning for static variables.
+ 
+ 2026-02-27  Arthur Cohen  <arthur.cohen@embecosm.com>
+ 
+ 	* ast/rust-ast-full-decls.h (class GlobContainer): New.
+ 	* ast/rust-ast.h (class GlobContainer): New.
+ 	(struct Crate): Inherit from GlobContainer.
+ 	* ast/rust-item.h (class Module): Likewise.
+ 	(class Enum): Likewise.
+ 	* resolve/rust-finalize-imports-2.0.cc (GlobbingVisitor::go): Handle crates.
+ 	(GlobbingVisitor::visit_crate_container): New.
+ 	(GlobbingVisitor::visit): Remove privacy check as it is wrong.
+ 	* resolve/rust-finalize-imports-2.0.h: Declare new methods.
+ 	* resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::go): Handle crates.
+ 	(TopLevel::visit): Use new insert_glob_container API.
+ 	* util/rust-hir-map.cc (Mappings::get_ast_crate_by_node_id_raw): New private method.
+ 	(Mappings::get_ast_crate_by_node_id): Use it.
+ 	(Mappings::insert_glob_container): New API.
+ 	* util/rust-hir-map.h: Likewise.
+ 	* resolve/rust-early-name-resolver-2.0.cc (Early::finalize_glob_import): Likewise.
+ 
+ 2026-02-27  lenny.chiadmi-delage  <lenny.chiadmi-delage@epita.fr>
+ 
+ 	* parse/rust-parse-impl-expr.hxx: Removes duplicate errors.
+ 	* parse/rust-parse-impl.hxx: Detects when an expression without
+ 	block is not properly terminated
+ 
+ 2026-02-27  Jayant Chauhan  <0001jayant@gmail.com>
+ 
+ 	* util/rust-attributes.cc (AttributeChecker::check_attributes): Emit error for #[repr].
+ 
+ 2026-02-27  Harishankar  <harishankarpp7@gmail.com>
+ 
+ 	* typecheck/rust-typecheck-context.cc (insert_associated_trait_impl):
+ 	Prevent ICE by checking for existing ID.
+ 	* typecheck/rust-hir-type-check.h: Update declarations.
+ 
+ 2026-02-27  Jayant Chauhan  <0001jayant@gmail.com>
+ 
+ 	* util/rust-attributes.cc (check_link_section_attribute): New helper.
+ 	(AttributeChecker::visit): Check link_section on functions and statics.
+ 
+ 2026-02-27  Philip Herron  <herron.philip@googlemail.com>
+ 
+ 	* typecheck/rust-tyty.cc (VariantDef::clone): revert
+ 	(VariantDef::monomorphized_clone): likewise
+ 
+ 2026-02-27  Philip Herron  <herron.philip@googlemail.com>
+ 
+ 	* typecheck/rust-tyty.cc (VariantDef::clone): remove template param
+ 	(VariantDef::monomorphized_clone): likewise
+ 
  2026-02-06  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
  
  	PR middle-end/123892
diff -Nrcpad gcc-16-20260301/gcc/testsuite/ChangeLog gcc-16-20260308/gcc/testsuite/ChangeLog
*** gcc-16-20260301/gcc/testsuite/ChangeLog	Sun Mar  1 22:32:07 2026
--- gcc-16-20260308/gcc/testsuite/ChangeLog	Sun Mar  8 22:32:07 2026
***************
*** 1,3 ****
--- 1,2158 ----
+ 2026-03-07  Jason Merrill  <jason@redhat.com>
+ 	     <mtxn@duck.com>
+ 
+ 	PR c++/123622
+ 	* g++.dg/modules/dep-6.C: New test.
+ 
+ 2026-03-07  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/39057
+ 	* g++.dg/template/friend89.C: New test.
+ 
+ 2026-03-07  Robin Dapp  <rdapp@oss.qualcomm.com>
+ 
+ 	PR rtl-optimization/121649
+ 	* gcc.dg/torture/pr121649.c: New test.
+ 
+ 2026-03-07  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	PR c/123856
+ 	* gcc.dg/pr123856.c: New test.
+ 
+ 2026-03-06  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR analyzer/107646
+ 	PR testsuite/112520
+ 	* gcc.dg/plugin/analyzer_cpython_plugin.cc: Move everything from
+ 	namespace ana:: into ana::cpython_plugin.  Move global tree values
+ 	into a new "class api".
+ 	(pyobj_record): Replace with api.m_type_PyObject.
+ 	(pyobj_ptr_tree): Replace with api.m_type_PyObject_ptr.
+ 	(pyobj_ptr_ptr): Replace with  api.m_type_PyObject_ptr_ptr.
+ 	(varobj_record): Replace with api.m_type_PyVarObject.
+ 	(pylistobj_record): Replace with api.m_type_PyListObject.
+ 	(pylongobj_record): Replace with api.m_type_PyLongObject.
+ 	(pylongtype_vardecl): Replace with api.m_vardecl_PyLong_Type.
+ 	(pylisttype_vardecl): Replace with api.m_vardecl_PyList_Type.
+ 	(get_field_by_name): Add "complain" param and use it to issue a
+ 	note on failure.  Assert that type and	name are non-null.  Don't
+ 	crash on fields that are anonymous unions, and special-case
+ 	looking within them for "ob_refcnt" to	work around the
+ 	Python 3.11 change for PEP 683 (immortal objects).
+ 	(get_sizeof_pyobjptr): Convert to...
+ 	(api::get_sval_sizeof_PyObject_ptr): ...this
+ 	(init_ob_refcnt_field): Convert to...
+ 	(api::init_ob_refcnt_field): ...this.
+ 	(set_ob_type_field): Convert to...
+ 	(api::set_ob_type_field): ..this.
+ 	(api::init_PyObject_HEAD): New.
+ 	(api::get_region_PyObject_ob_refcnt): New.
+ 	(api::do_Py_INCREF): New.
+ 	(api::get_region_PyVarObject_ob_size): New.
+ 	(api::get_region_PyLongObject_ob_digit): New.
+ 	(inc_field_val): Convert to...
+ 	(api::inc_field_val): ...this.
+ 	(refcnt_mismatch::refcnt_mismatch): Add tree params for refcounts
+ 	and initialize corresponding fields.  Fix whitespace.
+ 	(refcnt_mismatch::emit): Use stored tree values, rather than
+ 	assuming we have constants, and crashing non-constants.  Delete
+ 	commented-out dead code.
+ 	(refcnt_mismatch::foo): Delete.
+ 	(refcnt_mismatch::m_expected_refcnt_tree): New field.
+ 	(refcnt_mismatch::m_actual_refcnt_tree): New field.
+ 	(retrieve_ob_refcnt_sval): Simplify using class api.
+ 	(count_pyobj_references): Likewise.
+ 	(check_refcnt): Likewise.  Don't warn on UNKNOWN values.  Use
+ 	get_representative_tree for the expected and actual values and
+ 	skip the warning if it fails, rather than assuming we have
+ 	constants and crashing on non-constants.
+ 	(count_all_references): Update comment.
+ 	(kf_PyList_Append::impl_call_pre): Simplify using class api.
+ 	(kf_PyList_Append::impl_call_post): Likewise.
+ 	(kf_PyList_New::impl_call_post): Likewise.
+ 	(kf_PyLong_FromLong::impl_call_post): Likewise.
+ 	(get_stashed_type_by_name): Emit note if the type couldn't be
+ 	found.
+ 	(get_stashed_global_var_by_name): Likewise for globals.
+ 	(init_py_structs): Convert to...
+ 	(api::init_from_stashed_types): ...this.  Bail out with an error
+ 	code if anything fails.  Look up more things at startup, rather
+ 	than during analysis of calls.
+ 	(ana::cpython_analyzer_events_subscriber): Rename to...
+ 	(ana::cpython_plugin::analyzer_events_subscriber): ...this.
+ 	(analyzer_events_subscriber::analyzer_events_subscriber):
+ 	Initialize m_init_failed.
+ 	(analyzer_events_subscriber::on_message<on_tu_finished>):
+ 	Update for conversion of init_py_structs to
+ 	api::init_from_stashed_types and bail if it fails.
+ 	(analyzer_events_subscriber::on_message<on_frame_popped): Don't
+ 	run if plugin initialization failed.
+ 	(analyzer_events_subscriber::m_init_failed): New field.
+ 
+ 2026-03-06  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/124297
+ 	* g++.dg/cpp2a/concepts-variadic4.C: New test.
+ 
+ 2026-03-06  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR target/124126
+ 	* g++.target/aarch64/pr124126-1.C: New test.
+ 
+ 2026-03-06  Qing Zhao  <qing.zhao@oracle.com>
+ 
+ 	PR c/124230
+ 	* gcc.dg/ubsan/pointer-counted-by-bounds-124230-char.c: New test.
+ 	* gcc.dg/ubsan/pointer-counted-by-bounds-124230-float.c: New test.
+ 	* gcc.dg/ubsan/pointer-counted-by-bounds-124230-struct.c: New test.
+ 	* gcc.dg/ubsan/pointer-counted-by-bounds-124230-union.c: New test.
+ 	* gcc.dg/ubsan/pointer-counted-by-bounds-124230.c: New test.
+ 
+ 2026-03-06  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR c/97991
+ 	* c-c++-common/cpp/pr97991-1.c: New test.
+ 
+ 2026-03-06  Saurabh Jha  <saurabh.jha@arm.com>
+ 	    Evgeny Karpov  <evgeny.karpov@arm.com>
+ 
+ 	* gcc.target/aarch64/mingw/mingw.exp: Add support for C++ files.
+ 	* gcc.target/aarch64/mingw/minimal_new_del.C: New test.
+ 
+ 2026-03-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/122000
+ 	* gcc.c-torture/execute/pr122000.c: New test.
+ 
+ 2026-03-06  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* lib/target-supports.exp: Add arm_arch_v7a_thumb.
+ 	* gcc.target/arm/ifcvt-size-check.c: Add options to force thumb1.
+ 	* gcc.target/arm/ivopts-2.c: Remove object size check.
+ 	* gcc.target/arm/ivopts-3.c: Likewise.
+ 	* gcc.target/arm/ivopts-4.c: Likewise.
+ 	* gcc.target/arm/ivopts-5.c: Likewise.
+ 	* gcc.target/arm/ivopts.c: Likewise.
+ 	* gcc.target/arm/max-insns-skipped.c: Scan for absence of an IT
+ 	instruction.  Remove object size check.  Use arm_arch_v7a_thumb.
+ 	* gcc.target/arm/pr43597.c: Remove object size check and use
+ 	arm_arch_v7a_thumb.
+ 	* gcc.target/arm/pr63210.c: Use arm_arch_v5t_thumb options.
+ 	* gcc.target/arm/split-live-ranges-for-shrink-wrap.c: Remove
+ 	object size check and use arm_arch_v5t_thumb options.
+ 
+ 2026-03-06  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* gcc.target/arm/aes-fuse-1.c: Add _ok to the effective_target.
+ 	* gcc.target/arm/aes-fuse-2.c: Likewise.
+ 
+ 2026-03-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/124135
+ 	* g++.dg/torture/pr124135-1.C: New test.
+ 	* g++.dg/torture/pr124135-2.C: New test.
+ 
+ 2026-03-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/124358
+ 	* gcc.c-torture/execute/pr124358.c: New test.
+ 
+ 2026-03-06  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR rtl-optimization/124078
+ 	* gcc.target/aarch64/pr124078-1.c: New test.
+ 
+ 2026-03-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/124145
+ 	* g++.dg/cpp26/constexpr-eh18.C: New test.
+ 
+ 2026-03-05  Victor Do Nascimento  <victor.donascimento@arm.com>
+ 
+ 	* gcc.dg/vect/vect-pr124037.c: New.
+ 	* g++.dg/vect/vect-pr124037.cc: New.
+ 
+ 2026-03-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/98064
+ 	* gcc.dg/vect/bb-slp-57.c: Verify we do not keep original
+ 	stmts live.
+ 
+ 2026-03-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/124349
+ 	* gcc.target/i386/avx10_2-pr124349-2.c: New test.
+ 
+ 2026-03-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/124367
+ 	* gcc.target/i386/avx512vl-pr124367.c: New test.
+ 
+ 2026-03-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/124366
+ 	* gcc.target/i386/cet-pr124366.c: New test.
+ 
+ 2026-03-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/123810
+ 	* g++.dg/reflect/members_of10.C: New test.
+ 	* g++.dg/cpp2a/typedef1.C: Expect one message on a different line.
+ 
+ 2026-03-04  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/124368
+ 	* g++.dg/reflect/extent1.C: New test.
+ 
+ 2026-03-04  Thiago Jung Bauermann  <thiago.bauermann@linaro.org>
+ 
+ 	PR ipa/60674
+ 	* g++.dg/ipa/devirt-23.C: Remove xfail.
+ 
+ 2026-03-04  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/124229
+ 	* g++.dg/cpp26/expansion-stmt32.C: New test.
+ 	* g++.dg/reflect/expansion-stmt2.C: New test.
+ 
+ 2026-03-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/123866
+ 	* g++.dg/reflect/annotations11.C: New test.
+ 
+ 2026-03-04  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 
+ 	PR testsuite/124359
+ 	PR testsuite/122961
+ 	* gcc.dg/vect/vect-reduc-pattern-2c.c: Drop xfail.
+ 
+ 2026-03-04  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 
+ 	* gcc.target/arm/simd/vextQp64_1.c: Compile with -fno-ipa-cp.
+ 
+ 2026-03-04  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 
+ 	PR testsuite/124320
+ 	* gcc.dg/lto/toplevel-extended-asm-1_0.c: Adjust inline
+ 	assembler for arm-none-eabi.
+ 
+ 2026-03-04  Robin Dapp  <rdapp@oss.qualcomm.com>
+ 
+ 	PR rtl-optimization/124041
+ 	* gcc.dg/torture/pr124041.c: New test.
+ 
+ 2026-03-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/124341
+ 	* gcc.target/i386/avx10_2-pr124341.c: New test.
+ 
+ 2026-03-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/124349
+ 	* gcc.target/i386/avx10_2-pr124349.c: New test.
+ 
+ 2026-03-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gcc.dg/vect/vect-reduc-dot-s8b.c: Remove scan for
+ 	dot_prod pattern matching.
+ 
+ 2026-03-04  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	PR target/64835
+ 	* gcc.dg/ipa/iinline-attr.c (scan-ipa-dump): Restrict xfail to
+ 	32-bit SPARC.
+ 
+ 2026-03-04  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/124335
+ 	* gcc.target/i386/avx512fp16-pr124335.c: Require target
+ 	avx512fp16 instead of avx512bw.
+ 
+ 2026-03-03  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	PR c/122572
+ 	* gcc.dg/pr123356-2.c: New test.
+ 	* gcc.dg/struct-alias-2.c: New test.
+ 
+ 2026-03-03  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	PR c/122572
+ 	* gcc.dg/pr122572.c: New test.
+ 	* gcc.dg/pr123356-1.c: New test.
+ 
+ 2026-03-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/124336
+ 	* gcc.target/i386/stack-check-11.c: Allow orb next to orl/orq.
+ 	* gcc.target/i386/stack-check-18.c: Likewise.
+ 	* gcc.target/i386/stack-check-19.c: Likewise.
+ 
+ 2026-03-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/124306
+ 	* g++.dg/reflect/parameters_of8.C: New test.
+ 
+ 2026-03-03  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/124324
+ 	* g++.dg/reflect/substitute6.C: New test.
+ 
+ 2026-03-03  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/124324
+ 	* g++.dg/reflect/extract11.C: New test.
+ 
+ 2026-03-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gcc.dg/vect/complex/fast-math-complex-add-pattern-half-float.c:
+ 	Add --param vect-epilogues-nomask=0.
+ 
+ 2026-03-03  Richard Sandiford  <rdsandiford@googlemail.com>
+ 	    Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	PR rtl-optimization/123786
+ 	* gcc.target/aarch64/pr123786.c: New test.
+ 
+ 2026-03-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/124315
+ 	* gcc.target/i386/avx512f-pr124315.c: New test.
+ 
+ 2026-03-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/124335
+ 	* gcc.target/i386/avx512fp16-pr124335.c: New test.
+ 
+ 2026-03-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR testsuite/122961
+ 	* gcc.dg/vect/vect-reduc-dot-s8b.c: Remove XFAIL on
+ 	dot-prod pattern detection.
+ 
+ 2026-03-03  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* g++.dg/cpp2a/concepts-recursive-sat2.C: Verify that the
+ 	instantiated parameter mapping is printed.
+ 	* g++.dg/cpp2a/concepts-recursive-sat5.C: Likewise.
+ 
+ 2026-03-03  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/123665
+ 	PR c++/123408
+ 	* g++.dg/cpp2a/lambda-targ22.C: New test.
+ 	* g++.dg/cpp2a/lambda-targ22a.C: New test.
+ 	* g++.dg/cpp2a/lambda-targ23.C: New test.
+ 
+ 2026-03-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/124288
+ 	* gcc.dg/torture/vec-cvt-1.c (FLTTEST): Use comma expression
+ 	to store into {flt,dbl}m{in,ax} and read from it again for
+ 	comparison.
+ 
+ 2026-03-02  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	PR target/124167
+ 	* gcc.target/aarch64/pr124167.c: New test.
+ 
+ 2026-03-02  Cupertino Miranda  <cupertino.miranda@oracle.com>
+ 
+ 	PR target/113453
+ 	* gcc.target/bpf/btfext-funcinfo.c: Adapt test.
+ 	* gcc.target/bpf/btfext-lineinfo.c: New test.
+ 
+ 2026-03-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/124294
+ 	* gcc.target/i386/avx10_2-pr124294.c: New test.
+ 
+ 2026-03-02  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* gcc.target/i386/avx512fp16-xorsign-1.c: Update loop count.
+ 
+ 2026-03-02  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 
+ 	* gcc.target/arm/addr-modes-int.c: Drop additional option
+ 	-march=armv7-a.
+ 
+ 2026-03-02  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 
+ 	* gcc.misc-tests/gcov-30.c: Add require effective target
+ 	profile_update_atomic.
+ 
+ 2026-03-02  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 
+ 	* gcc.target/arm/bfloat16_scalar_1_2.c: Adjust assembler to
+ 	match compiler.
+ 	* gcc.target/arm/bfloat16_scalar_2_2.c: Likewise.
+ 	* gcc.target/arm/bfloat16_scalar_3_2.c: Likewise.
+ 	* gcc.target/arm/bfloat16_simd_1_2.c: Likewise.
+ 	* gcc.target/arm/bfloat16_simd_2_2.c: Likewise.
+ 	* gcc.target/arm/bfloat16_simd_3_2.c: Likewise.
+ 
+ 2026-03-02  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 
+ 	PR testsuite/123191
+ 	* c-c++-common/analyzer/coreutils-group_number.c: Add
+ 	-Wno-overflow.
+ 
+ 2026-03-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* g++.dg/reflect/anon4.C (test): Use (double) 3.14 instead of 3.14 in
+ 	comparisons.
+ 
+ 2026-03-01  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	* g++.dg/reflect/diag5.C: New test.
+ 
+ 2026-03-01  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/123143
+ 	* g++.dg/cpp1y/var-templ88.C: New test.
+ 
+ 2026-03-01  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/123608
+ 	* g++.dg/reflect/defarg1.C: New test.
+ 
+ 2026-02-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/specs/unchecked_union3.ads: New test.
+ 
+ 2026-02-28  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/90036
+ 	* gcc.dg/tree-ssa/pr90036.c: New test.
+ 	* gfortran.dg/unconstrained_commons.f: Drop useless DOM hash table
+ 	lookup check.
+ 
+ 2026-02-28  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR target/124094
+ 	* gcc.target/aarch64/aarch64-json-tunings/boolean-2.c: Add options
+ 	-fdiagnostics-show-caret -fdiagnostics-show-line-numbers.  Replace
+ 	dg-error with a pair of dg-regexps to verify that we report the
+ 	filename and JSON Pointer of where the error occurs, and then
+ 	the filename and location within the JSON file.  Verify that we
+ 	quote and underline the pertinent part of the JSON file.
+ 	* gcc.target/aarch64/aarch64-json-tunings/empty-brackets.c: Likewise.
+ 	* gcc.target/aarch64/aarch64-json-tunings/enum-2.c: Likewise.
+ 	* gcc.target/aarch64/aarch64-json-tunings/integer-2.c: Likewise.
+ 	* gcc.target/aarch64/aarch64-json-tunings/integer-3.c: Likewise.
+ 	* gcc.target/aarch64/aarch64-json-tunings/string-2.c: Likewise.
+ 	* gcc.target/aarch64/aarch64-json-tunings/unidentified-key.c: Likewise.
+ 	* gcc.target/aarch64/aarch64-json-tunings/unsigned-2.c: Likewise.
+ 	* gcc.target/aarch64/aarch64-json-tunings/unsigned-3.c: Likewise.
+ 	* gcc.target/aarch64/aarch64-json-tunings/malformed.c: New test,
+ 	to verify behavior on a malformed JSON input file.
+ 	* gcc.target/aarch64/aarch64-json-tunings/malformed.json: New
+ 	test file.  This is malformed JSON, due to a missing ':" between
+ 	key and value.
+ 
+ 2026-02-28  Kwok Cheung Yeung  <kcyeung@baylibre.com>
+ 
+ 	PR middle-end/113436
+ 	* g++.dg/gomp/pr113436.C: Rename to...
+ 	* g++.dg/gomp/pr113436-1.C: ... this.  Remove restriction on C++
+ 	dialect.
+ 	(f): Remove use of auto.
+ 	* g++.dg/gomp/pr113436-2.C: New.  Original renamed to...
+ 	* g++.dg/gomp/pr113436-5.C: ... this.  Add tests for alignment.
+ 	(f): Test references to VLAs of pointers.
+ 	* g++.dg/gomp/pr113436-3.C: New.
+ 	* g++.dg/gomp/pr113436-4.C: New.
+ 
+ 2026-02-27  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/78187
+ 	* gfortran.dg/deferred_character_40.f90: New test.
+ 
+ 2026-02-27  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/generic_inst18.adb: New test.
+ 
+ 2026-02-27  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/specs/mutably_tagged2.ads: New test.
+ 
+ 2026-02-27  Islam-Imad  <islamimad404@gmail.com>
+ 
+ 	* rust/compile/missing_constructor_fields.rs: update to match the new error message
+ 
+ 2026-02-27  Harishankar  <harishankarpp7@gmail.com>
+ 
+ 	* rust/compile/issue-4414.rs: New test.
+ 
+ 2026-02-27  jayant chauhan  <0001jayant@gmail.com>
+ 
+ 	* rust/compile/issue-4412.rs: New test.
+ 
+ 2026-02-27  Islam-Imad  <islamimad404@gmail.com>
+ 
+ 	* rust/compile/issue-3904.rs: refactor the testcase to match the new thrown error
+ 
+ 2026-02-27  jayant chauhan  <0001jayant@gmail.com>
+ 
+ 	* rust/compile/issue-4410.rs: New test.
+ 
+ 2026-02-27  Harishankar  <harishankarpp7@gmail.com>
+ 
+ 	* rust/compile/issue-4402.rs: New test.
+ 	* rust/compile/issue_4402_foo.rs: New test.
+ 	* rust/compile/compile.exp:Ignore issue_4402_foo.rs
+ 
+ 2026-02-27  Jayant Chauhan  <0001jayant@gmail.com>
+ 
+ 	* rust/compile/issue-4225.rs: New test.
+ 
+ 2026-02-27  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+ 
+ 	* rust/borrowck/position_dependant_outlives.rs: Enable `no_core` feature and
+ 	use `no_core` attribute.
+ 	* rust/borrowck/reference.rs: Likewise.
+ 	* rust/borrowck/return_ref_to_local.rs: Likewise.
+ 	* rust/borrowck/subset.rs: Likewise.
+ 	* rust/borrowck/test_move.rs: Likewise.
+ 	* rust/borrowck/test_move_behind_reference.rs: Likewise.
+ 	* rust/borrowck/test_move_conditional.rs: Likewise.
+ 	* rust/borrowck/tmp.rs: Likewise.
+ 	* rust/borrowck/use_while_mut.rs: Likewise.rs
+ 	* rust/borrowck/use_while_mut_fr.rs: Likewise.
+ 	* rust/borrowck/well_formed_function_inputs.rs: Likewise.
+ 	* rust/compile/abi-options1.rs: Likewise.
+ 	* rust/compile/abi-vardaic.rs: Likewise.
+ 	* rust/compile/additional-trait-bounds1.rs: Likewise.
+ 	* rust/compile/additional-trait-bounds2.rs: Likewise.
+ 	* rust/compile/additional-trait-bounds2nr2.rs: Likewise.
+ 	* rust/compile/all-cast.rs: Likewise.
+ 	* rust/compile/array3.rs: Likewise.
+ 	* rust/compile/array4.rs: Likewise.
+ 	* rust/compile/array_empty_list.rs: Likewise.
+ 	* rust/compile/arrays1.rs: Likewise.
+ 	* rust/compile/arrays2.rs: Likewise.
+ 	* rust/compile/assume.rs: Likewise.
+ 	* rust/compile/attr-macro.rs: Likewise.
+ 	* rust/compile/attr-mismatch-crate-name.rs: Likewise.
+ 	* rust/compile/attr_cold.rs: Likewise.
+ 	* rust/compile/attr_deprecated.rs: Likewise.
+ 	* rust/compile/attr_deprecated_2.rs: Likewise.
+ 	* rust/compile/attr_malformed_doc.rs: Likewise.
+ 	* rust/compile/attr_malformed_path.rs: Likewise.
+ 	* rust/compile/auto_trait.rs: Likewise.
+ 	* rust/compile/auto_trait_invalid.rs: Likewise.
+ 	* rust/compile/auto_trait_super_trait.rs: Likewise.
+ 	* rust/compile/auto_trait_valid.rs: Likewise.
+ 	* rust/compile/auto_traits1.rs: Likewise.
+ 	* rust/compile/auto_traits2.rs: Likewise.
+ 	* rust/compile/auto_traits4.rs: Likewise.
+ 	* rust/compile/bad-crate-name1.rs: Likewise.
+ 	* rust/compile/bad-crate-name2.rs: Likewise.
+ 	* rust/compile/bad-rpit1.rs: Likewise.
+ 	* rust/compile/bad=file-name.rs: Likewise.
+ 	* rust/compile/bad_as_bool_char.rs: Likewise.
+ 	* rust/compile/bad_file_name.txt.rs: Likewise.
+ 	* rust/compile/bad_inner_doc.rs: Likewise.
+ 	* rust/compile/bad_pub_enumitems.rs: Likewise.
+ 	* rust/compile/bad_stmt_enums.rs: Likewise.
+ 	* rust/compile/bad_toplevel_enums.rs: Likewise.
+ 	* rust/compile/bad_tuple_index.rs: Likewise.
+ 	* rust/compile/bad_type1.rs: Likewise.
+ 	* rust/compile/bad_type2.rs: Likewise.
+ 	* rust/compile/black_box.rs: Likewise.
+ 	* rust/compile/bounds.rs: Likewise.
+ 	* rust/compile/bounds1.rs: Likewise.
+ 	* rust/compile/box_syntax.rs: Likewise.
+ 	* rust/compile/box_syntax_feature_gate.rs: Likewise.
+ 	* rust/compile/braced_macro_arm.rs: Likewise.
+ 	* rust/compile/braced_macro_statements1.rs: Likewise.
+ 	* rust/compile/braced_macro_statements2.rs: Likewise.
+ 	* rust/compile/braced_macro_statements3.rs: Likewise.
+ 	* rust/compile/break-rust1.rs: Likewise.
+ 	* rust/compile/break-rust2.rs: Likewise.
+ 	* rust/compile/break-rust3.rs: Likewise.
+ 	* rust/compile/break1.rs: Likewise.
+ 	* rust/compile/break2.rs: Likewise.
+ 	* rust/compile/break_continue_outside_loop.rs: Likewise.
+ 	* rust/compile/break_with_value_inside_loop.rs: Likewise.
+ 	* rust/compile/bug-with-default-generic.rs: Likewise.
+ 	* rust/compile/bytecharstring.rs: Likewise.
+ 	* rust/compile/canonical_paths1.rs: Likewise.
+ 	* rust/compile/cast1.rs: Likewise.
+ 	* rust/compile/cast4.rs: Likewise.
+ 	* rust/compile/cast5.rs: Likewise.
+ 	* rust/compile/cast_float_as_integer.rs: Likewise.
+ 	* rust/compile/cast_generics.rs: Likewise.
+ 	* rust/compile/cfg-attr.rs: Likewise.
+ 	* rust/compile/cfg-core1.rs: Likewise.
+ 	* rust/compile/cfg-core2.rs: Likewise.
+ 	* rust/compile/cfg-test.rs: Likewise.
+ 	* rust/compile/cfg1.rs: Likewise.
+ 	* rust/compile/cfg2.rs: Likewise.
+ 	* rust/compile/cfg3.rs: Likewise.
+ 	* rust/compile/cfg4.rs: Likewise.
+ 	* rust/compile/cfg5.rs: Likewise.
+ 	* rust/compile/cfg6.rs: Likewise.
+ 	* rust/compile/changed_intrinsics.rs: Likewise.
+ 	* rust/compile/closure_in_closure.rs: Likewise.
+ 	* rust/compile/closure_move_expr.rs: Likewise.
+ 	* rust/compile/closure_no_type_anno.rs: Likewise.
+ 	* rust/compile/cmp1.rs: Likewise.
+ 	* rust/compile/complex-path1.rs: Likewise.
+ 	* rust/compile/complex_qualified_path_in_expr.rs: Likewise.
+ 	* rust/compile/const-issue1440.rs: Likewise.
+ 	* rust/compile/const1.rs: Likewise.
+ 	* rust/compile/const10.rs: Likewise.
+ 	* rust/compile/const2.rs: Likewise.
+ 	* rust/compile/const3.rs: Likewise.
+ 	* rust/compile/const4.rs: Likewise.
+ 	* rust/compile/const5.rs: Likewise.
+ 	* rust/compile/const6.rs: Likewise.
+ 	* rust/compile/const7.rs: Likewise.
+ 	* rust/compile/const8.rs: Likewise.
+ 	* rust/compile/const9.rs: Likewise.
+ 	* rust/compile/const_async_function.rs: Likewise.
+ 	* rust/compile/const_generics_1.rs: Likewise.
+ 	* rust/compile/const_generics_10.rs: Likewise.
+ 	* rust/compile/const_generics_11.rs: Likewise.
+ 	* rust/compile/const_generics_12.rs: Likewise.
+ 	* rust/compile/const_generics_13.rs: Likewise.
+ 	* rust/compile/const_generics_14.rs: Likewise.
+ 	* rust/compile/const_generics_15.rs: Likewise.
+ 	* rust/compile/const_generics_16.rs: Likewise.
+ 	* rust/compile/const_generics_17.rs: Likewise.
+ 	* rust/compile/const_generics_18.rs: Likewise.
+ 	* rust/compile/const_generics_19.rs: Likewise.
+ 	* rust/compile/const_generics_2.rs: Likewise.
+ 	* rust/compile/const_generics_3.rs: Likewise.
+ 	* rust/compile/const_generics_4.rs: Likewise.
+ 	* rust/compile/const_generics_5.rs: Likewise.
+ 	* rust/compile/const_generics_6.rs: Likewise.
+ 	* rust/compile/const_generics_7.rs: Likewise.
+ 	* rust/compile/const_generics_8.rs: Likewise.
+ 	* rust/compile/const_generics_9.rs: Likewise.
+ 	* rust/compile/const_trait_fn.rs: Likewise.
+ 	* rust/compile/continue1.rs: Likewise.
+ 	* rust/compile/crate-metavar1.rs: Likewise.
+ 	* rust/compile/deadcode_err1.rs: Likewise.
+ 	* rust/compile/deadcode_err2.rs: Likewise.
+ 	* rust/compile/debug-diagnostics-default.rs: Likewise.
+ 	* rust/compile/debug-diagnostics-off.rs: Likewise.
+ 	* rust/compile/debug-diagnostics-on.rs: Likewise.
+ 	* rust/compile/decl_macro1.rs: Likewise.
+ 	* rust/compile/decl_macro2.rs: Likewise.
+ 	* rust/compile/decl_macro3.rs: Likewise.
+ 	* rust/compile/decl_macro4.rs: Likewise.
+ 	* rust/compile/decl_macro5.rs: Likewise.
+ 	* rust/compile/decl_macro6.rs: Likewise.
+ 	* rust/compile/decl_macro7.rs: Likewise.
+ 	* rust/compile/default_not_a_kw.rs: Likewise.
+ 	* rust/compile/deferred_const_inference.rs: Likewise.
+ 	* rust/compile/deprecated-fn.rs: Likewise.
+ 	* rust/compile/derive-debug1.rs: Likewise.
+ 	* rust/compile/derive-partialeq1.rs: Likewise.
+ 	* rust/compile/derive_clone_enum1.rs: Likewise.
+ 	* rust/compile/derive_clone_enum2.rs: Likewise.
+ 	* rust/compile/derive_clone_enum3.rs: Likewise.
+ 	* rust/compile/derive_empty.rs: Likewise.
+ 	* rust/compile/derive_macro1.rs: Likewise.
+ 	* rust/compile/derive_macro3.rs: Likewise.
+ 	* rust/compile/derive_macro4.rs: Likewise.
+ 	* rust/compile/derive_macro6.rs: Likewise.
+ 	* rust/compile/derive_macro7.rs: Likewise.
+ 	* rust/compile/derive_macro8.rs: Likewise.
+ 	* rust/compile/derive_partial_ord1.rs: Likewise.
+ 	* rust/compile/diagnostic_underline.rs: Likewise.
+ 	* rust/compile/doc_isolated_cr_block_comment.rs: Likewise.
+ 	* rust/compile/doc_isolated_cr_inner_block_comment.rs: Likewise.
+ 	* rust/compile/doc_isolated_cr_inner_line_comment.rs: Likewise.
+ 	* rust/compile/doc_isolated_cr_line_comment.rs: Likewise.
+ 	* rust/compile/doc_macro.rs: Likewise.
+ 	* rust/compile/dropck_eyepatch_feature_gate.rs: Likewise.
+ 	* rust/compile/dup_fields.rs: Likewise.
+ 	* rust/compile/e0579-neg-float-fail.rs: Likewise.
+ 	* rust/compile/e0579-neg-float.rs: Likewise.
+ 	* rust/compile/empty_comment_before_match.rs: Likewise.
+ 	* rust/compile/empty_union.rs: Likewise.
+ 	* rust/compile/enum_discriminant1.rs: Likewise.
+ 	* rust/compile/enum_discriminant2.rs: Likewise.
+ 	* rust/compile/enum_discriminant3.rs: Likewise.
+ 	* rust/compile/enum_variant_name.rs: Likewise.
+ 	* rust/compile/exclusive_range_pattern.rs: Likewise.
+ 	* rust/compile/exclusive_range_pattern_feature_gate.rs: Likewise.
+ 	* rust/compile/exhaustiveness1.rs: Likewise.
+ 	* rust/compile/exhaustiveness2.rs: Likewise.
+ 	* rust/compile/exhaustiveness3.rs: Likewise.
+ 	* rust/compile/expand_macro_qual_path_in_type.rs: Likewise.
+ 	* rust/compile/expected_type_args2.rs: Likewise.
+ 	* rust/compile/expected_type_args3.rs: Likewise.
+ 	* rust/compile/export_name.rs: Likewise.
+ 	* rust/compile/extern_c_named_variadic.rs: Likewise.
+ 	* rust/compile/extern_func_with_body.rs: Likewise.
+ 	* rust/compile/extern_generics.rs: Likewise.
+ 	* rust/compile/extern_type_item.rs: Likewise.
+ 	* rust/compile/extern_type_item_missing_semi.rs: Likewise.
+ 	* rust/compile/feature.rs: Likewise.
+ 	* rust/compile/feature_extern_types.rs: Likewise.
+ 	* rust/compile/feature_intrinsics.rs: Likewise.
+ 	* rust/compile/feature_rust_attri0.rs: Likewise.
+ 	* rust/compile/feature_rust_attri1.rs: Likewise.
+ 	* rust/compile/for-loop1.rs: Likewise.
+ 	* rust/compile/for-loop2.rs: Likewise.
+ 	* rust/compile/for_expr.rs: Likewise.
+ 	* rust/compile/for_lifetimes.rs: Likewise.
+ 	* rust/compile/format_args_basic_expansion.rs: Likewise.
+ 	* rust/compile/format_args_concat.rs: Likewise.
+ 	* rust/compile/format_args_extra_comma.rs: Likewise.
+ 	* rust/compile/found_struct.rs: Likewise.
+ 	* rust/compile/frust-compile-until.rs: Likewise.
+ 	* rust/compile/func-const-unsafe.rs: Likewise.
+ 	* rust/compile/func1.rs: Likewise.
+ 	* rust/compile/func2.rs: Likewise.
+ 	* rust/compile/func3.rs: Likewise.
+ 	* rust/compile/func4.rs: Likewise.
+ 	* rust/compile/func5.rs: Likewise.
+ 	* rust/compile/functions_without_body.rs: Likewise.
+ 	* rust/compile/gat1.rs: Likewise.
+ 	* rust/compile/generic-default1.rs: Likewise.
+ 	* rust/compile/generic_auto_trait.rs: Likewise.
+ 	* rust/compile/generics1.rs: Likewise.
+ 	* rust/compile/generics10.rs: Likewise.
+ 	* rust/compile/generics11.rs: Likewise.
+ 	* rust/compile/generics12.rs: Likewise.
+ 	* rust/compile/generics13.rs: Likewise.
+ 	* rust/compile/generics14.rs: Likewise.
+ 	* rust/compile/generics2.rs: Likewise.
+ 	* rust/compile/generics3.rs: Likewise.
+ 	* rust/compile/generics4.rs: Likewise.
+ 	* rust/compile/generics5.rs: Likewise.
+ 	* rust/compile/generics6.rs: Likewise.
+ 	* rust/compile/generics7.rs: Likewise.
+ 	* rust/compile/generics8.rs: Likewise.
+ 	* rust/compile/generics9.rs: Likewise.
+ 	* rust/compile/glob_import_enum.rs: Likewise.
+ 	* rust/compile/global-path-array.rs: Likewise.
+ 	* rust/compile/if-without-else.rs: Likewise.
+ 	* rust/compile/if_let_expr.rs: Likewise.
+ 	* rust/compile/if_let_expr_simple.rs: Likewise.
+ 	* rust/compile/iflet.rs: Likewise.
+ 	* rust/compile/impl_fnptr.rs: Likewise.
+ 	* rust/compile/impl_trait_diag.rs: Likewise.
+ 	* rust/compile/impl_trait_generic_arg.rs: Likewise.
+ 	* rust/compile/implicit_returns_err1.rs: Likewise.
+ 	* rust/compile/implicit_returns_err2.rs: Likewise.
+ 	* rust/compile/implicit_returns_err3.rs: Likewise.
+ 	* rust/compile/implicit_returns_err4.rs: Likewise.
+ 	* rust/compile/import_wildcards.rs: Likewise.
+ 	* rust/compile/include_empty.rs: Likewise.
+ 	* rust/compile/infer-crate-name.rs: Likewise.
+ 	* rust/compile/inline_1.rs: Likewise.
+ 	* rust/compile/inline_2.rs: Likewise.
+ 	* rust/compile/inline_asm_compile_nop.rs: Likewise.
+ 	* rust/compile/inline_asm_faulty_clobber.rs: Likewise.
+ 	* rust/compile/inline_asm_ident_first.rs: Likewise.
+ 	* rust/compile/inline_asm_illegal_operands.rs: Likewise.
+ 	* rust/compile/inline_asm_illegal_options.rs: Likewise.
+ 	* rust/compile/inline_asm_legal_options.rs: Likewise.
+ 	* rust/compile/inline_asm_nop.rs: Likewise.
+ 	* rust/compile/inline_asm_outside_unsafe.rs: Likewise.
+ 	* rust/compile/inline_asm_parse_operand.rs: Likewise.
+ 	* rust/compile/inline_asm_parse_output_operand.rs: Likewise.
+ 	* rust/compile/inline_asm_typecheck.rs: Likewise.
+ 	* rust/compile/invalid_label_name.rs: Likewise.
+ 	* rust/compile/invalid_variadics.rs: Likewise.
+ 	* rust/compile/issue-1005.rs: Likewise.
+ 	* rust/compile/issue-1006.rs: Likewise.
+ 	* rust/compile/issue-1019.rs: Likewise.
+ 	* rust/compile/issue-1023.rs: Likewise.
+ 	* rust/compile/issue-1031.rs: Likewise.
+ 	* rust/compile/issue-1034.rs: Likewise.
+ 	* rust/compile/issue-1048.rs: Likewise.
+ 	* rust/compile/issue-1073.rs: Likewise.
+ 	* rust/compile/issue-1081.rs: Likewise.
+ 	* rust/compile/issue-1089.rs: Likewise.
+ 	* rust/compile/issue-1089/test_mod.rs: Likewise.
+ 	* rust/compile/issue-1128.rs: Likewise.
+ 	* rust/compile/issue-1129-1.rs: Likewise.
+ 	* rust/compile/issue-1129-2.rs: Likewise.
+ 	* rust/compile/issue-1130.rs: Likewise.
+ 	* rust/compile/issue-1131.rs: Likewise.
+ 	* rust/compile/issue-1152.rs: Likewise.
+ 	* rust/compile/issue-1165.rs: Likewise.
+ 	* rust/compile/issue-1173.rs: Likewise.
+ 	* rust/compile/issue-1210.rs: Likewise.
+ 	* rust/compile/issue-1226.rs: Likewise.
+ 	* rust/compile/issue-1234.rs: Likewise.
+ 	* rust/compile/issue-1235.rs: Likewise.
+ 	* rust/compile/issue-1237.rs: Likewise.
+ 	* rust/compile/issue-1251.rs: Likewise.
+ 	* rust/compile/issue-1271.rs: Likewise.
+ 	* rust/compile/issue-1272.rs: Likewise.
+ 	* rust/compile/issue-1289.rs: Likewise.
+ 	* rust/compile/issue-1323-1.rs: Likewise.
+ 	* rust/compile/issue-1323-2.rs: Likewise.
+ 	* rust/compile/issue-1361.rs: Likewise.
+ 	* rust/compile/issue-1383.rs: Likewise.
+ 	* rust/compile/issue-1393.rs: Likewise.
+ 	* rust/compile/issue-1422.rs: Likewise.
+ 	* rust/compile/issue-1446.rs: Likewise.
+ 	* rust/compile/issue-1447.rs: Likewise.
+ 	* rust/compile/issue-1483.rs: Likewise.
+ 	* rust/compile/issue-1485.rs: Likewise.
+ 	* rust/compile/issue-1487.rs: Likewise.
+ 	* rust/compile/issue-1524.rs: Likewise.
+ 	* rust/compile/issue-1525.rs: Likewise.
+ 	* rust/compile/issue-1589.rs: Likewise.
+ 	* rust/compile/issue-1725-1.rs: Likewise.
+ 	* rust/compile/issue-1725-2.rs: Likewise.
+ 	* rust/compile/issue-1773.rs: Likewise.
+ 	* rust/compile/issue-1786.rs: Likewise.
+ 	* rust/compile/issue-1807.rs: Likewise.
+ 	* rust/compile/issue-1813.rs: Likewise.
+ 	* rust/compile/issue-1830_bytes.rs: Likewise.
+ 	* rust/compile/issue-1830_str.rs: Likewise.
+ 	* rust/compile/issue-1893.rs: Likewise.
+ 	* rust/compile/issue-1901.rs: Likewise.
+ 	* rust/compile/issue-1930.rs: Likewise.
+ 	* rust/compile/issue-1981.rs: Likewise.
+ 	* rust/compile/issue-2015.rs: Likewise.
+ 	* rust/compile/issue-2019-1.rs: Likewise.
+ 	* rust/compile/issue-2019-2.rs: Likewise.
+ 	* rust/compile/issue-2019-3.rs: Likewise.
+ 	* rust/compile/issue-2029.rs: Likewise.
+ 	* rust/compile/issue-2035.rs: Likewise.
+ 	* rust/compile/issue-2036.rs: Likewise.
+ 	* rust/compile/issue-2037.rs: Likewise.
+ 	* rust/compile/issue-2039.rs: Likewise.
+ 	* rust/compile/issue-2040.rs: Likewise.
+ 	* rust/compile/issue-2042.rs: Likewise.
+ 	* rust/compile/issue-2043.rs: Likewise.
+ 	* rust/compile/issue-2070.rs: Likewise.
+ 	* rust/compile/issue-2105.rs: Likewise.
+ 	* rust/compile/issue-2106.rs: Likewise.
+ 	* rust/compile/issue-2125.rs: Likewise.
+ 	* rust/compile/issue-2135.rs: Likewise.
+ 	* rust/compile/issue-2136-1.rs: Likewise.
+ 	* rust/compile/issue-2136-2.rs: Likewise.
+ 	* rust/compile/issue-2139.rs: Likewise.
+ 	* rust/compile/issue-2142.rs: Likewise.
+ 	* rust/compile/issue-2165.rs: Likewise.
+ 	* rust/compile/issue-2166.rs: Likewise.
+ 	* rust/compile/issue-2178.rs: Likewise.
+ 	* rust/compile/issue-2187.rs: Likewise.
+ 	* rust/compile/issue-2188.rs: Likewise.
+ 	* rust/compile/issue-2189.rs: Likewise.
+ 	* rust/compile/issue-2190-1.rs: Likewise.
+ 	* rust/compile/issue-2190-2.rs: Likewise.
+ 	* rust/compile/issue-2195.rs: Likewise.
+ 	* rust/compile/issue-2203.rs: Likewise.
+ 	* rust/compile/issue-2207.rs: Likewise.
+ 	* rust/compile/issue-2225.rs: Likewise.
+ 	* rust/compile/issue-2238.rs: Likewise.
+ 	* rust/compile/issue-2304.rs: Likewise.
+ 	* rust/compile/issue-2323.rs: Likewise.
+ 	* rust/compile/issue-2324-1.rs: Likewise.
+ 	* rust/compile/issue-2324-2.rs: Likewise.
+ 	* rust/compile/issue-2330.rs: Likewise.
+ 	* rust/compile/issue-2369.rs: Likewise.
+ 	* rust/compile/issue-2375.rs: Likewise.
+ 	* rust/compile/issue-2391.rs: Likewise.
+ 	* rust/compile/issue-2394.rs: Likewise.
+ 	* rust/compile/issue-2421_str.rs: Likewise.
+ 	* rust/compile/issue-2423.rs: Likewise.
+ 	* rust/compile/issue-2431.rs: Likewise.
+ 	* rust/compile/issue-2477.rs: Likewise.
+ 	* rust/compile/issue-2478.rs: Likewise.
+ 	* rust/compile/issue-2479.rs: Likewise.
+ 	* rust/compile/issue-2499.rs: Likewise.
+ 	* rust/compile/issue-2514.rs: Likewise.
+ 	* rust/compile/issue-2567-1.rs: Likewise.
+ 	* rust/compile/issue-2567-2.rs: Likewise.
+ 	* rust/compile/issue-2567-3.rs: Likewise.
+ 	* rust/compile/issue-2645.rs: Likewise.
+ 	* rust/compile/issue-2650-1.rs: Likewise.
+ 	* rust/compile/issue-2650-2.rs: Likewise.
+ 	* rust/compile/issue-266.rs: Likewise.
+ 	* rust/compile/issue-2665.rs: Likewise.
+ 	* rust/compile/issue-2680.rs: Likewise.
+ 	* rust/compile/issue-2709.rs: Likewise.
+ 	* rust/compile/issue-2723-1.rs: Likewise.
+ 	* rust/compile/issue-2723-2.rs: Likewise.
+ 	* rust/compile/issue-2725.rs: Likewise.
+ 	* rust/compile/issue-2747.rs: Likewise.
+ 	* rust/compile/issue-2767.rs: Likewise.
+ 	* rust/compile/issue-2772-1.rs: Likewise.
+ 	* rust/compile/issue-2772-2.rs: Likewise.
+ 	* rust/compile/issue-2775.rs: Likewise.
+ 	* rust/compile/issue-2782.rs: Likewise.
+ 	* rust/compile/issue-2785.rs: Likewise.
+ 	* rust/compile/issue-2788.rs: Likewise.
+ 	* rust/compile/issue-2812.rs: Likewise.
+ 	* rust/compile/issue-2847-b.rs: Likewise.
+ 	* rust/compile/issue-2847.rs: Likewise.
+ 	* rust/compile/issue-2850.rs: Likewise.
+ 	* rust/compile/issue-2905-1.rs: Likewise.
+ 	* rust/compile/issue-2905-2.rs: Likewise.
+ 	* rust/compile/issue-2906.rs: Likewise.
+ 	* rust/compile/issue-2907.rs: Likewise.
+ 	* rust/compile/issue-2951.rs: Likewise.
+ 	* rust/compile/issue-2953-1.rs: Likewise.
+ 	* rust/compile/issue-2953-2.rs: Likewise.
+ 	* rust/compile/issue-2954.rs: Likewise.
+ 	* rust/compile/issue-2987.rs: Likewise.
+ 	* rust/compile/issue-3009.rs: Likewise.
+ 	* rust/compile/issue-3022.rs: Likewise.
+ 	* rust/compile/issue-3030.rs: Likewise.
+ 	* rust/compile/issue-3032-1.rs: Likewise.
+ 	* rust/compile/issue-3032-2.rs: Likewise.
+ 	* rust/compile/issue-3033.rs: Likewise.
+ 	* rust/compile/issue-3035.rs: Likewise.
+ 	* rust/compile/issue-3036.rs: Likewise.
+ 	* rust/compile/issue-3045-1.rs: Likewise.
+ 	* rust/compile/issue-3045-2.rs: Likewise.
+ 	* rust/compile/issue-3046.rs: Likewise.
+ 	* rust/compile/issue-3082.rs: Likewise.
+ 	* rust/compile/issue-3139-1.rs: Likewise.
+ 	* rust/compile/issue-3139-2.rs: Likewise.
+ 	* rust/compile/issue-3139-3.rs: Likewise.
+ 	* rust/compile/issue-3140.rs: Likewise.
+ 	* rust/compile/issue-3141.rs: Likewise.
+ 	* rust/compile/issue-3144.rs: Likewise.
+ 	* rust/compile/issue-3174.rs: Likewise.
+ 	* rust/compile/issue-3231.rs: Likewise.
+ 	* rust/compile/issue-3242.rs: Likewise.
+ 	* rust/compile/issue-3261.rs: Likewise.
+ 	* rust/compile/issue-3304.rs: Likewise.
+ 	* rust/compile/issue-3315-1.rs: Likewise.
+ 	* rust/compile/issue-3315-2.rs: Likewise.
+ 	* rust/compile/issue-3350.rs: Likewise.
+ 	* rust/compile/issue-3382.rs: Likewise.
+ 	* rust/compile/issue-3402-2.rs: Likewise.
+ 	* rust/compile/issue-3454.rs: Likewise.
+ 	* rust/compile/issue-3524.rs: Likewise.
+ 	* rust/compile/issue-3525.rs: Likewise.
+ 	* rust/compile/issue-3530-1.rs: Likewise.
+ 	* rust/compile/issue-3530-2.rs: Likewise.
+ 	* rust/compile/issue-3538.rs: Likewise.
+ 	* rust/compile/issue-3541-1.rs: Likewise.
+ 	* rust/compile/issue-3541-2.rs: Likewise.
+ 	* rust/compile/issue-3546.rs: Likewise.
+ 	* rust/compile/issue-3549.rs: Likewise.
+ 	* rust/compile/issue-3551.rs: Likewise.
+ 	* rust/compile/issue-3552.rs: Likewise.
+ 	* rust/compile/issue-3553.rs: Likewise.
+ 	* rust/compile/issue-3554-1.rs: Likewise.
+ 	* rust/compile/issue-3554-2.rs: Likewise.
+ 	* rust/compile/issue-3556.rs: Likewise.
+ 	* rust/compile/issue-3563.rs: Likewise.
+ 	* rust/compile/issue-3566-1.rs: Likewise.
+ 	* rust/compile/issue-3566-2.rs: Likewise.
+ 	* rust/compile/issue-3567.rs: Likewise.
+ 	* rust/compile/issue-3568.rs: Likewise.
+ 	* rust/compile/issue-3581-1.rs: Likewise.
+ 	* rust/compile/issue-3581-2.rs: Likewise.
+ 	* rust/compile/issue-3588.rs: Likewise.
+ 	* rust/compile/issue-3592.rs: Likewise.
+ 	* rust/compile/issue-3599.rs: Likewise.
+ 	* rust/compile/issue-3605.rs: Likewise.
+ 	* rust/compile/issue-3606.rs: Likewise.
+ 	* rust/compile/issue-3612.rs: Likewise.
+ 	* rust/compile/issue-3613.rs: Likewise.
+ 	* rust/compile/issue-3614.rs: Likewise.
+ 	* rust/compile/issue-3615.rs: Likewise.
+ 	* rust/compile/issue-3617.rs: Likewise.
+ 	* rust/compile/issue-3618.rs: Likewise.
+ 	* rust/compile/issue-3625.rs: Likewise.
+ 	* rust/compile/issue-3628.rs: Likewise.
+ 	* rust/compile/issue-3642.rs: Likewise.
+ 	* rust/compile/issue-3643.rs: Likewise.
+ 	* rust/compile/issue-3645.rs: Likewise.
+ 	* rust/compile/issue-3646.rs: Likewise.
+ 	* rust/compile/issue-3647.rs: Likewise.
+ 	* rust/compile/issue-3648.rs: Likewise.
+ 	* rust/compile/issue-3649.rs: Likewise.
+ 	* rust/compile/issue-3652.rs: Likewise.
+ 	* rust/compile/issue-3654.rs: Likewise.
+ 	* rust/compile/issue-3656.rs: Likewise.
+ 	* rust/compile/issue-3657.rs: Likewise.
+ 	* rust/compile/issue-3659.rs: Likewise.
+ 	* rust/compile/issue-3660.rs: Likewise.
+ 	* rust/compile/issue-3661.rs: Likewise.
+ 	* rust/compile/issue-3662.rs: Likewise.
+ 	* rust/compile/issue-3663.rs: Likewise.
+ 	* rust/compile/issue-3664.rs: Likewise.
+ 	* rust/compile/issue-3665.rs: Likewise.
+ 	* rust/compile/issue-3667.rs: Likewise.
+ 	* rust/compile/issue-3671.rs: Likewise.
+ 	* rust/compile/issue-3711.rs: Likewise.
+ 	* rust/compile/issue-3726.rs: Likewise.
+ 	* rust/compile/issue-3836.rs: Likewise.
+ 	* rust/compile/issue-3874.rs: Likewise.
+ 	* rust/compile/issue-3876.rs: Likewise.
+ 	* rust/compile/issue-3885.rs: Likewise.
+ 	* rust/compile/issue-3898.rs: Likewise.
+ 	* rust/compile/issue-3904.rs: Likewise.
+ 	* rust/compile/issue-3915.rs: Likewise.
+ 	* rust/compile/issue-3916.rs: Likewise.
+ 	* rust/compile/issue-3922.rs: Likewise.
+ 	* rust/compile/issue-3924.rs: Likewise.
+ 	* rust/compile/issue-3928.rs: Likewise.
+ 	* rust/compile/issue-3929-1.rs: Likewise.
+ 	* rust/compile/issue-3929-2.rs: Likewise.
+ 	* rust/compile/issue-3930.rs: Likewise.
+ 	* rust/compile/issue-3947.rs: Likewise.
+ 	* rust/compile/issue-3958.rs: Likewise.
+ 	* rust/compile/issue-3960.rs: Likewise.
+ 	* rust/compile/issue-3965-1.rs: Likewise.
+ 	* rust/compile/issue-3965-2.rs: Likewise.
+ 	* rust/compile/issue-3966.rs: Likewise.
+ 	* rust/compile/issue-3969.rs: Likewise.
+ 	* rust/compile/issue-3971.rs: Likewise.
+ 	* rust/compile/issue-3974.rs: Likewise.
+ 	* rust/compile/issue-3977.rs: Likewise.
+ 	* rust/compile/issue-3978.rs: Likewise.
+ 	* rust/compile/issue-4006.rs: Likewise.
+ 	* rust/compile/issue-402.rs: Likewise.
+ 	* rust/compile/issue-407-2.rs: Likewise.
+ 	* rust/compile/issue-407.rs: Likewise.
+ 	* rust/compile/issue-4090-1.rs: Likewise.
+ 	* rust/compile/issue-4090-2.rs: Likewise.
+ 	* rust/compile/issue-4139.rs: Likewise.
+ 	* rust/compile/issue-4140-1.rs: Likewise.
+ 	* rust/compile/issue-4140-2.rs: Likewise.
+ 	* rust/compile/issue-4145.rs: Likewise.
+ 	* rust/compile/issue-4146.rs: Likewise.
+ 	* rust/compile/issue-4148.rs: Likewise.
+ 	* rust/compile/issue-4155.rs: Likewise.
+ 	* rust/compile/issue-4162.rs: Likewise.
+ 	* rust/compile/issue-4163-2.rs: Likewise.
+ 	* rust/compile/issue-4163.rs: Likewise.
+ 	* rust/compile/issue-4165.rs: Likewise.
+ 	* rust/compile/issue-4166.rs: Likewise.
+ 	* rust/compile/issue-4168.rs: Likewise.
+ 	* rust/compile/issue-4188.rs: Likewise.
+ 	* rust/compile/issue-4212.rs: Likewise.
+ 	* rust/compile/issue-4213.rs: Likewise.
+ 	* rust/compile/issue-4219.rs: Likewise.
+ 	* rust/compile/issue-4222.rs: Likewise.
+ 	* rust/compile/issue-4226.rs: Likewise.
+ 	* rust/compile/issue-4231.rs: Likewise.
+ 	* rust/compile/issue-4232.rs: Likewise.
+ 	* rust/compile/issue-4234.rs: Likewise.
+ 	* rust/compile/issue-4235.rs: Likewise.
+ 	* rust/compile/issue-4242.rs: Likewise.
+ 	* rust/compile/issue-4245.rs: Likewise.
+ 	* rust/compile/issue-4260_0.rs: Likewise.
+ 	* rust/compile/issue-4261.rs: Likewise.
+ 	* rust/compile/issue-4262.rs: Likewise.
+ 	* rust/compile/issue-4267.rs: Likewise.
+ 	* rust/compile/issue-4301.rs: Likewise.
+ 	* rust/compile/issue-4375-ice-regression.rs: Likewise.
+ 	* rust/compile/issue-4375-multiple-errors.rs: Likewise.
+ 	* rust/compile/issue-4375-tuple-pattern.rs: Likewise.
+ 	* rust/compile/issue-4387.rs: Likewise.
+ 	* rust/compile/issue-4388.rs: Likewise.
+ 	* rust/compile/issue-557.rs: Likewise.
+ 	* rust/compile/issue-635-1.rs: Likewise.
+ 	* rust/compile/issue-635-2.rs: Likewise.
+ 	* rust/compile/issue-850.rs: Likewise.
+ 	* rust/compile/issue-852.rs: Likewise.
+ 	* rust/compile/issue-855.rs: Likewise.
+ 	* rust/compile/issue-867.rs: Likewise.
+ 	* rust/compile/issue-925.rs: Likewise.
+ 	* rust/compile/iterators1.rs: Likewise.
+ 	* rust/compile/lang-impl.rs: Likewise.
+ 	* rust/compile/lang_feature_gate.rs: Likewise.
+ 	* rust/compile/let_alt.rs: Likewise.
+ 	* rust/compile/lifetime_name_validation.rs: Likewise.
+ 	* rust/compile/link_name-malformed.rs: Likewise.
+ 	* rust/compile/link_section-malformed.rs: Likewise.
+ 	* rust/compile/lookup_err1.rs: Likewise.
+ 	* rust/compile/loop_constant_context.rs: Likewise.
+ 	* rust/compile/macros/builtin/builtin_macro.exp: Likewise.
+ 	* rust/compile/macros/builtin/compile_error.rs: Likewise.
+ 	* rust/compile/macros/builtin/concat.rs: Likewise.
+ 	* rust/compile/macros/builtin/eager1.rs: Likewise.
+ 	* rust/compile/macros/builtin/eager2.rs: Likewise.
+ 	* rust/compile/macros/builtin/eager3.rs: Likewise.
+ 	* rust/compile/macros/builtin/env.rs: Likewise.
+ 	* rust/compile/macros/builtin/include1.rs: Likewise.
+ 	* rust/compile/macros/builtin/include2.rs: Likewise.
+ 	* rust/compile/macros/builtin/include3.rs: Likewise.
+ 	* rust/compile/macros/builtin/include4.rs: Likewise.
+ 	* rust/compile/macros/builtin/include_bytes.rs: Likewise.
+ 	* rust/compile/macros/builtin/include_bytes_location_info.rs: Likewise.
+ 	* rust/compile/macros/builtin/include_str.rs: Likewise.
+ 	* rust/compile/macros/builtin/include_str_location_info.rs: Likewise.
+ 	* rust/compile/macros/builtin/invalid_utf8: Likewise.
+ 	* rust/compile/macros/builtin/not_found.rs: Likewise.
+ 	* rust/compile/macros/builtin/option_env1.rs: Likewise.
+ 	* rust/compile/macros/builtin/option_env2.rs: Likewise.
+ 	* rust/compile/macros/builtin/option_env3.rs: Likewise.
+ 	* rust/compile/macros/builtin/recurse2.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro-delim.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro-duplicate-binding.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro-expand-module.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro-issue1053-2.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro-issue1053.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro-issue1224.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro-issue1233.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro-issue1395-2.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro-issue1395.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro-issue1400-2.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro-issue1400.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro-issue2092.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro-issue2192.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro-issue2194.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro-issue2229.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro-issue2264.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro-issue2268.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro-issue2273.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro-issue2653.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro-issue2983_2984.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro-issue3608.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro-issue3693.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro-issue3708.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro-issue3709-1.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro-issue3709-2.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro-issue4054.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro1.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro10.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro11.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro12.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro13.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro14.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro15.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro16.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro17.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro18.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro19.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro2.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro20.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro21.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro22.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro23.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro25.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro26.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro27.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro28.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro29.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro3.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro30.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro31.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro32.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro33.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro34.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro35.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro36.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro37.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro38.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro39.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro4.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro40.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro41.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro42.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro43.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro44.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro45.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro46.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro47.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro48.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro49.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro5.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro50.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro51.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro52.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro53.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro54.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro55.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro56.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro57.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro58.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro6.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro7.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro8.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro9.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro_call_statement.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro_export_1.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro_return.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro_rules_macro_rules.rs: Likewise.
+ 	* rust/compile/macros/mbe/macro_use1.rs: Likewise.
+ 	* rust/compile/macros/mbe/mbe_macro.exp: Likewise.
+ 	* rust/compile/macros/mbe/meta-param.rs: Likewise.
+ 	* rust/compile/macros/proc/attribute_crate_type.rs: Likewise.
+ 	* rust/compile/macros/proc/attribute_non_function.rs: Likewise.
+ 	* rust/compile/macros/proc/attribute_non_root_function.rs: Likewise.
+ 	* rust/compile/macros/proc/attribute_non_root_method.rs: Likewise.
+ 	* rust/compile/macros/proc/attribute_non_root_module.rs: Likewise.
+ 	* rust/compile/macros/proc/attribute_private.rs: Likewise.
+ 	* rust/compile/macros/proc/crate_type.rs: Likewise.
+ 	* rust/compile/macros/proc/derive_crate_type.rs: Likewise.
+ 	* rust/compile/macros/proc/derive_malformed.rs: Likewise.
+ 	* rust/compile/macros/proc/derive_non_function.rs: Likewise.
+ 	* rust/compile/macros/proc/derive_non_root_function.rs: Likewise.
+ 	* rust/compile/macros/proc/derive_non_root_module.rs: Likewise.
+ 	* rust/compile/macros/proc/derive_private.rs: Likewise.
+ 	* rust/compile/macros/proc/non_function.rs: Likewise.
+ 	* rust/compile/macros/proc/non_root_function.rs: Likewise.
+ 	* rust/compile/macros/proc/non_root_method.rs: Likewise.
+ 	* rust/compile/macros/proc/non_root_module.rs: Likewise.
+ 	* rust/compile/macros/proc/non_root_trait_method.rs: Likewise.
+ 	* rust/compile/macros/proc/private.rs: Likewise.
+ 	* rust/compile/macros/proc/proc_macro.exp: Likewise.
+ 	* rust/compile/macros/proc/pub_function.rs: Likewise.
+ 	* rust/compile/macros/proc/pub_module.rs: Likewise.
+ 	* rust/compile/match-identifierpattern-enum.rs: Likewise.
+ 	* rust/compile/match-identifierpattern.rs: Likewise.
+ 	* rust/compile/match-never-ltype.rs: Likewise.
+ 	* rust/compile/match-never-rtype.rs: Likewise.
+ 	* rust/compile/match-restpattern-tuple-1.rs: Likewise.
+ 	* rust/compile/match-restpattern-tuple-2.rs: Likewise.
+ 	* rust/compile/match-slicepattern-array.rs: Likewise.
+ 	* rust/compile/match-slicepattern-slice.rs: Likewise.
+ 	* rust/compile/match-struct-path.rs: Likewise.
+ 	* rust/compile/match-structpattern-tuplefield-err.rs: Likewise.
+ 	* rust/compile/match-structpattern-tuplefield.rs: Likewise.
+ 	* rust/compile/match-tuplestructpattern-err.rs: Likewise.
+ 	* rust/compile/match-tuplestructpattern-non-variant.rs: Likewise.
+ 	* rust/compile/match-tuplestructpattern-rest.rs: Likewise.
+ 	* rust/compile/match-tuplestructpattern.rs: Likewise.
+ 	* rust/compile/match1.rs: Likewise.
+ 	* rust/compile/match2.rs: Likewise.
+ 	* rust/compile/match3.rs: Likewise.
+ 	* rust/compile/match4.rs: Likewise.
+ 	* rust/compile/match5.rs: Likewise.
+ 	* rust/compile/match6.rs: Likewise.
+ 	* rust/compile/match7.rs: Likewise.
+ 	* rust/compile/match8.rs: Likewise.
+ 	* rust/compile/match9.rs: Likewise.
+ 	* rust/compile/match_break.rs: Likewise.
+ 	* rust/compile/may_dangle.rs: Likewise.
+ 	* rust/compile/method1.rs: Likewise.
+ 	* rust/compile/method2.rs: Likewise.
+ 	* rust/compile/min_specialization1.rs: Likewise.
+ 	* rust/compile/mismatch-crate-name.rs: Likewise.
+ 	* rust/compile/mismatched-types.rs: Likewise.
+ 	* rust/compile/missing_closing_paren.rs: Likewise.
+ 	* rust/compile/missing_constructor_fields.rs: Likewise.
+ 	* rust/compile/missing_return1.rs: Likewise.
+ 	* rust/compile/mod_missing_middle.rs: Likewise.
+ 	* rust/compile/mod_missing_middle/missing_middle/both_path.rs: Likewise.
+ 	* rust/compile/mod_missing_middle/missing_middle/explicit.not.rs: Likewise.
+ 	* rust/compile/mod_missing_middle/missing_middle/explicit.not/other.rs: Likewise.
+ 	* rust/compile/mod_missing_middle/missing_middle/inner_path.rs: Likewise.
+ 	* rust/compile/mod_missing_middle/missing_middle/outer_path.rs: Likewise.
+ 	* rust/compile/mod_missing_middle/missing_middle/sub/mod.rs: Likewise.
+ 	* rust/compile/multi_reference_type.rs: Likewise.
+ 	* rust/compile/multiline-string.rs: Likewise.
+ 	* rust/compile/multiple_bindings1.rs: Likewise.
+ 	* rust/compile/multiple_bindings2.rs: Likewise.
+ 	* rust/compile/mutability_checks1.rs: Likewise.
+ 	* rust/compile/name_resolution1.rs: Likewise.
+ 	* rust/compile/name_resolution10.rs: Likewise.
+ 	* rust/compile/name_resolution11.rs: Likewise.
+ 	* rust/compile/name_resolution12.rs: Likewise.
+ 	* rust/compile/name_resolution13.rs: Likewise.
+ 	* rust/compile/name_resolution14.rs: Likewise.
+ 	* rust/compile/name_resolution15.rs: Likewise.
+ 	* rust/compile/name_resolution16.rs: Likewise.
+ 	* rust/compile/name_resolution17.rs: Likewise.
+ 	* rust/compile/name_resolution18.rs: Likewise.
+ 	* rust/compile/name_resolution19.rs: Likewise.
+ 	* rust/compile/name_resolution2.rs: Likewise.
+ 	* rust/compile/name_resolution20.rs: Likewise.
+ 	* rust/compile/name_resolution22.rs: Likewise.
+ 	* rust/compile/name_resolution23.rs: Likewise.
+ 	* rust/compile/name_resolution24.rs: Likewise.
+ 	* rust/compile/name_resolution25.rs: Likewise.
+ 	* rust/compile/name_resolution3.rs: Likewise.
+ 	* rust/compile/name_resolution4.rs: Likewise.
+ 	* rust/compile/name_resolution5.rs: Likewise.
+ 	* rust/compile/name_resolution6.rs: Likewise.
+ 	* rust/compile/name_resolution7.rs: Likewise.
+ 	* rust/compile/name_resolution8.rs: Likewise.
+ 	* rust/compile/name_resolution9.rs: Likewise.
+ 	* rust/compile/negative_impls.rs: Likewise.
+ 	* rust/compile/negative_impls_2.rs: Likewise.
+ 	* rust/compile/nested_generic.rs: Likewise.
+ 	* rust/compile/nested_macro_definition.rs: Likewise.
+ 	* rust/compile/nested_macro_use1.rs: Likewise.
+ 	* rust/compile/nested_macro_use2.rs: Likewise.
+ 	* rust/compile/nested_macro_use3.rs: Likewise.
+ 	* rust/compile/never_type1.rs: Likewise.
+ 	* rust/compile/no-crate-level-outer-attr.rs: Likewise.
+ 	* rust/compile/no_mangle-malformed.rs: Likewise.
+ 	* rust/compile/non-snake-case_0.rs: Likewise.
+ 	* rust/compile/non-upper-case-globals_0.rs: Likewise.
+ 	* rust/compile/non_foreign_variadic_function.rs: Likewise.
+ 	* rust/compile/non_member_const.rs: Likewise.
+ 	* rust/compile/nonexistent-field.rs: Likewise.
+ 	* rust/compile/not_a_float_literal_tuple_index.rs: Likewise.
+ 	* rust/compile/not_find_value_in_scope.rs: Likewise.
+ 	* rust/compile/not_raw_ref_op.rs: Likewise.
+ 	* rust/compile/offset_of1.rs: Likewise.
+ 	* rust/compile/offset_of2.rs: Likewise.
+ 	* rust/compile/parse_associated_type_as_generic_arg.rs: Likewise.
+ 	* rust/compile/parse_associated_type_as_generic_arg2.rs: Likewise.
+ 	* rust/compile/parse_associated_type_as_generic_arg3.rs: Likewise.
+ 	* rust/compile/parse_closure_bind.rs: Likewise.
+ 	* rust/compile/parse_complex_generic_application.rs: Likewise.
+ 	* rust/compile/parse_complex_generic_application2.rs: Likewise.
+ 	* rust/compile/parse_empty_tuple_pattern.rs: Likewise.
+ 	* rust/compile/parse_float_dot.rs: Likewise.
+ 	* rust/compile/parse_generic_path_expr.rs: Likewise.
+ 	* rust/compile/parse_global_path_generic.rs: Likewise.
+ 	* rust/compile/parse_invalid_specialization.rs: Likewise.
+ 	* rust/compile/parse_item_default_macro.rs: Likewise.
+ 	* rust/compile/parse_pub_unit_type.rs: Likewise.
+ 	* rust/compile/parse_range.rs: Likewise.
+ 	* rust/compile/parse_simple_path_fail_1.rs: Likewise.
+ 	* rust/compile/parse_simple_path_fail_2.rs: Likewise.
+ 	* rust/compile/parse_specialization.rs: Likewise.
+ 	* rust/compile/parse_variadic_function.rs: Likewise.
+ 	* rust/compile/path_as_generic_arg.rs: Likewise.
+ 	* rust/compile/pattern-or.rs: Likewise.
+ 	* rust/compile/pattern-struct.rs: Likewise.
+ 	* rust/compile/pattern_variadic.rs: Likewise.
+ 	* rust/compile/prelude_import.rs: Likewise.
+ 	* rust/compile/primitive-import.rs: Likewise.
+ 	* rust/compile/privacy1.rs: Likewise.
+ 	* rust/compile/privacy2.rs: Likewise.
+ 	* rust/compile/privacy3.rs: Likewise.
+ 	* rust/compile/privacy4.rs: Likewise.
+ 	* rust/compile/privacy5.rs: Likewise.
+ 	* rust/compile/privacy6.rs: Likewise.
+ 	* rust/compile/privacy7.rs: Likewise.
+ 	* rust/compile/privacy8.rs: Likewise.
+ 	* rust/compile/privacy9.rs: Likewise.
+ 	* rust/compile/ptr_int_cast.rs: Likewise.
+ 	* rust/compile/pub_restricted_1.rs: Likewise.
+ 	* rust/compile/pub_restricted_2.rs: Likewise.
+ 	* rust/compile/pub_restricted_3.rs: Likewise.
+ 	* rust/compile/range_from_expr_for_loop.rs: Likewise.
+ 	* rust/compile/raw-byte-string-loc.rs: Likewise.
+ 	* rust/compile/raw-string-loc.rs: Likewise.
+ 	* rust/compile/raw_identifiers_bad_keywords.rs: Likewise.
+ 	* rust/compile/raw_identifiers_underscore.rs: Likewise.
+ 	* rust/compile/raw_ref_op.rs: Likewise.
+ 	* rust/compile/raw_ref_op_feature_gate.rs: Likewise.
+ 	* rust/compile/raw_ref_op_invalid.rs: Likewise.
+ 	* rust/compile/redef_error1.rs: Likewise.
+ 	* rust/compile/redef_error2.rs: Likewise.
+ 	* rust/compile/redef_error3.rs: Likewise.
+ 	* rust/compile/redef_error4.rs: Likewise.
+ 	* rust/compile/redef_error5.rs: Likewise.
+ 	* rust/compile/redef_error6.rs: Likewise.
+ 	* rust/compile/redundant-semicolons_0.rs: Likewise.
+ 	* rust/compile/ref_pattern_fn_param1.rs: Likewise.
+ 	* rust/compile/ref_pattern_fn_param2.rs: Likewise.
+ 	* rust/compile/reference1.rs: Likewise.
+ 	* rust/compile/repeated_constructor_fields.rs: Likewise.
+ 	* rust/compile/rust-const-blog-issue.rs: Likewise.
+ 	* rust/compile/rust_abi.rs: Likewise.
+ 	* rust/compile/rustc_attr1.rs: Likewise.
+ 	* rust/compile/rustc_const_stable.rs: Likewise.
+ 	* rust/compile/rustc_const_unstable.rs: Likewise.
+ 	* rust/compile/same_field_name.rs: Likewise.
+ 	* rust/compile/self-in-impl.rs: Likewise.
+ 	* rust/compile/self-path1.rs: Likewise.
+ 	* rust/compile/self-path2.rs: Likewise.
+ 	* rust/compile/self_const_ptr.rs: Likewise.
+ 	* rust/compile/self_import_namespace.rs: Likewise.
+ 	* rust/compile/self_mut_ptr.rs: Likewise.
+ 	* rust/compile/self_ptr.rs: Likewise.
+ 	* rust/compile/shadow1.rs: Likewise.
+ 	* rust/compile/silly-order-bug.rs: Likewise.
+ 	* rust/compile/sizeof-stray-infer-var-bug.rs: Likewise.
+ 	* rust/compile/slice_rest_pattern.rs: Likewise.
+ 	* rust/compile/slicepattern-size-mismatch.rs: Likewise.
+ 	* rust/compile/specify-crate-name.rs: Likewise.
+ 	* rust/compile/static_item_0.rs: Likewise.
+ 	* rust/compile/static_var1.rs: Likewise.
+ 	* rust/compile/stmt_with_block_dot.rs: Likewise.
+ 	* rust/compile/stmt_with_block_err1.rs: Likewise.
+ 	* rust/compile/stringify.rs: Likewise.
+ 	* rust/compile/struct-expr-parse.rs: Likewise.
+ 	* rust/compile/struct_align1.rs: Likewise.
+ 	* rust/compile/struct_align2.rs: Likewise.
+ 	* rust/compile/struct_expr_field_attributes.rs: Likewise.
+ 	* rust/compile/struct_init1.rs: Likewise.
+ 	* rust/compile/struct_pack1.rs: Likewise.
+ 	* rust/compile/struct_pack2.rs: Likewise.
+ 	* rust/compile/structural-eq-peq.rs: Likewise.
+ 	* rust/compile/syntax-only.rs: Likewise.
+ 	* rust/compile/target_feature-malformed-4233.rs: Likewise.
+ 	* rust/compile/template_function_0.rs: Likewise.
+ 	* rust/compile/torture/all_doc_comment_line_blocks.rs: Likewise.
+ 	* rust/compile/torture/all_doc_comment_line_blocks_crlf.rs: Likewise.
+ 	* rust/compile/torture/alt_patterns1.rs: Likewise.
+ 	* rust/compile/torture/arithmetic_expressions1.rs: Likewise.
+ 	* rust/compile/torture/array_const_fold_1.rs: Likewise.
+ 	* rust/compile/torture/array_const_fold_2.rs: Likewise.
+ 	* rust/compile/torture/array_function.rs: Likewise.
+ 	* rust/compile/torture/array_type_infer.rs: Likewise.
+ 	* rust/compile/torture/array_zero_length.rs: Likewise.
+ 	* rust/compile/torture/arrays1.rs: Likewise.
+ 	* rust/compile/torture/arrays2.rs: Likewise.
+ 	* rust/compile/torture/arrays3.rs: Likewise.
+ 	* rust/compile/torture/arrays4.rs: Likewise.
+ 	* rust/compile/torture/arrays5.rs: Likewise.
+ 	* rust/compile/torture/arrays6.rs: Likewise.
+ 	* rust/compile/torture/arrays_index1.rs: Likewise.
+ 	* rust/compile/torture/arrays_index2.rs: Likewise.
+ 	* rust/compile/torture/arrays_index3.rs: Likewise.
+ 	* rust/compile/torture/as_bool_char.rs: Likewise.
+ 	* rust/compile/torture/associated_types1.rs: Likewise.
+ 	* rust/compile/torture/autoderef1.rs: Likewise.
+ 	* rust/compile/torture/block_expr1.rs: Likewise.
+ 	* rust/compile/torture/block_expr2.rs: Likewise.
+ 	* rust/compile/torture/block_expr3.rs: Likewise.
+ 	* rust/compile/torture/block_expr4.rs: Likewise.
+ 	* rust/compile/torture/block_expr5.rs: Likewise.
+ 	* rust/compile/torture/block_expr_parser_bug.rs: Likewise.
+ 	* rust/compile/torture/bom.rs: Likewise.
+ 	* rust/compile/torture/bom_comment.rs: Likewise.
+ 	* rust/compile/torture/bom_shebang.rs: Likewise.
+ 	* rust/compile/torture/bom_whitespace.rs: Likewise.
+ 	* rust/compile/torture/bools_eq.rs: Likewise.
+ 	* rust/compile/torture/borrow1.rs: Likewise.
+ 	* rust/compile/torture/borrow_function.rs: Likewise.
+ 	* rust/compile/torture/break_function.rs: Likewise.
+ 	* rust/compile/torture/builtin_abort.rs: Likewise.
+ 	* rust/compile/torture/byte_char_str.rs: Likewise.
+ 	* rust/compile/torture/byte_str.rs: Likewise.
+ 	* rust/compile/torture/cast1.rs: Likewise.
+ 	* rust/compile/torture/cast2.rs: Likewise.
+ 	* rust/compile/torture/cast3.rs: Likewise.
+ 	* rust/compile/torture/cfg_attr.rs: Likewise.
+ 	* rust/compile/torture/char1.rs: Likewise.
+ 	* rust/compile/torture/check-doc-attr-string.rs: Likewise.
+ 	* rust/compile/torture/coercion1.rs: Likewise.
+ 	* rust/compile/torture/coercion2.rs: Likewise.
+ 	* rust/compile/torture/comparison_expr1.rs: Likewise.
+ 	* rust/compile/torture/compile.exp: Likewise.
+ 	* rust/compile/torture/compound_assignment_expr1.rs: Likewise.
+ 	* rust/compile/torture/conditional.rs: Likewise.
+ 	* rust/compile/torture/constant1.rs: Likewise.
+ 	* rust/compile/torture/constant2.rs: Likewise.
+ 	* rust/compile/torture/constant3.rs: Likewise.
+ 	* rust/compile/torture/deadcode1.rs: Likewise.
+ 	* rust/compile/torture/deadcode2.rs: Likewise.
+ 	* rust/compile/torture/deref1.rs: Likewise.
+ 	* rust/compile/torture/deref_function.rs: Likewise.
+ 	* rust/compile/torture/doc_comment.rs: Likewise.
+ 	* rust/compile/torture/enum1.rs: Likewise.
+ 	* rust/compile/torture/extern_mod1.rs: Likewise.
+ 	* rust/compile/torture/extern_mod1/modules/mod.rs: Likewise.
+ 	* rust/compile/torture/extern_mod2.rs: Likewise.
+ 	* rust/compile/torture/float1.rs: Likewise.
+ 	* rust/compile/torture/float_types.rs: Likewise.
+ 	* rust/compile/torture/forward_decl_1.rs: Likewise.
+ 	* rust/compile/torture/forward_decl_2.rs: Likewise.
+ 	* rust/compile/torture/forward_decl_3-unsafe.rs: Likewise.
+ 	* rust/compile/torture/forward_decl_3.rs: Likewise.
+ 	* rust/compile/torture/forward_decl_4.rs: Likewise.
+ 	* rust/compile/torture/forward_decl_5.rs: Likewise.
+ 	* rust/compile/torture/func1.rs: Likewise.
+ 	* rust/compile/torture/func2.rs: Likewise.
+ 	* rust/compile/torture/function_reference1.rs: Likewise.
+ 	* rust/compile/torture/function_reference2.rs: Likewise.
+ 	* rust/compile/torture/function_reference3.rs: Likewise.
+ 	* rust/compile/torture/function_reference4.rs: Likewise.
+ 	* rust/compile/torture/generics1.rs: Likewise.
+ 	* rust/compile/torture/generics10.rs: Likewise.
+ 	* rust/compile/torture/generics11.rs: Likewise.
+ 	* rust/compile/torture/generics12.rs: Likewise.
+ 	* rust/compile/torture/generics13.rs: Likewise.
+ 	* rust/compile/torture/generics14.rs: Likewise.
+ 	* rust/compile/torture/generics15.rs: Likewise.
+ 	* rust/compile/torture/generics16.rs: Likewise.
+ 	* rust/compile/torture/generics17.rs: Likewise.
+ 	* rust/compile/torture/generics18.rs: Likewise.
+ 	* rust/compile/torture/generics19.rs: Likewise.
+ 	* rust/compile/torture/generics2.rs: Likewise.
+ 	* rust/compile/torture/generics20.rs: Likewise.
+ 	* rust/compile/torture/generics21.rs: Likewise.
+ 	* rust/compile/torture/generics22.rs: Likewise.
+ 	* rust/compile/torture/generics23.rs: Likewise.
+ 	* rust/compile/torture/generics24.rs: Likewise.
+ 	* rust/compile/torture/generics25.rs: Likewise.
+ 	* rust/compile/torture/generics26.rs: Likewise.
+ 	* rust/compile/torture/generics27.rs: Likewise.
+ 	* rust/compile/torture/generics28.rs: Likewise.
+ 	* rust/compile/torture/generics29.rs: Likewise.
+ 	* rust/compile/torture/generics3.rs: Likewise.
+ 	* rust/compile/torture/generics30.rs: Likewise.
+ 	* rust/compile/torture/generics31.rs: Likewise.
+ 	* rust/compile/torture/generics32.rs: Likewise.
+ 	* rust/compile/torture/generics4.rs: Likewise.
+ 	* rust/compile/torture/generics5.rs: Likewise.
+ 	* rust/compile/torture/generics6.rs: Likewise.
+ 	* rust/compile/torture/generics7.rs: Likewise.
+ 	* rust/compile/torture/generics8.rs: Likewise.
+ 	* rust/compile/torture/generics9.rs: Likewise.
+ 	* rust/compile/torture/grouped_expr_function.rs: Likewise.
+ 	* rust/compile/torture/identifier-missing-impl-1.rs: Likewise.
+ 	* rust/compile/torture/if.rs: Likewise.
+ 	* rust/compile/torture/if_elif.rs: Likewise.
+ 	* rust/compile/torture/if_elif_else_expr1.rs: Likewise.
+ 	* rust/compile/torture/if_else.rs: Likewise.
+ 	* rust/compile/torture/ifunaryexpr.rs: Likewise.
+ 	* rust/compile/torture/impl_block1.rs: Likewise.
+ 	* rust/compile/torture/impl_block2.rs: Likewise.
+ 	* rust/compile/torture/impl_block3.rs: Likewise.
+ 	* rust/compile/torture/impl_block_unused.rs: Likewise.
+ 	* rust/compile/torture/implicit_returns1.rs: Likewise.
+ 	* rust/compile/torture/infer_type1.rs: Likewise.
+ 	* rust/compile/torture/inner_attributes.rs: Likewise.
+ 	* rust/compile/torture/integer_inference_var1.rs: Likewise.
+ 	* rust/compile/torture/integer_inference_var2.rs: Likewise.
+ 	* rust/compile/torture/integer_inference_var3.rs: Likewise.
+ 	* rust/compile/torture/integer_inference_var4.rs: Likewise.
+ 	* rust/compile/torture/integer_inference_var5.rs: Likewise.
+ 	* rust/compile/torture/integer_types.rs: Likewise.
+ 	* rust/compile/torture/intrinsics-2.rs: Likewise.
+ 	* rust/compile/torture/intrinsics-3.rs: Likewise.
+ 	* rust/compile/torture/intrinsics-4.rs: Likewise.
+ 	* rust/compile/torture/intrinsics-5.rs: Likewise.
+ 	* rust/compile/torture/intrinsics-6.rs: Likewise.
+ 	* rust/compile/torture/intrinsics-7.rs: Likewise.
+ 	* rust/compile/torture/intrinsics-8.rs: Likewise.
+ 	* rust/compile/torture/intrinsics-math.rs: Likewise.
+ 	* rust/compile/torture/isolated_cr_block_comment.rs: Likewise.
+ 	* rust/compile/torture/isolated_cr_line_comment.rs: Likewise.
+ 	* rust/compile/torture/issue-1024.rs: Likewise.
+ 	* rust/compile/torture/issue-1075.rs: Likewise.
+ 	* rust/compile/torture/issue-1432.rs: Likewise.
+ 	* rust/compile/torture/issue-1434.rs: Likewise.
+ 	* rust/compile/torture/issue-1506.rs: Likewise.
+ 	* rust/compile/torture/issue-1555.rs: Likewise.
+ 	* rust/compile/torture/issue-368.rs: Likewise.
+ 	* rust/compile/torture/issue-808.rs: Likewise.
+ 	* rust/compile/torture/issue-862.rs: Likewise.
+ 	* rust/compile/torture/issue-893-2.rs: Likewise.
+ 	* rust/compile/torture/issue-893.rs: Likewise.
+ 	* rust/compile/torture/lazybooleanexpr_function.rs: Likewise.
+ 	* rust/compile/torture/lifetime1.rs: Likewise.
+ 	* rust/compile/torture/literals1.rs: Likewise.
+ 	* rust/compile/torture/loop1.rs: Likewise.
+ 	* rust/compile/torture/loop2.rs: Likewise.
+ 	* rust/compile/torture/loop3.rs: Likewise.
+ 	* rust/compile/torture/loop4.rs: Likewise.
+ 	* rust/compile/torture/loop5.rs: Likewise.
+ 	* rust/compile/torture/loop6.rs: Likewise.
+ 	* rust/compile/torture/loop7.rs: Likewise.
+ 	* rust/compile/torture/loop8.rs: Likewise.
+ 	* rust/compile/torture/macro-issue1403.rs: Likewise.
+ 	* rust/compile/torture/macro_as_expr.rs: Likewise.
+ 	* rust/compile/torture/match1.rs: Likewise.
+ 	* rust/compile/torture/methods1.rs: Likewise.
+ 	* rust/compile/torture/methods2.rs: Likewise.
+ 	* rust/compile/torture/methods3.rs: Likewise.
+ 	* rust/compile/torture/mod-nameresolve.rs: Likewise.
+ 	* rust/compile/torture/mod1.rs: Likewise.
+ 	* rust/compile/torture/mod2.rs: Likewise.
+ 	* rust/compile/torture/mod3.rs: Likewise.
+ 	* rust/compile/torture/modules/valid_path.rs: Likewise.
+ 	* rust/compile/torture/must_use1.rs: Likewise.
+ 	* rust/compile/torture/must_use2.rs: Likewise.
+ 	* rust/compile/torture/name_resolve1.rs: Likewise.
+ 	* rust/compile/torture/negation_function.rs: Likewise.
+ 	* rust/compile/torture/nested_fn1.rs: Likewise.
+ 	* rust/compile/torture/nested_fn2.rs: Likewise.
+ 	* rust/compile/torture/nested_struct1.rs: Likewise.
+ 	* rust/compile/torture/never_type1.rs: Likewise.
+ 	* rust/compile/torture/not_shebang.rs: Likewise.
+ 	* rust/compile/torture/not_shebang_block_comment.rs: Likewise.
+ 	* rust/compile/torture/not_shebang_comment.rs: Likewise.
+ 	* rust/compile/torture/not_shebang_multiline_comment.rs: Likewise.
+ 	* rust/compile/torture/not_shebang_spaces.rs: Likewise.
+ 	* rust/compile/torture/parameter_usage1.rs: Likewise.
+ 	* rust/compile/torture/parens1.rs: Likewise.
+ 	* rust/compile/torture/phantom_data.rs: Likewise.
+ 	* rust/compile/torture/pointer1.rs: Likewise.
+ 	* rust/compile/torture/primconsts.rs: Likewise.
+ 	* rust/compile/torture/prims_struct_eq.rs: Likewise.
+ 	* rust/compile/torture/range-lang-item1.rs: Likewise.
+ 	* rust/compile/torture/raw_identifiers.rs: Likewise.
+ 	* rust/compile/torture/raw_identifiers_keywords.rs: Likewise.
+ 	* rust/compile/torture/recursive_fn1.rs: Likewise.
+ 	* rust/compile/torture/return_function.rs: Likewise.
+ 	* rust/compile/torture/scoping1.rs: Likewise.
+ 	* rust/compile/torture/self_type1.rs: Likewise.
+ 	* rust/compile/torture/shadow1.rs: Likewise.
+ 	* rust/compile/torture/shadow2.rs: Likewise.
+ 	* rust/compile/torture/shebang.rs: Likewise.
+ 	* rust/compile/torture/shebang_plus_attr.rs: Likewise.
+ 	* rust/compile/torture/shebang_plus_attr2.rs: Likewise.
+ 	* rust/compile/torture/static_function.rs: Likewise.
+ 	* rust/compile/torture/static_var1.rs: Likewise.
+ 	* rust/compile/torture/stmt_with_block1.rs: Likewise.
+ 	* rust/compile/torture/str1.rs: Likewise.
+ 	* rust/compile/torture/struct_access1.rs: Likewise.
+ 	* rust/compile/torture/struct_base_init_1.rs: Likewise.
+ 	* rust/compile/torture/struct_decl.rs: Likewise.
+ 	* rust/compile/torture/struct_init.rs: Likewise.
+ 	* rust/compile/torture/struct_init_10.rs: Likewise.
+ 	* rust/compile/torture/struct_init_11.rs: Likewise.
+ 	* rust/compile/torture/struct_init_2.rs: Likewise.
+ 	* rust/compile/torture/struct_init_3.rs: Likewise.
+ 	* rust/compile/torture/struct_init_4.rs: Likewise.
+ 	* rust/compile/torture/struct_init_5.rs: Likewise.
+ 	* rust/compile/torture/struct_init_6.rs: Likewise.
+ 	* rust/compile/torture/struct_init_7.rs: Likewise.
+ 	* rust/compile/torture/struct_init_8.rs: Likewise.
+ 	* rust/compile/torture/struct_init_9.rs: Likewise.
+ 	* rust/compile/torture/top_attr.rs: Likewise.
+ 	* rust/compile/torture/traits1.rs: Likewise.
+ 	* rust/compile/torture/traits10.rs: Likewise.
+ 	* rust/compile/torture/traits11.rs: Likewise.
+ 	* rust/compile/torture/traits12.rs: Likewise.
+ 	* rust/compile/torture/traits13.rs: Likewise.
+ 	* rust/compile/torture/traits14.rs: Likewise.
+ 	* rust/compile/torture/traits15.rs: Likewise.
+ 	* rust/compile/torture/traits16.rs: Likewise.
+ 	* rust/compile/torture/traits17.rs: Likewise.
+ 	* rust/compile/torture/traits18.rs: Likewise.
+ 	* rust/compile/torture/traits19.rs: Likewise.
+ 	* rust/compile/torture/traits2.rs: Likewise.
+ 	* rust/compile/torture/traits3.rs: Likewise.
+ 	* rust/compile/torture/traits4.rs: Likewise.
+ 	* rust/compile/torture/traits5.rs: Likewise.
+ 	* rust/compile/torture/traits6.rs: Likewise.
+ 	* rust/compile/torture/traits7.rs: Likewise.
+ 	* rust/compile/torture/traits8.rs: Likewise.
+ 	* rust/compile/torture/traits9.rs: Likewise.
+ 	* rust/compile/torture/transmute-size-check-1.rs: Likewise.
+ 	* rust/compile/torture/transmute1.rs: Likewise.
+ 	* rust/compile/torture/tuple1.rs: Likewise.
+ 	* rust/compile/torture/tuple2.rs: Likewise.
+ 	* rust/compile/torture/tuple3.rs: Likewise.
+ 	* rust/compile/torture/tuple_enum_variants.rs: Likewise.
+ 	* rust/compile/torture/tuple_field_access.rs: Likewise.
+ 	* rust/compile/torture/tuple_function.rs: Likewise.
+ 	* rust/compile/torture/tuple_index.rs: Likewise.
+ 	* rust/compile/torture/tuple_struct1.rs: Likewise.
+ 	* rust/compile/torture/tuple_struct2.rs: Likewise.
+ 	* rust/compile/torture/tuple_struct_unit.rs: Likewise.
+ 	* rust/compile/torture/tuple_struct_unused.rs: Likewise.
+ 	* rust/compile/torture/type-alias1.rs: Likewise.
+ 	* rust/compile/torture/type-alias2.rs: Likewise.
+ 	* rust/compile/torture/type_infer1.rs: Likewise.
+ 	* rust/compile/torture/type_infer2.rs: Likewise.
+ 	* rust/compile/torture/type_infer3.rs: Likewise.
+ 	* rust/compile/torture/type_infer4.rs: Likewise.
+ 	* rust/compile/torture/type_infer5.rs: Likewise.
+ 	* rust/compile/torture/type_infer6.rs: Likewise.
+ 	* rust/compile/torture/unary_operators.rs: Likewise.
+ 	* rust/compile/torture/undended-string-1.rs: Likewise.
+ 	* rust/compile/torture/undended-string-2.rs: Likewise.
+ 	* rust/compile/torture/underscore_id.rs: Likewise.
+ 	* rust/compile/torture/unended-raw-byte-string.rs: Likewise.
+ 	* rust/compile/torture/uninit-intrinsic-1.rs: Likewise.
+ 	* rust/compile/torture/union.rs: Likewise.
+ 	* rust/compile/torture/union_union.rs: Likewise.
+ 	* rust/compile/torture/unit_type1.rs: Likewise.
+ 	* rust/compile/torture/unit_type2.rs: Likewise.
+ 	* rust/compile/torture/unit_type3.rs: Likewise.
+ 	* rust/compile/torture/unit_type4.rs: Likewise.
+ 	* rust/compile/torture/unit_type5.rs: Likewise.
+ 	* rust/compile/torture/unsafe1.rs: Likewise.
+ 	* rust/compile/torture/unsafe2.rs: Likewise.
+ 	* rust/compile/torture/unsafe3.rs: Likewise.
+ 	* rust/compile/torture/unsafe4.rs: Likewise.
+ 	* rust/compile/torture/unused.rs: Likewise.
+ 	* rust/compile/torture/unused1.rs: Likewise.
+ 	* rust/compile/torture/unused_struct.rs: Likewise.
+ 	* rust/compile/torture/unused_struct_field.rs: Likewise.
+ 	* rust/compile/torture/usize1.rs: Likewise.
+ 	* rust/compile/torture/utf8_identifiers.rs: Likewise.
+ 	* rust/compile/torture/utf8_whitespaces.rs: Likewise.
+ 	* rust/compile/torture/while_function.rs: Likewise.
+ 	* rust/compile/track_caller.rs: Likewise.
+ 	* rust/compile/trait-cycle.rs: Likewise.
+ 	* rust/compile/trait13.rs: Likewise.
+ 	* rust/compile/trait14.rs: Likewise.
+ 	* rust/compile/trait_pub_type.rs: Likewise.
+ 	* rust/compile/traits1.rs: Likewise.
+ 	* rust/compile/traits10.rs: Likewise.
+ 	* rust/compile/traits11.rs: Likewise.
+ 	* rust/compile/traits12.rs: Likewise.
+ 	* rust/compile/traits2.rs: Likewise.
+ 	* rust/compile/traits3.rs: Likewise.
+ 	* rust/compile/traits4.rs: Likewise.
+ 	* rust/compile/traits5.rs: Likewise.
+ 	* rust/compile/traits6.rs: Likewise.
+ 	* rust/compile/traits7.rs: Likewise.
+ 	* rust/compile/traits8.rs: Likewise.
+ 	* rust/compile/traits9.rs: Likewise.
+ 	* rust/compile/try-catch-unwind-new.rs: Likewise.
+ 	* rust/compile/try-catch-unwind-old.rs: Likewise.
+ 	* rust/compile/try-expr1.rs: Likewise.
+ 	* rust/compile/try-trait.rs: Likewise.
+ 	* rust/compile/try_block1.rs: Likewise.
+ 	* rust/compile/tuple1.rs: Likewise.
+ 	* rust/compile/tuple_float_index.rs: Likewise.
+ 	* rust/compile/tuple_index_on_non_tuple.rs: Likewise.
+ 	* rust/compile/tuple_mismatch.rs: Likewise.
+ 	* rust/compile/tuple_struct1.rs: Likewise.
+ 	* rust/compile/tuple_struct2.rs: Likewise.
+ 	* rust/compile/tuple_struct3.rs: Likewise.
+ 	* rust/compile/tuplepattern-rest-readonly.rs: Likewise.
+ 	* rust/compile/tuplepattern-restpattern-typecheck-err.rs: Likewise.
+ 	* rust/compile/tupple_struct_pattern_tuple.rs: Likewise.
+ 	* rust/compile/type-alias1.rs: Likewise.
+ 	* rust/compile/type-bindings1.rs: Likewise.
+ 	* rust/compile/type-if.rs: Likewise.
+ 	* rust/compile/unary_negation.rs: Likewise.
+ 	* rust/compile/unary_not.rs: Likewise.
+ 	* rust/compile/unconstrained_type_param.rs: Likewise.
+ 	* rust/compile/undeclared_label.rs: Likewise.
+ 	* rust/compile/unicode_escape.rs: Likewise.
+ 	* rust/compile/unicode_norm1.rs: Likewise.
+ 	* rust/compile/unify-errors1.rs: Likewise.
+ 	* rust/compile/unknown-associated-item.rs: Likewise.
+ 	* rust/compile/unsafe1.rs: Likewise.
+ 	* rust/compile/unsafe10.rs: Likewise.
+ 	* rust/compile/unsafe11.rs: Likewise.
+ 	* rust/compile/unsafe2.rs: Likewise.
+ 	* rust/compile/unsafe3.rs: Likewise.
+ 	* rust/compile/unsafe4.rs: Likewise.
+ 	* rust/compile/unsafe5.rs: Likewise.
+ 	* rust/compile/unsafe6.rs: Likewise.
+ 	* rust/compile/unsafe7.rs: Likewise.
+ 	* rust/compile/unsafe8.rs: Likewise.
+ 	* rust/compile/unsafe9.rs: Likewise.
+ 	* rust/compile/unsafe_module.rs: Likewise.
+ 	* rust/compile/unstable-fn.rs: Likewise.
+ 	* rust/compile/unused-label_0.rs: Likewise.
+ 	* rust/compile/unused-mut-identifier_0.rs: Likewise.
+ 	* rust/compile/unused-mut-struct-field_0.rs: Likewise.
+ 	* rust/compile/use_1.rs: Likewise.
+ 	* rust/compile/use_2.rs: Likewise.
+ 	* rust/compile/use_3.rs: Likewise.
+ 	* rust/compile/use_self_alone.rs: Likewise.
+ 	* rust/compile/use_self_alone_in_list.rs: Likewise.
+ 	* rust/compile/usize1.rs: Likewise.
+ 	* rust/compile/v0-mangle1.rs: Likewise.
+ 	* rust/compile/v0-mangle2.rs: Likewise.
+ 	* rust/compile/variadic.rs: Likewise.
+ 	* rust/compile/while_break_expr.rs: Likewise.
+ 	* rust/compile/while_let1.rs: Likewise.
+ 	* rust/compile/while_let_expr.rs: Likewise.
+ 	* rust/compile/while_let_without_label.rs: Likewise.
+ 	* rust/compile/wrong_lhs_assignment.rs: Likewise.
+ 	* rust/compile/wrong_no_of_parameters.rs: Likewise.
+ 	* rust/compile/xfail/lifetime_param.rs: Likewise.
+ 	* rust/compile/xfail/name_resolution21.rs: Likewise.
+ 	* rust/compile/xfail/struct_field_vis.rs: Likewise.
+ 	* rust/compile/xfail/xfail.exp: Likewise.
+ 	* rust/compile/zero_sized_slice.rs: Likewise.
+ 	* rust/debug/chartype.rs: Likewise.
+ 	* rust/debug/custom_link_section.rs: Likewise.
+ 	* rust/debug/i8u8.rs: Likewise.
+ 	* rust/debug/lang.rs: Likewise.
+ 	* rust/debug/no_mangle.rs: Likewise.
+ 	* rust/debug/oldlang.rs: Likewise.
+ 	* rust/debug/tuple.rs: Likewise.
+ 	* rust/debug/win64-abi.rs: Likewise.
+ 	* rust/execute/black_box.rs: Likewise.
+ 	* rust/execute/crate-metavar1.rs: Likewise.
+ 	* rust/execute/inline_asm_inout_ident.rs: Likewise.
+ 	* rust/execute/inline_asm_inout_var.rs: Likewise.
+ 	* rust/execute/issue-1245.rs: Likewise.
+ 	* rust/execute/torture/arrays.rs: Likewise.
+ 	* rust/execute/torture/atomic_load.rs: Likewise.
+ 	* rust/execute/torture/atomic_store.rs: Likewise.
+ 	* rust/execute/torture/basic_partial_ord1.rs: Likewise.
+ 	* rust/execute/torture/basic_partial_ord2.rs: Likewise.
+ 	* rust/execute/torture/block_expr1.rs: Likewise.
+ 	* rust/execute/torture/builtin_abort.rs: Likewise.
+ 	* rust/execute/torture/builtin_macro_cfg.rs: Likewise.
+ 	* rust/execute/torture/builtin_macro_concat.rs: Likewise.
+ 	* rust/execute/torture/builtin_macro_env.rs: Likewise.
+ 	* rust/execute/torture/builtin_macro_include_bytes.rs: Likewise.
+ 	* rust/execute/torture/builtin_macro_include_str.rs: Likewise.
+ 	* rust/execute/torture/builtin_macro_line.rs: Likewise.
+ 	* rust/execute/torture/builtin_macro_option_env.rs: Likewise.
+ 	* rust/execute/torture/builtin_macro_stringify.rs: Likewise.
+ 	* rust/execute/torture/builtin_macros1.rs: Likewise.
+ 	* rust/execute/torture/builtin_macros3.rs: Likewise.
+ 	* rust/execute/torture/cfg-tail.rs: Likewise.
+ 	* rust/execute/torture/cfg1.rs: Likewise.
+ 	* rust/execute/torture/cfg2.rs: Likewise.
+ 	* rust/execute/torture/cfg3.rs: Likewise.
+ 	* rust/execute/torture/cfg4.rs: Likewise.
+ 	* rust/execute/torture/cfg5.rs: Likewise.
+ 	* rust/execute/torture/closure1.rs: Likewise.
+ 	* rust/execute/torture/closure2.rs: Likewise.
+ 	* rust/execute/torture/closure3.rs: Likewise.
+ 	* rust/execute/torture/closure4.rs: Likewise.
+ 	* rust/execute/torture/coercion1.rs: Likewise.
+ 	* rust/execute/torture/coercion2.rs: Likewise.
+ 	* rust/execute/torture/coercion3.rs: Likewise.
+ 	* rust/execute/torture/const-generics-1.rs: Likewise.
+ 	* rust/execute/torture/const-generics-2.rs: Likewise.
+ 	* rust/execute/torture/const-generics-3.rs: Likewise.
+ 	* rust/execute/torture/const-generics-4.rs: Likewise.
+ 	* rust/execute/torture/const-generics-5.rs: Likewise.
+ 	* rust/execute/torture/const-generics-6.rs: Likewise.
+ 	* rust/execute/torture/const-generics-7.rs: Likewise.
+ 	* rust/execute/torture/const_block1.rs: Likewise.
+ 	* rust/execute/torture/const_fold1.rs: Likewise.
+ 	* rust/execute/torture/const_fold2.rs: Likewise.
+ 	* rust/execute/torture/copy_nonoverlapping1.rs: Likewise.
+ 	* rust/execute/torture/decl_macro1.rs: Likewise.
+ 	* rust/execute/torture/decl_macro2.rs: Likewise.
+ 	* rust/execute/torture/decl_macro3.rs: Likewise.
+ 	* rust/execute/torture/decl_macro4.rs: Likewise.
+ 	* rust/execute/torture/derive-default1.rs: Likewise.
+ 	* rust/execute/torture/derive-partialeq1.rs: Likewise.
+ 	* rust/execute/torture/derive-partialeq2.rs: Likewise.
+ 	* rust/execute/torture/derive_clone_enum1.rs: Likewise.
+ 	* rust/execute/torture/derive_macro1.rs: Likewise.
+ 	* rust/execute/torture/derive_macro3.rs: Likewise.
+ 	* rust/execute/torture/derive_macro4.rs: Likewise.
+ 	* rust/execute/torture/empty_main.rs: Likewise.
+ 	* rust/execute/torture/enum_intrinsics1.rs: Likewise.
+ 	* rust/execute/torture/enum_intrinsics2.rs: Likewise.
+ 	* rust/execute/torture/exit_error.rs: Likewise.
+ 	* rust/execute/torture/extern_mod4.rs: Likewise.
+ 	* rust/execute/torture/extern_mod4/modules/mod.rs: Likewise.
+ 	* rust/execute/torture/for-loop1.rs: Likewise.
+ 	* rust/execute/torture/for-loop2.rs: Likewise.
+ 	* rust/execute/torture/func1.rs: Likewise.
+ 	* rust/execute/torture/gat1.rs: Likewise.
+ 	* rust/execute/torture/helloworld1.rs: Likewise.
+ 	* rust/execute/torture/helloworld2.rs: Likewise.
+ 	* rust/execute/torture/iflet.rs: Likewise.
+ 	* rust/execute/torture/impl_desugar-2.rs: Likewise.
+ 	* rust/execute/torture/impl_desugar.rs: Likewise.
+ 	* rust/execute/torture/impl_rpit1.rs: Likewise.
+ 	* rust/execute/torture/impl_rpit2.rs: Likewise.
+ 	* rust/execute/torture/impl_rpit3.rs: Likewise.
+ 	* rust/execute/torture/impl_trait1.rs: Likewise.
+ 	* rust/execute/torture/impl_trait2.rs: Likewise.
+ 	* rust/execute/torture/impl_trait3.rs: Likewise.
+ 	* rust/execute/torture/impl_trait4.rs: Likewise.
+ 	* rust/execute/torture/index1.rs: Likewise.
+ 	* rust/execute/torture/inline_asm_mov_x_5_ARM.rs: Likewise.
+ 	* rust/execute/torture/inline_asm_mov_x_5_x86_64.rs: Likewise.
+ 	* rust/execute/torture/issue-1120.rs: Likewise.
+ 	* rust/execute/torture/issue-1133.rs: Likewise.
+ 	* rust/execute/torture/issue-1198.rs: Likewise.
+ 	* rust/execute/torture/issue-1231.rs: Likewise.
+ 	* rust/execute/torture/issue-1232.rs: Likewise.
+ 	* rust/execute/torture/issue-1249.rs: Likewise.
+ 	* rust/execute/torture/issue-1436.rs: Likewise.
+ 	* rust/execute/torture/issue-1481.rs: Likewise.
+ 	* rust/execute/torture/issue-1482.rs: Likewise.
+ 	* rust/execute/torture/issue-1496.rs: Likewise.
+ 	* rust/execute/torture/issue-1720-2.rs: Likewise.
+ 	* rust/execute/torture/issue-1720.rs: Likewise.
+ 	* rust/execute/torture/issue-1852-1.rs: Likewise.
+ 	* rust/execute/torture/issue-1852.rs: Likewise.
+ 	* rust/execute/torture/issue-2005.rs: Likewise.
+ 	* rust/execute/torture/issue-2052.rs: Likewise.
+ 	* rust/execute/torture/issue-2080.rs: Likewise.
+ 	* rust/execute/torture/issue-2179.rs: Likewise.
+ 	* rust/execute/torture/issue-2180.rs: Likewise.
+ 	* rust/execute/torture/issue-2187.rs: Likewise.
+ 	* rust/execute/torture/issue-2236.rs: Likewise.
+ 	* rust/execute/torture/issue-2583.rs: Likewise.
+ 	* rust/execute/torture/issue-2906.rs: Likewise.
+ 	* rust/execute/torture/issue-3126.rs: Likewise.
+ 	* rust/execute/torture/issue-3381.rs: Likewise.
+ 	* rust/execute/torture/issue-3502.rs: Likewise.
+ 	* rust/execute/torture/issue-3836.rs: Likewise.
+ 	* rust/execute/torture/issue-4242.rs: Likewise.
+ 	* rust/execute/torture/issue-647.rs: Likewise.
+ 	* rust/execute/torture/issue-845.rs: Likewise.
+ 	* rust/execute/torture/issue-851.rs: Likewise.
+ 	* rust/execute/torture/issue-858.rs: Likewise.
+ 	* rust/execute/torture/issue-976.rs: Likewise.
+ 	* rust/execute/torture/issue-995.rs: Likewise.
+ 	* rust/execute/torture/iter1.rs: Likewise.
+ 	* rust/execute/torture/let-identifierpattern-subpattern.rs: Likewise.
+ 	* rust/execute/torture/let-pattern-1.rs: Likewise.
+ 	* rust/execute/torture/link-name.rs: Likewise.
+ 	* rust/execute/torture/literalpattern_neg.rs: Likewise.
+ 	* rust/execute/torture/loop-condition-eval.rs: Likewise.
+ 	* rust/execute/torture/macro-issue1426.rs: Likewise.
+ 	* rust/execute/torture/macro_use1.rs: Likewise.
+ 	* rust/execute/torture/macros1.rs: Likewise.
+ 	* rust/execute/torture/macros10.rs: Likewise.
+ 	* rust/execute/torture/macros11.rs: Likewise.
+ 	* rust/execute/torture/macros12.rs: Likewise.
+ 	* rust/execute/torture/macros13.rs: Likewise.
+ 	* rust/execute/torture/macros14.rs: Likewise.
+ 	* rust/execute/torture/macros16.rs: Likewise.
+ 	* rust/execute/torture/macros17.rs: Likewise.
+ 	* rust/execute/torture/macros18.rs: Likewise.
+ 	* rust/execute/torture/macros19.rs: Likewise.
+ 	* rust/execute/torture/macros2.rs: Likewise.
+ 	* rust/execute/torture/macros20.rs: Likewise.
+ 	* rust/execute/torture/macros21.rs: Likewise.
+ 	* rust/execute/torture/macros22.rs: Likewise.
+ 	* rust/execute/torture/macros23.rs: Likewise.
+ 	* rust/execute/torture/macros24.rs: Likewise.
+ 	* rust/execute/torture/macros25.rs: Likewise.
+ 	* rust/execute/torture/macros26.rs: Likewise.
+ 	* rust/execute/torture/macros27.rs: Likewise.
+ 	* rust/execute/torture/macros28.rs: Likewise.
+ 	* rust/execute/torture/macros29.rs: Likewise.
+ 	* rust/execute/torture/macros3.rs: Likewise.
+ 	* rust/execute/torture/macros30.rs: Likewise.
+ 	* rust/execute/torture/macros31.rs: Likewise.
+ 	* rust/execute/torture/macros4.rs: Likewise.
+ 	* rust/execute/torture/macros5.rs: Likewise.
+ 	* rust/execute/torture/macros6.rs: Likewise.
+ 	* rust/execute/torture/macros7.rs: Likewise.
+ 	* rust/execute/torture/macros8.rs: Likewise.
+ 	* rust/execute/torture/macros9.rs: Likewise.
+ 	* rust/execute/torture/match-identifierpattern.rs: Likewise.
+ 	* rust/execute/torture/match-restpattern-tuple.rs: Likewise.
+ 	* rust/execute/torture/match-slicepattern-array-1.rs: Likewise.
+ 	* rust/execute/torture/match-slicepattern-array-2.rs: Likewise.
+ 	* rust/execute/torture/match-slicepattern-slice-1.rs: Likewise.
+ 	* rust/execute/torture/match-slicepattern-slice-2.rs: Likewise.
+ 	* rust/execute/torture/match-structpattern-tuplefield.rs: Likewise.
+ 	* rust/execute/torture/match-tuplestructpattern-rest-1.rs: Likewise.
+ 	* rust/execute/torture/match-tuplestructpattern-rest-2.rs: Likewise.
+ 	* rust/execute/torture/match-tuplestructpattern.rs: Likewise.
+ 	* rust/execute/torture/match1.rs: Likewise.
+ 	* rust/execute/torture/match2.rs: Likewise.
+ 	* rust/execute/torture/match3.rs: Likewise.
+ 	* rust/execute/torture/match_bool1.rs: Likewise.
+ 	* rust/execute/torture/match_byte1.rs: Likewise.
+ 	* rust/execute/torture/match_char1.rs: Likewise.
+ 	* rust/execute/torture/match_int1.rs: Likewise.
+ 	* rust/execute/torture/match_loop1.rs: Likewise.
+ 	* rust/execute/torture/match_range1.rs: Likewise.
+ 	* rust/execute/torture/match_range2.rs: Likewise.
+ 	* rust/execute/torture/match_tuple1.rs: Likewise.
+ 	* rust/execute/torture/matches_macro.rs: Likewise.
+ 	* rust/execute/torture/method1.rs: Likewise.
+ 	* rust/execute/torture/method2.rs: Likewise.
+ 	* rust/execute/torture/method3.rs: Likewise.
+ 	* rust/execute/torture/method4.rs: Likewise.
+ 	* rust/execute/torture/min_specialization2.rs: Likewise.
+ 	* rust/execute/torture/min_specialization3.rs: Likewise.
+ 	* rust/execute/torture/mod1.rs: Likewise.
+ 	* rust/execute/torture/multiline-string.rs: Likewise.
+ 	* rust/execute/torture/name_resolution.rs: Likewise.
+ 	* rust/execute/torture/named_variadic.rs: Likewise.
+ 	* rust/execute/torture/offset_of1.rs: Likewise.
+ 	* rust/execute/torture/operator_overload_1.rs: Likewise.
+ 	* rust/execute/torture/operator_overload_10.rs: Likewise.
+ 	* rust/execute/torture/operator_overload_11.rs: Likewise.
+ 	* rust/execute/torture/operator_overload_12.rs: Likewise.
+ 	* rust/execute/torture/operator_overload_2.rs: Likewise.
+ 	* rust/execute/torture/operator_overload_3.rs: Likewise.
+ 	* rust/execute/torture/operator_overload_4.rs: Likewise.
+ 	* rust/execute/torture/operator_overload_5.rs: Likewise.
+ 	* rust/execute/torture/operator_overload_6.rs: Likewise.
+ 	* rust/execute/torture/operator_overload_7.rs: Likewise.
+ 	* rust/execute/torture/operator_overload_8.rs: Likewise.
+ 	* rust/execute/torture/operator_overload_9.rs: Likewise.
+ 	* rust/execute/torture/overflow1.rs: Likewise.
+ 	* rust/execute/torture/partial-eq-1.rs: Likewise.
+ 	* rust/execute/torture/partial-eq-2.rs: Likewise.
+ 	* rust/execute/torture/partial-eq-3.rs: Likewise.
+ 	* rust/execute/torture/partial-eq-4.rs: Likewise.
+ 	* rust/execute/torture/partial-ord-1.rs: Likewise.
+ 	* rust/execute/torture/partial-ord-2.rs: Likewise.
+ 	* rust/execute/torture/partial-ord-3.rs: Likewise.
+ 	* rust/execute/torture/partial-ord-4.rs: Likewise.
+ 	* rust/execute/torture/partial-ord-5.rs: Likewise.
+ 	* rust/execute/torture/partial-ord-6.rs: Likewise.
+ 	* rust/execute/torture/prefetch_data.rs: Likewise.
+ 	* rust/execute/torture/ref-pattern1.rs: Likewise.
+ 	* rust/execute/torture/ref-pattern2.rs: Likewise.
+ 	* rust/execute/torture/sip-hasher.rs: Likewise.
+ 	* rust/execute/torture/slice-magic.rs: Likewise.
+ 	* rust/execute/torture/slice-magic2.rs: Likewise.
+ 	* rust/execute/torture/slice1.rs: Likewise.
+ 	* rust/execute/torture/str-layout1.rs: Likewise.
+ 	* rust/execute/torture/str-zero.rs: Likewise.
+ 	* rust/execute/torture/struct-pattern-match.rs: Likewise.
+ 	* rust/execute/torture/struct_pattern1.rs: Likewise.
+ 	* rust/execute/torture/trait1.rs: Likewise.
+ 	* rust/execute/torture/trait10.rs: Likewise.
+ 	* rust/execute/torture/trait11.rs: Likewise.
+ 	* rust/execute/torture/trait12.rs: Likewise.
+ 	* rust/execute/torture/trait13.rs: Likewise.
+ 	* rust/execute/torture/trait14.rs: Likewise.
+ 	* rust/execute/torture/trait15.rs: Likewise.
+ 	* rust/execute/torture/trait16.rs: Likewise.
+ 	* rust/execute/torture/trait17.rs: Likewise.
+ 	* rust/execute/torture/trait18.rs: Likewise.
+ 	* rust/execute/torture/trait2.rs: Likewise.
+ 	* rust/execute/torture/trait3.rs: Likewise.
+ 	* rust/execute/torture/trait4.rs: Likewise.
+ 	* rust/execute/torture/trait5.rs: Likewise.
+ 	* rust/execute/torture/trait6.rs: Likewise.
+ 	* rust/execute/torture/trait7.rs: Likewise.
+ 	* rust/execute/torture/trait8.rs: Likewise.
+ 	* rust/execute/torture/trait9.rs: Likewise.
+ 	* rust/execute/torture/transmute1.rs: Likewise.
+ 	* rust/execute/torture/wrapping_op1.rs: Likewise.
+ 	* rust/execute/torture/wrapping_op2.rs: Likewise.
+ 	* rust/execute/xfail/macro1.rs: Likewise.
+ 	* rust/execute/xfail/match-identifierpattern-enum.rs: Likewise.
+ 	* rust/link/generic_function_0.rs: Likewise.
+ 	* rust/link/generic_function_1.rs: Likewise.
+ 	* rust/link/simple_function_0.rs: Likewise.
+ 	* rust/link/simple_function_1.rs: Likewise.
+ 	* rust/link/trait_import_0.rs: Likewise.
+ 	* rust/link/trait_import_1.rs: Likewise.
+ 
+ 2026-02-27  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+ 
+ 	* rust/compile/name_resolution26.rs: New test.
+ 	* rust/compile/derive-default1.rs: Add no_core attribute and fix the
+ 	testcase with a proper name usage which does not break name resolution
+ 	rules.
+ 	* rust/compile/derive-eq-invalid.rs: Likewise.
+ 	* rust/compile/derive-hash1.rs: Likewise.
+ 	* rust/compile/issue-2905-2.rs: Likewise.
+ 	* rust/compile/issue-3402-1.rs: Likewise.
+ 	* rust/compile/issue-3403.rs: Likewise.
+ 	* rust/compile/name_resolution18.rs: Likewise.
+ 	* rust/compile/privacy2.rs: Likewise.
+ 	* rust/execute/torture/derive-default1.rs: Likewise.
+ 	* rust/core/core.exp: Revert last compilation step to attribute check.
+ 
+ 2026-02-27  Owen Avery  <powerboat9.gamer@gmail.com>
+ 
+ 	* rust/compile/macros/mbe/macro-duplicate-binding.rs: New test.
+ 
+ 2026-02-27  Yap Zhi Heng  <yapzhhg@gmail.com>
+ 
+ 	* rust/compile/match-structpattern-tuplefield-err.rs: New file.
+ 	* rust/compile/match-structpattern-tuplefield.rs: New file.
+ 	* rust/execute/torture/match-structpattern-tuplefield.rs: New file.
+ 
+ 2026-02-27  Mason Pike  <m@sonpike.net>
+ 
+ 	* rust/compile/no-crate-level-outer-attr.rs: New file.
+ 
+ 2026-02-27  Mason Pike  <m@sonpike.net>
+ 
+ 	* rust/compile/issue-4232.rs: update expected error to include
+ 	the specific illegal attribute
+ 	* rust/compile/issue-4235.rs: New file.
+ 
+ 2026-02-27  lenny.chiadmi-delage  <lenny.chiadmi-delage@epita.fr>
+ 
+ 	* rust/compile/issue-4375-ice-regression.rs: New test.
+ 	* rust/compile/issue-4375-multiple-errors.rs: New test.
+ 	* rust/compile/issue-4375-tuple-pattern.rs: New test.
+ 
+ 2026-02-27  Jayant Chauhan  <0001jayant@gmail.com>
+ 
+ 	* rust/compile/issue-4388.rs: New test.
+ 
+ 2026-02-27  Jayant Chauhan  <0001jayant@gmail.com>
+ 
+ 	* rust/compile/issue-4387.rs: New test.
+ 
+ 2026-02-27  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+ 
+ 	* rust/compile/export_name.rs: New test.
+ 
+ 2026-02-27  Jayant Chauhan  <0001jayant@gmail.com>
+ 
+ 	* rust/compile/issue-4234.rs: New test.
+ 	* rust/compile/unsafe11.rs: Mark function as unsafe to
+ 	to satisfy new #[target_feature] restriction.
+ 
+ 2026-02-27  Lucas Ly Ba  <lucas.ly-ba@outlook.com>
+ 
+ 	* rust/compile/non-snake-case_0.rs: New test.
+ 
+ 2026-02-27  Lucas Ly Ba  <lucas.ly-ba@outlook.com>
+ 
+ 	* rust/compile/non-upper-case-globals_0.rs: New test.
+ 
+ 2026-02-27  lenny.chiadmi-delage  <lenny.chiadmi-delage@epita.fr>
+ 
+ 	* rust/compile/issue-1210.rs: New test.
+ 
+ 2026-02-27  Jayant Chauhan  <0001jayant@gmail.com>
+ 
+ 	* rust/compile/issue-4232.rs: New test.
+ 
+ 2026-02-27  lenny.chiadmi-delage  <lenny.chiadmi-delage@epita.fr>
+ 
+ 	* rust/compile/issue-1081.rs: New test.
+ 
+ 2026-02-27  lenny.chiadmi-delage  <lenny.chiadmi-delage@epita.fr>
+ 
+ 	* rust/execute/issue-1245.rs: New test.
+ 
+ 2026-02-27  Harishankar  <harishankarpp7@gmail.com>
+ 
+ 	* rust/compile/issue-4166.rs: New test.
+ 
+ 2026-02-27  Jayant Chauhan  <0001jayant@gmail.com>
+ 
+ 	* rust/compile/link_section-malformed.rs: New test.
+ 
+ 2026-02-27  James Bohl  <bohlj47@gmail.com>
+ 
+ 	* algol68/compile/error-denotation-2.a68: Check for no error on
+ 	minimum negative value.
+ 	* algol68/compile/error-denotation-3.a68: Likewise.
+ 
+ 2026-02-27  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/124142
+ 	* gcc.dg/vect/tsvc/vect-tsvc-s481.c: Add -fno-trapping-math.
+ 	* gcc.dg/vect/tsvc/vect-tsvc-s332.c: Likewise.
+ 	* gcc.dg/vect/tsvc/vect-tsvc-s482.c: Likewise.
+ 	* gcc.dg/vect/vect-early-break_61.c: Likewise.
+ 	* gcc.target/aarch64/vect-early-break-cbranch_3.c: Likewise.
+ 	* gcc.dg/vect/vect-early-break_143-pr124142.c: New test
+ 
+ 2026-02-27  Marek Polacek  <polacek@redhat.com>
+ 
+ 	DR 3110
+ 	* g++.dg/DRs/dr3110.C: New test.
+ 
+ 2026-02-27  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	PR middle-end/124280
+ 	* gcc.c-torture/compile/pr124280.c: New test.
+ 
+ 2026-02-27  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/123229
+ 	* g++.dg/ipa/pr123229.C: New test.
+ 
+ 2026-02-27  Soumya AR  <soumyaa@nvidia.com>
+ 
+ 	* gcc.target/aarch64/aarch64-json-tunings/nullptr-issue-info.c:
+ 	New test.
+ 	* gcc.target/aarch64/aarch64-json-tunings/nullptr-issue-info.json:
+ 	New test input.
+ 
+ 2026-02-27  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR target/124162
+ 	* gcc.target/aarch64/sve/vect-early-break-cbranch_16.c: New test.
+ 
+ 2026-02-27  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/117935
+ 	* gcc.dg/predict-24.c: New test.
+ 	* gcc.dg/predict-25.c: New test.
+ 
+ 2026-02-27  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/123947
+ 	* gfortran.dg/pr123947_1.f90: New test.
+ 	* gfortran.dg/pr123947_2.f90: New test.
+ 
  2026-02-26  Eric Botcazou  <ebotcazou@adacore.com>
  
  	* gnat.dg/generic_inst17.adb: New test.
diff -Nrcpad gcc-16-20260301/gcc/testsuite/c-c++-common/analyzer/coreutils-group_number.c gcc-16-20260308/gcc/testsuite/c-c++-common/analyzer/coreutils-group_number.c
*** gcc-16-20260301/gcc/testsuite/c-c++-common/analyzer/coreutils-group_number.c	Sun Mar  1 22:32:08 2026
--- gcc-16-20260308/gcc/testsuite/c-c++-common/analyzer/coreutils-group_number.c	Sun Mar  8 22:32:07 2026
***************
*** 2,7 ****
--- 2,8 ----
  
  /* { dg-additional-options "-Wno-analyzer-too-complex" } */
  /* { dg-additional-options "-Wno-analyzer-symbol-too-complex" } */
+ /* { dg-additional-options "-Wno-overflow" } */
  
  typedef __SIZE_TYPE__ size_t;
  
diff -Nrcpad gcc-16-20260301/gcc/testsuite/c-c++-common/cpp/pr97991-1.c gcc-16-20260308/gcc/testsuite/c-c++-common/cpp/pr97991-1.c
*** gcc-16-20260301/gcc/testsuite/c-c++-common/cpp/pr97991-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/c-c++-common/cpp/pr97991-1.c	Sun Mar  8 22:32:08 2026
***************
*** 0 ****
--- 1,3 ----
+ /* { dg-do compile } */
+ /* Make sure malformed redefine_extname with a pragma inside does not cause an ICE. */
+ #pragma redefine_extname _Pragma ("pack(bar)") /* { dg-warning "" } */
diff -Nrcpad gcc-16-20260301/gcc/testsuite/g++.dg/cpp26/constexpr-eh18.C gcc-16-20260308/gcc/testsuite/g++.dg/cpp26/constexpr-eh18.C
*** gcc-16-20260301/gcc/testsuite/g++.dg/cpp26/constexpr-eh18.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/g++.dg/cpp26/constexpr-eh18.C	Sun Mar  8 22:32:08 2026
***************
*** 0 ****
--- 1,42 ----
+ // PR c++/124145
+ // { dg-do compile { target c++26 } }
+ 
+ struct S {};
+ 
+ constexpr S
+ foo (S x)
+ {
+   throw 123;
+   return x;
+ }
+ 
+ constexpr void
+ bar ()
+ {
+   foo (S {});
+ }
+ 
+ constexpr bool
+ baz ()
+ {
+   try
+     {
+       bar ();
+       asm  ("");
+     }
+   catch (int)
+     {
+     }
+ 
+   try
+     {
+       bar ();
+       asm ("");
+     }
+   catch (int)
+     {
+     }
+   return true;
+ }
+ 
+ static_assert (baz ());
diff -Nrcpad gcc-16-20260301/gcc/testsuite/g++.dg/cpp26/expansion-stmt32.C gcc-16-20260308/gcc/testsuite/g++.dg/cpp26/expansion-stmt32.C
*** gcc-16-20260301/gcc/testsuite/g++.dg/cpp26/expansion-stmt32.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/g++.dg/cpp26/expansion-stmt32.C	Sun Mar  8 22:32:08 2026
***************
*** 0 ****
--- 1,14 ----
+ // PR c++/124229
+ // { dg-do compile { target c++26 } }
+ 
+ template<typename T>
+ void foo () { }
+ 
+ int main()
+ {
+   template for (constexpr auto val : { 42 })
+     {
+       using U = decltype(val);
+       foo<U>();
+     }
+ }
diff -Nrcpad gcc-16-20260301/gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat2.C gcc-16-20260308/gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat2.C
*** gcc-16-20260301/gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat2.C	Sun Mar  1 22:32:09 2026
--- gcc-16-20260308/gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat2.C	Sun Mar  8 22:32:08 2026
***************
*** 1,7 ****
  // { dg-do compile { target c++20 } }
  
  template<typename T>
! concept Fooable = requires(T t) { foo(t); }; // { dg-error "depends on itself" }
  
  template<Fooable T>
  void foo(T t) { }
--- 1,8 ----
  // { dg-do compile { target c++20 } }
  
  template<typename T>
! concept Fooable = requires(T t) { foo(t); };
! // { dg-error "T = test::S]' depends on itself" "" { target *-*-* } .-1 }
  
  template<Fooable T>
  void foo(T t) { }
diff -Nrcpad gcc-16-20260301/gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat5.C gcc-16-20260308/gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat5.C
*** gcc-16-20260301/gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat5.C	Sun Mar  1 22:32:09 2026
--- gcc-16-20260308/gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat5.C	Sun Mar  8 22:32:08 2026
***************
*** 3,9 ****
  
  struct A { };
  
! template<typename T> concept pipeable = requires(A a, T t) { a | t; }; // { dg-error "depends on itself" }
  
  template<pipeable T> void operator|(A, T);
  
--- 3,10 ----
  
  struct A { };
  
! template<typename T> concept pipeable = requires(A a, T t) { a | t; };
! // { dg-error "with T = int]' depends on itself" "" { target *-*-* } .-1 }
  
  template<pipeable T> void operator|(A, T);
  
diff -Nrcpad gcc-16-20260301/gcc/testsuite/g++.dg/cpp2a/concepts-variadic4.C gcc-16-20260308/gcc/testsuite/g++.dg/cpp2a/concepts-variadic4.C
*** gcc-16-20260301/gcc/testsuite/g++.dg/cpp2a/concepts-variadic4.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/g++.dg/cpp2a/concepts-variadic4.C	Sun Mar  8 22:32:08 2026
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/124297
+ // { dg-do compile { target c++20 } }
+ 
+ template<class T> concept C = true;
+ 
+ template<C auto... Vs> void f();
+ 
+ int main() {
+   f<42>();
+ }
+ 
+ // { dg-final { scan-assembler "_Z1fITpTnDk1CJLi42EEEvv" } }
diff -Nrcpad gcc-16-20260301/gcc/testsuite/g++.dg/cpp2a/lambda-targ22.C gcc-16-20260308/gcc/testsuite/g++.dg/cpp2a/lambda-targ22.C
*** gcc-16-20260301/gcc/testsuite/g++.dg/cpp2a/lambda-targ22.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/g++.dg/cpp2a/lambda-targ22.C	Sun Mar  8 22:32:08 2026
***************
*** 0 ****
--- 1,15 ----
+ // PR c++/123665
+ // { dg-do compile { target c++20 } }
+ 
+ template<class T, class V = decltype([](auto){ return 42; })>
+ struct A { using type = V; };
+ 
+ template<class T>
+ auto f() {
+   return [](auto) {
+     return typename A<T*>::type{}(true);
+   }(0);
+ }
+ 
+ using type = decltype(f<void>());
+ using type = int;
diff -Nrcpad gcc-16-20260301/gcc/testsuite/g++.dg/cpp2a/lambda-targ22a.C gcc-16-20260308/gcc/testsuite/g++.dg/cpp2a/lambda-targ22a.C
*** gcc-16-20260301/gcc/testsuite/g++.dg/cpp2a/lambda-targ22a.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/g++.dg/cpp2a/lambda-targ22a.C	Sun Mar  8 22:32:08 2026
***************
*** 0 ****
--- 1,20 ----
+ // PR c++/123665
+ // { dg-do compile { target c++20 } }
+ // A more elaborate version of lambda-targ22.C.
+ 
+ template<class T, class U, class V>
+ struct W { };
+ 
+ template<class T, class U,
+ 	 class V = decltype([](auto x){ return W<T, U, decltype(x)>{}; })>
+ struct A { using type = V; };
+ 
+ template<class T>
+ auto f() {
+   return []<typename U>(U) {
+     return typename A<T*, U&>::type{}(true);
+   }(0);
+ }
+ 
+ using type = decltype(f<void>());
+ using type = W<void*, int&, bool>;
diff -Nrcpad gcc-16-20260301/gcc/testsuite/g++.dg/cpp2a/lambda-targ23.C gcc-16-20260308/gcc/testsuite/g++.dg/cpp2a/lambda-targ23.C
*** gcc-16-20260301/gcc/testsuite/g++.dg/cpp2a/lambda-targ23.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/g++.dg/cpp2a/lambda-targ23.C	Sun Mar  8 22:32:08 2026
***************
*** 0 ****
--- 1,14 ----
+ // PR c++/123408
+ // { dg-do compile { target c++20 } }
+ 
+ template <typename> constexpr int zero = 0;
+ template <auto> using int_alias = int;
+ 
+ template <typename Arg>
+ using inner = int_alias<[](auto) { return 0; }((Arg)0)>;
+ 
+ template <typename Arg>
+ constexpr int outer = [](auto) { return zero<inner<Arg>>; }(0);
+ 
+ using type = decltype(outer<int>);
+ using type = const int;
diff -Nrcpad gcc-16-20260301/gcc/testsuite/g++.dg/cpp2a/typedef1.C gcc-16-20260308/gcc/testsuite/g++.dg/cpp2a/typedef1.C
*** gcc-16-20260301/gcc/testsuite/g++.dg/cpp2a/typedef1.C	Sun Mar  1 22:32:09 2026
--- gcc-16-20260308/gcc/testsuite/g++.dg/cpp2a/typedef1.C	Sun Mar  8 22:32:08 2026
*************** typedef struct {					// { dg-message "un
*** 33,40 ****
    static int a;						// { dg-error "static data member '<unnamed struct>::a' in unnamed class" }
  } B;
  typedef struct : public A {				// { dg-error "anonymous non-C-compatible type given name for linkage purposes by 'typedef' declaration" }
!   int a;
! } C;							// { dg-message "type is not C-compatible because it has a base class" }
  #if __cplusplus >= 201103L
  typedef struct {					// { dg-error "anonymous non-C-compatible type given name for linkage purposes by 'typedef' declaration" "" { target c++11 } }
    int b = 42;						// { dg-message "type is not C-compatible because 'D::b' has default member initializer" "" { target c++11 } }
--- 33,40 ----
    static int a;						// { dg-error "static data member '<unnamed struct>::a' in unnamed class" }
  } B;
  typedef struct : public A {				// { dg-error "anonymous non-C-compatible type given name for linkage purposes by 'typedef' declaration" }
!   int a;						// { dg-message "type is not C-compatible because it has a base class" "" { target *-*-* } .-1 }
! } C;
  #if __cplusplus >= 201103L
  typedef struct {					// { dg-error "anonymous non-C-compatible type given name for linkage purposes by 'typedef' declaration" "" { target c++11 } }
    int b = 42;						// { dg-message "type is not C-compatible because 'D::b' has default member initializer" "" { target c++11 } }
diff -Nrcpad gcc-16-20260301/gcc/testsuite/g++.dg/ipa/devirt-23.C gcc-16-20260308/gcc/testsuite/g++.dg/ipa/devirt-23.C
*** gcc-16-20260301/gcc/testsuite/g++.dg/ipa/devirt-23.C	Sun Mar  1 22:32:10 2026
--- gcc-16-20260308/gcc/testsuite/g++.dg/ipa/devirt-23.C	Sun Mar  8 22:32:08 2026
*************** int main()
*** 45,48 ****
  {
    class C c;
  }
! /* { dg-final { scan-ipa-dump "Discovered a virtual call to" "cp" { xfail *-*-* } } } */
--- 45,48 ----
  {
    class C c;
  }
! /* { dg-final { scan-ipa-dump "Discovered a virtual call to" "cp" } } */
diff -Nrcpad gcc-16-20260301/gcc/testsuite/g++.dg/modules/dep-6.C gcc-16-20260308/gcc/testsuite/g++.dg/modules/dep-6.C
*** gcc-16-20260301/gcc/testsuite/g++.dg/modules/dep-6.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/g++.dg/modules/dep-6.C	Sun Mar  8 22:32:08 2026
***************
*** 0 ****
--- 1,6 ----
+ // PR c++/123622
+ // { dg-additional-options "-fmodules -M -MG -MF dep-6.d" }
+ 
+ import "dep-6.h"; // Must not exist!
+ 
+ // { dg-final { scan-file dep-6.d {\nCXX_IMPORTS \+= \./dep-6\.h\.c\+\+-module} } }
diff -Nrcpad gcc-16-20260301/gcc/testsuite/g++.dg/reflect/annotations11.C gcc-16-20260308/gcc/testsuite/g++.dg/reflect/annotations11.C
*** gcc-16-20260301/gcc/testsuite/g++.dg/reflect/annotations11.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/g++.dg/reflect/annotations11.C	Sun Mar  8 22:32:08 2026
***************
*** 0 ****
--- 1,21 ----
+ // PR c++/123866
+ // { dg-do compile { target c++26 } }
+ // { dg-additional-options "-freflection" }
+ 
+ #include <meta>
+ 
+ struct [[=1, =2]] A {};
+ using B [[=3, =4, =5]] = A;
+ typedef A C [[=6, =7, =8, =9]];
+ using D [[=10, =11, =12, =13, =14]] = const int;
+ typedef volatile int E [[=15, =16, =17, =18, =19, =20]];
+ 
+ static_assert (annotations_of (^^A).size () == 2);
+ static_assert (annotations_of (^^B).size () == 3);
+ static_assert (annotations_of (dealias (^^B)).size () == 2);
+ static_assert (annotations_of (^^C).size () == 4);
+ static_assert (annotations_of (dealias (^^C)).size () == 2);
+ static_assert (annotations_of (^^D).size () == 5);
+ static_assert (annotations_of (dealias (^^D)).size () == 0);
+ static_assert (annotations_of (^^E).size () == 6);
+ static_assert (annotations_of (dealias (^^E)).size () == 0);
diff -Nrcpad gcc-16-20260301/gcc/testsuite/g++.dg/reflect/anon4.C gcc-16-20260308/gcc/testsuite/g++.dg/reflect/anon4.C
*** gcc-16-20260301/gcc/testsuite/g++.dg/reflect/anon4.C	Sun Mar  1 22:32:12 2026
--- gcc-16-20260308/gcc/testsuite/g++.dg/reflect/anon4.C	Sun Mar  8 22:32:08 2026
*************** void test ()
*** 28,33 ****
  
    constexpr foo bar1 { .i = 42, .c = 3.14 };
  
!   static_assert (bar1.c == 3.14);
!   static_assert (bar1.[: ^^foo::c :] == 3.14);
  }
--- 28,33 ----
  
    constexpr foo bar1 { .i = 42, .c = 3.14 };
  
!   static_assert (bar1.c == (double) 3.14);
!   static_assert (bar1.[: ^^foo::c :] == (double) 3.14);
  }
diff -Nrcpad gcc-16-20260301/gcc/testsuite/g++.dg/reflect/expansion-stmt2.C gcc-16-20260308/gcc/testsuite/g++.dg/reflect/expansion-stmt2.C
*** gcc-16-20260301/gcc/testsuite/g++.dg/reflect/expansion-stmt2.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/g++.dg/reflect/expansion-stmt2.C	Sun Mar  8 22:32:08 2026
***************
*** 0 ****
--- 1,40 ----
+ // PR c++/124229
+ // { dg-do compile { target c++26 } }
+ // { dg-additional-options "-freflection" }
+ 
+ #include <meta>
+ 
+ enum class E
+ {
+   X [[=1]]
+ };
+ 
+ template<typename T>
+ void foo ()
+ {
+ }
+ 
+ void
+ f ()
+ {
+   template for (constexpr auto val : define_static_array (enumerators_of (^^E)))
+     {
+       constexpr auto a = annotations_of(val)[0];
+       using U = [:type_of(a):];
+       constexpr auto m1 = extract<U>(a);
+       constexpr auto m2 = extract<typename [:type_of(a):]>(a);
+     }
+ 
+   template for (constexpr auto val : define_static_array (enumerators_of (^^E)))
+     {
+       constexpr auto a = annotations_of(val)[0];
+       using U = [:type_of(a):];
+       foo<U>();
+     }
+ 
+   [](auto a) {
+       using V = [:type_of(^^a):];;
+       constexpr auto rt = std::meta::reflect_constant (1);
+       constexpr auto m1 = std::meta::extract<V>(rt);
+   }(1);
+ }
diff -Nrcpad gcc-16-20260301/gcc/testsuite/g++.dg/reflect/extent1.C gcc-16-20260308/gcc/testsuite/g++.dg/reflect/extent1.C
*** gcc-16-20260301/gcc/testsuite/g++.dg/reflect/extent1.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/g++.dg/reflect/extent1.C	Sun Mar  8 22:32:08 2026
***************
*** 0 ****
--- 1,9 ----
+ // PR c++/124368
+ // { dg-do compile { target c++26 } }
+ // { dg-additional-options "-freflection" }
+ 
+ #include <meta>
+ 
+ using T = int[extent(^^int[4])];
+ constexpr auto n = extent(^^int[4]);
+ static_assert (n == 4);
diff -Nrcpad gcc-16-20260301/gcc/testsuite/g++.dg/reflect/extract11.C gcc-16-20260308/gcc/testsuite/g++.dg/reflect/extract11.C
*** gcc-16-20260301/gcc/testsuite/g++.dg/reflect/extract11.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/g++.dg/reflect/extract11.C	Sun Mar  8 22:32:08 2026
***************
*** 0 ****
--- 1,18 ----
+ // PR c++/124324
+ // { dg-do compile { target c++26 } }
+ // { dg-additional-options "-freflection" }
+ 
+ #include <meta>
+ 
+ consteval std::meta::info worst_sizeof_p1(std::meta::info ty) {
+     static constexpr auto lam = []<class T>() static { return sizeof(T); };
+     return substitute(^^decltype(lam)::template operator(), {ty});
+ }
+ 
+ constexpr std::meta::info ws = worst_sizeof_p1(^^int);
+ static_assert([: ws :]() == 4);
+ static_assert(is_function(ws));
+ static_assert(is_static_member(ws));
+ 
+ using F = size_t();
+ constexpr F* f = extract<F*>(ws);
diff -Nrcpad gcc-16-20260301/gcc/testsuite/g++.dg/reflect/members_of10.C gcc-16-20260308/gcc/testsuite/g++.dg/reflect/members_of10.C
*** gcc-16-20260301/gcc/testsuite/g++.dg/reflect/members_of10.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/g++.dg/reflect/members_of10.C	Sun Mar  8 22:32:08 2026
***************
*** 0 ****
--- 1,56 ----
+ // PR c++/123810
+ // { dg-do compile { target c++26 } }
+ // { dg-additional-options "-freflection" }
+ 
+ #include <meta>
+ 
+ namespace A {
+   typedef struct { int b; } B;
+ }
+ struct C {
+   typedef struct { int d; } D;
+ };
+ struct F {
+   typedef struct { int g; } G;
+   typedef struct { int h; } H;
+   typedef struct { int i; } I;
+   typedef struct { int j; } J;
+   typedef struct { int k; } K;
+   typedef struct { int l; } L;
+   typedef struct { int m; } M;
+   typedef struct { int n; } N;
+ };
+ void
+ foo ()
+ {
+   typedef struct { int e; } E;
+   static_assert (is_type_alias (^^E));
+ }
+ 
+ static_assert (is_type_alias (^^A::B));
+ static_assert (is_type_alias (^^C::D));
+ static_assert (is_type_alias (^^F::G));
+ static_assert (is_type_alias (^^F::N));
+ constexpr auto uctx = std::meta::access_context::unchecked ();
+ static_assert (members_of (^^C, uctx)[0] == dealias (^^C::D));
+ static_assert (members_of (^^C, uctx)[1] == ^^C::D);
+ static_assert (members_of (^^F, uctx)[0] == dealias (^^F::G));
+ static_assert (members_of (^^F, uctx)[1] == ^^F::G);
+ static_assert (members_of (^^F, uctx)[2] == dealias (^^F::H));
+ static_assert (members_of (^^F, uctx)[3] == ^^F::H);
+ static_assert (members_of (^^F, uctx)[4] == dealias (^^F::I));
+ static_assert (members_of (^^F, uctx)[5] == ^^F::I);
+ static_assert (members_of (^^F, uctx)[6] == dealias (^^F::J));
+ static_assert (members_of (^^F, uctx)[7] == ^^F::J);
+ static_assert (members_of (^^F, uctx)[8] == dealias (^^F::K));
+ static_assert (members_of (^^F, uctx)[9] == ^^F::K);
+ static_assert (members_of (^^F, uctx)[10] == dealias (^^F::L));
+ static_assert (members_of (^^F, uctx)[11] == ^^F::L);
+ static_assert (members_of (^^F, uctx)[12] == dealias (^^F::M));
+ static_assert (members_of (^^F, uctx)[13] == ^^F::M);
+ static_assert (members_of (^^F, uctx)[14] == dealias (^^F::N));
+ static_assert (members_of (^^F, uctx)[15] == ^^F::N);
+ static_assert ((members_of (^^A, uctx)[0] == dealias (^^A::B)
+ 		&& members_of (^^A, uctx)[1] == ^^A::B)
+ 	       || ((members_of (^^A, uctx)[0] == ^^A::B)
+ 		   && members_of (^^A, uctx)[1] == dealias (^^A::B)));
diff -Nrcpad gcc-16-20260301/gcc/testsuite/g++.dg/reflect/parameters_of8.C gcc-16-20260308/gcc/testsuite/g++.dg/reflect/parameters_of8.C
*** gcc-16-20260301/gcc/testsuite/g++.dg/reflect/parameters_of8.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/g++.dg/reflect/parameters_of8.C	Sun Mar  8 22:32:08 2026
***************
*** 0 ****
--- 1,19 ----
+ // PR c++/124306
+ // { dg-do compile { target c++26 } }
+ // { dg-additional-options "-freflection" }
+ 
+ #include <meta>
+ 
+ template <typename T>
+ void
+ foo (int a)
+ {
+   constexpr auto b = parameters_of (^^foo <int>)[0];
+   constexpr auto c = identifier_of (type_of (b));	// { dg-error "uncaught exception of type 'std::meta::exception'; 'what\\\(\\\)': 'reflection with has_identifier false'" }
+ }
+ 
+ void
+ bar (int a)
+ {
+   foo <int> (a);
+ }
diff -Nrcpad gcc-16-20260301/gcc/testsuite/g++.dg/reflect/substitute6.C gcc-16-20260308/gcc/testsuite/g++.dg/reflect/substitute6.C
*** gcc-16-20260301/gcc/testsuite/g++.dg/reflect/substitute6.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/g++.dg/reflect/substitute6.C	Sun Mar  8 22:32:08 2026
***************
*** 0 ****
--- 1,13 ----
+ // PR c++/124324
+ // { dg-do compile { target c++26 } }
+ // { dg-additional-options "-freflection" }
+ 
+ #include <meta>
+ 
+ template<typename>
+ void function ();
+ 
+ constexpr auto substituted = substitute (^^function, {^^int});
+ static_assert (is_function (substituted));
+ constexpr auto t = type_of (substituted);
+ [: t :] bar;
diff -Nrcpad gcc-16-20260301/gcc/testsuite/g++.dg/template/friend89.C gcc-16-20260308/gcc/testsuite/g++.dg/template/friend89.C
*** gcc-16-20260301/gcc/testsuite/g++.dg/template/friend89.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/g++.dg/template/friend89.C	Sun Mar  8 22:32:08 2026
***************
*** 0 ****
--- 1,11 ----
+ // PR c++/39057
+ 
+ struct A
+ {
+   template<int> void foo();
+ };
+ 
+ template<int> struct B
+ {
+   friend void A::foo<0>(int = 0); // { dg-error "friend declaration" }
+ };
diff -Nrcpad gcc-16-20260301/gcc/testsuite/g++.dg/torture/pr124135-1.C gcc-16-20260308/gcc/testsuite/g++.dg/torture/pr124135-1.C
*** gcc-16-20260301/gcc/testsuite/g++.dg/torture/pr124135-1.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/g++.dg/torture/pr124135-1.C	Sun Mar  8 22:32:09 2026
***************
*** 0 ****
--- 1,20 ----
+ // PR tree-optimization/124135
+ // { dg-do compile }
+ 
+ void foo (char, long double *, int);
+ int qux (int);
+ 
+ long double
+ bar (int x)
+ {
+   long double a;
+   if (x)
+     foo (0, &a, qux (42));
+   return a;
+ }
+ 
+ void
+ baz (int x)
+ {
+   bar (x);
+ }
diff -Nrcpad gcc-16-20260301/gcc/testsuite/g++.dg/torture/pr124135-2.C gcc-16-20260308/gcc/testsuite/g++.dg/torture/pr124135-2.C
*** gcc-16-20260301/gcc/testsuite/g++.dg/torture/pr124135-2.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/g++.dg/torture/pr124135-2.C	Sun Mar  8 22:32:09 2026
***************
*** 0 ****
--- 1,27 ----
+ // PR tree-optimization/124135
+ // { dg-do compile }
+ 
+ #ifdef __SIZEOF_FLOAT128__
+ void foo (char, __float128 *, int);
+ int qux (int);
+ 
+ __float128
+ bar (int x)
+ {
+   __float128 a;
+   if (x)
+     foo (0, &a, qux (42));
+   return a;
+ }
+ 
+ void
+ baz (int x)
+ {
+   bar (x);
+ }
+ #else
+ void
+ baz ()
+ {
+ }
+ #endif
diff -Nrcpad gcc-16-20260301/gcc/testsuite/g++.dg/vect/vect-pr124037.cc gcc-16-20260308/gcc/testsuite/g++.dg/vect/vect-pr124037.cc
*** gcc-16-20260301/gcc/testsuite/g++.dg/vect/vect-pr124037.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/g++.dg/vect/vect-pr124037.cc	Sun Mar  8 22:32:09 2026
***************
*** 0 ****
--- 1,38 ----
+ /* PR tree-optimization/124037 */
+ /* { dg-require-effective-target mmap } */
+ /* { dg-require-effective-target vect_early_break } */
+ /* { dg-additional-options "-std=c++11" } */
+ 
+ struct Token
+ {
+   unsigned t, t1, t2;
+   void *a, *b;
+   unsigned short Kind;
+   unsigned short flags;
+   constexpr Token() : Token(0){}
+   constexpr Token(int a): t(0), t1(0), t2 (0), a(nullptr),b (nullptr),
+ 			  Kind(a), flags(0) {}
+   bool isNot(int K) const { return Kind != K; }
+ };
+ 
+ [[gnu::noipa]]
+ unsigned getArgLength(const Token *ArgPtr) {
+   unsigned NumArgTokens = 0;
+   for (; ArgPtr->isNot(0); ++ArgPtr)
+     ++NumArgTokens;
+   return NumArgTokens;
+ }
+ 
+ Token tokens[] = {{1},{1},{1},{1},{1},{1},{1},{1},{1},{1},{1},{1},{1},{1},{1},
+ 		  {1},{1},{1},{1},{1},{1},{1},{1},{1},{1},{1},{1},{1},{1},{1},
+ 		  {1},{1},{1},{1},{1},{1},{1},{1},{1},{1},{1},{1},{1},{1},{1},
+ 		  {1},{1},{1},{1},{1},{1},{1},{1},{1},{1},{1},{1},{1},{1},{1},
+ 		  {1},{1},{1},{1},{1},{1},{1},{1},{1},{1},{1},{1},{1},{1},{1},
+ 		  {1},{1},{1},{1},{1},{1},{}};
+ 
+ int main()
+ {
+   __builtin_printf("%d\n", getArgLength(tokens));
+ }
+ /* { dg-final { scan-tree-dump "missed:   not vectorized: relevant stmt not supported: _\[0-9\]+ = ArgPtr_\[0-9\]+->Kind;" "vect" } } */
+ /* { dg-final { scan-tree-dump-not "LOOP VECTORIZED" "vect" } } */
diff -Nrcpad gcc-16-20260301/gcc/testsuite/g++.target/aarch64/pr124126-1.C gcc-16-20260308/gcc/testsuite/g++.target/aarch64/pr124126-1.C
*** gcc-16-20260301/gcc/testsuite/g++.target/aarch64/pr124126-1.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/g++.target/aarch64/pr124126-1.C	Sun Mar  8 22:32:09 2026
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-g" } */
+ /* PR target/124126 */
+ /* Make sure an array of uint64_t[8] works when
+    used before the inlcude of arm_acle.h.  */
+ 
+ typedef unsigned long uint64_t;
+ void executeSuperscalar(uint64_t (*r)[8]);
+ 
+ #include "arm_acle.h"
+ 
+ void initDatasetItem() {
+   uint64_t rl[8];
+   executeSuperscalar(&rl);
+ }
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.c-torture/execute/pr122000.c gcc-16-20260308/gcc/testsuite/gcc.c-torture/execute/pr122000.c
*** gcc-16-20260301/gcc/testsuite/gcc.c-torture/execute/pr122000.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/gcc.c-torture/execute/pr122000.c	Sun Mar  8 22:32:09 2026
***************
*** 0 ****
--- 1,14 ----
+ /* PR target/122000 */
+ 
+ char c = 1;
+ __attribute__((aligned (sizeof (unsigned long long)))) unsigned long long ll;
+ 
+ int
+ main ()
+ {
+ #if defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8) && __SIZEOF_LONG_LONG__ == 8 && __CHAR_BIT__ == 8
+   unsigned long long x = __sync_add_and_fetch (&ll, c + 0xfedcba9876543210ULL);
+   if (x != 0xfedcba9876543211ULL)
+     __builtin_abort ();
+ #endif
+ }
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.c-torture/execute/pr124358.c gcc-16-20260308/gcc/testsuite/gcc.c-torture/execute/pr124358.c
*** gcc-16-20260301/gcc/testsuite/gcc.c-torture/execute/pr124358.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/gcc.c-torture/execute/pr124358.c	Sun Mar  8 22:32:09 2026
***************
*** 0 ****
--- 1,19 ----
+ /* PR tree-optimization/124358 */
+ 
+ [[gnu::noipa]] void
+ foo (int d)
+ {
+   static int u = 11;
+   if (d != u++)
+     __builtin_abort ();
+ }
+ 
+ int
+ main ()
+ {
+   int a[1][4] = { 11, 12, 13, 14 };
+   int (*p)[4] = a;
+   for (int i = 0; i < 1; i++)
+     for (int j = 0; j < 4; j++)
+       foo (*(*(p + i) + j));
+ }
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.dg/ipa/iinline-attr.c gcc-16-20260308/gcc/testsuite/gcc.dg/ipa/iinline-attr.c
*** gcc-16-20260301/gcc/testsuite/gcc.dg/ipa/iinline-attr.c	Sun Mar  1 22:32:15 2026
--- gcc-16-20260308/gcc/testsuite/gcc.dg/ipa/iinline-attr.c	Sun Mar  8 22:32:09 2026
*************** int test (void)
*** 23,27 ****
    return 0;
  }
  
! /* { dg-final { scan-ipa-dump "hooray\[^\\n\]*inline copy in test" "inline" { xfail sparc*-*-* visium-*-* } } } */
  /* Missing back-end support for attribute __optimize__ on SPARC and Visium.  */
--- 23,27 ----
    return 0;
  }
  
! /* { dg-final { scan-ipa-dump "hooray\[^\\n\]*inline copy in test" "inline" { xfail { { sparc*-*-* && ilp32 } || visium-*-* } } } } */
  /* Missing back-end support for attribute __optimize__ on SPARC and Visium.  */
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.dg/lto/toplevel-extended-asm-1_0.c gcc-16-20260308/gcc/testsuite/gcc.dg/lto/toplevel-extended-asm-1_0.c
*** gcc-16-20260301/gcc/testsuite/gcc.dg/lto/toplevel-extended-asm-1_0.c	Sun Mar  1 22:32:15 2026
--- gcc-16-20260308/gcc/testsuite/gcc.dg/lto/toplevel-extended-asm-1_0.c	Sun Mar  8 22:32:09 2026
***************
*** 4,11 ****
  void asm_fn();
  void asm_fn_used();
  
! asm(".global %cc0\n%cc0:" :: ":" (asm_fn));
! asm(".global %cc0\n%cc0:" :: ":" (asm_fn_used));
  
  
  __attribute__((noinline))
--- 4,25 ----
  void asm_fn();
  void asm_fn_used();
  
! #ifdef __ELF__
! #ifdef __sparc__
! #define TYPE_PFX "#"
! #elif defined (__arm__) || defined (__aarch64__)
! #define TYPE_PFX "%%"
! #else
! #define TYPE_PFX "@"
! #endif
! 
! #define ASM_FUNCTION ".global %cc0\n\t.type %cc0, " TYPE_PFX "function\n%cc0:"
! #else
! #define ASM_FUNCTION ".global %cc0\n%cc0:"
! #endif
! 
! asm(ASM_FUNCTION :: ":" (asm_fn));
! asm(ASM_FUNCTION :: ":" (asm_fn_used));
  
  
  __attribute__((noinline))
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.dg/plugin/analyzer_cpython_plugin.cc gcc-16-20260308/gcc/testsuite/gcc.dg/plugin/analyzer_cpython_plugin.cc
*** gcc-16-20260301/gcc/testsuite/gcc.dg/plugin/analyzer_cpython_plugin.cc	Sun Mar  1 22:32:15 2026
--- gcc-16-20260308/gcc/testsuite/gcc.dg/plugin/analyzer_cpython_plugin.cc	Sun Mar  8 22:32:09 2026
*************** int plugin_is_GPL_compatible;
*** 51,122 ****
  static GTY (()) hash_map<tree, tree> *analyzer_stashed_types;
  static GTY (()) hash_map<tree, tree> *analyzer_stashed_globals;
  
! namespace ana
! {
! static tree pyobj_record = NULL_TREE;
! static tree pyobj_ptr_tree = NULL_TREE;
! static tree pyobj_ptr_ptr = NULL_TREE;
! static tree varobj_record = NULL_TREE;
! static tree pylistobj_record = NULL_TREE;
! static tree pylongobj_record = NULL_TREE;
! static tree pylongtype_vardecl = NULL_TREE;
! static tree pylisttype_vardecl = NULL_TREE;
  
  static tree
! get_field_by_name (tree type, const char *name)
  {
    for (tree field = TYPE_FIELDS (type); field; field = TREE_CHAIN (field))
      {
        if (TREE_CODE (field) == FIELD_DECL)
!         {
!           const char *field_name = IDENTIFIER_POINTER (DECL_NAME (field));
!           if (strcmp (field_name, name) == 0)
!             return field;
!         }
      }
    return NULL_TREE;
  }
  
! static const svalue *
! get_sizeof_pyobjptr (region_model_manager *mgr)
! {
!   tree size_tree = TYPE_SIZE_UNIT (pyobj_ptr_tree);
!   const svalue *sizeof_sval = mgr->get_or_create_constant_svalue (size_tree);
!   return sizeof_sval;
! }
  
! /* Update MODEL to set OB_BASE_REGION's ob_refcnt to 1.  */
! static void
! init_ob_refcnt_field (region_model_manager *mgr, region_model *model,
!                       const region *ob_base_region, tree pyobj_record,
!                       const call_details &cd)
  {
!   tree ob_refcnt_tree = get_field_by_name (pyobj_record, "ob_refcnt");
!   const region *ob_refcnt_region
        = mgr->get_field_region (ob_base_region, ob_refcnt_tree);
!   const svalue *refcnt_one_sval
        = mgr->get_or_create_int_cst (size_type_node, 1);
!   model->set_value (ob_refcnt_region, refcnt_one_sval, cd.get_ctxt ());
! }
  
! /* Update MODEL to set OB_BASE_REGION's ob_type to point to
!    PYTYPE_VAR_DECL_PTR.  */
! static void
! set_ob_type_field (region_model_manager *mgr, region_model *model,
!                    const region *ob_base_region, tree pyobj_record,
!                    tree pytype_var_decl_ptr, const call_details &cd)
! {
!   const region *pylist_type_region
        = mgr->get_region_for_global (pytype_var_decl_ptr);
!   tree pytype_var_decl_ptr_type
        = build_pointer_type (TREE_TYPE (pytype_var_decl_ptr));
!   const svalue *pylist_type_ptr_sval
        = mgr->get_ptr_svalue (pytype_var_decl_ptr_type, pylist_type_region);
!   tree ob_type_field = get_field_by_name (pyobj_record, "ob_type");
!   const region *ob_type_region
        = mgr->get_field_region (ob_base_region, ob_type_field);
!   model->set_value (ob_type_region, pylist_type_ptr_sval, cd.get_ctxt ());
! }
  
  /* Retrieve the "ob_base" field's region from OBJECT_RECORD within
     NEW_OBJECT_REGION and set its value in the MODEL to PYOBJ_SVALUE. */
--- 51,364 ----
  static GTY (()) hash_map<tree, tree> *analyzer_stashed_types;
  static GTY (()) hash_map<tree, tree> *analyzer_stashed_globals;
  
! namespace ana {
! namespace cpython_plugin {
  
  static tree
! get_field_by_name (tree type, const char *name, bool complain = true)
  {
+   gcc_assert (type);
+   gcc_assert (name);
    for (tree field = TYPE_FIELDS (type); field; field = TREE_CHAIN (field))
      {
        if (TREE_CODE (field) == FIELD_DECL)
! 	if (tree id = DECL_NAME (field))
! 	  {
! 	    const char *field_name = IDENTIFIER_POINTER (id);
! 	    if (strcmp (field_name, name) == 0)
! 	      return field;
! 	  }
! 
!       /* Prior to python 3.11, ob_refcnt a field of PyObject.
! 	 In Python 3.11 ob_refcnt was moved to an anonymous union within
! 	 PyObject (as part of PEP 683 "Immortal Objects, Using a
! 	 Fixed Refcount").  */
!       if (0 == strcmp (name, "ob_refcnt"))
! 	if (tree subfield = get_field_by_name (TREE_TYPE (field), name, false))
! 	  return subfield;
      }
+   if (complain)
+     inform (UNKNOWN_LOCATION, "could not find field %qs of CPython type %qT",
+ 	    name, type);
    return NULL_TREE;
  }
  
! /* Global state and utils for working with the CPython API.
  
!    Attempt to provide some isolation against changes to the API in
!    different versions of CPython.
! 
!    This only persists during the analyzer, and thus doesn't need
!    to interact with the garbage collector.  */
! 
! class api
  {
! public:
!   bool init_from_stashed_types ();
! 
!   // Get RECORD_TYPE for PyObject
!   tree
!   get_type_PyObject () const
!   {
!     gcc_assert (m_type_PyObject);
!     return m_type_PyObject;
!   }
! 
!   // Get FIELD_DECL for PyObject's "ob_refcnt"
!   tree
!   get_field_PyObject_ob_refcnt () const
!   {
!     gcc_assert (m_field_PyObject_ob_refcnt);
!     return m_field_PyObject_ob_refcnt;
!   }
! 
!   // Get FIELD_DECL for PyObject's "ob_type"
!   tree
!   get_field_PyObject_ob_type () const
!   {
!     gcc_assert (m_field_PyObject_ob_type);
!     return m_field_PyObject_ob_type;
!   }
! 
!   // Get POINTER_TYPE for "PyObject *"
!   tree
!   get_type_PyObject_ptr () const
!   {
!     gcc_assert (m_type_PyObject_ptr);
!     return m_type_PyObject_ptr;
!   }
! 
!   // Get POINTER_TYPE for "PyObject **"
!   tree
!   get_type_PyObject_ptr_ptr () const
!   {
!     gcc_assert (m_type_PyObject_ptr_ptr);
!     return m_type_PyObject_ptr_ptr;
!   }
! 
!   // Get RECORD_TYPE for CPython's PyVarObject
!   tree
!   get_type_PyVarObject () const
!   {
!     gcc_assert (m_type_PyVarObject);
!     return m_type_PyVarObject;
!   }
! 
!   // Get FIELD_DECL for PyVarObject's "ob_size"
!   tree
!   get_field_PyVarObject_ob_size () const
!   {
!     gcc_assert (m_field_PyVarObject_ob_size);
!     return m_field_PyVarObject_ob_size;
!   }
! 
!   // Get RECORD_TYPE for CPython's PyListObject
!   tree
!   get_type_PyListObject () const
!   {
!     gcc_assert (m_type_PyListObject);
!     return m_type_PyListObject;
!   }
! 
!   // Get RECORD_TYPE for CPython's PyLongObject
!   tree
!   get_type_PyLongObject () const
!   {
!     gcc_assert (m_type_PyLongObject);
!     return m_type_PyLongObject;
!   }
! 
!   // Get FIELD_DECL for PyListObject's "ob_item"
!   tree
!   get_field_PyListObject_ob_item () const
!   {
!     gcc_assert (m_field_PyListObject_ob_item);
!     return m_field_PyListObject_ob_item;
!   }
! 
!   // Get VAR_DECL for CPython's global var PyList_Type
!   tree
!   get_vardecl_PyList_Type () const
!   {
!     gcc_assert (m_vardecl_PyList_Type);
!     return m_vardecl_PyList_Type;
!   }
! 
!   // Get VAR_DECL for CPython's global var PyLong_Type
!   tree
!   get_vardecl_PyLong_Type () const
!   {
!     gcc_assert (m_vardecl_PyLong_Type);
!     return m_vardecl_PyLong_Type;
!   }
! 
!   /* Get an ana::svalue for "sizeof (PyObject *)".  */
!   const svalue *
!   get_sval_sizeof_PyObject_ptr (region_model_manager *mgr) const
!   {
!     tree size_tree = TYPE_SIZE_UNIT (m_type_PyObject_ptr);
!     const svalue *sizeof_sval = mgr->get_or_create_constant_svalue (size_tree);
!     return sizeof_sval;
!   }
! 
!   /* Update MODEL to set OB_BASE_REGION's ob_refcnt to 1.  */
!   void
!   init_ob_refcnt_field (region_model *model,
! 			const region *ob_base_region,
! 			region_model_context *ctxt)
!   {
!     region_model_manager *mgr = model->get_manager ();
!     tree ob_refcnt_tree = get_field_PyObject_ob_refcnt ();
!     const region *ob_refcnt_region
        = mgr->get_field_region (ob_base_region, ob_refcnt_tree);
!     const svalue *refcnt_one_sval
        = mgr->get_or_create_int_cst (size_type_node, 1);
!     model->set_value (ob_refcnt_region, refcnt_one_sval, ctxt);
!   }
  
!   /* Update MODEL to set OB_BASE_REGION's ob_type to point to
!      PYTYPE_VAR_DECL_PTR.  */
!   void
!   set_ob_type_field (region_model *model,
! 		     const region *ob_base_region,
! 		     tree pytype_var_decl_ptr,
! 		     region_model_context *ctxt)
!   {
!     region_model_manager *mgr = model->get_manager ();
!     const region *pylist_type_region
        = mgr->get_region_for_global (pytype_var_decl_ptr);
!     tree pytype_var_decl_ptr_type
        = build_pointer_type (TREE_TYPE (pytype_var_decl_ptr));
!     const svalue *pylist_type_ptr_sval
        = mgr->get_ptr_svalue (pytype_var_decl_ptr_type, pylist_type_region);
!     tree ob_type_field = get_field_PyObject_ob_type ();
!     const region *ob_type_region
        = mgr->get_field_region (ob_base_region, ob_type_field);
!     model->set_value (ob_type_region, pylist_type_ptr_sval, ctxt);
!   }
! 
!   /* Initialize OB_BASE_REGION as a PyObject_HEAD
!      i.e. set "ob_refcnt" to 1 and "ob_type" to PYTYPE_VAR_DECL_PTR.  */
!   void
!   init_PyObject_HEAD (region_model *model,
! 		      const region *ob_base_region,
! 		      tree pytype_var_decl_ptr,
! 		      region_model_context *ctxt)
!   {
!     // Initialize ob_refcnt field to 1.
!     init_ob_refcnt_field (model, ob_base_region, ctxt);
! 
!     /* Get pointer svalue for PYTYPE_VAR_DECL_PTR then
!        assign it to ob_type field.   */
!     set_ob_type_field (model, ob_base_region,
! 		       pytype_var_decl_ptr, ctxt);
!   }
! 
!   // Get subregion for ob_refcnt within a PyObject instance
!   const region *
!   get_region_PyObject_ob_refcnt (region_model_manager *mgr,
! 				 const region *pyobject_instance_reg)
!   {
!     const region *ob_refcnt_region
!       = mgr->get_field_region (pyobject_instance_reg,
! 			       m_field_PyObject_ob_refcnt);
!     return ob_refcnt_region;
!   }
! 
!   void
!   do_Py_INCREF (region_model *model,
! 		const region *pyobject_instance_reg,
! 		region_model_context *ctxt)
!   {
!     region_model_manager *mgr = model->get_manager ();
!     const region *ob_refcnt_region
!       = get_region_PyObject_ob_refcnt (mgr, pyobject_instance_reg);
!     inc_field_val (model, ob_refcnt_region, size_type_node, ctxt);
!   }
! 
!   // Get subregion for ob_size within a PyVarObject instance
!   const region *
!   get_region_PyVarObject_ob_size (region_model_manager *mgr,
! 				  const region *pyvarobject_instance_reg)
!   {
!     const region *ob_size_region
!       = mgr->get_field_region (pyvarobject_instance_reg,
! 			       m_field_PyVarObject_ob_size);
!     return ob_size_region;
!   }
! 
!   /* Attempt to get the subregion for the "ob_digit" field within
!      PYLONG_REGION, a PyLongObject instance.  */
!   const region *
!   get_region_PyLongObject_ob_digit (region_model_manager *mgr,
! 				    const region *pylong_region)
!   {
!     if (tree ob_digit_field
! 	  = get_field_by_name (m_type_PyLongObject, "ob_digit", false))
!       {
! 	const region *ob_digit_region
! 	  = mgr->get_field_region (pylong_region, ob_digit_field);
! 	return ob_digit_region;
!       }
! 
!     /* TODO: https://github.com/python/cpython/pull/101292
!        moved "ob_digit" from struct _longobject to a new field long_value
!        of a new struct _PyLongValue.  */
! 
!     return nullptr;
!   }
! 
!   /* Increment the value of FIELD_REGION in the MODEL by 1. Optionally
!      capture the old and new svalues if OLD_SVAL and NEW_SVAL pointers are
!      provided. */
!   void
!   inc_field_val (region_model *model,
! 		 const region *field_region, const tree type_node,
! 		 region_model_context *ctxt,
! 		 const svalue **old_sval = nullptr,
! 		 const svalue **new_sval = nullptr)
!   {
!     region_model_manager *mgr = model->get_manager ();
!     const svalue *tmp_old_sval = model->get_store_value (field_region, ctxt);
!     const svalue *one_sval = mgr->get_or_create_int_cst (type_node, 1);
!     const svalue *tmp_new_sval
!       = mgr->get_or_create_binop (type_node, PLUS_EXPR, tmp_old_sval, one_sval);
! 
!     model->set_value (field_region, tmp_new_sval, ctxt);
! 
!     if (old_sval)
!       *old_sval = tmp_old_sval;
! 
!     if (new_sval)
!       *new_sval = tmp_new_sval;
!   }
! 
! private:
!   // PyObject
!   tree m_type_PyObject; // RECORD_TYPE
!   tree m_field_PyObject_ob_refcnt; // FIELD_DECL
!   tree m_field_PyObject_ob_type; // FIELD_DECL
! 
!   // POINTER_TYPE for "PyObject *"
!   tree m_type_PyObject_ptr;
! 
!   // POINTER_TYPE for "PyObject **"
!   tree m_type_PyObject_ptr_ptr;
! 
!   // PyVarObject
!   tree m_type_PyVarObject; // RECORD_TYPE
!   tree m_field_PyVarObject_ob_size; // FIELD_DECL
! 
!   // PyListObject
!   tree m_type_PyListObject; // RECORD_TYPE
!   tree m_field_PyListObject_ob_item; // FIELD_DECL
!   tree m_vardecl_PyList_Type; // VAR_DECL for CPython's global var PyList_Type
! 
!   // PyLongObject
!   tree m_type_PyLongObject; // RECORD_TYPE
!   tree m_vardecl_PyLong_Type; // VAR_DECL for CPython's global var PyLong_Type
! 
! } api;
  
  /* Retrieve the "ob_base" field's region from OBJECT_RECORD within
     NEW_OBJECT_REGION and set its value in the MODEL to PYOBJ_SVALUE. */
*************** get_ob_base_region (region_model_manager
*** 132,138 ****
    return ob_base_region;
  }
  
! /* Initialize and retrieve a region within the MODEL for a PyObject 
     and set its value to OBJECT_SVALUE. */
  static const region *
  init_pyobject_region (region_model_manager *mgr, region_model *model,
--- 374,380 ----
    return ob_base_region;
  }
  
! /* Initialize and retrieve a region within the MODEL for a PyObject
     and set its value to OBJECT_SVALUE. */
  static const region *
  init_pyobject_region (region_model_manager *mgr, region_model *model,
*************** init_pyobject_region (region_model_manag
*** 144,173 ****
    return pyobject_region;
  }
  
- /* Increment the value of FIELD_REGION in the MODEL by 1. Optionally
-    capture the old and new svalues if OLD_SVAL and NEW_SVAL pointers are
-    provided. */
- static void
- inc_field_val (region_model_manager *mgr, region_model *model,
-                const region *field_region, const tree type_node,
-                const call_details &cd, const svalue **old_sval = nullptr,
-                const svalue **new_sval = nullptr)
- {
-   const svalue *tmp_old_sval
-       = model->get_store_value (field_region, cd.get_ctxt ());
-   const svalue *one_sval = mgr->get_or_create_int_cst (type_node, 1);
-   const svalue *tmp_new_sval = mgr->get_or_create_binop (
-       type_node, PLUS_EXPR, tmp_old_sval, one_sval);
- 
-   model->set_value (field_region, tmp_new_sval, cd.get_ctxt ());
- 
-   if (old_sval)
-     *old_sval = tmp_old_sval;
- 
-   if (new_sval)
-     *new_sval = tmp_new_sval;
- }
- 
  class pyobj_init_fail : public failed_call_info
  {
  public:
--- 386,391 ----
*************** class refcnt_mismatch : public pending_d
*** 194,204 ****
  {
  public:
    refcnt_mismatch (const region *base_region,
! 				const svalue *ob_refcnt,
! 				const svalue *actual_refcnt,
!         tree reg_tree)
!       : m_base_region (base_region), m_ob_refcnt (ob_refcnt),
! 	m_actual_refcnt (actual_refcnt), m_reg_tree(reg_tree)
    {
    }
  
--- 412,428 ----
  {
  public:
    refcnt_mismatch (const region *base_region,
! 		   const svalue *ob_refcnt,
! 		   const svalue *actual_refcnt,
! 		   tree reg_tree,
! 		   tree expected_refcnt_tree,
! 		   tree actual_refcnt_tree)
!   : m_base_region (base_region),
!     m_ob_refcnt (ob_refcnt),
!     m_actual_refcnt (actual_refcnt),
!     m_reg_tree (reg_tree),
!     m_expected_refcnt_tree (expected_refcnt_tree),
!     m_actual_refcnt_tree (actual_refcnt_tree)
    {
    }
  
*************** public:
*** 225,240 ****
    emit (diagnostic_emission_context &ctxt) final override
    {
      bool warned;
-     // just assuming constants for now
-     auto actual_refcnt
- 	= m_actual_refcnt->dyn_cast_constant_svalue ()->get_constant ();
-     auto ob_refcnt = m_ob_refcnt->dyn_cast_constant_svalue ()->get_constant ();
      warned = ctxt.warn ("expected %qE to have "
  			"reference count: %qE but ob_refcnt field is: %qE",
! 			m_reg_tree, actual_refcnt, ob_refcnt);
! 
!     // location_t loc = rich_loc->get_loc ();
!     // foo (loc);
      return warned;
    }
  
--- 449,459 ----
    emit (diagnostic_emission_context &ctxt) final override
    {
      bool warned;
      warned = ctxt.warn ("expected %qE to have "
  			"reference count: %qE but ob_refcnt field is: %qE",
! 			m_reg_tree,
! 			m_actual_refcnt_tree,
! 			m_expected_refcnt_tree);
      return warned;
    }
  
*************** public:
*** 245,259 ****
    }
  
  private:
- 
-   void foo(location_t loc) const 
-   {
-     inform(loc, "something is up right here");
-   }
    const region *m_base_region;
    const svalue *m_ob_refcnt;
    const svalue *m_actual_refcnt;
    tree m_reg_tree;
  };
  
  /* Retrieves the svalue associated with the ob_refcnt field of the base region.
--- 464,475 ----
    }
  
  private:
    const region *m_base_region;
    const svalue *m_ob_refcnt;
    const svalue *m_actual_refcnt;
    tree m_reg_tree;
+   tree m_expected_refcnt_tree;
+   tree m_actual_refcnt_tree;
  };
  
  /* Retrieves the svalue associated with the ob_refcnt field of the base region.
*************** retrieve_ob_refcnt_sval (const region *b
*** 263,269 ****
  			 region_model_context *ctxt)
  {
    region_model_manager *mgr = model->get_manager ();
!   tree ob_refcnt_tree = get_field_by_name (pyobj_record, "ob_refcnt");
    const region *ob_refcnt_region
        = mgr->get_field_region (base_reg, ob_refcnt_tree);
    const svalue *ob_refcnt_sval
--- 479,485 ----
  			 region_model_context *ctxt)
  {
    region_model_manager *mgr = model->get_manager ();
!   tree ob_refcnt_tree = api.get_field_PyObject_ob_refcnt ();
    const region *ob_refcnt_region
        = mgr->get_field_region (base_reg, ob_refcnt_tree);
    const svalue *ob_refcnt_sval
*************** count_pyobj_references (const region_mod
*** 310,316 ****
  
    seen.add (pyobj_region);
  
!   if (pyobj_ptr_sval->get_type () == pyobj_ptr_tree)
      increment_region_refcnt (region_to_refcnt, pyobj_region);
  
    const auto *curr_store = model->get_store ();
--- 526,532 ----
  
    seen.add (pyobj_region);
  
!   if (pyobj_ptr_sval->get_type () == api.get_type_PyObject_ptr ())
      increment_region_refcnt (region_to_refcnt, pyobj_region);
  
    const auto *curr_store = model->get_store ();
*************** check_refcnt (const region_model *model,
*** 347,364 ****
    const svalue *actual_refcnt_sval = mgr->get_or_create_int_cst (
        ob_refcnt_sval->get_type (), actual_refcnt);
  
!   if (ob_refcnt_sval != actual_refcnt_sval)
      {
        const svalue *curr_reg_sval
! 	  = mgr->get_ptr_svalue (pyobj_ptr_tree, curr_region);
        tree reg_tree = old_model->get_representative_tree (curr_reg_sval);
        if (!reg_tree)
  	return;
  
        const auto &eg = ctxt->get_eg ();
        auto pd = std::make_unique<refcnt_mismatch> (curr_region, ob_refcnt_sval,
  						   actual_refcnt_sval,
! 						   reg_tree);
        if (pd && eg)
  	ctxt->warn (std::move (pd),
  		    make_ploc_fixer_for_epath_for_leak_diagnostic (*eg,
--- 563,592 ----
    const svalue *actual_refcnt_sval = mgr->get_or_create_int_cst (
        ob_refcnt_sval->get_type (), actual_refcnt);
  
!   if (ob_refcnt_sval != actual_refcnt_sval
!       && ob_refcnt_sval->get_kind () != SK_UNKNOWN
!       && actual_refcnt_sval->get_kind () != SK_UNKNOWN)
      {
        const svalue *curr_reg_sval
! 	= mgr->get_ptr_svalue (api.get_type_PyObject_ptr (), curr_region);
        tree reg_tree = old_model->get_representative_tree (curr_reg_sval);
        if (!reg_tree)
  	return;
+       tree expected_refcnt_tree
+ 	= old_model->get_representative_tree (ob_refcnt_sval);
+       if (!expected_refcnt_tree)
+ 	return;
+       tree actual_refcnt_tree
+ 	= old_model->get_representative_tree (actual_refcnt_sval);
+       if (!actual_refcnt_tree)
+ 	return;
  
        const auto &eg = ctxt->get_eg ();
        auto pd = std::make_unique<refcnt_mismatch> (curr_region, ob_refcnt_sval,
  						   actual_refcnt_sval,
! 						   reg_tree,
! 						   expected_refcnt_tree,
! 						   actual_refcnt_tree);
        if (pd && eg)
  	ctxt->warn (std::move (pd),
  		    make_ploc_fixer_for_epath_for_leak_diagnostic (*eg,
*************** count_all_references (const region_model
*** 417,423 ****
  
  	  const svalue *unwrapped_sval
  	      = binding_sval->unwrap_any_unmergeable ();
! 	  // if (unwrapped_sval->get_type () != pyobj_ptr_tree)
  	  // continue;
  
  	  const region *pointee = unwrapped_sval->maybe_get_region ();
--- 645,651 ----
  
  	  const svalue *unwrapped_sval
  	      = binding_sval->unwrap_any_unmergeable ();
! 	  // if (unwrapped_sval->get_type () != api.m_type_PyObject_ptr)
  	  // continue;
  
  	  const region *pointee = unwrapped_sval->maybe_get_region ();
*************** kf_PyList_Append::impl_call_pre (const c
*** 520,534 ****
      return;
  
    // PyList_Check
!   tree ob_type_field = get_field_by_name (pyobj_record, "ob_type");
    const region *ob_type_region
        = mgr->get_field_region (pylist_reg, ob_type_field);
    const svalue *stored_sval
        = model->get_store_value (ob_type_region, cd.get_ctxt ());
    const region *pylist_type_region
!       = mgr->get_region_for_global (pylisttype_vardecl);
    tree pylisttype_vardecl_ptr
!       = build_pointer_type (TREE_TYPE (pylisttype_vardecl));
    const svalue *pylist_type_ptr
        = mgr->get_ptr_svalue (pylisttype_vardecl_ptr, pylist_type_region);
  
--- 748,762 ----
      return;
  
    // PyList_Check
!   tree ob_type_field = api.get_field_PyObject_ob_type ();
    const region *ob_type_region
        = mgr->get_field_region (pylist_reg, ob_type_field);
    const svalue *stored_sval
        = model->get_store_value (ob_type_region, cd.get_ctxt ());
    const region *pylist_type_region
!     = mgr->get_region_for_global (api.get_vardecl_PyList_Type ());
    tree pylisttype_vardecl_ptr
!     = build_pointer_type (TREE_TYPE (api.get_vardecl_PyList_Type ()));
    const svalue *pylist_type_ptr
        = mgr->get_ptr_svalue (pylisttype_vardecl_ptr, pylist_type_region);
  
*************** kf_PyList_Append::impl_call_post (const
*** 578,584 ****
            pylist_sval, cd.get_arg_tree (0), cd.get_ctxt ());
  
        /* Identify ob_item field and set it to NULL. */
!       tree ob_item_field = get_field_by_name (pylistobj_record, "ob_item");
        const region *ob_item_reg
            = mgr->get_field_region (pylist_reg, ob_item_field);
        const svalue *old_ptr_sval
--- 806,812 ----
            pylist_sval, cd.get_arg_tree (0), cd.get_ctxt ());
  
        /* Identify ob_item field and set it to NULL. */
!       tree ob_item_field = api.get_field_PyListObject_ob_item ();
        const region *ob_item_reg
            = mgr->get_field_region (pylist_reg, ob_item_field);
        const svalue *old_ptr_sval
*************** kf_PyList_Append::impl_call_post (const
*** 592,598 ****
            model->unset_dynamic_extents (freed_reg);
          }
  
!       const svalue *null_sval = mgr->get_or_create_null_ptr (pyobj_ptr_ptr);
        model->set_value (ob_item_reg, null_sval, cd.get_ctxt ());
  
        if (cd.get_lhs_type ())
--- 820,826 ----
            model->unset_dynamic_extents (freed_reg);
          }
  
!       const svalue *null_sval = mgr->get_or_create_null_ptr (api.get_type_PyObject_ptr_ptr ());
        model->set_value (ob_item_reg, null_sval, cd.get_ctxt ());
  
        if (cd.get_lhs_type ())
*************** kf_PyList_Append::impl_call_post (const
*** 633,652 ****
        const region *newitem_reg = model->deref_rvalue (
            newitem_sval, cd.get_arg_tree (1), cd.get_ctxt ());
  
-       tree ob_size_field = get_field_by_name (varobj_record, "ob_size");
        const region *ob_size_region
!           = mgr->get_field_region (pylist_reg, ob_size_field);
        const svalue *ob_size_sval = nullptr;
        const svalue *new_size_sval = nullptr;
!       inc_field_val (mgr, model, ob_size_region, integer_type_node, cd,
!                      &ob_size_sval, &new_size_sval);
  
        const svalue *sizeof_sval = mgr->get_or_create_cast (
!           ob_size_sval->get_type (), get_sizeof_pyobjptr (mgr));
        const svalue *num_allocated_bytes = mgr->get_or_create_binop (
            size_type_node, MULT_EXPR, sizeof_sval, new_size_sval);
  
!       tree ob_item_field = get_field_by_name (pylistobj_record, "ob_item");
        const region *ob_item_region
            = mgr->get_field_region (pylist_reg, ob_item_field);
        const svalue *ob_item_ptr_sval
--- 861,879 ----
        const region *newitem_reg = model->deref_rvalue (
            newitem_sval, cd.get_arg_tree (1), cd.get_ctxt ());
  
        const region *ob_size_region
! 	= api.get_region_PyVarObject_ob_size (mgr, pylist_reg);
        const svalue *ob_size_sval = nullptr;
        const svalue *new_size_sval = nullptr;
!       api.inc_field_val (model, ob_size_region, integer_type_node, ctxt,
! 			 &ob_size_sval, &new_size_sval);
  
        const svalue *sizeof_sval = mgr->get_or_create_cast (
!           ob_size_sval->get_type (), api.get_sval_sizeof_PyObject_ptr (mgr));
        const svalue *num_allocated_bytes = mgr->get_or_create_binop (
            size_type_node, MULT_EXPR, sizeof_sval, new_size_sval);
  
!       tree ob_item_field = api.get_field_PyListObject_ob_item ();
        const region *ob_item_region
            = mgr->get_field_region (pylist_reg, ob_item_field);
        const svalue *ob_item_ptr_sval
*************** kf_PyList_Append::impl_call_post (const
*** 655,661 ****
        /* We can only grow in place with a non-NULL pointer and no unknown
         */
        {
!         const svalue *null_ptr = mgr->get_or_create_null_ptr (pyobj_ptr_ptr);
          if (!model->add_constraint (ob_item_ptr_sval, NE_EXPR, null_ptr,
                                      cd.get_ctxt ()))
            {
--- 882,888 ----
        /* We can only grow in place with a non-NULL pointer and no unknown
         */
        {
!         const svalue *null_ptr = mgr->get_or_create_null_ptr (api.get_type_PyObject_ptr_ptr ());
          if (!model->add_constraint (ob_item_ptr_sval, NE_EXPR, null_ptr,
                                      cd.get_ctxt ()))
            {
*************** kf_PyList_Append::impl_call_post (const
*** 696,709 ****
        const svalue *offset_sval = mgr->get_or_create_binop (
            size_type_node, MULT_EXPR, sizeof_sval, ob_size_sval);
        const region *element_region
!           = mgr->get_offset_region (curr_reg, pyobj_ptr_ptr, offset_sval);
        model->set_value (element_region, newitem_sval, cd.get_ctxt ());
  
        // Increment ob_refcnt of appended item.
!       tree ob_refcnt_tree = get_field_by_name (pyobj_record, "ob_refcnt");
!       const region *ob_refcnt_region
!           = mgr->get_field_region (newitem_reg, ob_refcnt_tree);
!       inc_field_val (mgr, model, ob_refcnt_region, size_type_node, cd);
  
        if (cd.get_lhs_type ())
          {
--- 923,933 ----
        const svalue *offset_sval = mgr->get_or_create_binop (
            size_type_node, MULT_EXPR, sizeof_sval, ob_size_sval);
        const region *element_region
!           = mgr->get_offset_region (curr_reg, api.get_type_PyObject_ptr_ptr (), offset_sval);
        model->set_value (element_region, newitem_sval, cd.get_ctxt ());
  
        // Increment ob_refcnt of appended item.
!       api.do_Py_INCREF (model, newitem_reg, ctxt);
  
        if (cd.get_lhs_type ())
          {
*************** kf_PyList_Append::impl_call_post (const
*** 742,761 ****
        const region *newitem_reg = model->deref_rvalue (
            newitem_sval, cd.get_arg_tree (1), cd.get_ctxt ());
  
-       tree ob_size_field = get_field_by_name (varobj_record, "ob_size");
        const region *ob_size_region
!           = mgr->get_field_region (pylist_reg, ob_size_field);
        const svalue *old_ob_size_sval = nullptr;
        const svalue *new_ob_size_sval = nullptr;
!       inc_field_val (mgr, model, ob_size_region, integer_type_node, cd,
!                      &old_ob_size_sval, &new_ob_size_sval);
  
        const svalue *sizeof_sval = mgr->get_or_create_cast (
!           old_ob_size_sval->get_type (), get_sizeof_pyobjptr (mgr));
        const svalue *new_size_sval = mgr->get_or_create_binop (
            size_type_node, MULT_EXPR, sizeof_sval, new_ob_size_sval);
  
!       tree ob_item_field = get_field_by_name (pylistobj_record, "ob_item");
        const region *ob_item_reg
            = mgr->get_field_region (pylist_reg, ob_item_field);
        const svalue *old_ptr_sval
--- 966,984 ----
        const region *newitem_reg = model->deref_rvalue (
            newitem_sval, cd.get_arg_tree (1), cd.get_ctxt ());
  
        const region *ob_size_region
! 	= api.get_region_PyVarObject_ob_size (mgr, pylist_reg);
        const svalue *old_ob_size_sval = nullptr;
        const svalue *new_ob_size_sval = nullptr;
!       api.inc_field_val (model, ob_size_region, integer_type_node, ctxt,
! 			 &old_ob_size_sval, &new_ob_size_sval);
  
        const svalue *sizeof_sval = mgr->get_or_create_cast (
!           old_ob_size_sval->get_type (), api.get_sval_sizeof_PyObject_ptr (mgr));
        const svalue *new_size_sval = mgr->get_or_create_binop (
            size_type_node, MULT_EXPR, sizeof_sval, new_ob_size_sval);
  
!       tree ob_item_field = api.get_field_PyListObject_ob_item ();
        const region *ob_item_reg
            = mgr->get_field_region (pylist_reg, ob_item_field);
        const svalue *old_ptr_sval
*************** kf_PyList_Append::impl_call_post (const
*** 765,771 ****
        const region *new_reg = model->get_or_create_region_for_heap_alloc (
            new_size_sval, cd.get_ctxt ());
        const svalue *new_ptr_sval
!           = mgr->get_ptr_svalue (pyobj_ptr_ptr, new_reg);
        if (!model->add_constraint (new_ptr_sval, NE_EXPR, old_ptr_sval,
                                    cd.get_ctxt ()))
          return false;
--- 988,994 ----
        const region *new_reg = model->get_or_create_region_for_heap_alloc (
            new_size_sval, cd.get_ctxt ());
        const svalue *new_ptr_sval
!           = mgr->get_ptr_svalue (api.get_type_PyObject_ptr_ptr (), new_reg);
        if (!model->add_constraint (new_ptr_sval, NE_EXPR, old_ptr_sval,
                                    cd.get_ctxt ()))
          return false;
*************** kf_PyList_Append::impl_call_post (const
*** 780,790 ****
                const svalue *copied_size_sval
                    = get_copied_size (model, old_size_sval, new_size_sval);
                const region *copied_old_reg = mgr->get_sized_region (
!                   freed_reg, pyobj_ptr_ptr, copied_size_sval);
                const svalue *buffer_content_sval
                    = model->get_store_value (copied_old_reg, cd.get_ctxt ());
                const region *copied_new_reg = mgr->get_sized_region (
!                   new_reg, pyobj_ptr_ptr, copied_size_sval);
                model->set_value (copied_new_reg, buffer_content_sval,
                                  cd.get_ctxt ());
              }
--- 1003,1013 ----
                const svalue *copied_size_sval
                    = get_copied_size (model, old_size_sval, new_size_sval);
                const region *copied_old_reg = mgr->get_sized_region (
!                   freed_reg, api.get_type_PyObject_ptr_ptr (), copied_size_sval);
                const svalue *buffer_content_sval
                    = model->get_store_value (copied_old_reg, cd.get_ctxt ());
                const region *copied_new_reg = mgr->get_sized_region (
!                   new_reg, api.get_type_PyObject_ptr_ptr (), copied_size_sval);
                model->set_value (copied_new_reg, buffer_content_sval,
                                  cd.get_ctxt ());
              }
*************** kf_PyList_Append::impl_call_post (const
*** 797,803 ****
            model->unset_dynamic_extents (freed_reg);
          }
  
!       const svalue *null_ptr = mgr->get_or_create_null_ptr (pyobj_ptr_ptr);
        if (!model->add_constraint (new_ptr_sval, NE_EXPR, null_ptr,
                                    cd.get_ctxt ()))
          return false;
--- 1020,1026 ----
            model->unset_dynamic_extents (freed_reg);
          }
  
!       const svalue *null_ptr = mgr->get_or_create_null_ptr (api.get_type_PyObject_ptr_ptr ());
        if (!model->add_constraint (new_ptr_sval, NE_EXPR, null_ptr,
                                    cd.get_ctxt ()))
          return false;
*************** kf_PyList_Append::impl_call_post (const
*** 808,821 ****
        const svalue *offset_sval = mgr->get_or_create_binop (
            size_type_node, MULT_EXPR, sizeof_sval, old_ob_size_sval);
        const region *element_region
!           = mgr->get_offset_region (new_reg, pyobj_ptr_ptr, offset_sval);
        model->set_value (element_region, newitem_sval, cd.get_ctxt ());
  
        // Increment ob_refcnt of appended item.
!       tree ob_refcnt_tree = get_field_by_name (pyobj_record, "ob_refcnt");
!       const region *ob_refcnt_region
!           = mgr->get_field_region (newitem_reg, ob_refcnt_tree);
!       inc_field_val (mgr, model, ob_refcnt_region, size_type_node, cd);
  
        if (cd.get_lhs_type ())
          {
--- 1031,1041 ----
        const svalue *offset_sval = mgr->get_or_create_binop (
            size_type_node, MULT_EXPR, sizeof_sval, old_ob_size_sval);
        const region *element_region
!           = mgr->get_offset_region (new_reg, api.get_type_PyObject_ptr_ptr (), offset_sval);
        model->set_value (element_region, newitem_sval, cd.get_ctxt ());
  
        // Increment ob_refcnt of appended item.
!       api.do_Py_INCREF (model, newitem_reg, ctxt);
  
        if (cd.get_lhs_type ())
          {
*************** kf_PyList_New::impl_call_post (const cal
*** 885,895 ****
        region_model_manager *mgr = cd.get_manager ();
  
        const svalue *pyobj_svalue
!           = mgr->get_or_create_unknown_svalue (pyobj_record);
        const svalue *varobj_svalue
!           = mgr->get_or_create_unknown_svalue (varobj_record);
        const svalue *pylist_svalue
!           = mgr->get_or_create_unknown_svalue (pylistobj_record);
  
        const svalue *size_sval = cd.get_arg_svalue (0);
  
--- 1105,1115 ----
        region_model_manager *mgr = cd.get_manager ();
  
        const svalue *pyobj_svalue
! 	= mgr->get_or_create_unknown_svalue (api.get_type_PyObject ());
        const svalue *varobj_svalue
! 	= mgr->get_or_create_unknown_svalue (api.get_type_PyVarObject ());
        const svalue *pylist_svalue
! 	= mgr->get_or_create_unknown_svalue (api.get_type_PyListObject ());
  
        const svalue *size_sval = cd.get_arg_svalue (0);
  
*************** kf_PyList_New::impl_call_post (const cal
*** 904,915 ****
          Py_ssize_t allocated;
        } PyListObject;
        */
!       tree varobj_field = get_field_by_name (pylistobj_record, "ob_base");
        const region *varobj_region
            = mgr->get_field_region (pylist_region, varobj_field);
        model->set_value (varobj_region, varobj_svalue, cd.get_ctxt ());
  
!       tree ob_item_field = get_field_by_name (pylistobj_record, "ob_item");
        const region *ob_item_region
            = mgr->get_field_region (pylist_region, ob_item_field);
  
--- 1124,1136 ----
          Py_ssize_t allocated;
        } PyListObject;
        */
!       tree varobj_field = get_field_by_name (api.get_type_PyListObject (),
! 					     "ob_base");
        const region *varobj_region
            = mgr->get_field_region (pylist_region, varobj_field);
        model->set_value (varobj_region, varobj_svalue, cd.get_ctxt ());
  
!       tree ob_item_field = api.get_field_PyListObject_ob_item ();
        const region *ob_item_region
            = mgr->get_field_region (pylist_region, ob_item_field);
  
*************** kf_PyList_New::impl_call_post (const cal
*** 925,937 ****
                                integer_one_node))
          {
            const svalue *null_sval
!               = mgr->get_or_create_null_ptr (pyobj_ptr_ptr);
            model->set_value (ob_item_region, null_sval, cd.get_ctxt ());
          }
        else // calloc
          {
            const svalue *sizeof_sval = mgr->get_or_create_cast (
!               size_sval->get_type (), get_sizeof_pyobjptr (mgr));
            const svalue *prod_sval = mgr->get_or_create_binop (
                size_type_node, MULT_EXPR, sizeof_sval, size_sval);
            const region *ob_item_sized_region
--- 1146,1158 ----
                                integer_one_node))
          {
            const svalue *null_sval
!               = mgr->get_or_create_null_ptr (api.get_type_PyObject_ptr_ptr ());
            model->set_value (ob_item_region, null_sval, cd.get_ctxt ());
          }
        else // calloc
          {
            const svalue *sizeof_sval = mgr->get_or_create_cast (
!               size_sval->get_type (), api.get_sval_sizeof_PyObject_ptr (mgr));
            const svalue *prod_sval = mgr->get_or_create_binop (
                size_type_node, MULT_EXPR, sizeof_sval, size_sval);
            const region *ob_item_sized_region
*************** kf_PyList_New::impl_call_post (const cal
*** 939,945 ****
                                                              cd.get_ctxt ());
            model->zero_fill_region (ob_item_sized_region, cd.get_ctxt ());
            const svalue *ob_item_ptr_sval
!               = mgr->get_ptr_svalue (pyobj_ptr_ptr, ob_item_sized_region);
            const svalue *ob_item_unmergeable
                = mgr->get_or_create_unmergeable (ob_item_ptr_sval);
            model->set_value (ob_item_region, ob_item_unmergeable,
--- 1160,1167 ----
                                                              cd.get_ctxt ());
            model->zero_fill_region (ob_item_sized_region, cd.get_ctxt ());
            const svalue *ob_item_ptr_sval
!               = mgr->get_ptr_svalue (api.get_type_PyObject_ptr_ptr (),
! 				     ob_item_sized_region);
            const svalue *ob_item_unmergeable
                = mgr->get_or_create_unmergeable (ob_item_ptr_sval);
            model->set_value (ob_item_region, ob_item_unmergeable,
*************** kf_PyList_New::impl_call_post (const cal
*** 952,978 ****
        Py_ssize_t ob_size; // Number of items in variable part
        } PyVarObject;
        */
!       const region *ob_base_region = get_ob_base_region (
!           mgr, model, varobj_region, varobj_record, pyobj_svalue, cd);
  
-       tree ob_size_tree = get_field_by_name (varobj_record, "ob_size");
        const region *ob_size_region
!           = mgr->get_field_region (varobj_region, ob_size_tree);
        model->set_value (ob_size_region, size_sval, cd.get_ctxt ());
  
!       /*
!       typedef struct _object {
!           _PyObject_HEAD_EXTRA
!           Py_ssize_t ob_refcnt;
!           PyTypeObject *ob_type;
!       } PyObject;
!       */
! 
!       // Initialize ob_refcnt field to 1.
!       init_ob_refcnt_field(mgr, model, ob_base_region, pyobj_record, cd);
! 
!       // Get pointer svalue for PyList_Type then assign it to ob_type field.
!       set_ob_type_field(mgr, model, ob_base_region, pyobj_record, pylisttype_vardecl, cd);
  
        if (cd.get_lhs_type ())
          {
--- 1174,1190 ----
        Py_ssize_t ob_size; // Number of items in variable part
        } PyVarObject;
        */
!       const region *ob_base_region
! 	= get_ob_base_region (mgr, model, varobj_region,
! 			      api.get_type_PyVarObject (),
! 			      pyobj_svalue, cd);
  
        const region *ob_size_region
! 	= api.get_region_PyVarObject_ob_size (mgr, varobj_region);
        model->set_value (ob_size_region, size_sval, cd.get_ctxt ());
  
!       api.init_PyObject_HEAD (model, ob_base_region,
! 			      api.get_vardecl_PyList_Type (), ctxt);
  
        if (cd.get_lhs_type ())
          {
*************** kf_PyLong_FromLong::impl_call_post (cons
*** 1019,1047 ****
        region_model_manager *mgr = cd.get_manager ();
  
        const svalue *pyobj_svalue
!           = mgr->get_or_create_unknown_svalue (pyobj_record);
        const svalue *pylongobj_sval
!           = mgr->get_or_create_unknown_svalue (pylongobj_record);
  
        const region *pylong_region
            = init_pyobject_region (mgr, model, pylongobj_sval, cd);
  
        // Create a region for the base PyObject within the PyLongObject.
        const region *ob_base_region = get_ob_base_region (
!           mgr, model, pylong_region, pylongobj_record, pyobj_svalue, cd);
! 
!       // Initialize ob_refcnt field to 1.
!       init_ob_refcnt_field(mgr, model, ob_base_region, pyobj_record, cd);
  
!       // Get pointer svalue for PyLong_Type then assign it to ob_type field.
!       set_ob_type_field(mgr, model, ob_base_region, pyobj_record, pylongtype_vardecl, cd);
  
        // Set the PyLongObject value.
!       tree ob_digit_field = get_field_by_name (pylongobj_record, "ob_digit");
!       const region *ob_digit_region
!           = mgr->get_field_region (pylong_region, ob_digit_field);
!       const svalue *ob_digit_sval = cd.get_arg_svalue (0);
!       model->set_value (ob_digit_region, ob_digit_sval, cd.get_ctxt ());
  
        if (cd.get_lhs_type ())
          {
--- 1231,1257 ----
        region_model_manager *mgr = cd.get_manager ();
  
        const svalue *pyobj_svalue
! 	= mgr->get_or_create_unknown_svalue (api.get_type_PyObject ());
        const svalue *pylongobj_sval
! 	= mgr->get_or_create_unknown_svalue (api.get_type_PyLongObject ());
  
        const region *pylong_region
            = init_pyobject_region (mgr, model, pylongobj_sval, cd);
  
        // Create a region for the base PyObject within the PyLongObject.
        const region *ob_base_region = get_ob_base_region (
!           mgr, model, pylong_region, api.get_type_PyLongObject (), pyobj_svalue, cd);
  
!       api.init_PyObject_HEAD (model, ob_base_region,
! 			      api.get_vardecl_PyLong_Type (), ctxt);
  
        // Set the PyLongObject value.
!       if (const region *ob_digit_region
! 	  = api.get_region_PyLongObject_ob_digit (mgr, pylong_region))
! 	{
! 	  const svalue *ob_digit_sval = cd.get_arg_svalue (0);
! 	  model->set_value (ob_digit_region, ob_digit_sval, cd.get_ctxt ());
! 	}
  
        if (cd.get_lhs_type ())
          {
*************** get_stashed_type_by_name (const char *na
*** 1138,1143 ****
--- 1348,1354 ----
        gcc_assert (TREE_CODE (*slot) == RECORD_TYPE);
        return *slot;
      }
+   inform (UNKNOWN_LOCATION, "could not find CPython type %qs", name);
    return NULL_TREE;
  }
  
*************** get_stashed_global_var_by_name (const ch
*** 1152,1175 ****
        gcc_assert (TREE_CODE (*slot) == VAR_DECL);
        return *slot;
      }
    return NULL_TREE;
  }
  
! static void
! init_py_structs ()
  {
!   pyobj_record = get_stashed_type_by_name ("PyObject");
!   varobj_record = get_stashed_type_by_name ("PyVarObject");
!   pylistobj_record = get_stashed_type_by_name ("PyListObject");
!   pylongobj_record = get_stashed_type_by_name ("PyLongObject");
!   pylongtype_vardecl = get_stashed_global_var_by_name ("PyLong_Type");
!   pylisttype_vardecl = get_stashed_global_var_by_name ("PyList_Type");
  
!   if (pyobj_record)
!     {
!       pyobj_ptr_tree = build_pointer_type (pyobj_record);
!       pyobj_ptr_ptr = build_pointer_type (pyobj_ptr_tree);
!     }
  }
  
  void
--- 1363,1434 ----
        gcc_assert (TREE_CODE (*slot) == VAR_DECL);
        return *slot;
      }
+   inform (UNKNOWN_LOCATION, "could not find CPython global %qs", name);
    return NULL_TREE;
  }
  
! /* Attempt to find the various types for the CPython API, which
!    we hope were stashed when the frontend ran.
! 
!    Return true if we found enough to run the plugin,
!    false if it doesn't make sense to run it.  */
! 
! bool
! api::init_from_stashed_types ()
  {
!   memset (this, 0, sizeof (*this));
  
!   m_type_PyObject = get_stashed_type_by_name ("PyObject");
!   if (!m_type_PyObject)
!     return false;
!   gcc_assert (TREE_CODE (m_type_PyObject) == RECORD_TYPE);
! 
!   m_field_PyObject_ob_refcnt
!     = get_field_by_name (m_type_PyObject, "ob_refcnt");
!   if (!m_field_PyObject_ob_refcnt)
!     return false;
! 
!   m_field_PyObject_ob_type
!     = get_field_by_name (m_type_PyObject, "ob_type");
!   if (!m_field_PyObject_ob_type)
!     return false;
! 
!   /* PyVarObject.  */
!   m_type_PyVarObject = get_stashed_type_by_name ("PyVarObject");
!   if (!m_type_PyVarObject)
!     return false;
!   gcc_assert (TREE_CODE (m_type_PyVarObject) == RECORD_TYPE);
!   m_field_PyVarObject_ob_size
!     = get_field_by_name (m_type_PyVarObject, "ob_size");
!   if (!m_field_PyVarObject_ob_size)
!     return false;
! 
!   /* PyListObject.  */
!   m_type_PyListObject = get_stashed_type_by_name ("PyListObject");
!   if (!m_type_PyListObject)
!     return false;
!   m_field_PyListObject_ob_item
!     = get_field_by_name (m_type_PyListObject, "ob_item");
!   if (!m_field_PyListObject_ob_item)
!     return false;
! 
!   m_vardecl_PyList_Type = get_stashed_global_var_by_name ("PyList_Type");
!   if (!m_vardecl_PyList_Type)
!     return false;
! 
!   /* PyLongObject.  */
!   m_type_PyLongObject = get_stashed_type_by_name ("PyLongObject");
!   if (!m_type_PyLongObject)
!     return false;
! 
!   m_vardecl_PyLong_Type = get_stashed_global_var_by_name ("PyLong_Type");
!   if (!m_vardecl_PyLong_Type)
!     return false;
! 
!   m_type_PyObject_ptr = build_pointer_type (m_type_PyObject);
!   m_type_PyObject_ptr_ptr = build_pointer_type (m_type_PyObject_ptr);
! 
!   return true;
  }
  
  void
*************** sorry_no_cpython_plugin ()
*** 1182,1190 ****
  
  namespace analyzer_events = ::gcc::topics::analyzer_events;
  
! class cpython_analyzer_events_subscriber : public analyzer_events::subscriber
  {
  public:
    void
    on_message (const analyzer_events::on_tu_finished &msg) final override
    {
--- 1441,1454 ----
  
  namespace analyzer_events = ::gcc::topics::analyzer_events;
  
! class analyzer_events_subscriber : public analyzer_events::subscriber
  {
  public:
+   analyzer_events_subscriber ()
+   : m_init_failed (false)
+   {
+   }
+ 
    void
    on_message (const analyzer_events::on_tu_finished &msg) final override
    {
*************** public:
*** 1198,1210 ****
    {
      LOG_SCOPE (m.get_logger ());
  
!     init_py_structs ();
! 
!     if (pyobj_record == NULL_TREE)
        {
  	sorry_no_cpython_plugin ();
  	return;
        }
  
      m.register_known_function ("PyList_Append",
  			       std::make_unique<kf_PyList_Append> ());
--- 1462,1474 ----
    {
      LOG_SCOPE (m.get_logger ());
  
!     if (!api.init_from_stashed_types ())
        {
  	sorry_no_cpython_plugin ();
+ 	m_init_failed = true;
  	return;
        }
+     gcc_assert (api.get_type_PyObject ());
  
      m.register_known_function ("PyList_Append",
  			       std::make_unique<kf_PyList_Append> ());
*************** public:
*** 1220,1232 ****
    void
    on_message (const analyzer_events::on_frame_popped &msg) final override
    {
      pyobj_refcnt_checker (msg.m_new_model,
  			  msg.m_old_model,
  			  msg.m_retval,
  			  msg.m_ctxt);
    }
- } cpython_sub;
  
  } // namespace ana
  
  #endif /* #if ENABLE_ANALYZER */
--- 1484,1502 ----
    void
    on_message (const analyzer_events::on_frame_popped &msg) final override
    {
+     if (m_init_failed)
+       return;
      pyobj_refcnt_checker (msg.m_new_model,
  			  msg.m_old_model,
  			  msg.m_retval,
  			  msg.m_ctxt);
    }
  
+ private:
+   bool m_init_failed;
+ } event_sub;
+ 
+ } // namespace ana::cpython_plugin
  } // namespace ana
  
  #endif /* #if ENABLE_ANALYZER */
*************** plugin_init (struct plugin_name_args *pl
*** 1239,1245 ****
    const char *plugin_name = plugin_info->base_name;
    if (0)
      inform (input_location, "got here; %qs", plugin_name);
!   g->get_channels ().analyzer_events_channel.add_subscriber (ana::cpython_sub);
  #else
    sorry_no_analyzer ();
  #endif
--- 1509,1516 ----
    const char *plugin_name = plugin_info->base_name;
    if (0)
      inform (input_location, "got here; %qs", plugin_name);
!   g->get_channels ().analyzer_events_channel.add_subscriber
!     (ana::cpython_plugin::event_sub);
  #else
    sorry_no_analyzer ();
  #endif
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.dg/pr122572.c gcc-16-20260308/gcc/testsuite/gcc.dg/pr122572.c
*** gcc-16-20260301/gcc/testsuite/gcc.dg/pr122572.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/gcc.dg/pr122572.c	Sun Mar  8 22:32:09 2026
***************
*** 0 ****
--- 1,46 ----
+ /* { dg-do run } */
+ /* { dg-options "-std=c23 -O2" } */
+ 
+ typedef struct {
+ 	int *arg;
+ 	int flags;
+ } optStruct;
+ 
+ typedef struct {
+ 	int *specified;
+ 	int flags;
+ } optEntry;
+ 
+ typedef struct {
+ 	int short_allowed;
+ 	optStruct *opt_table;
+ } optStruct2;
+ 
+ typedef struct {
+ 	int short_allowed;
+ 	optEntry *opt_table;
+ } optStruct3;
+ 
+ [[gnu::noipa]]
+ void f(int, int, optStruct3 a)
+ {
+ 	 a.opt_table[0].flags = 1;
+ }
+ 
+ [[gnu::noipa]]
+ int alias_bug (void)
+ {
+ 	static optEntry option_def[50];
+ 	static optStruct3 opt;
+ 	option_def[0].flags = 0;
+ 	opt.opt_table = option_def;
+ 	f (0, 0, opt);
+ 	return opt.opt_table[0].flags;
+ }
+ 
+ int main()
+ {
+ 	if (1 != alias_bug())
+ 		__builtin_abort();
+ }
+ 
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.dg/pr123356-1.c gcc-16-20260308/gcc/testsuite/gcc.dg/pr123356-1.c
*** gcc-16-20260301/gcc/testsuite/gcc.dg/pr123356-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/gcc.dg/pr123356-1.c	Sun Mar  8 22:32:09 2026
***************
*** 0 ****
--- 1,58 ----
+ /* { dg-do run } */
+ /* { dg-options "-O2" } */
+ 
+ typedef struct
+ {
+     long  coeffs;
+ }
+ fmpz_poly_struct;
+ typedef struct
+ {
+ } n_poly_struct;
+ typedef struct
+ {
+     n_poly_struct * coeffs;
+     long alloc;
+     long length;
+ } n_bpoly_struct;
+ typedef struct
+ {
+     fmpz_poly_struct * coeffs;
+     long alloc;
+     long length;
+ } fmpz_bpoly_struct;
+ typedef fmpz_bpoly_struct fmpz_bpoly_t[];
+ 
+ __attribute__((noinline))
+ fmpz_poly_struct * fmpz_bpoly_swap_(fmpz_bpoly_t B, fmpz_bpoly_t Q)
+ {
+     fmpz_bpoly_struct t = *B;
+     *B = *Q;
+     *Q = t;
+     return B->coeffs;
+ }
+ 
+ __attribute__((noinline,optimize("no-strict-aliasing")))
+ fmpz_poly_struct * fmpz_bpoly_swap_2(fmpz_bpoly_t B, fmpz_bpoly_t Q)
+ {
+     fmpz_bpoly_struct t = *B;
+     *B = *Q;
+     *Q = t;
+     return B->coeffs;
+ }
+ 
+ int main(){
+     fmpz_poly_struct B_coeffs = {0}, Q_coeffs = {0};
+     fmpz_bpoly_t B = {0};
+     fmpz_bpoly_t Q = {0};
+     B->coeffs = &B_coeffs;
+     Q->coeffs = &Q_coeffs;
+     if (fmpz_bpoly_swap_(B, Q) != &Q_coeffs)
+ 	    __builtin_abort();
+     B->coeffs = &B_coeffs;
+     Q->coeffs = &Q_coeffs;
+     if (fmpz_bpoly_swap_2(B, Q) != &Q_coeffs)
+ 	    __builtin_abort();
+     return 0;
+ }
+ 
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.dg/pr123356-2.c gcc-16-20260308/gcc/testsuite/gcc.dg/pr123356-2.c
*** gcc-16-20260301/gcc/testsuite/gcc.dg/pr123356-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/gcc.dg/pr123356-2.c	Sun Mar  8 22:32:09 2026
***************
*** 0 ****
--- 1,69 ----
+ /* { dg-do run } */
+ /* { dg-options "-O2" } */
+ 
+ 
+ /* Based on the submitted test case but using types with
+  * tags and moving the second version into another scope.  */
+ 
+ typedef struct foo
+ {
+     long  coeffs;
+ }
+ fmpz_poly_struct;
+ 
+ 
+ void f()
+ {
+ 	typedef struct foo
+ 	{
+ 	} n_poly_struct;
+ 	typedef struct
+ 	{
+ 	    n_poly_struct * coeffs;
+ 	    long alloc;
+ 	    long length;
+ 	} n_bpoly_struct;
+ }
+ 
+ 
+ typedef struct
+ {
+     fmpz_poly_struct * coeffs;
+     long alloc;
+     long length;
+ } fmpz_bpoly_struct;
+ typedef fmpz_bpoly_struct fmpz_bpoly_t[];
+ 
+ __attribute__((noinline))
+ fmpz_poly_struct * fmpz_bpoly_swap_(fmpz_bpoly_t B, fmpz_bpoly_t Q)
+ {
+     fmpz_bpoly_struct t = *B;
+     *B = *Q;
+     *Q = t;
+     return B->coeffs;
+ }
+ 
+ __attribute__((noinline,optimize("no-strict-aliasing")))
+ fmpz_poly_struct * fmpz_bpoly_swap_2(fmpz_bpoly_t B, fmpz_bpoly_t Q)
+ {
+     fmpz_bpoly_struct t = *B;
+     *B = *Q;
+     *Q = t;
+     return B->coeffs;
+ }
+ 
+ int main(){
+     fmpz_poly_struct B_coeffs = {0}, Q_coeffs = {0};
+     fmpz_bpoly_t B = {0};
+     fmpz_bpoly_t Q = {0};
+     B->coeffs = &B_coeffs;
+     Q->coeffs = &Q_coeffs;
+     if (fmpz_bpoly_swap_(B, Q) != &Q_coeffs)
+ 	    __builtin_abort();
+     B->coeffs = &B_coeffs;
+     Q->coeffs = &Q_coeffs;
+     if (fmpz_bpoly_swap_2(B, Q) != &Q_coeffs)
+ 	    __builtin_abort();
+     return 0;
+ }
+ 
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.dg/pr123856.c gcc-16-20260308/gcc/testsuite/gcc.dg/pr123856.c
*** gcc-16-20260301/gcc/testsuite/gcc.dg/pr123856.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/gcc.dg/pr123856.c	Sun Mar  8 22:32:09 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-Wenum-conversion" } */
+ 
+ typedef __attribute__((__hardbool__)) int A, B;
+ 
+ B b;
+ void bar(A) { }
+ void foo() { bar(b); }		/* { dg-warning "implicit conversion" } */
+ 
+ void bar2(__attribute__((__hardbool__)) int)  { }
+ void foo2() { bar2(b); }	/* { dg-warning "implicit conversion" } */
+ 
+ __attribute__((__hardbool__)) int c;
+ void bar3(__attribute__((__hardbool__)) int)  { }
+ void foo3() { bar2(c); }	/* { dg-warning "implicit conversion" } */
+ 
+ void bar4(int)  { }
+ void foo4() { bar2(c); }	/* { dg-warning "implicit conversion" } */
+ 
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.dg/struct-alias-2.c gcc-16-20260308/gcc/testsuite/gcc.dg/struct-alias-2.c
*** gcc-16-20260301/gcc/testsuite/gcc.dg/struct-alias-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/gcc.dg/struct-alias-2.c	Sun Mar  8 22:32:10 2026
***************
*** 0 ****
--- 1,133 ----
+ /* { dg-do run } */
+ /* { dg-options "-O2 -std=c23" } */
+ 
+ 
+ /* Based on the submitted test case for PR123356 but using types with
+  * tags and moving the second version into another scope.  */
+ 
+ struct foo { long x; };
+ 
+ void f()
+ {
+ 	struct foo { };
+ 	struct bar { struct foo *c; };
+ 	union baz { struct foo *c; };
+ 	struct arr { struct foo *c[1]; };
+ 	struct fun { struct foo (*c)(); };
+ }
+ 
+ 
+ void f1()
+ {
+ 	struct foo { };
+ 	struct bar { struct foo *c; };
+ 	union baz { struct foo *c; };
+ 	struct arr { struct foo *c[1]; };
+ 	struct fun { struct foo (*c)(); };
+ }
+ 
+ struct bar { struct foo *c; };
+ union baz { struct foo *c; };
+ struct arr { struct foo *c[1]; };
+ struct fun { struct foo (*c)(); };
+ 
+ void f2()
+ {
+ 	struct foo { int y; };
+ 	struct bar { struct foo *c; };
+ 	union baz { struct foo *c; };
+ 	struct arr { struct foo *c[1]; };
+ 	struct fun { struct foo (*c)(); };
+ }
+ 
+ __attribute__((noinline))
+ struct foo * g1(struct bar *B, struct bar *Q)
+ {
+     struct bar t = *B;
+     *B = *Q;
+     *Q = t;
+     return B->c;
+ }
+ 
+ __attribute__((noinline))
+ struct foo * g2(union baz *B, union baz *Q)
+ {
+     union baz t = *B;
+     *B = *Q;
+     *Q = t;
+     return B->c;
+ }
+ 
+ __attribute__((noinline))
+ struct foo { long x; } * 
+ 	g3(struct bar { struct foo { long x; } *c; } *B,
+ 	   struct bar { struct foo { long x; } *c; } *Q)
+ {
+     struct bar t = *B;
+     *B = *Q;
+     *Q = t;
+     return B->c;
+ }
+ 
+ __attribute__((noinline))
+ struct foo * g4(struct arr *B,
+ 	        struct arr *Q)
+ {
+     struct arr t = *B;
+     *B = *Q;
+     *Q = t;
+     return B->c[0];
+ }
+ 
+ __attribute__((noinline))
+ struct foo (*g5(struct fun *B,
+ 	        struct fun *Q))()
+ {
+     struct fun t = *B;
+     *B = *Q;
+     *Q = t;
+     return B->c;
+ }
+ 
+ struct foo Bd() { };
+ struct foo Qd() { };
+ 
+ int main()
+ {
+     struct foo Bc = { };
+     struct foo Qc = { };
+ 
+     struct bar B = { &Bc };
+     struct bar Q = { &Qc };
+ 
+     if (g1(&B, &Q) != &Qc)
+ 	    __builtin_abort();
+ 
+     union baz Bu = { &Bc };
+     union baz Qu = { &Qc };
+ 
+     if (g2(&Bu, &Qu) != &Qc)
+ 	    __builtin_abort();
+ 
+     struct bar B2 = { &Bc };
+     struct bar Q2 = { &Qc };
+ 
+     if (g3(&B2, &Q2) != &Qc)
+ 	    __builtin_abort();
+ 
+     struct arr Ba = { &Bc };
+     struct arr Qa = { &Qc };
+ 
+     if (g4(&Ba, &Qa) != &Qc)
+ 	    __builtin_abort();
+ #if 0
+     // PR114959
+     struct fun Bf = { &Bd };
+     struct fun Qf = { &Qd };
+ 
+     if (g5(&Bf, &Qf) != &Qd)
+ 	    __builtin_abort();
+ #endif
+     return 0;
+ }
+ 
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.dg/torture/pr121649.c gcc-16-20260308/gcc/testsuite/gcc.dg/torture/pr121649.c
*** gcc-16-20260301/gcc/testsuite/gcc.dg/torture/pr121649.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/gcc.dg/torture/pr121649.c	Sun Mar  8 22:32:10 2026
***************
*** 0 ****
--- 1,134 ----
+ /* { dg-do run { target bitint } } */
+ /* { dg-require-effective-target int128 } */
+ /* { dg-additional-options "-Wno-psabi" } */
+ 
+ typedef __attribute__((__vector_size__ (8))) char v64s8;
+ typedef __attribute__((__vector_size__ (8))) short v64s16;
+ typedef __attribute__((__vector_size__ (8))) int v64s32;
+ typedef __attribute__((__vector_size__ (16))) char v128s8;
+ typedef __attribute__((__vector_size__ (16))) short v128s16;
+ typedef __attribute__((__vector_size__ (16))) int v128s32;
+ typedef __attribute__((__vector_size__ (16))) long v128s64;
+ typedef __attribute__((__vector_size__ (32))) char v256s8;
+ typedef __attribute__((__vector_size__ (32))) short v256s16;
+ typedef __attribute__((__vector_size__ (32))) int v256s32;
+ typedef __attribute__((__vector_size__ (32))) long v256s64;
+ typedef __attribute__((__vector_size__ (32))) __int128 v256s128;
+ typedef __attribute__((__vector_size__ (64))) char v512s8;
+ typedef __attribute__((__vector_size__ (64))) short v512s16;
+ typedef __attribute__((__vector_size__ (64))) int v512s32;
+ typedef __attribute__((__vector_size__ (64))) long v512s64;
+ typedef __attribute__((__vector_size__ (64))) __int128 v512s128;
+ 
+ #if __BITINT_MAXWIDTH__ >= 60692
+ __attribute__((noipa, cold))
+ void
+ foo0 (int, int, int, int,
+       _BitInt (3) sb3_0, char, char, char,
+       char, char, char, char, char,
+       char,char,char,char,
+       _BitInt (5), _BitInt (5), short, short, char,
+       short, short, char, int,
+       int, int, int, int, char,
+       long, long, long, long, long,
+       long, char, char, char, __int128,
+       __int128, __int128, __int128, __int128,
+       __int128, char, _BitInt (129), _BitInt (129),
+       _BitInt (255), _BitInt (255), _BitInt (256), _BitInt (256),
+       _BitInt (257), _BitInt (257), _BitInt (511), _BitInt (511),
+       _BitInt (512), _BitInt (512), _BitInt (513), _BitInt (513),
+       _BitInt (1023), _BitInt (1023), _BitInt (1024),
+       _BitInt (1024), _BitInt (1025), _BitInt (1025), _BitInt (331),
+       _BitInt (331), _BitInt (412), _BitInt (412), _BitInt (985),
+       _BitInt (985), _BitInt (60692), _BitInt (60692), char, char,
+       char, char, short, short, char, char, short, short, unsigned,
+       int, v64s8, v64s8, v64s16, v64s16, v64s32, v64s32, long, long,
+       v128s8, v128s8, short, v128s16, int, v128s32, long, v128s64,
+       __int128, __int128, v256s8, v256s8, v256s16, v256s16, v256s32,
+       v256s32, v256s64, v256s64, v256s128, v256s128, v512s8, v512s8,
+       v512s16, v512s16, v512s32, v512s32, v512s64, v512s64,
+       v512s128, v512s128, char *ret)
+ {
+   *ret = sb3_0;
+ }
+ #endif
+ 
+ __attribute__ ((noipa))
+ void
+ xprintf (int x)
+ {
+   if (x != 0xfc)
+     __builtin_abort();
+ }
+ 
+ int
+ main ()
+ {
+ #if __BITINT_MAXWIDTH__ >= 60692
+   char x;
+   foo0 (0, 0, 0, 0, -4, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11, 9, 2, 95,
+ 	67, -24064, 0, 5, 6, 7, 0, 8, 9, 20, 4, 3, 6018427387903, 53,
+ 	505857273496, 255, 6, 0, 18446744073709551612uwb,
+ 	70141183460469231731687303715884105726uwb,
+ 	0x1ab7415df78c5d6355b5bf722d2c32wb, 18266202578652419339uwb,
+ 	9594516560314871492uwb, 18446744073709551615uwb, 0,
+ 	404678514476015038251338572701189uwb, 0,
+ 	6044618658097711785492504343953926634992332820282019728792003956564819964uwb,
+ 	0, 0,
+ 	6044618658097711785492504343953926634992332820282019728792003956564819967uwb,
+ 	0,
+ 	0x10000000000000000000000000000000000000000000000000000000000000000wb, 0, 1, 0, 606316039853739674053402528525595147334676uwb, 0,
+ 	407807929942597099574024998205846127479363981533648751059337645126787177315524892796678197877342278766808798337256961671307362116160553321514205699439425uwb,
+ 	0,
+ 	40449424473557664318357520289433168951375240783177119330601884005280028469967848339414697442203604155532867238014401323013014363877264556147687333148794044698496604162935270824544179699376777403364901791967663653826658703420189949487003960239619175525152082242122474284732uwb,
+ 	90772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329623282435531uwb,
+ 	0, 0,
+ 	30203714894603546035770925859109268843954143792619895153655326951406405759993601526034894524347802740350892957243539456uwb,
+ 	0,
+ 	0x24c07bd236a355dac41c3e00fed83a2c01d47d7e7c155128f8474ab8acd075fe3be2661e9ba3b0498c2wb,
+ 	0,
+ 	-0x273d7a44735564a706be6f876e8c09a64c065028fc8719feace6b4ad22b722fc6628809c1bcfda902d563717b88876aa068496bwb,
+ 	0, 5, 0, 4, 0, 5, 0, 0115, 3, 92, 0, 1, 840, 839, 35, 4095, (v64s8)
+ 	{ }, (v64s8)
+ 	{ 3, -0x4 }, (v64s16)
+ 	{ }, (v64s16)
+ 	{ }, (v64s32)
+ 	{ }, (v64s32)
+ 	{ }, 7, 40, (v128s8)
+ 	{ }, (v128s8)
+ 	{ }, 126, (v128s16)
+ 	{ }, 95, (v128s32)
+ 	{ }, 6, (v128s64)
+ 	{ }, 18446462603027742720uwb, 11842991817553718011uwb, (v256s8)
+ 	{ 227, 84, 73, 5, 2, 45, 107, 55, 16, 128, 23, 17, 1, 226, 15 },
+ 	(v256s8)
+ 	{ 9, 111, 108, 19, 98, 27, 97, -0xe }, (v256s16)
+ 	{ 1, 167, 65280, 35, 15286, 9, 182, 13126, 15 }, (v256s16)
+ 	{ 72, 381, 185, 619, 978, 926, 42 }, (v256s32)
+ 	{ 20, 72, 905, 207, 63, 40 }, (v256s32)
+ 	{ 5, 503, 1, 152, 5519391 }, (v256s64)
+ 	{ 1280 }, (v256s64)
+ 	{ 94, 8851183291103289765uwb, 526 }, (v256s128)
+ 	{ 15013856701581711399uwb }, (v256s128)
+ 	{ 10389555769421265252uwb, 15766594437788011035uwb }, (v512s8)
+ 	{ 104, 131, 5, 21, 32, 127, 75, 54, 232, 1, 82, 255, 28, 178, 1,
+ 	121, 1, 14, 210, 240, 140, 53, 4, 91, 204, 78, 130, 76, 212, 52, 1,
+ 	200, 11, 25, 251, 41, 88, 12, 3, 59 }, (v512s8)
+ 	{ 13, 10, 48, -0x2f, 67, 85, 87, 123, 8, 26, 83, 114, 51, 6, 96,
+ 	-0x1c, 115, 49, 86, 103, 93, 31, -0x6, 112, 1, 7, -0xc, 18, 47, 5,
+ 	-0xf, 3 }, (v512s16)
+ 	{ 4094, 64492, 855, 61680, 27, 47569, 55, 65534, 76, -1024, 30,
+ 	254, 280, 11, 10, 14, 2, 4095, 3, 111, 65535, 67, 24289, 32, 25604,
+ 	26, 65535, 98, 65533, 5 }, (v512s16)
+ 	{ 615, 2032, 54, 52, 015, 45, 24, 6, 7, 68, 24015, 380, 3315, 5, 8,
+ 	23, -0xf, 62, 82, 4 }, (v512s32)
+ 	{ 54, 4294967294, 6, 16, 9, 13, 300, 80000000, 700, 600, 93, 040,
+ 	15 }, (v512s32)
+ 	{ 515, 3, 14, 10, 2, 80, 39, 215, 7, 3, 4 }, (v512s64)
+ 	{ 4, 9, 5, 3, 505 }, (v512s64)
+ 	{ 904293909041052234uwb, 4 }, (v512s128)
+ 	{ 9223372036854775808uwb, 1, 4073709551612 }, (v512s128)
+ 	{ 7, 30391054, 18446742974197923807uwb }, &x);
+       xprintf ((int)(unsigned char) x);
+ #endif
+ }
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.dg/torture/pr124041.c gcc-16-20260308/gcc/testsuite/gcc.dg/torture/pr124041.c
*** gcc-16-20260301/gcc/testsuite/gcc.dg/torture/pr124041.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/gcc.dg/torture/pr124041.c	Sun Mar  8 22:32:10 2026
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-compile } */
+ /* { dg-additional-options "-O2  -fno-strict-aliasing -fstack-protector -ftrivial-auto-var-init=zero -fsanitize=thread -Wall" } */
+ 
+ char *trick_compiler(void *);
+ int do_usercopy_stack_callee_i;
+ char *do_usercopy_stack_callee(long value)
+ {
+     char buf[28];
+     for (; do_usercopy_stack_callee_i < sizeof(buf); do_usercopy_stack_callee_i++)
+         buf[do_usercopy_stack_callee_i] = value;
+     return trick_compiler(buf);
+ }
+ void do_usercopy_stack(void)
+ {
+     char *bad_stack;
+     bad_stack = do_usercopy_stack_callee((long)&bad_stack);
+ }
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.dg/torture/vec-cvt-1.c gcc-16-20260308/gcc/testsuite/gcc.dg/torture/vec-cvt-1.c
*** gcc-16-20260301/gcc/testsuite/gcc.dg/torture/vec-cvt-1.c	Sun Mar  1 22:32:15 2026
--- gcc-16-20260308/gcc/testsuite/gcc.dg/torture/vec-cvt-1.c	Sun Mar  8 22:32:10 2026
*************** flttointtest##intt (void)						\
*** 55,76 ****
    else									\
      {									\
        vf2 = fltmin = min - 1.0f;					\
!       for (vf = 1.0f; (fltmin = vf2 + vf) == vf2; vf = vf * 2.0f)	\
  	;								\
      }									\
    vf2 = fltmax = max + 1.0f;						\
!   for (vf = 1.0f; (fltmax = vf2 - vf) == vf2; vf = vf * 2.0f)		\
      ;									\
    if (min == 0)								\
      dblmin = 0.0;							\
    else									\
      {									\
        vd2 = dblmin = min - 1.0;						\
!       for (vd = 1.0; (dblmin = vd2 + vd) == vd2; vd = vd * 2.0)		\
  	;								\
      }									\
    vd2 = dblmax = max + 1.0;						\
!   for (vd = 1.0; (dblmax = vd2 - vd) == vd2; vd = vd * 2.0)		\
      ;									\
    for (i = 0; i < N; i++)						\
      {									\
--- 55,76 ----
    else									\
      {									\
        vf2 = fltmin = min - 1.0f;					\
!       for (vf = 1.0f; fltmin = vf2 + vf, fltmin == vf2; vf = vf * 2.0f)	\
  	;								\
      }									\
    vf2 = fltmax = max + 1.0f;						\
!   for (vf = 1.0f; fltmax = vf2 - vf, fltmax == vf2; vf = vf * 2.0f)	\
      ;									\
    if (min == 0)								\
      dblmin = 0.0;							\
    else									\
      {									\
        vd2 = dblmin = min - 1.0;						\
!       for (vd = 1.0; dblmin = vd2 + vd, dblmin == vd2; vd = vd * 2.0)	\
  	;								\
      }									\
    vd2 = dblmax = max + 1.0;						\
!   for (vd = 1.0; dblmax = vd2 - vd, dblmax == vd2; vd = vd * 2.0)	\
      ;									\
    for (i = 0; i < N; i++)						\
      {									\
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-char.c gcc-16-20260308/gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-char.c
*** gcc-16-20260301/gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-char.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-char.c	Sun Mar  8 22:32:10 2026
***************
*** 0 ****
--- 1,9 ----
+ /* Test the attribute counted_by for pointer fields and its usage in
+    bounds sanitizer.  */
+ /* { dg-do run } */
+ /* { dg-options "-fsanitize=bounds" } */
+ /* { dg-output "index 10 out of bounds for type 'char \\\[\\\*\\\]'\[^\n\r]*(\n|\r\n|\r)" } */
+ /* { dg-output "\[^\n\r]*index 11 out of bounds for type 'char \\\[\\\*\\\]'\[^\n\r]*(\n|\r\n|\r)" } */
+ 
+ #define PTR_TYPE char
+ #include "pointer-counted-by-bounds-124230.c"
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-float.c gcc-16-20260308/gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-float.c
*** gcc-16-20260301/gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-float.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-float.c	Sun Mar  8 22:32:10 2026
***************
*** 0 ****
--- 1,9 ----
+ /* Test the attribute counted_by for pointer fields and its usage in
+    bounds sanitizer.  */
+ /* { dg-do run } */
+ /* { dg-options "-fsanitize=bounds" } */
+ /* { dg-output "index 10 out of bounds for type 'float \\\[\\\*\\\]'\[^\n\r]*(\n|\r\n|\r)" } */
+ /* { dg-output "\[^\n\r]*index 11 out of bounds for type 'float \\\[\\\*\\\]'\[^\n\r]*(\n|\r\n|\r)" } */
+ 
+ #define PTR_TYPE float 
+ #include "pointer-counted-by-bounds-124230.c"
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-struct.c gcc-16-20260308/gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-struct.c
*** gcc-16-20260301/gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-struct.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-struct.c	Sun Mar  8 22:32:10 2026
***************
*** 0 ****
--- 1,61 ----
+ /* Test the attribute counted_by for pointer fields and its usage in
+    bounds sanitizer.  */
+ /* { dg-do run } */
+ /* { dg-options "-fsanitize=bounds" } */
+ /* { dg-output "index 10 out of bounds for type 'A \\\[\\\*\\\]'\[^\n\r]*(\n|\r\n|\r)" } */
+ /* { dg-output "\[^\n\r]*index 11 out of bounds for type 'A \\\[\\\*\\\]'\[^\n\r]*(\n|\r\n|\r)" } */
+ 
+ #include <stdlib.h>
+ 
+ struct A {
+   int a;
+   char *b;
+ };
+ #define PTR_TYPE struct A 
+ struct annotated {
+   int b;
+   PTR_TYPE *c __attribute__ ((counted_by (b)));
+ } *p_array_annotated;
+ 
+ struct nested_annotated {
+   PTR_TYPE *c __attribute__ ((counted_by (b)));
+   struct {
+     union {
+       int b;
+       float f;
+     };
+     int n;
+   };
+ } *p_array_nested_annotated;
+ 
+ void __attribute__((__noinline__)) setup (int annotated_count)
+ {
+   p_array_annotated
+     = (struct annotated *) malloc (sizeof (struct annotated));
+   p_array_annotated->c = (PTR_TYPE *) malloc (annotated_count * sizeof (PTR_TYPE));
+   p_array_annotated->b = annotated_count;
+ 
+   p_array_nested_annotated
+     = (struct nested_annotated *) malloc (sizeof (struct nested_annotated));
+   p_array_nested_annotated->c = (PTR_TYPE *) malloc (sizeof (PTR_TYPE) * annotated_count);
+   p_array_nested_annotated->b = annotated_count;
+ 
+   return;
+ }
+ 
+ void cleanup ()
+ {
+   free (p_array_annotated->c);
+   free (p_array_annotated);
+   free (p_array_nested_annotated->c);
+   free (p_array_nested_annotated);
+ }
+ 
+ int main(int argc, char *argv[])
+ {
+   setup (10);   
+   p_array_annotated->c[10].a = 2;
+   p_array_nested_annotated->c[11].a = 3;
+   cleanup ();
+   return 0;
+ }
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-union.c gcc-16-20260308/gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-union.c
*** gcc-16-20260301/gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-union.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-union.c	Sun Mar  8 22:32:10 2026
***************
*** 0 ****
--- 1,61 ----
+ /* Test the attribute counted_by for pointer fields and its usage in
+    bounds sanitizer.  */
+ /* { dg-do run } */
+ /* { dg-options "-fsanitize=bounds" } */
+ /* { dg-output "index 10 out of bounds for type 'A \\\[\\\*\\\]'\[^\n\r]*(\n|\r\n|\r)" } */
+ /* { dg-output "\[^\n\r]*index 11 out of bounds for type 'A \\\[\\\*\\\]'\[^\n\r]*(\n|\r\n|\r)" } */
+ 
+ #include <stdlib.h>
+ 
+ union A {
+   int a;
+   float b;
+ };
+ #define PTR_TYPE union A 
+ struct annotated {
+   int b;
+   PTR_TYPE *c __attribute__ ((counted_by (b)));
+ } *p_array_annotated;
+ 
+ struct nested_annotated {
+   PTR_TYPE *c __attribute__ ((counted_by (b)));
+   struct {
+     union {
+       int b;
+       float f;
+     };
+     int n;
+   };
+ } *p_array_nested_annotated;
+ 
+ void __attribute__((__noinline__)) setup (int annotated_count)
+ {
+   p_array_annotated
+     = (struct annotated *) malloc (sizeof (struct annotated));
+   p_array_annotated->c = (PTR_TYPE *) malloc (annotated_count * sizeof (PTR_TYPE));
+   p_array_annotated->b = annotated_count;
+ 
+   p_array_nested_annotated
+     = (struct nested_annotated *) malloc (sizeof (struct nested_annotated));
+   p_array_nested_annotated->c = (PTR_TYPE *) malloc (sizeof (PTR_TYPE) * annotated_count);
+   p_array_nested_annotated->b = annotated_count;
+ 
+   return;
+ }
+ 
+ void cleanup ()
+ {
+   free (p_array_annotated->c);
+   free (p_array_annotated);
+   free (p_array_nested_annotated->c);
+   free (p_array_nested_annotated);
+ }
+ 
+ int main(int argc, char *argv[])
+ {
+   setup (10);   
+   p_array_annotated->c[10].a = 2;
+   p_array_nested_annotated->c[11].a = 3;
+   cleanup ();
+   return 0;
+ }
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230.c gcc-16-20260308/gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230.c
*** gcc-16-20260301/gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230.c	Sun Mar  8 22:32:10 2026
***************
*** 0 ****
--- 1,59 ----
+ /* Test the attribute counted_by for pointer fields and its usage in
+    bounds sanitizer.  */
+ /* { dg-do run } */
+ /* { dg-options "-fsanitize=bounds" } */
+ /* { dg-output "index 10 out of bounds for type 'int \\\[\\\*\\\]'\[^\n\r]*(\n|\r\n|\r)" } */
+ /* { dg-output "\[^\n\r]*index 11 out of bounds for type 'int \\\[\\\*\\\]'\[^\n\r]*(\n|\r\n|\r)" } */
+ 
+ #include <stdlib.h>
+ 
+ #ifndef PTR_TYPE
+ #define PTR_TYPE int
+ #endif
+ struct annotated {
+   int b;
+   PTR_TYPE *c __attribute__ ((counted_by (b)));
+ } *p_array_annotated;
+ 
+ struct nested_annotated {
+   PTR_TYPE *c __attribute__ ((counted_by (b)));
+   struct {
+     union {
+       int b;
+       float f;
+     };
+     int n;
+   };
+ } *p_array_nested_annotated;
+ 
+ void __attribute__((__noinline__)) setup (int annotated_count)
+ {
+   p_array_annotated
+     = (struct annotated *) malloc (sizeof (struct annotated));
+   p_array_annotated->c = (PTR_TYPE *) malloc (annotated_count * sizeof (PTR_TYPE));
+   p_array_annotated->b = annotated_count;
+ 
+   p_array_nested_annotated
+     = (struct nested_annotated *) malloc (sizeof (struct nested_annotated));
+   p_array_nested_annotated->c = (PTR_TYPE *) malloc (sizeof (PTR_TYPE) * annotated_count);
+   p_array_nested_annotated->b = annotated_count;
+ 
+   return;
+ }
+ 
+ void cleanup ()
+ {
+   free (p_array_annotated->c);
+   free (p_array_annotated);
+   free (p_array_nested_annotated->c);
+   free (p_array_nested_annotated);
+ }
+ 
+ int main(int argc, char *argv[])
+ {
+   setup (10);   
+   p_array_annotated->c[10] = 2;
+   p_array_nested_annotated->c[11] = 3;
+   cleanup ();
+   return 0;
+ }
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.dg/vect/bb-slp-57.c gcc-16-20260308/gcc/testsuite/gcc.dg/vect/bb-slp-57.c
*** gcc-16-20260301/gcc/testsuite/gcc.dg/vect/bb-slp-57.c	Sun Mar  1 22:32:15 2026
--- gcc-16-20260308/gcc/testsuite/gcc.dg/vect/bb-slp-57.c	Sun Mar  8 22:32:10 2026
*************** void l()
*** 36,38 ****
--- 36,39 ----
  
  /* { dg-final { scan-tree-dump-times "transform load" 1 "slp1" { target { { x86_64-*-* i?86-*-* } && lp64 } } } } */
  /* { dg-final { scan-tree-dump "optimized: basic block" "slp1" { target { { x86_64-*-* i?86-*-* } && lp64 } } } } */
+ /* { dg-final { scan-tree-dump-not "missed: Using original scalar computation" "slp1" } } */
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-half-float.c gcc-16-20260308/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-half-float.c
*** gcc-16-20260301/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-half-float.c	Sun Mar  1 22:32:15 2026
--- gcc-16-20260308/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-half-float.c	Sun Mar  8 22:32:10 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-additional-options "-ffast-math" } */
  /* { dg-require-effective-target vect_complex_add_half } */
  /* { dg-require-effective-target arm_v8_3a_fp16_complex_neon_ok } */
  /* { dg-add-options arm_v8_3a_fp16_complex_neon } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-additional-options "-ffast-math --param vect-epilogues-nomask=0" } */
  /* { dg-require-effective-target vect_complex_add_half } */
  /* { dg-require-effective-target arm_v8_3a_fp16_complex_neon_ok } */
  /* { dg-add-options arm_v8_3a_fp16_complex_neon } */
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.dg/vect/vect-pr124037.c gcc-16-20260308/gcc/testsuite/gcc.dg/vect/vect-pr124037.c
*** gcc-16-20260301/gcc/testsuite/gcc.dg/vect/vect-pr124037.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/gcc.dg/vect/vect-pr124037.c	Sun Mar  8 22:32:10 2026
***************
*** 0 ****
--- 1,58 ----
+ /* PR tree-optimization/124037 */
+ /* { dg-require-effective-target mmap } */
+ /* { dg-require-effective-target vect_early_break } */
+ #include <stdint.h>
+ #include <stdio.h>
+ #include <string.h>
+ #include <sys/mman.h>
+ #include <unistd.h>
+ 
+ #define MAX 65536
+ 
+ typedef struct {
+   uint64_t a;
+   uint64_t b;
+   uint32_t flag;
+   uint32_t pad;
+ } Data;
+ 
+ int __attribute__ ((noinline))
+ foo (Data *ptr) {
+   if (ptr == NULL)
+     return -1;
+ 
+   int cnt;
+   for (cnt = 0; cnt < MAX; cnt++) {
+     if (ptr->flag == 0)
+       break;
+     ptr++;
+   }
+   return cnt;
+ }
+ 
+ int main() {
+   long pgsz = sysconf (_SC_PAGESIZE);
+   if (pgsz == -1) {
+     fprintf (stderr, "sysconf failed\n");
+     return 0;
+   }
+ 
+   /* Allocate 2 consecutive pages.  */
+   void *mem = mmap (NULL, pgsz * 2, PROT_READ | PROT_WRITE,
+ 		    MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+   if (mem == MAP_FAILED) {
+     fprintf (stderr, "mmap failed\n");
+     return 0;
+   }
+ 
+   memset (mem, 1, pgsz);
+   uint8_t *ptr = (uint8_t*) mem + pgsz;
+   memset (ptr - 16, 0, 16);
+ 
+   mprotect (ptr, pgsz, PROT_NONE);
+   Data *data = (Data *) (ptr - 80);
+   __builtin_printf("%d\n", foo(data));
+ }
+ 
+ /* { dg-final { scan-tree-dump "missed:   not vectorized: relevant stmt not supported: _\[0-9\]+ = ptr_\[0-9\]+->flag;" "vect" } } */
+ /* { dg-final { scan-tree-dump-not "LOOP VECTORIZED" "vect" } } */
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8b.c gcc-16-20260308/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8b.c
*** gcc-16-20260301/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8b.c	Sun Mar  1 22:32:15 2026
--- gcc-16-20260308/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8b.c	Sun Mar  8 22:32:10 2026
*************** int main (void)
*** 53,60 ****
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "vect_recog_dot_prod_pattern: detected(?:(?!Analysis failed).)*Analysis succeeded" 1 "vect" { xfail *-*-* } } } */
  /* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected(?:(?!Analysis failed).)*Analysis succeeded" 1 "vect" { target vect_widen_mult_qi_to_hi } } } */
! 
  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_widen_mult_qi_to_hi } } } */
  
--- 53,61 ----
    return 0;
  }
  
! /* ???  In principle sdot_prodv<N>hiv<2xN>qi could also be used and would
!    take precedence.  */
  /* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected(?:(?!Analysis failed).)*Analysis succeeded" 1 "vect" { target vect_widen_mult_qi_to_hi } } } */
! /* ???  And we can also vectorize this without widen-mult.  */
  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_widen_mult_qi_to_hi } } } */
  
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2c.c gcc-16-20260308/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2c.c
*** gcc-16-20260301/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2c.c	Sun Mar  1 22:32:15 2026
--- gcc-16-20260308/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2c.c	Sun Mar  8 22:32:10 2026
*************** main (void)
*** 44,48 ****
    return foo ();
  }
  
! /* { dg-final { scan-tree-dump-times "vect_recog_widen_sum_pattern: detected" 1 "vect" { xfail *-*-* } } } */
  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_widen_sum_qi_to_hi } } } } */
--- 44,48 ----
    return foo ();
  }
  
! /* { dg-final { scan-tree-dump-times "vect_recog_widen_sum_pattern: detected" 1 "vect" } } */
  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_widen_sum_qi_to_hi } } } } */
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.misc-tests/gcov-30.c gcc-16-20260308/gcc/testsuite/gcc.misc-tests/gcov-30.c
*** gcc-16-20260301/gcc/testsuite/gcc.misc-tests/gcov-30.c	Sun Mar  1 22:32:15 2026
--- gcc-16-20260308/gcc/testsuite/gcc.misc-tests/gcov-30.c	Sun Mar  8 22:32:10 2026
***************
*** 1,5 ****
--- 1,6 ----
  /* { dg-options "--coverage -fpath-coverage -fprofile-update=atomic" } */
  /* { dg-do run } */
+ /* { dg-require-effective-target profile_update_atomic } */
  
  void
  pathcov001a ()
*************** pathcov001b ()
*** 22,28 ****
  /* Same as b, but not executed.  */
  /* BEGIN paths
     summary: 0/1
!    expect: 33
  */
  void
  pathcov001c ()
--- 23,29 ----
  /* Same as b, but not executed.  */
  /* BEGIN paths
     summary: 0/1
!    expect: 34
  */
  void
  pathcov001c ()
*************** pathcov001c ()
*** 37,44 ****
     isolation.  */
  /* BEGIN paths
     summary: 0/2
!    expect: 48(true) 49 52
!    expect: 48(false) 51 52
  */
  void
  pathcov002a (int a)
--- 38,45 ----
     isolation.  */
  /* BEGIN paths
     summary: 0/2
!    expect: 49(true) 50 53
!    expect: 49(false) 52 53
  */
  void
  pathcov002a (int a)
*************** pathcov002a (int a)
*** 53,59 ****
  
  /* BEGIN paths
      summary: 1/2
!     expect: 63(false) 66 67
  */
  void
  pathcov002c (int a)
--- 54,60 ----
  
  /* BEGIN paths
      summary: 1/2
!     expect: 64(false) 67 68
  */
  void
  pathcov002c (int a)
*************** pathcov002c (int a)
*** 68,74 ****
  
  /* BEGIN paths
     summary: 1/2
!    expect: 78(true) 79 82
  */
  void
  pathcov002b (int a)
--- 69,75 ----
  
  /* BEGIN paths
     summary: 1/2
!    expect: 79(true) 80 83
  */
  void
  pathcov002b (int a)
*************** pathcov002d (int a)
*** 102,109 ****
  
  /* BEGIN paths
     summary: 0/2
!    expect: 112(true) 113 114
!    expect: 112(false) 114
  */
  void
  pathcov003a (int a)
--- 103,110 ----
  
  /* BEGIN paths
     summary: 0/2
!    expect: 113(true) 114 115
!    expect: 113(false) 115
  */
  void
  pathcov003a (int a)
*************** pathcov003a (int a)
*** 115,122 ****
  
  /* BEGIN paths
     summary: 0/2
!    expect: 125(true) 126 129
!    expect: 125(false) 128 129
  */
  void
  pathcov003b (int a)
--- 116,123 ----
  
  /* BEGIN paths
     summary: 0/2
!    expect: 126(true) 127 130
!    expect: 126(false) 129 130
  */
  void
  pathcov003b (int a)
*************** pathcov003b (int a)
*** 130,138 ****
  
  /* BEGIN paths
     summary: 0/3
!    expect: 141(true) 142 147
!    expect: 141(false) 143(true) 144 147
!    expect: 141(false) 143(false) 146 147
  */
  void
  pathcov003c (int a)
--- 131,139 ----
  
  /* BEGIN paths
     summary: 0/3
!    expect: 142(true) 143 148
!    expect: 142(false) 144(true) 145 148
!    expect: 142(false) 144(false) 147 148
  */
  void
  pathcov003c (int a)
*************** pathcov003c (int a)
*** 148,158 ****
  
  /* BEGIN paths
     summary: 0/5
!    expect: 162 162(true) 163
!    expect: 162 162(false) 164
!    expect: 163 162(true) 163
!    expect: 163 162(false) 164
!    expect: 162(true) 163 162
  */
  void
  pathcov003d (int a)
--- 149,159 ----
  
  /* BEGIN paths
     summary: 0/5
!    expect: 163 163(true) 164
!    expect: 163 163(false) 165
!    expect: 164 163(true) 164
!    expect: 164 163(false) 165
!    expect: 163(true) 164 163
  */
  void
  pathcov003d (int a)
*************** pathcov003d (int a)
*** 165,175 ****
  
  /* BEGIN paths
     summary: 0/5
!    expect: 180 180(true) 181
!    expect: 180 180(false) 182
!    expect: 181 180(true) 181
!    expect: 181 180(false) 182
!    expect: 180(true) 181 180
  */
  void
  pathcov003e (int a)
--- 166,176 ----
  
  /* BEGIN paths
     summary: 0/5
!    expect: 181 181(true) 182
!    expect: 181 181(false) 183
!    expect: 182 181(true) 182
!    expect: 182 181(false) 183
!    expect: 181(true) 182 181
  */
  void
  pathcov003e (int a)
*************** pathcov003e (int a)
*** 183,190 ****
  
  /* BEGIN paths
     summary: 0/2
!    expect: 194 197(false) 198
!    expect: 197(true) 197
  */
  void
  pathcov003f (int a)
--- 184,191 ----
  
  /* BEGIN paths
     summary: 0/2
!    expect: 195 198(false) 199
!    expect: 198(true) 198
  */
  void
  pathcov003f (int a)
*************** pathcov003f (int a)
*** 199,209 ****
  
  /* BEGIN paths
     summary: 0/5
!    expect: 213 216(true) 220
!    expect: 213 216(false) 222
!    expect: 216(true) 220 216
!    expect: 220 216(true) 220
!    expect: 220 216(false) 222
  */
  void
  pathcov003g (int a)
--- 200,210 ----
  
  /* BEGIN paths
     summary: 0/5
!    expect: 214 217(true) 221
!    expect: 214 217(false) 223
!    expect: 217(true) 221 217
!    expect: 221 217(true) 221
!    expect: 221 217(false) 223
  */
  void
  pathcov003g (int a)
*************** top:
*** 226,240 ****
  
  /* BEGIN paths
     summary: 0/9
!    expect: 243(false) 247 247(true) 247(true) 249(true) 250 253
!    expect: 243(false) 247 247(true) 247(false) 253
!    expect: 243(false) 247 247(false) 253
!    expect: 243(true) 253
!    expect: 249(false) 247(true) 247(true) 249
!    expect: 249(false) 247(true) 247(false) 253
!    expect: 247(true) 247(true) 249(false) 247
!    expect: 247(true) 249(false) 247(true) 247
!    expect: 247(true) 249(false) 247(false) 253
  */
  void
  pathcov004a (int a, int b, int c, int d)
--- 227,241 ----
  
  /* BEGIN paths
     summary: 0/9
!    expect: 244(false) 248 248(true) 248(true) 250(true) 251 254
!    expect: 244(false) 248 248(true) 248(false) 254
!    expect: 244(false) 248 248(false) 254
!    expect: 244(true) 254
!    expect: 250(false) 248(true) 248(true) 250
!    expect: 250(false) 248(true) 248(false) 254
!    expect: 248(true) 248(true) 250(false) 248
!    expect: 248(true) 250(false) 248(true) 248
!    expect: 248(true) 250(false) 248(false) 254
  */
  void
  pathcov004a (int a, int b, int c, int d)
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/aarch64/mingw/mingw.exp gcc-16-20260308/gcc/testsuite/gcc.target/aarch64/mingw/mingw.exp
*** gcc-16-20260301/gcc/testsuite/gcc.target/aarch64/mingw/mingw.exp	Sun Mar  1 22:32:15 2026
--- gcc-16-20260308/gcc/testsuite/gcc.target/aarch64/mingw/mingw.exp	Sun Mar  8 22:32:10 2026
*************** if ![info exists DEFAULT_CFLAGS] then {
*** 34,40 ****
  dg-init
  
  # Main loop.
! dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cCS\]]] \
  	"" $DEFAULT_CFLAGS
  
  # All done.
--- 34,40 ----
  dg-init
  
  # Main loop.
! dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cCS\]*]] \
  	"" $DEFAULT_CFLAGS
  
  # All done.
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/aarch64/mingw/minimal_new_del.C gcc-16-20260308/gcc/testsuite/gcc.target/aarch64/mingw/minimal_new_del.C
*** gcc-16-20260301/gcc/testsuite/gcc.target/aarch64/mingw/minimal_new_del.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/gcc.target/aarch64/mingw/minimal_new_del.C	Sun Mar  8 22:32:10 2026
***************
*** 0 ****
--- 1,12 ----
+ /* { dg-do run } */
+ /* { dg-additional-options "-O2" } */
+ 
+ /* A minimal test to validate that C++ support works.  */
+ 
+ int
+ main()
+ {
+   int *x = new int;
+   delete x;
+   return 0;
+ }
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/aarch64/pr123786.c gcc-16-20260308/gcc/testsuite/gcc.target/aarch64/pr123786.c
*** gcc-16-20260301/gcc/testsuite/gcc.target/aarch64/pr123786.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/gcc.target/aarch64/pr123786.c	Sun Mar  8 22:32:10 2026
***************
*** 0 ****
--- 1,38 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3 -mtune=generic-armv9-a" } */
+ 
+ #include <arm_neon.h>
+ 
+ int g_36[3];
+ short g_s;
+ signed char g_82, g_179, g_x, g_101;
+ 
+ __attribute__((noipa))
+ void check(void)
+ {
+   if (g_36[0] != 1)
+     __builtin_abort ();
+ }
+ 
+ int main(void)
+ {
+ BS_LABEL_3:
+   short l_65 = g_s;
+   if (g_x) goto BS_LABEL_6;
+   for (; g_101; g_101 = 5)
+   {
+   BS_LABEL_6:
+   }
+   for (; g_82 < 1; g_82++)
+   {
+     switch (vqadds_u32 (0, 0))
+       {
+         case 4: goto BS_LABEL_3;
+         case 9: goto BS_LABEL_3;
+       }
+     short si1 = (l_65 &= 1) || (g_179 &= 0) != 6;
+     g_36[0] = g_36[2] == 0 ? 1 : si1 / g_36[2];
+   }
+ 
+   check ();
+ }
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/aarch64/pr124078-1.c gcc-16-20260308/gcc/testsuite/gcc.target/aarch64/pr124078-1.c
*** gcc-16-20260301/gcc/testsuite/gcc.target/aarch64/pr124078-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/gcc.target/aarch64/pr124078-1.c	Sun Mar  8 22:32:10 2026
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O1 -mbig-endian" } */
+ 
+ /* PR rtl-optimization/124078 */
+ 
+ 
+ int __attribute__((__vector_size__(8))) v;
+ void foo(int a, int b) { v = (int __attribute__((__vector_size__(8)))){a,b}; }
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/aarch64/pr124167.c gcc-16-20260308/gcc/testsuite/gcc.target/aarch64/pr124167.c
*** gcc-16-20260301/gcc/testsuite/gcc.target/aarch64/pr124167.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/gcc.target/aarch64/pr124167.c	Sun Mar  8 22:32:10 2026
***************
*** 0 ****
--- 1,7 ----
+ /* { dg-do compile } */
+ 
+ /* Check there is no ICE.  */
+ 
+ __attribute__ ((target_version ("default"))) int foo ();
+ 
+ int bar () { return foo (); }
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/arm/addr-modes-int.c gcc-16-20260308/gcc/testsuite/gcc.target/arm/addr-modes-int.c
*** gcc-16-20260301/gcc/testsuite/gcc.target/arm/addr-modes-int.c	Sun Mar  1 22:32:16 2026
--- gcc-16-20260308/gcc/testsuite/gcc.target/arm/addr-modes-int.c	Sun Mar  8 22:32:10 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -march=armv7-a" } */
  /* { dg-require-effective-target arm_neon_ok } */
  /* { dg-add-options arm_neon } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2" } */
  /* { dg-require-effective-target arm_neon_ok } */
  /* { dg-add-options arm_neon } */
  
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/arm/aes-fuse-1.c gcc-16-20260308/gcc/testsuite/gcc.target/arm/aes-fuse-1.c
*** gcc-16-20260301/gcc/testsuite/gcc.target/arm/aes-fuse-1.c	Sun Mar  1 22:32:16 2026
--- gcc-16-20260308/gcc/testsuite/gcc.target/arm/aes-fuse-1.c	Sun Mar  8 22:32:10 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target arm_crypto_ok } */
! /* { dg-require-effective-target arm_cpu_cortex_a53 } */
  /* { dg-add-options arm_crypto } */
  /* { dg-add-options arm_cpu_cortex_a53 } */
  /* { dg-additional-options "-O3 -dp" } */
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target arm_crypto_ok } */
! /* { dg-require-effective-target arm_cpu_cortex_a53_ok } */
  /* { dg-add-options arm_crypto } */
  /* { dg-add-options arm_cpu_cortex_a53 } */
  /* { dg-additional-options "-O3 -dp" } */
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/arm/aes-fuse-2.c gcc-16-20260308/gcc/testsuite/gcc.target/arm/aes-fuse-2.c
*** gcc-16-20260301/gcc/testsuite/gcc.target/arm/aes-fuse-2.c	Sun Mar  1 22:32:16 2026
--- gcc-16-20260308/gcc/testsuite/gcc.target/arm/aes-fuse-2.c	Sun Mar  8 22:32:10 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target arm_crypto_ok } */
! /* { dg-require-effective-target arm_cpu_cortex_a53 } */
  /* { dg-add-options arm_crypto } */
  /* { dg-add-options arm_cpu_cortex_a53 } */
  /* { dg-additional-options "-O3 -dp" } */
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target arm_crypto_ok } */
! /* { dg-require-effective-target arm_cpu_cortex_a53_ok } */
  /* { dg-add-options arm_crypto } */
  /* { dg-add-options arm_cpu_cortex_a53 } */
  /* { dg-additional-options "-O3 -dp" } */
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/arm/bfloat16_scalar_1_2.c gcc-16-20260308/gcc/testsuite/gcc.target/arm/bfloat16_scalar_1_2.c
*** gcc-16-20260301/gcc/testsuite/gcc.target/arm/bfloat16_scalar_1_2.c	Sun Mar  1 22:32:16 2026
--- gcc-16-20260308/gcc/testsuite/gcc.target/arm/bfloat16_scalar_1_2.c	Sun Mar  8 22:32:10 2026
***************
*** 9,16 ****
  /*
  **stacktest1:
  **	...
! **	strh	r[0-9]+, \[r[0-9]+\]	@ __bf16
! **	ldrh	r[0-9]+, \[sp, #[0-9]+\]	@ __bf16
  **	...
  **	bx	lr
  */
--- 9,16 ----
  /*
  **stacktest1:
  **	...
! **	strh	r[0-9]+, (\[sp, #[0-9]+\])	@ __bf16
! **	ldrh	r[0-9]+, \1	@ __bf16
  **	...
  **	bx	lr
  */
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/arm/bfloat16_scalar_2_2.c gcc-16-20260308/gcc/testsuite/gcc.target/arm/bfloat16_scalar_2_2.c
*** gcc-16-20260301/gcc/testsuite/gcc.target/arm/bfloat16_scalar_2_2.c	Sun Mar  1 22:32:16 2026
--- gcc-16-20260308/gcc/testsuite/gcc.target/arm/bfloat16_scalar_2_2.c	Sun Mar  8 22:32:10 2026
***************
*** 12,19 ****
  /*
  **stacktest1:
  **	...
! **	strh	r[0-9]+, \[r[0-9]+\]	@ __bf16
! **	ldrh	r[0-9]+, \[sp, #[0-9]+\]	@ __bf16
  **	...
  **	bx	lr
  */
--- 12,19 ----
  /*
  **stacktest1:
  **	...
! **	strh	r[0-9]+, (\[sp, #[0-9]+\])	@ __bf16
! **	ldrh	r[0-9]+, \1	@ __bf16
  **	...
  **	bx	lr
  */
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/arm/bfloat16_scalar_3_2.c gcc-16-20260308/gcc/testsuite/gcc.target/arm/bfloat16_scalar_3_2.c
*** gcc-16-20260301/gcc/testsuite/gcc.target/arm/bfloat16_scalar_3_2.c	Sun Mar  1 22:32:16 2026
--- gcc-16-20260308/gcc/testsuite/gcc.target/arm/bfloat16_scalar_3_2.c	Sun Mar  8 22:32:10 2026
***************
*** 9,16 ****
  /*
  **stacktest1:
  **	...
! **	strh	r[0-9]+, \[r[0-9]+\]	@ __bf16
! **	ldrh	r[0-9]+, \[sp, #[0-9]+\]	@ __bf16
  **	...
  **	bx	lr
  */
--- 9,16 ----
  /*
  **stacktest1:
  **	...
! **	strh	r[0-9]+, (\[sp, #[0-9]+\])	@ __bf16
! **	ldrh	r[0-9]+, \1	@ __bf16
  **	...
  **	bx	lr
  */
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/arm/bfloat16_simd_1_2.c gcc-16-20260308/gcc/testsuite/gcc.target/arm/bfloat16_simd_1_2.c
*** gcc-16-20260301/gcc/testsuite/gcc.target/arm/bfloat16_simd_1_2.c	Sun Mar  1 22:32:16 2026
--- gcc-16-20260308/gcc/testsuite/gcc.target/arm/bfloat16_simd_1_2.c	Sun Mar  8 22:32:10 2026
***************
*** 11,18 ****
  /*
  **stacktest1:
  **	...
! **	strh	r[0-9]+, \[r[0-9]+\]	@ __bf16
! **	ldrh	r[0-9]+, \[sp, #[0-9]+\]	@ __bf16
  **	...
  **	bx	lr
  */
--- 11,18 ----
  /*
  **stacktest1:
  **	...
! **	strh	r[0-9]+, (\[sp, #[0-9]+\])	@ __bf16
! **	ldrh	r[0-9]+, \1	@ __bf16
  **	...
  **	bx	lr
  */
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/arm/bfloat16_simd_2_2.c gcc-16-20260308/gcc/testsuite/gcc.target/arm/bfloat16_simd_2_2.c
*** gcc-16-20260301/gcc/testsuite/gcc.target/arm/bfloat16_simd_2_2.c	Sun Mar  1 22:32:16 2026
--- gcc-16-20260308/gcc/testsuite/gcc.target/arm/bfloat16_simd_2_2.c	Sun Mar  8 22:32:10 2026
***************
*** 14,21 ****
  /*
  **stacktest1:
  **	...
! **	strh	r[0-9]+, \[r[0-9]+\]	@ __bf16
! **	ldrh	r[0-9]+, \[sp, #[0-9]+\]	@ __bf16
  **	...
  **	bx	lr
  */
--- 14,21 ----
  /*
  **stacktest1:
  **	...
! **	strh	r[0-9]+, (\[sp, #[0-9]+\])	@ __bf16
! **	ldrh	r[0-9]+, \1	@ __bf16
  **	...
  **	bx	lr
  */
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/arm/bfloat16_simd_3_2.c gcc-16-20260308/gcc/testsuite/gcc.target/arm/bfloat16_simd_3_2.c
*** gcc-16-20260301/gcc/testsuite/gcc.target/arm/bfloat16_simd_3_2.c	Sun Mar  1 22:32:16 2026
--- gcc-16-20260308/gcc/testsuite/gcc.target/arm/bfloat16_simd_3_2.c	Sun Mar  8 22:32:10 2026
***************
*** 11,18 ****
  /*
  **stacktest1:
  **	...
! **	strh	r[0-9]+, \[r[0-9]+\]	@ __bf16
! **	ldrh	r[0-9]+, \[sp, #[0-9]+\]	@ __bf16
  **	...
  **	bx	lr
  */
--- 11,18 ----
  /*
  **stacktest1:
  **	...
! **	strh	r[0-9]+, (\[sp, #[0-9]+\])	@ __bf16
! **	ldrh	r[0-9]+, \1	@ __bf16
  **	...
  **	bx	lr
  */
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/arm/ifcvt-size-check.c gcc-16-20260308/gcc/testsuite/gcc.target/arm/ifcvt-size-check.c
*** gcc-16-20260301/gcc/testsuite/gcc.target/arm/ifcvt-size-check.c	Sun Mar  1 22:32:16 2026
--- gcc-16-20260308/gcc/testsuite/gcc.target/arm/ifcvt-size-check.c	Sun Mar  8 22:32:10 2026
***************
*** 1,6 ****
  /* { dg-do assemble } */
! /* { dg-options "-mthumb -Os " }  */
! /* { dg-require-effective-target arm_thumb1_ok } */
  
  int
  test (unsigned char iov_len, int count, int i)
--- 1,7 ----
  /* { dg-do assemble } */
! /* { dg-require-effective-target arm_arch_v4t_thumb_ok } */
! /* { dg-options "-Os" } */
! /* { dg-add-options arm_arch_v4t_thumb } */
  
  int
  test (unsigned char iov_len, int count, int i)
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/arm/ivopts-2.c gcc-16-20260308/gcc/testsuite/gcc.target/arm/ivopts-2.c
*** gcc-16-20260301/gcc/testsuite/gcc.target/arm/ivopts-2.c	Sun Mar  1 22:32:16 2026
--- gcc-16-20260308/gcc/testsuite/gcc.target/arm/ivopts-2.c	Sun Mar  8 22:32:10 2026
***************
*** 1,5 ****
! /* { dg-do assemble } */
! /* { dg-options "-Os -fdump-tree-ivopts -save-temps" } */
  
  extern void foo2 (short*);
  
--- 1,4 ----
! /* { dg-options "-Os -fdump-tree-ivopts" } */
  
  extern void foo2 (short*);
  
*************** tr4 (short array[], int n)
*** 14,17 ****
  
  /* { dg-final { scan-tree-dump-times "PHI <ivtmp" 1 "ivopts"} } */
  /* { dg-final { scan-tree-dump-times "PHI <" 1 "ivopts"} } */
- /* { dg-final { object-size text <= 26 { target { arm_thumb2 && { ! arm*-*-uclinuxfdpiceabi } } } } } */
--- 13,15 ----
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/arm/ivopts-3.c gcc-16-20260308/gcc/testsuite/gcc.target/arm/ivopts-3.c
*** gcc-16-20260301/gcc/testsuite/gcc.target/arm/ivopts-3.c	Sun Mar  1 22:32:16 2026
--- gcc-16-20260308/gcc/testsuite/gcc.target/arm/ivopts-3.c	Sun Mar  8 22:32:10 2026
***************
*** 1,5 ****
! /* { dg-do assemble } */
! /* { dg-options "-Os -fdump-tree-ivopts -save-temps" } */
  
  extern unsigned int foo2 (short*) __attribute__((pure));
  
--- 1,4 ----
! /* { dg-options "-Os -fdump-tree-ivopts" } */
  
  extern unsigned int foo2 (short*) __attribute__((pure));
  
*************** tr3 (short array[], unsigned int n)
*** 16,19 ****
  /* { dg-final { scan-tree-dump-times "PHI <ivtmp" 1 "ivopts"} } */
  /* { dg-final { scan-tree-dump-times "PHI <x" 0 "ivopts"} } */
  /* { dg-final { scan-tree-dump-times ", x" 0 "ivopts"} } */
- /* { dg-final { object-size text <= 30 { target { arm_thumb2 && { ! arm*-*-uclinuxfdpiceabi } } } } } */
--- 15,17 ----
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/arm/ivopts-4.c gcc-16-20260308/gcc/testsuite/gcc.target/arm/ivopts-4.c
*** gcc-16-20260301/gcc/testsuite/gcc.target/arm/ivopts-4.c	Sun Mar  1 22:32:16 2026
--- gcc-16-20260308/gcc/testsuite/gcc.target/arm/ivopts-4.c	Sun Mar  8 22:32:10 2026
***************
*** 1,5 ****
! /* { dg-do assemble } */
! /* { dg-options "-Os -fdump-tree-ivopts -save-temps" } */
  
  extern unsigned int foo (int*) __attribute__((pure));
  
--- 1,4 ----
! /* { dg-options "-Os -fdump-tree-ivopts" } */
  
  extern unsigned int foo (int*) __attribute__((pure));
  
*************** tr2 (int array[], int n)
*** 17,20 ****
  /* { dg-final { scan-tree-dump-times "PHI <ivtmp" 1 "ivopts"} } */
  /* { dg-final { scan-tree-dump-times "PHI <x" 0 "ivopts"} } */
  /* { dg-final { scan-tree-dump-times ", x" 0 "ivopts"} } */
- /* { dg-final { object-size text <= 36 { target { arm_thumb2 && { ! arm*-*-uclinuxfdpiceabi } } } } } */
--- 16,18 ----
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/arm/ivopts-5.c gcc-16-20260308/gcc/testsuite/gcc.target/arm/ivopts-5.c
*** gcc-16-20260301/gcc/testsuite/gcc.target/arm/ivopts-5.c	Sun Mar  1 22:32:16 2026
--- gcc-16-20260308/gcc/testsuite/gcc.target/arm/ivopts-5.c	Sun Mar  8 22:32:10 2026
***************
*** 1,5 ****
! /* { dg-do assemble } */
! /* { dg-options "-Os -fdump-tree-ivopts -save-temps" } */
  
  extern unsigned int foo (int*) __attribute__((pure));
  
--- 1,4 ----
! /* { dg-options "-Os -fdump-tree-ivopts" } */
  
  extern unsigned int foo (int*) __attribute__((pure));
  
*************** tr1 (int array[], unsigned int n)
*** 16,19 ****
  /* { dg-final { scan-tree-dump-times "PHI <ivtmp" 1 "ivopts"} } */
  /* { dg-final { scan-tree-dump-times "PHI <x" 0 "ivopts"} } */
  /* { dg-final { scan-tree-dump-times ", x" 0 "ivopts"} } */
- /* { dg-final { object-size text <= 30 { target { arm_thumb2 && { ! arm*-*-uclinuxfdpiceabi } } } } } */
--- 15,17 ----
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/arm/ivopts.c gcc-16-20260308/gcc/testsuite/gcc.target/arm/ivopts.c
*** gcc-16-20260301/gcc/testsuite/gcc.target/arm/ivopts.c	Sun Mar  1 22:32:16 2026
--- gcc-16-20260308/gcc/testsuite/gcc.target/arm/ivopts.c	Sun Mar  8 22:32:10 2026
***************
*** 1,5 ****
! /* { dg-do assemble } */
! /* { dg-options "-Os -fdump-tree-ivopts -save-temps -fno-tree-loop-distribute-patterns" } */
  
  void
  tr5 (short array[], int n)
--- 1,4 ----
! /* { dg-options "-Os -fdump-tree-ivopts -fno-tree-loop-distribute-patterns" } */
  
  void
  tr5 (short array[], int n)
*************** tr5 (short array[], int n)
*** 11,15 ****
  }
  
  /* { dg-final { scan-tree-dump-times "PHI <" 1 "ivopts"} } */
- /* { dg-final { object-size text <= 20 { target { arm_thumb2_no_arm_v8_1m_lob } } } } */
- /* { dg-final { object-size text <= 32 { target { arm_nothumb } } } } */
--- 10,12 ----
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/arm/max-insns-skipped.c gcc-16-20260308/gcc/testsuite/gcc.target/arm/max-insns-skipped.c
*** gcc-16-20260301/gcc/testsuite/gcc.target/arm/max-insns-skipped.c	Sun Mar  1 22:32:16 2026
--- gcc-16-20260308/gcc/testsuite/gcc.target/arm/max-insns-skipped.c	Sun Mar  8 22:32:10 2026
***************
*** 1,5 ****
! /* { dg-do assemble { target arm_thumb2 } } */
! /* { dg-options " -Os " } */
  
  int t (int a, int b, int c, int d)
  {
--- 1,6 ----
! /* { dg-require-effective-target arm_arch_v7a_thumb_ok } */
! /* { dg-options "-Os" } */
! /* { dg-add-options arm_arch_v7a_thumb } */
  
  int t (int a, int b, int c, int d)
  {
*************** int t (int a, int b, int c, int d)
*** 18,21 ****
    return r;
  }
  
! /* { dg-final { object-size text <= 40 } } */
--- 19,22 ----
    return r;
  }
  
! /* { dg-final { scan-assembler-not {\tit[tf]*\t} } } */
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/arm/pr43597.c gcc-16-20260308/gcc/testsuite/gcc.target/arm/pr43597.c
*** gcc-16-20260301/gcc/testsuite/gcc.target/arm/pr43597.c	Sun Mar  1 22:32:16 2026
--- gcc-16-20260308/gcc/testsuite/gcc.target/arm/pr43597.c	Sun Mar  8 22:32:11 2026
***************
*** 1,6 ****
! /* { dg-do assemble } */
! /* { dg-options "-Os -save-temps -mthumb" } */
! /* { dg-require-effective-target arm_thumb2_ok } */
  
  extern int bar ();
  extern void bar2 (int);
--- 1,6 ----
! /* { dg-require-effective-target arm_arch_v7a_thumb_ok } */
! /* { dg-options "-Os" } */
! /* { dg-add-options arm_arch_v7a_thumb } */
  
  extern int bar ();
  extern void bar2 (int);
*************** foo4 ()
*** 24,27 ****
  
  /* { dg-final { scan-assembler-times "sub" 1 } } */
  /* { dg-final { scan-assembler-times "cmp" 0 } } */
- /* { dg-final { object-size text <= 30 { target { ! arm*-*-uclinuxfdpiceabi } } } } */
--- 24,26 ----
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/arm/pr63210.c gcc-16-20260308/gcc/testsuite/gcc.target/arm/pr63210.c
*** gcc-16-20260301/gcc/testsuite/gcc.target/arm/pr63210.c	Sun Mar  1 22:32:16 2026
--- gcc-16-20260308/gcc/testsuite/gcc.target/arm/pr63210.c	Sun Mar  8 22:32:11 2026
***************
*** 1,8 ****
  /* { dg-do assemble } */
! /* { dg-options "-mthumb -Os " }  */
! /* { dg-require-effective-target arm_thumb1_ok } */
! /* { dg-skip-if "do not test on armv4t" { *-*-* } { "-march=armv4t" } } */
! /* { dg-additional-options "-march=armv5t" {target arm_arch_v5t_ok} } */
  
  int foo1 (int c);
  int foo2 (int c);
--- 1,7 ----
  /* { dg-do assemble } */
! /* { dg-options "-Os" }  */
! /* { dg-require-effective-target arm_arch_v5t_thumb_ok } */
! /* { dg-add-options arm_arch_v5t_thumb } */
  
  int foo1 (int c);
  int foo2 (int c);
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/arm/simd/vextQp64_1.c gcc-16-20260308/gcc/testsuite/gcc.target/arm/simd/vextQp64_1.c
*** gcc-16-20260301/gcc/testsuite/gcc.target/arm/simd/vextQp64_1.c	Sun Mar  1 22:32:16 2026
--- gcc-16-20260308/gcc/testsuite/gcc.target/arm/simd/vextQp64_1.c	Sun Mar  8 22:32:11 2026
***************
*** 1,7 ****
  /* Test the `vextQp64' ARM Neon intrinsic.  */
  
  /* { dg-require-effective-target arm_crypto_ok } */
! /* { dg-options "-save-temps -O3 -fno-inline" } */
  /* { dg-add-options arm_crypto } */
  
  #include "arm_neon.h"
--- 1,7 ----
  /* Test the `vextQp64' ARM Neon intrinsic.  */
  
  /* { dg-require-effective-target arm_crypto_ok } */
! /* { dg-options "-save-temps -O3 -fno-inline -fno-ipa-cp" } */
  /* { dg-add-options arm_crypto } */
  
  #include "arm_neon.h"
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/arm/split-live-ranges-for-shrink-wrap.c gcc-16-20260308/gcc/testsuite/gcc.target/arm/split-live-ranges-for-shrink-wrap.c
*** gcc-16-20260301/gcc/testsuite/gcc.target/arm/split-live-ranges-for-shrink-wrap.c	Sun Mar  1 22:32:16 2026
--- gcc-16-20260308/gcc/testsuite/gcc.target/arm/split-live-ranges-for-shrink-wrap.c	Sun Mar  8 22:32:11 2026
***************
*** 1,8 ****
! /* { dg-do assemble } */
! /* { dg-options "-mthumb -Os -fdump-rtl-ira " }  */
! /* { dg-require-effective-target arm_thumb1_ok } */
! /* { dg-skip-if "do not test on armv4t" { *-*-* } { "-march=armv4t" } } */
! /* { dg-additional-options "-march=armv5t" {target arm_arch_v5t_ok} } */
  
  int foo (char *, char *, int);
  int test (int d, char * out, char *in, int len)
--- 1,6 ----
! /* { dg-options "-Os -fdump-rtl-ira " } */
! /* { dg-require-effective-target arm_arch_v5t_thumb_ok } */
! /* { dg-add-options arm_arch_v5t_thumb } */
  
  int foo (char *, char *, int);
  int test (int d, char * out, char *in, int len)
*************** int test (int d, char * out, char *in, i
*** 11,15 ****
      foo (out, in, len);
    return 0;
  }
- /* { dg-final { object-size text <= 20 } } */
  /* { dg-final { scan-rtl-dump-not "Split live-range of register" "ira" } } */
--- 9,12 ----
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/bpf/btfext-funcinfo.c gcc-16-20260308/gcc/testsuite/gcc.target/bpf/btfext-funcinfo.c
*** gcc-16-20260301/gcc/testsuite/gcc.target/bpf/btfext-funcinfo.c	Sun Mar  1 22:32:16 2026
--- gcc-16-20260308/gcc/testsuite/gcc.target/bpf/btfext-funcinfo.c	Sun Mar  8 22:32:11 2026
*************** int bar_func (struct T *t)
*** 39,44 ****
  /* { dg-final { scan-assembler-times "ascii \"bar_sec.0\"\[\t \]+\[^\n\]*btf_aux_string" 1 } } */
  /* { dg-final { scan-assembler-times "FuncInfo entry size" 1 } } */
  
! /* { dg-final { scan-assembler-times ".4byte\t0x1\t# Number of entries" 3 } } */
! /* { dg-final { scan-assembler-times ".4byte\t0x2\t# Number of entries" 1 } } */
  /* { dg-final { scan-assembler-times "Required padding" 1 } } */
--- 39,43 ----
  /* { dg-final { scan-assembler-times "ascii \"bar_sec.0\"\[\t \]+\[^\n\]*btf_aux_string" 1 } } */
  /* { dg-final { scan-assembler-times "FuncInfo entry size" 1 } } */
  
! /* { dg-final { scan-assembler-times "FuncInfo section\[^\n\]*\n\[^0\]*0x1\t# Number of entries" 2 } } */
  /* { dg-final { scan-assembler-times "Required padding" 1 } } */
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/bpf/btfext-lineinfo.c gcc-16-20260308/gcc/testsuite/gcc.target/bpf/btfext-lineinfo.c
*** gcc-16-20260301/gcc/testsuite/gcc.target/bpf/btfext-lineinfo.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/gcc.target/bpf/btfext-lineinfo.c	Sun Mar  8 22:32:11 2026
***************
*** 0 ****
--- 1,51 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -dA -gbtf -masm=normal" } */
+ 
+ struct T {
+   int a;
+   int b;
+   struct U {
+     int c;
+     struct V {
+       int d;
+       int e[4];
+       int f;
+     } v;
+   } u;
+ } __attribute__((preserve_access_index));
+ 
+ __attribute__((section("foo_sec"), used))
+ int foo_func (struct T *t)
+ {
+   t->u.c = 5;
+   return t->u.v.e[3];
+ }
+ 
+ __attribute__((section("bar_sec"), used))
+ int bar_func (struct T *t)
+ {
+   int *x = &(t->u.v.f);
+   int old = *x;
+   *x = 4;
+   return old;
+ }
+ 
+ /* { dg-final { scan-assembler-times "LineInfo section string for foo_sec" 1 } } */
+ /* { dg-final { scan-assembler-times "LineInfo section string for bar_sec" 1 } } */
+ /* { dg-final { scan-assembler-times "label for function foo_func" 1 } } */
+ /* { dg-final { scan-assembler-times "label for function bar_func" 1 } } */
+ 
+ 
+ /* { dg-final { scan-assembler-times "btfext-lineinfo\.c.0\"\[\t \]+\[^\n\]*btf_aux_string" 1 } } */
+ /* { dg-final { scan-assembler-times "4byte\[\t \]+\.LFB.\[\t \]+# insn_label" 2 } } */
+ /* { dg-final { scan-assembler-times "4byte\[\t \]+LI.\[\t \]+# insn_label" 6 } } */
+ 
+ /* { dg-final { scan-assembler-times "# \\(line, col\\)" 8 } } */
+ /* { dg-final { scan-assembler-times "# \\(line, col\\) \\(18, 5\\)" 1 } } */
+ /* { dg-final { scan-assembler-times "# \\(line, col\\) \\(20, 10\\)" 1 } } */
+ /* { dg-final { scan-assembler-times "# \\(line, col\\) \\(21, 18\\)" 1 } } */
+ /* { dg-final { scan-assembler-times "# \\(line, col\\) \\(22, 1\\)" 1 } } */
+ /* { dg-final { scan-assembler-times "# \\(line, col\\) \\(25, 5\\)" 1 } } */
+ /* { dg-final { scan-assembler-times "# \\(line, col\\) \\(28, 7\\)" 1 } } */
+ /* { dg-final { scan-assembler-times "# \\(line, col\\) \\(29, 6\\)" 1 } } */
+ /* { dg-final { scan-assembler-times "# \\(line, col\\) \\(31, 1\\)" 1 } } */
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/i386/avx10_2-pr124294.c gcc-16-20260308/gcc/testsuite/gcc.target/i386/avx10_2-pr124294.c
*** gcc-16-20260301/gcc/testsuite/gcc.target/i386/avx10_2-pr124294.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/gcc.target/i386/avx10_2-pr124294.c	Sun Mar  8 22:32:11 2026
***************
*** 0 ****
--- 1,14 ----
+ /* PR target/124294 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mavx10.2 -masm=intel" } */
+ /* { dg-require-effective-target masm_intel } */
+ /* { dg-final { scan-assembler "\tvmovw\txmm0, xmm1" } } */
+ 
+ typedef unsigned char V __attribute__((vector_size (16)));
+ 
+ V
+ foo (V x, V y)
+ {
+   (void) x;
+   return __builtin_shuffle (y, (V) {}, (V) { 0, 1, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 });
+ }
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/i386/avx10_2-pr124341.c gcc-16-20260308/gcc/testsuite/gcc.target/i386/avx10_2-pr124341.c
*** gcc-16-20260301/gcc/testsuite/gcc.target/i386/avx10_2-pr124341.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/gcc.target/i386/avx10_2-pr124341.c	Sun Mar  8 22:32:11 2026
***************
*** 0 ****
--- 1,77 ----
+ /* PR target/124341 */
+ /* { dg-do assemble { target { avx10_2 && masm_intel } } } */
+ /* { dg-options "-O2 -mavx10.2 -masm=intel" } */
+ 
+ #include <x86intrin.h>
+ 
+ __m128i
+ mm_mask_cvt2ph_bf8 (__m128i w, __mmask16 u, __m128h a, __m128h b)
+ {
+   return _mm_mask_cvt2ph_bf8 (w, u, a, b);
+ }
+ 
+ __m256i
+ mm256_mask_cvt2ph_bf8 (__m256i w, __mmask32 u, __m256h a, __m256h b)
+ {
+   return _mm256_mask_cvt2ph_bf8 (w, u, a, b);
+ }
+ 
+ __m512i
+ mm512_mask_cvt2ph_bf8 (__m512i w, __mmask64 u, __m512h a, __m512h b)
+ {
+   return _mm512_mask_cvt2ph_bf8 (w, u, a, b);
+ }
+ 
+ __m128i
+ mm_mask_cvts_2ph_bf8 (__m128i w, __mmask16 u, __m128h a, __m128h b)
+ {
+   return _mm_mask_cvts_2ph_bf8 (w, u, a, b);
+ }
+ 
+ __m256i
+ mm256_mask_cvts_2ph_bf8 (__m256i w, __mmask32 u, __m256h a, __m256h b)
+ {
+   return _mm256_mask_cvts_2ph_bf8 (w, u, a, b);
+ }
+ 
+ __m512i
+ mm512_mask_cvts_2ph_bf8 (__m512i w, __mmask64 u, __m512h a, __m512h b)
+ {
+   return _mm512_mask_cvts_2ph_bf8 (w, u, a, b);
+ }
+ 
+ __m128i
+ mm_mask_cvt2ph_hf8 (__m128i w, __mmask16 u, __m128h a, __m128h b)
+ {
+   return _mm_mask_cvt2ph_hf8 (w, u, a, b);
+ }
+ 
+ __m256i
+ mm256_mask_cvt2ph_hf8 (__m256i w, __mmask32 u, __m256h a, __m256h b)
+ {
+   return _mm256_mask_cvt2ph_hf8 (w, u, a, b);
+ }
+ 
+ __m512i
+ mm512_mask_cvt2ph_hf8 (__m512i w, __mmask64 u, __m512h a, __m512h b)
+ {
+   return _mm512_mask_cvt2ph_hf8 (w, u, a, b);
+ }
+ 
+ __m128i
+ mm_mask_cvts_2ph_hf8 (__m128i w, __mmask16 u, __m128h a, __m128h b)
+ {
+   return _mm_mask_cvts_2ph_hf8 (w, u, a, b);
+ }
+ 
+ __m256i
+ mm256_mask_cvts_2ph_hf8 (__m256i w, __mmask32 u, __m256h a, __m256h b)
+ {
+   return _mm256_mask_cvts_2ph_hf8 (w, u, a, b);
+ }
+ 
+ __m512i
+ mm512_mask_cvts_2ph_hf8 (__m512i w, __mmask64 u, __m512h a, __m512h b)
+ {
+   return _mm512_mask_cvts_2ph_hf8 (w, u, a, b);
+ }
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/i386/avx10_2-pr124349-2.c gcc-16-20260308/gcc/testsuite/gcc.target/i386/avx10_2-pr124349-2.c
*** gcc-16-20260301/gcc/testsuite/gcc.target/i386/avx10_2-pr124349-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/gcc.target/i386/avx10_2-pr124349-2.c	Sun Mar  8 22:32:11 2026
***************
*** 0 ****
--- 1,41 ----
+ /* PR target/124349 */
+ /* { dg-do assemble { target { avx10_2 && masm_intel } } } */
+ /* { dg-options "-O2 -mavx10.2 -masm=intel" } */
+ 
+ #include <x86intrin.h>
+ 
+ __m128h
+ foo (__m128i *p)
+ {
+   return _mm_cvthf8_ph (*p);
+ }
+ 
+ __m128h
+ bar (__m128i *p, __m128h w, __mmask8 u)
+ {
+   return _mm_mask_cvthf8_ph (w, u, *p);
+ }
+ 
+ __m256h
+ baz (__m128i *p)
+ {
+   return _mm256_cvthf8_ph (*p);
+ }
+ 
+ __m256h
+ qux (__m128i *p, __m256h w, __mmask16 u)
+ {
+   return _mm256_mask_cvthf8_ph (w, u, *p);
+ }
+ 
+ __m512h
+ fred (__m256i *p)
+ {
+   return _mm512_cvthf8_ph (*p);
+ }
+ 
+ __m512h
+ corge (__m256i *p, __m512h w, __mmask32 u)
+ {
+   return _mm512_mask_cvthf8_ph (w, u, *p);
+ }
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/i386/avx10_2-pr124349.c gcc-16-20260308/gcc/testsuite/gcc.target/i386/avx10_2-pr124349.c
*** gcc-16-20260301/gcc/testsuite/gcc.target/i386/avx10_2-pr124349.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/gcc.target/i386/avx10_2-pr124349.c	Sun Mar  8 22:32:11 2026
***************
*** 0 ****
--- 1,17 ----
+ /* PR target/124349 */
+ /* { dg-do assemble { target { avx10_2 && masm_intel } } } */
+ /* { dg-options "-O2 -mavx10.2 -masm=intel" } */
+ 
+ #include <x86intrin.h>
+ 
+ int
+ foo (__m128bh v, __m128bh *p)
+ {
+   return _mm_comilt_sbh (*p, v);
+ }
+ 
+ int
+ bar (__m128bh v, __m128bh w)
+ {
+   return _mm_comilt_sbh (w, v);
+ }
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/i386/avx512f-pr124315.c gcc-16-20260308/gcc/testsuite/gcc.target/i386/avx512f-pr124315.c
*** gcc-16-20260301/gcc/testsuite/gcc.target/i386/avx512f-pr124315.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/gcc.target/i386/avx512f-pr124315.c	Sun Mar  8 22:32:11 2026
***************
*** 0 ****
--- 1,33 ----
+ /* PR target/124315 */
+ /* { dg-do compile { target masm_intel } } */
+ /* { dg-options "-O2 -mavx512f -masm=intel" } */
+ /* { dg-final { scan-assembler "\tvfmadd231sd\txmm0{k\[0-7]}, xmm1, xmm2, {ru-sae}" } } */
+ /* { dg-final { scan-assembler "\tvfmsub231sd\txmm0{k\[0-7]}, xmm1, xmm2, {ru-sae}" } } */
+ /* { dg-final { scan-assembler "\tvfnmadd231sd\txmm0{k\[0-7]}, xmm1, xmm2, {ru-sae}" } } */
+ /* { dg-final { scan-assembler "\tvfnmsub231sd\txmm0{k\[0-7]}, xmm1, xmm2, {ru-sae}" } } */
+ 
+ #include <x86intrin.h>
+ 
+ __m128d
+ foo (__m128d b, __m128d w, __m128d a,  __mmask8 u)
+ {
+   return _mm_mask3_fmadd_round_sd (w, a, b, u, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC);
+ }
+ 
+ __m128d
+ bar (__m128d b, __m128d w, __m128d a, __mmask8 u)
+ {
+   return _mm_mask3_fmsub_round_sd (w, a, b, u, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC);
+ }
+ 
+ __m128d
+ baz (__m128d b, __m128d w, __m128d a,  __mmask8 u)
+ {
+   return _mm_mask3_fnmadd_round_sd (w, a, b, u, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC);
+ }
+ 
+ __m128d
+ qux (__m128d b, __m128d w, __m128d a,  __mmask8 u)
+ {
+   return _mm_mask3_fnmsub_round_sd (w, a, b, u, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC);
+ }
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/i386/avx512fp16-pr124335.c gcc-16-20260308/gcc/testsuite/gcc.target/i386/avx512fp16-pr124335.c
*** gcc-16-20260301/gcc/testsuite/gcc.target/i386/avx512fp16-pr124335.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/gcc.target/i386/avx512fp16-pr124335.c	Sun Mar  8 22:32:11 2026
***************
*** 0 ****
--- 1,13 ----
+ /* PR target/124335 */
+ /* { dg-do assemble } */
+ /* { dg-require-effective-target masm_intel } */
+ /* { dg-options "-mavx512fp16 -masm=intel" } */
+ /* { dg-require-effective-target avx512fp16 } */
+ 
+ #include <x86intrin.h>
+ 
+ __m128h
+ foo (_Float16 const *x, __mmask8 y)
+ {
+   return _mm_maskz_load_sh (y, x);
+ }
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/i386/avx512fp16-xorsign-1.c gcc-16-20260308/gcc/testsuite/gcc.target/i386/avx512fp16-xorsign-1.c
*** gcc-16-20260301/gcc/testsuite/gcc.target/i386/avx512fp16-xorsign-1.c	Sun Mar  1 22:32:16 2026
--- gcc-16-20260308/gcc/testsuite/gcc.target/i386/avx512fp16-xorsign-1.c	Sun Mar  8 22:32:11 2026
*************** do_test (void)
*** 35,41 ****
        abort ();
  }
  
! /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
  /* { dg-final { scan-assembler "\[ \t\]xor" } } */
  /* { dg-final { scan-assembler "\[ \t\]and" } } */
  /* { dg-final { scan-assembler-not "copysign" } } */
--- 35,41 ----
        abort ();
  }
  
! /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
  /* { dg-final { scan-assembler "\[ \t\]xor" } } */
  /* { dg-final { scan-assembler "\[ \t\]and" } } */
  /* { dg-final { scan-assembler-not "copysign" } } */
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/i386/avx512vl-pr124367.c gcc-16-20260308/gcc/testsuite/gcc.target/i386/avx512vl-pr124367.c
*** gcc-16-20260301/gcc/testsuite/gcc.target/i386/avx512vl-pr124367.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/gcc.target/i386/avx512vl-pr124367.c	Sun Mar  8 22:32:11 2026
***************
*** 0 ****
--- 1,14 ----
+ /* PR target/124367 */
+ /* { dg-do assemble { target { { int128 && avx512vl } && masm_intel } } } */
+ /* { dg-options "-O -mavx512vl -masm=intel" } */
+ 
+ union {
+   __int128 a;
+   __attribute__((__vector_size__(sizeof (__int128)))) long long b;
+ } u;
+ 
+ void
+ foo ()
+ {
+   u.b ^= 0 > u.a | u.b;
+ }
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/i386/cet-pr124366.c gcc-16-20260308/gcc/testsuite/gcc.target/i386/cet-pr124366.c
*** gcc-16-20260301/gcc/testsuite/gcc.target/i386/cet-pr124366.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/gcc/testsuite/gcc.target/i386/cet-pr124366.c	Sun Mar  8 22:32:11 2026
***************
*** 0 ****
--- 1,31 ----
+ /* PR target/124366 */
+ /* { dg-do assemble { target { cet && masm_intel } } } */
+ /* { dg-options "-O2 -mshstk -masm=intel" } */
+ 
+ #include <x86intrin.h>
+ 
+ void
+ wrssd (unsigned int x, void *y)
+ {
+   _wrssd (x, y);
+ }
+ 
+ void
+ wrussd (unsigned int x, void *y)
+ {
+   _wrussd (x, y);
+ }
+ 
+ #ifdef __x86_64__
+ void
+ wrssq (unsigned long long x, void *y)
+ {
+   _wrssq (x, y);
+ }
+ 
+ void
+ wrussq (unsigned long long x, void *y)
+ {
+   _wrussq (x, y);
+ }
+ #endif
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/i386/stack-check-11.c gcc-16-20260308/gcc/testsuite/gcc.target/i386/stack-check-11.c
*** gcc-16-20260301/gcc/testsuite/gcc.target/i386/stack-check-11.c	Sun Mar  1 22:32:17 2026
--- gcc-16-20260308/gcc/testsuite/gcc.target/i386/stack-check-11.c	Sun Mar  8 22:32:11 2026
*************** frob ()
*** 14,18 ****
  }
  
  /* { dg-final { scan-assembler-times "sub\[ql\]" 4 } } */
! /* { dg-final { scan-assembler-times "or\[ql\]" 3 } } */
! 
--- 14,17 ----
  }
  
  /* { dg-final { scan-assembler-times "sub\[ql\]" 4 } } */
! /* { dg-final { scan-assembler-times "or\[qlb\]" 3 } } */
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/i386/stack-check-18.c gcc-16-20260308/gcc/testsuite/gcc.target/i386/stack-check-18.c
*** gcc-16-20260301/gcc/testsuite/gcc.target/i386/stack-check-18.c	Sun Mar  1 22:32:17 2026
--- gcc-16-20260308/gcc/testsuite/gcc.target/i386/stack-check-18.c	Sun Mar  8 22:32:11 2026
*************** f2 (void)
*** 20,24 ****
  /* { dg-final { scan-rtl-dump-times "allocation and probing in loop" 1 "expand" } } */
  /* { dg-final { scan-rtl-dump-times "allocation and probing residuals" 1 "expand" } } */
  
! /* { dg-final { scan-assembler-times "or\[ql\]" 1 } } */
! 
--- 20,23 ----
  /* { dg-final { scan-rtl-dump-times "allocation and probing in loop" 1 "expand" } } */
  /* { dg-final { scan-rtl-dump-times "allocation and probing residuals" 1 "expand" } } */
  
! /* { dg-final { scan-assembler-times "or\[qlb\]" 1 } } */
diff -Nrcpad gcc-16-20260301/gcc/testsuite/gcc.target/i386/stack-check-19.c gcc-16-20260308/gcc/testsuite/gcc.target/i386/stack-check-19.c
*** gcc-16-20260301/gcc/testsuite/gcc.target/i386/stack-check-19.c	Sun Mar  1 22:32:17 2026
--- gcc-16-20260308/gcc/testsuite/gcc.target/i386/stack-check-19.c	Sun Mar  8 22:32:11 2026
*************** f2 (const int size)
*** 17,23 ****
     there are two probes in the final assembly code.  */
  /* { dg-final { scan-rtl-dump-times "allocation and probing in loop" 1 "expand" } } */
  /* { dg-final { scan-rtl-dump-times "allocation and probing residuals" 1 "expand" } } */
! /* { dg-final { scan-assembler-times "or\[ql\]" 2 } } */
  
  /* We also want to verify (indirectly) that the residual probe is
     guarded.  We do that by checking the number of conditional
--- 17,23 ----
     there are two probes in the final assembly code.  */
  /* { dg-final { scan-rtl-dump-times "allocation and probing in loop" 1 "expand" } } */
  /* { dg-final { scan-rtl-dump-times "allocation and probing residuals" 1 "expand" } } */
! /* { dg-final { scan-assembler-times "or\[qlb\]" 2 } } */
  
  /* We also want to verify (indirectly) that the residual probe is
     guarded.  We do that by checking the number of conditional
*************** f2 (const int size)
*** 26,30 ****
  
     These will all be equality tests.  */
  /* { dg-final { scan-assembler-times "(\?:je|jne)" 3 } } */
- 
- 
--- 26,28 ----
diff -Nrcpad gcc-16-20260301/gcc/testsuite/lib/target-supports.exp gcc-16-20260308/gcc/testsuite/lib/target-supports.exp
*** gcc-16-20260301/gcc/testsuite/lib/target-supports.exp	Sun Mar  1 22:32:18 2026
--- gcc-16-20260308/gcc/testsuite/lib/target-supports.exp	Sun Mar  8 22:32:13 2026
*************** foreach { armfunc armflag armdefs } {
*** 6222,6227 ****
--- 6222,6228 ----
  	v7 "-march=armv7+fp" __ARM_ARCH_7__
  	v7a "-march=armv7-a+fp" __ARM_ARCH_7A__
  	v7a_arm "-march=armv7-a+fp -marm" "__ARM_ARCH_7A__ && !__thumb__"
+ 	v7a_thumb "-march=armv7-a+fp -mthumb" "__ARM_ARCH_7A__ && __thumb__"
  	v7a_fp_hard "-march=armv7-a+fp -mfpu=auto -mfloat-abi=hard" __ARM_ARCH_7A__
  	v7a_neon "-march=armv7-a+simd -mfpu=auto -mfloat-abi=softfp" "__ARM_ARCH_7A__ && __ARM_NEON__"
  	v7a_neon_thumb "-march=armv7-a+simd -mfpu=auto -mfloat-abi=softfp -mthumb" "__ARM_ARCH_7A__ && __ARM_NEON__ && __thumb__"
diff -Nrcpad gcc-16-20260301/gcc/tree-inline.cc gcc-16-20260308/gcc/tree-inline.cc
*** gcc-16-20260301/gcc/tree-inline.cc	Sun Mar  1 22:32:18 2026
--- gcc-16-20260308/gcc/tree-inline.cc	Sun Mar  8 22:32:13 2026
*************** expand_call_inline (basic_block bb, gimp
*** 5336,5342 ****
    if (use_retvar && gimple_call_lhs (stmt))
      {
        gimple *old_stmt = stmt;
!       stmt = gimple_build_assign (gimple_call_lhs (stmt), use_retvar);
        gimple_set_location (stmt, gimple_location (old_stmt));
        gsi_replace (&stmt_gsi, stmt, false);
        maybe_clean_or_replace_eh_stmt (old_stmt, stmt);
--- 5336,5355 ----
    if (use_retvar && gimple_call_lhs (stmt))
      {
        gimple *old_stmt = stmt;
!       tree lhs = gimple_call_lhs (stmt);
!       if (!is_gimple_reg (lhs)
! 	  && !is_gimple_reg (use_retvar)
! 	  && is_gimple_reg_type (TREE_TYPE (lhs)))
! 	{
! 	  /* If both lhs and use_retvar aren't gimple regs, yet have
! 	     gimple reg type, copy through a temporary SSA_NAME.  */
! 	  gimple *g = gimple_build_assign (make_ssa_name (TREE_TYPE (lhs)),
! 					   use_retvar);
! 	  gimple_set_location (g, gimple_location (old_stmt));
! 	  gsi_insert_before (&stmt_gsi, g, GSI_SAME_STMT);
! 	  use_retvar = gimple_assign_lhs (g);
! 	}
!       stmt = gimple_build_assign (lhs, use_retvar);
        gimple_set_location (stmt, gimple_location (old_stmt));
        gsi_replace (&stmt_gsi, stmt, false);
        maybe_clean_or_replace_eh_stmt (old_stmt, stmt);
diff -Nrcpad gcc-16-20260301/gcc/tree-profile.cc gcc-16-20260308/gcc/tree-profile.cc
*** gcc-16-20260301/gcc/tree-profile.cc	Sun Mar  1 22:32:18 2026
--- gcc-16-20260308/gcc/tree-profile.cc	Sun Mar  8 22:32:13 2026
*************** struct conds_ctx
*** 182,187 ****
--- 182,188 ----
      auto_sbitmap G1;
      auto_sbitmap G2;
      auto_sbitmap G3;
+     auto_vec<edge, 64> edges;
  
      explicit conds_ctx (unsigned size) noexcept (true) : G1 (size), G2 (size),
      G3 (size)
*************** topological_cmp (const void *lhs, const
*** 217,222 ****
--- 218,233 ----
      return (*im)[l->index] - (*im)[r->index];
  }
  
+ /* topological_cmp of the src block of LHS and RHS.  The TOP_INDEX argument
+    should be the top_index vector from ctx.  */
+ int
+ topological_src_cmp (const void *lhs, const void *rhs, void *top_index)
+ {
+     const_edge l = *(const edge*) lhs;
+     const_edge r = *(const edge*) rhs;
+     return topological_cmp (&l->src, &r->src, top_index);
+ }
+ 
  /* Find the index of NEEDLE in BLOCKS; return -1 if not found.  This has two
     uses, sometimes for the index and sometimes for set member checks.  Sets are
     typically very small (number of conditions, >8 is uncommon) so linear search
*************** condition_uid (struct function *fn, basi
*** 437,443 ****
  
     We find the terms by marking the outcomes (in this case c, T) and walk the
     predecessors starting at top (in this case b) and masking nodes when both
!    successors are marked.
  
     The masking table is represented as two bitfields per term in the expression
     with the index corresponding to the term in the Boolean expression.
--- 448,464 ----
  
     We find the terms by marking the outcomes (in this case c, T) and walk the
     predecessors starting at top (in this case b) and masking nodes when both
!    successors are marked.  This is equivalent to removing the two outcome nodes
!    of the subexpression and finding the nodes not in the inverse reachability
!    set.
! 
!    We only have to consider the pairs of top, bot where top is the the closest
!    (highest-index'd) candidate that still satisfies top < bot in the
!    topological order, as this will be the immediate left operand.  The nodes of
!    the other left operands will also be found when going through the righmost
!    term, and a lower-index'd top would just find subsets.  This has a
!    significant performance impact, 15-20x faster for the worst cases of (x && y
!    && ..) with no nesting.
  
     The masking table is represented as two bitfields per term in the expression
     with the index corresponding to the term in the Boolean expression.
*************** masking_vectors (conds_ctx& ctx, array_s
*** 514,529 ****
      for (size_t i = 1; i != body.length (); i++)
      {
  	const basic_block b = body[i];
! 	for (edge e1 : b->preds)
! 	for (edge e2 : b->preds)
! 	{
! 	    if (e1 == e2)
! 		continue;
! 	    if ((e1->flags | e2->flags) & EDGE_COMPLEX)
! 		continue;
  
! 	    edge etop = contract_edge_up (e1);
! 	    edge ebot = contract_edge_up (e2);
  	    gcc_assert (etop != ebot);
  
  	    const basic_block top = etop->src;
--- 535,553 ----
      for (size_t i = 1; i != body.length (); i++)
      {
  	const basic_block b = body[i];
! 	if (b->preds->length () < 2)
! 	  continue;
! 	ctx.edges.truncate (0);
! 	ctx.edges.reserve (b->preds->length ());
! 	for (edge e : b->preds)
! 	  if (!(e->flags & EDGE_COMPLEX))
! 	    ctx.edges.quick_push (contract_edge_up (e));
! 	ctx.edges.sort (topological_src_cmp, &ctx.top_index);
  
! 	for (size_t i0 = 0, i1 = 1; i1 != ctx.edges.length (); ++i0, ++i1)
! 	{
! 	    edge etop = ctx.edges[i0];
! 	    edge ebot = ctx.edges[i1];
  	    gcc_assert (etop != ebot);
  
  	    const basic_block top = etop->src;
diff -Nrcpad gcc-16-20260301/gcc/tree-ssa-math-opts.cc gcc-16-20260308/gcc/tree-ssa-math-opts.cc
*** gcc-16-20260301/gcc/tree-ssa-math-opts.cc	Sun Mar  1 22:32:18 2026
--- gcc-16-20260308/gcc/tree-ssa-math-opts.cc	Sun Mar  8 22:32:13 2026
*************** convert_plusminus_to_widen (gimple_stmt_
*** 2982,2987 ****
--- 2982,2992 ----
    if (to_mode == from_mode)
      return false;
  
+   /* For fixed point types, the mode classes could be different
+      so reject that case. */
+   if (GET_MODE_CLASS (from_mode) != GET_MODE_CLASS (to_mode))
+     return false;
+ 
    from_unsigned1 = TYPE_UNSIGNED (type1);
    from_unsigned2 = TYPE_UNSIGNED (type2);
    optype = type1;
diff -Nrcpad gcc-16-20260301/gcc/tree-vect-data-refs.cc gcc-16-20260308/gcc/tree-vect-data-refs.cc
*** gcc-16-20260301/gcc/tree-vect-data-refs.cc	Sun Mar  1 22:32:18 2026
--- gcc-16-20260308/gcc/tree-vect-data-refs.cc	Sun Mar  8 22:32:13 2026
*************** vect_enhance_data_refs_alignment (loop_v
*** 2536,2543 ****
                if (unlimited_cost_model (LOOP_VINFO_LOOP (loop_vinfo)))
  		{
  		  unsigned group_size = 1;
! 		  if (STMT_SLP_TYPE (stmt_info)
! 		      && STMT_VINFO_GROUPED_ACCESS (stmt_info))
  		    group_size = DR_GROUP_SIZE (stmt_info);
  		  nscalars = vf * group_size;
  		}
--- 2536,2542 ----
                if (unlimited_cost_model (LOOP_VINFO_LOOP (loop_vinfo)))
  		{
  		  unsigned group_size = 1;
! 		  if (STMT_VINFO_GROUPED_ACCESS (stmt_info))
  		    group_size = DR_GROUP_SIZE (stmt_info);
  		  nscalars = vf * group_size;
  		}
*************** vect_supportable_dr_alignment (vec_info
*** 6896,6902 ****
  	  /* If we are doing SLP then the accesses need not have the
  	     same alignment, instead it depends on the SLP group size.  */
  	  if (loop_vinfo
- 	      && STMT_SLP_TYPE (stmt_info)
  	      && STMT_VINFO_GROUPED_ACCESS (stmt_info)
  	      && !multiple_p (LOOP_VINFO_VECT_FACTOR (loop_vinfo)
  			      * (DR_GROUP_SIZE
--- 6895,6900 ----
diff -Nrcpad gcc-16-20260301/gcc/tree-vect-loop.cc gcc-16-20260308/gcc/tree-vect-loop.cc
*** gcc-16-20260301/gcc/tree-vect-loop.cc	Sun Mar  1 22:32:18 2026
--- gcc-16-20260308/gcc/tree-vect-loop.cc	Sun Mar  8 22:32:13 2026
*************** again:
*** 2678,2684 ****
    FOR_EACH_VEC_ELT (LOOP_VINFO_SLP_INSTANCES (loop_vinfo), j, instance)
      vect_free_slp_instance (instance);
    LOOP_VINFO_SLP_INSTANCES (loop_vinfo).release ();
!   /* Reset SLP type to loop_vect on all stmts.  */
    for (i = 0; i < LOOP_VINFO_LOOP (loop_vinfo)->num_nodes; ++i)
      {
        basic_block bb = LOOP_VINFO_BBS (loop_vinfo)[i];
--- 2678,2684 ----
    FOR_EACH_VEC_ELT (LOOP_VINFO_SLP_INSTANCES (loop_vinfo), j, instance)
      vect_free_slp_instance (instance);
    LOOP_VINFO_SLP_INSTANCES (loop_vinfo).release ();
!   /* Reset altered state on stmts.  */
    for (i = 0; i < LOOP_VINFO_LOOP (loop_vinfo)->num_nodes; ++i)
      {
        basic_block bb = LOOP_VINFO_BBS (loop_vinfo)[i];
*************** again:
*** 2686,2692 ****
  	   !gsi_end_p (si); gsi_next (&si))
  	{
  	  stmt_vec_info stmt_info = loop_vinfo->lookup_stmt (gsi_stmt (si));
- 	  STMT_SLP_TYPE (stmt_info) = not_vect;
  	  if (STMT_VINFO_DEF_TYPE (stmt_info) == vect_reduction_def
  	      || STMT_VINFO_DEF_TYPE (stmt_info) == vect_double_reduction_def)
  	    {
--- 2686,2691 ----
*************** again:
*** 2705,2724 ****
  	  if (is_gimple_debug (gsi_stmt (si)))
  	    continue;
  	  stmt_vec_info stmt_info = loop_vinfo->lookup_stmt (gsi_stmt (si));
- 	  STMT_SLP_TYPE (stmt_info) = not_vect;
  	  if (STMT_VINFO_IN_PATTERN_P (stmt_info))
  	    {
  	      stmt_vec_info pattern_stmt_info
  		= STMT_VINFO_RELATED_STMT (stmt_info);
  	      if (STMT_VINFO_SLP_VECT_ONLY_PATTERN (pattern_stmt_info))
  		STMT_VINFO_IN_PATTERN_P (stmt_info) = false;
- 
- 	      gimple *pattern_def_seq = STMT_VINFO_PATTERN_DEF_SEQ (stmt_info);
- 	      STMT_SLP_TYPE (pattern_stmt_info) = not_vect;
- 	      for (gimple_stmt_iterator pi = gsi_start (pattern_def_seq);
- 		   !gsi_end_p (pi); gsi_next (&pi))
- 		STMT_SLP_TYPE (loop_vinfo->lookup_stmt (gsi_stmt (pi)))
- 		  = not_vect;
  	    }
  	}
      }
--- 2704,2715 ----
*************** vectorizable_live_operation (vec_info *v
*** 10450,10475 ****
  				   "def\n");
  		continue;
  	      }
! 	    /* ???  It can also happen that we end up pulling a def into
! 	       a loop where replacing out-of-loop uses would require
! 	       a new LC SSA PHI node.  Retain the original scalar in
! 	       those cases as well.  PR98064.  */
! 	    if (TREE_CODE (new_tree) == SSA_NAME
! 		&& !SSA_NAME_IS_DEFAULT_DEF (new_tree)
! 		&& (gimple_bb (use_stmt)->loop_father
! 		    != gimple_bb (vec_stmt)->loop_father)
! 		&& !flow_loop_nested_p (gimple_bb (vec_stmt)->loop_father,
! 					gimple_bb (use_stmt)->loop_father))
  	      {
! 		if (dump_enabled_p ())
! 		  dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
! 				   "Using original scalar computation for "
! 				   "live lane because there is an out-of-loop "
! 				   "definition for it\n");
! 		continue;
  	      }
- 	    FOR_EACH_IMM_USE_ON_STMT (use_p, imm_iter)
- 	      SET_USE (use_p, new_tree);
  	    update_stmt (use_stmt);
  	  }
      }
--- 10441,10475 ----
  				   "def\n");
  		continue;
  	      }
! 	    FOR_EACH_IMM_USE_ON_STMT (use_p, imm_iter)
  	      {
! 		/* ???  It can also happen that we end up pulling a def into
! 		   a loop where replacing out-of-loop uses would require
! 		   a new LC SSA PHI node.  Retain the original scalar in
! 		   those cases as well.  PR98064.  */
! 		edge e;
! 		if (TREE_CODE (new_tree) == SSA_NAME
! 		    && !SSA_NAME_IS_DEFAULT_DEF (new_tree)
! 		    && (gimple_bb (use_stmt)->loop_father
! 			!= gimple_bb (vec_stmt)->loop_father)
! 		    /* But a replacement in a LC PHI is OK.  This happens
! 		       in gcc.dg/vect/bb-slp-57.c for example.  */
! 		    && (gimple_code (use_stmt) != GIMPLE_PHI
! 			|| (((e = phi_arg_edge_from_use (use_p)), true)
! 			    && !loop_exit_edge_p
! 				  (gimple_bb (vec_stmt)->loop_father, e)))
! 		    && !flow_loop_nested_p (gimple_bb (vec_stmt)->loop_father,
! 					    gimple_bb (use_stmt)->loop_father))
! 		  {
! 		    if (dump_enabled_p ())
! 		      dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
! 				       "Using original scalar computation for "
! 				       "live lane because there is an "
! 				       "out-of-loop definition for it\n");
! 		    continue;
! 		  }
! 		SET_USE (use_p, new_tree);
  	      }
  	    update_stmt (use_stmt);
  	  }
      }
diff -Nrcpad gcc-16-20260301/gcc/tree-vect-slp.cc gcc-16-20260308/gcc/tree-vect-slp.cc
*** gcc-16-20260301/gcc/tree-vect-slp.cc	Sun Mar  1 22:32:18 2026
--- gcc-16-20260308/gcc/tree-vect-slp.cc	Sun Mar  8 22:32:13 2026
*************** vect_make_slp_decision (loop_vec_info lo
*** 8413,8423 ****
  	 for some rational X, so they must have a common multiple.  */
        vect_update_slp_vf_for_node (root, unrolling_factor, visited);
  
-       /* Mark all the stmts that belong to INSTANCE as PURE_SLP stmts.  Later we
- 	 call vect_detect_hybrid_slp () to find stmts that need hybrid SLP and
- 	 loop-based vectorization.  Such stmts will be marked as HYBRID.  */
-       vect_mark_slp_stmts (loop_vinfo, root);
- 
        /* If all instances ended up with vector(1) T roots make sure to
  	 not vectorize.  RVV for example relies on loop vectorization
  	 when some instances are essentially kept scalar.  See PR121048.  */
--- 8413,8418 ----
diff -Nrcpad gcc-16-20260301/gcc/tree-vect-stmts.cc gcc-16-20260308/gcc/tree-vect-stmts.cc
*** gcc-16-20260301/gcc/tree-vect-stmts.cc	Sun Mar  1 22:32:18 2026
--- gcc-16-20260308/gcc/tree-vect-stmts.cc	Sun Mar  8 22:32:13 2026
*************** get_load_store_type (vec_info  *vinfo, s
*** 2562,2581 ****
       force masking.  */
    if (loop_vinfo
        && dr_safe_speculative_read_required (stmt_info)
!       && LOOP_VINFO_EARLY_BREAKS (loop_vinfo)
!       && (mat_gather_scatter_p (*memory_access_type)
! 	  || *memory_access_type == VMAT_STRIDED_SLP))
      {
!       if (dump_enabled_p ())
! 	  dump_printf_loc (MSG_NOTE, vect_location,
! 			   "early break not supported: cannot peel for "
! 			   "alignment. With non-contiguous memory vectorization"
! 			   " could read out of bounds at %G ",
! 			   STMT_VINFO_STMT (stmt_info));
!       if (inbounds)
! 	LOOP_VINFO_MUST_USE_PARTIAL_VECTORS_P (loop_vinfo) = true;
!       else
! 	return false;
      }
  
    /* If this DR needs alignment for correctness, we must ensure the target
--- 2562,2591 ----
       force masking.  */
    if (loop_vinfo
        && dr_safe_speculative_read_required (stmt_info)
!       && LOOP_VINFO_EARLY_BREAKS (loop_vinfo))
      {
!       if (mat_gather_scatter_p (*memory_access_type)
! 	  || *memory_access_type == VMAT_STRIDED_SLP)
! 	{
! 	  if (dump_enabled_p ())
! 	    dump_printf_loc (MSG_NOTE, vect_location,
! 			     "early break not supported: cannot peel for "
! 			     "alignment. With non-contiguous memory vectorization"
! 			     " could read out of bounds at %G ",
! 			     STMT_VINFO_STMT (stmt_info));
! 	  if (inbounds)
! 	    LOOP_VINFO_MUST_USE_PARTIAL_VECTORS_P (loop_vinfo) = true;
! 	  else
! 	    return false;
! 	}
!       /* Block-level alignment: Even though individual accesses of
! 	 VMAT_ELEMENTWISE type do not cause alignment problems, loading the
! 	 whole vector's worth of values in a speculative early-break context
! 	 might cross a page boundary.  Set the alignment scheme to `dr_aligned'
! 	 here in order to force checking of whether such accesses meet
! 	 alignment criteria.  */
!       else if (*memory_access_type == VMAT_ELEMENTWISE && !inbounds)
! 	*alignment_support_scheme = dr_aligned;
      }
  
    /* If this DR needs alignment for correctness, we must ensure the target
diff -Nrcpad gcc-16-20260301/libcpp/po/ChangeLog gcc-16-20260308/libcpp/po/ChangeLog
*** gcc-16-20260301/libcpp/po/ChangeLog	Sun Mar  1 22:32:19 2026
--- gcc-16-20260308/libcpp/po/ChangeLog	Sun Mar  8 22:32:13 2026
***************
*** 1,3 ****
--- 1,9 ----
+ 2026-02-27  Joseph Myers  <josmyers@redhat.com>
+ 
+ 	* be.po, ca.po, da.po, de.po, el.po, eo.po, es.po, fi.po, fr.po,
+ 	id.po, ja.po, ka.po, nl.po, pt_BR.po, ro.po, ru.po, sr.po, sv.po,
+ 	tr.po, uk.po, vi.po, zh_CN.po, zh_TW.po: Update.
+ 
  2026-02-19  Joseph Myers  <josmyers@redhat.com>
  
  	* cpplib.pot: Regenerate.
diff -Nrcpad gcc-16-20260301/libgcc/ChangeLog gcc-16-20260308/libgcc/ChangeLog
*** gcc-16-20260301/libgcc/ChangeLog	Sun Mar  1 22:32:19 2026
--- gcc-16-20260308/libgcc/ChangeLog	Sun Mar  8 22:32:13 2026
***************
*** 1,3 ****
--- 1,18 ----
+ 2026-03-06  Saurabh Jha  <saurabh.jha@arm.com>
+ 	    Evgeny Karpov  <evgeny.karpov@arm.com>
+ 
+ 	* config.host: Set tmake_eh_file for aarch64-*-mingw* and update
+ 	it for x86_64-*-mingw* and x86_64-*-cygwin*.
+ 	* config/i386/t-seh-eh: Move to...
+ 	* config/mingw/t-seh-eh: ...here.
+ 	* config/aarch64/t-no-eh: Removed.
+ 
+ 2026-03-05  Alice Carlotti  <alice.carlotti@arm.com>
+ 
+ 	PR target/124333
+ 	* config/aarch64/cpuinfo.c: Define __aarch64_cpu_features
+ 	unconditionally.
+ 
  2026-02-23  Alice Carlotti  <alice.carlotti@arm.com>
  
  	* config/aarch64/libgcc-sme.ver: Add __arm_get_current_vg.
diff -Nrcpad gcc-16-20260301/libgcc/config/aarch64/cpuinfo.c gcc-16-20260308/libgcc/config/aarch64/cpuinfo.c
*** gcc-16-20260301/libgcc/config/aarch64/cpuinfo.c	Sun Mar  1 22:32:19 2026
--- gcc-16-20260308/libgcc/config/aarch64/cpuinfo.c	Sun Mar  8 22:32:13 2026
***************
*** 24,29 ****
--- 24,36 ----
  
  #include "common/config/aarch64/cpuinfo.h"
  
+ /* Architecture features used in Function Multi Versioning, and also in some
+    SME support routines.  */
+ struct {
+   unsigned long long features;
+   /* As features grows new fields could be added.  */
+ } __aarch64_cpu_features __attribute__((visibility("hidden"), nocommon));
+ 
  #if __has_include(<sys/auxv.h>)
  #include <sys/auxv.h>
  
*************** typedef struct __ifunc_arg_t {
*** 40,51 ****
    unsigned long _hwcap4;
  } __ifunc_arg_t;
  
- /* Architecture features used in Function Multi Versioning.  */
- struct {
-   unsigned long long features;
-   /* As features grows new fields could be added.  */
- } __aarch64_cpu_features __attribute__((visibility("hidden"), nocommon));
- 
  #define _IFUNC_ARG_HWCAP (1ULL << 62)
  #define AT_HWCAP 16
  #define AT_HWCAP2 26
--- 47,52 ----
diff -Nrcpad gcc-16-20260301/libgcc/config/aarch64/t-no-eh gcc-16-20260308/libgcc/config/aarch64/t-no-eh
*** gcc-16-20260301/libgcc/config/aarch64/t-no-eh	Sun Mar  1 22:32:19 2026
--- gcc-16-20260308/libgcc/config/aarch64/t-no-eh	Thu Jan  1 00:00:00 1970
***************
*** 1,2 ****
- # Not using EH
- LIB2ADDEH =
--- 0 ----
diff -Nrcpad gcc-16-20260301/libgcc/config/i386/t-seh-eh gcc-16-20260308/libgcc/config/i386/t-seh-eh
*** gcc-16-20260301/libgcc/config/i386/t-seh-eh	Sun Mar  1 22:32:19 2026
--- gcc-16-20260308/libgcc/config/i386/t-seh-eh	Thu Jan  1 00:00:00 1970
***************
*** 1,6 ****
- 
- # We are using SEH EH.
- EH_MODEL = seh
- 
- # Use SEH exception handling.
- LIB2ADDEH = $(srcdir)/unwind-seh.c $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c
--- 0 ----
diff -Nrcpad gcc-16-20260301/libgcc/config/mingw/t-seh-eh gcc-16-20260308/libgcc/config/mingw/t-seh-eh
*** gcc-16-20260301/libgcc/config/mingw/t-seh-eh	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/libgcc/config/mingw/t-seh-eh	Sun Mar  8 22:32:13 2026
***************
*** 0 ****
--- 1,6 ----
+ 
+ # We are using SEH EH.
+ EH_MODEL = seh
+ 
+ # Use SEH exception handling.
+ LIB2ADDEH = $(srcdir)/unwind-seh.c $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c
diff -Nrcpad gcc-16-20260301/libgcc/config.host gcc-16-20260308/libgcc/config.host
*** gcc-16-20260301/libgcc/config.host	Sun Mar  1 22:32:19 2026
--- gcc-16-20260308/libgcc/config.host	Sun Mar  8 22:32:13 2026
*************** aarch64-*-mingw*)
*** 463,469 ****
  	    tmake_thr_file="mingw/t-mingw-mcfgthread"
  	    ;;
  	esac
! 	tmake_file="${tmake_file} ${cpu_type}/t-no-eh ${tmake_thr_file}"
  	tmake_file="${tmake_file} t-dfprules"
  	tmake_file="${tmake_file} ${cpu_type}/t-aarch64"
  	tmake_file="${tmake_file} ${cpu_type}/t-mingw"
--- 463,469 ----
  	    tmake_thr_file="mingw/t-mingw-mcfgthread"
  	    ;;
  	esac
! 	tmake_file="${tmake_file} mingw/t-seh-eh ${tmake_thr_file}"
  	tmake_file="${tmake_file} t-dfprules"
  	tmake_file="${tmake_file} ${cpu_type}/t-aarch64"
  	tmake_file="${tmake_file} ${cpu_type}/t-mingw"
*************** x86_64-*-cygwin*)
*** 870,876 ****
  	        # biarch -m32 with --disable-sjlj-exceptions
  	     	tmake_eh_file="i386/t-dw2-eh"
  	else
! 		tmake_eh_file="i386/t-seh-eh"
  	fi
  	# Shared libgcc DLL install dir depends on cross/native build.
  	if test x${build} = x${host} ; then
--- 870,876 ----
  	        # biarch -m32 with --disable-sjlj-exceptions
  	     	tmake_eh_file="i386/t-dw2-eh"
  	else
! 		tmake_eh_file="mingw/t-seh-eh"
  	fi
  	# Shared libgcc DLL install dir depends on cross/native build.
  	if test x${build} = x${host} ; then
*************** x86_64-*-mingw*)
*** 932,938 ****
  	     	tmake_eh_file="i386/t-dw2-eh"
  		md_unwind_header=i386/w32-unwind.h
  	else
! 		tmake_eh_file="i386/t-seh-eh"
  	fi
  	# Shared libgcc DLL install dir depends on cross/native build.
  	if test x${build} = x${host} ; then
--- 932,938 ----
  	     	tmake_eh_file="i386/t-dw2-eh"
  		md_unwind_header=i386/w32-unwind.h
  	else
! 		tmake_eh_file="mingw/t-seh-eh"
  	fi
  	# Shared libgcc DLL install dir depends on cross/native build.
  	if test x${build} = x${host} ; then
diff -Nrcpad gcc-16-20260301/libgfortran/ChangeLog gcc-16-20260308/libgfortran/ChangeLog
*** gcc-16-20260301/libgfortran/ChangeLog	Sun Mar  1 22:32:19 2026
--- gcc-16-20260308/libgfortran/ChangeLog	Sun Mar  8 22:32:13 2026
***************
*** 1,3 ****
--- 1,64 ----
+ 2026-03-06  Andre Vehreschild  <vehre@gcc.gnu.org>
+ 
+ 	PR libfortran/124371
+ 	* caf/shmem/supervisor.c (startWorker): Use defined(HAVE_FORK)
+ 	instead of !defined(WIN32) for preprocessor conditional.
+ 
+ 2026-03-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR libfortran/124330
+ 	* caf/shmem/shared_memory.c (shared_memory_set_env): Make buffer
+ 	used by putenv static.
+ 	(shared_memory_init): Likewise.
+ 
+ 2026-03-04  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/124330
+ 	* caf/shmem/shared_memory.c (shared_memory_init): Use
+ 	putenv() for HPUX and as a fallback where setenv()
+ 	is not available.
+ 
+ 2026-03-03  Mark Wielaard  <mark@klomp.org>
+ 
+ 	* config.h.in: Regenerate.
+ 	* configure: Regenerate.
+ 
+ 2026-03-03  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 	    John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	PR fortran/124330
+ 	* caf/shmem/shared_memory.c: Fix filenames for WIN32
+ 	includes.
+ 	(shared_memory_set_env): Use putenv() for HPUX and as
+ 	a fallback where setenv () is not available.
+ 	(NAME_MAX): Replace with SHM_NAME_MAX.
+ 	(SHM_NAME_MAX): Use this to avoid duplicating NAME_MAX
+ 	used elsewhere.
+ 	* caf/shmem/supervisor.c (get_image_num_from_envvar): Add
+ 	a fallback for HPUX. Add additional comment to explain why
+ 	the number of cores is used in lieu of GFORTRAN_NUM_IMAGES.
+ 
+ 2026-03-01  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/124286
+ 	* acinclude.m4: Remove LIBGFOR_CHECK_SANE_BUILTIN_CLZL.
+ 	* caf/shmem/allocator.c (next_power_of_two): Use known sane
+ 	builtin.
+ 	* configure: Regenerate.
+ 	* configure.ac: Remove use of LIBGFOR_CHECK_SANE_BUILTIN_CLZL.
+ 
+ 2026-02-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* aclocal.m4: Regenerate.
+ 	* configure: Regenerate.
+ 	* Makefile.in: Regenerate.
+ 
+ 2026-02-27  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/88076
+ 	* caf/shmem/supervisor.c (supervisor_main_loop): Use fprintf
+ 	instead of dprintf.
+ 
  2026-02-26  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
  
  	PR libfortran/88076
diff -Nrcpad gcc-16-20260301/libgfortran/caf/shmem/shared_memory.c gcc-16-20260308/libgfortran/caf/shmem/shared_memory.c
*** gcc-16-20260301/libgfortran/caf/shmem/shared_memory.c	Sun Mar  1 22:32:19 2026
--- gcc-16-20260308/libgfortran/caf/shmem/shared_memory.c	Sun Mar  8 22:32:13 2026
*************** see the files COPYING3 and COPYING.RUNTI
*** 38,45 ****
  #ifdef HAVE_SYS_MMAN_H
  #include <sys/mman.h>
  #elif defined(WIN32)
! #include <Windows.h>
! #include <Memoryapi.h>
  #endif
  #include <unistd.h>
  
--- 38,45 ----
  #ifdef HAVE_SYS_MMAN_H
  #include <sys/mman.h>
  #elif defined(WIN32)
! #include <windows.h>
! #include <memoryapi.h>
  #endif
  #include <unistd.h>
  
*************** static const char *ENV_BASE = "GFORTRAN_
*** 62,77 ****
  void
  shared_memory_set_env (pid_t pid)
  {
! #define bufsize 20
!   char buffer[bufsize];
! 
!   snprintf (buffer, bufsize, "%d", pid);
! #ifdef HAVE_SETENV
!   setenv (ENV_PPID, buffer, 1);
  #else
!   SetEnvironmentVariable (ENV_PPID, buffer);
  #endif
- #undef bufsize
  }
  
  char *
--- 62,84 ----
  void
  shared_memory_set_env (pid_t pid)
  {
! #if defined(HAVE_SETENV)
!   char val[20];
!   snprintf (val, 20, "%d", pid);
!   setenv (ENV_PPID, val, 1);
! #elif defined(WIN32)
!   char val[20];
!   snprintf (val, 20, "%d", pid);
!   SetEnvironmentVariable (ENV_PPID, val);
  #else
!   static char buffer[28];
!   int res;
! 
!   /* HP-UX / Legacy Fallback using putenv */
!   res = snprintf (buffer, 28, "%s=%d", "ENV_PPID", (int)pid);
!   if (res != -1)
!     putenv (buffer);
  #endif
  }
  
  char *
*************** shared_memory_prepare (shared_memory_act
*** 115,121 ****
    asm volatile ("" ::: "memory");
  }
  
! #define NAME_MAX 255
  
  /* Initialize the memory with one page, the shared metadata of the
     shared memory is stored at the beginning.  */
--- 122,128 ----
    asm volatile ("" ::: "memory");
  }
  
! #define SHM_NAME_MAX 255
  
  /* Initialize the memory with one page, the shared metadata of the
     shared memory is stored at the beginning.  */
*************** shared_memory_prepare (shared_memory_act
*** 123,129 ****
  void
  shared_memory_init (shared_memory_act *mem, size_t size)
  {
!   char shm_name[NAME_MAX];
    const char *env_val = getenv (ENV_PPID), *base = getenv (ENV_BASE);
    pid_t ppid = getpid ();
    void *base_ptr;
--- 130,136 ----
  void
  shared_memory_init (shared_memory_act *mem, size_t size)
  {
!   char shm_name[SHM_NAME_MAX];
    const char *env_val = getenv (ENV_PPID), *base = getenv (ENV_BASE);
    pid_t ppid = getpid ();
    void *base_ptr;
*************** shared_memory_init (shared_memory_act *m
*** 133,139 ****
        int n = sscanf (env_val, "%d", &ppid);
        assert (n == 1);
      }
!   snprintf (shm_name, NAME_MAX, "/gfor-shm-%d", ppid);
    if (base)
      {
        int n = sscanf (base, "%p", &base_ptr);
--- 140,146 ----
        int n = sscanf (env_val, "%d", &ppid);
        assert (n == 1);
      }
!   snprintf (shm_name, SHM_NAME_MAX, "/gfor-shm-%d", ppid);
    if (base)
      {
        int n = sscanf (base, "%p", &base_ptr);
*************** shared_memory_init (shared_memory_act *m
*** 237,252 ****
  #endif
    if (!base_ptr)
      {
! #define bufsize 20
!       char buffer[bufsize];
! 
!       snprintf (buffer, bufsize, "%p", mem->glbl.base);
! #ifdef HAVE_SETENV
!       setenv (ENV_BASE, buffer, 1);
  #else
!       SetEnvironmentVariable (ENV_BASE, buffer);
  #endif
- #undef bufsize
      }
    mem->size = size;
    if (!env_val)
--- 244,266 ----
  #endif
    if (!base_ptr)
      {
! #if defined(HAVE_SETENV)
!       char val[20];
!       snprintf (val, 20, "%p", mem->glbl.base);
!       setenv (ENV_BASE, val, 1);
! #elif defined(WIN32)
!       char val[20];
!       snprintf (val, 20, "%p", mem->glbl.base);
!       SetEnvironmentVariable (ENV_BASE, val);
  #else
!       static char buffer[28];
!       int res;
! 
!       /* HP-UX / Legacy Fallback using putenv */
!       res = snprintf (buffer, 28, "%s=%p", "ENV_BASE", mem->glbl.base);
!       if (res != -1)
! 	putenv (buffer);
  #endif
      }
    mem->size = size;
    if (!env_val)
*************** shared_memory_cleanup (shared_memory_act
*** 270,278 ****
      }
    if (this_image.image_num == -1)
      {
!       char shm_name[NAME_MAX];
  
!       snprintf (shm_name, NAME_MAX, "/gfor-shm-%s", shared_memory_get_env ());
        /* Only the supervisor is to delete the shm-file.  */
        res = shm_unlink (shm_name);
        if (res == -1)
--- 284,292 ----
      }
    if (this_image.image_num == -1)
      {
!       char shm_name[SHM_NAME_MAX];
  
!       snprintf (shm_name, SHM_NAME_MAX, "/gfor-shm-%s", shared_memory_get_env ());
        /* Only the supervisor is to delete the shm-file.  */
        res = shm_unlink (shm_name);
        if (res == -1)
*************** shared_memory_cleanup (shared_memory_act
*** 289,292 ****
    CloseHandle (mem->shm_fd);
  #endif
  }
! #undef NAME_MAX
--- 303,306 ----
    CloseHandle (mem->shm_fd);
  #endif
  }
! #undef SHM_NAME_MAX
diff -Nrcpad gcc-16-20260301/libgfortran/caf/shmem/supervisor.c gcc-16-20260308/libgfortran/caf/shmem/supervisor.c
*** gcc-16-20260301/libgfortran/caf/shmem/supervisor.c	Sun Mar  1 22:32:19 2026
--- gcc-16-20260308/libgfortran/caf/shmem/supervisor.c	Sun Mar  8 22:32:13 2026
*************** see the files COPYING3 and COPYING.RUNTI
*** 39,45 ****
  #if !defined(_SC_PAGE_SIZE) && defined(WIN32)
  #include <windows.h>
  #endif
! 
  #define GFORTRAN_ENV_NUM_IMAGES "GFORTRAN_NUM_IMAGES"
  #define GFORTRAN_ENV_SHARED_MEMORY_SIZE "GFORTRAN_SHARED_MEMORY_SIZE"
  #define GFORTRAN_ENV_IMAGE_NUM "GFORTRAN_IMAGE_NUM"
--- 39,47 ----
  #if !defined(_SC_PAGE_SIZE) && defined(WIN32)
  #include <windows.h>
  #endif
! #if defined(__hpux__)
! #include <sys/mpctl.h>
! #endif
  #define GFORTRAN_ENV_NUM_IMAGES "GFORTRAN_NUM_IMAGES"
  #define GFORTRAN_ENV_SHARED_MEMORY_SIZE "GFORTRAN_SHARED_MEMORY_SIZE"
  #define GFORTRAN_ENV_IMAGE_NUM "GFORTRAN_IMAGE_NUM"
*************** get_image_num_from_envvar (void)
*** 57,67 ****
--- 59,74 ----
    char *num_images_char;
    int nimages;
    num_images_char = getenv (GFORTRAN_ENV_NUM_IMAGES);
+ 
+   /* It is expected that the user has set the GFORTRAN_NUM_IMAGES
+      environment variable. If not, we fall back to the number of cores.  */
    if (!num_images_char)
  #ifdef _SC_NPROCESSORS_ONLN
      return sysconf (_SC_NPROCESSORS_ONLN);
  #elif defined(WIN32)
      num_images_char = getenv ("NUMBER_OF_PROCESSORS");
+ #elif defined (__hpux__)
+     return mpctl (MPC_GETNUMSPUS, 0, 0);
  #else
  #error "Unsupported system: No known way to get number of cores!"
  #endif
*************** startWorker (image *im __attribute__ ((u
*** 293,299 ****
    return true;
  }
  
! #ifndef WIN32
  static void
  kill_all_images (supervisor *m)
  {
--- 300,306 ----
    return true;
  }
  
! #ifdef HAVE_FORK
  static void
  kill_all_images (supervisor *m)
  {
diff -Nrcpad gcc-16-20260301/libgfortran/config.h.in gcc-16-20260308/libgfortran/config.h.in
*** gcc-16-20260301/libgfortran/config.h.in	Sun Mar  1 22:32:19 2026
--- gcc-16-20260308/libgfortran/config.h.in	Sun Mar  8 22:32:13 2026
***************
*** 834,842 ****
  /* Define to 1 if you have the `roundl' function. */
  #undef HAVE_ROUNDL
  
- /* Define if __builtin_clzl behaves as expected. */
- #undef HAVE_SANE_BUILTIN_CLZL
- 
  /* Define to 1 if you have the `scalbn' function. */
  #undef HAVE_SCALBN
  
--- 834,839 ----
diff -Nrcpad gcc-16-20260301/libgfortran/configure gcc-16-20260308/libgfortran/configure
*** gcc-16-20260301/libgfortran/configure	Sun Mar  1 22:32:23 2026
--- gcc-16-20260308/libgfortran/configure	Sun Mar  8 22:32:18 2026
*************** else
*** 13245,13253 ****
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! 
! 
! #line 13250 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
--- 13245,13251 ----
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 13248 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
*************** else
*** 13353,13359 ****
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 13356 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
--- 13351,13357 ----
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 13354 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
diff -Nrcpad gcc-16-20260301/libgomp/ChangeLog gcc-16-20260308/libgomp/ChangeLog
*** gcc-16-20260301/libgomp/ChangeLog	Sun Mar  1 22:32:20 2026
--- gcc-16-20260308/libgomp/ChangeLog	Sun Mar  8 22:32:14 2026
***************
*** 1,3 ****
--- 1,11 ----
+ 2026-02-28  Kwok Cheung Yeung  <kcyeung@baylibre.com>
+ 
+ 	PR middle-end/113436
+ 	* testsuite/libgomp.c++/pr113436-1.C (test_vla_by_ref): New.
+ 	(main): Add call to test_vla_by_ref.
+ 	* testsuite/libgomp.c++/pr113436-2.C (test_vla_by_ref): New.
+ 	(main): Add call to test_vla_by_ref.
+ 
  2026-02-23  Paul-Antoine Arras  <parras@baylibre.com>
  
  	PR fortran/120505
diff -Nrcpad gcc-16-20260301/libiberty/ChangeLog gcc-16-20260308/libiberty/ChangeLog
*** gcc-16-20260301/libiberty/ChangeLog	Sun Mar  1 22:32:20 2026
--- gcc-16-20260308/libiberty/ChangeLog	Sun Mar  8 22:32:14 2026
***************
*** 1,3 ****
--- 1,9 ----
+ 2026-03-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/124365
+ 	* simple-object.c (handle_lto_debug_sections): Also copy over
+ 	.ARM.attributes section.
+ 
  2026-02-26  Ruslan Valiyev  <linuxoid@gmail.com>
  
  	PR demangler/106641
diff -Nrcpad gcc-16-20260301/libiberty/simple-object.c gcc-16-20260308/libiberty/simple-object.c
*** gcc-16-20260301/libiberty/simple-object.c	Sun Mar  1 22:32:20 2026
--- gcc-16-20260308/libiberty/simple-object.c	Sun Mar  8 22:32:14 2026
*************** handle_lto_debug_sections (const char *n
*** 310,315 ****
--- 310,319 ----
    /* Copy over .BTF section under the same name if present.  */
    else if (strcmp (name, ".BTF") == 0)
      return strcpy (newname, name);
+   /* Copy over .ARM.attributes section under the same name if present.  AArch64
+      aeabi attributes are present in this section.  */
+   else if (strcmp (name, ".ARM.attributes") == 0)
+     return strcpy (newname, name);
    free (newname);
    return NULL;
  }
diff -Nrcpad gcc-16-20260301/libstdc++-v3/ChangeLog gcc-16-20260308/libstdc++-v3/ChangeLog
*** gcc-16-20260301/libstdc++-v3/ChangeLog	Sun Mar  1 22:32:20 2026
--- gcc-16-20260308/libstdc++-v3/ChangeLog	Sun Mar  8 22:32:15 2026
***************
*** 1,3 ****
--- 1,234 ----
+ 2026-03-07  François Dumont  <frs.dumont@gmail.com>
+ 
+ 	* include/debug/functions.h [__cplusplus >= 201103L]
+ 	(__foreign_iterator_aux): Remove.
+ 	(__foreign_iterator): Adapt to use __foreign_iterator_aux2.
+ 	* include/debug/helper_functions.h [__cplusplus >= 201103L]:
+ 	Remove include bits/cpp_type_traits.h.
+ 	(_Distance_traits<_Integral, std::__true_type>): Remove.
+ 	(__valid_range_aux(_Integral, _Integral, std::__true_type)):
+ 	Remove.
+ 	(__valid_range_aux(_Iterator, _Iterator, std::__false_type)): Remove.
+ 	(__valid_range_aux(_Integral, _Integral, _Distance_traits<_Integral>::__type&,
+ 	std::__true_type)): Remove.
+ 	(__valid_range_aux(_Iterator, _Iterator, _Distance_traits<_Iterator>::__type&,
+ 	std::__false_type)): Remove.
+ 	(__valid_range(_Iterator, _Iterator)): Adapt.
+ 	(__valid_range(_Iterator, _Iterator, _Distance_traits<_Iterator>::__type&)): Adapt.
+ 
+ 2026-03-06  Nathan Myers  <ncm@cantrip.org>
+ 
+ 	* include/std/bitset (operator[]() const): Customize bounds
+ 	check for C++11 case.
+ 	* testsuite/20_util/bitset/access/subscript_const_neg.cc:
+ 	Suppress UNRESOLVED complaint.
+ 
+ 2026-03-06  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/bits/fs_path.h (std::formatter<filesystem::path, _CharT>):
+ 	Format _Utf_view directly via __formatter_str::_M_format_range.
+ 
+ 2026-03-06  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/122300
+ 	* src/c++17/fs_path.cc (path::_List::_Impl): Remove
+ 	static_asserts.
+ 	(path::_List::_Impl::required_alignment)
+ 	(path::_List::_Impl::use_aligned_new): New static data members.
+ 	(path::_List::_Impl::create_unchecked): Check use_aligned_new
+ 	and use aligned new if needed.
+ 	(path::_List::_Impl::alloc_size): New static member function.
+ 	(path::_List::_Impl_deleter::operator): Check use_aligned_new
+ 	and use aligned delete if needed.
+ 
+ 2026-03-05  Nathan Myers  <ncm@cantrip.org>
+ 
+ 	PR libstdc++/118341
+ 	* include/std/bitset (operator[] (2x)): Add assertion.
+ 	* testsuite/20_util/bitset/access/118341_neg1.cc: New test.
+ 	* testsuite/20_util/bitset/access/118341_neg2.cc: Same.
+ 	* testsuite/20_util/bitset/access/118341_smoke.cc: Same.
+ 	* testsuite/20_util/bitset/access/subscript.cc: Same.
+ 	* testsuite/20_util/bitset/access/subscript_const_neg.cc: Same.
+ 
+ 2026-03-05  François Dumont  <frs.dumont@gmail.com>
+ 
+ 	* include/debug/safe_unordered_container.h
+ 	(_Safe_unordered_container::_UContInvalidatePred): Move outside class, at
+ 	namespace scope. Declare friend.
+ 	(_Safe_unordered_container::_UMContInvalidatePred): Likewise.
+ 	(_Safe_unordered_container::_UContMergeGuard): Likewise.
+ 	(_Safe_unordered_container::_M_invalidate_all): Make protected.
+ 	(_Safe_unordered_container::_M_invalidate_all_if): Likewise.
+ 
+ 2026-03-05  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	PR libstdc++/124124
+ 	* testsuite/29_atomics/atomic/cons/zero_padding.cc: Limit size of
+ 	test types to four bytes.
+ 
+ 2026-03-05  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 	    Ivan Lazaric  <ivan.lazaric1@gmail.com>
+ 
+ 	* include/std/format (_Arg_value::_M_get): Rename to...
+ 	(_Arg_value::_M_access): Modified to accept optional
+ 	second parameter that is assigned to value.
+ 	(_Arg_value::_M_get): Handle rename.
+ 	(_Arg_value::_M_set): Use construct_at for basic_string_view,
+ 	handle, and two-argument _S_access for other types.
+ 
+ 2026-03-05  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/std/format (__Arg_value::handle): Define, extracted
+ 	with modification from basic_format_arg::handle.
+ 	(_Arg_value::_Handle_base): Remove.
+ 	(_Arg_value::_M_handle): Change type to handle.
+ 	(_Arg_value::_M_get, _Arg_value::_M_set): Check for handle
+ 	type directly, and return result unmodified.
+ 	(basic_format_arg::__formattable): Remove.
+ 	(basic_format_arg::handle): Replace with alias to
+ 	_Arg_value::handle.
+ 
+ 2026-03-04  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/124363
+ 	* include/std/string_view: Adjust comment on #endif to match #if
+ 	condition.
+ 
+ 2026-03-04  Nathan Myers  <ncm@cantrip.org>
+ 
+ 	PR libstdc++/117402
+ 	* include/debug/map.h (try_emplace (2x), insert_or_assign (2x)):
+ 	Define heterogeneous overloads, simplify existing overloads.
+ 	* include/debug/unordered_map: Same.
+ 	* include/debug/set.h (insert (2x)):
+ 	Define heterogeneous overloads.
+ 	* include/debug/unordered_set: Same.
+ 
+ 2026-03-04  Nathan Myers  <ncm@cantrip.org>
+ 
+ 	PR libstdc++/117402
+ 	* include/bits/stl_map.h (operator[], at (2x), try_emplace (2x),
+ 	insert_or_assign (2x)): Add overloads.
+ 	* include/bits/unordered_map.h (operator[], at (2x),
+ 	try_emplace (2x), insert_or_assign (2x), bucket (2x)): Add overloads.
+ 	* include/bits/stl_set.h (insert (2x)): Add overloads.
+ 	* include/bits/unordered_set.h (insert (2x), bucket (2x)): Add overloads.
+ 	* include/bits/hashtable.h (_M_bucket_tr, _M_insert_tr): Define.
+ 	* include/bits/hashtable_policy.h (_M_at_tr (2x)): Define.
+ 	* include/bits/stl_tree.h (_M_emplace_here, _M_get_insert_unique_pos_tr,
+ 	_M_get_insert_hint_unique_pos_tr): Define new heterogeneous insertion
+ 	code path for set and map.
+ 	* include/bits/version.def (associative_heterogeneous_insertion):
+ 	Define.
+ 	* include/bits/version.h: Regenerate.
+ 	* include/std/map (__glibcxx_want_associative_heterogeneous_insertion):
+ 	Define macro.
+ 	* include/std/set: Same.
+ 	* include/std/unordered_map: Same.
+ 	* include/std/unordered_set: Same.
+ 	* testsuite/23_containers/map/modifiers/hetero/insert.cc: New tests.
+ 	* testsuite/23_containers/set/modifiers/hetero/insert.cc: Same.
+ 	* testsuite/23_containers/unordered_map/modifiers/hetero/insert.cc:
+ 	Same.
+ 	* testsuite/23_containers/unordered_multimap/modifiers/hetero/insert.cc:
+ 	Same.
+ 	* testsuite/23_containers/unordered_multiset/modifiers/hetero/insert.cc:
+ 	Same.
+ 	* testsuite/23_containers/unordered_set/modifiers/hetero/insert.cc:
+ 	Same.
+ 
+ 2026-03-03  Adam Wood  <adam.wood@mines.sdsmt.edu>
+ 
+ 	PR libstdc++/122217
+ 	* testsuite/27_io/filesystem/operations/copy_symlink/1.cc: New
+ 	test.
+ 	* testsuite/27_io/filesystem/operations/copy_symlink/2.cc: New
+ 	test.
+ 	* testsuite/27_io/filesystem/operations/copy_symlink/3.cc: New
+ 	test.
+ 	* testsuite/27_io/filesystem/operations/copy_symlink/4.cc: New
+ 	test.
+ 
+ 2026-03-03  Arthur O'Dwyer  <arthur.j.odwyer@gmail.com>
+ 
+ 	PR libstdc++/119197
+ 	* include/std/expected (expected, expected<void, E>): Add
+ 	[[nodiscard]] to class.
+ 	* testsuite/20_util/expected/119197.cc: New test.
+ 
+ 2026-03-03  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/std/atomic (atomic<T*>::wait, atomic<T*>::notify_one)
+ 	(atomic<T*>::notify_all): Fix indentation.
+ 
+ 2026-03-03  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/regex_compiler.h: Adjust comments so that
+ 	standard references are specific to C++11.
+ 
+ 2026-03-02  François Dumont  <frs.dumont@gmail.com>
+ 
+ 	* include/debug/safe_unordered_container.h
+ 	(_Safe_unordered_container::_M_invalidate_locals): Remove.
+ 	(_Safe_unordered_container::_M_invalidate_all): Lock mutex while calling
+ 	_M_invalidate_if and _M_invalidate_locals.
+ 	(_Safe_unordered_container::_M_invalidate_all_if): New.
+ 	(_Safe_unordered_container::_M_invalidate): New.
+ 	(_Safe_unordered_container::_M_invalidate_if): Make private, add __scoped_lock
+ 	argument.
+ 	(_Safe_unordered_container::_M_invalidate_local_if): Likewise.
+ 	* include/debug/safe_unordered_container.tcc
+ 	(_Safe_unordered_container::_M_invalidate_if): Adapt and remove lock.
+ 	(_Safe_unordered_container::_M_invalidate_local_if): Likewise.
+ 	* include/debug/unordered_map
+ 	(unordered_map::erase(const_iterator, const_iterator)): Lock before loop on
+ 	iterators. Remove _M_check_rehashed call.
+ 	(unordered_map::_M_self): New.
+ 	(unordered_map::_M_invalidate): Remove.
+ 	(unordered_map::_M_erase): Adapt and remove _M_check_rehashed call.
+ 	(unordered_multimap::_M_erase(_Base_iterator, _Base_iterator)): New.
+ 	(unordered_multimap::erase(_Kt&&)): Use latter.
+ 	(unordered_multimap::erase(const key_type&)): Likewise.
+ 	(unordered_multimap::erase(const_iterator, const_iterator)):
+ 	Lock before loop on iterators. Remove _M_check_rehashed.
+ 	(unordered_multimap::_M_self): New.
+ 	(unordered_multimap::_M_invalidate): Remove.
+ 	(unordered_multimap::_M_erase): Adapt. Remove _M_check_rehashed call.
+ 	* include/debug/unordered_set
+ 	(unordered_set::erase(const_iterator, const_iterator)): Add lock before loop
+ 	for iterator invalidation. Remove _M_check_rehashed call.
+ 	(unordered_set::_M_self): New.
+ 	(unordered_set::_M_invalidate): Remove.
+ 	(unordered_set::_M_erase): Adapt and remove _M_check_rehashed call.
+ 	(unordered_multiset::_M_erase(_Base_iterator, _Base_iterator)): New.
+ 	(unordered_multiset::erase(_Kt&&)): Use latter.
+ 	(unordered_multiset::erase(const key_type&)): Likewise.
+ 	(unordered_multiset::erase(const_iterator, const_iterator)):
+ 	Lock before loop on iterators. Remove _M_check_rehashed.
+ 	(unordered_multiset::_M_self): New.
+ 	(unordered_multiset::_M_invalidate): Remove.
+ 	(unordered_multiset::_M_erase): Adapt. Remove _M_check_rehashed call.
+ 
+ 2026-03-02  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	PR libstdc++/105580
+ 	* testsuite/24_iterators/istreambuf_iterator/105580.cc:
+ 	Add dg-bogus check for warning.
+ 
+ 2026-03-02  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	PR libstdc++/105580
+ 	* include/std/streambuf (streambuf::gptr, streambuf::egptr)
+ 	(streambuf::gbump): Surround with pragma disabling -Wnull-dereference.
+ 	* testsuite/24_iterators/istreambuf_iterator/105580.cc: Remove check for
+ 	warning being emitted.
+ 
+ 2026-02-28  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	PR libstdc++/105580
+ 	* testsuite/24_iterators/istreambuf_iterator/105580.cc: New test.
+ 
  2026-02-26  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
  
  	* testsuite/29_atomics/atomic_ref/requirements_neg.cc: Add
diff -Nrcpad gcc-16-20260301/libstdc++-v3/include/bits/fs_path.h gcc-16-20260308/libstdc++-v3/include/bits/fs_path.h
*** gcc-16-20260301/libstdc++-v3/include/bits/fs_path.h	Sun Mar  1 22:32:20 2026
--- gcc-16-20260308/libstdc++-v3/include/bits/fs_path.h	Sun Mar  8 22:32:15 2026
*************** template<>
*** 1543,1551 ****
  		  __sv = __sink.view();
  		  __spec._M_debug = 0;
  		}
! 	      basic_string<_CharT> __out_str
! 	        (std::from_range, __unicode::_Utf_view<_CharT, _ViewT>(__sv));
! 	      return _FmtStrT(__spec).format(__out_str, __fc);
  	    }
  	}
  
--- 1543,1550 ----
  		  __sv = __sink.view();
  		  __spec._M_debug = 0;
  		}
! 	      return _FmtStrT(__spec)._M_format_range(
! 		       __unicode::_Utf_view<_CharT, _ViewT>(__sv), __fc);
  	    }
  	}
  
diff -Nrcpad gcc-16-20260301/libstdc++-v3/include/bits/hashtable.h gcc-16-20260308/libstdc++-v3/include/bits/hashtable.h
*** gcc-16-20260301/libstdc++-v3/include/bits/hashtable.h	Sun Mar  1 22:32:20 2026
--- gcc-16-20260308/libstdc++-v3/include/bits/hashtable.h	Sun Mar  8 22:32:15 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 700,705 ****
--- 700,712 ----
        bucket(const key_type& __k) const
        { return _M_bucket_index(this->_M_hash_code(__k)); }
  
+ #ifdef __glibcxx_associative_heterogeneous_insertion  // C++26
+       template <typename _Kt>
+ 	size_type
+ 	_M_bucket_tr(const _Kt& __k) const
+ 	{ return _M_bucket_index(this->_M_hash_code_tr(__k)); }
+ #endif
+ 
        local_iterator
        begin(size_type __bkt)
        {
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1097,1102 ****
--- 1104,1110 ----
  	std::pair<iterator, bool>
  	try_emplace(const_iterator, _KType&& __k, _Args&&... __args)
  	{
+ 	  // Note we ignore the hint argument.
  	  __hash_code __code;
  	  size_type __bkt;
  	  if (auto __loc = _M_locate(__k))
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1117,1122 ****
--- 1125,1148 ----
  	  __node._M_node = nullptr;
  	  return { __it, true };
  	}
+ 
+ #ifdef __glibcxx_associative_heterogeneous_insertion  // C++26
+       template<typename _Kt>
+ 	std::pair<iterator, bool>
+ 	_M_insert_tr(_Kt&& __k)
+ 	{
+ 	  auto __loc = _M_locate_tr(__k);
+ 	  if (__loc)
+ 	    return { iterator(__loc), false };
+ 
+ 	  _Scoped_node __node(
+ 	    this->_M_allocate_node(std::forward<_Kt>(__k)), this);
+ 	  auto __it = _M_insert_unique_node(
+ 	    __loc._M_bucket_index, __loc._M_hash_code, __node._M_node);
+ 	  __node._M_node = nullptr;
+ 	  return { __it, true };
+ 	}
+ #endif
  #endif
  
        void
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2363,2368 ****
--- 2389,2395 ----
  	__node._M_node = nullptr;
  	return { __pos, true };
        }
+ 
  #pragma GCC diagnostic pop
  
    template<typename _Key, typename _Value, typename _Alloc,
diff -Nrcpad gcc-16-20260301/libstdc++-v3/include/bits/hashtable_policy.h gcc-16-20260308/libstdc++-v3/include/bits/hashtable_policy.h
*** gcc-16-20260301/libstdc++-v3/include/bits/hashtable_policy.h	Sun Mar  1 22:32:20 2026
--- gcc-16-20260308/libstdc++-v3/include/bits/hashtable_policy.h	Sun Mar  8 22:32:15 2026
*************** namespace __detail
*** 872,877 ****
--- 872,897 ----
  	  __throw_out_of_range(__N("unordered_map::at"));
  	return __ite->second;
        }
+ 
+       template <typename _Kt>
+ 	mapped_type&
+ 	_M_at_tr(const _Kt& __k)
+ 	{
+ 	  auto __ite = static_cast<__hashtable*>(this)->_M_find_tr(__k);
+ 	  if (!__ite._M_cur)
+ 	    __throw_out_of_range(__N("unordered_map::at"));
+ 	  return __ite->second;
+ 	}
+ 
+       template <typename _Kt>
+ 	const mapped_type&
+ 	_M_at_tr(const _Kt& __k) const
+ 	{
+ 	  auto __ite = static_cast<const __hashtable*>(this)->_M_find_tr(__k);
+ 	  if (!__ite._M_cur)
+ 	    __throw_out_of_range(__N("unordered_map::at"));
+ 	  return __ite->second;
+ 	}
      };
  
    template<typename _Key, typename _Val, typename _Alloc, typename _Equal,
*************** namespace __detail
*** 1413,1420 ****
        template<typename _Kt>
  	bool
  	_M_key_equals_tr(const _Kt& __k,
! 			 const _Hash_node_value<_Value,
! 					     __hash_cached::value>& __n) const
  	{
  	  static_assert(
  	    __is_invocable<const _Equal&, const _Kt&, const _Key&>{},
--- 1433,1439 ----
        template<typename _Kt>
  	bool
  	_M_key_equals_tr(const _Kt& __k,
! 	  const _Hash_node_value<_Value, __hash_cached::value>& __n) const
  	{
  	  static_assert(
  	    __is_invocable<const _Equal&, const _Kt&, const _Key&>{},
*************** namespace __detail
*** 1439,1446 ****
        template<typename _Kt>
  	bool
  	_M_equals_tr(const _Kt& __k, __hash_code __c,
! 		     const _Hash_node_value<_Value,
! 					    __hash_cached::value>& __n) const
  	{
  	  if constexpr (__hash_cached::value)
  	    if (__c != __n._M_hash_code)
--- 1458,1464 ----
        template<typename _Kt>
  	bool
  	_M_equals_tr(const _Kt& __k, __hash_code __c,
! 	  const _Hash_node_value<_Value, __hash_cached::value>& __n) const
  	{
  	  if constexpr (__hash_cached::value)
  	    if (__c != __n._M_hash_code)
diff -Nrcpad gcc-16-20260301/libstdc++-v3/include/bits/regex_compiler.h gcc-16-20260308/libstdc++-v3/include/bits/regex_compiler.h
*** gcc-16-20260301/libstdc++-v3/include/bits/regex_compiler.h	Sun Mar  1 22:32:20 2026
--- gcc-16-20260308/libstdc++-v3/include/bits/regex_compiler.h	Sun Mar  8 22:32:15 2026
*************** namespace __detail
*** 53,59 ****
    /**
     * @brief Builds an NFA from an input iterator range.
     *
!    * The %_TraitsT type should fulfill requirements [28.3].
     */
    template<typename _TraitsT>
      class _Compiler
--- 53,59 ----
    /**
     * @brief Builds an NFA from an input iterator range.
     *
!    * The %_TraitsT type should fulfill the requirements in C++11 28.3 [re.req].
     */
    template<typename _TraitsT>
      class _Compiler
*************** namespace __detail
*** 206,212 ****
        const _CtypeT&      _M_ctype;
      };
  
!   // [28.13.14]
    template<typename _TraitsT, bool __icase, bool __collate>
      class _RegexTranslatorBase
      {
--- 206,212 ----
        const _CtypeT&      _M_ctype;
      };
  
!   // C++11 28.13 [re.grammar] p14
    template<typename _TraitsT, bool __icase, bool __collate>
      class _RegexTranslatorBase
      {
diff -Nrcpad gcc-16-20260301/libstdc++-v3/include/bits/stl_map.h gcc-16-20260308/libstdc++-v3/include/bits/stl_map.h
*** gcc-16-20260301/libstdc++-v3/include/bits/stl_map.h	Sun Mar  1 22:32:20 2026
--- gcc-16-20260308/libstdc++-v3/include/bits/stl_map.h	Sun Mar  8 22:32:15 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 522,527 ****
--- 522,530 ----
         *  subscript.  If the key does not exist, a pair with that key
         *  is created using default values, which is then returned.
         *
+        *  If a heterogeneous key matches a range of elements, the first is
+        *  chosen.
+        *
         *  Lookup requires logarithmic time.
         */
        mapped_type&
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 560,565 ****
--- 563,575 ----
        }
  #endif
  
+ #ifdef __glibcxx_associative_heterogeneous_insertion  // C++26
+       template <__heterogeneous_tree_key<map> _Kt>
+ 	mapped_type&
+ 	operator[](_Kt&& __k)
+ 	{ return try_emplace(std::forward<_Kt>(__k)).first->second; }
+ #endif
+ 
        // _GLIBCXX_RESOLVE_LIB_DEFECTS
        // DR 464. Suggestion for new member functions in standard containers.
        /**
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 568,573 ****
--- 578,586 ----
         *  @return  A reference to the data whose key is equivalent to @a __k, if
         *           such a data is present in the %map.
         *  @throw  std::out_of_range  If no such data is present.
+        *
+        *  If a heterogeneous key __k matches a range of elements, the
+        *  first is chosen.
         */
        mapped_type&
        at(const key_type& __k)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 578,583 ****
--- 591,608 ----
  	return (*__i).second;
        }
  
+ #ifdef __glibcxx_associative_heterogeneous_insertion  // C++26
+       template <__heterogeneous_tree_key<map> _Kt>
+ 	mapped_type&
+ 	at(const _Kt& __k)
+ 	{
+ 	  iterator __i = lower_bound(__k);
+ 	  if (__i == end() || key_comp()(__k, (*__i).first))
+ 	    __throw_out_of_range(__N("map::at"));
+ 	  return (*__i).second;
+ 	}
+ #endif
+ 
        const mapped_type&
        at(const key_type& __k) const
        {
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 587,592 ****
--- 612,629 ----
  	return (*__i).second;
        }
  
+ #ifdef __glibcxx_associative_heterogeneous_insertion  // C++26
+       template <__heterogeneous_tree_key<map> _Kt>
+ 	const mapped_type&
+ 	at(const _Kt& __k) const
+ 	{
+ 	  const_iterator __i = lower_bound(__k);
+ 	  if (__i == end() || key_comp()(__k, (*__i).first))
+ 	    __throw_out_of_range(__N("map::at"));
+ 	  return (*__i).second;
+ 	}
+ #endif
+ 
        // modifiers
  #if __cplusplus >= 201103L
        /**
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 746,751 ****
--- 783,791 ----
         *  first element (the key) is not already present in the %map.
         *  If a %pair is not inserted, this function has no effect.
         *
+        *  If a heterogeneous key __k matches a range of elements, an iterator
+        *  to the first is returned.
+        *
         *  Insertion requires logarithmic time.
         */
        template <typename... _Args>
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 781,786 ****
--- 821,846 ----
  	  return {__i, false};
  	}
  
+ #ifdef __glibcxx_associative_heterogeneous_insertion  // C++26
+       template <__heterogeneous_tree_key<map> _Kt, typename ..._Args>
+ 	pair<iterator, bool>
+ 	try_emplace(_Kt&& __k, _Args&&... __args)
+ 	{
+ 	  iterator __i;
+ 	  auto [__left, __node] = _M_t._M_get_insert_unique_pos_tr(__k);
+ 	  if (__node)
+ 	    {
+ 	      __i = _M_t._M_emplace_here(__left == __node, __node,
+ 		std::piecewise_construct,
+ 		std::forward_as_tuple(std::forward<_Kt>(__k)),
+ 		std::forward_as_tuple(std::forward<_Args>(__args)...));
+ 	      return { __i, true };
+ 	    }
+ 	  __i = iterator(__left);
+ 	  return { __i, false };
+ 	}
+ #endif
+ 
        /**
         *  @brief Attempts to build and insert a std::pair into the %map.
         *
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 806,811 ****
--- 866,874 ----
         *  https://gcc.gnu.org/onlinedocs/libstdc++/manual/associative.html#containers.associative.insert_hints
         *  for more on @a hinting.
         *
+        *  If a heterogeneous key __k matches a range of elements, an iterator
+        *  to the first is returned.
+        *
         *  Insertion requires logarithmic time (if the hint is not taken).
         */
        template <typename... _Args>
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 845,850 ****
--- 908,933 ----
  	}
  #endif
  
+ #ifdef __glibcxx_associative_heterogeneous_insertion  // C++26
+       template <__heterogeneous_tree_key<map> _Kt, typename ..._Args>
+ 	iterator
+ 	try_emplace(const_iterator __hint, _Kt&& __k, _Args&&... __args)
+ 	{
+ 	  iterator __i;
+ 	  auto [__left, __node] =
+ 	    _M_t._M_get_insert_hint_unique_pos_tr(__hint, __k);
+ 	  if (__node)
+ 	    {
+ 	      __i = _M_t._M_emplace_here(__left == __node, __node,
+ 		std::piecewise_construct,
+ 		std::forward_as_tuple(std::forward<_Kt>(__k)),
+ 		std::forward_as_tuple(std::forward<_Args>(__args)...));
+ 	    }
+ 	  else __i = iterator(__left);
+ 	  return __i;
+ 	}
+ #endif
+ 
        /**
         *  @brief Attempts to insert a std::pair into the %map.
         *  @param __x Pair to be inserted (see std::make_pair for easy
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 896,902 ****
  	  return _M_t._M_emplace_unique(std::forward<_Pair>(__x));
  	}
  #endif
!       /// @}
  
  #if __cplusplus >= 201103L
        /**
--- 979,985 ----
  	  return _M_t._M_emplace_unique(std::forward<_Pair>(__x));
  	}
  #endif
!       ///@}
  
  #if __cplusplus >= 201103L
        /**
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1046,1051 ****
--- 1129,1159 ----
  	  return {__i, false};
  	}
  
+ #ifdef __glibcxx_associative_heterogeneous_insertion  // C++26
+       template <__heterogeneous_tree_key<map> _Kt, typename _Obj>
+ 	pair<iterator, bool>
+ 	insert_or_assign(_Kt&& __k, _Obj&& __obj)
+ 	{
+ 	  iterator __i;
+ 	  auto [__left, __node] =_M_t._M_get_insert_unique_pos_tr(__k);
+ 	  if (__node)
+ 	    {
+ 	      __i = _M_t._M_emplace_here(__left == __node, __node,
+ 		std::piecewise_construct,
+ 		std::forward_as_tuple(std::forward<_Kt>(__k)),
+ 		std::forward_as_tuple(std::forward<_Obj>(__obj)));
+ 	      return { __i, true };
+ 	    }
+ 	  __i = iterator(__left);
+ 	  (*__i).second = std::forward<_Obj>(__obj);
+ 	  return { __i, false };
+ 	}
+ #endif
+       ///@}
+ #endif
+ 
+ #if __cplusplus > 201402L
+       ///@{
        /**
         *  @brief Attempts to insert or assign a std::pair into the %map.
         *  @param  __hint  An iterator that serves as a hint as to where the
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1064,1069 ****
--- 1172,1180 ----
         *  If the %pair was already in the %map, the .second of the %pair
         *  is assigned from __obj.
         *
+        *  If a heterogeneous key __k matches a range of elements, the first
+        *  is chosen.
+        *
         *  Insertion requires logarithmic time.
         */
        template <typename _Obj>
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1105,1110 ****
--- 1216,1243 ----
  	  (*__i).second = std::forward<_Obj>(__obj);
  	  return __i;
  	}
+ 
+ #ifdef __glibcxx_associative_heterogeneous_insertion  // C++26
+       template <__heterogeneous_tree_key<map> _Kt, typename _Obj>
+ 	iterator
+ 	insert_or_assign(const_iterator __hint, _Kt&& __k, _Obj&& __obj)
+ 	{
+ 	  iterator __i;
+ 	  auto [__left, __node] =
+ 	    _M_t._M_get_insert_hint_unique_pos_tr(__hint, __k);
+ 	  if (__node)
+ 	    {
+ 	      return _M_t._M_emplace_here(__left == __node, __node,
+ 		std::piecewise_construct,
+ 		std::forward_as_tuple(std::forward<_Kt>(__k)),
+ 		std::forward_as_tuple(std::forward<_Obj>(__obj)));
+ 	    }
+ 	  __i = iterator(__left);
+ 	  (*__i).second = std::forward<_Obj>(__obj);
+ 	  return __i;
+ 	}
+ #endif
+       ///@}
  #endif
  
  #if __cplusplus >= 201103L
diff -Nrcpad gcc-16-20260301/libstdc++-v3/include/bits/stl_set.h gcc-16-20260308/libstdc++-v3/include/bits/stl_set.h
*** gcc-16-20260301/libstdc++-v3/include/bits/stl_set.h	Sun Mar  1 22:32:20 2026
--- gcc-16-20260308/libstdc++-v3/include/bits/stl_set.h	Sun Mar  8 22:32:15 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 548,553 ****
--- 548,569 ----
        }
  #endif
  
+ #ifdef __glibcxx_associative_heterogeneous_insertion  // C++26
+       template <__heterogeneous_tree_key<set> _Kt>
+ 	pair<iterator, bool>
+ 	insert(_Kt&& __k)
+ 	{
+ 	  auto [__left, __node] =_M_t._M_get_insert_unique_pos_tr(__k);
+ 	  if (__node)
+ 	    {
+ 	      iterator __i = _M_t._M_emplace_here(
+ 		(__left == __node), __node, std::forward<_Kt>(__k));
+ 	      return { __i, true };
+ 	    }
+ 	  return { iterator(__left), false };
+ 	}
+ #endif
+ 
        /**
         *  @brief Attempts to insert an element into the %set.
         *  @param  __position  An iterator that serves as a hint as to where the
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 565,570 ****
--- 581,589 ----
         *  For more on @a hinting, see:
         *  https://gcc.gnu.org/onlinedocs/libstdc++/manual/associative.html#containers.associative.insert_hints
         *
+        *  If a heterogeneous key __k matches a range of elements, an iterator
+        *  to the first is returned.
+        *
         *  Insertion requires logarithmic time (if the hint is not taken).
         */
        iterator
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 577,582 ****
--- 596,617 ----
        { return _M_t._M_insert_unique_(__position, std::move(__x)); }
  #endif
  
+ #ifdef __glibcxx_associative_heterogeneous_insertion  // C++26
+       template <__heterogeneous_tree_key<set> _Kt>
+ 	iterator
+ 	insert(const_iterator __position, _Kt&& __k)
+ 	{
+ 	  auto [__left, __node] =
+ 	    _M_t._M_get_insert_hint_unique_pos_tr(__position, __k);
+ 	  if (__node)
+ 	    return _M_t._M_emplace_here(
+ 	      (__left == __node), __node, std::forward<_Kt>(__k));
+ 	  else
+ 	    return iterator(__left);
+ 	}
+ #endif
+       ///@}
+ 
        /**
         *  @brief A template function that attempts to insert a range
         *  of elements.
diff -Nrcpad gcc-16-20260301/libstdc++-v3/include/bits/stl_tree.h gcc-16-20260308/libstdc++-v3/include/bits/stl_tree.h
*** gcc-16-20260301/libstdc++-v3/include/bits/stl_tree.h	Sun Mar  1 22:32:20 2026
--- gcc-16-20260308/libstdc++-v3/include/bits/stl_tree.h	Sun Mar  8 22:32:15 2026
*************** namespace __rb_tree
*** 1470,1475 ****
--- 1470,1489 ----
        _M_get_insert_hint_equal_pos(const_iterator __pos,
  				   const key_type& __k);
  
+ #ifdef __glibcxx_associative_heterogeneous_insertion  // C++26
+       template <typename... _Args>
+ 	iterator
+ 	_M_emplace_here(bool __place_left, _Base_ptr __node, _Args&&... __args);
+ 
+       template <typename _Kt>
+ 	pair<_Base_ptr, _Base_ptr>
+ 	_M_get_insert_unique_pos_tr(const _Kt& __k);
+ 
+       template <typename _Kt>
+ 	pair<_Base_ptr, _Base_ptr>
+ 	_M_get_insert_hint_unique_pos_tr(const_iterator, const _Kt& __k);
+ #endif
+ 
      private:
  #if __cplusplus >= 201103L
        template<typename _Arg, typename _NodeGen>
*************** namespace __rb_tree
*** 2060,2066 ****
        _M_move_assign(_Rb_tree&, false_type);
  #endif
  
! #if __glibcxx_node_extract // >= C++17
        static _Node_ptr
        _S_adapt(typename _Node_alloc_traits::pointer __ptr)
        {
--- 2074,2080 ----
        _M_move_assign(_Rb_tree&, false_type);
  #endif
  
! #ifdef __glibcxx_node_extract // >= C++17
        static _Node_ptr
        _S_adapt(typename _Node_alloc_traits::pointer __ptr)
        {
*************** namespace __rb_tree
*** 2446,2452 ****
  	for (; __first != __last; ++__first)
  	  _M_insert_equal_(end(), *__first, __roan);
        }
! #endif
  
    template<typename _Key, typename _Val, typename _KeyOfValue,
  	   typename _Compare, typename _Alloc>
--- 2460,2466 ----
  	for (; __first != __last; ++__first)
  	  _M_insert_equal_(end(), *__first, __roan);
        }
! #endif // C++11
  
    template<typename _Key, typename _Val, typename _KeyOfValue,
  	   typename _Compare, typename _Alloc>
*************** namespace __rb_tree
*** 2830,2835 ****
--- 2844,2899 ----
        return _Res(__x, __y);
      }
  
+ #ifdef __glibcxx_associative_heterogeneous_insertion  // C++26
+ 
+   // Multiple elements may compare equal to __k. Identify the first
+   // of any such elements, or insert normally.
+ 
+   template <typename _Key, typename _Val, typename _KeyOfValue,
+ 	    typename _Compare, typename _Alloc>
+     template <typename _Kt>
+       auto
+       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+       _M_get_insert_unique_pos_tr(const _Kt& __k)
+       -> pair<_Base_ptr, _Base_ptr>
+       {
+ 	if (size() == 0)
+ 	  return { _M_end(), _M_end() }; // Insert as root.
+ 
+ 	_Base_ptr __x = _M_begin(), __y = __x;
+ 	bool __k_le_y = false;
+ 	do
+ 	  {
+ 	    __y = __x;
+ 	    __k_le_y = ! _M_key_compare(_S_key(__x), __k);
+ 	    __x = __k_le_y ? _S_left(__x) : _S_right(__x);
+ 	  }
+ 	while (__x);
+ 	// If !__k_le_y, __k > *__y;
+ 	//   If __y is rightmost, put at _M_right under *__y.
+ 	//   else if __k < *(__y+1), put at _M_right under *__y.
+ 	//   else __k == *(__y+1), do not insert, report (__y+1).
+ 	// else, __k_le_y, __k <= *__y;
+ 	//   If __k < *__Y, put at _M_left under *__y.
+ 	//   else __k == *__y, do not insert, report __y.
+ 	auto __j = iterator(__y);
+ 	if (! __k_le_y)  // k > *__y
+ 	  {
+ 	    if (__y == _M_rightmost())
+ 	      return { {}, __y };   // Place to right under __y.
+ 	    ++__j;
+ 	  }
+ 	if (_M_key_compare(__k, _S_key(__j._M_node)))
+ 	  {
+ 	    if (__k_le_y)
+ 	      return { __y, __y };  // Place to left under __y.
+ 	    else
+ 	      return { {}, __y };   // Place to right under __y.
+ 	  }
+ 	return { __j._M_node, {} };    // No insert.
+       }
+ #endif
+ 
    template<typename _Key, typename _Val, typename _KeyOfValue,
  	   typename _Compare, typename _Alloc>
  #if __cplusplus >= 201103L
*************** namespace __rb_tree
*** 2936,2941 ****
--- 3000,3058 ----
  	return _Res(__position._M_node, _Base_ptr());
      }
  
+ #ifdef __glibcxx_associative_heterogeneous_insertion  // C++26
+   template <typename _Key, typename _Val, typename _KeyOfValue,
+ 	    typename _Compare, typename _Alloc>
+     template <typename _Kt>
+       auto
+       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+       _M_get_insert_hint_unique_pos_tr(const_iterator __hint, const _Kt& __k)
+       -> pair<_Base_ptr, _Base_ptr>
+       {
+ 	auto __node =__hint._M_node;
+ 	if (__node == _M_end())
+ 	  {
+ 	    if (size() > 0 && _M_key_compare(_S_key(_M_rightmost()), __k))
+ 	      return { {}, _M_rightmost() };
+ 	    return _M_get_insert_unique_pos_tr(__k);
+ 	  }
+ 	if (_M_key_compare(__k, _S_key(__node)))
+ 	  { // First, try before...
+ 	    if (__node == _M_leftmost()) // begin()
+ 		return { _M_leftmost(), _M_leftmost() };
+ 	    iterator __before(__node);
+ 	    --__before;
+ 	    if (_M_key_compare(_S_key(__before._M_node), __k))
+ 	      {
+ 		if (!_S_right(__before._M_node))
+ 		  return { {}, __before._M_node }; // put right
+ 		return { __node, __node }; // put left;
+ 	      }
+ 	    return _M_get_insert_unique_pos_tr(__k);
+ 	  }
+ 	if (_M_key_compare(_S_key(__node), __k))
+ 	  { // ... then try after.
+ 	    if (__node == _M_rightmost())
+ 	      return { {}, _M_rightmost() };
+ 	    iterator __after(__node);
+ 	    ++__after;
+ 	    if (_M_key_compare(__k, _S_key(__after._M_node)))
+ 	      {
+ 		if (!_S_right(__node))
+ 		  return { {}, __node };
+ 		return { __after._M_node, __after._M_node };
+ 	      }
+ 	    return _M_get_insert_unique_pos_tr(__k);
+ 	  }
+ 	// Equal to __k; check if any more to the left.
+ 	iterator __before(__node);
+ 	if (__node == _M_leftmost() ||
+ 	      _M_key_compare(_S_key((--__before)._M_node), __k))
+ 	  { return { __node, {} }; }
+ 	return _M_get_insert_unique_pos_tr(__k);
+       }
+ #endif
+ 
    template<typename _Key, typename _Val, typename _KeyOfValue,
  	   typename _Compare, typename _Alloc>
  #if __cplusplus >= 201103L
*************** namespace __rb_tree
*** 3155,3162 ****
--- 3272,3304 ----
  	  return __z._M_insert(__res);
  	return __z._M_insert_equal_lower();
        }
+ 
+ #ifdef __glibcxx_associative_heterogeneous_insertion  // C++26
+ 
+   // If __pos.second == &_M_impl._M_header, insert at root;
+   // else if __pos.first == __pos.second, insert at __pos.second._M_left;
+   // else insert at __pos.second._M_right, and rebalance.
+ 
+   template <typename _Key, typename _Val, typename _KeyOfValue,
+ 	    typename _Compare, typename _Alloc>
+     template <typename... _Args>
+       auto
+       _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+       _M_emplace_here(bool __place_left, _Base_ptr __node, _Args&&... __args)
+       -> iterator
+       {
+ 	_Auto_node __z(*this, std::forward<_Args>(__args)...);
+ 	_Base_ptr __base_z = __z._M_node->_M_base_ptr();
+ 	_Node_traits::_S_insert_and_rebalance(
+ 	  __place_left, __base_z, __node, _M_impl._M_header);
+ 	__z._M_node = nullptr;
+ 	++_M_impl._M_node_count;
+ 	return iterator(__base_z);
+       }
  #endif
  
+ #endif  // >= C++11
+ 
  
    template<typename _Key, typename _Val, typename _KeyOfValue,
  	   typename _Compare, typename _Alloc>
diff -Nrcpad gcc-16-20260301/libstdc++-v3/include/bits/unordered_map.h gcc-16-20260308/libstdc++-v3/include/bits/unordered_map.h
*** gcc-16-20260301/libstdc++-v3/include/bits/unordered_map.h	Sun Mar  1 22:32:20 2026
--- gcc-16-20260308/libstdc++-v3/include/bits/unordered_map.h	Sun Mar  8 22:32:15 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 456,461 ****
--- 456,462 ----
  	emplace(_Args&&... __args)
  	{ return _M_h.emplace(std::forward<_Args>(__args)...); }
  
+       ///@{
        /**
         *  @brief Attempts to build and insert a std::pair into the
         *  %unordered_map.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 520,525 ****
--- 521,527 ----
  #endif // node_extract
  
  #ifdef __glibcxx_unordered_map_try_emplace // C++ >= 17 && HOSTED
+       ///@{
        /**
         *  @brief Attempts to build and insert a std::pair into the
         *  %unordered_map.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 558,563 ****
--- 560,577 ----
  				  std::forward<_Args>(__args)...);
  	}
  
+ #ifdef __glibcxx_associative_heterogeneous_insertion  // C++26
+       template <__heterogeneous_hash_key<unordered_map> _Kt, typename ..._Args>
+ 	pair<iterator, bool>
+ 	try_emplace(_Kt&& __k, _Args&&... __args)
+ 	{
+ 	  return _M_h.try_emplace(cend(),
+ 	    std::forward<_Kt>(__k), std::forward<_Args>(__args)...);
+ 	}
+ #endif
+       ///@}
+ 
+       ///@{
        /**
         *  @brief Attempts to build and insert a std::pair into the
         *  %unordered_map.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 605,610 ****
--- 619,635 ----
  	}
  #endif // __glibcxx_unordered_map_try_emplace
  
+ #ifdef __glibcxx_associative_heterogeneous_insertion  // C++26
+       template <__heterogeneous_hash_key<unordered_map> _Kt, typename ..._Args>
+ 	iterator
+ 	try_emplace(const_iterator __hint, _Kt&& __k, _Args&&... __args)
+ 	{
+ 	  return _M_h.try_emplace(__hint,
+ 	    std::forward<_Kt>(__k), std::forward<_Args>(__args)...).first;
+ 	}
+ #endif
+       ///@}
+ 
        ///@{
        /**
         *  @brief Attempts to insert a std::pair into the %unordered_map.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 722,727 ****
--- 747,753 ----
  #endif
  
  #ifdef __glibcxx_unordered_map_try_emplace // >= C++17 && HOSTED
+       ///@{
        /**
         *  @brief Attempts to insert a std::pair into the %unordered_map.
         *  @param __k    Key to use for finding a possibly existing pair in
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 765,770 ****
--- 791,811 ----
  	  return __ret;
  	}
  
+ #ifdef __glibcxx_associative_heterogeneous_insertion  // C++26
+       template <__heterogeneous_hash_key<unordered_map> _Kt, typename _Obj>
+ 	pair<iterator, bool>
+ 	insert_or_assign(_Kt&& __k, _Obj&& __obj)
+ 	{
+ 	  auto __ret = _M_h.try_emplace(
+ 	    cend(), std::forward<_Kt>(__k), std::forward<_Obj>(__obj));
+ 	  if (!__ret.second)
+ 	    __ret.first->second = std::forward<_Obj>(__obj);
+ 	  return __ret;
+ 	}
+ #endif
+       ///@}
+ 
+       ///@{
        /**
         *  @brief Attempts to insert a std::pair into the %unordered_map.
         *  @param  __hint  An iterator that serves as a hint as to where the
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 813,818 ****
--- 854,873 ----
  	    __ret.first->second = std::forward<_Obj>(__obj);
  	  return __ret.first;
  	}
+ 
+ #ifdef __glibcxx_associative_heterogeneous_insertion  // C++26
+       template <__heterogeneous_hash_key<unordered_map> _Kt, typename _Obj>
+ 	iterator
+ 	insert_or_assign(const_iterator __hint, _Kt&& __k, _Obj&& __obj)
+ 	{
+ 	  auto __ret = _M_h.try_emplace(__hint,
+ 	    std::forward<_Kt>(__k), std::forward<_Obj>(__obj));
+ 	  if (!__ret.second)
+ 	    __ret.first->second = std::forward<_Obj>(__obj);
+ 	  return __ret.first;
+ 	}
+ #endif
+       ///@}
  #endif // unordered_map_try_emplace
  
        ///@{
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 839,844 ****
--- 894,900 ----
        { return _M_h.erase(__position); }
        ///@}
  
+       ///@{
        /**
         *  @brief Erases elements according to the provided key.
         *  @param  __x  Key of element to be erased.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 861,866 ****
--- 917,923 ----
  	erase(_Kt&& __key)
  	{ return _M_h._M_erase_tr(__key); }
  #endif
+       ///@}
  
        /**
         *  @brief Erases a [__first,__last) range of elements from an
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1089,1094 ****
--- 1146,1160 ----
        mapped_type&
        operator[](key_type&& __k)
        { return _M_h[std::move(__k)]; }
+ 
+ #ifdef __glibcxx_associative_heterogeneous_insertion  // C++26
+       template <__heterogeneous_hash_key<unordered_map> _Kt>
+ 	mapped_type&
+ 	operator[](_Kt&& __k)
+       {
+ 	return try_emplace(std::forward<_Kt>(__k)).first->second;
+       }
+ #endif
        ///@}
  
        ///@{
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1103,1111 ****
--- 1169,1191 ----
        at(const key_type& __k)
        { return _M_h.at(__k); }
  
+ #ifdef __glibcxx_associative_heterogeneous_insertion  // C++26
+       template <__heterogeneous_hash_key<unordered_map> _Kt>
+ 	mapped_type&
+ 	at(const _Kt& __k)
+ 	{ return _M_h._M_at_tr(__k); }
+ #endif
+ 
        const mapped_type&
        at(const key_type& __k) const
        { return _M_h.at(__k); }
+ 
+ #ifdef __glibcxx_associative_heterogeneous_insertion  // C++26
+       template <__heterogeneous_hash_key<unordered_map> _Kt>
+ 	const mapped_type&
+ 	at(const _Kt& __k) const
+ 	{ return _M_h._M_at_tr(__k); }
+ #endif
        ///@}
  
        // bucket interface.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1129,1134 ****
--- 1209,1215 ----
        bucket_size(size_type __n) const
        { return _M_h.bucket_size(__n); }
  
+       ///@{
        /*
         * @brief  Returns the bucket index of a given element.
         * @param  __key  A key instance.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1138,1143 ****
--- 1219,1232 ----
        bucket(const key_type& __key) const
        { return _M_h.bucket(__key); }
  
+ #ifdef __glibcxx_associative_heterogeneous_insertion  // C++26
+       template <__heterogeneous_hash_key<unordered_map> _Kt>
+ 	size_type
+ 	bucket(const _Kt& __key) const
+ 	{ return _M_h._M_bucket_tr(__key); }
+ #endif
+       ///@}
+ 
        /**
         *  @brief  Returns a read/write iterator pointing to the first bucket
         *         element.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1928,1933 ****
--- 2017,2023 ----
        { return _M_h.erase(__position); }
        ///@}
  
+       ///@{
        /**
         *  @brief Erases elements according to the provided key.
         *  @param  __x  Key of elements to be erased.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1946,1954 ****
  #ifdef __glibcxx_associative_heterogeneous_erasure // C++23
        template <__heterogeneous_hash_key<unordered_multimap> _Kt>
  	size_type
! 	erase(_Kt&& __key)
! 	{ return _M_h._M_erase_tr(__key); }
  #endif
  
        /**
         *  @brief Erases a [__first,__last) range of elements from an
--- 2036,2046 ----
  #ifdef __glibcxx_associative_heterogeneous_erasure // C++23
        template <__heterogeneous_hash_key<unordered_multimap> _Kt>
  	size_type
! 	erase(_Kt&& __x)
! 	{ return _M_h._M_erase_tr(__x); }
  #endif
+       ///@}
+ 
  
        /**
         *  @brief Erases a [__first,__last) range of elements from an
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2176,2181 ****
--- 2268,2274 ----
        bucket_size(size_type __n) const
        { return _M_h.bucket_size(__n); }
  
+       ///@{
        /*
         * @brief  Returns the bucket index of a given element.
         * @param  __key  A key instance.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2185,2190 ****
--- 2278,2291 ----
        bucket(const key_type& __key) const
        { return _M_h.bucket(__key); }
  
+ #ifdef __glibcxx_associative_heterogeneous_insertion  // C++26
+       template <__heterogeneous_hash_key<unordered_multimap> _Kt>
+ 	size_type
+ 	bucket(const _Kt& __key) const
+ 	{ return _M_h._M_bucket_tr(__key); }
+ #endif
+       ///@}
+ 
        /**
         *  @brief  Returns a read/write iterator pointing to the first bucket
         *         element.
diff -Nrcpad gcc-16-20260301/libstdc++-v3/include/bits/unordered_set.h gcc-16-20260308/libstdc++-v3/include/bits/unordered_set.h
*** gcc-16-20260301/libstdc++-v3/include/bits/unordered_set.h	Sun Mar  1 22:32:20 2026
--- gcc-16-20260308/libstdc++-v3/include/bits/unordered_set.h	Sun Mar  8 22:32:15 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 493,498 ****
--- 493,505 ----
        std::pair<iterator, bool>
        insert(value_type&& __x)
        { return _M_h.insert(std::move(__x)); }
+ 
+ #if __glibcxx_associative_heterogeneous_insertion  // C++26
+       template <__heterogeneous_hash_key<unordered_set> _Kt>
+ 	std::pair<iterator, bool>
+ 	insert(_Kt&&  __x)
+ 	{ return _M_h._M_insert_tr(std::forward<_Kt>(__x)); }
+ #endif
        ///@}
  
        ///@{
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 522,527 ****
--- 529,541 ----
        iterator
        insert(const_iterator __hint, value_type&& __x)
        { return _M_h.insert(__hint, std::move(__x)); }
+ 
+ #if __glibcxx_associative_heterogeneous_insertion  // C++26
+       template <__heterogeneous_hash_key<unordered_set> _Kt>
+ 	iterator
+ 	insert(const_iterator, _Kt&& __x)
+ 	{ return _M_h._M_insert_tr(std::forward<_Kt>(__x)).first; }
+ #endif
        ///@}
  
        /**
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 761,769 ****
  #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt>
  	auto
! 	find(const _Kt& __k)
! 	-> decltype(_M_h._M_find_tr(__k))
! 	{ return _M_h._M_find_tr(__k); }
  #endif
  
        const_iterator
--- 775,783 ----
  #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt>
  	auto
! 	find(const _Kt& __x)
! 	-> decltype(_M_h._M_find_tr(__x))
! 	{ return _M_h._M_find_tr(__x); }
  #endif
  
        const_iterator
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 773,781 ****
  #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt>
  	auto
! 	find(const _Kt& __k) const
! 	-> decltype(_M_h._M_find_tr(__k))
! 	{ return _M_h._M_find_tr(__k); }
  #endif
        ///@}
  
--- 787,795 ----
  #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt>
  	auto
! 	find(const _Kt& __x) const
! 	-> decltype(_M_h._M_find_tr(__x))
! 	{ return _M_h._M_find_tr(__x); }
  #endif
        ///@}
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 796,804 ****
  #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt>
  	auto
! 	count(const _Kt& __k) const
! 	-> decltype(_M_h._M_count_tr(__k))
! 	{ return _M_h._M_count_tr(__k); }
  #endif
        ///@}
  
--- 810,818 ----
  #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt>
  	auto
! 	count(const _Kt& __x) const
! 	-> decltype(_M_h._M_count_tr(__x))
! 	{ return _M_h._M_count_tr(__x); }
  #endif
        ///@}
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 815,823 ****
  
        template<typename _Kt>
  	auto
! 	contains(const _Kt& __k) const
! 	-> decltype(_M_h._M_find_tr(__k), void(), true)
! 	{ return _M_h._M_find_tr(__k) != _M_h.end(); }
        ///@}
  #endif
  
--- 829,837 ----
  
        template<typename _Kt>
  	auto
! 	contains(const _Kt& __x) const
! 	-> decltype(_M_h._M_find_tr(__x), void(), true)
! 	{ return _M_h._M_find_tr(__x) != _M_h.end(); }
        ///@}
  #endif
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 837,845 ****
  #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt>
  	auto
! 	equal_range(const _Kt& __k)
! 	-> decltype(_M_h._M_equal_range_tr(__k))
! 	{ return _M_h._M_equal_range_tr(__k); }
  #endif
  
        std::pair<const_iterator, const_iterator>
--- 851,859 ----
  #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt>
  	auto
! 	equal_range(const _Kt& __x)
! 	-> decltype(_M_h._M_equal_range_tr(__x))
! 	{ return _M_h._M_equal_range_tr(__x); }
  #endif
  
        std::pair<const_iterator, const_iterator>
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 849,857 ****
  #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt>
  	auto
! 	equal_range(const _Kt& __k) const
! 	-> decltype(_M_h._M_equal_range_tr(__k))
! 	{ return _M_h._M_equal_range_tr(__k); }
  #endif
        ///@}
  
--- 863,871 ----
  #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt>
  	auto
! 	equal_range(const _Kt& __x) const
! 	-> decltype(_M_h._M_equal_range_tr(__x))
! 	{ return _M_h._M_equal_range_tr(__x); }
  #endif
        ///@}
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 876,881 ****
--- 890,896 ----
        bucket_size(size_type __n) const
        { return _M_h.bucket_size(__n); }
  
+       ///@{
        /*
         * @brief  Returns the bucket index of a given element.
         * @param  __key  A key instance.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 885,890 ****
--- 900,913 ----
        bucket(const key_type& __key) const
        { return _M_h.bucket(__key); }
  
+ #if __glibcxx_associative_heterogeneous_insertion  // C++26
+       template <__heterogeneous_hash_key<unordered_set> _Kt>
+ 	size_type
+ 	bucket(const _Kt& __key) const
+ 	{ return _M_h._M_bucket_tr(__key); }
+ #endif
+       ///@}
+ 
        ///@{
        /**
         *  @brief  Returns a read-only (constant) iterator pointing to the first
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1884,1889 ****
--- 1907,1913 ----
        bucket_size(size_type __n) const
        { return _M_h.bucket_size(__n); }
  
+       ///@{
        /*
         * @brief  Returns the bucket index of a given element.
         * @param  __key  A key instance.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1893,1898 ****
--- 1917,1930 ----
        bucket(const key_type& __key) const
        { return _M_h.bucket(__key); }
  
+ #if __glibcxx_associative_heterogeneous_insertion  //  C++26
+       template <__heterogeneous_hash_key<unordered_multiset> _Kt>
+ 	size_type
+ 	bucket(const _Kt& __key) const
+ 	{ return _M_h._M_bucket_tr(__key); }
+ #endif
+       ///@}
+ 
        ///@{
        /**
         *  @brief  Returns a read-only (constant) iterator pointing to the first
diff -Nrcpad gcc-16-20260301/libstdc++-v3/include/bits/version.def gcc-16-20260308/libstdc++-v3/include/bits/version.def
*** gcc-16-20260301/libstdc++-v3/include/bits/version.def	Sun Mar  1 22:32:20 2026
--- gcc-16-20260308/libstdc++-v3/include/bits/version.def	Sun Mar  8 22:32:15 2026
*************** ftms = {
*** 1652,1657 ****
--- 1652,1665 ----
  };
  
  ftms = {
+   name = associative_heterogeneous_insertion;
+   values = {
+     v = 202306;
+     cxxmin = 26;
+   };
+ };
+ 
+ ftms = {
    name = is_scoped_enum;
    values = {
      v = 202011;
diff -Nrcpad gcc-16-20260301/libstdc++-v3/include/bits/version.h gcc-16-20260308/libstdc++-v3/include/bits/version.h
*** gcc-16-20260301/libstdc++-v3/include/bits/version.h	Sun Mar  1 22:32:20 2026
--- gcc-16-20260308/libstdc++-v3/include/bits/version.h	Sun Mar  8 22:32:15 2026
***************
*** 1821,1826 ****
--- 1821,1836 ----
  #endif /* !defined(__cpp_lib_associative_heterogeneous_erasure) */
  #undef __glibcxx_want_associative_heterogeneous_erasure
  
+ #if !defined(__cpp_lib_associative_heterogeneous_insertion)
+ # if (__cplusplus >  202302L)
+ #  define __glibcxx_associative_heterogeneous_insertion 202306L
+ #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_associative_heterogeneous_insertion)
+ #   define __cpp_lib_associative_heterogeneous_insertion 202306L
+ #  endif
+ # endif
+ #endif /* !defined(__cpp_lib_associative_heterogeneous_insertion) */
+ #undef __glibcxx_want_associative_heterogeneous_insertion
+ 
  #if !defined(__cpp_lib_is_scoped_enum)
  # if (__cplusplus >= 202100L)
  #  define __glibcxx_is_scoped_enum 202011L
diff -Nrcpad gcc-16-20260301/libstdc++-v3/include/debug/functions.h gcc-16-20260308/libstdc++-v3/include/debug/functions.h
*** gcc-16-20260301/libstdc++-v3/include/debug/functions.h	Sun Mar  1 22:32:20 2026
--- gcc-16-20260308/libstdc++-v3/include/debug/functions.h	Sun Mar  8 22:32:15 2026
*************** namespace __gnu_debug
*** 168,173 ****
--- 168,174 ----
        return __foreign_iterator_aux3(__it, __other, __other_end, __tag());
      }
  
+ #if __cplusplus < 201103L
    /* Handle the case where we aren't really inserting a range after all */
    template<typename _Iterator, typename _Sequence, typename _Category,
  	   typename _Integral>
*************** namespace __gnu_debug
*** 185,196 ****
--- 186,206 ----
  	const _Safe_iterator<_Iterator, _Sequence, _Category>& __it,
  	_InputIterator __other, _InputIterator __other_end,
  	std::__false_type)
+ #else
+   template<typename _Iterator, typename _Sequence, typename _Category,
+ 	   typename _InputIterator>
+     inline bool
+     __foreign_iterator(
+ 	const _Safe_iterator<_Iterator, _Sequence, _Category>& __it,
+ 	_InputIterator __other, _InputIterator __other_end)
+ #endif
      {
        return _Insert_range_from_self_is_safe<_Sequence>::__value
  	|| __foreign_iterator_aux2(__it, std::__miter_base(__other),
  				   std::__miter_base(__other_end));
      }
  
+ #if __cplusplus < 201103L
    template<typename _Iterator, typename _Sequence, typename _Category,
  	   typename _InputIterator>
      inline bool
*************** namespace __gnu_debug
*** 201,206 ****
--- 211,217 ----
        typedef typename std::__is_integer<_InputIterator>::__type _Integral;
        return __foreign_iterator_aux(__it, __other, __other_end, _Integral());
      }
+ #endif
  
    // Can't check if an input iterator sequence is sorted, because we
    // can't step through the sequence.
diff -Nrcpad gcc-16-20260301/libstdc++-v3/include/debug/helper_functions.h gcc-16-20260308/libstdc++-v3/include/debug/helper_functions.h
*** gcc-16-20260301/libstdc++-v3/include/debug/helper_functions.h	Sun Mar  1 22:32:20 2026
--- gcc-16-20260308/libstdc++-v3/include/debug/helper_functions.h	Sun Mar  8 22:32:15 2026
***************
*** 32,38 ****
  #include <bits/move.h>				// for __addressof
  #include <bits/stl_iterator_base_types.h>	// for iterator_traits,
  						// categories and _Iter_base
! #include <bits/cpp_type_traits.h>		// for __is_integer
  
  #include <bits/stl_pair.h>			// for pair
  
--- 32,40 ----
  #include <bits/move.h>				// for __addressof
  #include <bits/stl_iterator_base_types.h>	// for iterator_traits,
  						// categories and _Iter_base
! #if __cplusplus < 201103L
! # include <bits/cpp_type_traits.h>		// for __is_integer
! #endif
  
  #include <bits/stl_pair.h>			// for pair
  
*************** namespace __gnu_debug
*** 58,65 ****
--- 60,71 ----
        __dp_exact		//< Can determine distance precisely
      };
  
+ #if __cplusplus >= 201103L
+   template<typename _Iterator>
+ #else
    template<typename _Iterator,
  	   typename = typename std::__is_integer<_Iterator>::__type>
+ #endif
      struct _Distance_traits
      {
      private:
*************** namespace __gnu_debug
*** 80,88 ****
--- 86,96 ----
        typedef std::pair<_DiffType, _Distance_precision> __type;
      };
  
+ #if __cplusplus < 201103L
    template<typename _Integral>
      struct _Distance_traits<_Integral, std::__true_type>
      { typedef std::pair<std::ptrdiff_t, _Distance_precision> __type; };
+ #endif
  
    /** Determine the distance between two iterators with some known
     *	precision.
*************** namespace __gnu_debug
*** 141,158 ****
      __check_singular(_Tp* const& __ptr)
      { return __ptr == 0; }
  
!   /** We say that integral types for a valid range, and defer to other
!    *  routines to realize what to do with integral types instead of
!    *  iterators.
!   */
    template<typename _Integral>
-     _GLIBCXX_CONSTEXPR
      inline bool
      __valid_range_aux(_Integral, _Integral, std::__true_type)
      { return true; }
  
    template<typename _Integral>
-     _GLIBCXX20_CONSTEXPR
      inline bool
      __valid_range_aux(_Integral, _Integral,
  		      typename _Distance_traits<_Integral>::__type& __dist,
--- 149,162 ----
      __check_singular(_Tp* const& __ptr)
      { return __ptr == 0; }
  
! #if __cplusplus < 201103L
!   // In case of integral type no assertions.
    template<typename _Integral>
      inline bool
      __valid_range_aux(_Integral, _Integral, std::__true_type)
      { return true; }
  
    template<typename _Integral>
      inline bool
      __valid_range_aux(_Integral, _Integral,
  		      typename _Distance_traits<_Integral>::__type& __dist,
*************** namespace __gnu_debug
*** 161,166 ****
--- 165,171 ----
        __dist = std::make_pair(0, __dp_none);
        return true;
      }
+ #endif
  
    template<typename _InputIterator>
      _GLIBCXX_CONSTEXPR
*************** namespace __gnu_debug
*** 189,213 ****
  	&& __first <= __last;
      }
  
    /** We have iterators, so figure out what kind of iterators they are
     *  to see if we can check the range ahead of time.
    */
    template<typename _InputIterator>
-     _GLIBCXX_CONSTEXPR
      inline bool
      __valid_range_aux(_InputIterator __first, _InputIterator __last,
  		      std::__false_type)
      {
        return __gnu_debug::__valid_range_aux(__first, __last,
  					    std::__iterator_category(__first));
      }
  
    template<typename _InputIterator>
      _GLIBCXX20_CONSTEXPR
      inline bool
      __valid_range_aux(_InputIterator __first, _InputIterator __last,
  		      typename _Distance_traits<_InputIterator>::__type& __dist,
  		      std::__false_type)
      {
        if (!__gnu_debug::__valid_range_aux(__first, __last,
  					  std::input_iterator_tag()))
--- 194,230 ----
  	&& __first <= __last;
      }
  
+ #if __cplusplus >= 201103L
+   template<typename _InputIterator>
+     constexpr bool
+     __valid_range(_InputIterator __first, _InputIterator __last)
+ #else
    /** We have iterators, so figure out what kind of iterators they are
     *  to see if we can check the range ahead of time.
    */
    template<typename _InputIterator>
      inline bool
      __valid_range_aux(_InputIterator __first, _InputIterator __last,
  		      std::__false_type)
+ #endif
      {
        return __gnu_debug::__valid_range_aux(__first, __last,
  					    std::__iterator_category(__first));
      }
  
+ #if __cplusplus >= 201103L
    template<typename _InputIterator>
      _GLIBCXX20_CONSTEXPR
      inline bool
+     __valid_range(_InputIterator __first, _InputIterator __last,
+ 		  typename _Distance_traits<_InputIterator>::__type& __dist)
+ #else
+   template<typename _InputIterator>
+     inline bool
      __valid_range_aux(_InputIterator __first, _InputIterator __last,
  		      typename _Distance_traits<_InputIterator>::__type& __dist,
  		      std::__false_type)
+ #endif
      {
        if (!__gnu_debug::__valid_range_aux(__first, __last,
  					  std::input_iterator_tag()))
*************** namespace __gnu_debug
*** 232,244 ****
        return true;
      }
  
    /** Don't know what these iterators are, or if they are even
     *  iterators (we may get an integral type for InputIterator), so
     *  see if they are integral and pass them on to the next phase
     *  otherwise.
    */
    template<typename _InputIterator>
-     _GLIBCXX20_CONSTEXPR
      inline bool
      __valid_range(_InputIterator __first, _InputIterator __last,
  		  typename _Distance_traits<_InputIterator>::__type& __dist)
--- 249,261 ----
        return true;
      }
  
+ #if __cplusplus < 201103L
    /** Don't know what these iterators are, or if they are even
     *  iterators (we may get an integral type for InputIterator), so
     *  see if they are integral and pass them on to the next phase
     *  otherwise.
    */
    template<typename _InputIterator>
      inline bool
      __valid_range(_InputIterator __first, _InputIterator __last,
  		  typename _Distance_traits<_InputIterator>::__type& __dist)
*************** namespace __gnu_debug
*** 247,252 ****
--- 264,270 ----
        return __gnu_debug::__valid_range_aux(__first, __last, __dist,
  					    _Integral());
      }
+ #endif
  
    template<typename _Iterator, typename _Sequence, typename _Category>
      _GLIBCXX20_CONSTEXPR bool
*************** namespace __gnu_debug
*** 262,275 ****
  		  typename _Distance_traits<_Iterator>::__type&);
  #endif
  
    template<typename _InputIterator>
-     _GLIBCXX14_CONSTEXPR
      inline bool
      __valid_range(_InputIterator __first, _InputIterator __last)
      {
        typedef typename std::__is_integer<_InputIterator>::__type _Integral;
        return __gnu_debug::__valid_range_aux(__first, __last, _Integral());
      }
  
    template<typename _Iterator, typename _Sequence, typename _Category>
      _GLIBCXX20_CONSTEXPR bool
--- 280,294 ----
  		  typename _Distance_traits<_Iterator>::__type&);
  #endif
  
+ #if __cplusplus < 201103L
    template<typename _InputIterator>
      inline bool
      __valid_range(_InputIterator __first, _InputIterator __last)
      {
        typedef typename std::__is_integer<_InputIterator>::__type _Integral;
        return __gnu_debug::__valid_range_aux(__first, __last, _Integral());
      }
+ #endif
  
    template<typename _Iterator, typename _Sequence, typename _Category>
      _GLIBCXX20_CONSTEXPR bool
diff -Nrcpad gcc-16-20260301/libstdc++-v3/include/debug/map.h gcc-16-20260308/libstdc++-v3/include/debug/map.h
*** gcc-16-20260301/libstdc++-v3/include/debug/map.h	Sun Mar  1 22:32:20 2026
--- gcc-16-20260308/libstdc++-v3/include/debug/map.h	Sun Mar  8 22:32:15 2026
*************** namespace __debug
*** 382,399 ****
  	  return { { __res.first, this }, __res.second };
  	}
  
        template <typename... _Args>
          iterator
          try_emplace(const_iterator __hint, const key_type& __k,
                      _Args&&... __args)
          {
  	  __glibcxx_check_insert(__hint);
! 	  return
! 	    {
! 	      _Base::try_emplace(__hint.base(), __k,
! 				 std::forward<_Args>(__args)...),
! 	      this
! 	    };
  	}
  
        template <typename... _Args>
--- 382,407 ----
  	  return { { __res.first, this }, __res.second };
  	}
  
+ # ifdef __glibcxx_associative_heterogeneous_insertion
+       template <__heterogeneous_tree_key<map> _Kt, typename... _Args>
+ 	pair<iterator, bool>
+ 	try_emplace(_Kt&& __k, _Args&&... __args)
+ 	{
+ 	  auto __res = _Base::try_emplace(
+ 	    std::forward<_Kt>(__k), std::forward<_Args>(__args)...);
+ 	  return { { __res.first, this }, __res.second };
+ 	}
+ #endif
+ 
        template <typename... _Args>
          iterator
          try_emplace(const_iterator __hint, const key_type& __k,
                      _Args&&... __args)
          {
  	  __glibcxx_check_insert(__hint);
! 	  auto __it = _Base::try_emplace(__hint.base(), __k,
! 	    std::forward<_Args>(__args)...);
! 	  return { __it, this };
  	}
  
        template <typename... _Args>
*************** namespace __debug
*** 401,414 ****
          try_emplace(const_iterator __hint, key_type&& __k, _Args&&... __args)
          {
  	  __glibcxx_check_insert(__hint);
! 	  return
! 	    {
! 	      _Base::try_emplace(__hint.base(), std::move(__k),
! 				 std::forward<_Args>(__args)...),
! 	      this
! 	    };
  	}
  
        template <typename _Obj>
          std::pair<iterator, bool>
          insert_or_assign(const key_type& __k, _Obj&& __obj)
--- 409,431 ----
          try_emplace(const_iterator __hint, key_type&& __k, _Args&&... __args)
          {
  	  __glibcxx_check_insert(__hint);
! 	  auto __it = _Base::try_emplace(__hint.base(), std::move(__k),
! 	    std::forward<_Args>(__args)...);
! 	  return { __it, this };
  	}
  
+ # ifdef __glibcxx_associative_heterogeneous_insertion
+       template <__heterogeneous_tree_key<map> _Kt, typename... _Args>
+ 	iterator
+ 	try_emplace(const_iterator __hint, _Kt&& __k, _Args&&... __args)
+ 	{
+ 	  __glibcxx_check_insert(__hint);
+ 	  auto __it = _Base::try_emplace(__hint.base(),
+ 	    std::forward<_Kt>(__k), std::forward<_Args>(__args)...);
+ 	  return { __it, this };
+ 	}
+ # endif
+ 
        template <typename _Obj>
          std::pair<iterator, bool>
          insert_or_assign(const key_type& __k, _Obj&& __obj)
*************** namespace __debug
*** 427,444 ****
  	  return { { __res.first, this }, __res.second };
  	}
  
        template <typename _Obj>
          iterator
          insert_or_assign(const_iterator __hint,
                           const key_type& __k, _Obj&& __obj)
  	{
  	  __glibcxx_check_insert(__hint);
! 	  return
! 	    {
! 	      _Base::insert_or_assign(__hint.base(), __k,
! 				      std::forward<_Obj>(__obj)),
! 	      this
! 	    };
  	}
  
        template <typename _Obj>
--- 444,469 ----
  	  return { { __res.first, this }, __res.second };
  	}
  
+ # ifdef __glibcxx_associative_heterogeneous_insertion
+       template <__heterogeneous_tree_key<map> _Kt, typename _Obj>
+ 	std::pair<iterator, bool>
+ 	insert_or_assign(_Kt&& __k, _Obj&& __obj)
+ 	{
+ 	  auto __res = _Base::insert_or_assign(
+ 	    std::forward<_Kt>(__k), std::forward<_Obj>(__obj));
+ 	  return { { __res.first, this }, __res.second };
+ 	}
+ #endif
+ 
        template <typename _Obj>
          iterator
          insert_or_assign(const_iterator __hint,
                           const key_type& __k, _Obj&& __obj)
  	{
  	  __glibcxx_check_insert(__hint);
! 	  auto __it = _Base::insert_or_assign(__hint.base(), __k,
! 	    std::forward<_Obj>(__obj));
! 	  return { __it, this };
  	}
  
        template <typename _Obj>
*************** namespace __debug
*** 446,458 ****
          insert_or_assign(const_iterator __hint, key_type&& __k, _Obj&& __obj)
          {
  	  __glibcxx_check_insert(__hint);
! 	  return
! 	    {
! 	      _Base::insert_or_assign(__hint.base(), std::move(__k),
! 				      std::forward<_Obj>(__obj)),
! 	      this
! 	    };
  	}
  #endif // C++17
  
  #ifdef __glibcxx_node_extract // >= C++17 && HOSTED
--- 471,493 ----
          insert_or_assign(const_iterator __hint, key_type&& __k, _Obj&& __obj)
          {
  	  __glibcxx_check_insert(__hint);
! 	  auto __it = _Base::insert_or_assign(__hint.base(), std::move(__k),
! 	    std::forward<_Obj>(__obj));
! 	  return { __it, this };
! 	}
! 
! # ifdef __glibcxx_associative_heterogeneous_insertion
!       template <__heterogeneous_tree_key<map> _Kt, typename _Obj>
! 	iterator
! 	insert_or_assign(const_iterator __hint, _Kt&& __k, _Obj&& __obj)
! 	{
! 	  __glibcxx_check_insert(__hint);
! 	  auto __it = _Base::insert_or_assign(__hint.base(),
! 	    std::forward<_Kt>(__k), std::forward<_Obj>(__obj));
! 	  return { __it, this };
  	}
+ # endif
+ 
  #endif // C++17
  
  #ifdef __glibcxx_node_extract // >= C++17 && HOSTED
diff -Nrcpad gcc-16-20260301/libstdc++-v3/include/debug/safe_unordered_container.h gcc-16-20260308/libstdc++-v3/include/debug/safe_unordered_container.h
*** gcc-16-20260301/libstdc++-v3/include/debug/safe_unordered_container.h	Sun Mar  1 22:32:20 2026
--- gcc-16-20260308/libstdc++-v3/include/debug/safe_unordered_container.h	Sun Mar  8 22:32:15 2026
***************
*** 36,41 ****
--- 36,112 ----
  
  namespace __gnu_debug
  {
+   template<typename _Container>
+     class _Safe_unordered_container;
+ 
+ #ifdef __glibcxx_node_extract // >= C++17 && HOSTED
+   template<typename _ExtractKey, typename _Source>
+     struct _UContInvalidatePred
+     {
+       template<typename _Iterator>
+ 	bool
+ 	operator()(_Iterator __it) const
+ 	{ return _M_source._M_cont().count(_ExtractKey{}(*__it)) == 0; }
+ 
+       const _Safe_unordered_container<_Source>& _M_source;
+     };
+ 
+   template<typename _ExtractKey, typename _Source>
+     struct _UMContInvalidatePred
+     {
+       template<typename _Iterator>
+ 	bool
+ 	operator()(_Iterator __it) const
+ 	{
+ 	  auto __rng =
+ 	    _M_source._M_cont()._M_base().equal_range(_ExtractKey{}(*__it));
+ 	  for (auto __rit = __rng.first;
+ 	       __rit != __rng.second; ++__rit)
+ 	    {
+ 	      if (__it == __rit)
+ 		return false;
+ 	    }
+ 
+ 	  return true;
+ 	}
+ 
+       const _Safe_unordered_container<_Source>& _M_source;
+     };
+ 
+   template<typename _Source, typename _InvalidatePred>
+     struct _UContMergeGuard
+     {
+       _UContMergeGuard(_Safe_unordered_container<_Source>& __src) noexcept
+       : _M_source(__src), _M_size(__src._M_cont().size()), _M_pred { __src }
+       { }
+ 
+       _UContMergeGuard(const _UContMergeGuard&) = delete;
+ 
+       ~_UContMergeGuard()
+       {
+ 	const std::size_t __size = _M_source._M_cont().size();
+ 	if (__size == _M_size)
+ 	  return;
+ 
+ 	__try
+ 	  {
+ 	    if (__size == 0)
+ 	      _M_source._M_invalidate_all();
+ 	    else
+ 	      _M_source._M_invalidate_all_if(_M_pred);
+ 	  }
+ 	__catch(...)
+ 	{
+ 	  _M_source._M_invalidate_all();
+ 	}
+       }
+ 
+       _Safe_unordered_container<_Source>& _M_source;
+       const std::size_t _M_size;
+       _InvalidatePred _M_pred;
+   };
+ #endif // >= C++17 && HOSTED
+ 
    /**
     * @brief Base class for constructing a @a safe unordered container type
     * that tracks iterators that reference it.
*************** namespace __gnu_debug
*** 57,155 ****
    template<typename _Container>
      class _Safe_unordered_container : public _Safe_unordered_container_base
      {
!     private:
!       _Container&
!       _M_cont() noexcept
!       { return *static_cast<_Container*>(this); }
  
        const _Safe_unordered_container*
        _M_self() const
        { return this; }
  
      protected:
!       void
!       _M_invalidate_locals()
!       {
! 	auto __local_end = _M_cont()._M_base().cend(0);
! 	this->_M_invalidate_local_if(
! 		[__local_end](__decltype(__local_end) __it)
! 		{ return __it != __local_end; });
!       }
! 
! #if __cplusplus > 201402L
        template<typename _ExtractKey, typename _Source>
! 	struct _UContInvalidatePred
! 	{
! 	  template<typename _Iterator>
! 	    bool
! 	    operator()(_Iterator __it) const
! 	    { return _M_source.count(_ExtractKey{}(*__it)) == 0; }
! 
! 	  const _Source& _M_source;
! 	};
  
        template<typename _ExtractKey, typename _Source>
! 	struct _UMContInvalidatePred
! 	{
! 	  template<typename _Iterator>
! 	    bool
! 	    operator()(_Iterator __it) const
! 	    {
! 	      auto __rng =
! 		_M_source._M_base().equal_range(_ExtractKey{}(*__it));
! 	      for (auto __rit = __rng.first;
! 		   __rit != __rng.second; ++__rit)
! 		{
! 		  if (__it == __rit)
! 		    return false;
! 		}
! 
! 	      return true;
! 	    }
! 
! 	  const _Source& _M_source;
! 	};
  
        template<typename _Source, typename _InvalidatePred>
! 	struct _UContMergeGuard
! 	{
! 	  _UContMergeGuard(_Source& __src) noexcept
! 	  : _M_source(__src), _M_size(__src.size()), _M_pred { __src }
! 	  { }
! 
! 	  _UContMergeGuard(const _UContMergeGuard&) = delete;
! 
! 	  ~_UContMergeGuard()
! 	  {
! 	    const std::size_t __size = _M_source.size();
! 	    if (__size == _M_size)
! 	      return;
! 
! 	    __try
! 	      {
! 		if (__size == 0)
! 		  _M_source._M_invalidate_all();
! 		else
! 		  {
! 		    _M_source._M_invalidate_if(_M_pred);
! 		    _M_source._M_invalidate_local_if(_M_pred);
! 		  }
! 	      }
! 	    __catch(...)
! 	      {
! 		_M_source._M_invalidate_all();
! 	      }
! 	  }
! 
! 	  _Source& _M_source;
! 	  const std::size_t _M_size;
! 	  _InvalidatePred _M_pred;
! 	};
  
        template<typename _ExtractKey, typename _Source>
  	static _UContMergeGuard<_Source,
  				_UContInvalidatePred<_ExtractKey, _Source>>
! 	_S_uc_guard(_ExtractKey, _Source& __src)
  	{
  	  typedef _UContInvalidatePred<_ExtractKey, _Source> _InvalidatePred;
  	  return _UContMergeGuard<_Source, _InvalidatePred>(__src);
--- 128,156 ----
    template<typename _Container>
      class _Safe_unordered_container : public _Safe_unordered_container_base
      {
!       const _Container&
!       _M_cont() const noexcept
!       { return *static_cast<const _Container*>(this); }
  
        const _Safe_unordered_container*
        _M_self() const
        { return this; }
  
      protected:
! #ifdef __glibcxx_node_extract // >= C++17 && HOSTED
        template<typename _ExtractKey, typename _Source>
! 	friend struct ::__gnu_debug::_UContInvalidatePred;
  
        template<typename _ExtractKey, typename _Source>
! 	friend struct ::__gnu_debug::_UMContInvalidatePred;
  
        template<typename _Source, typename _InvalidatePred>
! 	friend struct ::__gnu_debug::_UContMergeGuard;
  
        template<typename _ExtractKey, typename _Source>
  	static _UContMergeGuard<_Source,
  				_UContInvalidatePred<_ExtractKey, _Source>>
! 	_S_uc_guard(_ExtractKey, _Safe_unordered_container<_Source>& __src)
  	{
  	  typedef _UContInvalidatePred<_ExtractKey, _Source> _InvalidatePred;
  	  return _UContMergeGuard<_Source, _InvalidatePred>(__src);
*************** namespace __gnu_debug
*** 158,187 ****
        template<typename _ExtractKey, typename _Source>
  	static _UContMergeGuard<_Source,
  				_UMContInvalidatePred<_ExtractKey, _Source>>
! 	_S_umc_guard(_ExtractKey, _Source& __src)
  	{
  	  typedef _UMContInvalidatePred<_ExtractKey, _Source> _InvalidatePred;
  	  return _UContMergeGuard<_Source, _InvalidatePred>(__src);
  	}
! #endif // C++17
  
-     public:
        void
        _M_invalidate_all()
        {
  	auto __end = _M_cont()._M_base().cend();
! 	this->_M_invalidate_if([__end](__decltype(__end) __it)
! 			       { return __it != __end; });
! 	_M_invalidate_locals();
        }
  
        /** Invalidates all iterators @c x that reference this container,
  	  are not singular, and for which @c __pred(x) returns @c
  	  true. @c __pred will be invoked with the normal iterators nested
  	  in the safe ones. */
        template<typename _Predicate>
  	void
! 	_M_invalidate_if(_Predicate __pred);
  
        /** Invalidates all local iterators @c x that reference this container,
  	  are not singular, and for which @c __pred(x) returns @c
--- 159,230 ----
        template<typename _ExtractKey, typename _Source>
  	static _UContMergeGuard<_Source,
  				_UMContInvalidatePred<_ExtractKey, _Source>>
! 	_S_umc_guard(_ExtractKey, _Safe_unordered_container<_Source>& __src)
  	{
  	  typedef _UMContInvalidatePred<_ExtractKey, _Source> _InvalidatePred;
  	  return _UContMergeGuard<_Source, _InvalidatePred>(__src);
  	}
! #endif // >= C++17 && HOSTED
  
        void
        _M_invalidate_all()
        {
+ 	__gnu_cxx::__scoped_lock sentry(_M_self()->_M_get_mutex());
  	auto __end = _M_cont()._M_base().cend();
! 	_M_invalidate_if(
! 	  [__end](decltype(__end) __it)
! 	  { return __it != __end; },
! 	  sentry);
! 
! 	auto __local_end = _M_cont()._M_base().cend(0);
! 	_M_invalidate_local_if(
! 	  [__local_end](decltype(__local_end) __it)
! 	  { return __it != __local_end; },
! 	  sentry);
        }
  
+       template<typename _Predicate>
+ 	void
+ 	_M_invalidate_all_if(_Predicate __pred)
+ 	{
+ 	  __gnu_cxx::__scoped_lock sentry(_M_self()->_M_get_mutex());
+ 	  _M_invalidate_if(__pred, sentry);
+ 	  _M_invalidate_local_if(__pred, sentry);
+ 	}
+ 
+       template<typename _VictimIt>
+ 	void
+ 	_M_invalidate(_VictimIt __victim)
+ 	{
+ 	  __gnu_cxx::__scoped_lock sentry(_M_self()->_M_get_mutex());
+ 	  _M_invalidate(__victim, sentry);
+ 	}
+ 
+       template<typename _VictimIt>
+ 	void
+ 	_M_invalidate(_VictimIt __victim, const __gnu_cxx::__scoped_lock& __lock)
+ 	{
+ 	  auto __end = _M_cont()._M_base().cend();
+ 	  _M_invalidate_if(
+ 	    [__victim](decltype(__end) __it)
+ 	    { return __it == __victim; },
+ 	    __lock);
+ 
+ 	  auto __local_end = _M_cont()._M_base().cend(0);
+ 	  _M_invalidate_local_if(
+ 	    [__victim](decltype(__local_end) __it)
+ 	    { return __it == __victim; },
+ 	    __lock);
+ 	}
+ 
+     private:
        /** Invalidates all iterators @c x that reference this container,
  	  are not singular, and for which @c __pred(x) returns @c
  	  true. @c __pred will be invoked with the normal iterators nested
  	  in the safe ones. */
        template<typename _Predicate>
  	void
! 	_M_invalidate_if(_Predicate __pred, const __gnu_cxx::__scoped_lock&);
  
        /** Invalidates all local iterators @c x that reference this container,
  	  are not singular, and for which @c __pred(x) returns @c
*************** namespace __gnu_debug
*** 189,195 ****
  	  nested in the safe ones. */
        template<typename _Predicate>
  	void
! 	_M_invalidate_local_if(_Predicate __pred);
      };
  } // namespace __gnu_debug
  
--- 232,239 ----
  	  nested in the safe ones. */
        template<typename _Predicate>
  	void
! 	_M_invalidate_local_if(_Predicate __pred,
! 			       const __gnu_cxx::__scoped_lock&);
      };
  } // namespace __gnu_debug
  
diff -Nrcpad gcc-16-20260301/libstdc++-v3/include/debug/safe_unordered_container.tcc gcc-16-20260308/libstdc++-v3/include/debug/safe_unordered_container.tcc
*** gcc-16-20260301/libstdc++-v3/include/debug/safe_unordered_container.tcc	Sun Mar  1 22:32:20 2026
--- gcc-16-20260308/libstdc++-v3/include/debug/safe_unordered_container.tcc	Sun Mar  8 22:32:15 2026
*************** namespace __gnu_debug
*** 35,46 ****
      template<typename _Predicate>
        void
        _Safe_unordered_container<_Container>::
!       _M_invalidate_if(_Predicate __pred)
        {
  	typedef typename _Container::iterator iterator;
  	typedef typename _Container::const_iterator const_iterator;
  
- 	__gnu_cxx::__scoped_lock sentry(_M_self()->_M_get_mutex());
  	for (_Safe_iterator_base* __iter = _M_iterators; __iter;)
  	  {
  	    iterator* __victim = static_cast<iterator*>(__iter);
--- 35,45 ----
      template<typename _Predicate>
        void
        _Safe_unordered_container<_Container>::
!       _M_invalidate_if(_Predicate __pred, const __gnu_cxx::__scoped_lock&)
        {
  	typedef typename _Container::iterator iterator;
  	typedef typename _Container::const_iterator const_iterator;
  
  	for (_Safe_iterator_base* __iter = _M_iterators; __iter;)
  	  {
  	    iterator* __victim = static_cast<iterator*>(__iter);
*************** namespace __gnu_debug
*** 67,78 ****
      template<typename _Predicate>
        void
        _Safe_unordered_container<_Container>::
!       _M_invalidate_local_if(_Predicate __pred)
        {
  	typedef typename _Container::local_iterator local_iterator;
  	typedef typename _Container::const_local_iterator const_local_iterator;
  
- 	__gnu_cxx::__scoped_lock sentry(_M_self()->_M_get_mutex());
  	for (_Safe_iterator_base* __iter = _M_local_iterators; __iter;)
  	  {
  	    local_iterator* __victim = static_cast<local_iterator*>(__iter);
--- 66,76 ----
      template<typename _Predicate>
        void
        _Safe_unordered_container<_Container>::
!       _M_invalidate_local_if(_Predicate __pred, const __gnu_cxx::__scoped_lock&)
        {
  	typedef typename _Container::local_iterator local_iterator;
  	typedef typename _Container::const_local_iterator const_local_iterator;
  
  	for (_Safe_iterator_base* __iter = _M_local_iterators; __iter;)
  	  {
  	    local_iterator* __victim = static_cast<local_iterator*>(__iter);
diff -Nrcpad gcc-16-20260301/libstdc++-v3/include/debug/set.h gcc-16-20260308/libstdc++-v3/include/debug/set.h
*** gcc-16-20260301/libstdc++-v3/include/debug/set.h	Sun Mar  1 22:32:20 2026
--- gcc-16-20260308/libstdc++-v3/include/debug/set.h	Sun Mar  8 22:32:15 2026
*************** namespace __debug
*** 283,288 ****
--- 283,298 ----
        }
  #endif
  
+ #ifdef __glibcxx_associative_heterogeneous_insertion
+       template <__heterogeneous_tree_key<set> _Kt>
+ 	std::pair<iterator, bool>
+ 	insert(_Kt&& __x)
+ 	{
+ 	  auto __res = _Base::insert(std::forward<_Kt>(__x));
+ 	  return { { __res.first, this }, __res.second };
+ 	}
+ #endif
+ 
        iterator
        insert(const_iterator __position, const value_type& __x)
        {
*************** namespace __debug
*** 299,304 ****
--- 309,325 ----
        }
  #endif
  
+ #ifdef __glibcxx_associative_heterogeneous_insertion
+       template <__heterogeneous_tree_key<set> _Kt>
+ 	iterator
+ 	insert(const_iterator __position, _Kt&& __x)
+ 	{
+ 	  __glibcxx_check_insert(__position);
+ 	  auto __it = _Base::insert(__position.base(), std::forward<_Kt>(__x));
+ 	  return { __it, this };
+ 	}
+ #endif
+ 
        template <typename _InputIterator>
  	void
  	insert(_InputIterator __first, _InputIterator __last)
diff -Nrcpad gcc-16-20260301/libstdc++-v3/include/debug/unordered_map gcc-16-20260308/libstdc++-v3/include/debug/unordered_map
*** gcc-16-20260301/libstdc++-v3/include/debug/unordered_map	Sun Mar  1 22:32:20 2026
--- gcc-16-20260308/libstdc++-v3/include/debug/unordered_map	Sun Mar  8 22:32:15 2026
*************** namespace __debug
*** 500,505 ****
--- 500,516 ----
  	  return { { __res.first, this }, __res.second };
  	}
  
+ # ifdef __glibcxx_associative_heterogeneous_insertion
+       template <__heterogeneous_hash_key<unordered_map> _Kt, typename... _Args>
+ 	pair<iterator, bool>
+ 	try_emplace(_Kt&& __k, _Args&&... __args)
+ 	{
+ 	  auto __res = _Base::try_emplace(std::forward<_Kt>(__k),
+ 	    std::forward<_Args>(__args)...);
+ 	  return { { __res.first, this }, __res.second };
+ 	}
+ # endif
+ 
        template <typename... _Args>
  	iterator
  	try_emplace(const_iterator __hint, const key_type& __k,
*************** namespace __debug
*** 516,525 ****
  	try_emplace(const_iterator __hint, key_type&& __k, _Args&&... __args)
  	{
  	  __glibcxx_check_insert(__hint);
! 	  return { _Base::try_emplace(__hint.base(), std::move(__k),
! 				      std::forward<_Args>(__args)...),
! 		   this };
  	}
  
        template <typename _Obj>
  	pair<iterator, bool>
--- 527,547 ----
  	try_emplace(const_iterator __hint, key_type&& __k, _Args&&... __args)
  	{
  	  __glibcxx_check_insert(__hint);
! 	  auto __it = _Base::try_emplace(__hint.base(), std::move(__k),
! 	    std::forward<_Args>(__args)...);
! 	  return { __it, this };
! 	}
! # ifdef __glibcxx_associative_heterogeneous_insertion
!       template <__heterogeneous_hash_key<unordered_map> _Kt, typename... _Args>
! 	iterator
! 	try_emplace(const_iterator __hint, _Kt&& __k, _Args&&... __args)
! 	{
! 	  __glibcxx_check_insert(__hint);
! 	  auto __it = _Base::try_emplace(__hint.base(),
! 	    std::forward<_Kt>(__k), std::forward<_Args>(__args)...);
! 	  return { __it, this };
  	}
+ # endif
  
        template <typename _Obj>
  	pair<iterator, bool>
*************** namespace __debug
*** 539,553 ****
  	  return { { __res.first, this }, __res.second };
  	}
  
        template <typename _Obj>
  	iterator
  	insert_or_assign(const_iterator __hint, const key_type& __k,
  			 _Obj&& __obj)
  	{
  	  __glibcxx_check_insert(__hint);
! 	  return { _Base::insert_or_assign(__hint.base(), __k,
! 					   std::forward<_Obj>(__obj)),
! 		   this };
  	}
  
        template <typename _Obj>
--- 561,586 ----
  	  return { { __res.first, this }, __res.second };
  	}
  
+ # ifdef __glibcxx_associative_heterogeneous_insertion
+       template <__heterogeneous_hash_key<unordered_map> _Kt, typename _Obj>
+ 	pair<iterator, bool>
+ 	insert_or_assign(_Kt&& __k, _Obj&& __obj)
+ 	{
+ 	  auto __res = _Base::insert_or_assign(
+ 	    std::forward<_Kt>(__k), std::forward<_Obj>(__obj));
+ 	  return { { __res.first, this }, __res.second };
+ 	}
+ # endif
+ 
        template <typename _Obj>
  	iterator
  	insert_or_assign(const_iterator __hint, const key_type& __k,
  			 _Obj&& __obj)
  	{
  	  __glibcxx_check_insert(__hint);
! 	  auto __it = _Base::insert_or_assign(__hint.base(), __k,
! 	    std::forward<_Obj>(__obj));
! 	  return { __it, this };
  	}
  
        template <typename _Obj>
*************** namespace __debug
*** 555,564 ****
  	insert_or_assign(const_iterator __hint, key_type&& __k, _Obj&& __obj)
  	{
  	  __glibcxx_check_insert(__hint);
! 	  return { _Base::insert_or_assign(__hint.base(), std::move(__k),
! 					   std::forward<_Obj>(__obj)),
! 		   this };
  	}
  #endif // C++17
  
  #ifdef __glibcxx_node_extract // >= C++17 && HOSTED
--- 588,610 ----
  	insert_or_assign(const_iterator __hint, key_type&& __k, _Obj&& __obj)
  	{
  	  __glibcxx_check_insert(__hint);
! 	  auto __it = _Base::insert_or_assign(__hint.base(), std::move(__k),
! 	    std::forward<_Obj>(__obj));
! 	  return { __it, this };
! 	}
! 
! # ifdef __glibcxx_associative_heterogeneous_insertion
!       template <__heterogeneous_hash_key<unordered_map> _Kt, typename _Obj>
! 	iterator
! 	insert_or_assign(const_iterator __hint, _Kt&& __k, _Obj&& __obj)
! 	{
! 	  __glibcxx_check_insert(__hint);
! 	  auto __it = _Base::insert_or_assign(__hint.base(),
! 	    std::forward<_Kt>(__k), std::forward<_Obj>(__obj));
! 	  return { __it, this };
  	}
+ # endif
+ 
  #endif // C++17
  
  #ifdef __glibcxx_node_extract // >= C++17 && HOSTED
*************** namespace __debug
*** 762,779 ****
        erase(const_iterator __first, const_iterator __last)
        {
  	__glibcxx_check_erase_range(__first, __last);
! 	for (auto __tmp = __first.base(); __tmp != __last.base(); ++__tmp)
! 	  {
! 	    _GLIBCXX_DEBUG_VERIFY(__tmp != _Base::cend(),
! 				  _M_message(__gnu_debug::__msg_valid_range)
! 				  ._M_iterator(__first, "first")
! 				  ._M_iterator(__last, "last"));
! 	    _M_invalidate(__tmp);
! 	  }
  
- 	size_type __bucket_count = this->bucket_count();
  	auto __next = _Base::erase(__first.base(), __last.base());
- 	_M_check_rehashed(__bucket_count);
  	return { __next, this };
        }
  
--- 808,826 ----
        erase(const_iterator __first, const_iterator __last)
        {
  	__glibcxx_check_erase_range(__first, __last);
! 	{
! 	  __gnu_cxx::__scoped_lock sentry(_M_self()->_M_get_mutex());
! 	  for (auto __tmp = __first.base(); __tmp != __last.base(); ++__tmp)
! 	    {
! 	      _GLIBCXX_DEBUG_VERIFY(__tmp != _Base::cend(),
! 				    _M_message(__gnu_debug::__msg_valid_range)
! 				    ._M_iterator(__first, "first")
! 				    ._M_iterator(__last, "last"));
! 	      this->_M_invalidate(__tmp, sentry);
! 	    }
! 	}
  
  	auto __next = _Base::erase(__first.base(), __last.base());
  	return { __next, this };
        }
  
*************** namespace __debug
*** 787,792 ****
--- 834,843 ----
        _M_base() const noexcept	{ return *this; }
  
      private:
+       const unordered_map*
+       _M_self() const noexcept
+       { return this; }
+ 
        void
        _M_check_rehashed(size_type __prev_count)
        {
*************** namespace __debug
*** 794,824 ****
  	  this->_M_invalidate_all();
        }
  
-       void
-       _M_invalidate(_Base_const_iterator __victim)
-       {
- 	this->_M_invalidate_if(
- 	  [__victim](_Base_const_iterator __it) { return __it == __victim; });
- 	this->_M_invalidate_local_if(
- 	  [__victim](_Base_const_local_iterator __it)
- 	  { return __it == __victim; });
-       }
- 
        _Base_iterator
        _M_erase(_Base_const_iterator __victim)
        {
! 	_M_invalidate(__victim);
! 	size_type __bucket_count = this->bucket_count();
! 	_Base_iterator __next = _Base::erase(__victim);
! 	_M_check_rehashed(__bucket_count);
! 	return __next;
        }
  
  #ifdef __glibcxx_node_extract // >= C++17 && HOSTED
        node_type
        _M_extract(_Base_const_iterator __victim)
        {
! 	_M_invalidate(__victim);
  	return _Base::extract(__victim);
        }
  #endif
--- 845,862 ----
  	  this->_M_invalidate_all();
        }
  
        _Base_iterator
        _M_erase(_Base_const_iterator __victim)
        {
! 	this->_M_invalidate(__victim);
! 	return _Base::erase(__victim);
        }
  
  #ifdef __glibcxx_node_extract // >= C++17 && HOSTED
        node_type
        _M_extract(_Base_const_iterator __victim)
        {
! 	this->_M_invalidate(__victim);
  	return _Base::extract(__victim);
        }
  #endif
*************** namespace __debug
*** 1532,1549 ****
        size_type
        erase(const key_type& __key)
        {
! 	size_type __ret(0);
! 	size_type __bucket_count = this->bucket_count();
! 	auto __pair = _Base::equal_range(__key);
! 	for (auto __victim = __pair.first; __victim != __pair.second;)
! 	  {
! 	    _M_invalidate(__victim);
! 	    __victim = _Base::erase(__victim);
! 	    ++__ret;
! 	  }
! 
! 	_M_check_rehashed(__bucket_count);
! 	return __ret;
        }
  
  # ifdef __glibcxx_associative_heterogeneous_erasure
--- 1570,1577 ----
        size_type
        erase(const key_type& __key)
        {
! 	auto __victims = _Base::equal_range(__key);
! 	return _M_erase(__victims.first, __victims.second);
        }
  
  # ifdef __glibcxx_associative_heterogeneous_erasure
*************** namespace __debug
*** 1551,1565 ****
  	size_type
  	erase(_Kt&& __key)
  	{
- 	  size_type __count(0);
  	  auto __victims = _Base::equal_range(__key);
! 	  for (auto __victim = __victims.first; __victim != __victims.second;)
! 	    {
! 	      _M_invalidate(__victim);
! 	      __victim = _Base::erase(__victim);
! 	      ++__count;
! 	    }
! 	  return __count;
  	}
  #endif
  
--- 1579,1586 ----
  	size_type
  	erase(_Kt&& __key)
  	{
  	  auto __victims = _Base::equal_range(__key);
! 	  return _M_erase(__victims.first, __victims.second);
  	}
  #endif
  
*************** namespace __debug
*** 1588,1605 ****
        erase(const_iterator __first, const_iterator __last)
        {
  	__glibcxx_check_erase_range(__first, __last);
! 	for (auto __tmp = __first.base(); __tmp != __last.base(); ++__tmp)
! 	  {
! 	    _GLIBCXX_DEBUG_VERIFY(__tmp != _Base::cend(),
! 				  _M_message(__gnu_debug::__msg_valid_range)
! 				  ._M_iterator(__first, "first")
! 				  ._M_iterator(__last, "last"));
! 	    _M_invalidate(__tmp);
! 	  }
  
- 	size_type __bucket_count = this->bucket_count();
  	auto __next = _Base::erase(__first.base(), __last.base());
- 	_M_check_rehashed(__bucket_count);
  	return { __next, this };
        }
  
--- 1609,1627 ----
        erase(const_iterator __first, const_iterator __last)
        {
  	__glibcxx_check_erase_range(__first, __last);
! 	{
! 	  __gnu_cxx::__scoped_lock sentry(_M_self()->_M_get_mutex());
! 	  for (auto __tmp = __first.base(); __tmp != __last.base(); ++__tmp)
! 	    {
! 	      _GLIBCXX_DEBUG_VERIFY(__tmp != _Base::cend(),
! 				    _M_message(__gnu_debug::__msg_valid_range)
! 				    ._M_iterator(__first, "first")
! 				    ._M_iterator(__last, "last"));
! 	      this->_M_invalidate(__tmp, sentry);
! 	    }
! 	}
  
  	auto __next = _Base::erase(__first.base(), __last.base());
  	return { __next, this };
        }
  
*************** namespace __debug
*** 1613,1618 ****
--- 1635,1644 ----
        _M_base() const noexcept { return *this; }
  
      private:
+       const unordered_multimap*
+       _M_self() const noexcept
+       { return this; }
+ 
        void
        _M_check_rehashed(size_type __prev_count)
        {
*************** namespace __debug
*** 1620,1650 ****
  	  this->_M_invalidate_all();
        }
  
!       void
!       _M_invalidate(_Base_const_iterator __victim)
        {
! 	this->_M_invalidate_if(
! 	  [__victim](_Base_const_iterator __it) { return __it == __victim; });
! 	this->_M_invalidate_local_if(
! 	  [__victim](_Base_const_local_iterator __it)
! 	  { return __it == __victim; });
        }
  
!       _Base_iterator
!       _M_erase(_Base_const_iterator __victim)
        {
! 	_M_invalidate(__victim);
! 	size_type __bucket_count = this->bucket_count();
! 	_Base_iterator __next = _Base::erase(__victim);
! 	_M_check_rehashed(__bucket_count);
! 	return __next;
        }
  
  #ifdef __glibcxx_node_extract // >= C++17 && HOSTED
        node_type
        _M_extract(_Base_const_iterator __victim)
        {
! 	_M_invalidate(__victim);
  	return _Base::extract(__victim);
        }
  #endif
--- 1646,1680 ----
  	  this->_M_invalidate_all();
        }
  
!       _Base_iterator
!       _M_erase(_Base_const_iterator __victim)
        {
! 	this->_M_invalidate(__victim);
! 	return _Base::erase(__victim);
        }
  
!       size_type
!       _M_erase(_Base_iterator __first, _Base_iterator __last)
        {
! 	size_type __ret(0);
! 	{
! 	  __gnu_cxx::__scoped_lock sentry(_M_self()->_M_get_mutex());
! 	  for (auto __victim = __first; __victim != __last; ++__victim)
! 	    {
! 	      this->_M_invalidate(__victim, sentry);
! 	      ++__ret;
! 	    }
! 	}
! 
! 	_Base::erase(__first, __last);
! 	return __ret;
        }
  
  #ifdef __glibcxx_node_extract // >= C++17 && HOSTED
        node_type
        _M_extract(_Base_const_iterator __victim)
        {
! 	this->_M_invalidate(__victim);
  	return _Base::extract(__victim);
        }
  #endif
diff -Nrcpad gcc-16-20260301/libstdc++-v3/include/debug/unordered_set gcc-16-20260308/libstdc++-v3/include/debug/unordered_set
*** gcc-16-20260301/libstdc++-v3/include/debug/unordered_set	Sun Mar  1 22:32:20 2026
--- gcc-16-20260308/libstdc++-v3/include/debug/unordered_set	Sun Mar  8 22:32:15 2026
*************** namespace __debug
*** 413,418 ****
--- 413,430 ----
  	return { { __res.first, this }, __res.second };
        }
  
+ # ifdef __glibcxx_associative_heterogeneous_insertion
+       template <__heterogeneous_hash_key<unordered_set> _Kt>
+ 	std::pair<iterator, bool>
+ 	insert(_Kt&& __obj)
+ 	{
+ 	  size_type __bucket_count = this->bucket_count();
+ 	  auto __res = _Base::insert(std::forward<_Kt>(__obj));
+ 	  _M_check_rehashed(__bucket_count);
+ 	  return { { __res.first, this }, __res.second };
+ 	}
+ #endif
+ 
        iterator
        insert(const_iterator __hint, value_type&& __obj)
        {
*************** namespace __debug
*** 423,428 ****
--- 435,454 ----
  	return { __it, this };
        }
  
+ # ifdef __glibcxx_associative_heterogeneous_insertion
+       template <__heterogeneous_hash_key<unordered_set> _Kt>
+ 	iterator
+ 	insert(const_iterator __hint, _Kt&& __obj)
+ 	{
+ 	  __glibcxx_check_insert(__hint);
+ 	  size_type __bucket_count = this->bucket_count();
+ 	  auto __it = _Base::insert(
+ 	    __hint.base(), std::forward<_Kt>(__obj));
+ 	  _M_check_rehashed(__bucket_count);
+ 	  return { __it, this };
+ 	}
+ #endif
+ 
        void
        insert(std::initializer_list<value_type> __l)
        {
*************** namespace __debug
*** 647,664 ****
        erase(const_iterator __first, const_iterator __last)
        {
  	__glibcxx_check_erase_range(__first, __last);
! 	for (auto __tmp = __first.base(); __tmp != __last.base(); ++__tmp)
! 	  {
! 	    _GLIBCXX_DEBUG_VERIFY(__tmp != _Base::cend(),
! 				  _M_message(__gnu_debug::__msg_valid_range)
! 				  ._M_iterator(__first, "first")
! 				  ._M_iterator(__last, "last"));
! 	    _M_invalidate(__tmp);
! 	  }
  
- 	size_type __bucket_count = this->bucket_count();
  	auto __next = _Base::erase(__first.base(), __last.base());
- 	_M_check_rehashed(__bucket_count);
  	return { __next, this };
        }
  
--- 673,691 ----
        erase(const_iterator __first, const_iterator __last)
        {
  	__glibcxx_check_erase_range(__first, __last);
! 	{
! 	  __gnu_cxx::__scoped_lock sentry(_M_self()->_M_get_mutex());
! 	  for (auto __tmp = __first.base(); __tmp != __last.base(); ++__tmp)
! 	    {
! 	      _GLIBCXX_DEBUG_VERIFY(__tmp != _Base::cend(),
! 				    _M_message(__gnu_debug::__msg_valid_range)
! 				    ._M_iterator(__first, "first")
! 				    ._M_iterator(__last, "last"));
! 	      this->_M_invalidate(__tmp, sentry);
! 	    }
! 	}
  
  	auto __next = _Base::erase(__first.base(), __last.base());
  	return { __next, this };
        }
  
*************** namespace __debug
*** 669,674 ****
--- 696,705 ----
        _M_base() const noexcept { return *this; }
  
      private:
+       const unordered_set*
+       _M_self() const noexcept
+       { return this; }
+ 
        void
        _M_check_rehashed(size_type __prev_count)
        {
*************** namespace __debug
*** 676,706 ****
  	  this->_M_invalidate_all();
        }
  
-       void
-       _M_invalidate(_Base_const_iterator __victim)
-       {
- 	this->_M_invalidate_if(
- 	  [__victim](_Base_const_iterator __it) { return __it == __victim; });
- 	this->_M_invalidate_local_if(
- 	  [__victim](_Base_const_local_iterator __it)
- 	  { return __it == __victim; });
-       }
- 
        _Base_iterator
        _M_erase(_Base_const_iterator __victim)
        {
! 	_M_invalidate(__victim);
! 	size_type __bucket_count = this->bucket_count();
! 	_Base_iterator __next = _Base::erase(__victim);
! 	_M_check_rehashed(__bucket_count);
! 	return __next;
        }
  
  #ifdef __glibcxx_node_extract // >= C++17 && HOSTED
        node_type
        _M_extract(_Base_const_iterator __victim)
        {
! 	_M_invalidate(__victim);
  	return _Base::extract(__victim);
        }
  #endif
--- 707,724 ----
  	  this->_M_invalidate_all();
        }
  
        _Base_iterator
        _M_erase(_Base_const_iterator __victim)
        {
! 	this->_M_invalidate(__victim);
! 	return _Base::erase(__victim);
        }
  
  #ifdef __glibcxx_node_extract // >= C++17 && HOSTED
        node_type
        _M_extract(_Base_const_iterator __victim)
        {
! 	this->_M_invalidate(__victim);
  	return _Base::extract(__victim);
        }
  #endif
*************** namespace __debug
*** 1353,1367 ****
        size_type
        erase(const key_type& __key)
        {
- 	size_type __count(0);
  	auto __victims = _Base::equal_range(__key);
! 	for (auto __victim = __victims.first; __victim != __victims.second;)
! 	  {
! 	    _M_invalidate(__victim);
! 	    __victim = _Base::erase(__victim);
! 	    ++__count;
! 	  }
! 	return __count;
        }
  
  # ifdef __glibcxx_associative_heterogeneous_erasure
--- 1371,1378 ----
        size_type
        erase(const key_type& __key)
        {
  	auto __victims = _Base::equal_range(__key);
! 	return _M_erase(__victims.first, __victims.second);
        }
  
  # ifdef __glibcxx_associative_heterogeneous_erasure
*************** namespace __debug
*** 1369,1383 ****
  	size_type
  	erase(_Kt&& __key)
  	{
- 	  size_type __count(0);
  	  auto __victims = _Base::equal_range(__key);
! 	  for (auto __victim = __victims.first; __victim != __victims.second;)
! 	    {
! 	      _M_invalidate(__victim);
! 	      __victim = _Base::erase(__victim);
! 	      ++__count;
! 	    }
! 	  return __count;
  	}
  #endif
  
--- 1380,1387 ----
  	size_type
  	erase(_Kt&& __key)
  	{
  	  auto __victims = _Base::equal_range(__key);
! 	  return _M_erase(__victims.first, __victims.second);
  	}
  #endif
  
*************** namespace __debug
*** 1406,1419 ****
        erase(const_iterator __first, const_iterator __last)
        {
  	__glibcxx_check_erase_range(__first, __last);
! 	for (auto __tmp = __first.base(); __tmp != __last.base(); ++__tmp)
! 	  {
! 	    _GLIBCXX_DEBUG_VERIFY(__tmp != _Base::cend(),
! 				  _M_message(__gnu_debug::__msg_valid_range)
! 				  ._M_iterator(__first, "first")
! 				  ._M_iterator(__last, "last"));
! 	    _M_invalidate(__tmp);
! 	  }
  	return { _Base::erase(__first.base(), __last.base()), this };
        }
  
--- 1410,1427 ----
        erase(const_iterator __first, const_iterator __last)
        {
  	__glibcxx_check_erase_range(__first, __last);
! 	{
! 	  __gnu_cxx::__scoped_lock sentry(_M_self()->_M_get_mutex());
! 	  for (auto __tmp = __first.base(); __tmp != __last.base(); ++__tmp)
! 	    {
! 	      _GLIBCXX_DEBUG_VERIFY(__tmp != _Base::cend(),
! 				    _M_message(__gnu_debug::__msg_valid_range)
! 				    ._M_iterator(__first, "first")
! 				    ._M_iterator(__last, "last"));
! 	      this->_M_invalidate(__tmp, sentry);
! 	    }
! 	}
! 
  	return { _Base::erase(__first.base(), __last.base()), this };
        }
  
*************** namespace __debug
*** 1424,1429 ****
--- 1432,1441 ----
        _M_base() const noexcept	{ return *this; }
  
      private:
+       const unordered_multiset*
+       _M_self() const noexcept
+       { return this; }
+ 
        void
        _M_check_rehashed(size_type __prev_count)
        {
*************** namespace __debug
*** 1431,1461 ****
  	  this->_M_invalidate_all();
        }
  
!       void
!       _M_invalidate(_Base_const_iterator __victim)
        {
! 	this->_M_invalidate_if(
! 	  [__victim](_Base_const_iterator __it) { return __it == __victim; });
! 	this->_M_invalidate_local_if(
! 	  [__victim](_Base_const_local_iterator __it)
! 	  { return __it == __victim; });
        }
  
!       _Base_iterator
!       _M_erase(_Base_const_iterator __victim)
        {
! 	_M_invalidate(__victim);
! 	size_type __bucket_count = this->bucket_count();
! 	_Base_iterator __next = _Base::erase(__victim);
! 	_M_check_rehashed(__bucket_count);
! 	return __next;
        }
  
  #ifdef __glibcxx_node_extract // >= C++17 && HOSTED
        node_type
        _M_extract(_Base_const_iterator __victim)
        {
! 	_M_invalidate(__victim);
  	return _Base::extract(__victim);
        }
  #endif
--- 1443,1477 ----
  	  this->_M_invalidate_all();
        }
  
!       _Base_iterator
!       _M_erase(_Base_const_iterator __victim)
        {
! 	this->_M_invalidate(__victim);
! 	return _Base::erase(__victim);
        }
  
!       size_type
!       _M_erase(_Base_iterator __first, _Base_iterator __last)
        {
! 	size_type __count(0);
! 	{
! 	  __gnu_cxx::__scoped_lock sentry(_M_self()->_M_get_mutex());
! 	  for (auto __victim = __first; __victim != __last; ++__victim)
! 	    {
! 	      this->_M_invalidate(__victim, sentry);
! 	      ++__count;
! 	    }
! 	}
! 
! 	_Base::erase(__first, __last);
! 	return __count;
        }
  
  #ifdef __glibcxx_node_extract // >= C++17 && HOSTED
        node_type
        _M_extract(_Base_const_iterator __victim)
        {
! 	this->_M_invalidate(__victim);
  	return _Base::extract(__victim);
        }
  #endif
diff -Nrcpad gcc-16-20260301/libstdc++-v3/include/std/atomic gcc-16-20260308/libstdc++-v3/include/std/atomic
*** gcc-16-20260301/libstdc++-v3/include/std/atomic	Sun Mar  1 22:32:20 2026
--- gcc-16-20260308/libstdc++-v3/include/std/atomic	Sun Mar  8 22:32:15 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 664,682 ****
        }
  
  #if __cpp_lib_atomic_wait
!     void
!     wait(__pointer_type __old, memory_order __m = memory_order_seq_cst) const noexcept
!     { _M_b.wait(__old, __m); }
  
!     // TODO add const volatile overload
  
!     void
!     notify_one() noexcept
!     { _M_b.notify_one(); }
  
!     void
!     notify_all() noexcept
!     { _M_b.notify_all(); }
  #endif // __cpp_lib_atomic_wait
  
        __pointer_type
--- 664,683 ----
        }
  
  #if __cpp_lib_atomic_wait
!       void
!       wait(__pointer_type __old,
! 	   memory_order __m = memory_order_seq_cst) const noexcept
!       { _M_b.wait(__old, __m); }
  
!       // TODO add const volatile overload
  
!       void
!       notify_one() noexcept
!       { _M_b.notify_one(); }
  
!       void
!       notify_all() noexcept
!       { _M_b.notify_all(); }
  #endif // __cpp_lib_atomic_wait
  
        __pointer_type
diff -Nrcpad gcc-16-20260301/libstdc++-v3/include/std/bitset gcc-16-20260308/libstdc++-v3/include/std/bitset
*** gcc-16-20260301/libstdc++-v3/include/std/bitset	Sun Mar  1 22:32:20 2026
--- gcc-16-20260308/libstdc++-v3/include/std/bitset	Sun Mar  8 22:32:15 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1290,1300 ****
        _GLIBCXX23_CONSTEXPR
        reference
        operator[](size_t __position)
!       { return reference(*this, __position); }
  
        _GLIBCXX_CONSTEXPR bool
        operator[](size_t __position) const
!       { return _Unchecked_test(__position); }
        ///@}
  
        /**
--- 1290,1314 ----
        _GLIBCXX23_CONSTEXPR
        reference
        operator[](size_t __position)
!       {
! 	__glibcxx_assert(__position < _Nb);
! 	return reference(*this, __position);
!       }
  
        _GLIBCXX_CONSTEXPR bool
        operator[](size_t __position) const
!       {
! #if __cplusplus != 201103L
! 	__glibcxx_assert(__position < _Nb);
! 	return _Unchecked_test(__position);
! #elif defined(_GLIBCXX_ASSERTIONS)
! 	// C++11 forbids a compound stmt in a constexpr function.
! 	return __position < _Nb ? _Unchecked_test(__position)
! 	  : (__builtin_trap(), false);
! #else
! 	return _Unchecked_test(__position);
! #endif
!       }
        ///@}
  
        /**
diff -Nrcpad gcc-16-20260301/libstdc++-v3/include/std/expected gcc-16-20260308/libstdc++-v3/include/std/expected
*** gcc-16-20260301/libstdc++-v3/include/std/expected	Sun Mar  1 22:32:20 2026
--- gcc-16-20260308/libstdc++-v3/include/std/expected	Sun Mar  8 22:32:15 2026
*************** namespace __expected
*** 367,373 ****
  /// @endcond
  
    template<typename _Tp, typename _Er>
!     class expected
      {
        static_assert( ! is_reference_v<_Tp> );
        static_assert( ! is_function_v<_Tp> );
--- 367,373 ----
  /// @endcond
  
    template<typename _Tp, typename _Er>
!     class [[nodiscard]] expected
      {
        static_assert( ! is_reference_v<_Tp> );
        static_assert( ! is_function_v<_Tp> );
*************** namespace __expected
*** 1360,1366 ****
  
    // Partial specialization for std::expected<cv void, E>
    template<typename _Tp, typename _Er> requires is_void_v<_Tp>
!     class expected<_Tp, _Er>
      {
        static_assert( __expected::__can_be_unexpected<_Er> );
  
--- 1360,1366 ----
  
    // Partial specialization for std::expected<cv void, E>
    template<typename _Tp, typename _Er> requires is_void_v<_Tp>
!     class [[nodiscard]] expected<_Tp, _Er>
      {
        static_assert( __expected::__can_be_unexpected<_Er> );
  
diff -Nrcpad gcc-16-20260301/libstdc++-v3/include/std/format gcc-16-20260308/libstdc++-v3/include/std/format
*** gcc-16-20260301/libstdc++-v3/include/std/format	Sun Mar  1 22:32:20 2026
--- gcc-16-20260308/libstdc++-v3/include/std/format	Sun Mar  8 22:32:15 2026
*************** namespace __format
*** 4113,4122 ****
      {
        using _CharT = typename _Context::char_type;
  
!       struct _HandleBase
        {
  	const void* _M_ptr;
! 	void (*_M_func)();
        };
  
        union
--- 4113,4164 ----
      {
        using _CharT = typename _Context::char_type;
  
!       class handle
        {
+ 	using _CharT = typename _Context::char_type;
+ 	using _Func = void(*)(basic_format_parse_context<_CharT>&,
+ 			      _Context&, const void*);
+ 
+ 	// Format as const if possible, to reduce instantiations.
+ 	template<typename _Tp>
+ 	  using __maybe_const_t
+ 	    = __conditional_t<__formattable_with<const _Tp, _Context>,
+ 			      const _Tp, _Tp>;
+ 
+ 	template<typename _Tq>
+ 	  static void
+ 	  _S_format(basic_format_parse_context<_CharT>& __parse_ctx,
+ 		    _Context& __format_ctx, const void* __ptr)
+ 	  {
+ 	    using _Td = remove_const_t<_Tq>;
+ 	    typename _Context::template formatter_type<_Td> __f;
+ 	    __parse_ctx.advance_to(__f.parse(__parse_ctx));
+ 	    _Tq& __val = *const_cast<_Tq*>(static_cast<const _Td*>(__ptr));
+ 	    __format_ctx.advance_to(__f.format(__val, __format_ctx));
+ 	  }
+ 
+ 	template<typename _Tp>
+ 	  requires (!is_same_v<remove_cv_t<_Tp>, handle>)
+ 	  explicit
+ 	  handle(_Tp& __val) noexcept
+ 	  : _M_ptr(__builtin_addressof(__val))
+ 	  , _M_func(&_S_format<__maybe_const_t<_Tp>>)
+ 	  { }
+ 
+ 	friend class basic_format_arg<_Context>;
+ 
+       public:
+ 	handle(const handle&) = default;
+ 	handle& operator=(const handle&) = default;
+ 
+ 	[[__gnu__::__always_inline__]]
+ 	void
+ 	format(basic_format_parse_context<_CharT>& __pc, _Context& __fc) const
+ 	{ _M_func(__pc, __fc, this->_M_ptr); }
+ 
+       private:
  	const void* _M_ptr;
! 	_Func _M_func;
        };
  
        union
*************** namespace __format
*** 4142,4148 ****
  	const _CharT* _M_str;
  	basic_string_view<_CharT> _M_sv;
  	const void* _M_ptr;
! 	_HandleBase _M_handle;
  #ifdef __SIZEOF_INT128__
  	__int128 _M_i128;
  	unsigned __int128 _M_u128;
--- 4184,4190 ----
  	const _CharT* _M_str;
  	basic_string_view<_CharT> _M_sv;
  	const void* _M_ptr;
! 	handle _M_handle;
  #ifdef __SIZEOF_INT128__
  	__int128 _M_i128;
  	unsigned __int128 _M_u128;
*************** namespace __format
*** 4170,4239 ****
  	{ _S_get<_Tp>() = __val; }
  #endif
  
!       template<typename _Tp, typename _Self>
  	[[__gnu__::__always_inline__]]
  	static auto&
! 	_S_get(_Self& __u) noexcept
  	{
  	  if constexpr (is_same_v<_Tp, bool>)
! 	    return __u._M_bool;
  	  else if constexpr (is_same_v<_Tp, _CharT>)
! 	    return __u._M_c;
  	  else if constexpr (is_same_v<_Tp, int>)
! 	    return __u._M_i;
  	  else if constexpr (is_same_v<_Tp, unsigned>)
! 	    return __u._M_u;
  	  else if constexpr (is_same_v<_Tp, long long>)
! 	    return __u._M_ll;
  	  else if constexpr (is_same_v<_Tp, unsigned long long>)
! 	    return __u._M_ull;
  	  else if constexpr (is_same_v<_Tp, float>)
! 	    return __u._M_flt;
  	  else if constexpr (is_same_v<_Tp, double>)
! 	    return __u._M_dbl;
  #ifndef _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT
  	  else if constexpr (is_same_v<_Tp, long double>)
! 	    return __u._M_ldbl;
  #else
  	  else if constexpr (is_same_v<_Tp, __ibm128>)
! 	    return __u._M_ibm128;
  	  else if constexpr (is_same_v<_Tp, __ieee128>)
! 	    return __u._M_ieee128;
  #endif
  #ifdef __SIZEOF_FLOAT128__
  	  else if constexpr (is_same_v<_Tp, __float128>)
! 	    return __u._M_float128;
  #endif
  	  else if constexpr (is_same_v<_Tp, const _CharT*>)
! 	    return __u._M_str;
  	  else if constexpr (is_same_v<_Tp, basic_string_view<_CharT>>)
! 	    return __u._M_sv;
  	  else if constexpr (is_same_v<_Tp, const void*>)
! 	    return __u._M_ptr;
  #ifdef __SIZEOF_INT128__
  	  else if constexpr (is_same_v<_Tp, __int128>)
! 	    return __u._M_i128;
  	  else if constexpr (is_same_v<_Tp, unsigned __int128>)
! 	    return __u._M_u128;
  #endif
  #ifdef __BFLT16_DIG__
  	  else if constexpr (is_same_v<_Tp, __bflt16_t>)
! 	    return __u._M_bf16;
  #endif
  #ifdef __FLT16_DIG__
  	  else if constexpr (is_same_v<_Tp, _Float16>)
! 	    return __u._M_f16;
  #endif
  #ifdef __FLT32_DIG__
  	  else if constexpr (is_same_v<_Tp, _Float32>)
! 	    return __u._M_f32;
  #endif
  #ifdef __FLT64_DIG__
  	  else if constexpr (is_same_v<_Tp, _Float64>)
! 	    return __u._M_f64;
  #endif
! 	  else if constexpr (derived_from<_Tp, _HandleBase>)
! 	    return static_cast<_Tp&>(__u._M_handle);
  	  // Otherwise, ill-formed.
  	}
  
--- 4212,4284 ----
  	{ _S_get<_Tp>() = __val; }
  #endif
  
!       // Returns reference to the _Arg_value member with the type _Tp.
!       // Value of second argument (if provided), is assigned to that member.
!       template<typename _Tp, typename _Self, typename... _Value>
  	[[__gnu__::__always_inline__]]
  	static auto&
! 	_S_access(_Self& __u, _Value... __value) noexcept
  	{
+ 	  static_assert(sizeof...(_Value) <= 1);
  	  if constexpr (is_same_v<_Tp, bool>)
! 	    return (__u._M_bool = ... = __value);
  	  else if constexpr (is_same_v<_Tp, _CharT>)
! 	    return (__u._M_c = ... = __value);
  	  else if constexpr (is_same_v<_Tp, int>)
! 	    return (__u._M_i = ... = __value);
  	  else if constexpr (is_same_v<_Tp, unsigned>)
! 	    return (__u._M_u = ... = __value);
  	  else if constexpr (is_same_v<_Tp, long long>)
! 	    return (__u._M_ll = ... = __value);
  	  else if constexpr (is_same_v<_Tp, unsigned long long>)
! 	    return (__u._M_ull = ... = __value);
  	  else if constexpr (is_same_v<_Tp, float>)
! 	    return (__u._M_flt = ... = __value);
  	  else if constexpr (is_same_v<_Tp, double>)
! 	    return (__u._M_dbl = ... = __value);
  #ifndef _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT
  	  else if constexpr (is_same_v<_Tp, long double>)
! 	    return (__u._M_ldbl = ... = __value);
  #else
  	  else if constexpr (is_same_v<_Tp, __ibm128>)
! 	    return (__u._M_ibm128 = ... = __value);
  	  else if constexpr (is_same_v<_Tp, __ieee128>)
! 	    return (__u._M_ieee128 = ... = __value);
  #endif
  #ifdef __SIZEOF_FLOAT128__
  	  else if constexpr (is_same_v<_Tp, __float128>)
! 	    return (__u._M_float128 = ... = __value);
  #endif
  	  else if constexpr (is_same_v<_Tp, const _CharT*>)
! 	    return (__u._M_str = ... = __value);
  	  else if constexpr (is_same_v<_Tp, basic_string_view<_CharT>>)
! 	    return (__u._M_sv = ... = __value);
  	  else if constexpr (is_same_v<_Tp, const void*>)
! 	    return (__u._M_ptr = ... = __value);
  #ifdef __SIZEOF_INT128__
  	  else if constexpr (is_same_v<_Tp, __int128>)
! 	    return (__u._M_i128 = ... = __value);
  	  else if constexpr (is_same_v<_Tp, unsigned __int128>)
! 	    return (__u._M_u128 = ... = __value);
  #endif
  #ifdef __BFLT16_DIG__
  	  else if constexpr (is_same_v<_Tp, __bflt16_t>)
! 	    return (__u._M_bf16 = ... = __value);
  #endif
  #ifdef __FLT16_DIG__
  	  else if constexpr (is_same_v<_Tp, _Float16>)
! 	    return (__u._M_f16 = ... = __value);
  #endif
  #ifdef __FLT32_DIG__
  	  else if constexpr (is_same_v<_Tp, _Float32>)
! 	    return (__u._M_f32 = ... = __value);
  #endif
  #ifdef __FLT64_DIG__
  	  else if constexpr (is_same_v<_Tp, _Float64>)
! 	    return (__u._M_f64 = ... = __value);
  #endif
! 	  else if constexpr (is_same_v<_Tp, handle>)
! 	    return __u._M_handle;
  	  // Otherwise, ill-formed.
  	}
  
*************** namespace __format
*** 4241,4263 ****
  	[[__gnu__::__always_inline__]]
  	auto&
  	_M_get() noexcept
! 	{ return _S_get<_Tp>(*this); }
  
        template<typename _Tp>
  	[[__gnu__::__always_inline__]]
  	const auto&
  	_M_get() const noexcept
! 	{ return _S_get<_Tp>(*this); }
  
        template<typename _Tp>
  	[[__gnu__::__always_inline__]]
  	void
  	_M_set(_Tp __v) noexcept
  	{
! 	  if constexpr (derived_from<_Tp, _HandleBase>)
  	    std::construct_at(&_M_handle, __v);
  	  else
! 	    _S_get<_Tp>(*this) = __v;
  	}
        };
  
--- 4286,4313 ----
  	[[__gnu__::__always_inline__]]
  	auto&
  	_M_get() noexcept
! 	{ return _S_access<_Tp>(*this); }
  
        template<typename _Tp>
  	[[__gnu__::__always_inline__]]
  	const auto&
  	_M_get() const noexcept
! 	{ return _S_access<_Tp>(*this); }
  
        template<typename _Tp>
  	[[__gnu__::__always_inline__]]
  	void
  	_M_set(_Tp __v) noexcept
  	{
! 	  // Explicitly construct types without trivial default constructor.
! 	  if constexpr (is_same_v<_Tp, basic_string_view<_CharT>>)
! 	    std::construct_at(&_M_sv, __v);
! 	  else if constexpr (is_same_v<_Tp, handle>)
  	    std::construct_at(&_M_handle, __v);
  	  else
! 	    // Builtin types are trivially default constructible, and assignment
! 	    // changes active member per N5032 [class.union.general] p5.
! 	    _S_access<_Tp>(*this, __v);
  	}
        };
  
*************** namespace __format
*** 4279,4335 ****
      {
        using _CharT = typename _Context::char_type;
  
-       template<typename _Tp>
- 	static constexpr bool __formattable
- 	  = __format::__formattable_with<_Tp, _Context>;
- 
      public:
!       class handle : public __format::_Arg_value<_Context>::_HandleBase
!       {
! 	using _Base = typename __format::_Arg_value<_Context>::_HandleBase;
! 
! 	// Format as const if possible, to reduce instantiations.
! 	template<typename _Tp>
! 	  using __maybe_const_t
! 	    = __conditional_t<__formattable<const _Tp>, const _Tp, _Tp>;
! 
! 	template<typename _Tq>
! 	  static void
! 	  _S_format(basic_format_parse_context<_CharT>& __parse_ctx,
! 		    _Context& __format_ctx, const void* __ptr)
! 	  {
! 	    using _Td = remove_const_t<_Tq>;
! 	    typename _Context::template formatter_type<_Td> __f;
! 	    __parse_ctx.advance_to(__f.parse(__parse_ctx));
! 	    _Tq& __val = *const_cast<_Tq*>(static_cast<const _Td*>(__ptr));
! 	    __format_ctx.advance_to(__f.format(__val, __format_ctx));
! 	  }
! 
! 	template<typename _Tp>
! 	  explicit
! 	  handle(_Tp& __val) noexcept
! 	  {
! 	    this->_M_ptr = __builtin_addressof(__val);
! 	    auto __func = _S_format<__maybe_const_t<_Tp>>;
! 	    this->_M_func = reinterpret_cast<void(*)()>(__func);
! 	  }
! 
! 	friend class basic_format_arg<_Context>;
! 
!       public:
! 	handle(const handle&) = default;
! 	handle& operator=(const handle&) = default;
! 
! 	[[__gnu__::__always_inline__]]
! 	void
! 	format(basic_format_parse_context<_CharT>& __pc, _Context& __fc) const
! 	{
! 	  using _Func = void(*)(basic_format_parse_context<_CharT>&,
! 				_Context&, const void*);
! 	  auto __f = reinterpret_cast<_Func>(this->_M_func);
! 	  __f(__pc, __fc, this->_M_ptr);
! 	}
!       };
  
        [[__gnu__::__always_inline__]]
        basic_format_arg() noexcept : _M_type(__format::_Arg_none) { }
--- 4329,4336 ----
      {
        using _CharT = typename _Context::char_type;
  
      public:
!       using handle = __format::_Arg_value<_Context>::handle;
  
        [[__gnu__::__always_inline__]]
        basic_format_arg() noexcept : _M_type(__format::_Arg_none) { }
*************** namespace __format
*** 4623,4632 ****
  	    case _Arg_ptr:
  	      return std::forward<_Visitor>(__vis)(_M_val._M_ptr);
  	    case _Arg_handle:
! 	    {
! 	      auto& __h = static_cast<handle&>(_M_val._M_handle);
! 	      return std::forward<_Visitor>(__vis)(__h);
! 	    }
  #ifdef __SIZEOF_INT128__
  	    case _Arg_i128:
  	      return std::forward<_Visitor>(__vis)(_M_val._M_i128);
--- 4624,4630 ----
  	    case _Arg_ptr:
  	      return std::forward<_Visitor>(__vis)(_M_val._M_ptr);
  	    case _Arg_handle:
! 	      return std::forward<_Visitor>(__vis)(_M_val._M_handle);
  #ifdef __SIZEOF_INT128__
  	    case _Arg_i128:
  	      return std::forward<_Visitor>(__vis)(_M_val._M_i128);
diff -Nrcpad gcc-16-20260301/libstdc++-v3/include/std/map gcc-16-20260308/libstdc++-v3/include/std/map
*** gcc-16-20260301/libstdc++-v3/include/std/map	Sun Mar  1 22:32:20 2026
--- gcc-16-20260308/libstdc++-v3/include/std/map	Sun Mar  8 22:32:15 2026
***************
*** 80,85 ****
--- 80,86 ----
  #define __glibcxx_want_nonmember_container_access
  #define __glibcxx_want_tuple_like
  #define __glibcxx_want_associative_heterogeneous_erasure
+ #define __glibcxx_want_associative_heterogeneous_insertion
  #include <bits/version.h>
  
  #if __cplusplus >= 201703L
diff -Nrcpad gcc-16-20260301/libstdc++-v3/include/std/set gcc-16-20260308/libstdc++-v3/include/std/set
*** gcc-16-20260301/libstdc++-v3/include/std/set	Sun Mar  1 22:32:20 2026
--- gcc-16-20260308/libstdc++-v3/include/std/set	Sun Mar  8 22:32:15 2026
***************
*** 78,83 ****
--- 78,84 ----
  #define __glibcxx_want_node_extract
  #define __glibcxx_want_nonmember_container_access
  #define __glibcxx_want_associative_heterogeneous_erasure
+ #define __glibcxx_want_associative_heterogeneous_insertion
  #include <bits/version.h>
  
  #if __cplusplus >= 201703L
diff -Nrcpad gcc-16-20260301/libstdc++-v3/include/std/streambuf gcc-16-20260308/libstdc++-v3/include/std/streambuf
*** gcc-16-20260301/libstdc++-v3/include/std/streambuf	Sun Mar  1 22:32:20 2026
--- gcc-16-20260308/libstdc++-v3/include/std/streambuf	Sun Mar  8 22:32:15 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 490,495 ****
--- 490,499 ----
        char_type*
        eback() const { return _M_in_beg; }
  
+ // Required to silence false-positive warnings originating from istream_iterator::operator++,
+ // see PR105580.
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Wnull-dereference"
        char_type*
        gptr()  const { return _M_in_cur;  }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 505,510 ****
--- 509,515 ----
        */
        void
        gbump(int __n) { _M_in_cur += __n; }
+ #pragma GCC diagnostic pop
  
        /**
         *  @brief  Setting the three read area pointers.
diff -Nrcpad gcc-16-20260301/libstdc++-v3/include/std/string_view gcc-16-20260308/libstdc++-v3/include/std/string_view
*** gcc-16-20260301/libstdc++-v3/include/std/string_view	Sun Mar  1 22:32:20 2026
--- gcc-16-20260308/libstdc++-v3/include/std/string_view	Sun Mar  8 22:32:15 2026
*************** _GLIBCXX_END_NAMESPACE_VERSION
*** 929,934 ****
  #endif
  #endif
  
! #endif // __cplusplus <= 201402L
  
  #endif // _GLIBCXX_STRING_VIEW
--- 929,934 ----
  #endif
  #endif
  
! #endif // C++17
  
  #endif // _GLIBCXX_STRING_VIEW
diff -Nrcpad gcc-16-20260301/libstdc++-v3/include/std/unordered_map gcc-16-20260308/libstdc++-v3/include/std/unordered_map
*** gcc-16-20260301/libstdc++-v3/include/std/unordered_map	Sun Mar  1 22:32:20 2026
--- gcc-16-20260308/libstdc++-v3/include/std/unordered_map	Sun Mar  8 22:32:15 2026
***************
*** 57,62 ****
--- 57,63 ----
  #define __glibcxx_want_unordered_map_try_emplace
  #define __glibcxx_want_tuple_like
  #define __glibcxx_want_associative_heterogeneous_erasure
+ #define __glibcxx_want_associative_heterogeneous_insertion
  #include <bits/version.h>
  
  #if __cplusplus >= 201703L
diff -Nrcpad gcc-16-20260301/libstdc++-v3/include/std/unordered_set gcc-16-20260308/libstdc++-v3/include/std/unordered_set
*** gcc-16-20260301/libstdc++-v3/include/std/unordered_set	Sun Mar  1 22:32:20 2026
--- gcc-16-20260308/libstdc++-v3/include/std/unordered_set	Sun Mar  8 22:32:15 2026
***************
*** 55,60 ****
--- 55,61 ----
  #define __glibcxx_want_node_extract
  #define __glibcxx_want_nonmember_container_access
  #define __glibcxx_want_associative_heterogeneous_erasure
+ #define __glibcxx_want_associative_heterogeneous_insertion
  #include <bits/version.h>
  
  #if __cplusplus >= 201703L
diff -Nrcpad gcc-16-20260301/libstdc++-v3/src/c++17/fs_path.cc gcc-16-20260308/libstdc++-v3/src/c++17/fs_path.cc
*** gcc-16-20260301/libstdc++-v3/src/c++17/fs_path.cc	Sun Mar  1 22:32:21 2026
--- gcc-16-20260308/libstdc++-v3/src/c++17/fs_path.cc	Sun Mar  8 22:32:15 2026
*************** struct path::_List::_Impl
*** 260,268 ****
  
    // We use the two least significant bits to store a _Type value so
    // require memory aligned to at least 4 bytes:
!   static_assert(__STDCPP_DEFAULT_NEW_ALIGNMENT__ >= 4);
!   // Require memory suitably aligned for an _Impl and its value types:
!   static_assert(__STDCPP_DEFAULT_NEW_ALIGNMENT__ >= alignof(value_type));
  
    // Clear the lowest two bits from the pointer (i.e. remove the _Type value)
    static _Impl* notype(_Impl* p)
--- 260,271 ----
  
    // We use the two least significant bits to store a _Type value so
    // require memory aligned to at least 4 bytes:
!   static constexpr size_t required_alignment
!     = std::max(size_t(4), alignof(value_type));
! 
!   // Only use aligned new if needed, because it might be less efficient.
!   static constexpr bool use_aligned_new
!     = __STDCPP_DEFAULT_NEW_ALIGNMENT__ < required_alignment;
  
    // Clear the lowest two bits from the pointer (i.e. remove the _Type value)
    static _Impl* notype(_Impl* p)
*************** struct path::_List::_Impl
*** 297,305 ****
    static unique_ptr<_Impl, _Impl_deleter>
    create_unchecked(int n)
    {
!     void* p = ::operator new(sizeof(_Impl) + n * sizeof(value_type));
      return std::unique_ptr<_Impl, _Impl_deleter>(::new(p) _Impl{n});
    }
  };
  
  // Destroy and deallocate an _Impl.
--- 300,317 ----
    static unique_ptr<_Impl, _Impl_deleter>
    create_unchecked(int n)
    {
!     const auto bytes = alloc_size(n);
!     void* p;
!     if constexpr (use_aligned_new)
!       p = ::operator new(bytes, align_val_t{required_alignment});
!     else
!       p = ::operator new(bytes);
      return std::unique_ptr<_Impl, _Impl_deleter>(::new(p) _Impl{n});
    }
+ 
+   // The number of bytes that must be allocated for _Impl with capacity n.
+   static size_t
+   alloc_size(int n) { return sizeof(_Impl) + n * sizeof(value_type); }
  };
  
  // Destroy and deallocate an _Impl.
*************** path::_List::_Impl_deleter::operator()(_
*** 309,317 ****
    p = _Impl::notype(p);
    if (p)
      {
!       const auto n = p->_M_capacity;
        p->~_Impl();
!       ::operator delete(p, sizeof(_Impl) + n * sizeof(_Impl::value_type));
      }
  }
  
--- 321,332 ----
    p = _Impl::notype(p);
    if (p)
      {
!       const auto bytes = _Impl::alloc_size(p->_M_capacity);
        p->~_Impl();
!       if constexpr (_Impl::use_aligned_new)
! 	::operator delete(p, bytes, align_val_t{_Impl::required_alignment});
!       else
! 	::operator delete(p, bytes);
      }
  }
  
diff -Nrcpad gcc-16-20260301/libstdc++-v3/testsuite/20_util/bitset/access/118341_neg1.cc gcc-16-20260308/libstdc++-v3/testsuite/20_util/bitset/access/118341_neg1.cc
*** gcc-16-20260301/libstdc++-v3/testsuite/20_util/bitset/access/118341_neg1.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/libstdc++-v3/testsuite/20_util/bitset/access/118341_neg1.cc	Sun Mar  8 22:32:15 2026
***************
*** 0 ****
--- 1,14 ----
+ // { dg-do run { xfail *-*-* } }
+ // { dg-options "-D_GLIBCXX_ASSERTIONS" }
+ 
+ #include <bitset>
+ #include <testsuite_hooks.h>
+ 
+ // Check bitset<>::op[] hardening, non-const.
+ 
+ int main()
+ {
+   std::bitset<13> bs(0x1555ull);
+   bs[12];  // OK
+   bs[13];  // aborts, 13 > 12, non-const
+ }
diff -Nrcpad gcc-16-20260301/libstdc++-v3/testsuite/20_util/bitset/access/118341_neg2.cc gcc-16-20260308/libstdc++-v3/testsuite/20_util/bitset/access/118341_neg2.cc
*** gcc-16-20260301/libstdc++-v3/testsuite/20_util/bitset/access/118341_neg2.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/libstdc++-v3/testsuite/20_util/bitset/access/118341_neg2.cc	Sun Mar  8 22:32:15 2026
***************
*** 0 ****
--- 1,14 ----
+ // { dg-do run { xfail *-*-* } }
+ // { dg-options "-D_GLIBCXX_ASSERTIONS" }
+ 
+ #include <bitset>
+ #include <testsuite_hooks.h>
+ 
+ // Check bitset<>::op[] hardening, const.
+ 
+ int main()
+ {
+   const std::bitset<13> bs(0x1555ull);
+   bs[12];  // OK
+   bs[13];  // aborts, 13 > 12, const
+ }
diff -Nrcpad gcc-16-20260301/libstdc++-v3/testsuite/20_util/bitset/access/118341_smoke.cc gcc-16-20260308/libstdc++-v3/testsuite/20_util/bitset/access/118341_smoke.cc
*** gcc-16-20260301/libstdc++-v3/testsuite/20_util/bitset/access/118341_smoke.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/libstdc++-v3/testsuite/20_util/bitset/access/118341_smoke.cc	Sun Mar  8 22:32:15 2026
***************
*** 0 ****
--- 1,31 ----
+ // { dg-do run }
+ // { dg-options "-D_GLIBCXX_ASSERTIONS" }
+ 
+ // Smoke test, op[] hardening.
+ 
+ #include <bitset>
+ #include <testsuite_hooks.h>
+ 
+ void test_non_const_subscript()
+ {
+   std::bitset<13> bs(0x1555ull);
+   for (int i = 0; i < 13; ++i)
+     {
+       VERIFY(bs[i] != (i & 1)); // Check op[] proxy result rvalue.
+       bs[i] = not bs[i];        // Assign via op[] proxy result lvalue.
+       VERIFY(bs[i] == (i & 1)); // Check modified.
+     }
+ }
+ 
+ void test_const_subscript()
+ {
+   const std::bitset<13> cbs(0x1555ull);
+   for (int i = 0; i < 13; ++i)
+     VERIFY(cbs[i] != (i & 1));  // Check op[] proxy result const rvalue.
+ }
+ 
+ int main()
+ {
+   test_non_const_subscript();
+   test_const_subscript();
+ }
diff -Nrcpad gcc-16-20260301/libstdc++-v3/testsuite/20_util/bitset/access/subscript.cc gcc-16-20260308/libstdc++-v3/testsuite/20_util/bitset/access/subscript.cc
*** gcc-16-20260301/libstdc++-v3/testsuite/20_util/bitset/access/subscript.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/libstdc++-v3/testsuite/20_util/bitset/access/subscript.cc	Sun Mar  8 22:32:15 2026
***************
*** 0 ****
--- 1,26 ----
+ #include <bitset>
+ #include <testsuite_hooks.h>
+ 
+ void test_non_const_subscript()
+ {
+   std::bitset<13> bs(0x1555ull);
+   for (int i = 0; i < 13; ++i)
+     {
+       VERIFY(bs[i] != (i & 1)); // Check op[] proxy result rvalue.
+       bs[i] = not bs[i];        // Assign via op[] proxy result lvalue.
+       VERIFY(bs[i] == (i & 1)); // Check modified.
+     }
+ }
+ 
+ void test_const_subscript()
+ {
+   const std::bitset<13> cbs(0x1555ull);
+   for (int i = 0; i < 13; ++i)
+     VERIFY(cbs[i] != (i & 1));  // Check op[] proxy result const rvalue.
+ }
+ 
+ int main()
+ {
+   test_non_const_subscript();
+   test_const_subscript();
+ }
diff -Nrcpad gcc-16-20260301/libstdc++-v3/testsuite/20_util/bitset/access/subscript_const_neg.cc gcc-16-20260308/libstdc++-v3/testsuite/20_util/bitset/access/subscript_const_neg.cc
*** gcc-16-20260301/libstdc++-v3/testsuite/20_util/bitset/access/subscript_const_neg.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/libstdc++-v3/testsuite/20_util/bitset/access/subscript_const_neg.cc	Sun Mar  8 22:32:15 2026
***************
*** 0 ****
--- 1,14 ----
+ // { dg-do compile }
+ #include <bitset>
+ 
+ void test_const_subscript_assignment()
+ {
+   const std::bitset<13> bs(0x1555ull);
+   for (int i = 0; i < 13; ++i)
+     bs[i] = not bs[i];  // { dg-error "lvalue required" }
+ }
+ 
+ int main()
+ {
+   test_const_subscript_assignment();
+ }
diff -Nrcpad gcc-16-20260301/libstdc++-v3/testsuite/20_util/expected/119197.cc gcc-16-20260308/libstdc++-v3/testsuite/20_util/expected/119197.cc
*** gcc-16-20260301/libstdc++-v3/testsuite/20_util/expected/119197.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/libstdc++-v3/testsuite/20_util/expected/119197.cc	Sun Mar  8 22:32:15 2026
***************
*** 0 ****
--- 1,20 ----
+ // { dg-do compile { target c++23 } }
+ 
+ // PR libstdc++/119197 - std::expected should be nodiscard
+ 
+ #include <expected>
+ 
+ std::expected<int, int> f();
+ std::expected<void, int> g();
+ 
+ void
+ test_nodiscard()
+ {
+   f();                         // { dg-warning "ignoring return" }
+   std::expected<int, int>(42); // PR c++/85973: should warn "ignoring temporary"
+   (void)f();                   // OK
+ 
+   g();                         // { dg-warning "ignoring return" }
+   std::expected<void, int>();  // PR c++/85973: should warn "ignoring temporary"
+   (void)g();                   // OK
+ }
diff -Nrcpad gcc-16-20260301/libstdc++-v3/testsuite/23_containers/map/modifiers/hetero/insert.cc gcc-16-20260308/libstdc++-v3/testsuite/23_containers/map/modifiers/hetero/insert.cc
*** gcc-16-20260301/libstdc++-v3/testsuite/23_containers/map/modifiers/hetero/insert.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/libstdc++-v3/testsuite/23_containers/map/modifiers/hetero/insert.cc	Sun Mar  8 22:32:15 2026
***************
*** 0 ****
--- 1,932 ----
+ // { dg-do run { target c++26 } }
+ 
+ #include <map>
+ #include <string>
+ #include <string_view>
+ #include <utility>
+ #include <compare>
+ #include <cstring>
+ #include <testsuite_hooks.h>
+ 
+ struct Y;
+ struct Z;
+ 
+ struct X {
+   std::string s;
+   X(std::string_view str) : s(str) {}
+   X(Y&&);
+   X(const Y&);
+   X(Z&&);
+   X(const Z&);
+   friend auto operator<=>(X const& a, X const& b) = default;
+ };
+ 
+ struct Y {
+   std::string s;
+   Y() = default;
+   Y(Y&& y) : s(std::move(y.s)) { y.s.clear(); }
+   Y(const Y& y) = default;
+   Y& operator=(Y&& y) { s = std::move(y.s); y.s.clear(); return *this; }
+   Y& operator=(const Y& y) = default;
+   Y(std::string_view sv) : s(sv) {}
+   Y(int n) : s(std::string(n, 'a')) {}
+   Y(const Y& a, const Y& b) : s(a.s + "1" + b.s) { }
+   Y(const Y& a, Y&& b)      : s(a.s + "2" + b.s) { b.s.clear(); }
+   Y(Y&& a, const Y& b)      : s(a.s + "3" + b.s) { a.s.clear(); }
+   Y(Y&& a, Y&& b)           : s(a.s + "4" + b.s) { a.s.clear(), b.s.clear(); }
+   friend auto operator<=>(Y const& a, Y const& b) = default;
+   friend auto operator<=>(X const& a, Y const& b) { return a.s <=> b.s; }
+ };
+ 
+ X::X(Y&& y) : s(std::move(y.s)) { y.s.clear(); }
+ X::X(const Y& y) : s(y.s) {}
+ 
+ using cmp = std::less<void>;
+ 
+ void test_at()
+ {
+   std::map<X, Y, cmp> amap{cmp{}};
+   amap.insert( {{Y{"abc"}, 1},
+     {Y{"dee"}, 2}, {Y{"def"}, 3}, {Y{"deg"}, 4},
+     {Y{"ghi"}, 5}});
+ 
+   Y y{"def"};
+   try
+     {
+       VERIFY(3 == amap.at(y));
+       VERIFY(amap.size() == 5);
+       VERIFY(4 == (amap.at(std::move(y)) = 4));
+       VERIFY(amap.size() == 5);
+       VERIFY(y.s.size() == 3);  // not moved from
+     }
+   catch(...) { VERIFY(false); }
+   try
+   {
+     amap.at(Y{"dea"}) = 4;
+     VERIFY(false);  // Should have thrown.
+   }
+   catch (std::out_of_range&) { VERIFY(amap.size() == 5); }
+   catch (...) { VERIFY(false); } // Wrong exception.
+ 
+   auto const& amapr{amap};
+   Y z{"deh"};
+   try
+     {
+       amapr.at(std::move(z));
+       VERIFY(false);  // Should have thrown.
+     }
+   catch (std::out_of_range&) {  }
+   catch (...) { VERIFY(false); } // Wrong exception.
+   VERIFY(amapr.size() == 5);
+   VERIFY(z.s.size() == 3);  // not moved from
+ }
+ 
+ void test_op_bracket()
+ {
+   std::map<X, Y, cmp> amap{cmp{}};
+   amap.insert({{Y{"abc"}, 1}, {Y{"def"}, 2}, {Y{"ghi"}, 3}});
+   {
+     Y z{"deg"};
+     amap[z] = 4;
+     VERIFY(amap.size() == 4);
+     VERIFY(z.s.size() == 3);  // pass by value, not moved from.
+     amap[std::move(z)] = Y{5};
+     VERIFY(amap.size() == 4);
+     VERIFY(amap.at(z) == Y{5});
+     VERIFY(z.s.size() == 3);  // already there, not moved from.
+   }
+   {
+     Y y{"deh"};
+     Y& v = amap[std::move(y)];
+     VERIFY(v == Y{});
+     VERIFY(amap.size() == 5);
+     VERIFY(amap.at(Y{"deh"}) == Y{});
+     VERIFY(y.s.empty());      // moved from.
+   }
+   {
+     Y x{"dei"};
+     amap[std::move(x)] = Y{7};
+     VERIFY(amap.size() == 6);
+     VERIFY(amap.at(Y{"dei"}) == Y{7});
+     VERIFY(x.s.empty());      // moved from
+   }
+ }
+ 
+ void test_try_emplace()
+ {
+   std::map<X, Y, cmp> amap{cmp{}};
+   amap.insert({{Y{"abc"}, 1}, {Y{"def"}, 2}, {Y{"ghi"}, 3}});
+ 
+   { // Fail, already there
+     auto a = amap;
+     auto [it, res] = a.try_emplace(Y{"def"}, Y{"xyz"});
+     VERIFY(!res);
+     VERIFY(a.size() == 3);
+     VERIFY(a.at(Y{"def"}) == Y{2}); // unchanged
+   }
+   { // Fail, already there, move
+     auto a = amap;
+     Y x{"def"};
+     Y y{"xyz"};
+     auto [it, res] = a.try_emplace(std::move(x), std::move(y));
+     VERIFY(!res);
+     VERIFY(a.size() == 3);
+     VERIFY(a.at(Y{"def"}) == Y{2}); // unchanged
+     VERIFY(x.s.size() == 3);  // not moved from
+     VERIFY(y.s.size() == 3);  // not moved from
+   }
+   { // Succeed, construct
+     auto a = amap;
+     {
+       Y m{"m"}, n{"n"};
+       auto [it, res] = a.try_emplace(Y{"deg"}, m, n);
+       VERIFY(res);
+       VERIFY(a.size() == 4);
+       VERIFY(it->first == X{"deg"});
+       VERIFY(it->second == Y{"m1n"});
+       VERIFY(m.s.size() == 1);
+       VERIFY(n.s.size() == 1);
+     }
+     {
+       Y m{"m"}, n{"n"};
+       auto [it, res] = a.try_emplace(Y{"deh"}, m, std::move(n));
+       VERIFY(res);
+       VERIFY(a.size() == 5);
+       VERIFY(it->first == X{"deh"});
+       VERIFY(it->second == Y{"m2n"});
+       VERIFY(m.s.size() == 1);
+       VERIFY(n.s.empty());
+     }
+     {
+       Y m{"m"}, o{"o"};
+       auto [it, res] = a.try_emplace(Y{"dei"}, std::move(m), o);
+       VERIFY(res);
+       VERIFY(a.size() == 6);
+       VERIFY(it->first == X{"dei"});
+       VERIFY(it->second == Y{"m3o"});
+       VERIFY(m.s.empty());
+       VERIFY(o.s.size() == 1);
+     }
+     {
+       Y o{"o"}, p{"p"};
+       auto [it, res] = a.try_emplace(Y{"dej"}, std::move(o), std::move(p));
+       VERIFY(res);
+       VERIFY(a.size() == 7);
+       VERIFY(it->first == X{"dej"});
+       VERIFY(it->second == Y{"o4p"});
+       VERIFY(o.s.empty());
+       VERIFY(p.s.empty());
+     }
+     {
+       Y dek{"dek"};
+       auto [it, res] = a.try_emplace(std::move(dek), Y("q"), Y("r"));
+       VERIFY(res);
+       VERIFY(a.size() == 8);
+       VERIFY(dek.s.empty());
+       VERIFY(it->first == X{"dek"});
+       VERIFY(it->second == Y{"q4r"});
+     }
+   }
+   { // Succeed, move
+     auto a = amap;
+     Y y{"tuv"}, z{"xyz"};
+     auto [it, res] = a.try_emplace(std::move(y), std::move(z));
+     VERIFY(res);
+     VERIFY(it->first == X{"tuv"});
+     VERIFY(it->second == Y{"xyz"});
+     VERIFY(a.size() == 4);
+     VERIFY(y.s.empty()); // moved from
+     VERIFY(z.s.empty()); // moved from
+   }
+   { // Hinted, fail
+     auto a = amap;
+     Y y{"def"}, z{"xyz"};
+     auto it = a.try_emplace(a.begin(), std::move(y), std::move(z));
+     VERIFY(a.size() == 3);
+     VERIFY(it->first == X{"def"});
+     VERIFY(it->second == Y{2});
+     VERIFY(y.s.size() == 3);  // not moved from
+     VERIFY(z.s.size() == 3);  // not moved from
+   }
+   { // Hinted, fail, move
+     auto a = amap;
+     Y y{"def"}, z{"xyz"};
+     auto it = a.try_emplace(a.begin(), std::move(y), std::move(z));
+     VERIFY(a.size() == 3);
+     VERIFY(it->first == X{"def"});
+     VERIFY(it->second == Y{2});
+     VERIFY(y.s.size() == 3);  // not moved from
+     VERIFY(z.s.size() == 3);  // not moved from
+   }
+   { // Hinted, succeed, construct
+     auto a = amap;
+     {
+       Y m("m"), n("n");
+       auto it = a.try_emplace(a.begin(), Y{"deg"}, m, n);
+       VERIFY(a.size() == 4);
+       VERIFY(it->first == X{"deg"});
+       VERIFY(it->second == Y{"m1n"});
+       VERIFY(m.s.size() == 1);
+       VERIFY(n.s.size() == 1);
+     }
+     {
+       Y m("m"), n("n");
+       auto it = a.try_emplace(a.begin(), Y{"deh"}, m, std::move(n));
+       VERIFY(a.size() == 5);
+       VERIFY(it->first == X{"deh"});
+       VERIFY(it->second == Y{"m2n"});
+       VERIFY(m.s.size() == 1);
+       VERIFY(n.s.empty());
+     }
+     {
+       Y m("m"), o("o");
+       auto it = a.try_emplace(a.begin(), Y{"dei"}, std::move(m), o);
+       VERIFY(a.size() == 6);
+       VERIFY(it->first == X{"dei"});
+       VERIFY(it->second == Y{"m3o"});
+       VERIFY(m.s.empty());
+       VERIFY(o.s.size() == 1);
+     }
+     {
+       Y o("o"), p("p");
+       auto it = a.try_emplace(a.begin(), Y{"dej"}, std::move(o), std::move(p));
+       VERIFY(a.size() == 7);
+       VERIFY(it->first == X{"dej"});
+       VERIFY(it->second == Y{"o4p"});
+       VERIFY(o.s.empty());
+       VERIFY(p.s.empty());
+     }
+     {
+       Y dek("dek");
+       auto it = a.try_emplace(a.begin(), std::move(dek), Y("q"), Y("r"));
+       VERIFY(a.size() == 8);
+       VERIFY(dek.s.empty());
+       VERIFY(it->first == X{"dek"});
+       VERIFY(it->second == Y{"q4r"});
+     }
+   }
+   {  // Hinted, succeed, move
+     auto a = amap;
+     Y y{"tuv"}, z{"xyz"};
+     auto it = a.try_emplace(a.begin(), std::move(y), std::move(z));
+     VERIFY(it->first == X{"tuv"});
+     VERIFY(it->second == Y{"xyz"});
+     VERIFY(a.size() == 4);
+     VERIFY(y.s.empty()); // moved from
+     VERIFY(z.s.empty());  // moved from
+   }
+ }
+ 
+ void test_insert_or_assign()
+ {
+   std::map<X, Y, cmp> amap{cmp{}};
+   amap.insert({{Y{"abc"}, 1}, {Y{"def"}, 2}, {Y{"ghi"}, 3}});
+ 
+   { // Already there, replace
+     auto a = amap;
+     Y y{"def"}, z{"xyz"};
+     auto [it, res] = a.insert_or_assign(y, z);
+     VERIFY(!res);
+     VERIFY(a.size() == 3);
+     VERIFY(a.at(Y{"def"}) == Y{"xyz"});
+     VERIFY(y.s.size() == 3);  // not moved from
+     VERIFY(z.s.size() == 3);  // not moved from
+   }
+   { // Already there, move
+     auto a = amap;
+     Y y{"def"}, z{"xyz"};
+     auto [it, res] = a.insert_or_assign(std::move(y), std::move(z));
+     VERIFY(!res);
+     VERIFY(a.size() == 3);
+     VERIFY(a.at(Y{"def"}) == Y{"xyz"});
+     VERIFY(y.s.size() == 3);  // not moved from
+     VERIFY(z.s.empty());      // moved from
+   }
+   { // Succeed, move
+     auto a = amap;
+     Y y{"tuv"}, z{"xyz"};
+     auto [it, res] = a.insert_or_assign(std::move(y), std::move(z));
+     VERIFY(res);
+     VERIFY(it->first == X{"tuv"});
+     VERIFY(it->second == Y{"xyz"});
+     VERIFY(a.size() == 4);
+     VERIFY(y.s.empty()); // moved from
+     VERIFY(z.s.empty()); // moved from
+   }
+   { // Hinted, already there, replace
+     auto a = amap;
+     Y y{"def"}, z{"xyz"};
+     auto it = a.insert_or_assign(a.begin(), y, z);
+     VERIFY(a.size() == 3);
+     VERIFY(it->first == X{"def"});
+     VERIFY(it->second == Y{"xyz"});
+     VERIFY(y.s.size() == 3);  // not moved from
+     VERIFY(z.s.size() == 3);  // not moved from
+   }
+   { // Hinted, already there, move
+     auto a = amap;
+     Y y{"def"}, z{"xyz"};
+     auto it = a.insert_or_assign(a.begin(), std::move(y), std::move(z));
+     VERIFY(a.size() == 3);
+     VERIFY(it->first == X{"def"});
+     VERIFY(it->second == Y{"xyz"});
+     VERIFY(y.s.size() == 3);  // not moved from
+     VERIFY(z.s.empty());      // moved from
+   }
+   {  // Hinted, succeed
+     auto a = amap;
+     Y y{"tuv"}, z{"xyz"};
+     auto it = a.insert_or_assign(a.begin(), y, z);
+     VERIFY(it->first == X{"tuv"});
+     VERIFY(it->second == Y{"xyz"});
+     VERIFY(a.size() == 4);
+     VERIFY(y.s.size() == 3);  // not moved from
+     VERIFY(z.s.size() == 3);  // not moved from
+   }
+   {  // Hinted, succeed, move
+     auto a = amap;
+     Y y{"tuv"}, z{"xyz"};
+     auto it = a.insert_or_assign(a.begin(), std::move(y), std::move(z));
+     VERIFY(it->first == X{"tuv"});
+     VERIFY(it->second == Y{"xyz"});
+     VERIFY(a.size() == 4);
+     VERIFY(y.s.empty());  // moved from
+     VERIFY(z.s.empty());  // moved from
+   }
+ }
+ 
+ struct Z {
+   std::string s;
+   mutable int compares = 0;
+ 
+   Z() = default;
+   Z(Z&& z) : s(std::move(z.s)) { z.s.clear(); }
+   Z(const Z& z) = default;
+   Z& operator=(Z&& z) { s = std::move(z.s); z.s.clear(); return *this; }
+   Z& operator=(const Z& z) = default;
+   Z(std::string_view sv) : s(sv) {}
+   Z(int n) : s(std::string(n, 'a')) {}
+   friend auto operator<=>(Z const& a, Z const& b) = default;
+   friend auto operator<=>(X const& a, Z const& b)
+     { return ++b.compares, a.s.substr(0, b.s.size()) <=> b.s; }
+ };
+ 
+ X::X(Z&& z) : s(std::move(z.s)) { z.s.clear(); }
+ X::X(const Z& z) : s(z.s) {}
+ 
+ // A heterogeneous key type like Z here that compares equal
+ // if it matches just the first part of the key is allowed,
+ // which affects op[], try_emplace, and insert_or_assign.
+ 
+ auto populate(auto a)
+ {
+   const std::string vs[] = { "dec", "ded", "dee", "def", "deg", "deh", "dei" };
+   for (auto const& v : vs)
+     a[Y{v}] = Y{v};
+   return a;
+ }
+ 
+ void test_op_bracket_prefix()
+ {
+   std::map<X, Y, cmp> amap{cmp{}};
+   amap.insert({{Y{"abc"}, 1}, {Y{"def"}, 2}, {Y{"ghi"}, 3}});
+   { // Already there, multiple matches
+     auto a = populate(amap);
+     VERIFY(a.size() == 9);
+     Z z{"de"};
+     a[std::move(z)] = Y{5};
+     VERIFY(a.size() == 9);
+     VERIFY(a.at(X{"dec"}) == Y{5});  // lower_bound match changed
+     VERIFY(a.at(X{"ded"}) == Y{"ded"});
+     VERIFY(a.at(X{"dee"}) == Y{"dee"});
+     VERIFY(a.at(X{"def"}) == Y{"def"});
+     VERIFY(a.at(X{"deg"}) == Y{"deg"});
+     VERIFY(a.at(X{"deh"}) == Y{"deh"});
+     VERIFY(a.at(X{"dei"}) == Y{"dei"});
+     VERIFY(z.s.size() == 2);  // not moved from
+   }
+ }
+ 
+ void test_try_emplace_prefix()
+ {
+   std::map<X, Y, cmp> amap{cmp{}};
+   amap.insert({{Y{"abc"}, 1}, {Y{"def"}, 2}, {Y{"ghi"}, 3}});
+   {
+     auto a = populate(amap);
+     VERIFY(a.size() == 9);
+     {
+       Z z{"de"};
+       auto [it, res] = a.try_emplace(std::move(z), 5);
+       VERIFY(a.size() == 9);
+       VERIFY(!res);
+       VERIFY(it->first == X{"dec"});
+       VERIFY(it->second == Y{"dec"});
+       VERIFY(a.at(X{"dec"}) == Y{"dec"});  // lower_bound match unchanged
+       VERIFY(a.at(X{"ded"}) == Y{"ded"});  // unchanged
+       VERIFY(a.at(X{"dee"}) == Y{"dee"});  // unchanged
+       VERIFY(a.at(X{"def"}) == Y{"def"});  // unchanged
+       VERIFY(a.at(X{"deg"}) == Y{"deg"});  // unchanged
+       VERIFY(a.at(X{"deh"}) == Y{"deh"});  // unchanged
+       VERIFY(a.at(X{"dei"}) == Y{"dei"});  // unchanged
+       VERIFY(z.s.size() == 2);  // not moved from
+     }
+     {
+       Z z{"df"};
+       auto [it, res] = a.try_emplace(std::move(z), Y{6});
+       VERIFY(a.size() == 10);
+       VERIFY(res);
+       VERIFY(it->first == X{"df"});
+       VERIFY(it->second == Y{6});
+       VERIFY(z.s.size() == 0);  // moved from
+       auto it2 = a.find(X{"dei"});
+       VERIFY(it2 != a.end());
+       ++it2;
+       VERIFY(it2 != a.end());
+       VERIFY(it2->first == X{"df"});
+     }
+   }
+   { // hinted
+     {
+       auto a = populate(amap);
+       VERIFY(a.size() == 9);
+       Z z{"aaa"};
+       auto it = a.try_emplace(a.begin(), std::move(z), 5);
+       VERIFY(a.size() == 10);
+       VERIFY(it->first == X{"aaa"});
+       VERIFY(it->second == Y{5});
+       VERIFY(a.at(X{"dec"}) == Y{"dec"});  // unchanged
+       VERIFY(a.at(X{"ded"}) == Y{"ded"});  // unchanged
+       VERIFY(a.at(X{"dee"}) == Y{"dee"});  // unchanged
+       VERIFY(a.at(X{"def"}) == Y{"def"});  // unchanged
+       VERIFY(a.at(X{"deg"}) == Y{"deg"});  // unchanged
+       VERIFY(a.at(X{"deh"}) == Y{"deh"});  // unchanged
+       VERIFY(a.at(X{"dei"}) == Y{"dei"});  // unchanged
+       VERIFY(z.s.empty());  // moved from
+       VERIFY(z.compares == 1);
+     }
+     {
+       auto a = populate(amap);
+       VERIFY(a.size() == 9);
+       Z z{"de"};
+       auto it = a.try_emplace(a.find(X{"dec"}), std::move(z), 5);
+       VERIFY(a.size() == 9);
+       VERIFY(it->first == X{"dec"});
+       VERIFY(it->second == Y{"dec"});
+       VERIFY(a.at(X{"dec"}) == Y{"dec"});  // unchanged
+       VERIFY(a.at(X{"ded"}) == Y{"ded"});  // unchanged
+       VERIFY(a.at(X{"dee"}) == Y{"dee"});  // unchanged
+       VERIFY(a.at(X{"def"}) == Y{"def"});  // unchanged
+       VERIFY(a.at(X{"deg"}) == Y{"deg"});  // unchanged
+       VERIFY(a.at(X{"deh"}) == Y{"deh"});  // unchanged
+       VERIFY(a.at(X{"dei"}) == Y{"dei"});  // unchanged
+       VERIFY(z.s.size() == 2);  // not moved from
+       VERIFY(z.compares == 3);
+     }
+     {
+       auto a = populate(amap);
+       VERIFY(a.size() == 9);
+       Z z{"df"};
+       auto it = a.try_emplace(a.begin(), std::move(z), Y{6});
+       VERIFY(a.size() == 10);
+       VERIFY(it->first == X{"df"});
+       VERIFY(it->second == Y{6});
+       VERIFY(z.s.size() == 0);  // moved from
+       VERIFY(z.compares > 3);
+       auto it2 = a.find(X{"dei"});
+       VERIFY(it2 != a.end());
+       ++it2;
+       VERIFY(it2 != a.end());
+       VERIFY(it2->first == X{"df"});
+     }
+     {
+       auto a = populate(amap);
+       VERIFY(a.size() == 9);
+       Z z{"df"};
+       auto it = a.try_emplace(std::next(a.begin()), std::move(z), Y{6});
+       VERIFY(a.size() == 10);
+       VERIFY(it->first == X{"df"});
+       VERIFY(it->second == Y{6});
+       VERIFY(z.s.size() == 0);  // moved from
+       VERIFY(z.compares > 3);
+       auto it2 = a.find(X{"dei"});
+       VERIFY(it2 != a.end());
+       ++it2;
+       VERIFY(it2 != a.end());
+       VERIFY(it2->first == X{"df"});
+     }
+     {
+       auto a = populate(amap);
+       VERIFY(a.size() == 9);
+       Z z{"df"};
+       auto it = a.try_emplace(std::prev(a.end()), std::move(z), Y{6});
+       VERIFY(a.size() == 10);
+       VERIFY(it->first == X{"df"});
+       VERIFY(it->second == Y{6});
+       VERIFY(z.s.size() == 0);  // moved from
+       VERIFY(z.compares == 2);
+       auto it2 = a.find(X{"dei"});
+       VERIFY(it2 != a.end());
+       ++it2;
+       VERIFY(it2 != a.end());
+       VERIFY(it2->first == X{"df"});
+     }
+     {
+       auto a = populate(amap);
+       VERIFY(a.size() == 9);
+       Z z{"df"};
+       auto it = a.try_emplace(a.end(), std::move(z), Y{6});
+       VERIFY(a.size() == 10);
+       VERIFY(it->first == X{"df"});
+       VERIFY(it->second == Y{6});
+       VERIFY(z.s.size() == 0);  // moved from
+       VERIFY(z.compares > 3);
+       auto it2 = a.find(X{"dei"});
+       VERIFY(it2 != a.end());
+       ++it2;
+       VERIFY(it2 != a.end());
+       VERIFY(it2->first == X{"df"});
+     }
+     {
+       auto a = populate(amap);
+       VERIFY(a.size() == 9);
+       Z z{"df"};
+       auto it = a.try_emplace(a.find(X{"dei"}), std::move(z), Y{6});
+       VERIFY(a.size() == 10);
+       VERIFY(it->first == X{"df"});
+       VERIFY(it->second == Y{6});
+       VERIFY(z.s.size() == 0);  // moved from
+       VERIFY(z.compares == 3);
+       auto it2 = a.find(X{"dei"});
+       VERIFY(it2 != a.end());
+       ++it2;
+       VERIFY(it2 != a.end());
+       VERIFY(it2->first == X{"df"});
+     }
+     {
+       auto a = populate(amap);
+       VERIFY(a.size() == 9);
+       Z z{"df"};
+       auto it = a.try_emplace(a.find(X{"dec"}), std::move(z), Y{6});
+       VERIFY(a.size() == 10);
+       VERIFY(it->first == X{"df"});
+       VERIFY(it->second == Y{6});
+       VERIFY(z.s.size() == 0);  // moved from
+       VERIFY(z.compares > 3);
+       auto it2 = a.find(X{"dei"});
+       VERIFY(it2 != a.end());
+       ++it2;
+       VERIFY(it2 != a.end());
+       VERIFY(it2->first == X{"df"});
+     }
+   }
+   { // hinted
+     {
+       auto a = populate(amap);
+       VERIFY(a.size() == 9);
+       Z z{"de"};
+       auto it = a.try_emplace(a.find(X{"dec"}), std::move(z), 5);
+       VERIFY(a.size() == 9);
+       VERIFY(it->first == X{"dec"});
+       VERIFY(it->second == Y{"dec"});
+       VERIFY(a.at(X{"dec"}) == Y{"dec"});  // unchanged
+       VERIFY(a.at(X{"ded"}) == Y{"ded"});  // unchanged
+       VERIFY(a.at(X{"dee"}) == Y{"dee"});  // unchanged
+       VERIFY(a.at(X{"def"}) == Y{"def"});  // unchanged
+       VERIFY(a.at(X{"deg"}) == Y{"deg"});  // unchanged
+       VERIFY(a.at(X{"deh"}) == Y{"deh"});  // unchanged
+       VERIFY(a.at(X{"dei"}) == Y{"dei"});  // unchanged
+       VERIFY(z.s.size() == 2);  // not moved from
+       VERIFY(z.compares == 3);
+     }
+     {
+       auto a = populate(amap);
+       VERIFY(a.size() == 9);
+       Z z{"de"};
+       auto it = a.try_emplace(a.begin(), std::move(z), 5);
+       VERIFY(a.size() == 9);
+       VERIFY(it->first == X{"dec"});
+       VERIFY(it->second == Y{"dec"});
+       VERIFY(a.at(X{"dec"}) == Y{"dec"});  // unchanged
+       VERIFY(a.at(X{"ded"}) == Y{"ded"});  // unchanged
+       VERIFY(a.at(X{"dee"}) == Y{"dee"});  // unchanged
+       VERIFY(a.at(X{"def"}) == Y{"def"});  // unchanged
+       VERIFY(a.at(X{"deg"}) == Y{"deg"});  // unchanged
+       VERIFY(a.at(X{"deh"}) == Y{"deh"});  // unchanged
+       VERIFY(a.at(X{"dei"}) == Y{"dei"});  // unchanged
+       VERIFY(z.s.size() == 2);  // not moved from
+       VERIFY(z.compares > 3);
+     }
+     {
+       auto a = populate(amap);
+       VERIFY(a.size() == 9);
+       Z z{"de"};
+       auto it = a.try_emplace(a.find(X{"dei"}), std::move(z), 5);
+       VERIFY(a.size() == 9);
+       VERIFY(it->first == X{"dec"});
+       VERIFY(it->second == Y{"dec"});
+       VERIFY(a.at(X{"dec"}) == Y{"dec"});  // unchanged
+       VERIFY(a.at(X{"ded"}) == Y{"ded"});  // unchanged
+       VERIFY(a.at(X{"dee"}) == Y{"dee"});  // unchanged
+       VERIFY(a.at(X{"def"}) == Y{"def"});  // unchanged
+       VERIFY(a.at(X{"deg"}) == Y{"deg"});  // unchanged
+       VERIFY(a.at(X{"deh"}) == Y{"deh"});  // unchanged
+       VERIFY(a.at(X{"dei"}) == Y{"dei"});  // unchanged
+       VERIFY(z.s.size() == 2);  // not moved from
+       VERIFY(z.compares > 3);
+     }
+     {
+       auto a = populate(amap);
+       VERIFY(a.size() == 9);
+       Z z{"de"};
+       auto it = a.try_emplace(a.find(X{"ghi"}), std::move(z), 5);
+       VERIFY(a.size() == 9);
+       VERIFY(it->first == X{"dec"});
+       VERIFY(it->second == Y{"dec"});
+       VERIFY(a.at(X{"dec"}) == Y{"dec"});  // unchanged
+       VERIFY(a.at(X{"ded"}) == Y{"ded"});  // unchanged
+       VERIFY(a.at(X{"dee"}) == Y{"dee"});  // unchanged
+       VERIFY(a.at(X{"def"}) == Y{"def"});  // unchanged
+       VERIFY(a.at(X{"deg"}) == Y{"deg"});  // unchanged
+       VERIFY(a.at(X{"deh"}) == Y{"deh"});  // unchanged
+       VERIFY(a.at(X{"dei"}) == Y{"dei"});  // unchanged
+       VERIFY(z.s.size() == 2);  // not moved from
+       VERIFY(z.compares > 3);
+     }
+     {
+       auto a = populate(amap);
+       VERIFY(a.size() == 9);
+       Z z{"de"};
+       auto it = a.try_emplace(a.end(), std::move(z), 5);
+       VERIFY(a.size() == 9);
+       VERIFY(it->first == X{"dec"});
+       VERIFY(it->second == Y{"dec"});
+       VERIFY(a.at(X{"dec"}) == Y{"dec"});  // unchanged
+       VERIFY(a.at(X{"ded"}) == Y{"ded"});  // unchanged
+       VERIFY(a.at(X{"dee"}) == Y{"dee"});  // unchanged
+       VERIFY(a.at(X{"def"}) == Y{"def"});  // unchanged
+       VERIFY(a.at(X{"deg"}) == Y{"deg"});  // unchanged
+       VERIFY(a.at(X{"deh"}) == Y{"deh"});  // unchanged
+       VERIFY(a.at(X{"dei"}) == Y{"dei"});  // unchanged
+       VERIFY(z.s.size() == 2);  // not moved from
+       VERIFY(z.compares > 3);
+     }
+     {
+       auto a = populate(amap);
+       VERIFY(a.size() == 9);
+       Z z{"df"};
+       auto it = a.try_emplace(a.begin(), std::move(z), Y{6});
+       VERIFY(a.size() == 10);
+       VERIFY(it->first == X{"df"});
+       VERIFY(it->second == Y{6});
+       VERIFY(z.s.size() == 0);  // moved from
+       VERIFY(z.compares > 3);
+       auto it2 = a.find(X{"dei"});
+       VERIFY(it2 != a.end());
+       ++it2;
+       VERIFY(it2 != a.end());
+       VERIFY(it2->first == X{"df"});
+     }
+     {
+       auto a = populate(amap);
+       VERIFY(a.size() == 9);
+       Z z{"df"};
+       auto it = a.try_emplace(std::next(a.begin()), std::move(z), Y{6});
+       VERIFY(a.size() == 10);
+       VERIFY(it->first == X{"df"});
+       VERIFY(it->second == Y{6});
+       VERIFY(z.s.size() == 0);  // moved from
+       VERIFY(z.compares > 3);
+       auto it2 = a.find(X{"dei"});
+       VERIFY(it2 != a.end());
+       ++it2;
+       VERIFY(it2 != a.end());
+       VERIFY(it2->first == X{"df"});
+     }
+     {
+       auto a = populate(amap);
+       VERIFY(a.size() == 9);
+       Z z{"df"};
+       auto it = a.try_emplace(a.find(X{"dei"}), std::move(z), Y{6});
+       VERIFY(a.size() == 10);
+       VERIFY(it->first == X{"df"});
+       VERIFY(it->second == Y{6});
+       VERIFY(z.s.size() == 0);  // moved from
+       VERIFY(z.compares == 3);
+       auto it2 = a.find(X{"dei"});
+       VERIFY(it2 != a.end());
+       ++it2;
+       VERIFY(it2 != a.end());
+       VERIFY(it2->first == X{"df"});
+     }
+     {
+       auto a = populate(amap);
+       VERIFY(a.size() == 9);
+       Z z{"df"};
+       auto it = a.try_emplace(a.find(X{"dec"}), std::move(z), Y{6});
+       VERIFY(a.size() == 10);
+       VERIFY(it->first == X{"df"});
+       VERIFY(it->second == Y{6});
+       VERIFY(z.s.size() == 0);  // moved from
+       VERIFY(z.compares > 3);
+       auto it2 = a.find(X{"dei"});
+       VERIFY(it2 != a.end());
+       ++it2;
+       VERIFY(it2 != a.end());
+       VERIFY(it2->first == X{"df"});
+     }
+     {
+       auto a = populate(amap);
+       VERIFY(a.size() == 9);
+       Z z{"df"};
+       auto it = a.try_emplace(std::prev(a.end()), std::move(z), Y{6});
+       VERIFY(a.size() == 10);
+       VERIFY(it->first == X{"df"});
+       VERIFY(it->second == Y{6});
+       VERIFY(z.s.size() == 0);  // moved from
+       VERIFY(z.compares == 2);
+       auto it2 = a.find(X{"dei"});
+       VERIFY(it2 != a.end());
+       ++it2;
+       VERIFY(it2 != a.end());
+       VERIFY(it2->first == X{"df"});
+     }
+     {
+       auto a = populate(amap);
+       VERIFY(a.size() == 9);
+       Z z{"df"};
+       auto it = a.try_emplace(a.end(), std::move(z), Y{6});
+       VERIFY(a.size() == 10);
+       VERIFY(it->first == X{"df"});
+       VERIFY(it->second == Y{6});
+       VERIFY(z.s.size() == 0);  // moved from
+       VERIFY(z.compares > 3);
+       auto it2 = a.find(X{"dei"});
+       VERIFY(it2 != a.end());
+       ++it2;
+       VERIFY(it2 != a.end());
+       VERIFY(it2->first == X{"df"});
+     }
+   }
+ }
+ 
+ void test_insert_or_assign_prefix()
+ {
+   std::map<X, Y, cmp> amap{cmp{}};
+   amap.insert({{Y{"abc"}, 1}, {Y{"def"}, 2}, {Y{"ghi"}, 3}});
+ 
+   { // Already there, replace
+     {
+       Z z{"de"};
+       auto a = populate(amap);
+       auto [it, res] = a.insert_or_assign(z, Y{5});
+       VERIFY(!res);
+       VERIFY(a.size() == 9);
+       VERIFY(it->first == X{"dec"});
+       VERIFY(it->second == Y{5});
+       VERIFY(a.at(Y{"dec"}) == Y{5});  // lower_bound changed
+       VERIFY(a.at(Y{"ded"}) == Y{"ded"});  // unchanged
+       VERIFY(a.at(Y{"dee"}) == Y{"dee"});  // unchanged
+       VERIFY(a.at(Y{"def"}) == Y{"def"});  // unchanged
+       VERIFY(a.at(Y{"deg"}) == Y{"deg"});  // unchanged
+       VERIFY(a.at(Y{"deh"}) == Y{"deh"});  // unchanged
+       VERIFY(a.at(Y{"dei"}) == Y{"dei"});  // unchanged
+       VERIFY(z.s.size() == 2);   // not moved from
+     }
+     {
+       Z z{"de"};
+       auto a = populate(amap);
+       auto [it, res] = a.insert_or_assign(std::move(z), Y{5});
+       VERIFY(!res);
+       VERIFY(a.size() == 9);
+       VERIFY(it->first == X{"dec"});
+       VERIFY(it->second == Y{5});
+       VERIFY(a.at(Y{"dec"}) == Y{5}); // lower_bound changed
+       VERIFY(a.at(Y{"ded"}) == Y{"ded"});  // unchanged
+       VERIFY(a.at(Y{"dee"}) == Y{"dee"});  // unchanged
+       VERIFY(a.at(Y{"def"}) == Y{"def"});  // unchanged
+       VERIFY(a.at(Y{"deg"}) == Y{"deg"});  // unchanged
+       VERIFY(a.at(Y{"deh"}) == Y{"deh"});  // unchanged
+       VERIFY(a.at(Y{"dei"}) == Y{"dei"});  // unchanged
+       VERIFY(z.s.size() == 2);   // not moved from
+     }
+   }
+   { // Hinted, already there, replace
+     {
+       Z z{"de"};
+       auto a = populate(amap);
+       auto it = a.insert_or_assign(a.find(X{"dec"}), z, Y{5});
+       VERIFY(a.size() == 9);
+       VERIFY(it->first == X{"dec"});
+       VERIFY(it->second == Y{5});
+       VERIFY(a.at(Y{"dec"}) == Y{5}); // lower_bound changed
+       VERIFY(a.at(Y{"ded"}) == Y{"ded"});  // unchanged
+       VERIFY(a.at(Y{"dee"}) == Y{"dee"});  // unchanged
+       VERIFY(a.at(Y{"def"}) == Y{"def"});  // unchanged
+       VERIFY(a.at(Y{"deg"}) == Y{"deg"});  // unchanged
+       VERIFY(a.at(Y{"deh"}) == Y{"deh"});  // unchanged
+       VERIFY(a.at(Y{"dei"}) == Y{"dei"});  // unchanged
+       VERIFY(z.s.size() == 2);   // not moved from
+       VERIFY(z.compares == 3);
+     }
+     {
+       Z z{"de"};
+       auto a = populate(amap);
+       auto it = a.insert_or_assign(a.end(), std::move(z), Y{5});
+       VERIFY(a.size() == 9);
+       VERIFY(it->first == X{"dec"});
+       VERIFY(it->second == Y{5});
+       VERIFY(a.at(Y{"dec"}) == Y{5});   // lower_bound changed
+       VERIFY(a.at(Y{"ded"}) == Y{"ded"});  // unchanged
+       VERIFY(a.at(Y{"dee"}) == Y{"dee"});  // unchanged
+       VERIFY(a.at(Y{"def"}) == Y{"def"});  // unchanged
+       VERIFY(a.at(Y{"deg"}) == Y{"deg"});  // unchanged
+       VERIFY(a.at(Y{"deh"}) == Y{"deh"});  // unchanged
+       VERIFY(a.at(Y{"dei"}) == Y{"dei"});  // unchanged
+       VERIFY(z.s.size() == 2);   // not moved from
+       VERIFY(z.compares > 3);
+     }
+     {
+       auto a = populate(amap);
+       VERIFY(a.size() == 9);
+       Z z{"df"};
+       auto it = a.try_emplace(a.find(X{"dei"}), std::move(z), 5);
+       VERIFY(a.size() == 10);
+       VERIFY(it->first == X{"df"});
+       VERIFY(it->second == Y{5});
+       VERIFY(a.at(X{"dec"}) == Y{"dec"});  // unchanged
+       VERIFY(a.at(X{"ded"}) == Y{"ded"});  // unchanged
+       VERIFY(a.at(X{"dee"}) == Y{"dee"});  // unchanged
+       VERIFY(a.at(X{"def"}) == Y{"def"});  // unchanged
+       VERIFY(a.at(X{"deg"}) == Y{"deg"});  // unchanged
+       VERIFY(a.at(X{"deh"}) == Y{"deh"});  // unchanged
+       VERIFY(a.at(X{"dei"}) == Y{"dei"});  // unchanged
+       VERIFY(z.s.empty());  // moved from
+       VERIFY(z.compares == 3);
+     }
+     {
+       auto a = populate(amap);
+       VERIFY(a.size() == 9);
+       Z z{"df"};
+       auto it = a.try_emplace(a.find(X{"ghi"}), std::move(z), 5);
+       VERIFY(a.size() == 10);
+       VERIFY(it->first == X{"df"});
+       VERIFY(it->second == Y{5});
+       VERIFY(a.at(X{"dec"}) == Y{"dec"});  // unchanged
+       VERIFY(a.at(X{"ded"}) == Y{"ded"});  // unchanged
+       VERIFY(a.at(X{"dee"}) == Y{"dee"});  // unchanged
+       VERIFY(a.at(X{"def"}) == Y{"def"});  // unchanged
+       VERIFY(a.at(X{"deg"}) == Y{"deg"});  // unchanged
+       VERIFY(a.at(X{"deh"}) == Y{"deh"});  // unchanged
+       VERIFY(a.at(X{"dei"}) == Y{"dei"});  // unchanged
+       VERIFY(z.s.empty());  // moved from
+       VERIFY(z.compares == 2);
+     }
+     {
+       auto a = populate(amap);
+       VERIFY(a.size() == 9);
+       Z z{"jkl"};
+       auto it = a.try_emplace(a.find(X{"ghi"}), std::move(z), 5);
+       VERIFY(a.size() == 10);
+       VERIFY(it->first == X{"jkl"});
+       VERIFY(it->second == Y{5});
+       VERIFY(a.at(X{"dec"}) == Y{"dec"});  // unchanged
+       VERIFY(a.at(X{"ded"}) == Y{"ded"});  // unchanged
+       VERIFY(a.at(X{"dee"}) == Y{"dee"});  // unchanged
+       VERIFY(a.at(X{"def"}) == Y{"def"});  // unchanged
+       VERIFY(a.at(X{"deg"}) == Y{"deg"});  // unchanged
+       VERIFY(a.at(X{"deh"}) == Y{"deh"});  // unchanged
+       VERIFY(a.at(X{"dei"}) == Y{"dei"});  // unchanged
+       VERIFY(z.s.empty());  // moved from
+       VERIFY(z.compares == 2);
+     }
+     {
+       auto a = populate(amap);
+       VERIFY(a.size() == 9);
+       Z z{"jkl"};
+       auto it = a.try_emplace(a.end(), std::move(z), 5);
+       VERIFY(a.size() == 10);
+       VERIFY(it->first == X{"jkl"});
+       VERIFY(it->second == Y{5});
+       VERIFY(a.at(X{"dec"}) == Y{"dec"});  // unchanged
+       VERIFY(a.at(X{"ded"}) == Y{"ded"});  // unchanged
+       VERIFY(a.at(X{"dee"}) == Y{"dee"});  // unchanged
+       VERIFY(a.at(X{"def"}) == Y{"def"});  // unchanged
+       VERIFY(a.at(X{"deg"}) == Y{"deg"});  // unchanged
+       VERIFY(a.at(X{"deh"}) == Y{"deh"});  // unchanged
+       VERIFY(a.at(X{"dei"}) == Y{"dei"});  // unchanged
+       VERIFY(z.s.empty());  // moved from
+       VERIFY(z.compares == 1);
+     }
+   }
+ }
+ 
+ int main()
+ {
+   test_at();
+   test_op_bracket();
+   test_try_emplace();
+   test_insert_or_assign();
+   test_op_bracket_prefix();
+   test_try_emplace_prefix();
+   test_insert_or_assign_prefix();
+ }
diff -Nrcpad gcc-16-20260301/libstdc++-v3/testsuite/23_containers/set/modifiers/hetero/insert.cc gcc-16-20260308/libstdc++-v3/testsuite/23_containers/set/modifiers/hetero/insert.cc
*** gcc-16-20260301/libstdc++-v3/testsuite/23_containers/set/modifiers/hetero/insert.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/libstdc++-v3/testsuite/23_containers/set/modifiers/hetero/insert.cc	Sun Mar  8 22:32:15 2026
***************
*** 0 ****
--- 1,376 ----
+ // { dg-do run { target c++26 } }
+ 
+ #include <set>
+ #include <string>
+ #include <string_view>
+ #include <utility>
+ #include <compare>
+ #include <cstring>
+ #include <testsuite_hooks.h>
+ 
+ struct Y;
+ struct Z;
+ 
+ struct X {
+   std::string s;
+   X(std::string_view str) : s(str) {}
+   X(Y&& y);
+   X(const Y& y);
+   X(Z&& z);
+   X(const Z& z);
+ 
+   friend auto operator<=>(X const& a, X const& b) = default;
+ };
+ 
+ struct Y {
+   std::string s;
+   Y() = default;
+   Y(std::string_view sv) : s(sv) {}
+   Y(int a, int b = 0) : s(std::string('a', a + b)) {}
+   Y(Y&& y) : s(std::move(y.s)) { y.s.clear(); }
+   Y(const Y& y) = default;
+   Y& operator=(Y&& y) { s = std::move(y.s); y.s.clear(); return *this; }
+   Y& operator=(const Y& y) = default;
+   friend auto operator<=>(Y const& a, Y const& b) = default;
+   friend auto operator<=>(X const& a, Y const& b) { return a.s <=> b.s; }
+ };
+ 
+ X::X(Y&& y) : s(std::move(y.s)) { y.s.clear(); }
+ X::X(const Y& y) : s(y.s) {}
+ 
+ using cmp = std::less<void>;
+ 
+ void test_root()
+ {
+   std::set<X, cmp> aset{cmp{}};
+   aset.insert(Y{"def"});
+   VERIFY(aset.size() == 1);
+   VERIFY(aset.contains(X{"def"}));
+   aset.insert(Y{"abc"});
+   VERIFY(aset.size() == 2);
+   VERIFY(aset.contains(X{"abc"}));
+   aset.insert(Y{"ghi"});
+   VERIFY(aset.size() == 3);
+   VERIFY(aset.contains(X{"ghi"}));
+ }
+ 
+ void test_insert()
+ {
+   std::set<X, cmp> aset{cmp{}};
+   aset.insert({Y{"abc"}, Y{"def"}, Y{"ghi"}});
+ 
+   { // Fail
+     auto a = aset;
+     Y y{"def"};
+     auto [it, res] = a.insert(y);
+     VERIFY(!res);
+     VERIFY(a.size() == 3);
+     VERIFY(it->s == "def");
+     VERIFY(y.s.size() == 3);  // not moved
+   }
+   { // Fail, move
+     auto a = aset;
+     Y y{"def"};
+     auto [it, res] = a.insert(std::move(y));
+     VERIFY(!res);
+     VERIFY(a.size() == 3);
+     VERIFY(it->s == "def");
+     VERIFY(y.s.size() == 3);  // not moved
+   }
+   { // Succeed
+     auto a = aset;
+     Y y{"deg"};
+     auto [it, res] = a.insert(y);
+     VERIFY(res);
+     VERIFY(a.size() == 4);
+     VERIFY(it->s == "deg");
+     VERIFY(y.s.size() == 3);  // not moved
+   }
+   { // Succeed, move
+     auto a = aset;
+     Y y{"deg"};
+     auto [it, res] = a.insert(std::move(y));
+     VERIFY(res);
+     VERIFY(a.size() == 4);
+     VERIFY(it->s == "deg");
+     VERIFY(y.s.empty());  // moved
+   }
+ 
+ 
+   { // Hinted, fail
+     auto a = aset;
+     Y y{"def"};
+     auto it = a.insert(a.begin(), y);
+     VERIFY(a.size() == 3);
+     VERIFY(it->s == "def");
+     VERIFY(y.s.size() == 3);  // not moved
+   }
+   { // Hinted, fail, move
+     auto a = aset;
+     Y y{"def"};
+     auto it = a.insert(a.begin(), std::move(y));
+     VERIFY(a.size() == 3);
+     VERIFY(it->s == "def");
+     VERIFY(y.s.size() == 3);  // not moved
+   }
+   { // Hinted, succeed
+     auto a = aset;
+     Y y{"deh"};
+     auto it = a.insert(a.begin(), y);
+     VERIFY(a.size() == 4);
+     VERIFY(it->s == "deh");
+     VERIFY(y.s.size() == 3);  // not moved
+   }
+   { // Hinted, succeed, move
+     auto a = aset;
+     Y y{"deh"};
+     auto it = a.insert(a.begin(), std::move(y));
+     VERIFY(a.size() == 4);
+     VERIFY(it->s == "deh");
+     VERIFY(y.s.empty());  // moved
+   }
+ }
+ 
+ struct Z {
+   std::string s;
+   mutable int compares = 0;
+ 
+   Z() = default;
+   Z(Z&& z) : s(std::move(z.s)) { z.s.clear(); }
+   Z(const Z& z) = default;
+   Z& operator=(Z&& z) { s = std::move(z.s); z.s.clear(); return *this; }
+   Z& operator=(const Z& z) = default;
+   Z(std::string_view sv) : s(sv) {}
+   Z(int n) : s(std::string(n, 'a')) {}
+   friend auto operator<=>(Z const& a, Z const& b) = default;
+   friend auto operator<=>(X const& a, Z const& b)
+     { return ++b.compares, a.s.substr(0, b.s.size()) <=> b.s; }
+ };
+ 
+ X::X(Z&& z) : s(std::move(z.s)) { z.s.clear(); }
+ X::X(const Z& z) : s(z.s) {}
+ 
+ // A heterogeneous key type like Z here that compares equal
+ // if it matches just the first part of the key is allowed,
+ // which affects op[], try_emplace, and insert_or_assign.
+ 
+ auto populate(auto a)
+ {
+   const std::string vs[] = { "dec", "ded", "dee", "def", "deg", "deh", "dei" };
+   for (auto const& v : vs)
+     a.insert(Y{v});
+   return a;
+ }
+ 
+ void test_insert_prefix()
+ {
+   std::set<X, cmp> aset{cmp{}};
+   aset.insert({Y{"abc"}, Y{"def"}, Y{"ghi"}});
+   {
+     { // Already there, fail.
+       Z z{"de"};
+       auto a = populate(aset);
+       auto [it, res] = a.insert(std::move(z));
+       VERIFY(!res);
+       VERIFY(a.size() == 9);
+       VERIFY(*it == X{"dec"});
+       VERIFY(!a.contains(Y{"de"}));
+       VERIFY(a.contains(Y{"dec"}));
+       VERIFY(a.contains(Y{"ded"}));
+       VERIFY(a.contains(Y{"dee"}));
+       VERIFY(a.contains(Y{"def"}));
+       VERIFY(a.contains(Y{"deg"}));
+       VERIFY(a.contains(Y{"deh"}));
+       VERIFY(a.contains(Y{"dei"}));
+       VERIFY(z.s.size() == 2);   // not moved from
+       VERIFY(z.compares > 3);
+     }
+   }
+   {
+     {  // hinted, succeed
+       Z z{"aaa"};
+       auto a = populate(aset);
+       auto it = a.insert(a.begin(), std::move(z));
+       VERIFY(a.size() == 10);
+       VERIFY(*it == X{"aaa"});
+       VERIFY(a.contains(Y{"dec"}));
+       VERIFY(a.contains(Y{"ded"}));
+       VERIFY(a.contains(Y{"dee"}));
+       VERIFY(a.contains(Y{"def"}));
+       VERIFY(a.contains(Y{"deg"}));
+       VERIFY(a.contains(Y{"deh"}));
+       VERIFY(a.contains(Y{"dei"}));
+       VERIFY(z.s.empty());  // moved from
+       VERIFY(z.compares == 1);
+     }
+   }
+   { // Hinted, already there, fail.
+     {
+       Z z{"de"};
+       auto a = populate(aset);
+       auto it = a.insert(a.begin(), std::move(z));
+       VERIFY(a.size() == 9);
+       VERIFY(*it == X{"dec"});
+       VERIFY(a.contains(Y{"dec"}));
+       VERIFY(a.contains(Y{"ded"}));
+       VERIFY(a.contains(Y{"dee"}));
+       VERIFY(a.contains(Y{"def"}));
+       VERIFY(a.contains(Y{"deg"}));
+       VERIFY(a.contains(Y{"deh"}));
+       VERIFY(a.contains(Y{"dei"}));
+       VERIFY(z.s.size() == 2);
+       VERIFY(z.compares > 3);
+     }
+     {
+       Z z{"de"};
+       auto a = populate(aset);
+       auto it = a.insert(a.find(X{"dec"}), std::move(z));
+       VERIFY(a.size() == 9);
+       VERIFY(*it == X{"dec"});
+       VERIFY(a.contains(Y{"dec"}));
+       VERIFY(a.contains(Y{"ded"}));
+       VERIFY(a.contains(Y{"dee"}));
+       VERIFY(a.contains(Y{"def"}));
+       VERIFY(a.contains(Y{"deg"}));
+       VERIFY(a.contains(Y{"deh"}));
+       VERIFY(a.contains(Y{"dei"}));
+       VERIFY(z.s.size() == 2);
+       VERIFY(z.compares == 3);
+     }
+     {
+       Z z{"de"};
+       auto a = populate(aset);
+       auto it = a.insert(a.find(X{"def"}), std::move(z));
+       VERIFY(a.size() == 9);
+       VERIFY(*it == X{"dec"});
+       VERIFY(a.contains(Y{"dec"}));
+       VERIFY(a.contains(Y{"ded"}));
+       VERIFY(a.contains(Y{"dee"}));
+       VERIFY(a.contains(Y{"def"}));
+       VERIFY(a.contains(Y{"deg"}));
+       VERIFY(a.contains(Y{"deh"}));
+       VERIFY(a.contains(Y{"dei"}));
+       VERIFY(z.s.size() == 2);
+       VERIFY(z.compares > 3);
+     }
+     {
+       Z z{"de"};
+       auto a = populate(aset);
+       auto it = a.insert(a.find(X{"dei"}), std::move(z));
+       VERIFY(a.size() == 9);
+       VERIFY(*it == X{"dec"});
+       VERIFY(a.contains(Y{"dec"}));
+       VERIFY(a.contains(Y{"ded"}));
+       VERIFY(a.contains(Y{"dee"}));
+       VERIFY(a.contains(Y{"def"}));
+       VERIFY(a.contains(Y{"deg"}));
+       VERIFY(a.contains(Y{"deh"}));
+       VERIFY(a.contains(Y{"dei"}));
+       VERIFY(z.s.size() == 2);
+       VERIFY(z.compares > 3);
+     }
+     {
+       Z z{"df"};
+       auto a = populate(aset);
+       auto it = a.insert(a.find(X{"dei"}), std::move(z));
+       VERIFY(a.size() == 10);
+       VERIFY(*it == X{"df"});
+       VERIFY(a.contains(Y{"dec"}));
+       VERIFY(a.contains(Y{"ded"}));
+       VERIFY(a.contains(Y{"dee"}));
+       VERIFY(a.contains(Y{"def"}));
+       VERIFY(a.contains(Y{"deg"}));
+       VERIFY(a.contains(Y{"deh"}));
+       VERIFY(a.contains(Y{"dei"}));
+       VERIFY(z.s.empty());  // moved from
+       VERIFY(z.compares == 3);
+     }
+     {
+       Z z{"de"};
+       auto a = populate(aset);
+       auto it = a.insert(a.find(X{"ghi"}), std::move(z));
+       VERIFY(a.size() == 9);
+       VERIFY(*it == X{"dec"});
+       VERIFY(a.contains(Y{"dec"}));
+       VERIFY(a.contains(Y{"ded"}));
+       VERIFY(a.contains(Y{"dee"}));
+       VERIFY(a.contains(Y{"def"}));
+       VERIFY(a.contains(Y{"deg"}));
+       VERIFY(a.contains(Y{"deh"}));
+       VERIFY(a.contains(Y{"dei"}));
+       VERIFY(z.s.size() == 2);
+       VERIFY(z.compares > 3);
+     }
+     {
+       Z z{"df"};
+       auto a = populate(aset);
+       auto it = a.insert(a.find(X{"ghi"}), std::move(z));
+       VERIFY(a.size() == 10);
+       VERIFY(*it == X{"df"});
+       VERIFY(a.contains(Y{"dec"}));
+       VERIFY(a.contains(Y{"ded"}));
+       VERIFY(a.contains(Y{"dee"}));
+       VERIFY(a.contains(Y{"def"}));
+       VERIFY(a.contains(Y{"deg"}));
+       VERIFY(a.contains(Y{"deh"}));
+       VERIFY(a.contains(Y{"dei"}));
+       VERIFY(z.s.empty());  // moved from
+       VERIFY(z.compares == 2);
+     }
+     {
+       Z z{"de"};
+       auto a = populate(aset);
+       auto it = a.insert(a.end(), std::move(z));
+       VERIFY(a.size() == 9);
+       VERIFY(*it == X{"dec"});
+       VERIFY(a.contains(Y{"dec"}));
+       VERIFY(a.contains(Y{"ded"}));
+       VERIFY(a.contains(Y{"dee"}));
+       VERIFY(a.contains(Y{"def"}));
+       VERIFY(a.contains(Y{"deg"}));
+       VERIFY(a.contains(Y{"deh"}));
+       VERIFY(a.contains(Y{"dei"}));
+       VERIFY(z.s.size() == 2);
+       VERIFY(z.compares > 3);
+     }
+     {
+       Z z{"jkl"};
+       auto a = populate(aset);
+       auto it = a.insert(a.find(X{"ghi"}), std::move(z));
+       VERIFY(a.size() == 10);
+       VERIFY(*it == X{"jkl"});
+       VERIFY(a.contains(Y{"dec"}));
+       VERIFY(a.contains(Y{"ded"}));
+       VERIFY(a.contains(Y{"dee"}));
+       VERIFY(a.contains(Y{"def"}));
+       VERIFY(a.contains(Y{"deg"}));
+       VERIFY(a.contains(Y{"deh"}));
+       VERIFY(a.contains(Y{"dei"}));
+       VERIFY(z.s.empty());  // moved from
+       VERIFY(z.compares == 2);
+     }
+     {
+       Z z{"jkl"};
+       auto a = populate(aset);
+       auto it = a.insert(a.end(), std::move(z));
+       VERIFY(a.size() == 10);
+       VERIFY(*it == X{"jkl"});
+       VERIFY(a.contains(Y{"dec"}));
+       VERIFY(a.contains(Y{"ded"}));
+       VERIFY(a.contains(Y{"dee"}));
+       VERIFY(a.contains(Y{"def"}));
+       VERIFY(a.contains(Y{"deg"}));
+       VERIFY(a.contains(Y{"deh"}));
+       VERIFY(a.contains(Y{"dei"}));
+       VERIFY(z.s.empty());  // moved from
+       VERIFY(z.compares == 1);
+     }
+   }
+ }
+ 
+ int main()
+ {
+   test_root();
+   test_insert();
+   test_insert_prefix();
+ }
diff -Nrcpad gcc-16-20260301/libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/hetero/insert.cc gcc-16-20260308/libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/hetero/insert.cc
*** gcc-16-20260301/libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/hetero/insert.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/hetero/insert.cc	Sun Mar  8 22:32:15 2026
***************
*** 0 ****
--- 1,353 ----
+ // { dg-do run { target c++26 } }
+ 
+ #include <unordered_map>
+ #include <string>
+ #include <string_view>
+ #include <utility>
+ #include <functional>
+ #include <compare>
+ #include <testsuite_hooks.h>
+ 
+ struct Y;
+ 
+ struct X {
+   std::string s;
+   X(std::string_view str) : s(str) {}
+   X(Y&& y);
+   X(const Y& y);
+   friend bool operator==(X const& a, X const& b) = default;
+ };
+ 
+ struct Y {
+   std::string s;
+   Y() = default;
+   Y(Y&& y) : s(std::move(y.s)) { y.s.clear(); }
+   Y(const Y& y) = default;
+   Y& operator=(Y&& y) { s = std::move(y.s); y.s.clear(); return *this; }
+   Y& operator=(const Y& y) = default;
+   Y(std::string_view sv) : s(sv) {}
+   Y(int n) : s(std::string('a', n)) {}
+   Y(const Y& a, const Y& b) : s(a.s + "1" + b.s) { }
+   Y(const Y& a, Y&& b)      : s(a.s + "2" + b.s) { b.s.clear(); }
+   Y(Y&& a, const Y& b)      : s(a.s + "3" + b.s) { a.s.clear(); }
+   Y(Y&& a, Y&& b)           : s(a.s + "4" + b.s) { a.s.clear(), b.s.clear(); }
+   friend bool operator==(Y const& a, Y const& b) = default;
+   friend bool operator==(X const& a, Y const& b) { return a.s == b.s; }
+ };
+ 
+ X::X(Y&& y) : s(std::move(y.s)) { y.s.clear(); }
+ X::X(const Y& y) : s(y.s) {}
+ 
+ struct Hash {
+   using is_transparent = void;
+   template <typename T>
+     auto operator()(T const& t) const
+     { return std::hash<decltype(T::s)>{}(t.s); }
+ };
+ 
+ using Equal = std::equal_to<void>;
+ 
+ void test_op_bracket()
+ {
+   std::unordered_map<X, Y, Hash, Equal> amap;
+   amap.insert({{X{"abc"}, 1}, {X{"def"}, 2}, {X{"ghi"}, 3}});
+ 
+   Y x{"dei"}, y{"deh"}, z{"deg"};
+   amap[z] = 4;
+   VERIFY(amap.size() == 4);
+   VERIFY(z.s.size() == 3);  // not moved from.
+ 
+   amap[std::move(z)] = 5;
+   VERIFY(amap.size() == 4);
+   VERIFY(z.s.size() == 3);  // not moved from.
+ 
+   VERIFY(amap[std::move(y)] == Y{});
+   VERIFY(amap.size() == 5);
+   VERIFY(y.s.empty());      // moved from.
+ 
+   amap[std::move(x)] = 7;
+   VERIFY(amap.size() == 6);
+   VERIFY(x.s.empty());      // moved from
+ }
+ 
+ void test_at()
+ {
+   std::unordered_map<X, Y, Hash, Equal> amap;
+   amap.insert({{X{"abc"}, 1}, {X{"def"}, 2}, {X{"ghi"}, 3}});
+ 
+   Y x{"def"};
+   try
+     {
+       VERIFY(2 == amap.at(x));
+       VERIFY(amap.size() == 3);
+       VERIFY(x.s.size() == 3);   // not moved from
+       VERIFY(4 == (amap.at(x) = 4));
+       VERIFY(amap.size() == 3);
+       VERIFY(x.s.size() == 3);   // not moved from
+     }
+   catch(...) { VERIFY(false); }
+ 
+   Y z{"deg"};
+   try
+   {
+     amap.at(z) = 4;
+     VERIFY(false);  // Should have thrown.
+   }
+   catch (std::out_of_range&) { VERIFY(amap.size() == 3); }
+   catch (...) { VERIFY(false); } // Wrong exception.
+   VERIFY(z.s.size() == 3);   // not moved from
+ 
+   Y y{"deh"};
+   auto const& amapr{amap};
+   try
+     {
+       amapr.at(y);
+       VERIFY(false);  // Should have thrown.
+     }
+   catch (std::out_of_range&) {  }
+   catch (...) { VERIFY(false); } // Wrong exception.
+   VERIFY(amapr.size() == 3);
+   VERIFY(y.s.size() == 3);  // not moved from
+ }
+ 
+ void test_try_emplace()
+ {
+   std::unordered_map<X, Y, Hash, Equal> amap;
+   amap.insert({{X{"abc"}, 1}, {X{"def"}, 2}, {X{"ghi"}, 3}});
+ 
+   { // Fail, already there
+     auto a = amap;
+     auto [it, res] = a.try_emplace(Y{"def"}, Y{"xyz"});
+     VERIFY(!res);
+     VERIFY(a.size() == 3);
+     VERIFY(a.at(Y{"def"}) == Y{2});
+   }
+   { // Fail, already there, move
+     auto a = amap;
+     Y y{"def"}, z{"xyz"};
+     auto [it, res] = a.try_emplace(std::move(y), std::move(z));
+     VERIFY(!res);
+     VERIFY(a.size() == 3);
+     VERIFY(a.at(Y{"def"}) == Y{2});
+     VERIFY(y.s.size() == 3);  // not moved from
+     VERIFY(z.s.size() == 3);  // not moved from
+   }
+   { // Succeed, construct
+     auto a = amap;
+     Y m("m"), n("n"), o("o"), p("p"), dek("dek");
+     {
+       auto [it, res] = a.try_emplace(Y{"deg"}, m, n);
+       VERIFY(res);
+       VERIFY(a.size() == 4);
+       VERIFY(it->first == X{"deg"});
+       VERIFY(it->second == Y{"m1n"});
+       VERIFY(m.s.size() == 1);
+       VERIFY(n.s.size() == 1);
+     }
+     {
+       auto [it, res] = a.try_emplace(Y{"deh"}, m, std::move(n));
+       VERIFY(res);
+       VERIFY(a.size() == 5);
+       VERIFY(it->first == X{"deh"});
+       VERIFY(it->second == Y{"m2n"});
+       VERIFY(m.s.size() == 1);
+       VERIFY(n.s.empty());
+     }
+     {
+       auto [it, res] = a.try_emplace(Y{"dei"}, std::move(m), o);
+       VERIFY(res);
+       VERIFY(a.size() == 6);
+       VERIFY(it->first == X{"dei"});
+       VERIFY(it->second == Y{"m3o"});
+       VERIFY(m.s.empty());
+       VERIFY(o.s.size() == 1);
+     }
+     {
+       auto [it, res] = a.try_emplace(Y{"dej"}, std::move(o), std::move(p));
+       VERIFY(res);
+       VERIFY(a.size() == 7);
+       VERIFY(it->first == X{"dej"});
+       VERIFY(it->second == Y{"o4p"});
+       VERIFY(o.s.empty());
+       VERIFY(p.s.empty());
+     }
+     {
+       auto [it, res] = a.try_emplace(std::move(dek), Y("q"), Y("r"));
+       VERIFY(res);
+       VERIFY(a.size() == 8);
+       VERIFY(dek.s.empty());
+       VERIFY(it->first == X{"dek"});
+       VERIFY(it->second == Y{"q4r"});
+     }
+   }
+   { // Succeed, move
+     auto a = amap;
+     Y y{"tuv"}, z{"xyz"};
+     auto [it, res] = a.try_emplace(std::move(y), std::move(z));
+     VERIFY(res);
+     VERIFY(it->first == X{"tuv"});
+     VERIFY(it->second == Y{"xyz"});
+     VERIFY(a.size() == 4);
+     VERIFY(y.s.empty()); // moved from
+     VERIFY(z.s.empty()); // moved from
+   }
+   { // Hinted, fail
+     auto a = amap;
+     Y y{"def"}, z{"xyz"};
+     auto it = a.try_emplace(a.begin(), std::move(y), std::move(z));
+     VERIFY(a.size() == 3);
+     VERIFY(it->first == X{"def"});
+     VERIFY(it->second == Y{2});
+     VERIFY(y.s.size() == 3);  // not moved from
+     VERIFY(z.s.size() == 3);  // not moved from
+   }
+   { // Hinted, fail, move
+     auto a = amap;
+     Y y{"def"}, z{"xyz"};
+     auto it = a.try_emplace(a.begin(), std::move(y), std::move(z));
+     VERIFY(a.size() == 3);
+     VERIFY(it->first == X{"def"});
+     VERIFY(it->second == Y{2});
+     VERIFY(y.s.size() == 3);  // not moved from
+     VERIFY(z.s.size() == 3);  // not moved from
+   }
+   { // Hinted, succeed, construct
+     auto a = amap;
+     Y m("m"), n("n"), o("o"), p("p"), dek("dek");
+     {
+       auto it = a.try_emplace(a.begin(), Y{"deg"}, m, n);
+       VERIFY(a.size() == 4);
+       VERIFY(it->first == X{"deg"});
+       VERIFY(it->second == Y{"m1n"});
+       VERIFY(m.s.size() == 1);
+       VERIFY(n.s.size() == 1);
+     }
+     {
+       auto it = a.try_emplace(a.begin(), Y{"deh"}, m, std::move(n));
+       VERIFY(a.size() == 5);
+       VERIFY(it->first == X{"deh"});
+       VERIFY(it->second == Y{"m2n"});
+       VERIFY(m.s.size() == 1);
+       VERIFY(n.s.empty());
+     }
+     {
+       auto it = a.try_emplace(a.begin(), Y{"dei"}, std::move(m), o);
+       VERIFY(a.size() == 6);
+       VERIFY(it->first == X{"dei"});
+       VERIFY(it->second == Y{"m3o"});
+       VERIFY(m.s.empty());
+       VERIFY(o.s.size() == 1);
+     }
+     {
+       auto it = a.try_emplace(a.begin(), Y{"dej"}, std::move(o), std::move(p));
+       VERIFY(a.size() == 7);
+       VERIFY(it->first == X{"dej"});
+       VERIFY(it->second == Y{"o4p"});
+       VERIFY(o.s.empty());
+       VERIFY(p.s.empty());
+     }
+     {
+       auto it = a.try_emplace(a.begin(), std::move(dek), Y("q"), Y("r"));
+       VERIFY(a.size() == 8);
+       VERIFY(dek.s.empty());
+       VERIFY(it->first == X{"dek"});
+       VERIFY(it->second == Y{"q4r"});
+     }
+   }
+   {  // Hinted, succeed, move
+     auto a = amap;
+     Y y{"tuv"}, z{"xyz"};
+     auto it = a.try_emplace(a.begin(), std::move(y), std::move(z));
+     VERIFY(it->first == X{"tuv"});
+     VERIFY(it->second == Y{"xyz"});
+     VERIFY(a.size() == 4);
+     VERIFY(y.s.empty()); // moved from
+     VERIFY(z.s.empty());  // moved from
+   }
+ }
+ 
+ void test_insert_or_assign()
+ {
+   std::unordered_map<X, Y, Hash, Equal> amap;
+   amap.insert({{X{"abc"}, 1}, {X{"def"}, 2}, {X{"ghi"}, 3}});
+ 
+   { // Already there, replace
+     auto a = amap;
+     Y y{"def"}, z{"xyz"};
+     auto [it, res] = a.insert_or_assign(y, z);
+     VERIFY(!res);
+     VERIFY(a.size() == 3);
+     VERIFY(a.at(Y{"def"}) == Y{"xyz"});
+     VERIFY(y.s.size() == 3);  // not moved from
+     VERIFY(z.s.size() == 3);  // not moved from
+   }
+   { // Already there, move
+     auto a = amap;
+     Y y{"def"}, z{"xyz"};
+     auto [it, res] = a.insert_or_assign(std::move(y), std::move(z));
+     VERIFY(!res);
+     VERIFY(a.size() == 3);
+     VERIFY(a.at(Y{"def"}) == Y{"xyz"});
+     VERIFY(y.s.size() == 3);  // not moved from
+     VERIFY(z.s.empty());      // moved from
+   }
+   { // Succeed, move
+     auto a = amap;
+     Y y{"tuv"}, z{"xyz"};
+     auto [it, res] = a.insert_or_assign(std::move(y), std::move(z));
+     VERIFY(res);
+     VERIFY(it->first == X{"tuv"});
+     VERIFY(it->second == Y{"xyz"});
+     VERIFY(a.size() == 4);
+     VERIFY(y.s.empty()); // moved from
+     VERIFY(z.s.empty()); // moved from
+   }
+   { // Hinted, already there, replace
+     auto a = amap;
+     Y y{"def"}, z{"xyz"};
+     auto it = a.insert_or_assign(a.begin(), y, z);
+     VERIFY(a.size() == 3);
+     VERIFY(it->first == X{"def"});
+     VERIFY(it->second == Y{"xyz"});
+     VERIFY(y.s.size() == 3);  // not moved from
+     VERIFY(z.s.size() == 3);  // not moved from
+   }
+   { // Hinted, already there, move
+     auto a = amap;
+     Y y{"def"}, z{"xyz"};
+     auto it = a.insert_or_assign(a.begin(), std::move(y), std::move(z));
+     VERIFY(a.size() == 3);
+     VERIFY(it->first == X{"def"});
+     VERIFY(it->second == Y{"xyz"});
+     VERIFY(y.s.size() == 3);  // not moved from
+     VERIFY(z.s.empty());      // moved from
+   }
+   {  // Hinted, succeed
+     auto a = amap;
+     Y y{"tuv"}, z{"xyz"};
+     auto it = a.insert_or_assign(a.begin(), y, z);
+     VERIFY(it->first == X{"tuv"});
+     VERIFY(it->second == Y{"xyz"});
+     VERIFY(a.size() == 4);
+     VERIFY(y.s.size() == 3);  // not moved from
+     VERIFY(z.s.size() == 3);  // not moved from
+   }
+   {  // Hinted, succeed, move
+     auto a = amap;
+     Y y{"tuv"}, z{"xyz"};
+     auto it = a.insert_or_assign(a.begin(), std::move(y), std::move(z));
+     VERIFY(it->first == X{"tuv"});
+     VERIFY(it->second == Y{"xyz"});
+     VERIFY(a.size() == 4);
+     VERIFY(y.s.empty());  // moved from
+     VERIFY(z.s.empty());  // moved from
+   }
+ }
+ 
+ int main()
+ {
+   test_op_bracket();
+   test_at();
+   test_try_emplace();
+   test_insert_or_assign();
+ }
diff -Nrcpad gcc-16-20260301/libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/hetero/insert.cc gcc-16-20260308/libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/hetero/insert.cc
*** gcc-16-20260301/libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/hetero/insert.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/hetero/insert.cc	Sun Mar  8 22:32:15 2026
***************
*** 0 ****
--- 1,57 ----
+ // { dg-do run { target c++26 } }
+ 
+ #include <unordered_map>
+ #include <string>
+ #include <string_view>
+ #include <utility>
+ #include <functional>
+ #include <testsuite_hooks.h>
+ 
+ struct Y;
+ 
+ struct X {
+   std::string s;
+   X(std::string_view str) : s(str) {}
+   X(Y&& y);
+   X(const Y& y);
+   friend bool operator==(X const& a, X const& b) = default;
+ };
+ 
+ struct Y {
+   std::string s;
+   Y() = default;
+   Y(Y&& y) : s(std::move(y.s)) { y.s.clear(); }
+   Y(const Y& y) = default;
+   Y& operator=(Y&& y) { s = std::move(y.s); y.s.clear(); return *this; }
+   Y& operator=(const Y& y) = default;
+   Y(std::string_view sv) : s(sv) {}
+   Y(int a, int b = 0) : s(std::string('a', a + b)) {}
+   friend bool operator==(Y const& a, Y const& b) = default;
+   friend bool operator==(X const& a, Y const& b) { return a.s == b.s; }
+ };
+ 
+ X::X(Y&& y) : s(std::move(y.s)) { y.s.clear(); }
+ X::X(const Y& y) : s(y.s) {}
+ 
+ struct Hash {
+   using is_transparent = void;
+   template <typename T>
+     auto operator()(T const& t) const
+     { return std::hash<decltype(T::s)>{}(t.s); }
+ };
+ 
+ using Equal = std::equal_to<void>;
+ 
+ void test_bucket()
+ {
+   std::unordered_multimap<X, Y, Hash, Equal> amap;
+   amap.insert({{X{"abc"}, 1}, {X{"def"}, 2}, {X{"def"}, 3}, {X{"ghi"}, 3}});
+ 
+   auto const& amapr{amap};
+   VERIFY(amapr.bucket(X{"def"}) == amapr.bucket(Y{"def"}));
+ }
+ 
+ int main()
+ {
+   test_bucket();
+ }
diff -Nrcpad gcc-16-20260301/libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/hetero/insert.cc gcc-16-20260308/libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/hetero/insert.cc
*** gcc-16-20260301/libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/hetero/insert.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/hetero/insert.cc	Sun Mar  8 22:32:15 2026
***************
*** 0 ****
--- 1,56 ----
+ // { dg-do run { target c++26 } }
+ 
+ #include <unordered_set>
+ #include <string>
+ #include <string_view>
+ #include <utility>
+ #include <functional>
+ #include <testsuite_hooks.h>
+ 
+ struct Y;
+ 
+ struct X {
+   std::string s;
+   X(Y&& y);
+   X(const Y& y);
+   X(std::string_view str) : s(str) {}
+   friend bool operator==(X const& a, X const& b) = default;
+ };
+ 
+ struct Y {
+   std::string s;
+   Y() = default;
+   Y(Y&& y) : s(std::move(y.s)) { y.s.clear(); }
+   Y(const Y& y) = default;
+   Y& operator=(Y&& y) { s = std::move(y.s); y.s.clear(); return *this; }
+   Y& operator=(const Y& y) = default;
+   Y(std::string_view sv) : s(sv) {}
+   friend bool operator==(Y const& a, Y const& b) = default;
+   friend bool operator==(X const& a, Y const& b) { return a.s == b.s; }
+ };
+ 
+ X::X(Y&& y) : s(std::move(y.s)) { y.s.clear(); }
+ X::X(const Y& y) : s(y.s) {}
+ 
+ struct Hash {
+   using is_transparent = void;
+   template <typename T>
+     auto operator()(T const& t) const
+     { return std::hash<decltype(T::s)>{}(t.s); }
+ };
+ 
+ using Equal = std::equal_to<void>;
+ 
+ void test_bucket()
+ {
+   std::unordered_multiset<X, Hash, Equal> aset{};
+   aset.insert({X{"abc"}, X{"def"}, X{"def"}, X{"ghi"}});
+ 
+   auto const& asetr{aset};
+   VERIFY(asetr.bucket(X{"def"}) == asetr.bucket(Y{"def"}));
+ }
+ 
+ int main()
+ {
+   test_bucket();
+ }
diff -Nrcpad gcc-16-20260301/libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/hetero/insert.cc gcc-16-20260308/libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/hetero/insert.cc
*** gcc-16-20260301/libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/hetero/insert.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/hetero/insert.cc	Sun Mar  8 22:32:15 2026
***************
*** 0 ****
--- 1,134 ----
+ // { dg-do run { target c++26 } }
+ 
+ #include <unordered_set>
+ #include <string>
+ #include <string_view>
+ #include <utility>
+ #include <functional>
+ #include <testsuite_hooks.h>
+ 
+ struct Y;
+ 
+ struct X {
+   std::string s;
+   X(std::string_view str) : s(str) {}
+   X(Y&& y);
+   X(const Y& y);
+   friend bool operator==(X const& a, X const& b) = default;
+ };
+ 
+ struct Y {
+   std::string s;
+   Y() = default;
+   Y(Y&& y) : s(std::move(y.s)) { y.s.clear(); }
+   Y(const Y& y) = default;
+   Y& operator=(Y&& y) { s = std::move(y.s); y.s.clear(); return *this; }
+   Y& operator=(const Y& y) = default;
+   Y(int a, int b = 0) : s(std::string('a', a + b)) {}
+   Y(std::string_view sv) : s(sv) {}
+   friend bool operator==(Y const& a, Y const& b) = default;
+   friend bool operator==(X const& a, Y const& b) { return a.s == b.s; }
+ };
+ 
+ X::X(Y&& y) : s(std::move(y.s)) { y.s.clear(); }
+ X::X(const Y& y) : s(y.s) {}
+ 
+ struct Hash {
+   using is_transparent = void;
+   template <typename T>
+     auto operator()(T const& t) const { return std::hash<decltype(T::s)>{}(t.s); }
+ };
+ 
+ using Equal = std::equal_to<void>;
+ 
+ void test_insert()
+ {
+   std::unordered_set<X, Hash, Equal> aset;
+   aset.insert({X{"abc"}, X{"def"}, X{"ghi"}});
+ 
+   { // Fail
+     auto a = aset;
+     Y y{"def"};
+     auto [it, res] = a.insert(y);
+     VERIFY(!res);
+     VERIFY(a.size() == 3);
+     VERIFY(it->s == "def");
+     VERIFY(y.s.size() == 3);  // not moved
+   }
+   { // Fail, move
+     auto a = aset;
+     Y y{"def"};
+     auto [it, res] = a.insert(std::move(y));
+     VERIFY(!res);
+     VERIFY(a.size() == 3);
+     VERIFY(it->s == "def");
+     VERIFY(y.s.size() == 3);  // not moved
+   }
+   { // Succeed
+     auto a = aset;
+     Y y{"deg"};
+     auto [it, res] = a.insert(y);
+     VERIFY(res);
+     VERIFY(a.size() == 4);
+     VERIFY(it->s == "deg");
+     VERIFY(y.s.size() == 3);  // not moved
+   }
+   { // Succeed, move
+     auto a = aset;
+     Y y{"deg"};
+     auto [it, res] = a.insert(std::move(y));
+     VERIFY(res);
+     VERIFY(a.size() == 4);
+     VERIFY(it->s == "deg");
+     VERIFY(y.s.empty());  // moved
+   }
+ 
+ 
+   { // Hinted, fail
+     auto a = aset;
+     Y y{"def"};
+     auto it = a.insert(a.begin(), y);
+     VERIFY(a.size() == 3);
+     VERIFY(it->s == "def");
+     VERIFY(y.s.size() == 3);  // not moved
+   }
+   { // Hinted, fail, move
+     auto a = aset;
+     Y y{"def"};
+     auto it = a.insert(a.begin(), std::move(y));
+     VERIFY(a.size() == 3);
+     VERIFY(it->s == "def");
+     VERIFY(y.s.size() == 3);  // not moved
+   }
+   { // Hinted, succeed
+     auto a = aset;
+     Y y{"deh"};
+     auto it = a.insert(a.begin(), y);
+     VERIFY(a.size() == 4);
+     VERIFY(it->s == "deh");
+     VERIFY(y.s.size() == 3);  // not moved
+   }
+   { // Hinted, succeed, move
+     auto a = aset;
+     Y y{"deh"};
+     auto it = a.insert(a.begin(), std::move(y));
+     VERIFY(a.size() == 4);
+     VERIFY(it->s == "deh");
+     VERIFY(y.s.empty());  // moved
+   }
+ }
+ 
+ void test_bucket()
+ {
+   std::unordered_set<X, Hash, Equal> aset{};
+   aset.insert({X{"abc"}, X{"def"}, X{"ghi"}});
+ 
+   auto const& asetr{aset};
+   VERIFY(asetr.bucket(X{"def"}) == asetr.bucket(Y{"def"}));
+ }
+ 
+ int main()
+ {
+   test_insert();
+   test_bucket();
+ }
diff -Nrcpad gcc-16-20260301/libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/105580.cc gcc-16-20260308/libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/105580.cc
*** gcc-16-20260301/libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/105580.cc	Sun Mar  1 22:32:21 2026
--- gcc-16-20260308/libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/105580.cc	Sun Mar  8 22:32:15 2026
***************
*** 1,5 ****
  // { dg-compile }
- // { dg-require-normal-mode "" }
  // { dg-additional-options "-Wnull-dereference" }
  
  #include <string>
--- 1,4 ----
*************** int main()
*** 12,16 ****
    std::string ss(it, end);
    return 0;
  }
- // { dg-warning ".*null pointer dereference" "" { target *-*-* } 0 }
  
--- 11,15 ----
    std::string ss(it, end);
    return 0;
  }
  
+ // { dg-bogus "null pointer dereference" "" { target *-*-* } 0 }
diff -Nrcpad gcc-16-20260301/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/1.cc gcc-16-20260308/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/1.cc
*** gcc-16-20260301/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/1.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/1.cc	Sun Mar  8 22:32:16 2026
***************
*** 0 ****
--- 1,63 ----
+ // { dg-do run { target c++17 } }
+ // { dg-require-filesystem-ts "" }
+ 
+ #include <filesystem>
+ #include <testsuite_hooks.h>
+ #include <testsuite_fs.h>
+ 
+ // Test successful copies
+ 
+ namespace fs = std::filesystem;
+ 
+ void
+ test_successful_copy(const fs::path& p,
+ 		     bool (*is_some_file_type)(const fs::path&))
+ {
+   const std::error_code bad_ec = make_error_code(std::errc::invalid_argument);
+   std::error_code ec;
+ 
+   auto to1 = read_symlink(p);
+ 
+   auto p2 = __gnu_test::nonexistent_path();
+   ec = bad_ec;
+   copy_symlink(p, p2, ec);
+   VERIFY( !ec );
+   VERIFY( exists(symlink_status(p2)) );
+   VERIFY( is_symlink(p2) );
+   VERIFY( is_some_file_type(p2) );
+   auto to2 = read_symlink(p2);
+   VERIFY( to1 == to2 );
+ 
+   // Copy again without ec
+   remove(p2);
+   copy_symlink(p, p2);
+   VERIFY( exists(symlink_status(p2)) );
+   VERIFY( is_symlink(p2) );
+   VERIFY( is_some_file_type(p2) );
+   to2 = read_symlink(p2);
+   VERIFY( to1 == to2 );
+ 
+   remove(p);
+   remove(p2);
+ }
+ 
+ void
+ test01()
+ {
+   __gnu_test::scoped_file f;
+   auto p = __gnu_test::nonexistent_path();
+   create_symlink(f.path, p);
+   test_successful_copy(p, fs::is_regular_file);
+ 
+   auto dir = __gnu_test::nonexistent_path();
+   create_directory(dir);
+   create_directory_symlink(dir, p);
+   test_successful_copy(p, fs::is_directory);
+   remove_all(dir);
+ }
+ 
+ int
+ main()
+ {
+   test01();
+ }
diff -Nrcpad gcc-16-20260301/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/2.cc gcc-16-20260308/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/2.cc
*** gcc-16-20260301/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/2.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/2.cc	Sun Mar  8 22:32:16 2026
***************
*** 0 ****
--- 1,43 ----
+ // { dg-do run { target c++17 } }
+ // { dg-require-filesystem-ts "" }
+ 
+ #include <filesystem>
+ #include <testsuite_hooks.h>
+ #include <testsuite_fs.h>
+ 
+ // Test copying into an existing file
+ 
+ void
+ test01()
+ {
+   std::error_code ec, ec2;
+   __gnu_test::scoped_file f, f2;
+ 
+   auto p = __gnu_test::nonexistent_path();
+   create_symlink(f.path, p);
+ 
+   copy_symlink(p, f2.path, ec);
+   VERIFY( ec );
+   VERIFY( !is_symlink(f2.path) );
+ 
+   try
+     {
+       copy_symlink(p, f2.path);
+     }
+   catch (const std::filesystem::filesystem_error& ex)
+     {
+       ec2 = ex.code();
+       VERIFY( ex.path1() == p );
+       VERIFY( ex.path2() == f2.path );
+     }
+   VERIFY( ec2 == ec );
+   VERIFY( !is_symlink(f2.path) );
+ 
+   remove(p);
+ }
+ 
+ int
+ main()
+ {
+   test01();
+ }
diff -Nrcpad gcc-16-20260301/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/3.cc gcc-16-20260308/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/3.cc
*** gcc-16-20260301/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/3.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/3.cc	Sun Mar  8 22:32:16 2026
***************
*** 0 ****
--- 1,47 ----
+ // { dg-do run { target c++17 } }
+ // { dg-require-filesystem-ts "" }
+ 
+ #include <filesystem>
+ #include <testsuite_hooks.h>
+ #include <testsuite_fs.h>
+ 
+ // Test copying from a non-symlink
+ 
+ namespace fs = std::filesystem;
+ 
+ void
+ test_copy_from_non_symlink(const fs::path& from)
+ {
+   std::error_code ec, ec2;
+   auto p = __gnu_test::nonexistent_path();
+   copy_symlink(from, p, ec);
+   VERIFY( ec );
+   VERIFY( !is_symlink(p) );
+ 
+   try
+     {
+       copy_symlink(from, p);
+     }
+   catch (const fs::filesystem_error& ex)
+     {
+       ec2 = ex.code();
+       VERIFY( ex.path1() == from );
+       VERIFY( ex.path2() == p );
+     }
+   VERIFY( ec2 == ec );
+   VERIFY( !is_symlink(p) );
+ }
+ 
+ void
+ test01()
+ {
+   __gnu_test::scoped_file f;
+   test_copy_from_non_symlink(f.path);
+   test_copy_from_non_symlink(__gnu_test::nonexistent_path());
+ }
+ 
+ int
+ main()
+ {
+   test01();
+ }
diff -Nrcpad gcc-16-20260301/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/4.cc gcc-16-20260308/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/4.cc
*** gcc-16-20260301/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/4.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20260308/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/4.cc	Sun Mar  8 22:32:16 2026
***************
*** 0 ****
--- 1,44 ----
+ // { dg-do run { target c++17 } }
+ // { dg-require-filesystem-ts "" }
+ 
+ #include <filesystem>
+ #include <testsuite_hooks.h>
+ #include <testsuite_fs.h>
+ 
+ // Test copying into an empty path
+ 
+ namespace fs = std::filesystem;
+ 
+ void
+ test01()
+ {
+   std::error_code ec, ec2;
+   __gnu_test::scoped_file f, f2;
+ 
+   auto p = __gnu_test::nonexistent_path();
+   create_symlink(f.path, p);
+ 
+   fs::path empty;
+   copy_symlink(p, empty, ec);
+   VERIFY( ec );
+ 
+   try
+     {
+       copy_symlink(p, empty);
+     }
+   catch (const std::filesystem::filesystem_error& ex)
+     {
+       ec2 = ex.code();
+       VERIFY( ex.path1() == p );
+       VERIFY( ex.path2() == empty );
+     }
+   VERIFY( ec2 == ec );
+ 
+   remove(p);
+ }
+ 
+ int
+ main()
+ {
+   test01();
+ }
diff -Nrcpad gcc-16-20260301/libstdc++-v3/testsuite/29_atomics/atomic/cons/zero_padding.cc gcc-16-20260308/libstdc++-v3/testsuite/29_atomics/atomic/cons/zero_padding.cc
*** gcc-16-20260301/libstdc++-v3/testsuite/29_atomics/atomic/cons/zero_padding.cc	Sun Mar  1 22:32:21 2026
--- gcc-16-20260308/libstdc++-v3/testsuite/29_atomics/atomic/cons/zero_padding.cc	Sun Mar  8 22:32:16 2026
***************
*** 6,17 ****
  #include <cstring>
  #include <testsuite_hooks.h>
  
! struct TailPadding { int i; char c; };
  TailPadding ztail{1, 2}; // zeroed-padding
  constexpr std::atomic<TailPadding> ctail(TailPadding{1,2});
  std::atomic<TailPadding> gtail(TailPadding{1,2});
  
! struct MidPadding { char c; int x; };
  MidPadding zmid{1, 2}; // zeroed-padding
  constexpr std::atomic<MidPadding> cmid(MidPadding{1,2});
  std::atomic<MidPadding> gmid(MidPadding{1,2});
--- 6,17 ----
  #include <cstring>
  #include <testsuite_hooks.h>
  
! struct TailPadding { short i; char c; };
  TailPadding ztail{1, 2}; // zeroed-padding
  constexpr std::atomic<TailPadding> ctail(TailPadding{1,2});
  std::atomic<TailPadding> gtail(TailPadding{1,2});
  
! struct MidPadding { char c; short i; };
  MidPadding zmid{1, 2}; // zeroed-padding
  constexpr std::atomic<MidPadding> cmid(MidPadding{1,2});
  std::atomic<MidPadding> gmid(MidPadding{1,2});
*************** struct Ctor
*** 25,36 ****
  {
    Ctor() = default;
  
!   constexpr Ctor(char pc, char pi)
      : c(pc), i(pi)
    {}
  
    char c;
!   int i;
  };
  
  Ctor zctor{1, 2}; // zeroed-padding
--- 25,36 ----
  {
    Ctor() = default;
  
!   constexpr Ctor(char pc, short pi)
      : c(pc), i(pi)
    {}
  
    char c;
!   short i;
  };
  
  Ctor zctor{1, 2}; // zeroed-padding
