diff -Nrcpad gcc-17-20260607/ChangeLog gcc-17-20260614/ChangeLog
*** gcc-17-20260607/ChangeLog	Sun Jun  7 22:32:05 2026
--- gcc-17-20260614/ChangeLog	Sun Jun 14 22:32:06 2026
***************
*** 1,3 ****
--- 1,12 ----
+ 2026-06-10  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+ 
+ 	* MAINTAINERS (Write After Approval): Add myself.
+ 	(Contributing under the DCO): Add myself.
+ 
+ 2026-06-05  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* .forgejo/CODEOWNERS: New file.
+ 
  2026-06-03  Richard Earnshaw  <rearnsha@arm.com>
  
  	* MAINTAINERS: Add all known missing account names to
diff -Nrcpad gcc-17-20260607/LAST_UPDATED gcc-17-20260614/LAST_UPDATED
*** gcc-17-20260607/LAST_UPDATED	Sun Jun  7 22:32:20 2026
--- gcc-17-20260614/LAST_UPDATED	Sun Jun 14 22:32:21 2026
***************
*** 1 ****
! Obtained from git: master revision b5a3b874b8df2ea2ca82bd97fcd5906f7ebe82d8
--- 1 ----
! Obtained from git: master revision 3be38d59b2dda9d868ce5d9e1ec1218ce9a97129
diff -Nrcpad gcc-17-20260607/MAINTAINERS gcc-17-20260614/MAINTAINERS
*** gcc-17-20260607/MAINTAINERS	Sun Jun  7 22:32:05 2026
--- gcc-17-20260614/MAINTAINERS	Sun Jun 14 22:32:06 2026
*************** Seongbae Park                   spark
*** 743,748 ****
--- 743,749 ----
  Kishan Parmar                   kishan          <kishan@linux.ibm.com>
  Srinath Parvathaneni            sripar01        <srinath.parvathaneni@arm.com>
  Devang Patel                    dpatel          <dpatel@apple.com>
+ Pierre-Emmanuel Patry           pep             <pierre-emmanuel.patry@embecosm.com>
  Andris Pavenis                  andris          <andris.pavenis@iki.fi>
  Fernando Pereira                pronesto        <pronesto@gmail.com>
  Nicola Pero                     nicola          <nicola.pero@meta-innovation.com>
*************** Gaius Mulley
*** 996,1001 ****
--- 997,1003 ----
  Shreya Munnangi                                 <smunnang@qti.qualcomm.com>
  Shreya Munnangi                                 <smunnangi1@ventanamicro.com>
  Szabolcs Nagy                                   <nsz@gcc.gnu.org>
+ Pierre-Emmanuel Patry                           <pierre-emmanuel.patry@embecosm.com>
  Mikael Pettersson                               <mikpelinux@gmail.com>
  Andrew Pinski                                   <andrew.pinski@oss.qualcomm.com>
  Andrew Pinski                                   <quic_apinski@quicinc.com>
diff -Nrcpad gcc-17-20260607/MD5SUMS gcc-17-20260614/MD5SUMS
*** gcc-17-20260607/MD5SUMS	Sun Jun  7 22:32:25 2026
--- gcc-17-20260614/MD5SUMS	Sun Jun 14 22:32:27 2026
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-17-20260607.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-17-20260614.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
*** 25,36 ****
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! c5eab24d1b00e9c358fe336ca7b9706c  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! ef390172d56745b643bd75dd2a4d1ae7  LAST_UPDATED
! f27773e6426ef2d5a3983d0515e39733  MAINTAINERS
  f1b0fe5b41f7272f173407bd21947846  Makefile.def
  fbda720c413d124746752b72dbcfff21  Makefile.in
  1c50f15d0e3e9ca32ee2b28db19f45bd  Makefile.tpl
--- 25,36 ----
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! 57f74f88ec22ecd1be4b690758a7f343  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 4593a7091bc91b8feef319b1abe19e94  LAST_UPDATED
! 1880c45c9da11cb64c9dc58b606aed25  MAINTAINERS
  f1b0fe5b41f7272f173407bd21947846  Makefile.def
  fbda720c413d124746752b72dbcfff21  Makefile.in
  1c50f15d0e3e9ca32ee2b28db19f45bd  Makefile.tpl
*************** dd20b4aa952e750070486e3525cba7bd  config
*** 161,167 ****
  db74a73c3c9c3cc71edec37c2436e082  config/zstd.m4
  07f145e2ab73fc50d9557c0c0e8db303  configure
  2950c8550289b6a39cf4fd0697c88aae  configure.ac
! ddf94e90f15add5959e27c6195e834df  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
  0928ae42250fbb57246cf6e9bff2276b  contrib/analyze_brprob.py
--- 161,167 ----
  db74a73c3c9c3cc71edec37c2436e082  config/zstd.m4
  07f145e2ab73fc50d9557c0c0e8db303  configure
  2950c8550289b6a39cf4fd0697c88aae  configure.ac
! a37b750e129791479dedc9f1364c5cea  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
  0928ae42250fbb57246cf6e9bff2276b  contrib/analyze_brprob.py
*************** d577ea19d05f19a8364f73c9901223b7  contri
*** 215,221 ****
  1462df56c813a6a6cdf97c7baa877d7c  contrib/gcc-changelog/git_commit.py
  4f7f7ef965f965a23efd54be62ace12d  contrib/gcc-changelog/git_email.py
  c9b38a05e2da6bd427df5301db56e913  contrib/gcc-changelog/git_repository.py
! ace74d5e12895fc58653a086bf2d88ac  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
--- 215,221 ----
  1462df56c813a6a6cdf97c7baa877d7c  contrib/gcc-changelog/git_commit.py
  4f7f7ef965f965a23efd54be62ace12d  contrib/gcc-changelog/git_email.py
  c9b38a05e2da6bd427df5301db56e913  contrib/gcc-changelog/git_repository.py
! 51f4a98619b77aacd94398c5b16e8696  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
*** 532,538 ****
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! e346fdfbd68c8cc073c46ec64af14049  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
--- 532,538 ----
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 1d3904086cfd5229d3fe957364ad2e7f  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 570,576 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 35e5b002c0f21c6f27678761beac11b5  gcc/DATESTAMP
  deb513e591f23901188e22323bd3b1d4  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
--- 570,576 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 71c5ea13d0cd8a4e00632d281135f57f  gcc/DATESTAMP
  deb513e591f23901188e22323bd3b1d4  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
*************** c8c9dd1eaee4ffd4d5d9f3ab70fddd4b  gcc/RE
*** 582,588 ****
  cbbaecdd6decdf00007bbdb344d2b282  gcc/acinclude.m4
  e74733ebf762151e601c9e0aa1461a20  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! a8b41eec0276c2c011fdc2a3f8c4135c  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
--- 582,588 ----
  cbbaecdd6decdf00007bbdb344d2b282  gcc/acinclude.m4
  e74733ebf762151e601c9e0aa1461a20  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! 338640e58de97e22d1b7336847aaa878  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
*************** ab759fd51a9df3577039c7b8f157383b  gcc/ad
*** 2212,2218 ****
  cd4d4b0b5f7980853d859e9327ca0eb2  gcc/ada/libgnat/s-forrea.ads
  dba88b8ac4b816a11449b02a6cf3ddd9  gcc/ada/libgnat/s-gearop.adb
  c69f2f693273ed9adade2b01a9fa6559  gcc/ada/libgnat/s-gearop.ads
! 7111901712cc82f723032ce200ebe0ab  gcc/ada/libgnat/s-genbig.adb
  258af6ad8c46e3935174f52a8be3bdd2  gcc/ada/libgnat/s-genbig.ads
  d7eca05160c255a32c468eb73d0d135b  gcc/ada/libgnat/s-geveop.adb
  a072b429f87266af287c57b0e720355e  gcc/ada/libgnat/s-geveop.ads
--- 2212,2218 ----
  cd4d4b0b5f7980853d859e9327ca0eb2  gcc/ada/libgnat/s-forrea.ads
  dba88b8ac4b816a11449b02a6cf3ddd9  gcc/ada/libgnat/s-gearop.adb
  c69f2f693273ed9adade2b01a9fa6559  gcc/ada/libgnat/s-gearop.ads
! 810ca2f1678f6a8eaa9c3c32c8296d1f  gcc/ada/libgnat/s-genbig.adb
  258af6ad8c46e3935174f52a8be3bdd2  gcc/ada/libgnat/s-genbig.ads
  d7eca05160c255a32c468eb73d0d135b  gcc/ada/libgnat/s-geveop.adb
  a072b429f87266af287c57b0e720355e  gcc/ada/libgnat/s-geveop.ads
*************** d22c314f3748309f812d78f5217dda61  gcc/ad
*** 3075,3097 ****
  06b46bffb1b84e16a6f48b29177f42c4  gcc/ada/xutil.ads
  faeebcb240c1559aceb7d9c18c8e6b89  gcc/addresses.h
  ebd823843d8793364a7f82ee9f833c88  gcc/adjust-alignment.cc
! f40462c3f2fd3463c5492d2ec75c3180  gcc/algol68/ChangeLog
  66ab60a51bd61854d9b2898856651b15  gcc/algol68/Make-lang.in
  3d3f2f95b917d0f77d57d977f3eb93d8  gcc/algol68/README
  43ae40e82c1a7a144e905d40b101214e  gcc/algol68/a68-diagnostics.cc
  27119d3e1e8fce1677a27ca87cc9de1e  gcc/algol68/a68-exports.cc
! 9d1dee057d405f889f50a8d5603bcd67  gcc/algol68/a68-imports-archive.cc
! 3f56b9d1ccae52a2033efe07b94bdf13  gcc/algol68/a68-imports.cc
  1dac1ca86874d9b7205cbcd76a3a083b  gcc/algol68/a68-lang.cc
  6430e67f3d47b364ff04181a73b26fea  gcc/algol68/a68-low-bits.cc
  284cf6c8827f78791575949cc1f634ef  gcc/algol68/a68-low-bools.cc
  421c70a781dc2c00722aa019bc39f683  gcc/algol68/a68-low-builtins.cc
  5d44e822782a85c6eb61eabc1a1b7105  gcc/algol68/a68-low-chars.cc
! 17314ba2695ce99574ae8cc642565603  gcc/algol68/a68-low-clauses.cc
  b8582dd8bfb1b150fad9cafd7bbaa3c6  gcc/algol68/a68-low-coercions.cc
  5aa76e1c20ed5b89f9d01211f6bb6cc6  gcc/algol68/a68-low-complex.cc
  983308d754783adbc5c6514c63152bc9  gcc/algol68/a68-low-decls.cc
! c57bfad420a3fc9e3f36e22e0b61c523  gcc/algol68/a68-low-generator.cc
  060012b299f601a60e72193962d6699f  gcc/algol68/a68-low-holes.cc
  da7ad17dfeafca7ca00cffe0379b15a6  gcc/algol68/a68-low-ints.cc
  949d0f0a5f79da34ba44f79c6ebfe282  gcc/algol68/a68-low-misc.cc
--- 3075,3097 ----
  06b46bffb1b84e16a6f48b29177f42c4  gcc/ada/xutil.ads
  faeebcb240c1559aceb7d9c18c8e6b89  gcc/addresses.h
  ebd823843d8793364a7f82ee9f833c88  gcc/adjust-alignment.cc
! f24c15eead0489a23795970e520e9fb0  gcc/algol68/ChangeLog
  66ab60a51bd61854d9b2898856651b15  gcc/algol68/Make-lang.in
  3d3f2f95b917d0f77d57d977f3eb93d8  gcc/algol68/README
  43ae40e82c1a7a144e905d40b101214e  gcc/algol68/a68-diagnostics.cc
  27119d3e1e8fce1677a27ca87cc9de1e  gcc/algol68/a68-exports.cc
! 03c9c1d0f8621e44f9807e21e9191c07  gcc/algol68/a68-imports-archive.cc
! 0e7ad430224046471f25c7b53d0493ee  gcc/algol68/a68-imports.cc
  1dac1ca86874d9b7205cbcd76a3a083b  gcc/algol68/a68-lang.cc
  6430e67f3d47b364ff04181a73b26fea  gcc/algol68/a68-low-bits.cc
  284cf6c8827f78791575949cc1f634ef  gcc/algol68/a68-low-bools.cc
  421c70a781dc2c00722aa019bc39f683  gcc/algol68/a68-low-builtins.cc
  5d44e822782a85c6eb61eabc1a1b7105  gcc/algol68/a68-low-chars.cc
! 33c27b3651337f1436c4737ad94b6ef6  gcc/algol68/a68-low-clauses.cc
  b8582dd8bfb1b150fad9cafd7bbaa3c6  gcc/algol68/a68-low-coercions.cc
  5aa76e1c20ed5b89f9d01211f6bb6cc6  gcc/algol68/a68-low-complex.cc
  983308d754783adbc5c6514c63152bc9  gcc/algol68/a68-low-decls.cc
! a431e4aa975fc2574757ff62a2935acb  gcc/algol68/a68-low-generator.cc
  060012b299f601a60e72193962d6699f  gcc/algol68/a68-low-holes.cc
  da7ad17dfeafca7ca00cffe0379b15a6  gcc/algol68/a68-low-ints.cc
  949d0f0a5f79da34ba44f79c6ebfe282  gcc/algol68/a68-low-misc.cc
*************** aebb4c3b9e607164c25541593333b832  gcc/al
*** 3107,3121 ****
  778d47cffcd16d50f7105f7a8bd35d32  gcc/algol68/a68-low-strings.cc
  de4cb485173b396d55860a98e328be5b  gcc/algol68/a68-low-structs.cc
  7675b3dfcea25bedcbe52f98cecdf7e2  gcc/algol68/a68-low-unions.cc
! a6e5ecaef1ed6511228f0a723dff1320  gcc/algol68/a68-low-units.cc
! d4b4e4692e520c502b349b682fba05fd  gcc/algol68/a68-low.cc
! cc144936af15a60bf305436168b9c147  gcc/algol68/a68-moids-diagnostics.cc
  c8f59e26255a9bc185068084b4135289  gcc/algol68/a68-moids-misc.cc
  943207507077d65185cd6d089f1249da  gcc/algol68/a68-moids-sorting.cc
  93ab5a30cda3f697bee77eba313c66d6  gcc/algol68/a68-moids-to-string.cc
  5cba262e501051ca9bc9e3c0cec33e74  gcc/algol68/a68-parser-attrs.def
! 4d3a4269579e33a09d28a703d263c6b4  gcc/algol68/a68-parser-bottom-up.cc
! 1bb7066c454105adf2abc3c5f3b91c57  gcc/algol68/a68-parser-brackets.cc
  06167f432b9437d0cc135868d1067782  gcc/algol68/a68-parser-debug.cc
  f9cdfe842db71e53d1378e8dae40d607  gcc/algol68/a68-parser-extract.cc
  fc7ae86022255700f5866b320d5b195d  gcc/algol68/a68-parser-keywords.cc
--- 3107,3121 ----
  778d47cffcd16d50f7105f7a8bd35d32  gcc/algol68/a68-low-strings.cc
  de4cb485173b396d55860a98e328be5b  gcc/algol68/a68-low-structs.cc
  7675b3dfcea25bedcbe52f98cecdf7e2  gcc/algol68/a68-low-unions.cc
! b718cd63af9a74f28042912657edfb4f  gcc/algol68/a68-low-units.cc
! 5c0c66ed30007b50d34d279047ef4bc6  gcc/algol68/a68-low.cc
! 57f5f332612b159fdee8fb6fb9d8ab16  gcc/algol68/a68-moids-diagnostics.cc
  c8f59e26255a9bc185068084b4135289  gcc/algol68/a68-moids-misc.cc
  943207507077d65185cd6d089f1249da  gcc/algol68/a68-moids-sorting.cc
  93ab5a30cda3f697bee77eba313c66d6  gcc/algol68/a68-moids-to-string.cc
  5cba262e501051ca9bc9e3c0cec33e74  gcc/algol68/a68-parser-attrs.def
! 9bdbc6f28f194a0713f8b2d2da7ff395  gcc/algol68/a68-parser-bottom-up.cc
! 48b751158a244bb9aaa84fdd869539d4  gcc/algol68/a68-parser-brackets.cc
  06167f432b9437d0cc135868d1067782  gcc/algol68/a68-parser-debug.cc
  f9cdfe842db71e53d1378e8dae40d607  gcc/algol68/a68-parser-extract.cc
  fc7ae86022255700f5866b320d5b195d  gcc/algol68/a68-parser-keywords.cc
*************** e122741b2dfd6676fd42da92582f9088  gcc/al
*** 3133,3139 ****
  595c3ac77d0431f5a193397bb1229b3e  gcc/algol68/a68-parser-victal.cc
  abb624eb426dd2c8e9a1de68c7d4ecca  gcc/algol68/a68-parser.cc
  bb6a9492686645cd8ede63a3aa41bb2e  gcc/algol68/a68-postulates.cc
! 5c64966b8d066f661eca85bf4451277e  gcc/algol68/a68-pretty-print.h
  614ee2f3c97cf1910484b4ba1b697352  gcc/algol68/a68-tree.def
  d70ae5781a204788596d281c20f889ac  gcc/algol68/a68-types.h
  384e3fcca47f6f61b529f8d95656824a  gcc/algol68/a68-unistr.c
--- 3133,3139 ----
  595c3ac77d0431f5a193397bb1229b3e  gcc/algol68/a68-parser-victal.cc
  abb624eb426dd2c8e9a1de68c7d4ecca  gcc/algol68/a68-parser.cc
  bb6a9492686645cd8ede63a3aa41bb2e  gcc/algol68/a68-postulates.cc
! 420834078dd6203b7dc8a72565747ced  gcc/algol68/a68-pretty-print.h
  614ee2f3c97cf1910484b4ba1b697352  gcc/algol68/a68-tree.def
  d70ae5781a204788596d281c20f889ac  gcc/algol68/a68-types.h
  384e3fcca47f6f61b529f8d95656824a  gcc/algol68/a68-unistr.c
*************** c277cfbf6dc22b5e43687f22a6ef9adb  gcc/bb
*** 3299,3305 ****
  c6e78ac148b4eadc30dfea92c3414885  gcc/builtins.cc
  d5db4c3fd8f2f6328a72905271146ce0  gcc/builtins.def
  4f577c1f20985f1ba3c1672476f1a2da  gcc/builtins.h
! 512933d5e1411ed83649d3c76d9af06d  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
--- 3299,3305 ----
  c6e78ac148b4eadc30dfea92c3414885  gcc/builtins.cc
  d5db4c3fd8f2f6328a72905271146ce0  gcc/builtins.def
  4f577c1f20985f1ba3c1672476f1a2da  gcc/builtins.h
! 2c61cb0d28bd7c28c8a2dd94c2e26bf4  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
*************** fba23d68ba623c33aef279b93a24ee01  gcc/c-
*** 3307,3313 ****
  abc75c3bf4cdfc2d9a6bb6075cf16204  gcc/c-family/c-common.cc
  6522339cd83ff225a1ff9e0eab971eab  gcc/c-family/c-common.def
  37bf7c4b5fa17dd054423201b1566b5b  gcc/c-family/c-common.h
! b74981700895b064aebe6de493055000  gcc/c-family/c-cppbuiltin.cc
  0b9194e38297d00cf3fac80365cc07af  gcc/c-family/c-dump.cc
  785b5f9c39e1d26ec0e4f70880e6202a  gcc/c-family/c-format.cc
  1adde7951b864b565a2b79c5461d43fa  gcc/c-family/c-format.h
--- 3307,3313 ----
  abc75c3bf4cdfc2d9a6bb6075cf16204  gcc/c-family/c-common.cc
  6522339cd83ff225a1ff9e0eab971eab  gcc/c-family/c-common.def
  37bf7c4b5fa17dd054423201b1566b5b  gcc/c-family/c-common.h
! bfd2965f7d480323f9543caf12c3ec8b  gcc/c-family/c-cppbuiltin.cc
  0b9194e38297d00cf3fac80365cc07af  gcc/c-family/c-dump.cc
  785b5f9c39e1d26ec0e4f70880e6202a  gcc/c-family/c-format.cc
  1adde7951b864b565a2b79c5461d43fa  gcc/c-family/c-format.h
*************** eb0fcc324140f72001698df8e19f05c4  gcc/c-
*** 3342,3348 ****
  377686cbbf62a7d61d251d3f74cddb5b  gcc/c-family/known-headers.h
  431045382c41554804be1959c1596be4  gcc/c-family/name-hint.h
  3bae9e281cc87b35f63e906373f3b446  gcc/c-family/stub-objc.cc
! fe4260a7be7fde2b57ccc228ca8227a9  gcc/c/ChangeLog
  cbffb341640e7c4b16792e0951fffeca  gcc/c/Make-lang.in
  3920e3ee16f5b5955d40584fea53c441  gcc/c/c-aux-info.cc
  cd5bab8a4deeaa0369ae59b9403d06a2  gcc/c/c-convert.cc
--- 3342,3348 ----
  377686cbbf62a7d61d251d3f74cddb5b  gcc/c-family/known-headers.h
  431045382c41554804be1959c1596be4  gcc/c-family/name-hint.h
  3bae9e281cc87b35f63e906373f3b446  gcc/c-family/stub-objc.cc
! 62c38179375bc7ba9fce359e20d5ca1b  gcc/c/ChangeLog
  cbffb341640e7c4b16792e0951fffeca  gcc/c/Make-lang.in
  3920e3ee16f5b5955d40584fea53c441  gcc/c/c-aux-info.cc
  cd5bab8a4deeaa0369ae59b9403d06a2  gcc/c/c-convert.cc
*************** fb28bfedbe8c8f41f339af7936b3b22f  gcc/c/
*** 3353,3359 ****
  62012039da265ed806754029f67a24a9  gcc/c/c-lang.h
  0faaa7bc26e8df40db69dd9caad8ced6  gcc/c/c-objc-common.cc
  cbfdd140f14c43c01a6bdf8b1c24b317  gcc/c/c-objc-common.h
! 9060a005ff6781631b822625f97c08fe  gcc/c/c-parser.cc
  f6b634d7c0204c419cf4fb7b48193fad  gcc/c/c-parser.h
  4db955734effe2d0c9aac0379d2e6a8c  gcc/c/c-tree.def
  3ee5aefcb5c9ebc5fed7991af22b0426  gcc/c/c-tree.h
--- 3353,3359 ----
  62012039da265ed806754029f67a24a9  gcc/c/c-lang.h
  0faaa7bc26e8df40db69dd9caad8ced6  gcc/c/c-objc-common.cc
  cbfdd140f14c43c01a6bdf8b1c24b317  gcc/c/c-objc-common.h
! 088825084771eb196b861ce5d5f3bdc1  gcc/c/c-parser.cc
  f6b634d7c0204c419cf4fb7b48193fad  gcc/c/c-parser.h
  4db955734effe2d0c9aac0379d2e6a8c  gcc/c/c-tree.def
  3ee5aefcb5c9ebc5fed7991af22b0426  gcc/c/c-tree.h
*************** b50dcacbe77c96809023aa599a556717  gcc/cg
*** 3394,3401 ****
  a9229e8ac3f0d366e296e57756becd23  gcc/cgraphunit.cc
  45b21ab7ea818c3a3ce60bf8d3cbd252  gcc/channels.h
  f2981f79a749a2269d7ea349ab37ca3e  gcc/cif-code.def
! 09d03988a217ad74ced7ea971b200646  gcc/cobol/ChangeLog
! 1cc98de8038acf4c192c2b120e805db9  gcc/cobol/Make-lang.in
  0a84e784d2bc4066654d2377fc6a2930  gcc/cobol/TODO
  721fae29d54f2a632cdf024f72b079d3  gcc/cobol/cbldiag.h
  5fdc70643a73d31fa87ca25eb9bca477  gcc/cobol/cdf-copy.cc
--- 3394,3401 ----
  a9229e8ac3f0d366e296e57756becd23  gcc/cgraphunit.cc
  45b21ab7ea818c3a3ce60bf8d3cbd252  gcc/channels.h
  f2981f79a749a2269d7ea349ab37ca3e  gcc/cif-code.def
! 12f5921096cefbcb17cd8c9dd75b1108  gcc/cobol/ChangeLog
! 1381331b3789da665c6f58266e035819  gcc/cobol/Make-lang.in
  0a84e784d2bc4066654d2377fc6a2930  gcc/cobol/TODO
  721fae29d54f2a632cdf024f72b079d3  gcc/cobol/cbldiag.h
  5fdc70643a73d31fa87ca25eb9bca477  gcc/cobol/cdf-copy.cc
*************** d5c6387d56f84eecf1320e4209ae02fe  gcc/co
*** 3415,3428 ****
  823e15969bf48eb2465696dd3b2fc1c3  gcc/cobol/gcobol.1
  7a73ffe93cdd304879a42f225aa554ee  gcc/cobol/gcobol.3
  21b840090e9923bdd5cb47e4468e3fd9  gcc/cobol/gcobolspec.cc
! efb1d42406d81bfa33a352f000420394  gcc/cobol/genapi.cc
! 2e6da18e4bf1ccaa1f6061db39d669ce  gcc/cobol/genapi.h
! c87389cfc6fe8c9243821fc14007eb15  gcc/cobol/gengen.cc
! 49309164cfe6837cc514856eb3f7dbc9  gcc/cobol/gengen.h
  df7a30acd01b4385a0a156b968940c44  gcc/cobol/genmath.cc
  78d263e35c67698f367e118c95157cb4  gcc/cobol/genmath.h
! 425dd3ae0fb1468a2859f0a1b6695cc8  gcc/cobol/genutil.cc
! e67e0626e5f62e00cb3968c9c4765b78  gcc/cobol/genutil.h
  7b9c1ead6f9d3661133f7f732811719c  gcc/cobol/help.gen
  0c56a591cf166a8d83553c2afd4b3ce3  gcc/cobol/inspect.h
  05f191861e37d52870bb5257c188632f  gcc/cobol/lang-specs.h
--- 3415,3428 ----
  823e15969bf48eb2465696dd3b2fc1c3  gcc/cobol/gcobol.1
  7a73ffe93cdd304879a42f225aa554ee  gcc/cobol/gcobol.3
  21b840090e9923bdd5cb47e4468e3fd9  gcc/cobol/gcobolspec.cc
! e5a8ebed516330e1529b0dfaff1c4cf1  gcc/cobol/genapi.cc
! dcff1db7a3c5ad7ebe61a2cd1a9a43cc  gcc/cobol/genapi.h
! e84856f59c534c371a140bb307ff575f  gcc/cobol/gengen.cc
! 8d0ab0fc1957927b07dd60145858e817  gcc/cobol/gengen.h
  df7a30acd01b4385a0a156b968940c44  gcc/cobol/genmath.cc
  78d263e35c67698f367e118c95157cb4  gcc/cobol/genmath.h
! 005798bea5aff0a2d0489daf5fab38ef  gcc/cobol/genutil.cc
! da8d699acb44e69c442ebfd2e21e5ace  gcc/cobol/genutil.h
  7b9c1ead6f9d3661133f7f732811719c  gcc/cobol/help.gen
  0c56a591cf166a8d83553c2afd4b3ce3  gcc/cobol/inspect.h
  05f191861e37d52870bb5257c188632f  gcc/cobol/lang-specs.h
*************** abf14a41da24b49f1ed7ace2b7002f0a  gcc/co
*** 3431,3437 ****
  0a7ca538b7588a3c6ae13c38480fe3c9  gcc/cobol/lexio.cc
  c691e8bb52e1a438ce2f510250bbf4d9  gcc/cobol/lexio.h
  3a7636dc3c5f3bdc376ccf55cf668b11  gcc/cobol/messages.cc
! bab5d8166395e80ce399a59a4818521c  gcc/cobol/parse.y
  c41675cbbb5dbab3510fa2bfee9118cc  gcc/cobol/parse_ante.h
  658e59750efa818db284c44387330580  gcc/cobol/parse_util.h
  52c1a2af86ace48e713840e3d7efa796  gcc/cobol/scan.l
--- 3431,3438 ----
  0a7ca538b7588a3c6ae13c38480fe3c9  gcc/cobol/lexio.cc
  c691e8bb52e1a438ce2f510250bbf4d9  gcc/cobol/lexio.h
  3a7636dc3c5f3bdc376ccf55cf668b11  gcc/cobol/messages.cc
! 923b5bfadd3bf6834f22c66bcd614c86  gcc/cobol/move.cc
! d1faeffc48ae783744a9ea43d0cb0d45  gcc/cobol/parse.y
  c41675cbbb5dbab3510fa2bfee9118cc  gcc/cobol/parse_ante.h
  658e59750efa818db284c44387330580  gcc/cobol/parse_util.h
  52c1a2af86ace48e713840e3d7efa796  gcc/cobol/scan.l
*************** e82b261f1753be53d32fb056a39f498b  gcc/co
*** 3447,3457 ****
  434f4899280e27d0717b2e56d5bf12f2  gcc/cobol/udf/stored-char-length.cbl
  abb8d16a0003a257bec284675b52ca1f  gcc/cobol/util.cc
  fc1955f9aef8a51d52c932f6331d93a9  gcc/cobol/util.h
! c1bcbb8330a34acab1f51487c3d5b89f  gcc/collect-utils.cc
! 70025ae15b4018e75f6bfcbaa4db4fca  gcc/collect-utils.h
  38716fe5959af2b954c272008e158928  gcc/collect2-aix.cc
  a56f67bf9504f1f91df64d23b9ce6f3b  gcc/collect2-aix.h
! 73c94b051abb120188085034a60659eb  gcc/collect2.cc
  d48c86bc52a7b8ee38281d6069d3eb6a  gcc/collect2.h
  9b54c6ade2ed5ee11859b498e663936e  gcc/color-macros.h
  903401554d90de06743fb9a836e6a45b  gcc/combine-stack-adj.cc
--- 3448,3458 ----
  434f4899280e27d0717b2e56d5bf12f2  gcc/cobol/udf/stored-char-length.cbl
  abb8d16a0003a257bec284675b52ca1f  gcc/cobol/util.cc
  fc1955f9aef8a51d52c932f6331d93a9  gcc/cobol/util.h
! 8eceaeb8e762ac925b791d2a5d2a6e16  gcc/collect-utils.cc
! ac937838bf0c954b723fba6b6a088b4c  gcc/collect-utils.h
  38716fe5959af2b954c272008e158928  gcc/collect2-aix.cc
  a56f67bf9504f1f91df64d23b9ce6f3b  gcc/collect2-aix.h
! 5c269615904f73a96e61a487ef498a9e  gcc/collect2.cc
  d48c86bc52a7b8ee38281d6069d3eb6a  gcc/collect2.h
  9b54c6ade2ed5ee11859b498e663936e  gcc/color-macros.h
  903401554d90de06743fb9a836e6a45b  gcc/combine-stack-adj.cc
*************** d3b28fb0d49a8d683dde6011400fd7e7  gcc/co
*** 3464,3470 ****
  d8f7142c05c4102806a8b26817df17a6  gcc/common/common-target.h
  dfc09a8e551202c9c0a110afa5ecea07  gcc/common/common-targhooks.cc
  c118f6e609bff904f31476e74ab45479  gcc/common/common-targhooks.h
! 12f28565f09d63f7c9dcdbba1020ff32  gcc/common/config/aarch64/aarch64-common.cc
  57bc49c6fc4f28f0e0aa28bcac6f123f  gcc/common/config/aarch64/cpuinfo.h
  3a5ce2d619f3e16155b647a743a1c1c2  gcc/common/config/alpha/alpha-common.cc
  62d17fa2c618153bcc9f0eabb9a8e88c  gcc/common/config/arc/arc-common.cc
--- 3465,3471 ----
  d8f7142c05c4102806a8b26817df17a6  gcc/common/common-target.h
  dfc09a8e551202c9c0a110afa5ecea07  gcc/common/common-targhooks.cc
  c118f6e609bff904f31476e74ab45479  gcc/common/common-targhooks.h
! 7d5fb0cfbc139f52c0d7ffa5387698da  gcc/common/config/aarch64/aarch64-common.cc
  57bc49c6fc4f28f0e0aa28bcac6f123f  gcc/common/config/aarch64/cpuinfo.h
  3a5ce2d619f3e16155b647a743a1c1c2  gcc/common/config/alpha/alpha-common.cc
  62d17fa2c618153bcc9f0eabb9a8e88c  gcc/common/config/arc/arc-common.cc
*************** b218f741c2f54f950d065bb40f5125ea  gcc/co
*** 3482,3490 ****
  5b41dfaa1b910962a78074d1e5d611d6  gcc/common/config/gcn/gcn-common.cc
  30ff9a49f51b477d26fe8159736f2269  gcc/common/config/h8300/h8300-common.cc
  68bff662fc543c7d7a0665a388c9b0b7  gcc/common/config/i386/cpuinfo.h
! a5fa9086d60e40b7db480835f9d36467  gcc/common/config/i386/i386-common.cc
! 49d65b2ff86dfacdccef59b3754a2149  gcc/common/config/i386/i386-cpuinfo.h
! 24557722d0737993019d96d84cee0094  gcc/common/config/i386/i386-isas.h
  9dda9971db0422e2c982905c5e39202c  gcc/common/config/ia64/ia64-common.cc
  24847f756d827cf6015cbb798500e296  gcc/common/config/iq2000/iq2000-common.cc
  df0aff91f92c028b3d1911a08cadc2eb  gcc/common/config/lm32/lm32-common.cc
--- 3483,3491 ----
  5b41dfaa1b910962a78074d1e5d611d6  gcc/common/config/gcn/gcn-common.cc
  30ff9a49f51b477d26fe8159736f2269  gcc/common/config/h8300/h8300-common.cc
  68bff662fc543c7d7a0665a388c9b0b7  gcc/common/config/i386/cpuinfo.h
! 09a6376270c5020d2d202134437a4f15  gcc/common/config/i386/i386-common.cc
! bb4bd3d394753429207b9fa1027157f5  gcc/common/config/i386/i386-cpuinfo.h
! 37e6649cf36e5ffa1040bb2a7d9c55f2  gcc/common/config/i386/i386-isas.h
  9dda9971db0422e2c982905c5e39202c  gcc/common/config/ia64/ia64-common.cc
  24847f756d827cf6015cbb798500e296  gcc/common/config/iq2000/iq2000-common.cc
  df0aff91f92c028b3d1911a08cadc2eb  gcc/common/config/lm32/lm32-common.cc
*************** c47b4191f7bac0196ab63ca2c66bfa98  gcc/co
*** 3528,3538 ****
  148fedc3acd410f7a82133d0e78b02df  gcc/config/aarch64/aarch64-abi-ms.h
  9b6ffa67b7e7f7cc2348fa0dc728072e  gcc/config/aarch64/aarch64-arches.def
  c8a924cfcb693679febdcde3a0cc0809  gcc/config/aarch64/aarch64-builtin-pairs.def
! 4812b8e24c8ff9b327fe47eed325bc7f  gcc/config/aarch64/aarch64-builtins.cc
  a1a7d26ecab3d6681a1d3f5c2cb77275  gcc/config/aarch64/aarch64-builtins.h
! 25b86c8124c381580d324edae15f0634  gcc/config/aarch64/aarch64-c.cc
  5f567f76d6adf2e43af2f3a4704e87d6  gcc/config/aarch64/aarch64-coff.h
! 1e3f3e85ee00a43b3932b2c53c40df08  gcc/config/aarch64/aarch64-cores.def
  cd1537928dd0fadfa53b88b278af0ed2  gcc/config/aarch64/aarch64-cost-tables.h
  5d9722001af118d5011d62beba0e3879  gcc/config/aarch64/aarch64-d.cc
  3d35dd7bbc8358248117e8edb6f6895f  gcc/config/aarch64/aarch64-d.h
--- 3529,3539 ----
  148fedc3acd410f7a82133d0e78b02df  gcc/config/aarch64/aarch64-abi-ms.h
  9b6ffa67b7e7f7cc2348fa0dc728072e  gcc/config/aarch64/aarch64-arches.def
  c8a924cfcb693679febdcde3a0cc0809  gcc/config/aarch64/aarch64-builtin-pairs.def
! 0cda4841b497fb5093947f252eb0c374  gcc/config/aarch64/aarch64-builtins.cc
  a1a7d26ecab3d6681a1d3f5c2cb77275  gcc/config/aarch64/aarch64-builtins.h
! e78b7b23b597b96f765584732788e2c2  gcc/config/aarch64/aarch64-c.cc
  5f567f76d6adf2e43af2f3a4704e87d6  gcc/config/aarch64/aarch64-coff.h
! a1f52502a32d1ceb3b7cf34c2a6c3e05  gcc/config/aarch64/aarch64-cores.def
  cd1537928dd0fadfa53b88b278af0ed2  gcc/config/aarch64/aarch64-cost-tables.h
  5d9722001af118d5011d62beba0e3879  gcc/config/aarch64/aarch64-d.cc
  3d35dd7bbc8358248117e8edb6f6895f  gcc/config/aarch64/aarch64-d.h
*************** c58a041b3d1a2f2c6c49f13e8ad85fdc  gcc/co
*** 3569,3581 ****
  7beff4ec013b184132d7c933faa51208  gcc/config/aarch64/aarch64-sched-dispatch.cc
  b824341b8f6fdb8eb1667425adf63db8  gcc/config/aarch64/aarch64-sched-dispatch.h
  da15606bcbef7961db958c042bf81c05  gcc/config/aarch64/aarch64-simd-builtin-types.def
! 9a92557ac11986ea17d11d6ca82c01e6  gcc/config/aarch64/aarch64-simd-builtins.def
  8f0acfd5455d9572e381b98441bf47a5  gcc/config/aarch64/aarch64-simd-pragma-builtins.def
! 801f94e7c8faf6de3cc4f9c43a2e9140  gcc/config/aarch64/aarch64-simd.md
  f27b31555e077ce25b7e0120a532cfdf  gcc/config/aarch64/aarch64-sme.md
  49d4ace4311e9b1d77ff31b3b8883769  gcc/config/aarch64/aarch64-speculation.cc
  ccd6947cd840e66d1fd0939f222554b6  gcc/config/aarch64/aarch64-sve-builtins-base.cc
! 4bffc3d08855be1cb241231f9009d2ea  gcc/config/aarch64/aarch64-sve-builtins-base.def
  a3c2d7ae7f5a958e8d85a84f0153cbc3  gcc/config/aarch64/aarch64-sve-builtins-base.h
  3b74ccb1bb630368ce4bcb319e098b43  gcc/config/aarch64/aarch64-sve-builtins-functions.h
  c25b1ec2067960f97deb943a3a5d4f05  gcc/config/aarch64/aarch64-sve-builtins-shapes.cc
--- 3570,3582 ----
  7beff4ec013b184132d7c933faa51208  gcc/config/aarch64/aarch64-sched-dispatch.cc
  b824341b8f6fdb8eb1667425adf63db8  gcc/config/aarch64/aarch64-sched-dispatch.h
  da15606bcbef7961db958c042bf81c05  gcc/config/aarch64/aarch64-simd-builtin-types.def
! d8a09875663911c993135dcb394a85a2  gcc/config/aarch64/aarch64-simd-builtins.def
  8f0acfd5455d9572e381b98441bf47a5  gcc/config/aarch64/aarch64-simd-pragma-builtins.def
! 3188584e5d5b43a5b7d7a5101e1c3b37  gcc/config/aarch64/aarch64-simd.md
  f27b31555e077ce25b7e0120a532cfdf  gcc/config/aarch64/aarch64-sme.md
  49d4ace4311e9b1d77ff31b3b8883769  gcc/config/aarch64/aarch64-speculation.cc
  ccd6947cd840e66d1fd0939f222554b6  gcc/config/aarch64/aarch64-sve-builtins-base.cc
! 8b08d9a2c35427a6672b61f1b4dcb6ee  gcc/config/aarch64/aarch64-sve-builtins-base.def
  a3c2d7ae7f5a958e8d85a84f0153cbc3  gcc/config/aarch64/aarch64-sve-builtins-base.h
  3b74ccb1bb630368ce4bcb319e098b43  gcc/config/aarch64/aarch64-sve-builtins-functions.h
  c25b1ec2067960f97deb943a3a5d4f05  gcc/config/aarch64/aarch64-sve-builtins-shapes.cc
*************** c25b1ec2067960f97deb943a3a5d4f05  gcc/co
*** 3584,3610 ****
  b7970cc46633371d0ac4e877297d804a  gcc/config/aarch64/aarch64-sve-builtins-sme.def
  85e1ee139787d52dcd3b9e3d8240453e  gcc/config/aarch64/aarch64-sve-builtins-sme.h
  72d9017965624c13dca47365eeec3166  gcc/config/aarch64/aarch64-sve-builtins-sve2.cc
! cb23144c5423a679d3134b1d188c0337  gcc/config/aarch64/aarch64-sve-builtins-sve2.def
  dee6542d81ff6dc82b52eb6d296ca061  gcc/config/aarch64/aarch64-sve-builtins-sve2.h
  4b18b1308753ec5ff20bee8d6e7953d6  gcc/config/aarch64/aarch64-sve-builtins.cc
  0aaa296fe7e877e67b85468885fdb8b5  gcc/config/aarch64/aarch64-sve-builtins.def
  88f4473ff255da227dee1dbc66c11a5f  gcc/config/aarch64/aarch64-sve-builtins.h
! 55c4112678d0a0410412c7ce1fcfdb1d  gcc/config/aarch64/aarch64-sve.md
! 57fa53db2f0ce52b4dd1477942159a72  gcc/config/aarch64/aarch64-sve2.md
  ce756734c2d086ac2b6f48267acb68ea  gcc/config/aarch64/aarch64-sys-regs.def
  e101bed95b5d0264c364d8bcf1a7705f  gcc/config/aarch64/aarch64-tune.md
  dec4c8fd03ac5636ba08d9523bee06be  gcc/config/aarch64/aarch64-tuning-enums.def
  95775c91d04e9c5cacdd63e6802ca879  gcc/config/aarch64/aarch64-tuning-flags.def
  0eec0dd3dbc5fa83349625d27ac091df  gcc/config/aarch64/aarch64-vxworks.h
! bf4c7ba8ff7427e1317bf786edc322ec  gcc/config/aarch64/aarch64.cc
! c0656e1598f753658efcc03045461ce5  gcc/config/aarch64/aarch64.h
! cb30e420928458bf74960d77afde4b13  gcc/config/aarch64/aarch64.md
  dabea943ce1adc1cd1db5e4de971fbeb  gcc/config/aarch64/aarch64.opt
  5bc2d62d910e1c00bd6eed6ffaa5a18d  gcc/config/aarch64/aarch64.opt.urls
  854a2fd8965d477c5b064388ed354bf1  gcc/config/aarch64/arm_acle.h
  bbf568122f7d6758ec96f71a60e862d8  gcc/config/aarch64/arm_bf16.h
  b156014d3463d59daa50c73ab8e10b54  gcc/config/aarch64/arm_fp16.h
! 03187872864f2917ff217b0dde1e489f  gcc/config/aarch64/arm_neon.h
  f2108dbfce0ac8bc8e9d922391b75555  gcc/config/aarch64/arm_neon_sve_bridge.h
  f30a98583d7c2cf50310b317a5f959be  gcc/config/aarch64/arm_private_fp8.h
  05ff50623c2d55e39715f09f1b461320  gcc/config/aarch64/arm_private_neon_types.h
--- 3585,3611 ----
  b7970cc46633371d0ac4e877297d804a  gcc/config/aarch64/aarch64-sve-builtins-sme.def
  85e1ee139787d52dcd3b9e3d8240453e  gcc/config/aarch64/aarch64-sve-builtins-sme.h
  72d9017965624c13dca47365eeec3166  gcc/config/aarch64/aarch64-sve-builtins-sve2.cc
! 379aa7f50bf3284a7f30799791cadff3  gcc/config/aarch64/aarch64-sve-builtins-sve2.def
  dee6542d81ff6dc82b52eb6d296ca061  gcc/config/aarch64/aarch64-sve-builtins-sve2.h
  4b18b1308753ec5ff20bee8d6e7953d6  gcc/config/aarch64/aarch64-sve-builtins.cc
  0aaa296fe7e877e67b85468885fdb8b5  gcc/config/aarch64/aarch64-sve-builtins.def
  88f4473ff255da227dee1dbc66c11a5f  gcc/config/aarch64/aarch64-sve-builtins.h
! e4380ce8ebca750ee1afa500e3416b2a  gcc/config/aarch64/aarch64-sve.md
! 99e2b5bf86169c73e478d3aa7c9f0ce4  gcc/config/aarch64/aarch64-sve2.md
  ce756734c2d086ac2b6f48267acb68ea  gcc/config/aarch64/aarch64-sys-regs.def
  e101bed95b5d0264c364d8bcf1a7705f  gcc/config/aarch64/aarch64-tune.md
  dec4c8fd03ac5636ba08d9523bee06be  gcc/config/aarch64/aarch64-tuning-enums.def
  95775c91d04e9c5cacdd63e6802ca879  gcc/config/aarch64/aarch64-tuning-flags.def
  0eec0dd3dbc5fa83349625d27ac091df  gcc/config/aarch64/aarch64-vxworks.h
! bc997b164d5bbc42b0f9be344e133f1c  gcc/config/aarch64/aarch64.cc
! 753a74c5f9dbe74e4bb48a1c87e1f9b4  gcc/config/aarch64/aarch64.h
! f406cbc23fb4dfe94405d633070da548  gcc/config/aarch64/aarch64.md
  dabea943ce1adc1cd1db5e4de971fbeb  gcc/config/aarch64/aarch64.opt
  5bc2d62d910e1c00bd6eed6ffaa5a18d  gcc/config/aarch64/aarch64.opt.urls
  854a2fd8965d477c5b064388ed354bf1  gcc/config/aarch64/arm_acle.h
  bbf568122f7d6758ec96f71a60e862d8  gcc/config/aarch64/arm_bf16.h
  b156014d3463d59daa50c73ab8e10b54  gcc/config/aarch64/arm_fp16.h
! bc9f94a8fbc7fa3808cb887c3660f068  gcc/config/aarch64/arm_neon.h
  f2108dbfce0ac8bc8e9d922391b75555  gcc/config/aarch64/arm_neon_sve_bridge.h
  f30a98583d7c2cf50310b317a5f959be  gcc/config/aarch64/arm_private_fp8.h
  05ff50623c2d55e39715f09f1b461320  gcc/config/aarch64/arm_private_neon_types.h
*************** f16190eb3167c87740aaff80ebc646b5  gcc/co
*** 3623,3629 ****
  190b8ad2102cd90ce935883b736ff024  gcc/config/aarch64/geniterators.sh
  b8dedf1142526bb86368b620384f877a  gcc/config/aarch64/gentune.sh
  86eaf33edeb885c2c9ae2a9825879e59  gcc/config/aarch64/host-aarch64-darwin.cc
! c25d8d3784b995e835c558cb80473119  gcc/config/aarch64/iterators.md
  811f43b19ba5f415244c59b4ab377445  gcc/config/aarch64/neoversev2.md
  b382a70dce13e2b3d554e31443c0dbf0  gcc/config/aarch64/olympus.md
  56d541392b6fc0157c039891f4d3f863  gcc/config/aarch64/predicates.md
--- 3624,3630 ----
  190b8ad2102cd90ce935883b736ff024  gcc/config/aarch64/geniterators.sh
  b8dedf1142526bb86368b620384f877a  gcc/config/aarch64/gentune.sh
  86eaf33edeb885c2c9ae2a9825879e59  gcc/config/aarch64/host-aarch64-darwin.cc
! eb4b27d2835b87f0005781658c069a43  gcc/config/aarch64/iterators.md
  811f43b19ba5f415244c59b4ab377445  gcc/config/aarch64/neoversev2.md
  b382a70dce13e2b3d554e31443c0dbf0  gcc/config/aarch64/olympus.md
  56d541392b6fc0157c039891f4d3f863  gcc/config/aarch64/predicates.md
*************** e05dc280f1503a1c41082725d94d62d7  gcc/co
*** 3643,3648 ****
--- 3644,3650 ----
  670f913d53c6a1f880244576faf330b4  gcc/config/aarch64/tuning_models/ampere1.h
  1b294abeb6683126122fb9d9c174d207  gcc/config/aarch64/tuning_models/ampere1a.h
  96fd0c691708d6dda8214b42d8daff63  gcc/config/aarch64/tuning_models/ampere1b.h
+ 1af7c24f82d2f9a2ca364a311e89e214  gcc/config/aarch64/tuning_models/cortexa320.h
  2aa659f1b5858858deea7c18974bb04a  gcc/config/aarch64/tuning_models/cortexa35.h
  b09a8fa2b31a86ae520f3c4566d11302  gcc/config/aarch64/tuning_models/cortexa53.h
  0615b8073858572fac13f8d34cbf9887  gcc/config/aarch64/tuning_models/cortexa57.h
*************** ca3c352ed251bec441567afd8b02f359  gcc/co
*** 3751,3757 ****
  0edb1e9b59e0e1b8be7de3f690405bba  gcc/config/arm/arm-builtins.cc
  920894cd18c51649dff6d840bfda18de  gcc/config/arm/arm-builtins.h
  34409fea491dd8677014904be3b9080b  gcc/config/arm/arm-c.cc
! 59b907b2534b4e035881307714a958dc  gcc/config/arm/arm-cpus.in
  c2f121656ff76fa330d1690bf063c023  gcc/config/arm/arm-d.cc
  d58398b8674211171ea210f8d3f3883b  gcc/config/arm/arm-d.h
  47204ef76195d8b26239522f177add5f  gcc/config/arm/arm-fixed.md
--- 3753,3759 ----
  0edb1e9b59e0e1b8be7de3f690405bba  gcc/config/arm/arm-builtins.cc
  920894cd18c51649dff6d840bfda18de  gcc/config/arm/arm-builtins.h
  34409fea491dd8677014904be3b9080b  gcc/config/arm/arm-c.cc
! d05249c17631a01074c771fb17e55fde  gcc/config/arm/arm-cpus.in
  c2f121656ff76fa330d1690bf063c023  gcc/config/arm/arm-d.cc
  d58398b8674211171ea210f8d3f3883b  gcc/config/arm/arm-d.h
  47204ef76195d8b26239522f177add5f  gcc/config/arm/arm-fixed.md
*************** b65c3665748e7d55a7c42645ff190690  gcc/co
*** 3773,3782 ****
  841a83f5976919c20a40ed76dda7486d  gcc/config/arm/arm-passes.def
  fdd69edfae02202df6ae011b1644363f  gcc/config/arm/arm-protos.h
  b8dda5ab1f67b388debff95f4a66c82c  gcc/config/arm/arm-simd-builtin-types.def
! 555504756e42d516b613cd492f56e83e  gcc/config/arm/arm-tables.opt
  f805d118929dd79f6bd4dc75c77c968b  gcc/config/arm/arm-tables.opt.urls
! b5f7e0b5b33aa917de47ab3bf691f123  gcc/config/arm/arm-tune.md
! 905daa07105845549310c5d433364b09  gcc/config/arm/arm.cc
  0fac67e2d1f28320b6961fd81d196a57  gcc/config/arm/arm.h
  d198ecf523c5da8b33586452eeb8905b  gcc/config/arm/arm.md
  68b71bf902cc6c9290e847ce76a9fdea  gcc/config/arm/arm.opt
--- 3775,3784 ----
  841a83f5976919c20a40ed76dda7486d  gcc/config/arm/arm-passes.def
  fdd69edfae02202df6ae011b1644363f  gcc/config/arm/arm-protos.h
  b8dda5ab1f67b388debff95f4a66c82c  gcc/config/arm/arm-simd-builtin-types.def
! e45971d867f7d95fe119724df8efe733  gcc/config/arm/arm-tables.opt
  f805d118929dd79f6bd4dc75c77c968b  gcc/config/arm/arm-tables.opt.urls
! e74714d2a15e81f4ec1c5945ec87763a  gcc/config/arm/arm-tune.md
! 325bfeab0e4d91c406b4cf65a60bdcca  gcc/config/arm/arm.cc
  0fac67e2d1f28320b6961fd81d196a57  gcc/config/arm/arm.h
  d198ecf523c5da8b33586452eeb8905b  gcc/config/arm/arm.md
  68b71bf902cc6c9290e847ce76a9fdea  gcc/config/arm/arm.opt
*************** eb5d557ed4a28be8a33a48aa89c84090  gcc/co
*** 3861,3867 ****
  dc8e1ff924dd1f2699f60837b792825a  gcc/config/arm/t-rtems
  d526cefbe510bb4ecbc4a0449c85d458  gcc/config/arm/t-symbian
  2b72777522221c9b0b7ad05aac682ce1  gcc/config/arm/t-vxworks
! a7c5ea8702474f8868fb44e754a4fbf9  gcc/config/arm/thumb1.md
  98f5610cdda65ce4036f9cf6fdaf4a2e  gcc/config/arm/thumb2.md
  a8f8df43eaf7368cf5b32cb8cd95af6a  gcc/config/arm/types.md
  2fb5b4ba1bbd3233f9cca20ea49fc52a  gcc/config/arm/uclinux-eabi.h
--- 3863,3869 ----
  dc8e1ff924dd1f2699f60837b792825a  gcc/config/arm/t-rtems
  d526cefbe510bb4ecbc4a0449c85d458  gcc/config/arm/t-symbian
  2b72777522221c9b0b7ad05aac682ce1  gcc/config/arm/t-vxworks
! bc7bd69e748d4c4fe000215764fc190b  gcc/config/arm/thumb1.md
  98f5610cdda65ce4036f9cf6fdaf4a2e  gcc/config/arm/thumb2.md
  a8f8df43eaf7368cf5b32cb8cd95af6a  gcc/config/arm/types.md
  2fb5b4ba1bbd3233f9cca20ea49fc52a  gcc/config/arm/uclinux-eabi.h
*************** e219596493ffcd798a48b24b22b5e077  gcc/co
*** 3878,3898 ****
  8bb1a840fb87b138c620682ccad6aee4  gcc/config/arm/x-arm
  80d9db7d6773ca2b0d423a9ba3a32fe3  gcc/config/arm/xgene1.md
  9511f4a9a7f32971f54f0124845dd263  gcc/config/avr/avr-arch.h
! 067e03ec8336d08f1291586eb7825adb  gcc/config/avr/avr-c.cc
  7e576974bac73c35660c3df419ddabf4  gcc/config/avr/avr-devices.cc
  6d6cb0cd00b1f0982b71a547d16c599b  gcc/config/avr/avr-dimode.md
! 309d15c699646343debdbf3a50a93a80  gcc/config/avr/avr-fixed.md
  a003e2850cf677560132fd307ecee01f  gcc/config/avr/avr-log.cc
  c29ebb93bbe48714c53c5d397dedbe7f  gcc/config/avr/avr-mcus.def
  b05978bd2969a943265d3549c23b8b59  gcc/config/avr/avr-modes.def
! 4fb124444d8cfdcf964c19206d382a55  gcc/config/avr/avr-passes-fuse-move.h
! b86a49d0f7486dd89bd4f98bb3f4ec3c  gcc/config/avr/avr-passes.cc
  7694efecfa1a86f5d70c1dcee34a8ffd  gcc/config/avr/avr-passes.def
  6033224c6e10fc0028d72d05ef4adc70  gcc/config/avr/avr-protos.h
  4ee8705558d223eb1da7a1266af8c799  gcc/config/avr/avr-stdint.h
! a68b1f333560b33ca2f5c261c91b9311  gcc/config/avr/avr.cc
  7e4633dda230d367d9859c29b7534ae4  gcc/config/avr/avr.h
! e225a05c4cf4e7a5847332b5b4c666d1  gcc/config/avr/avr.md
  2c8e496ccc33a4c3b5ea998449a69941  gcc/config/avr/avr.opt
  f6cef551d36f0002a5f31e6f394d87af  gcc/config/avr/avr.opt.urls
  a2e6c4bc09c4af90d1c01745985baff7  gcc/config/avr/avrlibc.h
--- 3880,3900 ----
  8bb1a840fb87b138c620682ccad6aee4  gcc/config/arm/x-arm
  80d9db7d6773ca2b0d423a9ba3a32fe3  gcc/config/arm/xgene1.md
  9511f4a9a7f32971f54f0124845dd263  gcc/config/avr/avr-arch.h
! 5a487f07fdc89eb23d5189e030286bc0  gcc/config/avr/avr-c.cc
  7e576974bac73c35660c3df419ddabf4  gcc/config/avr/avr-devices.cc
  6d6cb0cd00b1f0982b71a547d16c599b  gcc/config/avr/avr-dimode.md
! b35a61cad18471c12c8d298d86fb1aa3  gcc/config/avr/avr-fixed.md
  a003e2850cf677560132fd307ecee01f  gcc/config/avr/avr-log.cc
  c29ebb93bbe48714c53c5d397dedbe7f  gcc/config/avr/avr-mcus.def
  b05978bd2969a943265d3549c23b8b59  gcc/config/avr/avr-modes.def
! 6c45ecfd28874e5791ad3e04448486e9  gcc/config/avr/avr-passes-fuse-move.h
! d893aaf4f67074e751cfdcb34f3a8fb9  gcc/config/avr/avr-passes.cc
  7694efecfa1a86f5d70c1dcee34a8ffd  gcc/config/avr/avr-passes.def
  6033224c6e10fc0028d72d05ef4adc70  gcc/config/avr/avr-protos.h
  4ee8705558d223eb1da7a1266af8c799  gcc/config/avr/avr-stdint.h
! f772e39663262a701be4b9447775e077  gcc/config/avr/avr.cc
  7e4633dda230d367d9859c29b7534ae4  gcc/config/avr/avr.h
! 06738d1bbd4a98704147fbba73c74d54  gcc/config/avr/avr.md
  2c8e496ccc33a4c3b5ea998449a69941  gcc/config/avr/avr.opt
  f6cef551d36f0002a5f31e6f394d87af  gcc/config/avr/avr.opt.urls
  a2e6c4bc09c4af90d1c01745985baff7  gcc/config/avr/avrlibc.h
*************** c7e412de5ff9b19c0c75fdd820594114  gcc/co
*** 4019,4025 ****
  e8ba563b7eff9a7c1a380d760e1a30a9  gcc/config/csky/t-csky-linux
  94debcb5a1a4860a1f8bc08af1016544  gcc/config/darwin-c.cc
  788e553fba034bd51970934ac61aeeda  gcc/config/darwin-d.cc
! a0bdff699704ff177c2faa64d3ded1b9  gcc/config/darwin-driver.cc
  3ace0bc8572ce616566da404afc795e6  gcc/config/darwin-f.cc
  9c2d09708b2f6cc651ef66ec1ba67645  gcc/config/darwin-ppc-ldouble-patch.def
  573bb1297b0b70aac60bf7462cd630fe  gcc/config/darwin-protos.h
--- 4021,4027 ----
  e8ba563b7eff9a7c1a380d760e1a30a9  gcc/config/csky/t-csky-linux
  94debcb5a1a4860a1f8bc08af1016544  gcc/config/darwin-c.cc
  788e553fba034bd51970934ac61aeeda  gcc/config/darwin-d.cc
! 019d0019ec16eba805f557b8fa4ed2c1  gcc/config/darwin-driver.cc
  3ace0bc8572ce616566da404afc795e6  gcc/config/darwin-f.cc
  9c2d09708b2f6cc651ef66ec1ba67645  gcc/config/darwin-ppc-ldouble-patch.def
  573bb1297b0b70aac60bf7462cd630fe  gcc/config/darwin-protos.h
*************** eb0b0296efa6a142ee4ee7b4cf09c756  gcc/co
*** 4113,4120 ****
  ca8c1935ac88d760dc3a5b7e97558f28  gcc/config/gcn/gcn-tables.opt.urls
  613817ee55713099d08c4eb310ec3de7  gcc/config/gcn/gcn-tree.cc
  5cb7b740e8523be8f70427a45d6a7d83  gcc/config/gcn/gcn-valu.md
! 42ef3a95746ccdbdf19c0335b27b6ba5  gcc/config/gcn/gcn.cc
! 49870aae6cd3227434ea31fbf4eac626  gcc/config/gcn/gcn.h
  94f21cc801fd72f666892531d5f883e4  gcc/config/gcn/gcn.md
  8b501b2f2909b52d8b1fcd7d73dc982a  gcc/config/gcn/gcn.opt
  8316cbfe8905418aa5882486602d17ca  gcc/config/gcn/gcn.opt.urls
--- 4115,4122 ----
  ca8c1935ac88d760dc3a5b7e97558f28  gcc/config/gcn/gcn-tables.opt.urls
  613817ee55713099d08c4eb310ec3de7  gcc/config/gcn/gcn-tree.cc
  5cb7b740e8523be8f70427a45d6a7d83  gcc/config/gcn/gcn-valu.md
! 67f9685f47f627440161ee40c397d2da  gcc/config/gcn/gcn.cc
! d632d949f3da7cfbae018411a2570acb  gcc/config/gcn/gcn.h
  94f21cc801fd72f666892531d5f883e4  gcc/config/gcn/gcn.md
  8b501b2f2909b52d8b1fcd7d73dc982a  gcc/config/gcn/gcn.opt
  8316cbfe8905418aa5882486602d17ca  gcc/config/gcn/gcn.opt.urls
*************** d743703707286fafa2ce425b1d062ee0  gcc/co
*** 4323,4329 ****
  25b3947a11eb9ca52892133ddb36f3f2  gcc/config/i386/i386-rust.h
  2b29265f867fbbb56d430e4a7da5bdf4  gcc/config/i386/i386.cc
  ea7ae4e75b096ab3c94baa5216e47601  gcc/config/i386/i386.h
! 417ee6adbd1378f6f83e12af1d268cc4  gcc/config/i386/i386.md
  7f5e2eb20e3b7ca8af1b3ee7416e8eaf  gcc/config/i386/i386.opt
  b9e680863ab278314c1f2990d2d04fcc  gcc/config/i386/i386.opt.urls
  ec8782b40feb0fc958bf2d6974c70f12  gcc/config/i386/i386elf.h
--- 4325,4331 ----
  25b3947a11eb9ca52892133ddb36f3f2  gcc/config/i386/i386-rust.h
  2b29265f867fbbb56d430e4a7da5bdf4  gcc/config/i386/i386.cc
  ea7ae4e75b096ab3c94baa5216e47601  gcc/config/i386/i386.h
! 6258c4a4414f6ea1c91c89593a26d93a  gcc/config/i386/i386.md
  7f5e2eb20e3b7ca8af1b3ee7416e8eaf  gcc/config/i386/i386.opt
  b9e680863ab278314c1f2990d2d04fcc  gcc/config/i386/i386.opt.urls
  ec8782b40feb0fc958bf2d6974c70f12  gcc/config/i386/i386elf.h
*************** ab248989539b9f02a45e3469f383916f  gcc/co
*** 4601,4607 ****
  4cef30645aab004ee80017065fb0c525  gcc/config/m68k/m68k-protos.h
  9972407ba6ffc9db617e82974a48919a  gcc/config/m68k/m68k-tables.opt
  76abf9d767893fa61fddacca5cea079e  gcc/config/m68k/m68k-tables.opt.urls
! ab4724c177de472eb13fb1b157a5dadf  gcc/config/m68k/m68k.cc
  95d044e825b6ba7ecb45780c16f3b95e  gcc/config/m68k/m68k.h
  edc70cbcb720ae52dc5bccfc9d859e6a  gcc/config/m68k/m68k.md
  adf00f43fe711efc8a91288493587387  gcc/config/m68k/m68k.opt
--- 4603,4609 ----
  4cef30645aab004ee80017065fb0c525  gcc/config/m68k/m68k-protos.h
  9972407ba6ffc9db617e82974a48919a  gcc/config/m68k/m68k-tables.opt
  76abf9d767893fa61fddacca5cea079e  gcc/config/m68k/m68k-tables.opt.urls
! a728f6086aef9aee88b1b427422b6371  gcc/config/m68k/m68k.cc
  95d044e825b6ba7ecb45780c16f3b95e  gcc/config/m68k/m68k.h
  edc70cbcb720ae52dc5bccfc9d859e6a  gcc/config/m68k/m68k.md
  adf00f43fe711efc8a91288493587387  gcc/config/m68k/m68k.opt
*************** d074a00b74c8d59607883f2f8c168c98  gcc/co
*** 4643,4649 ****
  2c6829b33f8e390156576657ae870f00  gcc/config/microblaze/microblaze-c.cc
  d9acafef244dad41d6608fcd8d0fc913  gcc/config/microblaze/microblaze-protos.h
  0964b043cf54302d3309f7f2b54908a6  gcc/config/microblaze/microblaze.cc
! 9a8390624b3900898a6f946ef1b1ec20  gcc/config/microblaze/microblaze.h
  c1c22de89195665e34ef0c62df06069a  gcc/config/microblaze/microblaze.md
  1bfdc8ff504b1a00dc9e86930fd88313  gcc/config/microblaze/microblaze.opt
  66fa9daea12c701fea0c159404d4eeb4  gcc/config/microblaze/microblaze.opt.urls
--- 4645,4651 ----
  2c6829b33f8e390156576657ae870f00  gcc/config/microblaze/microblaze-c.cc
  d9acafef244dad41d6608fcd8d0fc913  gcc/config/microblaze/microblaze-protos.h
  0964b043cf54302d3309f7f2b54908a6  gcc/config/microblaze/microblaze.cc
! 92013cda275d523abfa37b28560c84f8  gcc/config/microblaze/microblaze.h
  c1c22de89195665e34ef0c62df06069a  gcc/config/microblaze/microblaze.md
  1bfdc8ff504b1a00dc9e86930fd88313  gcc/config/microblaze/microblaze.opt
  66fa9daea12c701fea0c159404d4eeb4  gcc/config/microblaze/microblaze.opt.urls
*************** bdb78e19d53ecbecb7fa47ce6ea09c60  gcc/co
*** 4746,4752 ****
  3eb4c72d1e1a0f6395119c15d20dd303  gcc/config/mips/sdemtk.h
  7155aeea80db1a002ae3bd50c51d7ce5  gcc/config/mips/sr71k.md
  fa5d8cea196f74c1f3c4667509bff358  gcc/config/mips/st.h
! b7aec18b820f9a78f885619904e93e34  gcc/config/mips/sync.md
  c5e4b9b5ba4da3dbeef1f76502c067b9  gcc/config/mips/t-elf
  f2d225b26af742788962722eee5d6de9  gcc/config/mips/t-img-elf
  35af05079a0993dec44ca294dc568af0  gcc/config/mips/t-img-linux
--- 4748,4754 ----
  3eb4c72d1e1a0f6395119c15d20dd303  gcc/config/mips/sdemtk.h
  7155aeea80db1a002ae3bd50c51d7ce5  gcc/config/mips/sr71k.md
  fa5d8cea196f74c1f3c4667509bff358  gcc/config/mips/st.h
! db336b82132e034023729a52eb67e6ca  gcc/config/mips/sync.md
  c5e4b9b5ba4da3dbeef1f76502c067b9  gcc/config/mips/t-elf
  f2d225b26af742788962722eee5d6de9  gcc/config/mips/t-img-elf
  35af05079a0993dec44ca294dc568af0  gcc/config/mips/t-img-linux
*************** ea47b9aaff57a2a9d2393ed60a70f379  gcc/co
*** 4920,4930 ****
  8c4edc2eb61a43fb9f67ceb977f850e1  gcc/config/or1k/or1k-opts.h
  0dc32c21bc6353a22cc723aa5e94e7c4  gcc/config/or1k/or1k-protos.h
  9021e16d01097a6b5ac74895c9a3ff2c  gcc/config/or1k/or1k.cc
! 41ea77ba00a7d899c45539f070a4e223  gcc/config/or1k/or1k.h
! 839a5e574f8659cf8076e606e34132a5  gcc/config/or1k/or1k.md
  db353534acb45de5e73096b05454650a  gcc/config/or1k/or1k.opt
  d32c4ec7b5de81e93a91bbcadbbb3527  gcc/config/or1k/or1k.opt.urls
! 22651fbf09588000bcc7dc3b88c0425e  gcc/config/or1k/predicates.md
  a5e069c8411385e0dd7b7d87772309de  gcc/config/or1k/rtems.h
  7eada3f04e4e90cbbbe07969b46f0837  gcc/config/or1k/t-or1k
  f58d4380ee68891690f4302989ce00cb  gcc/config/or1k/t-rtems
--- 4922,4932 ----
  8c4edc2eb61a43fb9f67ceb977f850e1  gcc/config/or1k/or1k-opts.h
  0dc32c21bc6353a22cc723aa5e94e7c4  gcc/config/or1k/or1k-protos.h
  9021e16d01097a6b5ac74895c9a3ff2c  gcc/config/or1k/or1k.cc
! f8a5d88356a5ff970c4d25b031bbb42f  gcc/config/or1k/or1k.h
! 83d5452e2dc479dd20981e7807861cbc  gcc/config/or1k/or1k.md
  db353534acb45de5e73096b05454650a  gcc/config/or1k/or1k.opt
  d32c4ec7b5de81e93a91bbcadbbb3527  gcc/config/or1k/or1k.opt.urls
! 856fe0ca96e194ab13583b8ddb763f29  gcc/config/or1k/predicates.md
  a5e069c8411385e0dd7b7d87772309de  gcc/config/or1k/rtems.h
  7eada3f04e4e90cbbbe07969b46f0837  gcc/config/or1k/t-or1k
  f58d4380ee68891690f4302989ce00cb  gcc/config/or1k/t-rtems
*************** eeb0a81c3d1e5cdd8bc33814345d028a  gcc/co
*** 4974,4980 ****
  fb996d0478e0f9b5e8380d78deae9931  gcc/config/pdp11/constraints.md
  294e3bdfb6a8e6e33d154c9b5ae8ec62  gcc/config/pdp11/pdp11-modes.def
  94c839dc82fe635020d9ed2fc2680a25  gcc/config/pdp11/pdp11-protos.h
! 3392e32833342ae92d4a3bc84c136b89  gcc/config/pdp11/pdp11.cc
  7454635b1b15d3f4bda61e4def4e3200  gcc/config/pdp11/pdp11.h
  c54bf2d4fd13bb74bc3d510b8f75f0b1  gcc/config/pdp11/pdp11.md
  10012acb24169b910382d641b2cbb2c6  gcc/config/pdp11/pdp11.opt
--- 4976,4982 ----
  fb996d0478e0f9b5e8380d78deae9931  gcc/config/pdp11/constraints.md
  294e3bdfb6a8e6e33d154c9b5ae8ec62  gcc/config/pdp11/pdp11-modes.def
  94c839dc82fe635020d9ed2fc2680a25  gcc/config/pdp11/pdp11-protos.h
! 442bce3439d16f453ef6dd49618abea5  gcc/config/pdp11/pdp11.cc
  7454635b1b15d3f4bda61e4def4e3200  gcc/config/pdp11/pdp11.h
  c54bf2d4fd13bb74bc3d510b8f75f0b1  gcc/config/pdp11/pdp11.md
  10012acb24169b910382d641b2cbb2c6  gcc/config/pdp11/pdp11.opt
*************** ba4c660e0aeebd868870a318ae434e75  gcc/co
*** 5020,5026 ****
  db5b3680a38178246dffb8a5874ebaf9  gcc/config/riscv/constraints.md
  cea5b702841429deff64e2e6fd0b626f  gcc/config/riscv/corev.def
  3541ce4817aa1b4ca8a8e3799ba716d8  gcc/config/riscv/corev.md
! 7756abda53649ea4167327df7a1dd51a  gcc/config/riscv/crypto.md
  cf2f4b49f9a1b3787b92baf7d5a969f7  gcc/config/riscv/elf.h
  2510ce821b34e9be6fa995fe43ac5b37  gcc/config/riscv/freebsd.h
  e5846099f736bbc0e13d9013a9274209  gcc/config/riscv/gen-riscv-ext-opt.cc
--- 5022,5028 ----
  db5b3680a38178246dffb8a5874ebaf9  gcc/config/riscv/constraints.md
  cea5b702841429deff64e2e6fd0b626f  gcc/config/riscv/corev.def
  3541ce4817aa1b4ca8a8e3799ba716d8  gcc/config/riscv/corev.md
! e2422c2fce6d2a652b60158b9d2bad0e  gcc/config/riscv/crypto.md
  cf2f4b49f9a1b3787b92baf7d5a969f7  gcc/config/riscv/elf.h
  2510ce821b34e9be6fa995fe43ac5b37  gcc/config/riscv/freebsd.h
  e5846099f736bbc0e13d9013a9274209  gcc/config/riscv/gen-riscv-ext-opt.cc
*************** f345cbe9d8c50068508e75fe59e6b4a6  gcc/co
*** 5067,5073 ****
  7580ff2b6ee1a7e6e08368bacae2ac95  gcc/config/riscv/riscv-opts.h
  b8f6d36a9d7d3ef28a80c20bec990411  gcc/config/riscv/riscv-passes.def
  e1ac1647825642c1e551b9a174630bd6  gcc/config/riscv/riscv-profiles.def
! e1f13cd1a1bd437695158a4577691194  gcc/config/riscv/riscv-protos.h
  2b6774d7dd7980d9eb3f4f24ed1b3e45  gcc/config/riscv/riscv-scalar-crypto.def
  01798b6988317cc1d7a76908a68f458a  gcc/config/riscv/riscv-selftests.cc
  41d585e61cee0deacc33bd07c93e79e2  gcc/config/riscv/riscv-shorten-memrefs.cc
--- 5069,5075 ----
  7580ff2b6ee1a7e6e08368bacae2ac95  gcc/config/riscv/riscv-opts.h
  b8f6d36a9d7d3ef28a80c20bec990411  gcc/config/riscv/riscv-passes.def
  e1ac1647825642c1e551b9a174630bd6  gcc/config/riscv/riscv-profiles.def
! 578b3af4dd50a987973e67a87a005ab7  gcc/config/riscv/riscv-protos.h
  2b6774d7dd7980d9eb3f4f24ed1b3e45  gcc/config/riscv/riscv-scalar-crypto.def
  01798b6988317cc1d7a76908a68f458a  gcc/config/riscv/riscv-selftests.cc
  41d585e61cee0deacc33bd07c93e79e2  gcc/config/riscv/riscv-shorten-memrefs.cc
*************** e1f13cd1a1bd437695158a4577691194  gcc/co
*** 5075,5084 ****
  01ec38533cb246430551648ac4c8e8ce  gcc/config/riscv/riscv-string.cc
  5f2c2bf7c94b8cb13fc50b55194c991e  gcc/config/riscv/riscv-subset.h
  1058561a06280d28aa26974102f3b818  gcc/config/riscv/riscv-target-attr.cc
! 558bfe912d3aa407acbe682f18c4d885  gcc/config/riscv/riscv-v.cc
  34f62419062663f91765f9f50c8f0b62  gcc/config/riscv/riscv-v.h
  9eb2acff4a0e6907ab4fe749d3b1fc7f  gcc/config/riscv/riscv-vect-permconst.cc
! 57f6e7bfe03810287895f1b9f41b469d  gcc/config/riscv/riscv-vector-builtins-bases.cc
  7fc09f50e292c52420537953650fa0de  gcc/config/riscv/riscv-vector-builtins-bases.h
  24999355f5fe486aee79b1d89fbc5d24  gcc/config/riscv/riscv-vector-builtins-functions.def
  b6f59a4e6889b8fdd3423f853347dc12  gcc/config/riscv/riscv-vector-builtins-shapes.cc
--- 5077,5086 ----
  01ec38533cb246430551648ac4c8e8ce  gcc/config/riscv/riscv-string.cc
  5f2c2bf7c94b8cb13fc50b55194c991e  gcc/config/riscv/riscv-subset.h
  1058561a06280d28aa26974102f3b818  gcc/config/riscv/riscv-target-attr.cc
! 4a647945b27a008db34047cdc0d19fe2  gcc/config/riscv/riscv-v.cc
  34f62419062663f91765f9f50c8f0b62  gcc/config/riscv/riscv-v.h
  9eb2acff4a0e6907ab4fe749d3b1fc7f  gcc/config/riscv/riscv-vect-permconst.cc
! 9f834de2c20e638923d3b5c429353434  gcc/config/riscv/riscv-vector-builtins-bases.cc
  7fc09f50e292c52420537953650fa0de  gcc/config/riscv/riscv-vector-builtins-bases.h
  24999355f5fe486aee79b1d89fbc5d24  gcc/config/riscv/riscv-vector-builtins-functions.def
  b6f59a4e6889b8fdd3423f853347dc12  gcc/config/riscv/riscv-vector-builtins-shapes.cc
*************** b6f59a4e6889b8fdd3423f853347dc12  gcc/co
*** 5090,5099 ****
  ee8122b7c30f11ad5dc682dad7cf7f55  gcc/config/riscv/riscv-vector-costs.cc
  4d1160c11520af439eb0e5dc6073e77b  gcc/config/riscv/riscv-vector-costs.h
  4dd506c7e0c9b67fb2b6c5acdf4f44b7  gcc/config/riscv/riscv-vector-switch.def
! d2118ca4ecf36de47f557cd232eeab86  gcc/config/riscv/riscv-vsetvl.cc
! 93865bd42f020c581f89604a40ca7ca2  gcc/config/riscv/riscv-vsetvl.def
  6c148c7c35a1ff5e8c46457f8f3417e8  gcc/config/riscv/riscv-zicfilp.cc
! bbd085005b7a46a80a2d88a686d5b33b  gcc/config/riscv/riscv.cc
  6c784bd0ee5e1b5a8990ada0c77b3101  gcc/config/riscv/riscv.h
  fd9d7795acefef4e29cfd8e45ac4c41d  gcc/config/riscv/riscv.md
  889bc6068f70f03b008968821d92ad40  gcc/config/riscv/riscv.opt
--- 5092,5101 ----
  ee8122b7c30f11ad5dc682dad7cf7f55  gcc/config/riscv/riscv-vector-costs.cc
  4d1160c11520af439eb0e5dc6073e77b  gcc/config/riscv/riscv-vector-costs.h
  4dd506c7e0c9b67fb2b6c5acdf4f44b7  gcc/config/riscv/riscv-vector-switch.def
! 3205f1e7859c9ef2f9de42d862780b0a  gcc/config/riscv/riscv-vsetvl.cc
! 142fb9988d1433586e8fa0e3b072f655  gcc/config/riscv/riscv-vsetvl.def
  6c148c7c35a1ff5e8c46457f8f3417e8  gcc/config/riscv/riscv-zicfilp.cc
! bba5d71f30ef7522aa1d0d8c2ad94450  gcc/config/riscv/riscv.cc
  6c784bd0ee5e1b5a8990ada0c77b3101  gcc/config/riscv/riscv.h
  fd9d7795acefef4e29cfd8e45ac4c41d  gcc/config/riscv/riscv.md
  889bc6068f70f03b008968821d92ad40  gcc/config/riscv/riscv.opt
*************** fd9d7795acefef4e29cfd8e45ac4c41d  gcc/co
*** 5104,5110 ****
  8d30807c5dde2940e316dc646edc71e8  gcc/config/riscv/riscv_vector.h
  1f4b9062bebe7b602fd14e727d6d7e80  gcc/config/riscv/rtems.h
  e7f78ee77ae8bd53e7956fe2fcc08ea3  gcc/config/riscv/sfb.md
! 4d8c5cb8b6b14b70cf371eb6c7351259  gcc/config/riscv/sifive-7.md
  ef8111b151f28f36d377df7b23b6b46f  gcc/config/riscv/sifive-p400.md
  2c11e3c37dd3e9b1a8f83c4920720c32  gcc/config/riscv/sifive-p600.md
  8e357e68d22c0bf2e5463793d9c5d617  gcc/config/riscv/sifive-vector-builtins-bases.cc
--- 5106,5112 ----
  8d30807c5dde2940e316dc646edc71e8  gcc/config/riscv/riscv_vector.h
  1f4b9062bebe7b602fd14e727d6d7e80  gcc/config/riscv/rtems.h
  e7f78ee77ae8bd53e7956fe2fcc08ea3  gcc/config/riscv/sfb.md
! 3dea079d2e88cc2b3fcf9e1456670b86  gcc/config/riscv/sifive-7.md
  ef8111b151f28f36d377df7b23b6b46f  gcc/config/riscv/sifive-p400.md
  2c11e3c37dd3e9b1a8f83c4920720c32  gcc/config/riscv/sifive-p600.md
  8e357e68d22c0bf2e5463793d9c5d617  gcc/config/riscv/sifive-vector-builtins-bases.cc
*************** fe202105dd9e81b9ce8fdcc11d52c294  gcc/co
*** 5126,5142 ****
  457bc4a582b0b8d80c60ee135931f5c8  gcc/config/riscv/thead-peephole.md
  325f22596295559607b476e5a2a4d491  gcc/config/riscv/thead-vector-builtins-functions.def
  20d5b4bb0f3ffe345d7963dae027c447  gcc/config/riscv/thead-vector.md
! 19f3d1111bb5b23042ecc96cce4636a1  gcc/config/riscv/thead.cc
  03801432922f48ba0343aa17544bdba7  gcc/config/riscv/thead.md
  670dbcd81c0f3fdaf864448ca22368e5  gcc/config/riscv/tt-ascalon-d8.md
  dcbac9d3c6831ff1cd18effca9c7bb28  gcc/config/riscv/vector-bfloat16.md
  d321bd9f102b0926d5d2c56c36ad6853  gcc/config/riscv/vector-crypto.md
  a1ab9c2ceb56674539793f23371d6e4e  gcc/config/riscv/vector-iterators.md
! dc73bc8c63cd9594051e8e75b589a1c5  gcc/config/riscv/vector.md
  18d213c106fe52eebc74017d5ff892ce  gcc/config/riscv/xiangshan.md
  a398dfa970d2d1459a986ec657c751a3  gcc/config/riscv/xt-c908.md
  39ba96197510d4ac114a827d7ffbf806  gcc/config/riscv/zc.md
! e8b285aaeb19f7beb40d3ca1287570e7  gcc/config/riscv/zicond.md
  d8e5244a78b41071cc1e0cafc3180db3  gcc/config/rl78/constraints.md
  7b7c876420bfc606ea2233644fb6cf39  gcc/config/rl78/predicates.md
  c90cca4dab29ddc6dc57edf9338ad721  gcc/config/rl78/rl78-c.cc
--- 5128,5144 ----
  457bc4a582b0b8d80c60ee135931f5c8  gcc/config/riscv/thead-peephole.md
  325f22596295559607b476e5a2a4d491  gcc/config/riscv/thead-vector-builtins-functions.def
  20d5b4bb0f3ffe345d7963dae027c447  gcc/config/riscv/thead-vector.md
! 40b8f4bd900ce18f5759248d64b1ce46  gcc/config/riscv/thead.cc
  03801432922f48ba0343aa17544bdba7  gcc/config/riscv/thead.md
  670dbcd81c0f3fdaf864448ca22368e5  gcc/config/riscv/tt-ascalon-d8.md
  dcbac9d3c6831ff1cd18effca9c7bb28  gcc/config/riscv/vector-bfloat16.md
  d321bd9f102b0926d5d2c56c36ad6853  gcc/config/riscv/vector-crypto.md
  a1ab9c2ceb56674539793f23371d6e4e  gcc/config/riscv/vector-iterators.md
! 65bcdc66e602b036eb0769530059cab8  gcc/config/riscv/vector.md
  18d213c106fe52eebc74017d5ff892ce  gcc/config/riscv/xiangshan.md
  a398dfa970d2d1459a986ec657c751a3  gcc/config/riscv/xt-c908.md
  39ba96197510d4ac114a827d7ffbf806  gcc/config/riscv/zc.md
! cffed39482e9cc8d2b89114670e6e6fd  gcc/config/riscv/zicond.md
  d8e5244a78b41071cc1e0cafc3180db3  gcc/config/rl78/constraints.md
  7b7c876420bfc606ea2233644fb6cf39  gcc/config/rl78/predicates.md
  c90cca4dab29ddc6dc57edf9338ad721  gcc/config/rl78/rl78-c.cc
*************** efc4d9cc6fcf24af7ea6e89c0c82127f  gcc/co
*** 5175,5181 ****
  1d313bdc511e984bdf559d61807bde14  gcc/config/rs6000/aix73.h
  ae4bd752599ffdd2833c6e78d03d39f0  gcc/config/rs6000/altivec.h
  f03bdef1224a610cfb7130f3c687b87f  gcc/config/rs6000/altivec.md
! 763da8b6742a2397a31b57728140d44f  gcc/config/rs6000/amo.h
  2b409a82a1747675112a04705e01d157  gcc/config/rs6000/biarch64.h
  f83fd3bf0d9fbc30c9401eec549fdc2c  gcc/config/rs6000/bmi2intrin.h
  161814e9f6f10782769302881ac26227  gcc/config/rs6000/bmiintrin.h
--- 5177,5183 ----
  1d313bdc511e984bdf559d61807bde14  gcc/config/rs6000/aix73.h
  ae4bd752599ffdd2833c6e78d03d39f0  gcc/config/rs6000/altivec.h
  f03bdef1224a610cfb7130f3c687b87f  gcc/config/rs6000/altivec.md
! 505a3f0e71f54fbea2fbd87b1c032185  gcc/config/rs6000/amo.h
  2b409a82a1747675112a04705e01d157  gcc/config/rs6000/biarch64.h
  f83fd3bf0d9fbc30c9401eec549fdc2c  gcc/config/rs6000/bmi2intrin.h
  161814e9f6f10782769302881ac26227  gcc/config/rs6000/bmiintrin.h
*************** db7b2e9490086922f942532dd544a0f6  gcc/co
*** 5399,5405 ****
  fb8513c0c66fb1a6e8d5cde7b08975c5  gcc/config/sh/sh-protos.h
  84e486cd4d15aa213bbd259ab32d3aa2  gcc/config/sh/sh.cc
  de5433ad4ca4e28cd54d4ff7e2862435  gcc/config/sh/sh.h
! 8ab0e214a050bf5345242ce9f1908b55  gcc/config/sh/sh.md
  10ed22d9ca9d7ec14fcf6b1a936fbf8d  gcc/config/sh/sh.opt
  8bfaebe9773073f4977ba6b37f472071  gcc/config/sh/sh.opt.urls
  95f5ec03805045e1d73c1e77a70ac975  gcc/config/sh/sh1.md
--- 5401,5407 ----
  fb8513c0c66fb1a6e8d5cde7b08975c5  gcc/config/sh/sh-protos.h
  84e486cd4d15aa213bbd259ab32d3aa2  gcc/config/sh/sh.cc
  de5433ad4ca4e28cd54d4ff7e2862435  gcc/config/sh/sh.h
! ff0b04e39bd88976fa2ace0f82446a49  gcc/config/sh/sh.md
  10ed22d9ca9d7ec14fcf6b1a936fbf8d  gcc/config/sh/sh.opt
  8bfaebe9773073f4977ba6b37f472071  gcc/config/sh/sh.opt.urls
  95f5ec03805045e1d73c1e77a70ac975  gcc/config/sh/sh1.md
*************** c5ad0142a191862e3e81ecd3573754b3  gcc/co
*** 5643,5649 ****
  a424415c72a544d25e6518e1cf699300  gcc/coroutine-passes.cc
  11fc0e33834de003c7fdd80427589041  gcc/coverage.cc
  d27317cee558d7c78afbdb6529e36649  gcc/coverage.h
! 0bb2e2b478755c066c52b17acb122cf2  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
--- 5645,5651 ----
  a424415c72a544d25e6518e1cf699300  gcc/coroutine-passes.cc
  11fc0e33834de003c7fdd80427589041  gcc/coverage.cc
  d27317cee558d7c78afbdb6529e36649  gcc/coverage.h
! d54d59dcf58b521fdbb4fd5643312d6f  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
*************** f39635970f98bbc4591f6363fe70504b  gcc/cp
*** 5680,5693 ****
  c1c7801b9b0f379e702a4f6cb83972e7  gcc/cp/ChangeLog.ptr
  9aa3cd9f75c785de9f51446e3f295515  gcc/cp/ChangeLog.tree-ssa
  d9b8a76735523ab737e8778b90397d97  gcc/cp/Make-lang.in
! 43fb116b6976dba04df3110dbcdfeb4b  gcc/cp/call.cc
  144dd1ae510a7436b569b007470b62da  gcc/cp/cfns.gperf
  39dd4c5a96c7ea132eb3c7ed039a065e  gcc/cp/cfns.h
  ee0d659057bf0afbc31841764c4fe443  gcc/cp/class.cc
  e51f295e858583af5f9cf88b9530adf7  gcc/cp/config-lang.in
! e0be8cf90353d8cd886b9ca5da35689c  gcc/cp/constexpr.cc
  44493039c741da0cbddb5a8d6d93701a  gcc/cp/constraint.cc
! bb56c1a96926c611778b5a4e4b8f65a8  gcc/cp/contracts.cc
  e77a681f560f3e9500f126febdc67ef6  gcc/cp/contracts.h
  c8e24ad8f1872233434c288fad5b696d  gcc/cp/coroutines.cc
  1817def94193f0cfabd4fa5b321af011  gcc/cp/coroutines.h
--- 5682,5695 ----
  c1c7801b9b0f379e702a4f6cb83972e7  gcc/cp/ChangeLog.ptr
  9aa3cd9f75c785de9f51446e3f295515  gcc/cp/ChangeLog.tree-ssa
  d9b8a76735523ab737e8778b90397d97  gcc/cp/Make-lang.in
! 4b051dfe287ed367b282a42c1c9e55ae  gcc/cp/call.cc
  144dd1ae510a7436b569b007470b62da  gcc/cp/cfns.gperf
  39dd4c5a96c7ea132eb3c7ed039a065e  gcc/cp/cfns.h
  ee0d659057bf0afbc31841764c4fe443  gcc/cp/class.cc
  e51f295e858583af5f9cf88b9530adf7  gcc/cp/config-lang.in
! 4562f1d8705939212883482608ce49d0  gcc/cp/constexpr.cc
  44493039c741da0cbddb5a8d6d93701a  gcc/cp/constraint.cc
! 51c78420b3d7944f7ee182eb3f9c7175  gcc/cp/contracts.cc
  e77a681f560f3e9500f126febdc67ef6  gcc/cp/contracts.h
  c8e24ad8f1872233434c288fad5b696d  gcc/cp/coroutines.cc
  1817def94193f0cfabd4fa5b321af011  gcc/cp/coroutines.h
*************** eba8d8a1725223519fba5d4d69afd5c9  gcc/cp
*** 5698,5710 ****
  a2555a7340b152d673783c07a3d102bb  gcc/cp/cp-objcp-common.h
  ffdd05782c93c0567486bb7ed7eee65a  gcc/cp/cp-trait.def
  461c8f732438052ea1ab7eabb72f0604  gcc/cp/cp-tree.def
! c03d801724cde723034668dbc1ada992  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
! b1e8340145433c7f3b22e500b5dd7e3f  gcc/cp/decl.cc
  6b0c9433f7d3f129a44b59d54babb4eb  gcc/cp/decl.h
  42202b0b377b7e5c09546d00532d188a  gcc/cp/decl2.cc
  12ccd5244973d74a0536adf58261b416  gcc/cp/dump.cc
--- 5700,5712 ----
  a2555a7340b152d673783c07a3d102bb  gcc/cp/cp-objcp-common.h
  ffdd05782c93c0567486bb7ed7eee65a  gcc/cp/cp-trait.def
  461c8f732438052ea1ab7eabb72f0604  gcc/cp/cp-tree.def
! 6ac64a8e849f6e2512915e2981815dd3  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
! badcfe2aaa160ad5df4867178af399b7  gcc/cp/decl.cc
  6b0c9433f7d3f129a44b59d54babb4eb  gcc/cp/decl.h
  42202b0b377b7e5c09546d00532d188a  gcc/cp/decl2.cc
  12ccd5244973d74a0536adf58261b416  gcc/cp/dump.cc
*************** a29b3e9192657e81a1574fb99466348d  gcc/cp
*** 5719,5731 ****
  bc388fb8287f2de7cdf4d78eb8f5d998  gcc/cp/lang-specs.h
  ae7c1d49c3ae546f4a980c3ebc22690d  gcc/cp/lex.cc
  e4ccdd9cbe95dde4cce27394a7613dd9  gcc/cp/logic.cc
! f8cbed1d91cd99c747c785a97fd9a6d0  gcc/cp/mangle.cc
  3d68343c4a9d614bb00b91ad53e79a0b  gcc/cp/mapper-client.cc
  27465babcaf6195d4f438ed36bdd6aff  gcc/cp/mapper-client.h
  4be7487ea09330ba02fb0695bc32c905  gcc/cp/mapper-resolver.cc
  54609938d396496c7c5bf3f4cbfddaec  gcc/cp/metafns.gperf
  04fe5bec0bf79fcb3680aec9913ebc29  gcc/cp/metafns.h
! 3203a4766ff45d343ad6c570c6f85ddf  gcc/cp/method.cc
  8e86eb6d046a3ca86dc6d33e08e4532e  gcc/cp/module.cc
  5af1860ab3b911e2ca1f71f188d9d7eb  gcc/cp/name-lookup.cc
  94a0863bb5120d567c717d513ff59a1d  gcc/cp/name-lookup.h
--- 5721,5733 ----
  bc388fb8287f2de7cdf4d78eb8f5d998  gcc/cp/lang-specs.h
  ae7c1d49c3ae546f4a980c3ebc22690d  gcc/cp/lex.cc
  e4ccdd9cbe95dde4cce27394a7613dd9  gcc/cp/logic.cc
! 5d1a4684e3937405082415b4cf902086  gcc/cp/mangle.cc
  3d68343c4a9d614bb00b91ad53e79a0b  gcc/cp/mapper-client.cc
  27465babcaf6195d4f438ed36bdd6aff  gcc/cp/mapper-client.h
  4be7487ea09330ba02fb0695bc32c905  gcc/cp/mapper-resolver.cc
  54609938d396496c7c5bf3f4cbfddaec  gcc/cp/metafns.gperf
  04fe5bec0bf79fcb3680aec9913ebc29  gcc/cp/metafns.h
! 287c9e2e32dbcb7c0e31ade5b6075f26  gcc/cp/method.cc
  8e86eb6d046a3ca86dc6d33e08e4532e  gcc/cp/module.cc
  5af1860ab3b911e2ca1f71f188d9d7eb  gcc/cp/name-lookup.cc
  94a0863bb5120d567c717d513ff59a1d  gcc/cp/name-lookup.h
*************** f8cbed1d91cd99c747c785a97fd9a6d0  gcc/cp
*** 5733,5750 ****
  9efebf39da56d681d4405dfb9e55e3f5  gcc/cp/optimize.cc
  d880956f1c03e6163f884d302199b1a9  gcc/cp/parser.cc
  fbc41b26ea2a336d3636c9d9c565d845  gcc/cp/parser.h
! 9608cba7bff8585a29f2b78b87221d54  gcc/cp/pt.cc
  25322928eaff39cf167372554c639e02  gcc/cp/ptree.cc
  ba907560f0a0c2c4c1c303c34860c475  gcc/cp/reflect.cc
  6ae3f1ff3ba804579da14445501f9181  gcc/cp/rtti.cc
  e6a800b8f2f93cd8ed05ee026f824eca  gcc/cp/search.cc
! 48e91f37b5d0df9a44f4bc29b9c4b040  gcc/cp/semantics.cc
  64c36b2ea66c9f8f477b19d24e06a2cb  gcc/cp/std-name-hint.gperf
  15cc409f13a8952feb90e94d99ecefa2  gcc/cp/std-name-hint.h
! 6955b3c66244dc86fb60d020901a9c52  gcc/cp/tree.cc
  01e9a381e6fcf3d016d0170ee0ad71d7  gcc/cp/type-utils.h
! 0582410d9d36d0d0475c4a8c6ac150eb  gcc/cp/typeck.cc
! 40eb09924b1139e6f7994869420c0c98  gcc/cp/typeck2.cc
  5b57f64aefce1359bfd8f016a43a8424  gcc/cp/vtable-class-hierarchy.cc
  556f791fb43a25890d32717884f67cd1  gcc/cppbuiltin.cc
  51b40c4eab2c9321ddb49d1acb80edc3  gcc/cppbuiltin.h
--- 5735,5752 ----
  9efebf39da56d681d4405dfb9e55e3f5  gcc/cp/optimize.cc
  d880956f1c03e6163f884d302199b1a9  gcc/cp/parser.cc
  fbc41b26ea2a336d3636c9d9c565d845  gcc/cp/parser.h
! 78b81d85ae83fa133b82bdae0768fd18  gcc/cp/pt.cc
  25322928eaff39cf167372554c639e02  gcc/cp/ptree.cc
  ba907560f0a0c2c4c1c303c34860c475  gcc/cp/reflect.cc
  6ae3f1ff3ba804579da14445501f9181  gcc/cp/rtti.cc
  e6a800b8f2f93cd8ed05ee026f824eca  gcc/cp/search.cc
! 8c2076ff5230f0274ee92ce2321ffab5  gcc/cp/semantics.cc
  64c36b2ea66c9f8f477b19d24e06a2cb  gcc/cp/std-name-hint.gperf
  15cc409f13a8952feb90e94d99ecefa2  gcc/cp/std-name-hint.h
! 539f1909a97d0268fbb0e0148a12fc6e  gcc/cp/tree.cc
  01e9a381e6fcf3d016d0170ee0ad71d7  gcc/cp/type-utils.h
! f8acce2d62b5de5f6c73b511ce3dcf6e  gcc/cp/typeck.cc
! 977a0037d150893837512a88f03fbdad  gcc/cp/typeck2.cc
  5b57f64aefce1359bfd8f016a43a8424  gcc/cp/vtable-class-hierarchy.cc
  556f791fb43a25890d32717884f67cd1  gcc/cppbuiltin.cc
  51b40c4eab2c9321ddb49d1acb80edc3  gcc/cppbuiltin.h
*************** c7362bfcde6697a2d4479f37eb016010  gcc/db
*** 6028,6034 ****
  f03ba47b25bafaac3f55372667e49d7c  gcc/ddg.h
  fc9508a813d61f77432f8e52b0a237ee  gcc/debug.cc
  89780f934584ce7fe2539cb7ac5c8eb8  gcc/debug.h
! 4bf42ab11dcf4d91a4877c0518541a87  gcc/defaults.h
  e9fa9536951db6e9abcb8db4a451ec79  gcc/dep-fusion.cc
  aa5b6daea5bb76571584ecd5c953cb2b  gcc/df-core.cc
  deda7f03e66eeca915d92a67670adf3c  gcc/df-problems.cc
--- 6030,6036 ----
  f03ba47b25bafaac3f55372667e49d7c  gcc/ddg.h
  fc9508a813d61f77432f8e52b0a237ee  gcc/debug.cc
  89780f934584ce7fe2539cb7ac5c8eb8  gcc/debug.h
! 0afbf3ea5c8e19a3c7a80ff5fd51f85b  gcc/defaults.h
  e9fa9536951db6e9abcb8db4a451ec79  gcc/dep-fusion.cc
  aa5b6daea5bb76571584ecd5c953cb2b  gcc/df-core.cc
  deda7f03e66eeca915d92a67670adf3c  gcc/df-problems.cc
*************** c467778ac808c70043fed1b27803d72a  gcc/do
*** 6122,6149 ****
  fe1e57cdb00aa5c5d132ea01fc2e1440  gcc/doc/configterms.texi
  0e05717a84a4459f53d155243f6ca0b5  gcc/doc/contrib.texi
  43c75b80852d2080f354a4ea82a17119  gcc/doc/contribute.texi
! fd48e55b6767d5b63d0f4ed3c04de3f6  gcc/doc/cpp.texi
  a0c8079a0b836c78e78f046d38b8eeff  gcc/doc/cppdiropts.texi
  ee65c9e3e7c3fb1fd0128c23f4130e51  gcc/doc/cppenv.texi
  301ed7e567732d1f0d5899a624068bdd  gcc/doc/cppinternals.texi
  421cc3b7d98386e0eb0abba4242dd54a  gcc/doc/cppopts.texi
  d8b2becdc7d9c570f256e19e1b1ac4f1  gcc/doc/cppwarnopts.texi
! e76fc138a8afd08c7aad06f3f44196cc  gcc/doc/extend.texi
! 483a7b956113f0370528460e842ff7b0  gcc/doc/fragments.texi
  7fb1e4199b2e70228fda69b8065d83c4  gcc/doc/frontends.texi
! 66d5868616d429f3e34b575b3efc6ccc  gcc/doc/gcc.texi
! cf131214fef768edb46718198e8fb4fd  gcc/doc/gccint.texi
  c4c2d60b79a670894debcf60da0e71e9  gcc/doc/gcov-dump.texi
  aa98c00cad5e7ccb99b898a166288d0c  gcc/doc/gcov-tool.texi
! d41902abb1ae8d7531adcbe5c5c94619  gcc/doc/gcov.texi
  22b26b2a0bc6f245726f2ab4df48b680  gcc/doc/generic.texi
  607c918bec01f4cbb7e80544f24c8474  gcc/doc/gimple.texi
! 9752be979a9c9338b6cc0255d25f2d7a  gcc/doc/gm2.texi
  dc4ccd9843d88bc01c909438dabfd6ab  gcc/doc/gnu.texi
  ae0bcb2e6be7ae6b715e2c00eaf668e0  gcc/doc/gty.texi
  16bc58e98e83e3a41c9417ad0738c650  gcc/doc/headerdirs.texi
! cb2462af7cefb9323958455da8bb29f8  gcc/doc/hostconfig.texi
! f99a3eba48a8c4c6b8f5f0539c48fe74  gcc/doc/ifn.texi
  27f346799737382c572e0b085fa46374  gcc/doc/implement-c.texi
  750c860cd31bb47133ca5da76d82247d  gcc/doc/implement-cxx.texi
  8bed7c13f2521176c0f9f4f79c920551  gcc/doc/include/fdl.texi
--- 6124,6151 ----
  fe1e57cdb00aa5c5d132ea01fc2e1440  gcc/doc/configterms.texi
  0e05717a84a4459f53d155243f6ca0b5  gcc/doc/contrib.texi
  43c75b80852d2080f354a4ea82a17119  gcc/doc/contribute.texi
! 67b5d9fe9d30eee9c41c6aeaf2ac9398  gcc/doc/cpp.texi
  a0c8079a0b836c78e78f046d38b8eeff  gcc/doc/cppdiropts.texi
  ee65c9e3e7c3fb1fd0128c23f4130e51  gcc/doc/cppenv.texi
  301ed7e567732d1f0d5899a624068bdd  gcc/doc/cppinternals.texi
  421cc3b7d98386e0eb0abba4242dd54a  gcc/doc/cppopts.texi
  d8b2becdc7d9c570f256e19e1b1ac4f1  gcc/doc/cppwarnopts.texi
! 6150d94cabcc169963e53e4af5be221f  gcc/doc/extend.texi
! d4f889c42d5400f1d26328f8b49db9ba  gcc/doc/fragments.texi
  7fb1e4199b2e70228fda69b8065d83c4  gcc/doc/frontends.texi
! f0e190ef0119097dac4c73c2f9e34d9e  gcc/doc/gcc.texi
! cf733ed9b61e97f816668517b1e38171  gcc/doc/gccint.texi
  c4c2d60b79a670894debcf60da0e71e9  gcc/doc/gcov-dump.texi
  aa98c00cad5e7ccb99b898a166288d0c  gcc/doc/gcov-tool.texi
! e51a53c89babb313ed0cdbf0058b8f8f  gcc/doc/gcov.texi
  22b26b2a0bc6f245726f2ab4df48b680  gcc/doc/generic.texi
  607c918bec01f4cbb7e80544f24c8474  gcc/doc/gimple.texi
! 246241844a454e831a49bc3dfe00b575  gcc/doc/gm2.texi
  dc4ccd9843d88bc01c909438dabfd6ab  gcc/doc/gnu.texi
  ae0bcb2e6be7ae6b715e2c00eaf668e0  gcc/doc/gty.texi
  16bc58e98e83e3a41c9417ad0738c650  gcc/doc/headerdirs.texi
! 8166b5116507edf36a28b468da153627  gcc/doc/hostconfig.texi
! 8bef94dfe6193b975b1307d9e9ddd530  gcc/doc/ifn.texi
  27f346799737382c572e0b085fa46374  gcc/doc/implement-c.texi
  750c860cd31bb47133ca5da76d82247d  gcc/doc/implement-cxx.texi
  8bed7c13f2521176c0f9f4f79c920551  gcc/doc/include/fdl.texi
*************** f99a3eba48a8c4c6b8f5f0539c48fe74  gcc/do
*** 6151,6159 ****
  37d898a82683588b62cca104098ad182  gcc/doc/include/gcc-common.texi
  95c90bf85d3eab67f348ee3ce0bf4050  gcc/doc/include/gpl_v3.texi
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
! 55476184f2c3ec08d40e13da303e400c  gcc/doc/install.texi
  30a2209eee0a2bed76e2d9ff3bd646f2  gcc/doc/install.texi2html
! eab10204e603da3b0039d10f844d1488  gcc/doc/invoke.texi
  dd9d4097ebfa9e936c41913343807268  gcc/doc/languages.texi
  46d2bbbd37002bb71569d0b1f27d7a5a  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
--- 6153,6161 ----
  37d898a82683588b62cca104098ad182  gcc/doc/include/gcc-common.texi
  95c90bf85d3eab67f348ee3ce0bf4050  gcc/doc/include/gpl_v3.texi
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
! 58f82e9f80b79fbe5c244a149d11b764  gcc/doc/install.texi
  30a2209eee0a2bed76e2d9ff3bd646f2  gcc/doc/install.texi2html
! 8342f70a3494ee366e07c97af2c2d020  gcc/doc/invoke.texi
  dd9d4097ebfa9e936c41913343807268  gcc/doc/languages.texi
  46d2bbbd37002bb71569d0b1f27d7a5a  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
*************** e0cdf1b3b23ffeebe52940c4ad627db6  gcc/do
*** 6188,6198 ****
  9ee967e13bc2bed3d3732b8ced2ce585  gcc/doc/libgdiagnostics/tutorial/index.rst
  f72fd7c6a31377f3060455a2da1a6506  gcc/doc/loop.texi
  c2fc9f8e6a1cb39a7237e4ac3d7fcd7f  gcc/doc/lto-dump.texi
! b1b6d8120056485e6de69be9493a2129  gcc/doc/lto.texi
  a0300f293e1294f68bbf43478b2f7e96  gcc/doc/makefile.texi
  721e689329cd07ff27ba55b5c090eae1  gcc/doc/match-and-simplify.texi
! c19c8b136cc6c251d48abea5937c3de5  gcc/doc/md.texi
! afaf0b9b413500a77920c3963dcd3978  gcc/doc/objc.texi
  8b826afc7f71e67445cf33bbcd457ab5  gcc/doc/optinfo.texi
  3abb75ff788f5434702f351bf7a279c9  gcc/doc/options.texi
  a7f516c3979d392e9372c2369c2b589a  gcc/doc/params.texi
--- 6190,6200 ----
  9ee967e13bc2bed3d3732b8ced2ce585  gcc/doc/libgdiagnostics/tutorial/index.rst
  f72fd7c6a31377f3060455a2da1a6506  gcc/doc/loop.texi
  c2fc9f8e6a1cb39a7237e4ac3d7fcd7f  gcc/doc/lto-dump.texi
! 11e47b626bc937cc2bd4a8ac95a59aed  gcc/doc/lto.texi
  a0300f293e1294f68bbf43478b2f7e96  gcc/doc/makefile.texi
  721e689329cd07ff27ba55b5c090eae1  gcc/doc/match-and-simplify.texi
! fa795f38d5f5464a6c902fdf1b3ca027  gcc/doc/md.texi
! ea1e82bfc6105050a63b50c8e40571c0  gcc/doc/objc.texi
  8b826afc7f71e67445cf33bbcd457ab5  gcc/doc/optinfo.texi
  3abb75ff788f5434702f351bf7a279c9  gcc/doc/options.texi
  a7f516c3979d392e9372c2369c2b589a  gcc/doc/params.texi
*************** e54937e427a2584ac4045286c725fab1  gcc/do
*** 6203,6215 ****
  76f8fc71e463a97ad4adf329a3a0c2d9  gcc/doc/riscv-ext.texi
  80620d2d24043b189405087d14062574  gcc/doc/riscv-mcpu.texi
  0a0e5a4479873eec073ad440f5a5ec5b  gcc/doc/riscv-mtune.texi
! 1512e7df17286e8d28c5588a195c1148  gcc/doc/rtl.texi
  b12261ad56bcabd07b4a1b739f271527  gcc/doc/service.texi
! b42247dd1a1b7265b1d45f210d25bc08  gcc/doc/sourcebuild.texi
  9b58fbc10917d12008925e09d91cab55  gcc/doc/specs.texi
  d2b53a62ec4e23a8e4cbe16d2843c100  gcc/doc/standards.texi
! 9efe8fc96d86922e4398cfa5872f4615  gcc/doc/tm.texi
! 08914227e288a6df12fe435e7ecf01c4  gcc/doc/tm.texi.in
  8c9d03a450c358d77823a84f9c62ba4d  gcc/doc/tree-ssa.texi
  2d263928ebdba30d4e096adf01758e79  gcc/doc/trouble.texi
  83ea8ece47a3447f8da5fddd982c9d29  gcc/doc/ux.texi
--- 6205,6217 ----
  76f8fc71e463a97ad4adf329a3a0c2d9  gcc/doc/riscv-ext.texi
  80620d2d24043b189405087d14062574  gcc/doc/riscv-mcpu.texi
  0a0e5a4479873eec073ad440f5a5ec5b  gcc/doc/riscv-mtune.texi
! 3a7211e2e52f65124ae991d190d3827b  gcc/doc/rtl.texi
  b12261ad56bcabd07b4a1b739f271527  gcc/doc/service.texi
! 04b23a5a86ee791de2d326582f7c6edd  gcc/doc/sourcebuild.texi
  9b58fbc10917d12008925e09d91cab55  gcc/doc/specs.texi
  d2b53a62ec4e23a8e4cbe16d2843c100  gcc/doc/standards.texi
! 3338dcc5f4682632b9bc966730e82549  gcc/doc/tm.texi
! 6e94d39cbc1ec35a1fe85ab2311be757  gcc/doc/tm.texi.in
  8c9d03a450c358d77823a84f9c62ba4d  gcc/doc/tree-ssa.texi
  2d263928ebdba30d4e096adf01758e79  gcc/doc/trouble.texi
  83ea8ece47a3447f8da5fddd982c9d29  gcc/doc/ux.texi
*************** d61f76c4b55102abe0d6908ab60489e7  gcc/ex
*** 6247,6253 ****
  2af24b814afb179d911a33733d593eba  gcc/exec-tool.in
  218b6e1049518cb5651dfbf9f18e27a8  gcc/explow.cc
  e0ebf672695dc08e5686ca42b54e3a46  gcc/explow.h
! 7ce98c5db5b17ef5441773f75902ae18  gcc/expmed.cc
  2431f17e1f416ef0b9c38b1b975942a4  gcc/expmed.h
  fb9d1e021a1661336badd57c751c239b  gcc/expr.cc
  ca4a759ee689223d3551cae34e997224  gcc/expr.h
--- 6249,6255 ----
  2af24b814afb179d911a33733d593eba  gcc/exec-tool.in
  218b6e1049518cb5651dfbf9f18e27a8  gcc/explow.cc
  e0ebf672695dc08e5686ca42b54e3a46  gcc/explow.h
! 17fe5dde50f0cda11f8aea8d206024a8  gcc/expmed.cc
  2431f17e1f416ef0b9c38b1b975942a4  gcc/expmed.h
  fb9d1e021a1661336badd57c751c239b  gcc/expr.cc
  ca4a759ee689223d3551cae34e997224  gcc/expr.h
*************** f8396c35f56710f2dd577b8f6644d380  gcc/fo
*** 6268,6274 ****
  ea6b5c7ef50ff662d74bd41a1b063ebe  gcc/fold-const.cc
  52f12f5f49a400327788ee826a094b1e  gcc/fold-const.h
  503251519661f1768b70d9b424bdc12b  gcc/fold-mem-offsets.cc
! eb1f93a243531e471290642ed0642417  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
--- 6270,6276 ----
  ea6b5c7ef50ff662d74bd41a1b063ebe  gcc/fold-const.cc
  52f12f5f49a400327788ee826a094b1e  gcc/fold-const.h
  503251519661f1768b70d9b424bdc12b  gcc/fold-mem-offsets.cc
! f6e58ee882dd941f9a6d4e020e137e3b  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
*************** edad5176d72953374d67effefef0a605  gcc/fo
*** 6310,6359 ****
  48e7987762051d8cf68633af2633e50f  gcc/fortran/cpp.h
  213bc611adee1d275a412b3ed4886e79  gcc/fortran/data.cc
  ac7321680382b23989a6637e02dfb80e  gcc/fortran/data.h
! e33ecfaa23c47943e93838bfb62f298a  gcc/fortran/decl.cc
  1e7039f0bf7d560e4fcdb2cf95db4b7d  gcc/fortran/dependency.cc
  b66b99368e3cd17573ae64a38e36c1de  gcc/fortran/dependency.h
! c0708c6b4fd834b9b9f1753bfdcab877  gcc/fortran/dump-parse-tree.cc
  65aa25da09bdeee948cdad39cfc4d960  gcc/fortran/error.cc
  8210b5c7adb3952169cd600412bce4ba  gcc/fortran/expr.cc
! 3f069b03ce1f8f6cc015a36c646865ea  gcc/fortran/f95-lang.cc
  aabeb93bbe7fb46864a337bef3c2ade5  gcc/fortran/frontend-passes.cc
  c85c9309a4274609c6ff6466621c90f6  gcc/fortran/gfc-diagnostic.def
  afb07146daad7f36a59c52e053f6772f  gcc/fortran/gfc-internals.texi
! abfd4846f0f29eb3dc9c8412bd1f0999  gcc/fortran/gfortran.h
  13d7dc211e7c02525ba3c435e6ea201b  gcc/fortran/gfortran.texi
  11194f3565a8c394b76bd5117830b0ae  gcc/fortran/gfortranspec.cc
! b192d11ae7d5103254333c10b85bf534  gcc/fortran/interface.cc
! c9c62e1550b9762c19830a6658502236  gcc/fortran/intrinsic.cc
  d7ffa84de49936bfc22cdb2a7ef87800  gcc/fortran/intrinsic.h
  5c41fec8827bcc0e1e524b99ce4bfd71  gcc/fortran/intrinsic.texi
! d86a58da6ddcb9265580035a46a846c7  gcc/fortran/invoke.texi
! b08b0f68a74bf3f059116de701943352  gcc/fortran/io.cc
  02af2e093ad4f92649a6370fa6dc3215  gcc/fortran/ioparm.def
  1e9a62cdd76fcac49d91728090a8b2f6  gcc/fortran/iresolve.cc
  4983e51f5909bf7627062a5e3ace5455  gcc/fortran/iso-c-binding.def
  e5c0565c05cf7375c9978273f2e553e7  gcc/fortran/iso-fortran-env.def
  20a111338bfdbe210a5826e590844f81  gcc/fortran/lang-specs.h
! 641be6b7a38ff8d6e0719c634e53320c  gcc/fortran/lang.opt
! d00392d3f6683071d547134f20687f32  gcc/fortran/lang.opt.urls
  c35102e7caaf40998fe2ead86d2716da  gcc/fortran/libgfortran.h
! 4daa4216df55ecc3e4072dd34abcdab0  gcc/fortran/match.cc
  0971e0098b3cb0240602494090ed164b  gcc/fortran/match.h
  bf54232c4c950ed772f4964c4f79629e  gcc/fortran/matchexp.cc
  915f6b30a8c22a5fea18690269a5a4a4  gcc/fortran/mathbuiltins.def
  9687294592a5ccef5d0b8254ab33816b  gcc/fortran/misc.cc
! 499953d37ad4a5c55c557253c98fc4cf  gcc/fortran/module.cc
! 2a0f06d875c4041e49d7cf86eb3cc5b8  gcc/fortran/openmp.cc
  7baca4fc0a6fcd712dcbccab22987c74  gcc/fortran/options.cc
! 7cb10045bc60792d275188a58c5a8c0c  gcc/fortran/parse.cc
  c97a1f016de974126c688bb9c805f323  gcc/fortran/parse.h
  d8018f6b8422ec272ff0ef8a7bd1d39d  gcc/fortran/primary.cc
! eaa9d40b7d6ad6f96ebb97038304dda1  gcc/fortran/resolve.cc
  e23f6eefa51bb3b4caa3d75c0409cfcd  gcc/fortran/scanner.cc
  18963b3f6aacca960fd6aa72b429a9d2  gcc/fortran/scanner.h
  664f19f5a29de9abc4642568f758c47c  gcc/fortran/simplify.cc
  2155dafc4405ccdc4c41df7a1a31a496  gcc/fortran/st.cc
! 0498d96eda124212ca5b1c393579b0a6  gcc/fortran/symbol.cc
  4fa06f769be3f1b439a574ee842c82ca  gcc/fortran/target-memory.cc
  ea8837444e2a08a95a3ea747c94b8106  gcc/fortran/target-memory.h
  37ff635937529ccac2d6069c38129001  gcc/fortran/trans-array.cc
--- 6312,6361 ----
  48e7987762051d8cf68633af2633e50f  gcc/fortran/cpp.h
  213bc611adee1d275a412b3ed4886e79  gcc/fortran/data.cc
  ac7321680382b23989a6637e02dfb80e  gcc/fortran/data.h
! 5f16948a60fd51dc908487225a9c2a76  gcc/fortran/decl.cc
  1e7039f0bf7d560e4fcdb2cf95db4b7d  gcc/fortran/dependency.cc
  b66b99368e3cd17573ae64a38e36c1de  gcc/fortran/dependency.h
! 60ddfb6edfb616222756f26322ba4181  gcc/fortran/dump-parse-tree.cc
  65aa25da09bdeee948cdad39cfc4d960  gcc/fortran/error.cc
  8210b5c7adb3952169cd600412bce4ba  gcc/fortran/expr.cc
! c0284e23f561f80398df460d7c477675  gcc/fortran/f95-lang.cc
  aabeb93bbe7fb46864a337bef3c2ade5  gcc/fortran/frontend-passes.cc
  c85c9309a4274609c6ff6466621c90f6  gcc/fortran/gfc-diagnostic.def
  afb07146daad7f36a59c52e053f6772f  gcc/fortran/gfc-internals.texi
! 17bde97b60110646c6d0cddd5c692cb6  gcc/fortran/gfortran.h
  13d7dc211e7c02525ba3c435e6ea201b  gcc/fortran/gfortran.texi
  11194f3565a8c394b76bd5117830b0ae  gcc/fortran/gfortranspec.cc
! 1f2777c26f9adeab6a6d4fb2a1f4f8ea  gcc/fortran/interface.cc
! f0794d2cccb59fb006917fd000971afb  gcc/fortran/intrinsic.cc
  d7ffa84de49936bfc22cdb2a7ef87800  gcc/fortran/intrinsic.h
  5c41fec8827bcc0e1e524b99ce4bfd71  gcc/fortran/intrinsic.texi
! d1270efc97a26916a776b4a7c77118e7  gcc/fortran/invoke.texi
! 63ef2841e3b8bc71e26098d85be8e799  gcc/fortran/io.cc
  02af2e093ad4f92649a6370fa6dc3215  gcc/fortran/ioparm.def
  1e9a62cdd76fcac49d91728090a8b2f6  gcc/fortran/iresolve.cc
  4983e51f5909bf7627062a5e3ace5455  gcc/fortran/iso-c-binding.def
  e5c0565c05cf7375c9978273f2e553e7  gcc/fortran/iso-fortran-env.def
  20a111338bfdbe210a5826e590844f81  gcc/fortran/lang-specs.h
! ab51c8a2ae0733888b4a71d477aa98a9  gcc/fortran/lang.opt
! 54208069c9076f94d4a14191605630c0  gcc/fortran/lang.opt.urls
  c35102e7caaf40998fe2ead86d2716da  gcc/fortran/libgfortran.h
! e608b93ad2362c5630cb76e573f346ef  gcc/fortran/match.cc
  0971e0098b3cb0240602494090ed164b  gcc/fortran/match.h
  bf54232c4c950ed772f4964c4f79629e  gcc/fortran/matchexp.cc
  915f6b30a8c22a5fea18690269a5a4a4  gcc/fortran/mathbuiltins.def
  9687294592a5ccef5d0b8254ab33816b  gcc/fortran/misc.cc
! 301950f4d255f59000472dd89e4fe7ec  gcc/fortran/module.cc
! 8c5a98fa1963c4bf0007c4ca6bfde812  gcc/fortran/openmp.cc
  7baca4fc0a6fcd712dcbccab22987c74  gcc/fortran/options.cc
! f96b91fecd5db62c95bc50a661965b6d  gcc/fortran/parse.cc
  c97a1f016de974126c688bb9c805f323  gcc/fortran/parse.h
  d8018f6b8422ec272ff0ef8a7bd1d39d  gcc/fortran/primary.cc
! 0fea4ff05bc89aaf9912008d0372521c  gcc/fortran/resolve.cc
  e23f6eefa51bb3b4caa3d75c0409cfcd  gcc/fortran/scanner.cc
  18963b3f6aacca960fd6aa72b429a9d2  gcc/fortran/scanner.h
  664f19f5a29de9abc4642568f758c47c  gcc/fortran/simplify.cc
  2155dafc4405ccdc4c41df7a1a31a496  gcc/fortran/st.cc
! c7c594db0c4a65a9d2ca985e9b16fd26  gcc/fortran/symbol.cc
  4fa06f769be3f1b439a574ee842c82ca  gcc/fortran/target-memory.cc
  ea8837444e2a08a95a3ea747c94b8106  gcc/fortran/target-memory.h
  37ff635937529ccac2d6069c38129001  gcc/fortran/trans-array.cc
*************** a0c40b654df0b5c5213047d26e48e97a  gcc/fo
*** 6361,6377 ****
  5c567026f9fbc4fea9b59c22743687c4  gcc/fortran/trans-common.cc
  98960d7450a15e1ecc9789bd0bde16a7  gcc/fortran/trans-const.cc
  0d5cf4117521dba2aea9c8fd7ac67888  gcc/fortran/trans-const.h
! 9f769120db1677e324b1e700962c3ea1  gcc/fortran/trans-decl.cc
  b6fb13afa4a1b71dec438bb5fc485f2c  gcc/fortran/trans-expr.cc
  91234b8536ed771e30384ccba8947820  gcc/fortran/trans-intrinsic.cc
  269d2b121570a82898b133a3274071a7  gcc/fortran/trans-io.cc
! 6b0678da78ffbe3abeea1818f31665e1  gcc/fortran/trans-openmp.cc
! 708e65ee2f68d58f3456668c68fe9a57  gcc/fortran/trans-stmt.cc
  6fbc90714f9730e84515bbaadff313f9  gcc/fortran/trans-stmt.h
  f8cac5e2268c177aff676d2dbb690f51  gcc/fortran/trans-types.cc
  6b00c9b76b80a96feb87d86b4b06102b  gcc/fortran/trans-types.h
  501a82d1878805678d668a392dc0e48a  gcc/fortran/trans.cc
! a5464198aa6b5015fdf27b2e0f276290  gcc/fortran/trans.h
  95f35aeb3293f3036414b45c9c749d61  gcc/fortran/trigd_fe.inc
  57ebe36e9e77bcb8eab87809d044e0f1  gcc/fortran/types.def
  2512380133ab0852be268312deda8663  gcc/fp-test.cc
--- 6363,6379 ----
  5c567026f9fbc4fea9b59c22743687c4  gcc/fortran/trans-common.cc
  98960d7450a15e1ecc9789bd0bde16a7  gcc/fortran/trans-const.cc
  0d5cf4117521dba2aea9c8fd7ac67888  gcc/fortran/trans-const.h
! 6d304de80d4d8e67d353c979b108ce01  gcc/fortran/trans-decl.cc
  b6fb13afa4a1b71dec438bb5fc485f2c  gcc/fortran/trans-expr.cc
  91234b8536ed771e30384ccba8947820  gcc/fortran/trans-intrinsic.cc
  269d2b121570a82898b133a3274071a7  gcc/fortran/trans-io.cc
! d33e602dc459641cb6375be1335ef501  gcc/fortran/trans-openmp.cc
! 85a774b3580276912ca50b038f91e40b  gcc/fortran/trans-stmt.cc
  6fbc90714f9730e84515bbaadff313f9  gcc/fortran/trans-stmt.h
  f8cac5e2268c177aff676d2dbb690f51  gcc/fortran/trans-types.cc
  6b00c9b76b80a96feb87d86b4b06102b  gcc/fortran/trans-types.h
  501a82d1878805678d668a392dc0e48a  gcc/fortran/trans.cc
! 2d3f54b9ed7f3bbec54c23afc6cab082  gcc/fortran/trans.h
  95f35aeb3293f3036414b45c9c749d61  gcc/fortran/trigd_fe.inc
  57ebe36e9e77bcb8eab87809d044e0f1  gcc/fortran/types.def
  2512380133ab0852be268312deda8663  gcc/fp-test.cc
*************** e4981e3b10513f53ed20b58620dfc56f  gcc/gc
*** 6393,6406 ****
  2e5199869e1ce8b2630e4784fbc6e5e6  gcc/gcc-urlifier.cc
  3ba51d67080efcd8791ea2eaf4103d72  gcc/gcc-urlifier.def
  9110b89a48e29f0f75e8c76eca85c6e2  gcc/gcc-urlifier.h
! cb083f385b77c043fa9d5b314dc0e6c0  gcc/gcc.cc
  09d73a192ef597ac58c7300df5ae4eb3  gcc/gcc.h
  1edfbdaab776ee29780fe98d767e67ed  gcc/gcov-counter.def
  5254cb252da1522a0364a1ef41fa47b1  gcc/gcov-dump.cc
  b3c028c9d05ffaa2d3d12afa3b3d6061  gcc/gcov-io.cc
  15293b4de55e6ae02fef2f87d2745ed3  gcc/gcov-io.h
  59c446908bdce0e047d42a7886f3904a  gcc/gcov-tool.cc
! a7d4d3f7af9ef06d01c75f41d7e7a27e  gcc/gcov.cc
  a03969607849dc4defdd19f2bd8f098b  gcc/gcse-common.cc
  277a0876871bec996d99dc4d7e020460  gcc/gcse-common.h
  a6262b86b3027259364f310d5668e6a3  gcc/gcse.cc
--- 6395,6408 ----
  2e5199869e1ce8b2630e4784fbc6e5e6  gcc/gcc-urlifier.cc
  3ba51d67080efcd8791ea2eaf4103d72  gcc/gcc-urlifier.def
  9110b89a48e29f0f75e8c76eca85c6e2  gcc/gcc-urlifier.h
! e4d45606dfc85a899adc637c4f3fb81e  gcc/gcc.cc
  09d73a192ef597ac58c7300df5ae4eb3  gcc/gcc.h
  1edfbdaab776ee29780fe98d767e67ed  gcc/gcov-counter.def
  5254cb252da1522a0364a1ef41fa47b1  gcc/gcov-dump.cc
  b3c028c9d05ffaa2d3d12afa3b3d6061  gcc/gcov-io.cc
  15293b4de55e6ae02fef2f87d2745ed3  gcc/gcov-io.h
  59c446908bdce0e047d42a7886f3904a  gcc/gcov-tool.cc
! 4c43a4d70f73d0fb0abda2898b32ba30  gcc/gcov.cc
  a03969607849dc4defdd19f2bd8f098b  gcc/gcse-common.cc
  277a0876871bec996d99dc4d7e020460  gcc/gcse-common.h
  a6262b86b3027259364f310d5668e6a3  gcc/gcse.cc
*************** a3c0ce653bff24576326a2c5f8a39b01  gcc/gi
*** 6476,6484 ****
  a6a5de8424eee65e836bba5b21f32a6b  gcc/gimple-low.h
  54de93624274e2e4178b33b729861209  gcc/gimple-lower-bitint.cc
  0ad30ecd31f0473de43171e203bbed3e  gcc/gimple-lower-bitint.h
! a3dff210dd195d7413070490419e4723  gcc/gimple-match-exports.cc
  95ab37dd8c1b67f025a463e428c5f21b  gcc/gimple-match-head.cc
! fc046378b00fb047e166e06622975ba0  gcc/gimple-match.h
  de743ea00fd2b7de01d1041a83c3828c  gcc/gimple-predicate-analysis.cc
  bb051bbc22b445b14ef4c250038f1dbf  gcc/gimple-predicate-analysis.h
  47be556d1ffdffe8df16fdea25e9fe0e  gcc/gimple-predict.h
--- 6478,6486 ----
  a6a5de8424eee65e836bba5b21f32a6b  gcc/gimple-low.h
  54de93624274e2e4178b33b729861209  gcc/gimple-lower-bitint.cc
  0ad30ecd31f0473de43171e203bbed3e  gcc/gimple-lower-bitint.h
! 283afbcda37f06544c84656fdb8c1a68  gcc/gimple-match-exports.cc
  95ab37dd8c1b67f025a463e428c5f21b  gcc/gimple-match-head.cc
! 10f507419edf2453a9f512c5484b6280  gcc/gimple-match.h
  de743ea00fd2b7de01d1041a83c3828c  gcc/gimple-predicate-analysis.cc
  bb051bbc22b445b14ef4c250038f1dbf  gcc/gimple-predicate-analysis.h
  47be556d1ffdffe8df16fdea25e9fe0e  gcc/gimple-predict.h
*************** e7c15ad64690b26467dbd5a00225426e  gcc/gi
*** 6488,6494 ****
  fed39c5b7ccbe9fef78cb20fe5a094d8  gcc/gimple-range-cache.h
  d69dec8fe89be66b09721beced1a6f07  gcc/gimple-range-edge.cc
  1001ed4a3c498c8d659f609b65b1b127  gcc/gimple-range-edge.h
! 2806e73cd5e0290f87d56b812b4ff101  gcc/gimple-range-fold.cc
  c84294b3bbebf60858449ae953fae160  gcc/gimple-range-fold.h
  81b88dce3097e53655e2e56fcded19a4  gcc/gimple-range-gori.cc
  3f397ecbcf642d6d782fe5e774680054  gcc/gimple-range-gori.h
--- 6490,6496 ----
  fed39c5b7ccbe9fef78cb20fe5a094d8  gcc/gimple-range-cache.h
  d69dec8fe89be66b09721beced1a6f07  gcc/gimple-range-edge.cc
  1001ed4a3c498c8d659f609b65b1b127  gcc/gimple-range-edge.h
! 34b6a38743116707c90085896a8a99e9  gcc/gimple-range-fold.cc
  c84294b3bbebf60858449ae953fae160  gcc/gimple-range-fold.h
  81b88dce3097e53655e2e56fcded19a4  gcc/gimple-range-gori.cc
  3f397ecbcf642d6d782fe5e774680054  gcc/gimple-range-gori.h
*************** a4932ff9aca9b1faf77d94e18d1a98dd  gcc/gi
*** 6505,6511 ****
  e45cb6aa50c3ff1d1592d7f2758cb778  gcc/gimple-range-trace.h
  a6fa6bdf95bbe8ce0cd55afe488296b9  gcc/gimple-range.cc
  b284f979b1dc05312e57543e7aa4d6c4  gcc/gimple-range.h
! 2cee725e7b762a6d67090c46b9b6b59c  gcc/gimple-ssa-backprop.cc
  de05af775384560b7d73a320ca04b716  gcc/gimple-ssa-isolate-paths.cc
  841e25177d0ec3b994aade444aaf7d1f  gcc/gimple-ssa-nonnull-compare.cc
  c601c638b474c5f6fa902a24dc57b869  gcc/gimple-ssa-pta-constraints.cc
--- 6507,6513 ----
  e45cb6aa50c3ff1d1592d7f2758cb778  gcc/gimple-range-trace.h
  a6fa6bdf95bbe8ce0cd55afe488296b9  gcc/gimple-range.cc
  b284f979b1dc05312e57543e7aa4d6c4  gcc/gimple-range.h
! 0440c0af18d2225994cea4de1db686ac  gcc/gimple-ssa-backprop.cc
  de05af775384560b7d73a320ca04b716  gcc/gimple-ssa-isolate-paths.cc
  841e25177d0ec3b994aade444aaf7d1f  gcc/gimple-ssa-nonnull-compare.cc
  c601c638b474c5f6fa902a24dc57b869  gcc/gimple-ssa-pta-constraints.cc
*************** b4a116ba62ac3794dc989073ede9a6d7  gcc/gr
*** 6637,6643 ****
  8585d36b3917e41144ca7ee8a6b5e065  gcc/gsyslimits.h
  053ee4a84e4593c88c088f25e153d1a5  gcc/gtm-builtins.def
  0497e6222ef86e3f2580e18f2ade2049  gcc/haifa-sched.cc
! d8ef080a2b3ba3ee183a04862d435ab7  gcc/hard-reg-set.h
  9885346dec7f94219e6def782b8ddf11  gcc/hash-map-tests.cc
  0763ef48851de9362020563a9402da67  gcc/hash-map-traits.h
  7ed09303f4740ebe9dc87a8c39cf001e  gcc/hash-map.h
--- 6639,6645 ----
  8585d36b3917e41144ca7ee8a6b5e065  gcc/gsyslimits.h
  053ee4a84e4593c88c088f25e153d1a5  gcc/gtm-builtins.def
  0497e6222ef86e3f2580e18f2ade2049  gcc/haifa-sched.cc
! d6984762cc23325836cd510bfb64089b  gcc/hard-reg-set.h
  9885346dec7f94219e6def782b8ddf11  gcc/hash-map-tests.cc
  0763ef48851de9362020563a9402da67  gcc/hash-map-traits.h
  7ed09303f4740ebe9dc87a8c39cf001e  gcc/hash-map.h
*************** c4fbf78964d1ce2aab8aa20eea773fa1  gcc/in
*** 6670,6678 ****
  80bc6558521a56fa4936fc0de8d01aca  gcc/insn-addr.h
  7b76bd07f7eca4ab18a5cb546ce1c919  gcc/insn-notes.def
  c7c9628cd16fe3e0263939ceb0a865fa  gcc/int-vector-builder.h
! f86ac0f1bf9201b4a07ff70790169f0a  gcc/internal-fn.cc
! 204cf8b81ac7a709374064e8839c66f8  gcc/internal-fn.def
! 315d7c49c100a8de47177390c93ba205  gcc/internal-fn.h
  8a34b6abb2591b8c30c7fb4187261ee3  gcc/intl.cc
  22c5866f6858fea288e5e2f1adc96e40  gcc/intl.h
  a7d9dfb72122a917ffa9ee90152b059e  gcc/ipa-comdats.cc
--- 6672,6680 ----
  80bc6558521a56fa4936fc0de8d01aca  gcc/insn-addr.h
  7b76bd07f7eca4ab18a5cb546ce1c919  gcc/insn-notes.def
  c7c9628cd16fe3e0263939ceb0a865fa  gcc/int-vector-builder.h
! c6ca4c904385311cad5f96a840b597c6  gcc/internal-fn.cc
! 519ef6dc074b4622ec2aa1501f04ec84  gcc/internal-fn.def
! 91497e3b05fdffd95e2c4995df550e1a  gcc/internal-fn.h
  8a34b6abb2591b8c30c7fb4187261ee3  gcc/intl.cc
  22c5866f6858fea288e5e2f1adc96e40  gcc/intl.h
  a7d9dfb72122a917ffa9ee90152b059e  gcc/ipa-comdats.cc
*************** e1e331896b86db8a2281657bbb21ac72  gcc/ip
*** 6696,6702 ****
  c546dc75ec27388fb7fe834c0aabd230  gcc/ipa-modref-tree.h
  e7cd0ecfbe34f7bcabfe2df033371730  gcc/ipa-modref.cc
  323eab7a20907e08e7d9ca8e513c2259  gcc/ipa-modref.h
! d6f35ebbb8296a00a1d9dfab83c1b56a  gcc/ipa-param-manipulation.cc
  a4332875948bce6b2c7fe2ddc85c9319  gcc/ipa-param-manipulation.h
  04528448bac98f001afab7119e2150fe  gcc/ipa-polymorphic-call.cc
  80b4cc7719c703dfe60955dfb86002ae  gcc/ipa-predicate.cc
--- 6698,6704 ----
  c546dc75ec27388fb7fe834c0aabd230  gcc/ipa-modref-tree.h
  e7cd0ecfbe34f7bcabfe2df033371730  gcc/ipa-modref.cc
  323eab7a20907e08e7d9ca8e513c2259  gcc/ipa-modref.h
! 02028ddeccfdf765d178365b041204fe  gcc/ipa-param-manipulation.cc
  a4332875948bce6b2c7fe2ddc85c9319  gcc/ipa-param-manipulation.h
  04528448bac98f001afab7119e2150fe  gcc/ipa-polymorphic-call.cc
  80b4cc7719c703dfe60955dfb86002ae  gcc/ipa-predicate.cc
*************** a4305cc116c71e1a6c238562a0063f9f  gcc/ip
*** 6720,6734 ****
  2216d8cfd74d4b7a2bb4de5cb3425736  gcc/ira-build.cc
  b786062b08253ae9d5394902431c543d  gcc/ira-color.cc
  35541d3d67c6affe0600d8ad83e83978  gcc/ira-conflicts.cc
! 0381959c1444b3546f46622754914676  gcc/ira-costs.cc
  ceb6470c2a3157ee691a6bcd9c8b0c31  gcc/ira-emit.cc
! c8af03d496284d5b12c149a164095da9  gcc/ira-int.h
  0cb1b2f22c7deface93fef7bfdec4e8c  gcc/ira-lives.cc
! 6692f9ca281bacd89c570394ef66ac7a  gcc/ira.cc
  788d1861bee2322ed419d2c51e2f738e  gcc/ira.h
  9542ea2b8797fa5a935893fafae08ef3  gcc/is-a.h
  090239f8ee6f441be82d0c8cbeaa00de  gcc/iterator-utils.h
! f9fd440ec5f4708ed70f2bfd6f79e613  gcc/jit/ChangeLog
  6071bdf04fb356c5ac99a99ec00c9a12  gcc/jit/ChangeLog.jit
  7228cd4eb7d36930c98343aa4d8186bb  gcc/jit/Make-lang.in
  f59cfd8b37a6dc29fc4889af89fcbec5  gcc/jit/TODO.rst
--- 6722,6736 ----
  2216d8cfd74d4b7a2bb4de5cb3425736  gcc/ira-build.cc
  b786062b08253ae9d5394902431c543d  gcc/ira-color.cc
  35541d3d67c6affe0600d8ad83e83978  gcc/ira-conflicts.cc
! 5f3525d242cdfd851e72963683546d28  gcc/ira-costs.cc
  ceb6470c2a3157ee691a6bcd9c8b0c31  gcc/ira-emit.cc
! 455109af735e288bb01b4630d744cb3e  gcc/ira-int.h
  0cb1b2f22c7deface93fef7bfdec4e8c  gcc/ira-lives.cc
! b9fd89128c41f729b94b931067f8a18e  gcc/ira.cc
  788d1861bee2322ed419d2c51e2f738e  gcc/ira.h
  9542ea2b8797fa5a935893fafae08ef3  gcc/is-a.h
  090239f8ee6f441be82d0c8cbeaa00de  gcc/iterator-utils.h
! aa6d5c63abf239c14ed3b254eb03f17e  gcc/jit/ChangeLog
  6071bdf04fb356c5ac99a99ec00c9a12  gcc/jit/ChangeLog.jit
  7228cd4eb7d36930c98343aa4d8186bb  gcc/jit/Make-lang.in
  f59cfd8b37a6dc29fc4889af89fcbec5  gcc/jit/TODO.rst
*************** bd3ed120f383a7c313a644defb0f5e85  gcc/ji
*** 6815,6821 ****
  06738451a256364b1635493756c9e63a  gcc/jit/jit-w32.cc
  dbe1c7cd9b6c2144785270d7d92b6d0a  gcc/jit/jit-w32.h
  356d828dc1d398757c009123394406c5  gcc/jit/libgccjit++.h
! cdb1f349d15e899ed2ebdcd79afc5a51  gcc/jit/libgccjit.cc
  e4ece7cdc20696f99063180449232226  gcc/jit/libgccjit.exports
  2b777b59e6eefa68b7ab578a140b89c0  gcc/jit/libgccjit.h
  2231affe16b9511efa0fd9f7c8acc0ea  gcc/jit/libgccjit.map
--- 6817,6823 ----
  06738451a256364b1635493756c9e63a  gcc/jit/jit-w32.cc
  dbe1c7cd9b6c2144785270d7d92b6d0a  gcc/jit/jit-w32.h
  356d828dc1d398757c009123394406c5  gcc/jit/libgccjit++.h
! 8ccc8b475c30ec463554a2a728081c13  gcc/jit/libgccjit.cc
  e4ece7cdc20696f99063180449232226  gcc/jit/libgccjit.exports
  2b777b59e6eefa68b7ab578a140b89c0  gcc/jit/libgccjit.h
  2231affe16b9511efa0fd9f7c8acc0ea  gcc/jit/libgccjit.map
*************** a385169af5b029bc24306c678f1db172  gcc/js
*** 6829,6837 ****
  a38ecd9fec5d4acc059c4cbf0dbeef7c  gcc/json.cc
  f723ae7af6ce8158447120f28eebe476  gcc/json.h
  598bd9cf01e2b97715ef52af5b0f2241  gcc/jump.cc
! db38a11d4dce106f820651752f564683  gcc/langhooks-def.h
  ca1a1029159f67a3e118460330d10031  gcc/langhooks.cc
! 813e5b7aea1559276325708debdfa4bd  gcc/langhooks.h
  e5aaf0926ffa1d66709fdc320212070a  gcc/late-combine.cc
  4d0b64200ad1d5cc3dd88026fa268820  gcc/lazily-created.h
  e8cbb0a4e8793ea30337c86b60f8f64a  gcc/lcm.cc
--- 6831,6839 ----
  a38ecd9fec5d4acc059c4cbf0dbeef7c  gcc/json.cc
  f723ae7af6ce8158447120f28eebe476  gcc/json.h
  598bd9cf01e2b97715ef52af5b0f2241  gcc/jump.cc
! 916d3d1c09d2d7fcaad4621cd766cf9c  gcc/langhooks-def.h
  ca1a1029159f67a3e118460330d10031  gcc/langhooks.cc
! 12187dcb97aa8e50980c2b85c590eaf5  gcc/langhooks.h
  e5aaf0926ffa1d66709fdc320212070a  gcc/late-combine.cc
  4d0b64200ad1d5cc3dd88026fa268820  gcc/lazily-created.h
  e8cbb0a4e8793ea30337c86b60f8f64a  gcc/lcm.cc
*************** c6ab645f373e1d6e9ddd212bfc3a95ba  gcc/lo
*** 6860,6866 ****
  d49cf408f9415ef037523414c6e80764  gcc/lower-subreg.h
  4e64f9a8fc62fcb9b7a7fb3362cccd2f  gcc/lra-assigns.cc
  5d1aa184ea3e3c5990e02acbdc762f00  gcc/lra-coalesce.cc
! 147cfecf8bf1cea05242c2f732f06eff  gcc/lra-constraints.cc
  2b91fedbb37f334369acdf769a0ab194  gcc/lra-eliminations.cc
  ed7c49918557e8e7d34488711171abef  gcc/lra-int.h
  568d6d2d43a7728ab0b54f7e837b653a  gcc/lra-lives.cc
--- 6862,6868 ----
  d49cf408f9415ef037523414c6e80764  gcc/lower-subreg.h
  4e64f9a8fc62fcb9b7a7fb3362cccd2f  gcc/lra-assigns.cc
  5d1aa184ea3e3c5990e02acbdc762f00  gcc/lra-coalesce.cc
! 8a52b3e8e1afc6b3d9479e3c09b46ffe  gcc/lra-constraints.cc
  2b91fedbb37f334369acdf769a0ab194  gcc/lra-eliminations.cc
  ed7c49918557e8e7d34488711171abef  gcc/lra-int.h
  568d6d2d43a7728ab0b54f7e837b653a  gcc/lra-lives.cc
*************** fa334f7be97c3e817d1992afa3d08ab9  gcc/lt
*** 6881,6887 ****
  12db435d252d97ba57953664b1867063  gcc/lto-streamer-out.cc
  6c99c98c397a53a6a56da792d20092b0  gcc/lto-streamer.cc
  0fb9ed18ca0ba35bcf8d8a6fb2f5993d  gcc/lto-streamer.h
! 820f40c1512748dbffd8f8ea35738003  gcc/lto-wrapper.cc
  778ec50a448fb6d09ab2d8b1e29dedf2  gcc/lto/ChangeLog
  e2d60c6ff80e4c081f58d1462f513810  gcc/lto/Make-lang.in
  107bbf87618e39ff03662c0cd52a3f35  gcc/lto/common.cc
--- 6883,6889 ----
  12db435d252d97ba57953664b1867063  gcc/lto-streamer-out.cc
  6c99c98c397a53a6a56da792d20092b0  gcc/lto-streamer.cc
  0fb9ed18ca0ba35bcf8d8a6fb2f5993d  gcc/lto-streamer.h
! 7702efeef37dcb3b58fa693b40f46542  gcc/lto-wrapper.cc
  778ec50a448fb6d09ab2d8b1e29dedf2  gcc/lto/ChangeLog
  e2d60c6ff80e4c081f58d1462f513810  gcc/lto/Make-lang.in
  107bbf87618e39ff03662c0cd52a3f35  gcc/lto/common.cc
*************** f9608e9005487c369e6c38949ab36fa1  gcc/m2
*** 7882,7888 ****
  89d79df4a8d2185bb8557998f075e087  gcc/machmode.h
  197298337dae14fdd7ab928a1f03bec6  gcc/main.cc
  21fa6a9b1a8a8dd382a659c9f3abe151  gcc/match-sat-alu.pd
! 2a6d418a27bee8a651dbcf1c8c8206ce  gcc/match.pd
  b106a08a1793a5495dd87c412456484b  gcc/mcf.cc
  897c541ca992e145ad451c98941c7647  gcc/mem-stats-traits.h
  14700e76d554c9699481337fa9886be6  gcc/mem-stats.h
--- 7884,7890 ----
  89d79df4a8d2185bb8557998f075e087  gcc/machmode.h
  197298337dae14fdd7ab928a1f03bec6  gcc/main.cc
  21fa6a9b1a8a8dd382a659c9f3abe151  gcc/match-sat-alu.pd
! 19194a6d199456a096eb4b97b5484b8b  gcc/match.pd
  b106a08a1793a5495dd87c412456484b  gcc/mcf.cc
  897c541ca992e145ad451c98941c7647  gcc/mem-stats-traits.h
  14700e76d554c9699481337fa9886be6  gcc/mem-stats.h
*************** cdc26bd8ead0ef188e59165e859c822d  gcc/om
*** 7928,7934 ****
  2f6456a4cc816c9b75844b1625b26349  gcc/omp-expand.h
  2c16523de24fa67cf3b6f66ae7780992  gcc/omp-general.cc
  23ef2077fc947478cfb1d807aff87bee  gcc/omp-general.h
! dda814fcd08b23ffea65b97e94f09081  gcc/omp-low.cc
  1c84cef0613c186032b0fc0682b72ab8  gcc/omp-low.h
  e15278003e18a529caf759e00fbb8140  gcc/omp-oacc-kernels-decompose.cc
  e46559b06f0c63bac8a2626dcddfb876  gcc/omp-oacc-neuter-broadcast.cc
--- 7930,7936 ----
  2f6456a4cc816c9b75844b1625b26349  gcc/omp-expand.h
  2c16523de24fa67cf3b6f66ae7780992  gcc/omp-general.cc
  23ef2077fc947478cfb1d807aff87bee  gcc/omp-general.h
! 83121a8bf793e4cb6c78d70de1608529  gcc/omp-low.cc
  1c84cef0613c186032b0fc0682b72ab8  gcc/omp-low.h
  e15278003e18a529caf759e00fbb8140  gcc/omp-oacc-kernels-decompose.cc
  e46559b06f0c63bac8a2626dcddfb876  gcc/omp-oacc-neuter-broadcast.cc
*************** f72a1e84c9facd65dc1c42ee67f21583  gcc/pu
*** 8045,8051 ****
  baab0c2ad805d6d5d47b409b65c38351  gcc/range-op-float.cc
  ec6248ff9582260bb420197fc3bd33ab  gcc/range-op-mixed.h
  69b841901021a7600a6c55aa08c8a6ab  gcc/range-op-ptr.cc
! c58e436519bc9e25f230c4d8e5ee7944  gcc/range-op.cc
  52c9ff8b4fcf2afdee9b9f331411b42e  gcc/range-op.h
  5224210104d440bc7bae81953ca2e7f1  gcc/range.cc
  19ba1dec644467b75ebc4246acf8ff8f  gcc/range.h
--- 8047,8053 ----
  baab0c2ad805d6d5d47b409b65c38351  gcc/range-op-float.cc
  ec6248ff9582260bb420197fc3bd33ab  gcc/range-op-mixed.h
  69b841901021a7600a6c55aa08c8a6ab  gcc/range-op-ptr.cc
! b2f0028bcee9d79b936b6ab804e1c2ce  gcc/range-op.cc
  52c9ff8b4fcf2afdee9b9f331411b42e  gcc/range-op.h
  5224210104d440bc7bae81953ca2e7f1  gcc/range.cc
  19ba1dec644467b75ebc4246acf8ff8f  gcc/range.h
*************** f7a30cc2e8344fa489739267da2d868b  gcc/se
*** 8676,8682 ****
  3f3d94e6f52cc07f64e195e1a75dc485  gcc/signop.h
  b4c90fe064bba484ce5c18adb1a9e544  gcc/simple-diagnostic-path.cc
  7affe31db6f7cb9c7fc77937feef0758  gcc/simple-diagnostic-path.h
! b63e697e7d462fa3edaf7b878ea30668  gcc/simplify-rtx.cc
  d1aec926a9488869692e8fe2f61ca75f  gcc/sort.cc
  7daa38cb1d09a2f88958f00a965d40a1  gcc/sparseset.cc
  3883b6ff1845dcec7b2822124018ab05  gcc/sparseset.h
--- 8678,8684 ----
  3f3d94e6f52cc07f64e195e1a75dc485  gcc/signop.h
  b4c90fe064bba484ce5c18adb1a9e544  gcc/simple-diagnostic-path.cc
  7affe31db6f7cb9c7fc77937feef0758  gcc/simple-diagnostic-path.h
! 797d47901bc84438ad8fdd15eb122d3f  gcc/simplify-rtx.cc
  d1aec926a9488869692e8fe2f61ca75f  gcc/sort.cc
  7daa38cb1d09a2f88958f00a965d40a1  gcc/sparseset.cc
  3883b6ff1845dcec7b2822124018ab05  gcc/sparseset.h
*************** d294651bcc46af1abb89e48cd851fd40  gcc/ta
*** 8725,8736 ****
  fe7cc01d7dd25103bc61ab1a33dd54dc  gcc/target-globals.h
  5f6f168a092c141ef64501f44439df42  gcc/target-hooks-macros.h
  f24751f278bee1ac8dc861467d9f96a3  gcc/target-insns.def
! 11c967b204a71058b1cbab91bc4b4ef0  gcc/target.def
  9ca827d4a70bd09cb862e2583cb8500a  gcc/target.h
  0cb420c86a7940020245f05da6f194fa  gcc/targhooks.cc
  b1068b0d3d77d5a55802a29a9f8a08d7  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 76d4ddb6cf38683da9c34f2aa7e2c57d  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
--- 8727,8738 ----
  fe7cc01d7dd25103bc61ab1a33dd54dc  gcc/target-globals.h
  5f6f168a092c141ef64501f44439df42  gcc/target-hooks-macros.h
  f24751f278bee1ac8dc861467d9f96a3  gcc/target-insns.def
! 5fc83e2b266e1717268d6aca5c3983d3  gcc/target.def
  9ca827d4a70bd09cb862e2583cb8500a  gcc/target.h
  0cb420c86a7940020245f05da6f194fa  gcc/targhooks.cc
  b1068b0d3d77d5a55802a29a9f8a08d7  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 55024bc8eef68f3ed11ebb6dba2fd165  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
*************** e5736f7a95ff4089e7b2558c9d9421e5  gcc/te
*** 17025,17030 ****
--- 17027,17033 ----
  25c43522103449b03020e9e6846b633b  gcc/testsuite/algol68/compile/char-break-1.a68
  91f279c122cf9faf0ea51b9337c6e97a  gcc/testsuite/algol68/compile/compile.exp
  bc971283f5728545e6e3cd2df580d7f6  gcc/testsuite/algol68/compile/conditional-clause-1.a68
+ 16a4ce6f194f486dd0c2eb1dc635eb58  gcc/testsuite/algol68/compile/error-attr-format-token-1.a68
  1ff689b9532dde45617e5f7a3826bf91  gcc/testsuite/algol68/compile/error-bold-taggle-1.a68
  712e2ae6e2d14b147adaaf3a2d4951a2  gcc/testsuite/algol68/compile/error-coercion-1.a68
  7387813dd068726b8857614ece1a4efb  gcc/testsuite/algol68/compile/error-coercion-2.a68
*************** a8e646bd6e333b7d40ea2b9682585404  gcc/te
*** 17364,17369 ****
--- 17367,17375 ----
  85bdfb6f3eb5e72e0332dce3487524bc  gcc/testsuite/algol68/execute/float-1.a68
  0e012b24ffa70dc57520cb70ec140c6a  gcc/testsuite/algol68/execute/formula-1.a68
  2bd0bebf0a4ff2cd7f515ca5adfb38bc  gcc/testsuite/algol68/execute/formula-2.a68
+ bcc6a35ff633024dfe908c7281c93781  gcc/testsuite/algol68/execute/formula-3.a68
+ d65906783e5452fedd96bc6d0682bcba  gcc/testsuite/algol68/execute/formula-4.a68
+ f01910c2cb110937b097fc0f05743506  gcc/testsuite/algol68/execute/formula-5.a68
  b9aae346a615c572bb38b3752df2e4a4  gcc/testsuite/algol68/execute/fsize-1.a68
  5f7c18865568e1230191356a11a2294d  gcc/testsuite/algol68/execute/ge-int-1.a68
  fc7f778438609b79b219c587aaff0e2e  gcc/testsuite/algol68/execute/ge-string-stride-1.a68
*************** a8e233557587ba06657151673d7b40f1  gcc/te
*** 17377,17382 ****
--- 17383,17390 ----
  8267dec9946820121cefb2b04045daf1  gcc/testsuite/algol68/execute/gen-heap-struct-1.a68
  0ff735ad1c88c280504801e33c591dea  gcc/testsuite/algol68/execute/gen-heap-struct-2.a68
  31c982a38da90d68c69eb97b84d9f88c  gcc/testsuite/algol68/execute/gen-heap-struct-3.a68
+ 48f84362c0e5bdf9114596c5e77ba563  gcc/testsuite/algol68/execute/gen-in-constructor-1.a68
+ a791788e6856924e5a9cddaa584e2e4d  gcc/testsuite/algol68/execute/gen-in-constructor-2.a68
  e558d2055c3e13cdefde2250b8b885a4  gcc/testsuite/algol68/execute/gen-loc-1.a68
  c5f821f50126063840d1c5c5052d7812  gcc/testsuite/algol68/execute/gen-loc-2.a68
  cdde7a66c709d7f19189f47e3a3326b6  gcc/testsuite/algol68/execute/gen-loc-3.a68
*************** bcfdb63511805c2e3f5b07f72f0171f0  gcc/te
*** 17506,17512 ****
  6fa2fb9c9d66c83a1af9996452818dbc  gcc/testsuite/algol68/execute/modules/execute.exp
  6886f82d84222ca0459b86fbdec52673  gcc/testsuite/algol68/execute/modules/module-bar.a68
  abe7f005a9e088b8203de09a769768e0  gcc/testsuite/algol68/execute/modules/module-foo.a68
! 39fcf22b33adb94c6b5bd5617b63e86d  gcc/testsuite/algol68/execute/modules/module1.a68
  855a8f2560fc05a0a81d49c7cb67ff67  gcc/testsuite/algol68/execute/modules/module10.a68
  fccef707a976cbc27c1dcdeb9bcceef6  gcc/testsuite/algol68/execute/modules/module11.a68
  d96afe1f473d2f45009f219219c15469  gcc/testsuite/algol68/execute/modules/module12.a68
--- 17514,17520 ----
  6fa2fb9c9d66c83a1af9996452818dbc  gcc/testsuite/algol68/execute/modules/execute.exp
  6886f82d84222ca0459b86fbdec52673  gcc/testsuite/algol68/execute/modules/module-bar.a68
  abe7f005a9e088b8203de09a769768e0  gcc/testsuite/algol68/execute/modules/module-foo.a68
! f0cc4dc5c8fde38dec8120c09bd2010e  gcc/testsuite/algol68/execute/modules/module1.a68
  855a8f2560fc05a0a81d49c7cb67ff67  gcc/testsuite/algol68/execute/modules/module10.a68
  fccef707a976cbc27c1dcdeb9bcceef6  gcc/testsuite/algol68/execute/modules/module11.a68
  d96afe1f473d2f45009f219219c15469  gcc/testsuite/algol68/execute/modules/module12.a68
*************** f6c69601589675dd714d44f63d98560f  gcc/te
*** 17532,17538 ****
  419064d7a3423695654fcef0388d610c  gcc/testsuite/algol68/execute/modules/module7.a68
  6a5966491bddff109c2ed0e823615189  gcc/testsuite/algol68/execute/modules/module8.a68
  882e0ef3985404b3636462c72835353e  gcc/testsuite/algol68/execute/modules/module9.a68
! fa32385209c69f16d1ffeb239cadc468  gcc/testsuite/algol68/execute/modules/program-1.a68
  5618708adeaf82bdc3bbe7bf1b1df2e9  gcc/testsuite/algol68/execute/modules/program-10.a68
  f426864755e710beb231da3ea058d671  gcc/testsuite/algol68/execute/modules/program-11.a68
  329d4057fbba0540485078cb4f62aec9  gcc/testsuite/algol68/execute/modules/program-12.a68
--- 17540,17546 ----
  419064d7a3423695654fcef0388d610c  gcc/testsuite/algol68/execute/modules/module7.a68
  6a5966491bddff109c2ed0e823615189  gcc/testsuite/algol68/execute/modules/module8.a68
  882e0ef3985404b3636462c72835353e  gcc/testsuite/algol68/execute/modules/module9.a68
! 964e453df552d1651022e4ab0aae4d01  gcc/testsuite/algol68/execute/modules/program-1.a68
  5618708adeaf82bdc3bbe7bf1b1df2e9  gcc/testsuite/algol68/execute/modules/program-10.a68
  f426864755e710beb231da3ea058d671  gcc/testsuite/algol68/execute/modules/program-11.a68
  329d4057fbba0540485078cb4f62aec9  gcc/testsuite/algol68/execute/modules/program-12.a68
*************** edbcc39f20e5248e2b957a28e01fee51  gcc/te
*** 18902,18910 ****
--- 18910,18922 ----
  29addeec3c750c9f563a87b82013d69e  gcc/testsuite/c-c++-common/builtin-assoc-barrier-1.c
  15b4b91825063e6423b203f8f436c671  gcc/testsuite/c-c++-common/builtin-bitreverseg-1.c
  27f5ccf138bde44f160acff2a404fbc9  gcc/testsuite/c-c++-common/builtin-bitreverseg-2.c
+ 48fc790c86570926b1d8b687531f4c3c  gcc/testsuite/c-c++-common/builtin-bitreverseg-3.c
+ 4b06b9c81285b0028ea477aad76d760d  gcc/testsuite/c-c++-common/builtin-bitreverseg-4.c
  e7aad3e4580fc2ea05649e6683fd97b5  gcc/testsuite/c-c++-common/builtin-bswapg-1.c
  3adae0df8e04652fcfa8b8b67693873d  gcc/testsuite/c-c++-common/builtin-bswapg-2.c
  ea5bd58777ffc76bb5344517b5789027  gcc/testsuite/c-c++-common/builtin-bswapg-3.c
+ b420d18a6c86615232bb81114d4cde49  gcc/testsuite/c-c++-common/builtin-bswapg-4.c
+ a7f44295376b613de47b218d423b27fc  gcc/testsuite/c-c++-common/builtin-bswapg-5.c
  05fb6d875f8327310c94ca0a89b53886  gcc/testsuite/c-c++-common/builtin-classify-type-1.c
  16488560f51c9fbb0acea48f3f246dd7  gcc/testsuite/c-c++-common/builtin-clear-padding-1.c
  05a22e0270d8d2693bab4092ee6a1edc  gcc/testsuite/c-c++-common/builtin-clear-padding-2.c
*************** d41d8cd98f00b204e9800998ecf8427e  gcc/te
*** 20662,20671 ****
  f963895d994b62510e687873776b4ef0  gcc/testsuite/c-c++-common/substring-location-PR-87562-1.c
  a05a712863ab77c00f035dbc3316dcf8  gcc/testsuite/c-c++-common/substring-location-PR-87721.c
  993f3902900220d0ab605caf29f79d05  gcc/testsuite/c-c++-common/taskloop-1.c
! 5954df765528b3ac48d7c5a17f88a220  gcc/testsuite/c-c++-common/tls-attr-common.c
  f3abf92df2174103abccf8dffe4c9a1b  gcc/testsuite/c-c++-common/tls-attr-dll.c
! 870c519d9bdba9a9f38d1a458e552cc6  gcc/testsuite/c-c++-common/tls-attr-le-pic.c
! 25693c785a14f8775324cf99cc5073d0  gcc/testsuite/c-c++-common/tls-attr-le-pie.c
  e3aa84ea02008121366d37e9c2eba817  gcc/testsuite/c-c++-common/tm/20100127.c
  b5356bca8211268199a255b3416bce8b  gcc/testsuite/c-c++-common/tm/20111206.c
  5a234c929abecaae0de0c8c8352206d7  gcc/testsuite/c-c++-common/tm/abort-1.c
--- 20674,20683 ----
  f963895d994b62510e687873776b4ef0  gcc/testsuite/c-c++-common/substring-location-PR-87562-1.c
  a05a712863ab77c00f035dbc3316dcf8  gcc/testsuite/c-c++-common/substring-location-PR-87721.c
  993f3902900220d0ab605caf29f79d05  gcc/testsuite/c-c++-common/taskloop-1.c
! b04a4b825c488230bcfdc5383fc75bfa  gcc/testsuite/c-c++-common/tls-attr-common.c
  f3abf92df2174103abccf8dffe4c9a1b  gcc/testsuite/c-c++-common/tls-attr-dll.c
! 4235cf01b26e98b2a244248bd035144b  gcc/testsuite/c-c++-common/tls-attr-le-pic.c
! c38531454123a62342e53106ddce3fb1  gcc/testsuite/c-c++-common/tls-attr-le-pie.c
  e3aa84ea02008121366d37e9c2eba817  gcc/testsuite/c-c++-common/tm/20100127.c
  b5356bca8211268199a255b3416bce8b  gcc/testsuite/c-c++-common/tm/20111206.c
  5a234c929abecaae0de0c8c8352206d7  gcc/testsuite/c-c++-common/tm/abort-1.c
*************** f539e8a1397514a1d5ce9e81d9f3f182  gcc/te
*** 21339,21344 ****
--- 21351,21364 ----
  0af968fb266b24c9fd8e9d594d7e28f3  gcc/testsuite/cobol.dg/group2/CHAR_and_ORD_with_COLLATING_sequence_-_ASCII.out
  1198387259c0c3ba3f28db9eacec53d9  gcc/testsuite/cobol.dg/group2/CHAR_and_ORD_with_COLLATING_sequence_-_EBCDIC.cob
  0af968fb266b24c9fd8e9d594d7e28f3  gcc/testsuite/cobol.dg/group2/CHAR_and_ORD_with_COLLATING_sequence_-_EBCDIC.out
+ 9e914aec2ca8db68adde8f7527ac0113  gcc/testsuite/cobol.dg/group2/COMP-3_to_COMP-3__IN-PHASE__MOVES.cob
+ ad60a707afdce19c806737f4e162e0ac  gcc/testsuite/cobol.dg/group2/COMP-3_to_COMP-3__IN-PHASE__MOVES.out
+ a367df31449f37eb68d602fc256f5de3  gcc/testsuite/cobol.dg/group2/COMP-3_to_COMP-3__OUT-OF-PHASE__MOVES.cob
+ f8324c1c9da2c489a03ed5ab7b3f70a6  gcc/testsuite/cobol.dg/group2/COMP-3_to_COMP-3__OUT-OF-PHASE__MOVES.out
+ beacd392c9f939ed4ab73babbfeae7e4  gcc/testsuite/cobol.dg/group2/COMP-3_to_COMP-3_size_error.cob
+ 0e13fb412727cd5a35f8b04e9d8a6084  gcc/testsuite/cobol.dg/group2/COMP-3_to_COMP-3_size_error.out
+ 0499af910d336b53aedc1050caadf7c5  gcc/testsuite/cobol.dg/group2/COMP-3_to_numeric-display_size_error.cob
+ 0e13fb412727cd5a35f8b04e9d8a6084  gcc/testsuite/cobol.dg/group2/COMP-3_to_numeric-display_size_error.out
  5c1021caf45fe8ff3f85f88484c4b27e  gcc/testsuite/cobol.dg/group2/COMP-5_Sanity_Check_.cob
  f4905b3cede4cad548e4f57e046904d7  gcc/testsuite/cobol.dg/group2/COMP-6_arithmetic.cob
  4c557552ba46fff61c6bba359bbd2426  gcc/testsuite/cobol.dg/group2/COMP-6_arithmetic.out
*************** c5cf04eb9938774927bb9fc355958f13  gcc/te
*** 21358,21363 ****
--- 21378,21385 ----
  40ee71e6000b91748c4cd8f864a83cd2  gcc/testsuite/cobol.dg/group2/CURRENCY_SIGN_WITH_PICTURE_SYMBOL.out
  c82d0437d4c0c081e1f9b6f140c959ab  gcc/testsuite/cobol.dg/group2/Check_for_equality_of_COMP-1___COMP-2.cob
  e3cc25d3e34c98b2bc1d9014612f3464  gcc/testsuite/cobol.dg/group2/Class_check_with_reference_modification.cob
+ 1069d190f99cdcf2c1d30611324cfd7e  gcc/testsuite/cobol.dg/group2/Clear_negative_zero_after_truncated_MOVE.cob
+ e065da0e830e96a810ac77c8b9ede312  gcc/testsuite/cobol.dg/group2/Clear_negative_zero_after_truncated_MOVE.out
  5a5abbc24fc75759207ca6686fa86a79  gcc/testsuite/cobol.dg/group2/Compare_COMP-2_with_floating-point_literal.cob
  f7e4a3f2c5c85ddeb645aecc5792a186  gcc/testsuite/cobol.dg/group2/Complex_EVALUATE__1_.cob
  770e7f54918037f396938dcd095f8cf0  gcc/testsuite/cobol.dg/group2/Complex_EVALUATE__1_.out
*************** c37d3a6c238b882f0bdd37216ad6f2e2  gcc/te
*** 21727,21732 ****
--- 21749,21756 ----
  762fe158abb4d509d72dcab7d9dd2321  gcc/testsuite/cobol.dg/group2/Long_Division.out
  3cbf65b8c03797932779a0528d289989  gcc/testsuite/cobol.dg/group2/MOVE_LEVEL_78.cob
  1b3a1374cd3bae9ee54518384c656469  gcc/testsuite/cobol.dg/group2/MOVE_LEVEL_78.out
+ 67ef99c4fd29c7b70237e9f372e0994a  gcc/testsuite/cobol.dg/group2/MOVE_NumericDisplay_to_COMP-3.cob
+ bab112519a1aa4770448cbefcfaedff2  gcc/testsuite/cobol.dg/group2/MOVE_NumericDisplay_to_COMP-3.out
  349ac56163210da85e0e72c98b70a580  gcc/testsuite/cobol.dg/group2/MOVE_X_000203_.cob
  ae3b6ce13c9250f0ab012d801c07d172  gcc/testsuite/cobol.dg/group2/MOVE_X_000203_.out
  19fd942f8e59f704767cd4c3801d15eb  gcc/testsuite/cobol.dg/group2/MOVE_Z_literal_.cob
*************** d23088a98a20d2069d7fb0cad5a416f7  gcc/te
*** 22018,22023 ****
--- 22042,22049 ----
  285be9aed0693bd7a17971c0b0d45f14  gcc/testsuite/cobol.dg/group2/length_of_ODO_w_-_reference_modification.cob
  e4f125c530b7f6fb8112ce177491c698  gcc/testsuite/cobol.dg/group2/move_numeric_to_alphanumeric.cob
  13b37ba39b19273c7560eec98e34c0f9  gcc/testsuite/cobol.dg/group2/move_numeric_to_alphanumeric.out
+ c38d8b7af3a6d499d8609e06b80787cf  gcc/testsuite/cobol.dg/group2/numeric-display_to_COMP-3_size_error.cob
+ 0e13fb412727cd5a35f8b04e9d8a6084  gcc/testsuite/cobol.dg/group2/numeric-display_to_COMP-3_size_error.out
  a9be62b5e367d9e2cd063a29e035d62f  gcc/testsuite/cobol.dg/group2/procedure_division_using_by.cob
  b3770e519b9e35fc37d2bfb704502b37  gcc/testsuite/cobol.dg/group2/refmod_with_nested_parentheses.cob
  68f048a675b888cb7c2d0e432621ce7e  gcc/testsuite/cobol.dg/group2/refmod_with_nested_parentheses.out
*************** f3b34592f993c84838b0ef36dad5ed5e  gcc/te
*** 28413,28418 ****
--- 28439,28445 ----
  68e2c6d50bfacacb8479c70ed9ed0ddc  gcc/testsuite/g++.dg/cpp26/expansion-stmt8.C
  fab75ccc959cbef8fb3183a88990faa8  gcc/testsuite/g++.dg/cpp26/expansion-stmt9.C
  37a7ca60d4f4ed14152fd3863633ba0d  gcc/testsuite/g++.dg/cpp26/feat-cxx26.C
+ b0bb23188bc950b25fd0b0709850bfe6  gcc/testsuite/g++.dg/cpp26/lambda-targ1.C
  e439504634b8fdea668e10d9fc930c63  gcc/testsuite/g++.dg/cpp26/literals1.C
  3572f5ef732defbaed672decde98fc83  gcc/testsuite/g++.dg/cpp26/literals2.C
  8f5e59e0f7c8cbf6a6ab946370b7128b  gcc/testsuite/g++.dg/cpp26/name-independent-decl1.C
*************** c9c401dee234950a35f6baa7697a4559  gcc/te
*** 29444,29451 ****
--- 29471,29485 ----
  5891843d160f32e907903a257a0ac85a  gcc/testsuite/g++.dg/cpp2a/lambda-targ24.C
  2974766b277ea1141793386ea16ee705  gcc/testsuite/g++.dg/cpp2a/lambda-targ24a.C
  4df914202d094298eb4ac77045f4eae2  gcc/testsuite/g++.dg/cpp2a/lambda-targ25.C
+ bb40cb64c4ecb861627f13213de25f24  gcc/testsuite/g++.dg/cpp2a/lambda-targ26.C
+ 0bce7848518a610641be2508ae36f639  gcc/testsuite/g++.dg/cpp2a/lambda-targ27.C
+ b083acbba6ca7b6c7c0e1e7f15271e29  gcc/testsuite/g++.dg/cpp2a/lambda-targ28.C
+ 0b0de7561182336ff9c3ee566b5c7863  gcc/testsuite/g++.dg/cpp2a/lambda-targ29.C
  d948ecca981f7c5de5ca48afc987ea36  gcc/testsuite/g++.dg/cpp2a/lambda-targ2a.C
  096118fef57f992a05319e3b6f8ba6a7  gcc/testsuite/g++.dg/cpp2a/lambda-targ3.C
+ 4e6a215ff567bf546d078f515d121c5b  gcc/testsuite/g++.dg/cpp2a/lambda-targ30.C
+ 388ca9dad4e8d5b2f29cb73ce9bbe716  gcc/testsuite/g++.dg/cpp2a/lambda-targ31.C
+ 84fae08cf9d05718e23ce6dc12c16360  gcc/testsuite/g++.dg/cpp2a/lambda-targ32.C
  21c4749dcabd9a286db03db935f9cd86  gcc/testsuite/g++.dg/cpp2a/lambda-targ4.C
  1bdabd816102bfabb23374bf0d68c1c1  gcc/testsuite/g++.dg/cpp2a/lambda-targ5.C
  0c3e8d283c44c1ced955539b772c1c69  gcc/testsuite/g++.dg/cpp2a/lambda-targ6.C
*************** fddd8f40a7321e1f9eae3f84076aa16d  gcc/te
*** 33909,33915 ****
  f4151476d383dfa58ec57d84af229960  gcc/testsuite/g++.dg/modules/clone-3_a.C
  43bdc6e1ffd552c18c3f46ba0d9b6353  gcc/testsuite/g++.dg/modules/clone-3_b.C
  1dbe55cb66e8ff8caec75c9be7f2c9e3  gcc/testsuite/g++.dg/modules/clone-4_a.C
! 2dcd18d0e8acb35a37c7d8189b2a1450  gcc/testsuite/g++.dg/modules/clone-4_b.C
  cd6c431aae535838aca8d9e035cb7081  gcc/testsuite/g++.dg/modules/clone-5_a.C
  d673b7bf33a6d7efdbab448420401ec5  gcc/testsuite/g++.dg/modules/clone-5_b.C
  7394ff0e66446a47ebd607a85d216c6e  gcc/testsuite/g++.dg/modules/compile-std1.C
--- 33943,33949 ----
  f4151476d383dfa58ec57d84af229960  gcc/testsuite/g++.dg/modules/clone-3_a.C
  43bdc6e1ffd552c18c3f46ba0d9b6353  gcc/testsuite/g++.dg/modules/clone-3_b.C
  1dbe55cb66e8ff8caec75c9be7f2c9e3  gcc/testsuite/g++.dg/modules/clone-4_a.C
! e7a69b1d027dae89da0959d81da57faf  gcc/testsuite/g++.dg/modules/clone-4_b.C
  cd6c431aae535838aca8d9e035cb7081  gcc/testsuite/g++.dg/modules/clone-5_a.C
  d673b7bf33a6d7efdbab448420401ec5  gcc/testsuite/g++.dg/modules/clone-5_b.C
  7394ff0e66446a47ebd607a85d216c6e  gcc/testsuite/g++.dg/modules/compile-std1.C
*************** b66a905fae26f7efc4eaf3f3c60a6b65  gcc/te
*** 34683,34689 ****
  e83f9a9aca70673da8258ca0631a2125  gcc/testsuite/g++.dg/modules/mod-tpl-1_b.C
  ad9ef329572dab16f2d3d5613538cd3f  gcc/testsuite/g++.dg/modules/mod-tpl-2_a.C
  95ab3577dee99f3d59838a96f1cbf4fc  gcc/testsuite/g++.dg/modules/mod-tpl-2_b.C
! 487e2f5142ec1969ec2ef56b0656d6a2  gcc/testsuite/g++.dg/modules/modules.exp
  f49c118362c9a45e801940d0725a767d  gcc/testsuite/g++.dg/modules/mutual-friend.ii
  522ea2d0697f7dd4d211f07fa012628f  gcc/testsuite/g++.dg/modules/namespace-10_a.C
  c4e2bef9f271df6507d07f9534e10fc1  gcc/testsuite/g++.dg/modules/namespace-10_b.C
--- 34717,34723 ----
  e83f9a9aca70673da8258ca0631a2125  gcc/testsuite/g++.dg/modules/mod-tpl-1_b.C
  ad9ef329572dab16f2d3d5613538cd3f  gcc/testsuite/g++.dg/modules/mod-tpl-2_a.C
  95ab3577dee99f3d59838a96f1cbf4fc  gcc/testsuite/g++.dg/modules/mod-tpl-2_b.C
! c80dc6c978068bb7957c2764050f65d1  gcc/testsuite/g++.dg/modules/modules.exp
  f49c118362c9a45e801940d0725a767d  gcc/testsuite/g++.dg/modules/mutual-friend.ii
  522ea2d0697f7dd4d211f07fa012628f  gcc/testsuite/g++.dg/modules/namespace-10_a.C
  c4e2bef9f271df6507d07f9534e10fc1  gcc/testsuite/g++.dg/modules/namespace-10_b.C
*************** c91c32cc6da48fa1750643064a8936bb  gcc/te
*** 35221,35227 ****
  489c5e2999bf8c59a45b7da2cceb4263  gcc/testsuite/g++.dg/modules/tdef-inst-1_a.C
  e7946cb9ca0e05cd9aa5194c00847d3f  gcc/testsuite/g++.dg/modules/tdef-inst-1_b.C
  e477359665d29b56320080e76b625816  gcc/testsuite/g++.dg/modules/test-depfile.py
! 1627cb0ba276312fba8e8c9134461bc1  gcc/testsuite/g++.dg/modules/test-p1689.py
  4ee1b098ceb95d001b4cea367f4c6ebb  gcc/testsuite/g++.dg/modules/thunk-1_a.C
  69d722c6c58df72cabc0c72876607de8  gcc/testsuite/g++.dg/modules/thunk-1_b.C
  3d43f235edc585cf8e8940b34d8a8a63  gcc/testsuite/g++.dg/modules/timevar-1_a.H
--- 35255,35261 ----
  489c5e2999bf8c59a45b7da2cceb4263  gcc/testsuite/g++.dg/modules/tdef-inst-1_a.C
  e7946cb9ca0e05cd9aa5194c00847d3f  gcc/testsuite/g++.dg/modules/tdef-inst-1_b.C
  e477359665d29b56320080e76b625816  gcc/testsuite/g++.dg/modules/test-depfile.py
! 30e08c22f8191a47d661f71db1bb52f1  gcc/testsuite/g++.dg/modules/test-p1689.py
  4ee1b098ceb95d001b4cea367f4c6ebb  gcc/testsuite/g++.dg/modules/thunk-1_a.C
  69d722c6c58df72cabc0c72876607de8  gcc/testsuite/g++.dg/modules/thunk-1_b.C
  3d43f235edc585cf8e8940b34d8a8a63  gcc/testsuite/g++.dg/modules/timevar-1_a.H
*************** e736fe25d4b99f710b70de0825fffdc1  gcc/te
*** 37384,37389 ****
--- 37418,37424 ----
  e6de60b5642934aef50f416afd0dfef5  gcc/testsuite/g++.dg/pr122348.C
  0ad246e348b6ea4bf54b74b0d8e3dce0  gcc/testsuite/g++.dg/pr123383.C
  9b72294c06cceb517f37832e017f79c1  gcc/testsuite/g++.dg/pr123575.C
+ 97fa47fc1ee58971cfae4f9fdffd0b3f  gcc/testsuite/g++.dg/pr125642.C
  2ac64817a39fe1a5c2dc328f4233cda1  gcc/testsuite/g++.dg/pr37742.C
  32b2fbda29ffd2ac2181c43c971f3a7d  gcc/testsuite/g++.dg/pr44328.C
  e43b4ea2d038b181b57782d5d56d22ba  gcc/testsuite/g++.dg/pr44486.C
*************** ea720c7f072506efc4d68f19c28f450d  gcc/te
*** 37966,37971 ****
--- 38001,38007 ----
  96900c06aa6df121875dd7f2ecc5b7a3  gcc/testsuite/g++.dg/reflect/mangle4.C
  13986cd705d67b3899c41c5cf5ce22c2  gcc/testsuite/g++.dg/reflect/mangle5.C
  2f2f67f28be6797089b2072e815b969d  gcc/testsuite/g++.dg/reflect/mangle6.C
+ 0154f9c1f322210343b36269a62ae6be  gcc/testsuite/g++.dg/reflect/mangle7.C
  a3a095f76106493121ca9f08dbb03b9e  gcc/testsuite/g++.dg/reflect/member-visibility1.C
  ad855dfbd2b8005bd8560472ce0cf5b4  gcc/testsuite/g++.dg/reflect/member-visibility2.C
  2682080dfb339e8cc080b395ee8d0a02  gcc/testsuite/g++.dg/reflect/member1.C
*************** d769c20d76953f9e88aaec8b648608d2  gcc/te
*** 38064,38069 ****
--- 38100,38106 ----
  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
+ 861d5d8603855a0b7fb5bf6285b9745f  gcc/testsuite/g++.dg/reflect/parameters_of9.C
  d6715d284c87d041e08a5fbebff9821e  gcc/testsuite/g++.dg/reflect/parent_of1.C
  1447cf1a75f2e700c39efe43ea9ba17c  gcc/testsuite/g++.dg/reflect/parm1.C
  ee2a5065f194d0c1d1360c2d2a8f5d8b  gcc/testsuite/g++.dg/reflect/parm2.C
*************** b6fc6119f5cfb5fe32a5e8b8cb496342  gcc/te
*** 38214,38220 ****
  b20c7245cc70a16f4549d5de46d19bde  gcc/testsuite/g++.dg/reflect/variant1.C
  52f1b07fcecf5b7dfd7849245a01cd09  gcc/testsuite/g++.dg/reflect/variant2.C
  9eb3efd54c1e30ffca6cb34a1f4136d1  gcc/testsuite/g++.dg/reflect/vector1.C
! 62d016174539cb0e54555fc2d57fa012  gcc/testsuite/g++.dg/reflect/visibility1.C
  2bcb8e987d41c50dbd1de216296fd071  gcc/testsuite/g++.dg/rtti/anon-ns1.C
  7345c9463c7d47c7d425463846af6b14  gcc/testsuite/g++.dg/rtti/crash1.C
  34c4c8f1721c4f70c2261dcc1b0a7630  gcc/testsuite/g++.dg/rtti/crash2.C
--- 38251,38257 ----
  b20c7245cc70a16f4549d5de46d19bde  gcc/testsuite/g++.dg/reflect/variant1.C
  52f1b07fcecf5b7dfd7849245a01cd09  gcc/testsuite/g++.dg/reflect/variant2.C
  9eb3efd54c1e30ffca6cb34a1f4136d1  gcc/testsuite/g++.dg/reflect/vector1.C
! 8defd1fe82635d44980eefa1ffef2695  gcc/testsuite/g++.dg/reflect/visibility1.C
  2bcb8e987d41c50dbd1de216296fd071  gcc/testsuite/g++.dg/rtti/anon-ns1.C
  7345c9463c7d47c7d425463846af6b14  gcc/testsuite/g++.dg/rtti/crash1.C
  34c4c8f1721c4f70c2261dcc1b0a7630  gcc/testsuite/g++.dg/rtti/crash2.C
*************** b8d7ae2a709e06f2d49e19cfb00e77d3  gcc/te
*** 38464,38469 ****
--- 38501,38508 ----
  fc503a6c4d63b92622d495b917629877  gcc/testsuite/g++.dg/template/bitfield2.C
  8a0fec8b2c65fed33977466ab46bb239  gcc/testsuite/g++.dg/template/bitfield3.C
  3beaec71f8c3eee7f77d4f01acdfd9c8  gcc/testsuite/g++.dg/template/bitfield4.C
+ 0943a2ed1de251cec2159b8a51827115  gcc/testsuite/g++.dg/template/bitfield5.C
+ d3445364009e0426fd4a308fcd2abf5c  gcc/testsuite/g++.dg/template/bitfield6.C
  dfa641076fcfa6f7c53b7912218f4c62  gcc/testsuite/g++.dg/template/builtin-atomic-overloads.def
  3271fe47f6cc8b603c5a72148c24c04c  gcc/testsuite/g++.dg/template/builtin-atomic-overloads1.C
  f86dd5e826edf7434db390f559e0c24b  gcc/testsuite/g++.dg/template/builtin-atomic-overloads2.C
*************** c516af6d3dbacce330102f6926ee7107  gcc/te
*** 38905,38911 ****
  2272cd92b5c114b457626eb6e3f44b3c  gcc/testsuite/g++.dg/template/explicit-instantiation5.C
  c6a14388529e88398ceff5e475585175  gcc/testsuite/g++.dg/template/explicit-instantiation6.C
  edbb068b5e160bf72ca66e43d8adde70  gcc/testsuite/g++.dg/template/explicit-instantiation7.C
! cd59b83738231d65f6e81bfdcafe5ed8  gcc/testsuite/g++.dg/template/explicit-instantiation8.C
  9f2fe063cb376a7d8e7132c2abb44026  gcc/testsuite/g++.dg/template/explicit-instantiation9.C
  610a5ce174887479710ddef7e050b0e9  gcc/testsuite/g++.dg/template/explicit1.C
  44f3a8f925589bae9dc773b19a3fd2de  gcc/testsuite/g++.dg/template/explicit2.C
--- 38944,38950 ----
  2272cd92b5c114b457626eb6e3f44b3c  gcc/testsuite/g++.dg/template/explicit-instantiation5.C
  c6a14388529e88398ceff5e475585175  gcc/testsuite/g++.dg/template/explicit-instantiation6.C
  edbb068b5e160bf72ca66e43d8adde70  gcc/testsuite/g++.dg/template/explicit-instantiation7.C
! 21f7e70f2518a488ba640d9922f989af  gcc/testsuite/g++.dg/template/explicit-instantiation8.C
  9f2fe063cb376a7d8e7132c2abb44026  gcc/testsuite/g++.dg/template/explicit-instantiation9.C
  610a5ce174887479710ddef7e050b0e9  gcc/testsuite/g++.dg/template/explicit1.C
  44f3a8f925589bae9dc773b19a3fd2de  gcc/testsuite/g++.dg/template/explicit2.C
*************** dbe58e15424b476b932c58cb5bc16046  gcc/te
*** 40626,40632 ****
  38d5ed9578a5910b56d57c30c896f01f  gcc/testsuite/g++.dg/torture/pr90313.C
  8f37bcbeb67682110bfb7b989631551a  gcc/testsuite/g++.dg/torture/pr90982.C
  bd0e252d81e8fe6df182d804fa7e51d1  gcc/testsuite/g++.dg/torture/pr90994.C
! c09ff981d388790529f959a054685551  gcc/testsuite/g++.dg/torture/pr91155.C
  25acdead98815c5c152ccee9449f6ab0  gcc/testsuite/g++.dg/torture/pr91270.C
  8512e0d79849c3153a1290024a552a14  gcc/testsuite/g++.dg/torture/pr91280.C
  4e2ef88024e234fead951a74d4ba3756  gcc/testsuite/g++.dg/torture/pr91334.C
--- 40665,40671 ----
  38d5ed9578a5910b56d57c30c896f01f  gcc/testsuite/g++.dg/torture/pr90313.C
  8f37bcbeb67682110bfb7b989631551a  gcc/testsuite/g++.dg/torture/pr90982.C
  bd0e252d81e8fe6df182d804fa7e51d1  gcc/testsuite/g++.dg/torture/pr90994.C
! 454ae6639159fbbd57f42185e3c39461  gcc/testsuite/g++.dg/torture/pr91155.C
  25acdead98815c5c152ccee9449f6ab0  gcc/testsuite/g++.dg/torture/pr91270.C
  8512e0d79849c3153a1290024a552a14  gcc/testsuite/g++.dg/torture/pr91280.C
  4e2ef88024e234fead951a74d4ba3756  gcc/testsuite/g++.dg/torture/pr91334.C
*************** e48684fba8399ff995984d71ebc63e26  gcc/te
*** 40797,40802 ****
--- 40836,40843 ----
  8751bd4974a7134cbf8b6b4fa30f58e3  gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C
  2e94d74d37d26fff24ad120b1785858a  gcc/testsuite/g++.dg/tree-ssa/loop-split-1.C
  8a88746bf26b483b92bb27194cb12cb4  gcc/testsuite/g++.dg/tree-ssa/modref-1.C
+ c3448bc4829aed087221e4cd1c4e09b4  gcc/testsuite/g++.dg/tree-ssa/mult-negate-zeroone-1.C
+ 4d1699f327183f18814c0d35c2a4daa5  gcc/testsuite/g++.dg/tree-ssa/mult-negate-zeroone-2.C
  c60f58c35051bdf33475572fe6676ded  gcc/testsuite/g++.dg/tree-ssa/new1.C
  15ab0ba34272a9b9cb6f26af6f24d6be  gcc/testsuite/g++.dg/tree-ssa/nonzero-1.C
  7966471926be0c3228b95fecdf1c10bc  gcc/testsuite/g++.dg/tree-ssa/nonzero-2.C
*************** a1e80c97392f15c445626accf3d33f52  gcc/te
*** 45685,45691 ****
  fc961318316b49991b985e2fdd2be83d  gcc/testsuite/g++.target/aarch64/spaceship_1.C
  4501fff92ad989d592916380d816d0d7  gcc/testsuite/g++.target/aarch64/spaceship_2.C
  43ef3ca7cf2796812900332b2f3aa1c3  gcc/testsuite/g++.target/aarch64/spaceship_3.C
! a2d0713d4589292443f01832c969dd5a  gcc/testsuite/g++.target/aarch64/sve/aarch64-ssve.exp
  546af9a83b6016321f7eca8e57bd79bf  gcc/testsuite/g++.target/aarch64/sve/aarch64-sve.exp
  a6360472eed92aa68d9de7e0dcbbc077  gcc/testsuite/g++.target/aarch64/sve/abd_1.C
  4be94bbd6cb338300aa5e5978429a0f3  gcc/testsuite/g++.target/aarch64/sve/acle/aarch64-sve-acle-asm.exp
--- 45726,45732 ----
  fc961318316b49991b985e2fdd2be83d  gcc/testsuite/g++.target/aarch64/spaceship_1.C
  4501fff92ad989d592916380d816d0d7  gcc/testsuite/g++.target/aarch64/spaceship_2.C
  43ef3ca7cf2796812900332b2f3aa1c3  gcc/testsuite/g++.target/aarch64/spaceship_3.C
! 9aa0f37bd2ae29b75385cac42236c2f2  gcc/testsuite/g++.target/aarch64/sve/aarch64-ssve.exp
  546af9a83b6016321f7eca8e57bd79bf  gcc/testsuite/g++.target/aarch64/sve/aarch64-sve.exp
  a6360472eed92aa68d9de7e0dcbbc077  gcc/testsuite/g++.target/aarch64/sve/abd_1.C
  4be94bbd6cb338300aa5e5978429a0f3  gcc/testsuite/g++.target/aarch64/sve/acle/aarch64-sve-acle-asm.exp
*************** f515b18aeb1d66984b8b5d71e9fc0b3c  gcc/te
*** 45814,45821 ****
  6862e49f6ff7a5e747153281ab79e076  gcc/testsuite/g++.target/aarch64/sve/dup_sel_2.C
  3d2cb44e0de08181f655152208b361fb  gcc/testsuite/g++.target/aarch64/sve/dup_sel_3.C
  f3ce91773bd0b4a3127c481ccd50f20e  gcc/testsuite/g++.target/aarch64/sve/dup_sel_4.C
! 88995b2addb79f14a72ba650d83a3920  gcc/testsuite/g++.target/aarch64/sve/dup_sel_5.C
! 9e6f261244b524db00958d47111eef62  gcc/testsuite/g++.target/aarch64/sve/dup_sel_6.C
  ed268bb0c6479d4c5a1aa2efea8c023a  gcc/testsuite/g++.target/aarch64/sve/dwarf-bit-stride.C
  57a0aa7896383cbb0273342d58a4a7b5  gcc/testsuite/g++.target/aarch64/sve/max_1.C
  ab6c5e333d0a740ae5ecff69966813a2  gcc/testsuite/g++.target/aarch64/sve/min_1.C
--- 45855,45862 ----
  6862e49f6ff7a5e747153281ab79e076  gcc/testsuite/g++.target/aarch64/sve/dup_sel_2.C
  3d2cb44e0de08181f655152208b361fb  gcc/testsuite/g++.target/aarch64/sve/dup_sel_3.C
  f3ce91773bd0b4a3127c481ccd50f20e  gcc/testsuite/g++.target/aarch64/sve/dup_sel_4.C
! 8e6bbb64e65d09866797aba4084d5a32  gcc/testsuite/g++.target/aarch64/sve/dup_sel_5.C
! 1a63a2ea8302e185aea00c217c5cbea9  gcc/testsuite/g++.target/aarch64/sve/dup_sel_6.C
  ed268bb0c6479d4c5a1aa2efea8c023a  gcc/testsuite/g++.target/aarch64/sve/dwarf-bit-stride.C
  57a0aa7896383cbb0273342d58a4a7b5  gcc/testsuite/g++.target/aarch64/sve/max_1.C
  ab6c5e333d0a740ae5ecff69966813a2  gcc/testsuite/g++.target/aarch64/sve/min_1.C
*************** faaf8cb88bea0613c5676fb7a19296ed  gcc/te
*** 45913,45919 ****
  60c5bf14a1938214fb6ec30c76d3922f  gcc/testsuite/g++.target/i386/cf_check-1.C
  d308b2d49958c216374d7230f881c421  gcc/testsuite/g++.target/i386/cf_check-2.C
  55f763e733fe870cc5c57b8cd5dcaae6  gcc/testsuite/g++.target/i386/cf_check-3.C
! 9443e26bf187177f51a3e072f4e83f2a  gcc/testsuite/g++.target/i386/cf_check-4.C
  7a33fea3b2ecb10736e762b211f6ae42  gcc/testsuite/g++.target/i386/crc32-4.C
  ea7a625a5c087724f70333c1b6ad80fc  gcc/testsuite/g++.target/i386/empty-class1.C
  5c480abcec0d76095612ae8099a7315e  gcc/testsuite/g++.target/i386/empty-class2.C
--- 45954,45960 ----
  60c5bf14a1938214fb6ec30c76d3922f  gcc/testsuite/g++.target/i386/cf_check-1.C
  d308b2d49958c216374d7230f881c421  gcc/testsuite/g++.target/i386/cf_check-2.C
  55f763e733fe870cc5c57b8cd5dcaae6  gcc/testsuite/g++.target/i386/cf_check-3.C
! 97fab825d7d39facbedf60767acf75d1  gcc/testsuite/g++.target/i386/cf_check-4.C
  7a33fea3b2ecb10736e762b211f6ae42  gcc/testsuite/g++.target/i386/crc32-4.C
  ea7a625a5c087724f70333c1b6ad80fc  gcc/testsuite/g++.target/i386/empty-class1.C
  5c480abcec0d76095612ae8099a7315e  gcc/testsuite/g++.target/i386/empty-class2.C
*************** fb6172109b269722e02aa230bd3522d8  gcc/te
*** 45939,45946 ****
  ae8574e23abf3d9af1504b3bec6f9ec6  gcc/testsuite/g++.target/i386/mangling-alias1.C
  ae2651261413c9389759f8bfa661ce25  gcc/testsuite/g++.target/i386/memset-pr101366-1.C
  57024bf79b03bcb6b285444a8b28b612  gcc/testsuite/g++.target/i386/memset-pr101366-2.C
! b8a729f602b8c4186fa41e3590e709a8  gcc/testsuite/g++.target/i386/memset-pr108585-1a.C
! 7c4923efee1dc45a09ad760153187e5b  gcc/testsuite/g++.target/i386/memset-pr108585-1b.C
  4ed896188ea2bea98c965e7e41f3d3d7  gcc/testsuite/g++.target/i386/memset-pr118276-1a.C
  a467604d2accb345c20c003f878494e4  gcc/testsuite/g++.target/i386/memset-pr118276-1b.C
  ac490f4c7437432cf3c76a1c44c29a8f  gcc/testsuite/g++.target/i386/memset-pr118276-1c.C
--- 45980,45987 ----
  ae8574e23abf3d9af1504b3bec6f9ec6  gcc/testsuite/g++.target/i386/mangling-alias1.C
  ae2651261413c9389759f8bfa661ce25  gcc/testsuite/g++.target/i386/memset-pr101366-1.C
  57024bf79b03bcb6b285444a8b28b612  gcc/testsuite/g++.target/i386/memset-pr101366-2.C
! d44ff1620c8e7e4378f137dd6eb4ccc1  gcc/testsuite/g++.target/i386/memset-pr108585-1a.C
! bc300789922253790e22ba0017277d65  gcc/testsuite/g++.target/i386/memset-pr108585-1b.C
  4ed896188ea2bea98c965e7e41f3d3d7  gcc/testsuite/g++.target/i386/memset-pr118276-1a.C
  a467604d2accb345c20c003f878494e4  gcc/testsuite/g++.target/i386/memset-pr118276-1b.C
  ac490f4c7437432cf3c76a1c44c29a8f  gcc/testsuite/g++.target/i386/memset-pr118276-1c.C
*************** ee94511375797117140ca777fd1695b1  gcc/te
*** 54504,54510 ****
  704c9a2dca0a451cca6e5855f7f2347f  gcc/testsuite/gcc.dg/darwin-minversion-7.c
  5a8b775f8ce1e0cafb8782fbc39b58e4  gcc/testsuite/gcc.dg/darwin-minversion-8.c
  aa9dfa39c42ef65a88c0a708412fb842  gcc/testsuite/gcc.dg/darwin-minversion-9.c
! c4adb9fbe996928419d7acb79ac559cd  gcc/testsuite/gcc.dg/darwin-minversion-link.c
  b66bb093837bda7692b73c8aa9711e00  gcc/testsuite/gcc.dg/darwin-sections.c
  f7857b3d082c7452ee5a60411d5f02bc  gcc/testsuite/gcc.dg/darwin-segaddr.c
  e3d2d2840d7d23dee7e2cd94e097a114  gcc/testsuite/gcc.dg/darwin-version-1.c
--- 54545,54551 ----
  704c9a2dca0a451cca6e5855f7f2347f  gcc/testsuite/gcc.dg/darwin-minversion-7.c
  5a8b775f8ce1e0cafb8782fbc39b58e4  gcc/testsuite/gcc.dg/darwin-minversion-8.c
  aa9dfa39c42ef65a88c0a708412fb842  gcc/testsuite/gcc.dg/darwin-minversion-9.c
! 6210351a6c6f26522fff49f77debf04b  gcc/testsuite/gcc.dg/darwin-minversion-link.c
  b66bb093837bda7692b73c8aa9711e00  gcc/testsuite/gcc.dg/darwin-sections.c
  f7857b3d082c7452ee5a60411d5f02bc  gcc/testsuite/gcc.dg/darwin-segaddr.c
  e3d2d2840d7d23dee7e2cd94e097a114  gcc/testsuite/gcc.dg/darwin-version-1.c
*************** fbe375bf9288bf092b7cef1996c14a1f  gcc/te
*** 54715,54722 ****
  05dde46babff3ba7e4ea1940a11314c2  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-uninit.c
  42c6c9570a94e44ac29201a8df0d4450  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-3.c
  41463d28a9bbf97a554feb4c959fed01  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-3.h
! 9e89388c0e1fb3e82696e9c739160c92  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-macro.c
! eec651e182274afc1200132346cdf1ed  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-macro2.c
  65bc0a73f1d2baf8df24a74d9d5a98e2  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2.exp
  362aa298514051f8a5b0ce8f2e1ee91a  gcc/testsuite/gcc.dg/debug/dwarf2/enum-loc1.c
  59c839cb709f2082c72d622c16f665f4  gcc/testsuite/gcc.dg/debug/dwarf2/fesd-any.c
--- 54756,54763 ----
  05dde46babff3ba7e4ea1940a11314c2  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-uninit.c
  42c6c9570a94e44ac29201a8df0d4450  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-3.c
  41463d28a9bbf97a554feb4c959fed01  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-3.h
! dd6a86059bef2c1a18361b813858114b  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-macro.c
! f09c62d83b52ca3742e4c0a363cfb023  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-macro2.c
  65bc0a73f1d2baf8df24a74d9d5a98e2  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2.exp
  362aa298514051f8a5b0ce8f2e1ee91a  gcc/testsuite/gcc.dg/debug/dwarf2/enum-loc1.c
  59c839cb709f2082c72d622c16f665f4  gcc/testsuite/gcc.dg/debug/dwarf2/fesd-any.c
*************** c98bd8084443af9809a9b85283a91966  gcc/te
*** 56795,56800 ****
--- 56836,56843 ----
  6077153710c7f48ed85417e157b3a87e  gcc/testsuite/gcc.dg/instrument-4.c
  963b69ae1db3b89a567c14d649ec5c41  gcc/testsuite/gcc.dg/int-bwise-opt-1.c
  93fdb4b353fe6ff68d0f24593d0c967c  gcc/testsuite/gcc.dg/int-bwise-opt-2.c
+ ecdd04913c4a7f270e17a8c42d62f4f2  gcc/testsuite/gcc.dg/int-bwise-opt-3.c
+ 8003ae8c94df0f804fe4d719eeb613ca  gcc/testsuite/gcc.dg/int-bwise-opt-4.c
  a481d0a49a4bf2aa98254e8df226bcd5  gcc/testsuite/gcc.dg/intermod-1.c
  22557d653f291c76fc7092fa90747b0a  gcc/testsuite/gcc.dg/intmax_t-1.c
  623aed8859c8d8790d8542fcad873744  gcc/testsuite/gcc.dg/invalid-call-1.c
*************** ee48fe70797eb5503b9b8767efccd315  gcc/te
*** 58986,58991 ****
--- 59029,59035 ----
  d05e4c7e8a6e722440c3fa08495a5de7  gcc/testsuite/gcc.dg/pr125050.c
  3c7423a9897969335d65075272d17e19  gcc/testsuite/gcc.dg/pr125072.c
  192df6769f6f110bb8f33708a1ceeea9  gcc/testsuite/gcc.dg/pr125117.c
+ 1aeae21fcabe269ed5b59c08143b85d4  gcc/testsuite/gcc.dg/pr125173-1.c
  39e77ec3d93c3445ad8a73fa3d9fab87  gcc/testsuite/gcc.dg/pr125206.c
  402e7c0c2fa603af9c7bac556e8d71a8  gcc/testsuite/gcc.dg/pr125209.c
  7b30511bd41fb50fefd587c42e5d984c  gcc/testsuite/gcc.dg/pr125252.c
*************** b9e821b448b2a7ca97d76e3b0edfe9cf  gcc/te
*** 58994,58999 ****
--- 59038,59046 ----
  ab60b475998ea1ed92a9002d6336bfd6  gcc/testsuite/gcc.dg/pr125501.c
  81986438261d8b7deff16165747006c1  gcc/testsuite/gcc.dg/pr125579.c
  8c00b7615cb26255ca6f38542438e857  gcc/testsuite/gcc.dg/pr125588-1.c
+ 2145690aae63a443e6b20c904de8a496  gcc/testsuite/gcc.dg/pr125668.c
+ cb2af6eb124c1d269b7aedc04681b314  gcc/testsuite/gcc.dg/pr125706.c
+ 28b84977a9c78000d3bd028bdd0ee295  gcc/testsuite/gcc.dg/pr125707.c
  bc5ddfbbc46f4e0cce1629d1b58d3090  gcc/testsuite/gcc.dg/pr12603.c
  72a2fca76cb69617ae36bab93c7ec0d7  gcc/testsuite/gcc.dg/pr12625-1.c
  6f0ef61e5a12db5f11da839b2988c5e1  gcc/testsuite/gcc.dg/pr13519-1.c
*************** fb5cac46a50575e67c9724a1d428b0dd  gcc/te
*** 60930,60936 ****
  dbc34bc46bbc999bcf2710255622383b  gcc/testsuite/gcc.dg/pr96818.c
  4ece741de773ab41d7931280a3d12fe3  gcc/testsuite/gcc.dg/pr96931.c
  e2fcbb1a028a1d70899c14aaedb82450  gcc/testsuite/gcc.dg/pr97078.c
! 8547a0b7d698cdd8886f6f9de8cd32a5  gcc/testsuite/gcc.dg/pr97172-2.c
  bae42579ca300d6f7e5fdf641f2ce9ed  gcc/testsuite/gcc.dg/pr97172.c
  cadcdac808b965a7b33d87188deac421  gcc/testsuite/gcc.dg/pr97192.c
  f54e2f3a93cb93910a45086bec0fe1cc  gcc/testsuite/gcc.dg/pr97238.c
--- 60977,60983 ----
  dbc34bc46bbc999bcf2710255622383b  gcc/testsuite/gcc.dg/pr96818.c
  4ece741de773ab41d7931280a3d12fe3  gcc/testsuite/gcc.dg/pr96931.c
  e2fcbb1a028a1d70899c14aaedb82450  gcc/testsuite/gcc.dg/pr97078.c
! fda3f312b534d75e30d70f7fc5dbddd3  gcc/testsuite/gcc.dg/pr97172-2.c
  bae42579ca300d6f7e5fdf641f2ce9ed  gcc/testsuite/gcc.dg/pr97172.c
  cadcdac808b965a7b33d87188deac421  gcc/testsuite/gcc.dg/pr97192.c
  f54e2f3a93cb93910a45086bec0fe1cc  gcc/testsuite/gcc.dg/pr97238.c
*************** e2a142dab1f38e7f7a8ffcdce454ce29  gcc/te
*** 62878,62883 ****
--- 62925,62935 ----
  828006abdbcb5a0b6e3bc5451790d857  gcc/testsuite/gcc.dg/torture/pr125545.c
  865ae037be55d942ca9a21c2d93b6994  gcc/testsuite/gcc.dg/torture/pr125553.c
  5fd68126d95198e18114a17a92bae1c7  gcc/testsuite/gcc.dg/torture/pr125602.c
+ e1cd2f943b1276d7edf0ad19d7f2af26  gcc/testsuite/gcc.dg/torture/pr125652.c
+ f56a66971ef2360d1150ae851eb9f24c  gcc/testsuite/gcc.dg/torture/pr125653.c
+ 13a26b482c0abe9bba6de7ad78d38472  gcc/testsuite/gcc.dg/torture/pr125774-1.c
+ 459e4addcc4688257422fed8391988cd  gcc/testsuite/gcc.dg/torture/pr125776-1.c
+ 9b58e29ad15155e6fc7bf7dbad6bc468  gcc/testsuite/gcc.dg/torture/pr125776-2.c
  ded4330fd1cd52783bd9b1761db038ef  gcc/testsuite/gcc.dg/torture/pr16104-1.c
  fc265ee05da2f29f0e92804661cd1f28  gcc/testsuite/gcc.dg/torture/pr17526.c
  01c583edb41b632b835aa892b9c1cb14  gcc/testsuite/gcc.dg/torture/pr17933-1.c
*************** e0419e6272f3f7d06ab87ebdcac6b06f  gcc/te
*** 65053,65058 ****
--- 65105,65112 ----
  ce587f71a4758452bb7bdd847c66e619  gcc/testsuite/gcc.dg/tree-ssa/overflow-1.c
  20ab75cc87eeb1a4398c8dd8140e58c6  gcc/testsuite/gcc.dg/tree-ssa/overflow-2.c
  266c21d33851ad395bde2ea3f8603d58  gcc/testsuite/gcc.dg/tree-ssa/peel1.c
+ 2c353bea2cf689424ec581ddfd04ba1c  gcc/testsuite/gcc.dg/tree-ssa/phi-factor-binary-1.c
+ a0c450e554f49c75cddc4b3ef392be43  gcc/testsuite/gcc.dg/tree-ssa/phi-factor-binary-2.c
  ca3185e60127c7a83151ffd5cf76d1d2  gcc/testsuite/gcc.dg/tree-ssa/phi-opt-1.c
  1669094b5b199dda6f7632cac7062c80  gcc/testsuite/gcc.dg/tree-ssa/phi-opt-10.c
  6848aca75a86ca896cd500dab8f7461a  gcc/testsuite/gcc.dg/tree-ssa/phi-opt-11.c
*************** ad2bfdd6a893fdb581e5cffc0c618d52  gcc/te
*** 65304,65309 ****
--- 65358,65364 ----
  308d8846eea85f9ac56f27fb495845ee  gcc/testsuite/gcc.dg/tree-ssa/pr118487.c
  b8236d8ce423075243050d2ed9692781  gcc/testsuite/gcc.dg/tree-ssa/pr118517.c
  6d2d98158a34d9ab09e487779a321f3d  gcc/testsuite/gcc.dg/tree-ssa/pr118637.c
+ 0aa85ef2f6c842b8504962241bba8b8b  gcc/testsuite/gcc.dg/tree-ssa/pr118680.c
  269c5fb72451371e1dde1dd85e06c989  gcc/testsuite/gcc.dg/tree-ssa/pr118902-1.c
  b0891b1dddf226da47f4f976abdd7cb0  gcc/testsuite/gcc.dg/tree-ssa/pr119085.c
  076026d8017984b86eee7a129cb41bd7  gcc/testsuite/gcc.dg/tree-ssa/pr119420.c
*************** f4c56a02709c699f81b07b81dd1a2c1e  gcc/te
*** 65323,65329 ****
  fa7603643fb0875e44fb78188614e8a3  gcc/testsuite/gcc.dg/tree-ssa/pr122569-1.c
  06ddaf8bcdd0df63a4b72257bff42ef0  gcc/testsuite/gcc.dg/tree-ssa/pr122569-2.c
  de81b2d2951773077a5d5e6d9db8a8e4  gcc/testsuite/gcc.dg/tree-ssa/pr122588-1.c
! ab985bcbd18463ddcc0cb59b8a091e7d  gcc/testsuite/gcc.dg/tree-ssa/pr122629-1.c
  71eb14b3ae5faf81c5226dc766d48edd  gcc/testsuite/gcc.dg/tree-ssa/pr122976.c
  b0dfa81cfe991cc45aece9c3f083a075  gcc/testsuite/gcc.dg/tree-ssa/pr122996.c
  fa32f3c662bc31e5bbf4daa360b9c87f  gcc/testsuite/gcc.dg/tree-ssa/pr123372.c
--- 65378,65384 ----
  fa7603643fb0875e44fb78188614e8a3  gcc/testsuite/gcc.dg/tree-ssa/pr122569-1.c
  06ddaf8bcdd0df63a4b72257bff42ef0  gcc/testsuite/gcc.dg/tree-ssa/pr122569-2.c
  de81b2d2951773077a5d5e6d9db8a8e4  gcc/testsuite/gcc.dg/tree-ssa/pr122588-1.c
! 63935006310fe21a6b06fca6cc5d6a98  gcc/testsuite/gcc.dg/tree-ssa/pr122629-1.c
  71eb14b3ae5faf81c5226dc766d48edd  gcc/testsuite/gcc.dg/tree-ssa/pr122976.c
  b0dfa81cfe991cc45aece9c3f083a075  gcc/testsuite/gcc.dg/tree-ssa/pr122996.c
  fa32f3c662bc31e5bbf4daa360b9c87f  gcc/testsuite/gcc.dg/tree-ssa/pr123372.c
*************** af7283dee474093606fed455637b88f3  gcc/te
*** 66020,66030 ****
  898bf73ccd91832671c8da00617439c7  gcc/testsuite/gcc.dg/tree-ssa/reassoc-9.c
  09a0ef1d8ae3fff11dd67dca71fd8ba0  gcc/testsuite/gcc.dg/tree-ssa/recip-1.c
  f4bcbafb829540ea32f44a5eb5d1b215  gcc/testsuite/gcc.dg/tree-ssa/recip-2.c
! 36e2877930097fd3d91266d9e0a44b1a  gcc/testsuite/gcc.dg/tree-ssa/recip-3.c
  5b2e65e338a30863d4a32a9c0fa2ae41  gcc/testsuite/gcc.dg/tree-ssa/recip-4.c
! 78cd4cb521cece5f9778a6c47bac5ffe  gcc/testsuite/gcc.dg/tree-ssa/recip-5.c
! 6487b68e6cadf4f3a540ff4e3ee978c8  gcc/testsuite/gcc.dg/tree-ssa/recip-6.c
! d3866442d6a546203c408f9b7e4884ce  gcc/testsuite/gcc.dg/tree-ssa/recip-7.c
  009a08db05aa035a09d41f6a566f529f  gcc/testsuite/gcc.dg/tree-ssa/recip-8.c
  80fbac66204c8d8bdee999dbad6cf805  gcc/testsuite/gcc.dg/tree-ssa/redundant-assign-zero-1.c
  aef28ece6cd6d40fb97636586d50cc67  gcc/testsuite/gcc.dg/tree-ssa/redundant-assign-zero-2.c
--- 66075,66085 ----
  898bf73ccd91832671c8da00617439c7  gcc/testsuite/gcc.dg/tree-ssa/reassoc-9.c
  09a0ef1d8ae3fff11dd67dca71fd8ba0  gcc/testsuite/gcc.dg/tree-ssa/recip-1.c
  f4bcbafb829540ea32f44a5eb5d1b215  gcc/testsuite/gcc.dg/tree-ssa/recip-2.c
! f6542aa902eec0bebbad9c40e7598877  gcc/testsuite/gcc.dg/tree-ssa/recip-3.c
  5b2e65e338a30863d4a32a9c0fa2ae41  gcc/testsuite/gcc.dg/tree-ssa/recip-4.c
! 009ada8fdc861f34ff412b88766933a8  gcc/testsuite/gcc.dg/tree-ssa/recip-5.c
! c9fbdaa9c2f011add5227d80edee6caf  gcc/testsuite/gcc.dg/tree-ssa/recip-6.c
! a0bf223e87b538277fc9f6a8117cae66  gcc/testsuite/gcc.dg/tree-ssa/recip-7.c
  009a08db05aa035a09d41f6a566f529f  gcc/testsuite/gcc.dg/tree-ssa/recip-8.c
  80fbac66204c8d8bdee999dbad6cf805  gcc/testsuite/gcc.dg/tree-ssa/redundant-assign-zero-1.c
  aef28ece6cd6d40fb97636586d50cc67  gcc/testsuite/gcc.dg/tree-ssa/redundant-assign-zero-2.c
*************** c2616807b5458da149bcc0d0ff292c60  gcc/te
*** 66067,66073 ****
  2cb74ffdd8d4210ad1c6bbaddbd8a8b6  gcc/testsuite/gcc.dg/tree-ssa/slsr-1.c
  a2527727970eaab3e3d043e5e4379256  gcc/testsuite/gcc.dg/tree-ssa/slsr-10.c
  549723cdcfb863f339c41fe0af39103f  gcc/testsuite/gcc.dg/tree-ssa/slsr-11.c
! 9ce7448aa1ff873d9eeb0c63415fb5f7  gcc/testsuite/gcc.dg/tree-ssa/slsr-12.c
  1a4ffd71baf2ac9d35c50ae9dd3a8c73  gcc/testsuite/gcc.dg/tree-ssa/slsr-13.c
  fc528be3158a0d09309e336766dd346e  gcc/testsuite/gcc.dg/tree-ssa/slsr-14.c
  961ace88dde969fcb700495e23b3f51b  gcc/testsuite/gcc.dg/tree-ssa/slsr-15.c
--- 66122,66128 ----
  2cb74ffdd8d4210ad1c6bbaddbd8a8b6  gcc/testsuite/gcc.dg/tree-ssa/slsr-1.c
  a2527727970eaab3e3d043e5e4379256  gcc/testsuite/gcc.dg/tree-ssa/slsr-10.c
  549723cdcfb863f339c41fe0af39103f  gcc/testsuite/gcc.dg/tree-ssa/slsr-11.c
! ba569f42e5673cf9ce9b62982774da18  gcc/testsuite/gcc.dg/tree-ssa/slsr-12.c
  1a4ffd71baf2ac9d35c50ae9dd3a8c73  gcc/testsuite/gcc.dg/tree-ssa/slsr-13.c
  fc528be3158a0d09309e336766dd346e  gcc/testsuite/gcc.dg/tree-ssa/slsr-14.c
  961ace88dde969fcb700495e23b3f51b  gcc/testsuite/gcc.dg/tree-ssa/slsr-15.c
*************** d264e0370d8f66602932c4eac12473ec  gcc/te
*** 66091,66097 ****
  9686e8d3902b5eaf14164d5ba74a59a8  gcc/testsuite/gcc.dg/tree-ssa/slsr-31.c
  b036f7c57d20138574c1d71b1d315256  gcc/testsuite/gcc.dg/tree-ssa/slsr-32.c
  bc5eda2aa90e1a634fd1ec846d47c98c  gcc/testsuite/gcc.dg/tree-ssa/slsr-33.c
! be9ca5322c39937b4c3bd120411547b3  gcc/testsuite/gcc.dg/tree-ssa/slsr-34.c
  a971bbe60f2e69d2e08e300a2d555b9f  gcc/testsuite/gcc.dg/tree-ssa/slsr-35.c
  318ced0a1ecc28ca82748c44b19faefc  gcc/testsuite/gcc.dg/tree-ssa/slsr-36.c
  164d3f1553fd0d030b255cf928d0cd42  gcc/testsuite/gcc.dg/tree-ssa/slsr-37.c
--- 66146,66152 ----
  9686e8d3902b5eaf14164d5ba74a59a8  gcc/testsuite/gcc.dg/tree-ssa/slsr-31.c
  b036f7c57d20138574c1d71b1d315256  gcc/testsuite/gcc.dg/tree-ssa/slsr-32.c
  bc5eda2aa90e1a634fd1ec846d47c98c  gcc/testsuite/gcc.dg/tree-ssa/slsr-33.c
! bfa57da412e05d820c20d49e75276908  gcc/testsuite/gcc.dg/tree-ssa/slsr-34.c
  a971bbe60f2e69d2e08e300a2d555b9f  gcc/testsuite/gcc.dg/tree-ssa/slsr-35.c
  318ced0a1ecc28ca82748c44b19faefc  gcc/testsuite/gcc.dg/tree-ssa/slsr-36.c
  164d3f1553fd0d030b255cf928d0cd42  gcc/testsuite/gcc.dg/tree-ssa/slsr-37.c
*************** c26acbf1612dc4698a8344d64f963df0  gcc/te
*** 67775,67781 ****
  21722bf37953d9796f5d5fd71e243c2b  gcc/testsuite/gcc.dg/vect/pr113281-2.c
  31ad99fbdbecf9925f5f4504adc83b13  gcc/testsuite/gcc.dg/vect/pr113281-3.c
  e7f3d45d3b7be1d3f34c03fe14a64322  gcc/testsuite/gcc.dg/vect/pr113281-4.c
! 8f0bbff86de57f60a2a350c847f4db18  gcc/testsuite/gcc.dg/vect/pr113281-5.c
  a625823efd8fef236da2a9d09aac2d38  gcc/testsuite/gcc.dg/vect/pr113371.c
  28a525506efb3dd3a5d9317a10bf1e7d  gcc/testsuite/gcc.dg/vect/pr113431.c
  b1cdd3c6aefbc3dde4884c1feb68b95f  gcc/testsuite/gcc.dg/vect/pr113576.c
--- 67830,67836 ----
  21722bf37953d9796f5d5fd71e243c2b  gcc/testsuite/gcc.dg/vect/pr113281-2.c
  31ad99fbdbecf9925f5f4504adc83b13  gcc/testsuite/gcc.dg/vect/pr113281-3.c
  e7f3d45d3b7be1d3f34c03fe14a64322  gcc/testsuite/gcc.dg/vect/pr113281-4.c
! 6e816195952a1d6f8a0d1dd0b1932b42  gcc/testsuite/gcc.dg/vect/pr113281-5.c
  a625823efd8fef236da2a9d09aac2d38  gcc/testsuite/gcc.dg/vect/pr113371.c
  28a525506efb3dd3a5d9317a10bf1e7d  gcc/testsuite/gcc.dg/vect/pr113431.c
  b1cdd3c6aefbc3dde4884c1feb68b95f  gcc/testsuite/gcc.dg/vect/pr113576.c
*************** ae7dd7b535828dd877ea453ce08b1b4b  gcc/te
*** 67873,67878 ****
--- 67928,67935 ----
  17c5c38b2c03547dce34b548af8a2143  gcc/testsuite/gcc.dg/vect/pr123525.c
  86e3be2c542c86cb2ddd62c5080014e5  gcc/testsuite/gcc.dg/vect/pr123731.c
  d5aa71d5c3c97ae8aba5aa2049a772e3  gcc/testsuite/gcc.dg/vect/pr125509.c
+ 9dbd20f58a6a906394019d44a1b0ac62  gcc/testsuite/gcc.dg/vect/pr125567.c
+ 9345816cef1a19c03845e78efc0fb484  gcc/testsuite/gcc.dg/vect/pr125646.c
  42d48d2ecd5682545b12ac42f879a831  gcc/testsuite/gcc.dg/vect/pr16105.c
  231c99dba9475fe09525bbf6f4374124  gcc/testsuite/gcc.dg/vect/pr18308.c
  915cf38408eaa7fee5013d90ec1c3251  gcc/testsuite/gcc.dg/vect/pr18400.c
*************** ede5b51555ddd1cd60eabbd5224d0866  gcc/te
*** 68383,68388 ****
--- 68440,68446 ----
  47a58a2432ef206c186d1cc0b3bd5bc0  gcc/testsuite/gcc.dg/vect/slp-reduc-9.c
  df438928392b81c11f2a1e3220ae04a3  gcc/testsuite/gcc.dg/vect/slp-reduc-sad-2.c
  066c96f1ae2a9f0f0508e5f06659427c  gcc/testsuite/gcc.dg/vect/slp-reduc-sad.c
+ d9f85d47a80591af665292b066c27845  gcc/testsuite/gcc.dg/vect/slp-reduc-var.c
  bce659f36d2c583cb99462b31ce124ad  gcc/testsuite/gcc.dg/vect/slp-simd-clone-1.c
  b0a87850d8d88048ac704db35dcc2459  gcc/testsuite/gcc.dg/vect/slp-simd-clone-2.c
  af29abb65e6b1d76eb0832249ab100f7  gcc/testsuite/gcc.dg/vect/slp-widen-mult-half.c
*************** a0fd49ab473516c9610de45e68c1d2a2  gcc/te
*** 69289,69295 ****
  190c8787f98acde286950b67d8a0e781  gcc/testsuite/gcc.dg/vect/vect-reduc-chain-dot-slp-3.c
  9b8d64f48db60867dc60b9217f03555b  gcc/testsuite/gcc.dg/vect/vect-reduc-chain-dot-slp-4.c
  137e839c836da0efd1abf91162990b5a  gcc/testsuite/gcc.dg/vect/vect-reduc-cond-1.c
! 6e03f3ea11f72547023ed45e5e473a05  gcc/testsuite/gcc.dg/vect/vect-reduc-cond-2.c
  8973a625b6511f40e4e03b24bbcf3159  gcc/testsuite/gcc.dg/vect/vect-reduc-cond-3.c
  ba18f9c5868c96055013b2f288be87c2  gcc/testsuite/gcc.dg/vect/vect-reduc-cond-add-1.c
  1c446ff114c972abcfb111d361bd107f  gcc/testsuite/gcc.dg/vect/vect-reduc-cond-sub.c
--- 69347,69353 ----
  190c8787f98acde286950b67d8a0e781  gcc/testsuite/gcc.dg/vect/vect-reduc-chain-dot-slp-3.c
  9b8d64f48db60867dc60b9217f03555b  gcc/testsuite/gcc.dg/vect/vect-reduc-chain-dot-slp-4.c
  137e839c836da0efd1abf91162990b5a  gcc/testsuite/gcc.dg/vect/vect-reduc-cond-1.c
! ee6fb50af0d76597874d6d40d487cba5  gcc/testsuite/gcc.dg/vect/vect-reduc-cond-2.c
  8973a625b6511f40e4e03b24bbcf3159  gcc/testsuite/gcc.dg/vect/vect-reduc-cond-3.c
  ba18f9c5868c96055013b2f288be87c2  gcc/testsuite/gcc.dg/vect/vect-reduc-cond-add-1.c
  1c446ff114c972abcfb111d361bd107f  gcc/testsuite/gcc.dg/vect/vect-reduc-cond-sub.c
*************** b656d217b1ddc88a7c1749790cc1eeba  gcc/te
*** 69929,69935 ****
  69d9b561b303bd96e74ea417f73e1ac5  gcc/testsuite/gcc.misc-tests/outputs-0.c
  773736389c2fb248099dd6dcee0ddb6b  gcc/testsuite/gcc.misc-tests/outputs-1.c
  4bffb1320eb13262d3eb5336a6683a84  gcc/testsuite/gcc.misc-tests/outputs-2.c
! 9be654fcf7de4fd76ca787673a554a36  gcc/testsuite/gcc.misc-tests/outputs.exp
  37d75aade49dd3329803e520456ae8a6  gcc/testsuite/gcc.misc-tests/sieve.c
  8b124ef23e45ad61bc2c14ba0e1096cc  gcc/testsuite/gcc.misc-tests/sieve.exp
  f0e0d52dbb689249f8d057f00e4c65e9  gcc/testsuite/gcc.misc-tests/sort2.c
--- 69987,69994 ----
  69d9b561b303bd96e74ea417f73e1ac5  gcc/testsuite/gcc.misc-tests/outputs-0.c
  773736389c2fb248099dd6dcee0ddb6b  gcc/testsuite/gcc.misc-tests/outputs-1.c
  4bffb1320eb13262d3eb5336a6683a84  gcc/testsuite/gcc.misc-tests/outputs-2.c
! 2367f917a0adbf66d94ba462e2939614  gcc/testsuite/gcc.misc-tests/outputs.exp
! 259f70f46fd162868e7799c510dad04b  gcc/testsuite/gcc.misc-tests/pr111527.exp
  37d75aade49dd3329803e520456ae8a6  gcc/testsuite/gcc.misc-tests/sieve.c
  8b124ef23e45ad61bc2c14ba0e1096cc  gcc/testsuite/gcc.misc-tests/sieve.exp
  f0e0d52dbb689249f8d057f00e4c65e9  gcc/testsuite/gcc.misc-tests/sort2.c
*************** acaaa7b0871f73bf93a15b8ccdd87575  gcc/te
*** 70144,70149 ****
--- 70203,70209 ----
  17ec255ef73cef3bbc3a0c8ca9ea408d  gcc/testsuite/gcc.target/aarch64/acle/crc32h.c
  fa7ed3baf58293efac2270a829b36fbf  gcc/testsuite/gcc.target/aarch64/acle/crc32w.c
  6717fca79661e30514c554d809b9ded2  gcc/testsuite/gcc.target/aarch64/acle/data-intrinsics.c
+ f3ca8e99c23cded8828b7da8b697de06  gcc/testsuite/gcc.target/aarch64/acle/fcvt_intrinsics.c
  01fdb83b04e7ce7619bfd39a9c8b8eb0  gcc/testsuite/gcc.target/aarch64/acle/fp8-helpers-neon.c
  e9303630d98d1f67dcf0881643f14517  gcc/testsuite/gcc.target/aarch64/acle/fp8-helpers-sme.c
  1f6c38a24e776d1d411aaf2cba14b65d  gcc/testsuite/gcc.target/aarch64/acle/fp8-helpers-sve.c
*************** ee2655ac32e03b2e446c179151077b7f  gcc/te
*** 70154,70159 ****
--- 70214,70220 ----
  6250b2f6cb86c3d3eff8e1089a62dc6b  gcc/testsuite/gcc.target/aarch64/acle/fpmr-4.c
  b124b4a8775459bdb8e9131c4d83da44  gcc/testsuite/gcc.target/aarch64/acle/fpmr-5.c
  d25dadda19568d3e3a80f390ab997b6f  gcc/testsuite/gcc.target/aarch64/acle/fpmr-6.c
+ fa2833ab037abb68dbc2b30c4589c239  gcc/testsuite/gcc.target/aarch64/acle/fprcvt.c
  9f27c626cf36fb1cce3ac775d318d73f  gcc/testsuite/gcc.target/aarch64/acle/gcs-1.c
  56cadf41ea040c38f913b6c3e6475be3  gcc/testsuite/gcc.target/aarch64/acle/jcvt_1.c
  a7c4014d53740d897076d06edcac5aaa  gcc/testsuite/gcc.target/aarch64/acle/jcvt_2.c
*************** cb2535b12d22ed2d65b724ad88f45bc4  gcc/te
*** 70198,70203 ****
--- 70259,70266 ----
  59a572a57e0172b2d647b53aaa71b73b  gcc/testsuite/gcc.target/aarch64/acle/rintnzx_1.c
  0d5ba16c2924cc1abd60d5f6e84bb892  gcc/testsuite/gcc.target/aarch64/acle/rng_1.c
  cb84d7d74821259d1a47775dd18c13c8  gcc/testsuite/gcc.target/aarch64/acle/rng_2.c
+ a71cbb3c9568c87a3a534f81de8bb6e2  gcc/testsuite/gcc.target/aarch64/acle/rprfm.c
+ 08f31d371441b987399c21c380117de8  gcc/testsuite/gcc.target/aarch64/acle/rprfm_error.c
  a204aadb3f5fc384dd117c7c09175029  gcc/testsuite/gcc.target/aarch64/acle/rwsr-1.c
  596da75607dfa463c209980dba2ef791  gcc/testsuite/gcc.target/aarch64/acle/rwsr-2.c
  90a044b6489e0d51268ae3d5ce15dead  gcc/testsuite/gcc.target/aarch64/acle/rwsr-3.c
*************** f19dc69c0aeda4c531ac93459c18637a  gcc/te
*** 70991,70997 ****
  9239537044e0e8b3473c23208cfaec87  gcc/testsuite/gcc.target/aarch64/ccmp_5.c
  765b521e40a2ec0b9e3b4b41bbf8eb17  gcc/testsuite/gcc.target/aarch64/chkfeat-1.c
  2c99cb1a0a63ab9185d01805bc08883c  gcc/testsuite/gcc.target/aarch64/chkfeat-2.c
! 210a06b80ccb6a87c0693b42719d3182  gcc/testsuite/gcc.target/aarch64/cinc_common_1.c
  f9b7d6532dbf0b85e4f2d34e60d8eba9  gcc/testsuite/gcc.target/aarch64/clrsb.c
  06b1d011104c741b0b515b92676f6c71  gcc/testsuite/gcc.target/aarch64/clz.c
  4d2c613ca01eb5ca6ed9d793fd6463af  gcc/testsuite/gcc.target/aarch64/cmn-neg.c
--- 71054,71060 ----
  9239537044e0e8b3473c23208cfaec87  gcc/testsuite/gcc.target/aarch64/ccmp_5.c
  765b521e40a2ec0b9e3b4b41bbf8eb17  gcc/testsuite/gcc.target/aarch64/chkfeat-1.c
  2c99cb1a0a63ab9185d01805bc08883c  gcc/testsuite/gcc.target/aarch64/chkfeat-2.c
! ad192d63639d9f2def280cff27b64999  gcc/testsuite/gcc.target/aarch64/cinc_common_1.c
  f9b7d6532dbf0b85e4f2d34e60d8eba9  gcc/testsuite/gcc.target/aarch64/clrsb.c
  06b1d011104c741b0b515b92676f6c71  gcc/testsuite/gcc.target/aarch64/clz.c
  4d2c613ca01eb5ca6ed9d793fd6463af  gcc/testsuite/gcc.target/aarch64/cmn-neg.c
*************** e2e19406d7c29a6c598ee660aaff3ca2  gcc/te
*** 71298,71303 ****
--- 71361,71376 ----
  c57b5c295ed6cca237cf332412409167  gcc/testsuite/gcc.target/aarch64/fp8_scalar_1.c
  bf616a2f2955f80513a03a6c4ae385df  gcc/testsuite/gcc.target/aarch64/fp8_scalar_typecheck_1.c
  2e2572d6fadd7421a17d8a41cca49d30  gcc/testsuite/gcc.target/aarch64/fpcr_fpsr_1.c
+ 08e18d75c620e17fcd8e54d50355aa0b  gcc/testsuite/gcc.target/aarch64/fprcvt.c
+ c3461aa780f1b1ba08954e82d847ca68  gcc/testsuite/gcc.target/aarch64/fprcvt.x
+ de357f1eb62d2969ba891bd9a08e4f84  gcc/testsuite/gcc.target/aarch64/fprcvt_float32_int32.c
+ ac8dbd407ea10d66396cc6bf2af1db0a  gcc/testsuite/gcc.target/aarch64/fprcvt_float32_int64.c
+ cd9487c1160ca881603404b4abd49999  gcc/testsuite/gcc.target/aarch64/fprcvt_float32_uint32.c
+ 7cea2c15748536306ec89bd95a8f3e56  gcc/testsuite/gcc.target/aarch64/fprcvt_float32_uint64.c
+ 10125fc47c3d4a0e893e4e529d7d046b  gcc/testsuite/gcc.target/aarch64/fprcvt_float64_int32.c
+ 85b3e0d6f0b39fa5c1811092aa82da61  gcc/testsuite/gcc.target/aarch64/fprcvt_float64_int64.c
+ ef807e0aa2dfd91489b8d3b6409684c0  gcc/testsuite/gcc.target/aarch64/fprcvt_float64_uint32.c
+ babcfdaf9e8a760b368491ca96d54fb0  gcc/testsuite/gcc.target/aarch64/fprcvt_float64_uint64.c
  31bd199bf5169831bc552ffd67ecd3f5  gcc/testsuite/gcc.target/aarch64/frecpe_1.c
  c4aa8a1f0ad2e74a9d73da81126c1f7e  gcc/testsuite/gcc.target/aarch64/frecpe_2.c
  88cae34e11d9f2c547f396460813b774  gcc/testsuite/gcc.target/aarch64/frint.x
*************** c4aa8a1f0ad2e74a9d73da81126c1f7e  gcc/te
*** 71305,71311 ****
  e415b924a99a0696f070ee6cf8357d54  gcc/testsuite/gcc.target/aarch64/frint_float.c
  7f8140bc0d65dde3896572f2fe084146  gcc/testsuite/gcc.target/aarch64/fuse-caller-save.c
  4b8ae6f45383d71443f074a2d98751fe  gcc/testsuite/gcc.target/aarch64/fuse_adrp_add_1.c
! 7973f2f397092bcb470faf555e491288  gcc/testsuite/gcc.target/aarch64/fuse_cmp_csel.c
  977747e3eaaf9cf943cc5dfffc3ffb6c  gcc/testsuite/gcc.target/aarch64/fuse_cmp_cset.c
  1146ad4340ec3c890e6f00e04da365ac  gcc/testsuite/gcc.target/aarch64/gcs-nonlocal-1-track-speculation.c
  302a59893af43fb3f38fe28575033058  gcc/testsuite/gcc.target/aarch64/gcs-nonlocal-1.c
--- 71378,71385 ----
  e415b924a99a0696f070ee6cf8357d54  gcc/testsuite/gcc.target/aarch64/frint_float.c
  7f8140bc0d65dde3896572f2fe084146  gcc/testsuite/gcc.target/aarch64/fuse-caller-save.c
  4b8ae6f45383d71443f074a2d98751fe  gcc/testsuite/gcc.target/aarch64/fuse_adrp_add_1.c
! 07acab838f7619b9d55161de377b3217  gcc/testsuite/gcc.target/aarch64/fuse_cmp_csel-1.c
! e729069cf7858528e0af7fdedf4cc90d  gcc/testsuite/gcc.target/aarch64/fuse_cmp_csel.c
  977747e3eaaf9cf943cc5dfffc3ffb6c  gcc/testsuite/gcc.target/aarch64/fuse_cmp_cset.c
  1146ad4340ec3c890e6f00e04da365ac  gcc/testsuite/gcc.target/aarch64/gcs-nonlocal-1-track-speculation.c
  302a59893af43fb3f38fe28575033058  gcc/testsuite/gcc.target/aarch64/gcs-nonlocal-1.c
*************** eaf979ea406da0e4b0c25f5727580faa  gcc/te
*** 71381,71387 ****
  f63af0e2c637d2d9ca8823625488dcda  gcc/testsuite/gcc.target/aarch64/ldp_stp_14.c
  5163e8d4cea70416f782eaff9affa0df  gcc/testsuite/gcc.target/aarch64/ldp_stp_14.h
  1f6c2cb1d0138cf6fab877c2e97f2ee1  gcc/testsuite/gcc.target/aarch64/ldp_stp_15.c
! 151737dcaa4735e8423ad45cc5a23ccc  gcc/testsuite/gcc.target/aarch64/ldp_stp_16.c
  ffedc0ef46ae1e25eb82fb4257a7f56e  gcc/testsuite/gcc.target/aarch64/ldp_stp_17.c
  3a55fffd11d3423c5e90823f9fde479a  gcc/testsuite/gcc.target/aarch64/ldp_stp_18.c
  c5975ec22e631fd84b727d806f60c43b  gcc/testsuite/gcc.target/aarch64/ldp_stp_19.c
--- 71455,71461 ----
  f63af0e2c637d2d9ca8823625488dcda  gcc/testsuite/gcc.target/aarch64/ldp_stp_14.c
  5163e8d4cea70416f782eaff9affa0df  gcc/testsuite/gcc.target/aarch64/ldp_stp_14.h
  1f6c2cb1d0138cf6fab877c2e97f2ee1  gcc/testsuite/gcc.target/aarch64/ldp_stp_15.c
! 2cfd4c9e5eb4f0c2ec0486d87047c8ec  gcc/testsuite/gcc.target/aarch64/ldp_stp_16.c
  ffedc0ef46ae1e25eb82fb4257a7f56e  gcc/testsuite/gcc.target/aarch64/ldp_stp_17.c
  3a55fffd11d3423c5e90823f9fde479a  gcc/testsuite/gcc.target/aarch64/ldp_stp_18.c
  c5975ec22e631fd84b727d806f60c43b  gcc/testsuite/gcc.target/aarch64/ldp_stp_19.c
*************** b0a892934f70ddbece003356d1462148  gcc/te
*** 71713,71718 ****
--- 71787,71793 ----
  9fe8a7ffd0c54ed06b5690a31efb7b70  gcc/testsuite/gcc.target/aarch64/pcs_attribute.c
  9d3308c486ff9061f6cadec971e22c19  gcc/testsuite/gcc.target/aarch64/pfalse-binary_0.h
  788069a67c617bf2e5f8bdf437f780c8  gcc/testsuite/gcc.target/aarch64/pfalse-unary_0.h
+ 7dda54ef737cc908dddaab55a03b68b8  gcc/testsuite/gcc.target/aarch64/phi-factor-binary-1.c
  9e6d61a7e1d89fd31e6be729b592cce9  gcc/testsuite/gcc.target/aarch64/pic-constantpool1.c
  c634a3e3729a1cf014159113aaaa5923  gcc/testsuite/gcc.target/aarch64/pic-small.c
  51e114e92becf6e5484713d42b008f4d  gcc/testsuite/gcc.target/aarch64/pic-symrefplus.c
*************** a7d8042acc2272e21686f52da76e42f1  gcc/te
*** 71777,71783 ****
  8caf1b331d1a984045c0427f609a988b  gcc/testsuite/gcc.target/aarch64/pr108681.c
  9addcf54da99b67253010fe4123bc5ad  gcc/testsuite/gcc.target/aarch64/pr108840.c
  41c34270308784309bf8fd336d044aa7  gcc/testsuite/gcc.target/aarch64/pr108999.c
! 3712baa97538f16451e1d0e35a676730  gcc/testsuite/gcc.target/aarch64/pr109072_1.c
  96db4199e6f01de5b5bc5f1e5545c2e2  gcc/testsuite/gcc.target/aarch64/pr109072_2.c
  7ea78cde4c1f96ae1fb65982d3de9c9b  gcc/testsuite/gcc.target/aarch64/pr109078.c
  60019babe909af068cb1f4a2d3578e60  gcc/testsuite/gcc.target/aarch64/pr109391.c
--- 71852,71858 ----
  8caf1b331d1a984045c0427f609a988b  gcc/testsuite/gcc.target/aarch64/pr108681.c
  9addcf54da99b67253010fe4123bc5ad  gcc/testsuite/gcc.target/aarch64/pr108840.c
  41c34270308784309bf8fd336d044aa7  gcc/testsuite/gcc.target/aarch64/pr108999.c
! d8dd6ece293e116aa301a4cec06d7a47  gcc/testsuite/gcc.target/aarch64/pr109072_1.c
  96db4199e6f01de5b5bc5f1e5545c2e2  gcc/testsuite/gcc.target/aarch64/pr109072_2.c
  7ea78cde4c1f96ae1fb65982d3de9c9b  gcc/testsuite/gcc.target/aarch64/pr109078.c
  60019babe909af068cb1f4a2d3578e60  gcc/testsuite/gcc.target/aarch64/pr109391.c
*************** a3303d7dc6b509471d4e18418c9de113  gcc/te
*** 71815,71820 ****
--- 71890,71897 ----
  5e8481e02f3cfad1b565c1fcf18a51b0  gcc/testsuite/gcc.target/aarch64/pr113613.c
  c3b3090c8cc6b28f90027aceb08f6ad7  gcc/testsuite/gcc.target/aarch64/pr113618.c
  78cb6c933e394e5b18e7d7fe34b8c790  gcc/testsuite/gcc.target/aarch64/pr113856.c
+ 94a36c0049587c0c332a58b0f1c309af  gcc/testsuite/gcc.target/aarch64/pr113926.c
+ fe06141750f69619290157ff8e0f7cb8  gcc/testsuite/gcc.target/aarch64/pr113926_1.c
  65b79dfa682a9ae7b9e39d7180ffd699  gcc/testsuite/gcc.target/aarch64/pr114196.c
  36053cf59cb8f7ed3c6851b00c7a8da0  gcc/testsuite/gcc.target/aarch64/pr114528.c
  88db9b527d6d24f272fa2ecc6aa6a21c  gcc/testsuite/gcc.target/aarch64/pr114674.c
*************** a588c84982135f60225d2a017f7b53df  gcc/te
*** 71886,71891 ****
--- 71963,71969 ----
  092b09603aba6f2d4c58084993c984b1  gcc/testsuite/gcc.target/aarch64/pr124572.c
  96507a42a05f136a062f99a03b8ba35f  gcc/testsuite/gcc.target/aarch64/pr124713.c
  1ce51765be6403daef68bb844e13a7ec  gcc/testsuite/gcc.target/aarch64/pr125538.c
+ 2b9d8264fb91bce4c0404a56eed28b74  gcc/testsuite/gcc.target/aarch64/pr125597.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
*************** ae5cf71ae02c3cde7a67cfb54ec03bbe  gcc/te
*** 71989,71996 ****
  cc4f69997a3864b3299f1b4809507883  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_1b.c
  be30d927e2df67d4fe2786d0d026bbaa  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_2.c
  cf24cdff529adfd1c49b54f67eadad90  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_3.c
! 1151d990e97328e3b0a995ccf6af04df  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_4.c
! b5ff836b5a987f9feaf35c5f8ec9f4db  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_5.c
  1f95766b4ed5bfb5f2cf1f168a607a8d  gcc/testsuite/gcc.target/aarch64/predefine_large.c
  d38e476730748c653068e7cb2d8d6ca6  gcc/testsuite/gcc.target/aarch64/predefine_small.c
  29e7dbfba15c0f945488b33400b908b4  gcc/testsuite/gcc.target/aarch64/predefine_tiny.c
--- 72067,72074 ----
  cc4f69997a3864b3299f1b4809507883  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_1b.c
  be30d927e2df67d4fe2786d0d026bbaa  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_2.c
  cf24cdff529adfd1c49b54f67eadad90  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_3.c
! 7488c6ceb8f22890fe55109fecab6837  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_4.c
! 0dd021e02954a0473314c0794d3dfe02  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_5.c
  1f95766b4ed5bfb5f2cf1f168a607a8d  gcc/testsuite/gcc.target/aarch64/predefine_large.c
  d38e476730748c653068e7cb2d8d6ca6  gcc/testsuite/gcc.target/aarch64/predefine_small.c
  29e7dbfba15c0f945488b33400b908b4  gcc/testsuite/gcc.target/aarch64/predefine_tiny.c
*************** df08a7f1b91a8c0f914aab7f291c95e7  gcc/te
*** 72156,72162 ****
  1ac38190a51cc9809d49e9f6c2a922af  gcc/testsuite/gcc.target/aarch64/simd/lut-incorrect-range.c
  060c37e72d9cafd6e03a9988b7a1d094  gcc/testsuite/gcc.target/aarch64/simd/lut-no-flag.c
  670855cbe72625722e02671619b6566b  gcc/testsuite/gcc.target/aarch64/simd/lut.c
! 490999093edf0ba9bd6941da62d8c8cd  gcc/testsuite/gcc.target/aarch64/simd/mf8_data_1.c
  7a8dbe7357968ea67da61dae6606ebcd  gcc/testsuite/gcc.target/aarch64/simd/mf8_data_2.c
  77bcecb95fea0e774f3b59d6735b0334  gcc/testsuite/gcc.target/aarch64/simd/pr117048.c
  2797bd4410da16b66ebb2f474c595ee5  gcc/testsuite/gcc.target/aarch64/simd/pr117048_2.c
--- 72234,72240 ----
  1ac38190a51cc9809d49e9f6c2a922af  gcc/testsuite/gcc.target/aarch64/simd/lut-incorrect-range.c
  060c37e72d9cafd6e03a9988b7a1d094  gcc/testsuite/gcc.target/aarch64/simd/lut-no-flag.c
  670855cbe72625722e02671619b6566b  gcc/testsuite/gcc.target/aarch64/simd/lut.c
! 76fcad7f8e2bf57697f9f2f28439604a  gcc/testsuite/gcc.target/aarch64/simd/mf8_data_1.c
  7a8dbe7357968ea67da61dae6606ebcd  gcc/testsuite/gcc.target/aarch64/simd/mf8_data_2.c
  77bcecb95fea0e774f3b59d6735b0334  gcc/testsuite/gcc.target/aarch64/simd/pr117048.c
  2797bd4410da16b66ebb2f474c595ee5  gcc/testsuite/gcc.target/aarch64/simd/pr117048_2.c
*************** e8b0e1743305b67cb519f685dca1dae8  gcc/te
*** 72863,72872 ****
--- 72941,72962 ----
  0837f1f391961e96e8408427fc53fe27  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/amin_f32_x4.c
  f0d8dc407890f68e1ecf65f3ffce52f9  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/amin_f64_x2.c
  b0f91f85afc32cc5f62e3990d1d2456a  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/amin_f64_x4.c
+ 073ee57ba1db826b0e8dec79aa8502ff  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bdep_u16.c
+ 059950ec1e01c14428b75a623942f7bc  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bdep_u32.c
+ e2c0d4c5d04bec46c3b72298d5f8e8da  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bdep_u64.c
+ b75d34dc90bf22bda8dbc46af3e9f077  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bdep_u8.c
+ 1a246750fe1158292a70bea6f3e9af86  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bext_u16.c
+ c4dfd4c552197cfcd05b20a98e1bbe8f  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bext_u32.c
+ 00e28360c8a0ac73fce3b3fc3aa834dc  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bext_u64.c
+ e2ad42e1fcf28db5ae6f98a968010b49  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bext_u8.c
  f8d8aaffa00b9b5a5a44792d09e55495  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bfmlslb_f32.c
  63d1cbaa5c0d97381df956921930ebc8  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bfmlslb_lane_f32.c
  e78d7953d4a32db3c0601bb046b7e3ff  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bfmlslt_f32.c
  7f1363ccca494cfa99fbbdef54a415cd  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bfmlslt_lane_f32.c
+ 2c8b64042761dba9dcd26d5617124c8e  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bgrp_u16.c
+ 6726c2793f93001352e82a4dbc8c85f2  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bgrp_u32.c
+ 807aec062d1c259c05eb233271c471d8  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bgrp_u64.c
+ a85f3c880d77520e8d697a81fd08e58f  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bgrp_u8.c
  04287e0e2960398e60d1d3532547a685  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bmopa_za32.c
  b4eb3b683cde7a473091f3e0fa47a451  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bmops_za32.c
  9e092a0e7018580475e11ad5b8e492dd  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/clamp_bf16_x2.c
*************** eec249db065f3a86470b4cdd0afd4707  gcc/te
*** 74198,74207 ****
  3a2b35ce3482a4c28be3f6f29ae380b4  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_b32.c
  14a3ea080f5c240dca14fb7384c3344a  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_b64.c
  0737f69d1acd63057d24bef5230a9044  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_b8.c
! c0d1617116e8c91c1f30847fdcbd46be  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_bf16.c
! a52a6b0e5ccefa7be0d11f96eb10e85c  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_f16.c
! 8eeaa66853a70f1ce3ca9db9b6486199  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_f32.c
! 8cd14e61554f224f41d5280e74e7a7b0  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_f64.c
  a39624766ba0566016c23718250934c5  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_lane_bf16.c
  3c22c6ff8fef86a64cef1527414548a4  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_lane_f16.c
  db738f1599c4273043030bc0760ad7ac  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_lane_f32.c
--- 74288,74297 ----
  3a2b35ce3482a4c28be3f6f29ae380b4  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_b32.c
  14a3ea080f5c240dca14fb7384c3344a  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_b64.c
  0737f69d1acd63057d24bef5230a9044  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_b8.c
! 52007d851f5a7fd13ba5647836d59717  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_bf16.c
! 69cf4c4f131d0d05e435432a5f78c55b  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_f16.c
! 768316517bd16b598018f19a824e4462  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_f32.c
! b8f309ede9d48e7c2d215685fb5d14ac  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_f64.c
  a39624766ba0566016c23718250934c5  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_lane_bf16.c
  3c22c6ff8fef86a64cef1527414548a4  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_lane_f16.c
  db738f1599c4273043030bc0760ad7ac  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_lane_f32.c
*************** d456cae10294cbed8ad0384bcc96b8b5  gcc/te
*** 74229,74242 ****
  b65e770c3562f33aefd54a3b74450ac1  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_neonq_u32.c
  48c46e58c06844fed26fc71a5d9b2977  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_neonq_u64.c
  04b6ada14aad43d52b3cc37e4832c0d1  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_neonq_u8.c
! 04e3e03506437f03fc7d88cec19b87d0  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_s16.c
! 1075461320ed346407ebc2d76d445d38  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_s32.c
! cdbf1d5d8f583dbd301e1b92329a391a  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_s64.c
! d00ff5ebebaac4bd6ddfe3b7eb4e8c15  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_s8.c
! 5f52e286ec5f5db4bc2019a8224b395b  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_u16.c
! c2b74d2f1b6237278e04da1e610611f0  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_u32.c
! 31ec809681bb87e9a61b221d84844af1  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_u64.c
! 3c9617a069dac845321ea3de55e8a45d  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_u8.c
  4b2de0f90ea5912af0dee6e63aa4efa4  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_b16.c
  4b644e1ff71911187926414b8f179e4a  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_b32.c
  f48b23cbea6952de74b95b1d47adb067  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_b64.c
--- 74319,74332 ----
  b65e770c3562f33aefd54a3b74450ac1  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_neonq_u32.c
  48c46e58c06844fed26fc71a5d9b2977  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_neonq_u64.c
  04b6ada14aad43d52b3cc37e4832c0d1  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_neonq_u8.c
! 3f51ae259681e60c59a763c4fa4ef112  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_s16.c
! 51fe2d39ed9ea090da187ebc3384b7b1  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_s32.c
! 6d36f6ad979177b1f8c0926ce56bd31c  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_s64.c
! 376fd0bc90df48fee2ced91b4a8bb356  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_s8.c
! 63f688776facabeebe10ccb526aa7f1a  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_u16.c
! 95c8fde0aa91fbfedf6692ea7d19eb80  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_u32.c
! 38e745f1e3c422d1945bb45febdf2bac  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_u64.c
! 5a4810d0d38e200ce6c0ff2bb73ff83e  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_u8.c
  4b2de0f90ea5912af0dee6e63aa4efa4  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_b16.c
  4b644e1ff71911187926414b8f179e4a  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_b32.c
  f48b23cbea6952de74b95b1d47adb067  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dupq_b64.c
*************** b4f85e70a370313e5aae33f1315346e2  gcc/te
*** 74282,74290 ****
  bbb93a6e76402fb251f4b3348fe1f875  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/eorv_u32.c
  c5145fb1d050e3b88acc2561c0c07e8e  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/eorv_u64.c
  3356e1b0c4954a589ea6dac77d069b09  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/eorv_u8.c
! 57a0d9d1f599a3958e4859923d61c33f  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/expa_f16.c
! af3b00eb4bbcdab9fd6f195f386c4a5c  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/expa_f32.c
! 55fe9b9ac22d20b96e0dbd84eb554f1f  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/expa_f64.c
  9ac6067d89089b88755b62035aa3d98d  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ext_bf16.c
  98a4e1268bb46a683214146e003a6762  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ext_f16.c
  a455a2f732234c8adc7080a1ab7cc5a0  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ext_f32.c
--- 74372,74380 ----
  bbb93a6e76402fb251f4b3348fe1f875  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/eorv_u32.c
  c5145fb1d050e3b88acc2561c0c07e8e  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/eorv_u64.c
  3356e1b0c4954a589ea6dac77d069b09  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/eorv_u8.c
! acaae983054134f6d8bc043eac7856d3  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/expa_f16.c
! 22085fa8dd66c5d76226d12a3112da58  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/expa_f32.c
! be0ff571f01c3e0a20f90b5fd6fcf63d  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/expa_f64.c
  9ac6067d89089b88755b62035aa3d98d  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ext_bf16.c
  98a4e1268bb46a683214146e003a6762  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ext_f16.c
  a455a2f732234c8adc7080a1ab7cc5a0  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/ext_f32.c
*************** e716ac2dd0b6a489e0a066923531fe33  gcc/te
*** 74806,74819 ****
  a7a4c48a2a400e927d1783f11ff5ae2f  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_lane_f16.c
  1c2f087197693ac0f8341bb2de2f9903  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_lane_f32.c
  9bf80dcb14d6ec0ad3830bc283fafefa  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_lane_f64.c
! 93bec38f83aa08ea078a190a36ce60b6  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_s16.c
! 4f42232f407acd56314fee0d0ff008e5  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_s32.c
! 729ad62f6cb28217b9d2f1501b162f8c  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_s64.c
! 56c4878136209bdc3156de990353cecf  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_s8.c
! 6def2e7ca37494f570e330b41d18842f  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_u16.c
! 6993cbec8b136cc2cbabb54c90558144  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_u32.c
! 465a374b40b8fec960f6f658afb9e57b  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_u64.c
! 59e9a7a2c74e7a644223ce578131448e  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_u8.c
  13e5426577da8e8350426b98cdde0d0f  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mulh_s16.c
  887cde542b27dadbbd6e7abe7696d2cd  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mulh_s32.c
  78776c6e140b51a29713f2889bc58bca  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mulh_s64.c
--- 74896,74909 ----
  a7a4c48a2a400e927d1783f11ff5ae2f  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_lane_f16.c
  1c2f087197693ac0f8341bb2de2f9903  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_lane_f32.c
  9bf80dcb14d6ec0ad3830bc283fafefa  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_lane_f64.c
! 1994f75700bd4235fa7eb1b5fafc16bd  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_s16.c
! 928e22534db3500b3525c14c2ce23e18  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_s32.c
! fec89597d81c84d81aa17f1879d14f96  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_s64.c
! 1947783220e7f6d02313d166f8930388  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_s8.c
! 23d34375448594f2d80a88ca0d856e8b  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_u16.c
! 2148d0348f917c7464fea067859fa88a  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_u32.c
! a2489b7350ce6b4d003aae4e271805aa  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_u64.c
! 72ea231bf34fe42d1af6260d5ce5f4ca  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_u8.c
  13e5426577da8e8350426b98cdde0d0f  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mulh_s16.c
  887cde542b27dadbbd6e7abe7696d2cd  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mulh_s32.c
  78776c6e140b51a29713f2889bc58bca  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mulh_s64.c
*************** cbe63b7384f92925c6e39116fe7f79c6  gcc/te
*** 76887,76892 ****
--- 76977,76983 ----
  8d516514d55b6987b8c79e9e3ce2bdb1  gcc/testsuite/gcc.target/aarch64/sve/pr123767.c
  2f20cf370ca6fbaebfa9f5d929b67a4c  gcc/testsuite/gcc.target/aarch64/sve/pr123897.c
  91a4ca000e76de583f0631d5cb19a12a  gcc/testsuite/gcc.target/aarch64/sve/pr123898.c
+ c06b169b4eff3395ec158f409f0e7c87  gcc/testsuite/gcc.target/aarch64/sve/pr125550.c
  7e2aaf0806edd37415079b5c2e48b66c  gcc/testsuite/gcc.target/aarch64/sve/pr81003.c
  00b752a6e175de8b1a300df08f275461  gcc/testsuite/gcc.target/aarch64/sve/pr87563.c
  c56eeba71ad463673a1bdb30e7a94863  gcc/testsuite/gcc.target/aarch64/sve/pr87815.c
*************** dcc8cc6b7e9c664befc1cbd245820007  gcc/te
*** 77303,77309 ****
  dd5f9825588ddadcfbe38ab5bdcd4df0  gcc/testsuite/gcc.target/aarch64/sve/vcond_16_run.c
  9e123cbd01378010565e2e2ff8437b0a  gcc/testsuite/gcc.target/aarch64/sve/vcond_17.c
  aa58567ac1c63869f31f67f66b03c29e  gcc/testsuite/gcc.target/aarch64/sve/vcond_17_run.c
! 947db71e57fa2ca55c3a53bd25333369  gcc/testsuite/gcc.target/aarch64/sve/vcond_18.c
  a17f292462b7c9ae489e75c5912c5e1f  gcc/testsuite/gcc.target/aarch64/sve/vcond_18_run.c
  0ed99c3afe8d1ad6c5cce2606d768512  gcc/testsuite/gcc.target/aarch64/sve/vcond_19.c
  77af94f3e8ea5e1f776d991dbeae104a  gcc/testsuite/gcc.target/aarch64/sve/vcond_19_run.c
--- 77394,77400 ----
  dd5f9825588ddadcfbe38ab5bdcd4df0  gcc/testsuite/gcc.target/aarch64/sve/vcond_16_run.c
  9e123cbd01378010565e2e2ff8437b0a  gcc/testsuite/gcc.target/aarch64/sve/vcond_17.c
  aa58567ac1c63869f31f67f66b03c29e  gcc/testsuite/gcc.target/aarch64/sve/vcond_17_run.c
! 5f03ced2985f6977dc1d520290ff1299  gcc/testsuite/gcc.target/aarch64/sve/vcond_18.c
  a17f292462b7c9ae489e75c5912c5e1f  gcc/testsuite/gcc.target/aarch64/sve/vcond_18_run.c
  0ed99c3afe8d1ad6c5cce2606d768512  gcc/testsuite/gcc.target/aarch64/sve/vcond_19.c
  77af94f3e8ea5e1f776d991dbeae104a  gcc/testsuite/gcc.target/aarch64/sve/vcond_19_run.c
*************** fede82c538ecebf82ae0f495a35f66db  gcc/te
*** 77341,77347 ****
  2502162497eb48d665e7c376dccae0df  gcc/testsuite/gcc.target/aarch64/sve/vec_init_2.c
  4bc986ea41d65424e0c6997ea24e7b74  gcc/testsuite/gcc.target/aarch64/sve/vec_init_3.c
  7326fab600b933872ff79bc8e4ed6c2f  gcc/testsuite/gcc.target/aarch64/sve/vec_init_4.c
! 1ab7179a50ebe58789702ebb78849ab1  gcc/testsuite/gcc.target/aarch64/sve/vec_init_5.c
  ad5ce34e9e891872cc75c0ffed59addd  gcc/testsuite/gcc.target/aarch64/sve/vec_perm_1.c
  a26f50223dec145aaa01ffa81756d9be  gcc/testsuite/gcc.target/aarch64/sve/vec_perm_1_overrange_run.c
  51117843fdfadbfc8dedd0fee643b4fb  gcc/testsuite/gcc.target/aarch64/sve/vec_perm_1_run.c
--- 77432,77438 ----
  2502162497eb48d665e7c376dccae0df  gcc/testsuite/gcc.target/aarch64/sve/vec_init_2.c
  4bc986ea41d65424e0c6997ea24e7b74  gcc/testsuite/gcc.target/aarch64/sve/vec_init_3.c
  7326fab600b933872ff79bc8e4ed6c2f  gcc/testsuite/gcc.target/aarch64/sve/vec_init_4.c
! e1d79953597e40095f79ef1398f2d77f  gcc/testsuite/gcc.target/aarch64/sve/vec_init_5.c
  ad5ce34e9e891872cc75c0ffed59addd  gcc/testsuite/gcc.target/aarch64/sve/vec_perm_1.c
  a26f50223dec145aaa01ffa81756d9be  gcc/testsuite/gcc.target/aarch64/sve/vec_perm_1_overrange_run.c
  51117843fdfadbfc8dedd0fee643b4fb  gcc/testsuite/gcc.target/aarch64/sve/vec_perm_1_run.c
*************** c482f58d8a4aec7c50bb9ec5dc1250d3  gcc/te
*** 77545,77566 ****
  ab8c753f2777c500aa1521f5aaf46816  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bcax_u32.c
  cc8434a1b84bf4464c6650cab1e52062  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bcax_u64.c
  27e50647f5fcb3ebcb9691c7f998f08e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bcax_u8.c
! 232e89c4bcb348fb3661e73a3095366e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bdep_u16.c
! 0d32924eb8ee3ceefc1ad5df543453c0  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bdep_u32.c
! 05e923c51c20c99720ae845a0cb5c228  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bdep_u64.c
! a00e4d709f9f9fe01067a9812d1399d7  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bdep_u8.c
! b2fdb8128997689e38cb1b498aa9f753  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bext_u16.c
! 88191b271d2a7ae8eb674daaf16c2b43  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bext_u32.c
! 8e0287e3ff998f5f48ce838c02b56ddc  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bext_u64.c
! 738af1ce61bd86c546aa3b7a44f43944  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bext_u8.c
  e550f5da4191f9ccf9e66d76c573edd3  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bfmlslb_f32.c
  a1ce8df625b604fdd72ebe7604e696c7  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bfmlslb_lane_f32.c
  950c06d0c05715c0004c0e492933dde2  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bfmlslt_f32.c
  bbdd98ace69bd4c2ddad45192b7ee6b2  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bfmlslt_lane_f32.c
! 3f0cdc2f22f735579b31ece07b532eff  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bgrp_u16.c
! 18a3340ba6e132e98b16ec8a59a0e2bf  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bgrp_u32.c
! ca4e644b720d222224101b40fa4525a6  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bgrp_u64.c
! 2789ff717bc2d0bdfc410970ffcddc46  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bgrp_u8.c
  42b02c7a0d7ee6a48f2a6a0f85d18628  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bsl1n_s16.c
  43a527ca154d8e7e43a6b48ffe86db72  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bsl1n_s32.c
  dda91ae028361c13ba043659ff338c0a  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bsl1n_s64.c
--- 77636,77657 ----
  ab8c753f2777c500aa1521f5aaf46816  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bcax_u32.c
  cc8434a1b84bf4464c6650cab1e52062  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bcax_u64.c
  27e50647f5fcb3ebcb9691c7f998f08e  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bcax_u8.c
! 7446ad64e275fab0b846385e1ece8be7  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bdep_u16.c
! d7126c2b56ad06042cee94df9c48b4d9  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bdep_u32.c
! 30b031d2690a00280e82a0ea9b1f4b16  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bdep_u64.c
! 862d1bb8604b62f08ca89b2d91371db2  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bdep_u8.c
! 02e847518adb937fa79ccf1a25bbc862  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bext_u16.c
! 120ce6ef76bca8c664d30fdb90ebc678  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bext_u32.c
! 21df50f9baee01a6bae77f517d6cd235  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bext_u64.c
! f758d5529e085a72aa00ee2f10bca24d  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bext_u8.c
  e550f5da4191f9ccf9e66d76c573edd3  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bfmlslb_f32.c
  a1ce8df625b604fdd72ebe7604e696c7  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bfmlslb_lane_f32.c
  950c06d0c05715c0004c0e492933dde2  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bfmlslt_f32.c
  bbdd98ace69bd4c2ddad45192b7ee6b2  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bfmlslt_lane_f32.c
! d2aa08414f1ee1684c7b36401cb7b024  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bgrp_u16.c
! 32b2e8a0cc4f532023af306d6b9b994a  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bgrp_u32.c
! 504e802b15ccb56a22dd139a46a5b8cd  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bgrp_u64.c
! aa89c58cac3b69c0a98b24c9625e2708  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bgrp_u8.c
  42b02c7a0d7ee6a48f2a6a0f85d18628  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bsl1n_s16.c
  43a527ca154d8e7e43a6b48ffe86db72  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bsl1n_s32.c
  dda91ae028361c13ba043659ff338c0a  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bsl1n_s64.c
*************** fc2eb8ac52faed5fba0a017b858d4ae4  gcc/te
*** 79149,79154 ****
--- 79240,79246 ----
  626bb6bb64c1bbe8eb5e2b92bf925aeb  gcc/testsuite/gcc.target/aarch64/torture/pr120986-2.c
  d03b2f46140f14ae9b2101813aec3525  gcc/testsuite/gcc.target/aarch64/torture/pr121772.c
  164477999ab21aa17183a55d49bb0d71  gcc/testsuite/gcc.target/aarch64/torture/pr124491.c
+ a9e9dc89b86dea48cebffdbd8459e3a1  gcc/testsuite/gcc.target/aarch64/torture/pr125621.c
  5266ac107a73e3ee1d1f44e1cda7d9f2  gcc/testsuite/gcc.target/aarch64/torture/simd-abi-1.c
  9c3416db2fc04c3f91b03ecae15e943e  gcc/testsuite/gcc.target/aarch64/torture/simd-abi-10.c
  df55bfe2c1ce46074b19b4566cedeef4  gcc/testsuite/gcc.target/aarch64/torture/simd-abi-11.c
*************** d9732df5d96f583e6d6ad94f804e0373  gcc/te
*** 79231,79237 ****
  8a1633a7f054df8919c5747b9e556c8f  gcc/testsuite/gcc.target/aarch64/vec-init-11.c
  ec1f4e31dbc32ad8c510ee0d47b63019  gcc/testsuite/gcc.target/aarch64/vec-init-12.c
  5bd375529fd8638029099f584e579898  gcc/testsuite/gcc.target/aarch64/vec-init-13.c
! a33d718b7ff09fd8cf43144ef6dcd24e  gcc/testsuite/gcc.target/aarch64/vec-init-14.c
  5a02fc8d0841b45c544a81856934d565  gcc/testsuite/gcc.target/aarch64/vec-init-15.c
  fe39e0171addd79f69407e9a5dd97957  gcc/testsuite/gcc.target/aarch64/vec-init-16.c
  716927e27c337fb94328f360dbc20d8d  gcc/testsuite/gcc.target/aarch64/vec-init-17.c
--- 79323,79329 ----
  8a1633a7f054df8919c5747b9e556c8f  gcc/testsuite/gcc.target/aarch64/vec-init-11.c
  ec1f4e31dbc32ad8c510ee0d47b63019  gcc/testsuite/gcc.target/aarch64/vec-init-12.c
  5bd375529fd8638029099f584e579898  gcc/testsuite/gcc.target/aarch64/vec-init-13.c
! 37c4116ac1bc49d73b725e6120673e98  gcc/testsuite/gcc.target/aarch64/vec-init-14.c
  5a02fc8d0841b45c544a81856934d565  gcc/testsuite/gcc.target/aarch64/vec-init-15.c
  fe39e0171addd79f69407e9a5dd97957  gcc/testsuite/gcc.target/aarch64/vec-init-16.c
  716927e27c337fb94328f360dbc20d8d  gcc/testsuite/gcc.target/aarch64/vec-init-17.c
*************** d75418024f450ee16a7a73711a6003a1  gcc/te
*** 79242,79252 ****
  ea033577ced75cfd9d67b3cf9125dec3  gcc/testsuite/gcc.target/aarch64/vec-init-22-size.c
  81ef2e4eb8b0848ab9df921cd60488da  gcc/testsuite/gcc.target/aarch64/vec-init-22-speed.c
  29813326d297818de7e632909c908723  gcc/testsuite/gcc.target/aarch64/vec-init-22.h
! a0934805d29f10431b8bcedf035efde9  gcc/testsuite/gcc.target/aarch64/vec-init-23.c
  3e4c042c59f7ebd0de553ce71974d7f0  gcc/testsuite/gcc.target/aarch64/vec-init-6.c
  23056a98bd836157022df74aba0ea38d  gcc/testsuite/gcc.target/aarch64/vec-init-7.c
  a0d7ee23594a897783efec837fcc9a89  gcc/testsuite/gcc.target/aarch64/vec-init-8.c
! 275233faed2deec8a7f02f21b29580a9  gcc/testsuite/gcc.target/aarch64/vec-init-9.c
  86a847e5bf1fb5499432a6b5ad8911b4  gcc/testsuite/gcc.target/aarch64/vec-init-single-const-2.c
  94984b8886aab5d70d86c49c090fc10a  gcc/testsuite/gcc.target/aarch64/vec-init-single-const-be.c
  96c3d8151cec83da572adb52b5e4a648  gcc/testsuite/gcc.target/aarch64/vec-init-single-const.c
--- 79334,79344 ----
  ea033577ced75cfd9d67b3cf9125dec3  gcc/testsuite/gcc.target/aarch64/vec-init-22-size.c
  81ef2e4eb8b0848ab9df921cd60488da  gcc/testsuite/gcc.target/aarch64/vec-init-22-speed.c
  29813326d297818de7e632909c908723  gcc/testsuite/gcc.target/aarch64/vec-init-22.h
! 2fbce49903543a2ddb34a2b1aa0d9fdf  gcc/testsuite/gcc.target/aarch64/vec-init-23.c
  3e4c042c59f7ebd0de553ce71974d7f0  gcc/testsuite/gcc.target/aarch64/vec-init-6.c
  23056a98bd836157022df74aba0ea38d  gcc/testsuite/gcc.target/aarch64/vec-init-7.c
  a0d7ee23594a897783efec837fcc9a89  gcc/testsuite/gcc.target/aarch64/vec-init-8.c
! a4115657ce208875caf4b39537d8f830  gcc/testsuite/gcc.target/aarch64/vec-init-9.c
  86a847e5bf1fb5499432a6b5ad8911b4  gcc/testsuite/gcc.target/aarch64/vec-init-single-const-2.c
  94984b8886aab5d70d86c49c090fc10a  gcc/testsuite/gcc.target/aarch64/vec-init-single-const-be.c
  96c3d8151cec83da572adb52b5e4a648  gcc/testsuite/gcc.target/aarch64/vec-init-single-const.c
*************** ac8dc8b9b19050248df37eef095827b0  gcc/te
*** 83010,83015 ****
--- 83102,83108 ----
  863c5b161ff9984d5925d994f7529af0  gcc/testsuite/gcc.target/arm/pr121773.c
  28d64a7401aed8110aaad23c15c26372  gcc/testsuite/gcc.target/arm/pr122111.c
  82da20b2c4061a368f405dbeb1cdb341  gcc/testsuite/gcc.target/arm/pr123271.c
+ 95f82d7ca444450365616036fe2abe5e  gcc/testsuite/gcc.target/arm/pr124077.c
  8120924509f8b52f39137165dd663164  gcc/testsuite/gcc.target/arm/pr124134.c
  236563c6007691d6571ab9e909e2c81e  gcc/testsuite/gcc.target/arm/pr124933.c
  3ce2c6a399da67ae36390d522e1f1296  gcc/testsuite/gcc.target/arm/pr19599.c
*************** c7493a58c66092a933352c0f6b3bc2ef  gcc/te
*** 83765,83770 ****
--- 83858,83864 ----
  6af46b0a3b0470be22ee71fa475d15e7  gcc/testsuite/gcc.target/avr/torture/cmp-lsr-u64.c
  e0ac7f427245aa855de6a0fc90d23450  gcc/testsuite/gcc.target/avr/torture/fix-types.h
  606de8be666cce96d2893c26b23e996b  gcc/testsuite/gcc.target/avr/torture/fuse-add.c
+ d6efd3669f0c09d708be294666e58d98  gcc/testsuite/gcc.target/avr/torture/fx-to-double.c
  f44d733dead349fc75c231456db45f9e  gcc/testsuite/gcc.target/avr/torture/get-mem.c
  bd4eca5f911ab0e0765cc72984da689d  gcc/testsuite/gcc.target/avr/torture/ifelse-c-i16.c
  6d8f4ca28fb3328f91ff6c41c876c6a3  gcc/testsuite/gcc.target/avr/torture/ifelse-c-i8.c
*************** c9f542098c7044c5b8ac4b18be20d199  gcc/te
*** 89183,89189 ****
  ca4ac7cac7f4e2b202119db822204403  gcc/testsuite/gcc.target/i386/builtin-memmove-11b.c
  8c5a3a00914eebf9c467039b0b0987b6  gcc/testsuite/gcc.target/i386/builtin-memmove-11c.c
  0da881a744f7455874ffb57af93ca6b9  gcc/testsuite/gcc.target/i386/builtin-memmove-12.c
! a36b2a8ea09b3ccd83284edb683f132e  gcc/testsuite/gcc.target/i386/builtin-memmove-13.c
  e581bb0a3fb7e1eadbb5e26f9c5c052c  gcc/testsuite/gcc.target/i386/builtin-memmove-14.c
  1196e40188bad91db0ea2bfa57e022f4  gcc/testsuite/gcc.target/i386/builtin-memmove-15.c
  b3d1977118e8680a2aa93f5ff59f54af  gcc/testsuite/gcc.target/i386/builtin-memmove-1a.c
--- 89277,89283 ----
  ca4ac7cac7f4e2b202119db822204403  gcc/testsuite/gcc.target/i386/builtin-memmove-11b.c
  8c5a3a00914eebf9c467039b0b0987b6  gcc/testsuite/gcc.target/i386/builtin-memmove-11c.c
  0da881a744f7455874ffb57af93ca6b9  gcc/testsuite/gcc.target/i386/builtin-memmove-12.c
! 7233d5b85d2a3b0c5a37d3f93ad6aa94  gcc/testsuite/gcc.target/i386/builtin-memmove-13.c
  e581bb0a3fb7e1eadbb5e26f9c5c052c  gcc/testsuite/gcc.target/i386/builtin-memmove-14.c
  1196e40188bad91db0ea2bfa57e022f4  gcc/testsuite/gcc.target/i386/builtin-memmove-15.c
  b3d1977118e8680a2aa93f5ff59f54af  gcc/testsuite/gcc.target/i386/builtin-memmove-1a.c
*************** d9248423c9f1c716a36c066054a7f5b9  gcc/te
*** 89260,89266 ****
  b20d49e3df7ecba263d6a023f199461f  gcc/testsuite/gcc.target/i386/cet-switch-3.c
  5f04987af425e4bdd6af970c8dbd52c7  gcc/testsuite/gcc.target/i386/cf_check-1.c
  f4872e03d1c7304a4bec272a2fe13dce  gcc/testsuite/gcc.target/i386/cf_check-10.c
! da7afaa484f59e8dbdf4c68edba73d50  gcc/testsuite/gcc.target/i386/cf_check-11.c
  509c1c95f3a1096c762b7fd019e83e4e  gcc/testsuite/gcc.target/i386/cf_check-2.c
  77f13ccc769fbeb31556af0dea458693  gcc/testsuite/gcc.target/i386/cf_check-3.c
  5c3b7040795451a42f588086b955b02d  gcc/testsuite/gcc.target/i386/cf_check-4.c
--- 89354,89360 ----
  b20d49e3df7ecba263d6a023f199461f  gcc/testsuite/gcc.target/i386/cet-switch-3.c
  5f04987af425e4bdd6af970c8dbd52c7  gcc/testsuite/gcc.target/i386/cf_check-1.c
  f4872e03d1c7304a4bec272a2fe13dce  gcc/testsuite/gcc.target/i386/cf_check-10.c
! daf33b3a503a430becba9795adc1b5fb  gcc/testsuite/gcc.target/i386/cf_check-11.c
  509c1c95f3a1096c762b7fd019e83e4e  gcc/testsuite/gcc.target/i386/cf_check-2.c
  77f13ccc769fbeb31556af0dea458693  gcc/testsuite/gcc.target/i386/cf_check-3.c
  5c3b7040795451a42f588086b955b02d  gcc/testsuite/gcc.target/i386/cf_check-4.c
*************** f82327ef3caa200d8024822491c53316  gcc/te
*** 89881,89887 ****
  cda0d89452347311cc45a79be2d8f0fc  gcc/testsuite/gcc.target/i386/memcpy-1.c
  6497cb2d22febb00a904f50025d863bd  gcc/testsuite/gcc.target/i386/memcpy-2.c
  536862ceddae932e3d7da830f0866d31  gcc/testsuite/gcc.target/i386/memcpy-3.c
! 9fa7a6326f3d11b682cb479a8e377be9  gcc/testsuite/gcc.target/i386/memcpy-pr120683-1.c
  7dcdfb936a5e9319d0ce3de66d116f21  gcc/testsuite/gcc.target/i386/memcpy-pr120683-2.c
  8c8645f997667de2ca5af8c64994b797  gcc/testsuite/gcc.target/i386/memcpy-pr120683-3.c
  e74cbebb014ae1d81d8b723847091547  gcc/testsuite/gcc.target/i386/memcpy-pr120683-4.c
--- 89975,89981 ----
  cda0d89452347311cc45a79be2d8f0fc  gcc/testsuite/gcc.target/i386/memcpy-1.c
  6497cb2d22febb00a904f50025d863bd  gcc/testsuite/gcc.target/i386/memcpy-2.c
  536862ceddae932e3d7da830f0866d31  gcc/testsuite/gcc.target/i386/memcpy-3.c
! 961fccfc5b125a7089e27ac42ee0f3c1  gcc/testsuite/gcc.target/i386/memcpy-pr120683-1.c
  7dcdfb936a5e9319d0ce3de66d116f21  gcc/testsuite/gcc.target/i386/memcpy-pr120683-2.c
  8c8645f997667de2ca5af8c64994b797  gcc/testsuite/gcc.target/i386/memcpy-pr120683-3.c
  e74cbebb014ae1d81d8b723847091547  gcc/testsuite/gcc.target/i386/memcpy-pr120683-4.c
*************** ddb515e6955a2e895cb9e026084d6457  gcc/te
*** 89899,89905 ****
  b82d9188c52a269893b5ac6b25f9e515  gcc/testsuite/gcc.target/i386/memcpy-strategy-10.c
  619cbc26dc85de4ded3f5a985d0a23a2  gcc/testsuite/gcc.target/i386/memcpy-strategy-11.c
  a40df075accc907af3e7a421587eb309  gcc/testsuite/gcc.target/i386/memcpy-strategy-12.c
! 44dcb4858ee7dffcecaaa96814b9b8c2  gcc/testsuite/gcc.target/i386/memcpy-strategy-13.c
  a948cf11841f5be3746dbd9613e72c59  gcc/testsuite/gcc.target/i386/memcpy-strategy-14.c
  81a646881b73313339b3c5553f5de316  gcc/testsuite/gcc.target/i386/memcpy-strategy-15.c
  043547bc2d2818c5fb11e83082688790  gcc/testsuite/gcc.target/i386/memcpy-strategy-2.c
--- 89993,89999 ----
  b82d9188c52a269893b5ac6b25f9e515  gcc/testsuite/gcc.target/i386/memcpy-strategy-10.c
  619cbc26dc85de4ded3f5a985d0a23a2  gcc/testsuite/gcc.target/i386/memcpy-strategy-11.c
  a40df075accc907af3e7a421587eb309  gcc/testsuite/gcc.target/i386/memcpy-strategy-12.c
! 9319e04f360fb4c8aa972b819b63266e  gcc/testsuite/gcc.target/i386/memcpy-strategy-13.c
  a948cf11841f5be3746dbd9613e72c59  gcc/testsuite/gcc.target/i386/memcpy-strategy-14.c
  81a646881b73313339b3c5553f5de316  gcc/testsuite/gcc.target/i386/memcpy-strategy-15.c
  043547bc2d2818c5fb11e83082688790  gcc/testsuite/gcc.target/i386/memcpy-strategy-2.c
*************** ee6163f62ab711d692467ababe19d6e8  gcc/te
*** 89914,89920 ****
  f6fd4449a72ddd84f5687641334109d2  gcc/testsuite/gcc.target/i386/memcpy-vector_loop-2.c
  40cce91585f47cde61390171cd489668  gcc/testsuite/gcc.target/i386/memset-1.c
  647352383c809884f76f16938eb90cd2  gcc/testsuite/gcc.target/i386/memset-pr120683-1.c
! 70a808e73db361875f6c599499b93198  gcc/testsuite/gcc.target/i386/memset-pr120683-10.c
  9aa5521551927ee379c30c41a443754c  gcc/testsuite/gcc.target/i386/memset-pr120683-11.c
  565f44063769009d8f8ba26668888087  gcc/testsuite/gcc.target/i386/memset-pr120683-12.c
  4a4d1a9e4a261134b42dd364faf51acb  gcc/testsuite/gcc.target/i386/memset-pr120683-13.c
--- 90008,90014 ----
  f6fd4449a72ddd84f5687641334109d2  gcc/testsuite/gcc.target/i386/memcpy-vector_loop-2.c
  40cce91585f47cde61390171cd489668  gcc/testsuite/gcc.target/i386/memset-1.c
  647352383c809884f76f16938eb90cd2  gcc/testsuite/gcc.target/i386/memset-pr120683-1.c
! cc56945add1a33e4b0d139ccfc9105ee  gcc/testsuite/gcc.target/i386/memset-pr120683-10.c
  9aa5521551927ee379c30c41a443754c  gcc/testsuite/gcc.target/i386/memset-pr120683-11.c
  565f44063769009d8f8ba26668888087  gcc/testsuite/gcc.target/i386/memset-pr120683-12.c
  4a4d1a9e4a261134b42dd364faf51acb  gcc/testsuite/gcc.target/i386/memset-pr120683-13.c
*************** f1026c4772f01b6fb57781f66e6045f5  gcc/te
*** 89925,89932 ****
  4f742411400abc5c2cec5e6e86ed1fde  gcc/testsuite/gcc.target/i386/memset-pr120683-18.c
  f4575bef60004117dbb65ea5f8556015  gcc/testsuite/gcc.target/i386/memset-pr120683-19.c
  637fcf86b7a2c3daab120cbcd1084906  gcc/testsuite/gcc.target/i386/memset-pr120683-2.c
! 50aa905962ba752e9c5a888776462f0e  gcc/testsuite/gcc.target/i386/memset-pr120683-20.c
! 76aa773c588362c8a1adc1c4c908ec6f  gcc/testsuite/gcc.target/i386/memset-pr120683-21.c
  602edd13bf908e5a9ba26dfafb0bf948  gcc/testsuite/gcc.target/i386/memset-pr120683-22.c
  5d89afc4aa14e2d56f2eaa031aa49bea  gcc/testsuite/gcc.target/i386/memset-pr120683-23.c
  d3af2ec88903c3e500f840d1ccbe42ac  gcc/testsuite/gcc.target/i386/memset-pr120683-3.c
--- 90019,90026 ----
  4f742411400abc5c2cec5e6e86ed1fde  gcc/testsuite/gcc.target/i386/memset-pr120683-18.c
  f4575bef60004117dbb65ea5f8556015  gcc/testsuite/gcc.target/i386/memset-pr120683-19.c
  637fcf86b7a2c3daab120cbcd1084906  gcc/testsuite/gcc.target/i386/memset-pr120683-2.c
! f8144742f24769f23e1db52499ac657b  gcc/testsuite/gcc.target/i386/memset-pr120683-20.c
! 21481087726b6af08fc412441fedc215  gcc/testsuite/gcc.target/i386/memset-pr120683-21.c
  602edd13bf908e5a9ba26dfafb0bf948  gcc/testsuite/gcc.target/i386/memset-pr120683-22.c
  5d89afc4aa14e2d56f2eaa031aa49bea  gcc/testsuite/gcc.target/i386/memset-pr120683-23.c
  d3af2ec88903c3e500f840d1ccbe42ac  gcc/testsuite/gcc.target/i386/memset-pr120683-3.c
*************** d40214a38af3060ba1bba456c7399a32  gcc/te
*** 89951,89957 ****
  e34fc4954adf255e63dd959604f68e95  gcc/testsuite/gcc.target/i386/memset-strategy-2.c
  dadc15939833dd5ab99de2c78e9162c8  gcc/testsuite/gcc.target/i386/memset-strategy-25.c
  a94047349a1abfeda6fc4e2dcf8263fe  gcc/testsuite/gcc.target/i386/memset-strategy-26.c
! 7450283d0eb74c8d5f86beff98d12f17  gcc/testsuite/gcc.target/i386/memset-strategy-27.c
  97ec7f27bf115a9493769360e8b6297b  gcc/testsuite/gcc.target/i386/memset-strategy-28.c
  57f79d0afad3c2383f13b3bd334f97b1  gcc/testsuite/gcc.target/i386/memset-strategy-29.c
  ab2b88f0bcce4626b92af0e20a2b1f62  gcc/testsuite/gcc.target/i386/memset-strategy-3.c
--- 90045,90051 ----
  e34fc4954adf255e63dd959604f68e95  gcc/testsuite/gcc.target/i386/memset-strategy-2.c
  dadc15939833dd5ab99de2c78e9162c8  gcc/testsuite/gcc.target/i386/memset-strategy-25.c
  a94047349a1abfeda6fc4e2dcf8263fe  gcc/testsuite/gcc.target/i386/memset-strategy-26.c
! 1d0424022860ecb14430e368035cd9f7  gcc/testsuite/gcc.target/i386/memset-strategy-27.c
  97ec7f27bf115a9493769360e8b6297b  gcc/testsuite/gcc.target/i386/memset-strategy-28.c
  57f79d0afad3c2383f13b3bd334f97b1  gcc/testsuite/gcc.target/i386/memset-strategy-29.c
  ab2b88f0bcce4626b92af0e20a2b1f62  gcc/testsuite/gcc.target/i386/memset-strategy-3.c
*************** b37f306ab147d6fbfd89376226165e2f  gcc/te
*** 90029,90034 ****
--- 90123,90129 ----
  0dbd1cf7be9a494f5666af53dffb29c8  gcc/testsuite/gcc.target/i386/mvc15.c
  e302a983fa569ca9c52105401b06e054  gcc/testsuite/gcc.target/i386/mvc16.c
  31407ab69a80705cefa016441d8da1aa  gcc/testsuite/gcc.target/i386/mvc17.c
+ be2f55bac7dd3e7d57ff4e3ac72d2f27  gcc/testsuite/gcc.target/i386/mvc18.c
  564e05556bd7de96a3147d7330c78901  gcc/testsuite/gcc.target/i386/mvc2.c
  81972b6ec7b16a2464f2f27fb8863604  gcc/testsuite/gcc.target/i386/mvc3.c
  b1d4c5cfd15d435b380b98085cd82466  gcc/testsuite/gcc.target/i386/mvc4.c
*************** d84c245c19907cbcb51ec1260f2f2e75  gcc/te
*** 90082,90088 ****
  724ac6ecb21390d732dee529300ac27a  gcc/testsuite/gcc.target/i386/nrv1.c
  50b8bcd150bf9d9e5338438449a8f71f  gcc/testsuite/gcc.target/i386/opt-1.c
  d7a02dbcdc54a18a392397fb1ed438e2  gcc/testsuite/gcc.target/i386/opt-2.c
! 4c18cebebaf89dd0a98f51fd0c305a88  gcc/testsuite/gcc.target/i386/opt-comi-1.c
  68dad9551718d81c7acabebdeb04eddd  gcc/testsuite/gcc.target/i386/opt-vperm-vshuf-1.c
  a709d69635171ba8cb23aeb32f14a735  gcc/testsuite/gcc.target/i386/opt-vperm-vshuf-2.c
  c1c7a1f6ca54b294694be556fcad274e  gcc/testsuite/gcc.target/i386/opt-vperm-vshuf-3.c
--- 90177,90183 ----
  724ac6ecb21390d732dee529300ac27a  gcc/testsuite/gcc.target/i386/nrv1.c
  50b8bcd150bf9d9e5338438449a8f71f  gcc/testsuite/gcc.target/i386/opt-1.c
  d7a02dbcdc54a18a392397fb1ed438e2  gcc/testsuite/gcc.target/i386/opt-2.c
! b356c9725260d021202d10c56ff61e80  gcc/testsuite/gcc.target/i386/opt-comi-1.c
  68dad9551718d81c7acabebdeb04eddd  gcc/testsuite/gcc.target/i386/opt-vperm-vshuf-1.c
  a709d69635171ba8cb23aeb32f14a735  gcc/testsuite/gcc.target/i386/opt-vperm-vshuf-2.c
  c1c7a1f6ca54b294694be556fcad274e  gcc/testsuite/gcc.target/i386/opt-vperm-vshuf-3.c
*************** c9065d2ec6fc0f6750fa18d0a76c0c4c  gcc/te
*** 90768,90774 ****
  d8cca194dc6db82d20ea1426711cc2ea  gcc/testsuite/gcc.target/i386/pr111267.c
  9355c41ef1e78b70305475dee4bed5c8  gcc/testsuite/gcc.target/i386/pr111306.c
  1459550770245224c9edce111674e4e5  gcc/testsuite/gcc.target/i386/pr111340.c
! ad2f0edec823b4cdee132cd40ae9f03e  gcc/testsuite/gcc.target/i386/pr111657-1.c
  5792d8414a49aa4afbf19fa324e6fc73  gcc/testsuite/gcc.target/i386/pr111657.c
  319d02c0b743ed2b002a13e7539187ea  gcc/testsuite/gcc.target/i386/pr111673.c
  d4cd7dbfdbbd5e89e09dc648e484762b  gcc/testsuite/gcc.target/i386/pr111698.c
--- 90863,90869 ----
  d8cca194dc6db82d20ea1426711cc2ea  gcc/testsuite/gcc.target/i386/pr111267.c
  9355c41ef1e78b70305475dee4bed5c8  gcc/testsuite/gcc.target/i386/pr111306.c
  1459550770245224c9edce111674e4e5  gcc/testsuite/gcc.target/i386/pr111340.c
! 5b926ab5d74b5cd580fdab993eee5e0a  gcc/testsuite/gcc.target/i386/pr111657-1.c
  5792d8414a49aa4afbf19fa324e6fc73  gcc/testsuite/gcc.target/i386/pr111657.c
  319d02c0b743ed2b002a13e7539187ea  gcc/testsuite/gcc.target/i386/pr111673.c
  d4cd7dbfdbbd5e89e09dc648e484762b  gcc/testsuite/gcc.target/i386/pr111698.c
*************** ae9cefa4d949ae63e9380aeb14fae221  gcc/te
*** 91125,91149 ****
  ff0a586f8aaac7078fb79402d3f0df4b  gcc/testsuite/gcc.target/i386/pr122320-mask4.c
  9a861d0f957f59a5dc5e7cafeddd1343  gcc/testsuite/gcc.target/i386/pr122320-mask64.c
  f6a03ec739c3c632b84006aa8e240dae  gcc/testsuite/gcc.target/i386/pr122320-mask8.c
! e19262d2716f104afc6ca73e92175af5  gcc/testsuite/gcc.target/i386/pr122343-1a.c
! a91c81ee1151f8eb72972a5ca1c4f5e5  gcc/testsuite/gcc.target/i386/pr122343-1b.c
! d4d2c5bfecd2f6bdf686431a77bf4e89  gcc/testsuite/gcc.target/i386/pr122343-2a.c
! 3c6e695d8a0e4a4e246f7d62552d1807  gcc/testsuite/gcc.target/i386/pr122343-2b.c
! 3ec07a892980f6c3ea3bd95a6d03f07e  gcc/testsuite/gcc.target/i386/pr122343-3.c
! e51fcfee6f2a7cafac7c30d85656c49d  gcc/testsuite/gcc.target/i386/pr122343-4a.c
! dc441bebea22c5b1d8b014a60d0be676  gcc/testsuite/gcc.target/i386/pr122343-4b.c
! a9f95c83c8cfe8c675891c3a3fe30bcd  gcc/testsuite/gcc.target/i386/pr122343-5a.c
! 0b661b1593adb6d5aec9b192d1ff8c5f  gcc/testsuite/gcc.target/i386/pr122343-5b.c
! c0a2648ae6688edf7592159b52d2c323  gcc/testsuite/gcc.target/i386/pr122343-6a.c
! de6e22b443d2b7eda0a3831d24b86dde  gcc/testsuite/gcc.target/i386/pr122343-6b.c
! 180323b8bcc7eb6910a7c191b2bf9506  gcc/testsuite/gcc.target/i386/pr122343-7.c
  a23e3aee9cb7b8d2fe5895c930cac402  gcc/testsuite/gcc.target/i386/pr122390-1.c
  160b6bb9cb1df1775f284996fcddbc62  gcc/testsuite/gcc.target/i386/pr122390.c
  beaa59876937a489a8ce9f276a586c83  gcc/testsuite/gcc.target/i386/pr122457.c
  b5fef8fb540e17f32442a50d6ee40f1e  gcc/testsuite/gcc.target/i386/pr122518.c
  93c2651b636b33af98942b4d04ed3a85  gcc/testsuite/gcc.target/i386/pr122534.c
  609faa828d84f786709fd1c4f7c03431  gcc/testsuite/gcc.target/i386/pr122598.c
! 7eefab607e340ac77b1e87bf53facec5  gcc/testsuite/gcc.target/i386/pr122675-1.c
  68c5cb935b4b7d76ed31899761e6b756  gcc/testsuite/gcc.target/i386/pr123027.c
  6631a523638aaa28883a1480bb393315  gcc/testsuite/gcc.target/i386/pr123121.c
  2931c5829c33b01bbef9a329552be2bb  gcc/testsuite/gcc.target/i386/pr123210.c
--- 91220,91244 ----
  ff0a586f8aaac7078fb79402d3f0df4b  gcc/testsuite/gcc.target/i386/pr122320-mask4.c
  9a861d0f957f59a5dc5e7cafeddd1343  gcc/testsuite/gcc.target/i386/pr122320-mask64.c
  f6a03ec739c3c632b84006aa8e240dae  gcc/testsuite/gcc.target/i386/pr122320-mask8.c
! b0888d33414ecea8f98e864805a34d8f  gcc/testsuite/gcc.target/i386/pr122343-1a.c
! c9163a54d9b0a2c8d54452388f616c82  gcc/testsuite/gcc.target/i386/pr122343-1b.c
! 86bd2e7d7dcd9bc57c82576dc7596616  gcc/testsuite/gcc.target/i386/pr122343-2a.c
! 93c2b50c7c1c7d4785ce748a8324b71d  gcc/testsuite/gcc.target/i386/pr122343-2b.c
! e1813196a401be80463e8793d8b3e44d  gcc/testsuite/gcc.target/i386/pr122343-3.c
! 59d36bdf79ad5f812b8f36acc73d5738  gcc/testsuite/gcc.target/i386/pr122343-4a.c
! 5c8f3a62ee65925ec85ca05ebc4a2859  gcc/testsuite/gcc.target/i386/pr122343-4b.c
! e89dabc63f423e248b117ddcc0bd09f3  gcc/testsuite/gcc.target/i386/pr122343-5a.c
! afab8f5ab42e3a19413f10dae63b3aad  gcc/testsuite/gcc.target/i386/pr122343-5b.c
! 8c51d97782c0626ec8d91a8c371c1d6c  gcc/testsuite/gcc.target/i386/pr122343-6a.c
! 7b1832a1250169fac74e4a1ba41cf615  gcc/testsuite/gcc.target/i386/pr122343-6b.c
! f81af8a9e8ed27275e054f8c03ecacb7  gcc/testsuite/gcc.target/i386/pr122343-7.c
  a23e3aee9cb7b8d2fe5895c930cac402  gcc/testsuite/gcc.target/i386/pr122390-1.c
  160b6bb9cb1df1775f284996fcddbc62  gcc/testsuite/gcc.target/i386/pr122390.c
  beaa59876937a489a8ce9f276a586c83  gcc/testsuite/gcc.target/i386/pr122457.c
  b5fef8fb540e17f32442a50d6ee40f1e  gcc/testsuite/gcc.target/i386/pr122518.c
  93c2651b636b33af98942b4d04ed3a85  gcc/testsuite/gcc.target/i386/pr122534.c
  609faa828d84f786709fd1c4f7c03431  gcc/testsuite/gcc.target/i386/pr122598.c
! 322f6ece542905d97564391d6707c7d7  gcc/testsuite/gcc.target/i386/pr122675-1.c
  68c5cb935b4b7d76ed31899761e6b756  gcc/testsuite/gcc.target/i386/pr123027.c
  6631a523638aaa28883a1480bb393315  gcc/testsuite/gcc.target/i386/pr123121.c
  2931c5829c33b01bbef9a329552be2bb  gcc/testsuite/gcc.target/i386/pr123210.c
*************** df76ec06f1f94b77cb1652a61b635dcd  gcc/te
*** 91190,91198 ****
  02bcd898871c488722d8481d6020b391  gcc/testsuite/gcc.target/i386/pr125239.c
  014fb32893a5812986a3d672ecf6682d  gcc/testsuite/gcc.target/i386/pr125245.c
  83da3f12f4b2e9f51434bf8ad312884d  gcc/testsuite/gcc.target/i386/pr125308.c
! dc1ca8471081be67fdad4d340997d425  gcc/testsuite/gcc.target/i386/pr125351.c
! 5f36a236a4e793e8c1156a9da39a7d44  gcc/testsuite/gcc.target/i386/pr125355-2.c
! e76bdb8a14f4e33095bb74f45fe7b07b  gcc/testsuite/gcc.target/i386/pr125355.c
  8951a1fa31f2d45ef9eacfff6a733f77  gcc/testsuite/gcc.target/i386/pr13366.c
  9a752a4b3b77930d91d3c8b0c8897b90  gcc/testsuite/gcc.target/i386/pr13685.c
  31ead0ee84b382ba03e3561931bc6e40  gcc/testsuite/gcc.target/i386/pr14289-1.c
--- 91285,91293 ----
  02bcd898871c488722d8481d6020b391  gcc/testsuite/gcc.target/i386/pr125239.c
  014fb32893a5812986a3d672ecf6682d  gcc/testsuite/gcc.target/i386/pr125245.c
  83da3f12f4b2e9f51434bf8ad312884d  gcc/testsuite/gcc.target/i386/pr125308.c
! 57561ff787e5008d8cbc12f15d3ef382  gcc/testsuite/gcc.target/i386/pr125351.c
! 5e60669dc31220ebca3d33f2e3d79b71  gcc/testsuite/gcc.target/i386/pr125355-2.c
! 0d5d3d25c881e920fd3309b334c0c58f  gcc/testsuite/gcc.target/i386/pr125355.c
  8951a1fa31f2d45ef9eacfff6a733f77  gcc/testsuite/gcc.target/i386/pr13366.c
  9a752a4b3b77930d91d3c8b0c8897b90  gcc/testsuite/gcc.target/i386/pr13685.c
  31ead0ee84b382ba03e3561931bc6e40  gcc/testsuite/gcc.target/i386/pr14289-1.c
*************** b39743561f1aade37b33835b241fb062  gcc/te
*** 91627,91637 ****
  b845585001d3aa1599603bf8f8438393  gcc/testsuite/gcc.target/i386/pr53907.c
  c6b9296a558aaf5187a02addf73c05d0  gcc/testsuite/gcc.target/i386/pr54157.c
  c8e7054dc6f3a98a7c0df3f9b79853fa  gcc/testsuite/gcc.target/i386/pr54400.c
- 0bbfb1c84eb46ed966fea351668c97c0  gcc/testsuite/gcc.target/i386/pr54412-avx512-aligned64.c
- 456a0d35e90b4c2794b0b0d1b3d3d5df  gcc/testsuite/gcc.target/i386/pr54412-callee-byref-param.c
- bbd6e0edaa674fedd87a72b50b9ae302  gcc/testsuite/gcc.target/i386/pr54412-o2-by-value-cases.c
- cf466c9bccd12d45d208e5a7cad7072e  gcc/testsuite/gcc.target/i386/pr54412-sret-no-args.c
- e925170df088457d7077406bc0ca644d  gcc/testsuite/gcc.target/i386/pr54412-v4d-o0-aligned-locals.c
  414b8adf659b6e0fae2493215e4c8e43  gcc/testsuite/gcc.target/i386/pr54445-1.c
  f69bb6692a438b6c4c3ae59e8151f9e5  gcc/testsuite/gcc.target/i386/pr54445-2.c
  44119610eb32887f2d86d9e5b6ad2610  gcc/testsuite/gcc.target/i386/pr54457.c
--- 91722,91727 ----
*************** f65eee1e053f6c1675726396c6df0509  gcc/te
*** 92710,92716 ****
  17b51e3fde50f413030ac13d4da5f92d  gcc/testsuite/gcc.target/i386/pr89902.c
  e225d6b5ab365db1e6c8d7a75e04345d  gcc/testsuite/gcc.target/i386/pr89903.c
  f529a8c1dee59aa4275d01977b57a0f2  gcc/testsuite/gcc.target/i386/pr89945.c
! adae3156ab4e2f317ef6a23cbd52a09e  gcc/testsuite/gcc.target/i386/pr89954.c
  2b740660f12ab9c7636b35db2ec19c55  gcc/testsuite/gcc.target/i386/pr89965.c
  61421458c0cd694e7f45d147f09c71dd  gcc/testsuite/gcc.target/i386/pr89984-1.c
  4675458af6efdc7039a76f2ca0824f6a  gcc/testsuite/gcc.target/i386/pr89984-2.c
--- 92800,92806 ----
  17b51e3fde50f413030ac13d4da5f92d  gcc/testsuite/gcc.target/i386/pr89902.c
  e225d6b5ab365db1e6c8d7a75e04345d  gcc/testsuite/gcc.target/i386/pr89903.c
  f529a8c1dee59aa4275d01977b57a0f2  gcc/testsuite/gcc.target/i386/pr89945.c
! 35a7f104cf8865b9d84a9120c32c08c9  gcc/testsuite/gcc.target/i386/pr89954.c
  2b740660f12ab9c7636b35db2ec19c55  gcc/testsuite/gcc.target/i386/pr89965.c
  61421458c0cd694e7f45d147f09c71dd  gcc/testsuite/gcc.target/i386/pr89984-1.c
  4675458af6efdc7039a76f2ca0824f6a  gcc/testsuite/gcc.target/i386/pr89984-2.c
*************** e1a47196028cf3d7d1da3ad695db60b3  gcc/te
*** 92817,92823 ****
  7c666da60bf0f91a71a0449e0dc05fe9  gcc/testsuite/gcc.target/i386/pr92080-14.c
  be1e0e8eba7c0a6e5b4edccfb5c6ee30  gcc/testsuite/gcc.target/i386/pr92080-15.c
  7e4ed332aefc3d639a093680c490517e  gcc/testsuite/gcc.target/i386/pr92080-16.c
! af608aa8cd87cda88b12ce3bac34ddc2  gcc/testsuite/gcc.target/i386/pr92080-17.c
  0af0fd636c3a72d334625b16a51242d3  gcc/testsuite/gcc.target/i386/pr92080-18.c
  494c2614cf731267b1b0f41709bfbca9  gcc/testsuite/gcc.target/i386/pr92080-19.c
  72ca6ad41495194d27cf4156a0bea46d  gcc/testsuite/gcc.target/i386/pr92080-2.c
--- 92907,92913 ----
  7c666da60bf0f91a71a0449e0dc05fe9  gcc/testsuite/gcc.target/i386/pr92080-14.c
  be1e0e8eba7c0a6e5b4edccfb5c6ee30  gcc/testsuite/gcc.target/i386/pr92080-15.c
  7e4ed332aefc3d639a093680c490517e  gcc/testsuite/gcc.target/i386/pr92080-16.c
! 326c1d7681179f428b30f40bfeb98148  gcc/testsuite/gcc.target/i386/pr92080-17.c
  0af0fd636c3a72d334625b16a51242d3  gcc/testsuite/gcc.target/i386/pr92080-18.c
  494c2614cf731267b1b0f41709bfbca9  gcc/testsuite/gcc.target/i386/pr92080-19.c
  72ca6ad41495194d27cf4156a0bea46d  gcc/testsuite/gcc.target/i386/pr92080-2.c
*************** a3e5a8589b650ac289a1ebcf789619f6  gcc/te
*** 93150,93157 ****
  e2033457a6fda578099d3b1c2092a4fa  gcc/testsuite/gcc.target/i386/pr99881.c
  939447bef72a36fa24dc61bac7010b1b  gcc/testsuite/gcc.target/i386/pr99905.c
  bb74fe2f09b19928e6c4047fee136b0b  gcc/testsuite/gcc.target/i386/prefer-vector-width-attr.c
! d9c90a27fd6b9568c79455bcaf9faacc  gcc/testsuite/gcc.target/i386/prefetchi-1.c
! d380df14afc6d38427db2430bb5640c7  gcc/testsuite/gcc.target/i386/prefetchi-1b.c
  5fb0aad075edba2ca6bd9c52e18048a4  gcc/testsuite/gcc.target/i386/prefetchi-2.c
  0d239d33a9eeb5af2e5ffd12b6d373df  gcc/testsuite/gcc.target/i386/prefetchi-3.c
  89c120add0d0cea3a2a86aaa0863dd2e  gcc/testsuite/gcc.target/i386/prefetchi-4.c
--- 93240,93247 ----
  e2033457a6fda578099d3b1c2092a4fa  gcc/testsuite/gcc.target/i386/pr99881.c
  939447bef72a36fa24dc61bac7010b1b  gcc/testsuite/gcc.target/i386/pr99905.c
  bb74fe2f09b19928e6c4047fee136b0b  gcc/testsuite/gcc.target/i386/prefer-vector-width-attr.c
! 97252b8d4a4ea9324dd7e0b42c844f32  gcc/testsuite/gcc.target/i386/prefetchi-1.c
! dba7c00501af0bc202c76961df962acb  gcc/testsuite/gcc.target/i386/prefetchi-1b.c
  5fb0aad075edba2ca6bd9c52e18048a4  gcc/testsuite/gcc.target/i386/prefetchi-2.c
  0d239d33a9eeb5af2e5ffd12b6d373df  gcc/testsuite/gcc.target/i386/prefetchi-3.c
  89c120add0d0cea3a2a86aaa0863dd2e  gcc/testsuite/gcc.target/i386/prefetchi-4.c
*************** d03dd931aa8e5dbd17e37ae33d9e3a99  gcc/te
*** 96483,96488 ****
--- 96573,96580 ----
  3451ae43cce0fb6c42cdb403ba6bd949  gcc/testsuite/gcc.target/powerpc/amo5.c
  190f865d5df3758c51189d9bbd731026  gcc/testsuite/gcc.target/powerpc/amo6.c
  6566dd501fb781aab01889cda5d1db4c  gcc/testsuite/gcc.target/powerpc/amo7.c
+ 92ab07921a22d880623704978c36c37c  gcc/testsuite/gcc.target/powerpc/amo8.c
+ 3aed12a81bb695500fa7463d4c392608  gcc/testsuite/gcc.target/powerpc/amo9.c
  f92704c5f7f462e7f0b0f7a56209b9c1  gcc/testsuite/gcc.target/powerpc/asm-es-1.c
  ab233b59d18c7aa71a26292124ceae27  gcc/testsuite/gcc.target/powerpc/asm-es-2.c
  6ab0c2c5c17e69db0ab917861a4fc5cc  gcc/testsuite/gcc.target/powerpc/asm-hard-reg-1.c
*************** e0096129e78eb7f5e7a4f3231097c187  gcc/te
*** 105060,105065 ****
--- 105152,105158 ----
  e8e71b223dd9d7fee839474c55a75e59  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/pr123969.c
  4881cdf86600eb0940a8c82416f44a09  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/pr123971.c
  b804f461139f6ef0af6f4985aac87bbe  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/pr124147.c
+ 869b0028fa365686d38bd16998cd4291  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/pr125395.c
  3b6f5cabe79dc861ffb53d3e1f5799fb  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/prefix.c
  f0eaf74e1355fb42d801d65c8e79d1c5  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/riscv_th_vector.h
  979e78c5ed1d2ba91a46584480362b26  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/riscv_vector.h
*************** a84224faacb7d93a1bd4c61397928413  gcc/te
*** 105898,105903 ****
--- 105991,105997 ----
  845c8003a4bc1f3d9e3c4f80225ff542  gcc/testsuite/gcc.target/riscv/shorten-memrefs-7.c
  5c6f219d3c6f78457ccc2f81108fa5cf  gcc/testsuite/gcc.target/riscv/shorten-memrefs-8.c
  52ab5a107742fe4b4967ec31e30faef6  gcc/testsuite/gcc.target/riscv/shrink-wrap-1.c
+ f50428eca445e9ddf079d41d0684fe91  gcc/testsuite/gcc.target/riscv/sifive-7-load-address-bypass.c
  82d8412eb43370360f8ac3c0fc0ce4fe  gcc/testsuite/gcc.target/riscv/sign-extend-1.c
  cc32dda6538c5a12c022772b1eb4f6f0  gcc/testsuite/gcc.target/riscv/sign-extend-rshift-32.c
  21c1c7f3bfe8b89696e3a49318610d40  gcc/testsuite/gcc.target/riscv/sign-extend-rshift-64.c
*************** fb2bbe19adb120805523add355d1822d  gcc/te
*** 106219,106224 ****
--- 106313,106319 ----
  c6924cfcab740bd8de9296d509178f4d  gcc/testsuite/gcc.target/riscv/zfbfmin-bf16_integer_libcall_convert.c
  6eafc07562072676788badf18ac87198  gcc/testsuite/gcc.target/riscv/zi-ext.c
  5317b44a285fba7ff5b0d15770fd05c8  gcc/testsuite/gcc.target/riscv/zicfilp-call.c
+ 6a3cadb1f825d1f651694c6dccf8c9ce  gcc/testsuite/gcc.target/riscv/zicfilp-trampoline.c
  9e2b7d51508e711792db8a77e0ce0579  gcc/testsuite/gcc.target/riscv/zicond-ice-1.c
  f8f761b2e6d372567e0ea4eb9ae20fb4  gcc/testsuite/gcc.target/riscv/zicond-ice-2.c
  dacfab42ea97fed33fb7af740c4b47e4  gcc/testsuite/gcc.target/riscv/zicond-ice-3.c
*************** d94841af420f4745c433040de2753088  gcc/te
*** 106485,106490 ****
--- 106580,106588 ----
  7361c2c610e646df57c6d91b57e4689e  gcc/testsuite/gcc.target/s390/insv-2.c
  baa6d1c3d77baf7c1324df7bb6f4f40c  gcc/testsuite/gcc.target/s390/insv-3.c
  c3e13b2ac420e231a16f2a177383585a  gcc/testsuite/gcc.target/s390/int128load.c
+ bd67a43e59e2c398787687b428149fbc  gcc/testsuite/gcc.target/s390/ira-pic-spill-1.c
+ b7171bceb3b3104dac9a1f1a4b2b9cc6  gcc/testsuite/gcc.target/s390/ira-pic-spill-2.c
+ f9357a4707183106de3a349754d00e8f  gcc/testsuite/gcc.target/s390/ira-pic-spill-3.c
  a9bc35f3b8e2135b6e2d575d37dd20e7  gcc/testsuite/gcc.target/s390/isfinite-isinf-isnormal-signbit-1.c
  2c7b9c55c8431a78c587fa6dfd32e12d  gcc/testsuite/gcc.target/s390/isfinite-isinf-isnormal-signbit-2.c
  ef2c5743cfecad7fa099e99612f0f0e1  gcc/testsuite/gcc.target/s390/isfinite-isinf-isnormal-signbit-3.c
*************** b25efa9d439f6c9ad06962cba99229c8  gcc/te
*** 106638,106643 ****
--- 106736,106742 ----
  abd82e72aa14d30ef649fb88b2856d0d  gcc/testsuite/gcc.target/s390/risbg-ll-3.c
  6c330cfc80a0f60d042947448413d011  gcc/testsuite/gcc.target/s390/rotate-truncation-mask.c
  82c60672eaa0813617a93a6fb6cf9fe8  gcc/testsuite/gcc.target/s390/s390.exp
+ 6e3e8c0857a625eecc8436188ac6907e  gcc/testsuite/gcc.target/s390/section-anchors-4.c
  970ac972bfd816dae5f8b5705abd8ab6  gcc/testsuite/gcc.target/s390/section-anchors.c
  2e57c7c23cac49a65eb61077317a2f1b  gcc/testsuite/gcc.target/s390/section-anchors2.c
  78c4d933475e58d55d22ab5b46b27884  gcc/testsuite/gcc.target/s390/section-anchors3.c
*************** a8db2129ce64619adefe97016e2a537b  gcc/te
*** 112727,112732 ****
--- 112826,112832 ----
  9b50c383f7b022f4fe7d97cf7f5fb283  gcc/testsuite/gfortran.dg/EXformat_1.F90
  d80fbb8b308e7fcbcd0be2241cff3e64  gcc/testsuite/gfortran.dg/EXformat_2.f90
  688aecb4793a675b5967ada8a034b5c4  gcc/testsuite/gfortran.dg/EXformat_3.F90
+ bc57538c2442e54f68f07fd8451a182b  gcc/testsuite/gfortran.dg/EXformat_4.F90
  1887cff12c57c47f7b24259ca449ec8c  gcc/testsuite/gfortran.dg/EXrounding.F90
  747722c12afa6e089d9e33c3d05257f7  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_1.c
  57077f084b8ec81f4f537428d13a6588  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_1.f90
*************** a412f66041d99e3f1f3ee5dd93fb1ada  gcc/te
*** 112957,112963 ****
  d00145de5e69e4d964abaa0baebc8c0e  gcc/testsuite/gfortran.dg/allocatable_function_7.f90
  def8ea3836a599ae2a0d62d897cb9617  gcc/testsuite/gfortran.dg/allocatable_function_8.f90
  16255c1e6ab922bb040b8772e92bf5c2  gcc/testsuite/gfortran.dg/allocatable_function_9.f90
! 9efb1e4a4c70aa7aba6a67dd3911c048  gcc/testsuite/gfortran.dg/allocatable_length.f90
  e9e41fa5c57cedf0b0812d385d7c6e25  gcc/testsuite/gfortran.dg/allocatable_length_2.f90
  0eaf05114b7069214e95edca38338c8d  gcc/testsuite/gfortran.dg/allocatable_module_1.f90
  405f380e9ecba9b52cabf176e55381c9  gcc/testsuite/gfortran.dg/allocatable_scalar_1.f90
--- 113057,113063 ----
  d00145de5e69e4d964abaa0baebc8c0e  gcc/testsuite/gfortran.dg/allocatable_function_7.f90
  def8ea3836a599ae2a0d62d897cb9617  gcc/testsuite/gfortran.dg/allocatable_function_8.f90
  16255c1e6ab922bb040b8772e92bf5c2  gcc/testsuite/gfortran.dg/allocatable_function_9.f90
! e19e9076ad3518b727f42a351efe605c  gcc/testsuite/gfortran.dg/allocatable_length.f90
  e9e41fa5c57cedf0b0812d385d7c6e25  gcc/testsuite/gfortran.dg/allocatable_length_2.f90
  0eaf05114b7069214e95edca38338c8d  gcc/testsuite/gfortran.dg/allocatable_module_1.f90
  405f380e9ecba9b52cabf176e55381c9  gcc/testsuite/gfortran.dg/allocatable_scalar_1.f90
*************** fa4377be01ca69ae5c5bef2dac378c95  gcc/te
*** 112970,112980 ****
  c47f65db3d738b1865a53824aa8bb73a  gcc/testsuite/gfortran.dg/allocatable_scalar_3.f90
  5e08e0b169828fe66ef91fcf4aa232f2  gcc/testsuite/gfortran.dg/allocatable_scalar_4.f90
  19f21a43c0f4c0516548e9bf8a8426ad  gcc/testsuite/gfortran.dg/allocatable_scalar_5.f90
! b3694822ec55a65cded0eb547112d6c3  gcc/testsuite/gfortran.dg/allocatable_scalar_6.f90
  34fbe4198d72f8bce6b3de228d2ce5d6  gcc/testsuite/gfortran.dg/allocatable_scalar_7.f90
  6c10589f9d19cd11cc81a64dd2582850  gcc/testsuite/gfortran.dg/allocatable_scalar_8.f90
  f8d746a87a77bbbeb5c122d7f9cab06a  gcc/testsuite/gfortran.dg/allocatable_scalar_9.f90
! b8d983259aecafaf5fe3c6a8773a678a  gcc/testsuite/gfortran.dg/allocatable_uninitialized_1.f90
  78b38d37b7b298f5f93ff182730c0c9c  gcc/testsuite/gfortran.dg/allocate_alloc_opt_1.f90
  28c653ee16e10f980aff3ca6f50289a9  gcc/testsuite/gfortran.dg/allocate_alloc_opt_10.f90
  da5d5b7965daec91596c4c854f913229  gcc/testsuite/gfortran.dg/allocate_alloc_opt_11.f90
--- 113070,113080 ----
  c47f65db3d738b1865a53824aa8bb73a  gcc/testsuite/gfortran.dg/allocatable_scalar_3.f90
  5e08e0b169828fe66ef91fcf4aa232f2  gcc/testsuite/gfortran.dg/allocatable_scalar_4.f90
  19f21a43c0f4c0516548e9bf8a8426ad  gcc/testsuite/gfortran.dg/allocatable_scalar_5.f90
! c632a2f5329784e39244d9a5445976c4  gcc/testsuite/gfortran.dg/allocatable_scalar_6.f90
  34fbe4198d72f8bce6b3de228d2ce5d6  gcc/testsuite/gfortran.dg/allocatable_scalar_7.f90
  6c10589f9d19cd11cc81a64dd2582850  gcc/testsuite/gfortran.dg/allocatable_scalar_8.f90
  f8d746a87a77bbbeb5c122d7f9cab06a  gcc/testsuite/gfortran.dg/allocatable_scalar_9.f90
! 1bc67563be8dafd761d435a7f9facb63  gcc/testsuite/gfortran.dg/allocatable_uninitialized_1.f90
  78b38d37b7b298f5f93ff182730c0c9c  gcc/testsuite/gfortran.dg/allocate_alloc_opt_1.f90
  28c653ee16e10f980aff3ca6f50289a9  gcc/testsuite/gfortran.dg/allocate_alloc_opt_10.f90
  da5d5b7965daec91596c4c854f913229  gcc/testsuite/gfortran.dg/allocate_alloc_opt_11.f90
*************** f501ad9fe36a5716a92695db1f43f9de  gcc/te
*** 113321,113327 ****
  a6350cd42adc8349005fb5f48146a864  gcc/testsuite/gfortran.dg/assignment_1.f90
  3228ea30d2b48ca5c4aff6e33085dc11  gcc/testsuite/gfortran.dg/assignment_2.f90
  44cf157d4e973a542bce54f60c00fe3a  gcc/testsuite/gfortran.dg/assignment_3.f90
! a8acf962c4fbb89ac0da8e9cc62a24e7  gcc/testsuite/gfortran.dg/assignment_4.f90
  73705f344d4c0a150014edc622ca6d2d  gcc/testsuite/gfortran.dg/associate_1.f03
  75afdf677e5a36ffd8e2c2879e337776  gcc/testsuite/gfortran.dg/associate_10.f90
  e2ac51297e6e988475ff8448d1ef067d  gcc/testsuite/gfortran.dg/associate_11.f90
--- 113421,113427 ----
  a6350cd42adc8349005fb5f48146a864  gcc/testsuite/gfortran.dg/assignment_1.f90
  3228ea30d2b48ca5c4aff6e33085dc11  gcc/testsuite/gfortran.dg/assignment_2.f90
  44cf157d4e973a542bce54f60c00fe3a  gcc/testsuite/gfortran.dg/assignment_3.f90
! b28c2ce98e9d622335729e3745bff74f  gcc/testsuite/gfortran.dg/assignment_4.f90
  73705f344d4c0a150014edc622ca6d2d  gcc/testsuite/gfortran.dg/associate_1.f03
  75afdf677e5a36ffd8e2c2879e337776  gcc/testsuite/gfortran.dg/associate_10.f90
  e2ac51297e6e988475ff8448d1ef067d  gcc/testsuite/gfortran.dg/associate_11.f90
*************** e0fe6119bfcf724ee51375d3156cacc5  gcc/te
*** 113401,113407 ****
--- 113501,113511 ----
  5a67561f9b0d9f903558a99dceabeb25  gcc/testsuite/gfortran.dg/associate_79.f90
  3c2206420bb8717914aa447789b5f079  gcc/testsuite/gfortran.dg/associate_8.f03
  c7ede1ebcb10a45e043e636af05828b5  gcc/testsuite/gfortran.dg/associate_80.f90
+ 459fbab02621785ee9cc92b06ca356f4  gcc/testsuite/gfortran.dg/associate_81.f90
+ a17657c86525835e124af80877014f6b  gcc/testsuite/gfortran.dg/associate_82.f90
  0406413659a92c10d44ed1f1576987b9  gcc/testsuite/gfortran.dg/associate_9.f03
+ 79e6ed8de9e44f2a63d74a896b518a8f  gcc/testsuite/gfortran.dg/associate_contained_func_typebound.f90
+ 63711a9e2de25641dd224750ada9a60b  gcc/testsuite/gfortran.dg/associate_contained_func_typebound_2.f90
  93b46707a76210c61d3344b378b624bd  gcc/testsuite/gfortran.dg/associate_infer_program_type.f90
  51f82584276ab8f411b8d9d7e84fadc8  gcc/testsuite/gfortran.dg/associated_1.f90
  76b7fa8062aee263b1ef942bd8bc01bf  gcc/testsuite/gfortran.dg/associated_2.f90
*************** ee834071fbdbf11553b04e2dab5a50e0  gcc/te
*** 113506,113512 ****
  362c8595542a020eb586d0aefb29793e  gcc/testsuite/gfortran.dg/asynchronous_5.f03
  c45eedde0562a60cdbc393433096fcce  gcc/testsuite/gfortran.dg/atan2_1.f90
  fa450718dba3ab168e51f1ea0a7395d9  gcc/testsuite/gfortran.dg/atan2_2.f90
! 6ea45e69d96b4898fbc1a9cefe77976b  gcc/testsuite/gfortran.dg/attr_deprecated-2.f90
  f53fcb34021fd16cec1ec5c62b1b1078  gcc/testsuite/gfortran.dg/attr_deprecated.f90
  1de887a6713de99b4d24dece9810994f  gcc/testsuite/gfortran.dg/auto_array_1.f90
  5728d828f281df7854b3c34318983790  gcc/testsuite/gfortran.dg/auto_char_dummy_array_1.f90
--- 113610,113616 ----
  362c8595542a020eb586d0aefb29793e  gcc/testsuite/gfortran.dg/asynchronous_5.f03
  c45eedde0562a60cdbc393433096fcce  gcc/testsuite/gfortran.dg/atan2_1.f90
  fa450718dba3ab168e51f1ea0a7395d9  gcc/testsuite/gfortran.dg/atan2_2.f90
! 7049edd447f60bdee4c16bc9741c317f  gcc/testsuite/gfortran.dg/attr_deprecated-2.f90
  f53fcb34021fd16cec1ec5c62b1b1078  gcc/testsuite/gfortran.dg/attr_deprecated.f90
  1de887a6713de99b4d24dece9810994f  gcc/testsuite/gfortran.dg/auto_array_1.f90
  5728d828f281df7854b3c34318983790  gcc/testsuite/gfortran.dg/auto_char_dummy_array_1.f90
*************** ab1680fba79a3e8495b3b46064f1a59f  gcc/te
*** 114048,114054 ****
  2e01e4009d12269c05b8f480e81cd06d  gcc/testsuite/gfortran.dg/c_by_val_2.f90
  813d55579374e020bb56ba96bcaca976  gcc/testsuite/gfortran.dg/c_by_val_3.f90
  c976bb6d4dfaa0c0883ce8e498e42afc  gcc/testsuite/gfortran.dg/c_by_val_4.f
! c5ff5c10906478ae973c32c49eafcc63  gcc/testsuite/gfortran.dg/c_by_val_5.f90
  e1bd0cbb4fd7e7d2bdf8b6e16bec09d4  gcc/testsuite/gfortran.dg/c_char_driver.c
  bacc3e482af5248b7f44b5ea0c8d320b  gcc/testsuite/gfortran.dg/c_char_tests.f03
  d8bc762babe74d57d0fb247c2e5852c6  gcc/testsuite/gfortran.dg/c_char_tests_2.f03
--- 114152,114158 ----
  2e01e4009d12269c05b8f480e81cd06d  gcc/testsuite/gfortran.dg/c_by_val_2.f90
  813d55579374e020bb56ba96bcaca976  gcc/testsuite/gfortran.dg/c_by_val_3.f90
  c976bb6d4dfaa0c0883ce8e498e42afc  gcc/testsuite/gfortran.dg/c_by_val_4.f
! 2e596602972cf2cccc3f893d3fdaf21b  gcc/testsuite/gfortran.dg/c_by_val_5.f90
  e1bd0cbb4fd7e7d2bdf8b6e16bec09d4  gcc/testsuite/gfortran.dg/c_char_driver.c
  bacc3e482af5248b7f44b5ea0c8d320b  gcc/testsuite/gfortran.dg/c_char_tests.f03
  d8bc762babe74d57d0fb247c2e5852c6  gcc/testsuite/gfortran.dg/c_char_tests_2.f03
*************** bf9ec3d04bc6da4c4da71826eb967c7b  gcc/te
*** 114185,114191 ****
  f4e90061a8e30315b03d2385cc9076e4  gcc/testsuite/gfortran.dg/char_cast_2.f90
  f69de001990224fa61e33f3158d41ff2  gcc/testsuite/gfortran.dg/char_comparison_1.f
  91cf9af67521083f13bb4c880df3e6d2  gcc/testsuite/gfortran.dg/char_component_initializer_1.f90
! 25fe5cf0c6bc96b742b2162ebbfd7d3a  gcc/testsuite/gfortran.dg/char_component_initializer_2.f90
  d86e3f32a70a92a26987c454587bda35  gcc/testsuite/gfortran.dg/char_component_initializer_3.f90
  ec36e832307e3737cd41b67f42ca9817  gcc/testsuite/gfortran.dg/char_cons_len.f90
  55674dbcc50d15a8ee4e9dc276048862  gcc/testsuite/gfortran.dg/char_conversion.f90
--- 114289,114295 ----
  f4e90061a8e30315b03d2385cc9076e4  gcc/testsuite/gfortran.dg/char_cast_2.f90
  f69de001990224fa61e33f3158d41ff2  gcc/testsuite/gfortran.dg/char_comparison_1.f
  91cf9af67521083f13bb4c880df3e6d2  gcc/testsuite/gfortran.dg/char_component_initializer_1.f90
! 135c5d1c1298078cf6e58dc18bb8b22a  gcc/testsuite/gfortran.dg/char_component_initializer_2.f90
  d86e3f32a70a92a26987c454587bda35  gcc/testsuite/gfortran.dg/char_component_initializer_3.f90
  ec36e832307e3737cd41b67f42ca9817  gcc/testsuite/gfortran.dg/char_cons_len.f90
  55674dbcc50d15a8ee4e9dc276048862  gcc/testsuite/gfortran.dg/char_conversion.f90
*************** c9df9f0a334954582db6527603fa214f  gcc/te
*** 114203,114209 ****
  431910773a58ff1c397e7de34ac574dd  gcc/testsuite/gfortran.dg/char_expr_2.f90
  b26a37e802ac6478da73adad5f1d1456  gcc/testsuite/gfortran.dg/char_expr_3.f90
  ad6d0021c9ddd70a0c4a353c2a5b54a8  gcc/testsuite/gfortran.dg/char_initialiser_actual.f90
! 32354abee1ac6254c489621cdad0c115  gcc/testsuite/gfortran.dg/char_length_1.f90
  08500dfe24b9bc010a5b9805b6011821  gcc/testsuite/gfortran.dg/char_length_10.f90
  fc61b2514c1873396dcafdad0395eeec  gcc/testsuite/gfortran.dg/char_length_11.f90
  9902c73e3bcf76d2e8f1c5c40f3c9d96  gcc/testsuite/gfortran.dg/char_length_12.f90
--- 114307,114313 ----
  431910773a58ff1c397e7de34ac574dd  gcc/testsuite/gfortran.dg/char_expr_2.f90
  b26a37e802ac6478da73adad5f1d1456  gcc/testsuite/gfortran.dg/char_expr_3.f90
  ad6d0021c9ddd70a0c4a353c2a5b54a8  gcc/testsuite/gfortran.dg/char_initialiser_actual.f90
! 646af5a9fe58a15fbd048f464d3df40a  gcc/testsuite/gfortran.dg/char_length_1.f90
  08500dfe24b9bc010a5b9805b6011821  gcc/testsuite/gfortran.dg/char_length_10.f90
  fc61b2514c1873396dcafdad0395eeec  gcc/testsuite/gfortran.dg/char_length_11.f90
  9902c73e3bcf76d2e8f1c5c40f3c9d96  gcc/testsuite/gfortran.dg/char_length_12.f90
*************** dc0c5a14d61855bcf7901ec1cc9f8631  gcc/te
*** 114824,114830 ****
  ae633d6fb8f755e4438f03dc66af961e  gcc/testsuite/gfortran.dg/constructor_6.f90
  56b724accc20820757e0cf32dec06d6d  gcc/testsuite/gfortran.dg/constructor_7.f90
  8beaf054e69adb46d0eb3735e8ee9014  gcc/testsuite/gfortran.dg/constructor_8.f90
! ad42d063e33d6cd09f011251a7bc62d2  gcc/testsuite/gfortran.dg/constructor_9.f90
  b5dbb6eac05af22301cc4be0f75bc8c7  gcc/testsuite/gfortran.dg/contained_1.f90
  ad78b834951932a616057d1d3e242e54  gcc/testsuite/gfortran.dg/contained_3.f90
  483a3e34479d51ff6b8a35b7b161e745  gcc/testsuite/gfortran.dg/contained_equivalence_1.f90
--- 114928,114934 ----
  ae633d6fb8f755e4438f03dc66af961e  gcc/testsuite/gfortran.dg/constructor_6.f90
  56b724accc20820757e0cf32dec06d6d  gcc/testsuite/gfortran.dg/constructor_7.f90
  8beaf054e69adb46d0eb3735e8ee9014  gcc/testsuite/gfortran.dg/constructor_8.f90
! 675d6062901417fe590936c5a297c9bb  gcc/testsuite/gfortran.dg/constructor_9.f90
  b5dbb6eac05af22301cc4be0f75bc8c7  gcc/testsuite/gfortran.dg/contained_1.f90
  ad78b834951932a616057d1d3e242e54  gcc/testsuite/gfortran.dg/contained_3.f90
  483a3e34479d51ff6b8a35b7b161e745  gcc/testsuite/gfortran.dg/contained_equivalence_1.f90
*************** db8b6c06ec8fa683359365a4c0484581  gcc/te
*** 116090,116096 ****
  014a33cc6026bde4bc2454106ccd756a  gcc/testsuite/gfortran.dg/g77_intrinsics_funcs.f
  2d18a14a9628d16cb6b1e5971754464b  gcc/testsuite/gfortran.dg/g77_intrinsics_sub.f
  04c9ca293f1fff6898507f486c3904e9  gcc/testsuite/gfortran.dg/gamma_1.f90
! 2c27507397dd8bbae0e2ecc3cc607284  gcc/testsuite/gfortran.dg/gamma_2.f90
  885f70bd504990deca1b7719c0ca929e  gcc/testsuite/gfortran.dg/gamma_3.f90
  b2dab7cf63d07072e0211a0ec871e5c9  gcc/testsuite/gfortran.dg/gamma_4.f90
  c4995ffda486ea745c5067041a6124ed  gcc/testsuite/gfortran.dg/gamma_5.f90
--- 116194,116200 ----
  014a33cc6026bde4bc2454106ccd756a  gcc/testsuite/gfortran.dg/g77_intrinsics_funcs.f
  2d18a14a9628d16cb6b1e5971754464b  gcc/testsuite/gfortran.dg/g77_intrinsics_sub.f
  04c9ca293f1fff6898507f486c3904e9  gcc/testsuite/gfortran.dg/gamma_1.f90
! f49d965422da6fd15f5802dd42cfa463  gcc/testsuite/gfortran.dg/gamma_2.f90
  885f70bd504990deca1b7719c0ca929e  gcc/testsuite/gfortran.dg/gamma_3.f90
  b2dab7cf63d07072e0211a0ec871e5c9  gcc/testsuite/gfortran.dg/gamma_4.f90
  c4995ffda486ea745c5067041a6124ed  gcc/testsuite/gfortran.dg/gamma_5.f90
*************** f3111ad444da282a0a5b4915ee85f5bf  gcc/te
*** 116176,116182 ****
  7a3254f3b47d322b4df76672cf5fbde6  gcc/testsuite/gfortran.dg/goacc/asyncwait-1.f95
  8a63d2db2c462621293e094632680b17  gcc/testsuite/gfortran.dg/goacc/asyncwait-2.f95
  f04fe9e035242f264ba1bc7e66f7268c  gcc/testsuite/gfortran.dg/goacc/asyncwait-3.f95
! df94a75f4459698a7eb7a7a16b0f9fdd  gcc/testsuite/gfortran.dg/goacc/asyncwait-4.f95
  fe2df2ce6e9b837974ec76c54da56c62  gcc/testsuite/gfortran.dg/goacc/asyncwait-5.f
  0ff714bbb2fcd709c6b1bd4d6a4dad15  gcc/testsuite/gfortran.dg/goacc/atomic-1.f90
  73ace9355b48232c91ed5b3bc0d60050  gcc/testsuite/gfortran.dg/goacc/atomic.f90
--- 116280,116286 ----
  7a3254f3b47d322b4df76672cf5fbde6  gcc/testsuite/gfortran.dg/goacc/asyncwait-1.f95
  8a63d2db2c462621293e094632680b17  gcc/testsuite/gfortran.dg/goacc/asyncwait-2.f95
  f04fe9e035242f264ba1bc7e66f7268c  gcc/testsuite/gfortran.dg/goacc/asyncwait-3.f95
! 49cd777d86a38ce7b2f4739d9f57e83d  gcc/testsuite/gfortran.dg/goacc/asyncwait-4.f95
  fe2df2ce6e9b837974ec76c54da56c62  gcc/testsuite/gfortran.dg/goacc/asyncwait-5.f
  0ff714bbb2fcd709c6b1bd4d6a4dad15  gcc/testsuite/gfortran.dg/goacc/atomic-1.f90
  73ace9355b48232c91ed5b3bc0d60050  gcc/testsuite/gfortran.dg/goacc/atomic.f90
*************** df208766c4856bbc03206680d88a78f7  gcc/te
*** 116360,116366 ****
  1a89c5c4052f1cfdc490b450049ea358  gcc/testsuite/gfortran.dg/goacc/routine-3.f90
  c7f7f4bf3ae51a9ac3c0e717461758b5  gcc/testsuite/gfortran.dg/goacc/routine-4.f90
  d8bda8310290b20e70bf191a6dd5db15  gcc/testsuite/gfortran.dg/goacc/routine-5.f90
! d2c217dba632b4bc9855adf5389424b6  gcc/testsuite/gfortran.dg/goacc/routine-6.f90
  c324911677ac830a5696fde01efa279e  gcc/testsuite/gfortran.dg/goacc/routine-8.f90
  5e8bb44be5f84e252270debde0b98395  gcc/testsuite/gfortran.dg/goacc/routine-external-level-of-parallelism-1-parallel.f
  987dd0bc4006de64da33535f1d9cfd96  gcc/testsuite/gfortran.dg/goacc/routine-external-level-of-parallelism-1-serial.f
--- 116464,116470 ----
  1a89c5c4052f1cfdc490b450049ea358  gcc/testsuite/gfortran.dg/goacc/routine-3.f90
  c7f7f4bf3ae51a9ac3c0e717461758b5  gcc/testsuite/gfortran.dg/goacc/routine-4.f90
  d8bda8310290b20e70bf191a6dd5db15  gcc/testsuite/gfortran.dg/goacc/routine-5.f90
! 95ff935594811876c32c3dd84d127d60  gcc/testsuite/gfortran.dg/goacc/routine-6.f90
  c324911677ac830a5696fde01efa279e  gcc/testsuite/gfortran.dg/goacc/routine-8.f90
  5e8bb44be5f84e252270debde0b98395  gcc/testsuite/gfortran.dg/goacc/routine-external-level-of-parallelism-1-parallel.f
  987dd0bc4006de64da33535f1d9cfd96  gcc/testsuite/gfortran.dg/goacc/routine-external-level-of-parallelism-1-serial.f
*************** d1682241b0b1d37b06e65589cfa2336f  gcc/te
*** 116432,116438 ****
  794c06e7ccb0401f5586d816e30cad08  gcc/testsuite/gfortran.dg/gomp/all-memory-3.f90
  5633756a662441452bd869456e985808  gcc/testsuite/gfortran.dg/gomp/allocatable_components_1.f90
  d8f891883879b40925714053d72765b2  gcc/testsuite/gfortran.dg/gomp/allocate-1.f90
! c20c9f1e0f2b7f6bc763a7e20b0857ef  gcc/testsuite/gfortran.dg/gomp/allocate-10.f90
  764ec26a5a5268118b6c17514735371a  gcc/testsuite/gfortran.dg/gomp/allocate-11.f90
  8594f381e1344c5f1587ee1f8c22ed77  gcc/testsuite/gfortran.dg/gomp/allocate-12.f90
  a0f40b3f2545e1ffe3ba1eb23a11fa60  gcc/testsuite/gfortran.dg/gomp/allocate-13.f90
--- 116536,116542 ----
  794c06e7ccb0401f5586d816e30cad08  gcc/testsuite/gfortran.dg/gomp/all-memory-3.f90
  5633756a662441452bd869456e985808  gcc/testsuite/gfortran.dg/gomp/allocatable_components_1.f90
  d8f891883879b40925714053d72765b2  gcc/testsuite/gfortran.dg/gomp/allocate-1.f90
! 3655e2bfbc27b6480f578394283a4521  gcc/testsuite/gfortran.dg/gomp/allocate-10.f90
  764ec26a5a5268118b6c17514735371a  gcc/testsuite/gfortran.dg/gomp/allocate-11.f90
  8594f381e1344c5f1587ee1f8c22ed77  gcc/testsuite/gfortran.dg/gomp/allocate-12.f90
  a0f40b3f2545e1ffe3ba1eb23a11fa60  gcc/testsuite/gfortran.dg/gomp/allocate-13.f90
*************** e747f35261c244bfefe1a3b6df142197  gcc/te
*** 116566,116573 ****
  fa862d5202e8a9940ce10e5de251b964  gcc/testsuite/gfortran.dg/gomp/crayptr3.f90
  1c6644a88dc4bee98beb52bb4342fee9  gcc/testsuite/gfortran.dg/gomp/crayptr4.f90
  4a434ccf995f8c325ad483ae77b66d9f  gcc/testsuite/gfortran.dg/gomp/crayptr5.f90
! 2197612966927c70eb9ce973922322b3  gcc/testsuite/gfortran.dg/gomp/declare-mapper-1.f90
  2215d6710672f20b0b578edad96702ef  gcc/testsuite/gfortran.dg/gomp/declare-mapper-2.f90
  f771e918155eed02d90e026b9c163449  gcc/testsuite/gfortran.dg/gomp/declare-simd-1.f90
  57864e06c09c2a6cc2c1d34d921c8d24  gcc/testsuite/gfortran.dg/gomp/declare-simd-2.f90
  2a1d11803d89a25e412300a0b880260f  gcc/testsuite/gfortran.dg/gomp/declare-simd-3.f90
--- 116670,116687 ----
  fa862d5202e8a9940ce10e5de251b964  gcc/testsuite/gfortran.dg/gomp/crayptr3.f90
  1c6644a88dc4bee98beb52bb4342fee9  gcc/testsuite/gfortran.dg/gomp/crayptr4.f90
  4a434ccf995f8c325ad483ae77b66d9f  gcc/testsuite/gfortran.dg/gomp/crayptr5.f90
! 146c344b45cb6a176f1cb019f908e502  gcc/testsuite/gfortran.dg/gomp/declare-mapper-1.f90
  2215d6710672f20b0b578edad96702ef  gcc/testsuite/gfortran.dg/gomp/declare-mapper-2.f90
+ b76d638213237f76eea021418a682081  gcc/testsuite/gfortran.dg/gomp/declare-mapper-3.f90
+ e6125147f284310b6c091565ceb62b95  gcc/testsuite/gfortran.dg/gomp/declare-mapper-31.f90
+ ea0c8f606b40e128514e68c437210991  gcc/testsuite/gfortran.dg/gomp/declare-mapper-4.f90
+ 504c422953056318a81d621175f64178  gcc/testsuite/gfortran.dg/gomp/declare-mapper-5.f90
+ 2fbe08279951fcf4d5378402ec69617f  gcc/testsuite/gfortran.dg/gomp/declare-mapper-6.f90
+ c0f12c2cbdf05de833a7b126bba981ba  gcc/testsuite/gfortran.dg/gomp/declare-mapper-7.f90
+ 64e62b03ab3e24a3a50176ae4cc4d925  gcc/testsuite/gfortran.dg/gomp/declare-reduction-1.f90
+ 8d6c8db1d619ede57ea9b994812619d0  gcc/testsuite/gfortran.dg/gomp/declare-reduction-2.f90
+ 50ccf43b00095b0ac8f7f40d24996595  gcc/testsuite/gfortran.dg/gomp/declare-reduction-3.f90
+ 13ba282a1d1cb06d04c43ebd7e4a4735  gcc/testsuite/gfortran.dg/gomp/declare-reduction-4.f90
  f771e918155eed02d90e026b9c163449  gcc/testsuite/gfortran.dg/gomp/declare-simd-1.f90
  57864e06c09c2a6cc2c1d34d921c8d24  gcc/testsuite/gfortran.dg/gomp/declare-simd-2.f90
  2a1d11803d89a25e412300a0b880260f  gcc/testsuite/gfortran.dg/gomp/declare-simd-3.f90
*************** eb62c90a8f09d99ced7d11fdd2d9ee49  gcc/te
*** 117072,117081 ****
  e3f27671996dac00e345c87ba8a3f791  gcc/testsuite/gfortran.dg/gomp/tile-non-rectangular-3.f90
  87b149e776c19cccef9938aa4dfe72bf  gcc/testsuite/gfortran.dg/gomp/tile-unroll-1.f90
  100fa4f88e99d4b2628209ea7a8175f6  gcc/testsuite/gfortran.dg/gomp/tile-unroll-2.f90
! 86f899863718848e682593290355e6c1  gcc/testsuite/gfortran.dg/gomp/udr1.f90
! 2aa1076458fe27767e8682a018266e21  gcc/testsuite/gfortran.dg/gomp/udr2.f90
  6ddb9641f92715d3a3298771fab84b43  gcc/testsuite/gfortran.dg/gomp/udr3.f90
! 69722424503f758e5d5b5fb26c82af7b  gcc/testsuite/gfortran.dg/gomp/udr4.f90
  85dc0f63e4f8c72af7690c5b3e31232d  gcc/testsuite/gfortran.dg/gomp/udr5.f90
  4be69272338362c6a969ab47082c5fcc  gcc/testsuite/gfortran.dg/gomp/udr6.f90
  186f9bb4f37e50c00e5be84dc3319bb0  gcc/testsuite/gfortran.dg/gomp/udr7.f90
--- 117186,117195 ----
  e3f27671996dac00e345c87ba8a3f791  gcc/testsuite/gfortran.dg/gomp/tile-non-rectangular-3.f90
  87b149e776c19cccef9938aa4dfe72bf  gcc/testsuite/gfortran.dg/gomp/tile-unroll-1.f90
  100fa4f88e99d4b2628209ea7a8175f6  gcc/testsuite/gfortran.dg/gomp/tile-unroll-2.f90
! fb28001239de4cc56491de738193bb3d  gcc/testsuite/gfortran.dg/gomp/udr1.f90
! 6d6a60280162619a24ed1d28aa1eb877  gcc/testsuite/gfortran.dg/gomp/udr2.f90
  6ddb9641f92715d3a3298771fab84b43  gcc/testsuite/gfortran.dg/gomp/udr3.f90
! e1349af3c0c1831ec4f3035a8539679a  gcc/testsuite/gfortran.dg/gomp/udr4.f90
  85dc0f63e4f8c72af7690c5b3e31232d  gcc/testsuite/gfortran.dg/gomp/udr5.f90
  4be69272338362c6a969ab47082c5fcc  gcc/testsuite/gfortran.dg/gomp/udr6.f90
  186f9bb4f37e50c00e5be84dc3319bb0  gcc/testsuite/gfortran.dg/gomp/udr7.f90
*************** c98833fbd70a07ed455392f1eee2388f  gcc/te
*** 117865,117871 ****
  02e331fdf3845fb50165b48043754683  gcc/testsuite/gfortran.dg/io_constraints_5.f90
  1bb296d063e9009214b7e7258a8f5a21  gcc/testsuite/gfortran.dg/io_constraints_6.f03
  8c0a11e945a1452aa18e58cb9f1f52b3  gcc/testsuite/gfortran.dg/io_constraints_7.f03
! 6fabe1bd399f751309a4888691ffcfb1  gcc/testsuite/gfortran.dg/io_constraints_8.f90
  a91ddb7fe4097805065a6b3d245d720f  gcc/testsuite/gfortran.dg/io_constraints_9.f90
  ac78b2fa12300d2c84f3f0ecc1b99410  gcc/testsuite/gfortran.dg/io_err_1.f90
  b970e12e9b81e2fa5708fa8924a00c7d  gcc/testsuite/gfortran.dg/io_invalid_1.f90
--- 117979,117985 ----
  02e331fdf3845fb50165b48043754683  gcc/testsuite/gfortran.dg/io_constraints_5.f90
  1bb296d063e9009214b7e7258a8f5a21  gcc/testsuite/gfortran.dg/io_constraints_6.f03
  8c0a11e945a1452aa18e58cb9f1f52b3  gcc/testsuite/gfortran.dg/io_constraints_7.f03
! bca28a28379b22eed92c533fc5edb4db  gcc/testsuite/gfortran.dg/io_constraints_8.f90
  a91ddb7fe4097805065a6b3d245d720f  gcc/testsuite/gfortran.dg/io_constraints_9.f90
  ac78b2fa12300d2c84f3f0ecc1b99410  gcc/testsuite/gfortran.dg/io_err_1.f90
  b970e12e9b81e2fa5708fa8924a00c7d  gcc/testsuite/gfortran.dg/io_invalid_1.f90
*************** c6039f0e145d8f76bd362c2053b76b3a  gcc/te
*** 117946,117952 ****
  4d1f3dcb2c5b8c84b54b4f771237c3ed  gcc/testsuite/gfortran.dg/label_1.f90
  42f3b3ba2d4378acfb69d1d5a708d707  gcc/testsuite/gfortran.dg/label_2.f90
  5c21638a23021ec31be29f64895144f6  gcc/testsuite/gfortran.dg/label_4.f90
! ae892a009bc504ad4f8820dc7d572645  gcc/testsuite/gfortran.dg/label_5.f90
  f852b9f91d30e73316d460936e5e489e  gcc/testsuite/gfortran.dg/large_integer_kind_1.f90
  afd58315dfe7d7b19dc94f267a1616e1  gcc/testsuite/gfortran.dg/large_integer_kind_2.f90
  2a246abf7b33ea8657b5d40004fcbab9  gcc/testsuite/gfortran.dg/large_real_kind_1.f90
--- 118060,118066 ----
  4d1f3dcb2c5b8c84b54b4f771237c3ed  gcc/testsuite/gfortran.dg/label_1.f90
  42f3b3ba2d4378acfb69d1d5a708d707  gcc/testsuite/gfortran.dg/label_2.f90
  5c21638a23021ec31be29f64895144f6  gcc/testsuite/gfortran.dg/label_4.f90
! 0b2fa4a7a6ac911ab6fc5480d9020553  gcc/testsuite/gfortran.dg/label_5.f90
  f852b9f91d30e73316d460936e5e489e  gcc/testsuite/gfortran.dg/large_integer_kind_1.f90
  afd58315dfe7d7b19dc94f267a1616e1  gcc/testsuite/gfortran.dg/large_integer_kind_2.f90
  2a246abf7b33ea8657b5d40004fcbab9  gcc/testsuite/gfortran.dg/large_real_kind_1.f90
*************** e4885845bf10e9e5ffc3dd22467dfdbe  gcc/te
*** 117964,117970 ****
  3ea87bc1a1467cf1c31f4102e9687a8b  gcc/testsuite/gfortran.dg/leadz_trailz_1.f90
  e1a74d6b2c4042f286e1438d2a3b50bc  gcc/testsuite/gfortran.dg/leadz_trailz_2.f90
  3329f56791c14faaef6977e445b9d78d  gcc/testsuite/gfortran.dg/leadz_trailz_3.f90
! 3792d7ea00efbc39994ab499e79cfd5d  gcc/testsuite/gfortran.dg/len_trim.f90
  603828b585296b52648297f368e12a8a  gcc/testsuite/gfortran.dg/line_length_1.f
  26143a693f879a90318072bf9232f75a  gcc/testsuite/gfortran.dg/line_length_10.f90
  59ffb4fc5411ab6520b7f3c4dd620fc6  gcc/testsuite/gfortran.dg/line_length_11.f90
--- 118078,118084 ----
  3ea87bc1a1467cf1c31f4102e9687a8b  gcc/testsuite/gfortran.dg/leadz_trailz_1.f90
  e1a74d6b2c4042f286e1438d2a3b50bc  gcc/testsuite/gfortran.dg/leadz_trailz_2.f90
  3329f56791c14faaef6977e445b9d78d  gcc/testsuite/gfortran.dg/leadz_trailz_3.f90
! 132ddfaa9332e947600e3e480fe3b242  gcc/testsuite/gfortran.dg/len_trim.f90
  603828b585296b52648297f368e12a8a  gcc/testsuite/gfortran.dg/line_length_1.f
  26143a693f879a90318072bf9232f75a  gcc/testsuite/gfortran.dg/line_length_10.f90
  59ffb4fc5411ab6520b7f3c4dd620fc6  gcc/testsuite/gfortran.dg/line_length_11.f90
*************** d57fac299b3332771a75171d9ddb0a97  gcc/te
*** 117978,117984 ****
  b93fbeb9aa42e25ffdd97d657e8d7072  gcc/testsuite/gfortran.dg/line_length_7.f90
  9de92d784e260c10d48cc5ceca05f671  gcc/testsuite/gfortran.dg/line_length_8.f90
  59a0d5ef3bc76118ac76aad6b5b0c874  gcc/testsuite/gfortran.dg/line_length_9.f90
! 69e27c6d445f499c33052aaf2359d718  gcc/testsuite/gfortran.dg/linefile.f90
  fc437ac99c80ded40e13df8066e49a91  gcc/testsuite/gfortran.dg/linked_list_1.f90
  c65f89e05452bc2ca4c2f396e2d887d8  gcc/testsuite/gfortran.dg/list_directed_large.f90
  f771dbe49f2c11d202f285f81bd5a16a  gcc/testsuite/gfortran.dg/list_read_1.f90
--- 118092,118098 ----
  b93fbeb9aa42e25ffdd97d657e8d7072  gcc/testsuite/gfortran.dg/line_length_7.f90
  9de92d784e260c10d48cc5ceca05f671  gcc/testsuite/gfortran.dg/line_length_8.f90
  59a0d5ef3bc76118ac76aad6b5b0c874  gcc/testsuite/gfortran.dg/line_length_9.f90
! 7be99869c14ae95c39ccb3c9e3159428  gcc/testsuite/gfortran.dg/linefile.f90
  fc437ac99c80ded40e13df8066e49a91  gcc/testsuite/gfortran.dg/linked_list_1.f90
  c65f89e05452bc2ca4c2f396e2d887d8  gcc/testsuite/gfortran.dg/list_directed_large.f90
  f771dbe49f2c11d202f285f81bd5a16a  gcc/testsuite/gfortran.dg/list_read_1.f90
*************** f545f62c1e71dc7bd67638aeeb2db587  gcc/te
*** 118765,118770 ****
--- 118879,118885 ----
  c621629f10feffbfa9fef1441a610e53  gcc/testsuite/gfortran.dg/pdt_9.f03
  d990a49ad7534a4a10800a8a538fa04a  gcc/testsuite/gfortran.dg/pdt_90.f03
  fda16d44f3a45aad8ceeb1e18d56f6f1  gcc/testsuite/gfortran.dg/pdt_91.f03
+ e1d1ddf87714d25d04325d3da865edc6  gcc/testsuite/gfortran.dg/pdt_92.f03
  e9a08468bbfc30d53eb47dd61f7f2bbe  gcc/testsuite/gfortran.dg/pdt_array_alloc_1.f90
  ce217e87870d47796b72f99a0b0f46b7  gcc/testsuite/gfortran.dg/pdt_generic_1.f90
  4555f630cb01a40d0eaf421fd7ad9e77  gcc/testsuite/gfortran.dg/pointer_1.f90
*************** b9b73a57dd48739958a7cf6a364a410d  gcc/te
*** 118802,118808 ****
  367c47d35ec81eb7fd1b80218a9110a1  gcc/testsuite/gfortran.dg/pointer_check_10.f90
  eb194938d2c2fe84d215ede719f501c0  gcc/testsuite/gfortran.dg/pointer_check_11.f90
  4db68e1eec67942dd893a17d7e547d6e  gcc/testsuite/gfortran.dg/pointer_check_12.f90
! ccf9944fa34b0e93e5415a91ad21e966  gcc/testsuite/gfortran.dg/pointer_check_13.f90
  1c6366ef774f50102935b627497ffda0  gcc/testsuite/gfortran.dg/pointer_check_14.f90
  95c3fc2b08b12abf7b0b8eede20fee74  gcc/testsuite/gfortran.dg/pointer_check_15.f90
  7fd59810205e453c2a75b8a7f1ed13b0  gcc/testsuite/gfortran.dg/pointer_check_2.f90
--- 118917,118923 ----
  367c47d35ec81eb7fd1b80218a9110a1  gcc/testsuite/gfortran.dg/pointer_check_10.f90
  eb194938d2c2fe84d215ede719f501c0  gcc/testsuite/gfortran.dg/pointer_check_11.f90
  4db68e1eec67942dd893a17d7e547d6e  gcc/testsuite/gfortran.dg/pointer_check_12.f90
! 157be6b4c9ef01b9926d50296d40a4b9  gcc/testsuite/gfortran.dg/pointer_check_13.f90
  1c6366ef774f50102935b627497ffda0  gcc/testsuite/gfortran.dg/pointer_check_14.f90
  95c3fc2b08b12abf7b0b8eede20fee74  gcc/testsuite/gfortran.dg/pointer_check_15.f90
  7fd59810205e453c2a75b8a7f1ed13b0  gcc/testsuite/gfortran.dg/pointer_check_2.f90
*************** afe21b866be9162c6b654dc6771e6ead  gcc/te
*** 118894,118900 ****
  47ed02e060fe8963c8b302d989d30b44  gcc/testsuite/gfortran.dg/pr102190.f90
  75ccec9005d1d4a2d9ed0cea1bf10434  gcc/testsuite/gfortran.dg/pr102332.f90
  0f742b974936fdac370e3cdae600e6ab  gcc/testsuite/gfortran.dg/pr102333.f90
! 1dd53d463caf1e16e47d0fe9cbf2309f  gcc/testsuite/gfortran.dg/pr102366.f90
  85172103204e3a5e8205c18bba97977a  gcc/testsuite/gfortran.dg/pr102458.f90
  cbd40bc334c217d37c198b1f27373810  gcc/testsuite/gfortran.dg/pr102458b.f90
  44bc627bf6c28a64567fdb75fe688fdc  gcc/testsuite/gfortran.dg/pr102459.f90
--- 119009,119015 ----
  47ed02e060fe8963c8b302d989d30b44  gcc/testsuite/gfortran.dg/pr102190.f90
  75ccec9005d1d4a2d9ed0cea1bf10434  gcc/testsuite/gfortran.dg/pr102332.f90
  0f742b974936fdac370e3cdae600e6ab  gcc/testsuite/gfortran.dg/pr102333.f90
! dc55595e4a1c75561c49e2edc2c1de15  gcc/testsuite/gfortran.dg/pr102366.f90
  85172103204e3a5e8205c18bba97977a  gcc/testsuite/gfortran.dg/pr102458.f90
  cbd40bc334c217d37c198b1f27373810  gcc/testsuite/gfortran.dg/pr102458b.f90
  44bc627bf6c28a64567fdb75fe688fdc  gcc/testsuite/gfortran.dg/pr102459.f90
*************** ab2e9f64b18aaf6df9600288ded6ce51  gcc/te
*** 118917,118923 ****
  f5b2d7909d22359486a362b6e2b6e6d2  gcc/testsuite/gfortran.dg/pr103367.f90
  9e00f34ad9d6d78b98007d4ad68251f5  gcc/testsuite/gfortran.dg/pr103389.f90
  f2ba2e64941d368a0af432859dc114fe  gcc/testsuite/gfortran.dg/pr103471.f90
! 5403c8d36e959e2211ecc4f2a1db6e1c  gcc/testsuite/gfortran.dg/pr103475.f90
  b624133cafd19857eb2915c507731455  gcc/testsuite/gfortran.dg/pr103504.f90
  0ca27f571c157feff083b371f4147538  gcc/testsuite/gfortran.dg/pr103505.f90
  bb48aa0d2e0434d5fff259663b128e23  gcc/testsuite/gfortran.dg/pr103506_1.f90
--- 119032,119038 ----
  f5b2d7909d22359486a362b6e2b6e6d2  gcc/testsuite/gfortran.dg/pr103367.f90
  9e00f34ad9d6d78b98007d4ad68251f5  gcc/testsuite/gfortran.dg/pr103389.f90
  f2ba2e64941d368a0af432859dc114fe  gcc/testsuite/gfortran.dg/pr103471.f90
! 229784fea790d57d4bfbaa9533660ee7  gcc/testsuite/gfortran.dg/pr103475.f90
  b624133cafd19857eb2915c507731455  gcc/testsuite/gfortran.dg/pr103504.f90
  0ca27f571c157feff083b371f4147538  gcc/testsuite/gfortran.dg/pr103505.f90
  bb48aa0d2e0434d5fff259663b128e23  gcc/testsuite/gfortran.dg/pr103506_1.f90
*************** d666d38a87795c7fed48e1b9bc766cf8  gcc/te
*** 119728,119735 ****
  0773165cac6e0831c64c249518bf6e30  gcc/testsuite/gfortran.dg/pr91471.f90
  ad69ec1f0e04791258649d3ead95a16c  gcc/testsuite/gfortran.dg/pr91485.f90
  a06dfc186abc7953f44927364980bc00  gcc/testsuite/gfortran.dg/pr91496.f90
! 11c36b964c1494d37782185533ee04ee  gcc/testsuite/gfortran.dg/pr91497.f90
! 56d56df918c56683b3f5f70cafd9d639  gcc/testsuite/gfortran.dg/pr91497_2.f90
  2a61a5fbe2a82741dc8be0096e201d09  gcc/testsuite/gfortran.dg/pr91552.f90
  799c912a2c22ba463e19cf37460d25da  gcc/testsuite/gfortran.dg/pr91553.f90
  3fa58646b12fa9300bbdda1471d128d5  gcc/testsuite/gfortran.dg/pr91564.f90
--- 119843,119850 ----
  0773165cac6e0831c64c249518bf6e30  gcc/testsuite/gfortran.dg/pr91471.f90
  ad69ec1f0e04791258649d3ead95a16c  gcc/testsuite/gfortran.dg/pr91485.f90
  a06dfc186abc7953f44927364980bc00  gcc/testsuite/gfortran.dg/pr91496.f90
! 6f8724f43af1c06b966760ad56f92458  gcc/testsuite/gfortran.dg/pr91497.f90
! a09759eafc04beaaeb767241ac108e95  gcc/testsuite/gfortran.dg/pr91497_2.f90
  2a61a5fbe2a82741dc8be0096e201d09  gcc/testsuite/gfortran.dg/pr91552.f90
  799c912a2c22ba463e19cf37460d25da  gcc/testsuite/gfortran.dg/pr91553.f90
  3fa58646b12fa9300bbdda1471d128d5  gcc/testsuite/gfortran.dg/pr91564.f90
*************** e6acc3eb976952fc47981d6ab4ed7205  gcc/te
*** 119895,119901 ****
  6ed2b45ec17b4aeb641142e2799cfd89  gcc/testsuite/gfortran.dg/pr96099_2.f90
  43b9b0a65aabf3911bc6a2d49e46f640  gcc/testsuite/gfortran.dg/pr96102.f90
  165309f0cdd46bad264a78bc08662670  gcc/testsuite/gfortran.dg/pr96102b.f90
! 62ba5dd0303d84c214429cc5293a10ed  gcc/testsuite/gfortran.dg/pr96312.f90
  7607f1a87517f55c7ef37367d96d802e  gcc/testsuite/gfortran.dg/pr96319.f90
  d56be000adb4e5f4b724c408cb3ef497  gcc/testsuite/gfortran.dg/pr96325.f90
  2b437bc37acea90dc3acda804ecc8af2  gcc/testsuite/gfortran.dg/pr96436_1.f90
--- 120010,120016 ----
  6ed2b45ec17b4aeb641142e2799cfd89  gcc/testsuite/gfortran.dg/pr96099_2.f90
  43b9b0a65aabf3911bc6a2d49e46f640  gcc/testsuite/gfortran.dg/pr96102.f90
  165309f0cdd46bad264a78bc08662670  gcc/testsuite/gfortran.dg/pr96102b.f90
! e00ea2e74d36ab2f6d2ba74ea56cf1a5  gcc/testsuite/gfortran.dg/pr96312.f90
  7607f1a87517f55c7ef37367d96d802e  gcc/testsuite/gfortran.dg/pr96319.f90
  d56be000adb4e5f4b724c408cb3ef497  gcc/testsuite/gfortran.dg/pr96325.f90
  2b437bc37acea90dc3acda804ecc8af2  gcc/testsuite/gfortran.dg/pr96436_1.f90
*************** a78afb0368bddc411548d63311098918  gcc/te
*** 119927,119933 ****
  7c418d11e1a79fc471909c57b3caef42  gcc/testsuite/gfortran.dg/pr98076.f90
  30379f7e459be0df7dde3d8fe2ad8502  gcc/testsuite/gfortran.dg/pr98284.f90
  baa4aca6702e7508dc07f87b66216ed4  gcc/testsuite/gfortran.dg/pr98408.f90
! 8a48e2264b578c77fe953f48d587af4e  gcc/testsuite/gfortran.dg/pr98411.f90
  661afc7f73f5e470bae7d7efa0a06cbd  gcc/testsuite/gfortran.dg/pr98661.f90
  6f14584e7c3845718818a0eab4f992ff  gcc/testsuite/gfortran.dg/pr98974.F90
  c308feb04384f4d499a6fd6368791b62  gcc/testsuite/gfortran.dg/pr99036.f90
--- 120042,120048 ----
  7c418d11e1a79fc471909c57b3caef42  gcc/testsuite/gfortran.dg/pr98076.f90
  30379f7e459be0df7dde3d8fe2ad8502  gcc/testsuite/gfortran.dg/pr98284.f90
  baa4aca6702e7508dc07f87b66216ed4  gcc/testsuite/gfortran.dg/pr98408.f90
! 27a2a777d48cb8fd8513a904716b563c  gcc/testsuite/gfortran.dg/pr98411.f90
  661afc7f73f5e470bae7d7efa0a06cbd  gcc/testsuite/gfortran.dg/pr98661.f90
  6f14584e7c3845718818a0eab4f992ff  gcc/testsuite/gfortran.dg/pr98974.F90
  c308feb04384f4d499a6fd6368791b62  gcc/testsuite/gfortran.dg/pr99036.f90
*************** fdabd8c65dcb8fb1bfe06c29c937c219  gcc/te
*** 120853,120859 ****
  0d5a3d18a1eeb0de1ca65d86e1cd68f8  gcc/testsuite/gfortran.dg/transfer_check_1.f90
  9a2953b8d7639d3d68a7693a2cb88846  gcc/testsuite/gfortran.dg/transfer_check_2.f90
  b16324a7bb85ab60eb71418a0761e565  gcc/testsuite/gfortran.dg/transfer_check_3.f90
! 1374d10203871ed68c005e2af626fbeb  gcc/testsuite/gfortran.dg/transfer_check_4.f90
  ad625f0340741a09e4be8d42e070139e  gcc/testsuite/gfortran.dg/transfer_check_5.f90
  769481a8d23349d31daa8c1c4bdda73b  gcc/testsuite/gfortran.dg/transfer_check_6.f90
  76406e3436f42466e7735ed9f5762bd7  gcc/testsuite/gfortran.dg/transfer_class_1.f90
--- 120968,120974 ----
  0d5a3d18a1eeb0de1ca65d86e1cd68f8  gcc/testsuite/gfortran.dg/transfer_check_1.f90
  9a2953b8d7639d3d68a7693a2cb88846  gcc/testsuite/gfortran.dg/transfer_check_2.f90
  b16324a7bb85ab60eb71418a0761e565  gcc/testsuite/gfortran.dg/transfer_check_3.f90
! 9820bfb3d78cdfc41e67724552f35eec  gcc/testsuite/gfortran.dg/transfer_check_4.f90
  ad625f0340741a09e4be8d42e070139e  gcc/testsuite/gfortran.dg/transfer_check_5.f90
  769481a8d23349d31daa8c1c4bdda73b  gcc/testsuite/gfortran.dg/transfer_check_6.f90
  76406e3436f42466e7735ed9f5762bd7  gcc/testsuite/gfortran.dg/transfer_class_1.f90
*************** c3ddd813e72b606d44cdfd47616fff95  gcc/te
*** 121427,121432 ****
--- 121542,121553 ----
  be7f18f8b43ef70b7585a74284446e57  gcc/testsuite/gfortran.dg/warn_target_lifetime_3.f90
  2ece2210488f4ed099be674644f83ed0  gcc/testsuite/gfortran.dg/warn_target_lifetime_4.f90
  e9308a20aa0e1201f3b57212461b01a3  gcc/testsuite/gfortran.dg/warn_undefined_1.f90
+ b2d90ce8d289d98767f7cc8b5ac0c821  gcc/testsuite/gfortran.dg/warn_undefined_vars_1.f90
+ cb57540320d67acb41e7efaa7ba125d0  gcc/testsuite/gfortran.dg/warn_undefined_vars_2.f90
+ 56a3a5f8ff51a24ce353221e7324130b  gcc/testsuite/gfortran.dg/warn_undefined_vars_3.f90
+ 15546f4c6b4226c2e0d73ba60c0a5549  gcc/testsuite/gfortran.dg/warn_undefined_vars_4.f90
+ 0018d0733d18a0f47c6da784c3973fb6  gcc/testsuite/gfortran.dg/warn_unused_but_set_1.f90
+ 6a3b31dd7967f719de6ae9da27ef1896  gcc/testsuite/gfortran.dg/warn_unused_but_set_variable_3.f90
  faef1baec47674d096569b4803422d64  gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_1.f90
  9cdfca84c19b8b4bfd5f9be4a921f068  gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_2.f90
  62c8995bb923620e3509b9bd179b618c  gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_3.f90
*************** fa2d697a6cf010eb6e082b1cf14cfb0a  gcc/te
*** 121436,121441 ****
--- 121557,121564 ----
  a889821a76a43cd0bc42032f92d62143  gcc/testsuite/gfortran.dg/warn_unused_function.f90
  c9497af1ed4f39ba98f09ab4c4e7e8d0  gcc/testsuite/gfortran.dg/warn_unused_function_2.f90
  ae95981491a9741922c27b078d9a628c  gcc/testsuite/gfortran.dg/warn_unused_function_3.f90
+ 3e4e1b8a24e475de2f532a9df7dded54  gcc/testsuite/gfortran.dg/warn_unused_intent_out_1.f90
+ 6a41a4c6045eb6b079fc564cc6de3190  gcc/testsuite/gfortran.dg/warn_unused_read_1.f90
  025932868233d92449d247c6dacf72a1  gcc/testsuite/gfortran.dg/warn_unused_var.f90
  505984a29bdb4c6918091f5ecf8088e8  gcc/testsuite/gfortran.dg/warn_unused_var_2.f90
  0b54c46c5e7e67cdd590fd3599d8a929  gcc/testsuite/gfortran.dg/warn_unused_var_3.f90
*************** e2084c3e26e998b327b839228c68f0da  gcc/te
*** 121444,121450 ****
  a45735500c2235050a81488691bd9b83  gcc/testsuite/gfortran.dg/warning-directive-3.F90
  5db1f3c0b7b5ef26930ea7b952a41b80  gcc/testsuite/gfortran.dg/warning-directive-4.F90
  d7e90d5ac1ba80ab977e039c5c23bdf1  gcc/testsuite/gfortran.dg/warnings_are_errors_1.f
! 7f1aaef28181e10129020752d16d1cf4  gcc/testsuite/gfortran.dg/warnings_are_errors_1.f90
  8f632367e477a017a8638d374f10d7fb  gcc/testsuite/gfortran.dg/wdate-time.F90
  c57e0eefcfb3fa80b5dc76f7e0cf2596  gcc/testsuite/gfortran.dg/weak-1.f90
  19491593b49868aa4853566047368a31  gcc/testsuite/gfortran.dg/weak-2.f90
--- 121567,121573 ----
  a45735500c2235050a81488691bd9b83  gcc/testsuite/gfortran.dg/warning-directive-3.F90
  5db1f3c0b7b5ef26930ea7b952a41b80  gcc/testsuite/gfortran.dg/warning-directive-4.F90
  d7e90d5ac1ba80ab977e039c5c23bdf1  gcc/testsuite/gfortran.dg/warnings_are_errors_1.f
! f99a650f87494e7d5eaf05ecc39ef14c  gcc/testsuite/gfortran.dg/warnings_are_errors_1.f90
  8f632367e477a017a8638d374f10d7fb  gcc/testsuite/gfortran.dg/wdate-time.F90
  c57e0eefcfb3fa80b5dc76f7e0cf2596  gcc/testsuite/gfortran.dg/weak-1.f90
  19491593b49868aa4853566047368a31  gcc/testsuite/gfortran.dg/weak-2.f90
*************** d0f41363293cf0ce8de4f15905ffba68  gcc/te
*** 124398,124403 ****
--- 124521,124527 ----
  f1da017e79e481af350005333250268b  gcc/testsuite/gnat.dg/bias2.adb
  aae39b549f5bb7a2b837495c637aaa94  gcc/testsuite/gnat.dg/biased_subtype.adb
  9bbc182ee19d36c4abbd7d6046ac5664  gcc/testsuite/gnat.dg/biased_uc.adb
+ e075dee38216366d67c6249860794304  gcc/testsuite/gnat.dg/bigint1.adb
  faf4a0c852ea85d2eab4ec4413be5fba  gcc/testsuite/gnat.dg/bip_aggregate_bug.adb
  8207ec6dfb08b203e67809b4591cc486  gcc/testsuite/gnat.dg/bip_case_expr.adb
  0dd427e9ad2957343c4c86027593a8a0  gcc/testsuite/gnat.dg/bip_case_expr_pkg.ads
*************** c1c4ffe41bbf76d4a61fec8d9b42486c  gcc/te
*** 128854,128860 ****
  8431129c23f5d17704db309e4c13bc1a  gcc/testsuite/jit.dg/test-builtin-unreachable.c
  af0a18ef8912906bb36ca88219c06667  gcc/testsuite/jit.dg/test-calling-external-function.c
  fcf20b943f3e9affe23adec9277064a7  gcc/testsuite/jit.dg/test-calling-function-ptr.c
! e3bf5c17797aeaea60953345b0ec836b  gcc/testsuite/jit.dg/test-cast.c
  6bfe3202df4a59189a757d8df0af0d9d  gcc/testsuite/jit.dg/test-cold-attribute.c
  dc3f5924516f317d0e822022186a89d9  gcc/testsuite/jit.dg/test-combination.c
  2e035396a65d6176ba9798f667c5621a  gcc/testsuite/jit.dg/test-compile-to-assembler.c
--- 128978,128984 ----
  8431129c23f5d17704db309e4c13bc1a  gcc/testsuite/jit.dg/test-builtin-unreachable.c
  af0a18ef8912906bb36ca88219c06667  gcc/testsuite/jit.dg/test-calling-external-function.c
  fcf20b943f3e9affe23adec9277064a7  gcc/testsuite/jit.dg/test-calling-function-ptr.c
! a7c022c706c188b23540bad48fbc787e  gcc/testsuite/jit.dg/test-cast.c
  6bfe3202df4a59189a757d8df0af0d9d  gcc/testsuite/jit.dg/test-cold-attribute.c
  dc3f5924516f317d0e822022186a89d9  gcc/testsuite/jit.dg/test-combination.c
  2e035396a65d6176ba9798f667c5621a  gcc/testsuite/jit.dg/test-compile-to-assembler.c
*************** af452bfcd099f7ad757c0709565fb6f2  gcc/te
*** 129063,129069 ****
  c0366f2c31a7d5fba486ea04c6f08b9a  gcc/testsuite/lib/go.exp
  569a9bbf0bbca4b3648f90532f4b4b21  gcc/testsuite/lib/htmltest.py
  c0b7997d28c0e4c1e52d9c22fe7612a7  gcc/testsuite/lib/hwasan-dg.exp
! 0004228a966ad4872fadf6b312327a16  gcc/testsuite/lib/lto.exp
  8788f5bd86ca545e5cc667a7883372aa  gcc/testsuite/lib/mike-g++.exp
  3252f65e1ec61c730a6ac983f56b3fd7  gcc/testsuite/lib/mike-gcc.exp
  6cae4002752080c9ace9f60df166aefe  gcc/testsuite/lib/modules.exp
--- 129187,129193 ----
  c0366f2c31a7d5fba486ea04c6f08b9a  gcc/testsuite/lib/go.exp
  569a9bbf0bbca4b3648f90532f4b4b21  gcc/testsuite/lib/htmltest.py
  c0b7997d28c0e4c1e52d9c22fe7612a7  gcc/testsuite/lib/hwasan-dg.exp
! 230d5d8ce82baee9b19dd1681c33940c  gcc/testsuite/lib/lto.exp
  8788f5bd86ca545e5cc667a7883372aa  gcc/testsuite/lib/mike-g++.exp
  3252f65e1ec61c730a6ac983f56b3fd7  gcc/testsuite/lib/mike-gcc.exp
  6cae4002752080c9ace9f60df166aefe  gcc/testsuite/lib/modules.exp
*************** d84a04f02b348b9b24a659413d60a25b  gcc/te
*** 129085,129091 ****
  cdfac88acd33dec95625eb0cca4bc571  gcc/testsuite/lib/sarif-schema-2.1.0.json
  808895f3fef94ae1653cf826a4c6c9de  gcc/testsuite/lib/sarif-schema-2.2-prerelease-2024-08-08.json
  5a6cedce32c4c01005adb940226eae62  gcc/testsuite/lib/sarif.py
! 7ceb6095fbcbf32d237a5fe52953b277  gcc/testsuite/lib/scanasm.exp
  81addbeaa55d8c8d361049d045d21b6e  gcc/testsuite/lib/scandump.exp
  daccee9e5e177dcd385268830f15bd84  gcc/testsuite/lib/scanhtml.exp
  a33ed92a9095d29763dd3ba2493b26d7  gcc/testsuite/lib/scanipa.exp
--- 129209,129215 ----
  cdfac88acd33dec95625eb0cca4bc571  gcc/testsuite/lib/sarif-schema-2.1.0.json
  808895f3fef94ae1653cf826a4c6c9de  gcc/testsuite/lib/sarif-schema-2.2-prerelease-2024-08-08.json
  5a6cedce32c4c01005adb940226eae62  gcc/testsuite/lib/sarif.py
! 1e5b0296ce2a04d178727e103e1feab1  gcc/testsuite/lib/scanasm.exp
  81addbeaa55d8c8d361049d045d21b6e  gcc/testsuite/lib/scandump.exp
  daccee9e5e177dcd385268830f15bd84  gcc/testsuite/lib/scanhtml.exp
  a33ed92a9095d29763dd3ba2493b26d7  gcc/testsuite/lib/scanipa.exp
*************** de9eeadec9703aff96169206e31a3a22  gcc/te
*** 129101,129107 ****
  275f7eb9618e6b097a58c1fba25cdb9c  gcc/testsuite/lib/scanwpaipa.exp
  9bc4cbcf0cb4f1aa30a8cf3142d157eb  gcc/testsuite/lib/target-libpath.exp
  6f6a566231f79b409eb113cf2e7f5132  gcc/testsuite/lib/target-supports-dg.exp
! 19cd4ba3c3ca93751a382a71827defaf  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
--- 129225,129231 ----
  275f7eb9618e6b097a58c1fba25cdb9c  gcc/testsuite/lib/scanwpaipa.exp
  9bc4cbcf0cb4f1aa30a8cf3142d157eb  gcc/testsuite/lib/target-libpath.exp
  6f6a566231f79b409eb113cf2e7f5132  gcc/testsuite/lib/target-supports-dg.exp
! f28884427934d3652667ceffd91a5bb4  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
*************** a4340dde4019e28f9fad54b2a7770c74  gcc/tr
*** 131895,131905 ****
  ed70c897fa5690940494f2b8b6e27f21  gcc/tree-affine.h
  80bb689c790bf8a20a1604f1fb450d2e  gcc/tree-assume.cc
  a0c02d542dbd50cb44704b2ffce2739c  gcc/tree-call-cdce.cc
! 0598cf504b8563c14c4daf96eb3f46af  gcc/tree-cfg.cc
  809e1f07de4be5a3fc990f66bd6d1105  gcc/tree-cfg.h
  930348a0e01a15c999f55d255a5b9f42  gcc/tree-cfgcleanup.cc
  645c34c74323c655a1d20f8f76e64b27  gcc/tree-cfgcleanup.h
! 9e024483d94f1dc1bd27e0830583ba9c  gcc/tree-chrec.cc
  1cf760e3e7aab6f94a5e56897486623d  gcc/tree-chrec.h
  f6230fc0d600174a276b14cbea9f0e37  gcc/tree-complex.cc
  d3ccd3304fc182827fc9b36850d97224  gcc/tree-core.h
--- 132019,132029 ----
  ed70c897fa5690940494f2b8b6e27f21  gcc/tree-affine.h
  80bb689c790bf8a20a1604f1fb450d2e  gcc/tree-assume.cc
  a0c02d542dbd50cb44704b2ffce2739c  gcc/tree-call-cdce.cc
! 7e71a9607cb07b71df80b2c61aa198a8  gcc/tree-cfg.cc
  809e1f07de4be5a3fc990f66bd6d1105  gcc/tree-cfg.h
  930348a0e01a15c999f55d255a5b9f42  gcc/tree-cfgcleanup.cc
  645c34c74323c655a1d20f8f76e64b27  gcc/tree-cfgcleanup.h
! f52407e888b9f0b3706e16b105f0ee56  gcc/tree-chrec.cc
  1cf760e3e7aab6f94a5e56897486623d  gcc/tree-chrec.h
  f6230fc0d600174a276b14cbea9f0e37  gcc/tree-complex.cc
  d3ccd3304fc182827fc9b36850d97224  gcc/tree-core.h
*************** d7c0da59494a51ae966d29f4618b2f9a  gcc/tr
*** 131919,131925 ****
  0cb6286531ef1298c60bd670fe8a1f62  gcc/tree-emutls.cc
  278ef0d1cc8f017ae51affd9a1e110a5  gcc/tree-hash-traits.h
  f8be97e59befb22cc3869e742a095cca  gcc/tree-hasher.h
! e7540c83626e9fb7c743de1a61333c69  gcc/tree-if-conv.cc
  87f110e202a07bb1d7e6402808531851  gcc/tree-if-conv.h
  abcba2a22e072da7c4ef537475cdefef  gcc/tree-inline.cc
  8e4dac1ee5fbcab0629042db2f9ece45  gcc/tree-inline.h
--- 132043,132049 ----
  0cb6286531ef1298c60bd670fe8a1f62  gcc/tree-emutls.cc
  278ef0d1cc8f017ae51affd9a1e110a5  gcc/tree-hash-traits.h
  f8be97e59befb22cc3869e742a095cca  gcc/tree-hasher.h
! cdd5b6e337c42a25898e156aa6966042  gcc/tree-if-conv.cc
  87f110e202a07bb1d7e6402808531851  gcc/tree-if-conv.h
  abcba2a22e072da7c4ef537475cdefef  gcc/tree-inline.cc
  8e4dac1ee5fbcab0629042db2f9ece45  gcc/tree-inline.h
*************** df4e4238b30ad2c7205810ae235106fa  gcc/tr
*** 131967,131973 ****
  ec31925fe8431d27258939fc79f1f02e  gcc/tree-ssa-dom.h
  ec4fb47e62593f549e393a7e359eab42  gcc/tree-ssa-dse.cc
  1df01d660e0f98ade0ae7a3152aa33ed  gcc/tree-ssa-dse.h
! d0662b3aa31805c62a8f334db2fe66d8  gcc/tree-ssa-forwprop.cc
  3e4848e9a46f33eab1b56187075818bb  gcc/tree-ssa-ifcombine.cc
  b1c1f1362ac401ede3373f8aa23c02f1  gcc/tree-ssa-live.cc
  7c36b95c9d109be3302936ceed49fb4f  gcc/tree-ssa-live.h
--- 132091,132097 ----
  ec31925fe8431d27258939fc79f1f02e  gcc/tree-ssa-dom.h
  ec4fb47e62593f549e393a7e359eab42  gcc/tree-ssa-dse.cc
  1df01d660e0f98ade0ae7a3152aa33ed  gcc/tree-ssa-dse.h
! fd1bf671e636cb196f153568d80a7481  gcc/tree-ssa-forwprop.cc
  3e4848e9a46f33eab1b56187075818bb  gcc/tree-ssa-ifcombine.cc
  b1c1f1362ac401ede3373f8aa23c02f1  gcc/tree-ssa-live.cc
  7c36b95c9d109be3302936ceed49fb4f  gcc/tree-ssa-live.h
*************** c1590659dad2b41a69adb7654db65644  gcc/tr
*** 131989,131995 ****
  fa83f982a805985b3a3da2ca5e10e43a  gcc/tree-ssa-math-opts.h
  56d25f9d7a5f35aa3637460c00b7eb7e  gcc/tree-ssa-operands.cc
  f83d0b12185538e6f679296bebfe3d2f  gcc/tree-ssa-operands.h
! 9834fb754f6e147d101caed2a57fc659  gcc/tree-ssa-phiopt.cc
  fe5ca56c2551cb5cbd256cfafdcabecd  gcc/tree-ssa-phiprop.cc
  bc7a10fe1c5522f4d907263e36ac5945  gcc/tree-ssa-pre.cc
  f39acc236b21f9150a1ef4359aef585e  gcc/tree-ssa-propagate.cc
--- 132113,132119 ----
  fa83f982a805985b3a3da2ca5e10e43a  gcc/tree-ssa-math-opts.h
  56d25f9d7a5f35aa3637460c00b7eb7e  gcc/tree-ssa-operands.cc
  f83d0b12185538e6f679296bebfe3d2f  gcc/tree-ssa-operands.h
! 5d46e331259d2d1d4cbae7198810ddc1  gcc/tree-ssa-phiopt.cc
  fe5ca56c2551cb5cbd256cfafdcabecd  gcc/tree-ssa-phiprop.cc
  bc7a10fe1c5522f4d907263e36ac5945  gcc/tree-ssa-pre.cc
  f39acc236b21f9150a1ef4359aef585e  gcc/tree-ssa-propagate.cc
*************** fa20fc0102b6036d5fa58b953c127e15  gcc/tr
*** 132030,132040 ****
  6a0f6268d598b3c59871ad41e01f33c1  gcc/tree-tailcall.cc
  79d28d0d4ca64025fb1a08e9dcbcb5c1  gcc/tree-vect-data-refs.cc
  8d27b93ebf87d8bcc1776ea3342d49c8  gcc/tree-vect-generic.cc
! b23df7453f6fd1a32703ffc42b78d0ec  gcc/tree-vect-loop-manip.cc
! 611eb64702d58ba91622f696b7c3df7c  gcc/tree-vect-loop.cc
! a578c6e238754943f93881eb99ffb11b  gcc/tree-vect-patterns.cc
  4eab6d0f40af2653170a2f7ecf2d6fc1  gcc/tree-vect-slp-patterns.cc
! 6b7806488a0b4885fcd026df4e52e7f3  gcc/tree-vect-slp.cc
  151339ea3bf2b1a62eac3aee470b8353  gcc/tree-vect-stmts.cc
  42032e04f389a2e0f43fbb46ac091dac  gcc/tree-vector-builder.cc
  4a1b4947e64a076fdca46d14aab2181f  gcc/tree-vector-builder.h
--- 132154,132164 ----
  6a0f6268d598b3c59871ad41e01f33c1  gcc/tree-tailcall.cc
  79d28d0d4ca64025fb1a08e9dcbcb5c1  gcc/tree-vect-data-refs.cc
  8d27b93ebf87d8bcc1776ea3342d49c8  gcc/tree-vect-generic.cc
! 5f1348375ddfc2de98732ac2e3b1c8d4  gcc/tree-vect-loop-manip.cc
! 34efe21571a370a41fad659539e4350e  gcc/tree-vect-loop.cc
! 4fae14fe305cc80a323b06b7e7865c05  gcc/tree-vect-patterns.cc
  4eab6d0f40af2653170a2f7ecf2d6fc1  gcc/tree-vect-slp-patterns.cc
! f702e9e693012b61afb43981b59768cb  gcc/tree-vect-slp.cc
  151339ea3bf2b1a62eac3aee470b8353  gcc/tree-vect-stmts.cc
  42032e04f389a2e0f43fbb46ac091dac  gcc/tree-vector-builder.cc
  4a1b4947e64a076fdca46d14aab2181f  gcc/tree-vector-builder.h
*************** a578c6e238754943f93881eb99ffb11b  gcc/tr
*** 132044,132050 ****
  c946b0d59b15393b95e356052c027eed  gcc/tree-vrp.h
  a2af3d8258859a2fe1149b921165f8be  gcc/tree.cc
  f88475a43ca5e7c59112c941875a762c  gcc/tree.def
! c210638e4e3d74f2af292ddbb36f6620  gcc/tree.h
  56652e612288132aa8395fdf720b0146  gcc/treestruct.def
  6c6350469a3dbb37f658f247d16ed872  gcc/tristate.cc
  704359710c2d40a58b6646b2da626443  gcc/tristate.h
--- 132168,132174 ----
  c946b0d59b15393b95e356052c027eed  gcc/tree-vrp.h
  a2af3d8258859a2fe1149b921165f8be  gcc/tree.cc
  f88475a43ca5e7c59112c941875a762c  gcc/tree.def
! c3a5eefdeb05d9c92fae24654ea30d47  gcc/tree.h
  56652e612288132aa8395fdf720b0146  gcc/treestruct.def
  6c6350469a3dbb37f658f247d16ed872  gcc/tristate.cc
  704359710c2d40a58b6646b2da626443  gcc/tristate.h
*************** e904de1854afc7cd34a51dc8be49131d  gcc/va
*** 132067,132074 ****
  c559980f2936e62bb80a512b1682d0fd  gcc/value-query.h
  232e88bef5fe263fb56ac139fedbeff7  gcc/value-range-pretty-print.cc
  4235b252ca8759d55215ee9cd42e1e93  gcc/value-range-pretty-print.h
! c52feacf8aa8466aace1377dc368a67c  gcc/value-range-storage.cc
! e65249df44ee10434babf84d1f108509  gcc/value-range-storage.h
  09177461b21100d1fe07b2a443b95f3d  gcc/value-range.cc
  407468c3950969dc8f1856a1d2cdd96e  gcc/value-range.h
  67666161e57e5be58fba9c1c031067b0  gcc/value-relation.cc
--- 132191,132198 ----
  c559980f2936e62bb80a512b1682d0fd  gcc/value-query.h
  232e88bef5fe263fb56ac139fedbeff7  gcc/value-range-pretty-print.cc
  4235b252ca8759d55215ee9cd42e1e93  gcc/value-range-pretty-print.h
! 7f5f741babee3f0d5e0344389149c759  gcc/value-range-storage.cc
! cb3570b7fb5f57093c5af7b1bf695f46  gcc/value-range-storage.h
  09177461b21100d1fe07b2a443b95f3d  gcc/value-range.cc
  407468c3950969dc8f1856a1d2cdd96e  gcc/value-range.h
  67666161e57e5be58fba9c1c031067b0  gcc/value-relation.cc
*************** c4e8176c1964a5ebe0a55900f2141299  gotool
*** 132114,132120 ****
  eb2aeb3a6cffe7b26a8f1c8a2da23dcd  gotools/gofmt.1
  59530bdf33659b29e73d4adb9f9f6552  include/COPYING
  d32239bcb673463ab874e80d47fae504  include/COPYING3
! e0ce1a3bc1e478e3581ba85a982f0940  include/ChangeLog
  4263432a72ff47ed8bf420208ee7eea5  include/ChangeLog-9103
  a43d76108493b20da790f953f829c6a5  include/ChangeLog.jit
  e4fcea241d25fd2866c6026dcccbe5bd  include/ansidecl.h
--- 132238,132244 ----
  eb2aeb3a6cffe7b26a8f1c8a2da23dcd  gotools/gofmt.1
  59530bdf33659b29e73d4adb9f9f6552  include/COPYING
  d32239bcb673463ab874e80d47fae504  include/COPYING3
! 95043aaff591525d3746625123ca5a4c  include/ChangeLog
  4263432a72ff47ed8bf420208ee7eea5  include/ChangeLog-9103
  a43d76108493b20da790f953f829c6a5  include/ChangeLog.jit
  e4fcea241d25fd2866c6026dcccbe5bd  include/ansidecl.h
*************** e10a926ac9146a394aa47259c571ac55  includ
*** 132147,132153 ****
  0766533c1949ff4fe987a4af50cdb32c  include/leb128.h
  ce863ca5e88324199af7ad39073c7d6e  include/libcollector.h
  80b25a2bff9d15ed6c56f74217f80b76  include/libfcollector.h
! 200a8543a7ba0462f177c998500a89f8  include/libiberty.h
  391344aea4266b85c740160777e9a5bf  include/longlong.h
  8dd60990ec321da0aa8c2a632444a5e3  include/lto-symtab.h
  f37c151c683fedf084760b845e6fa266  include/md5.h
--- 132271,132277 ----
  0766533c1949ff4fe987a4af50cdb32c  include/leb128.h
  ce863ca5e88324199af7ad39073c7d6e  include/libcollector.h
  80b25a2bff9d15ed6c56f74217f80b76  include/libfcollector.h
! 6d60421c26484fd68b2fabcfc4f72b40  include/libiberty.h
  391344aea4266b85c740160777e9a5bf  include/longlong.h
  8dd60990ec321da0aa8c2a632444a5e3  include/lto-symtab.h
  f37c151c683fedf084760b845e6fa266  include/md5.h
*************** a5730f5ab9435bb5d8446830fe8f3706  libcpp
*** 132398,132404 ****
  6c27e4af6058e741469234cdf0f74c01  libcpp/include/mkdeps.h
  0c5086e2180aacc727c73843682f1fe9  libcpp/include/rich-location.h
  1e65760d4159f777cf02dedef8a52357  libcpp/include/symtab.h
! 5a44adf11235c72de2f0c0e89db76903  libcpp/init.cc
  ca76f744b252e5faf236d92d56037649  libcpp/internal.h
  cda6f5ee4a4fce0e35c8343e245f515d  libcpp/lex.cc
  6ebf32a89523ee7be621fc42417f913f  libcpp/line-map.cc
--- 132522,132528 ----
  6c27e4af6058e741469234cdf0f74c01  libcpp/include/mkdeps.h
  0c5086e2180aacc727c73843682f1fe9  libcpp/include/rich-location.h
  1e65760d4159f777cf02dedef8a52357  libcpp/include/symtab.h
! 90f6090ff30a4f51d68181db14195e5d  libcpp/init.cc
  ca76f744b252e5faf236d92d56037649  libcpp/internal.h
  cda6f5ee4a4fce0e35c8343e245f515d  libcpp/lex.cc
  6ebf32a89523ee7be621fc42417f913f  libcpp/line-map.cc
*************** cda6f5ee4a4fce0e35c8343e245f515d  libcpp
*** 132406,132412 ****
  e7aac78ea4aceda46419845a92c76995  libcpp/macro.cc
  d26583cbbddfb0c82d15d845129a84da  libcpp/makeucnid.cc
  513bef3dd142eee93a5ab0328c142287  libcpp/makeuname2c.cc
! 41062cc2160022988a21f2594a674c19  libcpp/mkdeps.cc
  a7f5b54d144fd860606986c00f6a78e9  libcpp/pch.cc
  ffd19fa095ecb84d570b14aa80358c6d  libcpp/po/ChangeLog
  dad91056edfeea82b8282e6f9a27188e  libcpp/po/be.po
--- 132530,132536 ----
  e7aac78ea4aceda46419845a92c76995  libcpp/macro.cc
  d26583cbbddfb0c82d15d845129a84da  libcpp/makeucnid.cc
  513bef3dd142eee93a5ab0328c142287  libcpp/makeuname2c.cc
! 3f87038f1bbb2b2b7bf7ae3cb8264edc  libcpp/mkdeps.cc
  a7f5b54d144fd860606986c00f6a78e9  libcpp/pch.cc
  ffd19fa095ecb84d570b14aa80358c6d  libcpp/po/ChangeLog
  dad91056edfeea82b8282e6f9a27188e  libcpp/po/be.po
*************** fc49680d0c6e77e437523ea496a6b8c4  libga6
*** 132962,132970 ****
  095aff369c31681c96b933fbedd8e05f  libga68/posix.a68
  b0d017b83148520411f1c1ebdbf28b58  libga68/sppp.awk
  4ad0dcaa2eb0b81efb58d47400b0933d  libga68/standard.a68.in
! 77424d43eca68699be497588a442423b  libgcc/ChangeLog
  9ce0b8c50fec68eb0555ae800e4e457e  libgcc/Makefile.in
! 9bebe7e0d6cbbeda9b0b588a1ab371eb  libgcc/config.host
  46412830a2ee8a02503ccc921912c3cf  libgcc/config.in
  453dd2d1f5f7e9b0683ae1c960ef7eac  libgcc/config/aarch64/__aarch64_have_sme.c
  aee2000eefb98b188a6cd051fd4e1e72  libgcc/config/aarch64/__arm_get_current_vg.S
--- 133086,133094 ----
  095aff369c31681c96b933fbedd8e05f  libga68/posix.a68
  b0d017b83148520411f1c1ebdbf28b58  libga68/sppp.awk
  4ad0dcaa2eb0b81efb58d47400b0933d  libga68/standard.a68.in
! 26c54577fc56499da8c96dc21d81d4a5  libgcc/ChangeLog
  9ce0b8c50fec68eb0555ae800e4e457e  libgcc/Makefile.in
! 229424d0e39b7ca6486e3f691d3d6c91  libgcc/config.host
  46412830a2ee8a02503ccc921912c3cf  libgcc/config.in
  453dd2d1f5f7e9b0683ae1c960ef7eac  libgcc/config/aarch64/__aarch64_have_sme.c
  aee2000eefb98b188a6cd051fd4e1e72  libgcc/config/aarch64/__arm_get_current_vg.S
*************** dad7fcdc3017bd6d379a2a8cffddfbb5  libgcc
*** 133104,133130 ****
  a2cbfeed5ac41bd10f73aa701e9ac26d  libgcc/config/arm/unwind-arm-vxworks.c
  2afcadf0f0c3f05077a78caa5a26af99  libgcc/config/arm/unwind-arm.c
  d1bc698652ed847a9a315e51f8dfecc1  libgcc/config/arm/unwind-arm.h
  16da8ddeeb0393a8a09e4b1d871d728a  libgcc/config/avr/avr-lib.h
! 6b49ee82e3034a8630645152233c515a  libgcc/config/avr/lib1funcs-fixed.S
! f55306289bae5967429b6d421c1be6dd  libgcc/config/avr/lib1funcs.S
  622f81485f02d0eac2caaafa7d3a2fd1  libgcc/config/avr/lib2-object.mk
  c7a08febc167bf9a84c28593ca627617  libgcc/config/avr/lib2funcs.c
! 74b2d5b16733a9f1553eeef4cbe5fc24  libgcc/config/avr/libf7/ChangeLog
! 5189f35739cd9793235e4b49d740e6ed  libgcc/config/avr/libf7/asm-defs.h
! bd9ea3adc1ea81e3d0d05dc1b9999851  libgcc/config/avr/libf7/f7-renames.h
  92bbb0397c760b4e93af191f49964ad4  libgcc/config/avr/libf7/f7-wraps.h
  b9901623ec29c1c4dd98d6fae040518c  libgcc/config/avr/libf7/f7renames.sh
  d250706c46cb1217dd828894cbba2d45  libgcc/config/avr/libf7/f7wraps.sh
  21c3bae3e2a940175ece1853b7992808  libgcc/config/avr/libf7/libf7-array.def
  5d9def53110ec07e8f29e66d593d758f  libgcc/config/avr/libf7/libf7-asm-object.mk
! 4e2259b9e784a58751c817b192038828  libgcc/config/avr/libf7/libf7-asm.sx
  6b4886ae302fca1fa733831066c5c830  libgcc/config/avr/libf7/libf7-c-object.mk
! 021ea561bcc2bc07286c89e312af685b  libgcc/config/avr/libf7/libf7-common.mk
  92d858f8a00be9163a745497796e81c2  libgcc/config/avr/libf7/libf7-const.def
  b73226e862ca01a6b2bdefee583d73ab  libgcc/config/avr/libf7/libf7-constdef.h
! 78c61f6dc6ced062722d460aee5f935c  libgcc/config/avr/libf7/libf7.c
  3e4fb67c778390ccd964ce9b3b53ed69  libgcc/config/avr/libf7/libf7.h
! 2921a86fef727ada45668b8c0f091e33  libgcc/config/avr/libf7/t-libf7
  bf9360cfc14e0b0129af5560893f374e  libgcc/config/avr/libf7/t-libf7-math
  761826027ebb1cfbb089d23904494606  libgcc/config/avr/libf7/t-libf7-math-symbols
  bafae17b5d2413fa5abeb0be76fd62ca  libgcc/config/avr/t-avr
--- 133228,133255 ----
  a2cbfeed5ac41bd10f73aa701e9ac26d  libgcc/config/arm/unwind-arm-vxworks.c
  2afcadf0f0c3f05077a78caa5a26af99  libgcc/config/arm/unwind-arm.c
  d1bc698652ed847a9a315e51f8dfecc1  libgcc/config/arm/unwind-arm.h
+ 6406279037feb4c63865032dbce26084  libgcc/config/avr/asm-defs.h
  16da8ddeeb0393a8a09e4b1d871d728a  libgcc/config/avr/avr-lib.h
! 474ae851b65fdeeac669ca5fe93e1fd0  libgcc/config/avr/lib1funcs-fixed.S
! 95293e26c6315a1abbf95359c6410a1f  libgcc/config/avr/lib1funcs.S
  622f81485f02d0eac2caaafa7d3a2fd1  libgcc/config/avr/lib2-object.mk
  c7a08febc167bf9a84c28593ca627617  libgcc/config/avr/lib2funcs.c
! 917132c185ae7bd80d7b1f0373ff05ea  libgcc/config/avr/libf7/ChangeLog
! 1b3a595323fbea22cd1737fc614cc808  libgcc/config/avr/libf7/asm-defs.h
! 7f7d24ba47e5a6cfeaf669beb81a0cc2  libgcc/config/avr/libf7/f7-renames.h
  92bbb0397c760b4e93af191f49964ad4  libgcc/config/avr/libf7/f7-wraps.h
  b9901623ec29c1c4dd98d6fae040518c  libgcc/config/avr/libf7/f7renames.sh
  d250706c46cb1217dd828894cbba2d45  libgcc/config/avr/libf7/f7wraps.sh
  21c3bae3e2a940175ece1853b7992808  libgcc/config/avr/libf7/libf7-array.def
  5d9def53110ec07e8f29e66d593d758f  libgcc/config/avr/libf7/libf7-asm-object.mk
! 5b6f6e10e876f49c1fc876fb5290e0e2  libgcc/config/avr/libf7/libf7-asm.sx
  6b4886ae302fca1fa733831066c5c830  libgcc/config/avr/libf7/libf7-c-object.mk
! 7b524c1023cb08a1135fc21df268afcc  libgcc/config/avr/libf7/libf7-common.mk
  92d858f8a00be9163a745497796e81c2  libgcc/config/avr/libf7/libf7-const.def
  b73226e862ca01a6b2bdefee583d73ab  libgcc/config/avr/libf7/libf7-constdef.h
! be449ccdab4a3bf3121e80796fdb35fd  libgcc/config/avr/libf7/libf7.c
  3e4fb67c778390ccd964ce9b3b53ed69  libgcc/config/avr/libf7/libf7.h
! cff4e2f6d44bbaf9153db20731b2f659  libgcc/config/avr/libf7/t-libf7
  bf9360cfc14e0b0129af5560893f374e  libgcc/config/avr/libf7/t-libf7-math
  761826027ebb1cfbb089d23904494606  libgcc/config/avr/libf7/t-libf7-math-symbols
  bafae17b5d2413fa5abeb0be76fd62ca  libgcc/config/avr/t-avr
*************** ef74fd63202d842bfe7120864186128c  libgcc
*** 133618,133623 ****
--- 133743,133749 ----
  6fb1bd6c61eb074b4e006e0a355751bb  libgcc/config/microblaze/crtn.S
  428ae7322663562f4b5d110c906ab8cf  libgcc/config/microblaze/divsi3.S
  92819b96fc94be1d22fee6e049f8bf50  libgcc/config/microblaze/divsi3_table.c
+ 6a42da17fe0aa00bc498948eeec6d616  libgcc/config/microblaze/linux-unwind.h
  c5ad57c021373a85cc3f32946d140d23  libgcc/config/microblaze/moddi3.S
  06900d0735d411c82a00bd31c96ea484  libgcc/config/microblaze/modsi3.S
  95652262bac1a0e085ce27e8c4e67b6d  libgcc/config/microblaze/muldi3_hard.S
*************** b7bdc64c03d62f87f61d3d8a61a75d2d  libgcc
*** 134538,134544 ****
  227525d7193394128a83ce15e7642842  libgcc/vtv_start.c
  23ad2a8d256ba5dca28382d64a20e8f2  libgcc/vtv_start_preinit.c
  e50c29294062dfe571c9c053a8ec217b  libgcobol/.gitignore
! 6238409211ab7c161e8cf7dfbd735542  libgcobol/ChangeLog
  bec1e79fc8ada70ed4ac3dc61a33d576  libgcobol/LICENSE
  8b9a5263fc79d367bdafa609a2ac1363  libgcobol/Makefile.am
  d97f1f2b9efb3a8fa8c9db9a04ea78db  libgcobol/Makefile.in
--- 134664,134670 ----
  227525d7193394128a83ce15e7642842  libgcc/vtv_start.c
  23ad2a8d256ba5dca28382d64a20e8f2  libgcc/vtv_start_preinit.c
  e50c29294062dfe571c9c053a8ec217b  libgcobol/.gitignore
! d1c0fc46b931c1d5054f3890bf17600b  libgcobol/ChangeLog
  bec1e79fc8ada70ed4ac3dc61a33d576  libgcobol/LICENSE
  8b9a5263fc79d367bdafa609a2ac1363  libgcobol/Makefile.am
  d97f1f2b9efb3a8fa8c9db9a04ea78db  libgcobol/Makefile.in
*************** a5821ed24abf64b452f15f29da418d17  libgco
*** 134589,134599 ****
  52ddae301eb6ab2f0f4944d7f404ad54  libgcobol/gmath.cc
  484b264b1c8d844ef5989f4d7075f520  libgcobol/gmath.h
  c8404659b04d33ae6f2fbfbe89c15080  libgcobol/inspect.cc
! bc1b52a5390d523e26592951a76f5eb6  libgcobol/intrinsic.cc
  16dfd5dc1d9f83d11546c8d442151225  libgcobol/io.cc
  fbd32f035f7b4e73896b3d489e50e747  libgcobol/io.h
  6fa2e26d11c71898dae520939b992484  libgcobol/libgcobol-fp.h
! ff145bf44a3bf9d030f0cacc67c937e3  libgcobol/libgcobol.cc
  b484db78f4117c923c0753a07ea73ea0  libgcobol/libgcobol.h
  469e0f6e21e357ff8b53b9d17373a6c8  libgcobol/libgcobol.spec.in
  88c1134ff3ee63c326541ce3f35f6699  libgcobol/m4/autoconf.m4
--- 134715,134725 ----
  52ddae301eb6ab2f0f4944d7f404ad54  libgcobol/gmath.cc
  484b264b1c8d844ef5989f4d7075f520  libgcobol/gmath.h
  c8404659b04d33ae6f2fbfbe89c15080  libgcobol/inspect.cc
! 8e756bd6d6fe25a0f758f96daa9d31e2  libgcobol/intrinsic.cc
  16dfd5dc1d9f83d11546c8d442151225  libgcobol/io.cc
  fbd32f035f7b4e73896b3d489e50e747  libgcobol/io.h
  6fa2e26d11c71898dae520939b992484  libgcobol/libgcobol-fp.h
! 9769b7edba6eb55c45103e24398a7269  libgcobol/libgcobol.cc
  b484db78f4117c923c0753a07ea73ea0  libgcobol/libgcobol.h
  469e0f6e21e357ff8b53b9d17373a6c8  libgcobol/libgcobol.spec.in
  88c1134ff3ee63c326541ce3f35f6699  libgcobol/m4/autoconf.m4
*************** df0869fbdcd7a132ac266d2b365bf481  libgco
*** 134652,134658 ****
  d77d00934ab6b213d8c526ae0673969c  libgcobol/valconv.cc
  3466db9e6fc5748c08c947e71a566c07  libgcobol/valconv.h
  8485adf73f6988a83d317bb42594aa15  libgcobol/xmlparse.cc
! 8e53da947506961bbf6dfc5402ed113a  libgfortran/ChangeLog
  d99469a76bfe825683f8d94fe07b508c  libgfortran/ChangeLog-2002
  522fdb2df6cefe6bcaed3c7c7311eae1  libgfortran/ChangeLog-2003
  5a3a93e76d878d063aba66079340cfe0  libgfortran/ChangeLog-2004
--- 134778,134784 ----
  d77d00934ab6b213d8c526ae0673969c  libgcobol/valconv.cc
  3466db9e6fc5748c08c947e71a566c07  libgcobol/valconv.h
  8485adf73f6988a83d317bb42594aa15  libgcobol/xmlparse.cc
! f68052a5a3969f34da35d08cce05dbe1  libgfortran/ChangeLog
  d99469a76bfe825683f8d94fe07b508c  libgfortran/ChangeLog-2002
  522fdb2df6cefe6bcaed3c7c7311eae1  libgfortran/ChangeLog-2003
  5a3a93e76d878d063aba66079340cfe0  libgfortran/ChangeLog-2004
*************** dd12c9337c5b8da315083627d633c703  libgfo
*** 135593,135605 ****
  73d01474fc7e12ff7cd21c2c920a6638  libgfortran/io/format.h
  3d6bdfad19038c8e5794b4f1d39dc010  libgfortran/io/inquire.c
  86f78d0a8d7fd3418de9e9f9a1cb384f  libgfortran/io/intrinsics.c
! 44d847baa8fb2279e10d8b6c68984a54  libgfortran/io/io.h
  ea635852033817b89d7cc5fa4cee5183  libgfortran/io/list_read.c
  908721400434528de210b0cbef37f603  libgfortran/io/lock.c
  601d86fd12148a4342e1ca9c4905714d  libgfortran/io/open.c
! 15fa25bbc2ea09df80ad7037e0c28b75  libgfortran/io/read.c
  4d71c600a702cb37b041c18304734191  libgfortran/io/size_from_kind.c
! b10b38c0dd2774074481be3e901c589f  libgfortran/io/transfer.c
  be377468666649cbd953626596944272  libgfortran/io/transfer128.c
  6cf3fdea6474d249cc6fe641cb6a7629  libgfortran/io/unit.c
  f10c0db103b5f89684041aff43553d3d  libgfortran/io/unix.c
--- 135719,135731 ----
  73d01474fc7e12ff7cd21c2c920a6638  libgfortran/io/format.h
  3d6bdfad19038c8e5794b4f1d39dc010  libgfortran/io/inquire.c
  86f78d0a8d7fd3418de9e9f9a1cb384f  libgfortran/io/intrinsics.c
! 951a0fb44143778514eae26164fc62b0  libgfortran/io/io.h
  ea635852033817b89d7cc5fa4cee5183  libgfortran/io/list_read.c
  908721400434528de210b0cbef37f603  libgfortran/io/lock.c
  601d86fd12148a4342e1ca9c4905714d  libgfortran/io/open.c
! 33bad6f40ed7c20e9562f82b2f8387c3  libgfortran/io/read.c
  4d71c600a702cb37b041c18304734191  libgfortran/io/size_from_kind.c
! 2a6fb1240d41a9af5b25cadab728f411  libgfortran/io/transfer.c
  be377468666649cbd953626596944272  libgfortran/io/transfer128.c
  6cf3fdea6474d249cc6fe641cb6a7629  libgfortran/io/unit.c
  f10c0db103b5f89684041aff43553d3d  libgfortran/io/unix.c
*************** fde11348d3f1f27d7e48fd646db7c9b0  libgfo
*** 135678,135686 ****
  7199dcf2f2007668709669352e41a412  libgfortran/m4/sum.m4
  0ad0318f00c85db29d184dc3dff12276  libgfortran/m4/types.m4
  3f1c3afb70cbd5c1c5360f204f0b50e2  libgfortran/m4/unpack.m4
! 675f622f58b01feec2abd5d72f18b022  libgfortran/mk-kinds-h.sh
! 5cacd438c86553689eda2ce3d5623b45  libgfortran/mk-sik-inc.sh
! f8813ac773f6f6eb0ea6ecb287fb9250  libgfortran/mk-srk-inc.sh
  33a9784a89eb486aeaccd86810bc24d5  libgfortran/regenerate.sh
  ea7b4bf0cda5461db9962f299a34e2b0  libgfortran/runtime/ISO_Fortran_binding.c
  c6035b47db77b3f977df17538531d59d  libgfortran/runtime/backtrace.c
--- 135804,135812 ----
  7199dcf2f2007668709669352e41a412  libgfortran/m4/sum.m4
  0ad0318f00c85db29d184dc3dff12276  libgfortran/m4/types.m4
  3f1c3afb70cbd5c1c5360f204f0b50e2  libgfortran/m4/unpack.m4
! 95307b8026fc282871e718053f65600e  libgfortran/mk-kinds-h.sh
! 7cb2a41473884b3013feb98e801d9644  libgfortran/mk-sik-inc.sh
! 68a14f48ca9e3980480068d4b051d32a  libgfortran/mk-srk-inc.sh
  33a9784a89eb486aeaccd86810bc24d5  libgfortran/regenerate.sh
  ea7b4bf0cda5461db9962f299a34e2b0  libgfortran/runtime/ISO_Fortran_binding.c
  c6035b47db77b3f977df17538531d59d  libgfortran/runtime/backtrace.c
*************** a3a7e9ca6057da9ca42e03e41e1c73f7  libgo/
*** 141240,141249 ****
  dcdf1b680b15b372bdb64cc5107d51b6  libgo/testsuite/libgo-test-support.exp.in
  bf162aa572f7b96b25dbd2b027845d32  libgo/testsuite/libgo.testmain/testmain.exp
  cc9d2a0e34e31ba866a8caf9f46f48f3  libgomp/.gitattributes
! dbe81cb89e3ace7a158b497b80122016  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
  714e3b9c0810a61df01246c2a97e825a  libgomp/Makefile.am
! 3d8bbdea66244a10e715c52717f8a88a  libgomp/Makefile.in
  7f1d00b196788c5e20ac3392affbc699  libgomp/acc_prof.h
  5e63b3cd1246f4c73a49880cad1844ee  libgomp/acinclude.m4
  5a46efd6e18e24c37640f51369238fe4  libgomp/aclocal.m4
--- 141366,141375 ----
  dcdf1b680b15b372bdb64cc5107d51b6  libgo/testsuite/libgo-test-support.exp.in
  bf162aa572f7b96b25dbd2b027845d32  libgo/testsuite/libgo.testmain/testmain.exp
  cc9d2a0e34e31ba866a8caf9f46f48f3  libgomp/.gitattributes
! c46b2da3f12e57724bbcf57f374dbbcd  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
  714e3b9c0810a61df01246c2a97e825a  libgomp/Makefile.am
! 6687ddf350c549b16e165de0211f0471  libgomp/Makefile.in
  7f1d00b196788c5e20ac3392affbc699  libgomp/acc_prof.h
  5e63b3cd1246f4c73a49880cad1844ee  libgomp/acinclude.m4
  5a46efd6e18e24c37640f51369238fe4  libgomp/aclocal.m4
*************** c0f4bc26ad28bb0712bebfcae4c6a978  libgom
*** 141296,141302 ****
  de27fe416c22021c880c3ef4d002aa91  libgomp/config/gcn/time.c
  7bff56f23fd667518b0ce11825f3a66b  libgomp/config/hpux/plugin-suffix.h
  7a0a6a6d5cb567d0de762d9dbe76d9be  libgomp/config/linux/affinity.c
! ed634980a8308c651a6d3ccc9f9dcbcb  libgomp/config/linux/allocator.c
  29d574ec8d851693d9b472f7519c22d9  libgomp/config/linux/alpha/futex.h
  2a9f66d6adadccefb7a7d88d5445f143  libgomp/config/linux/bar.c
  8cd25856009cd00dedcd63b7e6e6d8b1  libgomp/config/linux/bar.h
--- 141422,141428 ----
  de27fe416c22021c880c3ef4d002aa91  libgomp/config/gcn/time.c
  7bff56f23fd667518b0ce11825f3a66b  libgomp/config/hpux/plugin-suffix.h
  7a0a6a6d5cb567d0de762d9dbe76d9be  libgomp/config/linux/affinity.c
! d77d4ae9962036bcecc3a3ba0cc10040  libgomp/config/linux/allocator.c
  29d574ec8d851693d9b472f7519c22d9  libgomp/config/linux/alpha/futex.h
  2a9f66d6adadccefb7a7d88d5445f143  libgomp/config/linux/bar.c
  8cd25856009cd00dedcd63b7e6e6d8b1  libgomp/config/linux/bar.h
*************** efc434763cbe71b67359f1858f6c9480  libgom
*** 141369,141375 ****
  af41d1d04a4112345554ca8b8a072ed9  libgomp/config/t-aix
  e24fbe0295408a451cb420526533051f  libgomp/configure
  907661a423c189b9a0caa0cf988acbce  libgomp/configure.ac
! 0eb9aa41c92e30c6fb1494575b1c8daa  libgomp/configure.tgt
  32ee987623cb1d4e924d40431df6168d  libgomp/critical.c
  58467d214066591e724f1370bfeb505a  libgomp/env.c
  93acc4d17ce91729e01212d518bafca0  libgomp/error.c
--- 141495,141501 ----
  af41d1d04a4112345554ca8b8a072ed9  libgomp/config/t-aix
  e24fbe0295408a451cb420526533051f  libgomp/configure
  907661a423c189b9a0caa0cf988acbce  libgomp/configure.ac
! 930b51fbaf703b3ba35215a18e3e0464  libgomp/configure.tgt
  32ee987623cb1d4e924d40431df6168d  libgomp/critical.c
  58467d214066591e724f1370bfeb505a  libgomp/env.c
  93acc4d17ce91729e01212d518bafca0  libgomp/error.c
*************** de76d04e58d67cc06f800530fdcc9839  libgom
*** 141384,141390 ****
  a5e03c4cc9129e015eaa866404421cb4  libgomp/libgomp.h
  43269ed7f389c468d89e33445e5d1e0f  libgomp/libgomp.map
  8b2aa50aecad82171348a6918309afd6  libgomp/libgomp.spec.in
! e8c6da4786f07a9ca1975943c21f836a  libgomp/libgomp.texi
  1d54928ce4032885323fb921fd1df788  libgomp/libgomp_f.h.in
  ff283838501e7dccd0306ec2feeb4452  libgomp/libgomp_g.h
  26474764313104462f3252f8ce962c10  libgomp/lock.c
--- 141510,141516 ----
  a5e03c4cc9129e015eaa866404421cb4  libgomp/libgomp.h
  43269ed7f389c468d89e33445e5d1e0f  libgomp/libgomp.map
  8b2aa50aecad82171348a6918309afd6  libgomp/libgomp.spec.in
! a70f9743dfa45a0b0828c8d4a2ca9b50  libgomp/libgomp.texi
  1d54928ce4032885323fb921fd1df788  libgomp/libgomp_f.h.in
  ff283838501e7dccd0306ec2feeb4452  libgomp/libgomp_g.h
  26474764313104462f3252f8ce962c10  libgomp/lock.c
*************** ccc59a273af5bb87bc4287e838131e91  libgom
*** 141409,141420 ****
  499db3818012abc0c973cf7887ad887b  libgomp/openacc_lib.h
  da2ae01cd3ee1b82927ed89b489413c4  libgomp/ordered.c
  9175c3aaac7a44bd118f7fb462894ff7  libgomp/parallel.c
! b5ab0a7e2cd4752de8579e6704a905f9  libgomp/plugin/Makefrag.am
  1b94d027e28b8b7e6f38e326d8412459  libgomp/plugin/build-target-indirect-htab.h
  fab10af27c836c7b90303245f3965cb8  libgomp/plugin/configfrag.ac
  64303d9a5e264784832990b27405c4aa  libgomp/plugin/cuda-lib.def
  d024ec56acbc3411cedc7899b8bbdd02  libgomp/plugin/mutex.c
! 17368ed98ff92229ce7af37ab46e0049  libgomp/plugin/plugin-gcn.c
  8b63f2359031b645d7462a465385b090  libgomp/plugin/plugin-nvptx.c
  575940d2b8e2a941f78af850aac28928  libgomp/priority_queue.c
  c88620bad36f9c420348d0508bd4b346  libgomp/priority_queue.h
--- 141535,141546 ----
  499db3818012abc0c973cf7887ad887b  libgomp/openacc_lib.h
  da2ae01cd3ee1b82927ed89b489413c4  libgomp/ordered.c
  9175c3aaac7a44bd118f7fb462894ff7  libgomp/parallel.c
! a19fe470b125fddc580e5e0bbeee471d  libgomp/plugin/Makefrag.am
  1b94d027e28b8b7e6f38e326d8412459  libgomp/plugin/build-target-indirect-htab.h
  fab10af27c836c7b90303245f3965cb8  libgomp/plugin/configfrag.ac
  64303d9a5e264784832990b27405c4aa  libgomp/plugin/cuda-lib.def
  d024ec56acbc3411cedc7899b8bbdd02  libgomp/plugin/mutex.c
! 6908c1b3e29c68a7f9e59de034a4072f  libgomp/plugin/plugin-gcn.c
  8b63f2359031b645d7462a465385b090  libgomp/plugin/plugin-nvptx.c
  575940d2b8e2a941f78af850aac28928  libgomp/priority_queue.c
  c88620bad36f9c420348d0508bd4b346  libgomp/priority_queue.h
*************** edfe0cd950eb6d29688ffe6e38c87d10  libgom
*** 142818,142827 ****
  bc4cd825c8ad15fbafb7f2c60e6cab7c  libgomp/testsuite/libgomp.fortran/affinity1.f90
  a7ba1c005e2c0979fffc63313c6c2d42  libgomp/testsuite/libgomp.fortran/affinity2.f90
  b4e8ed1ab4338f0ccdabc2598d2e0973  libgomp/testsuite/libgomp.fortran/aligned1.f03
! 74fecba59a6fa206dab72abe50117a50  libgomp/testsuite/libgomp.fortran/alloc-1.F90
  20991a1696321aac4fa63f4bf9bde535  libgomp/testsuite/libgomp.fortran/alloc-10.f90
  d5da2b0a845f75c868ed74916d291b75  libgomp/testsuite/libgomp.fortran/alloc-11.f90
! 051205d0ca7ee1afc858e7d1a14aa619  libgomp/testsuite/libgomp.fortran/alloc-12.f90
  cd56a1c8c06023889e5801d472bfd513  libgomp/testsuite/libgomp.fortran/alloc-2.F90
  7b4c534af5b5bc27d14a0f407856cdef  libgomp/testsuite/libgomp.fortran/alloc-3.F
  5a1ed7f2b92ea2181c5f87db2850c5f5  libgomp/testsuite/libgomp.fortran/alloc-4.f90
--- 142944,142953 ----
  bc4cd825c8ad15fbafb7f2c60e6cab7c  libgomp/testsuite/libgomp.fortran/affinity1.f90
  a7ba1c005e2c0979fffc63313c6c2d42  libgomp/testsuite/libgomp.fortran/affinity2.f90
  b4e8ed1ab4338f0ccdabc2598d2e0973  libgomp/testsuite/libgomp.fortran/aligned1.f03
! a37adf65567a046193770b7e4e96353c  libgomp/testsuite/libgomp.fortran/alloc-1.F90
  20991a1696321aac4fa63f4bf9bde535  libgomp/testsuite/libgomp.fortran/alloc-10.f90
  d5da2b0a845f75c868ed74916d291b75  libgomp/testsuite/libgomp.fortran/alloc-11.f90
! f0a57e802996a3701ee1657d008d5bf3  libgomp/testsuite/libgomp.fortran/alloc-12.f90
  cd56a1c8c06023889e5801d472bfd513  libgomp/testsuite/libgomp.fortran/alloc-2.F90
  7b4c534af5b5bc27d14a0f407856cdef  libgomp/testsuite/libgomp.fortran/alloc-3.F
  5a1ed7f2b92ea2181c5f87db2850c5f5  libgomp/testsuite/libgomp.fortran/alloc-4.f90
*************** b018601a4e35da4037b1e04dfdb00b98  libgom
*** 143160,143165 ****
--- 143286,143292 ----
  327296ef9f336f2398d0e4c17fabdbd7  libgomp/testsuite/libgomp.fortran/pr113436-1.f90
  44b753e10d2a8e272c6d624bb12125cf  libgomp/testsuite/libgomp.fortran/pr113436-2.f90
  bd4d373b7453a268a0da695bf8bf8f52  libgomp/testsuite/libgomp.fortran/pr120286.f90
+ 28fb9319a89f61dfb131385512860aa8  libgomp/testsuite/libgomp.fortran/pr122910.f90
  1e7de6c9f1376e7662fc088ab6ec5e64  libgomp/testsuite/libgomp.fortran/pr25162.f
  150790c35955da1ca1b74284c2553f34  libgomp/testsuite/libgomp.fortran/pr25219.f90
  a83bd562c0d1b609f2a71de244b3a1a0  libgomp/testsuite/libgomp.fortran/pr27395-1.f90
*************** ea8a677ba9830505808a5ba39355add7  libgom
*** 143230,143236 ****
  10ef752092b9072272d1de6f1d2a9b57  libgomp/testsuite/libgomp.fortran/reverse-offload-5.f90
  c9a3f32099e9cef2e6827a644ce50760  libgomp/testsuite/libgomp.fortran/reverse-offload-5a.f90
  c32a02ca19d34daa5c3a20afb148c142  libgomp/testsuite/libgomp.fortran/reverse-offload-6.f90
! 11362392d0f96235a7e83827d705be00  libgomp/testsuite/libgomp.fortran/rwlock_1.f90
  18b2357304870d09644b777b3377f279  libgomp/testsuite/libgomp.fortran/rwlock_2.f90
  26c00367737ea641ac690fa9478eb1f7  libgomp/testsuite/libgomp.fortran/rwlock_3.f90
  f94173449f0106660c3c83b7da6eb1b2  libgomp/testsuite/libgomp.fortran/scan-1.f90
--- 143357,143363 ----
  10ef752092b9072272d1de6f1d2a9b57  libgomp/testsuite/libgomp.fortran/reverse-offload-5.f90
  c9a3f32099e9cef2e6827a644ce50760  libgomp/testsuite/libgomp.fortran/reverse-offload-5a.f90
  c32a02ca19d34daa5c3a20afb148c142  libgomp/testsuite/libgomp.fortran/reverse-offload-6.f90
! d7a836a105a15d50c97d56f976c98ee2  libgomp/testsuite/libgomp.fortran/rwlock_1.f90
  18b2357304870d09644b777b3377f279  libgomp/testsuite/libgomp.fortran/rwlock_2.f90
  26c00367737ea641ac690fa9478eb1f7  libgomp/testsuite/libgomp.fortran/rwlock_3.f90
  f94173449f0106660c3c83b7da6eb1b2  libgomp/testsuite/libgomp.fortran/scan-1.f90
*************** d1c33a8b5e0f3d9a19ffe583f8e72f56  libgru
*** 144890,144896 ****
  c21183b1df7f7afb240d765035277db1  libgrust/rustc-lib/version-info
  99c2e5e712b990ee07be10f53e41f3fb  libiberty/.gitignore
  a916467b91076e631dd8edb7424769c7  libiberty/COPYING.LIB
! 5d58a7de326daa8ec98f1bb2f886296a  libiberty/ChangeLog
  347c31392973de6a4872d540c1718dc1  libiberty/ChangeLog.jit
  de0b0731d5d06e748df71e896c6078a5  libiberty/Makefile.in
  8b93d0e0369daed24e2260ccfd102eb3  libiberty/README
--- 145017,145023 ----
  c21183b1df7f7afb240d765035277db1  libgrust/rustc-lib/version-info
  99c2e5e712b990ee07be10f53e41f3fb  libiberty/.gitignore
  a916467b91076e631dd8edb7424769c7  libiberty/COPYING.LIB
! 49a1d8cc540f33ea761855b670d80694  libiberty/ChangeLog
  347c31392973de6a4872d540c1718dc1  libiberty/ChangeLog.jit
  de0b0731d5d06e748df71e896c6078a5  libiberty/Makefile.in
  8b93d0e0369daed24e2260ccfd102eb3  libiberty/README
*************** cfb5c6013ed34d9d349e8dc340c04af5  libibe
*** 144898,144904 ****
  ae499efa54db8524b519ccf13d4d4458  libiberty/acinclude.m4
  9c7c0833924a60c564bf194e11b22795  libiberty/aclocal.m4
  44755c536efb9b79a3ebdfe6b0da5904  libiberty/alloca.c
! 55f389fa987759ae7bdce6f2b0e49333  libiberty/argv.c
  6b929466aefe4a6ffbca290b503a9ebc  libiberty/asprintf.c
  a16ea056b95fd70c21333db132da14ff  libiberty/at-file.texi
  c34119797a13e71989722851c14b711b  libiberty/atexit.c
--- 145025,145031 ----
  ae499efa54db8524b519ccf13d4d4458  libiberty/acinclude.m4
  9c7c0833924a60c564bf194e11b22795  libiberty/aclocal.m4
  44755c536efb9b79a3ebdfe6b0da5904  libiberty/alloca.c
! 33f4debe21bcd0920f3e5a9abb30f59a  libiberty/argv.c
  6b929466aefe4a6ffbca290b503a9ebc  libiberty/asprintf.c
  a16ea056b95fd70c21333db132da14ff  libiberty/at-file.texi
  c34119797a13e71989722851c14b711b  libiberty/atexit.c
*************** f98c61cdc58945808e3b2007815a4a1e  libibe
*** 145001,145007 ****
  fd7b0f956a27a9c003becee0f7127dc9  libiberty/simple-object-coff.c
  7d1dc7e843b27598f270728a44698f7e  libiberty/simple-object-common.h
  be88ad62ac87a7cdb78b07fc63c13374  libiberty/simple-object-elf.c
! 3144f1480a3d2029e537825992b54bf9  libiberty/simple-object-mach-o.c
  d66a370bb6427e3e775064e74b0a4f86  libiberty/simple-object-xcoff.c
  d83b0f719987de9d9cc6ea43bd6441b7  libiberty/simple-object.c
  4863a11e04a2021af582edf86f156954  libiberty/simple-object.txh
--- 145128,145134 ----
  fd7b0f956a27a9c003becee0f7127dc9  libiberty/simple-object-coff.c
  7d1dc7e843b27598f270728a44698f7e  libiberty/simple-object-common.h
  be88ad62ac87a7cdb78b07fc63c13374  libiberty/simple-object-elf.c
! ce1e1998ef0e60161af492fcbc3305f3  libiberty/simple-object-mach-o.c
  d66a370bb6427e3e775064e74b0a4f86  libiberty/simple-object-xcoff.c
  d83b0f719987de9d9cc6ea43bd6441b7  libiberty/simple-object.c
  4863a11e04a2021af582edf86f156954  libiberty/simple-object.txh
*************** a73d560a3ba317c5ad0a7919d87b4b6d  libssp
*** 146897,146903 ****
  7d75fa0d30318408fe4cd91d9cbe3ac7  libssp/vsnprintf-chk.c
  e9ff0f4bdd1be75a507480ed1267459d  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! 8912ebde9f09bd4b3f1243fc1b9009f4  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
--- 147024,147030 ----
  7d75fa0d30318408fe4cd91d9cbe3ac7  libssp/vsnprintf-chk.c
  e9ff0f4bdd1be75a507480ed1267459d  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! 2844d392d778db0cba19e1a692cdc6b5  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** d7249eb4d31bd107d0b09ea3c80cb723  libstd
*** 147220,147226 ****
  33bc39e8f2d47f3d490d7ca7d4832b43  libstdc++-v3/doc/html/images/pbds_trie_node_updator_policy_cd.png
  df705f3839120dcb896e9839cf3404d0  libstdc++-v3/doc/html/images/pbds_update_seq_diagram.png
  1d021ecbe8d19331bb3ea7b6228f8918  libstdc++-v3/doc/html/index.html
! da8ef3dbcb662f961907eacee627f1e5  libstdc++-v3/doc/html/manual/abi.html
  4ce10e27356ac31a5b7962aecbeb3638  libstdc++-v3/doc/html/manual/algorithms.html
  231ab808250c15c801ef2c73327e9d43  libstdc++-v3/doc/html/manual/api.html
  429324d165eade3038a28de2ea41bd2f  libstdc++-v3/doc/html/manual/appendix.html
--- 147347,147353 ----
  33bc39e8f2d47f3d490d7ca7d4832b43  libstdc++-v3/doc/html/images/pbds_trie_node_updator_policy_cd.png
  df705f3839120dcb896e9839cf3404d0  libstdc++-v3/doc/html/images/pbds_update_seq_diagram.png
  1d021ecbe8d19331bb3ea7b6228f8918  libstdc++-v3/doc/html/index.html
! 79392178ecc9420b024f5e5b480afb5e  libstdc++-v3/doc/html/manual/abi.html
  4ce10e27356ac31a5b7962aecbeb3638  libstdc++-v3/doc/html/manual/algorithms.html
  231ab808250c15c801ef2c73327e9d43  libstdc++-v3/doc/html/manual/api.html
  429324d165eade3038a28de2ea41bd2f  libstdc++-v3/doc/html/manual/appendix.html
*************** cc132f90a00a3ca05f64b578f9e332aa  libstd
*** 147502,147508 ****
  f63bfdc03ba2b82c74864f02206d7c52  libstdc++-v3/doc/xml/images/pbds_tree_text_lor_find.svg
  33bc39e8f2d47f3d490d7ca7d4832b43  libstdc++-v3/doc/xml/images/pbds_trie_node_updator_policy_cd.png
  df705f3839120dcb896e9839cf3404d0  libstdc++-v3/doc/xml/images/pbds_update_seq_diagram.png
! 6a034881f703b198c133eb963958e990  libstdc++-v3/doc/xml/manual/abi.xml
  c1d775ba87be90b85044162eab59a66c  libstdc++-v3/doc/xml/manual/algorithms.xml
  954cbafffb4b6f40cda84d906436793a  libstdc++-v3/doc/xml/manual/allocator.xml
  b860270b35e04a2ad4da73d0c27f710e  libstdc++-v3/doc/xml/manual/appendix_contributing.xml
--- 147629,147635 ----
  f63bfdc03ba2b82c74864f02206d7c52  libstdc++-v3/doc/xml/images/pbds_tree_text_lor_find.svg
  33bc39e8f2d47f3d490d7ca7d4832b43  libstdc++-v3/doc/xml/images/pbds_trie_node_updator_policy_cd.png
  df705f3839120dcb896e9839cf3404d0  libstdc++-v3/doc/xml/images/pbds_update_seq_diagram.png
! 660f6a49980e2fbcd2fba1d7b26aba1e  libstdc++-v3/doc/xml/manual/abi.xml
  c1d775ba87be90b85044162eab59a66c  libstdc++-v3/doc/xml/manual/algorithms.xml
  954cbafffb4b6f40cda84d906436793a  libstdc++-v3/doc/xml/manual/allocator.xml
  b860270b35e04a2ad4da73d0c27f710e  libstdc++-v3/doc/xml/manual/appendix_contributing.xml
*************** f053b22f5819f7ed1f6ed5ffe14dc5a3  libstd
*** 147607,147616 ****
  3ef9bc83cb8c079eb15ebfb1a50ab14b  libstdc++-v3/include/bits/fs_ops.h
  2cd4d841beb5aa54f966e9936ab9ce5f  libstdc++-v3/include/bits/fs_path.h
  c2f893fbd3fb2e778cc648a1e309d2f5  libstdc++-v3/include/bits/fstream.tcc
! 3d80acb5d40b43f9035ce9f9ca085920  libstdc++-v3/include/bits/funcref_impl.h
  e77032281bd301430e499d5bb46db4a1  libstdc++-v3/include/bits/functexcept.h
  31bdc727f2eaf8eda1ab45fb88577c00  libstdc++-v3/include/bits/functional_hash.h
! fb24aa3b5d33965592a556830bf0d6e4  libstdc++-v3/include/bits/funcwrap.h
  a437a10ba7525a3935bec765a5604a4f  libstdc++-v3/include/bits/gslice.h
  39aca2727a08f07f0043ee164eaa09a4  libstdc++-v3/include/bits/gslice_array.h
  4fb739d7e430219a766af6d620d6b853  libstdc++-v3/include/bits/hashtable.h
--- 147734,147743 ----
  3ef9bc83cb8c079eb15ebfb1a50ab14b  libstdc++-v3/include/bits/fs_ops.h
  2cd4d841beb5aa54f966e9936ab9ce5f  libstdc++-v3/include/bits/fs_path.h
  c2f893fbd3fb2e778cc648a1e309d2f5  libstdc++-v3/include/bits/fstream.tcc
! 7ee646a41c39c591ee84efb1a9fce3f5  libstdc++-v3/include/bits/funcref_impl.h
  e77032281bd301430e499d5bb46db4a1  libstdc++-v3/include/bits/functexcept.h
  31bdc727f2eaf8eda1ab45fb88577c00  libstdc++-v3/include/bits/functional_hash.h
! c71f4d3d7abdc47958c60c0b6c1c2b9d  libstdc++-v3/include/bits/funcwrap.h
  a437a10ba7525a3935bec765a5604a4f  libstdc++-v3/include/bits/gslice.h
  39aca2727a08f07f0043ee164eaa09a4  libstdc++-v3/include/bits/gslice_array.h
  4fb739d7e430219a766af6d620d6b853  libstdc++-v3/include/bits/hashtable.h
*************** b1052f564f9839906c0d1f1f7a3296ea  libstd
*** 147748,147762 ****
  3e95bc3dafd1a579438226ba448f80e4  libstdc++-v3/include/bits/unordered_set.h
  4fbbeaf99e17abfaf62cec53ac3c9193  libstdc++-v3/include/bits/uses_allocator.h
  9d01cfbd90824dde5e36d65c0c160ad5  libstdc++-v3/include/bits/uses_allocator_args.h
! 6c46656b0e1510bafbc3560eb85608e0  libstdc++-v3/include/bits/utility.h
  3c8c91dc88f2ee1e4b68dcc3f3aaa5e5  libstdc++-v3/include/bits/valarray_after.h
  d1cf5a35c4ad3820cb023d8f84762cc7  libstdc++-v3/include/bits/valarray_array.h
  ddd4bdc2fa29f8f2aa3386cead9ebcb2  libstdc++-v3/include/bits/valarray_array.tcc
  16c6db3f5b1e7b3e37c3febbf4dc4e8c  libstdc++-v3/include/bits/valarray_before.h
  682dec8d9b388681bc1f171ba0c5590e  libstdc++-v3/include/bits/vec_ops.h
  fe1be23d00db0d87529a75faf3afb98a  libstdc++-v3/include/bits/vector.tcc
! 488be47f6786d572d0f3fc34ab14c9df  libstdc++-v3/include/bits/version.def
! 5c6e3493f6bfe98a26c81a7cfab959eb  libstdc++-v3/include/bits/version.h
  07c6aeb4ce2629a1da2d63d08e65c0f8  libstdc++-v3/include/bits/version.tpl
  d99b1b69e5f87e5a631c8a881d053766  libstdc++-v3/include/c/cassert
  7f5b12607c4d7cbbcf705b672613447b  libstdc++-v3/include/c/cctype
--- 147875,147889 ----
  3e95bc3dafd1a579438226ba448f80e4  libstdc++-v3/include/bits/unordered_set.h
  4fbbeaf99e17abfaf62cec53ac3c9193  libstdc++-v3/include/bits/uses_allocator.h
  9d01cfbd90824dde5e36d65c0c160ad5  libstdc++-v3/include/bits/uses_allocator_args.h
! 84ada8040a2804613f2e65cf79127295  libstdc++-v3/include/bits/utility.h
  3c8c91dc88f2ee1e4b68dcc3f3aaa5e5  libstdc++-v3/include/bits/valarray_after.h
  d1cf5a35c4ad3820cb023d8f84762cc7  libstdc++-v3/include/bits/valarray_array.h
  ddd4bdc2fa29f8f2aa3386cead9ebcb2  libstdc++-v3/include/bits/valarray_array.tcc
  16c6db3f5b1e7b3e37c3febbf4dc4e8c  libstdc++-v3/include/bits/valarray_before.h
  682dec8d9b388681bc1f171ba0c5590e  libstdc++-v3/include/bits/vec_ops.h
  fe1be23d00db0d87529a75faf3afb98a  libstdc++-v3/include/bits/vector.tcc
! 0098dc61ef157982e654da7b6e12da5b  libstdc++-v3/include/bits/version.def
! bfe65712895a2702ace0010f7a3d7af2  libstdc++-v3/include/bits/version.h
  07c6aeb4ce2629a1da2d63d08e65c0f8  libstdc++-v3/include/bits/version.tpl
  d99b1b69e5f87e5a631c8a881d053766  libstdc++-v3/include/c/cassert
  7f5b12607c4d7cbbcf705b672613447b  libstdc++-v3/include/c/cctype
*************** c5c26a31e7b679312f2784a6392935ea  libstd
*** 149264,149273 ****
  e133eccc1a4734a3ac88d1a656706378  libstdc++-v3/testsuite/20_util/conditional/requirements/typedefs.cc
  95bad06156644b850b0d0628cde39ee6  libstdc++-v3/testsuite/20_util/constant_wrapper/adl.cc
  f4c5fb9b9eef76cf55a1f3d4e0727f82  libstdc++-v3/testsuite/20_util/constant_wrapper/ex.cc
! 7355d91818a4103ae0d02ed116ca8469  libstdc++-v3/testsuite/20_util/constant_wrapper/generic.cc
  f6c5689f1a0dfdba8a8ba54d684306c4  libstdc++-v3/testsuite/20_util/constant_wrapper/instantiate.cc
  f132f2bcc484293fa32563cb7cdab8f9  libstdc++-v3/testsuite/20_util/constant_wrapper/op_comma_neg.cc
! 33f234999aa59db9cbf70db59b5481c4  libstdc++-v3/testsuite/20_util/constant_wrapper/other_wrappers.cc
  40b819222eee937a9063c9e962829b5f  libstdc++-v3/testsuite/20_util/constant_wrapper/version.cc
  404eb18749ec930755e24ae928ae99ee  libstdc++-v3/testsuite/20_util/copyable_function/call.cc
  09520df3df90b586a3cb13556948faa3  libstdc++-v3/testsuite/20_util/copyable_function/cons.cc
--- 149391,149401 ----
  e133eccc1a4734a3ac88d1a656706378  libstdc++-v3/testsuite/20_util/conditional/requirements/typedefs.cc
  95bad06156644b850b0d0628cde39ee6  libstdc++-v3/testsuite/20_util/constant_wrapper/adl.cc
  f4c5fb9b9eef76cf55a1f3d4e0727f82  libstdc++-v3/testsuite/20_util/constant_wrapper/ex.cc
! 037b7b5fd56bdbde848ba3c9608079d7  libstdc++-v3/testsuite/20_util/constant_wrapper/generic.cc
  f6c5689f1a0dfdba8a8ba54d684306c4  libstdc++-v3/testsuite/20_util/constant_wrapper/instantiate.cc
  f132f2bcc484293fa32563cb7cdab8f9  libstdc++-v3/testsuite/20_util/constant_wrapper/op_comma_neg.cc
! 6d50979bcc332cceb4a8fd4193864265  libstdc++-v3/testsuite/20_util/constant_wrapper/other_wrappers.cc
! e4cab1c509061008841126983273bd20  libstdc++-v3/testsuite/20_util/constant_wrapper/type_param_neg.cc
  40b819222eee937a9063c9e962829b5f  libstdc++-v3/testsuite/20_util/constant_wrapper/version.cc
  404eb18749ec930755e24ae928ae99ee  libstdc++-v3/testsuite/20_util/copyable_function/call.cc
  09520df3df90b586a3cb13556948faa3  libstdc++-v3/testsuite/20_util/copyable_function/cons.cc
*************** d3faedf9767ad203ab75e19ef5469ac6  libstd
*** 157940,157946 ****
  0b80b1e438870bb18ed0741a843d8529  libstdc++-v3/testsuite/libstdc++-prettyprinters/filesystem-ts.cc
  3f04df3f4a0b8031c86b30a1d08e740e  libstdc++-v3/testsuite/libstdc++-prettyprinters/libfundts.cc
  6a9ac7f69736076c75da48c32d9d24b2  libstdc++-v3/testsuite/libstdc++-prettyprinters/locale.cc
! 00e2deea4d34ce2091fe3715c98b4521  libstdc++-v3/testsuite/libstdc++-prettyprinters/prettyprinters.exp
  cb3552b7d7c85d9bc3d83aee5f924d5c  libstdc++-v3/testsuite/libstdc++-prettyprinters/shared_ptr.cc
  4d8154cb676345b4fd01c8ab407aa3dc  libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc
  7d7d3958aeba853222e144dd409473fb  libstdc++-v3/testsuite/libstdc++-prettyprinters/simple11.cc
--- 158068,158074 ----
  0b80b1e438870bb18ed0741a843d8529  libstdc++-v3/testsuite/libstdc++-prettyprinters/filesystem-ts.cc
  3f04df3f4a0b8031c86b30a1d08e740e  libstdc++-v3/testsuite/libstdc++-prettyprinters/libfundts.cc
  6a9ac7f69736076c75da48c32d9d24b2  libstdc++-v3/testsuite/libstdc++-prettyprinters/locale.cc
! 00b5e253a8c409539f548cfa12540189  libstdc++-v3/testsuite/libstdc++-prettyprinters/prettyprinters.exp
  cb3552b7d7c85d9bc3d83aee5f924d5c  libstdc++-v3/testsuite/libstdc++-prettyprinters/shared_ptr.cc
  4d8154cb676345b4fd01c8ab407aa3dc  libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc
  7d7d3958aeba853222e144dd409473fb  libstdc++-v3/testsuite/libstdc++-prettyprinters/simple11.cc
*************** fd44dfd4ba421163f0a14a74988ea97a  libvtv
*** 159297,159310 ****
  534c98ba47a56c08d77208f4c40a69fc  libvtv/vtv_utils.h
  247597a3fcc5b5aa8bd923351c59d853  ltgcc.m4
  2d10540be0b9516e14daf48616877aad  ltmain.sh
! 09c1875240e8cf41e7aabd656a140138  lto-plugin/ChangeLog
  aced0d5ba993307440be577533b64eb3  lto-plugin/Makefile.am
  92f6f16bc389d92c31885942b6b0f390  lto-plugin/Makefile.in
  79b337b8e2e684d93cd124b348d1261a  lto-plugin/aclocal.m4
  26e3d7e6d62bd000d0ad9db3b610e91c  lto-plugin/config.h.in
  b386dde9241d1c015a642d8ab491fa30  lto-plugin/configure
  40efd97088318d4823aab5e72c85acd0  lto-plugin/configure.ac
! 27954cafeeb70e514aa6a2634a046f41  lto-plugin/lto-plugin.c
  d00a1ca9cd8ba450f1a1028fd3e60dc3  lto-plugin/lto-plugin.map
  dee72a6a60e99528b0d17bf3ff9a1e15  ltoptions.m4
  bc2f6032c98896249eadb56177c7d357  ltsugar.m4
--- 159425,159438 ----
  534c98ba47a56c08d77208f4c40a69fc  libvtv/vtv_utils.h
  247597a3fcc5b5aa8bd923351c59d853  ltgcc.m4
  2d10540be0b9516e14daf48616877aad  ltmain.sh
! 880277beff498b3b6d760d03d3897ed6  lto-plugin/ChangeLog
  aced0d5ba993307440be577533b64eb3  lto-plugin/Makefile.am
  92f6f16bc389d92c31885942b6b0f390  lto-plugin/Makefile.in
  79b337b8e2e684d93cd124b348d1261a  lto-plugin/aclocal.m4
  26e3d7e6d62bd000d0ad9db3b610e91c  lto-plugin/config.h.in
  b386dde9241d1c015a642d8ab491fa30  lto-plugin/configure
  40efd97088318d4823aab5e72c85acd0  lto-plugin/configure.ac
! bf9a10ddf7a918e207afd67ca6300b1a  lto-plugin/lto-plugin.c
  d00a1ca9cd8ba450f1a1028fd3e60dc3  lto-plugin/lto-plugin.map
  dee72a6a60e99528b0d17bf3ff9a1e15  ltoptions.m4
  bc2f6032c98896249eadb56177c7d357  ltsugar.m4
diff -Nrcpad gcc-17-20260607/contrib/ChangeLog gcc-17-20260614/contrib/ChangeLog
*** gcc-17-20260607/contrib/ChangeLog	Sun Jun  7 22:32:05 2026
--- gcc-17-20260614/contrib/ChangeLog	Sun Jun 14 22:32:06 2026
***************
*** 1,3 ****
--- 1,15 ----
+ 2026-06-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gcc-changelog/git_update_version.py (ignored_commits): Add
+ 	'843b49269eaca82860ab4171f9644b5c411f05fc' and
+ 	'5c0785d62ca44b9073e543b2b3dbb04f0aca83af', remove all older
+ 	hashes.
+ 
+ 2026-06-05  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* download_prerequisites: use 'command -v' to check for wget and
+ 	curl.
+ 
  2026-06-04  Jakub Jelinek  <jakub@redhat.com>
  
  	* gcc-changelog/git_update_version.py (ignored_commits):
diff -Nrcpad gcc-17-20260607/contrib/gcc-changelog/git_update_version.py gcc-17-20260614/contrib/gcc-changelog/git_update_version.py
*** gcc-17-20260607/contrib/gcc-changelog/git_update_version.py	Sun Jun  7 22:32:05 2026
--- gcc-17-20260614/contrib/gcc-changelog/git_update_version.py	Sun Jun 14 22:32:06 2026
*************** current_timestamp = datetime.datetime.no
*** 32,61 ****
  
  # Skip the following commits, they cannot be correctly processed
  ignored_commits = {
!         'c2be82058fb40f3ae891c68d185ff53e07f14f45',
!         '04a040d907a83af54e0a98bdba5bfabc0ef4f700',
!         '2e96b5f14e4025691b57d2301d71aa6092ed44bc',
!         '3ab5c8cd03d92bf4ec41e351820349d92fbc40c4',
!         '86d8e0c0652ef5236a460b75c25e4f7093cc0651',
!         'e4cba49413ca429dc82f6aa2e88129ecb3fdd943',
!         '1957bedf29a1b2cc231972aba680fe80199d5498',
!         '040e5b0edbca861196d9e2ea2af5e805769c8d5d',
!         '8057f9aa1f7e70490064de796d7a8d42d446caf8',
!         '109f1b28fc94c93096506e3df0c25e331cef19d0',
!         '39f81924d88e3cc197fc3df74204c9b5e01e12f7',
!         '8e6a25b01becf449d54154b7e83de5f4955cba37',
!         '72677e1119dc40aa680755d009e079ad49446c46',
!         '10d76b7f1e5b63ad6d2b92940c39007913ced037',
!         'de3b277247ce98d189f121155b75f490725a42f6',
!         '13cf22eb557eb5e3d796822247d8d4957bdb25da',
!         'b40ef6e9dc096c8c19399e94947a1965258a6942',
!         'e69bea9b4ccfe79efeec6e87d7d24e6350f31375',
!         '9a7da540b63e7d77e747b5cdd6fdbbd3954e28c8',
!         '69a2c243dd2cf9f77150c0eb86dfbc0931876bc1',
!         'eec8da328cf1f91db302ab4cee803e269e68ad33',
!         '9df40f1f4bec855da864f535e242308ceb1cd5ad',
!         'd5fb79718b22207253d62c92dcf8b1c16e1ea370',
!         '86ff0e88764bfbff1a4989414ec83c0eaa723107'}
  
  FORMAT = '%(asctime)s:%(levelname)s:%(name)s:%(message)s'
  logging.basicConfig(level=logging.INFO, format=FORMAT,
--- 32,39 ----
  
  # Skip the following commits, they cannot be correctly processed
  ignored_commits = {
!         '843b49269eaca82860ab4171f9644b5c411f05fc',
!         '5c0785d62ca44b9073e543b2b3dbb04f0aca83af'}
  
  FORMAT = '%(asctime)s:%(levelname)s:%(name)s:%(message)s'
  logging.basicConfig(level=logging.INFO, format=FORMAT,
diff -Nrcpad gcc-17-20260607/gcc/ChangeLog gcc-17-20260614/gcc/ChangeLog
*** gcc-17-20260607/gcc/ChangeLog	Sun Jun  7 22:32:05 2026
--- gcc-17-20260614/gcc/ChangeLog	Sun Jun 14 22:32:06 2026
***************
*** 1,3 ****
--- 1,850 ----
+ 2026-06-13  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/125776
+ 	* tree-ssa-phiopt.cc (is_factor_profitable): An
+ 	usage in a debug stmt should be ignored.
+ 
+ 2026-06-13  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+ 
+ 	* gcc.cc (find_a_program): Implement the new behavior described
+ 	above.
+ 	(driver::set_up_specs): Initilize variable. It would be nice to
+ 	have less spooky-action-at-a-distince using C++ features, but I
+ 	just matched how the corresponding suffix variable worked for
+ 	now for uniformity.
+ 
+ 2026-06-13  John Ericson  <git@JohnEricson.me>
+ 
+ 	* gcc.cc (for_each_path): Pass an additional boolean argument to
+ 	the callback specifying whether the current directly being
+ 	searched is machine-specific, as described above.
+ 	(build_search_list): Add unused parameter to lambda match new
+ 	callback type.
+ 	(find_a_file): Add unused parameter to lambda match new callback
+ 	type.
+ 	(find_a_program): Add unused parameter to lambda match new
+ 	callback type.
+ 	(spec_path::operator()): Add unused parameter to match new
+ 	callback type.
+ 
+ 2026-06-13  panciyan@eswincomputing.com  <panciyan@eswincomputing.com>
+ 
+ 	* config/riscv/crypto.md (riscv_pack): Change HISI iterator to
+ 	HX as we must match half a target word for pack.
+ 
+ 2026-06-13  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/install.texi (Configuration): Use AE spelling for "behavior".
+ 
+ 2026-06-13  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	PR tree-optimization/125750
+ 	* match.pd (mult of a 0/1 value by a negated 0/1 value): New
+ 	simplification.
+ 
+ 2026-06-13  Kael Andrew Alonzo Franco  <kaelfandrew@gmail.com>
+ 
+ 	PR tree-optimization/125707
+ 	PR tree-optimization/125707
+ 	* match.pd: Add (~a) >> a to -1 for signed a.
+ 
+ 2026-06-13  Sunil Dora  <sunilkumar.dora@windriver.com>
+ 
+ 	PR driver/111527
+ 	* defaults.h (COLLECT2_OPTIONS_MAX_LENGTH): New macro.
+ 	* collect-utils.cc (read_collect_gcc_options): New function.
+ 	* collect-utils.h (read_collect_gcc_options): Declare.
+ 	* collect2.cc (main): Use read_collect_gcc_options instead
+ 	of getenv.
+ 	* doc/hostconfig.texi (Host Misc): Document
+ 	COLLECT2_OPTIONS_MAX_LENGTH.
+ 	* doc/invoke.texi (Environment Variables): Document the
+ 	@file form of COLLECT_GCC_OPTIONS.
+ 	* gcc.cc (xsetenv_collect_gcc_options): New function.
+ 	(set_collect_gcc_options): Use xsetenv_collect_gcc_options.
+ 	* lto-wrapper.cc (run_gcc): Use read_collect_gcc_options
+ 	instead of getenv.
+ 
+ 2026-06-12  Claudio Bantaloukas  <claudio.bantaloukas@arm.com>
+ 
+ 	* config/aarch64/aarch64-cores.def (cortex-a320): Update core.
+ 	* config/aarch64/aarch64.cc: Add cortexa320.h.
+ 	* config/aarch64/tuning_models/cortexa320.h: New file.
+ 
+ 2026-06-12  Ramin Moussavi  <lordrasmus@gmail.com>
+ 
+ 	* config/microblaze/microblaze.h (DWARF_ALT_FRAME_RETURN_COLUMN):
+ 	Define.
+ 
+ 2026-06-12  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	PR target/101484
+ 	* config/gcn/gcn.cc (TARGET_ADDR_SPACE_ZERO_ADDRESS_VALID): Implement.
+ 
+ 2026-06-12  Stefan Schulze Frielinghaus  <stefansf@gcc.gnu.org>
+ 
+ 	* lra-constraints.cc (reload_section_anchor_p): New function.
+ 	(curr_insn_transform): For offsetable MEMs, try reloading the
+ 	section anchor only.
+ 
+ 2026-06-12  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/125597
+ 	* tree-vect-loop-manip.cc (vect_do_peeling): Create IFN_VARYING for
+ 	early break scalar IV.
+ 	* tree-vect-loop.cc (vect_update_ivs_after_vectorizer_for_early_breaks):
+ 	Replace the IFN_VARYING with actual value.
+ 
+ 2026-06-12  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/125597
+ 	(vect_do_peeling): Create IFN_VARYING for masks.
+ 	* tree-vect-loop-manip.cc (vect_set_loop_condition): Replace the
+ 	IFN_VARYING.
+ 
+ 2026-06-12  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/125597
+ 	* internal-fn.def (VARYING): New.
+ 	* doc/ifn.texi: Document it.
+ 	* internal-fn.cc (expand_VARYING): New.
+ 	* internal-fn.h (expand_VARYING): New.
+ 	* tree-cfg.cc (verify_gimple_call): Check for leaked IFN_VARYING.
+ 
+ 2026-06-12  Stefan Schulze Frielinghaus  <stefansf@gcc.gnu.org>
+ 
+ 	PR rtl-optimization/125173
+ 	* ira.cc (combine_and_move_insns): Allow multiple uses within
+ 	an insn.
+ 
+ 2026-06-12  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 	    Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	PR tree-optimization/125557
+ 	PR tree-optimization/64700
+ 	PR tree-optimization/29144
+ 	PR tree-optimization/94274
+ 	* tree-if-conv.cc (find_different_opnum): Move to ...
+ 	* gimple-match-exports.cc (find_different_opnum): Here.
+ 	* gimple-match.h (find_different_opnum): New decl.
+ 	* tree-ssa-phiopt.cc (is_factor_profitable): Take
+ 	gimple_match_op instead of one operand.
+ 	Rearrange the code to check the lifetime of the operands last.
+ 	(factor_out_conditional_operation): Handle operands > 1,
+ 	including operands communitive operands. Add early_p argument
+ 	for costing. Update call of is_factor_profitable.
+ 	(pass_phiopt::execute): Pass early_p to
+ 	factor_out_conditional_operation.
+ 	* tree.h (int_divide_or_mod_p): New function.
+ 
+ 2026-06-12  Stefan Schulze Frielinghaus  <stefansf@gcc.gnu.org>
+ 
+ 	* ira-costs.cc (find_costs_and_classes): Do not honour equivs if
+ 	they get rejected by LRA anyway.
+ 	* ira-int.h (CONST_POOL_OK_P): Move CONST_POOL_OK_P here ...
+ 	* lra-constraints.cc (CONST_POOL_OK_P): from there.
+ 
+ 2026-06-11  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* common/config/aarch64/aarch64-common.cc: Make the asm
+ 	crc bug workaround configurable.
+ 
+ 2026-06-11  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/125751
+ 	* config/avr/avr.cc (avr_out_fract): Fix too small sequence
+ 	lengths in avr_asm_len calls.
+ 
+ 2026-06-11  Roman Beliaev  <r.beliaev@ispras.ru>
+ 
+ 	* gcov.cc (solve_flow_graph): Fix condition.
+ 
+ 2026-06-11  Karl Meakin  <karl.meakin@arm.com>
+ 
+ 	* doc/rtl.texi: Replace "fixed-point" with "integral" where
+ 	appropriate.
+ 
+ 2026-06-11  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/125706
+ 	* range-op.cc (operator_trunc_mod::wi_fold): Apply fixed
+ 	quotient refinement.
+ 
+ 2026-06-11  Andrew Stubbs  <ams@baylibre.com>
+ 
+ 	* config/gcn/gcn.h (REG_CLASS_NAMES): Add missing comma.
+ 
+ 2026-06-11  Naveen  <naveen.siddegowda@oss.qualcomm.com>
+ 
+ 	PR target/113926
+ 	* config/aarch64/aarch64.cc (struct simd_immediate_info): Add width
+ 	field to record AdvSIMD output vector width.
+ 	(simd_immediate_info::simd_immediate_info): Initialize width to zero
+ 	in all constructors.
+ 	(aarch64_simd_valid_imm): Allow 128-bit AdvSIMD MOV immediates with
+ 	zero high 64 bits to be materialized using 64-bit MOVI.
+ 	(aarch64_output_simd_imm): Use recorded immediate width when outputting
+ 	AdvSIMD immediates.
+ 
+ 2026-06-11  Zhongyao Chen  <chenzhongyao.hit@gmail.com>
+ 
+ 	PR tree-optimization/123343
+ 	* tree-vect-slp.cc (vect_analyze_slp_reduction_group): Return
+ 	false for group_size <= 1 at entry.
+ 	(vect_analyze_slp_reductions): Add loop exit check for
+ 	group_size <= 1.
+ 
+ 2026-06-11  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 
+ 	PR testsuite/113276
+ 	* doc/sourcebuild.texi (arm_mixed_fp): Document.
+ 
+ 2026-06-11  Hongyu Wang  <hongyu.wang@intel.com>
+ 
+ 	* common/config/i386/i386-cpuinfo.h (enum feature_priority):
+ 	Add P_AVX10_2, P_APX_F, P_PROC_AVX10_2.
+ 	* common/config/i386/i386-isas.h: Set P_AVX10_2 for avx10.2
+ 	and P_APX_F for apxf.
+ 	* common/config/i386/i386-common.cc (processor_alias_table):
+ 	Use P_PROC_AVX10_2 for diamondrapids and novalake.
+ 
+ 2026-06-11  Zhongyao Chen  <chen.zhongyao@zte.com.cn>
+ 
+ 	PR tree-optimization/125567
+ 	* tree-vect-slp.cc (least_upthread_swappable_op_distance): New.
+ 	(vect_build_slp_tree_2): Compute swap checks before building operand
+ 	zero.  Skip external fallback while swap retry is possible.  Reuse the
+ 	swap checks in the retry path.
+ 
+ 2026-06-10  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* value-range-storage.cc (irange_storage::irange_storage):
+ 	Explicitly initialize vrange_storage.
+ 	(prange_storage::prange_storage): Likewise.
+ 	* value-range-storage.h (vrange_storage): Add GTY marker and
+ 	discriminator field.
+ 	(irange_storage): Add GTY marker.
+ 	(prange_storage): Add GTY marker and friend GTY functions.
+ 	(frange_storage): Add GTY marker and explcitly initialize
+ 	vrange_storage.
+ 
+ 2026-06-10  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* value-range-storage.cc (prange_storage::equal_p): Compare just
+ 	the required fields.
+ 
+ 2026-06-10  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* value-range-storage.cc (prange_storage::alloc): Use new
+ 	prange_format function.
+ 	(prange_storage::prange_storage): Likewise.
+ 	(prange_storage::prange_format): Rename from prange_format
+ 	constructor and rework.
+ 	(prange_storage::set_prange): Use prange_format function.
+ 	(prange_storage::fits_p): Likewise.
+ 	* value-range-storage.h (enum prange_kind): Move out of
+ 	prange_storage class.
+ 	(PRANGE_STORAGE_NINTS): Likewise.
+ 	(class prange_format): remove.
+ 	(m_trailing_ints): Use PRANGE_STORAGE_NINTS.
+ 
+ 2026-06-10  tobby.li  <tobby.li@armchina.com>
+ 
+ 	* config/arm/arm-cpus.in (cortex-m52): Remove quirk_vlldm.
+ 	* doc/invoke.texi: Remove cortex-m52 from the list of CPUs that
+ 	enable -mfix-cmse-cve-2021-35465 by default.  Fix typo in CVE
+ 	number (CVE-2021-365465 -> CVE-2021-35465).
+ 
+ 2026-06-10  Chung-Lin Tang  <cltang@baylibre.com>
+ 
+ 	PR fortran/122910
+ 	* langhooks-def.h (LANG_HOOKS_OMP_ARRAY_DATA_PRIVATIZE): Define.
+ 	* langhooks.h (struct lang_hooks_for_decls): Define
+ 	omp_array_data_privatize hook.
+ 	* omp-low.cc (scan_sharing_clauses): Add new calls to
+ 	lang_hooks.decls.omp_array_data_privatize,
+ 	(lower_omp_target): Likewise.
+ 
+ 2026-06-10  tobby.li  <tobby.li@armchina.com>
+ 
+ 	* config/arm/arm-cpus.in (star-mc3): New CPU.
+ 	* config/arm/arm-tables.opt: Regenerate.
+ 	* config/arm/arm-tune.md: Regenerate.
+ 	* doc/invoke.texi: Update docs.
+ 
+ 2026-06-10  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR ipa/125699
+ 	* ipa-param-manipulation.cc (ipa_param_body_adjustments::prepare_debug_expressions): Fix
+ 	lifetime issue with m_dead_ssa_debug_equiv usage.
+ 
+ 2026-06-10  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+ 
+ 	* config/riscv/zicond.md (combined sCC splitters): Avoid using
+ 	PUT_MODE to change existing RTL.  Instead just generate a new node.
+ 
+ 2026-06-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/125686
+ 	* tree-vect-patterns.cc (synth_lshift_by_additions): Specify
+ 	pattern vector type.
+ 	(apply_binop_and_append_stmt): Likewise.
+ 	(vect_synth_mult_by_constant): Adjust.
+ 
+ 2026-06-09  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* config/avr/avr.cc: Fix typos in comments.
+ 	* config/avr/avr-c.cc: Same.
+ 	* config/avr/avr-passes.cc: Same.
+ 	* config/avr/avr-passes-fuse-move.h: Same.
+ 
+ 2026-06-09  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/125636
+ 	* config/i386/i386.md (extendqihi2): Use movsbl instead of movsbw.
+ 	Adjust the destination operand to use %k0 and update the mode
+ 	attribute accordingly.
+ 
+ 2026-06-09  Ciprian Arbone  <Ciprian.Arbone@microchip.com>
+ 	    Senthil Kumar Selvaraj  <saaadhu@gcc.gnu.org>
+ 
+ 	PR target/124077
+ 	* config/arm/arm.cc (thumb1_final_prescan_insn): Also skip
+ 	condition code update for thumb1_cbz instructions.
+ 	* config/arm/thumb1.md (thumb1_cbz): Use const0_rtx as the
+ 	recorded cc_op1 instead of operands[2].
+ 
+ 2026-06-09  Lino Hsing-Yu Peng  <linopeng@andestech.com>
+ 
+ 	* config/riscv/riscv-protos.h (enum altfmt_type): New.
+ 	* config/riscv/riscv-v.cc (emit_hard_vlmax_vsetvl): Pass
+ 	ALTFMT_NONE to gen_vsetvl.
+ 	(gen_no_side_effects_vsetvl_rtx): Pass ALTFMT_NONE to
+ 	gen_vsetvl_no_side_effects.
+ 	* config/riscv/riscv-vector-builtins-bases.cc: Include insn-attr.h.
+ 	(vsetvl::expand): Pass ALTFMT_NONE to gen_vsetvl_no_side_effects.
+ 	* config/riscv/riscv-vsetvl.cc (altfmt_to_str): New function.
+ 	(get_altfmt): New function.
+ 	(demand_flags): Add DEMAND_ALTFMT_P.
+ 	(altfmt_demand_type): New enum.
+ 	(vsetvl_info): Track altfmt.
+ 	(demand_system): Add altfmt compatibility, availability, and merge handling.
+ 	* config/riscv/riscv-vsetvl.def: Add altfmt rules.
+ 	* config/riscv/vector.md (altfmt): New attribute, numeric with
+ 	INVALID_ATTRIBUTE default.
+ 	(@vsetvl<mode>, vsetvl_vtype_change_only,
+ 	@vsetvl_discard_result<mode>, @vsetvl<mode>_no_side_effects,
+ 	*vsetvldi_no_side_effects_si_extend): Add altfmt operand.
+ 
+ 2026-06-09  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* config/avr/avr.md: Fix typos in comments.
+ 	* config/avr/avr-fixed.md: Same.
+ 	* config/avr/avr-passes.cc: Same
+ 	* config/avr/avr-passes-fuse-move.h: Same.
+ 
+ 2026-06-09  Wilco Dijkstra  <wilco.dijkstra@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve.md: Remove zeroing movprfx of merging MOV
+ 
+ 2026-06-09  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	PR target/125550
+ 	* config/aarch64/aarch64-simd.md
+ 	(*aarch64_combine_internal<mode>): Use zip1 instead of uzp1
+ 	to concatenate values residing in SIMD registers.
+ 	(*aarch64_combine_internal_be<mode>): Likewise.
+ 
+ 2026-06-09  JRobinNTA  <johnrobin044@gmail.com>
+ 
+ 	PR target/125395
+ 	* config/riscv/thead.cc (th_asm_output_opcode): Add VFCVT
+ 	and VFWCVT blocks. Add offset logic for static rounding suffixes.
+ 
+ 2026-06-09  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	PR middle-end/125621
+ 	* expmed.cc (make_tree): Fix CONST_POLY_INT case to pass type
+ 	instead of t, move it to its own switch case.
+ 
+ 2026-06-09  Monk Chiang  <monk.chiang@sifive.com>
+ 	     "Jim Wilson  <jimw@sifive.com>
+ 
+ 	* config/riscv/riscv-protos.h (riscv_zero_offset_address_bypass_p):
+ 	New function.
+ 	* config/riscv/riscv.cc (riscv_zero_offset_address_bypass_p): New
+ 	function.
+ 	* config/riscv/sifive-7.md: Add bypass definition.
+ 
+ 2026-06-09  Monk Chiang  <monk.chiang@sifive.com>
+ 
+ 	* config/riscv/riscv.cc (riscv_trampoline_init): Remove redundant
+ 	LUI instruction.
+ 
+ 2026-06-09  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* config/pdp11/pdp11.cc (pdp11_conditional_register_usage): Change i
+ 	from int to unsigned int.
+ 
+ 2026-06-09  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	PR rtl-optimization/125609
+ 	PR middle-end/122992
+ 	* hard-reg-set.h
+ 	(build_error_on_rvalue): New function.
+ 	(EXECUTE_IF_SET_IN_HARD_REG_SET): Call the function above.
+ 
+ 2026-06-09  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
+ 
+ 	* config/rs6000/amo.h (_AMO_LD): Add _AMO_LD_CS_EQ enumerator, gated on
+ 	_ARCH_FUTURE.
+ 	(amo_lwat_cas_eq, amo_lwat_scas_eq, amo_ldat_cas_eq,
+ 	amo_ldat_scas_eq): New compare-and-swap equal helper functions.
+ 	(_AMO_ERR_CMPSWP): New macro for error-attribute stubs on non-Future
+ 	targets.
+ 	* doc/extend.texi (PowerPC Atomic Memory Operation Functions): Document
+ 	new functions.
+ 
+ 2026-06-08  Sam James  <sam@gentoo.org>
+ 
+ 	* doc/tm.texi: Regenerate.
+ 
+ 2026-06-08  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/cpp.texi: Spell "command-line option" with a dash.
+ 	(Binary Resource Inclusion): Ditto.
+ 	* doc/fragments.texi (Target Fragment): Ditto.
+ 	* doc/gcc.texi: Ditto.
+ 	(Indices): Ditto.
+ 	* doc/gccint.texi: Ditto.
+ 	(Top): Ditto.
+ 	(Option Index): Ditto.
+ 	* doc/gcov.texi (Invoking Gcov): Ditto. And fix grammar.
+ 	* doc/gm2.texi (Compiler options): Ditto.
+ 	(Extensions): Ditto.
+ 	(The PIM system module): Ditto.
+ 	(The ISO system module): Ditto.
+ 	* doc/invoke.texi (Debugging Options): Ditto.
+ 	(AVR Options): Ditto.
+ 	* doc/lto.texi (LTO object file layout): Ditto.
+ 	(WHOPR): Ditto.
+ 	* doc/md.texi (Machine Constraints): Ditto.
+ 	* doc/objc.texi (Constant string objects): Ditto. And fix grammar.
+ 	(Exceptions): Ditto.
+ 	(Synchronization): Ditto.
+ 	* doc/tm.texi.in: Ditto. And standardize on "option" over
+ 	"flag".
+ 	(strategy): Ditto. And standardize on "option" over "switch"
+ 	and fix grammar.
+ 	* target.def: Ditto.
+ 	* doc/tm.texi: Regenerate.
+ 
+ 2026-06-08  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	* config/aarch64/aarch64-builtins.cc (enum aarch64_builtins):
+ 	Add AARCH64_PREFETCH_PLD_RANGE and AARCH64_PREFETCH_PLDX_RANGE.
+ 	(aarch64_init_prefetch_builtins): Add initialization of
+ 	__pld_range and __pldx_range.
+ 	(require_const_argument): Update to return the minval if value
+ 	is out of range.
+ 	(aarch64_expand_prefetch_range_builtin): New function.
+ 	(aarch64_general_expand_builtin): Add support for
+ 	AARCH64_PREFETCH_PLD_RANGE and AARCH64_PREFETCH_PLDX_RANGE.
+ 	* config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Add
+ 	__ARM_PREFETCH_RANGE macro.
+ 	* config/aarch64/aarch64.md (unspec): Add UNSPEC_PLDX_RANGE and
+ 	UNSPEC_PLD_RANGE
+ 	(aarch64_rprfm): New instruction.
+ 
+ 2026-06-08  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	* config/aarch64/aarch64.h (TARGET_FPRCVT): New macro definition.
+ 	* config/aarch64/aarch64.md (arches): Add fprcvt.
+ 	(arch_enabled): Add fprcvt.
+ 	(l<fcvt_pattern><su_optab><GPF_F16:mode><GPI:mode>2): Add
+ 	FEAT_FPRCVT variant.
+ 	(<optab>_trunchf<GPI:mode>2): Likewise.
+ 	(<optab>_trunc<fcvt_change_mode><GPI:mode>2): Likewise.
+ 	(fix_to_zero_extend<mode>di2): Likewise.
+ 	(<optab><fcvt_iesize><GPF:mode>2): Likewise.
+ 	(define_insn "aarch64_fp16_<optab><mode>hf2): Likewise.
+ 	* config/aarch64/iterators.md (fpw): Add SF and DF variants.
+ 
+ 2026-06-08  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	* config/aarch64/aarch64-simd-builtins.def: (lround): Add new
+ 	forms for new conversions.
+ 	(lroundu): Likewise.
+ 	(lceil): Likewise.
+ 	(lceilu): Likewise.
+ 	(lfloor): Likewise.
+ 	(lflooru): Likewise.
+ 	(lfrintn): Likewise.
+ 	(lfrintnu): Likewise.
+ 	* config/aarch64/arm_neon.h (vcvtd_s32_f64): New intrinsic.
+ 	(vcvtd_s32_f64): Likewise.
+ 	(vcvtd_u32_f64): Likewise.
+ 	(vcvts_s64_f32): Likewise.
+ 	(vcvts_u64_f32): Likewise.
+ 	(vcvtad_s32_f64): Likewise.
+ 	(vcvtad_u32_f64): Likewise.
+ 	(vcvtas_s64_f32): Likewise.
+ 	(vcvtas_u64_f32): Likewise.
+ 	(vcvtmd_s32_f64): Likewise.
+ 	(vcvtmd_u32_f64): Likewise.
+ 	(vcvtms_s64_f32): Likewise.
+ 	(vcvtms_u64_f32): Likewise.
+ 	(vcvtnd_s32_f64): Likewise.
+ 	(vcvtnd_u32_f64): Likewise.
+ 	(vcvtns_s64_f32): Likewise.
+ 	(vcvtns_u64_f32): Likewise.
+ 	(vcvtpd_s32_f64): Likewise.
+ 	(vcvtpd_u32_f64): Likewise.
+ 	(vcvtps_s64_f32): Likewise.
+ 	(vcvtps_u64_f32): Likewise.
+ 
+ 2026-06-08  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	* config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Add
+ 	__ARM_FEATURE_SSVE_FEXPA.
+ 	* config/aarch64/aarch64-sve-builtins-base.def (svexpa): Change
+ 	gating to streaming compatible if AARCH64_FL_SSVE_FEXPA is
+ 	supported.
+ 	* config/aarch64/aarch64-sve.md: Update gating to be enabled if
+ 	TARGET_SSVE_FEXPA.
+ 	* config/aarch64/aarch64.h (TARGET_SVE_FEXPA): New macro.
+ 	* config/aarch64/iterators.md (SVE_FP_UNARY_INT): Update FEXPA
+ 	gating.
+ 
+ 2026-06-08  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	* config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Add
+ 	__ARM_FEATURE_SSVE_BITPERM.
+ 	* config/aarch64/aarch64-sve-builtins-sve2.def:
+ 	Make sve-bitperm intrinsics streaming compatible.
+ 	* config/aarch64/aarch64-sve2.md: Change gating of sve-bitperm
+ 	instructions.
+ 	* config/aarch64/aarch64.h (TARGET_SVE_BITPERM): New macro.
+ 	(TARGET_SVE2_BITPERM): Removed.
+ 
+ 2026-06-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/125668
+ 	* tree-ssa-forwprop.cc (forward_propagate_addr_expr_1):
+ 	Preserve alignment of the original access also for propagating
+ 	into the LHS.
+ 
+ 2026-06-08  Richard Sandiford  <rdsandiford@googlemail.com>
+ 
+ 	PR tree-optimization/125653
+ 	* gimple-ssa-backprop.cc (backprop::process_var): Avoid early
+ 	return for SSA names that occur in abnormal phis.
+ 
+ 2026-06-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/125652
+ 	* tree-chrec.cc (chrec_fold_plus_poly_poly): Avoid UB
+ 	integer overflow in accumulating CHREC_RIGHT.
+ 
+ 2026-06-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/125646
+ 	* tree-vect-patterns.cc (vect_synth_mult_by_constant): Assign
+ 	vector type to the pattern def sequence stmts.
+ 
+ 2026-06-08  Andreas Schwab  <schwab@suse.de>
+ 
+ 	PR rtl-optimization/122992
+ 	* config/m68k/m68k.cc (m68k_conditional_register_usage): Fix
+ 	signedness of register number var.
+ 	(m68k_zero_call_used_regs): Fix missing declaration.
+ 
+ 2026-06-08  Richard Sandiford  <rdsandiford@googlemail.com>
+ 
+ 	* config/aarch64/aarch64-sve.md
+ 	(*aarch64_vec_duplicate_subvector<vconsv><vconq><mode>): Remove
+ 	<vconq> from name.
+ 
+ 2026-06-08  Richard Sandiford  <rdsandiford@googlemail.com>
+ 
+ 	* simplify-rtx.cc (simplify_context::simplify_unary_operation_1):
+ 	Simplify vec_duplicates of vec_duplicates.
+ 	* config/aarch64/aarch64-sve.md
+ 	(*aarch64_vec_duplicate_subvector<vconsv><vconq><mode>): Remove
+ 	nested vec_duplicate.
+ 
+ 2026-06-08  Richard Sandiford  <rdsandiford@googlemail.com>
+ 
+ 	* config/sh/sh.md (bswapsi): Remove can_create_pseudo_p () check.
+ 
+ 2026-06-08  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	* config/mips/sync.md (sync_old_<optab><mode>): Fix
+ 	uninitialized operand use.
+ 	(sync_new_<optab><mode>): Fix uninitialized operand use, use the
+ 	same expression for the set source of operand 0 and 1.
+ 
+ 2026-06-08  Naveen  <naveen.siddegowda@oss.qualcomm.com>
+ 
+ 	* match.pd: ((type) minmax (wide) a, wide (b)): New pattern.
+ 
+ 2026-06-07  Richard Sandiford  <rdsandiford@googlemail.com>
+ 
+ 	* doc/sourcebuild.texi: Document that check-function-bodies
+ 	automatically adds the check_function_bodies options.
+ 
+ 2026-06-07  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/125612
+ 	* tree-ssa-phiopt.cc (cond_store_replacement): For the case where
+ 	lhs is "known" to be nontrapping make sure there are no loads in
+ 	the middle bb.
+ 
+ 2026-06-07  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+ 
+ 	* config/sh/sh.md (bswapsi2): Move check for can_create_pseudos_p
+ 	into condition rather than FAILing.
+ 
+ 2026-06-07  John Ericson  <git@JohnEricson.me>
+ 
+ 	* gcc.cc (find_a_file): Remove mode parameter, because always
+ 	R_OK. Skip suffix logic, because suffix is always empty in that
+ 	case.
+ 	(read_specs): Remove mode from find_a_file call.
+ 	(find_a_program): Suffix is unconditional, inline mode constant.
+ 	(end_going_arg): Remove mode from find_a_file call.
+ 	(find_file): Remove mode from find_a_file call.
+ 	(driver::set_up_specs): Remove mode from find_a_file call.
+ 	(include_spec_function): Remove mode from find_a_file call.
+ 
+ 2026-06-07  John Ericson  <git@JohnEricson.me>
+ 
+ 	* gcc.cc (find_a_program): Inline find_a_file, instead of
+ 	calling.
+ 
+ 2026-06-07  Kwok Cheung Yeung  <kcyeung@baylibre.com>
+ 	    Andrew Stubbs  <ams@baylibre.com>
+ 	    Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	* gimplify.cc (compute_omp_iterator_count): Account for difference
+ 	in loop boundaries in Fortran.
+ 	(build_omp_iterator_loop): Change upper boundary condition for
+ 	Fortran.  Insert block statements into innermost loop.
+ 	(remove_unused_omp_iterator_vars): Copy block subblocks of old
+ 	iterator to new iterator and remove original.
+ 	(extract_base_bit_offset): Add iterator argument.  Remove iterator
+ 	variables from base.
+ 	(omp_accumulate_sibling_list): Add iterator argument to
+ 	extract_base_bit_offset.
+ 	* tree-pretty-print.cc (dump_block_node): Ignore BLOCK_SUBBLOCKS
+ 	containing iterator block statements.
+ 
+ 2026-06-06  Richard Sandiford  <rdsandiford@googlemail.com>
+ 
+ 	* optabs-query.cc (can_open_code_p): Use can_open_code_p rather
+ 	than can_implement_p when testing for AND and XOR.
+ 
+ 2026-06-06  Richard Sandiford  <rdsandiford@googlemail.com>
+ 
+ 	* optabs-query.cc (can_open_code_p): Handle more bswap cases,
+ 	incorporating logic from...
+ 	* gimple-ssa-store-merging.cc (maybe_optimize_vector_constructor)
+ 	(pass_optimize_bswap::execute)
+ 	(imm_store_chain_info::try_coalesce_bswap): ...here.  Use
+ 	can_open_code_p instead of direct optab_handler checks.
+ 
+ 2026-06-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/125611
+ 	* config/i386/sse.md (<ssse3_avx2>_pmulhrsw<mode>3, smulhrs<mode>3):
+ 	Use vector_operand instead of nonimmediate_operand.
+ 
+ 2026-06-06  Ramin Moussavi  <lordrasmus@gmail.com>
+ 
+ 	* config/csky/csky.h (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
+ 
+ 2026-06-05  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	* gimplify.cc (remove_unused_omp_iterator_vars): Don't warn about
+ 	possibly-unused iterator variables.  Simplify control flow of
+ 	remaining code.
+ 
+ 2026-06-05  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/125501
+ 	* tree-ssa-dom.cc (set_global_ranges_from_unreachable_edges): Abort
+ 	if there are 2 SSA_NAMES on the branch condition.
+ 
+ 2026-06-05  Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
+ 
+ 	PR rtl-optimization/124713
+ 	* avoid-store-forwarding.cc (process_store_forwarding): Re-apply
+ 	SIGN_EXTEND/ZERO_EXTEND after bit insert sequence when the load is
+ 	not eliminated.
+ 
+ 2026-06-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gimple-ssa-store-merging.cc (maybe_optimize_vector_constructor):
+ 	Also support bswap32 if bswapdi2 expander is present.  Add comment
+ 	about bswap64 support on 32-bit targets with bswapsi2 expander.
+ 	(pass_optimize_bswap::execute): Likewise.
+ 	* config/riscv/bitmanip.md (bswapsi2): Change condition to disable
+ 	the expander on TARGET_64BIT without TARGET_XTHEADBB, never FAIL.
+ 
+ 2026-06-05  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Richard Earnshaw  <richard.earnshaw@arm.com>
+ 
+ 	PR target/56102
+ 	PR middle-end/122871
+ 	* config/arm/arm.cc (thumb1_rtx_costs): Provide reasonable costs
+ 	for PLUS, MINUS, COMPARE, AND, XOR, IOR, NEG, NOT, ASHIFT,
+ 	ASHIFTRT and ROTATERT for SImode, DImode, HImode and QImode.
+ 	(thumb1_size_rtx_costs): Likewise.
+ 	(comp_not_to_clear_mask_str_un): Silence host compiler warning.
+ 
+ 2026-06-05  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	PR target/125538
+ 	* config/aarch64/aarch64-simd.md
+ 	(*aarch64_simd_dup_subvector<vcons><mode>): New insn pattern.
+ 	(*aarch64_simd_dup_subvectorv2qiqi): Likewise.
+ 	* config/aarch64/iterators.md (VSDUP): New mode iterator.
+ 	(VCONS): New mode attribute.
+ 	(vcons): Likewise.
+ 
+ 2026-06-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/125602
+ 	* tree-ssa-loop-niter.cc (number_of_iterations_until_wrap):
+ 	Avoid double negation for assumption condition.  Compute
+ 	negated step in niter_type.
+ 
+ 2026-06-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gimple-lower-bitint.cc (bitint_large_huge::lower_bswap_bitreverse):
+ 	Add OBJ argument, use it instead of m_vars[part] if non-NULL.  Don't
+ 	gsi_remove stmt.
+ 	(bitint_large_huge::lower_call): Adjust caller.
+ 	(bitint_large_huge::lower_stmt): Handle store of
+ 	IFN_BSWAP/IFN_BITREVERSE result.
+ 	(stmt_needs_operand_addr): Return true also for
+ 	IFN_BSWAP/IFN_BITREVERSE.
+ 	(build_bitint_stmt_ssa_conflicts): Formatting fix.
+ 	(gimple_lower_bitint): Allow merging IFN_BSWAP/IFN_BITREVERSE with
+ 	subsequent non-bitfield store.  Allow merging load of
+ 	IFN_{CLZ,CTZ,CLRSB,FFS,PARITY,POPCOUNT,BSWAP,BITREVERSE} argument
+ 	with the call.
+ 
+ 2026-06-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/122731
+ 	* doc/extend.texi (__builtin_bswapg, __builtin_bitreverseg): Document.
+ 	* internal-fn.def (DEF_INTERNAL_INTSZ_FN): Define.
+ 	(DEF_INTERNAL_INTSZ_EXT_FN): Define.
+ 	(BSWAP): New internal fn.
+ 	(BITREVERSE): Likewise.
+ 	* internal-fn.h (expand_BSWAP, expand_BITREVERSE): Declare.
+ 	* internal-fn.cc (DEF_INTERNAL_INTSZ_EXT_FN): Define.
+ 	(expand_BSWAP, expand_BITREVERSE): New functions.
+ 	* builtins.h (fold_build_builtin_bswapg_bitreverseg): Declare.
+ 	* builtins.cc (fold_build_builtin_bswapg_bitreverseg): New function.
+ 	* wide-int.h (wi::bswap): Fix up docs that only multiple of 8 bits
+ 	is required.
+ 	* gimple-match-exports.cc (build_call_internal): Handle IFN_BSWAP
+ 	and IFN_BITREVERSE.
+ 	* gencfn-macros.cc (internal_fn_intsz_names): New variable.
+ 	(intsz_suffixes): Likewise.
+ 	(suffix_lists): Add intsz_suffixes.
+ 	(main): Handle internal_fn_intsz_names.
+ 	* match.pd (BSWAP, BITREVERSE): Remove.
+ 	(popcount(bswap(x)) is popcount(x)): Use BSWAP BITREVERSE
+ 	op lists.
+ 	* tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p): Use
+ 	CASE_CFN_BSWAP and CASE_CFN_BITREVERSE.
+ 	(cond_removal_in_builtin_zero_pattern): Likewise.
+ 	* fold-const-call.cc (fold_const_call_ss): Likewise.
+ 	* fold-const.cc (tree_call_nonnegative_p): Likewise.
+ 	* gimple-lower-bitint.cc (struct bitint_large_huge): Declare
+ 	lower_bswap_bitreverse method.
+ 	(bitint_large_huge::lower_bswap_bitreverse): New method.
+ 	(bitint_large_huge::lower_call): Call it.
+ 	(build_bitint_stmt_ssa_conflicts): Set muldiv_p for IFN_BSWAP
+ 	and IFN_BITREVERSE.
+ 
+ 2026-06-05  Richard Sandiford  <rdsandiford@googlemail.com>
+ 
+ 	PR tree-optimization/125599
+ 	* gimple-ssa-backprop.cc (backprop::execute): Calculate the
+ 	transitive closure of replacement values.
+ 
+ 2026-06-05  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR rtl-optimization/125609
+ 	PR middle-end/122992
+ 	* rtl-ssa/insns.cc (function_info::record_call_clobbers): Use a
+ 	variable to store out the result of abi.full_reg_clobbers().
+ 
+ 2026-06-05  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* config/riscv/riscv.h (OPTION_DEFAULT_SPECS): Specify default
+ 	cmodel.
+ 
+ 2026-06-04  Richard Sandiford  <rdsandiford@googlemail.com>
+ 
+ 	* bitmap.cc (bitmap_elt_clear_from): Make static.  Require a
+ 	list view.
+ 	(bitmap_tree_listify_from): Delete.
+ 	(bitmap_list_view): Rewrite to avoid separate vectors.
+ 	(bitmap_clear): Switch to a list view before calling
+ 	bitmap_elt_clear_from and restore the original view afterwards.
+ 
+ 2026-06-04  Richard Sandiford  <rdsandiford@googlemail.com>
+ 
+ 	* bitmap.cc (bitmap_tree_unlink_element): Optimize the handling
+ 	of the maximal node.
+ 
+ 2026-06-04  Richard Sandiford  <rdsandiford@googlemail.com>
+ 
+ 	* bitmap.cc: Include pretty-print.h and splay-tree-utils.h.
+ 	(bitmap_splay_tree_accessors): New class.
+ 	(bitmap_splay_tree): New type.
+ 	(bitmap_first_set_bit_worker): Use bitmap_splay_tree::min_node
+ 	for tree views.
+ 	(bitmap_last_set_bit_worker): Use bitmap_splay_tree::max_node
+ 	for tree views.
+ 
+ 2026-06-04  Richard Sandiford  <rdsandiford@googlemail.com>
+ 
+ 	* bitmap.cc (bitmap_tree_link_element): Require callers to have
+ 	done a splay operation.  Avoid doing another one here.
+ 
+ 2026-06-04  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* config/riscv/multilib-generator: Support extra options in the
+ 	multilib config string.
+ 	* doc/install.texi (--with-multilib-generator): Document the extra
+ 	options syntax.
+ 
+ 2026-06-04  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* common/config/riscv/riscv-common.cc (riscv_supported_std_ext):
+ 	Move 'v' before 'p' and drop 'n' to match the spec.
+ 	* config/riscv/arch-canonicalize (CANONICAL_ORDER): Ditto.
+ 
+ 2026-06-04  Raphael Zinsly  <raphael.zinsly@oss.qualcomm.com>
+ 	    Jeff Law  <jeffrey.law@oss.qualcomm.com>
+ 
+ 	PR target/125387
+ 	* config/riscv/riscv.cc (riscv_rtx_costs): Recognize and properly cost
+ 	mulh instructions.
+ 
+ 2026-06-04  vekumar  <Venkataramanan.Kumar@amd.com>
+ 
+ 	* config/i386/x86-tune.def (X86_TUNE_FUSE_ALU_AND_BRANCH_MEM): Enable
+ 	for m_ZNVER6.
+ 	(X86_TUNE_FUSE_ALU_AND_BRANCH_MEM_IMM): Likewise.
+ 	(X86_TUNE_SSE_REDUCTION_PREFER_PSHUF): Likewise.
+ 
  2026-06-04  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
  
  	PR target/106895
diff -Nrcpad gcc-17-20260607/gcc/DATESTAMP gcc-17-20260614/gcc/DATESTAMP
*** gcc-17-20260607/gcc/DATESTAMP	Sun Jun  7 22:32:05 2026
--- gcc-17-20260614/gcc/DATESTAMP	Sun Jun 14 22:32:06 2026
***************
*** 1 ****
! 20260604
--- 1 ----
! 20260614
diff -Nrcpad gcc-17-20260607/gcc/ada/ChangeLog gcc-17-20260614/gcc/ada/ChangeLog
*** gcc-17-20260607/gcc/ada/ChangeLog	Sun Jun  7 22:32:05 2026
--- gcc-17-20260614/gcc/ada/ChangeLog	Sun Jun 14 22:32:06 2026
***************
*** 1,3 ****
--- 1,466 ----
+ 2026-06-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/125695
+ 	* libgnat/s-genbig.adb ("**"): Do not drop the sign on the floor.
+ 	(Big_Exp): Take into account the parity of the exponent for -2.
+ 
+ 2026-06-05  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Private_Extension_Declaration): Revert latest
+ 	change.
+ 	(Find_Type_Of_Subtype_Indic): Return Any_Type if Find_Type fails to
+ 	resolve the type.
+ 	* sem_ch12.adb (Analyze_Formal_Derived_Type): Restore more specific
+ 	error recovery path.
+ 
+ 2026-06-05  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* exp_ch6.adb (Needs_BIP_Collection): Fix condition.
+ 
+ 2026-06-05  Mathias Aparicio  <aparicio@adacore.com>
+ 
+ 	* libgnat/a-textio.adb
+ 	(Get_Upper_Half_Char, Get_Upper_Half_Char_Immed): Replace
+ 	Constraint_Error with Data_Error
+ 
+ 2026-06-05  Viljar Indus  <indus@adacore.com>
+ 
+ 	* sem_warn.adb (Warn_On_Suspicious_Index): Only check elements
+ 	that are coming from source.
+ 
+ 2026-06-05  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Private_Extension_Declaration): Be prepared
+ 	for Find_Type_Of_Subtype_Indic returning no type.
+ 	* sem_ch4.adb (Process_Generic_Instantiation): Give an error if the
+ 	generic instantation is referenced in a generic formal part.
+ 	* sem_ch12.adb (Analyze_Formal_Derived_Type): Return early in every
+ 	case of serious errors.
+ 
+ 2026-06-04  Viljar Indus  <indus@adacore.com>
+ 
+ 	* expander.adb: Handle pragma statements in the expander.
+ 	* sem_ch6.adb (Check_Statement_Sequence): Handle cases where
+ 	an ignored assertion pragma is at the end of a function body
+ 	that is known to trigger an assertion.
+ 	* sem_prag.adb (Analyze_Pragma): Remove the if-statement
+ 	creation for ignored pragmas. Relocate checks for assertion
+ 	pragma conditions that were performed on these transformed
+ 	if-statements here.
+ 	* sem_res.adb (Resolve_Short_Circuit): Remove the code for
+ 	ignored assertion pragmas.
+ 	* sem_util.adb (Original_Aspect_Pragma_Name): use the identifier
+ 	name for pragma Check only when it did not come from source.
+ 	* tbuild.adb (Make_Implicit_Loop_Statement): Adjust the code
+ 	for ignored Check pragmas.
+ 
+ 2026-06-04  Viljar Indus  <indus@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Pragma): Remove overflow supression
+ 	workaround.
+ 
+ 2026-06-04  Viljar Indus  <indus@adacore.com>
+ 
+ 	* ghost.adb (Set_Ghost_Mode): Create ignored ghost regions
+ 	for ignored pragamas.
+ 	* sem_prag.adb (Analyze_Pragma): Mark ignored pragmas checks as
+ 	ignored ghost pragmas.
+ 
+ 2026-06-04  Artur Pietrek  <pietrek@adacore.com>
+ 
+ 	* exp_ch7.adb (Make_Address_For_Finalize): check
+ 	Has_Controlled_Component predicate before emitting the shift to be
+ 	consistant with what Is_Constr_Array_Subt_With_Bounds says.
+ 
+ 2026-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* accessibility.adb (Type_Access_Level): Revert ealier change.
+ 	* sem_ch3.adb (Derive_Subprogram.Replace_Type): Set the Scope of
+ 	the new anonymous access type to the scope of the derived type.
+ 	Do not (temporarily) sets the Scope of the subprogram to itself.
+ 
+ 2026-06-04  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* errout.adb, exp_util.adb, sem_case.adb, sem_ch4.adb, sem_res.adb:
+ 	Replace low-lever inequality with a high-level routine.
+ 
+ 2026-06-04  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_intr.adb (Check_Intrinsic_Subprogram): Recognize pragmas that
+ 	do not come from source because they come from aspect specification.
+ 
+ 2026-06-04  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* opt.ads (Latest_Ada_Only): Remove.
+ 	* par-prag.adb (Prag): Adapt to removal.
+ 	* sem_prag.adb (Analyze_Pragma): Likewise.
+ 	* switch-c.adb (Scan_Front_End_Switches): Likewise.
+ 	* usage.adb (Usage): Likewise.
+ 
+ 2026-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* accessibility.ads (Apply_Accessibility_Check_For_Parameter):
+ 	Rename to...
+ 	(Apply_Accessibility_Check_For_Conversion): ...this.
+ 	* accessibility.adb (Apply_Accessibility_Check_For_Parameter):
+ 	Rename to...
+ 	(Apply_Accessibility_Check_For_Conversion): ...this.
+ 	* exp_attr.adb (Expand_N_Attribute_Reference) <Attribute_Access>:
+ 	Adjust to above renaming.
+ 	* exp_ch4.adb (Expand_N_Type_Conversion): Likewise.
+ 	* exp_ch6.adb (Expand_Actuals): Likewise.
+ 
+ 2026-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* einfo.ads (Is_Local_Anonymous_Access): Mention return objects.
+ 	* accessibility.adb (Type_Access_Level): Call Enclosing_Subprogram.
+ 	* sem_ch3.adb (Find_Type_Of_Object): Set Is_Local_Anonymous_Access
+ 	on the anonymous access type of return objects.
+ 
+ 2026-06-04  Steve Baird  <baird@adacore.com>
+ 
+ 	* libgnat/a-cbinho.adb (Adjust): Avoid null pointer dereference.
+ 
+ 2026-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* einfo.ads (Is_Local_Anonymous_Access): Mention access results.
+ 	* accessibility.adb (Accessibility_Level): Add missing guard on
+ 	the entity for error cases.  In the component cases, retrieve the
+ 	function call if the prefix is a captured function call.  Remove
+ 	the bypass returning the library level in a return context if the
+ 	prefix is a function call.  Call Function_Call_Or_Allocator_Level
+ 	in this case when the level of the prefix is tied to that of the
+ 	result of the enclosing function.
+ 	(Check_Return_Construct_Accessibility): Change the implementation
+ 	to do a bona-fide static accessibility check.
+ 	* sem_attr.adb (Resolve_Attribute) <Attribute_Access>: Merge the
+ 	implementations of the RM 3.10.2(28) rule for named and anonymous
+ 	access types.
+ 	* sem_ch6.adb (Analyze_Expression_Function): Set the Ekind of the
+ 	entity created for the body very early.
+ 	* sem_util.adb (In_Return_Value): Fix typo in comment.
+ 
+ 2026-06-04  Mathias Aparicio  <aparicio@adacore.com>
+ 
+ 	* sem_ch13.adb (Build_Discrete_Static_Predicate.Get_RList): If
+ 	case expression alternatives are False return False_Range.
+ 
+ 2026-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* einfo.ads (Extra_Accessibility): Rename to...
+ 	(Extra_Accessibility_Of_Object): ...this and adjust description.
+ 	* gen_il-fields.ads (Opt_Field_Enum): Replace Extra_Accessibility
+ 	with Extra_Accessibility_Of_Object.
+ 	* gen_il-gen-gen_entities.adb (Constant_Or_Variable_Kind): Ditto.
+ 	(Formal_Kind): Ditto.
+ 	* accessibility.ads (Effective_Extra_Accessibility): Rename to...
+ 	(Extra_Accessibility): ...this.
+ 	* accessibility.adb (Apply_Accessibility_Check_For_Parameter): Do
+ 	not manually look through renamings and adjust.
+ 	(Effective_Extra_Accessibility): Rename to...
+ 	(Extra_Accessibility): ...this and add guard.
+ 	* exp_ch3.adb (Expand_N_Object_Declaration): Adjust.
+ 	* exp_ch4.adb (Expand_N_Type_Conversion): Likewise.
+ 	* exp_ch5.adb (Expand_N_Assignment_Statement): Likewise.
+ 	* exp_ch6.adb (Expand_Actuals): Likewise.
+ 	* sem_ch3.adb (Derive_Subprogram): Likewise.
+ 	* sem_ch6.adb (Create_Extra_Formals): Likewise.
+ 
+ 2026-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_Allocator_Expression): In the case of access
+ 	discriminants, pass Zero_On_Dynamic_Level to compute the static
+ 	accessibility level of the expression.
+ 	* sem_res.adb (Check_Aliased_Parameter): Pass Zero_On_Dynamic_Level
+ 	to compute the static accessibility level of actual parameters.
+ 
+ 2026-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* accessibility.ads (Accessibility_Level_Kind): Tweak description.
+ 	* accessibility.adb (Function_Call_Or_Allocator_Level): Recurse on
+ 	the defining identifier for an N_Object_Declaration node.
+ 	(Accessibility_Level): Minor tweaks.
+ 	* exp_ch3.adb (Expand_N_Object_Declaration): Do not special case
+ 	function calls in the computation of accessibility levels.
+ 	* exp_ch5.adb (Expand_N_Assignment_Statement): Do not manually
+ 	compute the accessibility level of the LHS.
+ 
+ 2026-06-04  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* inline.adb (Establish_Actual_Mapping_For_Inlined_Call): Do not create
+ 	object declarations when actual is captured in an object renaming.
+ 
+ 2026-06-04  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_aux.adb (Is_Definite_Subtype): Only call Ekind if necessary.
+ 
+ 2026-06-04  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch13.adb (Rep_Item_Too_Late): Simplify with membership test.
+ 
+ 2026-06-04  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* freeze.adb, sem_ch13.adb: Tune whitespace.
+ 
+ 2026-06-04  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_In): Rewrite with True/False entity array.
+ 
+ 2026-06-04  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch9.adb (Scan_Declarations): Remove redundant guard.
+ 
+ 2026-06-04  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_util.adb (Full_Qualified_Name_String): Add assertions; fix style.
+ 
+ 2026-06-04  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): Store chars without
+ 	converting the actual parameters.
+ 	* exp_ch11.adb (Null_String): Likewise.
+ 	* exp_disp.adb (Make_DT): Likewise.
+ 	* exp_util.adb (Fully_Qualified_Name_String): Likewise.
+ 	* sem_attr.adb (Analyze_Attribute): Likewise.
+ 	* sem_dist.adb (Full_Qualified_Name): Likewise.
+ 	* sem_prag.adb (Process_Interface_Name, Set_Encoded_Interface_Name):
+ 	Likewise.
+ 	* stringt.adb (Store_String_Chars): Likewise.
+ 
+ 2026-06-04  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch9.adb (Analyze_Requeue): Fix unbalanced parens.
+ 
+ 2026-06-04  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch4.adb, sem_attr.adb, sem_ch3.adb: Use Access_Protected_Kind
+ 	and Access_Subprogram_Kind where possible.
+ 
+ 2026-06-04  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* adaint.c (__gnat_library_template): Move logic to gnatmake.
+ 	* make.adb (Get_Library_File): Use simple single template.
+ 
+ 2026-06-04  Viljar Indus  <indus@adacore.com>
+ 
+ 	* libgnat/g-comlin.adb (Getopt): Check if Switches
+ 	are empty before looking at the first element.
+ 
+ 2026-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* accessibility.ads: Alphabetize declarations.
+ 	(Subprogram_Access_Level): Beef up description.
+ 	* accessibility.adb (Accessibility_Level): Deal with formal objects
+ 	of generic subprograms.
+ 	* sem_ch12.adb (Analyze_Generic_Subprogram_Declaration): Set the
+ 	Is_Local_Anonymous_Access flag on the access result type, if any.
+ 	* libgnat/g-cppexc.ads (Get_Access_To_Tagged_Object): Do not declare
+ 	the formal type parameter as abstract.
+ 	* libgnat/g-cppexc.adb (Get_Access_To_Object): Fix illegal code.
+ 	(Get_Access_To_Tagged_Object): Likewise.
+ 
+ 2026-06-04  Steve Baird  <baird@adacore.com>
+ 
+ 	* exp_attr.adb (Build_And_Insert_Type_Attr_Subp): Test for subunit case before
+ 	concluding that a subprogram body has no enclosing declaration list.
+ 
+ 2026-06-04  Johannes Kanig  <kanig@adacore.com>
+ 
+ 	* inline.ads: Introduce two new Boolean flags
+ 	* inline.adb (Cannot_Inline): Modify the negative message into
+ 	a warning, and use new flag
+ 	* sem_res.adb (Resolve_Call): Use new flag to guard issue of msg
+ 	* debug.adb: Debug flag now unused for GNATprove
+ 
+ 2026-06-04  Tonu Naks  <naks@adacore.com>
+ 
+ 	* adaint.c (__gnat_copy_attribs): Fix call to SetFileTime
+ 
+ 2026-06-04  Viljar Indus  <indus@adacore.com>
+ 
+ 	* sem_ch12.adb (Analyze_Package_Instantiation): Remove
+ 	forced inlining in configurable run times.
+ 
+ 2026-06-04  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* sem_util.adb (Enclosing_Declaration): Refactor membership test.
+ 
+ 2026-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_attributes.rst (Valid_Scalars):
+ 	Remove reference to private tagged types.
+ 	* exp_attr.adb  (Expand_N_Attribute_Reference) <Valid_Scalars>: Do
+ 	not bail out for private tagged types.
+ 	* sem_attr.adb (Analyze_Attribute) <Valid_Scalars>: Do not warn for
+ 	for private tagged types.
+ 	* sem_ch3.adb (Is_Visible_Component): Accept any component reference
+ 	whose prefix is a type conversion that does not come from source.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2026-06-04  Mathias Aparicio  <aparicio@adacore.com>
+ 
+ 	* sem_ch13.ads (Is_Predicate_Static): Public declaration,
+ 	from the private function in the package body
+ 	* sem_ch13.adb (Is_Predicate_Static): Remove the now-redundant
+ 	local declaration
+ 	* exp_ch4.adb (Expand_N_Case_Expression): Add Is_Predicate_Static
+ 	to the static guard
+ 
+ 2026-06-04  Mathias Aparicio  <aparicio@adacore.com>
+ 
+ 	* adaint.c (__gnat_is_executable_file_attr): Initialize
+ 	attr->regular using __gnat_is_regular_file_attr. Directly return
+ 	0 before checking if executable if the attr->regular is 0.
+ 	Remove the now unnecessary check for invalid_file_attributes.
+ 
+ 2026-06-04  Claire Dross  <dross@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_aspects.rst (Aspect Iterable):
+ 	A Constant_Reference function can be supplied instead of an Element
+ 	function.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2026-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch3.adb (Is_Visible_Component): Fold Is_Local_Type predicate,
+ 	reason only on type entities, and tidy up specific processing added
+ 	for ACATS B730006 test.
+ 
+ 2026-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/a-tags.ads (Type_Specific_Data): Move Boolean components
+ 	to right after Natural components and put Is_Abstract last.
+ 	* exp_disp.adb (Make_DT): Adjust to above reordering.
+ 
+ 2026-06-04  Viljar Indus  <indus@adacore.com>
+ 
+ 	* ghost.adb (Is_OK_Statement): Avoid checking for policies and
+ 	levels when checking the context of the Initialized attribute.
+ 
+ 2026-06-04  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): Do not expand new
+ 	attribute.
+ 	* par-ch4.adb (Scan_Apostrophe): Parse 'At as an attribute reference;
+ 	otherwise, it would be parsed as a keyword.
+ 	* sem_attr.adb (Analyze_Attribute): Basic checks for new attribute.
+ 	(Eval_Attribute): New attribute will never be evaluated.
+ 	* snames.ads-tmpl: (Preset Names): "at" is now also an attribute, not
+ 	just a keyword.
+ 	(Attribute_Id): New attribute identifier.
+ 
+ 2026-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_util.ads (In_Reverse_Storage_Order_Object): Adjust.
+ 	* sem_util.adb (In_Reverse_Storage_Order_Object): Rewrite.
+ 
+ 2026-06-04  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* adaint.c (__gnat_prj_add_obj_files): Remove; files that referenced
+ 	this variable were removed years ago.
+ 
+ 2026-06-04  Mathias Aparicio  <aparicio@adacore.com>
+ 
+ 	* freeze.adb (Check_And_Freeze_Type): Emit a more precise error
+ 	message when a component's frozen record is incompletely defined
+ 	instead of printing private component error.
+ 	* sem_util.ads (Incompletely_Defined): New function that
+ 	traverses recursively a type and returns the first incompletely
+ 	defined component or itself if it is incompletely defined.
+ 	* sem_util.adb (Incompletely_Defined): Likewise.
+ 	(Is_Incompletely_Defined): Refactor to a test of the new
+ 	Incompletely_Defined function for equality with Empty.
+ 
+ 2026-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/124923
+ 	* exp_attr.adb  (Expand_N_Attribute_Reference) <Valid_Scalars>: Also
+ 	bail out for a private type whose full view alone is tagged.
+ 	* sem_attr.adb (Analyze_Attribute) <Valid_Scalars>: Also warn for a
+ 	private type whose only full view alone is tagged.
+ 
+ 2026-06-04  Steve Baird  <baird@adacore.com>
+ 
+ 	* exp_attr.adb
+ 	(Expand_N_Attribute_Reference.Build_And_Insert_Type_Attr_Subp):
+ 	handle the case of a library unit subprogram body; do not assume
+ 	that every subprogram body has an enclosing declaration list.
+ 
+ 2026-06-04  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* par-prag.adb (Prag): Fix order.
+ 	* sem_prag.adb (Analyze_Pragma, Sig_Flags): Likewise.
+ 	* snames.ads-tmpl (Preset Names, Pragma_Id): Likewise.
+ 
+ 2026-06-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/124923
+ 	* exp_attr.adb (Build_Record_VS_Func): Rename first parameter, fix
+ 	description and implement support for tagged extensions.
+ 	(Expand_N_Attribute_Reference) <Attribute_Valid_Scalars>: Also bail
+ 	out for the class-wide type of private tagged types and Adjust call
+ 	to Build_Record_VS_Func.
+ 	* sem_attr.adb (Analyze_Attribute) <Attribute_Valid_Scalars>: Also
+ 	warn for the class-wide type of private tagged types.
+ 	* sem_ch4.adb (Try_Selected_Component_In_Instance): Extend a special
+ 	case from instance bodies to whole instances.
+ 	* sem_util.ads (Validated_View): Adjust description.
+ 	* sem_util.adb (Validated_View): Do not recurse on the parent type
+ 	for tagged extensions.
+ 
+ 2026-06-04  Claire Dross  <dross@adacore.com>
+ 
+ 	* exp_ch5.adb (Expand_Formal_Container_Element_Loop): Use
+ 	Constant_Reference instead of Element if necessary.
+ 	* sem_ch13.adb (Resolve_Iterable_Operation): Check Constant_Reference.
+ 	(Validate_Iterable_Aspect): Handle Constant_Reference if supplied.
+ 	* sem_ch5.adb (Analyze_Loop_Parameter_Specification): Iteration over
+ 	elements of a container is allowed if Constant_Reference is supplied.
+ 	* sem_util.adb (Get_Iterable_Type_Primitive): Fix assertion.
+ 	* snames.ads-tmpl (Name_Constant_Reference): New name.
+ 
+ 2026-06-04  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* errout.adb (Set_Msg_Node): Improve readability of message for
+ 	constructors name, replacing the internal compiler name
+ 	generated for direct attribute definitions with a nicer name.
+ 	* erroutc.ads (Replace_With_Attribute_Definition): Promote from
+ 	a nested subprogram declaration to a public package-level
+ 	declaration.
+ 	* erroutc.adb (Replace_With_Attribute_Definition): Move its
+ 	implementation to package level.
+ 	* exp_attr.adb (Expand_N_Attribute_Reference [Attribute_Make]):
+ 	Code cleanup; handle assignment statement and limited type
+ 	object declaration.
+ 	* exp_ch3.adb (Build_Implicit_Parameterless_Constructor): Add
+ 	comment.
+ 	(Build_Default_Simple_Initialization): Add comment.
+ 	* exp_ch4.adb (Expand_N_Allocator): Fix No_Initialization for
+ 	internally generated allocators of types with constructors.
+ 	* exp_ch6.adb (Prepend_Constructor_Procedure_Prologue): Install
+ 	formals and refactor its body to be consistent with the GNAT
+ 	style.
+ 	* sem_ch3.adb (OK_For_Limited_Init_In_05): Accept T'Make since
+ 	it is semantically equivalent to a function call.
+ 	* sem_ch6.adb (Analyze_Direct_Attribute_Definition): Handle
+ 	incomplete and private type declarations.
+ 	* sem_ch13.adb (Diagnose_Misplaced_Aspects): Remove misleading
+ 	error for aspect 'Initializes.
+ 	* sem_res.adb (Resolve_Actuals): Skip check on the first actual
+ 	of init-proc and constructors because the constructor may be
+ 	invoked to initialize a constant object, which is allowed.
+ 
+ 2026-06-04  Johannes Kanig  <kanig@adacore.com>
+ 
+ 	* gnat1drv.adb (Gnat1drv): In GNATprove mode, call the
+ 	back end before exiting on compilation errors.
+ 
+ 2026-06-04  Johannes Kanig  <kanig@adacore.com>
+ 
+ 	* comperr.adb (Compiler_Abort): Use the SPARK bug-report URL in
+ 	GNATprove mode only, and keep the GCC bug-report URL for other
+ 	FSF tools.
+ 
  2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
  
  	* gcc-interface/decl.cc (gnat_to_gnu_entity) <E_Variable>: Validate
diff -Nrcpad gcc-17-20260607/gcc/ada/libgnat/s-genbig.adb gcc-17-20260614/gcc/ada/libgnat/s-genbig.adb
*** gcc-17-20260607/gcc/ada/libgnat/s-genbig.adb	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/ada/libgnat/s-genbig.adb	Sun Jun 14 22:32:06 2026
*************** package body System.Generic_Bignums is
*** 262,268 ****
           --  X ** 1 is X
  
           when 1 =>
!             return Normalize (X.D);
  
           --  X ** 2 is X * X
  
--- 262,268 ----
           --  X ** 1 is X
  
           when 1 =>
!             return Normalize (X.D, X.Neg);
  
           --  X ** 2 is X * X
  
*************** package body System.Generic_Bignums is
*** 331,344 ****
        elsif Y.Len > 1 then
           raise Storage_Error with "exponentiation result is too large";
  
!       --  Special case (+/-)2 ** K, where K is 1 .. 31 using a shift
  
        elsif X.Len = 1 and then X.D (1) = 2 and then Y.D (1) < 32 then
           declare
              D : constant Digit_Vector (1 .. 1) :=
                    [Shift_Left (SD'(1), Natural (Y.D (1)))];
           begin
!             return Normalize (D, X.Neg);
           end;
  
        --  Remaining cases have right operand of one word
--- 331,344 ----
        elsif Y.Len > 1 then
           raise Storage_Error with "exponentiation result is too large";
  
!       --  Special case (+/-)2 ** K, where K is in 1 .. 31, using a left shift
  
        elsif X.Len = 1 and then X.D (1) = 2 and then Y.D (1) < 32 then
           declare
              D : constant Digit_Vector (1 .. 1) :=
                    [Shift_Left (SD'(1), Natural (Y.D (1)))];
           begin
!             return Normalize (D, X.Neg and then (Y.D (1) and 1) = 1);
           end;
  
        --  Remaining cases have right operand of one word
diff -Nrcpad gcc-17-20260607/gcc/algol68/ChangeLog gcc-17-20260614/gcc/algol68/ChangeLog
*** gcc-17-20260607/gcc/algol68/ChangeLog	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/algol68/ChangeLog	Sun Jun 14 22:32:06 2026
***************
*** 1,3 ****
--- 1,41 ----
+ 2026-06-13  Jose E. Marchesi  <jemarch@gnu.org>
+ 
+ 	* a68-parser-brackets.cc: Include <string>.
+ 	(bracket_check_error): Get additional argument `item'.
+ 	(bracket_check_diagnose): Likewise.
+ 	(bracket_check_parse): Fix call to a68_error passing the `item'.
+ 
+ 2026-06-13  Jose E. Marchesi  <jemarch@gnu.org>
+ 
+ 	* a68-low.cc (a68_demangle_symbol): Fix typo, 'p' is the mangling
+ 	of '%', not of '+'.
+ 
+ 2026-06-13  Jose E. Marchesi  <jemarch@gnu.org>
+ 
+ 	* a68-low-generator.cc (a68_low_generator): Wrap the resulting
+ 	stmt_list into a nop_expr.
+ 
+ 2026-06-13  Jose E. Marchesi  <jemarch@gnu.org>
+ 
+ 	* a68-low-clauses.cc (a68_lower_collateral_clause): Check that
+ 	a68_lower_tree on the units list return NULL_TREE.
+ 
+ 2026-06-13  Jose E. Marchesi  <jemarch@gnu.org>
+ 
+ 	* a68-low-units.cc (a68_lower_formula): Consolidate operands of
+ 	formula before call.
+ 	(a68_lower_monadic_formula): Likewise.
+ 
+ 2026-06-12  Pietro Monteiro  <pietro@sociotechnical.xyz>
+ 
+ 	* a68-imports.cc (a68_try_suffixes): Use .dylib suffix on Darwin.
+ 	Use .dll suffix and optional lib prefix on Windows.
+ 
+ 2026-06-08  Jose E. Marchesi  <jemarch@gnu.org>
+ 
+ 	* a68-pretty-print.h (a68_attr_format_token): Get diagnostic
+ 	string from a68_attribute_name.
+ 
  2026-06-03  Jose E. Marchesi  <jemarch@gnu.org>
  
  	* ga68.texi (Worthy characters): Remove spurious @ entry in the
diff -Nrcpad gcc-17-20260607/gcc/algol68/a68-imports-archive.cc gcc-17-20260614/gcc/algol68/a68-imports-archive.cc
*** gcc-17-20260607/gcc/algol68/a68-imports-archive.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/algol68/a68-imports-archive.cc	Sun Jun 14 22:32:06 2026
***************
*** 19,32 ****
     <http://www.gnu.org/licenses/>.  */
  
  #define INCLUDE_MEMORY
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
  #include "vec.h"
  
- #include <map>
- #include <string>
- 
  #include "a68.h"
  
  
--- 19,31 ----
     <http://www.gnu.org/licenses/>.  */
  
  #define INCLUDE_MEMORY
+ #define INCLUDE_MAP
+ #define INCLUDE_STRING
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
  #include "vec.h"
  
  #include "a68.h"
  
  
diff -Nrcpad gcc-17-20260607/gcc/algol68/a68-imports.cc gcc-17-20260614/gcc/algol68/a68-imports.cc
*** gcc-17-20260607/gcc/algol68/a68-imports.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/algol68/a68-imports.cc	Sun Jun 14 22:32:06 2026
***************
*** 28,33 ****
--- 28,34 ----
     <http://www.gnu.org/licenses/>.  */
  
  #define INCLUDE_MEMORY
+ #define INCLUDE_STRING
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
***************
*** 41,48 ****
  #include "common/common-target.h"
  #include "dwarf2asm.h"
  
- #include <string>
- 
  #include "a68.h"
  
  /* A few macros to aid parsing of module map strings below.  */
--- 42,47 ----
*************** a68_try_suffixes (std::string *pfilename
*** 365,370 ****
--- 364,398 ----
  
    const char* basename = lbasename (pfilename->c_str());
    size_t basename_pos = basename - pfilename->c_str ();
+ 
+ #if TARGET_MACHO
+   /* Macos uses .dylib as extension for libraries.  */
+   filename = pfilename->substr (0, basename_pos) + "lib" + basename + ".dylib";
+   fd = open (filename.c_str (), O_RDONLY | O_BINARY);
+   if (fd >= 0)
+     {
+       *pfilename = filename;
+       return fd;
+     }
+ #elif TARGET_PECOFF
+   /* Windows uses .dll.  Maybe prefixed with lib.  */
+   filename = pfilename->substr (0, basename_pos) + "lib" + basename + ".dll";
+   fd = open (filename.c_str (), O_RDONLY | O_BINARY);
+   if (fd >= 0)
+     {
+       *pfilename = filename;
+       return fd;
+     }
+   /* Maybe not prefixed with lib.  */
+   filename = pfilename->substr (0, basename_pos) + basename + ".dll";
+   fd = open (filename.c_str (), O_RDONLY | O_BINARY);
+   if (fd >= 0)
+     {
+       *pfilename = filename;
+       return fd;
+     }
+ #else
+   /* Other supported systems use .so.  */
    filename = pfilename->substr (0, basename_pos) + "lib" + basename + ".so";
    fd = open (filename.c_str (), O_RDONLY | O_BINARY);
    if (fd >= 0)
*************** a68_try_suffixes (std::string *pfilename
*** 372,377 ****
--- 400,406 ----
        *pfilename = filename;
        return fd;
      }
+ #endif
  
    filename = pfilename->substr (0, basename_pos) + "lib" + basename + ".a";
    fd = open (filename.c_str (), O_RDONLY | O_BINARY);
*************** struct encoded_mode
*** 620,626 ****
  
      struct
      {
!       uint8_t sub_offset;
      } flex;
  
      struct
--- 649,655 ----
  
      struct
      {
!       uint64_t sub_offset;
      } flex;
  
      struct
diff -Nrcpad gcc-17-20260607/gcc/algol68/a68-low-clauses.cc gcc-17-20260614/gcc/algol68/a68-low-clauses.cc
*** gcc-17-20260607/gcc/algol68/a68-low-clauses.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/algol68/a68-low-clauses.cc	Sun Jun 14 22:32:06 2026
*************** a68_lower_collateral_clause (NODE_T *p A
*** 1072,1078 ****
    /* Lower the constituent units into a statements list.  */
    a68_push_stmt_list (mode);
    if (!clause_is_empty)
!     (void) a68_lower_tree (NEXT (SUB (p)), ctx);
    tree units = a68_pop_stmt_list ();
  
    /* The collateral clause lowers to different constructions depending on its
--- 1072,1083 ----
    /* Lower the constituent units into a statements list.  */
    a68_push_stmt_list (mode);
    if (!clause_is_empty)
!     {
!       if (a68_lower_tree (NEXT (SUB (p)), ctx) != NULL_TREE)
! 	/* unit lists always lower to NULL_TREE and, as a side-effect,
! 	   append the units to the current statements list.  */
! 	gcc_unreachable ();
!     }
    tree units = a68_pop_stmt_list ();
  
    /* The collateral clause lowers to different constructions depending on its
diff -Nrcpad gcc-17-20260607/gcc/algol68/a68-low-generator.cc gcc-17-20260614/gcc/algol68/a68-low-generator.cc
*** gcc-17-20260607/gcc/algol68/a68-low-generator.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/algol68/a68-low-generator.cc	Sun Jun 14 22:32:06 2026
*************** a68_low_generator (NODE_T *declarer,
*** 509,514 ****
--- 509,517 ----
        tree_stmt_iterator bounds_iter = tsi_start (bounds);
        tree gen = gen_mode (mode, &bounds_iter,
  			   heap ? a68_lower_malloc : a68_lower_alloca);
+       /* XXX ugly hack to avoid the resulting stmt_list to be coalesced
+ 	 on the current stmt_list in a68_lower_unit_list.  */
+       gen = build1 (NOP_EXPR, TREE_TYPE (gen), gen);
        return gen;
      }
  }
diff -Nrcpad gcc-17-20260607/gcc/algol68/a68-low-units.cc gcc-17-20260614/gcc/algol68/a68-low-units.cc
*** gcc-17-20260607/gcc/algol68/a68-low-units.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/algol68/a68-low-units.cc	Sun Jun 14 22:32:06 2026
*************** a68_lower_formula (NODE_T *p, LOW_CTX_T
*** 1017,1022 ****
--- 1017,1025 ----
  	  tree op = a68_lower_tree (NEXT (SUB (p)), ctx);
  	  tree arg2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx);
  
+ 	  arg1 = a68_consolidate_ref (MOID (SUB (p)), arg1);
+ 	  arg2 = a68_consolidate_ref (MOID (NEXT (NEXT (SUB (p)))), arg2);
+ 
  	  if (POINTER_TYPE_P (TREE_TYPE (op)))
  	    op = fold_build1 (INDIRECT_REF,
  			      TREE_TYPE (TREE_TYPE (op)),
*************** a68_lower_monadic_formula (NODE_T *p, LO
*** 1049,1054 ****
--- 1052,1058 ----
        tree op = a68_lower_tree (SUB (p), ctx);
        tree secondary = a68_lower_tree (NEXT (SUB (p)), ctx);
  
+       secondary = a68_consolidate_ref (MOID (NEXT (SUB (p))), secondary);
        if (POINTER_TYPE_P (TREE_TYPE (op)))
  	op = fold_build1 (INDIRECT_REF, TREE_TYPE (TREE_TYPE (op)), op);
        return build_call_expr_loc (a68_get_node_location (p), op, 1, secondary);
diff -Nrcpad gcc-17-20260607/gcc/algol68/a68-low.cc gcc-17-20260614/gcc/algol68/a68-low.cc
*** gcc-17-20260607/gcc/algol68/a68-low.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/algol68/a68-low.cc	Sun Jun 14 22:32:06 2026
*************** a68_demangle_symbol (const char *mname,
*** 207,213 ****
  	{
  	  switch (symbol[i])
  	    {
! 	    case 'p': demangled[o++] = '+'; break;
  	    case 'c': demangled[o++] = '^'; break;
  	    case 'a': demangled[o++] = '&'; break;
  	    case 'u': demangled[o++] = '+'; break;
--- 207,213 ----
  	{
  	  switch (symbol[i])
  	    {
! 	    case 'p': demangled[o++] = '%'; break;
  	    case 'c': demangled[o++] = '^'; break;
  	    case 'a': demangled[o++] = '&'; break;
  	    case 'u': demangled[o++] = '+'; break;
diff -Nrcpad gcc-17-20260607/gcc/algol68/a68-moids-diagnostics.cc gcc-17-20260614/gcc/algol68/a68-moids-diagnostics.cc
*** gcc-17-20260607/gcc/algol68/a68-moids-diagnostics.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/algol68/a68-moids-diagnostics.cc	Sun Jun 14 22:32:06 2026
***************
*** 19,24 ****
--- 19,25 ----
     along with GCC; see the file COPYING3.  If not see
     <http://www.gnu.org/licenses/>.  */
  
+ #define INCLUDE_STRING
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
***************
*** 27,34 ****
  #include "a68.h"
  #include "a68-pretty-print.h"
  
- #include <string>
- 
  /* Give accurate error message.  */
  
  const char *
--- 28,33 ----
diff -Nrcpad gcc-17-20260607/gcc/algol68/a68-parser-bottom-up.cc gcc-17-20260614/gcc/algol68/a68-parser-bottom-up.cc
*** gcc-17-20260607/gcc/algol68/a68-parser-bottom-up.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/algol68/a68-parser-bottom-up.cc	Sun Jun 14 22:32:06 2026
***************
*** 95,107 ****
       - reduce a sub-phrase starting at a branch, implemented by 'reduce_branch'.
  */
  
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
  #include "options.h"
  
- #include <string>
- 
  #include "a68.h"
  #include "a68-pretty-print.h"
  
--- 95,106 ----
       - reduce a sub-phrase starting at a branch, implemented by 'reduce_branch'.
  */
  
+ #define INCLUDE_STRING
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
  #include "options.h"
  
  #include "a68.h"
  #include "a68-pretty-print.h"
  
diff -Nrcpad gcc-17-20260607/gcc/algol68/a68-parser-brackets.cc gcc-17-20260614/gcc/algol68/a68-parser-brackets.cc
*** gcc-17-20260607/gcc/algol68/a68-parser-brackets.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/algol68/a68-parser-brackets.cc	Sun Jun 14 22:32:06 2026
***************
*** 20,25 ****
--- 20,26 ----
     <http://www.gnu.org/licenses/>.  */
  
  
+ #define INCLUDE_STRING
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
***************
*** 37,43 ****
  /* Intelligible diagnostics for the bracket checker.  */
  
  static void
! bracket_check_error (char *txt, int n, const char *bra, const char *ket)
  {
    BUFFER buf;
  
--- 38,45 ----
  /* Intelligible diagnostics for the bracket checker.  */
  
  static void
! bracket_check_error (char *txt, int n, const char *bra, const char *ket,
! 		     char **item)
  {
    BUFFER buf;
  
*************** bracket_check_error (char *txt, int n, c
*** 52,57 ****
--- 54,61 ----
  		(n > 0 ? strop_ket : strop_bra)) < 0)
      gcc_unreachable ();
  
+   *item = (n > 0 ? xstrdup (strop_ket) : xstrdup (strop_bra));
+   
    if (strlen (txt) > 0)
      a68_bufcat (txt, " or ", BUFFER_SIZE);
    a68_bufcat (txt, buf, BUFFER_SIZE);
*************** bracket_check_error (char *txt, int n, c
*** 60,66 ****
  /* Diagnose brackets in local branch of the tree.  */
  
  static char *
! bracket_check_diagnose (NODE_T *p)
  {
    int begins = 0, opens = 0, format_delims = 0, format_opens = 0;
    int subs = 0, ifs = 0, cases = 0, dos = 0;
--- 64,70 ----
  /* Diagnose brackets in local branch of the tree.  */
  
  static char *
! bracket_check_diagnose (NODE_T *p, char **item)
  {
    int begins = 0, opens = 0, format_delims = 0, format_opens = 0;
    int subs = 0, ifs = 0, cases = 0, dos = 0;
*************** bracket_check_diagnose (NODE_T *p)
*** 123,136 ****
      }
  
    A68 (edit_line)[0] = '\0';
!   bracket_check_error (A68 (edit_line), begins, "BEGIN", "END");
!   bracket_check_error (A68 (edit_line), opens, "(", ")");
!   bracket_check_error (A68 (edit_line), format_opens, "(", ")");
!   bracket_check_error (A68 (edit_line), format_delims, "$", "$");
!   bracket_check_error (A68 (edit_line), subs, "[", "]");
!   bracket_check_error (A68 (edit_line), ifs, "IF", "FI");
!   bracket_check_error (A68 (edit_line), cases, "CASE", "ESAC");
!   bracket_check_error (A68 (edit_line), dos, "DO", "OD");
    return A68 (edit_line);
  }
  
--- 127,140 ----
      }
  
    A68 (edit_line)[0] = '\0';
!   bracket_check_error (A68 (edit_line), begins, "BEGIN", "END", item);
!   bracket_check_error (A68 (edit_line), opens, "(", ")", item);
!   bracket_check_error (A68 (edit_line), format_opens, "(", ")", item);
!   bracket_check_error (A68 (edit_line), format_delims, "$", "$", item);
!   bracket_check_error (A68 (edit_line), subs, "[", "]", item);
!   bracket_check_error (A68 (edit_line), ifs, "IF", "FI", item);
!   bracket_check_error (A68 (edit_line), cases, "CASE", "ESAC", item);
!   bracket_check_error (A68 (edit_line), dos, "DO", "OD", item);
    return A68 (edit_line);
  }
  
*************** bracket_check_parse (NODE_T *top, NODE_T
*** 193,210 ****
  	p = q;
        else if (q == NO_NODE)
  	{
! 	  char *diag = bracket_check_diagnose (top);
! 	  a68_error (p, "incorrect nesting, check for %s",
! 		     (strlen (diag) > 0 ? diag : "missing or unmatched keyword"));
  	  longjmp (A68_PARSER (top_down_crash_exit), 1);
  	}
        else
  	{
! 	  char *diag = bracket_check_diagnose (top);
  	  a68_attr_format_token a (ATTRIBUTE (q));
  
! 	  a68_error (q, "unexpected %e, check for %s", &a,
! 		     (strlen (diag) > 0 ? diag : "missing or unmatched keyword"));
  	  longjmp (A68_PARSER (top_down_crash_exit), 1);
  	}
      }
--- 197,231 ----
  	p = q;
        else if (q == NO_NODE)
  	{
! 	  char *item = NULL;
! 	  char *diag = bracket_check_diagnose (top, &item);
! 	  if (strlen (diag) == 0)
! 	    a68_error (p, "incorrect nesting, check for missing or unmatched keyword");
! 	  else
! 	    {
! 	      std::string fmt1 = diag;
! 	      std::string fmt2 = "incorrect nesting, check for " + fmt1;
! 	      a68_error (p, fmt2.c_str (), item);
! 	      free (item);
! 	    }
  	  longjmp (A68_PARSER (top_down_crash_exit), 1);
  	}
        else
  	{
! 	  char *item = NULL;
! 	  char *diag = bracket_check_diagnose (top, &item);
  	  a68_attr_format_token a (ATTRIBUTE (q));
  
! 	  if (strlen (diag) == 0)
! 	    a68_error (q, "unexpected %e, check for missing or unmatched keyword",
! 		       &a);
! 	  else
! 	    {
! 	      std::string fmt1 = diag;
! 	      std::string fmt2 = "unexpected %e, check for " + fmt1;
! 	      a68_error (q, fmt2.c_str (), &a, item);
! 	      free (item);
! 	    }
  	  longjmp (A68_PARSER (top_down_crash_exit), 1);
  	}
      }
diff -Nrcpad gcc-17-20260607/gcc/algol68/a68-pretty-print.h gcc-17-20260614/gcc/algol68/a68-pretty-print.h
*** gcc-17-20260607/gcc/algol68/a68-pretty-print.h	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/algol68/a68-pretty-print.h	Sun Jun 14 22:32:06 2026
*************** struct a68_attr_format_token : public a6
*** 129,139 ****
  public:
    a68_attr_format_token (enum a68_attribute a)
    {
!     KEYWORD_T *nt = a68_find_keyword_from_attribute (A68 (top_keyword), a);
!     if (nt != NO_KEYWORD)
!       m_str = xstrdup (a68_strop_keyword (TEXT (nt)));
!     else
!       m_str = xstrdup ("keyword");
    }
  };
  
--- 129,137 ----
  public:
    a68_attr_format_token (enum a68_attribute a)
    {
!     const char *attr_name = a68_attribute_name (a);
!     gcc_assert (attr_name != NULL);
!     m_str = xstrdup (attr_name);
    }
  };
  
diff -Nrcpad gcc-17-20260607/gcc/c/ChangeLog gcc-17-20260614/gcc/c/ChangeLog
*** gcc-17-20260607/gcc/c/ChangeLog	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/c/ChangeLog	Sun Jun 14 22:32:07 2026
***************
*** 1,3 ****
--- 1,29 ----
+ 2026-06-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/125694
+ 	* c-parser.cc (c_parser_postfix_expression): If arg is
+ 	error_operand_p, set error and break.
+ 
+ 2026-06-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/125629
+ 	* c-parser.cc (c_parser_postfix_expression) <case RID_BUILTIN_BSWAPG>:
+ 	Call c_fully_fold on the argument before calling
+ 	fold_build_builtin_bswapg_bitreverseg.
+ 
+ 2026-06-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/122731
+ 	* c-parser.cc (c_parser_postfix_expression): Parse
+ 	__builtin_bswapg and __builtin_bitreverseg.
+ 
+ 2026-06-04  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	* c-decl.cc (grokdeclarator): Likewise.
+ 	* c-typeck.cc (c_verify_type,c_build_array_type,
+ 	c_expr_countof_expr,comptypes_internal): Use top_array_vla_p.
+ 	(top_array_vla_p): Rename to use _p convention and simplify.
+ 
  2026-06-03  Martin Uecker  <uecker@tugraz.at>
  
  	PR c/125252
diff -Nrcpad gcc-17-20260607/gcc/c/c-parser.cc gcc-17-20260614/gcc/c/c-parser.cc
*** gcc-17-20260607/gcc/c/c-parser.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/c/c-parser.cc	Sun Jun 14 22:32:07 2026
*************** c_parser_postfix_expression (c_parser *p
*** 13564,13569 ****
--- 13564,13574 ----
  	    c_expr_t *arg_p = &(*cexpr_list)[0];
  	    *arg_p = convert_lvalue_to_rvalue (loc, *arg_p, true, true);
  	    tree arg = arg_p->value;
+ 	    if (error_operand_p (arg))
+ 	      {
+ 		expr.set_error ();
+ 		break;
+ 	      }
  	    tree type = TYPE_MAIN_VARIANT (TREE_TYPE (arg));
  	    if (!INTEGRAL_TYPE_P (type))
  	      {
*************** c_parser_postfix_expression (c_parser *p
*** 13600,13605 ****
--- 13605,13611 ----
  		expr.set_error ();
  		break;
  	      }
+ 	    arg = c_fully_fold (arg, false, NULL);
  	    expr.value = fold_build_builtin_bswapg_bitreverseg (loc, ifn, arg);
  	    set_c_expr_source_range (&expr, loc, close_paren_loc);
  	    break;
diff -Nrcpad gcc-17-20260607/gcc/c-family/ChangeLog gcc-17-20260614/gcc/c-family/ChangeLog
*** gcc-17-20260607/gcc/c-family/ChangeLog	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/c-family/ChangeLog	Sun Jun 14 22:32:06 2026
***************
*** 1,3 ****
--- 1,35 ----
+ 2026-06-08  Zhou Qiankang  <wszqkzqk@qq.com>
+ 
+ 	PR c++/125642
+ 	* c-cppbuiltin.cc (c_cpp_builtins): Don't define __FRACT_FBIT__
+ 	in C++.
+ 
+ 2026-06-06  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	PR c/125618
+ 	* c-common.cc (complete_array_type): Change back to using
+ 	build_range_type.
+ 
+ 2026-06-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/122731
+ 	* c-common.h (enum rid): Add RID_BUILTIN_BSWAPG and
+ 	RID_BUILTIN_BITREVERSEG.
+ 	* c-common.cc (c_common_reswords): Add __builtin_bswapg
+ 	and __builtin_bitreverseg.
+ 
+ 2026-06-04  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	PR c/125072
+ 	* c-ubsan.cc (get_index_from_offset,get_index_from_pointer_addr_expr,
+ 	is_instrumentable_pointer_array_address): Return factor.
+ 	(ubsan_maybe_instrument_array_ref): Apply factor.
+ 
+ 2026-06-04  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	* c-common.cc (complete_array_type): Use build_index_type.
+ 	* c-ubsan.cc (ubsan_instrument_bounds_pointer_address): Likewise.
+ 
  2026-06-02  Christopher Bazley  <chris.bazley@arm.com>
  
  	* c-attribs.cc (handle_optimize_attribute):
diff -Nrcpad gcc-17-20260607/gcc/c-family/c-cppbuiltin.cc gcc-17-20260614/gcc/c-family/c-cppbuiltin.cc
*** gcc-17-20260607/gcc/c-family/c-cppbuiltin.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/c-family/c-cppbuiltin.cc	Sun Jun 14 22:32:06 2026
*************** c_cpp_builtins (cpp_reader *pfile)
*** 1378,1384 ****
      }
  
    /* For fixed-point fibt, ibit, max, min, and epsilon.  */
!   if (targetm.fixed_point_supported_p ())
      {
        builtin_define_fixed_point_constants ("SFRACT", "HR",
  					    short_fract_type_node);
--- 1378,1384 ----
      }
  
    /* For fixed-point fibt, ibit, max, min, and epsilon.  */
!   if (!c_dialect_cxx () && targetm.fixed_point_supported_p ())
      {
        builtin_define_fixed_point_constants ("SFRACT", "HR",
  					    short_fract_type_node);
diff -Nrcpad gcc-17-20260607/gcc/cobol/ChangeLog gcc-17-20260614/gcc/cobol/ChangeLog
*** gcc-17-20260607/gcc/cobol/ChangeLog	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/cobol/ChangeLog	Sun Jun 14 22:32:07 2026
***************
*** 1,3 ****
--- 1,124 ----
+ 2026-06-11  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* move.cc (mh_packed_to_packed): Moved.
+ 	(mh_numdisp_to_packed): New function.
+ 	(move_helper): Use mh_numdisp_to_packed().
+ 	(hex_msg): New debugging function.
+ 	* parse.y: Enable __gg__char_national().
+ 
+ 2026-06-10  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* move.cc (parser_move): Don't compile hex_of function.
+ 	(hex_of): Likewise.
+ 	(mh_packed_to_packed): Eliminated commented-out calls to hex_of.
+ 
+ 2026-06-09  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* Make-lang.in: Incorporate new move.cc file.
+ 	* genapi.cc (gg_attribute_bit_get): Removed.
+ 	(treeplet_fill_source): Moved.
+ 	(file_static_variable): Likewise.
+ 	(move_helper): Likewise.
+ 	(parser_initialize_programs): Use pointer without converting to
+ 	size_t.
+ 	(get_binary_value_from_float): Moved.
+ 	(gg_attribute_bit_clear): Removed.
+ 	(gg_attribute_bit_set): Removed.
+ 	(digits_to_bytes): Moved.
+ 	(get_bytes_needed): Moved.
+ 	(data_decl_type_for): Moved.
+ 	(parser_display_internal): Forward reference to move_helper.
+ 	(get_literalN_value): Moved.
+ 	(is_figconst_t): Moved.
+ 	(parser_initialize_table): Moved.
+ 	(is_figconst): Moved.
+ 	(parser_move): Moved.
+ 	(parser_move_multi): Moved.
+ 	(parser_division): Use function_address as pointer in call to
+ 	__gg__is_canceled.
+ 	(conditional_abs): Moved.
+ 	(get_reference_to_data): Moved.
+ 	(mh_identical): Moved.
+ 	(mh_source_is_literalN): Moved.
+ 	(float_type_of): Moved.
+ 	(mh_dest_is_float): Moved.
+ 	(picky_memset): Moved.
+ 	(picky_memcpy): Moved.
+ 	(mh_numeric_display): Moved.
+ 	(mh_little_endian): Moved.
+ 	(mh_source_is_group): Moved.
+ 	(mh_source_is_literalA): Moved.
+ 	(have_common_parent): Moved.
+ 	(mh_alpha_to_alpha): Moved.
+ 	* genapi.h (move_helper): New declaration.
+ 	* gengen.cc (gg_cast): Changes to someday detect aliasing
+ 	conditions.
+ 	(gg_show_type): Expand types.
+ 	(gg_indirect_i): Take a size_t parameter.
+ 	(gg_array_value): Use gg_cast() wrapper instead of fold_convert().
+ 	(gg_memchr): Likewise.
+ 	(gg_strcmp): Likewise.
+ 	(gg_strncmp): Likewise.
+ 	(gg_strlen): Likewise.
+ 	(gg_strdup): Likewise.
+ 	(gg_malloc): Likewise.
+ 	(gg_realloc): Moved.
+ 	* gengen.h (gg_indirect_i): New declaration.
+ 	* genutil.cc (get_location): Starting to look for aliasing.
+ 	(treeplet_fill_source): Moved.
+ 	(data_decl_type_for): Moved.
+ 	(attribute_bit_clear): Moved.
+ 	(attribute_bit_get): Moved.
+ 	(attribute_bit_set): Moved.
+ 	* genutil.h (treeplet_fill_source): New declaration.
+ 	(data_decl_type_for): Likewise.
+ 	(attribute_bit_clear): Likewise.
+ 	(attribute_bit_get): Likewise.
+ 	(attribute_bit_set): Likewise.
+ 	* move.cc: New file.
+ 
+ 2026-06-05  Robert Dubner  <rdubner@symas.com>
+ 
+ 	PR cobol/125616
+ 	* lang.opt.urls: Regenerated.
+ 
+ 2026-06-05  Robert Dubner  <rdubner@symas.com>
+ 
+ 	PR cobol/125616
+ 	* genapi.cc (parser_enter_file): New __gg__dialects variable.
+ 	(parser_division): Likewise.
+ 	* genutil.cc: Likewise.
+ 	* genutil.h: Likewise.
+ 	* lang.opt.urls: Updated.
+ 	* symbols.h (enum cbl_dialect_t): Move this enum to common-defs.h.
+ 
+ 2026-06-04  Xavier Del Campo Romero  <xdelcampo@symas.com>
+ 
+ 	* lang.opt.urls: Regenerate
+ 
+ 2026-06-04  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* genapi.cc (handle_gg_trim): Provide an array of characters to the
+ 	library function.
+ 	(parser_trim): New function that handles the optional trim chars.
+ 	(parser_intrinsic_call_2): Remove __gg__handling from this routine.
+ 	* genapi.h (parser_trim): New declaration.
+ 	* parse.y: Calls parser_trim() with the list of trim chars.
+ 
+ 2026-06-04  Xavier Del Campo Romero  <xdelcampo@symas.com>
+ 
+ 	* Make-lang.in: Make $(libsubdir) available to cobol1.o.
+ 	* cobol1.cc (struct GTY): Add dir_separator.
+ 	(libcompat_copybook): New function.
+ 	(libposix_copybook): New function.
+ 	(append_copybook_prefix): New function.
+ 	(cobol_langhook_handle_option): New function.
+ 	(cobol_langhook_post_options): New function.
+ 	(LANG_HOOKS_POST_OPTIONS): New function.
+ 	* gcobolspec.cc (lang_specific_driver): Remove path searches.
+ 	* lang-specs.h: Honor %{B*} and %I.
+ 	* lang.opt: Support -B and -idirafter.
+ 
  2026-06-02  Robert Dubner  <rdubner@symas.com>
  
  	* compare.cc (cobol_compare_relop): Rename the cobol_compare_relop
diff -Nrcpad gcc-17-20260607/gcc/cobol/Make-lang.in gcc-17-20260614/gcc/cobol/Make-lang.in
*** gcc-17-20260607/gcc/cobol/Make-lang.in	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/cobol/Make-lang.in	Sun Jun 14 22:32:07 2026
*************** cobol1_OBJS =    \
*** 72,77 ****
--- 72,78 ----
   cobol/genmath.o    \
   cobol/gengen.o     \
   cobol/lexio.o      \
+  cobol/move.o       \
   cobol/messages.o   \
   cobol/parse.o      \
   cobol/scan.o       \
diff -Nrcpad gcc-17-20260607/gcc/cobol/genapi.cc gcc-17-20260614/gcc/cobol/genapi.cc
*** gcc-17-20260607/gcc/cobol/genapi.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/cobol/genapi.cc	Sun Jun 14 22:32:07 2026
*************** extern int yylineno;
*** 62,70 ****
  #define TSI_BACK (tsi_last(current_function->statement_list_stack.back()))
  
  extern char *cobol_name_mangler(const char *cobol_name);
- static tree gg_attribute_bit_get( struct cbl_field_t *var,
-                                   cbl_field_attr_t bits);
- 
  static tree label_list_out_goto;
  static tree label_list_out_label;
  static tree label_list_back_goto;
--- 62,67 ----
*************** line_tick()
*** 118,164 ****
  #define line_tick()
  #endif
  
! typedef struct TREEPLET
!   {
!   tree pfield;
!   tree offset;
!   tree length;
!   } TREEPLET;
! 
! static
! void
! treeplet_fill_source(TREEPLET &treeplet, const cbl_refer_t &refer)
!   {
!   if( refer_is_clean(refer) )
!     {
!     treeplet.pfield = gg_get_address_of(refer.field->var_decl_node);
!     treeplet.offset = size_t_zero_node;
!     treeplet.length = refer_size_source(refer);
!     }
!   else
!     {
!     treeplet.pfield = gg_get_address_of(refer.field->var_decl_node);
!     treeplet.offset = refer_offset(refer);
!     treeplet.length = refer_size_source(refer);
!     }
!   }
! 
! tree file_static_variable(tree type, const char *v)
    {
    // This routine returns a reference to an already-defined file_static
    // variable. You need to know the type that was used for the definition.
    return gg_declare_variable(type, v, NULL, vs_file_static);
    }
  
- static void move_helper(tree        size_error,  // INT
-                         cbl_refer_t destref,
-                         cbl_refer_t sourceref,
-                         TREEPLET    &tsource,
-                         cbl_round_t rounded,
-                         bool check_for_error,
-                         bool restore_on_error = false
-                         );
- 
  // set using -f-trace-debug, defined in lang.opt
  int f_trace_debug;
  
--- 115,128 ----
  #define line_tick()
  #endif
  
! tree
! file_static_variable(tree type, const char *v)
    {
    // This routine returns a reference to an already-defined file_static
    // variable. You need to know the type that was used for the definition.
    return gg_declare_variable(type, v, NULL, vs_file_static);
    }
  
  // set using -f-trace-debug, defined in lang.opt
  int f_trace_debug;
  
*************** parser_initialize_programs( size_t nprog
*** 945,951 ****
                                                          COBOL_FUNCTION_RETURN_TYPE);
      gg_call(VOID,
              "__gg__to_be_canceled",
!             gg_cast(SIZE_T, function_pointer),
              NULL_TREE);
      }
    }
--- 909,915 ----
                                                          COBOL_FUNCTION_RETURN_TYPE);
      gg_call(VOID,
              "__gg__to_be_canceled",
!             function_pointer,
              NULL_TREE);
      }
    }
*************** parser_initialize(const cbl_refer_t& ref
*** 1643,1724 ****
      }
    }
  
- static void
- get_binary_value_from_float(tree         value,
-                       const cbl_refer_t &dest,
-                             cbl_field_t *source,
-                             tree         source_offset
-                             )
-   {
-   // The destination is something with rdigits; the source is FldFloat
-   tree ftype;
-   switch( source->data.capacity() )
-     {
-     case 4:
-       ftype = FLOAT;
-       break;
-     case 8:
-       ftype = DOUBLE;
-       break;
-     case 16:
-       ftype = FLOAT128;
-       break;
-     default:
-       gcc_unreachable();
-       break;
-     }
-   tree fvalue = gg_define_variable(ftype);
-   gg_assign(fvalue,
-             gg_indirect(gg_cast(build_pointer_type(ftype),
-                                 gg_add( member(source->var_decl_node,"data"),
-                                         source_offset))));
- 
-   // We need to convert the floating point value to an integer value with the
-   // rdigits lined up properly.
- 
-   int rdigits = get_scaled_rdigits( dest.field );
-   gg_assign(fvalue,
-             gg_multiply(fvalue,
-                         gg_float(ftype,
-                                  wide_int_to_tree(INT,
-                                                   get_power_of_ten(rdigits)))));
- 
-   // And we need to throw away any digits to the left of the leftmost digits:
-   // At least, we need to do so in principle.  I am deferring this problem until
-   // I understand it better.
- 
-   // We now have a floating point value that has been multiplied by 10**rdigits
-   gg_assign(value, gg_trunc(TREE_TYPE(value), fvalue));
-   }
- 
- #pragma GCC diagnostic push
- #pragma GCC diagnostic ignored "-Wunused-function"
- static void
- gg_attribute_bit_clear(struct cbl_field_t *var, cbl_field_attr_t bits)
-   {
-   gg_assign(  member(var, "attr"),
-               gg_bitwise_and( member(var, "attr"),
-                               gg_bitwise_not( build_int_cst_type(SIZE_T, bits) )));
-   }
- 
- static
- tree
- gg_attribute_bit_get(struct cbl_field_t *var, cbl_field_attr_t bits)
-   {
-   tree retval = gg_bitwise_and( member(var, "attr"),
-                                 build_int_cst_type(SIZE_T, bits) );
-   return retval;
-   }
- 
- static void
- gg_attribute_bit_set(struct cbl_field_t *var, cbl_field_attr_t bits)
-   {
-   gg_assign(  member(var, "attr"),
-               gg_bitwise_or(member(var, "attr"),
-                             build_int_cst_type(SIZE_T, bits)));
-   }
- #pragma GCC diagnostic pop
- 
  static
  void
  depending_on_value(tree depending_on, cbl_field_t *current_sizer)
--- 1607,1612 ----
*************** depending_on_value(tree depending_on, cb
*** 1745,1858 ****
      }
    }
  
- static int
- digits_to_bytes(int digits)
-   {
-   int retval;
-   if( digits <= 2 )
-     {
-     retval = 1;
-     }
-   else if( digits <= 4 )
-     {
-     retval = 2;
-     }
-   else if( digits <= 9 )
-     {
-     retval = 4;
-     }
-   else if( digits <= 18 )
-     {
-     retval = 8;
-     }
-   else
-     {
-     retval = 16;
-     }
-   return retval;
-   }
- 
- static size_t
- get_bytes_needed(cbl_field_t *field)
-   {
-   size_t retval = 0;
-   switch(field->type)
-     {
-     case FldIndex:
-     case FldPointer:
-     case FldFloat:
-     case FldLiteralN:
-       retval = field->data.capacity();
-       break;
- 
-     case FldNumericDisplay:
-       {
-       int digits;
-       if( field->attr & scaled_e && field->data.rdigits<0)
-         {
-         digits = field->data.digits + -field->data.rdigits;
-         }
-       else
-         {
-         digits = field->data.digits;
-         }
-       retval = digits_to_bytes(digits);
-       break;
-       }
- 
-     case FldPacked:
-       {
-       int digits;
-       if( field->attr & scaled_e && field->data.rdigits<0)
-         {
-         digits = field->data.digits + -field->data.rdigits;
-         }
-       else
-         {
-         digits = field->data.digits;
-         }
-       if( !(field->attr & separate_e) )
-         {
-         // This is COMP-3, so there is a sign nybble.
-         digits += 1;
-         }
-       retval = (digits+1)/2;
-       break;
-       }
- 
-     case FldNumericBinary:
-     case FldNumericBin5:
-       {
-       if( field->data.digits )
-         {
-         int digits;
-         if( field->attr & scaled_e && field->data.rdigits<0)
-           {
-           digits = field->data.digits + -field->data.rdigits;
-           }
-         else
-           {
-           digits = field->data.digits;
-           }
-         retval = digits_to_bytes(digits);
-         }
-       else
-         {
-         retval = field->data.capacity();
-         }
-       break;
-       }
- 
-     default:
-       cbl_internal_error("%s: Knows not the variable type %s for %s",
-               __func__,
-               cbl_field_type_str(field->type),
-               field->name );
-       break;
-     }
-   return retval;
-   }
- 
  static tree
  tree_type_from_field_type(cbl_field_t *field, size_t &nbytes)
    {
--- 1633,1638 ----
*************** dirty_to_binary(const char  *instring,
*** 3895,4029 ****
    return value;
    }
  
- static tree
- data_decl_type_for(cbl_field_t *field)
-   {
-   // The idea behind this function is to provide a useful data_type for the
-   // the data_decl_node for the field.  Where we can get it right, we do, like
-   // for little-endian FldNumericBin3.  For other types of 1, 2, 4, 8, or 16
-   // bytes, we alias it to uint8_t, uint16_t, and so on.  The idea there is to
-   // be able to create efficient GENERIC for doing moves between identical
-   // types.  Otherwise we generate a type for an array of uint8_t.
-   tree retval = NULL_TREE;
-   switch(field->type)
-     {
-     case FldGroup:
-       break;
-     case FldAlphanumeric:
-       break;
-     case FldNumericBinary:
-       break;
-     case FldFloat:
-       if( field->attr & ieeedec_e )
-         {
-         cbl_internal_error("%s: called with the unimplemented %s flag for %s",
-                             __func__,
-                             "IEEE",
-                             field->name);
-         }
-       switch(field->data.capacity())
-         {
-         case 4:
-           retval = FLOAT;
-           break;
-         case 8:
-           retval = DOUBLE;
-           break;
-         case 16:
-           retval = FLOAT128;
-           break;
-         }
-       break;
-     case FldPacked:
-       break;
-     case FldNumericBin5:
-       if( field->attr & signable_e )
-         {
-         // Because it is signable, we handle it here.  Unsigned fall through
-         // to the default handler
-         switch(field->data.capacity())
-           {
-           case 1:
-             retval = CHAR;
-             break;
-           case 2:
-             retval = SHORT;
-             break;
-           case 4:
-             retval = INT;
-             break;
-           case 8:
-             retval = LONG;
-             break;
-           case 16:
-             retval = INT128;
-             break;
-           default:
-             cbl_internal_error("%s: called with type %s but strange byte count for %s",
-                                 __func__,
-                                 cbl_field_type_str(field->type),
-                                 field->name);
-             retval = NULL_TREE;
-             break;
-           }
-         }
-       break;
-     case FldNumericDisplay:
-       break;
-     case FldNumericEdited:
-       break;
-     case FldAlphaEdited:
-       break;
-     case FldClass:
-       // Doesn't actually need storage, but we give it one character to avoid
-       // having a NULL data pointer.
-       retval = UCHAR;
-       break;
-     case FldIndex:
-       break;
-     case FldPointer:
-       break;
-     default:
-       cbl_internal_error("%s: called with type %s for %s",
-                           __func__,
-                           cbl_field_type_str(field->type),
-                           field->name);
-       retval = NULL_TREE;
-       break;
-     }
-   // At this point, if there isn't already an assigned type, we specify an
-   // unsigned integer scalar if we can, and otherwise an array of uint8_t.
- 
-   if( !retval )
-     {
-     size_t bytes_needed = std::max(field->data.memsize,
-                                                  field->data.capacity());
-     switch(bytes_needed)
-       {
-       case 1:
-         retval = UCHAR;
-         break;
-       case 2:
-         retval = USHORT;
-         break;
-       case 4:
-         retval = UINT;
-         break;
-       case 8:
-         retval = ULONG;
-         break;
-       case 16:
-         retval = UINT128;
-         break;
-       default:
-         retval = build_array_type_nelts(UCHAR, bytes_needed);
-         break;
-       }
-     }
- 
-   return retval;
-   }
- 
  
  static void
  psa_FldLiteralN(struct cbl_field_t *field )
--- 3675,3680 ----
*************** parser_display_internal(tree file_descri
*** 5119,5125 ****
        // We might be dealing with a refmod:
        if( refer.refmod.from || refer.refmod.len )
          {
!         gg_attribute_bit_set(refer.field, refmod_e);
          }
        gg_call(VOID,
                "__gg__display",
--- 4770,4776 ----
        // We might be dealing with a refmod:
        if( refer.refmod.from || refer.refmod.len )
          {
!         attribute_bit_set(refer.field, refmod_e);
          }
        gg_call(VOID,
                "__gg__display",
*************** parser_display_internal(tree file_descri
*** 5131,5137 ****
                NULL_TREE );
        if( refer.refmod.from || refer.refmod.len )
          {
!         gg_attribute_bit_clear(refer.field, refmod_e);
          }
        }
      }
--- 4782,4788 ----
                NULL_TREE );
        if( refer.refmod.from || refer.refmod.len )
          {
!         attribute_bit_clear(refer.field, refmod_e);
          }
        }
      }
*************** parser_exhibit( bool /*changed*/, bool /
*** 5460,5476 ****
    cursor_at_sol = true;
    }
  
- static tree
- get_literalN_value(cbl_field_t *var)
-   {
-   // Get the literal N value from the integer var_decl
-   tree retval = NULL_TREE;
-   tree var_type = tree_type_from_size(var->data.capacity(),
-                                       var->attr & signable_e);
-   retval = gg_cast(var_type, var->data_decl_node);
-   return retval;
-   }
- 
  void
  parser_assign( size_t nC, cbl_num_result_t *C,
                 struct cbl_refer_t sourceref,
--- 5111,5116 ----
*************** parser_assign( size_t nC, cbl_num_result
*** 5800,6045 ****
      }
    }
  
- static cbl_figconst_t
- is_figconst_t(const cbl_field_t *field)
-   {
-   cbl_figconst_t figconst = (cbl_figconst_t)(field->attr & FIGCONST_MASK);
-   return figconst;
-   }
- 
- static cbl_figconst_t
- is_figconst(const cbl_refer_t &sourceref)
-   {
-   return is_figconst_t(sourceref.field);
-   }
- 
- void
- parser_move(cbl_refer_t destref,
-             cbl_refer_t sourceref,
-             cbl_round_t rounded,
-             bool skip_fill_from  // Defaults to false
-             )
-   {
-   Analyze();
-   SHOW_PARSE
-     {
-     SHOW_PARSE_HEADER
-     if( sourceref.field && is_figconst_low(sourceref.field) )
-       {
-       SHOW_PARSE_TEXT(" LOW-VALUE")
-       }
-     else if( sourceref.field && is_figconst_zero(sourceref.field) )
-       {
-       SHOW_PARSE_TEXT(" ZERO-VALUE")
-       }
-     else if( sourceref.field && is_figconst_space(sourceref.field) )
-       {
-       SHOW_PARSE_TEXT(" SPACE-VALUE")
-       }
-     else if( sourceref.field && is_figconst_quote(sourceref.field) )
-       {
-       SHOW_PARSE_TEXT(" QUOTE-VALUE")
-       }
-     else if( sourceref.field && is_figconst_high(sourceref.field) )
-       {
-       SHOW_PARSE_TEXT(" HIGH-VALUE")
-       }
-     else
-       {
-       SHOW_PARSE_REF(" ", sourceref)
-       }
-     SHOW_PARSE_REF(" TO ", destref)
-       switch(rounded)
-         {
-         case away_from_zero_e:
-           SHOW_PARSE_TEXT(" AWAY_FROM_ZERO")
-           break;
-         case nearest_toward_zero_e:
-           SHOW_PARSE_TEXT(" NEAREST_TOWARD_ZERO")
-           break;
-         case toward_greater_e:
-           SHOW_PARSE_TEXT(" TOWARD_GREATER")
-           break;
-         case toward_lesser_e:
-           SHOW_PARSE_TEXT(" TOWARD_LESSER")
-           break;
-         case nearest_away_from_zero_e:
-           SHOW_PARSE_TEXT(" NEAREST_AWAY_FROM_ZERO")
-           break;
-         case nearest_even_e:
-           SHOW_PARSE_TEXT(" NEAREST_EVEN")
-           break;
-         case prohibited_e:
-           SHOW_PARSE_TEXT(" PROHIBITED")
-           break;
-         case truncation_e:
-           SHOW_PARSE_TEXT(" TRUNCATED")
-           break;
-         default:
-           gcc_unreachable();
-           break;
-         }
-     SHOW_PARSE_END
-     }
- 
-   if( !skip_fill_from )
-     {
-     cbl_figconst_t figconst = is_figconst(sourceref);
-     if( figconst )
-       {
-       sourceref.all = true;
-       }
-     }
- 
-   TRACE1
-     {
-     TRACE1_HEADER
-     TRACE1_TEXT("About to call move_helper")
-     }
-   TREEPLET tsource;
-   treeplet_fill_source(tsource, sourceref);
-   static bool dont_check_for_error = false;
-   move_helper(NULL, destref, sourceref, tsource, rounded, dont_check_for_error );
- 
-   TRACE1
-     {
-     TRACE1_INDENT
-     TRACE1_REFER_INFO("source ", sourceref)
-     TRACE1_INDENT
-     TRACE1_REFER_INFO("dest   ", destref)
-     TRACE1_END
-     }
-   }
- 
- static
- void
- parser_move_multi(cbl_refer_t destref,
-                   cbl_refer_t sourceref,
-                   TREEPLET    tsource,
-                   cbl_round_t rounded,
-                   bool skip_fill_from )
-   {
-   Analyze();
-   SHOW_PARSE
-     {
-     SHOW_PARSE_HEADER
-     if( sourceref.field && is_figconst_low(sourceref.field) )
-       {
-       SHOW_PARSE_TEXT(" LOW-VALUE")
-       }
-     else if( sourceref.field && is_figconst_zero(sourceref.field) )
-       {
-       SHOW_PARSE_TEXT(" ZERO-VALUE")
-       }
-     else if( sourceref.field && is_figconst_space(sourceref.field) )
-       {
-       SHOW_PARSE_TEXT(" SPACE-VALUE")
-       }
-     else if( sourceref.field && is_figconst_quote(sourceref.field) )
-       {
-       SHOW_PARSE_TEXT(" QUOTE-VALUE")
-       }
-     else if( sourceref.field && is_figconst_high(sourceref.field) )
-       {
-       SHOW_PARSE_TEXT(" HIGH-VALUE")
-       }
-     else
-       {
-       SHOW_PARSE_REF(" ", sourceref)
-       }
-     SHOW_PARSE_REF(" TO ", destref)
-       switch(rounded)
-         {
-         case away_from_zero_e:
-           SHOW_PARSE_TEXT(" AWAY_FROM_ZERO")
-           break;
-         case nearest_toward_zero_e:
-           SHOW_PARSE_TEXT(" NEAREST_TOWARD_ZERO")
-           break;
-         case toward_greater_e:
-           SHOW_PARSE_TEXT(" TOWARD_GREATER")
-           break;
-         case toward_lesser_e:
-           SHOW_PARSE_TEXT(" TOWARD_LESSER")
-           break;
-         case nearest_away_from_zero_e:
-           SHOW_PARSE_TEXT(" NEAREST_AWAY_FROM_ZERO")
-           break;
-         case nearest_even_e:
-           SHOW_PARSE_TEXT(" NEAREST_EVEN")
-           break;
-         case prohibited_e:
-           SHOW_PARSE_TEXT(" PROHIBITED")
-           break;
-         case truncation_e:
-           SHOW_PARSE_TEXT(" TRUNCATED")
-           break;
-         default:
-           gcc_unreachable();
-           break;
-         }
-     SHOW_PARSE_END
-     }
- 
-   if( !skip_fill_from )
-     {
-     cbl_figconst_t figconst = is_figconst(sourceref);
-     if( figconst )
-       {
-       sourceref.all = true;
-       }
-     }
- 
-   TRACE1
-     {
-     TRACE1_HEADER
-     TRACE1_TEXT("About to call move_helper")
-     }
- 
-   static bool dont_check_for_error = false;
-   move_helper(NULL, destref, sourceref, tsource, rounded, dont_check_for_error );
- 
-   TRACE1
-     {
-     TRACE1_INDENT
-     TRACE1_REFER_INFO("source ", sourceref)
-     TRACE1_INDENT
-     TRACE1_REFER_INFO("dest   ", destref)
-     TRACE1_END
-     }
-   }
- 
- void
- parser_move(size_t ntgt, cbl_refer_t *tgts, cbl_refer_t src, cbl_round_t rounded)
-   {
-   if( mode_syntax_only() ) return;
- 
-   cbl_figconst_t figconst = is_figconst(src);
-   if( figconst )
-     {
-     src.all = true;
-     }
-   TREEPLET tsource;
-   treeplet_fill_source(tsource, src);
-   static const bool skip_fill_from = true;
-   for( cbl_refer_t *p=tgts; p < tgts + ntgt; p++ )
-     {
-     parser_move_multi(*p, src, tsource, rounded, skip_fill_from);
-     }
-   }
- 
- /*
-  * "nelem" represents the number of elements in the table.
-  * "src" is the already-initialized first element of the table
-  * to be initialized.  If nspan == 0, copy the whole record because
-  * the record either has no filler, or WITH FILLER was specified.
-  * Otherwise, the spans array comprises a set of {offset,end+1} pairs
-  * representing sequences of consecutive non-FILLER fields.
-  *
-  * "table" is the symbol table index for the table being initialized.
-  * It may appear in a subsequent call as part of the (sub)tbls array,
-  * if it is nested in a higher-level table.
-  */
  void
  parser_initialize_table(size_t nelem,
                          cbl_refer_t src,
--- 5440,5445 ----
*************** parser_initialize_table(size_t nelem,
*** 6049,6054 ****
--- 5449,5467 ----
                          size_t ntbl,
                          const cbl_subtable_t tbls[])
    {
+   /*
+    * "nelem" represents the number of elements in the table.
+    * "src" is the already-initialized first element of the table
+    * to be initialized.  If nspan == 0, copy the whole record because
+    * the record either has no filler, or WITH FILLER was specified.
+    * Otherwise, the spans array comprises a set of {offset,end+1} pairs
+    * representing sequences of consecutive non-FILLER fields.
+    *
+    * "table" is the symbol table index for the table being initialized.
+    * It may appear in a subsequent call as part of the (sub)tbls array,
+    * if it is nested in a higher-level table.
+    */
+ 
    if( mode_syntax_only() ) return;
  
    SHOW_PARSE
*************** parser_division(cbl_division_t division,
*** 7412,7420 ****
      gg_assign(cancelled,
                gg_call_expr( INT,
                              "__gg__is_canceled",
!                             gg_cast(SIZE_T,
!                                     current_function->function_address),
!                                     NULL_TREE));
      IF( cancelled, ne_op, integer_zero_node )
        {
        // Somebody flagged us for CANCEL, which means reinitialization, so we
--- 6825,6832 ----
      gg_assign(cancelled,
                gg_call_expr( INT,
                              "__gg__is_canceled",
!                             current_function->function_address,
!                             NULL_TREE));
      IF( cancelled, ne_op, integer_zero_node )
        {
        // Somebody flagged us for CANCEL, which means reinitialization, so we
*************** hijacker()
*** 14842,16882 ****
    }
  #endif
  
- static void
- conditional_abs(tree source, const cbl_field_t *field)
-   {
-   Analyze();
-   if( !(field->attr & signable_e) )
-     {
-     gg_assign(source, gg_abs(source));
-     }
-   }
- 
- static tree
- get_reference_to_data(cbl_field_t *field)
-   {
-   // Given a field, we can derive the type of data the field needs to provide.
-   // That field has a field->data_decl_node, which is the starting point for
-   // the reference to the data we calculate.
-   tree retval = NULL_TREE;
-   tree field_type = data_decl_type_for(field);
-   tree data_type  = TREE_TYPE(field->data_decl_node);
-   bool field_is_array = TREE_CODE(field_type) == ARRAY_TYPE;
-   bool data_is_array  = TREE_CODE(data_type) == ARRAY_TYPE;
- 
-   int field_code = TREE_CODE(field_type);
-   int data_code  = TREE_CODE(data_type);
-   size_t field_size = TREE_INT_CST_LOW(TYPE_SIZE_UNIT(field_type));
-   size_t data_size  = TREE_INT_CST_LOW(TYPE_SIZE_UNIT(data_type));
- 
-   if( field_code == data_code && field_size == data_size )
-     {
-     if( !field_is_array )
-       {
-       // The two types are the same and are not ARRAY_TYPE
-       if( field->offset == 0 )
-         {
-         // This is an "ah, that feels good" moment.  Getting here means the
-         // field is something like "77 foo pic 9999" and that means the
-         // data_decl_node is exactly what is needed.
-         retval = field->data_decl_node;
-         }
-       else
-         {
-         // We have an offset.
-         if( (field->offset % field_size) == 0 )
-           {
-           // The offset is an integer number of bytes from data_decl_node:
-           size_t index = field->offset % field_size;
-           retval = gg_indirect( gg_cast(build_pointer_type(data_type),
-                                      gg_get_address_of(field->data_decl_node)),
-                                build_int_cst_type(SIZE_T, index));
-           }
-         else
-           {
-           // The offset is some random number of bytes.  We need to do a
-           // retval = *(data_type *)((char *)&data_decl_node + offset)
-           tree base = gg_get_address_of(field->data_decl_node);
-           base = gg_cast(UCHAR_P, base);
-           base = gg_add(base, build_int_cst_type(SIZE_T, field->offset));
-           retval = gg_cast(field_type, gg_indirect(base));
-           }
-         }
-       }
-     else
-       {
-       // The two types are the same ARRAY_TYPE
-       retval = gg_cast(UCHAR_P, gg_pointer_to_array(field->data_decl_node));
-       if( field->offset )
-         {
-         retval = gg_add(retval, build_int_cst_type(SIZE_T, field->offset));
-         }
-       }
-     }
-   else if( field_is_array && data_is_array )
-     {
-     // We have two different array types
-     retval = gg_cast(UCHAR_P, gg_pointer_to_array(field->data_decl_node));
-     if( field->offset )
-       {
-       retval = gg_add(retval, build_int_cst_type(SIZE_T, field->offset));
-       }
-     }
-   else if( !field_is_array && !data_is_array )
-     {
-     // The two data types are different, and neither is an array
-     if( field->offset == 0 )
-       {
-       if( field_size == data_size )
-         {
-         // The offset is zero, and the sizes are the same.
-         // This must be something like REDEFINES or the like:
-         retval = gg_cast(field_type, field->data_decl_node);
-         }
-       else
-         {
-         // The sizes are different:
-         // retval = *(data_type *)((char *)&data_decl_node)
-         tree base = gg_get_address_of(field->data_decl_node);
-         retval = gg_indirect(gg_cast(build_pointer_type(field_type), base));
-         }
-       }
-     else
-       {
-       // There is an offset
-       tree base = gg_get_address_of(field->data_decl_node);
-       base = gg_cast(UCHAR_P, base);
-       base = gg_add(base, build_int_cst_type(SIZE_T, field->offset));
-       retval = gg_indirect(gg_cast(build_pointer_type(field_type), base));
-       }
-     }
-   else if( !field_is_array && data_is_array )
-     {
-     // The return is a scalar, but we start from an array.
-     tree base = gg_pointer_to_array(field->data_decl_node);
-     base = gg_cast(UCHAR_P, base);
-     if( field->offset )
-       {
-       base = gg_add(base, build_int_cst_type(SIZE_T, field->offset));
-       }
-     base = gg_cast(build_pointer_type(field_type), base);
-     retval = gg_indirect(base);
-     }
-   else // if( field_is_array !data_is_array )
-     {
-     // The return is an array, but we start from a scalar
-     tree base = gg_get_address_of(field->data_decl_node);
-     base = gg_cast(UCHAR_P, base);
-     if( field->offset )
-       {
-       base = gg_add(base, build_int_cst_type(SIZE_T, field->offset));
-       }
-     retval = base;
-     }
- 
-   return retval;
- 
- #if 0
-   tree retval;
-   // Our job is to return a reference to the field's data decl node:
-   tree cobol_type = data_decl_type_for(field);
-   if( TREE_CODE(cobol_type) != ARRAY_TYPE )
-     {
-     // This COBOL variable is a scalar type
-     tree data_decl_type = TREE_TYPE(field->data_decl_node);
-     if( cobol_type == data_decl_type )
-       {
-       // Life is relatively easy; the data_decl_node is the type we want to
-       // end up with
- 
-       if( field->offset == 0 )
-         {
-         // This is the ideal situation:  This is a reference to the 01 or 07
-         // member of a simple elementary variable.
-         retval = field->data_decl_node;
-         }
-       else
-         {
-         // This is slightly less desirable.
-         // Get the base address as a pointer to UCHAR
-         tree base = gg_cast(build_pointer_type(UCHAR),
-                             gg_get_address_of(field->var_decl_node));
-         // Add the offset to get a new pointer to UCHAR
-         tree base_addr = gg_add(base,
-                         build_int_cst_type(SIZE_T, field->offset));
- 
-         // Do the equivalent of *( type *)base_addr;
-         retval =  gg_cast(cobol_type,
-                           gg_indirect(gg_cast(build_pointer_type(cobol_type),
-                                               base_addr)));
-         }
-       }
-     else
-       {
-       tree base;
-       if( TREE_CODE(data_decl_type) == ARRAY_TYPE )
-         {
-         // Our source data_decl_node is an array:
-         base = gg_pointer_to_array(field->data_decl_node);
-         }
-       else
-         {
-         // Our source data_decl_node is a scalar:
-         base = gg_get_address_of(field->data_decl_node);
-         }
-       base = gg_cast(build_pointer_type(UCHAR), base);
-       if( field->offset )
-         {
-         // Add the offset to get a new pointer to UCHAR
-         base = gg_add(base,
-                       build_int_cst_type(SIZE_T, field->offset));
-         }
- 
-       // Do the equivalent of *( type *)base;
-       retval =  gg_cast(cobol_type,
-                         gg_indirect(gg_cast(build_pointer_type(cobol_type),
-                                             base)));
-       }
-     }
-   else
-     {
-     // This field is an array type.
-     tree base = gg_pointer_to_array(field->data_decl_node);
-     if( field->offset )
-       {
-       retval = gg_add(base, build_int_cst_type(SIZE_T, field->offset));
-       }
-     else
-       {
-       retval = base;
-       }
-     }
-   return retval;
- #endif
-   }
- 
- static bool
- mh_identical(const cbl_refer_t &destref,
-              const cbl_refer_t &sourceref)
-   {
-   // Check to see if the two variables are identical types, thus allowing
-   // for a simple byte-for-byte copy of the data areas:
-   bool moved = false;
-   if(     destref.field->type            == sourceref.field->type
-       &&  destref.field->data.capacity() == sourceref.field->data.capacity()
-       &&  destref.field->data.digits     == sourceref.field->data.digits
-       &&  destref.field->data.rdigits    == sourceref.field->data.rdigits
-       &&       (destref.field->attr   & (signable_e|separate_e|leading_e))
-             == (sourceref.field->attr & (signable_e|separate_e|leading_e))
-       &&  destref.field->codeset.encoding == sourceref.field->codeset.encoding
-       )
-     {
-     // The source and destination are identical in type and the
-     // Source doesn't have a depending_on clause
-     SHOW_PARSE1
-       {
-       SHOW_PARSE_INDENT
-       SHOW_PARSE_TEXT("mh_identical()");
-       }
-     if(    refer_is_super_clean(destref)
-         && refer_is_super_clean(sourceref) )
-       {
-       // They are identical, and they have no subscripts
- 
-       tree source = get_reference_to_data(sourceref.field);
-       tree dest   = get_reference_to_data(destref.field);
- 
-       tree type = data_decl_type_for(destref.field);
-       if( TREE_CODE(type) == ARRAY_TYPE )
-         {
-         // We are dealing with pointers to UCHAR.
-         // The move has to be done with a copy:
-         gg_memcpy(dest,
-                   source,
-                   build_int_cst_type(SIZE_T,
-                                      destref.field->data.capacity()));
-         }
-       else
-         {
-         // We are dealing with scalars
-         gg_assign(dest, source);
-         }
-       moved = true;
-       }
-     }
-   return moved;
-   }
- 
- static bool
- mh_source_is_literalN(cbl_refer_t &destref,
-                       cbl_refer_t &sourceref,
-                       bool         check_for_error,
-                       cbl_round_t  rounded,
-                       tree         size_error)
-   {
-   bool moved = false;
-   if( sourceref.field->type == FldLiteralN )
-     {
-     Analyze();
-     switch( destref.field->type )
-       {
-       case FldGroup:
-       case FldAlphanumeric:
-         {
-         SHOW_PARSE1
-           {
-           SHOW_PARSE_INDENT
-           SHOW_PARSE_TEXT("mh_source_is_literalN: __gg__psz_to_alpha_move")
-           }
- 
-         // In accordance with the rules of moving a numeric to an alphabetic,
-         // we need to eliminate any leading sign character from the text
-         // string:
- 
-         const char *original = sourceref.field->data.original();
-         if( *original == ascii_plus || *original == ascii_minus )
-           {
-           original += 1;
-           }
- 
-         // We need the data sent to __gg__psz_to_alpha_move to be in the
-         // encoding of the destination.  In accordance with the rules of
-         // cbl_field_t::internalize, the FldLiteralN is in source-code
-         // encoding, so we have to convert.
- 
-         size_t charsout;
-         const char *converted = __gg__iconverter(
-                                          DEFAULT_SOURCE_ENCODING,
-                                          destref.field->codeset.encoding,
-                                          original,
-                                          strlen(original),
-                                          &charsout);
-         gg_call(VOID,
-                 "__gg__psz_to_alpha_move",
-                 gg_get_address_of(destref.field->var_decl_node),
-                 refer_offset(destref),
-                 refer_size_dest(destref),
-                 build_string_literal(charsout, converted),
-                 build_int_cst_type(SIZE_T, charsout),
-                 NULL_TREE);
-         moved = true;
-         break;
-         }
- 
-       case FldPointer:
-       case FldIndex:
-         {
-         // We know this is a move to an eight-byte value:
-         SHOW_PARSE1
-           {
-           SHOW_PARSE_INDENT
-           SHOW_PARSE_TEXT("mh_source_is_literalN: pointer/index")
-           }
- 
-         if( sourceref.field->data.capacity() < 8 )
-           {
-           // There are too few bytes in sourceref
-           if( sourceref.field->attr & signable_e )
-             {
-             static tree highbyte = gg_define_variable(UCHAR, "..mh_litN_highbyte", vs_file_static);
-             // Pick up the source byte that has the sign bit.
-             gg_assign(highbyte,
-                       gg_get_indirect_reference(gg_add(member(sourceref.field->var_decl_node,
-                                                               "data"),
-                                                 build_int_cst_type(SIZE_T,
-                                                                    sourceref.field->data.capacity()-1)),
-                       integer_zero_node));
-             IF( gg_bitwise_and(highbyte, build_int_cst_type(UCHAR, 0x80)),
-                 eq_op,
-                 build_int_cst_type(UCHAR, 0x80) )
-               {
-               // We are dealing with a negative number
-               gg_memset(gg_add(member(destref.field->var_decl_node, "data"),
-                                refer_offset(destref)),
-                                 build_int_cst_type(UCHAR, 0xFF),
-                                 build_int_cst_type(SIZE_T, 8));
-               }
-             ELSE
-               gg_memset(gg_add(member(destref.field->var_decl_node, "data"),
-                                refer_offset(destref)),
-                                 build_int_cst_type(UCHAR, 0x00),
-                                 build_int_cst_type(SIZE_T, 8));
-               ENDIF
-             }
-           else
-             {
-             // The too-short source is positive.
-               gg_memset(gg_add(member(destref.field->var_decl_node, "data"),
-                                refer_offset(destref)),
-                               build_int_cst_type(UCHAR, 0x00),
-                               build_int_cst_type(SIZE_T, 8));
-             }
-           }
- 
-         tree literalN_value = get_literalN_value(sourceref.field);
-         scale_by_power_of_ten_N(literalN_value, -sourceref.field->data.rdigits);
-         gg_memcpy(gg_add(member(destref.field->var_decl_node, "data"),
-                                refer_offset(destref)),
-                   gg_get_address_of(literalN_value),
-                   build_int_cst_type(SIZE_T, sourceref.field->data.capacity()));
-         moved = true;
- 
-         break;
-         }
- 
-       case FldNumericBin5:
-         {
-         // We are moving from a FldLiteralN (which we know has no subscripts or
-         // refmods), to a NumericBin5, which might.
- 
-         SHOW_PARSE1
-           {
-           SHOW_PARSE_INDENT
-           SHOW_PARSE_TEXT("mh_source_is_literalN: FldNumericBin5")
-           }
- 
-         // For now, we are ignoring intermediates:
-         assert( !(destref.field->attr & intermediate_e) );
- 
-         int bytes_needed = std::max(destref.field->data.capacity(),
-                                     sourceref.field->data.capacity());
-         tree calc_type = tree_type_from_size(bytes_needed,
-                                             sourceref.field->attr & signable_e);
-         tree dest_type = tree_type_from_size( destref.field->data.capacity(),
-                                               destref.field->attr & signable_e);
- 
-         // Pick up the source data.
-         tree source = gg_define_variable(calc_type);
-         gg_assign(source, gg_cast(calc_type, sourceref.field->data_decl_node));
- 
-         // Take the absolute value, if the destination is not signable
-         conditional_abs(source, destref.field);
- 
-         // See if it needs to be scaled:
-         scale_by_power_of_ten_N(
-                      source,
-                      destref.field->data.rdigits-sourceref.field->data.rdigits);
- 
-         if( check_for_error && size_error )
-           {
-           Analyzer.Message("Check to see if result fits");
-           if( destref.field->data.digits )
-             {
-             FIXED_WIDE_INT(128) power_of_ten = get_power_of_ten(destref.field->data.digits);
-             IF( gg_abs(source), ge_op, wide_int_to_tree(calc_type,
-                                                         power_of_ten) )
-               {
-               gg_assign(size_error, gg_bitwise_or(size_error, integer_one_node));
-               }
-             ELSE
-               ENDIF
-             }
-           }
- 
-         Analyzer.Message("Move to destination location");
-         tree dest_location = gg_indirect(
-                     gg_cast(build_pointer_type(dest_type),
-                             gg_add(member(destref.field->var_decl_node, "data"),
-                                    refer_offset(destref))));
-         gg_assign(dest_location, gg_cast(dest_type, source));
-         moved = true;
-         break;
-         }
- 
-       case FldNumericDisplay:
-       case FldNumericBinary:
-       case FldNumericEdited:
-       case FldPacked:
-         {
-         static tree berror = gg_define_variable(INT, "..mh_litN_berror", vs_file_static);
-         gg_assign(berror, integer_zero_node);
-         SHOW_PARSE1
-           {
-           SHOW_PARSE_INDENT
-           SHOW_PARSE_TEXT("calling get_literalN_value ")
-           }
-         tree literalN_value = get_literalN_value(sourceref.field);
- 
-         SHOW_PARSE1
-           {
-           SHOW_PARSE_INDENT
-           SHOW_PARSE_TEXT("calling __gg__int128_to_qualified_field ")
-           }
- 
-         gg_call(INT,
-                 "__gg__int128_to_qualified_field",
-                 gg_get_address_of(destref.field->var_decl_node),
-                 refer_offset(destref),
-                 refer_size_dest(destref),
-                 gg_cast(INT128, literalN_value),
-                 build_int_cst_type(INT, sourceref.field->data.rdigits),
-                 build_int_cst_type(INT, rounded),
-                 gg_get_address_of(berror),
-                 NULL_TREE);
- 
-         if( size_error )
-           {
-           IF( berror, ne_op, integer_zero_node  )
-             {
-             gg_assign(size_error, gg_bitwise_or(size_error, integer_one_node));
-             }
-           ELSE
-             ENDIF
-           }
-         moved = true;
-         break;
-         }
- 
-       case FldAlphaEdited:
-         {
-         SHOW_PARSE1
-           {
-           SHOW_PARSE_INDENT
-           SHOW_PARSE_TEXT(" FldAlphaEdited")
-           }
- 
-         // __gg__string_to_alpha_edited expects the source string to be in
-         // the same encoding as the target.  The rule in internalize is that
-         // a FldLiteralN::data.initial is left in source-code space, so it
-         // needs to be converted to the destination encoding.
-         size_t charsout;
-         const char *converted_ = __gg__iconverter(
-                                             DEFAULT_SOURCE_ENCODING,
-                                             destref.field->codeset.encoding,
-                                             sourceref.field->data.original(),
-                                             strlen(sourceref.field->data.original()),
-                                             &charsout);
-         // Copy converted, because __gg__string_to_alpha_edited might have its
-         // own reasons to use charmap_t, which could mess up the static buffer
-         // used by __gg__iconverter:
-         char *converted = xstrdup(converted_);
-         gg_call(VOID,
-                 "__gg__string_to_alpha_edited",
-                 gg_add( member(destref.field->var_decl_node, "data"),
-                         refer_offset(destref) ),
-                 build_int_cst_type(INT, destref.field->codeset.encoding),
-                 gg_string_literal(converted),
-                 build_int_cst_type(INT, strlen(converted)),
-                 gg_string_literal(destref.field->data.picture),
-                 NULL_TREE);
-         moved = true;
-         free(converted);
-         break;
-         }
- 
-       case FldFloat:
-         {
-         tree tdest = gg_add(member(destref.field->var_decl_node, "data"),
-                             refer_offset(destref) );
-         switch( destref.field->data.capacity() )
-           {
-           case 4:
-             {
-             // The following generated code is the exact equivalent
-             // of the C code:
-             //   *(float *)dest = (float)data.value
-             gg_assign(gg_indirect(gg_cast(build_pointer_type(FLOAT), tdest)),
-                       fold_convert (FLOAT, sourceref.field->data.value_of()));
-             break;
-             }
-           case 8:
-             {
-             gg_assign(gg_indirect(gg_cast(build_pointer_type(DOUBLE), tdest)),
-                       fold_convert (DOUBLE, sourceref.field->data.value_of()));
-             break;
-             }
-           case 16:
-             {
-             gg_assign(gg_indirect(gg_cast(build_pointer_type(FLOAT128), tdest)),
-                       sourceref.field->data.value_of());
-             break;
-             }
-           }
-         moved=true;
-         break;
-         }
- 
-       default:
-         cbl_internal_error(
-               "In %<parser_move(%s to %s)%>, the move of FldLiteralN to %s "
-               "is unimplemented",
-               sourceref.field->name,
-               destref.field->name,
-               cbl_field_type_str(destref.field->type));
-         break;
-       }
-     }
-   return moved;
-   }
- 
- static
- tree float_type_of(int n)
-   {
-   switch(n)
-     {
-     case 4:
-       return FLOAT;
-     case 8:
-       return DOUBLE;
-     case 16:
-       return FLOAT128;
-     default:
-       gcc_unreachable();
-     }
-   return NULL_TREE;
-   }
- 
- static tree
- float_type_of(const cbl_field_t *field)
-   {
-   gcc_assert(field->type == FldFloat);
-   return float_type_of(field->data.capacity());
-   }
- 
- static tree
- float_type_of(const cbl_refer_t *refer)
-   {
-   return float_type_of(refer->field);
-   }
- 
- static bool
- mh_dest_is_float( cbl_refer_t &destref,
-                   cbl_refer_t &sourceref,
-                   TREEPLET    &tsource,
-                   cbl_round_t    rounded,
-                   tree         size_error) // int
-   {
-   bool moved = false;
-   if( destref.field->type == FldFloat )
-     {
-     Analyze();
-     switch( sourceref.field->type )
-       {
-       case FldPointer:
-       case FldIndex:
-       case FldNumericBin5:
-       case FldNumericDisplay:
-       case FldNumericBinary:
-       case FldNumericEdited:
-       case FldPacked:
-         {
-         switch( destref.field->data.capacity() )
-           {
-           case 4:
-             gg_call(VOID,
-                     "__gg__float32_from_int128",
-                     gg_get_address_of(destref.field->var_decl_node),
-                     refer_offset(destref),
-                     tsource.pfield,
-                     tsource.offset,
-                     build_int_cst_type(INT, rounded),
-                     size_error ? gg_get_address_of(size_error) : null_pointer_node,
-                     NULL_TREE);
-             break;
-           case 8:
-             gg_call(VOID,
-                     "__gg__float64_from_int128",
-                     gg_get_address_of(destref.field->var_decl_node),
-                     refer_offset(destref),
-                     tsource.pfield,
-                     tsource.offset,
-                     build_int_cst_type(INT, rounded),
-                     size_error ? gg_get_address_of(size_error) : null_pointer_node,
-                     NULL_TREE);
-             break;
-           case 16:
-             gg_call(VOID,
-                     "__gg__float128_from_int128",
-                     gg_get_address_of(destref.field->var_decl_node),
-                     refer_offset(destref),
-                     tsource.pfield,
-                     tsource.offset,
-                     build_int_cst_type(INT, rounded),
-                     size_error ? gg_get_address_of(size_error) : null_pointer_node,
-                     NULL_TREE);
-             break;
-           }
-         moved = true;
-         break;
-         }
- 
-       case FldFloat:
-         {
-         // We are testing for size.  First, we need to check to see if the
-         // source is INFINITY.  If so, that's an automatic size error
- 
-         IF( gg_call_expr( INT,
-                           "__gg__is_float_infinite",
-                           tsource.pfield,
-                           tsource.offset,
-                           NULL_TREE),
-             ne_op,
-             integer_zero_node )
-           {
-           if( size_error )
-             {
-             gg_assign(size_error, integer_one_node );
-             }
-           }
-         ELSE
-           {
-           // The source isn't infinite.
-           // If the destination is bigger than the source, then we can
-           // do an untested move:
- 
-           if( destref.field->data.capacity() >= sourceref.field->data.capacity() )
-             {
-             tree dtype = float_type_of(&destref);
-             tree stype = float_type_of(&sourceref);
- 
-             tree tdest = gg_add(member(destref.field->var_decl_node, "data"),
-                                refer_offset(destref));
-             tree source = gg_add(member(sourceref.field->var_decl_node, "data"),
-                                 refer_offset(sourceref));
-             gg_assign(gg_indirect(gg_cast(build_pointer_type(dtype), tdest)),
-                       gg_cast(dtype,
-                               gg_indirect(gg_cast(build_pointer_type(stype),
-                                           source))));
-             }
-           else
-             {
-             // There are only three possible moves left:
-             if(destref.field->data.capacity() == 8 )
-               {
-               if( size_error )
-                 {
-                 gg_assign(size_error,
-                           gg_call_expr( INT,
-                                 "__gg__float64_from_128",
-                                 gg_get_address_of(destref.field->var_decl_node),
-                                 refer_offset(destref),
-                                 tsource.pfield,
-                                 tsource.offset,
-                                 NULL_TREE));
-                 }
-               else
-                 {
-                           gg_call( INT,
-                                 "__gg__float64_from_128",
-                                 gg_get_address_of(destref.field->var_decl_node),
-                                 refer_offset(destref),
-                                 tsource.pfield,
-                                 tsource.offset,
-                                 NULL_TREE);
-                 }
-               }
-             else
-               {
-               // The destination has to be float32
-               if( sourceref.field->data.capacity() == 8 )
-                 {
-                 if( size_error )
-                   {
-                   gg_assign(size_error,
-                             gg_call_expr( INT,
-                                 "__gg__float32_from_64",
-                                 gg_get_address_of(destref.field->var_decl_node),
-                                 refer_offset(destref),
-                                 tsource.pfield,
-                                 tsource.offset,
-                                 NULL_TREE));
-                   }
-                 else
-                   {
-                             gg_call( INT,
-                                 "__gg__float32_from_64",
-                                 gg_get_address_of(destref.field->var_decl_node),
-                                 refer_offset(destref),
-                                 tsource.pfield,
-                                 tsource.offset,
-                                 NULL_TREE);
-                   }
- 
-                 }
-               else
-                 {
-                 if( size_error )
-                   {
-                   gg_assign(size_error,
-                             gg_call_expr( INT,
-                                 "__gg__float32_from_128",
-                                 gg_get_address_of(destref.field->var_decl_node),
-                                 refer_offset(destref),
-                                 tsource.pfield,
-                                 tsource.offset,
-                                 NULL_TREE));
-                   }
-                 else
-                   {
-                             gg_call( INT,
-                                 "__gg__float32_from_128",
-                                 gg_get_address_of(destref.field->var_decl_node),
-                                 refer_offset(destref),
-                                 tsource.pfield,
-                                 tsource.offset,
-                                 NULL_TREE);
-                   }
-                 }
-               }
-             }
-           }
-         ENDIF
- 
-         moved = true;
-         break;
-         }
- 
-       case FldLiteralA:
-       case FldAlphanumeric:
-       case FldGroup:
-         {
-         // Alphanumeric to float is inherently slow.  Send it off to the library
-         break;
-         }
- 
-       default:
-         cbl_internal_error("In %<mh_dest_is_float%>(%s to %s), the "
-                            "move of %s to %s is unimplemented",
-               sourceref.field->name,
-               destref.field->name,
-               cbl_field_type_str(sourceref.field->type),
-               cbl_field_type_str(destref.field->type));
-         break;
-       }
-     }
-   return moved;
-   }
- 
- static void
- picky_memset(tree &dest_p, unsigned char value, size_t length)
-   {
-   if( length )
-     {
-     tree dest_ep = gg_define_variable(TREE_TYPE(dest_p));
-     gg_assign(dest_ep,
-               gg_add( dest_p,
-                       build_int_cst_type(SIZE_T, length)));
-     WHILE( dest_p, lt_op, dest_ep )
-       {
-       gg_assign(gg_indirect(dest_p),
-                 build_int_cst_type(UCHAR, value));
-       gg_increment(dest_p);
-       }
-       WEND
-     }
-   }
- 
- static void
- picky_memcpy(tree &dest_p, const tree &source_p, size_t length, tree zero)
-   {
-   // This is the routine that copies digits for NumericDisplay.  In addition
-   // to just moving digits from source to destination, it has to handle
-   // clearing up embedded sign information.
-   if( length )
-     {
-     tree dest_ep = gg_define_variable(TREE_TYPE(dest_p));
-     gg_assign(dest_ep,
-               gg_add( dest_p,
-                       build_int_cst_type(SIZE_T, length)));
-     WHILE( dest_p, lt_op, dest_ep )
-       {
-       gg_assign(gg_indirect(dest_p),
-                 gg_bitwise_or(zero,
-                       gg_bitwise_and(gg_indirect(source_p),
-                              build_int_cst_type(UCHAR, 0x0F))));
-       gg_increment(dest_p);
-       gg_increment(source_p);
-       }
-       WEND
-     }
-   }
- 
- static bool
- mh_numeric_display( const cbl_refer_t &destref,
-                     const cbl_refer_t &sourceref,
-                     const TREEPLET    &tsource,
-                           tree         size_error)
-   {
-   bool moved = false;
- 
-   charmap_t *charmap_source =
-                        __gg__get_charmap(sourceref.field->codeset.encoding);
-   if(     destref.field->type   == FldNumericDisplay
-       &&  sourceref.field->type == FldNumericDisplay
-       &&  !(destref.field->attr   & scaled_e)
-       &&  !(sourceref.field->attr & scaled_e)
-       &&  charmap_source->stride() == 1
-       &&  sourceref.field->codeset.encoding == destref.field->codeset.encoding
-       )
-     {
-     // We can do simple moves of single-byte same-encoding numeric display.
-     // More complex ones get sent to __gg__move
- 
-     Analyze();
-     // I believe that there are 450 pathways through the following code.
-     // That's because there are five different valid combination of signable_e,
-     // separate_e, and leading_e.  There are three possibilities for
-     // sender/receiver rdigits (too many, too few, and just right), and the
-     // same for ldigits.  5 * 5 * 3 * 3 * 2 = 450.
- 
-     // Fasten your seat belts.
- 
-     // This routine is complicated by the fact that although I had several
-     // false starts of putting this into libgcobol, I keep coming back to the
-     // fact that assignment of zoned values is common.  And, so, there are all
-     // kinds of things that are known at compile time that would turn into
-     // execution-time decisions if I moved them to the library.  So, complex
-     // or not, I am doing all this code here at compile time because it will
-     // minimize the code at execution time.
- 
-     // One thing to keep in mind is the problem caused by a source value being
-     // internally signed.  That turns an ASCII "123" into "12t", and we
-     // very probably don't want that "t" to find its way into the destination
-     // value.  The internal sign characteristic of ASCII is that the high
-     // nybble of the sign location is 0x30 or 0x70.  For EBCDIC, the high
-     // nybble is 0xC0 for positive values, and 0xD0 for negative; all other
-     // digits are 0x70.
- 
-     charmap_t *charmap_dest   =
-                        __gg__get_charmap(  destref.field->codeset.encoding);
- 
-     static tree source_sign_loc  = gg_define_variable(UCHAR_P,
-                                                       "..mhnd_sign_loc",
-                                                       vs_file_static);
-     static tree dest_sign_loc = gg_define_variable(UCHAR_P,
-                                                       "..mhnd_dest_sign_loc",
-                                                       vs_file_static);
-     static tree source_sign      = gg_define_variable(INT,
-                                                       "..mhnd_sign",
-                                                       vs_file_static);
-     // The destination data pointer
-     static tree dest_p    = gg_define_variable( UCHAR_P,
-                                                 "..mhnd_dest",
-                                                 vs_file_static);
-     // The source data pointer
-     static tree source_p  = gg_define_variable( UCHAR_P,
-                                                 "..mhnd_source",
-                                                 vs_file_static);
-     // When we need an end pointer
-     static tree source_ep = gg_define_variable( UCHAR_P,
-                                                 "..mhnd_source_e",
-                                                 vs_file_static);
- 
-     bool source_is_signable = sourceref.field->attr & signable_e;
-     bool source_is_leading  = sourceref.field->attr & leading_e;
-     bool source_is_separate = sourceref.field->attr & separate_e;
- 
-     bool dest_is_signable = destref.field->attr & signable_e;
-     bool dest_is_leading  = destref.field->attr & leading_e;
-     bool dest_is_separate = destref.field->attr & separate_e;
- 
-     int switch_source =   (source_is_signable ? 4 : 0 )
-                         + (source_is_leading  ? 2 : 0 )
-                         + (source_is_separate ? 1 : 0 ) ;
- 
-     int switch_dest   =   (dest_is_signable ? 4 : 0 )
-                         + (dest_is_leading  ? 2 : 0 )
-                         + (dest_is_separate ? 1 : 0 ) ;
- 
-     // Calculate the start of the source data:
-     gg_assign(source_p, gg_add(member(sourceref.field, "data"),
-                                tsource.offset));
- 
-     // Calculate the start of the destination data
-     gg_assign(dest_p,   qualified_data_location(destref));
- 
-     // Figure out exactly where the sign is, if any, and where the input
-     // digits are.
- 
-     switch( switch_source )
-       {
-       case 0:
-       case 1:
-       case 2:
-       case 3:
-         // not signable
-         gg_assign(source_sign, integer_zero_node);
-         break;
-       case 4:
-         //     signable, not leading, not separate
-         // Calculate location of the sign byte; it's the last byte of the data
-         gg_assign(source_sign_loc,
-                   gg_add(source_p,
-                         build_int_cst_type(SIZE_T,
-                                           sourceref.field->data.capacity()-1)));
-         break;
-       case 5:
-         //     signable, not leading,     separate
-         // Calculate location of the sign byte; it's the last byte of the data
-         gg_assign(source_sign_loc,
-                   gg_add(source_p,
-                         build_int_cst_type(SIZE_T,
-                                           sourceref.field->data.capacity()-1)));
-         break;
-       case 6:
-         //     signable,     leading, not separate
-         // Calculate location of the sign byte; it's the first byte of the data
-         gg_assign(source_sign_loc, source_p);
-         break;
-       case 7:
-         //     signable,     leading,     separate
-         // Calculate location of the sign byte; it's the first byte of the data
-         gg_assign(source_sign_loc, source_p);
-         gg_increment(source_p);
-         break;
-       }
-     // At this point, the source sign is at source_sign_loc, and the digits
-     // start at source_p
- 
-     // Let's learn what the source sign is
-     if( source_is_signable && source_is_separate )
-       {
-       IF( gg_indirect(source_sign_loc),
-           eq_op,
-           build_int_cst_type(UCHAR,
-                              charmap_source->mapped_character(ascii_minus)) )
-         {
-         // Flag the source as negative
-         gg_assign(source_sign, integer_one_node);
-         }
-       ELSE
-         {
-         // Flag the source as positive
-         gg_assign(source_sign, integer_zero_node);
-         }
-       ENDIF
-       }
-     if( source_is_signable && !source_is_separate )
-       {
-       // We need to look for an indication that we are internally signed. We
-       // can tell that by checking to see if the digit is between '0' and '9'
-       IF( gg_indirect(source_sign_loc),
-           lt_op,
-           build_int_cst_type(UCHAR,
-                              charmap_source->mapped_character(ascii_0)) )
-         {
-         // The sign byte is less than '0', so we are negative
-         gg_assign(source_sign, integer_one_node);
-         }
-       ELSE
-         {
-         IF( gg_indirect(source_sign_loc),
-             gt_op,
-             build_int_cst_type(UCHAR,
-                                charmap_source->mapped_character(ascii_9)) )
-           {
-           // The sign byte is greater than '9', so we are negative
-           gg_assign(source_sign, integer_one_node);
-           }
-         ELSE
-           {
-           // The sign byte is betwixt '0' and '9', so we are positive
-           gg_assign(source_sign, integer_zero_node);
-           }
-         ENDIF
-         }
-       ENDIF
-       }
- 
-     // We now know the source's sign, and where its digits are.
- 
-     // The first order of business is to move the digits into place.  To do
-     // that, we need to know where things go in the destination:
- 
-     switch( switch_dest )
-       {
-       case 0:
-       case 1:
-       case 2:
-       case 3:
-         // not signable
-         break;
-       case 4:
-         //     signable, not leading, not separate
-         // Calculate location of the sign byte; it's the last byte of the data
-         gg_assign(dest_sign_loc,
-                   gg_add(dest_p,
-                         build_int_cst_type(SIZE_T,
-                                           destref.field->data.capacity()-1)));
-         break;
-       case 5:
-         //     signable, not leading,     separate
-         // Calculate location of the sign byte; it's the last byte of the data
-         gg_assign(dest_sign_loc,
-                   gg_add(dest_p,
-                         build_int_cst_type(SIZE_T,
-                                           destref.field->data.capacity()-1)));
-         break;
-       case 6:
-         //     signable,     leading, not separate
-         // Calculate location of the sign byte; it's the first byte of the data
-         gg_assign(dest_sign_loc, dest_p);
-         break;
-       case 7:
-         //     signable,     leading,     separate
-         // Calculate location of the sign byte; it's the first byte of the data
-         gg_assign(dest_sign_loc, dest_p);
-         gg_increment(dest_p);
-         break;
-       }
- 
-     // We can now start copying the digits to the left of the decimal place
- 
-     int dest_ldigits   = (int)destref.field->data.digits
-                               - destref.field->data.rdigits;
-     int source_ldigits = (int)sourceref.field->data.digits
-                               - sourceref.field->data.rdigits;
- 
-     int digit_count = 0;
- 
-     if( dest_ldigits > source_ldigits )
-       {
-       // The destination has more ldigits than the source, and needs some
-       // leading zeroes:
-       picky_memset( dest_p,
-                     charmap_dest->mapped_character(ascii_0) ,
-                     dest_ldigits - source_ldigits);
-       // With the leading zeros set, set the number of ldigits to copy:
-       digit_count = source_ldigits;
-       }
-     else if( dest_ldigits == source_ldigits )
-       {
-       // This is the Goldilocks zone.  Everything is *just* right.
-       digit_count = dest_ldigits;
-       }
-     else // dest_ldigits < source_ldigits
-       {
-       // The destination is smaller than the source.  We have to throw away the
-       // the high-order digits of the source.  If any of them are non-zero, then
-       // we need to indicate a size error.
-       gg_assign(source_ep,
-                 gg_add( source_p,
-                         build_int_cst_type( SIZE_T,
-                                             source_ldigits-dest_ldigits)));
-       WHILE(source_p, lt_op, source_ep)
-         {
-         if( size_error )
-           {
-           IF( gg_indirect(source_p),
-               ne_op,
-               build_int_cst_type( UCHAR,
-                                   charmap_source->mapped_character(ascii_0)) )
-             {
-             set_exception_code(ec_size_truncation_e);
-             gg_assign(size_error, integer_one_node);
-             }
-           ELSE
-             ENDIF
-           }
-         gg_increment(source_p);
-         }
-         WEND
- 
-       // Having skipped over the leading digits, we are in position to move the
-       // remaining digits
-       digit_count = dest_ldigits;
-       }
-     // We now have digit_count, which will cover the ldigits.  Augment it by
-     // the number of rdigits:
- 
-     int dest_rdigits   = destref.field->data.rdigits;
-     int source_rdigits = sourceref.field->data.rdigits;
- 
-     int trailing_zeros = 0;
- 
-     if( dest_rdigits > source_rdigits )
-       {
-       // The destination has more rdigits than the source
- 
-       // Copy over the available digits:
-       digit_count += source_rdigits;
- 
-       // And then tack on the needed trailing zeroes:
-       trailing_zeros = dest_rdigits - source_rdigits;
-       }
-     else if( dest_rdigits == source_rdigits )
-       {
-       // This is the Goldilocks zone.  Everything is *just* right.
-       digit_count += dest_rdigits;
-       }
-     else
-       {
-       // The destination has fewer rdigits than the source.  We send
-       // over only the necessary rdigits, discarding the ones to the right.
-       digit_count += dest_rdigits;
-       }
-     picky_memcpy(dest_p,
-                  source_p,
-                  digit_count,
-                  build_int_cst_type(UCHAR,
-                                     charmap_dest->mapped_character(ascii_0)));
-     picky_memset( dest_p,
-                   charmap_dest->mapped_character(ascii_0),
-                   trailing_zeros);
- 
-     // With the digits in place, the only thing left is to establish the sign
- 
-     switch( switch_dest )
-       {
-       case 0:
-       case 1:
-       case 2:
-       case 3:
-         // not signable, so there is nothing to do.
-         break;
-       case 4:
-       case 6:
-         //     signable, not leading, not separate
-         if( charmap_dest->is_like_ebcdic() )
-           {
-           IF( source_sign, ne_op, integer_zero_node )
-             {
-             // It's negative ebcdic, so we have to turn the bit off.
-             gg_assign(gg_indirect(dest_sign_loc),
-                       gg_bitwise_and(gg_indirect(dest_sign_loc),
-                              build_int_cst_type(UCHAR,
-                                          ~NUMERIC_DISPLAY_SIGN_BIT_EBCDIC)));
-             }
-           ELSE
-             {
-             }
-           ENDIF
-           }
-         else
-           {
-           IF( source_sign, ne_op, integer_zero_node )
-             {
-             // It's negative ascii, so we have to turn the bit on.
-             gg_assign(gg_indirect(dest_sign_loc),
-                       gg_bitwise_or(gg_indirect(dest_sign_loc),
-                             build_int_cst_type(UCHAR,
-                                          NUMERIC_DISPLAY_SIGN_BIT_ASCII)));
-             }
-           ELSE
-             {
-             }
-           ENDIF
-           }
-         break;
-       case 5:
-       case 7:
-         //     signable, not leading,     separate
-         //     signable,     leading,     separate
-         // Calculate location of the sign byte; it's the last byte of the data
- 
-         IF( source_sign, eq_op, integer_zero_node )
-           {
-           gg_assign(gg_indirect(dest_sign_loc),
-                     build_int_cst_type(UCHAR,
-                                   charmap_dest->mapped_character(ascii_plus)));
-           }
-         ELSE
-           {
-           gg_assign(gg_indirect(dest_sign_loc),
-                     build_int_cst_type(UCHAR,
-                                  charmap_dest->mapped_character(ascii_minus)));
-           }
-         ENDIF
-         break;
-       }
-     moved = true;
-     }
-   return moved;
-   } //NUMERIC_DISPLAY_SIGN
- 
- static bool
- mh_little_endian( const cbl_refer_t &destref,
-                   const cbl_refer_t &sourceref,
-                   const TREEPLET    &tsource,
-                         bool check_for_error,
-                         tree size_error)
-   {
-   bool moved = false;
- 
-   cbl_figconst_t figconst = cbl_figconst_of( sourceref.field->data.original());
- 
-   if(     !figconst
-       &&  !(destref.field->attr    & scaled_e)
-       &&  !(destref.field->attr    & (intermediate_e  ))
-       &&  !(sourceref.field->attr  & (intermediate_e  ))
-       &&  sourceref.field->type     != FldGroup
-       &&  sourceref.field->type     != FldLiteralA
-       &&  sourceref.field->type     != FldAlphanumeric
-       &&  sourceref.field->type     != FldNumericEdited
-       &&  sourceref.field->type     != FldPacked
-       &&  (     destref.field->type == FldNumericBin5
-             ||  destref.field->type == FldPointer
-             ||  destref.field->type == FldIndex ) )
-     {
-     Analyze();
-     SHOW_PARSE1
-       {
-       SHOW_PARSE_INDENT
-       SHOW_PARSE_TEXT("mh_little_endian")
-       SHOW_PARSE_END
-       }
- 
-     int bytes_needed = get_bytes_needed(sourceref.field);
-     tree source_type = tree_type_from_size(bytes_needed,
-                                            sourceref.field->attr
-                                                                 & signable_e) ;
-     tree source = gg_define_variable(source_type);
- 
-     if( sourceref.field->type == FldFloat )
-       {
-       get_binary_value_from_float(source,
-                                   destref,
-                                   sourceref.field,
-                                   tsource.offset);
- 
-       // Get binary value from float actually scales the source value to the
-       // dest:: rdigits
-       copy_little_endian_into_place(destref.field,
-                                     refer_offset(destref),
-                                     source,
-                                     destref.field->data.rdigits,
-                                     check_for_error,
-                                     size_error);
-       moved = true;
-       }
-     else
-       {
-       get_binary_value( source,
-                         NULL,
-                         sourceref.field,
-                         tsource.offset);
-       copy_little_endian_into_place(destref.field,
-                                     refer_offset(destref),
-                                     source,
-                                     sourceref.field->data.rdigits,
-                                     check_for_error,
-                                     size_error);
-       moved = true;
-       }
-     }
-   return moved;
-   }
- 
- static bool
- mh_source_is_group( const cbl_refer_t &destref,
-                     const cbl_refer_t &sourceref,
-                     const TREEPLET    &tsrc)
-   {
-   bool retval = false;
-   charmap_t *charmap = __gg__get_charmap(destref.field->codeset.encoding);
-   if(   sourceref.field->type == FldGroup && !(destref.field->attr & rjust_e)
-      && sourceref.field->codeset.encoding == destref.field->codeset.encoding
-      && charmap->stride() == 1)
-     {
-     Analyze();
-     // We are moving a group to a something.  The rule here is just move as
-     // many bytes as you can, and, if necessary, fill with spaces
-     tree tdest   = gg_add( member(destref.field->var_decl_node, "data"),
-                            refer_offset(destref));
-     tree tsource = gg_add( member(sourceref.field->var_decl_node, "data"),
-                            tsrc.offset);
-     tree dbytes  = refer_size_dest(destref);
-     tree sbytes  = tsrc.length;
- 
-     IF( sbytes, ge_op, gg_cast(TREE_TYPE(sbytes), dbytes) )
-       {
-       // There are too many source bytes
-       gg_memcpy(tdest, tsource, dbytes);
-       }
-     ELSE
-       {
-       // There are too few source bytes:
-       int dest_space = charmap->mapped_character(ascii_space);
-       gg_memset(tdest, build_int_cst_type(INT, dest_space), dbytes);
-       gg_memcpy(tdest, tsource, sbytes);
-       }
-     ENDIF
-     retval = true;
-     }
-   return retval;
-   }
- 
- static bool
- mh_source_is_literalA(const cbl_refer_t &destref,
-                       const cbl_refer_t &sourceref,
-                             cbl_round_t rounded,
-                             tree        size_error)
-   {
-   bool moved = false;
-   if( sourceref.field->type == FldLiteralA )
-     {
-     // We are moving a literal somewhere.  Because a program-id can take
-     // variables of ANY LENGTH, we don't know the length of the target
-     // variable.  We do, however, know its encoding.  So, we are going to
-     // construct a string with the same number of characters as the source, but
-     // in the target variable's encoding.
- 
-     // We will then call a library routine that will be in charge of run-time
-     // trimming or space filling, as necessary.
- 
-     cbl_encoding_t encoding_dest =   destref.field->codeset.encoding;
-     charmap_t *charmap_dest = __gg__get_charmap(encoding_dest);
- 
-     static char *buffer = NULL;
-     static size_t buffer_size = 0;
-     size_t source_length;
-     size_t dest_length;
-     if( sourceref.field->attr & hex_encoded_e )
-       {
-       // Hex-encoded data is moved as-is
-       source_length = sourceref.field->data.capacity();
-       dest_length   = std::min(source_length,
-                           static_cast<size_t>(destref.field->data.capacity()));
-       }
-     else
-       {
-       // Otherwise, data.initial prevails:
-       size_t source_based_on_strlen = strlen(sourceref.field->data.original());
-       size_t source_based_on_capacity = sourceref.field->data.capacity() /
-                                         sourceref.field->codeset.stride() ;
-       source_length = std::max( source_based_on_strlen ,
-                                 source_based_on_capacity );
-       dest_length   = source_length * charmap_dest->stride();
-       }
- 
-     if( buffer_size < dest_length )
-       {
-       buffer_size = dest_length;
-       buffer = static_cast<char *>(xrealloc(buffer, buffer_size));
-       }
-     gcc_assert(buffer);
- 
-     cbl_figconst_t figconst = cbl_figconst_of( sourceref.field->data.original());
-     size_t outlength;
-     if( figconst )
-       {
-       // We are going to fill 'buffer' with a solid run of the figurative
-       // constant in the destination codeset.
-       char const_char = 0x7F;  // Head off a compiler warning about
-       //                       // uninitialized variables
-       switch(figconst)
-         {
-         case normal_value_e :
-           // This is not possible, it says here in the fine print.
-           gcc_unreachable();
-           break;
-         case low_value_e    :
-           const_char = charmap_dest->low_value_character();
-           break;
-         case zero_value_e   :
-           const_char = charmap_dest->mapped_character(ascii_zero);
-           break;
-         case space_value_e  :
-           const_char = charmap_dest->mapped_character(ascii_space);
-           break;
-         case quote_value_e  :
-           const_char = charmap_dest->quote_character();
-           break;
-         case high_value_e   :
-           const_char = charmap_dest->high_value_character();
-           break;
-         case null_value_e:
-           const_char = 0x00;
-           break;
-         }
-       memset(buffer, const_char, source_length);
-       }
-      else
-       {
-       if( sourceref.field->attr & hex_encoded_e )
-         {
-         // hex_encoded data goes as is:
-         memcpy(buffer, sourceref.field->data.original(), dest_length);
-         outlength = dest_length;
-         }
-       else
-         {
-         // We are going to convert the source string to the destination
-         // codeset, and then copy it to 'buffer', trimming if necessary, and
-         // space-filling to the right if necessary:
-         const char *source_string =
-         __gg__iconverter(
-                        sourceref.field->codeset.default_encodings.source->type,
-                        encoding_dest,
-                        sourceref.field->data.original(),
-                        source_length,
-                        &outlength );
-         if( outlength > dest_length )
-           {
-           outlength = dest_length;
-           }
-         // Copy over the converted string
-         memcpy( buffer,
-                 source_string,
-                 outlength );
-         }
-       }
- 
-     // Check to see if we can do a simple alphanumeric-to-alphanumeric move
-     if( (   destref.field->type == FldAlphanumeric
-          || destref.field->type == FldGroup )
-        && !(destref.field->attr & any_length_e)
-        && !sourceref.all
-        && !size_error)
-       {
-       // A simple alpha-to-alpha move is possible
-       size_t dest_bytes = destref.field->data.capacity();
-       // We have 'outlength' bytes in 'buffer' that need to go to
-       // destref.field->data.capacity() bytes at destref.field->data.
-       char *src = static_cast<char *>(xmalloc(dest_bytes));
-       size_t src_bytes = std::min(outlength, dest_bytes);
-       charmap_t *charmap = __gg__get_charmap(destref.field->codeset.encoding);
-       charmap->memset(src, charmap->mapped_character(ascii_space), dest_bytes);
- 
-       if( destref.field->attr & rjust_e )
-         {
-         size_t fill = 0;
-         if( src_bytes < dest_bytes )
-           {
-           fill = dest_bytes - src_bytes;
-           }
-         memcpy(src+fill, buffer+outlength-src_bytes, src_bytes);
-         }
-       else
-         {
-         memcpy(src, buffer, src_bytes);
-         }
-       // src is now the desired string, space-filled if necessary on the right,
-       // (or on the left, for rjust_e destinations).
- 
-       if( refer_is_clean(destref) )
-         {
-         gg_memcpy(member(destref.field->var_decl_node, "data"),
-                   build_string_literal(dest_bytes, src),
-                   build_int_cst_type(SIZE_T, dest_bytes));
-         }
-       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),
-                   refer_size_dest(destref));
-         }
-       free(src);
-       }
-     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
-                              | ((sourceref.all || figconst ) ? REFER_ALL_BIT : 0);
- 
-       if( size_error )
-         {
-         gg_assign(size_error,
-                   gg_call_expr( INT,
-                                 "__gg__move_literala",
-                                 gg_get_address_of(destref.field->var_decl_node),
-                                 refer_offset(destref),
-                                 refer_size_dest(destref),
-                                 build_int_cst_type(INT, rounded_parameter),
-                                 build_string_literal(outlength,
-                                                      buffer),
-                                 build_int_cst_type( SIZE_T, outlength),
-                                 NULL_TREE));
-         }
-       else
-         {
-                   gg_call     ( INT,
-                                 "__gg__move_literala",
-                                 gg_get_address_of(destref.field->var_decl_node),
-                                 refer_offset(destref),
-                                 refer_size_dest(destref),
-                                 build_int_cst_type(INT, rounded_parameter),
-                                 build_string_literal(outlength,
-                                                      buffer),
-                                 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*/,
-                         tree        size_error)
-   {
-   bool moved = false;
-   // If a bunch of conditions are met, we can do a move without resorting to
-   // the library.
-   if(   sourceref.field->type == FldAlphanumeric
-      && destref.field->type   == FldAlphanumeric
-      && !size_error
-      && sourceref.field->codeset.encoding == destref.field->codeset.encoding
-      && !(destref.field->attr   & rjust_e)
-      && !(sourceref.field->attr & any_length_e)
-      && !(destref.field->attr   & any_length_e)
-      && !(sourceref.field->attr & intermediate_e)
-      && !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) )
-       {
-       // Source and destination are both clean
-       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;
-         }
-       else
-         {
-         // 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:
-         size_t fill_bytes =
-             destref.field->data.capacity() - sourceref.field->data.capacity();
- 
-         // ...and then create a memory area with the fill spaces...
-         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 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),
-           build_int_cst_type(SIZE_T, fill_bytes));
-         free(spaces);
-         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);
- 
-       tree dest_data = gg_define_variable(UCHAR_P);
-       tree dest_len  = gg_define_variable(SIZE_T);
- 
-       gg_assign(source_data,
-                 gg_add(member(sourceref.field->var_decl_node, "data"),
-                        refer_offset(sourceref)));
-       gg_assign(source_len, refer_size_source(sourceref));
- 
-       gg_assign(dest_data,
-                 gg_add(member(destref.field->var_decl_node, "data"),
-                        refer_offset(destref)));
-       gg_assign(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;
-       }
-     }
-   return moved;
-   }
- 
- static void
- move_helper(tree size_error,        // This is an INT
-             cbl_refer_t destref,
-             cbl_refer_t sourceref,  // Call move_helper with this resolved.
-             TREEPLET   &tsource,
-             cbl_round_t rounded,
-             bool check_for_error,   // True means our called wants to know about truncation errors
-             bool restore_on_error
-             )
-   {
-   Analyze();
-   SHOW_PARSE1
-     {
-     SHOW_PARSE_INDENT
-     SHOW_PARSE_TEXT("move_helper()");
-     }
- 
-   if( size_error )
-     {
-     gg_assign(size_error, integer_zero_node);
-     }
- 
-   static tree stash = gg_define_variable(UCHAR_P, "..mh_stash", vs_file_static);
- 
-   tree st_data = NULL_TREE;
-   tree st_size = NULL_TREE;
-   if( restore_on_error )
-     {
-     // We are creating a copy of the original destination in case we clobber it
-     // and have to restore it because of a computational error.
-     static bool first_time = true;
-     static size_t stash_size = 1024;
-     if( first_time )
-       {
-       first_time = false;
-       gg_assign(stash, gg_cast(UCHAR_P, gg_malloc(stash_size)));
-       }
-     if( stash_size < destref.field->data.capacity() )
-       {
-       stash_size = destref.field->data.capacity();
-       gg_assign(stash, gg_cast(UCHAR_P, gg_realloc(stash, stash_size)));
-       }
-     st_data = qualified_data_location(destref);
-     st_size = refer_size_dest(destref);
-     gg_memcpy(stash,
-               st_data,
-               st_size);
-     }
- 
-   bool moved = mh_source_is_group(destref, sourceref, tsource);
- 
-   if( !moved )
-     {
-     moved = mh_identical(destref, sourceref);
-     }
- 
-   if( !moved )
-     {
-     moved = mh_source_is_literalN(destref,
-                                   sourceref,
-                                   check_for_error,
-                                   rounded,
-                                   size_error);
-     }
- 
-   if( !moved )
-     {
-     moved = mh_dest_is_float( destref,
-                               sourceref,
-                               tsource,
-                               rounded,
-                               size_error);
-     }
- 
-   if( !moved && rounded == truncation_e )
-     {
-     moved = mh_numeric_display( destref,
-                                 sourceref,
-                                 tsource,
-                                 size_error);
-     }
- 
-   if( !moved )
-     {
-     moved = mh_little_endian( destref,
-                               sourceref,
-                               tsource,
-                               restore_on_error,
-                               size_error);
-     }
- 
-   if( !moved )
-     {
-     moved = mh_source_is_literalA(destref,
-                                   sourceref,
-                                   rounded,
-                                   size_error);
-     }
- 
-   if( !moved )
-     {
-     moved = mh_alpha_to_alpha(destref,
-                               sourceref,
-                               rounded,
-                               size_error);
-     }
- 
-   if( !moved )
-     {
-     SHOW_PARSE1
-       {
-       SHOW_PARSE_INDENT
-       SHOW_PARSE_TEXT("default __gg__move")
-       }
- 
-     if(    destref.refmod.from
-         || destref.refmod.len
-         || sourceref.refmod.from
-         || sourceref.refmod.len )
-       {
-       // Let the move routine know to treat the destination as alphanumeric
-       gg_attribute_bit_set(destref.field, refmod_e);
-       }
- 
-     int nflags =   (sourceref.all      ? REFER_T_MOVE_ALL   : 0)
-                  + (sourceref.addr_of  ? REFER_T_ADDRESS_OF : 0);
- 
-     if( size_error )
-       {
-       gg_assign(size_error,
-                 gg_call_expr( INT,
-                               "__gg__move",
-                               gg_get_address_of(destref.field->var_decl_node),
-                               refer_offset(destref),
-                               refer_size_dest(destref),
-                               tsource.pfield,
-                               tsource.offset,
-                               tsource.length,
-                               build_int_cst_type(INT, nflags),
-                               build_int_cst_type(INT, rounded),
-                               NULL_TREE));
-       }
-     else
-       {
-                 gg_call     ( INT,
-                               "__gg__move",
-                               gg_get_address_of(destref.field->var_decl_node),
-                               refer_offset(destref),
-                               refer_size_dest(destref),
-                               tsource.pfield,
-                               tsource.offset,
-                               tsource.length,
-                               build_int_cst_type(INT, nflags),
-                               build_int_cst_type(INT, rounded),
-                               NULL_TREE);
- 
-       }
-     if(    destref.refmod.from
-         || destref.refmod.len
-         || sourceref.refmod.from
-         || sourceref.refmod.len )
-       {
-       // Return that value to its original form
-       gg_attribute_bit_clear(destref.field, refmod_e);
-       }
- 
-     // moved = true; // commented out to quiet cppcheck
-     }
- 
-   if( restore_on_error )
-     {
-     IF(size_error, ne_op, integer_zero_node)
-       {
-       gg_memcpy(st_data,
-                 stash,
-                 st_size);
-       }
-     ELSE
-       ENDIF
-     }
-   else
-     {
-     if( check_for_error )
-       {
-       IF(size_error, ne_op, integer_zero_node)
-         {
-         // We had a size error, but  there was no restore_on_error. Pointer
-         // Let our lord and master know there was a truncation:
-         set_exception_code(ec_size_truncation_e);
-         }
-       ELSE
-         ENDIF
-       }
-     }
- 
-   SHOW_PARSE1
-     {
-     SHOW_PARSE_END
-     }
-   }
- 
  tree parser_cast_long(tree N)
    {
    return gg_cast(LONG, N);
--- 14254,14259 ----
diff -Nrcpad gcc-17-20260607/gcc/cobol/genapi.h gcc-17-20260614/gcc/cobol/genapi.h
*** gcc-17-20260607/gcc/cobol/genapi.h	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/cobol/genapi.h	Sun Jun 14 22:32:07 2026
*************** typedef enum
*** 39,44 ****
--- 39,51 ----
    refer_source,
    } refer_type_t;
  
+ typedef struct TREEPLET
+   {
+   tree pfield;
+   tree offset;
+   tree length;
+   } TREEPLET;
+ 
  void parser_display_internal( tree file_descriptor,
                                cbl_refer_t refer,
                                bool advance=DISPLAY_NO_ADVANCE);
*************** tree parser_compile_dcls( const std::vec
*** 621,624 ****
--- 628,641 ----
  void parser_trim( cbl_field_t *tgt, const cbl_refer_t& input,
                    size_t how, const std::vector<cbl_refer_t>& args );
  
+ void 
+ move_helper(tree        size_error,  // INT
+             cbl_refer_t destref,
+             cbl_refer_t sourceref,
+             TREEPLET    &tsource,
+             cbl_round_t rounded,
+             bool check_for_error,
+             bool restore_on_error = false
+             );
+ 
  #endif
diff -Nrcpad gcc-17-20260607/gcc/cobol/gengen.cc gcc-17-20260614/gcc/cobol/gengen.cc
*** gcc-17-20260607/gcc/cobol/gengen.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/cobol/gengen.cc	Sun Jun 14 22:32:07 2026
*************** gg_trunc(tree integer_type, tree floatin
*** 391,396 ****
--- 391,403 ----
  tree
  gg_cast(tree type, tree var)
    {
+ #if 0
+   if(POINTER_TYPE_P(var) || TREE_CODE(var) == ADDR_EXPR)
+     {
+     fprintf(stderr, "HULL_BREACH ON DECK TEN!!\n");
+     }
+ #endif
+ 
    return fold_convert(type, var);
    }
  
*************** gg_show_type(tree type)
*** 435,444 ****
      }
  
    int code = TREE_CODE(type);
- 
    if( DECL_P(type) )
      {
      type = TREE_TYPE(type);
      }
    if( !TYPE_P(type) && code != ARRAY_REF)
      {
--- 442,451 ----
      }
  
    int code = TREE_CODE(type);
    if( DECL_P(type) )
      {
      type = TREE_TYPE(type);
+     code = TREE_CODE(type);
      }
    if( !TYPE_P(type) && code != ARRAY_REF)
      {
*************** gg_show_type(tree type)
*** 460,465 ****
--- 467,480 ----
        sprintf(ach, "ARRAY");
        break;
  
+     case VAR_DECL:
+       {
+       tree type_of_decl = TREE_TYPE(type);
+       strcpy(ach2, gg_show_type(type_of_decl));
+       sprintf(ach, "VAR_DECL %s", ach2);
+       break;
+       }
+ 
      case ARRAY_REF:
        sprintf(ach, "ARRAY_REF");
        break;
*************** gg_show_type(tree type)
*** 495,501 ****
        break;
  
      default:
!       cbl_internal_error("Unknown type %d", TREE_CODE(type));
      }
  
    if( DECL_P(original_type) && TREE_STATIC(original_type) )
--- 510,516 ----
        break;
  
      default:
!       cbl_internal_error("Unknown type %d %d %d", INTEGER_TYPE, TREE_CODE(type), code);
      }
  
    if( DECL_P(original_type) && TREE_STATIC(original_type) )
*************** gg_indirect(tree pointer, tree byte_offs
*** 1511,1516 ****
--- 1526,1537 ----
    }
  
  tree
+ gg_indirect_i(tree pointer, size_t offset)
+   {
+   return gg_indirect(pointer, build_int_cst_type(SIZE_T, offset));
+   }
+ 
+ tree
  gg_array_value(tree pointer, tree offset)
    {
    // We arrange the function so that it can work on either an ARRAY_TYPE
*************** gg_array_value(tree pointer, tree offset
*** 1528,1534 ****
      tree retval =  build4(ARRAY_REF,
                    element_type,
                    pointer,
!                   fold_convert(SIZE_T, offset),
                    NULL_TREE,
                    NULL_TREE);
      return retval;
--- 1549,1555 ----
      tree retval =  build4(ARRAY_REF,
                    element_type,
                    pointer,
!                   gg_cast(SIZE_T, offset),
                    NULL_TREE,
                    NULL_TREE);
      return retval;
*************** gg_memset(tree dest, const tree value, t
*** 2356,2362 ****
  tree
  gg_memchr(tree buf, tree ch, tree length)
    {
!   tree the_call = fold_convert(
        pvoid_type_node,
        build_call_expr_loc(gg_token_location(),
                            builtin_decl_explicit (BUILT_IN_MEMCHR),
--- 2377,2383 ----
  tree
  gg_memchr(tree buf, tree ch, tree length)
    {
!   tree the_call = gg_cast(
        pvoid_type_node,
        build_call_expr_loc(gg_token_location(),
                            builtin_decl_explicit (BUILT_IN_MEMCHR),
*************** gg_strcpy(tree dest, tree src)
*** 2432,2438 ****
  tree
  gg_strcmp(tree A, tree B)
    {
!   tree the_call = fold_convert(
        integer_type_node,
        build_call_expr_loc(gg_token_location(),
                            builtin_decl_explicit (BUILT_IN_STRCMP),
--- 2453,2459 ----
  tree
  gg_strcmp(tree A, tree B)
    {
!   tree the_call = gg_cast(
        integer_type_node,
        build_call_expr_loc(gg_token_location(),
                            builtin_decl_explicit (BUILT_IN_STRCMP),
*************** gg_close(tree int_A)
*** 2464,2470 ****
  tree
  gg_strncmp(tree char_star_A, tree char_star_B, tree size_t_N)
    {
!   tree the_call = fold_convert(
        integer_type_node,
        build_call_expr_loc(gg_token_location(),
                            builtin_decl_explicit (BUILT_IN_STRNCMP),
--- 2485,2491 ----
  tree
  gg_strncmp(tree char_star_A, tree char_star_B, tree size_t_N)
    {
!   tree the_call = gg_cast(
        integer_type_node,
        build_call_expr_loc(gg_token_location(),
                            builtin_decl_explicit (BUILT_IN_STRNCMP),
*************** gg_abort()
*** 3273,3279 ****
  tree
  gg_strlen(tree psz)
    {
!   tree the_call = fold_convert(
        size_type_node,
        build_call_expr_loc(gg_token_location(),
                            builtin_decl_explicit (BUILT_IN_STRLEN),
--- 3294,3300 ----
  tree
  gg_strlen(tree psz)
    {
!   tree the_call = gg_cast(
        size_type_node,
        build_call_expr_loc(gg_token_location(),
                            builtin_decl_explicit (BUILT_IN_STRLEN),
*************** gg_strlen(tree psz)
*** 3285,3291 ****
  tree
  gg_strdup(tree psz)
    {
!   tree the_call = fold_convert(
        build_pointer_type(char_type_node),
        build_call_expr_loc(gg_token_location(),
                            builtin_decl_explicit (BUILT_IN_STRDUP),
--- 3306,3312 ----
  tree
  gg_strdup(tree psz)
    {
!   tree the_call = gg_cast(
        build_pointer_type(char_type_node),
        build_call_expr_loc(gg_token_location(),
                            builtin_decl_explicit (BUILT_IN_STRDUP),
*************** gg_strdup(tree psz)
*** 3299,3305 ****
  tree
  gg_malloc(tree size)
    {
!   tree the_call = fold_convert(
        pvoid_type_node,
        build_call_expr_loc(gg_token_location(),
                            builtin_decl_explicit (BUILT_IN_MALLOC),
--- 3320,3326 ----
  tree
  gg_malloc(tree size)
    {
!   tree the_call = gg_cast(
        pvoid_type_node,
        build_call_expr_loc(gg_token_location(),
                            builtin_decl_explicit (BUILT_IN_MALLOC),
*************** gg_malloc(tree size)
*** 3311,3317 ****
  tree
  gg_realloc(tree base, tree size)
    {
!   tree the_call = fold_convert(
        pvoid_type_node,
        build_call_expr_loc(gg_token_location(),
                            builtin_decl_explicit (BUILT_IN_REALLOC),
--- 3332,3338 ----
  tree
  gg_realloc(tree base, tree size)
    {
!   tree the_call = gg_cast(
        pvoid_type_node,
        build_call_expr_loc(gg_token_location(),
                            builtin_decl_explicit (BUILT_IN_REALLOC),
diff -Nrcpad gcc-17-20260607/gcc/cobol/gengen.h gcc-17-20260614/gcc/cobol/gengen.h
*** gcc-17-20260607/gcc/cobol/gengen.h	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/cobol/gengen.h	Sun Jun 14 22:32:07 2026
*************** extern tree gg_array_of_field_pointers(
*** 568,573 ****
--- 568,574 ----
  extern tree gg_array_of_size_t( size_t N, size_t *values);
  extern tree gg_array_of_bytes( size_t N, unsigned char *values);
  extern tree gg_indirect(tree pointer, tree byte_offset = NULL_TREE);
+ extern tree gg_indirect_i(tree pointer, size_t offset=0);
  extern tree gg_string_literal(const char *string);
  
  #define CURRENT_LINE_NUMBER (cobol_location().first_line)
diff -Nrcpad gcc-17-20260607/gcc/cobol/genutil.cc gcc-17-20260614/gcc/cobol/genutil.cc
*** gcc-17-20260607/gcc/cobol/genutil.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/cobol/genutil.cc	Sun Jun 14 22:32:07 2026
*************** get_location(tree &retval, const cbl_ref
*** 3183,3192 ****
--- 3183,3207 ----
    // This routine looks at a refer and returns a UCHAR_P pointer to the data
    // of the object.
    retval = gg_define_variable(UCHAR_P);
+ 
    if( refer_is_super_clean(refer) )
      {
      // Working storage, not external, no refmods or subscripts:
      // gg_assign(retval, member(refer.field->var_decl_node,"data"));
+ 
+ #if 0
+     /* This should work.  It doesn't.  This needs investigating.  */
+     // To prevent aliasing problems, we use a memcpy
+     gg_memcpy(gg_get_address_of(retval),
+              gg_get_address(refer.field->data_decl_node),
+               build_int_cst_type(SIZE_T, gg_sizeof(UCHAR_P)));
+ 
+     if( refer.field->offset )
+       {
+       tree offset = build_int_cst_type(SIZE_T, refer.field->offset);
+       gg_assign(retval, gg_add(retval, offset));
+       }
+ #else
      tree base   = gg_cast(UCHAR_P,
                            gg_get_address(refer.field->data_decl_node));
      if( refer.field->offset )
*************** get_location(tree &retval, const cbl_ref
*** 3198,3203 ****
--- 3213,3219 ----
        {
        gg_assign(retval, base);
        }
+ #endif
      }
    else
      {
*************** get_length(tree &retval, const cbl_refer
*** 3232,3234 ****
--- 3248,3421 ----
      retval = refer_size_source(refer);
      }
    }
+ 
+ void
+ treeplet_fill_source(TREEPLET &treeplet, const cbl_refer_t &refer)
+   {
+   if( refer_is_clean(refer) )
+     {
+     treeplet.pfield = gg_get_address_of(refer.field->var_decl_node);
+     treeplet.offset = size_t_zero_node;
+     treeplet.length = refer_size_source(refer);
+     }
+   else
+     {
+     treeplet.pfield = gg_get_address_of(refer.field->var_decl_node);
+     treeplet.offset = refer_offset(refer);
+     treeplet.length = refer_size_source(refer);
+     }
+   }
+ 
+ tree
+ data_decl_type_for(cbl_field_t *field)
+   {
+   // The idea behind this function is to provide a useful data_type for the
+   // the data_decl_node for the field.  Where we can get it right, we do, like
+   // for little-endian FldNumericBin3.  For other types of 1, 2, 4, 8, or 16
+   // bytes, we alias it to uint8_t, uint16_t, and so on.  The idea there is to
+   // be able to create efficient GENERIC for doing moves between identical
+   // types.  Otherwise we generate a type for an array of uint8_t.
+   tree retval = NULL_TREE;
+   switch(field->type)
+     {
+     case FldGroup:
+       break;
+     case FldAlphanumeric:
+       break;
+     case FldNumericBinary:
+       break;
+     case FldFloat:
+       if( field->attr & ieeedec_e )
+         {
+         cbl_internal_error("%s: called with the unimplemented %s flag for %s",
+                             __func__,
+                             "IEEE",
+                             field->name);
+         }
+       switch(field->data.capacity())
+         {
+         case 4:
+           retval = FLOAT;
+           break;
+         case 8:
+           retval = DOUBLE;
+           break;
+         case 16:
+           retval = FLOAT128;
+           break;
+         }
+       break;
+     case FldPacked:
+       break;
+     case FldNumericBin5:
+       if( field->attr & signable_e )
+         {
+         // Because it is signable, we handle it here.  Unsigned fall through
+         // to the default handler
+         switch(field->data.capacity())
+           {
+           case 1:
+             retval = CHAR;
+             break;
+           case 2:
+             retval = SHORT;
+             break;
+           case 4:
+             retval = INT;
+             break;
+           case 8:
+             retval = LONG;
+             break;
+           case 16:
+             retval = INT128;
+             break;
+           default:
+             cbl_internal_error("%s: called with type %s but strange byte count for %s",
+                                 __func__,
+                                 cbl_field_type_str(field->type),
+                                 field->name);
+             retval = NULL_TREE;
+             break;
+           }
+         }
+       break;
+     case FldNumericDisplay:
+       break;
+     case FldNumericEdited:
+       break;
+     case FldAlphaEdited:
+       break;
+     case FldClass:
+       // Doesn't actually need storage, but we give it one character to avoid
+       // having a NULL data pointer.
+       retval = UCHAR;
+       break;
+     case FldIndex:
+       break;
+     case FldPointer:
+       break;
+     default:
+       cbl_internal_error("%s: called with type %s for %s",
+                           __func__,
+                           cbl_field_type_str(field->type),
+                           field->name);
+       retval = NULL_TREE;
+       break;
+     }
+   // At this point, if there isn't already an assigned type, we specify an
+   // unsigned integer scalar if we can, and otherwise an array of uint8_t.
+ 
+   if( !retval )
+     {
+     size_t bytes_needed = std::max(field->data.memsize,
+                                                  field->data.capacity());
+     switch(bytes_needed)
+       {
+       case 1:
+         retval = UCHAR;
+         break;
+       case 2:
+         retval = USHORT;
+         break;
+       case 4:
+         retval = UINT;
+         break;
+       case 8:
+         retval = ULONG;
+         break;
+       case 16:
+         retval = UINT128;
+         break;
+       default:
+         retval = build_array_type_nelts(UCHAR, bytes_needed);
+         break;
+       }
+     }
+ 
+   return retval;
+   }
+ 
+ void
+ attribute_bit_clear(struct cbl_field_t *var, cbl_field_attr_t bits)
+   {
+   gg_assign(  member(var, "attr"),
+               gg_bitwise_and( member(var, "attr"),
+                               gg_bitwise_not( build_int_cst_type(SIZE_T, bits) )));
+   }
+ 
+ tree
+ attribute_bit_get(struct cbl_field_t *var, cbl_field_attr_t bits)
+   {
+   tree retval = gg_bitwise_and( member(var, "attr"),
+                                 build_int_cst_type(SIZE_T, bits) );
+   return retval;
+   }
+ 
+ void
+ attribute_bit_set(struct cbl_field_t *var, cbl_field_attr_t bits)
+   {
+   gg_assign(  member(var, "attr"),
+               gg_bitwise_or(member(var, "attr"),
+                             build_int_cst_type(SIZE_T, bits)));
+   }
+ 
diff -Nrcpad gcc-17-20260607/gcc/cobol/genutil.h gcc-17-20260614/gcc/cobol/genutil.h
*** gcc-17-20260607/gcc/cobol/genutil.h	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/cobol/genutil.h	Sun Jun 14 22:32:07 2026
*************** bool      get_binary_value(tree &value,
*** 149,152 ****
--- 149,160 ----
  void      get_location(tree &retval, const cbl_refer_t &refer);
  void      get_length(tree &retval, const cbl_refer_t &refer);
  
+ void treeplet_fill_source(TREEPLET &treeplet, const cbl_refer_t &refer);
+ 
+ tree data_decl_type_for(cbl_field_t *field);
+ 
+ void attribute_bit_clear(struct cbl_field_t *var, cbl_field_attr_t bits);
+ tree attribute_bit_get(struct cbl_field_t *var, cbl_field_attr_t bits);
+ void attribute_bit_set(struct cbl_field_t *var, cbl_field_attr_t bits);
+ 
  #endif
diff -Nrcpad gcc-17-20260607/gcc/cobol/move.cc gcc-17-20260614/gcc/cobol/move.cc
*** gcc-17-20260607/gcc/cobol/move.cc	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/cobol/move.cc	Sun Jun 14 22:32:07 2026
***************
*** 0 ****
--- 1,3457 ----
+ /*
+  * Copyright (c) 2021-2026 Symas Corporation
+  *
+  * Redistribution and use in source and binary forms, with or without
+  * modification, are permitted provided that the following conditions are
+  * met:
+  *
+  * * Redistributions of source code must retain the above copyright
+  *   notice, this list of conditions and the following disclaimer.
+  * * Redistributions in binary form must reproduce the above
+  *   copyright notice, this list of conditions and the following disclaimer
+  *   in the documentation and/or other materials provided with the
+  *   distribution.
+  * * Neither the name of the Symas Corporation nor the names of its
+  *   contributors may be used to endorse or promote products derived from
+  *   this software without specific prior written permission.
+  *
+  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  */
+ 
+ #include "cobol-system.h"
+ 
+ #include "coretypes.h"
+ #include "tree.h"
+ #include "tree-iterator.h"
+ #include "stringpool.h"
+ #include "diagnostic-core.h"
+ #include "target.h"
+ 
+ #include "../../libgcobol/ec.h"
+ #include "../../libgcobol/common-defs.h"
+ #include "util.h"
+ #include "cbldiag.h"
+ #include "symbols.h"
+ #include "gengen.h"
+ #include "inspect.h"
+ #include "../../libgcobol/io.h"
+ #include "genapi.h"
+ #include "genutil.h"
+ #include "genmath.h"
+ #include "structs.h"
+ #include "../../libgcobol/gcobolio.h"
+ #include "../../libgcobol/charmaps.h"
+ #include "../../libgcobol/valconv.h"
+ #include "show_parse.h"
+ #include "fold-const.h"
+ #include "realmpfr.h"
+ #include "compare.h"
+ 
+ #if 0
+ // This is a debugging function used from time-to-time
+ static void
+ hex_of(tree location, size_t bytes)
+   {
+   gg_printf("0x", NULL_TREE);
+   for(size_t i=0; i<bytes; i++)
+     {
+     gg_printf("%2.2X", gg_indirect_i(gg_cast(UCHAR_P, location), i), NULL_TREE);
+     }
+   }
+ 
+ static void
+ hex_msg(const char *msg, tree location, size_t bytes)
+   {
+   gg_printf("%s ", gg_string_literal(msg), NULL_TREE);
+   hex_of(location, bytes);
+   gg_printf("\n", NULL_TREE);
+   }
+ 
+ #endif
+ 
+ static cbl_figconst_t
+ is_figconst_t(const cbl_field_t *field)
+   {
+   cbl_figconst_t figconst = (cbl_figconst_t)(field->attr & FIGCONST_MASK);
+   return figconst;
+   }
+ 
+ static cbl_figconst_t
+ is_figconst(const cbl_refer_t &sourceref)
+   {
+   return is_figconst_t(sourceref.field);
+   }
+ 
+ static int
+ digits_to_bytes(int digits)
+   {
+   int retval;
+   if( digits <= 2 )
+     {
+     retval = 1;
+     }
+   else if( digits <= 4 )
+     {
+     retval = 2;
+     }
+   else if( digits <= 9 )
+     {
+     retval = 4;
+     }
+   else if( digits <= 18 )
+     {
+     retval = 8;
+     }
+   else
+     {
+     retval = 16;
+     }
+   return retval;
+   }
+ 
+ static tree
+ get_reference_to_data(cbl_field_t *field)
+   {
+   // Given a field, we can derive the type of data the field needs to provide.
+   // That field has a field->data_decl_node, which is the starting point for
+   // the reference to the data we calculate.
+   tree retval = NULL_TREE;
+   tree field_type = data_decl_type_for(field);
+   tree data_type  = TREE_TYPE(field->data_decl_node);
+   bool field_is_array = TREE_CODE(field_type) == ARRAY_TYPE;
+   bool data_is_array  = TREE_CODE(data_type) == ARRAY_TYPE;
+ 
+   int field_code = TREE_CODE(field_type);
+   int data_code  = TREE_CODE(data_type);
+   size_t field_size = TREE_INT_CST_LOW(TYPE_SIZE_UNIT(field_type));
+   size_t data_size  = TREE_INT_CST_LOW(TYPE_SIZE_UNIT(data_type));
+ 
+   if( field_code == data_code && field_size == data_size )
+     {
+     if( !field_is_array )
+       {
+       // The two types are the same and are not ARRAY_TYPE
+       if( field->offset == 0 )
+         {
+         // This is an "ah, that feels good" moment.  Getting here means the
+         // field is something like "77 foo pic 9999" and that means the
+         // data_decl_node is exactly what is needed.
+         retval = field->data_decl_node;
+         }
+       else
+         {
+         // We have an offset.
+         if( (field->offset % field_size) == 0 )
+           {
+           // The offset is an integer number of bytes from data_decl_node:
+           size_t index = field->offset % field_size;
+           retval = gg_indirect( gg_cast(build_pointer_type(data_type),
+                                      gg_get_address_of(field->data_decl_node)),
+                                build_int_cst_type(SIZE_T, index));
+           }
+         else
+           {
+           // The offset is some random number of bytes.  We need to do a
+           // retval = *(data_type *)((char *)&data_decl_node + offset)
+           tree base = gg_get_address_of(field->data_decl_node);
+           base = gg_cast(UCHAR_P, base);
+           base = gg_add(base, build_int_cst_type(SIZE_T, field->offset));
+           retval = gg_cast(field_type, gg_indirect(base));
+           }
+         }
+       }
+     else
+       {
+       // The two types are the same ARRAY_TYPE
+       retval = gg_cast(UCHAR_P, gg_pointer_to_array(field->data_decl_node));
+       if( field->offset )
+         {
+         retval = gg_add(retval, build_int_cst_type(SIZE_T, field->offset));
+         }
+       }
+     }
+   else if( field_is_array && data_is_array )
+     {
+     // We have two different array types
+     retval = gg_cast(UCHAR_P, gg_pointer_to_array(field->data_decl_node));
+     if( field->offset )
+       {
+       retval = gg_add(retval, build_int_cst_type(SIZE_T, field->offset));
+       }
+     }
+   else if( !field_is_array && !data_is_array )
+     {
+     // The two data types are different, and neither is an array
+     if( field->offset == 0 )
+       {
+       if( field_size == data_size )
+         {
+         // The offset is zero, and the sizes are the same.
+         // This must be something like REDEFINES or the like:
+         retval = gg_cast(field_type, field->data_decl_node);
+         }
+       else
+         {
+         // The sizes are different:
+         // retval = *(data_type *)((char *)&data_decl_node)
+         tree base = gg_get_address_of(field->data_decl_node);
+         retval = gg_indirect(gg_cast(build_pointer_type(field_type), base));
+         }
+       }
+     else
+       {
+       // There is an offset
+       tree base = gg_get_address_of(field->data_decl_node);
+       base = gg_cast(UCHAR_P, base);
+       base = gg_add(base, build_int_cst_type(SIZE_T, field->offset));
+       retval = gg_indirect(gg_cast(build_pointer_type(field_type), base));
+       }
+     }
+   else if( !field_is_array && data_is_array )
+     {
+     // The return is a scalar, but we start from an array.
+     tree base = gg_pointer_to_array(field->data_decl_node);
+     base = gg_cast(UCHAR_P, base);
+     if( field->offset )
+       {
+       base = gg_add(base, build_int_cst_type(SIZE_T, field->offset));
+       }
+     base = gg_cast(build_pointer_type(field_type), base);
+     retval = gg_indirect(base);
+     }
+   else // if( field_is_array !data_is_array )
+     {
+     // The return is an array, but we start from a scalar
+     tree base = gg_get_address_of(field->data_decl_node);
+     base = gg_cast(UCHAR_P, base);
+     if( field->offset )
+       {
+       base = gg_add(base, build_int_cst_type(SIZE_T, field->offset));
+       }
+     retval = base;
+     }
+ 
+   return retval;
+   }
+ 
+ static void
+ conditional_abs(tree source, const cbl_field_t *field)
+   {
+   Analyze();
+   if( !(field->attr & signable_e) )
+     {
+     gg_assign(source, gg_abs(source));
+     }
+   }
+ 
+ static tree
+ get_literalN_value(cbl_field_t *var)
+   {
+   // Get the literal N value from the integer var_decl
+   tree retval = NULL_TREE;
+   tree var_type = tree_type_from_size(var->data.capacity(),
+                                       var->attr & signable_e);
+   retval = gg_cast(var_type, var->data_decl_node);
+   return retval;
+   }
+ 
+ static size_t
+ get_bytes_needed(cbl_field_t *field)
+   {
+   size_t retval = 0;
+   switch(field->type)
+     {
+     case FldIndex:
+     case FldPointer:
+     case FldFloat:
+     case FldLiteralN:
+       retval = field->data.capacity();
+       break;
+ 
+     case FldNumericDisplay:
+       {
+       int digits;
+       if( field->attr & scaled_e && field->data.rdigits<0)
+         {
+         digits = field->data.digits + -field->data.rdigits;
+         }
+       else
+         {
+         digits = field->data.digits;
+         }
+       retval = digits_to_bytes(digits);
+       break;
+       }
+ 
+     case FldPacked:
+       {
+       int digits;
+       if( field->attr & scaled_e && field->data.rdigits<0)
+         {
+         digits = field->data.digits + -field->data.rdigits;
+         }
+       else
+         {
+         digits = field->data.digits;
+         }
+       if( !(field->attr & separate_e) )
+         {
+         // This is COMP-3, so there is a sign nybble.
+         digits += 1;
+         }
+       retval = (digits+1)/2;
+       break;
+       }
+ 
+     case FldNumericBinary:
+     case FldNumericBin5:
+       {
+       if( field->data.digits )
+         {
+         int digits;
+         if( field->attr & scaled_e && field->data.rdigits<0)
+           {
+           digits = field->data.digits + -field->data.rdigits;
+           }
+         else
+           {
+           digits = field->data.digits;
+           }
+         retval = digits_to_bytes(digits);
+         }
+       else
+         {
+         retval = field->data.capacity();
+         }
+       break;
+       }
+ 
+     default:
+       cbl_internal_error("%s: Knows not the variable type %s for %s",
+               __func__,
+               cbl_field_type_str(field->type),
+               field->name );
+       break;
+     }
+   return retval;
+   }
+ 
+ static void
+ get_binary_value_from_float(tree         value,
+                       const cbl_refer_t &dest,
+                             cbl_field_t *source,
+                             tree         source_offset
+                             )
+   {
+   // The destination is something with rdigits; the source is FldFloat
+   tree ftype;
+   switch( source->data.capacity() )
+     {
+     case 4:
+       ftype = FLOAT;
+       break;
+     case 8:
+       ftype = DOUBLE;
+       break;
+     case 16:
+       ftype = FLOAT128;
+       break;
+     default:
+       gcc_unreachable();
+       break;
+     }
+   tree fvalue = gg_define_variable(ftype);
+   gg_assign(fvalue,
+             gg_indirect(gg_cast(build_pointer_type(ftype),
+                                 gg_add( member(source->var_decl_node,"data"),
+                                         source_offset))));
+ 
+   // We need to convert the floating point value to an integer value with the
+   // rdigits lined up properly.
+ 
+   int rdigits = get_scaled_rdigits( dest.field );
+   gg_assign(fvalue,
+             gg_multiply(fvalue,
+                         gg_float(ftype,
+                                  wide_int_to_tree(INT,
+                                                   get_power_of_ten(rdigits)))));
+ 
+   // And we need to throw away any digits to the left of the leftmost digits:
+   // At least, we need to do so in principle.  I am deferring this problem until
+   // I understand it better.
+ 
+   // We now have a floating point value that has been multiplied by 10**rdigits
+   gg_assign(value, gg_trunc(TREE_TYPE(value), fvalue));
+   }
+ 
+ static bool
+ mh_identical(const cbl_refer_t &destref,
+              const cbl_refer_t &sourceref)
+   {
+   // Check to see if the two variables are identical types, thus allowing
+   // for a simple byte-for-byte copy of the data areas:
+   bool moved = false;
+   if(     destref.field->type            == sourceref.field->type
+       &&  destref.field->data.capacity() == sourceref.field->data.capacity()
+       &&  destref.field->data.digits     == sourceref.field->data.digits
+       &&  destref.field->data.rdigits    == sourceref.field->data.rdigits
+       &&       (destref.field->attr   & (signable_e|separate_e|leading_e))
+             == (sourceref.field->attr & (signable_e|separate_e|leading_e))
+       &&  destref.field->codeset.encoding == sourceref.field->codeset.encoding
+       )
+     {
+     // The source and destination are identical in type and the
+     // Source doesn't have a depending_on clause
+     SHOW_PARSE1
+       {
+       SHOW_PARSE_INDENT
+       SHOW_PARSE_TEXT("mh_identical()");
+       }
+     if(    refer_is_super_clean(destref)
+         && refer_is_super_clean(sourceref) )
+       {
+       // They are identical, and they have no subscripts
+ 
+       tree source = get_reference_to_data(sourceref.field);
+       tree dest   = get_reference_to_data(destref.field);
+ 
+       tree type = data_decl_type_for(destref.field);
+       if( TREE_CODE(type) == ARRAY_TYPE )
+         {
+         // We are dealing with pointers to UCHAR.
+         // The move has to be done with a copy:
+         gg_memcpy(dest,
+                   source,
+                   build_int_cst_type(SIZE_T,
+                                      destref.field->data.capacity()));
+         }
+       else
+         {
+         // We are dealing with scalars
+         gg_assign(dest, source);
+         }
+       moved = true;
+       }
+     }
+   return moved;
+   }
+ 
+ static bool
+ mh_source_is_literalN(cbl_refer_t &destref,
+                       cbl_refer_t &sourceref,
+                       bool         check_for_error,
+                       cbl_round_t  rounded,
+                       tree         size_error)
+   {
+   bool moved = false;
+   if( sourceref.field->type == FldLiteralN )
+     {
+     Analyze();
+     switch( destref.field->type )
+       {
+       case FldGroup:
+       case FldAlphanumeric:
+         {
+         SHOW_PARSE1
+           {
+           SHOW_PARSE_INDENT
+           SHOW_PARSE_TEXT("mh_source_is_literalN: __gg__psz_to_alpha_move")
+           }
+ 
+         // In accordance with the rules of moving a numeric to an alphabetic,
+         // we need to eliminate any leading sign character from the text
+         // string:
+ 
+         const char *original = sourceref.field->data.original();
+         if( *original == ascii_plus || *original == ascii_minus )
+           {
+           original += 1;
+           }
+ 
+         // We need the data sent to __gg__psz_to_alpha_move to be in the
+         // encoding of the destination.  In accordance with the rules of
+         // cbl_field_t::internalize, the FldLiteralN is in source-code
+         // encoding, so we have to convert.
+ 
+         size_t charsout;
+         const char *converted = __gg__iconverter(
+                                          DEFAULT_SOURCE_ENCODING,
+                                          destref.field->codeset.encoding,
+                                          original,
+                                          strlen(original),
+                                          &charsout);
+         gg_call(VOID,
+                 "__gg__psz_to_alpha_move",
+                 gg_get_address_of(destref.field->var_decl_node),
+                 refer_offset(destref),
+                 refer_size_dest(destref),
+                 build_string_literal(charsout, converted),
+                 build_int_cst_type(SIZE_T, charsout),
+                 NULL_TREE);
+         moved = true;
+         break;
+         }
+ 
+       case FldPointer:
+       case FldIndex:
+         {
+         // We know this is a move to an eight-byte value:
+         SHOW_PARSE1
+           {
+           SHOW_PARSE_INDENT
+           SHOW_PARSE_TEXT("mh_source_is_literalN: pointer/index")
+           }
+ 
+         if( sourceref.field->data.capacity() < 8 )
+           {
+           // There are too few bytes in sourceref
+           if( sourceref.field->attr & signable_e )
+             {
+             static tree highbyte = gg_define_variable(UCHAR, "..mh_litN_highbyte", vs_file_static);
+             // Pick up the source byte that has the sign bit.
+             gg_assign(highbyte,
+                       gg_get_indirect_reference(gg_add(member(sourceref.field->var_decl_node,
+                                                               "data"),
+                                                 build_int_cst_type(SIZE_T,
+                                                                    sourceref.field->data.capacity()-1)),
+                       integer_zero_node));
+             IF( gg_bitwise_and(highbyte, build_int_cst_type(UCHAR, 0x80)),
+                 eq_op,
+                 build_int_cst_type(UCHAR, 0x80) )
+               {
+               // We are dealing with a negative number
+               gg_memset(gg_add(member(destref.field->var_decl_node, "data"),
+                                refer_offset(destref)),
+                                 build_int_cst_type(UCHAR, 0xFF),
+                                 build_int_cst_type(SIZE_T, 8));
+               }
+             ELSE
+               gg_memset(gg_add(member(destref.field->var_decl_node, "data"),
+                                refer_offset(destref)),
+                                 build_int_cst_type(UCHAR, 0x00),
+                                 build_int_cst_type(SIZE_T, 8));
+               ENDIF
+             }
+           else
+             {
+             // The too-short source is positive.
+               gg_memset(gg_add(member(destref.field->var_decl_node, "data"),
+                                refer_offset(destref)),
+                               build_int_cst_type(UCHAR, 0x00),
+                               build_int_cst_type(SIZE_T, 8));
+             }
+           }
+ 
+         tree literalN_value = get_literalN_value(sourceref.field);
+         scale_by_power_of_ten_N(literalN_value, -sourceref.field->data.rdigits);
+         gg_memcpy(gg_add(member(destref.field->var_decl_node, "data"),
+                                refer_offset(destref)),
+                   gg_get_address_of(literalN_value),
+                   build_int_cst_type(SIZE_T, sourceref.field->data.capacity()));
+         moved = true;
+ 
+         break;
+         }
+ 
+       case FldNumericBin5:
+         {
+         // We are moving from a FldLiteralN (which we know has no subscripts or
+         // refmods), to a NumericBin5, which might.
+ 
+         SHOW_PARSE1
+           {
+           SHOW_PARSE_INDENT
+           SHOW_PARSE_TEXT("mh_source_is_literalN: FldNumericBin5")
+           }
+ 
+         // For now, we are ignoring intermediates:
+         assert( !(destref.field->attr & intermediate_e) );
+ 
+         int bytes_needed = std::max(destref.field->data.capacity(),
+                                     sourceref.field->data.capacity());
+         tree calc_type = tree_type_from_size(bytes_needed,
+                                             sourceref.field->attr & signable_e);
+         tree dest_type = tree_type_from_size( destref.field->data.capacity(),
+                                               destref.field->attr & signable_e);
+ 
+         // Pick up the source data.
+         tree source = gg_define_variable(calc_type);
+         gg_assign(source, gg_cast(calc_type, sourceref.field->data_decl_node));
+ 
+         // Take the absolute value, if the destination is not signable
+         conditional_abs(source, destref.field);
+ 
+         // See if it needs to be scaled:
+         scale_by_power_of_ten_N(
+                      source,
+                      destref.field->data.rdigits-sourceref.field->data.rdigits);
+ 
+         if( check_for_error && size_error )
+           {
+           Analyzer.Message("Check to see if result fits");
+           if( destref.field->data.digits )
+             {
+             FIXED_WIDE_INT(128) power_of_ten = get_power_of_ten(destref.field->data.digits);
+             IF( gg_abs(source), ge_op, wide_int_to_tree(calc_type,
+                                                         power_of_ten) )
+               {
+               gg_assign(size_error, gg_bitwise_or(size_error, integer_one_node));
+               }
+             ELSE
+               ENDIF
+             }
+           }
+ 
+         Analyzer.Message("Move to destination location");
+         tree dest_location = gg_indirect(
+                     gg_cast(build_pointer_type(dest_type),
+                             gg_add(member(destref.field->var_decl_node, "data"),
+                                    refer_offset(destref))));
+         gg_assign(dest_location, gg_cast(dest_type, source));
+         moved = true;
+         break;
+         }
+ 
+       case FldNumericDisplay:
+       case FldNumericBinary:
+       case FldNumericEdited:
+       case FldPacked:
+         {
+         static tree berror = gg_define_variable(INT, "..mh_litN_berror", vs_file_static);
+         gg_assign(berror, integer_zero_node);
+         SHOW_PARSE1
+           {
+           SHOW_PARSE_INDENT
+           SHOW_PARSE_TEXT("calling get_literalN_value ")
+           }
+         tree literalN_value = get_literalN_value(sourceref.field);
+ 
+         SHOW_PARSE1
+           {
+           SHOW_PARSE_INDENT
+           SHOW_PARSE_TEXT("calling __gg__int128_to_qualified_field ")
+           }
+ 
+         gg_call(INT,
+                 "__gg__int128_to_qualified_field",
+                 gg_get_address_of(destref.field->var_decl_node),
+                 refer_offset(destref),
+                 refer_size_dest(destref),
+                 gg_cast(INT128, literalN_value),
+                 build_int_cst_type(INT, sourceref.field->data.rdigits),
+                 build_int_cst_type(INT, rounded),
+                 gg_get_address_of(berror),
+                 NULL_TREE);
+ 
+         if( size_error )
+           {
+           IF( berror, ne_op, integer_zero_node  )
+             {
+             gg_assign(size_error, gg_bitwise_or(size_error, integer_one_node));
+             }
+           ELSE
+             ENDIF
+           }
+         moved = true;
+         break;
+         }
+ 
+       case FldAlphaEdited:
+         {
+         SHOW_PARSE1
+           {
+           SHOW_PARSE_INDENT
+           SHOW_PARSE_TEXT(" FldAlphaEdited")
+           }
+ 
+         // __gg__string_to_alpha_edited expects the source string to be in
+         // the same encoding as the target.  The rule in internalize is that
+         // a FldLiteralN::data.initial is left in source-code space, so it
+         // needs to be converted to the destination encoding.
+         size_t charsout;
+         const char *converted_ = __gg__iconverter(
+                                             DEFAULT_SOURCE_ENCODING,
+                                             destref.field->codeset.encoding,
+                                             sourceref.field->data.original(),
+                                             strlen(sourceref.field->data.original()),
+                                             &charsout);
+         // Copy converted, because __gg__string_to_alpha_edited might have its
+         // own reasons to use charmap_t, which could mess up the static buffer
+         // used by __gg__iconverter:
+         char *converted = xstrdup(converted_);
+         gg_call(VOID,
+                 "__gg__string_to_alpha_edited",
+                 gg_add( member(destref.field->var_decl_node, "data"),
+                         refer_offset(destref) ),
+                 build_int_cst_type(INT, destref.field->codeset.encoding),
+                 gg_string_literal(converted),
+                 build_int_cst_type(INT, strlen(converted)),
+                 gg_string_literal(destref.field->data.picture),
+                 NULL_TREE);
+         moved = true;
+         free(converted);
+         break;
+         }
+ 
+       case FldFloat:
+         {
+         tree tdest = gg_add(member(destref.field->var_decl_node, "data"),
+                             refer_offset(destref) );
+         switch( destref.field->data.capacity() )
+           {
+           case 4:
+             {
+             // The following generated code is the exact equivalent
+             // of the C code:
+             //   *(float *)dest = (float)data.value
+             gg_assign(gg_indirect(gg_cast(build_pointer_type(FLOAT), tdest)),
+                       gg_cast (FLOAT, sourceref.field->data.value_of()));
+             break;
+             }
+           case 8:
+             {
+             gg_assign(gg_indirect(gg_cast(build_pointer_type(DOUBLE), tdest)),
+                       gg_cast (DOUBLE, sourceref.field->data.value_of()));
+             break;
+             }
+           case 16:
+             {
+             gg_assign(gg_indirect(gg_cast(build_pointer_type(FLOAT128), tdest)),
+                       sourceref.field->data.value_of());
+             break;
+             }
+           }
+         moved=true;
+         break;
+         }
+ 
+       default:
+         cbl_internal_error(
+               "In %<parser_move(%s to %s)%>, the move of FldLiteralN to %s "
+               "is unimplemented",
+               sourceref.field->name,
+               destref.field->name,
+               cbl_field_type_str(destref.field->type));
+         break;
+       }
+     }
+   return moved;
+   }
+ 
+ static
+ tree float_type_of(int n)
+   {
+   switch(n)
+     {
+     case 4:
+       return FLOAT;
+     case 8:
+       return DOUBLE;
+     case 16:
+       return FLOAT128;
+     default:
+       gcc_unreachable();
+     }
+   return NULL_TREE;
+   }
+ 
+ static tree
+ float_type_of(const cbl_field_t *field)
+   {
+   gcc_assert(field->type == FldFloat);
+   return float_type_of(field->data.capacity());
+   }
+ 
+ static tree
+ float_type_of(const cbl_refer_t *refer)
+   {
+   return float_type_of(refer->field);
+   }
+ 
+ static bool
+ mh_dest_is_float( cbl_refer_t &destref,
+                   cbl_refer_t &sourceref,
+                   TREEPLET    &tsource,
+                   cbl_round_t    rounded,
+                   tree         size_error) // int
+   {
+   bool moved = false;
+   if( destref.field->type == FldFloat )
+     {
+     Analyze();
+     switch( sourceref.field->type )
+       {
+       case FldPointer:
+       case FldIndex:
+       case FldNumericBin5:
+       case FldNumericDisplay:
+       case FldNumericBinary:
+       case FldNumericEdited:
+       case FldPacked:
+         {
+         switch( destref.field->data.capacity() )
+           {
+           case 4:
+             gg_call(VOID,
+                     "__gg__float32_from_int128",
+                     gg_get_address_of(destref.field->var_decl_node),
+                     refer_offset(destref),
+                     tsource.pfield,
+                     tsource.offset,
+                     build_int_cst_type(INT, rounded),
+                     size_error ? gg_get_address_of(size_error) : null_pointer_node,
+                     NULL_TREE);
+             break;
+           case 8:
+             gg_call(VOID,
+                     "__gg__float64_from_int128",
+                     gg_get_address_of(destref.field->var_decl_node),
+                     refer_offset(destref),
+                     tsource.pfield,
+                     tsource.offset,
+                     build_int_cst_type(INT, rounded),
+                     size_error ? gg_get_address_of(size_error) : null_pointer_node,
+                     NULL_TREE);
+             break;
+           case 16:
+             gg_call(VOID,
+                     "__gg__float128_from_int128",
+                     gg_get_address_of(destref.field->var_decl_node),
+                     refer_offset(destref),
+                     tsource.pfield,
+                     tsource.offset,
+                     build_int_cst_type(INT, rounded),
+                     size_error ? gg_get_address_of(size_error) : null_pointer_node,
+                     NULL_TREE);
+             break;
+           }
+         moved = true;
+         break;
+         }
+ 
+       case FldFloat:
+         {
+         // We are testing for size.  First, we need to check to see if the
+         // source is INFINITY.  If so, that's an automatic size error
+ 
+         IF( gg_call_expr( INT,
+                           "__gg__is_float_infinite",
+                           tsource.pfield,
+                           tsource.offset,
+                           NULL_TREE),
+             ne_op,
+             integer_zero_node )
+           {
+           if( size_error )
+             {
+             gg_assign(size_error, integer_one_node );
+             }
+           }
+         ELSE
+           {
+           // The source isn't infinite.
+           // If the destination is bigger than the source, then we can
+           // do an untested move:
+ 
+           if( destref.field->data.capacity() >= sourceref.field->data.capacity() )
+             {
+             tree dtype = float_type_of(&destref);
+             tree stype = float_type_of(&sourceref);
+ 
+             tree tdest = gg_add(member(destref.field->var_decl_node, "data"),
+                                refer_offset(destref));
+             tree source = gg_add(member(sourceref.field->var_decl_node, "data"),
+                                 refer_offset(sourceref));
+             gg_assign(gg_indirect(gg_cast(build_pointer_type(dtype), tdest)),
+                       gg_cast(dtype,
+                               gg_indirect(gg_cast(build_pointer_type(stype),
+                                           source))));
+             }
+           else
+             {
+             // There are only three possible moves left:
+             if(destref.field->data.capacity() == 8 )
+               {
+               if( size_error )
+                 {
+                 gg_assign(size_error,
+                           gg_call_expr( INT,
+                                 "__gg__float64_from_128",
+                                 gg_get_address_of(destref.field->var_decl_node),
+                                 refer_offset(destref),
+                                 tsource.pfield,
+                                 tsource.offset,
+                                 NULL_TREE));
+                 }
+               else
+                 {
+                           gg_call( INT,
+                                 "__gg__float64_from_128",
+                                 gg_get_address_of(destref.field->var_decl_node),
+                                 refer_offset(destref),
+                                 tsource.pfield,
+                                 tsource.offset,
+                                 NULL_TREE);
+                 }
+               }
+             else
+               {
+               // The destination has to be float32
+               if( sourceref.field->data.capacity() == 8 )
+                 {
+                 if( size_error )
+                   {
+                   gg_assign(size_error,
+                             gg_call_expr( INT,
+                                 "__gg__float32_from_64",
+                                 gg_get_address_of(destref.field->var_decl_node),
+                                 refer_offset(destref),
+                                 tsource.pfield,
+                                 tsource.offset,
+                                 NULL_TREE));
+                   }
+                 else
+                   {
+                             gg_call( INT,
+                                 "__gg__float32_from_64",
+                                 gg_get_address_of(destref.field->var_decl_node),
+                                 refer_offset(destref),
+                                 tsource.pfield,
+                                 tsource.offset,
+                                 NULL_TREE);
+                   }
+ 
+                 }
+               else
+                 {
+                 if( size_error )
+                   {
+                   gg_assign(size_error,
+                             gg_call_expr( INT,
+                                 "__gg__float32_from_128",
+                                 gg_get_address_of(destref.field->var_decl_node),
+                                 refer_offset(destref),
+                                 tsource.pfield,
+                                 tsource.offset,
+                                 NULL_TREE));
+                   }
+                 else
+                   {
+                             gg_call( INT,
+                                 "__gg__float32_from_128",
+                                 gg_get_address_of(destref.field->var_decl_node),
+                                 refer_offset(destref),
+                                 tsource.pfield,
+                                 tsource.offset,
+                                 NULL_TREE);
+                   }
+                 }
+               }
+             }
+           }
+         ENDIF
+ 
+         moved = true;
+         break;
+         }
+ 
+       case FldLiteralA:
+       case FldAlphanumeric:
+       case FldGroup:
+         {
+         // Alphanumeric to float is inherently slow.  Send it off to the library
+         break;
+         }
+ 
+       default:
+         cbl_internal_error("In %<mh_dest_is_float%>(%s to %s), the "
+                            "move of %s to %s is unimplemented",
+               sourceref.field->name,
+               destref.field->name,
+               cbl_field_type_str(sourceref.field->type),
+               cbl_field_type_str(destref.field->type));
+         break;
+       }
+     }
+   return moved;
+   }
+ 
+ static void
+ picky_memset(tree &dest_p, unsigned char value, size_t length)
+   {
+   if( length )
+     {
+     tree dest_ep = gg_define_variable(TREE_TYPE(dest_p));
+     gg_assign(dest_ep,
+               gg_add( dest_p,
+                       build_int_cst_type(SIZE_T, length)));
+     WHILE( dest_p, lt_op, dest_ep )
+       {
+       gg_assign(gg_indirect(dest_p),
+                 build_int_cst_type(UCHAR, value));
+       gg_increment(dest_p);
+       }
+       WEND
+     }
+   }
+ 
+ static void
+ picky_memcpy(tree &dest_p, const tree &source_p, size_t length, tree zero)
+   {
+   // This is the routine that copies digits for NumericDisplay.  In addition
+   // to just moving digits from source to destination, it has to handle
+   // clearing up embedded sign information.
+   if( length )
+     {
+     tree dest_ep = gg_define_variable(TREE_TYPE(dest_p));
+     gg_assign(dest_ep,
+               gg_add( dest_p,
+                       build_int_cst_type(SIZE_T, length)));
+     WHILE( dest_p, lt_op, dest_ep )
+       {
+       gg_assign(gg_indirect(dest_p),
+                 gg_bitwise_or(zero,
+                       gg_bitwise_and(gg_indirect(source_p),
+                              build_int_cst_type(UCHAR, 0x0F))));
+       gg_increment(dest_p);
+       gg_increment(source_p);
+       }
+       WEND
+     }
+   }
+ 
+ static void
+ clear_negative_zero(const cbl_refer_t &destref,
+                     const cbl_refer_t &sourceref,
+                           tree        dest_location)
+   {
+   // It is an idiosyncracy of numeric-edited and packed-decimal that a
+   // truncated value can end up zero, but with a negative flag.  This routine
+   // makes such values positive.
+   if(    !(sourceref.field->attr & signable_e)
+       || !(destref.field->attr   & signable_e) )
+     {
+     return;
+     }
+   // They are both signable.
+   // Was truncation involved?
+   if(    (sourceref.field->data.digits - sourceref.field->data.rdigits)
+       <= (destref.field->data.digits   - destref.field->data.rdigits  ) )
+     {
+     return;
+     }
+   // The source side was truncated.
+ 
+   charmap_t *charmap =
+                    __gg__get_charmap(destref.field->codeset.encoding);
+   tree goto_bugout;
+   tree label_bugout;
+   gg_create_goto_pair(&goto_bugout,
+                       &label_bugout);
+   tree p     = gg_define_variable(UCHAR_P);
+   tree p_end =  gg_define_variable(UCHAR_P);
+   gg_assign(p, dest_location);
+   gg_assign(p_end,
+             gg_add(p,
+                    build_int_cst_type(SIZE_T,
+                                       destref.field->data.capacity()-1)));
+   // All the bytes before last one have to be zero:
+   tree tzero = build_int_cst_type(UCHAR,
+                destref.field->type == FldPacked
+                ? 0
+                : charmap->mapped_character(ascii_zero));
+   WHILE( p, lt_op, p_end )
+     {
+     IF( gg_indirect(p), ne_op, tzero )
+       {
+       // This byte is non-zero, so beat it.
+       gg_append_statement(goto_bugout);
+       }
+     ELSE
+       {
+       }
+     ENDIF
+     gg_increment(p);
+     }
+   WEND
+   if( destref.field->type == FldPacked )
+     {
+     // If the final byte is 0x0D, then we have to make it 0x0C
+     IF( gg_indirect(p), eq_op, build_int_cst_type(UCHAR, 0x0D) )
+       {
+       gg_assign(gg_indirect(p), build_int_cst_type(UCHAR, 0x0C) );
+       }
+     ELSE
+       {
+       }
+     ENDIF
+     }
+   else
+     {
+     // This is numeric display.
+     IF( gg_bitwise_and(gg_indirect(p), build_int_cst_type(UCHAR, 0x0F)),
+         eq_op,
+         build_int_cst_type(UCHAR, 0x00) )
+       {
+       if( charmap->is_like_ebcdic() )
+         {
+         // We force it positive by making 0xDN into 0xFN
+         gg_assign(gg_indirect(p),
+                     gg_bitwise_or(gg_indirect(p),
+                                   build_int_cst_type(UCHAR, 0xF0)));
+         }
+       else
+         {
+         // We force it positive by making 0x7N into 0x3N
+           gg_assign(gg_indirect(p),
+                     gg_bitwise_and(gg_indirect(p),
+                                   build_int_cst_type(UCHAR, 0x3F)));
+         }
+       }
+     ELSE
+       {
+       }
+     ENDIF
+     }
+   gg_append_statement(label_bugout);
+   }
+ 
+ static bool
+ mh_numeric_display( const cbl_refer_t &destref,
+                     const cbl_refer_t &sourceref,
+                     const TREEPLET    &tsource,
+                           tree         size_error)
+   {
+   bool moved = false;
+ 
+   charmap_t *charmap_source =
+                        __gg__get_charmap(sourceref.field->codeset.encoding);
+   if(     destref.field->type   == FldNumericDisplay
+       &&  sourceref.field->type == FldNumericDisplay
+       &&  !(destref.field->attr   & scaled_e)
+       &&  !(sourceref.field->attr & scaled_e)
+       &&  charmap_source->stride() == 1
+       &&  sourceref.field->codeset.encoding == destref.field->codeset.encoding
+       )
+     {
+     // We can do simple moves of single-byte same-encoding numeric display.
+     // More complex ones get sent to __gg__move
+ 
+     Analyze();
+     // I believe that there are 450 pathways through the following code.
+     // That's because there are five different valid combination of signable_e,
+     // separate_e, and leading_e.  There are three possibilities for
+     // sender/receiver rdigits (too many, too few, and just right), and the
+     // same for ldigits.  5 * 5 * 3 * 3 * 2 = 450.
+ 
+     // Fasten your seat belts.
+ 
+     // This routine is complicated by the fact that although I had several
+     // false starts of putting this into libgcobol, I keep coming back to the
+     // fact that assignment of zoned values is common.  And, so, there are all
+     // kinds of things that are known at compile time that would turn into
+     // execution-time decisions if I moved them to the library.  So, complex
+     // or not, I am doing all this code here at compile time because it will
+     // minimize the code at execution time.
+ 
+     // One thing to keep in mind is the problem caused by a source value being
+     // internally signed.  That turns an ASCII "123" into "12t", and we
+     // very probably don't want that "t" to find its way into the destination
+     // value.  The internal sign characteristic of ASCII is that the high
+     // nybble of the sign location is 0x30 or 0x70.  For EBCDIC, the high
+     // nybble is 0xC0 for positive values, and 0xD0 for negative; all other
+     // digits are 0x70.
+ 
+     charmap_t *charmap_dest   =
+                        __gg__get_charmap(  destref.field->codeset.encoding);
+ 
+     static tree source_sign_loc  = gg_define_variable(UCHAR_P,
+                                                       "..mhnd_sign_loc",
+                                                       vs_file_static);
+     static tree dest_sign_loc = gg_define_variable(UCHAR_P,
+                                                       "..mhnd_dest_sign_loc",
+                                                       vs_file_static);
+     static tree source_sign      = gg_define_variable(INT,
+                                                       "..mhnd_sign",
+                                                       vs_file_static);
+     // The destination data pointer
+     static tree dest_p    = gg_define_variable( UCHAR_P,
+                                                 "..mhnd_dest",
+                                                 vs_file_static);
+     // The source data pointer
+     static tree source_p  = gg_define_variable( UCHAR_P,
+                                                 "..mhnd_source",
+                                                 vs_file_static);
+     // When we need an end pointer
+     static tree source_ep = gg_define_variable( UCHAR_P,
+                                                 "..mhnd_source_e",
+                                                 vs_file_static);
+ 
+     bool source_is_signable = sourceref.field->attr & signable_e;
+     bool source_is_leading  = sourceref.field->attr & leading_e;
+     bool source_is_separate = sourceref.field->attr & separate_e;
+ 
+     bool dest_is_signable = destref.field->attr & signable_e;
+     bool dest_is_leading  = destref.field->attr & leading_e;
+     bool dest_is_separate = destref.field->attr & separate_e;
+ 
+     int switch_source =   (source_is_signable ? 4 : 0 )
+                         + (source_is_leading  ? 2 : 0 )
+                         + (source_is_separate ? 1 : 0 ) ;
+ 
+     int switch_dest   =   (dest_is_signable ? 4 : 0 )
+                         + (dest_is_leading  ? 2 : 0 )
+                         + (dest_is_separate ? 1 : 0 ) ;
+ 
+     // Calculate the start of the source data:
+     gg_assign(source_p, gg_add(member(sourceref.field, "data"),
+                                tsource.offset));
+ 
+     // Calculate the start of the destination data
+     gg_assign(dest_p,   qualified_data_location(destref));
+ 
+     // Figure out exactly where the sign is, if any, and where the input
+     // digits are.
+ 
+     switch( switch_source )
+       {
+       case 0:
+       case 1:
+       case 2:
+       case 3:
+         // not signable
+         gg_assign(source_sign, integer_zero_node);
+         break;
+       case 4:
+         //     signable, not leading, not separate
+         // Calculate location of the sign byte; it's the last byte of the data
+         gg_assign(source_sign_loc,
+                   gg_add(source_p,
+                         build_int_cst_type(SIZE_T,
+                                           sourceref.field->data.capacity()-1)));
+         break;
+       case 5:
+         //     signable, not leading,     separate
+         // Calculate location of the sign byte; it's the last byte of the data
+         gg_assign(source_sign_loc,
+                   gg_add(source_p,
+                         build_int_cst_type(SIZE_T,
+                                           sourceref.field->data.capacity()-1)));
+         break;
+       case 6:
+         //     signable,     leading, not separate
+         // Calculate location of the sign byte; it's the first byte of the data
+         gg_assign(source_sign_loc, source_p);
+         break;
+       case 7:
+         //     signable,     leading,     separate
+         // Calculate location of the sign byte; it's the first byte of the data
+         gg_assign(source_sign_loc, source_p);
+         gg_increment(source_p);
+         break;
+       }
+     // At this point, the source sign is at source_sign_loc, and the digits
+     // start at source_p
+ 
+     // Let's learn what the source sign is
+     if( source_is_signable && source_is_separate )
+       {
+       IF( gg_indirect(source_sign_loc),
+           eq_op,
+           build_int_cst_type(UCHAR,
+                              charmap_source->mapped_character(ascii_minus)) )
+         {
+         // Flag the source as negative
+         gg_assign(source_sign, integer_one_node);
+         }
+       ELSE
+         {
+         // Flag the source as positive
+         gg_assign(source_sign, integer_zero_node);
+         }
+       ENDIF
+       }
+     if( source_is_signable && !source_is_separate )
+       {
+       // We need to look for an indication that we are internally signed. We
+       // can tell that by checking to see if the digit is between '0' and '9'
+       IF( gg_indirect(source_sign_loc),
+           lt_op,
+           build_int_cst_type(UCHAR,
+                              charmap_source->mapped_character(ascii_0)) )
+         {
+         // The sign byte is less than '0', so we are negative
+         gg_assign(source_sign, integer_one_node);
+         }
+       ELSE
+         {
+         IF( gg_indirect(source_sign_loc),
+             gt_op,
+             build_int_cst_type(UCHAR,
+                                charmap_source->mapped_character(ascii_9)) )
+           {
+           // The sign byte is greater than '9', so we are negative
+           gg_assign(source_sign, integer_one_node);
+           }
+         ELSE
+           {
+           // The sign byte is betwixt '0' and '9', so we are positive
+           gg_assign(source_sign, integer_zero_node);
+           }
+         ENDIF
+         }
+       ENDIF
+       }
+ 
+     // We now know the source's sign, and where its digits are.
+ 
+     // The first order of business is to move the digits into place.  To do
+     // that, we need to know where things go in the destination:
+ 
+     switch( switch_dest )
+       {
+       case 0:
+       case 1:
+       case 2:
+       case 3:
+         // not signable
+         break;
+       case 4:
+         //     signable, not leading, not separate
+         // Calculate location of the sign byte; it's the last byte of the data
+         gg_assign(dest_sign_loc,
+                   gg_add(dest_p,
+                         build_int_cst_type(SIZE_T,
+                                           destref.field->data.capacity()-1)));
+         break;
+       case 5:
+         //     signable, not leading,     separate
+         // Calculate location of the sign byte; it's the last byte of the data
+         gg_assign(dest_sign_loc,
+                   gg_add(dest_p,
+                         build_int_cst_type(SIZE_T,
+                                           destref.field->data.capacity()-1)));
+         break;
+       case 6:
+         //     signable,     leading, not separate
+         // Calculate location of the sign byte; it's the first byte of the data
+         gg_assign(dest_sign_loc, dest_p);
+         break;
+       case 7:
+         //     signable,     leading,     separate
+         // Calculate location of the sign byte; it's the first byte of the data
+         gg_assign(dest_sign_loc, dest_p);
+         gg_increment(dest_p);
+         break;
+       }
+ 
+     // We can now start copying the digits to the left of the decimal place
+ 
+     int dest_ldigits   = (int)destref.field->data.digits
+                               - destref.field->data.rdigits;
+     int source_ldigits = (int)sourceref.field->data.digits
+                               - sourceref.field->data.rdigits;
+ 
+     int digit_count = 0;
+ 
+     if( dest_ldigits > source_ldigits )
+       {
+       // The destination has more ldigits than the source, and needs some
+       // leading zeroes:
+       picky_memset( dest_p,
+                     charmap_dest->mapped_character(ascii_0) ,
+                     dest_ldigits - source_ldigits);
+       // With the leading zeros set, set the number of ldigits to copy:
+       digit_count = source_ldigits;
+       }
+     else if( dest_ldigits == source_ldigits )
+       {
+       // This is the Goldilocks zone.  Everything is *just* right.
+       digit_count = dest_ldigits;
+       }
+     else // dest_ldigits < source_ldigits
+       {
+       // The destination is smaller than the source.  We have to throw away the
+       // the high-order digits of the source.  If any of them are non-zero, then
+       // we need to indicate a size error.
+       gg_assign(source_ep,
+                 gg_add( source_p,
+                         build_int_cst_type( SIZE_T,
+                                             source_ldigits-dest_ldigits)));
+       WHILE(source_p, lt_op, source_ep)
+         {
+         if( size_error )
+           {
+           IF( gg_indirect(source_p),
+               ne_op,
+               build_int_cst_type( UCHAR,
+                                   charmap_source->mapped_character(ascii_0)) )
+             {
+             set_exception_code(ec_size_truncation_e);
+             gg_assign(size_error, integer_one_node);
+             }
+           ELSE
+             ENDIF
+           }
+         gg_increment(source_p);
+         }
+         WEND
+ 
+       // Having skipped over the leading digits, we are in position to move the
+       // remaining digits
+       digit_count = dest_ldigits;
+       }
+     // We now have digit_count, which will cover the ldigits.  Augment it by
+     // the number of rdigits:
+ 
+     int dest_rdigits   = destref.field->data.rdigits;
+     int source_rdigits = sourceref.field->data.rdigits;
+ 
+     int trailing_zeros = 0;
+ 
+     if( dest_rdigits > source_rdigits )
+       {
+       // The destination has more rdigits than the source
+ 
+       // Copy over the available digits:
+       digit_count += source_rdigits;
+ 
+       // And then tack on the needed trailing zeroes:
+       trailing_zeros = dest_rdigits - source_rdigits;
+       }
+     else if( dest_rdigits == source_rdigits )
+       {
+       // This is the Goldilocks zone.  Everything is *just* right.
+       digit_count += dest_rdigits;
+       }
+     else
+       {
+       // The destination has fewer rdigits than the source.  We send
+       // over only the necessary rdigits, discarding the ones to the right.
+       digit_count += dest_rdigits;
+       }
+     picky_memcpy(dest_p,
+                  source_p,
+                  digit_count,
+                  build_int_cst_type(UCHAR,
+                                     charmap_dest->mapped_character(ascii_0)));
+     picky_memset( dest_p,
+                   charmap_dest->mapped_character(ascii_0),
+                   trailing_zeros);
+ 
+     // With the digits in place, the only thing left is to establish the sign
+ 
+     switch( switch_dest )
+       {
+       case 0:
+       case 1:
+       case 2:
+       case 3:
+         // not signable, so there is nothing to do.
+         break;
+       case 4:
+       case 6:
+         //     signable, not leading, not separate
+         if( charmap_dest->is_like_ebcdic() )
+           {
+           IF( source_sign, ne_op, integer_zero_node )
+             {
+             // It's negative ebcdic, so we have to turn the bit off.
+             gg_assign(gg_indirect(dest_sign_loc),
+                       gg_bitwise_and(gg_indirect(dest_sign_loc),
+                              build_int_cst_type(UCHAR,
+                                          ~NUMERIC_DISPLAY_SIGN_BIT_EBCDIC)));
+             }
+           ELSE
+             {
+             }
+           ENDIF
+           }
+         else
+           {
+           IF( source_sign, ne_op, integer_zero_node )
+             {
+             // It's negative ascii, so we have to turn the bit on.
+             gg_assign(gg_indirect(dest_sign_loc),
+                       gg_bitwise_or(gg_indirect(dest_sign_loc),
+                             build_int_cst_type(UCHAR,
+                                          NUMERIC_DISPLAY_SIGN_BIT_ASCII)));
+             }
+           ELSE
+             {
+             }
+           ENDIF
+           }
+         break;
+       case 5:
+       case 7:
+         //     signable, not leading,     separate
+         //     signable,     leading,     separate
+         // Calculate location of the sign byte; it's the last byte of the data
+ 
+         IF( source_sign, eq_op, integer_zero_node )
+           {
+           gg_assign(gg_indirect(dest_sign_loc),
+                     build_int_cst_type(UCHAR,
+                                   charmap_dest->mapped_character(ascii_plus)));
+           }
+         ELSE
+           {
+           gg_assign(gg_indirect(dest_sign_loc),
+                     build_int_cst_type(UCHAR,
+                                  charmap_dest->mapped_character(ascii_minus)));
+           }
+         ENDIF
+         break;
+       }
+     moved = true;
+     }
+ 
+   clear_negative_zero(destref,
+                       sourceref,
+                       qualified_data_location(destref));
+ 
+   return moved;
+   }
+ 
+ static bool
+ mh_little_endian( const cbl_refer_t &destref,
+                   const cbl_refer_t &sourceref,
+                   const TREEPLET    &tsource,
+                         bool check_for_error,
+                         tree size_error)
+   {
+   bool moved = false;
+ 
+   cbl_figconst_t figconst = cbl_figconst_of( sourceref.field->data.original());
+ 
+   if(     !figconst
+       &&  !(destref.field->attr    & scaled_e)
+       &&  !(destref.field->attr    & (intermediate_e  ))
+       &&  !(sourceref.field->attr  & (intermediate_e  ))
+       &&  sourceref.field->type     != FldGroup
+       &&  sourceref.field->type     != FldLiteralA
+       &&  sourceref.field->type     != FldAlphanumeric
+       &&  sourceref.field->type     != FldNumericEdited
+       &&  sourceref.field->type     != FldPacked
+       &&  (     destref.field->type == FldNumericBin5
+             ||  destref.field->type == FldPointer
+             ||  destref.field->type == FldIndex ) )
+     {
+     Analyze();
+     SHOW_PARSE1
+       {
+       SHOW_PARSE_INDENT
+       SHOW_PARSE_TEXT("mh_little_endian")
+       SHOW_PARSE_END
+       }
+ 
+     int bytes_needed = get_bytes_needed(sourceref.field);
+     tree source_type = tree_type_from_size(bytes_needed,
+                                            sourceref.field->attr
+                                                                 & signable_e) ;
+     tree source = gg_define_variable(source_type);
+ 
+     if( sourceref.field->type == FldFloat )
+       {
+       get_binary_value_from_float(source,
+                                   destref,
+                                   sourceref.field,
+                                   tsource.offset);
+ 
+       // Get binary value from float actually scales the source value to the
+       // dest:: rdigits
+       copy_little_endian_into_place(destref.field,
+                                     refer_offset(destref),
+                                     source,
+                                     destref.field->data.rdigits,
+                                     check_for_error,
+                                     size_error);
+       moved = true;
+       }
+     else
+       {
+       get_binary_value( source,
+                         NULL,
+                         sourceref.field,
+                         tsource.offset);
+       copy_little_endian_into_place(destref.field,
+                                     refer_offset(destref),
+                                     source,
+                                     sourceref.field->data.rdigits,
+                                     check_for_error,
+                                     size_error);
+       moved = true;
+       }
+     }
+   return moved;
+   }
+ 
+ static bool
+ mh_source_is_group( const cbl_refer_t &destref,
+                     const cbl_refer_t &sourceref,
+                     const TREEPLET    &tsrc)
+   {
+   bool retval = false;
+   charmap_t *charmap = __gg__get_charmap(destref.field->codeset.encoding);
+   if(   sourceref.field->type == FldGroup && !(destref.field->attr & rjust_e)
+      && sourceref.field->codeset.encoding == destref.field->codeset.encoding
+      && charmap->stride() == 1)
+     {
+     Analyze();
+     // We are moving a group to a something.  The rule here is just move as
+     // many bytes as you can, and, if necessary, fill with spaces
+     tree tdest   = gg_add( member(destref.field->var_decl_node, "data"),
+                            refer_offset(destref));
+     tree tsource = gg_add( member(sourceref.field->var_decl_node, "data"),
+                            tsrc.offset);
+     tree dbytes  = refer_size_dest(destref);
+     tree sbytes  = tsrc.length;
+ 
+     IF( sbytes, ge_op, gg_cast(TREE_TYPE(sbytes), dbytes) )
+       {
+       // There are too many source bytes
+       gg_memcpy(tdest, tsource, dbytes);
+       }
+     ELSE
+       {
+       // There are too few source bytes:
+       int dest_space = charmap->mapped_character(ascii_space);
+       gg_memset(tdest, build_int_cst_type(INT, dest_space), dbytes);
+       gg_memcpy(tdest, tsource, sbytes);
+       }
+     ENDIF
+     retval = true;
+     }
+   return retval;
+   }
+ 
+ static bool
+ mh_source_is_literalA(const cbl_refer_t &destref,
+                       const cbl_refer_t &sourceref,
+                             cbl_round_t rounded,
+                             tree        size_error)
+   {
+   bool moved = false;
+   if( sourceref.field->type == FldLiteralA )
+     {
+     // We are moving a literal somewhere.  Because a program-id can take
+     // variables of ANY LENGTH, we don't know the length of the target
+     // variable.  We do, however, know its encoding.  So, we are going to
+     // construct a string with the same number of characters as the source, but
+     // in the target variable's encoding.
+ 
+     // We will then call a library routine that will be in charge of run-time
+     // trimming or space filling, as necessary.
+ 
+     cbl_encoding_t encoding_dest =   destref.field->codeset.encoding;
+     charmap_t *charmap_dest = __gg__get_charmap(encoding_dest);
+ 
+     static char *buffer = NULL;
+     static size_t buffer_size = 0;
+     size_t source_length;
+     size_t dest_length;
+     if( sourceref.field->attr & hex_encoded_e )
+       {
+       // Hex-encoded data is moved as-is
+       source_length = sourceref.field->data.capacity();
+       dest_length   = std::min(source_length,
+                           static_cast<size_t>(destref.field->data.capacity()));
+       }
+     else
+       {
+       // Otherwise, data.initial prevails:
+       size_t source_based_on_strlen = strlen(sourceref.field->data.original());
+       size_t source_based_on_capacity = sourceref.field->data.capacity() /
+                                         sourceref.field->codeset.stride() ;
+       source_length = std::max( source_based_on_strlen ,
+                                 source_based_on_capacity );
+       dest_length   = source_length * charmap_dest->stride();
+       }
+ 
+     if( buffer_size < dest_length )
+       {
+       buffer_size = dest_length;
+       buffer = static_cast<char *>(xrealloc(buffer, buffer_size));
+       }
+     gcc_assert(buffer);
+ 
+     cbl_figconst_t figconst = cbl_figconst_of( sourceref.field->data.original());
+     size_t outlength;
+     if( figconst )
+       {
+       // We are going to fill 'buffer' with a solid run of the figurative
+       // constant in the destination codeset.
+       char const_char = 0x7F;  // Head off a compiler warning about
+       //                       // uninitialized variables
+       switch(figconst)
+         {
+         case normal_value_e :
+           // This is not possible, it says here in the fine print.
+           gcc_unreachable();
+           break;
+         case low_value_e    :
+           const_char = charmap_dest->low_value_character();
+           break;
+         case zero_value_e   :
+           const_char = charmap_dest->mapped_character(ascii_zero);
+           break;
+         case space_value_e  :
+           const_char = charmap_dest->mapped_character(ascii_space);
+           break;
+         case quote_value_e  :
+           const_char = charmap_dest->quote_character();
+           break;
+         case high_value_e   :
+           const_char = charmap_dest->high_value_character();
+           break;
+         case null_value_e:
+           const_char = 0x00;
+           break;
+         }
+       memset(buffer, const_char, source_length);
+       }
+      else
+       {
+       if( sourceref.field->attr & hex_encoded_e )
+         {
+         // hex_encoded data goes as is:
+         memcpy(buffer, sourceref.field->data.original(), dest_length);
+         outlength = dest_length;
+         }
+       else
+         {
+         // We are going to convert the source string to the destination
+         // codeset, and then copy it to 'buffer', trimming if necessary, and
+         // space-filling to the right if necessary:
+         const char *source_string =
+         __gg__iconverter(
+                        sourceref.field->codeset.default_encodings.source->type,
+                        encoding_dest,
+                        sourceref.field->data.original(),
+                        source_length,
+                        &outlength );
+         if( outlength > dest_length )
+           {
+           outlength = dest_length;
+           }
+         // Copy over the converted string
+         memcpy( buffer,
+                 source_string,
+                 outlength );
+         }
+       }
+ 
+     // Check to see if we can do a simple alphanumeric-to-alphanumeric move
+     if( (   destref.field->type == FldAlphanumeric
+          || destref.field->type == FldGroup )
+        && !(destref.field->attr & any_length_e)
+        && !sourceref.all
+        && !size_error)
+       {
+       // A simple alpha-to-alpha move is possible
+       size_t dest_bytes = destref.field->data.capacity();
+       // We have 'outlength' bytes in 'buffer' that need to go to
+       // destref.field->data.capacity() bytes at destref.field->data.
+       char *src = static_cast<char *>(xmalloc(dest_bytes));
+       size_t src_bytes = std::min(outlength, dest_bytes);
+       charmap_t *charmap = __gg__get_charmap(destref.field->codeset.encoding);
+       charmap->memset(src, charmap->mapped_character(ascii_space), dest_bytes);
+ 
+       if( destref.field->attr & rjust_e )
+         {
+         size_t fill = 0;
+         if( src_bytes < dest_bytes )
+           {
+           fill = dest_bytes - src_bytes;
+           }
+         memcpy(src+fill, buffer+outlength-src_bytes, src_bytes);
+         }
+       else
+         {
+         memcpy(src, buffer, src_bytes);
+         }
+       // src is now the desired string, space-filled if necessary on the right,
+       // (or on the left, for rjust_e destinations).
+ 
+       if( refer_is_clean(destref) )
+         {
+         gg_memcpy(member(destref.field->var_decl_node, "data"),
+                   build_string_literal(dest_bytes, src),
+                   build_int_cst_type(SIZE_T, dest_bytes));
+         }
+       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),
+                   refer_size_dest(destref));
+         }
+       free(src);
+       }
+     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
+         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
+                              | ((sourceref.all || figconst ) ? REFER_ALL_BIT : 0);
+ 
+       if( size_error )
+         {
+         gg_assign(size_error,
+                   gg_call_expr( INT,
+                                 "__gg__move_literala",
+                                 gg_get_address_of(destref.field->var_decl_node),
+                                 refer_offset(destref),
+                                 refer_size_dest(destref),
+                                 build_int_cst_type(INT, rounded_parameter),
+                                 build_string_literal(outlength,
+                                                      buffer),
+                                 build_int_cst_type( SIZE_T, outlength),
+                                 NULL_TREE));
+         }
+       else
+         {
+                   gg_call     ( INT,
+                                 "__gg__move_literala",
+                                 gg_get_address_of(destref.field->var_decl_node),
+                                 refer_offset(destref),
+                                 refer_size_dest(destref),
+                                 build_int_cst_type(INT, rounded_parameter),
+                                 build_string_literal(outlength,
+                                                      buffer),
+                                 build_int_cst_type( SIZE_T, outlength),
+                                 NULL_TREE);
+         }
+       if(    destref.refmod.from
+           || destref.refmod.len )
+         {
+         // Return that value to its original form
+         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*/,
+                         tree        size_error)
+   {
+   bool moved = false;
+   // If a bunch of conditions are met, we can do a move without resorting to
+   // the library.
+   if(   sourceref.field->type == FldAlphanumeric
+      && destref.field->type   == FldAlphanumeric
+      && !size_error
+      && sourceref.field->codeset.encoding == destref.field->codeset.encoding
+      && !(destref.field->attr   & rjust_e)
+      && !(sourceref.field->attr & any_length_e)
+      && !(destref.field->attr   & any_length_e)
+      && !(sourceref.field->attr & intermediate_e)
+      && !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) )
+       {
+       // Source and destination are both clean
+       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;
+         }
+       else
+         {
+         // 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:
+         size_t fill_bytes =
+             destref.field->data.capacity() - sourceref.field->data.capacity();
+ 
+         // ...and then create a memory area with the fill spaces...
+         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 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),
+           build_int_cst_type(SIZE_T, fill_bytes));
+         free(spaces);
+         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);
+ 
+       tree dest_data = gg_define_variable(UCHAR_P);
+       tree dest_len  = gg_define_variable(SIZE_T);
+ 
+       gg_assign(source_data,
+                 gg_add(member(sourceref.field->var_decl_node, "data"),
+                        refer_offset(sourceref)));
+       gg_assign(source_len, refer_size_source(sourceref));
+ 
+       gg_assign(dest_data,
+                 gg_add(member(destref.field->var_decl_node, "data"),
+                        refer_offset(destref)));
+       gg_assign(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;
+       }
+     }
+   return moved;
+   }
+ 
+ static bool
+ mh_numdisp_to_packed(const cbl_refer_t &destref,
+                      const cbl_refer_t &sourceref,
+                            tree         size_error,
+                            bool         check_for_error)
+   {
+   const charmap_t *charmap =
+                    __gg__get_charmap(sourceref.field->codeset.encoding);
+   if(    (destref.field->type   != FldPacked         )
+       || (sourceref.field->type != FldNumericDisplay )
+       || (charmap->stride()     != 1                 )
+       || (destref.field->attr    & scaled_e          )
+       || (sourceref.field->attr  & scaled_e          )
+       || (destref.field->attr    & packed_no_sign_e  )
+       || (sourceref.field->attr  & leading_e         )
+       || (sourceref.field->attr  & separate_e        ) )
+     {
+     return false;
+     }
+   /* Source is NumericDisplay, dest is packed, neither are scaled, the
+      packed destination has a sign nybble, and the numeric source has an
+      ordinarysign bit encoded in the final digit.  */
+   tree uzero = build_int_cst_type(UCHAR,    0);
+   tree umask = build_int_cst_type(UCHAR, 0x0F);
+   tree ufour = build_int_cst_type(SIZE_T,   4);
+ 
+   tree source_location = gg_define_variable(UCHAR_P);
+   tree dest_location   = gg_define_variable(UCHAR_P);
+   tree dest_p          = gg_define_variable(UCHAR_P);
+   tree source_p        = gg_define_variable(UCHAR_P);
+ 
+   tree temp;
+ 
+   get_location(temp, destref);
+   gg_assign(dest_location, temp);
+   gg_assign(dest_p, dest_location);
+   get_location(temp, sourceref);
+   gg_assign(source_location, temp);
+ 
+   int source_digits   = sourceref.field->data.digits;
+   int source_rdigits  = sourceref.field->data.rdigits;
+   int source_ldigits  = source_digits - source_rdigits;
+   int dest_digits     = destref.field->data.digits;
+   int dest_rdigits    = destref.field->data.rdigits;
+   int dest_ldigits    = dest_digits - dest_rdigits;
+ 
+   int truncate_ldigits = std::max(0, source_ldigits-dest_ldigits);
+   int truncate_rdigits = std::max(0, source_rdigits-dest_rdigits);
+   int leading_zeroes   = std::max(0, dest_ldigits-source_ldigits);
+   int trailing_zeroes  = std::max(0, dest_rdigits-source_rdigits);
+ 
+   int zero_pairs;
+   int digit_pairs;
+   int source_remaining;
+ 
+   if( truncate_ldigits )
+     {
+     // We handle truncation of digits on the left by moving the starting line.
+     if( check_for_error )
+       {
+       // We need to flag as a truncation error any truncated places that are
+       // not zero.
+       gg_assign(source_p, source_location);
+       tree trunc_end = gg_define_variable(UCHAR_P);
+       gg_assign(trunc_end,
+                 gg_add(source_p,
+                        build_int_cst_type(SIZE_T, truncate_ldigits)));
+       WHILE(source_p, lt_op, trunc_end)
+         {
+         gg_assign(size_error,
+                   gg_bitwise_or(size_error,
+                                 gg_indirect(source_p)));
+         gg_increment(source_p);
+         }
+       WEND
+       // We care about only the bottom four bits.
+       gg_assign(size_error,
+                 gg_bitwise_and(size_error, gg_cast(INT, umask)));
+       }
+     else
+       {
+       gg_assign(source_p,
+                 gg_add(source_location,
+                        build_int_cst_type(SIZE_T, truncate_ldigits)));
+       }
+     source_digits  -= truncate_ldigits;
+     source_ldigits -= truncate_ldigits;
+     }
+   else
+     {
+     gg_assign(source_p, source_location);
+     }
+ 
+   if( truncate_rdigits )
+     {
+     // We handle truncation of digits on the right by moving the finish line.
+     source_digits  -= truncate_rdigits;
+     source_ldigits -= truncate_rdigits;
+     }
+ 
+   if( !source_digits )
+     {
+     // When source_digits is zero, it means that some pervert of a COBOL
+     // programmer told us to MOVE 999V TO V999.  The result has to be zero,
+     // and our life down below will be easier when we know that there is at
+     // least one digit that needs to be moved from the source to the
+     // destination.
+     gg_memset(dest_p,
+               integer_zero_node,
+               build_int_cst_type(SIZE_T, destref.field->data.capacity()));
+     goto adjust_sign;
+     }
+ 
+   source_remaining = source_digits;
+ 
+   // The first thing we need to do is adjust the first byte of the destination
+   // so that we know where we are in left-nybble/right-nybble space.  Let's
+   // call the digit at source_p "N".  (That digit might be a leading zero.)
+   // When dest_digits is an even number, it means the final result is something
+   // like 0N.23.4s.  So, when dest_digits is even, we have to start things off
+   // with "0N".
+ 
+   if( !(dest_digits & 0x01) )
+     {
+     // dest_digits is an even number.
+     if( leading_zeroes )
+       {
+       // The first byte is "0N", but N is zero:
+       gg_assign(gg_indirect(dest_p), uzero);
+       leading_zeroes -= 1;
+       }
+     else
+       {
+       // The first byte is "0N", where N is the value from the first character
+       // of the source.  We know that source_remaining is at least one at this
+       // point.
+       gg_assign(gg_indirect(dest_p),
+                 gg_bitwise_and(gg_indirect(source_p), umask));
+       gg_increment(source_p);
+       source_remaining -= 1;
+       }
+     gg_increment(dest_p);
+     }
+ 
+   // At this point, we know that leading + source + trailing is an odd
+   // number.
+ 
+   // We know that dest_p is set up to accept a left/right pair next.  Let's
+   // see if we have enough leading_zeroes to warrant using memset:
+   zero_pairs = leading_zeroes/2;
+   if( zero_pairs )
+     {
+     // We can use memset to handle left-side zero-fill:
+     tree tpairs = build_int_cst_type(SIZE_T, zero_pairs);
+     gg_memset(dest_p, integer_zero_node, tpairs);
+     gg_assign(dest_p, gg_add(dest_p, tpairs));
+     leading_zeroes -= 2 * zero_pairs;
+     }
+ 
+   // dest-p is still set up for a left/right pair.
+   if( leading_zeroes )
+     {
+     // But we still have one leading zero left.  We know at this point that
+     // there is at least one source digit left, so build the byte using
+     // zero/*source_p
+     gg_assign(gg_indirect(dest_p),
+               gg_bitwise_and(gg_indirect(source_p), umask));
+     //leading_zeroes   -= 1;
+     source_remaining -= 1;
+     gg_increment(source_p);
+     gg_increment(dest_p);
+     }
+ 
+   // At this point, we know that leading_zeroes is zero.  We know that
+   // source_remaining + trailing_zeroes is an odd number.  We
+   // currently have dest_p lined up on a left-right boundary.
+ 
+   // We are going to transfer as many pairs of source_remaining digits as we
+   // can.
+ 
+   digit_pairs = source_remaining/2;
+   if( digit_pairs )
+     {
+     tree dest_end = gg_define_variable(UCHAR_P);
+     gg_assign(dest_end,
+               gg_add(dest_p,
+                      build_int_cst_type(SIZE_T, digit_pairs)));
+     WHILE( dest_p, lt_op, dest_end )
+       {
+       tree left_nybble  = gg_lshift(gg_indirect(source_p), ufour);
+       tree right_nybble = gg_bitwise_and(gg_indirect(source_p,
+                                                      integer_one_node),
+                                          umask);
+       gg_assign(gg_indirect(dest_p),
+                 gg_bitwise_or(left_nybble, right_nybble));
+       gg_increment(dest_p);
+       gg_assign(source_p,
+                 gg_add(source_p, build_int_cst_type(SIZE_T, 2)));
+       }
+     WEND
+     source_remaining -= 2 * digit_pairs;
+     }
+ 
+   // At this point, source_remaining is zero or one
+ 
+   if( source_remaining )
+     {
+     gg_assign(gg_indirect(dest_p),
+               gg_lshift(gg_indirect(source_p), ufour));
+     gg_increment(dest_p);
+     //source_remaining -= 1;
+     if( trailing_zeroes )
+       {
+       trailing_zeroes -= 1;
+       }
+     }
+   // At this point, we know trailing_zeroes has to be an even number, and we
+   // need to zero out that many nybbles:
+ 
+   if( trailing_zeroes >= 2 )
+     {
+     zero_pairs = trailing_zeroes/2;
+     // We can use memset to handle left-side zero-fill:
+     tree tpairs = build_int_cst_type(SIZE_T, zero_pairs);
+     gg_memset(dest_p, integer_zero_node, tpairs);
+     gg_assign(dest_p, gg_add(dest_p, tpairs));
+     trailing_zeroes -= 2 * zero_pairs;
+     }
+ 
+   if( trailing_zeroes )
+     {
+     // There is one trailing zero left
+     gg_assign(gg_indirect(dest_p), uzero);
+     gg_increment(dest_p);
+     //trailing_zeroes -= 1;
+     }
+ 
+   adjust_sign:
+   gg_assign(dest_p, gg_add(dest_location,
+                            build_int_cst_type(SIZE_T,
+                                            destref.field->data.capacity()-1)));
+ 
+   if( !(destref.field->attr & signable_e) )
+     {
+     // The destination is not signable
+     gg_assign(gg_indirect(dest_p),
+               gg_bitwise_or(gg_indirect(dest_p), umask));
+     }
+   else
+     {
+     if( sourceref.field->attr & signable_e )
+       {
+     // This is the location of the character with the sign flag.
+       gg_assign(source_p, gg_add(source_location,
+                                build_int_cst_type(SIZE_T,
+                                          sourceref.field->data.capacity()-1)));
+       if( charmap->is_like_ebcdic() )
+         {
+         // EBCDIC digits are 0xF0 through 0xF9; negative is flagged by
+         // 0xD0 through 0xD9
+         IF( gg_indirect(source_p), lt_op, build_int_cst_type(UCHAR, 0xF0) )
+           {
+           gg_assign(gg_indirect(dest_p),
+                     gg_bitwise_or(gg_indirect(dest_p),
+                                   build_int_cst_type(UCHAR, 0x0D)));
+           }
+         ELSE
+           {
+           gg_assign(gg_indirect(dest_p),
+                     gg_bitwise_or(gg_indirect(dest_p),
+                                   build_int_cst_type(UCHAR, 0x0C)));
+           }
+         ENDIF
+         }
+       else
+         {
+         // EBCDIC digits are 0x30 through 0x39; negative is flagged by
+         // 0x70 through 0x79
+         IF( gg_indirect(source_p), ge_op, build_int_cst_type(UCHAR, 0x70) )
+           {
+           gg_assign(gg_indirect(dest_p),
+                     gg_bitwise_or(gg_indirect(dest_p),
+                                   build_int_cst_type(UCHAR, 0x0D)));
+           }
+         ELSE
+           {
+           gg_assign(gg_indirect(dest_p),
+                     gg_bitwise_or(gg_indirect(dest_p),
+                                   build_int_cst_type(UCHAR, 0x0C)));
+           }
+         ENDIF
+         }
+       }
+     else
+       {
+       gg_assign(gg_indirect(dest_p),
+                 gg_bitwise_or(gg_indirect(dest_p),
+                               build_int_cst_type(UCHAR, 0x0C)));
+       }
+     }
+   clear_negative_zero(destref,
+                       sourceref,
+                       dest_location);
+   return true;
+   }
+ 
+ static bool
+ mh_packed_to_packed(const cbl_refer_t &destref,
+                     const cbl_refer_t &sourceref,
+                     tree               size_error,
+                     bool               check_for_error)
+   {
+   if(    (destref.field->type   != FldPacked        )
+       || (sourceref.field->type != FldPacked        )
+       || (destref.field->attr    & scaled_e         )
+       || (sourceref.field->attr  & scaled_e         )
+       || (destref.field->attr    & packed_no_sign_e )
+       || (sourceref.field->attr  & packed_no_sign_e ) )
+     {
+     return false;
+     }
+   // Arriving here means both are packed, neither is scaled, and neither is
+   // COMP-6 or PACKED NO SIGN.
+ 
+   // We are going to move source to the dest doing the absolute minimum number
+   // of operations.  We are thus going to use memcpy (with constant lengths)
+   // as much as we can, and use conditionals and nybble operations as little
+   // little as possible.
+ 
+   // There are two broad cases.  The more straightforward case is where source
+   // rdigits and dest rdigits are both even, or both odd.  When that is the
+   // case, the source and destination decimal places are "in phase" somewhere
+   // inside both the dest and the source.  Once we figure out the right
+   // offsets, we can memcpy the "inside" of the source to the correct location
+   // in the dest.  We fiddle with the leading digits, the trailing digits, and
+   // the sign nybble as necessary.
+ 
+   tree source_location = gg_define_variable(UCHAR_P);
+   tree dest_location   = gg_define_variable(UCHAR_P);
+   tree source_sign     = gg_define_variable(UCHAR_P);
+   tree dest_sign       = gg_define_variable(UCHAR_P);
+   tree temp;
+ 
+   get_location(temp, destref);
+   gg_assign(dest_location, temp);
+ 
+   get_location(temp, sourceref);
+   gg_assign(source_location, temp);
+ 
+   if( check_for_error )
+     {
+     int source_digits  = sourceref.field->data.digits;
+     if( !(source_digits & 1) )
+       {
+       // When source_digits is an even number, then the leftmost byte is
+       // 0x0n.
+       source_digits += 1;
+       }
+     int source_ldigits =   source_digits
+                          - sourceref.field->data.rdigits;
+     int dest_ldigits   =   destref.field->data.digits
+                          - destref.field->data.rdigits;
+     int truncate_ldigits = std::max(0, source_ldigits - dest_ldigits);
+     if( truncate_ldigits )
+       {
+       tree truncate_p = gg_define_variable(UCHAR_P);
+       gg_assign(truncate_p, source_location);
+       int truncate_pairs = truncate_ldigits / 2;
+       if( truncate_pairs )
+         {
+         tree truncate_e = gg_define_variable(UCHAR_P);
+         gg_assign(truncate_e,
+                   gg_add(truncate_p,
+                          build_int_cst_type(SIZE_T, truncate_pairs)));
+         WHILE( truncate_p, lt_op, truncate_e )
+           {
+           gg_assign(size_error,
+                     gg_bitwise_or(size_error,
+                                   gg_cast(INT, gg_indirect(truncate_p))));
+           gg_increment(truncate_p);
+           }
+         WEND
+         truncate_ldigits &= 1;
+         }
+       if( truncate_ldigits )
+         {
+         gg_assign(size_error,
+                   gg_bitwise_or(size_error,
+                         gg_cast(INT,
+                                 gg_bitwise_and(gg_indirect(truncate_p),
+                                                build_int_cst_type(UCHAR,
+                                                                   0xF0)))));
+         }
+       }
+     }
+   int      source_digits   = sourceref.field->data.digits;
+   int      source_rdigits  = sourceref.field->data.rdigits;
+   size_t   source_capacity = source_digits/2 + 1;
+   if( ((destref.field->data.rdigits ^ source_rdigits) & 1) )
+     {
+     /* This is an "out-of-phase" move, e.g., MOVE 999v99 to 999v9.  The code
+        below handles in-phase moves, so we handle this by making a left-shifted
+        copy of the source side.  By left-shifting it one nybble, incrementing
+        the source_rdigits, and changing the location to the shifted version, we
+        turn the out-of-phase problem into an in-phase problem.  */
+     size_t shifted_size;
+     if( source_digits & 1 )
+       {
+       // The source, plus the sign nybble, fills an even number of nybbles, and
+       // so the shift requires an addition byte on the left.
+       shifted_size = source_capacity + 1;
+       }
+     else
+       {
+       // The highest-order source nybble is a zero, so the shift will fill it
+       // without any additional storage needed.
+       shifted_size = source_capacity;
+       }
+     // Allocate storage for the shifted version:
+     tree shifted_type = build_array_type_nelts(UCHAR, shifted_size);
+     tree shifted = gg_define_variable(shifted_type);
+     TREE_ADDRESSABLE(shifted) = 1;
+     tree source_p        = gg_define_variable(UCHAR_P);
+     tree shifted_p_left  = gg_define_variable(UCHAR_P);
+     tree shifted_p_right = gg_define_variable(UCHAR_P);
+     tree carry      = gg_define_variable(UCHAR);
+     tree carry_next = gg_define_variable(UCHAR);
+     gg_assign(source_p,
+               gg_add(source_location,
+                      build_int_cst_type(SIZE_T,
+                                         source_capacity-1)));
+     gg_assign(shifted_p_left, gg_pointer_to_array(shifted));
+     gg_assign(shifted_p_right,
+               gg_add(shifted_p_left,
+                      build_int_cst_type(SIZE_T, shifted_size-1)));
+     // Start with the right side.
+     // Pick up the carry, which is the left side of the rightmost byte
+     gg_assign(carry,
+               gg_rshift(gg_indirect(source_p),
+                         build_int_cst_type(SIZE_T, 4)));
+     // Keep the sign nybble in place, but with a zero to its left
+     gg_assign(gg_indirect(shifted_p_right),
+               gg_bitwise_and(gg_indirect(source_p),
+                              build_int_cst_type(UCHAR, 0x0F)));
+ 
+     gg_decrement(source_p);
+     gg_decrement(shifted_p_right);
+     WHILE(shifted_p_right, gt_op, shifted_p_left)
+       {
+       gg_assign(carry_next,
+                 gg_rshift(gg_indirect(source_p),
+                           build_int_cst_type(SIZE_T, 4)));
+       gg_assign(gg_indirect(shifted_p_right),
+                 gg_bitwise_or(gg_lshift(gg_indirect(source_p),
+                                         build_int_cst_type(SIZE_T, 4)),
+                               carry));
+       gg_assign(carry, carry_next);
+       gg_decrement(source_p);
+       gg_decrement(shifted_p_right);
+       }
+     WEND
+     // At this point, shifted_p_right equals shifted_p_left
+     if( source_digits & 1 )
+       {
+       // The source, plus the sign nybble, fills an even number of nybbles, and
+       // so the shift requires an addition byte on the left.
+       gg_assign(gg_indirect(shifted_p_left), carry);
+       }
+     else
+       {
+       // The highest-order source nybble is a zero, so the shift will fill it
+       // without any additional storage needed.
+       gg_assign(gg_indirect(shifted_p_left),
+                 gg_bitwise_or(gg_lshift(gg_indirect(source_p),
+                                         build_int_cst_type(SIZE_T, 4)),
+                               carry));
+       }
+ 
+     // We now have the left-shifted source in 'shifted'.
+     source_digits  += 1;
+     source_rdigits += 1;
+     source_capacity = source_digits/2 + 1;
+     gg_assign(source_location, shifted_p_left);
+     }
+   gg_assign(source_sign,
+             gg_add(source_location,
+                    build_int_cst_type(SIZE_T,
+                                       source_capacity-1)));
+   gg_assign(dest_sign,
+             gg_add(dest_location,
+                    build_int_cst_type(SIZE_T,
+                                       destref.field->data.capacity()-1)));
+ 
+   // This is the straightforward case, where the dest and source decimal
+   // places are in phase, which means that the middles of the values can
+   // simply be moved.
+   int dest_rbytes  = destref.field->data.rdigits/2 + 1;
+   int dest_lbytes  = destref.field->data.capacity() - dest_rbytes;
+ 
+   int source_rbytes = source_rdigits/2 + 1;
+   int source_lbytes = source_capacity - source_rbytes;
+ 
+   uint32_t dest_bytes = destref.field->data.capacity();
+ 
+   if( source_lbytes > dest_lbytes )
+     {
+     // There are too many source lbytes.   We just skip those extra bytes,
+     // truncating off those high-order digits.
+     gg_assign(source_location,
+               gg_add(source_location,
+                      build_int_cst_type(SIZE_T,
+                                         source_lbytes-dest_lbytes)));
+     }
+   else if( source_lbytes < dest_lbytes )
+     {
+     // There are too few source lbytes.  We zero out the extra bytes on the
+     // left side of the destination.
+     gg_memset(dest_location,
+               integer_zero_node,
+               build_int_cst_type(SIZE_T, dest_lbytes-source_lbytes));
+     gg_assign(dest_location,
+               gg_add(dest_location,
+                      build_int_cst_type(SIZE_T, dest_lbytes-source_lbytes)));
+     // And reduce the total number to move by the number we zeroed:
+     dest_bytes -= dest_lbytes-source_lbytes;
+     }
+   source_lbytes = dest_lbytes;
+   // We have lined up source_location and dest_location so that the source
+   // lbytes will go into the correct location in the destination
+ 
+   // We copy over as many bytes as we have in the source that can fit into
+   // the destination:
+   size_t bytes_to_copy =
+             std::min(static_cast<uint32_t>(source_lbytes) + source_rbytes,
+                                            dest_bytes);
+   gg_memcpy(dest_location,
+             source_location,
+             build_int_cst_type(SIZE_T, bytes_to_copy));
+ 
+   // We make sure the final sign nybble is correct.
+ 
+   if( source_rbytes == dest_rbytes )
+     {
+     // The sign nybble from the source is now in the destination.  It might
+     // need to be changed
+     if(    !(sourceref.field->attr  & signable_e)
+         &&  (destref.field->attr    & signable_e) )
+       {
+       // The unsignable source has an 0xF sign nybble, so we need to turn
+       // that into an positive 0xC in the signable destination:
+       gg_assign(gg_indirect(dest_sign),
+                 gg_bitwise_and(gg_indirect(dest_sign),
+                                build_int_cst_type(UCHAR, 0xFC)));
+       }
+     else if(    (sourceref.field->attr  & signable_e)
+             && !(destref.field->attr & signable_e) )
+       {
+       // The signable source has an 0xC or 0xD sign nybble, so we need to
+       // turn that into an 0xF in the unsignable destination:
+       gg_assign(gg_indirect(dest_sign),
+                 gg_bitwise_or(gg_indirect(dest_sign),
+                               build_int_cst_type(UCHAR, 0x0F)));
+       }
+     }
+   else
+     {
+     // There is mismatch between source and dest rdigits:
+     if( source_rbytes < dest_rbytes )
+       {
+       // The source was too short to fill the destination, which means we
+       // currently have a source's sign nybble sitting in the middle of the
+       // destination.  We need to zero out that nybble
+       gg_assign(gg_indirect(dest_location,
+                             build_int_cst_type(SIZE_T,
+                                                bytes_to_copy-1)),
+                 gg_bitwise_and(gg_indirect(dest_location,
+                                build_int_cst_type(SIZE_T,
+                                                   bytes_to_copy-1)),
+                                            build_int_cst_type(UCHAR, 0xF0)));
+       // And then we need to zero out the remaining dest_rbytes:
+       int remaining_rbytes = dest_rbytes - source_rbytes;
+       if( remaining_rbytes > 1 )
+         {
+         gg_memset(gg_add(dest_location,
+                          build_int_cst_type(SIZE_T, bytes_to_copy)),
+                   integer_zero_node,
+                   build_int_cst_type(SIZE_T,
+                            destref.field->data.capacity() - bytes_to_copy));
+         }
+       // And now we have to adjust the final nybble:
+ 
+       if(    !(sourceref.field->attr  & signable_e)
+           &&  (destref.field->attr & signable_e) )
+         {
+         // The source is unsignable, so we turn that into an positive 0xC in
+         // the signable destination:
+         gg_assign(gg_indirect(dest_sign), build_int_cst_type(UCHAR, 0x0C));
+         }
+       else if(    (sourceref.field->attr  & signable_e)
+               && !(destref.field->attr & signable_e) )
+         {
+         gg_assign(gg_indirect(dest_sign), build_int_cst_type(UCHAR, 0x0F));
+         }
+       else
+         {
+         // The source and the destination are either both signable, or
+         // both unsignable.  We copy the source's sign nybble to the dest.
+         gg_assign(gg_indirect(dest_sign),
+                   gg_bitwise_or(gg_indirect(dest_sign),
+                                 gg_bitwise_and(gg_indirect(source_sign),
+                                                build_int_cst_type(UCHAR,
+                                                                   0x0F))));
+         }
+       }
+     else // source_rbytes > dest_rbytes
+       {
+       // There were more source_rbytes than we needed, which means the final
+       // nybble of the destination is a digit that needs to be truncated
+       // away and replaced with the correct sign nybble.
+       if(    !(sourceref.field->attr  & signable_e)
+           &&  (destref.field->attr & signable_e) )
+         {
+         // The source was unsignable, so we set the sign nybble to a
+         // a positive 0x0C
+         gg_assign(gg_indirect(dest_sign),
+                   gg_bitwise_or(gg_bitwise_and(gg_indirect(dest_sign),
+                                      build_int_cst_type(UCHAR, 0xF0)),
+                                      build_int_cst_type(UCHAR, 0x0C)));
+         }
+       else if(    (sourceref.field->attr  & signable_e)
+               && !(destref.field->attr & signable_e) )
+         {
+         // The dest is unsignable; turn the final nybble into an 0xFo
+         gg_assign(gg_indirect(dest_sign),
+                   gg_bitwise_or(gg_indirect(dest_sign),
+                                 build_int_cst_type(UCHAR, 0x0F)));
+         }
+       else
+         {
+         // The source and the destination are either both signable, or
+         // both unsignable.  We copy the source's sign nybble to the dest.
+         gg_assign(gg_indirect(dest_sign),
+                   gg_bitwise_or(gg_bitwise_and(gg_indirect(dest_sign),
+                                 build_int_cst_type(UCHAR, 0xF0)),
+                                 gg_bitwise_and(gg_indirect(source_sign),
+                                 build_int_cst_type(UCHAR, 0x0F))));
+         }
+       }
+     }
+   clear_negative_zero(destref,
+                       sourceref,
+                       dest_location);
+   return true;
+   }
+ 
+ static bool
+ mh_packed_to_numdisp(const cbl_refer_t &destref,
+                      const cbl_refer_t &sourceref,
+                            tree         size_error,
+                            bool         check_for_error)
+   {
+   charmap_t *charmap =
+                    __gg__get_charmap(destref.field->codeset.encoding);
+ 
+   if(    (sourceref.field->type != FldPacked         )
+       || (destref.field->type   != FldNumericDisplay )
+       || (charmap->stride()     != 1                 )
+       || (sourceref.field->attr  & scaled_e          )
+       || (destref.field->attr    & scaled_e          )
+       || (sourceref.field->attr  & packed_no_sign_e  )
+       || (destref.field->attr    & leading_e         )
+       || (destref.field->attr    & separate_e        ) )
+     {
+     return false;
+     }
+ 
+   /* Source is packed, dest is numeric-display, neither are scaled, the
+      packed source has a sign nybble, and the numeric-display dest has an
+      ordinary sign bit encoded in the final digit.  */
+   tree umask = build_int_cst_type(UCHAR, 0x0F);
+   tree ufour = build_int_cst_type(SIZE_T,   4);
+   tree uzero = build_int_cst_type(UCHAR,
+                                   charmap->mapped_character(ascii_zero));
+   tree source_location = gg_define_variable(UCHAR_P);
+   tree dest_location   = gg_define_variable(UCHAR_P);
+   tree dest_p          = gg_define_variable(UCHAR_P);
+   tree source_p        = gg_define_variable(UCHAR_P);
+ 
+   tree temp;
+   get_location(temp, destref);
+   gg_assign(dest_location, temp);
+   gg_assign(dest_p, dest_location);
+   get_location(temp, sourceref);
+   gg_assign(source_location, temp);
+ 
+   // source_digits will be the number of digits extracted from the source that
+   // find their way into the destination.
+   int source_digits   = sourceref.field->data.digits;
+ 
+   if( !(source_digits & 0x01) )
+     {
+     // Because this is an even number, the first byte of the packed value is
+     // 0x0N.  The following logic is a tad simpler when we just increment it,
+     // as if the zero in the left nybble is part of the packed-decimal value.
+     source_digits += 1;
+     }
+ 
+   int source_rdigits  = sourceref.field->data.rdigits;
+   int source_ldigits  = source_digits - source_rdigits;
+   int dest_digits     = destref.field->data.digits;
+   int dest_rdigits    = destref.field->data.rdigits;
+   int dest_ldigits    = dest_digits - dest_rdigits;
+ 
+   int truncate_ldigits = std::max(0, source_ldigits-dest_ldigits);
+   int truncate_rdigits = std::max(0, source_rdigits-dest_rdigits);
+   int leading_zeroes   = std::max(0, dest_ldigits-source_ldigits);
+   int trailing_zeroes  = std::max(0, dest_rdigits-source_rdigits);
+ 
+   int digit_pairs;
+   int source_remaining;
+ 
+   int truncate_pairs = truncate_ldigits/2 ;
+   if( truncate_pairs )
+     {
+     // We handle truncation of digits on the left by moving the starting line
+     // one byte to the right for each full pair of digits
+ 
+     if( check_for_error )
+       {
+       gg_assign(source_p, source_location);
+       tree truncate_end = gg_define_variable(UCHAR_P);
+       gg_assign(truncate_end,
+                 gg_add(source_location,
+                        build_int_cst_type(SIZE_T, truncate_pairs)));
+       WHILE( source_p, lt_op, truncate_end )
+         {
+         gg_assign(size_error,
+                   gg_bitwise_or(size_error,
+                                 gg_cast(INT, gg_indirect(source_p))));
+         gg_increment(source_p);
+         }
+       WEND
+       }
+     else
+       {
+       gg_assign(source_p,
+                 gg_add(source_location,
+                        build_int_cst_type(SIZE_T, truncate_pairs)));
+       }
+     source_digits    -= 2*truncate_pairs;
+     //source_ldigits   -= 2*truncate_pairs;
+     truncate_ldigits &= 0x01;
+     }
+   else
+     {
+     gg_assign(source_p, source_location);
+     }
+ 
+   // At this point, truncate_ldigits might be one, meaning that when we
+   // get around to  moving digits, we will have to skip the first one.
+ 
+   if( truncate_rdigits )
+     {
+     // We handle truncation of digits on the right by moving the finish line
+     // to the left.
+     source_digits    -= truncate_rdigits;
+     //source_ldigits   -= truncate_rdigits;
+     }
+ 
+   source_remaining = source_digits;
+ 
+   // We are ready to start building our numeric-displace destination.
+ 
+   if( leading_zeroes )
+     {
+     tree tleading_zeroes = build_int_cst_type(SIZE_T, leading_zeroes);
+     gg_memset(dest_p,
+               uzero,
+               tleading_zeroes);
+     gg_assign(dest_p, gg_add(dest_p, tleading_zeroes));
+     }
+ 
+   // At this point, we are ready to start moving over source_remaining digits.
+ 
+   if( truncate_ldigits )
+     {
+     // When truncate_ldigits is one, the first byte comes from the right nybble
+     // of *source_p.  We therefore skip the digit in the left nybble.
+     if( check_for_error )
+       {
+       gg_assign(size_error,
+                 gg_cast(INT,
+                         gg_bitwise_and(gg_indirect(source_p),
+                                        build_int_cst_type(UCHAR, 0xF0))));
+       }
+     gg_assign(gg_indirect(dest_p),
+                 gg_bitwise_or(gg_bitwise_and(gg_indirect(source_p),
+                                              umask),
+                               uzero));
+     gg_increment(source_p);
+     gg_increment(dest_p);
+     source_remaining -= 2;
+     }
+ 
+   // We now pull pairs of digits from the packed source, and put them into the
+   // destination numeric-display.
+ 
+   digit_pairs = source_remaining/2;
+ 
+   if( digit_pairs )
+     {
+     tree source_end = gg_define_variable(UCHAR_P);
+     gg_assign(source_end,
+               gg_add(source_p,
+                      build_int_cst_type(SIZE_T, digit_pairs)));
+     WHILE( source_p, lt_op, source_end )
+       {
+       // Left digit
+       gg_assign(gg_indirect(dest_p),
+                 gg_bitwise_or(gg_rshift(gg_indirect(source_p),
+                                         ufour),
+                               uzero));
+       gg_increment(dest_p);
+       // Right digit
+       gg_assign(gg_indirect(dest_p),
+                 gg_bitwise_or(gg_bitwise_and(gg_indirect(source_p),
+                                              umask),
+                               uzero));
+       gg_increment(dest_p);
+       gg_increment(source_p);
+       }
+     WEND
+     source_remaining -= 2 * digit_pairs;
+     }
+ 
+   // At this point, source_remaining is zero or one
+ 
+   if( source_remaining )
+     {
+     // We have one remaining left digit;
+     gg_assign(gg_indirect(dest_p),
+               gg_bitwise_or(gg_rshift(gg_indirect(source_p),
+                                       ufour),
+                             uzero));
+     gg_increment(dest_p);
+     }
+ 
+   if( trailing_zeroes )
+     {
+     tree ttrailing_zeroes = build_int_cst_type(SIZE_T, trailing_zeroes);
+     gg_memset(dest_p,
+               uzero,
+               ttrailing_zeroes);
+     }
+ 
+   if(    (destref.field->attr   & signable_e)
+       && (sourceref.field->attr & signable_e) )
+     {
+     // The source and the destination are both signable.
+     gg_assign(source_p,
+               gg_add(source_location,
+                      build_int_cst_type(SIZE_T,
+                                        sourceref.field->data.capacity()-1)));
+     IF(gg_bitwise_and(gg_indirect(source_p),
+                       umask),
+        eq_op,
+        build_int_cst_type(UCHAR, 0x0D) )
+       {
+       // The source is negative
+       gg_assign(dest_p,
+                 gg_add(dest_location,
+                        build_int_cst_type(SIZE_T,
+                                        destref.field->data.capacity()-1)));
+       if( charmap->is_like_ebcdic() )
+         {
+         // Turn the 0xFZ EBCDIC digit into 0xDZ to flag it as negative.
+         gg_assign(gg_indirect(dest_p),
+                   gg_bitwise_and(gg_indirect(dest_p),
+                                  build_int_cst_type(UCHAR, 0xDF)));
+         }
+       else
+         {
+         // Turn the 0x3Z ASCII digit into 07Z to flag it as negative.
+         gg_assign(gg_indirect(dest_p),
+                   gg_bitwise_or(gg_indirect(dest_p),
+                                  build_int_cst_type(UCHAR, 0x70)));
+         }
+       }
+     ELSE
+       {
+       }
+     ENDIF
+     }
+   clear_negative_zero(destref,
+                       sourceref,
+                       dest_location);
+   return true;
+   }
+ 
+ void
+ move_helper(tree size_error,        // This is an INT
+             cbl_refer_t destref,
+             cbl_refer_t sourceref,  // Call move_helper with this resolved.
+             TREEPLET   &tsource,
+             cbl_round_t rounded,
+             bool check_for_error,   // True means our called wants to know about truncation errors
+             bool restore_on_error
+             )
+   {
+   Analyze();
+   SHOW_PARSE1
+     {
+     SHOW_PARSE_INDENT
+     SHOW_PARSE_TEXT("move_helper()");
+     }
+ 
+   if( size_error )
+     {
+     gg_assign(size_error, integer_zero_node);
+     }
+ 
+   static tree stash = gg_define_variable(UCHAR_P, "..mh_stash", vs_file_static);
+ 
+   tree st_data = NULL_TREE;
+   tree st_size = NULL_TREE;
+   if( restore_on_error )
+     {
+     // We are creating a copy of the original destination in case we clobber it
+     // and have to restore it because of a computational error.
+     static bool first_time = true;
+     static size_t stash_size = 1024;
+     if( first_time )
+       {
+       first_time = false;
+       gg_assign(stash, gg_cast(UCHAR_P, gg_malloc(stash_size)));
+       }
+     if( stash_size < destref.field->data.capacity() )
+       {
+       stash_size = destref.field->data.capacity();
+       gg_assign(stash, gg_cast(UCHAR_P, gg_realloc(stash, stash_size)));
+       }
+     st_data = qualified_data_location(destref);
+     st_size = refer_size_dest(destref);
+     gg_memcpy(stash,
+               st_data,
+               st_size);
+     }
+ 
+   bool moved = mh_source_is_group(destref, sourceref, tsource);
+ 
+   if( !moved )
+     {
+     moved = mh_identical(destref, sourceref);
+     }
+ 
+   if( !moved )
+     {
+     moved = mh_packed_to_packed(destref,
+                                 sourceref,
+                                 size_error,
+                                 check_for_error);
+     }
+ 
+   if( !moved )
+     {
+     moved = mh_numdisp_to_packed(destref,
+                                 sourceref,
+                                 size_error,
+                                 check_for_error);
+     }
+ 
+   if( !moved )
+     {
+     moved = mh_packed_to_numdisp(destref,
+                                 sourceref,
+                                 size_error,
+                                 check_for_error);
+     }
+ 
+   if( !moved )
+     {
+     moved = mh_source_is_literalN(destref,
+                                   sourceref,
+                                   check_for_error,
+                                   rounded,
+                                   size_error);
+     }
+ 
+   if( !moved )
+     {
+     moved = mh_dest_is_float( destref,
+                               sourceref,
+                               tsource,
+                               rounded,
+                               size_error);
+     }
+ 
+   if( !moved && rounded == truncation_e )
+     {
+     moved = mh_numeric_display( destref,
+                                 sourceref,
+                                 tsource,
+                                 size_error);
+     }
+ 
+   if( !moved )
+     {
+     moved = mh_little_endian( destref,
+                               sourceref,
+                               tsource,
+                               restore_on_error,
+                               size_error);
+     }
+ 
+   if( !moved )
+     {
+     moved = mh_source_is_literalA(destref,
+                                   sourceref,
+                                   rounded,
+                                   size_error);
+     }
+ 
+   if( !moved )
+     {
+     moved = mh_alpha_to_alpha(destref,
+                               sourceref,
+                               rounded,
+                               size_error);
+     }
+ 
+   if( !moved )
+     {
+     SHOW_PARSE1
+       {
+       SHOW_PARSE_INDENT
+       SHOW_PARSE_TEXT("default __gg__move")
+       }
+ 
+     if(    destref.refmod.from
+         || destref.refmod.len
+         || sourceref.refmod.from
+         || sourceref.refmod.len )
+       {
+       // Let the move routine know to treat the destination as alphanumeric
+       attribute_bit_set(destref.field, refmod_e);
+       }
+ 
+     int nflags =   (sourceref.all      ? REFER_T_MOVE_ALL   : 0)
+                  + (sourceref.addr_of  ? REFER_T_ADDRESS_OF : 0);
+ 
+     if( size_error )
+       {
+       gg_assign(size_error,
+                 gg_call_expr( INT,
+                               "__gg__move",
+                               gg_get_address_of(destref.field->var_decl_node),
+                               refer_offset(destref),
+                               refer_size_dest(destref),
+                               tsource.pfield,
+                               tsource.offset,
+                               tsource.length,
+                               build_int_cst_type(INT, nflags),
+                               build_int_cst_type(INT, rounded),
+                               NULL_TREE));
+       }
+     else
+       {
+                 gg_call     ( INT,
+                               "__gg__move",
+                               gg_get_address_of(destref.field->var_decl_node),
+                               refer_offset(destref),
+                               refer_size_dest(destref),
+                               tsource.pfield,
+                               tsource.offset,
+                               tsource.length,
+                               build_int_cst_type(INT, nflags),
+                               build_int_cst_type(INT, rounded),
+                               NULL_TREE);
+ 
+       }
+     if(    destref.refmod.from
+         || destref.refmod.len
+         || sourceref.refmod.from
+         || sourceref.refmod.len )
+       {
+       // Return that value to its original form
+       attribute_bit_clear(destref.field, refmod_e);
+       }
+ 
+     // moved = true; // commented out to quiet cppcheck
+     }
+ 
+   if( restore_on_error )
+     {
+     IF(size_error, ne_op, integer_zero_node)
+       {
+       gg_memcpy(st_data,
+                 stash,
+                 st_size);
+       }
+     ELSE
+       ENDIF
+     }
+   else
+     {
+     if( check_for_error )
+       {
+       IF(size_error, ne_op, integer_zero_node)
+         {
+         // We had a size error, but  there was no restore_on_error. Pointer
+         // Let our lord and master know there was a truncation:
+         set_exception_code(ec_size_truncation_e);
+         }
+       ELSE
+         ENDIF
+       }
+     }
+ 
+   SHOW_PARSE1
+     {
+     SHOW_PARSE_END
+     }
+   }
+ 
+ void
+ parser_move(cbl_refer_t destref,
+             cbl_refer_t sourceref,
+             cbl_round_t rounded,
+             bool skip_fill_from  // Defaults to false
+             )
+   {
+   Analyze();
+   SHOW_PARSE
+     {
+     SHOW_PARSE_HEADER
+     if( sourceref.field && is_figconst_low(sourceref.field) )
+       {
+       SHOW_PARSE_TEXT(" LOW-VALUE")
+       }
+     else if( sourceref.field && is_figconst_zero(sourceref.field) )
+       {
+       SHOW_PARSE_TEXT(" ZERO-VALUE")
+       }
+     else if( sourceref.field && is_figconst_space(sourceref.field) )
+       {
+       SHOW_PARSE_TEXT(" SPACE-VALUE")
+       }
+     else if( sourceref.field && is_figconst_quote(sourceref.field) )
+       {
+       SHOW_PARSE_TEXT(" QUOTE-VALUE")
+       }
+     else if( sourceref.field && is_figconst_high(sourceref.field) )
+       {
+       SHOW_PARSE_TEXT(" HIGH-VALUE")
+       }
+     else
+       {
+       SHOW_PARSE_REF(" ", sourceref)
+       }
+     SHOW_PARSE_REF(" TO ", destref)
+       switch(rounded)
+         {
+         case away_from_zero_e:
+           SHOW_PARSE_TEXT(" AWAY_FROM_ZERO")
+           break;
+         case nearest_toward_zero_e:
+           SHOW_PARSE_TEXT(" NEAREST_TOWARD_ZERO")
+           break;
+         case toward_greater_e:
+           SHOW_PARSE_TEXT(" TOWARD_GREATER")
+           break;
+         case toward_lesser_e:
+           SHOW_PARSE_TEXT(" TOWARD_LESSER")
+           break;
+         case nearest_away_from_zero_e:
+           SHOW_PARSE_TEXT(" NEAREST_AWAY_FROM_ZERO")
+           break;
+         case nearest_even_e:
+           SHOW_PARSE_TEXT(" NEAREST_EVEN")
+           break;
+         case prohibited_e:
+           SHOW_PARSE_TEXT(" PROHIBITED")
+           break;
+         case truncation_e:
+           SHOW_PARSE_TEXT(" TRUNCATED")
+           break;
+         default:
+           gcc_unreachable();
+           break;
+         }
+     SHOW_PARSE_END
+     }
+ 
+   if( !skip_fill_from )
+     {
+     cbl_figconst_t figconst = is_figconst(sourceref);
+     if( figconst )
+       {
+       sourceref.all = true;
+       }
+     }
+ 
+   TRACE1
+     {
+     TRACE1_HEADER
+     TRACE1_TEXT("About to call move_helper")
+     }
+   TREEPLET tsource;
+   treeplet_fill_source(tsource, sourceref);
+   static bool dont_check_for_error = false;
+   move_helper(NULL, destref, sourceref, tsource, rounded, dont_check_for_error );
+ 
+   TRACE1
+     {
+     TRACE1_INDENT
+     TRACE1_REFER_INFO("source ", sourceref)
+     TRACE1_INDENT
+     TRACE1_REFER_INFO("dest   ", destref)
+     TRACE1_END
+     }
+   }
+ 
+ static
+ void
+ parser_move_multi(cbl_refer_t destref,
+                   cbl_refer_t sourceref,
+                   TREEPLET    tsource,
+                   cbl_round_t rounded,
+                   bool skip_fill_from )
+   {
+   Analyze();
+   SHOW_PARSE
+     {
+     SHOW_PARSE_HEADER
+     if( sourceref.field && is_figconst_low(sourceref.field) )
+       {
+       SHOW_PARSE_TEXT(" LOW-VALUE")
+       }
+     else if( sourceref.field && is_figconst_zero(sourceref.field) )
+       {
+       SHOW_PARSE_TEXT(" ZERO-VALUE")
+       }
+     else if( sourceref.field && is_figconst_space(sourceref.field) )
+       {
+       SHOW_PARSE_TEXT(" SPACE-VALUE")
+       }
+     else if( sourceref.field && is_figconst_quote(sourceref.field) )
+       {
+       SHOW_PARSE_TEXT(" QUOTE-VALUE")
+       }
+     else if( sourceref.field && is_figconst_high(sourceref.field) )
+       {
+       SHOW_PARSE_TEXT(" HIGH-VALUE")
+       }
+     else
+       {
+       SHOW_PARSE_REF(" ", sourceref)
+       }
+     SHOW_PARSE_REF(" TO ", destref)
+       switch(rounded)
+         {
+         case away_from_zero_e:
+           SHOW_PARSE_TEXT(" AWAY_FROM_ZERO")
+           break;
+         case nearest_toward_zero_e:
+           SHOW_PARSE_TEXT(" NEAREST_TOWARD_ZERO")
+           break;
+         case toward_greater_e:
+           SHOW_PARSE_TEXT(" TOWARD_GREATER")
+           break;
+         case toward_lesser_e:
+           SHOW_PARSE_TEXT(" TOWARD_LESSER")
+           break;
+         case nearest_away_from_zero_e:
+           SHOW_PARSE_TEXT(" NEAREST_AWAY_FROM_ZERO")
+           break;
+         case nearest_even_e:
+           SHOW_PARSE_TEXT(" NEAREST_EVEN")
+           break;
+         case prohibited_e:
+           SHOW_PARSE_TEXT(" PROHIBITED")
+           break;
+         case truncation_e:
+           SHOW_PARSE_TEXT(" TRUNCATED")
+           break;
+         default:
+           gcc_unreachable();
+           break;
+         }
+     SHOW_PARSE_END
+     }
+ 
+   if( !skip_fill_from )
+     {
+     cbl_figconst_t figconst = is_figconst(sourceref);
+     if( figconst )
+       {
+       sourceref.all = true;
+       }
+     }
+ 
+   TRACE1
+     {
+     TRACE1_HEADER
+     TRACE1_TEXT("About to call move_helper")
+     }
+ 
+   static bool dont_check_for_error = false;
+   move_helper(NULL, destref, sourceref, tsource, rounded, dont_check_for_error );
+ 
+   TRACE1
+     {
+     TRACE1_INDENT
+     TRACE1_REFER_INFO("source ", sourceref)
+     TRACE1_INDENT
+     TRACE1_REFER_INFO("dest   ", destref)
+     TRACE1_END
+     }
+   }
+ 
+ void
+ parser_move(size_t ntgt, cbl_refer_t *tgts, cbl_refer_t src, cbl_round_t rounded)
+   {
+   if( mode_syntax_only() ) return;
+ 
+   cbl_figconst_t figconst = is_figconst(src);
+   if( figconst )
+     {
+     src.all = true;
+     }
+   TREEPLET tsource;
+   treeplet_fill_source(tsource, src);
+   static const bool skip_fill_from = true;
+   for( cbl_refer_t *p=tgts; p < tgts + ntgt; p++ )
+     {
+     parser_move_multi(*p, src, tsource, rounded, skip_fill_from);
+     }
+   }
+ 
diff -Nrcpad gcc-17-20260607/gcc/cobol/parse.y gcc-17-20260614/gcc/cobol/parse.y
*** gcc-17-20260607/gcc/cobol/parse.y	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/cobol/parse.y	Sun Jun 14 22:32:07 2026
*************** usage_clause1:  usage BIT
*** 5001,5007 ****
  		  if( field->has_attr(separate_e) ) {
                      error_msg(@$, "SIGN clause conflicts with NO SIGN");
                    }
! 		  field->clear_attr(separate_e);
  		  field->clear_attr(signable_e);
  		  $$ = field->type = FldPacked;
  		}
--- 5001,5007 ----
  		  if( field->has_attr(separate_e) ) {
                      error_msg(@$, "SIGN clause conflicts with NO SIGN");
                    }
! 		  field->set_attr(separate_e);
  		  field->clear_attr(signable_e);
  		  $$ = field->type = FldPacked;
  		}
*************** intrinsic0:     CURRENT_DATE {
*** 11918,11926 ****
  intrinsic_I:    BOOLEAN_OF_INTEGER     { $$ = BOOLEAN_OF_INTEGER;
  		  cbl_unimplemented("BOOLEAN-OF-INTEGER");
  		}
!         |       CHAR_NATIONAL          { $$ = CHAR_NATIONAL;
! 		    cbl_unimplemented("CHAR-NATIONAL");
! 		}
          |       DATE_OF_INTEGER        { $$ = DATE_OF_INTEGER; }
          |       DAY_OF_INTEGER         { $$ = DAY_OF_INTEGER; }
          |       FACTORIAL              { $$ = FACTORIAL; }
--- 11918,11924 ----
  intrinsic_I:    BOOLEAN_OF_INTEGER     { $$ = BOOLEAN_OF_INTEGER;
  		  cbl_unimplemented("BOOLEAN-OF-INTEGER");
  		}
!         |       CHAR_NATIONAL          { $$ = CHAR_NATIONAL; }
          |       DATE_OF_INTEGER        { $$ = DATE_OF_INTEGER; }
          |       DAY_OF_INTEGER         { $$ = DAY_OF_INTEGER; }
          |       FACTORIAL              { $$ = FACTORIAL; }
diff -Nrcpad gcc-17-20260607/gcc/collect-utils.cc gcc-17-20260614/gcc/collect-utils.cc
*** gcc-17-20260607/gcc/collect-utils.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/collect-utils.cc	Sun Jun 14 22:32:07 2026
*************** utils_cleanup (bool from_signal)
*** 269,271 ****
--- 269,290 ----
  
    tool_cleanup (from_signal);
  }
+ 
+ /* Return COLLECT_GCC_OPTIONS, expanding an @file reference if present.
+    Returns nullptr if unset.  Result is owned by an internal cache.  */
+ 
+ const char *
+ read_collect_gcc_options (void)
+ {
+   static char *cached;
+ 
+   if (cached)
+     return cached;
+ 
+   const char *raw = getenv ("COLLECT_GCC_OPTIONS");
+   if (raw == nullptr)
+     return nullptr;
+ 
+   cached = expandargstr (tool_name, raw);
+   return cached;
+ }
diff -Nrcpad gcc-17-20260607/gcc/collect-utils.h gcc-17-20260614/gcc/collect-utils.h
*** gcc-17-20260607/gcc/collect-utils.h	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/collect-utils.h	Sun Jun 14 22:32:07 2026
*************** extern int collect_wait (const char *, s
*** 33,39 ****
  extern void do_wait (const char *, struct pex_obj *);
  extern void fork_execute (const char *, char **, bool, const char *);
  extern void utils_cleanup (bool);
! 
  
  extern bool debug;
  extern bool verbose;
--- 33,39 ----
  extern void do_wait (const char *, struct pex_obj *);
  extern void fork_execute (const char *, char **, bool, const char *);
  extern void utils_cleanup (bool);
! extern const char *read_collect_gcc_options (void);
  
  extern bool debug;
  extern bool verbose;
diff -Nrcpad gcc-17-20260607/gcc/collect2.cc gcc-17-20260614/gcc/collect2.cc
*** gcc-17-20260607/gcc/collect2.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/collect2.cc	Sun Jun 14 22:32:07 2026
*************** main (int argc, char **argv)
*** 1008,1014 ****
      /* Now pick up any flags we want early from COLLECT_GCC_OPTIONS
         The LTO options are passed here as are other options that might
         be unsuitable for ld (e.g. -save-temps).  */
!     p = getenv ("COLLECT_GCC_OPTIONS");
      while (p && *p)
        {
  	const char *q = extract_string (&p);
--- 1008,1014 ----
      /* Now pick up any flags we want early from COLLECT_GCC_OPTIONS
         The LTO options are passed here as are other options that might
         be unsuitable for ld (e.g. -save-temps).  */
!     p = read_collect_gcc_options ();
      while (p && *p)
        {
  	const char *q = extract_string (&p);
*************** main (int argc, char **argv)
*** 1206,1212 ****
       AIX support needs to know if -shared has been specified before
       parsing commandline arguments.  */
  
!   p = getenv ("COLLECT_GCC_OPTIONS");
    while (p && *p)
      {
        const char *q = extract_string (&p);
--- 1206,1212 ----
       AIX support needs to know if -shared has been specified before
       parsing commandline arguments.  */
  
!   p = read_collect_gcc_options ();
    while (p && *p)
      {
        const char *q = extract_string (&p);
*************** main (int argc, char **argv)
*** 1599,1605 ****
        fprintf (stderr, "o_file              = %s\n",
  	       (o_file ? o_file : "not found"));
  
!       ptr = getenv ("COLLECT_GCC_OPTIONS");
        if (ptr)
  	fprintf (stderr, "COLLECT_GCC_OPTIONS = %s\n", ptr);
  
--- 1599,1605 ----
        fprintf (stderr, "o_file              = %s\n",
  	       (o_file ? o_file : "not found"));
  
!       ptr = read_collect_gcc_options ();
        if (ptr)
  	fprintf (stderr, "COLLECT_GCC_OPTIONS = %s\n", ptr);
  
diff -Nrcpad gcc-17-20260607/gcc/common/config/aarch64/aarch64-common.cc gcc-17-20260614/gcc/common/config/aarch64/aarch64-common.cc
*** gcc-17-20260607/gcc/common/config/aarch64/aarch64-common.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/common/config/aarch64/aarch64-common.cc	Sun Jun 14 22:32:07 2026
*************** aarch64_get_extension_string_for_isa_fla
*** 653,660 ****
  
       However, assemblers with Armv8-R AArch64 support should not have this
       issue, so we don't need this fix when targeting Armv8-R.  */
!   auto explicit_flags = (!(current_flags & AARCH64_FL_V8R)
! 			 ? AARCH64_FL_CRC : 0);
  
    /* Add the features in isa_flags & ~current_flags using the smallest
       possible number of extensions.  We can do this by iterating over the
--- 653,664 ----
  
       However, assemblers with Armv8-R AArch64 support should not have this
       issue, so we don't need this fix when targeting Armv8-R.  */
!   aarch64_feature_flags explicit_flags =
! #ifndef DISABLE_AARCH64_AS_CRC_BUGFIX
!      (!(current_flags & AARCH64_FL_V8R) ? AARCH64_FL_CRC : 0);
! #else
!      0;
! #endif
  
    /* Add the features in isa_flags & ~current_flags using the smallest
       possible number of extensions.  We can do this by iterating over the
diff -Nrcpad gcc-17-20260607/gcc/common/config/i386/i386-common.cc gcc-17-20260614/gcc/common/config/i386/i386-common.cc
*** gcc-17-20260607/gcc/common/config/i386/i386-common.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/common/config/i386/i386-common.cc	Sun Jun 14 22:32:07 2026
*************** const pta processor_alias_table[] =
*** 2327,2337 ****
    {"pantherlake", PROCESSOR_PANTHERLAKE, CPU_HASWELL, PTA_PANTHERLAKE,
      M_CPU_SUBTYPE (INTEL_COREI7_PANTHERLAKE), P_PROC_AVX2},
    {"diamondrapids", PROCESSOR_DIAMONDRAPIDS, CPU_HASWELL, PTA_DIAMONDRAPIDS,
!     M_CPU_SUBTYPE (INTEL_COREI7_DIAMONDRAPIDS), P_PROC_AVX10_1},
    {"wildcatlake", PROCESSOR_PANTHERLAKE, CPU_HASWELL, PTA_PANTHERLAKE,
      M_CPU_SUBTYPE (INTEL_COREI7_PANTHERLAKE), P_PROC_AVX2},
    {"novalake", PROCESSOR_NOVALAKE, CPU_HASWELL, PTA_NOVALAKE,
!     M_CPU_SUBTYPE (INTEL_COREI7_NOVALAKE), P_PROC_AVX10_1},
    {"bonnell", PROCESSOR_BONNELL, CPU_ATOM, PTA_BONNELL,
      M_CPU_TYPE (INTEL_BONNELL), P_PROC_SSSE3},
    {"atom", PROCESSOR_BONNELL, CPU_ATOM, PTA_BONNELL,
--- 2327,2337 ----
    {"pantherlake", PROCESSOR_PANTHERLAKE, CPU_HASWELL, PTA_PANTHERLAKE,
      M_CPU_SUBTYPE (INTEL_COREI7_PANTHERLAKE), P_PROC_AVX2},
    {"diamondrapids", PROCESSOR_DIAMONDRAPIDS, CPU_HASWELL, PTA_DIAMONDRAPIDS,
!     M_CPU_SUBTYPE (INTEL_COREI7_DIAMONDRAPIDS), P_PROC_AVX10_2},
    {"wildcatlake", PROCESSOR_PANTHERLAKE, CPU_HASWELL, PTA_PANTHERLAKE,
      M_CPU_SUBTYPE (INTEL_COREI7_PANTHERLAKE), P_PROC_AVX2},
    {"novalake", PROCESSOR_NOVALAKE, CPU_HASWELL, PTA_NOVALAKE,
!     M_CPU_SUBTYPE (INTEL_COREI7_NOVALAKE), P_PROC_AVX10_2},
    {"bonnell", PROCESSOR_BONNELL, CPU_ATOM, PTA_BONNELL,
      M_CPU_TYPE (INTEL_BONNELL), P_PROC_SSSE3},
    {"atom", PROCESSOR_BONNELL, CPU_ATOM, PTA_BONNELL,
diff -Nrcpad gcc-17-20260607/gcc/common/config/i386/i386-cpuinfo.h gcc-17-20260614/gcc/common/config/i386/i386-cpuinfo.h
*** gcc-17-20260607/gcc/common/config/i386/i386-cpuinfo.h	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/common/config/i386/i386-cpuinfo.h	Sun Jun 14 22:32:07 2026
*************** enum feature_priority
*** 157,162 ****
--- 157,165 ----
    P_X86_64_V4,
    P_AVX10_1 = 34,
    P_PROC_AVX10_1,
+   P_AVX10_2,
+   P_APX_F,
+   P_PROC_AVX10_2,
    P_PROC_DYNAMIC
  };
  
diff -Nrcpad gcc-17-20260607/gcc/common/config/i386/i386-isas.h gcc-17-20260614/gcc/common/config/i386/i386-isas.h
*** gcc-17-20260607/gcc/common/config/i386/i386-isas.h	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/common/config/i386/i386-isas.h	Sun Jun 14 22:32:07 2026
*************** ISA_NAMES_TABLE_START
*** 181,190 ****
    ISA_NAMES_TABLE_ENTRY("sm3", FEATURE_SM3, P_NONE, "-msm3")
    ISA_NAMES_TABLE_ENTRY("sha512", FEATURE_SHA512, P_NONE, "-msha512")
    ISA_NAMES_TABLE_ENTRY("sm4", FEATURE_SM4, P_NONE, "-msm4")
!   ISA_NAMES_TABLE_ENTRY("apxf", FEATURE_APX_F, P_NONE, "-mapxf")
    ISA_NAMES_TABLE_ENTRY("usermsr", FEATURE_USER_MSR, P_NONE, "-musermsr")
    ISA_NAMES_TABLE_ENTRY("avx10.1", FEATURE_AVX10_1, P_AVX10_1, "-mavx10.1")
!   ISA_NAMES_TABLE_ENTRY("avx10.2", FEATURE_AVX10_2, P_NONE, "-mavx10.2")
    ISA_NAMES_TABLE_ENTRY("amx-avx512", FEATURE_AMX_AVX512, P_NONE,
  			"-mamx-avx512")
    ISA_NAMES_TABLE_ENTRY("amx-tf32", FEATURE_AMX_TF32, P_NONE, "-mamx-tf32")
--- 181,190 ----
    ISA_NAMES_TABLE_ENTRY("sm3", FEATURE_SM3, P_NONE, "-msm3")
    ISA_NAMES_TABLE_ENTRY("sha512", FEATURE_SHA512, P_NONE, "-msha512")
    ISA_NAMES_TABLE_ENTRY("sm4", FEATURE_SM4, P_NONE, "-msm4")
!   ISA_NAMES_TABLE_ENTRY("apxf", FEATURE_APX_F, P_APX_F, "-mapxf")
    ISA_NAMES_TABLE_ENTRY("usermsr", FEATURE_USER_MSR, P_NONE, "-musermsr")
    ISA_NAMES_TABLE_ENTRY("avx10.1", FEATURE_AVX10_1, P_AVX10_1, "-mavx10.1")
!   ISA_NAMES_TABLE_ENTRY("avx10.2", FEATURE_AVX10_2, P_AVX10_2, "-mavx10.2")
    ISA_NAMES_TABLE_ENTRY("amx-avx512", FEATURE_AMX_AVX512, P_NONE,
  			"-mamx-avx512")
    ISA_NAMES_TABLE_ENTRY("amx-tf32", FEATURE_AMX_TF32, P_NONE, "-mamx-tf32")
diff -Nrcpad gcc-17-20260607/gcc/config/aarch64/aarch64-builtins.cc gcc-17-20260614/gcc/config/aarch64/aarch64-builtins.cc
*** gcc-17-20260607/gcc/config/aarch64/aarch64-builtins.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/aarch64/aarch64-builtins.cc	Sun Jun 14 22:32:07 2026
*************** enum aarch64_builtins
*** 894,899 ****
--- 894,901 ----
    AARCH64_WSR128,
    AARCH64_PREFETCH_PLD,
    AARCH64_PREFETCH_PLDX,
+   AARCH64_PREFETCH_PLD_RANGE,
+   AARCH64_PREFETCH_PLDX_RANGE,
    AARCH64_PREFETCH_PLI,
    AARCH64_PREFETCH_PLIX,
    AARCH64_PREFETCH_PLDIR,
*************** aarch64_init_prefetch_builtins (void)
*** 2251,2256 ****
--- 2253,2270 ----
  
    ftype = build_function_type_list (void_type_node, cv_argtype, NULL_TREE);
    AARCH64_INIT_PREFETCH_BUILTINS_DECL ("__pldir", PLDIR);
+ 
+   ftype = build_function_type_list (void_type_node, unsigned_type_node,
+ 				    unsigned_type_node, integer_type_node,
+ 				    unsigned_type_node, integer_type_node,
+ 				    size_type_node, cv_argtype, NULL);
+   AARCH64_INIT_PREFETCH_BUILTINS_DECL ("__pldx_range", PLDX_RANGE);
+ 
+   ftype = build_function_type_list (void_type_node, unsigned_type_node,
+ 				    unsigned_type_node,
+ 				    long_long_unsigned_type_node, cv_argtype,
+ 				    NULL);
+   AARCH64_INIT_PREFETCH_BUILTINS_DECL ("__pld_range", PLD_RANGE);
  }
  
  /* Initialize the memory tagging extension (MTE) builtins.  */
*************** require_const_argument (tree exp, unsign
*** 3669,3677 ****
    auto argval = wi::to_widest (arg);
  
    if (argval < minval || argval > maxval)
!     error_at (EXPR_LOCATION (exp),
! 	      "argument %d must be a constant immediate "
! 	      "in range [%wd,%wd]", argno + 1, minval, maxval);
  
    HOST_WIDE_INT retval = argval.to_shwi ();
    return retval;
--- 3683,3695 ----
    auto argval = wi::to_widest (arg);
  
    if (argval < minval || argval > maxval)
!     {
!       error_at (EXPR_LOCATION (exp),
! 		"argument %d must be a constant immediate "
! 		"in range [%wd,%wd]",
! 		argno + 1, minval, maxval);
!       return -1;
!     }
  
    HOST_WIDE_INT retval = argval.to_shwi ();
    return retval;
*************** aarch64_expand_prefetch_builtin (tree ex
*** 3742,3749 ****
    maybe_expand_insn (CODE_FOR_aarch64_pldx, 2, ops);
  }
  
! /* Expand an expression EXP that calls a MEMTAG built-in FCODE
!    with result going to TARGET.  */
  static rtx
  aarch64_expand_builtin_memtag (int fcode, tree exp, rtx target)
  {
--- 3760,3868 ----
    maybe_expand_insn (CODE_FOR_aarch64_pldx, 2, ops);
  }
  
! /* Expand a prefetch range builtin EXP.  */
! void
! aarch64_expand_prefetch_range_builtin (tree exp, int fcode)
! {
!   char prfop[11];
!   class expand_operand ops[3];
! 
!   static const char *kind_s[] = {"PLD", "PST"};
!   static const char *rettn_s[] = {"KEEP", "STRM"};
! 
!   int argno = 0;
! 
!   int kind_id = require_const_argument (exp, argno++, 0, ARRAY_SIZE (kind_s));
!   int rettn_id = require_const_argument (exp, argno++, 0, ARRAY_SIZE (rettn_s));
! 
!   rtx metadata = NULL_RTX;
! 
!   switch (fcode)
!     {
!     case AARCH64_PREFETCH_PLDX_RANGE:
!       {
! 	/* length must be in [-2^21,2^21).  */
! 	int length = require_const_argument (exp, argno++, -(1 << 21), 1 << 21);
! 
! 	/* count must be in [1,2^16].  */
! 	int count = require_const_argument (exp, argno++, 1, (1 << 16) + 1);
! 
! 	/* stride must be in [-2^21,2^21).  */
! 	int stride = require_const_argument (exp, argno++, -(1 << 21), 1 << 21);
! 
! 	/* There is no requirements on reuse_distance other than to be a
! 	   non-negative integer.  However it is meaningless for
! 	   values less than 2^15 or greater than 2^29.  */
! 	uint64_t reuse_distance = require_const_argument (exp, argno++, 0,
! 							  LONG_LONG_MAX);
! 
! 	if (seen_error ())
! 	  return;
! 
! 	gcc_assert (length >= -(1 << 21) && length < (1 << 21));
! 	gcc_assert (count >= 1 && count <= (1 << 16));
! 	gcc_assert (stride >= -(1 << 21) && stride < (1 << 21));
! 
! 	uint64_t length_bits = ((uint64_t) length) & ((1 << 22) - 1);
! 	uint64_t count_bits = ((uint64_t) count - 1) & ((1 << 16) - 1);
! 	uint64_t stride_bits = ((uint64_t) stride) & ((1 << 22) - 1);
! 
! 	uint64_t reuse_distance_bits = 0;
! 	  /* If reuse distance > 512MiB or = 0 then use 0 to represent distance
! 	     unknown.  */
! 	if (reuse_distance != 0 && reuse_distance <= (1ULL << 29))
! 	  {
! 	    /* Find the largest n such that (2 ^ (15-n)) * 32KB >= reuse
! 	       distance.  */
! 	    if (reuse_distance <= (1ULL << 15))
! 	      reuse_distance_bits = 15;
! 	    else
! 	      reuse_distance_bits = __builtin_clzll (reuse_distance - 1) - 34;
! 
! 	    /* Reuse distance is a 4 bit value.  */
! 	    gcc_assert (reuse_distance_bits < (1 << 4));
! 	  }
! 
! 	uint64_t metadata_val = length_bits
! 				| (count_bits << 22)
! 				| (stride_bits << 38)
! 				| (reuse_distance_bits << 60);
! 
! 	metadata = GEN_INT (metadata_val);
! 	break;
!       }
!     case AARCH64_PREFETCH_PLD_RANGE:
!       {
! 	tree metadata_arg = CALL_EXPR_ARG (exp, argno++);
! 	metadata = copy_to_mode_reg (E_DImode, expand_normal (metadata_arg));
! 	break;
!       }
!     default:
!       gcc_unreachable ();
!     }
! 
!   /* Any -1 id variable is to be user-supplied.  Here we fill these in and run
!      bounds checks on them.  "PLI" is used only implicitly by AARCH64_PLI &
!      AARCH64_PLIX, never explicitly.  */
!   rtx address = expand_expr (CALL_EXPR_ARG (exp, argno), NULL_RTX, Pmode,
! 			     EXPAND_NORMAL);
!   address = gen_rtx_MEM (Pmode, address);
! 
!   if (seen_error ())
!     return;
! 
!   sprintf (prfop, "%s%s", kind_s[kind_id], rettn_s[rettn_id]);
! 
!   rtx const_str = rtx_alloc (CONST_STRING);
!   PUT_CODE (const_str, CONST_STRING);
!   XSTR (const_str, 0) = ggc_strdup (prfop);
! 
!   create_fixed_operand (&ops[0], const_str);
!   create_input_operand (&ops[1], metadata, E_DImode);
!   create_address_operand (&ops[2], address);
!   expand_insn (CODE_FOR_aarch64_rprfm, 3, ops);
! }
! 
  static rtx
  aarch64_expand_builtin_memtag (int fcode, tree exp, rtx target)
  {
*************** aarch64_general_expand_builtin (unsigned
*** 4597,4602 ****
--- 4716,4725 ----
      case AARCH64_PREFETCH_PLDIR:
        aarch64_expand_pldir_builtin (exp);
        return target;
+     case AARCH64_PREFETCH_PLD_RANGE:
+     case AARCH64_PREFETCH_PLDX_RANGE:
+       aarch64_expand_prefetch_range_builtin (exp, fcode);
+       return target;
      case AARCH64_BUILTIN_CHKFEAT:
        {
  	rtx x16_reg = gen_rtx_REG (DImode, R16_REGNUM);
diff -Nrcpad gcc-17-20260607/gcc/config/aarch64/aarch64-c.cc gcc-17-20260614/gcc/config/aarch64/aarch64-c.cc
*** gcc-17-20260607/gcc/config/aarch64/aarch64-c.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/aarch64/aarch64-c.cc	Sun Jun 14 22:32:07 2026
*************** aarch64_update_cpp_builtins (cpp_reader
*** 227,234 ****
  			"__ARM_FEATURE_SVE_B16B16", pfile);
    aarch64_def_or_undef (AARCH64_HAVE_ISA (SVE2), "__ARM_FEATURE_SVE2", pfile);
    aarch64_def_or_undef (TARGET_SVE2_AES, "__ARM_FEATURE_SVE2_AES", pfile);
!   aarch64_def_or_undef (TARGET_SVE2_BITPERM,
  			"__ARM_FEATURE_SVE2_BITPERM", pfile);
    aarch64_def_or_undef (TARGET_SVE2_SHA3, "__ARM_FEATURE_SVE2_SHA3", pfile);
    aarch64_def_or_undef (TARGET_SVE2_SM4, "__ARM_FEATURE_SVE2_SM4", pfile);
    aarch64_def_or_undef (TARGET_SVE2p1, "__ARM_FEATURE_SVE2p1", pfile);
--- 227,237 ----
  			"__ARM_FEATURE_SVE_B16B16", pfile);
    aarch64_def_or_undef (AARCH64_HAVE_ISA (SVE2), "__ARM_FEATURE_SVE2", pfile);
    aarch64_def_or_undef (TARGET_SVE2_AES, "__ARM_FEATURE_SVE2_AES", pfile);
!   aarch64_def_or_undef (AARCH64_HAVE_ISA (SVE_BITPERM)
! 			&& AARCH64_HAVE_ISA (SVE2),
  			"__ARM_FEATURE_SVE2_BITPERM", pfile);
+   aarch64_def_or_undef (AARCH64_HAVE_ISA (SSVE_BITPERM),
+ 			"__ARM_FEATURE_SSVE_BITPERM", pfile);
    aarch64_def_or_undef (TARGET_SVE2_SHA3, "__ARM_FEATURE_SVE2_SHA3", pfile);
    aarch64_def_or_undef (TARGET_SVE2_SM4, "__ARM_FEATURE_SVE2_SM4", pfile);
    aarch64_def_or_undef (TARGET_SVE2p1, "__ARM_FEATURE_SVE2p1", pfile);
*************** aarch64_update_cpp_builtins (cpp_reader
*** 314,319 ****
--- 317,325 ----
    aarch64_def_or_undef (TARGET_SME2p2, "__ARM_FEATURE_SME2p2", pfile);
    aarch64_def_or_undef (TARGET_FAMINMAX, "__ARM_FEATURE_FAMINMAX", pfile);
    aarch64_def_or_undef (TARGET_PCDPHINT, "__ARM_FEATURE_PCDPHINT", pfile);
+   aarch64_def_or_undef (AARCH64_HAVE_ISA (SSVE_FEXPA),
+ 			"__ARM_FEATURE_SSVE_FEXPA", pfile);
+   builtin_define ("__ARM_PREFETCH_RANGE");
  
    // Function multi-versioning defines
    aarch64_def_or_undef (targetm.has_ifunc_p (),
diff -Nrcpad gcc-17-20260607/gcc/config/aarch64/aarch64-cores.def gcc-17-20260614/gcc/config/aarch64/aarch64-cores.def
*** gcc-17-20260607/gcc/config/aarch64/aarch64-cores.def	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/aarch64/aarch64-cores.def	Sun Jun 14 22:32:07 2026
*************** AARCH64_CORE("cortex-a720",  cortexa720,
*** 217,223 ****
  AARCH64_CORE("cortex-a720ae",  cortexa720ae, cortexa57, V9_2A,  (SVE2_BITPERM, MEMTAG, PROFILE), neoversen2, 0x41, 0xd89, -1)
  AARCH64_CORE("cortex-a725",  cortexa725, cortexa57, V9_2A, (SVE2_BITPERM, MEMTAG, PROFILE), neoversen3, 0x41, 0xd87, -1)
  
! AARCH64_CORE("cortex-a320", cortexa320, cortexa53, V9_2A, (SVE2_BITPERM, MEMTAG), cortexa53, 0x41, 0xd8f, -1)
  
  AARCH64_CORE("cortex-x2",  cortexx2, cortexa57, V9A,  (SVE2_BITPERM, MEMTAG, I8MM, BF16), neoversen2, 0x41, 0xd48, -1)
  
--- 217,223 ----
  AARCH64_CORE("cortex-a720ae",  cortexa720ae, cortexa57, V9_2A,  (SVE2_BITPERM, MEMTAG, PROFILE), neoversen2, 0x41, 0xd89, -1)
  AARCH64_CORE("cortex-a725",  cortexa725, cortexa57, V9_2A, (SVE2_BITPERM, MEMTAG, PROFILE), neoversen3, 0x41, 0xd87, -1)
  
! AARCH64_CORE("cortex-a320", cortexa320, cortexa53, V9_2A, (SVE2_BITPERM, MEMTAG), cortexa320, 0x41, 0xd8f, -1)
  
  AARCH64_CORE("cortex-x2",  cortexx2, cortexa57, V9A,  (SVE2_BITPERM, MEMTAG, I8MM, BF16), neoversen2, 0x41, 0xd48, -1)
  
diff -Nrcpad gcc-17-20260607/gcc/config/aarch64/aarch64-simd-builtins.def gcc-17-20260614/gcc/config/aarch64/aarch64-simd-builtins.def
*** gcc-17-20260607/gcc/config/aarch64/aarch64-simd-builtins.def	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/aarch64/aarch64-simd-builtins.def	Sun Jun 14 22:32:07 2026
***************
*** 577,582 ****
--- 577,584 ----
    /* Implemented by l<fcvt_pattern><su_optab><GPF_F16:mode><GPI:mode>2.  */
    BUILTIN_GPI_I16 (UNOP, lroundhf, 2, FP)
    VAR1 (UNOP, lroundsf, 2, FP, si)
+   VAR1 (UNOP, lroundsf, 2, FP, di)
+   VAR1 (UNOP, lrounddf, 2, FP, si)
    VAR1 (UNOP, lrounddf, 2, FP, di)
  
    VAR1 (UNOPUS, lrounduv4hf, 2, FP, v4hi)
***************
*** 586,591 ****
--- 588,595 ----
    VAR1 (UNOPUS, lrounduv2df, 2, FP, v2di)
    BUILTIN_GPI_I16 (UNOPUS, lrounduhf, 2, FP)
    VAR1 (UNOPUS, lroundusf, 2, FP, si)
+   VAR1 (UNOPUS, lroundusf, 2, FP, di)
+   VAR1 (UNOPUS, lroundudf, 2, FP, si)
    VAR1 (UNOPUS, lroundudf, 2, FP, di)
  
    VAR1 (UNOP, lceilv4hf, 2, FP, v4hi)
***************
*** 594,599 ****
--- 598,605 ----
    VAR1 (UNOP, lceilv4sf, 2, FP, v4si)
    VAR1 (UNOP, lceilv2df, 2, FP, v2di)
    BUILTIN_GPI_I16 (UNOP, lceilhf, 2, FP)
+   VAR1 (UNOP, lceilsf, 2, FP, di)
+   VAR1 (UNOP, lceildf, 2, FP, si)
  
    VAR1 (UNOPUS, lceiluv4hf, 2, FP, v4hi)
    VAR1 (UNOPUS, lceiluv8hf, 2, FP, v8hi)
***************
*** 602,607 ****
--- 608,615 ----
    VAR1 (UNOPUS, lceiluv2df, 2, FP, v2di)
    BUILTIN_GPI_I16 (UNOPUS, lceiluhf, 2, FP)
    VAR1 (UNOPUS, lceilusf, 2, FP, si)
+   VAR1 (UNOPUS, lceilusf, 2, FP, di)
+   VAR1 (UNOPUS, lceiludf, 2, FP, si)
    VAR1 (UNOPUS, lceiludf, 2, FP, di)
  
    VAR1 (UNOP, lfloorv4hf, 2, FP, v4hi)
***************
*** 610,615 ****
--- 618,625 ----
    VAR1 (UNOP, lfloorv4sf, 2, FP, v4si)
    VAR1 (UNOP, lfloorv2df, 2, FP, v2di)
    BUILTIN_GPI_I16 (UNOP, lfloorhf, 2, FP)
+   VAR1 (UNOP, lfloorsf, 2, FP, di)
+   VAR1 (UNOP, lfloordf, 2, FP, si)
  
    VAR1 (UNOPUS, lflooruv4hf, 2, FP, v4hi)
    VAR1 (UNOPUS, lflooruv8hf, 2, FP, v8hi)
***************
*** 618,623 ****
--- 628,635 ----
    VAR1 (UNOPUS, lflooruv2df, 2, FP, v2di)
    BUILTIN_GPI_I16 (UNOPUS, lflooruhf, 2, FP)
    VAR1 (UNOPUS, lfloorusf, 2, FP, si)
+   VAR1 (UNOPUS, lfloorusf, 2, FP, di)
+   VAR1 (UNOPUS, lfloorudf, 2, FP, si)
    VAR1 (UNOPUS, lfloorudf, 2, FP, di)
  
    VAR1 (UNOP, lfrintnv4hf, 2, FP, v4hi)
***************
*** 627,632 ****
--- 639,646 ----
    VAR1 (UNOP, lfrintnv2df, 2, FP, v2di)
    BUILTIN_GPI_I16 (UNOP, lfrintnhf, 2, FP)
    VAR1 (UNOP, lfrintnsf, 2, FP, si)
+   VAR1 (UNOP, lfrintnsf, 2, FP, di)
+   VAR1 (UNOP, lfrintndf, 2, FP, si)
    VAR1 (UNOP, lfrintndf, 2, FP, di)
  
    VAR1 (UNOPUS, lfrintnuv4hf, 2, FP, v4hi)
***************
*** 636,641 ****
--- 650,657 ----
    VAR1 (UNOPUS, lfrintnuv2df, 2, FP, v2di)
    BUILTIN_GPI_I16 (UNOPUS, lfrintnuhf, 2, FP)
    VAR1 (UNOPUS, lfrintnusf, 2, FP, si)
+   VAR1 (UNOPUS, lfrintnusf, 2, FP, di)
+   VAR1 (UNOPUS, lfrintnudf, 2, FP, si)
    VAR1 (UNOPUS, lfrintnudf, 2, FP, di)
  
    /* Implemented by <optab><fcvt_target><VDQF:mode>2.  */
diff -Nrcpad gcc-17-20260607/gcc/config/aarch64/aarch64-simd.md gcc-17-20260614/gcc/config/aarch64/aarch64-simd.md
*** gcc-17-20260607/gcc/config/aarch64/aarch64-simd.md	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/aarch64/aarch64-simd.md	Sun Jun 14 22:32:07 2026
***************
*** 4869,4875 ****
     && (register_operand (operands[0], <VDBL>mode)
         || register_operand (operands[2], <MODE>mode))"
    {@ [ cons: =0 , 1  , 2   ; attrs: type               , arch  ]
!      [ w        , w  , w   ; neon_permute<dblq>        , simd  ] uzp1\t%0.2<single_type>, %1.2<single_type>, %2.2<single_type>
       [ w        , 0  , ?r  ; neon_from_gp<dblq>        , simd  ] ins\t%0.<single_type>[1], %<single_wx>2
       [ w        , 0  , ?r  ; f_mcr                     , *     ] fmov\t%0.d[1], %2
       [ w        , 0  , Utv ; neon_load1_one_lane<dblq> , simd  ] ld1\t{%0.<single_type>}[1], %2
--- 4869,4875 ----
     && (register_operand (operands[0], <VDBL>mode)
         || register_operand (operands[2], <MODE>mode))"
    {@ [ cons: =0 , 1  , 2   ; attrs: type               , arch  ]
!      [ w        , w  , w   ; neon_permute<dblq>        , simd  ] zip1\t%0.2<single_type>, %1.2<single_type>, %2.2<single_type>
       [ w        , 0  , ?r  ; neon_from_gp<dblq>        , simd  ] ins\t%0.<single_type>[1], %<single_wx>2
       [ w        , 0  , ?r  ; f_mcr                     , *     ] fmov\t%0.d[1], %2
       [ w        , 0  , Utv ; neon_load1_one_lane<dblq> , simd  ] ld1\t{%0.<single_type>}[1], %2
***************
*** 4886,4892 ****
    "TARGET_FLOAT
     && !BYTES_BIG_ENDIAN"
    {@ [ cons: =0 , 1  , 2   ; attrs: type               , arch  ]
!      [ w        , w  , w   ; neon_permute              , simd  ] uzp1\t%0.<Vdduptype>, %1.<Vdduptype>, %2.<Vdduptype>
       [ w        , 0  , w   ; neon_move                 , simd  ] mov\t%0.<single_type>[1], %2.<single_type>[0]
       [ w        , 0  , Utv ; neon_load1_one_lane       , simd  ] ld1\t{%0.<single_type>}[1], %2
       [ w        , 0  , r   ; neon_from_gp              , simd  ] ins\t%0.<single_type>[1], %<single_wx>2
--- 4886,4892 ----
    "TARGET_FLOAT
     && !BYTES_BIG_ENDIAN"
    {@ [ cons: =0 , 1  , 2   ; attrs: type               , arch  ]
!      [ w        , w  , w   ; neon_permute              , simd  ] zip1\t%0.<Vdduptype>, %1.<Vdduptype>, %2.<Vdduptype>
       [ w        , 0  , w   ; neon_move                 , simd  ] mov\t%0.<single_type>[1], %2.<single_type>[0]
       [ w        , 0  , Utv ; neon_load1_one_lane       , simd  ] ld1\t{%0.<single_type>}[1], %2
       [ w        , 0  , r   ; neon_from_gp              , simd  ] ins\t%0.<single_type>[1], %<single_wx>2
***************
*** 4916,4922 ****
     && (register_operand (operands[0], <VDBL>mode)
         || register_operand (operands[2], <MODE>mode))"
    {@ [ cons: =0 , 1  , 2   ; attrs: type               , arch  ]
!      [ w        , w  , w   ; neon_permute<dblq>        , simd  ] uzp1\t%0.2<single_type>, %1.2<single_type>, %2.2<single_type>
       [ w        , 0  , ?r  ; neon_from_gp<dblq>        , simd  ] ins\t%0.<single_type>[1], %<single_wx>2
       [ w        , 0  , ?r  ; f_mcr                     , *     ] fmov\t%0.d[1], %2
       [ w        , 0  , Utv ; neon_load1_one_lane<dblq> , simd  ] ld1\t{%0.<single_type>}[1], %2
--- 4916,4922 ----
     && (register_operand (operands[0], <VDBL>mode)
         || register_operand (operands[2], <MODE>mode))"
    {@ [ cons: =0 , 1  , 2   ; attrs: type               , arch  ]
!      [ w        , w  , w   ; neon_permute<dblq>        , simd  ] zip1\t%0.2<single_type>, %1.2<single_type>, %2.2<single_type>
       [ w        , 0  , ?r  ; neon_from_gp<dblq>        , simd  ] ins\t%0.<single_type>[1], %<single_wx>2
       [ w        , 0  , ?r  ; f_mcr                     , *     ] fmov\t%0.d[1], %2
       [ w        , 0  , Utv ; neon_load1_one_lane<dblq> , simd  ] ld1\t{%0.<single_type>}[1], %2
***************
*** 4933,4939 ****
    "TARGET_FLOAT
     && BYTES_BIG_ENDIAN"
    {@ [ cons: =0 , 1  , 2   ; attrs: type               , arch  ]
!      [ w        , w  , w   ; neon_permute              , simd  ] uzp1\t%0.<Vdduptype>, %1.<Vdduptype>, %2.<Vdduptype>
       [ w        , 0  , w   ; neon_move                 , simd  ] mov\t%0.<single_type>[1], %2.<single_type>[0]
       [ w        , 0  , Utv ; neon_load1_one_lane       , simd  ] ld1\t{%0.<single_type>}[1], %2
       [ w        , 0  , r   ; neon_from_gp              , simd  ] ins\t%0.<single_type>[1], %<single_wx>2
--- 4933,4939 ----
    "TARGET_FLOAT
     && BYTES_BIG_ENDIAN"
    {@ [ cons: =0 , 1  , 2   ; attrs: type               , arch  ]
!      [ w        , w  , w   ; neon_permute              , simd  ] zip1\t%0.<Vdduptype>, %1.<Vdduptype>, %2.<Vdduptype>
       [ w        , 0  , w   ; neon_move                 , simd  ] mov\t%0.<single_type>[1], %2.<single_type>[0]
       [ w        , 0  , Utv ; neon_load1_one_lane       , simd  ] ld1\t{%0.<single_type>}[1], %2
       [ w        , 0  , r   ; neon_from_gp              , simd  ] ins\t%0.<single_type>[1], %<single_wx>2
diff -Nrcpad gcc-17-20260607/gcc/config/aarch64/aarch64-sve-builtins-base.def gcc-17-20260614/gcc/config/aarch64/aarch64-sve-builtins-base.def
*** gcc-17-20260607/gcc/config/aarch64/aarch64-sve-builtins-base.def	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/aarch64/aarch64-sve-builtins-base.def	Sun Jun 14 22:32:07 2026
*************** DEF_SVE_FUNCTION (svadrb, adr_offset, no
*** 274,280 ****
  DEF_SVE_FUNCTION (svadrd, adr_index, none, none)
  DEF_SVE_FUNCTION (svadrh, adr_index, none, none)
  DEF_SVE_FUNCTION (svadrw, adr_index, none, none)
- DEF_SVE_FUNCTION (svexpa, unary_uint, all_float, none)
  DEF_SVE_FUNCTION (svld1_gather, load_gather_sv, sd_data, implicit)
  DEF_SVE_FUNCTION (svld1_gather, load_gather_vs, sd_data, implicit)
  DEF_SVE_FUNCTION (svld1sb_gather, load_ext_gather_offset, sd_integer, implicit)
--- 274,279 ----
*************** DEF_SVE_FUNCTION (svzip2q, binary, all_d
*** 377,379 ****
--- 376,382 ----
  #define REQUIRED_EXTENSIONS sve_and_sme (0, AARCH64_FL_SME2p2)
  DEF_SVE_FUNCTION (svcompact, unary, sd_data, implicit)
  #undef REQUIRED_EXTENSIONS
+ 
+ #define REQUIRED_EXTENSIONS streaming_compatible (0, AARCH64_FL_SSVE_FEXPA)
+ DEF_SVE_FUNCTION (svexpa, unary_uint, all_float, none)
+ #undef REQUIRED_EXTENSIONS
diff -Nrcpad gcc-17-20260607/gcc/config/aarch64/aarch64-sve-builtins-sve2.def gcc-17-20260614/gcc/config/aarch64/aarch64-sve-builtins-sve2.def
*** gcc-17-20260607/gcc/config/aarch64/aarch64-sve-builtins-sve2.def	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/aarch64/aarch64-sve-builtins-sve2.def	Sun Jun 14 22:32:07 2026
*************** DEF_SVE_FUNCTION (svpmullb_pair, binary_
*** 205,212 ****
  DEF_SVE_FUNCTION (svpmullt_pair, binary_opt_n, d_unsigned, none)
  #undef REQUIRED_EXTENSIONS
  
! #define REQUIRED_EXTENSIONS nonstreaming_sve (AARCH64_FL_SVE2 \
! 					      | AARCH64_FL_SVE_BITPERM)
  DEF_SVE_FUNCTION (svbdep, binary_opt_n, all_unsigned, none)
  DEF_SVE_FUNCTION (svbext, binary_opt_n, all_unsigned, none)
  DEF_SVE_FUNCTION (svbgrp, binary_opt_n, all_unsigned, none)
--- 205,213 ----
  DEF_SVE_FUNCTION (svpmullt_pair, binary_opt_n, d_unsigned, none)
  #undef REQUIRED_EXTENSIONS
  
! #define REQUIRED_EXTENSIONS streaming_compatible (AARCH64_FL_SVE2 \
! 						  | AARCH64_FL_SVE_BITPERM, \
! 						  AARCH64_FL_SSVE_BITPERM)
  DEF_SVE_FUNCTION (svbdep, binary_opt_n, all_unsigned, none)
  DEF_SVE_FUNCTION (svbext, binary_opt_n, all_unsigned, none)
  DEF_SVE_FUNCTION (svbgrp, binary_opt_n, all_unsigned, none)
diff -Nrcpad gcc-17-20260607/gcc/config/aarch64/aarch64-sve.md gcc-17-20260614/gcc/config/aarch64/aarch64-sve.md
*** gcc-17-20260607/gcc/config/aarch64/aarch64-sve.md	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/aarch64/aarch64-sve.md	Sun Jun 14 22:32:07 2026
***************
*** 2892,2902 ****
  
  ;; Initialize an SVE vector by duplicating a 128-bit AdvSIMD register that
  ;; itself contains a duplicated scalar or subvector value.
! (define_insn "*aarch64_vec_duplicate_subvector<vconsv><vconq><mode>"
    [(set (match_operand:<VCONSV> 0 "register_operand")
  	(vec_duplicate:<VCONSV>
! 	  (vec_duplicate:<VCONQ>
! 	    (match_operand:VQDUP 1 "register_operand"))))]
    "TARGET_SVE"
    {@ [ cons: =0 , 1 ]
       [ w        , r ] mov\t%0.<single_type>, %<single_wx>1
--- 2892,2901 ----
  
  ;; Initialize an SVE vector by duplicating a 128-bit AdvSIMD register that
  ;; itself contains a duplicated scalar or subvector value.
! (define_insn "*aarch64_vec_duplicate_subvector<vconsv><mode>"
    [(set (match_operand:<VCONSV> 0 "register_operand")
  	(vec_duplicate:<VCONSV>
! 	  (match_operand:VQDUP 1 "register_operand")))]
    "TARGET_SVE"
    {@ [ cons: =0 , 1 ]
       [ w        , r ] mov\t%0.<single_type>, %<single_wx>1
***************
*** 3951,3957 ****
  	(unspec:SVE_FULL_F
  	  [(match_operand:<V_INT_EQUIV> 1 "register_operand" "w")]
  	  SVE_FP_UNARY_INT))]
!   "TARGET_SVE"
    "<sve_fp_op>\t%0.<Vetype>, %1.<Vetype>"
    [(set_attr "sve_type" "sve_fp_exp")]
  )
--- 3950,3956 ----
  	(unspec:SVE_FULL_F
  	  [(match_operand:<V_INT_EQUIV> 1 "register_operand" "w")]
  	  SVE_FP_UNARY_INT))]
!   "TARGET_SVE_FEXPA"
    "<sve_fp_op>\t%0.<Vetype>, %1.<Vetype>"
    [(set_attr "sve_type" "sve_fp_exp")]
  )
***************
*** 8602,8607 ****
--- 8601,8614 ----
  ;; For the other instructions, using the element size is more natural,
  ;; so we do that for SEL as well.
  ;;
+ ;; Avoid patterns that use a zeroing movprfx like:
+ ;;
+ ;; movprfx z0.s, p0/z, z0.s
+ ;; fmov    z0.s, p0/m, #C
+ ;;
+ ;; This creates a false dependency on z0 which can result in stalls.
+ ;; The zeroing will be done via a movi d0, 0 which is cheaper.
+ ;;
  (define_insn "*vcond_mask_<mode><vpred>"
    [(set (match_operand:SVE_ALL 0 "register_operand")
  	(unspec:SVE_ALL
***************
*** 8617,8646 ****
       [ w        , vss , 0  , Upa ; *              ] mov\t%0.<Vetype>, %3/m, #%I1
       [ w        , vss , Dz , Upa ; *              ] mov\t%0.<Vetype>, %3/z, #%I1
       [ w        , Ufc , 0  , Upa ; *              ] fmov\t%0.<Vetype>, %3/m, #%1
-      [ ?w       , Ufc , Dz , Upl ; yes            ] movprfx\t%0.<Vetype>, %3/z, %0.<Vetype>\;fmov\t%0.<Vetype>, %3/m, #%1
       [ ?&w      , vss , w  , Upa ; yes            ] movprfx\t%0, %2\;mov\t%0.<Vetype>, %3/m, #%I1
       [ ?&w      , Ufc , w  , Upa ; yes            ] movprfx\t%0, %2\;fmov\t%0.<Vetype>, %3/m, #%1
    }
  )
  
! ;; Optimize selects between a duplicated scalar variable and another vector,
! ;; the latter of which can be a zero constant or a variable.  Treat duplicates
! ;; of GPRs as being more expensive than duplicates of FPRs, since they
! ;; involve a cross-file move.
  (define_insn "@aarch64_sel_dup<mode>"
    [(set (match_operand:SVE_ALL 0 "register_operand")
  	(unspec:SVE_ALL
  	  [(match_operand:<VPRED> 3 "register_operand")
  	   (vec_duplicate:SVE_ALL
  	     (match_operand:<VEL> 1 "register_operand"))
! 	   (match_operand:SVE_ALL 2 "aarch64_simd_reg_or_zero")]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
    {@ [ cons: =0 , 1 , 2  , 3   ; attrs: movprfx ]
       [ ?w       , r , 0  , Upl ; *              ] mov\t%0.<Vetype>, %3/m, %<vwcore>1
       [ w        , w , 0  , Upl ; *              ] mov\t%0.<Vetype>, %3/m, %<Vetype>1
-      [ ??w      , r , Dz , Upl ; yes            ] movprfx\t%0.<Vetype>, %3/z, %0.<Vetype>\;mov\t%0.<Vetype>, %3/m, %<vwcore>1
-      [ ?&w      , w , Dz , Upl ; yes            ] movprfx\t%0.<Vetype>, %3/z, %0.<Vetype>\;mov\t%0.<Vetype>, %3/m, %<Vetype>1
       [ ??&w     , r , w  , Upl ; yes            ] movprfx\t%0, %2\;mov\t%0.<Vetype>, %3/m, %<vwcore>1
       [ ?&w      , w , w  , Upl ; yes            ] movprfx\t%0, %2\;mov\t%0.<Vetype>, %3/m, %<Vetype>1
    }
--- 8624,8658 ----
       [ w        , vss , 0  , Upa ; *              ] mov\t%0.<Vetype>, %3/m, #%I1
       [ w        , vss , Dz , Upa ; *              ] mov\t%0.<Vetype>, %3/z, #%I1
       [ w        , Ufc , 0  , Upa ; *              ] fmov\t%0.<Vetype>, %3/m, #%1
       [ ?&w      , vss , w  , Upa ; yes            ] movprfx\t%0, %2\;mov\t%0.<Vetype>, %3/m, #%I1
       [ ?&w      , Ufc , w  , Upa ; yes            ] movprfx\t%0, %2\;fmov\t%0.<Vetype>, %3/m, #%1
    }
  )
  
! ;; Optimize selects between a duplicated scalar variable and another vector.
! ;; Treat duplicates of GPRs as being more expensive than duplicates of FPRs
! ;; since they involve a cross-file move.
! ;;
! ;; Avoid patterns that use a zeroing movprfx like:
! ;;
! ;; movprfx z0.s, p0/z, z0.s
! ;; mov     z0.s, p0/m, #C
! ;;
! ;; This creates a false dependency on z0 which can result in stalls.
! ;; The zeroing will be done via a movi d0, 0 which is cheaper.
! ;;
  (define_insn "@aarch64_sel_dup<mode>"
    [(set (match_operand:SVE_ALL 0 "register_operand")
  	(unspec:SVE_ALL
  	  [(match_operand:<VPRED> 3 "register_operand")
  	   (vec_duplicate:SVE_ALL
  	     (match_operand:<VEL> 1 "register_operand"))
! 	   (match_operand:SVE_ALL 2 "register_operand")]
  	  UNSPEC_SEL))]
    "TARGET_SVE"
    {@ [ cons: =0 , 1 , 2  , 3   ; attrs: movprfx ]
       [ ?w       , r , 0  , Upl ; *              ] mov\t%0.<Vetype>, %3/m, %<vwcore>1
       [ w        , w , 0  , Upl ; *              ] mov\t%0.<Vetype>, %3/m, %<Vetype>1
       [ ??&w     , r , w  , Upl ; yes            ] movprfx\t%0, %2\;mov\t%0.<Vetype>, %3/m, %<vwcore>1
       [ ?&w      , w , w  , Upl ; yes            ] movprfx\t%0, %2\;mov\t%0.<Vetype>, %3/m, %<Vetype>1
    }
diff -Nrcpad gcc-17-20260607/gcc/config/aarch64/aarch64-sve2.md gcc-17-20260614/gcc/config/aarch64/aarch64-sve2.md
*** gcc-17-20260607/gcc/config/aarch64/aarch64-sve2.md	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/aarch64/aarch64-sve2.md	Sun Jun 14 22:32:07 2026
***************
*** 4398,4404 ****
  	  [(match_operand:SVE_FULL_I 1 "register_operand" "w")
  	   (match_operand:SVE_FULL_I 2 "register_operand" "w")]
  	  SVE2_INT_BITPERM))]
!   "TARGET_SVE2_BITPERM"
    "<sve_int_op>\t%0.<Vetype>, %1.<Vetype>, %2.<Vetype>"
    [(set_attr "sve_type" "sve_int_bit_perm")]
  )
--- 4398,4404 ----
  	  [(match_operand:SVE_FULL_I 1 "register_operand" "w")
  	   (match_operand:SVE_FULL_I 2 "register_operand" "w")]
  	  SVE2_INT_BITPERM))]
!   "TARGET_SVE_BITPERM"
    "<sve_int_op>\t%0.<Vetype>, %1.<Vetype>, %2.<Vetype>"
    [(set_attr "sve_type" "sve_int_bit_perm")]
  )
diff -Nrcpad gcc-17-20260607/gcc/config/aarch64/aarch64.cc gcc-17-20260614/gcc/config/aarch64/aarch64.cc
*** gcc-17-20260607/gcc/config/aarch64/aarch64.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/aarch64/aarch64.cc	Sun Jun 14 22:32:07 2026
*************** struct simd_immediate_info
*** 169,174 ****
--- 169,177 ----
    /* The mode of the elements.  */
    scalar_mode elt_mode;
  
+   /* If nonzero, the vector width to print the AdvSIMD immediate.  */
+   unsigned int width = 0;
+ 
    /* The instruction to use to move the immediate into a vector.  */
    insn_type insn;
  
*************** struct simd_immediate_info
*** 203,209 ****
     ELT_MODE_IN and value VALUE_IN.  */
  inline simd_immediate_info
  ::simd_immediate_info (scalar_float_mode elt_mode_in, rtx value_in)
!   : elt_mode (elt_mode_in), insn (MOV)
  {
    u.mov.value = value_in;
    u.mov.modifier = LSL;
--- 206,212 ----
     ELT_MODE_IN and value VALUE_IN.  */
  inline simd_immediate_info
  ::simd_immediate_info (scalar_float_mode elt_mode_in, rtx value_in)
!   : elt_mode (elt_mode_in), width (0), insn (MOV)
  {
    u.mov.value = value_in;
    u.mov.modifier = LSL;
*************** inline simd_immediate_info
*** 218,224 ****
  		       unsigned HOST_WIDE_INT value_in,
  		       insn_type insn_in, modifier_type modifier_in,
  		       unsigned int shift_in)
!   : elt_mode (elt_mode_in), insn (insn_in)
  {
    u.mov.value = gen_int_mode (value_in, elt_mode_in);
    u.mov.modifier = modifier_in;
--- 221,227 ----
  		       unsigned HOST_WIDE_INT value_in,
  		       insn_type insn_in, modifier_type modifier_in,
  		       unsigned int shift_in)
!   : elt_mode (elt_mode_in), width (0), insn (insn_in)
  {
    u.mov.value = gen_int_mode (value_in, elt_mode_in);
    u.mov.modifier = modifier_in;
*************** inline simd_immediate_info
*** 229,235 ****
     and where element I is equal to BASE_IN + I * STEP_IN.  */
  inline simd_immediate_info
  ::simd_immediate_info (scalar_mode elt_mode_in, rtx base_in, rtx step_in)
!   : elt_mode (elt_mode_in), insn (INDEX)
  {
    u.index.base = base_in;
    u.index.step = step_in;
--- 232,238 ----
     and where element I is equal to BASE_IN + I * STEP_IN.  */
  inline simd_immediate_info
  ::simd_immediate_info (scalar_mode elt_mode_in, rtx base_in, rtx step_in)
!   : elt_mode (elt_mode_in), width (0), insn (INDEX)
  {
    u.index.base = base_in;
    u.index.step = step_in;
*************** inline simd_immediate_info
*** 240,246 ****
  inline simd_immediate_info
  ::simd_immediate_info (scalar_int_mode elt_mode_in,
  		       aarch64_svpattern pattern_in)
!   : elt_mode (elt_mode_in), insn (PTRUE)
  {
    u.pattern = pattern_in;
  }
--- 243,249 ----
  inline simd_immediate_info
  ::simd_immediate_info (scalar_int_mode elt_mode_in,
  		       aarch64_svpattern pattern_in)
!   : elt_mode (elt_mode_in), width (0), insn (PTRUE)
  {
    u.pattern = pattern_in;
  }
*************** static const struct aarch64_flag_desc aa
*** 413,418 ****
--- 416,422 ----
  #include "tuning_models/generic.h"
  #include "tuning_models/generic_armv8_a.h"
  #include "tuning_models/generic_armv9_a.h"
+ #include "tuning_models/cortexa320.h"
  #include "tuning_models/cortexa35.h"
  #include "tuning_models/cortexa53.h"
  #include "tuning_models/cortexa57.h"
*************** aarch64_simd_valid_imm (rtx op, simd_imm
*** 24635,24645 ****
  	}
      }
  
!   /* The immediate must repeat every eight bytes.  */
    unsigned int nbytes = bytes.length ();
!   for (unsigned i = 8; i < nbytes; ++i)
      if (bytes[i] != bytes[i - 8])
!       return false;
  
    /* Get the repeating 8-byte value as an integer.  No endian correction
       is needed here because bytes is already in lsb-first order.  */
--- 24639,24670 ----
  	}
      }
  
!   /* The immediate must normally repeat every eight bytes.  For MOV
!      also allow a 128-bit AdvSIMD constant whose high 64 bits are zero
!      since it can be materialized using a 64-bit MOVI.  */
    unsigned int nbytes = bytes.length ();
!   unsigned int output_width = 0;
!   bool repeats_every_8_bytes = true;
! 
!   for (unsigned int i = 8; i < nbytes; ++i)
      if (bytes[i] != bytes[i - 8])
!       {
! 	repeats_every_8_bytes = false;
! 	break;
!       }
! 
!   if (!repeats_every_8_bytes)
!     {
!       if (which != AARCH64_CHECK_MOV || !(vec_flags & VEC_ADVSIMD)
! 	  || aarch64_sve_mode_p (mode) || nbytes != 16)
! 	return false;
! 
!       for (unsigned int i = 8; i < nbytes; ++i)
! 	if (bytes[i] != 0)
! 	  return false;
! 
!       output_width = 64;
!     }
  
    /* Get the repeating 8-byte value as an integer.  No endian correction
       is needed here because bytes is already in lsb-first order.  */
*************** aarch64_simd_valid_imm (rtx op, simd_imm
*** 24692,24697 ****
--- 24717,24723 ----
  	    {
  	      rtx float_val = const_double_from_real_value (r, fmode);
  	      *info = simd_immediate_info (fmode, float_val);
+ 	      info->width = output_width;
  	    }
  	  return true;
  	}
*************** aarch64_simd_valid_imm (rtx op, simd_imm
*** 24701,24707 ****
      return aarch64_sve_valid_immediate (ival, imode, info, which);
  
    if (aarch64_advsimd_valid_immediate (val64, imode, info, which))
!     return true;
  
    if (TARGET_SVE)
      return aarch64_sve_valid_immediate (ival, imode, info, which);
--- 24727,24737 ----
      return aarch64_sve_valid_immediate (ival, imode, info, which);
  
    if (aarch64_advsimd_valid_immediate (val64, imode, info, which))
!     {
!       if (info)
! 	info->width = output_width;
!       return true;
!     }
  
    if (TARGET_SVE)
      return aarch64_sve_valid_immediate (ival, imode, info, which);
*************** aarch64_output_simd_imm (rtx const_vecto
*** 27235,27240 ****
--- 27265,27273 ----
    is_valid = aarch64_simd_valid_imm (const_vector, &info, which);
    gcc_assert (is_valid);
  
+   if (info.width != 0)
+     width = info.width;
+ 
    element_char = sizetochar (GET_MODE_BITSIZE (info.elt_mode));
    lane_count = width / GET_MODE_BITSIZE (info.elt_mode);
  
diff -Nrcpad gcc-17-20260607/gcc/config/aarch64/aarch64.h gcc-17-20260614/gcc/config/aarch64/aarch64.h
*** gcc-17-20260607/gcc/config/aarch64/aarch64.h	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/aarch64/aarch64.h	Sun Jun 14 22:32:07 2026
*************** constexpr auto AARCH64_FL_DEFAULT_ISA_MO
*** 295,304 ****
  			 && AARCH64_HAVE_ISA (SVE_AES) \
  			 && TARGET_NON_STREAMING)
  
! /* SVE2 BITPERM instructions, enabled through +sve2-bitperm.  */
! #define TARGET_SVE2_BITPERM (AARCH64_HAVE_ISA (SVE2) \
! 			     && AARCH64_HAVE_ISA (SVE_BITPERM) \
! 			     && TARGET_NON_STREAMING)
  
  /* SVE2 SHA3 instructions, enabled through +sve2-sha3.  */
  #define TARGET_SVE2_SHA3 (AARCH64_HAVE_ISA (SVE2) \
--- 295,306 ----
  			 && AARCH64_HAVE_ISA (SVE_AES) \
  			 && TARGET_NON_STREAMING)
  
! /* SVE BITPERM instructions, enabled through +sve-bitperm+sve2 for non-streaming
!    and +ssve-bitperm for streaming.  */
! #define TARGET_SVE_BITPERM (AARCH64_HAVE_ISA (SVE_BITPERM) \
! 			    && (AARCH64_HAVE_ISA (SVE2) || TARGET_STREAMING) \
! 			    && (AARCH64_HAVE_ISA (SSVE_BITPERM) \
! 				|| TARGET_NON_STREAMING))
  
  /* SVE2 SHA3 instructions, enabled through +sve2-sha3.  */
  #define TARGET_SVE2_SHA3 (AARCH64_HAVE_ISA (SVE2) \
*************** through +ssve-fp8dot2.  */
*** 575,580 ****
--- 577,590 ----
  
  #define TARGET_SSME2_FP8 (TARGET_FP8 && TARGET_STREAMING_SME2)
  
+ /* SVE FEXPA instructions, enabled through +sve for streaming and +ssve-fexpa
+    for streaming.  */
+ #define TARGET_SVE_FEXPA ((TARGET_SVE || TARGET_STREAMING) \
+ 			   && (AARCH64_HAVE_ISA (SSVE_FEXPA) \
+ 			       || TARGET_NON_STREAMING))
+ 
+ #define TARGET_FPRCVT (AARCH64_HAVE_ISA (FPRCVT))
+ 
  /* Standard register usage.  */
  
  /* 31 64-bit general purpose registers R0-R30:
diff -Nrcpad gcc-17-20260607/gcc/config/aarch64/aarch64.md gcc-17-20260614/gcc/config/aarch64/aarch64.md
*** gcc-17-20260607/gcc/config/aarch64/aarch64.md	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/aarch64/aarch64.md	Sun Jun 14 22:32:07 2026
***************
*** 393,398 ****
--- 393,399 ----
      UNSPEC_SYSREG_WTI
      UNSPEC_PLDX
      UNSPEC_PLDIR
+     UNSPEC_PLDX_RANGE
      ;; Represents an SVE-style lane index, in which the indexing applies
      ;; within the containing 128-bit block.
      UNSPEC_SVE_LANE_SELECT
***************
*** 503,509 ****
  ;; Q registers and is equivalent to "simd".
  
  (define_enum "arches" [any rcpc8_4 fp fp_q base_simd nobase_simd
! 		       simd nosimd sve fp16 sme cssc sve2p2_or_sme2p2])
  
  (define_enum_attr "arch" "arches" (const_string "any"))
  
--- 504,510 ----
  ;; Q registers and is equivalent to "simd".
  
  (define_enum "arches" [any rcpc8_4 fp fp_q base_simd nobase_simd
! 		       simd nosimd sve fp16 sme cssc fprcvt sve2p2_or_sme2p2])
  
  (define_enum_attr "arch" "arches" (const_string "any"))
  
***************
*** 585,591 ****
  	     (match_test "TARGET_SME"))
  
  	(and (eq_attr "arch" "sve2p2_or_sme2p2")
! 	     (match_test "TARGET_SVE2p2_OR_SME2p2"))))
      (const_string "yes")
      (const_string "no")))
  
--- 586,595 ----
  	     (match_test "TARGET_SME"))
  
  	(and (eq_attr "arch" "sve2p2_or_sme2p2")
! 	     (match_test "TARGET_SVE2p2_OR_SME2p2"))
! 
! 	(and (eq_attr "arch" "fprcvt")
! 	     (match_test "TARGET_FPRCVT"))))
      (const_string "yes")
      (const_string "no")))
  
***************
*** 1385,1390 ****
--- 1389,1403 ----
    [(set_attr "type" "load_4")]
  )
  
+ (define_insn "aarch64_rprfm"
+   [(unspec [(match_operand 0 "" "")
+ 	    (match_operand:DI 1 "aarch64_prefetch_operand" "Dp")
+ 	    (match_operand:DI 2 "memory_operand" "Q")] UNSPEC_PLDX_RANGE)]
+   ""
+   "rprfm\\t%0, %1, %2"
+   [(set_attr "type" "load_4")]
+ )
+ 
  (define_insn "trap"
    [(trap_if (const_int 1) (const_int 8))]
    ""
***************
*** 3156,3163 ****
  (define_insn "*adds_<optab><ALLX:mode>_shift_<GPI:mode>"
    [(set (reg:CC_NZ CC_REGNUM)
  	(compare:CC_NZ
! 	 (plus:GPI (ashift:GPI 
! 		    (ANY_EXTEND:GPI 
  		     (match_operand:ALLX 1 "register_operand" "r"))
  		    (match_operand 2 "aarch64_imm3" "Ui3"))
  		   (match_operand:GPI 3 "register_operand" "rk"))
--- 3169,3176 ----
  (define_insn "*adds_<optab><ALLX:mode>_shift_<GPI:mode>"
    [(set (reg:CC_NZ CC_REGNUM)
  	(compare:CC_NZ
! 	 (plus:GPI (ashift:GPI
! 		    (ANY_EXTEND:GPI
  		     (match_operand:ALLX 1 "register_operand" "r"))
  		    (match_operand 2 "aarch64_imm3" "Ui3"))
  		   (match_operand:GPI 3 "register_operand" "rk"))
***************
*** 3175,3181 ****
    [(set (reg:CC_NZ CC_REGNUM)
  	(compare:CC_NZ
  	 (minus:GPI (match_operand:GPI 1 "register_operand" "rk")
! 		    (ashift:GPI 
  		     (ANY_EXTEND:GPI
  		      (match_operand:ALLX 2 "register_operand" "r"))
  		     (match_operand 3 "aarch64_imm3" "Ui3")))
--- 3188,3194 ----
    [(set (reg:CC_NZ CC_REGNUM)
  	(compare:CC_NZ
  	 (minus:GPI (match_operand:GPI 1 "register_operand" "rk")
! 		    (ashift:GPI
  		     (ANY_EXTEND:GPI
  		      (match_operand:ALLX 2 "register_operand" "r"))
  		     (match_operand 3 "aarch64_imm3" "Ui3")))
***************
*** 7101,7113 ****
  ;; frcvt floating-point round to integer and convert standard patterns.
  ;; Expands to lbtrunc, lceil, lfloor, lround.
  (define_insn "l<fcvt_pattern><su_optab><GPF_F16:mode><GPI:mode>2"
!   [(set (match_operand:GPI 0 "register_operand" "=r")
  	(FIXUORS:GPI
! 	  (unspec:GPF_F16 [(match_operand:GPF_F16 1 "register_operand" "w")]
  	   FCVT)))]
!   "TARGET_FLOAT"
!   "fcvt<frint_suffix><su>\\t%<GPI:w>0, %<GPF_F16:s>1"
!   [(set_attr "type" "f_cvtf2i")]
  )
  
  (define_insn "*aarch64_fcvt<su_optab><GPF:mode><GPI:mode>2_mult"
--- 7114,7128 ----
  ;; frcvt floating-point round to integer and convert standard patterns.
  ;; Expands to lbtrunc, lceil, lfloor, lround.
  (define_insn "l<fcvt_pattern><su_optab><GPF_F16:mode><GPI:mode>2"
!   [(set (match_operand:GPI 0 "register_operand")
  	(FIXUORS:GPI
! 	  (unspec:GPF_F16 [(match_operand:GPF_F16 1 "register_operand")]
  	   FCVT)))]
!   ""
!   {@ [ cons: =0 , 1 ; attrs: type , arch   ]
!      [ r        , w ; f_cvtf2i    , fp     ] fcvt<frint_suffix><su>\t%<GPI:w>0, %<GPF_F16:s>1
!      [ w        , w ; f_cvtf2i    , fprcvt ] fcvt<frint_suffix><su>\t%<GPI:v>0, %<GPF_F16:s>1
!   }
  )
  
  (define_insn "*aarch64_fcvt<su_optab><GPF:mode><GPI:mode>2_mult"
***************
*** 7288,7319 ****
  ;; Convert HF -> SI or DI
  
  (define_insn "<optab>_trunchf<GPI:mode>2"
!   [(set (match_operand:GPI 0 "register_operand" "=r")
! 	(FIXUORS:GPI (match_operand:HF 1 "register_operand" "w")))]
    "TARGET_FP_F16INST"
!   "fcvtz<su>\t%<w>0, %h1"
!   [(set_attr "type" "f_cvtf2i")]
  )
  
  ;; Convert DF -> SI or SF -> DI which can only be accomplished with
  ;; input in a fp register and output in a integer register
  
  (define_insn "<optab>_trunc<fcvt_change_mode><GPI:mode>2"
!   [(set (match_operand:GPI 0 "register_operand" "=r")
! 	(FIXUORS:GPI (match_operand:<FCVT_CHANGE_MODE> 1 "register_operand" "w")))]
    "TARGET_FLOAT"
!   "fcvtz<su>\t%<w>0, %<fpw>1"
!   [(set_attr "type" "f_cvtf2i")]
  )
  
  (define_insn "*fix_to_zero_extend<mode>di2"
!   [(set (match_operand:DI 0 "register_operand" "=r")
  	(zero_extend:DI
  	 (unsigned_fix:SI
! 	  (match_operand:GPF 1 "register_operand" "w"))))]
    "TARGET_FLOAT"
!   "fcvtzu\t%w0, %<s>1"
!   [(set_attr "type" "f_cvtf2i")]
  )
  
  ;; Equal width integer to fp and multiply combine.
--- 7303,7340 ----
  ;; Convert HF -> SI or DI
  
  (define_insn "<optab>_trunchf<GPI:mode>2"
!   [(set (match_operand:GPI 0 "register_operand")
! 	(FIXUORS:GPI (match_operand:HF 1 "register_operand")))]
    "TARGET_FP_F16INST"
!   {@ [ cons: =0 , 1 ; attrs: type , arch   ]
!      [ r        , w ; f_cvtf2i    , fp     ] fcvtz<su>\t%<w>0, %h1
!      [ w        , w ; f_cvtf2i    , fprcvt ] fcvtz<su>\t%<s>0, %h1
!   }
  )
  
  ;; Convert DF -> SI or SF -> DI which can only be accomplished with
  ;; input in a fp register and output in a integer register
  
  (define_insn "<optab>_trunc<fcvt_change_mode><GPI:mode>2"
!   [(set (match_operand:GPI 0 "register_operand")
! 	(FIXUORS:GPI (match_operand:<FCVT_CHANGE_MODE> 1 "register_operand")))]
    "TARGET_FLOAT"
!   {@ [ cons: =0 , 1 ; attrs: type      , arch   ]
!      [ r        , w ; f_cvtf2i         , fp     ] fcvtz<su>\t%<w>0, %<fpw>1
!      [ w        , w ; f_cvtf2i         , fprcvt ] fcvtz<su>\t%<s>0, %<fpw>1
!   }
  )
  
  (define_insn "*fix_to_zero_extend<mode>di2"
!   [(set (match_operand:DI 0 "register_operand")
  	(zero_extend:DI
  	 (unsigned_fix:SI
! 	  (match_operand:GPF 1 "register_operand"))))]
    "TARGET_FLOAT"
!   {@ [ cons: =0 , 1 ; attrs: type      , arch   ]
!      [ r        , w ; f_cvtf2i         , fp     ] fcvtzu\t%w0, %<s>1
!      [ w        , w ; f_cvtf2i         , fprcvt ] fcvtzu\t%s0, %<s>1
!   }
  )
  
  ;; Equal width integer to fp and multiply combine.
***************
*** 7366,7375 ****
  
  ;; Unequal width integer to fp conversions.
  (define_insn "<optab><fcvt_iesize><GPF:mode>2"
!   [(set (match_operand:GPF 0 "register_operand" "=w")
!         (FLOATUORS:GPF (match_operand:<FCVT_IESIZE> 1 "register_operand" "r")))]
    "TARGET_FLOAT"
!   "<su_optab>cvtf\t%<GPF:s>0, %<w2>1"
    [(set_attr "type" "f_cvti2f")]
  )
  
--- 7387,7399 ----
  
  ;; Unequal width integer to fp conversions.
  (define_insn "<optab><fcvt_iesize><GPF:mode>2"
!   [(set (match_operand:GPF 0 "register_operand")
! 	(FLOATUORS:GPF (match_operand:<FCVT_IESIZE> 1 "register_operand")))]
    "TARGET_FLOAT"
!   {@ [ cons: =0 , 1 ; attrs: type      , arch   ]
!      [ w        , r ; f_cvti2f         , fp     ] <su_optab>cvtf\t%<GPF:s>0, %<w2>1
!      [ w        , w ; f_cvti2f         , fprcvt ] <su_optab>cvtf\t%<GPF:s>0, %<fpw>1
!   }
    [(set_attr "type" "f_cvti2f")]
  )
  
***************
*** 7381,7391 ****
  ;; of the mid-end logic.
  
  (define_insn "aarch64_fp16_<optab><mode>hf2"
!   [(set (match_operand:HF 0 "register_operand" "=w")
! 	(FLOATUORS:HF (match_operand:GPI 1 "register_operand" "r")))]
    "TARGET_FP_F16INST"
!   "<su_optab>cvtf\t%h0, %<w>1"
!   [(set_attr "type" "f_cvti2f")]
  )
  
  (define_expand "<optab>sihf2"
--- 7405,7417 ----
  ;; of the mid-end logic.
  
  (define_insn "aarch64_fp16_<optab><mode>hf2"
!   [(set (match_operand:HF 0 "register_operand")
! 	(FLOATUORS:HF (match_operand:GPI 1 "register_operand")))]
    "TARGET_FP_F16INST"
!   {@ [ cons: =0 , 1 ; attrs: type , arch   ]
!      [ w        , r ; f_cvti2f    , fp     ] <su_optab>cvtf\t%h0, %<w>1
!      [ w        , w ; f_cvti2f    , fprcvt ] <su_optab>cvtf\t%h0, %<v>1
!   }
  )
  
  (define_expand "<optab>sihf2"
diff -Nrcpad gcc-17-20260607/gcc/config/aarch64/arm_neon.h gcc-17-20260614/gcc/config/aarch64/arm_neon.h
*** gcc-17-20260607/gcc/config/aarch64/arm_neon.h	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/aarch64/arm_neon.h	Sun Jun 14 22:32:07 2026
*************** vcvtd_s64_f64 (float64_t __a)
*** 10033,10038 ****
--- 10033,10045 ----
    return (int64_t) __a;
  }
  
+ __extension__ extern __inline int32_t
+ __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
+ vcvtd_s32_f64 (float64_t __a)
+ {
+   return (int32_t) __a;
+ }
+ 
  __extension__ extern __inline uint64_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vcvtd_u64_f64 (float64_t __a)
*************** vcvtd_u64_f64 (float64_t __a)
*** 10040,10045 ****
--- 10047,10059 ----
    return (uint64_t) __a;
  }
  
+ __extension__ extern __inline uint32_t
+ __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
+ vcvtd_u32_f64 (float64_t __a)
+ {
+   return (uint32_t) __a;
+ }
+ 
  __extension__ extern __inline int32_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vcvts_s32_f32 (float32_t __a)
*************** vcvts_s32_f32 (float32_t __a)
*** 10047,10052 ****
--- 10061,10073 ----
    return (int32_t) __a;
  }
  
+ __extension__ extern __inline int64_t
+ __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
+ vcvts_s64_f32 (float32_t __a)
+ {
+   return (int64_t) __a;
+ }
+ 
  __extension__ extern __inline uint32_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vcvts_u32_f32 (float32_t __a)
*************** vcvts_u32_f32 (float32_t __a)
*** 10054,10059 ****
--- 10075,10087 ----
    return (uint32_t) __a;
  }
  
+ __extension__ extern __inline uint64_t
+ __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
+ vcvts_u64_f32 (float32_t __a)
+ {
+   return (uint64_t) __a;
+ }
+ 
  __extension__ extern __inline int32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vcvt_s32_f32 (float32x2_t __a)
*************** vcvtad_s64_f64 (float64_t __a)
*** 10119,10124 ****
--- 10147,10159 ----
    return __builtin_aarch64_lrounddfdi (__a);
  }
  
+ __extension__ extern __inline int32_t
+ __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
+ vcvtad_s32_f64 (float64_t __a)
+ {
+   return __builtin_aarch64_lrounddfsi (__a);
+ }
+ 
  __extension__ extern __inline uint64_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vcvtad_u64_f64 (float64_t __a)
*************** vcvtad_u64_f64 (float64_t __a)
*** 10126,10131 ****
--- 10161,10173 ----
    return __builtin_aarch64_lroundudfdi_us (__a);
  }
  
+ __extension__ extern __inline uint32_t
+ __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
+ vcvtad_u32_f64 (float64_t __a)
+ {
+   return __builtin_aarch64_lroundudfsi_us (__a);
+ }
+ 
  __extension__ extern __inline int32_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vcvtas_s32_f32 (float32_t __a)
*************** vcvtas_s32_f32 (float32_t __a)
*** 10133,10138 ****
--- 10175,10187 ----
    return __builtin_aarch64_lroundsfsi (__a);
  }
  
+ __extension__ extern __inline int64_t
+ __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
+ vcvtas_s64_f32 (float32_t __a)
+ {
+   return __builtin_aarch64_lroundsfdi (__a);
+ }
+ 
  __extension__ extern __inline uint32_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vcvtas_u32_f32 (float32_t __a)
*************** vcvtas_u32_f32 (float32_t __a)
*** 10140,10145 ****
--- 10189,10201 ----
    return __builtin_aarch64_lroundusfsi_us (__a);
  }
  
+ __extension__ extern __inline uint64_t
+ __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
+ vcvtas_u64_f32 (float32_t __a)
+ {
+   return __builtin_aarch64_lroundusfdi_us (__a);
+ }
+ 
  __extension__ extern __inline int32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vcvta_s32_f32 (float32x2_t __a)
*************** vcvtmd_s64_f64 (float64_t __a)
*** 10205,10210 ****
--- 10261,10273 ----
    return __builtin_llfloor (__a);
  }
  
+ __extension__ extern __inline int32_t
+ __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
+ vcvtmd_s32_f64 (float64_t __a)
+ {
+   return __builtin_aarch64_lfloordfsi (__a);
+ }
+ 
  __extension__ extern __inline uint64_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vcvtmd_u64_f64 (float64_t __a)
*************** vcvtmd_u64_f64 (float64_t __a)
*** 10212,10217 ****
--- 10275,10287 ----
    return __builtin_aarch64_lfloorudfdi_us (__a);
  }
  
+ __extension__ extern __inline uint32_t
+ __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
+ vcvtmd_u32_f64 (float64_t __a)
+ {
+   return __builtin_aarch64_lfloorudfsi_us (__a);
+ }
+ 
  __extension__ extern __inline int32_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vcvtms_s32_f32 (float32_t __a)
*************** vcvtms_s32_f32 (float32_t __a)
*** 10219,10224 ****
--- 10289,10301 ----
    return __builtin_ifloorf (__a);
  }
  
+ __extension__ extern __inline int64_t
+ __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
+ vcvtms_s64_f32 (float32_t __a)
+ {
+   return __builtin_aarch64_lfloorsfdi (__a);
+ }
+ 
  __extension__ extern __inline uint32_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vcvtms_u32_f32 (float32_t __a)
*************** vcvtms_u32_f32 (float32_t __a)
*** 10226,10231 ****
--- 10303,10315 ----
    return __builtin_aarch64_lfloorusfsi_us (__a);
  }
  
+ __extension__ extern __inline uint64_t
+ __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
+ vcvtms_u64_f32 (float32_t __a)
+ {
+   return __builtin_aarch64_lfloorusfdi_us (__a);
+ }
+ 
  __extension__ extern __inline int32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vcvtm_s32_f32 (float32x2_t __a)
*************** vcvtnd_s64_f64 (float64_t __a)
*** 10291,10296 ****
--- 10375,10387 ----
    return __builtin_aarch64_lfrintndfdi (__a);
  }
  
+ __extension__ extern __inline int64_t
+ __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
+ vcvtnd_s32_f64 (float64_t __a)
+ {
+   return __builtin_aarch64_lfrintndfsi (__a);
+ }
+ 
  __extension__ extern __inline uint64_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vcvtnd_u64_f64 (float64_t __a)
*************** vcvtnd_u64_f64 (float64_t __a)
*** 10298,10303 ****
--- 10389,10401 ----
    return __builtin_aarch64_lfrintnudfdi_us (__a);
  }
  
+ __extension__ extern __inline uint32_t
+ __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
+ vcvtnd_u32_f64 (float64_t __a)
+ {
+   return __builtin_aarch64_lfrintnudfsi_us (__a);
+ }
+ 
  __extension__ extern __inline int32_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vcvtns_s32_f32 (float32_t __a)
*************** vcvtns_s32_f32 (float32_t __a)
*** 10305,10316 ****
--- 10403,10427 ----
    return __builtin_aarch64_lfrintnsfsi (__a);
  }
  
+ __extension__ extern __inline int64_t
+ __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
+ vcvtns_s64_f32 (float32_t __a)
+ {
+   return __builtin_aarch64_lfrintnsfdi (__a);
+ }
+ 
  __extension__ extern __inline uint32_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vcvtns_u32_f32 (float32_t __a)
  {
    return __builtin_aarch64_lfrintnusfsi_us (__a);
  }
+ __extension__ extern __inline uint64_t
+ __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
+ vcvtns_u64_f32 (float32_t __a)
+ {
+   return __builtin_aarch64_lfrintnusfdi_us (__a);
+ }
  
  __extension__ extern __inline int32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
*************** vcvtpd_s64_f64 (float64_t __a)
*** 10377,10382 ****
--- 10488,10500 ----
    return __builtin_llceil (__a);
  }
  
+ __extension__ extern __inline int32_t
+ __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
+ vcvtpd_s32_f64 (float64_t __a)
+ {
+   return __builtin_aarch64_lceildfsi (__a);
+ }
+ 
  __extension__ extern __inline uint64_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vcvtpd_u64_f64 (float64_t __a)
*************** vcvtpd_u64_f64 (float64_t __a)
*** 10384,10389 ****
--- 10502,10514 ----
    return __builtin_aarch64_lceiludfdi_us (__a);
  }
  
+ __extension__ extern __inline uint32_t
+ __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
+ vcvtpd_u32_f64 (float64_t __a)
+ {
+   return __builtin_aarch64_lceiludfsi_us (__a);
+ }
+ 
  __extension__ extern __inline int32_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vcvtps_s32_f32 (float32_t __a)
*************** vcvtps_s32_f32 (float32_t __a)
*** 10391,10396 ****
--- 10516,10528 ----
    return __builtin_iceilf (__a);
  }
  
+ __extension__ extern __inline int64_t
+ __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
+ vcvtps_s64_f32 (float32_t __a)
+ {
+   return __builtin_aarch64_lceilsfdi (__a);
+ }
+ 
  __extension__ extern __inline uint32_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vcvtps_u32_f32 (float32_t __a)
*************** vcvtps_u32_f32 (float32_t __a)
*** 10398,10403 ****
--- 10530,10542 ----
    return __builtin_aarch64_lceilusfsi_us (__a);
  }
  
+ __extension__ extern __inline uint64_t
+ __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
+ vcvtps_u64_f32 (float32_t __a)
+ {
+   return __builtin_aarch64_lceilusfdi_us (__a);
+ }
+ 
  __extension__ extern __inline int32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vcvtp_s32_f32 (float32x2_t __a)
diff -Nrcpad gcc-17-20260607/gcc/config/aarch64/iterators.md gcc-17-20260614/gcc/config/aarch64/iterators.md
*** gcc-17-20260607/gcc/config/aarch64/iterators.md	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/aarch64/iterators.md	Sun Jun 14 22:32:07 2026
***************
*** 1427,1433 ****
  (define_mode_attr w2 [(HF "x") (SF "x") (DF "w")])
  
  ;; For width of fp registers in fcvt instruction
! (define_mode_attr fpw [(DI "s") (SI "d")])
  
  (define_mode_attr short_mask [(HI "65535") (QI "255")])
  
--- 1427,1433 ----
  (define_mode_attr w2 [(HF "x") (SF "x") (DF "w")])
  
  ;; For width of fp registers in fcvt instruction
! (define_mode_attr fpw [(DI "s") (SI "d") (DF "s") (SF "d")])
  
  (define_mode_attr short_mask [(HI "65535") (QI "255")])
  
***************
*** 3720,3726 ****
  ;; This might need to be revisited if new operations are added in future.
  (define_int_iterator SVE_FP_UNARY [UNSPEC_FRECPE UNSPEC_RSQRTE])
  
! (define_int_iterator SVE_FP_UNARY_INT [(UNSPEC_FEXPA "TARGET_NON_STREAMING")])
  
  (define_int_iterator SVE_INT_SHIFT_IMM [UNSPEC_ASRD
  					(UNSPEC_SQSHLU "TARGET_SVE2")
--- 3720,3726 ----
  ;; This might need to be revisited if new operations are added in future.
  (define_int_iterator SVE_FP_UNARY [UNSPEC_FRECPE UNSPEC_RSQRTE])
  
! (define_int_iterator SVE_FP_UNARY_INT [UNSPEC_FEXPA])
  
  (define_int_iterator SVE_INT_SHIFT_IMM [UNSPEC_ASRD
  					(UNSPEC_SQSHLU "TARGET_SVE2")
diff -Nrcpad gcc-17-20260607/gcc/config/aarch64/tuning_models/cortexa320.h gcc-17-20260614/gcc/config/aarch64/tuning_models/cortexa320.h
*** gcc-17-20260607/gcc/config/aarch64/tuning_models/cortexa320.h	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/config/aarch64/tuning_models/cortexa320.h	Sun Jun 14 22:32:07 2026
***************
*** 0 ****
--- 1,195 ----
+ /* Tuning model description for AArch64 architecture.
+    Copyright (C) 2009-2026 Free Software Foundation, Inc.
+ 
+    This file is part of GCC.
+ 
+    GCC is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 3, or (at your option)
+    any later version.
+ 
+    GCC is distributed in the hope that it will be useful, but
+    WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    General Public License for more details.
+ 
+    You should have received a copy of the GNU General Public License
+    along with GCC; see the file COPYING3.  If not see
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #ifndef GCC_AARCH64_H_CORTEXA320
+ #define GCC_AARCH64_H_CORTEXA320
+ 
+ #include "generic.h"
+ 
+ static const struct cpu_addrcost_table cortexa320_addrcost_table =
+ {
+     {
+       1, /* hi  */
+       0, /* si  */
+       0, /* di  */
+       1, /* ti  */
+     },
+   0, /* pre_modify  */
+   0, /* post_modify  */
+   2, /* post_modify_ld3_st3  */
+   2, /* post_modify_ld4_st4  */
+   0, /* register_offset  */
+   0, /* register_sextend  */
+   0, /* register_zextend  */
+   0 /* imm_offset  */
+ };
+ 
+ static const struct cpu_regmove_cost cortexa320_regmove_cost =
+ {
+   1, /* GP2GP  */
+   /* Avoid the use of slow int<->fp moves for spilling by setting
+      their cost higher than memmov_cost.  */
+   5, /* GP2FP  */
+   5, /* FP2GP  */
+   2 /* FP2FP  */
+ };
+ 
+ static const advsimd_vec_cost cortexa320_advsimd_vector_cost =
+ {
+   3, /* int_stmt_cost  */
+   4, /* fp_stmt_cost  */
+   1, /* ld2_st2_permute_cost */
+   2, /* ld3_st3_permute_cost  */
+   3, /* ld4_st4_permute_cost  */
+   3, /* permute_cost  */
+   3, /* reduc_i8_cost  */
+   4, /* reduc_i16_cost  */
+   4, /* reduc_i32_cost  */
+   3, /* reduc_i64_cost  */
+   12, /* reduc_f16_cost  */
+   8, /* reduc_f32_cost  */
+   4, /* reduc_f64_cost  */
+   0, /* store_elt_extra_cost  */
+   /* This value is just inherited from the Cortex-A57 table.  */
+   8, /* vec_to_scalar_cost  */
+   /* This depends very much on what the scalar value is and
+      where it comes from.  E.g. some constants take two dependent
+      instructions or a load, while others might be moved from a GPR.
+      4 seems to be a reasonable compromise in practice.  */
+   4, /* scalar_to_vec_cost  */
+   5, /* align_load_cost  */
+   5, /* unalign_load_cost  */
+   /* Although stores have a latency of 2 and compete for the
+      vector pipes, in practice it's better not to model that.  */
+   2, /* unalign_store_cost  */
+   2  /* store_cost  */
+ };
+ 
+ static const sve_vec_cost cortexa320_sve_vector_cost =
+ {
+   {
+     3, /* int_stmt_cost  */
+     4, /* fp_stmt_cost  */
+     1, /* ld2_st2_permute_cost  */
+     2, /* ld3_st3_permute_cost  */
+     3, /* ld4_st4_permute_cost  */
+     3, /* permute_cost  */
+     /* Theoretically, a reduction involving 15 scalar ADDs could
+        complete in ~15 cycles and would have a cost of 15.  [SU]ADDV
+        completes in 4 cycles, so give it a cost of 15 + -11.  */
+     4, /* reduc_i8_cost  */
+     /* Likewise for 7 scalar ADDs (~7 cycles) vs. 4: 7 + -3.  */
+     4, /* reduc_i16_cost  */
+     /* Likewise for 3 scalar ADDs (~3 cycles) vs. 4: 3 + 1.  */
+     4, /* reduc_i32_cost  */
+     /* Likewise for 1 scalar ADD (~1 cycles) vs. 4: 1 + 3.  */
+     4, /* reduc_i64_cost  */
+     /* Theoretically, a reduction involving 7 scalar FADDs could
+        complete in ~28 cycles and would have a cost of  28.  FADDV
+        completes in 12 cycles, so give it a cost of 28 + -16.  */
+     12, /* reduc_f16_cost  */
+     /* Likewise for 3 scalar FADDs (~12 cycles) vs. 8: 12 + -4.  */
+     8, /* reduc_f32_cost  */
+     /* Likewise for 1 scalar FADD (~4 cycles) vs. 4: 4 + 0.  */
+     4, /* reduc_f64_cost  */
+     0, /* store_elt_extra_cost  */
+     /* This value is just inherited from the Cortex-A57 table.  */
+     8, /* vec_to_scalar_cost  */
+     /* See the comment above the Advanced SIMD versions.  */
+     4, /* scalar_to_vec_cost  */
+     5, /* align_load_cost  */
+     5, /* unalign_load_cost  */
+     /* Although stores have a latency of 2 and compete for the
+        vector pipes, in practice it's better not to model that.  */
+     2, /* unalign_store_cost  */
+     2  /* store_cost  */
+   },
+   4, /* clast_cost  */
+   25, /* fadda_f16_cost  */
+   9, /* fadda_f32_cost  */
+   3, /* fadda_f64_cost  */
+   /* A strided Advanced SIMD x64 load would take two parallel FP loads
+      (10 cycles) plus an insertion (3 cycles).  Assume a 64-bit SVE gather
+      is 1 cycle more.  The Advanced SIMD version is costed as 2 scalar loads
+      (cost 10) and a vec_construct (cost 3).  Add a full vector operation
+      (cost 3) to that, to avoid the difference being lost in rounding.
+ 
+      There is no easy comparison between a strided Advanced SIMD x32 load
+      and an SVE 32-bit gather, but cost an SVE 32-bit gather as 1 vector
+      operation more than a 64-bit gather.  */
+   16, /* gather_load_x32_cost  */
+   19, /* gather_load_x64_cost  */
+   48, /* gather_load_x32_init_cost  */
+   38, /* gather_load_x64_init_cost  */
+   0 /* scatter_store_elt_cost  */
+ };
+ 
+ /* Cortexa320 costs for vector insn classes.  */
+ static const struct cpu_vector_cost cortexa320_vector_cost =
+ {
+   1, /* scalar_int_stmt_cost  */
+   2, /* scalar_fp_stmt_cost  */
+   4, /* scalar_load_cost  */
+   1, /* scalar_store_cost  */
+   1, /* cond_taken_branch_cost  */
+   1, /* cond_not_taken_branch_cost  */
+   &cortexa320_advsimd_vector_cost, /* advsimd  */
+   &cortexa320_sve_vector_cost, /* sve  */
+   nullptr /* issue_info  */
+ };
+ 
+ static const struct tune_params cortexa320_tunings =
+ {
+   &cortexa76_extra_costs,
+   &cortexa320_addrcost_table,
+   &cortexa320_regmove_cost,
+   &cortexa320_vector_cost,
+   &generic_branch_cost,
+   &generic_approx_modes,
+   SVE_128, /* sve_width  */
+   { 4, /* load_int.  */
+     1, /* store_int.  */
+     5, /* load_fp.  */
+     2, /* store_fp.  */
+     4, /* load_pred.  */
+     1 /* store_pred.  */
+   }, /* memmov_cost.  */
+   1, /* issue_rate  */
+   AARCH64_FUSE_NEOVERSE_BASE, /* fusible_ops  */
+   "32:16",	/* function_align.  */
+   "4",		/* jump_align.  */
+   "32:16",	/* loop_align.  */
+   2,	/* int_reassoc_width.  */
+   4,	/* fp_reassoc_width.  */
+   1,	/* fma_reassoc_width.  */
+   2,	/* vec_reassoc_width.  */
+   2,	/* min_div_recip_mul_sf.  */
+   2,	/* min_div_recip_mul_df.  */
+   0,	/* max_case_values.  */
+   tune_params::AUTOPREFETCHER_WEAK,	/* autoprefetcher_model.  */
+   (AARCH64_EXTRA_TUNE_CHEAP_SHIFT_EXTEND
+    | AARCH64_EXTRA_TUNE_CSE_SVE_VL_CONSTANTS
+    | AARCH64_EXTRA_TUNE_MATCHED_VECTOR_THROUGHPUT),	/* tune_flags.  */
+   &generic_armv9a_prefetch_tune,
+   AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
+   AARCH64_LDP_STP_POLICY_ALWAYS,   /* stp_policy_model.  */
+   nullptr	/* dispatch_constraints.  */
+ };
+ 
+ #endif /* GCC_AARCH64_H_CORTEXA320.  */
diff -Nrcpad gcc-17-20260607/gcc/config/arm/arm-cpus.in gcc-17-20260614/gcc/config/arm/arm-cpus.in
*** gcc-17-20260607/gcc/config/arm/arm-cpus.in	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/arm/arm-cpus.in	Sun Jun 14 22:32:07 2026
*************** begin cpu cortex-m52
*** 1642,1648 ****
   option cdecp5 add cdecp5
   option cdecp6 add cdecp6
   option cdecp7 add cdecp7
!  isa quirk_no_asmcpu quirk_vlldm
   costs v7m
  end cpu cortex-m52
  
--- 1642,1648 ----
   option cdecp5 add cdecp5
   option cdecp6 add cdecp6
   option cdecp7 add cdecp7
!  isa quirk_no_asmcpu
   costs v7m
  end cpu cortex-m52
  
*************** begin cpu star-mc1
*** 1685,1690 ****
--- 1685,1711 ----
   costs v7m
  end cpu star-mc1
  
+ begin cpu star-mc3
+  cname starmc3
+  tune flags LDSCHED
+  architecture armv8.1-m.main+pacbti+mve.fp+fp.dp
+  option nopacbti remove pacbti
+  option nomve.fp remove mve_float
+  option nomve remove mve mve_float
+  option nofp remove ALL_FP mve_float
+  option nodsp remove MVE mve_float
+  option cdecp0 add cdecp0
+  option cdecp1 add cdecp1
+  option cdecp2 add cdecp2
+  option cdecp3 add cdecp3
+  option cdecp4 add cdecp4
+  option cdecp5 add cdecp5
+  option cdecp6 add cdecp6
+  option cdecp7 add cdecp7
+  isa quirk_no_asmcpu
+  costs v7m
+ end cpu star-mc3
+ 
  begin cpu cortex-m85
   cname cortexm85
   tune flags LDSCHED
diff -Nrcpad gcc-17-20260607/gcc/config/arm/arm-tables.opt gcc-17-20260614/gcc/config/arm/arm-tables.opt
*** gcc-17-20260607/gcc/config/arm/arm-tables.opt	Sun Jun  7 22:32:18 2026
--- gcc-17-20260614/gcc/config/arm/arm-tables.opt	Sun Jun 14 22:32:20 2026
*************** EnumValue
*** 286,291 ****
--- 286,294 ----
  Enum(processor_type) String(star-mc1) Value( TARGET_CPU_starmc1)
  
  EnumValue
+ Enum(processor_type) String(star-mc3) Value( TARGET_CPU_starmc3)
+ 
+ EnumValue
  Enum(processor_type) String(cortex-m85) Value( TARGET_CPU_cortexm85)
  
  EnumValue
diff -Nrcpad gcc-17-20260607/gcc/config/arm/arm-tune.md gcc-17-20260614/gcc/config/arm/arm-tune.md
*** gcc-17-20260607/gcc/config/arm/arm-tune.md	Sun Jun  7 22:32:18 2026
--- gcc-17-20260614/gcc/config/arm/arm-tune.md	Sun Jun 14 22:32:20 2026
***************
*** 50,54 ****
  	cortexa76cortexa55,neoversev1,neoversen2,
  	cortexm23,cortexm33,cortexm35p,
  	cortexm52,cortexm55,starmc1,
! 	cortexm85,cortexr52,cortexr52plus"
  	(const (symbol_ref "((enum attr_tune) arm_tune)")))
--- 50,55 ----
  	cortexa76cortexa55,neoversev1,neoversen2,
  	cortexm23,cortexm33,cortexm35p,
  	cortexm52,cortexm55,starmc1,
! 	starmc3,cortexm85,cortexr52,
! 	cortexr52plus"
  	(const (symbol_ref "((enum attr_tune) arm_tune)")))
diff -Nrcpad gcc-17-20260607/gcc/config/arm/arm.cc gcc-17-20260614/gcc/config/arm/arm.cc
*** gcc-17-20260607/gcc/config/arm/arm.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/arm/arm.cc	Sun Jun 14 22:32:07 2026
*************** thumb1_final_prescan_insn (rtx_insn *ins
*** 26834,26840 ****
      asm_fprintf (asm_out_file, "%@ 0x%04x\n",
  		 INSN_ADDRESSES (INSN_UID (insn)));
    /* Don't overwrite the previous setter when we get to a cbranch.  */
!   if (INSN_CODE (insn) != CODE_FOR_cbranchsi4_insn)
      {
        enum attr_conds conds;
  
--- 26834,26841 ----
      asm_fprintf (asm_out_file, "%@ 0x%04x\n",
  		 INSN_ADDRESSES (INSN_UID (insn)));
    /* Don't overwrite the previous setter when we get to a cbranch.  */
!   if (INSN_CODE (insn) != CODE_FOR_cbranchsi4_insn
!       && INSN_CODE (insn) != CODE_FOR_thumb1_cbz)
      {
        enum attr_conds conds;
  
diff -Nrcpad gcc-17-20260607/gcc/config/arm/thumb1.md gcc-17-20260614/gcc/config/arm/thumb1.md
*** gcc-17-20260607/gcc/config/arm/thumb1.md	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/arm/thumb1.md	Sun Jun 14 22:32:07 2026
***************
*** 1120,1126 ****
        if (t != NULL_RTX)
  	{
  	  if (!rtx_equal_p (cfun->machine->thumb1_cc_op0, operands[1])
! 	      || !rtx_equal_p (cfun->machine->thumb1_cc_op1, operands[2]))
  	    t = NULL_RTX;
  	  if (cfun->machine->thumb1_cc_mode == CC_NZmode)
  	    {
--- 1120,1126 ----
        if (t != NULL_RTX)
  	{
  	  if (!rtx_equal_p (cfun->machine->thumb1_cc_op0, operands[1])
! 	      || !rtx_equal_p (cfun->machine->thumb1_cc_op1, const0_rtx))
  	    t = NULL_RTX;
  	  if (cfun->machine->thumb1_cc_mode == CC_NZmode)
  	    {
***************
*** 1135,1141 ****
  	  output_asm_insn ("cmp\t%1, #0", operands);
  	  cfun->machine->thumb1_cc_insn = insn;
  	  cfun->machine->thumb1_cc_op0 = operands[1];
! 	  cfun->machine->thumb1_cc_op1 = operands[2];
  	  cfun->machine->thumb1_cc_mode = CCmode;
  	}
        else
--- 1135,1141 ----
  	  output_asm_insn ("cmp\t%1, #0", operands);
  	  cfun->machine->thumb1_cc_insn = insn;
  	  cfun->machine->thumb1_cc_op0 = operands[1];
! 	  cfun->machine->thumb1_cc_op1 = const0_rtx;
  	  cfun->machine->thumb1_cc_mode = CCmode;
  	}
        else
diff -Nrcpad gcc-17-20260607/gcc/config/avr/avr-c.cc gcc-17-20260614/gcc/config/avr/avr-c.cc
*** gcc-17-20260607/gcc/config/avr/avr-c.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/avr/avr-c.cc	Sun Jun 14 22:32:07 2026
*************** avr_cpu_cpp_builtins (cpp_reader *pfile)
*** 516,523 ****
    /* Define builtin macros so that the user can easily query whether
       non-generic address spaces (and which) are supported or not.
       This is only supported for C.  For C++, a language extension is needed
!      (as mentioned in ISO/IEC DTR 18037; Annex F.2) which is not
!      implemented in GCC up to now.  */
  
    if (lang_GNU_C ())
      {
--- 516,523 ----
    /* Define builtin macros so that the user can easily query whether
       non-generic address spaces (and which) are supported or not.
       This is only supported for C.  For C++, a language extension is needed
!      (as mentioned in ISO/IEC DTR 18037; Annex F.2) which is not implemented
!      in GCC up to now, but see PR69549.  */
  
    if (lang_GNU_C ())
      {
diff -Nrcpad gcc-17-20260607/gcc/config/avr/avr-fixed.md gcc-17-20260614/gcc/config/avr/avr-fixed.md
*** gcc-17-20260607/gcc/config/avr/avr-fixed.md	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/avr/avr-fixed.md	Sun Jun 14 22:32:07 2026
***************
*** 106,112 ****
  ;; Fixme:  It would be nice if we could expand the 32-bit versions to a
  ;;    transparent libgcc call if $2 is a REG.  Problem is that it is
  ;;    not possible to describe that addition is commutative.
! ;;    And defining register classes/constraintrs for the involved hard
  ;;    registers and let IRA do the work, yields inacceptable bloated code.
  ;;    Thus, we have to live with the up to 11 instructions that are output
  ;;    for these 32-bit saturated operations.
--- 106,112 ----
  ;; Fixme:  It would be nice if we could expand the 32-bit versions to a
  ;;    transparent libgcc call if $2 is a REG.  Problem is that it is
  ;;    not possible to describe that addition is commutative.
! ;;    And defining register classes/constraints for the involved hard
  ;;    registers and let IRA do the work, yields inacceptable bloated code.
  ;;    Thus, we have to live with the up to 11 instructions that are output
  ;;    for these 32-bit saturated operations.
***************
*** 164,170 ****
  ;; Fixme: This will always result in 0.  Dunno why simplify-rtx.cc says
  ;;   "unknown" on how to optimize this.  libgcc call would be in order,
  ;;   but the performance is *PLAIN* *HORROR* because the optimizers don't
! ;;   manage to optimize out MEMCPY that's sprincled all over fixed-bit.c  */
  
  (define_expand "usneg<mode>2"
    [(parallel [(match_operand:ALL124U 0 "register_operand" "")
--- 164,170 ----
  ;; Fixme: This will always result in 0.  Dunno why simplify-rtx.cc says
  ;;   "unknown" on how to optimize this.  libgcc call would be in order,
  ;;   but the performance is *PLAIN* *HORROR* because the optimizers don't
! ;;   manage to optimize out MEMCPY that's sprinkled all over fixed-bit.c  */
  
  (define_expand "usneg<mode>2"
    [(parallel [(match_operand:ALL124U 0 "register_operand" "")
***************
*** 633,639 ****
    })
  
  ;; Expand rounding with known rounding points inline so that the addend / mask
! ;; will be consumed by operation with immediate operands and there is no
  ;; need for a shift with variable offset.
  
  ;; "roundqq3_const"  "rounduqq3_const"
--- 633,639 ----
    })
  
  ;; Expand rounding with known rounding points inline so that the addend / mask
! ;; will be consumed by operation with immediate operands, and there is no
  ;; need for a shift with variable offset.
  
  ;; "roundqq3_const"  "rounduqq3_const"
diff -Nrcpad gcc-17-20260607/gcc/config/avr/avr-passes-fuse-move.h gcc-17-20260614/gcc/config/avr/avr-passes-fuse-move.h
*** gcc-17-20260607/gcc/config/avr/avr-passes-fuse-move.h	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/avr/avr-passes-fuse-move.h	Sun Jun 14 22:32:07 2026
*************** struct ply_t
*** 517,523 ****
      return memo.value (regno, size);
    }
  
!   // Helper for dump_plys:  Value of 1st source arg provided it is a register.
    int src1_value (const memento_t &memo) const
    {
      int rsrc = regno;
--- 517,523 ----
      return memo.value (regno, size);
    }
  
!   // Helper for dump_plys:  Value of 1st source arg, provided it is a register.
    int src1_value (const memento_t &memo) const
    {
      int rsrc = regno;
*************** struct ply_t
*** 718,724 ****
  }; // ply_t
  
  
! // A set of ply_t's.  We prefer std:array (with some expected upper
  // bound for the number of ply_t's as generated by bbinfo_t::get_plies())
  // over std::vector.  That way, all plies_t are only allocated once as
  // elements of avr_pass_fuse_move::BInfo.
--- 718,724 ----
  }; // ply_t
  
  
! // A set of ply_t's.  We prefer std::array (with some expected upper
  // bound for the number of ply_t's as generated by bbinfo_t::get_plies())
  // over std::vector.  That way, all plies_t are only allocated once as
  // elements of avr_pass_fuse_move::BInfo.
diff -Nrcpad gcc-17-20260607/gcc/config/avr/avr-passes.cc gcc-17-20260614/gcc/config/avr/avr-passes.cc
*** gcc-17-20260607/gcc/config/avr/avr-passes.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/avr/avr-passes.cc	Sun Jun 14 22:32:07 2026
*************** single_set_with_scratch (rtx_insn *insn,
*** 151,157 ****
  using gprmask_t = uint32_t;
  
  // True when this is a valid GPR number for ordinary code, e.g.
! // registers wider than 2 bytes have to start at an exven regno.
  // TMP_REG and ZERO_REG are not considered valid, even though
  // the C source can use register vars with them.
  static inline bool
--- 151,157 ----
  using gprmask_t = uint32_t;
  
  // True when this is a valid GPR number for ordinary code, e.g.
! // registers wider than 2 bytes have to start at an even regno.
  // TMP_REG and ZERO_REG are not considered valid, even though
  // the C source can use register vars with them.
  static inline bool
*************** public:
*** 1251,1257 ****
  
  // Append PLY to .plies[].  A SET or BLD ply may start a new sequence of
  // SETs or BLDs and gets assigned the overhead of the sequence like for an
! // initial SET or CLT instruction.  A SET ply my be added in two flavours:
  // One that starts a sequence of single_sets, and one that represents the
  // payload of a set_some insn.  MEMO is the GPR state prior to PLY.
  void
--- 1251,1257 ----
  
  // Append PLY to .plies[].  A SET or BLD ply may start a new sequence of
  // SETs or BLDs and gets assigned the overhead of the sequence like for an
! // initial SET or CLT instruction.  A SET ply may be added in two flavors:
  // One that starts a sequence of single_sets, and one that represents the
  // payload of a set_some insn.  MEMO is the GPR state prior to PLY.
  void
*************** plies_t::add (ply_t ply, const ply_t *pr
*** 1262,1268 ****
      {
        if (prev && prev->code == SET)
  	{
! 	  // Proceed with the SET sequence flavour.
  	  ply.in_set_some = prev->in_set_some;
  
  	  if (ply.in_set_some)
--- 1262,1268 ----
      {
        if (prev && prev->code == SET)
  	{
! 	  // Proceed with the SET sequence flavor.
  	  ply.in_set_some = prev->in_set_some;
  
  	  if (ply.in_set_some)
*************** plies_t::emit_sets (const insninfo_t &ii
*** 1579,1585 ****
  
  // Try to find an operation such that  Y = op (X).
  // Shifts and rotates are regarded as unary operations with
! // an implied 2nd operand or 1 or 4, respectively.
  static rtx_code
  find_arith (uint8_t y, uint8_t x)
  {
--- 1579,1585 ----
  
  // Try to find an operation such that  Y = op (X).
  // Shifts and rotates are regarded as unary operations with
! // an implied 2nd operand of 1 or 4, respectively.
  static rtx_code
  find_arith (uint8_t y, uint8_t x)
  {
*************** bbinfo_t::find_plies (int len, const ins
*** 2471,2478 ****
  }
  
  
! // Run .find_plies() and return true when .fpd->solution is a sequence of ply_t's
! // that represents II, a REG = CONST insn.  MEMO is the GPR state prior to II.
  bool
  bbinfo_t::run_find_plies (const insninfo_t &ii, const memento_t &memo) const
  {
--- 2471,2479 ----
  }
  
  
! // Run .find_plies() and return true when .fpd->solution is a sequence
! // of ply_t's that represents II, a REG = CONST insn.  MEMO is the
! // GPR state prior to II.
  bool
  bbinfo_t::run_find_plies (const insninfo_t &ii, const memento_t &memo) const
  {
*************** avr_is_casesi_sequence (basic_block bb,
*** 3991,3997 ****
  
    /* We have to deal with quite some operands.  Extracting them by hand
       would be tedious, therefore wrap the insn patterns into a parallel,
!      run recog against it and then use insn extract to get the operands. */
  
    rtx_insn *xinsn = avr_parallel_insn_from_insns (insns);
  
--- 3992,3998 ----
  
    /* We have to deal with quite some operands.  Extracting them by hand
       would be tedious, therefore wrap the insn patterns into a parallel,
!      run recog against it, and then use insn extract to get the operands. */
  
    rtx_insn *xinsn = avr_parallel_insn_from_insns (insns);
  
*************** avr_optimize_casesi (rtx_insn *insns[5],
*** 4078,4084 ****
    // makes no sense to have case values outside the mode range.  Notice
    // that case labels which are unreachable because they are outside the
    // mode of the switch value (e.g. "case -1" for uint8_t) have already
!   // been thrown away by the middle-end.
  
    if (SIGN_EXTEND == code
        && low_idx >= imin
--- 4079,4085 ----
    // makes no sense to have case values outside the mode range.  Notice
    // that case labels which are unreachable because they are outside the
    // mode of the switch value (e.g. "case -1" for uint8_t) have already
!   // been thrown away by the middle end.
  
    if (SIGN_EXTEND == code
        && low_idx >= imin
*************** public:
*** 4273,4279 ****
    }
  
    // Cloning is required because we are running one instance of the pass
!   // before peephole2. and a second one after cprop_hardreg.
    opt_pass * clone () final override
    {
      return make_avr_pass_fuse_add (m_ctxt);
--- 4274,4280 ----
    }
  
    // Cloning is required because we are running one instance of the pass
!   // before peephole2, and a second one after cprop_hardreg.
    opt_pass * clone () final override
    {
      return make_avr_pass_fuse_add (m_ctxt);
*************** avr_pass_fuse_add::fuse_mem_add (Mem_Ins
*** 4757,4763 ****
    return next;
  }
  
! /* Try to post-reload combine PLUS with CONST_INt of pointer registers with:
     - Sets to a constant address.
     - PLUS insn of that kind.
     - Indirect loads and stores.
--- 4758,4764 ----
    return next;
  }
  
! /* Try to post-reload combine PLUS with CONST_INT of pointer registers with:
     - Sets to a constant address.
     - PLUS insn of that kind.
     - Indirect loads and stores.
diff -Nrcpad gcc-17-20260607/gcc/config/avr/avr.cc gcc-17-20260614/gcc/config/avr/avr.cc
*** gcc-17-20260607/gcc/config/avr/avr.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/avr/avr.cc	Sun Jun 14 22:32:07 2026
*************** bool avr_need_clear_bss_p = false;
*** 249,255 ****
  bool avr_need_copy_data_p = false;
  bool avr_has_rodata_p = false;
  
! /* Counts how often pass avr-fuse-add has been executed.  Is is kept in
     sync with cfun->machine->n_avr_fuse_add_executed and serves as an
     insn condition for shift insn splitters.  */
  int n_avr_fuse_add_executed = 0;
--- 249,255 ----
  bool avr_need_copy_data_p = false;
  bool avr_has_rodata_p = false;
  
! /* Counts how often pass avr-fuse-add has been executed.  It is kept in
     sync with cfun->machine->n_avr_fuse_add_executed and serves as an
     insn condition for shift insn splitters.  */
  int n_avr_fuse_add_executed = 0;
*************** static_assert (8 * sizeof (decltype (sec
*** 286,292 ****
  	       "section_common::flags is too narrow");
  
  
! /* Transform UP into lowercase and write the result to LO.
     You must provide enough space for LO.  Return LO.  */
  
  static char *
--- 286,292 ----
  	       "section_common::flags is too narrow");
  
  
! /* Transform UP to lowercase and write the result to LO.
     You must provide enough space for LO.  Return LO.  */
  
  static char *
*************** avr_option_override (void)
*** 575,581 ****
      flag_delete_null_pointer_checks = 0;
  
    /* PR ipa/92606: Inter-procedural analysis optimizes data across
!      address-spaces and PROGMEM.  As of v14, the PROGMEM part is
       still not fixed (and there is still no target hook as proposed
       in PR92932).  Just disable respective bogus optimization.  */
    flag_ipa_icf_variables = 0;
--- 575,581 ----
      flag_delete_null_pointer_checks = 0;
  
    /* PR ipa/92606: Inter-procedural analysis optimizes data across
!      address-spaces and PROGMEM.  As of GCC 16, the PROGMEM part is
       still not fixed (and there is still no target hook as proposed
       in PR92932).  Just disable respective bogus optimization.  */
    flag_ipa_icf_variables = 0;
*************** avr_noblock_function_p (tree func)
*** 894,900 ****
  }
  
  /* Return 1 if FUNC is a function that has a "ATTR_NAME" attribute
!    (and perhaps also "ATTR_NAME(num)" attributes.  Return -1 if FUNC has
     "ATTR_NAME(num)" attribute(s) but no "ATTR_NAME" attribute.
     When no form of ATTR_NAME is present, return 0.  */
  
--- 894,900 ----
  }
  
  /* Return 1 if FUNC is a function that has a "ATTR_NAME" attribute
!    (and perhaps also "ATTR_NAME(num)" attributes).  Return -1 if FUNC has
     "ATTR_NAME(num)" attribute(s) but no "ATTR_NAME" attribute.
     When no form of ATTR_NAME is present, return 0.  */
  
*************** avr_interrupt_signal_function (tree func
*** 918,924 ****
  
  
  /* Return 1 if FUNC is an interrupt function that has an "interrupt" attribute
!    (and perhaps also "interrupt(num)" attributes.  Return -1 if FUNC has
     "interrupt(num)" attribute(s) but no "interrupt" attribute.  */
  
  static int
--- 918,924 ----
  
  
  /* Return 1 if FUNC is an interrupt function that has an "interrupt" attribute
!    (and perhaps also "interrupt(num)" attributes).  Return -1 if FUNC has
     "interrupt(num)" attribute(s) but no "interrupt" attribute.  */
  
  static int
*************** avr_interrupt_function (tree func)
*** 929,935 ****
  
  
  /* Return 1 if FUNC is a signal function that has a "signal" attribute
!    (and perhaps also "signal(num)" attributes.  Return -1 if FUNC has
     "signal(num)" attribute(s) but no "signal" attribute.  */
  
  static int
--- 929,935 ----
  
  
  /* Return 1 if FUNC is a signal function that has a "signal" attribute
!    (and perhaps also "signal(num)" attributes).  Return -1 if FUNC has
     "signal(num)" attribute(s) but no "signal" attribute.  */
  
  static int
*************** avr_no_gccisr_function_p (tree func)
*** 968,974 ****
  
  
  /* Implement `TARGET_CAN_INLINE_P'.  */
! /* Some options like -mgas_isr_prologues depend on optimization level,
     and the inliner might think that due to different options, inlining
     is not permitted; see PR104327.  */
  
--- 968,974 ----
  
  
  /* Implement `TARGET_CAN_INLINE_P'.  */
! /* Some options like -mgas-isr-prologues depend on optimization level,
     and the inliner might think that due to different options, inlining
     is not permitted; see PR104327.  */
  
*************** avr_cond_string (rtx_code code, bool cc_
*** 2534,2540 ****
  
  
  /* Return true if rtx X is a CONST or SYMBOL_REF with progmem.
!    This must be used for AVR_TINY only because on other cores
     the flash memory is not visible in the RAM address range and
     cannot be read by, say,  LD instruction.  */
  
--- 2534,2540 ----
  
  
  /* Return true if rtx X is a CONST or SYMBOL_REF with progmem.
!    This must be used for AVR_TINY only, because on other cores
     the flash memory is not visible in the RAM address range and
     cannot be read by, say,  LD instruction.  */
  
*************** avr_print_operand (FILE *file, rtx x, in
*** 2852,2858 ****
  	      fprintf (stderr, "\n");
  	    }
  	}
!       /* Use normal symbol for direct address no linker trampoline needed */
        output_addr_const (file, x);
      }
    else if (CONST_FIXED_P (x))
--- 2852,2858 ----
  	      fprintf (stderr, "\n");
  	    }
  	}
!       /* Use normal symbol for direct address, no linker trampoline needed */
        output_addr_const (file, x);
      }
    else if (CONST_FIXED_P (x))
*************** avr_print_operand (FILE *file, rtx x, in
*** 2893,2899 ****
  
  
  /* Implement `TARGET_USE_BY_PIECES_INFRASTRUCTURE_P'.  */
! /* Prefer sequence of loads/stores for moves of size upto
     two - two pairs of load/store instructions are always better
     than the 5 instruction sequence for a loop (1 instruction
     for loop counter setup, and 4 for the body of the loop). */
--- 2893,2899 ----
  
  
  /* Implement `TARGET_USE_BY_PIECES_INFRASTRUCTURE_P'.  */
! /* Prefer sequence of loads/stores for moves of size up to
     two - two pairs of load/store instructions are always better
     than the 5 instruction sequence for a loop (1 instruction
     for loop counter setup, and 4 for the body of the loop). */
*************** avr_out_fload (rtx_insn * /*insn*/, rtx
*** 3952,3958 ****
     LEN == NULL: output instructions.
     LEN != NULL: set *LEN to the length of the instruction sequence
  		(in words) printed with LEN = NULL.
!    If CLEAR_P is true, OP[0] had been cleard to Zero already.
     If CLEAR_P is false, nothing is known about OP[0].
  
     The effect on cc0 is as follows:
--- 3952,3958 ----
     LEN == NULL: output instructions.
     LEN != NULL: set *LEN to the length of the instruction sequence
  		(in words) printed with LEN = NULL.
!    If CLEAR_P is true, OP[0] has already been cleard to Zero.
     If CLEAR_P is false, nothing is known about OP[0].
  
     The effect on cc0 is as follows:
*************** output_reload_in_const (rtx *op, rtx clo
*** 4126,4133 ****
  	  continue;
  	}
  
!       /* Use T flag or INC to manage powers of 2 if we have
! 	 no clobber reg.  */
  
        if (NULL_RTX == clobber_reg
  	  && single_one_operand (xval, QImode))
--- 4126,4132 ----
  	  continue;
  	}
  
!       /* Use T flag or INC for powers of 2 if we have no clobber reg.  */
  
        if (NULL_RTX == clobber_reg
  	  && single_one_operand (xval, QImode))
*************** out_movhi_r_mr (rtx_insn *insn, rtx op[]
*** 4575,4582 ****
  	}
  
        /* This is a paranoid case. LEGITIMIZE_RELOAD_ADDRESS must exclude
! 	 it but I have this situation with extremal
! 	 optimization options.  */
  
        if (reg_base == REG_X)
  	{
--- 4574,4580 ----
  	}
  
        /* This is a paranoid case. LEGITIMIZE_RELOAD_ADDRESS must exclude
! 	 it but I have this situation with extremal optimization options.  */
  
        if (reg_base == REG_X)
  	{
*************** out_movhi_mr_r (rtx_insn *insn, rtx op[]
*** 6014,6020 ****
  
    /* "volatile" forces writing high-byte first (no-xmega) resp.
       low-byte first (xmega) even if less efficient, for correct
!      operation with 16-bit I/O registers like.  */
  
    if (AVR_XMEGA)
      return avr_out_movhi_mr_r_xmega (insn, op, plen);
--- 6012,6018 ----
  
    /* "volatile" forces writing high-byte first (no-xmega) resp.
       low-byte first (xmega) even if less efficient, for correct
!      operation with 16-bit I/O registers.  */
  
    if (AVR_XMEGA)
      return avr_out_movhi_mr_r_xmega (insn, op, plen);
*************** avr_out_set_some (rtx_insn *insn, rtx *x
*** 6250,6256 ****
     [2] is the regno of a GPR, and
     [3] is the mode size of that GPR.  All SETs [5]... of PARA will set
         bytes of that GPR, but in many cases not all of them.
!    [4]  In a clobber of REG_CC.
     [5] [6] [7] [8]  SETs of an 8-bit register to a const_int value, where
         all destinations are sub-bytes of [2].  Element [5] is mandatory,
         and the following elements are optional.  */
--- 6248,6254 ----
     [2] is the regno of a GPR, and
     [3] is the mode size of that GPR.  All SETs [5]... of PARA will set
         bytes of that GPR, but in many cases not all of them.
!    [4] is a clobber of REG_CC.
     [5] [6] [7] [8]  SETs of an 8-bit register to a const_int value, where
         all destinations are sub-bytes of [2].  Element [5] is mandatory,
         and the following elements are optional.  */
*************** avr_frame_pointer_required_p (void)
*** 6300,6306 ****
  
  
  /* Returns the condition of the branch following INSN, where INSN is some
!    comparison.  If the next insn is not a branch or the condition code set
     by INSN might be used by more insns than the next one, return UNKNOWN.
     For now, just look at the next insn, which misses some opportunities like
     following jumps.  */
--- 6298,6304 ----
  
  
  /* Returns the condition of the branch following INSN, where INSN is some
!    comparison.  If the next insn is not a branch, or the condition code set
     by INSN might be used by more insns than the next one, return UNKNOWN.
     For now, just look at the next insn, which misses some opportunities like
     following jumps.  */
*************** avr_out_add_msb (rtx_insn *insn, rtx *yo
*** 8821,8829 ****
  
        XOP[0] = XOP[0] +/- XOP[2]
  
!    If PLEN == NULL, print assembler instructions to perform the operation;
!    otherwise, set *PLEN to the length of the instruction sequence (in words)
!    printed with PLEN == NULL.  XOP[3] is an 8-bit scratch register or NULL_RTX.
  
     CODE_SAT == UNKNOWN: Perform ordinary, non-saturating operation.
     CODE_SAT != UNKNOWN: Perform operation and saturate according to CODE_SAT.
--- 8819,8827 ----
  
        XOP[0] = XOP[0] +/- XOP[2]
  
!    XOP[3] is an 8-bit scratch register or NULL_RTX.
!    If PLEN == NULL output the instructions.
!    If PLEN != NULL set *PLEN to the length of the sequence in words.
  
     CODE_SAT == UNKNOWN: Perform ordinary, non-saturating operation.
     CODE_SAT != UNKNOWN: Perform operation and saturate according to CODE_SAT.
*************** avr_out_plus_1 (rtx xinsn, rtx *xop, int
*** 9313,9319 ****
        XOP[0] = XOP[0] +/- XOP[2]
  
     This is a helper for the function below.  The only insns that need this
!    are additions/subtraction for pointer modes, i.e. HImode and PSImode.  */
  
  static const char *
  avr_out_plus_symbol (rtx *xop, rtx_code code, int *plen)
--- 9311,9317 ----
        XOP[0] = XOP[0] +/- XOP[2]
  
     This is a helper for the function below.  The only insns that need this
!    are additions/subtractions for pointer modes, i.e. HImode and PSImode.  */
  
  static const char *
  avr_out_plus_symbol (rtx *xop, rtx_code code, int *plen)
*************** avr_len_op8_set_ZN (rtx_code code, rtx *
*** 9718,9733 ****
  }
  
  
! /* Output bit operation (IOR, AND, XOR) with register XOP[0] and compile
!    time constant XOP[2]:
  
        XOP[0] = XOP[0] <op> XOP[2]
  
!    and return "".  If PLEN == NULL, print assembler instructions to perform the
!    operation; otherwise, set *PLEN to the length of the instruction sequence
!    (in words) printed with PLEN == NULL.  XOP[3] is either an 8-bit clobber
!    register or SCRATCH if no clobber register is needed for the operation.
!    XINSN is an INSN_P or a pattern of an insn.  */
  
  const char *
  avr_out_bitop (rtx xinsn, rtx *xop, int *plen)
--- 9716,9731 ----
  }
  
  
! /* Output bit operation (IOR, AND, XOR) with register XOP[0] and compile-time
!    constant XOP[2]:
  
        XOP[0] = XOP[0] <op> XOP[2]
  
!    XOP[3] is either an 8-bit clobber register or SCRATCH if no clobber
!    register is needed for the operation  XINSN is an INSN_P or a pattern
!    of an insn.  Return "".
!    If PLEN == NULL output the instructions.
!    If PLEN != NULL set *PLEN to the length of the sequence in words.  */
  
  const char *
  avr_out_bitop (rtx xinsn, rtx *xop, int *plen)
*************** avr_emit_xior_with_shift (rtx_insn *insn
*** 9931,9939 ****
  
  
  /* Output sign extension from XOP[1] to XOP[0] and return "".
!    If PLEN == NULL, print assembler instructions to perform the operation;
!    otherwise, set *PLEN to the length of the instruction sequence (in words)
!    as printed with PLEN == NULL.  */
  
  const char *
  avr_out_sign_extend (rtx_insn *insn, rtx *xop, int *plen)
--- 9929,9936 ----
  
  
  /* Output sign extension from XOP[1] to XOP[0] and return "".
!    If PLEN == NULL output the instructions.
!    If PLEN != NULL set *PLEN to the length of the sequence in words.  */
  
  const char *
  avr_out_sign_extend (rtx_insn *insn, rtx *xop, int *plen)
*************** avr_out_extr_not (rtx_insn * /* insn */,
*** 10386,10400 ****
  }
  
  
! /* Outputs instructions needed for fixed point type conversion.
!    This includes converting between any fixed point type, as well
     as converting to any integer type.  Conversion between integer
     types is not supported.
  
     Converting signed fractional types requires a bit shift if converting
     to or from any unsigned fractional type because the decimal place is
     shifted by 1 bit.  When the destination is a signed fractional, the sign
!    is stored in either the carry or T bit.  */
  
  const char *
  avr_out_fract (rtx_insn *insn, rtx operands[], bool intsigned, int *plen)
--- 10383,10397 ----
  }
  
  
! /* Outputs instructions needed for fixed-point type conversion.
!    This includes converting between any fixed-point type, as well
     as converting to any integer type.  Conversion between integer
     types is not supported.
  
     Converting signed fractional types requires a bit shift if converting
     to or from any unsigned fractional type because the decimal place is
     shifted by 1 bit.  When the destination is a signed fractional, the sign
!    is stored in either the carry or the T bit.  */
  
  const char *
  avr_out_fract (rtx_insn *insn, rtx operands[], bool intsigned, int *plen)
*************** avr_out_fract (rtx_insn *insn, rtx opera
*** 10541,10547 ****
  	{
  	  avr_asm_len ("clr __tmp_reg__" CR_TAB
  		       "sbrc %1,0"       CR_TAB
! 		       "dec __tmp_reg__", xop, plen, 1);
  	  sn = src.regno;
  	  if (sn < s0)
  	    {
--- 10538,10544 ----
  	{
  	  avr_asm_len ("clr __tmp_reg__" CR_TAB
  		       "sbrc %1,0"       CR_TAB
! 		       "dec __tmp_reg__", xop, plen, 3);
  	  sn = src.regno;
  	  if (sn < s0)
  	    {
*************** avr_out_fract (rtx_insn *insn, rtx opera
*** 10556,10562 ****
  	    avr_asm_len ("clt"                CR_TAB
  			 "bld __tmp_reg__,7"  CR_TAB
  			 "adc %0,__tmp_reg__",
! 			 &all_regs_rtx[s0], plen, 1);
  	  else
  	    avr_asm_len ("lsr __tmp_reg" CR_TAB
  			 "add %0,__tmp_reg__",
--- 10553,10559 ----
  	    avr_asm_len ("clt"                CR_TAB
  			 "bld __tmp_reg__,7"  CR_TAB
  			 "adc %0,__tmp_reg__",
! 			 &all_regs_rtx[s0], plen, 3);
  	  else
  	    avr_asm_len ("lsr __tmp_reg" CR_TAB
  			 "add %0,__tmp_reg__",
*************** avr_out_fract (rtx_insn *insn, rtx opera
*** 10755,10762 ****
  	  xop[2] = all_regs_rtx[s0];
  	  if (!lsb_in_tmp_reg && !MAY_CLOBBER (s0))
  	    avr_asm_len ("mov __tmp_reg__,%2", xop, plen, 1);
! 	  avr_asm_len ("tst %0" CR_TAB "brpl 0f",
! 		       &all_regs_rtx[src.regno_msb], plen, 2);
  	  if (!lsb_in_tmp_reg)
  	    {
  	      unsigned sn = src.regno;
--- 10752,10759 ----
  	  xop[2] = all_regs_rtx[s0];
  	  if (!lsb_in_tmp_reg && !MAY_CLOBBER (s0))
  	    avr_asm_len ("mov __tmp_reg__,%2", xop, plen, 1);
! 	  avr_asm_len ("tst %0" CR_TAB
! 		       "brpl 0f", &all_regs_rtx[src.regno_msb], plen, 2);
  	  if (!lsb_in_tmp_reg)
  	    {
  	      unsigned sn = src.regno;
*************** avr_out_round (rtx_insn * /*insn*/, rtx
*** 10984,10990 ****
  }
  
  
! /* Create RTL split patterns for byte sized rotate expressions.  This
     produces a series of move instructions and considers overlap situations.
     Overlapping non-HImode operands need a scratch register.  */
  
--- 10981,10987 ----
  }
  
  
! /* Create RTL split patterns for byte-sized rotate expressions.  This
     produces a series of move instructions and considers overlap situations.
     Overlapping non-HImode operands need a scratch register.  */
  
*************** avr_read_number (const char *start, cons
*** 11149,11155 ****
     TPL is the asm template, N_XOP the number of operands, or -1 when the
     asm has no operands (not even zero operands).  XOP[] are these operands.
     LOC is the location of the asm, and DEFAULT_LEN is the code length
!    in words as determined by the middle-end from the number of logical and
     physical line breaks in TPL.
  
     When an invalid %-reference or an unrecognized [[len=... is found,
--- 11146,11152 ----
     TPL is the asm template, N_XOP the number of operands, or -1 when the
     asm has no operands (not even zero operands).  XOP[] are these operands.
     LOC is the location of the asm, and DEFAULT_LEN is the code length
!    in words as determined by the middle end from the number of logical and
     physical line breaks in TPL.
  
     When an invalid %-reference or an unrecognized [[len=... is found,
*************** avr_read_number (const char *start, cons
*** 11164,11170 ****
  	Specifies a non-negative decimal integer.
  
     <words> = %[0-9]+
!    <words> = %[<name>]   # Already resolved to %[0-9]+ by the middle-end.
  	Refers to the respective asm operand, which must be CONST_INT.
  
     <words> = lds
--- 11161,11167 ----
  	Specifies a non-negative decimal integer.
  
     <words> = %[0-9]+
!    <words> = %[<name>]   # Already resolved to %[0-9]+ by the middle end.
  	Refers to the respective asm operand, which must be CONST_INT.
  
     <words> = lds
*************** avr_length_of_asm (rtx_insn *insn, int d
*** 11238,11244 ****
  	       || n_xop >= 0)
  	{
  	  // A plain decimal number <num>, or %<num> to refer to the
! 	  // <num>-th asm operand.  Notice that the middle-end has already
  	  // resolved named operand references like %[name] to the respective
  	  // operand number (provided such a named operand exists).
  	  pos += percent_p;
--- 11235,11241 ----
  	       || n_xop >= 0)
  	{
  	  // A plain decimal number <num>, or %<num> to refer to the
! 	  // <num>-th asm operand.  Notice that the middle end has already
  	  // resolved named operand references like %[name] to the respective
  	  // operand number (provided such a named operand exists).
  	  pos += percent_p;
*************** avr_length_of_asm (rtx_insn *insn, int d
*** 11286,11292 ****
  
  	      if (inc >= n_xop)
  		{
! 		  // For asm with >= 0 operands, the middle-end will issue
  		  // an error message.
  		  avr_dump ("\n;;; Ignored: op %d does not exist\n\n", inc);
  		  return -1;
--- 11283,11289 ----
  
  	      if (inc >= n_xop)
  		{
! 		  // For asm with >= 0 operands, the middle end will issue
  		  // an error message.
  		  avr_dump ("\n;;; Ignored: op %d does not exist\n\n", inc);
  		  return -1;
*************** avr_length_of_asm (rtx_insn *insn, int d
*** 11345,11351 ****
       physical and logical line breaks.  However, almost all AVR instructions
       occupy only one 16-bit word.
  
!    LEN is the length in units of 16-bit words as determined by the middle-end.
     When no annotation has been found or a diagnostic occurred, return -1.  */
  
  static int
--- 11342,11348 ----
       physical and logical line breaks.  However, almost all AVR instructions
       occupy only one 16-bit word.
  
!    LEN is the length in units of 16-bit words as determined by the middle end.
     When no annotation has been found or a diagnostic occurred, return -1.  */
  
  static int
*************** static void
*** 12355,12361 ****
  avr_asm_named_section (const char *name, unsigned int flags, tree decl)
  {
    if (flags & AVR_SECTION_PROGMEM
!       // Only use section .progmem*.data if there is no attribute section.
        && ! (decl
  	    && DECL_SECTION_NAME (decl)
  	    && symtab_node::get (decl)
--- 12352,12358 ----
  avr_asm_named_section (const char *name, unsigned int flags, tree decl)
  {
    if (flags & AVR_SECTION_PROGMEM
!       // Only use section .progmem*.data if there is no attribute "section".
        && ! (decl
  	    && DECL_SECTION_NAME (decl)
  	    && symtab_node::get (decl)
*************** avr_encode_section_info (tree decl, rtx
*** 12544,12550 ****
  	SYMBOL_REF_FLAGS (sym) |= SYMBOL_FLAG_IO;
        /* If we have an (io) address attribute specification, but the variable
  	 is external, treat the address as only a tentative definition
! 	 to be used to determine if an io port is in the lower range, but
  	 don't use the exact value for constant propagation.  */
        if (addr_attr && !DECL_EXTERNAL (decl))
  	SYMBOL_REF_FLAGS (sym) |= SYMBOL_FLAG_ADDRESS;
--- 12541,12547 ----
  	SYMBOL_REF_FLAGS (sym) |= SYMBOL_FLAG_IO;
        /* If we have an (io) address attribute specification, but the variable
  	 is external, treat the address as only a tentative definition
! 	 to be used to determine if an I/O port is in the lower range, but
  	 don't use the exact value for constant propagation.  */
        if (addr_attr && !DECL_EXTERNAL (decl))
  	SYMBOL_REF_FLAGS (sym) |= SYMBOL_FLAG_ADDRESS;
*************** avr_file_end (void)
*** 12725,12731 ****
  
  /* Worker function for `ADJUST_REG_ALLOC_ORDER'.  */
  /* Choose the order in which to allocate hard registers for
!    pseudo-registers local to a basic block.
  
     Store the desired register order in the array `reg_alloc_order'.
     Element 0 should be the register to allocate first; element 1, the
--- 12722,12728 ----
  
  /* Worker function for `ADJUST_REG_ALLOC_ORDER'.  */
  /* Choose the order in which to allocate hard registers for
!    pseudo registers local to a basic block.
  
     Store the desired register order in the array `reg_alloc_order'.
     Element 0 should be the register to allocate first; element 1, the
*************** avr_adjust_reg_alloc_order (void)
*** 12787,12793 ****
      };
  
    /* Select specific register allocation order.
!      Tiny Core (ATtiny4/5/9/10/20/40) devices have only 16 registers,
       so different allocation order should be used.  */
  
    const int *order = (TARGET_ORDER_1 ? (AVR_TINY ? tiny_order_1 : order_1)
--- 12784,12790 ----
      };
  
    /* Select specific register allocation order.
!      AVRrc Reduced Core devices have only 16 registers,
       so different allocation order should be used.  */
  
    const int *order = (TARGET_ORDER_1 ? (AVR_TINY ? tiny_order_1 : order_1)
*************** avr_mul_highpart_cost (rtx x, int)
*** 12837,12843 ****
        // This is the wider mode.
        machine_mode mode = GET_MODE (x);
  
!       // The middle-end might still have PR81444, i.e. it is calling the cost
        // functions with strange modes.  Fix this now by also considering
        // PSImode (should actually be SImode instead).
        if (HImode == mode || PSImode == mode || SImode == mode)
--- 12834,12840 ----
        // This is the wider mode.
        machine_mode mode = GET_MODE (x);
  
!       // The middle end might still have PR81444, i.e. it is calling the cost
        // functions with strange modes.  Fix this now by also considering
        // PSImode (should actually be SImode instead).
        if (HImode == mode || PSImode == mode || SImode == mode)
*************** avr_regno_mode_code_ok_for_base_p (int r
*** 14561,14573 ****
  /* Reload the constant OP[1] into the HI register OP[0].
     CLOBBER_REG is a QI clobber reg needed to move vast majority of consts
     into a NO_LD_REGS register.  If CLOBBER_REG is NULL_RTX we either don't
!    need a clobber reg or have to cook one up.
! 
!    PLEN == NULL: Output instructions.
!    PLEN != NULL: Output nothing.  Set *PLEN to number of words occupied
! 		 by the insns printed.
! 
!    Return "".  */
  
  const char *
  output_reload_inhi (rtx *op, rtx clobber_reg, int *plen)
--- 14558,14566 ----
  /* Reload the constant OP[1] into the HI register OP[0].
     CLOBBER_REG is a QI clobber reg needed to move vast majority of consts
     into a NO_LD_REGS register.  If CLOBBER_REG is NULL_RTX we either don't
!    need a clobber reg or have to cook one up.  Return "".
!    PLEN != 0: Set *PLEN to the code length in words. Don't output anything.
!    PLEN == 0: Output instructions.  */
  
  const char *
  output_reload_inhi (rtx *op, rtx clobber_reg, int *plen)
*************** output_reload_inhi (rtx *op, rtx clobber
*** 14580,14593 ****
  /* Reload a SI or SF compile time constant OP[1] into the register OP[0].
     CLOBBER_REG is a QI clobber reg needed to move vast majority of consts
     into a NO_LD_REGS register.  If CLOBBER_REG is NULL_RTX we either don't
!    need a clobber reg or have to cook one up.
! 
!    LEN == NULL: Output instructions.
! 
!    LEN != NULL: Output nothing.  Set *LEN to number of words occupied
! 		by the insns printed.
! 
!    Return "".  */
  
  const char *
  output_reload_insisf (rtx *op, rtx clobber_reg, int *len)
--- 14573,14581 ----
  /* Reload a SI or SF compile time constant OP[1] into the register OP[0].
     CLOBBER_REG is a QI clobber reg needed to move vast majority of consts
     into a NO_LD_REGS register.  If CLOBBER_REG is NULL_RTX we either don't
!    need a clobber reg or have to cook one up.  Return "".
!    LEN != 0: Set *LEN to the code length in words. Don't output anything.
!    LEN == 0: Output instructions.  */
  
  const char *
  output_reload_insisf (rtx *op, rtx clobber_reg, int *len)
*************** avr_out_reload_inpsi (rtx *op, rtx clobb
*** 14656,14662 ****
     work as expected, cf. PR71151, and we do *NOT* want the table to be
     in .rodata, hence setting JUMP_TABLES_IN_TEXT_SECTION = 0 is of limited
     use; and setting it to 1 attributes table lengths to branch offsets...
!    Moreover, fincal.c keeps switching section before each table entry
     which we find too fragile as to rely on section caching.  */
  
  void
--- 14644,14650 ----
     work as expected, cf. PR71151, and we do *NOT* want the table to be
     in .rodata, hence setting JUMP_TABLES_IN_TEXT_SECTION = 0 is of limited
     use; and setting it to 1 attributes table lengths to branch offsets...
!    Moreover, final.cc keeps switching section before each table entry
     which we find too fragile as to rely on section caching.  */
  
  void
*************** avr_output_addr_vec (rtx_insn *labl, rtx
*** 14666,14672 ****
  
    // AVR-SD: On functional safety devices, each executed instruction must
    // be followed by a valid opcode.  This is because instruction validation
!   // runs at fetch and decode for the next instruction and while the 2-stage
    // pipeline is executing the current one.  There is no multilib option for
    // these devices, so take all multilib variants that contain AVR-SD.
    const bool maybe_sd = (AVR_HAVE_JMP_CALL
--- 14654,14660 ----
  
    // AVR-SD: On functional safety devices, each executed instruction must
    // be followed by a valid opcode.  This is because instruction validation
!   // runs at fetch-and-decode for the next instruction and while the 2-stage
    // pipeline is executing the current one.  There is no multilib option for
    // these devices, so take all multilib variants that contain AVR-SD.
    const bool maybe_sd = (AVR_HAVE_JMP_CALL
*************** avr_conditional_register_usage (void)
*** 14774,14781 ****
  	15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
        };
  
!       /* Set R0-R17 as fixed registers. Reset R0-R17 in call used register list
! 	 - R0-R15 are not available in Tiny Core devices
  	 - R16 and R17 are fixed registers.  */
  
        for (size_t i = REG_0; i <= REG_17;  i++)
--- 14762,14769 ----
  	15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
        };
  
!       /* Set R0-R17 as fixed registers. Reset R0-R17 in call-used register list
! 	 - R0-R15 are not available in Reduced Core devices
  	 - R16 and R17 are fixed registers.  */
  
        for (size_t i = REG_0; i <= REG_17;  i++)
*************** avr_conditional_register_usage (void)
*** 14784,14799 ****
  	  call_used_regs[i] = 1;
  	}
  
!       /* Set R18 to R21 as callee saved registers
! 	 - R18, R19, R20 and R21 are the callee saved registers in
! 	   Tiny Core devices  */
  
        for (size_t i = REG_18; i <= LAST_CALLEE_SAVED_REG; i++)
  	{
  	  call_used_regs[i] = 0;
  	}
  
!       /* Update register allocation order for Tiny Core devices */
  
        for (size_t i = 0; i < ARRAY_SIZE (tiny_reg_alloc_order); i++)
  	{
--- 14772,14785 ----
  	  call_used_regs[i] = 1;
  	}
  
!       /* R18 and R19 are the callee-saved registers in Reduced Core devices  */
  
        for (size_t i = REG_18; i <= LAST_CALLEE_SAVED_REG; i++)
  	{
  	  call_used_regs[i] = 0;
  	}
  
!       /* Update register allocation order for Reduced Core devices */
  
        for (size_t i = 0; i < ARRAY_SIZE (tiny_reg_alloc_order); i++)
  	{
*************** avr_return_in_memory (const_tree type, c
*** 15092,15100 ****
    HOST_WIDE_INT size = int_size_in_bytes (type);
    HOST_WIDE_INT ret_size_limit = AVR_TINY ? 4 : 8;
  
!   /* In avr, there are 8 return registers. But, for Tiny Core
!      (ATtiny4/5/9/10/20/40) devices, only 4 registers are available.
!      Return true if size is unknown or greater than the limit.  */
  
    return size == -1 || size > ret_size_limit;
  }
--- 15078,15086 ----
    HOST_WIDE_INT size = int_size_in_bytes (type);
    HOST_WIDE_INT ret_size_limit = AVR_TINY ? 4 : 8;
  
!   /* In AVR, there are 8 return registers. But, for the Reduced Core,
!      only 4 registers are available.  Return true if size is unknown or
!      greater than the limit.  */
  
    return size == -1 || size > ret_size_limit;
  }
*************** avr_addr_space_convert (rtx src, tree ty
*** 15284,15290 ****
  	sym = XEXP (sym, 0);
  
        /* Look at symbol flags:  avr_encode_section_info set the flags
! 	 also if attribute progmem was seen so that we get the right
  	 promotion for, e.g. PSTR-like strings that reside in generic space
  	 but are located in flash.  In that case we patch the incoming
  	 address space.  */
--- 15270,15276 ----
  	sym = XEXP (sym, 0);
  
        /* Look at symbol flags:  avr_encode_section_info set the flags
! 	 also if attribute progmem was seen, so that we get the right
  	 promotion for, e.g. PSTR-like strings that reside in generic space
  	 but are located in flash.  In that case we patch the incoming
  	 address space.  */
*************** avr_convert_to_type (tree type, tree exp
*** 15379,15386 ****
  
  	    under the assumption that an explicit casts means that the user
  	    knows what he is doing, e.g. interface with PSTR or old style
! 	    code with progmem and pgm_read_xxx.
!   */
  
    if (avropt_warn_addr_space_convert
        && expr != error_mark_node
--- 15365,15371 ----
  
  	    under the assumption that an explicit casts means that the user
  	    knows what he is doing, e.g. interface with PSTR or old style
! 	    code with progmem and pgm_read_xxx.  */
  
    if (avropt_warn_addr_space_convert
        && expr != error_mark_node
*************** avr_legitimate_combined_insn (rtx_insn *
*** 15445,15451 ****
  }
  
  
! /* PR63633: The middle-end might come up with hard regs as input operands.
  
     RMASK is a bit mask representing a subset of hard registers R0...R31:
     Rn is an element of that set iff bit n of RMASK is set.
--- 15430,15436 ----
  }
  
  
! /* PR63633: The middle end might come up with hard regs as input operands.
  
     RMASK is a bit mask representing a subset of hard registers R0...R31:
     Rn is an element of that set iff bit n of RMASK is set.
*************** avr_move_fixed_operands (rtx *op, rtx *h
*** 15512,15518 ****
  }
  
  
! /* PR63633: The middle-end might come up with hard regs as output operands.
  
     GEN is a sequence generating function like gen_mulsi3 with 3 operands OP[].
     RMASK is a bit mask representing a subset of hard registers R0...R31:
--- 15497,15503 ----
  }
  
  
! /* PR63633: The middle end might come up with hard regs as output operands.
  
     GEN is a sequence generating function like gen_mulsi3 with 3 operands OP[].
     RMASK is a bit mask representing a subset of hard registers R0...R31:
*************** avr_map_decompose (unsigned int f, const
*** 16044,16050 ****
  
    /* Step 2:  Compute the cost of the operations.
       The overall cost of doing an operation prior to the insertion is
!       the cost of the insertion plus the cost of the operation.  */
  
    /* Step 2a:  Compute cost of F o G^-1  */
  
--- 16029,16035 ----
  
    /* Step 2:  Compute the cost of the operations.
       The overall cost of doing an operation prior to the insertion is
!      the cost of the insertion plus the cost of the operation.  */
  
    /* Step 2a:  Compute cost of F o G^-1  */
  
*************** avr_fold_builtin (tree fndecl, int /*n_a
*** 16840,16846 ****
  	if (TREE_CODE (tbits) != INTEGER_CST
  	    && avr_map_metric (map, MAP_PREIMAGE_0_7) == 0)
  	  {
! 	    /* Similar for the bits to be inserted. If they are unused,
  	       we can just as well pass 0.  */
  
  	    tbits = build_int_cst (val_type, 0);
--- 16825,16831 ----
  	if (TREE_CODE (tbits) != INTEGER_CST
  	    && avr_map_metric (map, MAP_PREIMAGE_0_7) == 0)
  	  {
! 	    /* Similar for the bits to be inserted.  If they are unused,
  	       we can just as well pass 0.  */
  
  	    tbits = build_int_cst (val_type, 0);
diff -Nrcpad gcc-17-20260607/gcc/config/avr/avr.md gcc-17-20260614/gcc/config/avr/avr.md
*** gcc-17-20260607/gcc/config/avr/avr.md	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/avr/avr.md	Sun Jun 14 22:32:07 2026
***************
*** 121,127 ****
    (const_string "arith"))
  
  ;; The size of instructions in bytes.
- ;; XXX may depend from "cc"
  
  (define_attr "length" ""
    (cond [(eq_attr "type" "branch")
--- 121,126 ----
***************
*** 4879,4889 ****
  
  ;; Overlapping non-HImode registers often (but not always) need a scratch.
  ;; The best we can do is use early clobber alternative "#&r" so that
! ;; completely non-overlapping operands dont get a scratch but # so register
  ;; allocation does not prefer non-overlapping.
  
  
! ;; Split word aligned rotates using scratch that is mode dependent.
  
  ;; "*rotwhi"
  ;; "*rotwsi"
--- 4878,4888 ----
  
  ;; Overlapping non-HImode registers often (but not always) need a scratch.
  ;; The best we can do is use early clobber alternative "#&r" so that
! ;; completely non-overlapping operands don't get a scratch but # so register
  ;; allocation does not prefer non-overlapping.
  
  
! ;; Split word aligned rotates using a mode-dependent scratch.
  
  ;; "*rotwhi"
  ;; "*rotwsi"
***************
*** 4905,4911 ****
    })
  
  
! ;; Split byte aligned rotates using scratch that is always QI mode.
  
  ;; "*rotbhi"
  ;; "*rotbpsi"
--- 4904,4910 ----
    })
  
  
! ;; Split byte aligned rotates using a QImode scratch.
  
  ;; "*rotbhi"
  ;; "*rotbpsi"
***************
*** 5051,5057 ****
                     (match_dup 2)))])
  
  ;; ??? Combiner does not recognize that it could split the following insn;
! ;;     presumably because he has no register handy?
  
  ;; "*ashluqihiqi3.mem"
  ;; "*ashlsqihiqi3.mem"
--- 5050,5056 ----
                     (match_dup 2)))])
  
  ;; ??? Combiner does not recognize that it could split the following insn;
! ;;     presumably because it has no register handy?
  
  ;; "*ashluqihiqi3.mem"
  ;; "*ashlsqihiqi3.mem"
***************
*** 9983,9990 ****
  ;; even on machines that don't have MUL instructions or that
  ;; have to perform the multiplication by means of a libgcc call.
  ;; Try to fix that below.  Notice that on AVR_TINY no MUL insn is
! ;; available since is is performed as a libgcc call from which we
! ;; cannot roll back.  With !AVR_HAVR_MULMUL it's a transparent call
  ;; from avr.md so we can get rid of that at least.
  
  ;; Map
--- 9982,9989 ----
  ;; even on machines that don't have MUL instructions or that
  ;; have to perform the multiplication by means of a libgcc call.
  ;; Try to fix that below.  Notice that on AVR_TINY no MUL insn is
! ;; available since it is performed as a libgcc call from which we
! ;; cannot roll back.  With !AVR_HAVE_MUL it's a transparent call
  ;; from avr.md so we can get rid of that at least.
  
  ;; Map
diff -Nrcpad gcc-17-20260607/gcc/config/darwin-driver.cc gcc-17-20260614/gcc/config/darwin-driver.cc
*** gcc-17-20260607/gcc/config/darwin-driver.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/darwin-driver.cc	Sun Jun 14 22:32:07 2026
*************** validate_macosx_version_min (const char
*** 64,70 ****
  
    major = strtoul (version_str, &end, 10);
  
!   /* macOS 10, 11, 12, 13, 14, 15 and 26 are known.
       clang accepts up to 99.  */
    if (major < 10 || major > 99)
      return NULL;
--- 64,70 ----
  
    major = strtoul (version_str, &end, 10);
  
!   /* macOS 10 to 15 and 26 upwards are known.
       clang accepts up to 99.  */
    if (major < 10 || major > 99)
      return NULL;
*************** darwin_find_version_from_kernel (void)
*** 160,174 ****
    if (*version_p++ != '.')
      goto parse_failed;
  
!   /* Darwin25 saw a transition to macOS 26.  */
!   if (major_vers >= 25)
      /* Apple clang doesn't include the minor version or the patch level
         in the object file, nor does it pass it to ld  */
      asprintf (&new_flag, "%d.00.00", major_vers + 1);
    /* Darwin20 saw a transition to macOS 11.  */
    else if (major_vers >= 20)
-     /* Apple clang doesn't include the minor version or the patch level
-        in the object file, nor does it pass it to ld  */
      asprintf (&new_flag, "%d.00.00", major_vers - 9);
    else if (major_vers - 4 <= 4)
      /* On 10.4 and earlier, the old linker is used which does not
--- 160,175 ----
    if (*version_p++ != '.')
      goto parse_failed;
  
!   /* macOS 27 aligned version number with Darwin27.  */
!   if (major_vers >= 27)
      /* Apple clang doesn't include the minor version or the patch level
         in the object file, nor does it pass it to ld  */
+     asprintf (&new_flag, "%d.00.00", major_vers);
+   /* Darwin25 saw a transition to macOS 26.  */
+   else if (major_vers >= 25)
      asprintf (&new_flag, "%d.00.00", major_vers + 1);
    /* Darwin20 saw a transition to macOS 11.  */
    else if (major_vers >= 20)
      asprintf (&new_flag, "%d.00.00", major_vers - 9);
    else if (major_vers - 4 <= 4)
      /* On 10.4 and earlier, the old linker is used which does not
diff -Nrcpad gcc-17-20260607/gcc/config/gcn/gcn.cc gcc-17-20260614/gcc/config/gcn/gcn.cc
*** gcc-17-20260607/gcc/config/gcn/gcn.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/gcn/gcn.cc	Sun Jun 14 22:32:07 2026
*************** gcn_addr_space_subset_p (addr_space_t su
*** 1874,1879 ****
--- 1874,1887 ----
    return false;
  }
  
+ static bool
+ gcn_addr_space_zero_address_valid (addr_space_t as)
+ {
+   if (as == ADDR_SPACE_LDS)
+     return true;
+   return false;
+ }
+ 
  static addr_space_t
  gcn_addr_space_resolve_default (addr_space_t as)
  {
*************** gcn_dwarf_register_span (rtx rtl)
*** 8085,8090 ****
--- 8093,8100 ----
  #define TARGET_ADDR_SPACE_POINTER_MODE gcn_addr_space_pointer_mode
  #undef  TARGET_ADDR_SPACE_SUBSET_P
  #define TARGET_ADDR_SPACE_SUBSET_P gcn_addr_space_subset_p
+ #undef  TARGET_ADDR_SPACE_ZERO_ADDRESS_VALID
+ #define TARGET_ADDR_SPACE_ZERO_ADDRESS_VALID gcn_addr_space_zero_address_valid
  #undef  TARGET_ADDR_SPACE_CONVERT
  #define TARGET_ADDR_SPACE_CONVERT gcn_addr_space_convert
  #undef  TARGET_ARG_PARTIAL_BYTES
diff -Nrcpad gcc-17-20260607/gcc/config/gcn/gcn.h gcc-17-20260614/gcc/config/gcn/gcn.h
*** gcc-17-20260607/gcc/config/gcn/gcn.h	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/gcn/gcn.h	Sun Jun 14 22:32:07 2026
*************** enum reg_class
*** 428,434 ****
     "EXECZ_CONDITIONAL_REG", \
     "ALL_CONDITIONAL_REGS",  \
     "EXEC_MASK_REG",	    \
!    "MEMORY_APERTURE_REGS"   \
     "SGPR_REGS",		    \
     "SGPR_EXEC_REGS",	    \
     "SGPR_VOP3A_SRC_REGS",   \
--- 428,434 ----
     "EXECZ_CONDITIONAL_REG", \
     "ALL_CONDITIONAL_REGS",  \
     "EXEC_MASK_REG",	    \
!    "MEMORY_APERTURE_REGS",  \
     "SGPR_REGS",		    \
     "SGPR_EXEC_REGS",	    \
     "SGPR_VOP3A_SRC_REGS",   \
diff -Nrcpad gcc-17-20260607/gcc/config/i386/i386.md gcc-17-20260614/gcc/config/i386/i386.md
*** gcc-17-20260607/gcc/config/i386/i386.md	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/i386/i386.md	Sun Jun 14 22:32:07 2026
***************
*** 5303,5313 ****
      case 0:
        return "{cbtw|cbw}";
      default:
!       return "movs{bw|x}\t{%1, %0|%0, %1}";
      }
  }
    [(set_attr "type" "imovx")
!    (set_attr "mode" "HI")
     (set (attr "prefix_0f")
       ;; movsx is short decodable while cwtl is vector decoded.
       (if_then_else (and (eq_attr "cpu" "!k6")
--- 5303,5313 ----
      case 0:
        return "{cbtw|cbw}";
      default:
!       return "movs{bl|x}\t{%1, %k0|%k0, %1}";
      }
  }
    [(set_attr "type" "imovx")
!    (set_attr "mode" "HI,SI")
     (set (attr "prefix_0f")
       ;; movsx is short decodable while cwtl is vector decoded.
       (if_then_else (and (eq_attr "cpu" "!k6")
diff -Nrcpad gcc-17-20260607/gcc/config/m68k/m68k.cc gcc-17-20260614/gcc/config/m68k/m68k.cc
*** gcc-17-20260607/gcc/config/m68k/m68k.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/m68k/m68k.cc	Sun Jun 14 22:32:07 2026
*************** m68k_return_pops_args (tree fundecl, tre
*** 7113,7119 ****
  static void
  m68k_conditional_register_usage (void)
  {
!   int i;
    HARD_REG_SET x;
    if (!TARGET_HARD_FLOAT)
      {
--- 7113,7119 ----
  static void
  m68k_conditional_register_usage (void)
  {
!   unsigned int i;
    HARD_REG_SET x;
    if (!TARGET_HARD_FLOAT)
      {
*************** m68k_zero_call_used_regs (HARD_REG_SET n
*** 7212,7217 ****
--- 7212,7218 ----
    rtx zero_fpreg = NULL_RTX;
  
    hard_reg_set_iterator hrsi;
+   unsigned int regno;
    EXECUTE_IF_SET_IN_HARD_REG_SET (need_zeroed_hardregs, 0, regno, hrsi)
      {
        rtx reg, zero;
diff -Nrcpad gcc-17-20260607/gcc/config/microblaze/microblaze.h gcc-17-20260614/gcc/config/microblaze/microblaze.h
*** gcc-17-20260607/gcc/config/microblaze/microblaze.h	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/microblaze/microblaze.h	Sun Jun 14 22:32:07 2026
*************** extern enum pipeline_type microblaze_pip
*** 176,181 ****
--- 176,189 ----
  #define DWARF_FRAME_RETURN_COLUMN \
  	(GP_REG_FIRST + MB_ABI_SUB_RETURN_ADDR_REGNUM)
  
+ /* Signal frames (config/microblaze/linux-unwind.h) record the
+    interrupted PC in DWARF column 36, one past the hard registers,
+    because column 15 must keep the interrupted r15.  Declaring it as
+    the alternate return column makes init_dwarf_reg_size_table size
+    it; otherwise _Unwind_GetGR aborts when unwinding through a signal
+    frame, such as during pthread cancellation.  */
+ #define DWARF_ALT_FRAME_RETURN_COLUMN 36
+ 
  /* Initial state of return address on entry to func = R15.
     Actually, the RA is at R15+8, but gcc doesn't know how
     to generate this.
diff -Nrcpad gcc-17-20260607/gcc/config/mips/sync.md gcc-17-20260614/gcc/config/mips/sync.md
*** gcc-17-20260607/gcc/config/mips/sync.md	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/mips/sync.md	Sun Jun 14 22:32:07 2026
***************
*** 179,185 ****
  	(unspec_volatile:SI
            [(match_operand:SI 2 "register_operand" "d")
  	   (match_operand:SI 3 "register_operand" "d")
! 	   (atomic_hiqi_op:SI (match_dup 0)
  			      (match_operand:SI 4 "reg_or_0_operand" "dJ"))]
  	  UNSPEC_SYNC_OLD_OP_12))
     (clobber (match_scratch:SI 5 "=&d"))]
--- 179,185 ----
  	(unspec_volatile:SI
            [(match_operand:SI 2 "register_operand" "d")
  	   (match_operand:SI 3 "register_operand" "d")
! 	   (atomic_hiqi_op:SI (match_dup 1)
  			      (match_operand:SI 4 "reg_or_0_operand" "dJ"))]
  	  UNSPEC_SYNC_OLD_OP_12))
     (clobber (match_scratch:SI 5 "=&d"))]
***************
*** 220,226 ****
            [(match_operand:SI 1 "memory_operand" "+ZC")
  	   (match_operand:SI 2 "register_operand" "d")
  	   (match_operand:SI 3 "register_operand" "d")
! 	   (atomic_hiqi_op:SI (match_dup 0)
  			      (match_operand:SI 4 "reg_or_0_operand" "dJ"))]
  	  UNSPEC_SYNC_NEW_OP_12))
     (set (match_dup 1)
--- 220,226 ----
            [(match_operand:SI 1 "memory_operand" "+ZC")
  	   (match_operand:SI 2 "register_operand" "d")
  	   (match_operand:SI 3 "register_operand" "d")
! 	   (atomic_hiqi_op:SI (match_dup 1)
  			      (match_operand:SI 4 "reg_or_0_operand" "dJ"))]
  	  UNSPEC_SYNC_NEW_OP_12))
     (set (match_dup 1)
***************
*** 228,234 ****
  	  [(match_dup 1)
  	   (match_dup 2)
  	   (match_dup 3)
! 	   (match_dup 4)] UNSPEC_SYNC_NEW_OP_12))]
    "GENERATE_LL_SC"
    { return mips_output_sync_loop (insn, operands); }
    [(set_attr "sync_insn1" "<insn>")
--- 228,235 ----
  	  [(match_dup 1)
  	   (match_dup 2)
  	   (match_dup 3)
! 	   (atomic_hiqi_op:SI (match_dup 1) (match_dup 4))]
! 	  UNSPEC_SYNC_NEW_OP_12))]
    "GENERATE_LL_SC"
    { return mips_output_sync_loop (insn, operands); }
    [(set_attr "sync_insn1" "<insn>")
diff -Nrcpad gcc-17-20260607/gcc/config/or1k/or1k.h gcc-17-20260614/gcc/config/or1k/or1k.h
*** gcc-17-20260607/gcc/config/or1k/or1k.h	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/or1k/or1k.h	Sun Jun 14 22:32:07 2026
*************** do {
*** 394,399 ****
--- 394,402 ----
  /* All the work is done in PROFILE_HOOK, but this is still required.  */
  #define FUNCTION_PROFILER(STREAM, LABELNO) do { } while (0)
  
+ /* Shift instructions ignore all but the low-order few bits.  */
+ #define SHIFT_COUNT_TRUNCATED 1
+ 
  /* Dwarf 2 Support */
  #define DWARF2_DEBUGGING_INFO 1
  #define INCOMING_RETURN_ADDR_RTX gen_rtx_REG (Pmode, LR_REGNUM)
diff -Nrcpad gcc-17-20260607/gcc/config/or1k/or1k.md gcc-17-20260614/gcc/config/or1k/or1k.md
*** gcc-17-20260607/gcc/config/or1k/or1k.md	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/or1k/or1k.md	Sun Jun 14 22:32:07 2026
***************
*** 217,223 ****
  (define_insn "<shift_op>si3"
    [(set (match_operand:SI 0 "register_operand" "=r,r")
  	(SHIFT:SI (match_operand:SI 1 "register_operand"  "r,r")
! 		  (match_operand:SI 2 "reg_or_u6_operand" "r,n")))]
    ""
    "@
     l.<shift_asm>\t%0, %1, %2
--- 217,223 ----
  (define_insn "<shift_op>si3"
    [(set (match_operand:SI 0 "register_operand" "=r,r")
  	(SHIFT:SI (match_operand:SI 1 "register_operand"  "r,r")
! 		  (match_operand:SI 2 "reg_or_u5_operand" "r,n")))]
    ""
    "@
     l.<shift_asm>\t%0, %1, %2
***************
*** 227,233 ****
  (define_insn "rotrsi3"
    [(set (match_operand:SI 0 "register_operand" "=r,r")
  	(rotatert:SI (match_operand:SI 1 "register_operand"  "r,r")
! 		     (match_operand:SI 2 "ror_reg_or_u6_operand" "r,n")))]
    "TARGET_ROR || TARGET_RORI"
    "@
     l.ror\t%0, %1, %2
--- 227,233 ----
  (define_insn "rotrsi3"
    [(set (match_operand:SI 0 "register_operand" "=r,r")
  	(rotatert:SI (match_operand:SI 1 "register_operand"  "r,r")
! 		     (match_operand:SI 2 "ror_reg_or_u5_operand" "r,n")))]
    "TARGET_ROR || TARGET_RORI"
    "@
     l.ror\t%0, %1, %2
***************
*** 616,622 ****
  	    [(match_operand:SI 1 "reg_or_0_operand" "")
  	     (match_operand:SI 2 "reg_or_s16_operand" "")])
  	  (label_ref (match_operand 3 "" ""))
! 	  (pc)))]
    ""
    "#"
    "&& 1"
--- 616,623 ----
  	    [(match_operand:SI 1 "reg_or_0_operand" "")
  	     (match_operand:SI 2 "reg_or_s16_operand" "")])
  	  (label_ref (match_operand 3 "" ""))
! 	  (pc)))
!    (clobber (reg:BI SR_F_REGNUM))]
    ""
    "#"
    "&& 1"
diff -Nrcpad gcc-17-20260607/gcc/config/or1k/predicates.md gcc-17-20260614/gcc/config/or1k/predicates.md
*** gcc-17-20260607/gcc/config/or1k/predicates.md	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/or1k/predicates.md	Sun Jun 14 22:32:07 2026
***************
*** 38,46 ****
    (ior (match_operand 0 "register_operand")
         (match_operand 0 "const0_operand")))
  
! (define_predicate "reg_or_u6_operand"
    (if_then_else (match_code "const_int")
!     (match_test "INTVAL (op) >= 0 && INTVAL (op) <= 0x3f")
      (match_operand 0 "register_operand")))
  
  (define_predicate "reg_or_u16_operand"
--- 38,46 ----
    (ior (match_operand 0 "register_operand")
         (match_operand 0 "const0_operand")))
  
! (define_predicate "reg_or_u5_operand"
    (if_then_else (match_code "const_int")
!     (match_test "INTVAL (op) >= 0 && INTVAL (op) <= 0x1f")
      (match_operand 0 "register_operand")))
  
  (define_predicate "reg_or_u16_operand"
***************
*** 53,61 ****
      (match_test "INTVAL (op) >= -32768 && INTVAL (op) <= 32767")
      (match_operand 0 "register_operand")))
  
! (define_predicate "ror_reg_or_u6_operand"
    (if_then_else (match_code "const_int")
!     (and (match_test "INTVAL (op) >= 0 && INTVAL (op) <= 0x3f")
  	 (match_test "TARGET_RORI"))
      (and (match_operand 0 "register_operand")
  	 (match_test "TARGET_ROR"))))
--- 53,61 ----
      (match_test "INTVAL (op) >= -32768 && INTVAL (op) <= 32767")
      (match_operand 0 "register_operand")))
  
! (define_predicate "ror_reg_or_u5_operand"
    (if_then_else (match_code "const_int")
!     (and (match_test "INTVAL (op) >= 0 && INTVAL (op) <= 0x1f")
  	 (match_test "TARGET_RORI"))
      (and (match_operand 0 "register_operand")
  	 (match_test "TARGET_ROR"))))
diff -Nrcpad gcc-17-20260607/gcc/config/pdp11/pdp11.cc gcc-17-20260614/gcc/config/pdp11/pdp11.cc
*** gcc-17-20260607/gcc/config/pdp11/pdp11.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/pdp11/pdp11.cc	Sun Jun 14 22:32:07 2026
*************** pdp11_function_arg_advance (cumulative_a
*** 2209,2215 ****
  static void
  pdp11_conditional_register_usage (void)
  {
!   int i;
    HARD_REG_SET x;
    if (!TARGET_FPU)
      {
--- 2209,2215 ----
  static void
  pdp11_conditional_register_usage (void)
  {
!   unsigned int i;
    HARD_REG_SET x;
    if (!TARGET_FPU)
      {
diff -Nrcpad gcc-17-20260607/gcc/config/riscv/crypto.md gcc-17-20260614/gcc/config/riscv/crypto.md
*** gcc-17-20260607/gcc/config/riscv/crypto.md	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/riscv/crypto.md	Sun Jun 14 22:32:07 2026
***************
*** 95,104 ****
    "unzip\t%0,%1"
    [(set_attr "type" "crypto")])
  
! (define_insn "riscv_pack_<X:mode><HISI:mode>"
    [(set (match_operand:X 0 "register_operand" "=r")
!         (unspec:X [(match_operand:HISI 1 "register_operand" "r")
!                   (match_operand:HISI 2 "register_operand" "r")]
                    UNSPEC_PACK))]
    "TARGET_ZBKB"
    "pack\t%0,%1,%2"
--- 95,104 ----
    "unzip\t%0,%1"
    [(set_attr "type" "crypto")])
  
! (define_insn "riscv_pack_<X:mode><HX:mode>"
    [(set (match_operand:X 0 "register_operand" "=r")
!         (unspec:X [(match_operand:HX 1 "register_operand" "r")
!                   (match_operand:HX 2 "register_operand" "r")]
                    UNSPEC_PACK))]
    "TARGET_ZBKB"
    "pack\t%0,%1,%2"
diff -Nrcpad gcc-17-20260607/gcc/config/riscv/riscv-protos.h gcc-17-20260614/gcc/config/riscv/riscv-protos.h
*** gcc-17-20260607/gcc/config/riscv/riscv-protos.h	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/riscv/riscv-protos.h	Sun Jun 14 22:32:07 2026
*************** extern void riscv_split_sum_of_two_s12 (
*** 185,190 ****
--- 185,191 ----
  extern bool riscv_vector_float_type_p (const_tree type);
  extern void expand_crc_using_clmul (scalar_mode, scalar_mode, rtx *);
  extern void expand_reversed_crc_using_clmul (scalar_mode, scalar_mode, rtx *);
+ extern bool riscv_zero_offset_address_bypass_p (rtx_insn *, rtx_insn *);
  
  /* Routines implemented in riscv-c.cc.  */
  void riscv_cpu_cpp_builtins (cpp_reader *);
*************** enum mask_policy
*** 660,665 ****
--- 661,677 ----
    MASK_ANY = 2,
  };
  
+ /* Values for the VTYPE altfmt field.  Instructions that do not care about
+    altfmt leave the "altfmt" insn attribute at its default (INVALID_ATTRIBUTE);
+    FP8 instructions select between standard (ALTFMT_NONE, E4M3) and the
+    alternate format (ALTFMT_ALT, E5M2) by setting the attribute via an
+    operand.  */
+ enum altfmt_type
+ {
+   ALTFMT_NONE = 0,
+   ALTFMT_ALT = 1,
+ };
+ 
  /* Return true if VALUE is agnostic or any policy.  */
  #define IS_AGNOSTIC(VALUE) (bool) (VALUE & 0x1 || (VALUE >> 1 & 0x1))
  
diff -Nrcpad gcc-17-20260607/gcc/config/riscv/riscv-v.cc gcc-17-20260614/gcc/config/riscv/riscv-v.cc
*** gcc-17-20260607/gcc/config/riscv/riscv-v.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/riscv/riscv-v.cc	Sun Jun 14 22:32:07 2026
*************** void
*** 865,873 ****
  emit_hard_vlmax_vsetvl (machine_mode vmode, rtx vl)
  {
    unsigned int sew = get_sew (vmode);
    emit_insn (gen_vsetvl (Pmode, vl, RVV_VLMAX, gen_int_mode (sew, Pmode),
  			 gen_int_mode (get_vlmul (vmode), Pmode), const0_rtx,
! 			 const0_rtx));
  }
  
  void
--- 865,874 ----
  emit_hard_vlmax_vsetvl (machine_mode vmode, rtx vl)
  {
    unsigned int sew = get_sew (vmode);
+   rtx altfmt = gen_int_mode (ALTFMT_NONE, Pmode);
    emit_insn (gen_vsetvl (Pmode, vl, RVV_VLMAX, gen_int_mode (sew, Pmode),
  			 gen_int_mode (get_vlmul (vmode), Pmode), const0_rtx,
! 			 const0_rtx, altfmt));
  }
  
  void
*************** rtx
*** 2413,2423 ****
  gen_no_side_effects_vsetvl_rtx (machine_mode vmode, rtx vl, rtx avl)
  {
    unsigned int sew = get_sew (vmode);
    rtx tail_policy = gen_int_mode (get_prefer_tail_policy (), Pmode);
    rtx mask_policy = gen_int_mode (get_prefer_mask_policy (), Pmode);
    return gen_vsetvl_no_side_effects (Pmode, vl, avl, gen_int_mode (sew, Pmode),
  				     gen_int_mode (get_vlmul (vmode), Pmode),
! 				     tail_policy, mask_policy);
  }
  
  /* GET VL * 2 rtx.  */
--- 2414,2425 ----
  gen_no_side_effects_vsetvl_rtx (machine_mode vmode, rtx vl, rtx avl)
  {
    unsigned int sew = get_sew (vmode);
+   rtx altfmt = gen_int_mode (ALTFMT_NONE, Pmode);
    rtx tail_policy = gen_int_mode (get_prefer_tail_policy (), Pmode);
    rtx mask_policy = gen_int_mode (get_prefer_mask_policy (), Pmode);
    return gen_vsetvl_no_side_effects (Pmode, vl, avl, gen_int_mode (sew, Pmode),
  				     gen_int_mode (get_vlmul (vmode), Pmode),
! 				     tail_policy, mask_policy, altfmt);
  }
  
  /* GET VL * 2 rtx.  */
diff -Nrcpad gcc-17-20260607/gcc/config/riscv/riscv-vector-builtins-bases.cc gcc-17-20260614/gcc/config/riscv/riscv-vector-builtins-bases.cc
*** gcc-17-20260607/gcc/config/riscv/riscv-vector-builtins-bases.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/riscv/riscv-vector-builtins-bases.cc	Sun Jun 14 22:32:07 2026
***************
*** 27,32 ****
--- 27,33 ----
  #include "tm_p.h"
  #include "memmodel.h"
  #include "insn-codes.h"
+ #include "riscv-protos.h"
  #include "optabs.h"
  #include "recog.h"
  #include "expr.h"
*************** public:
*** 116,121 ****
--- 117,126 ----
      /* MASK_ANY.  */
      e.add_input_operand (Pmode,
  			 gen_int_mode (get_prefer_mask_policy (), Pmode));
+ 
+     /* ALTFMT_NONE.  */
+     e.add_input_operand (Pmode, gen_int_mode (ALTFMT_NONE, Pmode));
+ 
      return e.generate_insn (code_for_vsetvl_no_side_effects (Pmode));
    }
  };
diff -Nrcpad gcc-17-20260607/gcc/config/riscv/riscv-vsetvl.cc gcc-17-20260614/gcc/config/riscv/riscv-vsetvl.cc
*** gcc-17-20260607/gcc/config/riscv/riscv-vsetvl.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/riscv/riscv-vsetvl.cc	Sun Jun 14 22:32:07 2026
*************** policy_to_str (bool agnostic_p)
*** 257,262 ****
--- 257,277 ----
    return agnostic_p ? "agnostic" : "undisturbed";
  }
  
+ /* Return a printable name for the VTYPE altfmt value ALTFMT.  */
+ static const char *
+ altfmt_to_str (uint8_t altfmt)
+ {
+   switch (altfmt)
+     {
+     case ALTFMT_NONE:
+       return "none";
+     case ALTFMT_ALT:
+       return "alt";
+     default:
+       return "any";
+     }
+ }
+ 
  /* Return true if it is an RVV instruction that depends on VTYPE global
     status register.  */
  bool
*************** mask_agnostic_p (rtx_insn *rinsn)
*** 503,508 ****
--- 518,532 ----
    return ma == INVALID_ATTRIBUTE ? get_default_ma () : IS_AGNOSTIC (ma);
  }
  
+ /* Return the alternate FP8 format requirement of RINSN.  INVALID_ATTRIBUTE
+    means that RINSN does not require a specific VTYPE altfmt value.  */
+ static uint8_t
+ get_altfmt (rtx_insn *rinsn)
+ {
+   extract_insn_cached (rinsn);
+   return get_attr_altfmt (rinsn);
+ }
+ 
  /* Return true if FN has a vector instruction that use VL/VTYPE.  */
  static bool
  has_vector_insn (function *fn)
*************** enum demand_flags : unsigned
*** 819,837 ****
    DEMAND_MASK_POLICY_P = 1 << 5,
    DEMAND_AVL_P = 1 << 6,
    DEMAND_NON_ZERO_AVL_P = 1 << 7,
  };
  
! /* We split the demand information into three parts.  They are sew and lmul
     related (sew_lmul_demand_type), tail and mask policy related
!    (policy_demand_type) and avl related (avl_demand_type). Then we define three
!    interfaces available_p, compatible_p and merge. available_p is
!    used to determine whether the two vsetvl infos prev_info and next_info are
!    available or not.  If prev_info is available for next_info, it means that the
!    RVV insn corresponding to next_info on the path from prev_info to next_info
!    can be used without inserting a separate vsetvl instruction. compatible_p
!    is used to determine whether prev_info is compatible with next_info, and if
!    so, merge can be used to merge the stricter demand information from
!    next_info into prev_info so that prev_info becomes available to next_info.
   */
  
  enum class sew_lmul_demand_type : unsigned
--- 843,863 ----
    DEMAND_MASK_POLICY_P = 1 << 5,
    DEMAND_AVL_P = 1 << 6,
    DEMAND_NON_ZERO_AVL_P = 1 << 7,
+   DEMAND_ALTFMT_P = 1 << 8,
  };
  
! /* We split the demand information into four parts.  They are sew and lmul
     related (sew_lmul_demand_type), tail and mask policy related
!    (policy_demand_type), avl related (avl_demand_type) and alternate FP8 format
!    related (altfmt_demand_type).  Then we define three interfaces available_p,
!    compatible_p and merge.  available_p is used to determine whether the two
!    vsetvl infos prev_info and next_info are available or not.  If prev_info is
!    available for next_info, it means that the RVV insn corresponding to
!    next_info on the path from prev_info to next_info can be used without
!    inserting a separate vsetvl instruction.  compatible_p is used to determine
!    whether prev_info is compatible with next_info, and if so, merge can be used
!    to merge the stricter demand information from next_info into prev_info so
!    that prev_info becomes available to next_info.
   */
  
  enum class sew_lmul_demand_type : unsigned
*************** enum class avl_demand_type : unsigned
*** 860,865 ****
--- 886,897 ----
    ignore_avl = demand_flags::DEMAND_EMPTY_P,
  };
  
+ enum class altfmt_demand_type : unsigned
+ {
+   altfmt = demand_flags::DEMAND_ALTFMT_P,
+   ignore_altfmt = demand_flags::DEMAND_EMPTY_P,
+ };
+ 
  /* Go through all uses of INSN looking for a single use of register REG.
     Return true if we find
      - Uses in a non-RVV insn
*************** private:
*** 904,913 ****
--- 936,947 ----
    uint8_t m_ratio;
    bool m_ta;
    bool m_ma;
+   uint8_t m_altfmt;
  
    sew_lmul_demand_type m_sew_lmul_demand;
    policy_demand_type m_policy_demand;
    avl_demand_type m_avl_demand;
+   altfmt_demand_type m_altfmt_demand;
  
    enum class state_type
    {
*************** public:
*** 927,937 ****
    vsetvl_info ()
      : m_insn (nullptr), m_bb (nullptr), m_avl (NULL_RTX), m_vl (NULL_RTX),
        m_avl_def (nullptr), m_sew (0), m_max_sew (0), m_vlmul (LMUL_RESERVED),
!       m_ratio (0), m_ta (false), m_ma (false),
        m_sew_lmul_demand (sew_lmul_demand_type::sew_lmul),
        m_policy_demand (policy_demand_type::tail_mask_policy),
!       m_avl_demand (avl_demand_type::avl), m_state (state_type::UNINITIALIZED),
!       m_delete (false), m_change_vtype_only (false), m_read_vl_insn (nullptr),
        m_vl_used_by_non_rvv_insn (false)
    {}
  
--- 961,973 ----
    vsetvl_info ()
      : m_insn (nullptr), m_bb (nullptr), m_avl (NULL_RTX), m_vl (NULL_RTX),
        m_avl_def (nullptr), m_sew (0), m_max_sew (0), m_vlmul (LMUL_RESERVED),
!       m_ratio (0), m_ta (false), m_ma (false), m_altfmt (ALTFMT_NONE),
        m_sew_lmul_demand (sew_lmul_demand_type::sew_lmul),
        m_policy_demand (policy_demand_type::tail_mask_policy),
!       m_avl_demand (avl_demand_type::avl),
!       m_altfmt_demand (altfmt_demand_type::altfmt),
!       m_state (state_type::UNINITIALIZED), m_delete (false),
!       m_change_vtype_only (false), m_read_vl_insn (nullptr),
        m_vl_used_by_non_rvv_insn (false)
    {}
  
*************** public:
*** 952,957 ****
--- 988,994 ----
    void set_max_sew (uint8_t max_sew) { m_max_sew = max_sew; }
    void set_change_vtype_only () { m_change_vtype_only = true; }
    void set_read_vl_insn (insn_info *insn) { m_read_vl_insn = insn; }
+   void set_altfmt (uint8_t altfmt) { m_altfmt = altfmt; }
  
    rtx get_avl () const { return m_avl; }
    rtx get_vl () const { return m_vl; }
*************** public:
*** 959,964 ****
--- 996,1002 ----
    uint8_t get_sew () const { return m_sew; }
    vlmul_type get_vlmul () const { return m_vlmul; }
    uint8_t get_ratio () const { return m_ratio; }
+   uint8_t get_altfmt () const { return m_altfmt; }
    bool get_ta () const { return m_ta; }
    bool get_ma () const { return m_ma; }
    insn_info *get_insn () const { return m_insn; }
*************** public:
*** 1034,1041 ****
--- 1072,1084 ----
    {
      return m_sew_lmul_demand;
    }
+   void set_altfmt_demand (altfmt_demand_type demand)
+   {
+     m_altfmt_demand = demand;
+   }
    policy_demand_type get_policy_demand () const { return m_policy_demand; }
    avl_demand_type get_avl_demand () const { return m_avl_demand; }
+   altfmt_demand_type get_altfmt_demand () const { return m_altfmt_demand; }
  
    void normalize_demand (unsigned demand_flags)
    {
*************** public:
*** 1093,1098 ****
--- 1136,1153 ----
        default:
  	gcc_unreachable ();
        }
+ 
+     switch (demand_flags & DEMAND_ALTFMT_P)
+       {
+       case (unsigned) altfmt_demand_type::altfmt:
+ 	m_altfmt_demand = altfmt_demand_type::altfmt;
+ 	break;
+       case (unsigned) altfmt_demand_type::ignore_altfmt:
+ 	m_altfmt_demand = altfmt_demand_type::ignore_altfmt;
+ 	break;
+       default:
+ 	gcc_unreachable ();
+       }
    }
  
    void parse_insn (rtx_insn *rinsn)
*************** public:
*** 1111,1116 ****
--- 1166,1175 ----
      m_vlmul = ::get_vlmul (rinsn);
      m_ta = tail_agnostic_p (rinsn);
      m_ma = mask_agnostic_p (rinsn);
+     m_altfmt = ::get_altfmt (rinsn);
+     m_altfmt_demand = m_altfmt == INVALID_ATTRIBUTE
+ 			? altfmt_demand_type::ignore_altfmt
+ 			: altfmt_demand_type::altfmt;
    }
  
    void parse_insn (insn_info *insn)
*************** public:
*** 1171,1176 ****
--- 1230,1236 ----
        m_ratio = calculate_ratio (m_sew, m_vlmul);
      m_ta = tail_agnostic_p (insn->rtl ());
      m_ma = mask_agnostic_p (insn->rtl ());
+     m_altfmt = ::get_altfmt (insn->rtl ());
  
      /* If merge operand is undef value, we prefer agnostic.  */
      int merge_op_idx = get_attr_merge_op_idx (insn->rtl ());
*************** public:
*** 1235,1240 ****
--- 1295,1303 ----
  	  dflags |= demand_flags::DEMAND_MASK_POLICY_P;
        }
  
+     if (m_altfmt != INVALID_ATTRIBUTE)
+       dflags |= demand_flags::DEMAND_ALTFMT_P;
+ 
      normalize_demand (dflags);
  
      /* Optimize AVL from the vsetvl instruction.  */
*************** public:
*** 1293,1305 ****
      rtx vlmul = gen_int_mode (get_vlmul (), Pmode);
      rtx ta = gen_int_mode (get_ta (), Pmode);
      rtx ma = gen_int_mode (get_ma (), Pmode);
  
      if (change_vtype_only_p ())
!       return gen_vsetvl_vtype_change_only (sew, vlmul, ta, ma);
      else if (has_vl () && !ignore_vl)
!       return gen_vsetvl (Pmode, get_vl (), avl, sew, vlmul, ta, ma);
      else
!       return gen_vsetvl_discard_result (Pmode, avl, sew, vlmul, ta, ma);
    }
  
    /* Return true that the non-AVL operands of THIS will be modified
--- 1356,1372 ----
      rtx vlmul = gen_int_mode (get_vlmul (), Pmode);
      rtx ta = gen_int_mode (get_ta (), Pmode);
      rtx ma = gen_int_mode (get_ma (), Pmode);
+     /* If this vsetvl_info has no specific altfmt demand, default to
+        ALTFMT_NONE.  */
+     rtx altfmt = gen_int_mode (
+       get_altfmt () == ALTFMT_ALT ? ALTFMT_ALT : ALTFMT_NONE, Pmode);
  
      if (change_vtype_only_p ())
!       return gen_vsetvl_vtype_change_only (sew, vlmul, ta, ma, altfmt);
      else if (has_vl () && !ignore_vl)
!       return gen_vsetvl (Pmode, get_vl (), avl, sew, vlmul, ta, ma, altfmt);
      else
!       return gen_vsetvl_discard_result (Pmode, avl, sew, vlmul, ta, ma, altfmt);
    }
  
    /* Return true that the non-AVL operands of THIS will be modified
*************** public:
*** 1339,1347 ****
  	   && get_sew () == other.get_sew ()
  	   && get_vlmul () == other.get_vlmul () && get_ta () == other.get_ta ()
  	   && get_ma () == other.get_ma ()
  	   && get_avl_demand () == other.get_avl_demand ()
  	   && get_sew_lmul_demand () == other.get_sew_lmul_demand ()
! 	   && get_policy_demand () == other.get_policy_demand ();
    }
  
    void dump (FILE *file, const char *indent = "") const
--- 1406,1416 ----
  	   && get_sew () == other.get_sew ()
  	   && get_vlmul () == other.get_vlmul () && get_ta () == other.get_ta ()
  	   && get_ma () == other.get_ma ()
+ 	   && get_altfmt () == other.get_altfmt ()
  	   && get_avl_demand () == other.get_avl_demand ()
  	   && get_sew_lmul_demand () == other.get_sew_lmul_demand ()
! 	   && get_policy_demand () == other.get_policy_demand ()
! 	   && get_altfmt_demand () == other.get_altfmt_demand ();
    }
  
    void dump (FILE *file, const char *indent = "") const
*************** public:
*** 1390,1395 ****
--- 1459,1467 ----
        fprintf (file, " demand_avl");
      else if (m_avl_demand == avl_demand_type::non_zero_avl)
        fprintf (file, " demand_non_zero_avl");
+ 
+     if (m_altfmt_demand == altfmt_demand_type::altfmt)
+       fprintf (file, " demand_altfmt");
      fprintf (file, "\n");
  
      fprintf (file, "%sSEW=%d, ", indent, get_sew ());
*************** public:
*** 1398,1404 ****
      fprintf (file, "MAX_SEW=%d\n", get_max_sew ());
  
      fprintf (file, "%sTAIL_POLICY=%s, ", indent, policy_to_str (get_ta ()));
!     fprintf (file, "MASK_POLICY=%s\n", policy_to_str (get_ma ()));
  
      fprintf (file, "%sAVL=", indent);
      print_rtl_single (file, get_avl ());
--- 1470,1477 ----
      fprintf (file, "MAX_SEW=%d\n", get_max_sew ());
  
      fprintf (file, "%sTAIL_POLICY=%s, ", indent, policy_to_str (get_ta ()));
!     fprintf (file, "MASK_POLICY=%s, ", policy_to_str (get_ma ()));
!     fprintf (file, "ALTFMT=%s\n", altfmt_to_str (get_altfmt ()));
  
      fprintf (file, "%sAVL=", indent);
      print_rtl_single (file, get_avl ());
*************** private:
*** 1671,1676 ****
--- 1744,1756 ----
      return tail_policy_eq_p (prev, next) && mask_policy_eq_p (prev, next);
    }
  
+   /* Predictors for altfmt.  */
+ 
+   inline bool altfmt_eq_p (const vsetvl_info &prev, const vsetvl_info &next)
+   {
+     return prev.get_altfmt () == next.get_altfmt ();
+   }
+ 
    /* predictors for avl */
  
    inline bool modify_or_use_vl_p (insn_info *i, const vsetvl_info &info)
*************** private:
*** 1918,1923 ****
--- 1998,2010 ----
      use_mask_policy (prev, next);
    }
  
+   /* Modifiers for altfmt.  */
+ 
+   inline void use_next_altfmt (vsetvl_info &prev, const vsetvl_info &next)
+   {
+     prev.set_altfmt (next.get_altfmt ());
+   }
+ 
    /* modifiers for avl */
  
    inline void use_next_avl (vsetvl_info &prev, const vsetvl_info &next)
*************** public:
*** 2158,2163 ****
--- 2245,2303 ----
      gcc_unreachable ();
    }
  
+   bool altfmt_compatible_p (const vsetvl_info &prev, const vsetvl_info &next)
+   {
+     gcc_assert (prev.valid_p () && next.valid_p ());
+     altfmt_demand_type prev_flags = prev.get_altfmt_demand ();
+     altfmt_demand_type next_flags = next.get_altfmt_demand ();
+ #define DEF_ALTFMT_RULE(PREV_FLAGS, NEXT_FLAGS, NEW_FLAGS, COMPATIBLE_P,       \
+ 			AVAILABLE_P, FUSE)                                     \
+   if (prev_flags == altfmt_demand_type::PREV_FLAGS                             \
+       && next_flags == altfmt_demand_type::NEXT_FLAGS)                         \
+     return COMPATIBLE_P (prev, next);
+ 
+ #include "riscv-vsetvl.def"
+ 
+     gcc_unreachable ();
+   }
+ 
+   bool altfmt_available_p (const vsetvl_info &prev, const vsetvl_info &next)
+   {
+     gcc_assert (prev.valid_p () && next.valid_p ());
+     altfmt_demand_type prev_flags = prev.get_altfmt_demand ();
+     altfmt_demand_type next_flags = next.get_altfmt_demand ();
+ #define DEF_ALTFMT_RULE(PREV_FLAGS, NEXT_FLAGS, NEW_FLAGS, COMPATIBLE_P,       \
+ 			AVAILABLE_P, FUSE)                                     \
+   if (prev_flags == altfmt_demand_type::PREV_FLAGS                             \
+       && next_flags == altfmt_demand_type::NEXT_FLAGS)                         \
+     return AVAILABLE_P (prev, next);
+ 
+ #include "riscv-vsetvl.def"
+ 
+     gcc_unreachable ();
+   }
+ 
+   void merge_altfmt (vsetvl_info &prev, const vsetvl_info &next)
+   {
+     gcc_assert (prev.valid_p () && next.valid_p ());
+     altfmt_demand_type prev_flags = prev.get_altfmt_demand ();
+     altfmt_demand_type next_flags = next.get_altfmt_demand ();
+ #define DEF_ALTFMT_RULE(PREV_FLAGS, NEXT_FLAGS, NEW_FLAGS, COMPATIBLE_P,       \
+ 			AVAILABLE_P, FUSE)                                     \
+   if (prev_flags == altfmt_demand_type::PREV_FLAGS                             \
+       && next_flags == altfmt_demand_type::NEXT_FLAGS)                         \
+     {                                                                          \
+       gcc_assert (COMPATIBLE_P (prev, next));                                  \
+       FUSE (prev, next);                                                       \
+       prev.set_altfmt_demand (altfmt_demand_type::NEW_FLAGS);                  \
+       return;                                                                  \
+     }
+ 
+ #include "riscv-vsetvl.def"
+ 
+     gcc_unreachable ();
+   }
+ 
    bool vl_not_in_conflict_p (const vsetvl_info &prev, const vsetvl_info &next)
    {
      /* We don't fuse this following case:
*************** public:
*** 2227,2245 ****
  
    bool compatible_p (const vsetvl_info &prev, const vsetvl_info &next)
    {
!     bool compatible_p = sew_lmul_compatible_p (prev, next)
! 			&& policy_compatible_p (prev, next)
! 			&& avl_compatible_p (prev, next)
! 			&& vl_not_in_conflict_p (prev, next);
      return compatible_p;
    }
  
    bool available_p (const vsetvl_info &prev, const vsetvl_info &next)
    {
!     bool available_p = sew_lmul_available_p (prev, next)
! 		       && policy_available_p (prev, next)
! 		       && avl_available_p (prev, next)
! 		       && vl_not_in_conflict_p (prev, next);
      gcc_assert (!available_p || compatible_p (prev, next));
      return available_p;
    }
--- 2367,2385 ----
  
    bool compatible_p (const vsetvl_info &prev, const vsetvl_info &next)
    {
!     bool compatible_p
!       = sew_lmul_compatible_p (prev, next) && policy_compatible_p (prev, next)
! 	&& altfmt_compatible_p (prev, next) && avl_compatible_p (prev, next)
! 	&& vl_not_in_conflict_p (prev, next);
      return compatible_p;
    }
  
    bool available_p (const vsetvl_info &prev, const vsetvl_info &next)
    {
!     bool available_p
!       = sew_lmul_available_p (prev, next) && policy_available_p (prev, next)
! 	&& altfmt_available_p (prev, next) && avl_available_p (prev, next)
! 	&& vl_not_in_conflict_p (prev, next);
      gcc_assert (!available_p || compatible_p (prev, next));
      return available_p;
    }
*************** public:
*** 2249,2254 ****
--- 2389,2395 ----
      gcc_assert (compatible_p (prev, next));
      merge_sew_lmul (prev, next);
      merge_policy (prev, next);
+     merge_altfmt (prev, next);
      merge_avl (prev, next);
      gcc_assert (available_p (prev, next));
    }
diff -Nrcpad gcc-17-20260607/gcc/config/riscv/riscv-vsetvl.def gcc-17-20260614/gcc/config/riscv/riscv-vsetvl.def
*** gcc-17-20260607/gcc/config/riscv/riscv-vsetvl.def	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/riscv/riscv-vsetvl.def	Sun Jun 14 22:32:07 2026
*************** along with GCC; see the file COPYING3.
*** 43,48 ****
--- 43,53 ----
  		     available_p, fuse)
  #endif
  
+ #ifndef DEF_ALTFMT_RULE
+ #define DEF_ALTFMT_RULE(prev_demand, next_demand, fused_demand, compatible_p,  \
+ 			available_p, fuse)
+ #endif
+ 
  /* Define SEW and LMUL rules.  */
  DEF_SEW_LMUL_RULE (sew_lmul, sew_lmul, sew_lmul, sew_lmul_eq_p, sew_lmul_eq_p,
  		   nop)
*************** DEF_AVL_RULE (ignore_avl, non_zero_avl,
*** 175,180 ****
--- 180,195 ----
  	      always_false, use_next_avl)
  DEF_AVL_RULE (ignore_avl, ignore_avl, ignore_avl, always_true, always_true, nop)
  
+ /* Define ALTFMT compatible and merge rules.  */
+ 
+ DEF_ALTFMT_RULE (altfmt, altfmt, altfmt, altfmt_eq_p, altfmt_eq_p, nop)
+ DEF_ALTFMT_RULE (altfmt, ignore_altfmt, altfmt, always_true, always_true, nop)
+ DEF_ALTFMT_RULE (ignore_altfmt, altfmt, altfmt, always_true, always_false,
+ 		 use_next_altfmt)
+ DEF_ALTFMT_RULE (ignore_altfmt, ignore_altfmt, ignore_altfmt, always_true,
+ 		 always_true, nop)
+ 
  #undef DEF_SEW_LMUL_RULE
  #undef DEF_POLICY_RULE
  #undef DEF_AVL_RULE
+ #undef DEF_ALTFMT_RULE
diff -Nrcpad gcc-17-20260607/gcc/config/riscv/riscv.cc gcc-17-20260614/gcc/config/riscv/riscv.cc
*** gcc-17-20260607/gcc/config/riscv/riscv.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/riscv/riscv.cc	Sun Jun 14 22:32:07 2026
*************** arcv_mpy_10c_bypass_p (rtx_insn *out_ins
*** 11043,11048 ****
--- 11043,11087 ----
    return arcv_mpy_option == ARCV_MPY_OPTION_10C;
  }
  
+ /* Return true if OUT_INSN produces a register value that is used as an
+    address in IN_INSN, and the address has a zero immediate offset.  */
+ 
+ bool
+ riscv_zero_offset_address_bypass_p (rtx_insn *out_insn, rtx_insn *in_insn)
+ {
+   rtx out_set, in_set;
+   rtx out_reg;
+   rtx in_mem, in_addr;
+ 
+   out_set = single_set (out_insn);
+   if (!out_set)
+     return false;
+   out_reg = SET_DEST (out_set);
+   if (GET_CODE (out_reg) == SUBREG)
+     out_reg = SUBREG_REG (out_reg);
+   if (GET_CODE (out_reg) != REG)
+     return false;
+ 
+   in_set = single_set (in_insn);
+   if (!in_set)
+     return false;
+   in_mem = SET_SRC (in_set);
+   if (GET_CODE (in_mem) != MEM)
+     {
+       in_mem = SET_DEST (in_set);
+       if (GET_CODE (in_mem) != MEM)
+ 	return false;
+     }
+ 
+   in_addr = XEXP (in_mem, 0);
+   if (GET_CODE (in_addr) == SUBREG)
+     in_addr = SUBREG_REG (in_addr);
+   if (GET_CODE (in_addr) != REG)
+     return false;
+ 
+   return REGNO (out_reg) == REGNO (in_addr);
+ }
+ 
  /* Implement TARGET_SECONDARY_MEMORY_NEEDED.
  
     When floating-point registers are wider than integer ones, moves between
*************** riscv_trampoline_init (rtx m_tramp, tree
*** 12504,12531 ****
  	}
        else
  	{
! 	  /* lpad    1
  	     auipc   t3, 0
! 	     l[wd]   t0, (target_function_offset - 4)(t3)
  	     l[wd]   t3, (static_chain_offset - 4)(t3)
! 	     lui     t2, 1
! 	     jr      t0
  	  */
  	  trampoline_cfi[0] = OPCODE_AUIPC | (0 << SHIFT_RD) | (lp_value << IMM_BITS);
  	  trampoline_cfi[1] = OPCODE_AUIPC | (STATIC_CHAIN_REGNUM << SHIFT_RD);
  	  trampoline_cfi[2] = (Pmode == DImode ? OPCODE_LD : OPCODE_LW)
! 			      | (RISCV_PROLOGUE_TEMP_REGNUM << SHIFT_RD)
  			      | (STATIC_CHAIN_REGNUM << SHIFT_RS1)
  			      | ((target_function_offset - 4) << SHIFT_IMM);
  	  trampoline_cfi[3] = (Pmode == DImode ? OPCODE_LD : OPCODE_LW)
  			      | (STATIC_CHAIN_REGNUM << SHIFT_RD)
  			      | (STATIC_CHAIN_REGNUM << SHIFT_RS1)
  			      | ((static_chain_offset - 4) << SHIFT_IMM);
! 	  trampoline_cfi[4] = OPCODE_LUI
! 			      | (RISCV_CALL_ADDRESS_LPAD_REGNUM << SHIFT_RD)
! 			      | (lp_value << IMM_BITS);
! 	  trampoline_cfi[5] = OPCODE_JALR | (RISCV_PROLOGUE_TEMP_REGNUM << SHIFT_RS1);
! 
  	  /* Copy the trampoline code.  */
  	  for (i = 0; i < ARRAY_SIZE (trampoline_cfi); i++)
  	    {
--- 12543,12569 ----
  	}
        else
  	{
! 	  /* lpad    0
  	     auipc   t3, 0
! 	     l[wd]   t2, (target_function_offset - 4)(t3)
  	     l[wd]   t3, (static_chain_offset - 4)(t3)
! 	     jr      t2
! 	     nop
  	  */
  	  trampoline_cfi[0] = OPCODE_AUIPC | (0 << SHIFT_RD) | (lp_value << IMM_BITS);
  	  trampoline_cfi[1] = OPCODE_AUIPC | (STATIC_CHAIN_REGNUM << SHIFT_RD);
  	  trampoline_cfi[2] = (Pmode == DImode ? OPCODE_LD : OPCODE_LW)
! 			      | (RISCV_CALL_ADDRESS_LPAD_REGNUM << SHIFT_RD)
  			      | (STATIC_CHAIN_REGNUM << SHIFT_RS1)
  			      | ((target_function_offset - 4) << SHIFT_IMM);
  	  trampoline_cfi[3] = (Pmode == DImode ? OPCODE_LD : OPCODE_LW)
  			      | (STATIC_CHAIN_REGNUM << SHIFT_RD)
  			      | (STATIC_CHAIN_REGNUM << SHIFT_RS1)
  			      | ((static_chain_offset - 4) << SHIFT_IMM);
! 	  trampoline_cfi[4] = OPCODE_JALR
! 			      | (RISCV_CALL_ADDRESS_LPAD_REGNUM << SHIFT_RS1);
! 	  trampoline_cfi[5] = OPCODE_ADDI | (0 << SHIFT_RD)
! 			      | (0 << SHIFT_RS1) | (0 << SHIFT_IMM);
  	  /* Copy the trampoline code.  */
  	  for (i = 0; i < ARRAY_SIZE (trampoline_cfi); i++)
  	    {
diff -Nrcpad gcc-17-20260607/gcc/config/riscv/sifive-7.md gcc-17-20260614/gcc/config/riscv/sifive-7.md
*** gcc-17-20260607/gcc/config/riscv/sifive-7.md	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/riscv/sifive-7.md	Sun Jun 14 22:32:07 2026
***************
*** 162,167 ****
--- 162,170 ----
  (define_bypass 1 "sifive_7_load,sifive_7_alu,sifive_7_mul,sifive_7_f2i,sifive_7_sfb_alu"
    "sifive_7_store" "riscv_store_data_bypass_p")
  
+ (define_bypass 2 "sifive_7_load"
+   "sifive_7_load,sifive_7_store" "riscv_zero_offset_address_bypass_p")
+ 
  (define_bypass 2 "sifive_7_i2f"
    "sifive_7_sfma,sifive_7_dfma,sifive_7_fp_other,sifive_7_fdiv_h,sifive_7_fdiv_s,sifive_7_fdiv_d,sifive_7_hfma")
  
diff -Nrcpad gcc-17-20260607/gcc/config/riscv/thead.cc gcc-17-20260614/gcc/config/riscv/thead.cc
*** gcc-17-20260607/gcc/config/riscv/thead.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/riscv/thead.cc	Sun Jun 14 22:32:07 2026
*************** th_asm_output_opcode (FILE *asm_out_file
*** 1144,1172 ****
  	  return p+6;
  	}
  
!       if (get_attr_type (current_output_insn) == TYPE_VFNCVTFTOI ||
! 	  get_attr_type (current_output_insn) == TYPE_VFNCVTITOF)
  	{
  	  if (strstr (p, "xu"))
  	    {
! 	      get_attr_type (current_output_insn) == TYPE_VFNCVTFTOI
! 			   ? fputs ("th.vfncvt.xu.f.v", asm_out_file)
! 			   : fputs ("th.vfncvt.f.xu.v", asm_out_file);
! 	      return p+13;
  	}
  	  else
  	    {
  	      get_attr_type (current_output_insn) == TYPE_VFNCVTFTOI
! 			   ? fputs ("th.vfncvt.x.f.v", asm_out_file)
! 			   : fputs ("th.vfncvt.f.x.v", asm_out_file);
! 	      return p+12;
  	    }
  	}
  
        if (get_attr_type (current_output_insn) == TYPE_VFNCVTFTOF)
  	{
  	  fputs ("th.vfncvt.f.f.v", asm_out_file);
! 	  return p+12;
  	}
  
        if (get_attr_type (current_output_insn) == TYPE_VFREDU
--- 1144,1224 ----
  	  return p+6;
  	}
  
!       if (get_attr_type (current_output_insn) == TYPE_VFCVTFTOI
! 	  || get_attr_type (current_output_insn) == TYPE_VFCVTITOF)
  	{
  	  if (strstr (p, "xu"))
  	    {
! 	      get_attr_type (current_output_insn) == TYPE_VFCVTFTOI
! 		? fputs ("th.vfcvt.xu.f.v", asm_out_file)
! 		: fputs ("th.vfcvt.f.xu.v", asm_out_file);
! 	      if (strstr (p, ".rtz") || strstr (p, ".rod"))
! 		return p + 16;
! 	      return p + 12;
! 	    }
! 	  else
! 	    {
! 	      get_attr_type (current_output_insn) == TYPE_VFCVTFTOI
! 		? fputs ("th.vfcvt.x.f.v", asm_out_file)
! 		: fputs ("th.vfcvt.f.x.v", asm_out_file);
! 	      if (strstr (p, ".rtz") || strstr (p, ".rod"))
! 		return p + 15;
! 	      return p + 11;
! 	    }
! 	}
! 
!       if (get_attr_type (current_output_insn) == TYPE_VFWCVTFTOI
! 	  || get_attr_type (current_output_insn) == TYPE_VFWCVTITOF)
! 	{
! 	  if (strstr (p, "xu"))
! 	    {
! 	      get_attr_type (current_output_insn) == TYPE_VFWCVTFTOI
! 		? fputs ("th.vfwcvt.xu.f.v", asm_out_file)
! 		: fputs ("th.vfwcvt.f.xu.v", asm_out_file);
! 	      if (strstr (p, ".rtz") || strstr (p, ".rod"))
! 		return p + 17;
! 	      return p + 13;
! 	    }
! 	  else
! 	    {
! 	      get_attr_type (current_output_insn) == TYPE_VFWCVTFTOI
! 		? fputs ("th.vfwcvt.x.f.v", asm_out_file)
! 		: fputs ("th.vfwcvt.f.x.v", asm_out_file);
! 	      if (strstr (p, ".rtz") || strstr (p, ".rod"))
! 		return p + 16;
! 	      return p + 12;
! 	    }
  	}
+ 
+       if (get_attr_type (current_output_insn) == TYPE_VFNCVTFTOI
+ 	  || get_attr_type (current_output_insn) == TYPE_VFNCVTITOF)
+ 	{
+ 	  if (strstr (p, "xu"))
+ 	    {
+ 	      get_attr_type (current_output_insn) == TYPE_VFNCVTFTOI
+ 		? fputs ("th.vfncvt.xu.f.v", asm_out_file)
+ 		: fputs ("th.vfncvt.f.xu.v", asm_out_file);
+ 	      if (strstr (p, ".rtz") || strstr (p, ".rod"))
+ 		return p + 17;
+ 	      return p + 13;
+ 	    }
  	  else
  	    {
  	      get_attr_type (current_output_insn) == TYPE_VFNCVTFTOI
! 		? fputs ("th.vfncvt.x.f.v", asm_out_file)
! 		: fputs ("th.vfncvt.f.x.v", asm_out_file);
! 	      if (strstr (p, ".rtz") || strstr (p, ".rod"))
! 		return p + 16;
! 	      return p + 12;
  	    }
  	}
  
        if (get_attr_type (current_output_insn) == TYPE_VFNCVTFTOF)
  	{
  	  fputs ("th.vfncvt.f.f.v", asm_out_file);
! 	  if (strstr (p, ".rtz") || strstr (p, ".rod"))
! 	    return p + 16;
! 	  return p + 12;
  	}
  
        if (get_attr_type (current_output_insn) == TYPE_VFREDU
diff -Nrcpad gcc-17-20260607/gcc/config/riscv/vector.md gcc-17-20260614/gcc/config/riscv/vector.md
*** gcc-17-20260607/gcc/config/riscv/vector.md	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/riscv/vector.md	Sun Jun 14 22:32:07 2026
***************
*** 60,65 ****
--- 60,71 ----
  	 (const_string "true")]
  	(const_string "false")))
  
+ ;; Alternate FP8 format requirement.  Most instructions do not care, so
+ ;; the attribute defaults to INVALID_ATTRIBUTE; FP8 instructions set it to
+ ;; ALTFMT_NONE (E4M3) or ALTFMT_ALT (E5M2) via an operand.
+ (define_attr "altfmt" ""
+   (const_int INVALID_ATTRIBUTE))
+ 
  ;; True if the type is RVV instructions that include VL
  ;; global status register in the use op list.
  ;; The instruction need vector length to be specified is set
***************
*** 1671,1676 ****
--- 1677,1683 ----
  ;; operands[3]: LMUL
  ;; operands[4]: Tail policy 0 or 1 (undisturbed/agnostic)
  ;; operands[5]: Mask policy 0 or 1 (undisturbed/agnostic)
+ ;; operands[6]: ALTFMT 0 or 1 (none/alt)
  
  ;; We define 2 types of "vsetvl*" instruction patterns:
  
***************
*** 1762,1768 ****
  		   (match_operand 2 "const_int_operand" "i")
  		   (match_operand 3 "const_int_operand" "i")
  		   (match_operand 4 "const_int_operand" "i")
! 		   (match_operand 5 "const_int_operand" "i")] UNSPEC_VSETVL))
     (set (reg:SI VL_REGNUM)
  	(unspec:SI [(match_dup 1)
  		    (match_dup 2)
--- 1769,1776 ----
  		   (match_operand 2 "const_int_operand" "i")
  		   (match_operand 3 "const_int_operand" "i")
  		   (match_operand 4 "const_int_operand" "i")
! 		   (match_operand 5 "const_int_operand" "i")
! 		   (match_operand 6 "const_int_operand" "i")] UNSPEC_VSETVL))
     (set (reg:SI VL_REGNUM)
  	(unspec:SI [(match_dup 1)
  		    (match_dup 2)
***************
*** 1771,1785 ****
  	(unspec:SI [(match_dup 2)
  		    (match_dup 3)
  		    (match_dup 4)
! 		    (match_dup 5)] UNSPEC_VSETVL))]
    "TARGET_VECTOR"
!   "vset%i1vli\t%0,%1,e%2,%m3,t%p4,m%p5"
    [(set_attr "type" "vsetvl")
     (set_attr "mode" "<MODE>")
     (set (attr "sew") (symbol_ref "INTVAL (operands[2])"))
     (set (attr "vlmul") (symbol_ref "INTVAL (operands[3])"))
     (set (attr "ta") (symbol_ref "INTVAL (operands[4])"))
!    (set (attr "ma") (symbol_ref "INTVAL (operands[5])"))])
  
  ;; vsetvl zero,zero,vtype instruction.
  ;; This pattern has no side effects and does not set X0 register.
--- 1779,1800 ----
  	(unspec:SI [(match_dup 2)
  		    (match_dup 3)
  		    (match_dup 4)
! 		    (match_dup 5)
! 		    (match_dup 6)] UNSPEC_VSETVL))]
    "TARGET_VECTOR"
!   {
!     if (INTVAL (operands[6]) == riscv_vector::ALTFMT_ALT)
!       return "vset%i1vli\t%0,%1,e%2alt,%m3,t%p4,m%p5";
!     return "vset%i1vli\t%0,%1,e%2,%m3,t%p4,m%p5";
!   }
    [(set_attr "type" "vsetvl")
     (set_attr "mode" "<MODE>")
     (set (attr "sew") (symbol_ref "INTVAL (operands[2])"))
     (set (attr "vlmul") (symbol_ref "INTVAL (operands[3])"))
     (set (attr "ta") (symbol_ref "INTVAL (operands[4])"))
!    (set (attr "ma") (symbol_ref "INTVAL (operands[5])"))
!    (set (attr "altfmt")
! 	(symbol_ref "INTVAL (operands[6])"))])
  
  ;; vsetvl zero,zero,vtype instruction.
  ;; This pattern has no side effects and does not set X0 register.
***************
*** 1789,1803 ****
  	  [(match_operand 0 "const_int_operand" "i")
  	   (match_operand 1 "const_int_operand" "i")
  	   (match_operand 2 "const_int_operand" "i")
! 	   (match_operand 3 "const_int_operand" "i")] UNSPEC_VSETVL))]
    "TARGET_VECTOR"
!   "vsetvli\tzero,zero,e%0,%m1,t%p2,m%p3"
    [(set_attr "type" "vsetvl")
     (set_attr "mode" "SI")
     (set (attr "sew") (symbol_ref "INTVAL (operands[0])"))
     (set (attr "vlmul") (symbol_ref "INTVAL (operands[1])"))
     (set (attr "ta") (symbol_ref "INTVAL (operands[2])"))
!    (set (attr "ma") (symbol_ref "INTVAL (operands[3])"))])
  
  ;; vsetvl zero,rs1,vtype instruction.
  ;; The reason we need this pattern since we should avoid setting X0 register
--- 1804,1825 ----
  	  [(match_operand 0 "const_int_operand" "i")
  	   (match_operand 1 "const_int_operand" "i")
  	   (match_operand 2 "const_int_operand" "i")
! 	   (match_operand 3 "const_int_operand" "i")
! 	   (match_operand 4 "const_int_operand" "i")] UNSPEC_VSETVL))]
    "TARGET_VECTOR"
!   {
!     if (INTVAL (operands[4]) == riscv_vector::ALTFMT_ALT)
!       return "vsetvli\tzero,zero,e%0alt,%m1,t%p2,m%p3";
!     return "vsetvli\tzero,zero,e%0,%m1,t%p2,m%p3";
!   }
    [(set_attr "type" "vsetvl")
     (set_attr "mode" "SI")
     (set (attr "sew") (symbol_ref "INTVAL (operands[0])"))
     (set (attr "vlmul") (symbol_ref "INTVAL (operands[1])"))
     (set (attr "ta") (symbol_ref "INTVAL (operands[2])"))
!    (set (attr "ma") (symbol_ref "INTVAL (operands[3])"))
!    (set (attr "altfmt")
! 	(symbol_ref "INTVAL (operands[4])"))])
  
  ;; vsetvl zero,rs1,vtype instruction.
  ;; The reason we need this pattern since we should avoid setting X0 register
***************
*** 1811,1825 ****
  	(unspec:SI [(match_dup 1)
  		    (match_dup 2)
  		    (match_operand 3 "const_int_operand" "i")
! 		    (match_operand 4 "const_int_operand" "i")] UNSPEC_VSETVL))]
    "TARGET_VECTOR"
!   "vset%i0vli\tzero,%0,e%1,%m2,t%p3,m%p4"
    [(set_attr "type" "vsetvl")
     (set_attr "mode" "<MODE>")
     (set (attr "sew") (symbol_ref "INTVAL (operands[1])"))
     (set (attr "vlmul") (symbol_ref "INTVAL (operands[2])"))
     (set (attr "ta") (symbol_ref "INTVAL (operands[3])"))
!    (set (attr "ma") (symbol_ref "INTVAL (operands[4])"))])
  
  ;; It's emit by vsetvl/vsetvlmax intrinsics with no side effects.
  ;; Since we have many optimization passes from "expand" to "reload_completed",
--- 1833,1854 ----
  	(unspec:SI [(match_dup 1)
  		    (match_dup 2)
  		    (match_operand 3 "const_int_operand" "i")
! 		    (match_operand 4 "const_int_operand" "i")
! 		    (match_operand 5 "const_int_operand" "i")] UNSPEC_VSETVL))]
    "TARGET_VECTOR"
!   {
!     if (INTVAL (operands[5]) == riscv_vector::ALTFMT_ALT)
!       return "vset%i0vli\tzero,%0,e%1alt,%m2,t%p3,m%p4";
!     return "vset%i0vli\tzero,%0,e%1,%m2,t%p3,m%p4";
!   }
    [(set_attr "type" "vsetvl")
     (set_attr "mode" "<MODE>")
     (set (attr "sew") (symbol_ref "INTVAL (operands[1])"))
     (set (attr "vlmul") (symbol_ref "INTVAL (operands[2])"))
     (set (attr "ta") (symbol_ref "INTVAL (operands[3])"))
!    (set (attr "ma") (symbol_ref "INTVAL (operands[4])"))
!    (set (attr "altfmt")
! 	(symbol_ref "INTVAL (operands[5])"))])
  
  ;; It's emit by vsetvl/vsetvlmax intrinsics with no side effects.
  ;; Since we have many optimization passes from "expand" to "reload_completed",
***************
*** 1830,1851 ****
  		   (match_operand 2 "const_int_operand" "i")
  		   (match_operand 3 "const_int_operand" "i")
  		   (match_operand 4 "const_int_operand" "i")
! 		   (match_operand 5 "const_int_operand" "i")] UNSPEC_VSETVL))]
    "TARGET_VECTOR"
    "#"
    "&& epilogue_completed"
    [(parallel
      [(set (match_dup 0)
  	  (unspec:P [(match_dup 1) (match_dup 2) (match_dup 3)
! 		     (match_dup 4) (match_dup 5)] UNSPEC_VSETVL))
       (set (reg:SI VL_REGNUM)
  	  (unspec:SI [(match_dup 1) (match_dup 2) (match_dup 3)] UNSPEC_VSETVL))
       (set (reg:SI VTYPE_REGNUM)
  	  (unspec:SI [(match_dup 2) (match_dup 3) (match_dup 4)
! 		      (match_dup 5)] UNSPEC_VSETVL))])]
    ""
    [(set_attr "type" "vsetvl")
!    (set_attr "mode" "SI")])
  
  ;; This pattern use to combine below two insns and then further remove
  ;; unnecessary sign_extend operations:
--- 1859,1883 ----
  		   (match_operand 2 "const_int_operand" "i")
  		   (match_operand 3 "const_int_operand" "i")
  		   (match_operand 4 "const_int_operand" "i")
! 		   (match_operand 5 "const_int_operand" "i")
! 		   (match_operand 6 "const_int_operand" "i")] UNSPEC_VSETVL))]
    "TARGET_VECTOR"
    "#"
    "&& epilogue_completed"
    [(parallel
      [(set (match_dup 0)
  	  (unspec:P [(match_dup 1) (match_dup 2) (match_dup 3)
! 		     (match_dup 4) (match_dup 5) (match_dup 6)] UNSPEC_VSETVL))
       (set (reg:SI VL_REGNUM)
  	  (unspec:SI [(match_dup 1) (match_dup 2) (match_dup 3)] UNSPEC_VSETVL))
       (set (reg:SI VTYPE_REGNUM)
  	  (unspec:SI [(match_dup 2) (match_dup 3) (match_dup 4)
! 		      (match_dup 5) (match_dup 6)] UNSPEC_VSETVL))])]
    ""
    [(set_attr "type" "vsetvl")
!    (set_attr "mode" "SI")
!    (set (attr "altfmt")
! 	(symbol_ref "INTVAL (operands[6])"))])
  
  ;; This pattern use to combine below two insns and then further remove
  ;; unnecessary sign_extend operations:
***************
*** 1870,1880 ****
    [(set (match_operand:DI 0 "register_operand")
          (sign_extend:DI
            (subreg:SI
! 	    (unspec:DI [(match_operand:P 1 "vector_length_operand")
! 		        (match_operand 2 "const_int_operand")
! 		        (match_operand 3 "const_int_operand")
! 		        (match_operand 4 "const_int_operand")
! 		        (match_operand 5 "const_int_operand")] UNSPEC_VSETVL) 0)))]
    "TARGET_VECTOR && TARGET_64BIT"
    "#"
    "&& 1"
--- 1902,1915 ----
    [(set (match_operand:DI 0 "register_operand")
          (sign_extend:DI
            (subreg:SI
! 		    (unspec:DI
! 		      [(match_operand:P 1 "vector_length_operand")
! 		       (match_operand 2 "const_int_operand")
! 		       (match_operand 3 "const_int_operand")
! 		       (match_operand 4 "const_int_operand")
! 		       (match_operand 5 "const_int_operand")
! 		       (match_operand 6 "const_int_operand")]
! 		      UNSPEC_VSETVL) 0)))]
    "TARGET_VECTOR && TARGET_64BIT"
    "#"
    "&& 1"
***************
*** 1882,1892 ****
          (unspec:DI [(match_dup 1)
                      (match_dup 2)
                      (match_dup 3)
!                     (match_dup 4)
!                     (match_dup 5)] UNSPEC_VSETVL))]
    ""
    [(set_attr "type" "vsetvl")
!    (set_attr "mode" "SI")])
  
  ;; RVV machine description matching format
  ;; (define_insn ""
--- 1917,1930 ----
          (unspec:DI [(match_dup 1)
                      (match_dup 2)
                      (match_dup 3)
! 		    (match_dup 4)
! 		    (match_dup 5)
! 		    (match_dup 6)] UNSPEC_VSETVL))]
    ""
    [(set_attr "type" "vsetvl")
!    (set_attr "mode" "SI")
!    (set (attr "altfmt")
! 	(symbol_ref "INTVAL (operands[6])"))])
  
  ;; RVV machine description matching format
  ;; (define_insn ""
diff -Nrcpad gcc-17-20260607/gcc/config/riscv/zicond.md gcc-17-20260614/gcc/config/riscv/zicond.md
*** gcc-17-20260607/gcc/config/riscv/zicond.md	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/riscv/zicond.md	Sun Jun 14 22:32:07 2026
***************
*** 143,149 ****
  					[(match_dup 2) (const_int 0)])
  				      (const_int 0)
  				      (match_dup 5)))]
!   { PUT_CODE (operands[1], GET_CODE (operands[1]) == EQ ? NE : EQ); })
  
  (define_split
    [(set (match_operand:X 0 "register_operand")
--- 143,152 ----
  					[(match_dup 2) (const_int 0)])
  				      (const_int 0)
  				      (match_dup 5)))]
!   { operands[1] = gen_rtx_fmt_ee (GET_CODE (operands[1]) == EQ ? NE : EQ,
! 				  GET_MODE (operands[1]),
! 				  operands[2],
! 				  CONST0_RTX (GET_MODE (operands[1]))); })
  
  (define_split
    [(set (match_operand:X 0 "register_operand")
***************
*** 158,164 ****
  					[(match_dup 2) (const_int 0)])
  				      (const_int 0)
  				      (match_dup 5)))]
!   { PUT_CODE (operands[1], GET_CODE (operands[1]) == EQ ? NE : EQ); })
  
  
  ;; Similarly but GE/GEU which requires (const_int 1) as an operand.
--- 161,170 ----
  					[(match_dup 2) (const_int 0)])
  				      (const_int 0)
  				      (match_dup 5)))]
!   { operands[1] = gen_rtx_fmt_ee (GET_CODE (operands[1]) == EQ ? NE : EQ,
! 				  GET_MODE (operands[1]),
! 				  operands[2],
! 				  CONST0_RTX (GET_MODE (operands[1]))); })
  
  
  ;; Similarly but GE/GEU which requires (const_int 1) as an operand.
***************
*** 175,181 ****
  				       [(match_dup 2) (const_int 0)])
  				      (const_int 0)
  				      (match_dup 4)))]
!   { PUT_CODE (operands[1], GET_CODE (operands[1]) == EQ ? NE : EQ); })
  
  (define_split
    [(set (match_operand:X 0 "register_operand")
--- 181,190 ----
  				       [(match_dup 2) (const_int 0)])
  				      (const_int 0)
  				      (match_dup 4)))]
!   { operands[1] = gen_rtx_fmt_ee (GET_CODE (operands[1]) == EQ ? NE : EQ,
! 				  GET_MODE (operands[1]),
! 				  operands[2],
! 				  CONST0_RTX (GET_MODE (operands[1]))); })
  
  (define_split
    [(set (match_operand:X 0 "register_operand")
***************
*** 190,196 ****
  				       [(match_dup 2) (const_int 0)])
  				      (const_int 0)
  				      (match_dup 4)))]
!   { PUT_CODE (operands[1], GET_CODE (operands[1]) == EQ ? NE : EQ); })
  
  ;; Similarly but LU/LTU which allows an arith_operand
  (define_split
--- 199,208 ----
  				       [(match_dup 2) (const_int 0)])
  				      (const_int 0)
  				      (match_dup 4)))]
!   { operands[1] = gen_rtx_fmt_ee (GET_CODE (operands[1]) == EQ ? NE : EQ,
! 				  GET_MODE (operands[1]),
! 				  operands[2],
! 				  CONST0_RTX (GET_MODE (operands[1]))); })
  
  ;; Similarly but LU/LTU which allows an arith_operand
  (define_split
***************
*** 206,212 ****
  				       [(match_dup 2) (const_int 0)])
  				      (const_int 0)
  				      (match_dup 5)))]
!   { PUT_CODE (operands[1], GET_CODE (operands[1]) == EQ ? NE : EQ); })
  
  ;; Finally LE/LEU which requires sle_operand.
  (define_split
--- 218,227 ----
  				       [(match_dup 2) (const_int 0)])
  				      (const_int 0)
  				      (match_dup 5)))]
!   { operands[1] = gen_rtx_fmt_ee (GET_CODE (operands[1]) == EQ ? NE : EQ,
! 				  GET_MODE (operands[1]),
! 				  operands[2],
! 				  CONST0_RTX (GET_MODE (operands[1]))); })
  
  ;; Finally LE/LEU which requires sle_operand.
  (define_split
***************
*** 222,228 ****
  				       [(match_dup 2) (const_int 0)])
  				      (const_int 0)
  				      (match_dup 5)))]
!   { PUT_CODE (operands[1], GET_CODE (operands[1]) == EQ ? NE : EQ); })
  
  ;; We can splat the sign bit across a GPR with an arithmetic right shift
  ;; which gives us a 0, -1 result.  We then turn on bit #0 unconditionally
--- 237,246 ----
  				       [(match_dup 2) (const_int 0)])
  				      (const_int 0)
  				      (match_dup 5)))]
!   { operands[1] = gen_rtx_fmt_ee (GET_CODE (operands[1]) == EQ ? NE : EQ,
! 				  GET_MODE (operands[1]),
! 				  operands[2],
! 				  CONST0_RTX (GET_MODE (operands[1]))); })
  
  ;; We can splat the sign bit across a GPR with an arithmetic right shift
  ;; which gives us a 0, -1 result.  We then turn on bit #0 unconditionally
diff -Nrcpad gcc-17-20260607/gcc/config/rs6000/amo.h gcc-17-20260614/gcc/config/rs6000/amo.h
*** gcc-17-20260607/gcc/config/rs6000/amo.h	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/rs6000/amo.h	Sun Jun 14 22:32:07 2026
*************** enum _AMO_LD {
*** 43,49 ****
    _AMO_LD_UMIN		= 0x06,		/* Fetch and Unsigned Minimum.  */
    _AMO_LD_SMIN		= 0x07,		/* Fetch and Signed Minimum.  */
    _AMO_LD_SWAP		= 0x08,		/* Swap.  */
!   _AMO_LD_CS_NE		= 0x10,		/* Compare and Swap Not Equal.  */
    _AMO_LD_INC_BOUNDED	= 0x18,		/* Fetch and Increment Bounded.  */
    _AMO_LD_INC_EQUAL	= 0x19,		/* Fetch and Increment Equal.  */
    _AMO_LD_DEC_BOUNDED	= 0x1C		/* Fetch and Decrement Bounded.  */
--- 43,52 ----
    _AMO_LD_UMIN		= 0x06,		/* Fetch and Unsigned Minimum.  */
    _AMO_LD_SMIN		= 0x07,		/* Fetch and Signed Minimum.  */
    _AMO_LD_SWAP		= 0x08,		/* Swap.  */
!   _AMO_LD_CS_NE 	= 0x10,         /* Compare and Swap Not Equal.  */
! #ifdef _ARCH_FUTURE
!   _AMO_LD_CS_EQ 	= 0x11,         /* Compare and Swap Equal.  */
! #endif
    _AMO_LD_INC_BOUNDED	= 0x18,		/* Fetch and Increment Bounded.  */
    _AMO_LD_INC_EQUAL	= 0x19,		/* Fetch and Increment Equal.  */
    _AMO_LD_DEC_BOUNDED	= 0x1C		/* Fetch and Decrement Bounded.  */
*************** _AMO_LD_INCREMENT (amo_ldat_sinc_eq,
*** 159,164 ****
--- 162,187 ----
  _AMO_LD_INCREMENT (amo_ldat_sinc_bounded, int64_t, "ldat", _AMO_LD_INC_BOUNDED)
  _AMO_LD_DECREMENT (amo_ldat_sdec_bounded, int64_t, "ldat", _AMO_LD_DEC_BOUNDED)
  
+ /* Future specific compare-and-swap equal operations.  */
+ #ifdef _ARCH_FUTURE
+ _AMO_LD_CMPSWP (amo_lwat_cas_eq,  uint32_t, "lwat", _AMO_LD_CS_EQ)
+ _AMO_LD_CMPSWP (amo_lwat_scas_eq, int32_t,  "lwat", _AMO_LD_CS_EQ)
+ _AMO_LD_CMPSWP (amo_ldat_cas_eq,  uint64_t, "ldat", _AMO_LD_CS_EQ)
+ _AMO_LD_CMPSWP (amo_ldat_scas_eq, int64_t,  "ldat", _AMO_LD_CS_EQ)
+ #else /* ! _ARCH_FUTURE */
+ /* Dummy declarations with GCC error attribute: Triggers error on use.  */
+ #define _AMO_ERR_CMPSWP(NAME, TYPE)					 \
+ extern TYPE								 \
+ NAME (TYPE *_ADDR, TYPE _COND, TYPE _VALUE)				 \
+   __attribute__ ((error (#NAME " requires ISA<future>; not available on" \
+ 			       " ISA 3.1 or earlier")));
+ _AMO_ERR_CMPSWP (amo_lwat_cas_eq,  uint32_t)
+ _AMO_ERR_CMPSWP (amo_lwat_scas_eq, int32_t)
+ _AMO_ERR_CMPSWP (amo_ldat_cas_eq,  uint64_t)
+ _AMO_ERR_CMPSWP (amo_ldat_scas_eq, int64_t)
+ #undef _AMO_ERR_CMPSWP
+ #endif
+ 
  /* Enumeration of the STWAT/STDAT sub-opcodes.  */
  enum _AMO_ST {
    _AMO_ST_ADD		= 0x00,		/* Store Add.  */
diff -Nrcpad gcc-17-20260607/gcc/config/sh/sh.md gcc-17-20260614/gcc/config/sh/sh.md
*** gcc-17-20260607/gcc/config/sh/sh.md	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/config/sh/sh.md	Sun Jun 14 22:32:07 2026
***************
*** 4597,4603 ****
  (define_expand "bswapsi2"
    [(set (match_operand:SI 0 "arith_reg_dest" "")
  	(bswap:SI (match_operand:SI 1 "arith_reg_operand" "")))]
!   "TARGET_SH1 && can_create_pseudo_p ()"
  {
    rtx tmp0 = gen_reg_rtx (SImode);
    rtx tmp1 = gen_reg_rtx (SImode);
--- 4597,4603 ----
  (define_expand "bswapsi2"
    [(set (match_operand:SI 0 "arith_reg_dest" "")
  	(bswap:SI (match_operand:SI 1 "arith_reg_operand" "")))]
!   "TARGET_SH1"
  {
    rtx tmp0 = gen_reg_rtx (SImode);
    rtx tmp1 = gen_reg_rtx (SImode);
diff -Nrcpad gcc-17-20260607/gcc/cp/ChangeLog gcc-17-20260614/gcc/cp/ChangeLog
*** gcc-17-20260607/gcc/cp/ChangeLog	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/cp/ChangeLog	Sun Jun 14 22:32:07 2026
***************
*** 1,3 ****
--- 1,111 ----
+ 2026-06-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/125674
+ 	* pt.cc (tsubst_decl): Diagnose bit-field widths
+ 	with invalid type.
+ 
+ 2026-06-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/125694
+ 	* typeck.cc (build_x_bswapg_bitreverseg ): If arg is error_operand_p,
+ 	return error_mark_node.
+ 
+ 2026-06-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/91155
+ 	* decl.cc (cp_make_fname_decl): Use cpp_translate_string instead of
+ 	cpp_interpret_string, don't prefix name strname.text with " and suffix
+ 	with " and NUL.
+ 
+ 2026-06-10  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/125498
+ 	* mangle.cc (write_reflection): Use DECL_PARM_INDEX for
+ 	computing the parameter index.
+ 
+ 2026-06-09  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/121287
+ 	PR c++/125212
+ 	PR c++/105667
+ 	PR c++/121597
+ 	PR c++/110961
+ 	* cp-tree.h (TYPE_DECL_OPAQUE_ALIAS_P): Define.
+ 	(any_lambdas_p): Declare.
+ 	* decl.cc (grokdeclarator): Set TYPE_DECL_OPAQUE_ALIAS_P.
+ 	* pt.cc (dependent_opaque_alias_p): Refine to check
+ 	TYPE_DECL_OPAQUE_ALIAS_P.
+ 	(tsubst_decl) <case TYPE_DECL>: Set TYPE_DECL_OPAQUE_ALIAS_P.
+ 	(any_lambdas_p): New, factored out of...
+ 	(regenerate_decl_from_template): ...this.  Call it.
+ 
+ 2026-06-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* call.cc (build_op_delete_call_1): Add missing auto_diagnostic_group
+ 	sentinel.  Formatting fix.
+ 	(complain_about_access): Add missing auto_diagnostic_group sentinels.
+ 	(convert_like_internal): Likewise.
+ 	(build_over_call): Likewise.
+ 	(maybe_warn_class_memaccess): Likewise.
+ 	* constexpr.cc (maybe_warn_about_constant_value): Likewise.
+ 	(cxx_eval_outermost_constant_expr): Likewise.
+ 	* contracts.cc (check_param_in_postcondition): Likewise.
+ 	(check_postconditions_in_redecl): Likewise.  Formatting fixes.
+ 	* decl.cc (identify_goto): Add missing auto_diagnostic_group
+ 	sentinels.
+ 	(omp_declare_variant_finalize_one): Likewise.
+ 	* method.cc (walk_field_subobs): Likewise.
+ 	* semantics.cc (finish_omp_clauses): Likewise.
+ 	* tree.cc (validate_trivial_abi_attribute): Likewise.
+ 	* typeck2.cc (digest_init_r): Likewise.
+ 
+ 2026-06-05  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	* semantics.cc (cxx_omp_map_array_section): Allow ARRAY_TYPE
+ 	expressions, not just pointers.
+ 
+ 2026-06-05  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/125334
+ 	* module.cc (depset::hash::add_dependent_adl_entities):
+ 	Disable when inside a header unit.
+ 
+ 2026-06-05  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* module.cc (dep_adl_info::args): Initializer to nullptr
+ 	instead of immediately allocating.
+ 	(depset::hash::add_dependent_adl_entities): Exit early
+ 	for non-type-dependent calls and operator expressions.
+ 	Only allocate dep_adl_info::args if we're not exiting early.
+ 	Correct all-type-dependent args test.
+ 	* name-lookup.cc (name_lookup::preserve_state): Replace
+ 	propagation of tentative flag with assert that it's not
+ 	set.
+ 
+ 2026-06-05  Marek Polacek  <polacek@redhat.com>
+ 
+ 	* pt.cc (check_explicit_inst_of_var_template): Add
+ 	auto_diagnostic_group.
+ 
+ 2026-06-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/122731
+ 	* parser.cc (cp_parser_postfix_expression): Parse
+ 	__builtin_bswapg and __builtin_bitreverseg.
+ 	* typeck.cc (build_x_bswapg_bitreverseg): New function.
+ 	* cp-tree.h (build_x_bswapg_bitreverseg): Declare.
+ 	* pt.cc (tsubst_expr): Handle IFN_BSWAP and IFN_BITREVERSE.
+ 	* constexpr.cc (cxx_eval_internal_function): Likewise.
+ 	(potential_constant_expression_1): Likewise.
+ 	* cp-gimplify.cc (cp_gimplify_expr): Likewise.
+ 
+ 2026-06-04  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/125575
+ 	PR c++/98524
+ 	* pt.cc (check_explicit_inst_of_var_template): New.
+ 	(check_explicit_specialization): Use it.
+ 
  2026-06-03  Patrick Palka  <ppalka@redhat.com>
  
  	PR c++/125378
diff -Nrcpad gcc-17-20260607/gcc/cp/call.cc gcc-17-20260614/gcc/cp/call.cc
*** gcc-17-20260607/gcc/cp/call.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/cp/call.cc	Sun Jun 14 22:32:07 2026
*************** build_op_delete_call_1 (enum tree_code c
*** 8370,8378 ****
       be freed.  */
    if (alloc_fn)
      {
!       if ((complain & tf_warning)
! 	  && !placement)
  	{
  	  bool w = warning (0,
  			    "no corresponding deallocation function for %qD",
  			    alloc_fn);
--- 8370,8378 ----
       be freed.  */
    if (alloc_fn)
      {
!       if ((complain & tf_warning) && !placement)
  	{
+ 	  auto_diagnostic_group d;
  	  bool w = warning (0,
  			    "no corresponding deallocation function for %qD",
  			    alloc_fn);
*************** complain_about_access (tree decl, tree d
*** 8440,8445 ****
--- 8440,8446 ----
      }
  
    /* Now generate an error message depending on calculated access.  */
+   auto_diagnostic_group d;
    if (no_access_reason == ak_private)
      {
        if (issue_error)
*************** convert_like_internal (conversion *convs
*** 8737,8742 ****
--- 8738,8744 ----
      {
        int complained = 0;
        conversion *t = convs;
+       auto_diagnostic_group d;
  
        /* Give a helpful error if this is bad because of excess braces.  */
        if (BRACE_ENCLOSED_INITIALIZER_P (expr)
*************** convert_like_internal (conversion *convs
*** 8979,8984 ****
--- 8981,8987 ----
        if (complain & tf_error)
  	{
  	  /* Call build_user_type_conversion again for the error.  */
+ 	  auto_diagnostic_group d;
  	  int flags = (convs->need_temporary_p
  		       ? LOOKUP_IMPLICIT : LOOKUP_NORMAL);
  	  build_user_type_conversion (totype, convs->u.expr, flags, complain);
*************** build_over_call (struct z_candidate *can
*** 10848,10853 ****
--- 10851,10857 ----
  	{
  	  if (complain & tf_error)
  	    {
+ 	      auto_diagnostic_group d;
  	      sorry ("passing arguments to ellipsis of inherited constructor "
  		     "%qD", cand->fn);
  	      inform (DECL_SOURCE_LOCATION (cand->fn), "declared here");
*************** maybe_warn_class_memaccess (location_t l
*** 11346,11351 ****
--- 11350,11356 ----
    const char *suggest = "";
    bool warned = false;
  
+   auto_diagnostic_group d;
    switch (DECL_FUNCTION_CODE (fndecl))
      {
      case BUILT_IN_MEMSET:
diff -Nrcpad gcc-17-20260607/gcc/cp/constexpr.cc gcc-17-20260614/gcc/cp/constexpr.cc
*** gcc-17-20260607/gcc/cp/constexpr.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/cp/constexpr.cc	Sun Jun 14 22:32:07 2026
*************** static void
*** 9035,9040 ****
--- 9035,9041 ----
  maybe_warn_about_constant_value (location_t loc, tree decl)
  {
    static bool explained = false;
+   auto_diagnostic_group d;
    if (cxx_dialect >= cxx17
        && warn_interference_size
        && !OPTION_SET_P (param_destruct_interfere_size)
*************** cxx_eval_outermost_constant_expr (tree t
*** 11103,11108 ****
--- 11104,11110 ----
  	{
  	  if (!allow_non_constant && !non_constant_p)
  	    {
+ 	      auto_diagnostic_group d;
  	      if (DECL_LANG_SPECIFIC (heap_var))
  		error ("%qE is not a constant expression because it refers to "
  		       "exception object allocated with "
*************** cxx_eval_outermost_constant_expr (tree t
*** 11121,11126 ****
--- 11123,11129 ----
  	    {
  	      if (!allow_non_constant && !non_constant_p)
  		{
+ 		  auto_diagnostic_group d;
  		  error ("%qE is not a constant expression because allocated "
  			 "storage has not been deallocated", t);
  		  inform (DECL_SOURCE_LOCATION (heap_var), "allocated here");
diff -Nrcpad gcc-17-20260607/gcc/cp/contracts.cc gcc-17-20260614/gcc/cp/contracts.cc
*** gcc-17-20260607/gcc/cp/contracts.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/cp/contracts.cc	Sun Jun 14 22:32:07 2026
*************** check_param_in_postcondition (tree decl,
*** 560,565 ****
--- 560,566 ----
        if (!dependent_type_p (TREE_TYPE (decl))
  	  && !CP_TYPE_CONST_P (TREE_TYPE (decl)))
  	{
+ 	  auto_diagnostic_group d;
  	  error_at (location,
  		    "a value parameter used in a postcondition must be const");
  	  inform (DECL_SOURCE_LOCATION (decl), "parameter declared here");
*************** check_postconditions_in_redecl (tree old
*** 582,588 ****
    tree t2 = FUNCTION_FIRST_USER_PARM (newdecl);
  
    for (; t1 && t1 != void_list_node;
!   t1 = TREE_CHAIN (t1), t2 = TREE_CHAIN (t2))
      {
        if (parm_used_in_post_p (t1))
  	{
--- 583,589 ----
    tree t2 = FUNCTION_FIRST_USER_PARM (newdecl);
  
    for (; t1 && t1 != void_list_node;
!        t1 = TREE_CHAIN (t1), t2 = TREE_CHAIN (t2))
      {
        if (parm_used_in_post_p (t1))
  	{
*************** check_postconditions_in_redecl (tree old
*** 591,600 ****
  	      && !CP_TYPE_CONST_P (TREE_TYPE (t2))
  	      && !TREE_READONLY (t2))
  	    {
  	      error_at (DECL_SOURCE_LOCATION (t2),
! 	      "value parameter %qE used in a postcondition must be const", t2);
  	      inform (DECL_SOURCE_LOCATION (olddecl),
! 	      "previous declaration here");
  	    }
  	}
      }
--- 592,603 ----
  	      && !CP_TYPE_CONST_P (TREE_TYPE (t2))
  	      && !TREE_READONLY (t2))
  	    {
+ 	      auto_diagnostic_group d;
  	      error_at (DECL_SOURCE_LOCATION (t2),
! 			"value parameter %qE used in a postcondition must be "
! 			"const", t2);
  	      inform (DECL_SOURCE_LOCATION (olddecl),
! 		      "previous declaration here");
  	    }
  	}
      }
diff -Nrcpad gcc-17-20260607/gcc/cp/cp-tree.h gcc-17-20260614/gcc/cp/cp-tree.h
*** gcc-17-20260607/gcc/cp/cp-tree.h	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/cp/cp-tree.h	Sun Jun 14 22:32:07 2026
*************** extern GTY(()) tree cp_global_trees[CPTI
*** 461,466 ****
--- 461,467 ----
        SPLICE_EXPR_EXPRESSION_P (in SPLICE_EXPR)
        OLD_PARM_DECL_P (in PARM_DECL)
        COMPONENT_REF_SPLICE_P (in COMPONENT_REF)
+       TYPE_DECL_OPAQUE_ALIAS_P (in TYPE_DECL)
     1: IDENTIFIER_KIND_BIT_1 (in IDENTIFIER_NODE)
        TI_PENDING_TEMPLATE_FLAG.
        TEMPLATE_PARMS_FOR_INLINE.
*************** struct GTY(()) lang_decl {
*** 4079,4084 ****
--- 4080,4091 ----
     && TYPE_DECL_FOR_LINKAGE_PURPOSES_P (NODE) \
     && DECL_IMPLICIT_TYPEDEF_P (NODE))
  
+ /* Nonzero for TYPE_DECL means that it represents an opaque alias; that is,
+    there is a LAMBDA_EXPR involved in it.  This flag is used to implement
+    dependent_opaque_alias_p.  */
+ #define TYPE_DECL_OPAQUE_ALIAS_P(NODE) \
+   TREE_LANG_FLAG_0 (TYPE_DECL_CHECK (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
*************** extern bool any_value_dependent_elements
*** 8314,8319 ****
--- 8321,8327 ----
  extern bool dependent_template_arg_p		(tree);
  extern bool dependent_omp_for_p			(tree, tree, tree, tree, tree);
  extern tree resolve_typename_type		(tree, bool);
+ extern bool any_lambdas_p			(tree);
  extern tree template_for_substitution		(tree);
  extern bool reregister_specialization		(tree, tree, tree);
  extern tree instantiate_non_dependent_expr	(tree, tsubst_flags_t = tf_error);
diff -Nrcpad gcc-17-20260607/gcc/cp/decl.cc gcc-17-20260614/gcc/cp/decl.cc
*** gcc-17-20260607/gcc/cp/decl.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/cp/decl.cc	Sun Jun 14 22:32:07 2026
*************** identify_goto (tree decl, location_t loc
*** 4197,4202 ****
--- 4197,4203 ----
  {
    if (computed)
      diag_kind = diagnostics::kind::warning;
+   auto_diagnostic_group d;
    bool complained
      = emit_diagnostic (diag_kind, loc, 0,
  		       decl ? G_("jump to label %qD")
*************** cp_make_fname_decl (location_t loc, tree
*** 5906,5923 ****
        if (!release_name)
  	{
  	  cpp_string cstr = { 0, 0 }, strname;
! 	  size_t len = strlen (name) + 3; /* Two for '"'s.  One for NULL.  */
! 	  char *namep = XNEWVEC (char, len);
! 	  snprintf (namep, len, "\"%s\"", name);
! 	  strname.text = (unsigned char *) namep;
! 	  strname.len = len - 1;
! 	  if (cpp_interpret_string (parse_in, &strname, 1, &cstr, CPP_STRING))
  	    {
  	      name = (const char *) cstr.text;
  	      release_name = true;
  	    }
- 
- 	  XDELETEVEC (namep);
  	}
  
        size_t length = strlen (name);
--- 5907,5921 ----
        if (!release_name)
  	{
  	  cpp_string cstr = { 0, 0 }, strname;
! 	  strname.text
! 	    = const_cast <unsigned char *> ((const unsigned char *) name);
! 	  strname.len = strlen (name) + 1;
! 	  if (cpp_translate_string (parse_in, &strname, &cstr, CPP_STRING,
! 				    false))
  	    {
  	      name = (const char *) cstr.text;
  	      release_name = true;
  	    }
  	}
  
        size_t length = strlen (name);
*************** omp_declare_variant_finalize_one (tree d
*** 9171,9176 ****
--- 9169,9175 ----
  		  loc = EXPR_LOC_OR_LOC (variant,
  					 DECL_SOURCE_LOCATION (variant));
  		}
+ 	      auto_diagnostic_group d;
  	      error_at (loc, "argument %d of %qE must be of %<omp_interop_t%>",
  			args->length () + 1, variant);
  	      inform (EXPR_LOCATION (TREE_PURPOSE (append_args_list)),
*************** omp_declare_variant_finalize_one (tree d
*** 9308,9313 ****
--- 9307,9313 ----
  		 i++, varg = TREE_CHAIN (varg))
  	      if (!varg || !c_omp_interop_t_p (TREE_VALUE (varg)))
  		{
+ 		  auto_diagnostic_group d;
  		  error_at (DECL_SOURCE_LOCATION (variant),
  			    "argument %d of %qD must be of %<omp_interop_t%>",
  			    nbase_args + i + 1, variant);
*************** grokdeclarator (const cp_declarator *dec
*** 16156,16161 ****
--- 16156,16165 ----
  	     `using analias = atype;'.  */
  	TYPE_DECL_ALIAS_P (decl) = 1;
  
+       /* We use a flag so that dependent_opaque_alias_p doesn't have to
+ 	 recompute the answer every single time.  */
+       TYPE_DECL_OPAQUE_ALIAS_P (decl) = any_lambdas_p (type);
+ 
        return decl;
      }
  
diff -Nrcpad gcc-17-20260607/gcc/cp/mangle.cc gcc-17-20260614/gcc/cp/mangle.cc
*** gcc-17-20260607/gcc/cp/mangle.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/cp/mangle.cc	Sun Jun 14 22:32:07 2026
*************** write_reflection (tree refl)
*** 4220,4232 ****
    else if (strcmp (prefix, "pa") == 0)
      {
        tree fn = DECL_CONTEXT (arg);
!       tree args = FUNCTION_FIRST_USER_PARM (fn);
!       int idx = 0;
!       while (arg != args)
! 	{
! 	  args = DECL_CHAIN (args);
! 	  ++idx;
! 	}
        write_compact_number (idx);
        write_encoding (fn);
      }
--- 4220,4227 ----
    else if (strcmp (prefix, "pa") == 0)
      {
        tree fn = DECL_CONTEXT (arg);
!       /* DECL_PARM_INDEX is 1-based but here we want a 0-based index.  */
!       const int idx = DECL_PARM_INDEX (arg) - 1;
        write_compact_number (idx);
        write_encoding (fn);
      }
diff -Nrcpad gcc-17-20260607/gcc/cp/method.cc gcc-17-20260614/gcc/cp/method.cc
*** gcc-17-20260607/gcc/cp/method.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/cp/method.cc	Sun Jun 14 22:32:07 2026
*************** walk_field_subobs (tree fields, special_
*** 2777,2782 ****
--- 2777,2783 ----
  	    {
  	      if (diag)
  		{
+ 		  auto_diagnostic_group d;
  		  error ("uninitialized const member in %q#T",
  			 current_class_type);
  		  inform (DECL_SOURCE_LOCATION (field),
*************** walk_field_subobs (tree fields, special_
*** 2788,2793 ****
--- 2789,2795 ----
  	    {
  	      if (diag)
  		{
+ 		  auto_diagnostic_group d;
  		  error ("uninitialized reference member in %q#T",
  			 current_class_type);
  		  inform (DECL_SOURCE_LOCATION (field),
diff -Nrcpad gcc-17-20260607/gcc/cp/pt.cc gcc-17-20260614/gcc/cp/pt.cc
*** gcc-17-20260607/gcc/cp/pt.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/cp/pt.cc	Sun Jun 14 22:32:07 2026
*************** dependent_alias_template_spec_p (const_t
*** 6924,6958 ****
  bool
  dependent_opaque_alias_p (const_tree t)
  {
-   auto any_lambda_targ_p = [] (tree args)
-     {
-       for (tree arg : tree_vec_range (args))
- 	if (TREE_CODE (arg) == LAMBDA_EXPR)
- 	  return true;
-       return false;
-     };
- 
    return (TYPE_P (t)
  	  && typedef_variant_p (t)
! 	  && (any_dependent_type_attributes_p (DECL_ATTRIBUTES
! 					       (TYPE_NAME (t)))
! 	      /* Treat a dependent decltype(lambda) alias as opaque so that we
! 		 don't prematurely strip it when used as a template argument.
! 		 Otherwise substitution into each occurrence of the (stripped)
! 		 alias would incorrectly yield a distinct lambda type.  */
! 	      || (TREE_CODE (t) == DECLTYPE_TYPE
! 		  && TREE_CODE (DECLTYPE_TYPE_EXPR (t)) == LAMBDA_EXPR
! 		  && !typedef_variant_p (DECL_ORIGINAL_TYPE (TYPE_NAME (t))))
! 	      /* Also treat an alias to A<lambda> as opaque so that it doesn't
! 		 "leak" into a deeper template context which would cause us to
! 		 over substitute into the lambda.  */
! 	      /* FIXME These lambda checks don't recognize deeply nested lambda
! 		 subexpressions, and we can't use walk_tree here because it's
! 		 slow.  Maybe a tree flag indicating typedef opaqueness?  */
! 	      || (TYPE_TEMPLATE_INFO (t)
! 		  && PRIMARY_TEMPLATE_P (TYPE_TI_TEMPLATE (t))
! 		  && any_lambda_targ_p (INNERMOST_TEMPLATE_ARGS
! 					(TYPE_TI_ARGS (t))))));
  }
  
  /* Return the number of innermost template parameters in TMPL.  */
--- 6924,6941 ----
  bool
  dependent_opaque_alias_p (const_tree t)
  {
    return (TYPE_P (t)
  	  && typedef_variant_p (t)
! 	  /* Treat a dependent decltype(lambda) alias as opaque so that we
! 	     don't prematurely strip it when used as a template argument.
! 	     Otherwise substitution into each occurrence of the (stripped)
! 	     alias would incorrectly yield a distinct lambda type.  Also
! 	     treat an alias to A<lambda> as opaque so that it doesn't
! 	     "leak" into a deeper template context which would cause us to
! 	     over substitute into the lambda.  */
! 	  && (TYPE_DECL_OPAQUE_ALIAS_P (TYPE_NAME (t))
! 	      || any_dependent_type_attributes_p
! 		  (DECL_ATTRIBUTES (TYPE_NAME (t)))));
  }
  
  /* Return the number of innermost template parameters in TMPL.  */
*************** tsubst_decl (tree t, tree args, tsubst_f
*** 16075,16085 ****
  	    cp_apply_type_quals_to_decl (cp_type_quals (type), r);
  
  	    if (DECL_C_BIT_FIELD (r))
! 	      /* For bit-fields, DECL_BIT_FIELD_REPRESENTATIVE gives the
! 		 number of bits.  */
! 	      DECL_BIT_FIELD_REPRESENTATIVE (r)
! 		= tsubst_expr (DECL_BIT_FIELD_REPRESENTATIVE (t), args,
! 			       complain, in_decl);
  	    if (DECL_INITIAL (t))
  	      {
  		/* Set up DECL_TEMPLATE_INFO so that we can get at the
--- 16058,16083 ----
  	    cp_apply_type_quals_to_decl (cp_type_quals (type), r);
  
  	    if (DECL_C_BIT_FIELD (r))
! 	      {
! 		/* For bit-fields, DECL_BIT_FIELD_REPRESENTATIVE gives the
! 		   number of bits.  */
! 		tree width
! 		  = tsubst_expr (DECL_BIT_FIELD_REPRESENTATIVE (t), args,
! 				 complain, in_decl);
! 		if (width
! 		    && width != error_mark_node
! 		    && !type_dependent_expression_p (width)
! 		    && !INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P
! 			 (TREE_TYPE (width)))
! 		  {
! 		    if (complain & tf_error)
! 		      error_at (DECL_SOURCE_LOCATION (t),
! 		      		"width of bit-field %qD has non-integral "
! 				"type %qT", r, TREE_TYPE (width));
! 		    RETURN (error_mark_node);
! 		  }
! 		DECL_BIT_FIELD_REPRESENTATIVE (r) = width;
! 	      }
  	    if (DECL_INITIAL (t))
  	      {
  		/* Set up DECL_TEMPLATE_INFO so that we can get at the
*************** tsubst_decl (tree t, tree args, tsubst_f
*** 16483,16488 ****
--- 16481,16489 ----
  	/* Preserve a typedef that names a type.  */
  	if (is_typedef_decl (r) && type != error_mark_node)
  	  {
+ 	    /* Now that we've substituted the type, it may not be opaque
+ 	       anymore.  */
+ 	    TYPE_DECL_OPAQUE_ALIAS_P (r) = any_lambdas_p (type);
  	    DECL_ORIGINAL_TYPE (r) = NULL_TREE;
  	    set_underlying_type (r);
  
*************** do_type_instantiation (tree t, tree stor
*** 28325,28330 ****
--- 28326,28346 ----
        }
  }
  
+ /* Return true if T contains any LAMBDA_EXPRs.  */
+ 
+ bool
+ any_lambdas_p (tree t)
+ {
+   walk_tree_fn find_lambda = [](tree *tp, int *, void *)
+     {
+       if (TREE_CODE (*tp) == LAMBDA_EXPR)
+ 	return *tp;
+       return NULL_TREE;
+     };
+ 
+   return !!cp_walk_tree_without_duplicates (&t, find_lambda, nullptr);
+ }
+ 
  /* Given a function DECL, which is a specialization of TMPL, modify
     DECL to be a re-instantiation of TMPL with the same template
     arguments.  TMPL should be the template into which tsubst'ing
*************** regenerate_decl_from_template (tree decl
*** 28368,28382 ****
  
        /* A template with a lambda in the signature also changes type if
  	 regenerated (PR119401).  */
!       walk_tree_fn find_lambda
! 	= [](tree *tp, int *, void *)
! 	{
! 	  if (TREE_CODE (*tp) == LAMBDA_EXPR)
! 	    return *tp;
! 	  return NULL_TREE;
! 	};
!       if (cp_walk_tree_without_duplicates
! 	  (&TREE_TYPE (tmpl), find_lambda, nullptr))
  	goto done;
  
        /* Use the source location of the definition.  */
--- 28384,28390 ----
  
        /* A template with a lambda in the signature also changes type if
  	 regenerated (PR119401).  */
!       if (any_lambdas_p (TREE_TYPE (tmpl)))
  	goto done;
  
        /* Use the source location of the definition.  */
diff -Nrcpad gcc-17-20260607/gcc/cp/semantics.cc gcc-17-20260614/gcc/cp/semantics.cc
*** gcc-17-20260607/gcc/cp/semantics.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/cp/semantics.cc	Sun Jun 14 22:32:07 2026
*************** finish_omp_clauses (tree clauses, enum c
*** 10678,10683 ****
--- 10678,10684 ----
        && (!init_use_destroy_seen
  	  || (init_seen && init_no_targetsync_clause)))
      {
+       auto_diagnostic_group d;
        error_at (OMP_CLAUSE_LOCATION (depend_clause),
  		"%<depend%> clause requires action clauses with "
  		"%<targetsync%> interop-type");
diff -Nrcpad gcc-17-20260607/gcc/cp/tree.cc gcc-17-20260614/gcc/cp/tree.cc
*** gcc-17-20260607/gcc/cp/tree.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/cp/tree.cc	Sun Jun 14 22:32:07 2026
*************** validate_trivial_abi_attribute (tree typ
*** 6060,6065 ****
--- 6060,6066 ----
    /* Check for virtual bases.  */
    if (CLASSTYPE_VBASECLASSES (type))
      {
+       auto_diagnostic_group d;
        if (warning (OPT_Wattributes, "%<trivial_abi%> cannot be applied to %qT",
  		   type))
  	inform (input_location, "has a virtual base");
*************** validate_trivial_abi_attribute (tree typ
*** 6071,6076 ****
--- 6072,6078 ----
    /* Check for virtual member functions.  */
    if (TYPE_POLYMORPHIC_P (type))
      {
+       auto_diagnostic_group d;
        if (warning (OPT_Wattributes, "%<trivial_abi%> cannot be applied to %qT",
  		   type))
  	inform (input_location, "is polymorphic");
*************** validate_trivial_abi_attribute (tree typ
*** 6090,6095 ****
--- 6092,6098 ----
  
  	  if (TREE_ADDRESSABLE (base_type))
  	    {
+ 	      auto_diagnostic_group d;
  	      if (warning (OPT_Wattributes,
  			   "%<trivial_abi%> cannot be applied to %qT", type))
  		inform (input_location, "has a non-trivial base class %qT",
*************** validate_trivial_abi_attribute (tree typ
*** 6110,6115 ****
--- 6113,6119 ----
  
  	  if (CLASS_TYPE_P (field_type) && TREE_ADDRESSABLE (field_type))
  	    {
+ 	      auto_diagnostic_group d;
  	      if (warning (OPT_Wattributes,
  			   "%<trivial_abi%> cannot be applied to %qT", type))
  		inform (input_location, "has a non-static data member "
*************** validate_trivial_abi_attribute (tree typ
*** 6124,6129 ****
--- 6128,6134 ----
    /* Check that not all copy/move constructors are deleted.  */
    if (!classtype_has_non_deleted_copy_or_move_ctor (type))
      {
+       auto_diagnostic_group d;
        if (warning (OPT_Wattributes, "%<trivial_abi%> cannot be applied to %qT",
  		   type))
  	inform (input_location,
diff -Nrcpad gcc-17-20260607/gcc/cp/typeck.cc gcc-17-20260614/gcc/cp/typeck.cc
*** gcc-17-20260607/gcc/cp/typeck.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/cp/typeck.cc	Sun Jun 14 22:32:07 2026
*************** build_x_bswapg_bitreverseg (location_t l
*** 7126,7131 ****
--- 7126,7133 ----
        return error_mark_node;
      }
    tree arg = (*args)[0];
+   if (error_operand_p (arg))
+     return error_mark_node;
    if (type_dependent_expression_p (arg))
      {
        tree exp = build_min_nt_call_vec (NULL, args);
diff -Nrcpad gcc-17-20260607/gcc/cp/typeck2.cc gcc-17-20260614/gcc/cp/typeck2.cc
*** gcc-17-20260607/gcc/cp/typeck2.cc	Sun Jun  7 22:32:06 2026
--- gcc-17-20260614/gcc/cp/typeck2.cc	Sun Jun 14 22:32:07 2026
*************** digest_init_r (tree type, tree init, int
*** 1476,1481 ****
--- 1476,1482 ----
  	  tree field = next_aggregate_field (TYPE_FIELDS (type));
  	  if (field && DECL_FIELD_IS_BASE (field))
  	    {
+ 	      auto_diagnostic_group d;
  	      if (warning_at (loc, 0, "initializing a base class of type %qT "
  			      "results in object slicing", TREE_TYPE (field)))
  		inform (loc, "remove %<{ }%> around initializer");
diff -Nrcpad gcc-17-20260607/gcc/defaults.h gcc-17-20260614/gcc/defaults.h
*** gcc-17-20260607/gcc/defaults.h	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/defaults.h	Sun Jun 14 22:32:07 2026
*************** see the files COPYING3 and COPYING.RUNTI
*** 1463,1466 ****
--- 1463,1472 ----
  typedef TARGET_UNIT target_unit;
  #endif
  
+ /* Maximum length of COLLECT_GCC_OPTIONS before the driver spills it
+    to a response file.  Hosts with tighter limits may override this.  */
+ #ifndef COLLECT2_OPTIONS_MAX_LENGTH
+ #define COLLECT2_OPTIONS_MAX_LENGTH 1024
+ #endif
+ 
  #endif  /* ! GCC_DEFAULTS_H */
diff -Nrcpad gcc-17-20260607/gcc/doc/cpp.texi gcc-17-20260614/gcc/doc/cpp.texi
*** gcc-17-20260607/gcc/doc/cpp.texi	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/doc/cpp.texi	Sun Jun 14 22:32:07 2026
*************** This manual contains no Invariant Sectio
*** 40,46 ****
  @c man end
  @end copying
  
! @c Create a separate index for command line options.
  @defcodeindex op
  @syncodeindex vr op
  
--- 40,46 ----
  @c man end
  @end copying
  
! @c Create a separate index for command-line options.
  @defcodeindex op
  @syncodeindex vr op
  
*************** as @samp{#include}.
*** 3951,3963 ****
  @item #embed <@var{file}>
  If @var{file} is an absolute filename, this includes the mentioned
  file, otherwise searches it in directories specified by the
! @option{--embed-dir=} command line option for the @var{file}.
  
  @item #embed "@var{file}"
  This variant searches @var{file} in the same directory as the source
  file which uses the @code{#embed} directive and only if not found there
  continues searching directories specified by the @option{--embed-dir=}
! command line option.
  @end table
  
  The @code{#embed} directive is expanded as if it was a sequence of
--- 3951,3963 ----
  @item #embed <@var{file}>
  If @var{file} is an absolute filename, this includes the mentioned
  file, otherwise searches it in directories specified by the
! @option{--embed-dir=} command-line option for the @var{file}.
  
  @item #embed "@var{file}"
  This variant searches @var{file} in the same directory as the source
  file which uses the @code{#embed} directive and only if not found there
  continues searching directories specified by the @option{--embed-dir=}
! command-line option.
  @end table
  
  The @code{#embed} directive is expanded as if it was a sequence of
diff -Nrcpad gcc-17-20260607/gcc/doc/extend.texi gcc-17-20260614/gcc/doc/extend.texi
*** gcc-17-20260607/gcc/doc/extend.texi	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/doc/extend.texi	Sun Jun 14 22:32:07 2026
*************** void amo_stdat_smin (int64_t *, int64_t)
*** 27145,27150 ****
--- 27145,27168 ----
  void amo_stdat_stwin (int64_t *, int64_t);
  @end smallexample
  
+ Future ISA of the PowerPC added new atomic memory operation (AMO) instructions.
+ 
+ The AMO functions described in this section may be available on future PowerPC
+ processors. At present, these functions exist to allow testing of new
+ instructions. There is no guarantee that these instructions will actually be
+ implemented.
+ 
+ The functions supported are:
+ 
+ @smallexample
+ #include <amo.h>
+ 
+ uint32_t amo_lwat_cas_eq  (uint32_t *, uint32_t, uint32_t);
+ int32_t  amo_lwat_scas_eq (int32_t *, int32_t, int32_t);
+ uint64_t amo_ldat_cas_eq  (uint64_t *, uint64_t, uint64_t);
+ int64_t  amo_ldat_scas_eq (int64_t *, int64_t, int64_t);
+ @end smallexample
+ 
  @node PowerPC Matrix-Multiply Assist Built-in Functions
  @subsection PowerPC Matrix-Multiply Assist Built-in Functions
  ISA 3.1 of the PowerPC added new Matrix-Multiply Assist (MMA) instructions.
diff -Nrcpad gcc-17-20260607/gcc/doc/fragments.texi gcc-17-20260614/gcc/doc/fragments.texi
*** gcc-17-20260607/gcc/doc/fragments.texi	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/doc/fragments.texi	Sun Jun 14 22:32:07 2026
*************** produces both big and little endian code
*** 68,74 ****
  arrange for multiple versions of @file{libgcc.a} to be compiled, one for
  each set of incompatible options.  When GCC invokes the linker, it
  arranges to link in the right version of @file{libgcc.a}, based on
! the command line options used.
  
  The @code{MULTILIB_OPTIONS} macro lists the set of options for which
  special versions of @file{libgcc.a} must be built.  Write options that
--- 68,74 ----
  arrange for multiple versions of @file{libgcc.a} to be compiled, one for
  each set of incompatible options.  When GCC invokes the linker, it
  arranges to link in the right version of @file{libgcc.a}, based on
! the command-line options used.
  
  The @code{MULTILIB_OPTIONS} macro lists the set of options for which
  special versions of @file{libgcc.a} must be built.  Write options that
diff -Nrcpad gcc-17-20260607/gcc/doc/gcc.texi gcc-17-20260614/gcc/doc/gcc.texi
*** gcc-17-20260607/gcc/doc/gcc.texi	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/doc/gcc.texi	Sun Jun 14 22:32:07 2026
***************
*** 26,32 ****
  
  @settitle Using the GNU Compiler Collection (GCC)
  
! @c Create a separate index for command line options.
  @defcodeindex op
  @c Likewise create a separate index for attributes.
  @defindex at
--- 26,32 ----
  
  @settitle Using the GNU Compiler Collection (GCC)
  
! @c Create a separate index for command-line options.
  @defcodeindex op
  @c Likewise create a separate index for attributes.
  @defindex at
*************** object files.
*** 208,214 ****
  @appendix Indices
  
  @menu
! * Option Index::                Index to command line options.
  * Attribute Index::             Index of GNU extension attributes.
  * Concept and Symbol Index::    Index of concepts and symbol names.
  @end menu
--- 208,214 ----
  @appendix Indices
  
  @menu
! * Option Index::                Index of command-line options.
  * Attribute Index::             Index of GNU extension attributes.
  * Concept and Symbol Index::    Index of concepts and symbol names.
  @end menu
diff -Nrcpad gcc-17-20260607/gcc/doc/gccint.texi gcc-17-20260614/gcc/doc/gccint.texi
*** gcc-17-20260607/gcc/doc/gccint.texi	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/doc/gccint.texi	Sun Jun 14 22:32:07 2026
***************
*** 12,18 ****
  
  @settitle GNU Compiler Collection (GCC) Internals
  
! @c Create a separate index for command line options.
  @defcodeindex op
  
  @c Likewise for parameters.
--- 12,18 ----
  
  @settitle GNU Compiler Collection (GCC) Internals
  
! @c Create a separate index for command-line options.
  @defcodeindex op
  
  @c Likewise for parameters.
*************** Additional tutorial information is linke
*** 143,149 ****
  * GNU Free Documentation License:: How you can copy and share this manual.
  * Contributors::    People who have contributed to GCC.
  
! * Option Index::    Index to command line options.
  * Parameter Index:: Index to parameters settable from the command line.
  * Concept Index::   Index of concepts and symbol names.
  * Named Pattern Index:: Index of standard pattern names.
--- 143,149 ----
  * GNU Free Documentation License:: How you can copy and share this manual.
  * Contributors::    People who have contributed to GCC.
  
! * Option Index::    Index to command-line options.
  * Parameter Index:: Index to parameters settable from the command line.
  * Concept Index::   Index of concepts and symbol names.
  * Named Pattern Index:: Index of standard pattern names.
*************** Additional tutorial information is linke
*** 198,204 ****
  @node Option Index
  @unnumbered Option Index
  
! GCC's command line options are indexed here without any initial @samp{-}
  or @samp{--}.  Where an option has both positive and negative forms
  (such as @option{-f@var{option}} and @option{-fno-@var{option}}),
  relevant entries in the manual are indexed under the most appropriate
--- 198,204 ----
  @node Option Index
  @unnumbered Option Index
  
! GCC's command-line options are indexed here without any initial @samp{-}
  or @samp{--}.  Where an option has both positive and negative forms
  (such as @option{-f@var{option}} and @option{-fno-@var{option}}),
  relevant entries in the manual are indexed under the most appropriate
diff -Nrcpad gcc-17-20260607/gcc/doc/gcov.texi gcc-17-20260614/gcc/doc/gcov.texi
*** gcc-17-20260607/gcc/doc/gcov.texi	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/doc/gcov.texi	Sun Jun 14 22:32:07 2026
*************** program source code.  The format is
*** 665,671 ****
  @end smallexample
  
  Additional block information may succeed each line, when requested by
! command line option.  The @var{execution_count} is @samp{-} for lines
  containing no code.  Unexecuted lines are marked @samp{#####} or
  @samp{=====}, depending on whether they are reachable by
  non-exceptional paths or only exceptional paths such as C++ exception
--- 665,671 ----
  @end smallexample
  
  Additional block information may succeed each line, when requested by
! a command-line option.  The @var{execution_count} is @samp{-} for lines
  containing no code.  Unexecuted lines are marked @samp{#####} or
  @samp{=====}, depending on whether they are reachable by
  non-exceptional paths or only exceptional paths such as C++ exception
diff -Nrcpad gcc-17-20260607/gcc/doc/gm2.texi gcc-17-20260614/gcc/doc/gm2.texi
*** gcc-17-20260607/gcc/doc/gm2.texi	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/doc/gm2.texi	Sun Jun 14 22:32:07 2026
*************** default if a requested definition module
*** 408,414 ****
  
  @item -fdump-system-exports
  display all inbuilt system items.
! This is an internal command line option.
  
  @item -fexceptions
  turn on exception handling code.  By default this option is on.
--- 408,414 ----
  
  @item -fdump-system-exports
  display all inbuilt system items.
! This is an internal command-line option.
  
  @item -fexceptions
  turn on exception handling code.  By default this option is on.
*************** this option forces the use of the static
*** 466,472 ****
  
  @item -fm2-debug-trace=
  turn on trace debugging using a comma separated list:
! @samp{line,token,quad,all}.  This is an internal command line option.
  
  @item -fm2-dump=
  enable dumping of modula-2 internal representation of data structures
--- 466,472 ----
  
  @item -fm2-debug-trace=
  turn on trace debugging using a comma separated list:
! @samp{line,token,quad,all}.  This is an internal command-line option.
  
  @item -fm2-dump=
  enable dumping of modula-2 internal representation of data structures
*************** anywhere   __COLUMN__               Give
*** 1738,1744 ****
  @end example
  
  The preprocessor @samp{cpp} can be invoked via the @samp{-fcpp}
! command line option.  This in turn invokes @samp{cpp} with the
  following arguments @samp{-traditional -lang-asm}.  These options
  preserve comments and all quotations.  @samp{gm2} treats a @samp{#}
  character in the first column as a preprocessor directive unless
--- 1738,1744 ----
  @end example
  
  The preprocessor @samp{cpp} can be invoked via the @samp{-fcpp}
! command-line option.  This in turn invokes @samp{cpp} with the
  following arguments @samp{-traditional -lang-asm}.  These options
  preserve comments and all quotations.  @samp{gm2} treats a @samp{#}
  character in the first column as a preprocessor directive unless
*************** is unsigned and is mapped onto the targe
*** 3239,3245 ****
  whereas the type @code{CSSIZE_T} is mapped onto the signed C data type
  @code{ssize_t}.  The default size for the signed type @code{COFF_T} is
  the same as @code{CSSIZE_T} and this can be overridden by the
! @code{-fm2-file-offset-bits=} command line option.
  
  It is anticipated that these should only be used to provide cross
  platform definition modules for C libraries.
--- 3239,3245 ----
  whereas the type @code{CSSIZE_T} is mapped onto the signed C data type
  @code{ssize_t}.  The default size for the signed type @code{COFF_T} is
  the same as @code{CSSIZE_T} and this can be overridden by the
! @code{-fm2-file-offset-bits=} command-line option.
  
  It is anticipated that these should only be used to provide cross
  platform definition modules for C libraries.
*************** is unsigned and is mapped onto the targe
*** 3259,3265 ****
  whereas the type @code{CSSIZE_T} is mapped onto the signed C data type
  @code{ssize_t}.  The default size for the signed type @code{COFF_T} is
  the same as @code{CSSIZE_T} and this can be overridden by the
! @code{-fm2-file-offset-bits=} command line option.
  
  It is anticipated that these should only be used to provide cross
  platform definition modules for C libraries.
--- 3259,3265 ----
  whereas the type @code{CSSIZE_T} is mapped onto the signed C data type
  @code{ssize_t}.  The default size for the signed type @code{COFF_T} is
  the same as @code{CSSIZE_T} and this can be overridden by the
! @code{-fm2-file-offset-bits=} command-line option.
  
  It is anticipated that these should only be used to provide cross
  platform definition modules for C libraries.
diff -Nrcpad gcc-17-20260607/gcc/doc/hostconfig.texi gcc-17-20260614/gcc/doc/hostconfig.texi
*** gcc-17-20260607/gcc/doc/hostconfig.texi	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/doc/hostconfig.texi	Sun Jun 14 22:32:07 2026
*************** will not work reliably.
*** 205,210 ****
--- 205,215 ----
  If defined, a C statement (sans semicolon) that performs host-dependent
  initialization when @code{collect2} is being initialized.
  
+ @item COLLECT2_OPTIONS_MAX_LENGTH
+ If defined, the maximum byte length of @env{COLLECT_GCC_OPTIONS}
+ before the driver spills it to a response file.  The default is
+ @code{1024}.
+ 
  @item GCC_DRIVER_HOST_INITIALIZATION
  If defined, a C statement (sans semicolon) that performs host-dependent
  initialization when a compilation driver is being initialized.
diff -Nrcpad gcc-17-20260607/gcc/doc/ifn.texi gcc-17-20260614/gcc/doc/ifn.texi
*** gcc-17-20260607/gcc/doc/ifn.texi	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/doc/ifn.texi	Sun Jun 14 22:32:07 2026
*************** The @code{IFN_FLOATTOBITINT} internal fu
*** 1546,1550 ****
--- 1546,1556 ----
  The @code{IFN_BITINTTOFLOAT} internal function is expanded by the
  @code{expand_BITINTTOFLOAT} function.
  
+ @cindex @code{IFN_VARYING} internal function
+ @item @samp{IFN_VARYING}
+ Use @code{IFN_VARYING} as a temporary placeholder for a value whose
+ definition is still being built by the current pass.  The pass that creates
+ it must replace it before finishing; the verifier rejects any remaining calls.
+ 
  @end table
  
diff -Nrcpad gcc-17-20260607/gcc/doc/install.texi gcc-17-20260614/gcc/doc/install.texi
*** gcc-17-20260607/gcc/doc/install.texi	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/doc/install.texi	Sun Jun 14 22:32:07 2026
*************** On MIPS targets, make @option{-mlxc1-sxc
*** 1886,1897 ****
  On MIPS targets, make @option{-mno-lxc1-sxc1} the default when no
  @option{-mlxc1-sxc1} option is passed.  The indexed load/store
  instructions are not directly a problem but can lead to unexpected
! behaviour when deployed in an application intended for a 32-bit address
  space but run on a 64-bit processor.  The issue is seen because all
  known MIPS 64-bit Linux kernels execute o32 and n32 applications
! with 64-bit addressing enabled which affects the overflow behaviour
  of the indexed addressing mode.  GCC will assume that ordinary
! 32-bit arithmetic overflow behaviour is the same whether performed
  as an @code{addu} instruction or as part of the address calculation
  in @code{lwxc1} type instructions.  This assumption holds true in a
  pure 32-bit environment and can hold true in a 64-bit environment if
--- 1886,1897 ----
  On MIPS targets, make @option{-mno-lxc1-sxc1} the default when no
  @option{-mlxc1-sxc1} option is passed.  The indexed load/store
  instructions are not directly a problem but can lead to unexpected
! behavior when deployed in an application intended for a 32-bit address
  space but run on a 64-bit processor.  The issue is seen because all
  known MIPS 64-bit Linux kernels execute o32 and n32 applications
! with 64-bit addressing enabled which affects the overflow behavior
  of the indexed addressing mode.  GCC will assume that ordinary
! 32-bit arithmetic overflow behavior is the same whether performed
  as an @code{addu} instruction or as part of the address calculation
  in @code{lwxc1} type instructions.  This assumption holds true in a
  pure 32-bit environment and can hold true in a 64-bit environment if
diff -Nrcpad gcc-17-20260607/gcc/doc/invoke.texi gcc-17-20260614/gcc/doc/invoke.texi
*** gcc-17-20260607/gcc/doc/invoke.texi	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/doc/invoke.texi	Sun Jun 14 22:32:07 2026
*************** Emit custom warnings with internal detai
*** 12906,12912 ****
  To tell GCC to emit extra information for use by a debugger, in almost
  all cases you need only to add @option{-g} to your other options.  Some debug
  formats can co-exist (like DWARF with CTF) when each of them is enabled
! explicitly by adding the respective command line option to your other options.
  
  GCC allows you to use @option{-g} with
  @option{-O}.  The shortcuts taken by optimized code may occasionally
--- 12906,12912 ----
  To tell GCC to emit extra information for use by a debugger, in almost
  all cases you need only to add @option{-g} to your other options.  Some debug
  formats can co-exist (like DWARF with CTF) when each of them is enabled
! explicitly by adding the respective command-line option to your other options.
  
  GCC allows you to use @option{-g} with
  @option{-O}.  The shortcuts taken by optimized code may occasionally
*************** in their names, but apply to all current
*** 12972,12978 ****
  Request BTF debug information.  BTF is the default debugging format for the
  eBPF target.  On other targets, like x86, BTF debug information can be
  generated along with DWARF debug information when both of the debug formats are
! enabled explicitly via their respective command line options.
  
  @opindex gprune-btf
  @opindex gno-prune-btf
--- 12972,12978 ----
  Request BTF debug information.  BTF is the default debugging format for the
  eBPF target.  On other targets, like x86, BTF debug information can be
  generated along with DWARF debug information when both of the debug formats are
! enabled explicitly via their respective command-line options.
  
  @opindex gprune-btf
  @opindex gno-prune-btf
*************** Permissible names are: @samp{arm7tdmi},
*** 23732,23738 ****
  @samp{neoverse-n1}, @samp{neoverse-n2}, @samp{neoverse-v1}, @samp{xscale},
  @samp{iwmmxt}, @samp{iwmmxt2}, @samp{ep9312}, @samp{fa526}, @samp{fa626},
  @samp{fa606te}, @samp{fa626te}, @samp{fmp626}, @samp{fa726te}, @samp{star-mc1},
! @samp{xgene1}.
  
  Additionally, this option can specify that GCC should tune the performance
  of the code for a big.LITTLE system.  Permissible names are:
--- 23732,23738 ----
  @samp{neoverse-n1}, @samp{neoverse-n2}, @samp{neoverse-v1}, @samp{xscale},
  @samp{iwmmxt}, @samp{iwmmxt2}, @samp{ep9312}, @samp{fa526}, @samp{fa626},
  @samp{fa606te}, @samp{fa626te}, @samp{fmp626}, @samp{fa726te}, @samp{star-mc1},
! @samp{star-mc3}, @samp{xgene1}.
  
  Additionally, this option can specify that GCC should tune the performance
  of the code for a big.LITTLE system.  Permissible names are:
*************** The following extension options are comm
*** 23792,23819 ****
  @table @samp
  @item +nodsp
  Disable the DSP instructions on @samp{cortex-m33}, @samp{cortex-m35p},
! @samp{cortex-m52}, @samp{cortex-m55} and @samp{cortex-m85}.
  Also disable the M-Profile Vector Extension (MVE) integer and
  single precision floating-point instructions on
! @samp{cortex-m52}, @samp{cortex-m55} and @samp{cortex-m85}.
  
  @item +nopacbti
  Disable the Pointer Authentication and Branch Target Identification Extension
! on @samp{cortex-m52} and @samp{cortex-m85}.
  
  @item +nomve
  Disable the M-Profile Vector Extension (MVE) integer and single precision
! floating-point instructions on @samp{cortex-m52}, @samp{cortex-m55} and
! @samp{cortex-m85}.
  
  @item +nomve.fp
  Disable the M-Profile Vector Extension (MVE) single precision floating-point
! instructions on @samp{cortex-m52}, @samp{cortex-m55} and @samp{cortex-m85}.
  
  @item +cdecp0, +cdecp1, ... , +cdecp7
  Enable the Custom Datapath Extension (CDE) on selected coprocessors according
  to the numbers given in the options in the range 0 to 7 on @samp{cortex-m52},
! @samp{cortex-m55}, @samp{cortex-m85} and @samp{star-mc1}.
  
  @item  +nofp
  Disables the floating-point instructions on @samp{arm9e},
--- 23792,23820 ----
  @table @samp
  @item +nodsp
  Disable the DSP instructions on @samp{cortex-m33}, @samp{cortex-m35p},
! @samp{cortex-m52}, @samp{cortex-m55}, @samp{cortex-m85} and @samp{star-mc3}.
  Also disable the M-Profile Vector Extension (MVE) integer and
  single precision floating-point instructions on
! @samp{cortex-m52}, @samp{cortex-m55}, @samp{cortex-m85} and @samp{star-mc3}.
  
  @item +nopacbti
  Disable the Pointer Authentication and Branch Target Identification Extension
! on @samp{cortex-m52}, @samp{cortex-m85} and @samp{star-mc3}.
  
  @item +nomve
  Disable the M-Profile Vector Extension (MVE) integer and single precision
! floating-point instructions on @samp{cortex-m52}, @samp{cortex-m55},
! @samp{cortex-m85} and @samp{star-mc3}.
  
  @item +nomve.fp
  Disable the M-Profile Vector Extension (MVE) single precision floating-point
! instructions on @samp{cortex-m52}, @samp{cortex-m55}, @samp{cortex-m85} and
! @samp{star-mc3}.
  
  @item +cdecp0, +cdecp1, ... , +cdecp7
  Enable the Custom Datapath Extension (CDE) on selected coprocessors according
  to the numbers given in the options in the range 0 to 7 on @samp{cortex-m52},
! @samp{cortex-m55}, @samp{cortex-m85}, @samp{star-mc1} and @samp{star-mc3}.
  
  @item  +nofp
  Disables the floating-point instructions on @samp{arm9e},
*************** Disables the floating-point instructions
*** 23821,23827 ****
  @samp{arm1020e}, @samp{arm1022e}, @samp{arm926ej-s},
  @samp{arm1026ej-s}, @samp{cortex-r5}, @samp{cortex-r7}, @samp{cortex-r8},
  @samp{cortex-m4}, @samp{cortex-m7}, @samp{cortex-m33}, @samp{cortex-m35p},
! @samp{cortex-m52}, @samp{cortex-m55} and @samp{cortex-m85}.
  Disables the floating-point and SIMD instructions on
  @samp{generic-armv7-a}, @samp{cortex-a5}, @samp{cortex-a7},
  @samp{cortex-a8}, @samp{cortex-a9}, @samp{cortex-a12},
--- 23822,23828 ----
  @samp{arm1020e}, @samp{arm1022e}, @samp{arm926ej-s},
  @samp{arm1026ej-s}, @samp{cortex-r5}, @samp{cortex-r7}, @samp{cortex-r8},
  @samp{cortex-m4}, @samp{cortex-m7}, @samp{cortex-m33}, @samp{cortex-m35p},
! @samp{cortex-m52}, @samp{cortex-m55}, @samp{cortex-m85} and @samp{star-mc3}.
  Disables the floating-point and SIMD instructions on
  @samp{generic-armv7-a}, @samp{cortex-a5}, @samp{cortex-a7},
  @samp{cortex-a8}, @samp{cortex-a9}, @samp{cortex-a12},
*************** Development Tools Engineering Specificat
*** 24165,24173 ****
  @opindex mno-fix-cmse-cve-2021-35465
  @item -mfix-cmse-cve-2021-35465
  Mitigate against a potential security issue with the @code{VLLDM} instruction
! in some M-profile devices when using CMSE (CVE-2021-365465).  This option is
  enabled by default when the option @option{-mcpu=} is used with
! @code{cortex-m33}, @code{cortex-m35p}, @code{cortex-m52}, @code{cortex-m55},
  @code{cortex-m85} or @code{star-mc1}. The option @option{-mno-fix-cmse-cve-2021-35465}
  can be used to disable the mitigation.
  
--- 24166,24174 ----
  @opindex mno-fix-cmse-cve-2021-35465
  @item -mfix-cmse-cve-2021-35465
  Mitigate against a potential security issue with the @code{VLLDM} instruction
! in some M-profile devices when using CMSE (CVE-2021-35465).  This option is
  enabled by default when the option @option{-mcpu=} is used with
! @code{cortex-m33}, @code{cortex-m35p}, @code{cortex-m55},
  @code{cortex-m85} or @code{star-mc1}. The option @option{-mno-fix-cmse-cve-2021-35465}
  can be used to disable the mitigation.
  
*************** to set up FLMAP according to symbol @cod
*** 24434,24440 ****
  @item -nodevicespecs
  Don't add @option{-specs=device-specs/specs-@var{mcu}} to the compiler driver's
  command line.  The user takes responsibility for supplying the sub-processes
! like compiler proper, assembler and linker with appropriate command line
  options.  This means that the user has to supply her private device specs
  file by means of @option{-specs=@var{path-to-specs-file}}.  There is no
  more need for option @option{-mmcu=@var{mcu}}.
--- 24435,24441 ----
  @item -nodevicespecs
  Don't add @option{-specs=device-specs/specs-@var{mcu}} to the compiler driver's
  command line.  The user takes responsibility for supplying the sub-processes
! like compiler proper, assembler and linker with appropriate command-line
  options.  This means that the user has to supply her private device specs
  file by means of @option{-specs=@var{path-to-specs-file}}.  There is no
  more need for option @option{-mmcu=@var{mcu}}.
*************** to be subtracted from the RAM address in
*** 24898,24904 ****
  respective I/O@tie{}address.
  
  @item __AVR_SHORT_CALLS__
! The @option{-mshort-calls} command line option is set.
  
  @item __AVR_PM_BASE_ADDRESS__=@var{addr}
  Some devices support reading from flash memory by means of @code{LD*}
--- 24899,24905 ----
  respective I/O@tie{}address.
  
  @item __AVR_SHORT_CALLS__
! The @option{-mshort-calls} command-line option is set.
  
  @item __AVR_PM_BASE_ADDRESS__=@var{addr}
  Some devices support reading from flash memory by means of @code{LD*}
*************** set and it cannot connect to it.
*** 37775,37780 ****
--- 37776,37788 ----
  
  This feature is experimental and subject to change or removal without
  notice.
+ 
+ @vindex COLLECT_GCC_OPTIONS
+ @item COLLECT_GCC_OPTIONS
+ Set by the driver and read by @command{collect2}, @command{lto-wrapper},
+ and the LTO linker plugin to pass the driver's option list.  If
+ the list is too long (over 1 KiB by default), the driver writes it to a
+ temporary file and sets this variable to @samp{@@@var{path}} instead.
  @end table
  
  @noindent
diff -Nrcpad gcc-17-20260607/gcc/doc/lto.texi gcc-17-20260614/gcc/doc/lto.texi
*** gcc-17-20260607/gcc/doc/lto.texi	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/doc/lto.texi	Sun Jun 14 22:32:07 2026
*************** individual functions dealing with the re
*** 163,171 ****
  are described below.
  
  @itemize @bullet
! @item Command line options (@code{.gnu.lto_.opts})
  
! This section contains the command line options used to generate the
  object files.  This is used at link time to determine the optimization
  level and other settings when they are not explicitly specified at the
  linker command line.
--- 163,171 ----
  are described below.
  
  @itemize @bullet
! @item Command-line options (@code{.gnu.lto_.opts})
  
! This section contains the command-line options used to generate the
  object files.  This is used at link time to determine the optimization
  level and other settings when they are not explicitly specified at the
  linker command line.
*************** initializers cannot be overwritten by a
*** 514,520 ****
  GCC provides the function and variable attribute
  @code{visibility} that can be used to specify the visibility of
  externally visible symbols (or alternatively an
! @option{-fdefault-visibility} command line option).  ELF defines
  the @code{default}, @code{protected}, @code{hidden} and
  @code{internal} visibilities.
  
--- 514,520 ----
  GCC provides the function and variable attribute
  @code{visibility} that can be used to specify the visibility of
  externally visible symbols (or alternatively an
! @option{-fdefault-visibility} command-line option).  ELF defines
  the @code{default}, @code{protected}, @code{hidden} and
  @code{internal} visibilities.
  
diff -Nrcpad gcc-17-20260607/gcc/doc/md.texi gcc-17-20260614/gcc/doc/md.texi
*** gcc-17-20260607/gcc/doc/md.texi	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/doc/md.texi	Sun Jun 14 22:32:07 2026
*************** VFP floating-point registers @code{s0}-@
*** 2182,2188 ****
  
  @item w
  VFP floating-point registers @code{d0}-@code{d31} and the appropriate
! subset @code{d0}-@code{d15} based on command line options.
  Used for 64 bit values only.  Not valid for Thumb1.
  
  @item G
--- 2182,2188 ----
  
  @item w
  VFP floating-point registers @code{d0}-@code{d31} and the appropriate
! subset @code{d0}-@code{d15} based on command-line options.
  Used for 64 bit values only.  Not valid for Thumb1.
  
  @item G
diff -Nrcpad gcc-17-20260607/gcc/doc/objc.texi gcc-17-20260614/gcc/doc/objc.texi
*** gcc-17-20260607/gcc/doc/objc.texi	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/doc/objc.texi	Sun Jun 14 22:32:07 2026
*************** runtime.  To get the definition of this
*** 677,683 ****
  
  User defined libraries may want to implement their own constant string
  class.  To be able to support them, the GNU Objective-C compiler provides
! a new command line options @option{-fconstant-string-class=@var{class-name}}.
  The provided class should adhere to a strict structure, the same
  as @code{NXConstantString}'s structure:
  
--- 677,683 ----
  
  User defined libraries may want to implement their own constant string
  class.  To be able to support them, the GNU Objective-C compiler provides
! a new command-line option @option{-fconstant-string-class=@var{class-name}}.
  The provided class should adhere to a strict structure, the same
  as @code{NXConstantString}'s structure:
  
*************** There are several caveats to using the n
*** 800,806 ****
  
  @itemize @bullet
  @item
! The @option{-fobjc-exceptions} command line option must be used when
  compiling Objective-C files that use exceptions.
  
  @item
--- 800,806 ----
  
  @itemize @bullet
  @item
! The @option{-fobjc-exceptions} command-line option must be used when
  compiling Objective-C files that use exceptions.
  
  @item
*************** object to be unlocked properly.
*** 852,858 ****
  
  Because of the interactions between synchronization and exception
  handling, you can only use @code{@@synchronized} when compiling with
! exceptions enabled, that is with the command line option
  @option{-fobjc-exceptions}.
  
  
--- 852,858 ----
  
  Because of the interactions between synchronization and exception
  handling, you can only use @code{@@synchronized} when compiling with
! exceptions enabled, that is with the command-line option
  @option{-fobjc-exceptions}.
  
  
diff -Nrcpad gcc-17-20260607/gcc/doc/rtl.texi gcc-17-20260614/gcc/doc/rtl.texi
*** gcc-17-20260607/gcc/doc/rtl.texi	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/doc/rtl.texi	Sun Jun 14 22:32:07 2026
*************** of relocation operator.  @var{m} should
*** 1917,1923 ****
  
  @findex high
  @item (high:@var{m} @var{exp})
! Represents the high-order bits of @var{exp}.  
  The number of bits is machine-dependent and is
  normally the number of bits specified in an instruction that initializes
  the high order bits of a register.  It is used with @code{lo_sum} to
--- 1917,1923 ----
  
  @findex high
  @item (high:@var{m} @var{exp})
! Represents the high-order bits of @var{exp}.
  The number of bits is machine-dependent and is
  normally the number of bits specified in an instruction that initializes
  the high order bits of a register.  It is used with @code{lo_sum} to
*************** integers.
*** 2620,2626 ****
  @cindex bitwise complement
  @item (not:@var{m} @var{x})
  Represents the bitwise complement of the value represented by @var{x},
! carried out in mode @var{m}, which must be a fixed-point machine mode.
  
  @findex and
  @cindex logical-and, bitwise
--- 2620,2626 ----
  @cindex bitwise complement
  @item (not:@var{m} @var{x})
  Represents the bitwise complement of the value represented by @var{x},
! carried out in mode @var{m}, which must be an integral machine mode.
  
  @findex and
  @cindex logical-and, bitwise
*************** carried out in mode @var{m}, which must
*** 2628,2650 ****
  @item (and:@var{m} @var{x} @var{y})
  Represents the bitwise logical-and of the values represented by
  @var{x} and @var{y}, carried out in machine mode @var{m}, which must be
! a fixed-point machine mode.
  
  @findex ior
  @cindex inclusive-or, bitwise
  @cindex bitwise inclusive-or
  @item (ior:@var{m} @var{x} @var{y})
  Represents the bitwise inclusive-or of the values represented by @var{x}
! and @var{y}, carried out in machine mode @var{m}, which must be a
! fixed-point mode.
  
  @findex xor
  @cindex exclusive-or, bitwise
  @cindex bitwise exclusive-or
  @item (xor:@var{m} @var{x} @var{y})
  Represents the bitwise exclusive-or of the values represented by @var{x}
! and @var{y}, carried out in machine mode @var{m}, which must be a
! fixed-point mode.
  
  @findex ashift
  @findex ss_ashift
--- 2628,2650 ----
  @item (and:@var{m} @var{x} @var{y})
  Represents the bitwise logical-and of the values represented by
  @var{x} and @var{y}, carried out in machine mode @var{m}, which must be
! an integral machine mode.
  
  @findex ior
  @cindex inclusive-or, bitwise
  @cindex bitwise inclusive-or
  @item (ior:@var{m} @var{x} @var{y})
  Represents the bitwise inclusive-or of the values represented by @var{x}
! and @var{y}, carried out in machine mode @var{m}, which must be an
! integral machine mode.
  
  @findex xor
  @cindex exclusive-or, bitwise
  @cindex bitwise exclusive-or
  @item (xor:@var{m} @var{x} @var{y})
  Represents the bitwise exclusive-or of the values represented by @var{x}
! and @var{y}, carried out in machine mode @var{m}, which must be an
! integral machine mode.
  
  @findex ashift
  @findex ss_ashift
*************** in case of a change in the sign bit; @co
*** 2664,2671 ****
  saturates to the minimum or maximum representable value if any of the bits
  shifted out differs from the final sign bit.
  
! @var{x} have mode @var{m}, a fixed-point machine mode.  @var{c}
! be a fixed-point mode or be a constant with mode @code{VOIDmode}; which
  mode is determined by the mode called for in the machine description
  entry for the left-shift instruction.  For example, on the VAX, the mode
  of @var{c} is @code{QImode} regardless of @var{m}.
--- 2664,2671 ----
  saturates to the minimum or maximum representable value if any of the bits
  shifted out differs from the final sign bit.
  
! @var{x} has mode @var{m}, an integral machine mode.  @var{c}
! be an integral mode or be a constant with mode @code{VOIDmode}; which
  mode is determined by the mode called for in the machine description
  entry for the left-shift instruction.  For example, on the VAX, the mode
  of @var{c} is @code{QImode} regardless of @var{m}.
*************** integer of mode @var{m}.  The mode of @v
*** 2751,2763 ****
  @findex bswap
  @item (bswap:@var{m} @var{x})
  Represents the value @var{x} with the order of bytes reversed, carried out
! in mode @var{m}, which must be a fixed-point machine mode.
  The mode of @var{x} must be @var{m} or @code{VOIDmode}.
  
  @findex bitreverse
  @item (bitreverse:@var{m} @var{x})
  Represents the value @var{x} with the order of bits reversed, carried out
! in mode @var{m}, which must be a fixed-point machine mode.
  The mode of @var{x} must be @var{m} or @code{VOIDmode}.
  
  @findex copysign
--- 2751,2763 ----
  @findex bswap
  @item (bswap:@var{m} @var{x})
  Represents the value @var{x} with the order of bytes reversed, carried out
! in mode @var{m}, which must be an integral machine mode.
  The mode of @var{x} must be @var{m} or @code{VOIDmode}.
  
  @findex bitreverse
  @item (bitreverse:@var{m} @var{x})
  Represents the value @var{x} with the order of bits reversed, carried out
! in mode @var{m}, which must be an integral machine mode.
  The mode of @var{x} must be @var{m} or @code{VOIDmode}.
  
  @findex copysign
*************** are not equal, otherwise 0.
*** 2826,2838 ****
  @cindex greater than
  @item (gt:@var{m} @var{x} @var{y})
  @code{STORE_FLAG_VALUE} if the @var{x} is greater than @var{y}.  If they
! are fixed-point, the comparison is done in a signed sense.
  
  @findex gtu
  @cindex greater than
  @cindex unsigned greater than
  @item (gtu:@var{m} @var{x} @var{y})
! Like @code{gt} but does unsigned comparison, on fixed-point numbers only.
  
  @findex lt
  @cindex less than
--- 2826,2838 ----
  @cindex greater than
  @item (gt:@var{m} @var{x} @var{y})
  @code{STORE_FLAG_VALUE} if the @var{x} is greater than @var{y}.  If they
! are integral, the comparison is done in a signed sense.
  
  @findex gtu
  @cindex greater than
  @cindex unsigned greater than
  @item (gtu:@var{m} @var{x} @var{y})
! Like @code{gt} but does unsigned comparison, on integral modes only.
  
  @findex lt
  @cindex less than
*************** must be placed into a register.
*** 3003,3016 ****
  @findex sign_extend
  @item (sign_extend:@var{m} @var{x})
  Represents the result of sign-extending the value @var{x}
! to machine mode @var{m}.  @var{m} must be a fixed-point mode
! and @var{x} a fixed-point value of a mode narrower than @var{m}.
  
  @findex zero_extend
  @item (zero_extend:@var{m} @var{x})
  Represents the result of zero-extending the value @var{x}
! to machine mode @var{m}.  @var{m} must be a fixed-point mode
! and @var{x} a fixed-point value of a mode narrower than @var{m}.
  
  @findex float_extend
  @item (float_extend:@var{m} @var{x})
--- 3003,3016 ----
  @findex sign_extend
  @item (sign_extend:@var{m} @var{x})
  Represents the result of sign-extending the value @var{x}
! to machine mode @var{m}.  @var{m} must be an integral mode
! and @var{x} an integral value of a mode narrower than @var{m}.
  
  @findex zero_extend
  @item (zero_extend:@var{m} @var{x})
  Represents the result of zero-extending the value @var{x}
! to machine mode @var{m}.  @var{m} must be an integral mode
! and @var{x} an integral value of a mode narrower than @var{m}.
  
  @findex float_extend
  @item (float_extend:@var{m} @var{x})
*************** and @var{x} a floating point value of a
*** 3021,3041 ****
  @findex truncate
  @item (truncate:@var{m} @var{x})
  Represents the result of truncating the value @var{x}
! to machine mode @var{m}.  @var{m} must be a fixed-point mode
! and @var{x} a fixed-point value of a mode wider than @var{m}.
  
  @findex ss_truncate
  @item (ss_truncate:@var{m} @var{x})
  Represents the result of truncating the value @var{x}
  to machine mode @var{m}, using signed saturation in the case of
! overflow.  Both @var{m} and the mode of @var{x} must be fixed-point
  modes.
  
  @findex us_truncate
  @item (us_truncate:@var{m} @var{x})
  Represents the result of truncating the value @var{x}
  to machine mode @var{m}, using unsigned saturation in the case of
! overflow.  Both @var{m} and the mode of @var{x} must be fixed-point
  modes.
  
  @findex float_truncate
--- 3021,3041 ----
  @findex truncate
  @item (truncate:@var{m} @var{x})
  Represents the result of truncating the value @var{x}
! to machine mode @var{m}.  @var{m} must be an integral mode
! and @var{x} an integral value of a mode wider than @var{m}.
  
  @findex ss_truncate
  @item (ss_truncate:@var{m} @var{x})
  Represents the result of truncating the value @var{x}
  to machine mode @var{m}, using signed saturation in the case of
! overflow.  Both @var{m} and the mode of @var{x} must be integral
  modes.
  
  @findex us_truncate
  @item (us_truncate:@var{m} @var{x})
  Represents the result of truncating the value @var{x}
  to machine mode @var{m}, using unsigned saturation in the case of
! overflow.  Both @var{m} and the mode of @var{x} must be integral
  modes.
  
  @findex float_truncate
*************** and @var{x} a floating point value of a
*** 3046,3057 ****
  
  @findex float
  @item (float:@var{m} @var{x})
! Represents the result of converting fixed point value @var{x},
  regarded as signed, to floating point mode @var{m}.
  
  @findex unsigned_float
  @item (unsigned_float:@var{m} @var{x})
! Represents the result of converting fixed point value @var{x},
  regarded as unsigned, to floating point mode @var{m}.
  
  @findex fix
--- 3046,3057 ----
  
  @findex float
  @item (float:@var{m} @var{x})
! Represents the result of converting integral value @var{x},
  regarded as signed, to floating point mode @var{m}.
  
  @findex unsigned_float
  @item (unsigned_float:@var{m} @var{x})
! Represents the result of converting integral value @var{x},
  regarded as unsigned, to floating point mode @var{m}.
  
  @findex fix
diff -Nrcpad gcc-17-20260607/gcc/doc/sourcebuild.texi gcc-17-20260614/gcc/doc/sourcebuild.texi
*** gcc-17-20260607/gcc/doc/sourcebuild.texi	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/doc/sourcebuild.texi	Sun Jun 14 22:32:07 2026
*************** ARM target supporting @code{-mbranch-pro
*** 2351,2356 ****
--- 2351,2361 ----
  @item arm_pacbti_hw
  Test system supports for executing non nop pacbti instructions.
  
+ @item arm_mixed_fp
+ On Arm targets, true when the target uses hardware instructions for
+ single-precision floatint-point values, but software emulation for
+ double-precision values.
+ 
  @end table
  
  @subsubsection AArch64-specific attributes
diff -Nrcpad gcc-17-20260607/gcc/doc/tm.texi gcc-17-20260614/gcc/doc/tm.texi
*** gcc-17-20260607/gcc/doc/tm.texi	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/doc/tm.texi	Sun Jun 14 22:32:07 2026
*************** passes the string @option{-lgcc} to the
*** 293,299 ****
  By default, if @code{ENABLE_SHARED_LIBGCC} is defined, the
  @code{LIBGCC_SPEC} is not directly used by the driver program but is
  instead modified to refer to different versions of @file{libgcc.a}
! depending on the values of the command line flags @option{-static},
  @option{-shared}, @option{-static-libgcc}, and @option{-shared-libgcc}.  On
  targets where these modifications are inappropriate, define
  @code{REAL_LIBGCC_SPEC} instead.  @code{REAL_LIBGCC_SPEC} tells the
--- 293,299 ----
  By default, if @code{ENABLE_SHARED_LIBGCC} is defined, the
  @code{LIBGCC_SPEC} is not directly used by the driver program but is
  instead modified to refer to different versions of @file{libgcc.a}
! depending on the values of the command-line options @option{-static},
  @option{-shared}, @option{-static-libgcc}, and @option{-shared-libgcc}.  On
  targets where these modifications are inappropriate, define
  @code{REAL_LIBGCC_SPEC} instead.  @code{REAL_LIBGCC_SPEC} tells the
*************** built-in preprocessor macros and asserti
*** 658,664 ****
  the functions @code{builtin_define}, @code{builtin_define_std} and
  @code{builtin_assert}.  When the front end
  calls this macro it provides a trailing semicolon, and since it has
! finished command line option processing your code can use those
  results freely.
  
  @code{builtin_assert} takes a string in the form you pass to the
--- 658,664 ----
  the functions @code{builtin_define}, @code{builtin_define_std} and
  @code{builtin_assert}.  When the front end
  calls this macro it provides a trailing semicolon, and since it has
! finished command-line option processing your code can use those
  results freely.
  
  @code{builtin_assert} takes a string in the form you pass to the
*************** If the macro is set to 0, the "GNU" Obje
*** 6000,6007 ****
  will be used by default.  This convention passes just the object and the
  selector to the method-lookup function, which returns a pointer to the method.
  
! In either case, it remains possible to select code-generation for the alternate
! scheme, by means of compiler command line switches.
  @end defmac
  
  @node Addressing Modes
--- 6000,6007 ----
  will be used by default.  This convention passes just the object and the
  selector to the method-lookup function, which returns a pointer to the method.
  
! In either case, it remains possible to select code-generation for the
! alternate scheme by means of compiler command-line options.
  @end defmac
  
  @node Addressing Modes
*************** The result is the value to be used with
*** 11557,11563 ****
  
  @deftypefn {Target Hook} void TARGET_ADDR_SPACE_DIAGNOSE_USAGE (addr_space_t @var{as}, location_t @var{loc})
  Define this hook if the availability of an address space depends on
! command line options and some diagnostics should be printed when the
  address space is used.  This hook is called during parsing and allows
  to emit a better diagnostic compared to the case where the address space
  was not registered with @code{c_register_addr_space}.  @var{as} is
--- 11557,11563 ----
  
  @deftypefn {Target Hook} void TARGET_ADDR_SPACE_DIAGNOSE_USAGE (addr_space_t @var{as}, location_t @var{loc})
  Define this hook if the availability of an address space depends on
! command-line options and some diagnostics should be printed when the
  address space is used.  This hook is called during parsing and allows
  to emit a better diagnostic compared to the case where the address space
  was not registered with @code{c_register_addr_space}.  @var{as} is
diff -Nrcpad gcc-17-20260607/gcc/doc/tm.texi.in gcc-17-20260614/gcc/doc/tm.texi.in
*** gcc-17-20260607/gcc/doc/tm.texi.in	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/doc/tm.texi.in	Sun Jun 14 22:32:07 2026
*************** passes the string @option{-lgcc} to the
*** 293,299 ****
  By default, if @code{ENABLE_SHARED_LIBGCC} is defined, the
  @code{LIBGCC_SPEC} is not directly used by the driver program but is
  instead modified to refer to different versions of @file{libgcc.a}
! depending on the values of the command line flags @option{-static},
  @option{-shared}, @option{-static-libgcc}, and @option{-shared-libgcc}.  On
  targets where these modifications are inappropriate, define
  @code{REAL_LIBGCC_SPEC} instead.  @code{REAL_LIBGCC_SPEC} tells the
--- 293,299 ----
  By default, if @code{ENABLE_SHARED_LIBGCC} is defined, the
  @code{LIBGCC_SPEC} is not directly used by the driver program but is
  instead modified to refer to different versions of @file{libgcc.a}
! depending on the values of the command-line options @option{-static},
  @option{-shared}, @option{-static-libgcc}, and @option{-shared-libgcc}.  On
  targets where these modifications are inappropriate, define
  @code{REAL_LIBGCC_SPEC} instead.  @code{REAL_LIBGCC_SPEC} tells the
*************** built-in preprocessor macros and asserti
*** 653,659 ****
  the functions @code{builtin_define}, @code{builtin_define_std} and
  @code{builtin_assert}.  When the front end
  calls this macro it provides a trailing semicolon, and since it has
! finished command line option processing your code can use those
  results freely.
  
  @code{builtin_assert} takes a string in the form you pass to the
--- 653,659 ----
  the functions @code{builtin_define}, @code{builtin_define_std} and
  @code{builtin_assert}.  When the front end
  calls this macro it provides a trailing semicolon, and since it has
! finished command-line option processing your code can use those
  results freely.
  
  @code{builtin_assert} takes a string in the form you pass to the
*************** If the macro is set to 0, the "GNU" Obje
*** 4151,4158 ****
  will be used by default.  This convention passes just the object and the
  selector to the method-lookup function, which returns a pointer to the method.
  
! In either case, it remains possible to select code-generation for the alternate
! scheme, by means of compiler command line switches.
  @end defmac
  
  @node Addressing Modes
--- 4151,4158 ----
  will be used by default.  This convention passes just the object and the
  selector to the method-lookup function, which returns a pointer to the method.
  
! In either case, it remains possible to select code-generation for the
! alternate scheme by means of compiler command-line options.
  @end defmac
  
  @node Addressing Modes
diff -Nrcpad gcc-17-20260607/gcc/expmed.cc gcc-17-20260614/gcc/expmed.cc
*** gcc-17-20260607/gcc/expmed.cc	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/expmed.cc	Sun Jun 14 22:32:07 2026
*************** make_tree (tree type, rtx x)
*** 5417,5422 ****
--- 5417,5425 ----
        t = wide_int_to_tree (type, rtx_mode_t (x, TYPE_MODE (type)));
        return t;
  
+     case CONST_POLY_INT:
+       return wide_int_to_tree (type, const_poly_int_value (x));
+ 
      case CONST_DOUBLE:
        STATIC_ASSERT (HOST_BITS_PER_WIDE_INT * 2 <= MAX_BITSIZE_MODE_ANY_INT);
        if (TARGET_SUPPORTS_WIDE_INT == 0 && GET_MODE (x) == VOIDmode)
*************** make_tree (tree type, rtx x)
*** 5508,5516 ****
        /* fall through.  */
  
      default:
-       if (CONST_POLY_INT_P (x))
- 	return wide_int_to_tree (t, const_poly_int_value (x));
- 
        t = build_decl (RTL_LOCATION (x), VAR_DECL, NULL_TREE, type);
  
        /* If TYPE is a POINTER_TYPE, we might need to convert X from
--- 5511,5516 ----
diff -Nrcpad gcc-17-20260607/gcc/fortran/ChangeLog gcc-17-20260614/gcc/fortran/ChangeLog
*** gcc-17-20260607/gcc/fortran/ChangeLog	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/fortran/ChangeLog	Sun Jun 14 22:32:07 2026
***************
*** 1,3 ****
--- 1,307 ----
+ 2026-06-12  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* openmp.cc (gfc_omp_udm_find, gfc_omp_udr_find): Fix
+ 	to handle derived-type renaming via module use.
+ 
+ 2026-06-12  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* parse.cc (match_word): Add no_substring and
+ 	reject_stmt_on_error arguments, defaulting to false and true,
+ 	respectively.
+ 	(match_word_omp_simd): Do not reject_statement on error and
+ 	enable no-substring matching.
+ 	(matcha, matcho, matchdo): Call match_word with no_substring
+ 	set to true and reject_stmt_on_error set to false.
+ 	(decode_omp_directive): Distinguish unknown directive name from
+ 	errors found during matching.
+ 	(decode_oacc_directive): Likewise; use matcha not match.
+ 	(matcha, matcho, matchdo, matchs, matchds): #undef after use.
+ 
+ 2026-06-12  Julian Brown  <julian@codesourcery.com>
+ 	    Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* gfortran.h (gfc_omp_namelist): Change udm member into
+ 	a pointer type.
+ 	(gfc_omp_namelist_udm): Add mapper_id member and move
+ 	down in the file below the related ..._udr struct.
+ 	(gfc_get_omp_namelist_udm): New convenience macro.
+ 	* match.cc (gfc_free_omp_namelist): Free udm.
+ 	* module.cc (MOD_VERSION_NUMERIC): Add.
+ 	(load_omp_udrs): Add diagnostic_group.
+ 	(omp_map_clause_ops, load_omp_udms, check_omp_declare_mappers,
+ 	write_omp_udm, write_omp_udms): New.
+ 	(read_module, write_module): Support 'declare mapper'.
+ 	* openmp.cc (gfc_find_omp_udm, gfc_match_omp_clauses,
+ 	resolve_omp_clauses): Handle mapper_id and do later
+ 	resolution.
+ 	* resolve.cc (resolve_types): Remove 'declare mapper' sorry.
+ 	* trans-openmp.cc (gfc_trans_omp_clauses): Add sorry for
+ 	map clauses with mapper.
+ 
+ 2026-06-11  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/30438
+ 	PR fortran/28004
+ 	* dump-parse-tree.cc (gfc_debug_code_node): New function.
+ 	(show_attr): Add select_rank_temporary. Fix typo. Add referenced,
+ 	value_set, allocated and value_used.
+ 	* gfortran.h (enum value_set): New enum.
+ 	(enum value_used): New enum.
+ 	(gfc_symbol): Add value_set, value_used, allocated and
+ 	warning_emitted attributes.  Rename formal_at to other_loc.
+ 	Add extra_loc.
+ 	(gfc_value_set_at): Add prototype.
+ 	(gfc_lvalue_allocated_at): Likewise.
+ 	(gfc_mark_lhs_as_used): Likewise.
+ 	(gfc_value_used_expr): Likewise.
+ 	(gfc_value_set_and_used): Likewise.
+ 	(gfc_used_in_allocate_expr): Likewise.
+ 	* interface.cc (gfc_compare_actual_formal): Mark actual arguments
+ 	according to INTENT and VALUE on formal arguments.
+ 	(gfc_procedure_use): Add VALUE_ARG/VALUE_MAYBE_USED for
+ 	implicit arguments.
+ 	* intrinsic.cc (mark_args_as_used): New function.
+ 	(init_arglist): Adjust comment.
+ 	(gfc_intrinsic_sub_interface): Use mark_args_as_used.
+ 	* invoke.texi: Document -Wundefined-vars, -Wunused-intent-out and
+ 	-Wunused-read.
+ 	* io.cc (resolve_tag_format): Mark expressions as used.
+ 	(resolve_tag): Mark as used or set, depending on tag.
+ 	(gfc_resolve_dt): Mark internal unit as set.
+ 	(gfc_resolve_inquire): Mark value as set for INQUIRE_RESOLVE_TAG macro.
+ 	* lang.opt: Add -Wundefined-vars, -Wunused-intent-out and -Wunused-read.
+ 	* lang.opt.urls: Regenerated.
+ 	* resolve.cc (resolve_function): Replace formal_at by other_loc.
+ 	(resolve_call): Likewise.
+ 	(gfc_resolve_iterator): Mark iterator variable as set and used and
+ 	other expressions as used.
+ 	(resolve_forall_iterators): Likewise.
+ 	(resolve_allocate_expr): On success, call gfc_used_in_allocate_expr
+ 	and mark value as set if source is present.
+ 	(resolve_transfer): Mark set/read according to context.
+ 	(gfc_resolve_blocks): Mark expr1 and expr2 as used.
+ 	(mark_lhs_assignments_set): Prototype / new function.
+ 	(gfc_resolve_code): Mark expr2, expr3 and expr4 as used.
+ 	(var_value_is_used): New function.
+ 	(var_value_is_set): New function.
+ 	(find_unused_vs_set): New function.
+ 	(warn_unused_vs_set): New function.
+ 	(gfc_resolve): Call warn_unused_vs_set.
+ 	* symbol.cc (gfc_value_set_at): New function.
+ 	(mark_vars_as_used): New function.
+ 	(gfc_value_used_expr): New function.
+ 	(gfc_value_set_and_used): New function.
+ 	(gfc_used_in_allocate_expr): new function.
+ 	(gfc_lvalue_allocated_at): New function.
+ 	* trans-decl.cc (gfc_finish_var_decl): If we already emitted a warning,
+ 	suppress further middle-end warning o that variable.
+ 
+ 2026-06-10  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-06-10  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125650
+ 	* match.cc (match_association_list): Handle ASSOCIATE selectors
+ 	that are overloaded intrinsic operator expressions by extending
+ 	them with gfc_extend_expr at parse time, so the associate name is
+ 	typed before the construct body is parsed.
+ 
+ 2026-06-10  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-06-10  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125530
+ 	* match.cc (gfc_match_call): Route ASSOCIATE names followed by '%'
+ 	to match_typebound_call without first resolving the selector, to
+ 	avoid prematurely marking a contained-function selector as EXTERNAL.
+ 	* symbol.cc (find_derived_types): Also search type-bound procedure
+ 	names via gfc_find_typebound_proc when inferring the type of an
+ 	inferred-type ASSOCIATE name; exclude vtable types.
+ 
+ 2026-06-10  Chung-Lin Tang  <cltang@baylibre.com>
+ 
+ 	PR fortran/122910
+ 	* f95-lang.cc (LANG_HOOKS_OMP_ARRAY_DATA_PRIVATIZE): Define as
+ 	gfc_omp_array_data_privatize.
+ 	* trans-openmp.cc (gfc_omp_array_data_privatize): New function.
+ 	* trans.h (gfc_omp_array_data_privatize): New declaration.
+ 
+ 2026-06-09  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* module.cc (load_omp_udrs): Improve reduction diagnostic output.
+ 
+ 2026-06-09  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/125669
+ 	* decl.cc (gfc_get_pdt_instance): If the bound expressions for
+ 	and array component, of the length expression for a character
+ 	component, gave simplified to a constant, do not set attributes
+ 	pdt_array and pdt_string respectively.
+ 
+ 2026-06-07  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125535
+ 	* trans-expr.cc (gfc_conv_procedure_call): Move post block append
+ 	to after the deep copy of allocatable components for transformational
+ 	intrinsics, so that argument temporaries are not freed before the
+ 	result components are copied.
+ 
+ 2026-06-07  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125534
+ 	* trans-stmt.cc (gfc_trans_allocate): Use GFC_TYPE_ARRAY_RANK from
+ 	the GFC descriptor type when se.expr is a descriptor, rather than
+ 	expr->rank, for the rank passed to gfc_allocate_pdt_comp.  Apply
+ 	the same fix to the CLASS path.
+ 	(gfc_trans_deallocate): Likewise for gfc_deallocate_pdt_comp.
+ 
+ 2026-06-07  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/125527
+ 	* class.cc (gfc_find_derived_vtab): Stash module namespace and
+ 	use it as the last place to search for the vtab before building
+ 	a new one.
+ 
+ 2026-06-07  Paul Thomas  <pault@gcc.gnu.org>
+ 	    Claude Sonnet 4.6  <noreply@anthropic.com>
+ 
+ 	PR fortran/121379
+ 	* decl.cc (get_proc_name): Use module_procedure attr. instead
+ 	of external to guard the missing-MODULE-prefix diagnostic. Use
+ 	gfc_error_now and do not return, so that an error cascade does
+ 	not occur.
+ 
+ 2026-06-07  Kwok Cheung Yeung  <kcyeung@baylibre.com>
+ 	    Andrew Stubbs   <ams@baylibre.com>
+ 	    Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	* dump-parse-tree.cc (show_omp_namelist): Add iterator support for
+ 	OMP_LIST_TO and OMP_LIST_FROM.
+ 	* match.cc (gfc_free_omp_namelist): Free namespace for OMP_LIST_TO
+ 	and OMP_LIST_FROM.
+ 	* openmp.cc (gfc_match_motion_var_list): Parse 'iterator' modifier.
+ 	(resolve_omp_clauses): Resolve iterators for OMP_LIST_TO and
+ 	OMP_LIST_FROM.
+ 	* trans-openmp.cc (gfc_trans_omp_clauses): Handle iterators in
+ 	OMP_LIST_TO and OMP_LIST_FROM clauses.  Add expressions to
+ 	iter_block rather than block.
+ 
+ 2026-06-07  Kwok Cheung Yeung  <kcyeung@baylibre.com>
+ 	    Andrew Stubbs  <ams@baylibre.com>
+ 	    Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	* dump-parse-tree.cc (show_omp_namelist): Add iterator support for
+ 	OMP_LIST_MAP.
+ 	* match.cc (gfc_free_omp_namelist): Free namespace in namelist for
+ 	OMP_LIST_MAP.
+ 	* openmp.cc (gfc_match_omp_clauses): Parse 'iterator' modifier for
+ 	'map' clause.
+ 	(resolve_omp_clauses): Resolve iterators for OMP_LIST_MAP.
+ 	* trans-openmp.cc: Include tree-ssa-loop-niter.h.
+ 	(gfc_trans_omp_array_section): Add iterator argument.  Replace
+ 	instances of iterator variables with the initial value when
+ 	computing biases.
+ 	(gfc_trans_omp_clauses): Handle iterators in OMP_LIST_MAP clauses.
+ 	Add expressions to iter_block rather than block.  Do not apply
+ 	iterators to firstprivate maps.  Pass iterator to
+ 	gfc_trans_omp_array_section.
+ 
+ 2026-06-07  Kwok Cheung Yeung  <kcyeung@baylibre.com>
+ 	    Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	* gfortran.h (struct gfc_omp_namelist): Move udm field into a new
+ 	union u3.
+ 	* match.cc (gfc_free_omp_namelist): Change reference to u2.udm to
+ 	u3.udm.
+ 	* openmp.cc (gfc_match_omp_clauses): Likewise.
+ 
+ 2026-06-06  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/125606
+ 	* trans-intrinsic.cc (gfc_conv_intrinsic_loc): When the argument
+ 	of LOC() is not scalar or known to be simply contiguous, simply
+ 	take the address of the argument array's first element.
+ 
+ 2026-06-06  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	* resolve.cc (replace_in_code_recursive): Add EXEC_BLOCK case to
+ 	replace shadow iterator references in ASSOCIATE selector expressions
+ 	and the ASSOCIATE body namespace.
+ 
+ 2026-06-06  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125531
+ 	* primary.cc (gfc_match_varspec): Before erroring on a zero-argument
+ 	COMPCALL, check for a same-named data component and fall back to the
+ 	data-component path.  For inferred-type ASSOCIATE names, retry
+ 	gfc_find_component with noaccess=true when the normal search fails.
+ 
+ 2026-06-05  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/60576
+ 	* trans-array.cc (gfc_resize_assumed_rank_dim_field): New
+ 	function extracted from gfc_conv_array_parameter.
+ 	(gfc_conv_array_parameter): Use the new function.
+ 
+ 2026-06-04  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-06-04  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125529
+ 	* resolve.cc (check_default_none_expr): Use d->code instead of
+ 	sym->ns->code to locate the DO CONCURRENT forall_iterator list,
+ 	avoiding a wrong-union-member read when the symbol's namespace is
+ 	an ASSOCIATE body.  Skip leading underscore when comparing iterator
+ 	names for shadow iterators.
+ 
+ 2026-06-04  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125528
+ 	* class.cc (find_typebound_proc_uop): Set root = NULL instead of
+ 	returning NULL when derived type lacks f2k_derived, so parent-type
+ 	type-bound procedures and operators are still found via inheritance.
+ 	* match.cc (resolve_assoc_operand): New helper.
+ 	(infer_typebound_uop_type): New helper.
+ 	(extend_assoc_op): New helper.
+ 	(match_association_list): Handle ASSOCIATE selectors that are
+ 	type-bound user-defined operator expressions, including nested cases.
+ 	* resolve.cc (resolve_typebound_procedures): Move resolve_symbol
+ 	call for the parent type before the early return so inherited
+ 	type-bound bindings are resolved even when the child type has none
+ 	of its own.
+ 
+ 2026-06-04  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/60576
+ 	PR fortran/60576
+ 	* trans-array.cc (gfc_conv_array_parameter): For an assumed-rank
+ 	actual argument passed to a CLASS assumed-rank formal, use a
+ 	runtime-sized memcpy for the dim[] entries instead of a full
+ 	GFC_MAX_DIMENSIONS static copy.  For a fixed-rank actual to a
+ 	CLASS assumed-rank formal, pass lhs_type=false to
+ 	gfc_class_array_data_assign so the dim[] copy is sized by the
+ 	RHS descriptor type (dim_t[rank]).  Fixed-rank class formals
+ 	retain lhs_type=true.
+ 	* trans-expr.cc (gfc_conv_derived_to_class): For an assumed-rank
+ 	actual, use a runtime-sized memcpy for the derived_array descriptor
+ 	dim[] copy instead of a full GFC_MAX_DIMENSIONS static copy.
+ 
+ 2026-06-04  Paul Thomas  <pault@gcc.gnu.org>
+ 	    Claude Sonnet 4.6  <noreply@anthropic.com>
+ 
+ 	PR fortran/121204
+ 	* symbol.cc (gfc_copy_attr): Copy the always_explicit attribute.
+ 
+ 2026-06-04  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/93424
+ 	* decl.cc (variable_decl): Do not commit the symbol if it is
+ 	the implicit result of a module procedure being declared in a
+ 	function, used in a submodule.
+ 
  2026-06-03  Henri Menke  <henri@henrimenke.de>
  
  	* gfortran.h (enum ext_attr_id_t): Add EXT_ATTR_INLINE and
diff -Nrcpad gcc-17-20260607/gcc/fortran/decl.cc gcc-17-20260614/gcc/fortran/decl.cc
*** gcc-17-20260607/gcc/fortran/decl.cc	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/fortran/decl.cc	Sun Jun 14 22:32:07 2026
*************** gfc_get_pdt_instance (gfc_actual_arglist
*** 4503,4508 ****
--- 4503,4509 ----
        if (c1->as && c1->as->type == AS_EXPLICIT)
  	{
  	  bool pdt_array = false;
+ 	  bool all_constant = true;
  
  	  /* Are the bounds of the array parameterized?  */
  	  for (i = 0; i < c1->as->rank; i++)
*************** gfc_get_pdt_instance (gfc_actual_arglist
*** 4525,4539 ****
  		gfc_replace_expr (c2->as->lower[i], e);
  	      else
  		gfc_free_expr (e);
  	      e = gfc_copy_expr (c1->as->upper[i]);
  	      gfc_insert_kind_parameter_exprs (e);
  	      if (gfc_simplify_expr (e, 1))
  		gfc_replace_expr (c2->as->upper[i], e);
  	      else
  		gfc_free_expr (e);
  	    }
  
! 	  c2->attr.pdt_array = 1;
  	  if (c1->initializer)
  	    {
  	      c2->initializer = gfc_copy_expr (c1->initializer);
--- 4526,4544 ----
  		gfc_replace_expr (c2->as->lower[i], e);
  	      else
  		gfc_free_expr (e);
+ 	      if (c2->as->lower[i]->expr_type != EXPR_CONSTANT)
+ 		all_constant = false;
  	      e = gfc_copy_expr (c1->as->upper[i]);
  	      gfc_insert_kind_parameter_exprs (e);
  	      if (gfc_simplify_expr (e, 1))
  		gfc_replace_expr (c2->as->upper[i], e);
  	      else
  		gfc_free_expr (e);
+ 	      if (c2->as->upper[i]->expr_type != EXPR_CONSTANT)
+ 		all_constant = false;
  	    }
  
! 	  c2->attr.pdt_array = all_constant ? 0 : 1;
  	  if (c1->initializer)
  	    {
  	      c2->initializer = gfc_copy_expr (c1->initializer);
*************** gfc_get_pdt_instance (gfc_actual_arglist
*** 4554,4560 ****
  	    gfc_replace_expr (c2->ts.u.cl->length, e);
  	  else
  	    gfc_free_expr (e);
! 	  c2->attr.pdt_string = 1;
  	}
  
        /* Recurse into this function for PDT components.  */
--- 4559,4566 ----
  	    gfc_replace_expr (c2->ts.u.cl->length, e);
  	  else
  	    gfc_free_expr (e);
! 	  if (c2->ts.u.cl->length->expr_type != EXPR_CONSTANT)
! 	    c2->attr.pdt_string = 1;
  	}
  
        /* Recurse into this function for PDT components.  */
diff -Nrcpad gcc-17-20260607/gcc/fortran/dump-parse-tree.cc gcc-17-20260614/gcc/fortran/dump-parse-tree.cc
*** gcc-17-20260607/gcc/fortran/dump-parse-tree.cc	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/fortran/dump-parse-tree.cc	Sun Jun 14 22:32:07 2026
*************** gfc_debug_code (gfc_code *c)
*** 164,169 ****
--- 164,179 ----
  }
  
  DEBUG_FUNCTION void
+ gfc_debug_code_node (gfc_code *c)
+ {
+   FILE *tmp = dumpfile;
+   dumpfile = stderr;
+   show_code_node (1, c);
+   fputc ('\n', dumpfile);
+   dumpfile = tmp;
+ }
+ 
+ DEBUG_FUNCTION void
  debug (gfc_symbol *sym)
  {
    FILE *tmp = dumpfile;
*************** show_attr (symbol_attribute *attr, const
*** 930,935 ****
--- 940,947 ----
      fputs (" CAF-TOKEN", dumpfile);
    if (attr->select_type_temporary)
      fputs (" SELECT-TYPE-TEMPORARY", dumpfile);
+   if (attr->select_rank_temporary)
+     fputs (" SELECT-RANK-TEMPORARY", dumpfile);
    if (attr->associate_var)
      fputs (" ASSOCIATE-VAR", dumpfile);
    if (attr->pdt_kind)
*************** show_attr (symbol_attribute *attr, const
*** 1004,1010 ****
    if (attr->recursive)
      fputs (" RECURSIVE", dumpfile);
    if (attr->unmaskable)
!     fputs (" UNMASKABKE", dumpfile);
    if (attr->masked)
      fputs (" MASKED", dumpfile);
    if (attr->contained)
--- 1016,1022 ----
    if (attr->recursive)
      fputs (" RECURSIVE", dumpfile);
    if (attr->unmaskable)
!     fputs (" UNMASKABLE", dumpfile);
    if (attr->masked)
      fputs (" MASKED", dumpfile);
    if (attr->contained)
*************** show_attr (symbol_attribute *attr, const
*** 1023,1028 ****
--- 1035,1086 ----
      fputs (" ALWAYS-EXPLICIT", dumpfile);
    if (attr->is_main_program)
      fputs (" IS-MAIN-PROGRAM", dumpfile);
+   if (attr->referenced)
+     fputs (" REFERENCED", dumpfile);
+ 
+   switch (attr->value_set)
+     {
+     case VALUE_UNSET:
+       break;
+     case VALUE_ARG:
+       fputs (" VALUE-SET(ARG)", dumpfile);
+       break;
+     case VALUE_INTENT_OUT:
+       fputs (" VALUE-SET(INTENT-OUT)", dumpfile);
+       break;
+     case VALUE_READ:
+       fputs (" VALUE-SET(READ)", dumpfile);
+       break;
+     case VALUE_VARDEF:
+       fputs (" VALUE-SET(VARDEF)", dumpfile);
+       break;
+     default:
+       gfc_internal_error ("Wrong value for value_set");
+     }
+ 
+   if (attr->allocated)
+     fputs (" ALLOCATED", dumpfile);
+ 
+   switch (attr->value_used)
+     {
+     case VALUE_UNUSED:
+       break;
+     case VALUE_MAYBE_USED:
+       fputs (" VALUE-USED(MAYBE-USED)", dumpfile);
+       break;
+     case VALUE_USED:
+       fputs (" VALUE-USED(USED)", dumpfile);
+       break;
+     case VALUE_INTENT_IN:
+       fputs (" VALUE-USED(INTENT-IN)", dumpfile);
+       break;
+     case VALUE_VALUE_ARG:
+       fputs (" VALUE-USED(VALUE-ARG)", dumpfile);
+ 	break;
+     default:
+       gfc_internal_error ("Wrong value for value_used");
+     }
+ 
    if (attr->oacc_routine_nohost)
      fputs (" OACC-ROUTINE-NOHOST", dumpfile);
    if (attr->temporary)
diff -Nrcpad gcc-17-20260607/gcc/fortran/f95-lang.cc gcc-17-20260614/gcc/fortran/f95-lang.cc
*** gcc-17-20260607/gcc/fortran/f95-lang.cc	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/fortran/f95-lang.cc	Sun Jun 14 22:32:07 2026
*************** gfc_get_sarif_source_language (const cha
*** 135,140 ****
--- 135,141 ----
  #undef LANG_HOOKS_TYPE_FOR_SIZE
  #undef LANG_HOOKS_INIT_TS
  #undef LANG_HOOKS_OMP_ARRAY_DATA
+ #undef LANG_HOOKS_OMP_ARRAY_DATA_PRIVATIZE
  #undef LANG_HOOKS_OMP_ARRAY_SIZE
  #undef LANG_HOOKS_OMP_IS_ALLOCATABLE_OR_PTR
  #undef LANG_HOOKS_OMP_CHECK_OPTIONAL_ARGUMENT
*************** gfc_get_sarif_source_language (const cha
*** 178,183 ****
--- 179,185 ----
  #define LANG_HOOKS_TYPE_FOR_SIZE	gfc_type_for_size
  #define LANG_HOOKS_INIT_TS		gfc_init_ts
  #define LANG_HOOKS_OMP_ARRAY_DATA		gfc_omp_array_data
+ #define LANG_HOOKS_OMP_ARRAY_DATA_PRIVATIZE	gfc_omp_array_data_privatize
  #define LANG_HOOKS_OMP_ARRAY_SIZE		gfc_omp_array_size
  #define LANG_HOOKS_OMP_IS_ALLOCATABLE_OR_PTR	gfc_omp_is_allocatable_or_ptr
  #define LANG_HOOKS_OMP_CHECK_OPTIONAL_ARGUMENT	gfc_omp_check_optional_argument
diff -Nrcpad gcc-17-20260607/gcc/fortran/gfortran.h gcc-17-20260614/gcc/fortran/gfortran.h
*** gcc-17-20260607/gcc/fortran/gfortran.h	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/fortran/gfortran.h	Sun Jun 14 22:32:07 2026
*************** enum oacc_routine_lop
*** 401,406 ****
--- 401,426 ----
    OACC_ROUTINE_LOP_ERROR
  };
  
+ /* How a variable gets its value.  Ordering is significant.  */
+ 
+ enum value_set
+ { VALUE_UNSET = 0,
+   VALUE_INTENT_OUT,
+   VALUE_ARG,
+   VALUE_READ,
+   VALUE_VARDEF
+ };
+ 
+ /* How a variable's value is used.  */
+ enum value_used
+ {
+   VALUE_UNUSED = 0,
+   VALUE_MAYBE_USED,
+   VALUE_INTENT_IN,
+   VALUE_VALUE_ARG,
+   VALUE_USED
+ };
+ 
  /* Strings for all symbol attributes.  We use these for dumping the
     parse tree, in error messages, and also when reading and writing
     modules.  In symbol.cc.  */
*************** typedef struct
*** 1012,1017 ****
--- 1032,1050 ----
       modification of type or type parameters is permitted.  */
    unsigned referenced:1;
  
+   /* Set if the value of the symbol has been assigned one way or another.  */
+   ENUM_BITFIELD (value_set) value_set:3;
+ 
+   /* Set if the value of the symbol has been used.  */
+   ENUM_BITFIELD (value_used) value_used:3;
+ 
+   /* Set if the symbol has been allocated in the current procedure.  */
+   unsigned allocated:1;
+ 
+   /* Set if we already emitted a warning for this symbol and the
+      middle-end should not add additional ones.  */
+   unsigned warning_emitted:1;
+ 
    /* Set if this is the symbol for the main program.  */
    unsigned is_main_program:1;
  
*************** enum gfc_omp_linear_op
*** 1423,1437 ****
    OMP_LINEAR_UVAL
  };
  
- typedef struct gfc_omp_namelist_udm
- {
-   /* When adding more struct members, change the struct use in gfc_omp_namelist
-      to a pointer and move the struct definition down, placing it after
-      '#define gfc_get_omp_udm'.  */
-   struct gfc_omp_udm *udm;
- }
- gfc_omp_namelist_udm;
- 
  /* For use in OpenMP clauses in case we need extra information
     (aligned clause alignment, linear clause step, etc.).  */
  
--- 1456,1461 ----
*************** typedef struct gfc_omp_namelist
*** 1485,1491 ****
      } u2;
    union
      {
!       struct gfc_omp_namelist_udm udm;
      } u3;
    struct gfc_omp_namelist *next;
    locus where;
--- 1509,1515 ----
      } u2;
    union
      {
!       struct gfc_omp_namelist_udm *udm;
      } u3;
    struct gfc_omp_namelist *next;
    locus where;
*************** typedef struct gfc_omp_udm
*** 1898,1903 ****
--- 1922,1936 ----
  gfc_omp_udm;
  #define gfc_get_omp_udm() XCNEW (gfc_omp_udm)
  
+ typedef struct gfc_omp_namelist_udm
+ {
+   const char *mapper_id;
+   struct gfc_omp_udm *udm;
+ }
+ gfc_omp_namelist_udm;
+ #define gfc_get_omp_namelist_udm() XCNEW (gfc_omp_namelist_udm)
+ 
+ 
  /* The gfc_st_label structure is a BBT attached to a namespace that
     records the usage of statement labels within that space.  */
  
*************** typedef struct gfc_symbol
*** 2163,2171 ****
    /* Link to next entry in derived type list */
    struct gfc_symbol *dt_next;
  
!   /* This is for determining where the symbol has been used first, for better
!      location of error messages.  */
!   locus formal_at;
  }
  gfc_symbol;
  
--- 2196,2207 ----
    /* Link to next entry in derived type list */
    struct gfc_symbol *dt_next;
  
!   /* For when we would like an additional location in an error message.  */
!   locus other_loc;
! 
!   /* For when we would like even one more location. Currently used to store
!      where a variable is allocated.  */
!   locus extra_loc;
  }
  gfc_symbol;
  
*************** void gfc_warn_intrinsic_shadow (const gf
*** 3968,3973 ****
--- 4004,4020 ----
  bool gfc_check_intrinsic_standard (const gfc_intrinsic_sym*, const char**,
  				      bool, locus);
  
+ bool gfc_value_set_at (gfc_symbol *, locus *loc = NULL,
+ 		       enum value_set = VALUE_VARDEF);
+ 
+ bool gfc_lvalue_allocated_at (gfc_symbol *, locus *);
+ void gfc_mark_lhs_as_used (gfc_expr *, locus *);
+ 
+ void gfc_value_used_expr (gfc_expr *, enum value_used);
+ void gfc_value_set_and_used (gfc_expr *, locus *loc,
+ 			     enum value_set, enum value_used);
+ void gfc_used_in_allocate_expr (gfc_expr *, locus *loc);
+ 
  /* match.cc -- FIXME */
  void gfc_free_iterator (gfc_iterator *, int);
  void gfc_free_forall_iterator (gfc_forall_iterator *);
diff -Nrcpad gcc-17-20260607/gcc/fortran/interface.cc gcc-17-20260614/gcc/fortran/interface.cc
*** gcc-17-20260607/gcc/fortran/interface.cc	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/fortran/interface.cc	Sun Jun 14 22:32:07 2026
*************** gfc_compare_actual_formal (gfc_actual_ar
*** 4081,4087 ****
  	      goto match;
  	    }
  	}
- 
        /* F2023: 15.5.2.5 Ordinary dummy variables:
  	 "(21) If the procedure is nonelemental, the dummy argument does not
  	 have the VALUE attribute, and the actual argument is an array section
--- 4081,4086 ----
*************** gfc_compare_actual_formal (gfc_actual_ar
*** 4254,4259 ****
--- 4253,4294 ----
    if (*ap == NULL && n > 0)
      *ap = new_arg[0];
  
+   if (!in_statement_function)
+     for (f = formal, i = 0; f; f = f->next, i++)
+       {
+ 	if (new_arg[i]->expr)
+ 	  {
+ 	    gfc_expr *e = new_arg[i]->expr;
+ 
+ 	    if (f->sym->attr.value)
+ 	      {
+ 		gfc_value_used_expr (e, VALUE_VALUE_ARG);
+ 		continue;
+ 	      }
+ 	    switch (f->sym->attr.intent)
+ 	      {
+ 	      case INTENT_OUT:
+ 		{
+ 		  gfc_symbol *s = e->symtree->n.sym;
+ 		  gfc_value_set_at (s, &e->where, VALUE_INTENT_OUT);
+ 
+ 		  /* INTENT(OUT) allocates variables as far as we know.  */
+ 		  if (s->attr.allocatable)
+ 		    s->attr.allocated = 1;
+ 		}
+ 		break;
+ 	      case INTENT_IN:
+ 		gfc_value_used_expr (e, VALUE_INTENT_IN);
+ 		break;
+ 	      case INTENT_INOUT:
+ 	      case INTENT_UNKNOWN:
+ 		gfc_value_set_and_used (e, &e->where, VALUE_ARG,
+ 					VALUE_MAYBE_USED);
+ 		break;
+ 	      }
+ 	  }
+     }
+ 
    return true;
  }
  
*************** gfc_procedure_use (gfc_symbol *sym, gfc_
*** 4677,4682 ****
--- 4712,4722 ----
  	    }
  	}
  
+       if (implicit)
+ 	for (a = *ap; a; a = a->next)
+ 	  gfc_value_set_and_used (a->expr, &a->expr->where, VALUE_ARG,
+ 				  VALUE_MAYBE_USED);
+ 
        return true;
      }
  
diff -Nrcpad gcc-17-20260607/gcc/fortran/intrinsic.cc gcc-17-20260614/gcc/fortran/intrinsic.cc
*** gcc-17-20260607/gcc/fortran/intrinsic.cc	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/fortran/intrinsic.cc	Sun Jun 14 22:32:07 2026
*************** finish:
*** 4999,5009 ****
    return true;
  }
  
  
! /* Initialize the gfc_current_intrinsic_arg[] array for the benefit of
!    error messages.  This subroutine returns false if a subroutine
!    has more than MAX_INTRINSIC_ARGS, in which case the actual argument
!    list cannot match any intrinsic.  */
  
  static void
  init_arglist (gfc_intrinsic_sym *isym)
--- 4999,5050 ----
    return true;
  }
  
+ /* Mark actual arguments as used according to the INTENTs of a
+    formal arglist.  */
  
! static void
! mark_args_as_used (gfc_intrinsic_arg *f, gfc_actual_arglist *a)
! {
!   while (f != NULL && a != NULL)
!     {
!       if (a->expr != NULL)
! 	{
! 	  if (f->value)
! 	    {
! 	      gfc_value_used_expr (a->expr, VALUE_VALUE_ARG);
! 	      continue;
! 	    }
! 
! 	  switch (f->intent)
! 	    {
! 	    case INTENT_INOUT:
! 	    case INTENT_UNKNOWN:
! 	      gfc_value_set_and_used (a->expr, &a->expr->where, VALUE_ARG,
! 				      VALUE_MAYBE_USED);
! 	      break;
! 
! 	    case INTENT_IN:
! 	      gfc_value_used_expr (a->expr, VALUE_INTENT_IN);
! 	      break;
! 
! 	    case INTENT_OUT:
! 	      if (a->expr->expr_type == EXPR_VARIABLE)
! 		{
! 		  gfc_symbol *s = a->expr->symtree->n.sym;
! 		  gfc_value_set_at (s, &a->expr->where, VALUE_INTENT_OUT);
! 		  if (s->attr.allocatable)
! 		    s->attr.allocated = 1;
! 		}
! 	      break;
! 	    }
! 	}
!       f = f->next;
!       a = a->next;
!     }
! }
! 
! /* Initialize the gfc_current_intrinsic_arg[] array for the benefit of error
!    messages.  Errors out if there are too many arguments.  */
  
  static void
  init_arglist (gfc_intrinsic_sym *isym)
*************** gfc_intrinsic_sub_interface (gfc_code *c
*** 5464,5469 ****
--- 5505,5511 ----
  
    c->resolved_sym->attr.noreturn = isym->noreturn;
  
+   mark_args_as_used (isym->formal, c->ext.actual);
    return MATCH_YES;
  
  fail:
diff -Nrcpad gcc-17-20260607/gcc/fortran/invoke.texi gcc-17-20260614/gcc/fortran/invoke.texi
*** gcc-17-20260607/gcc/fortran/invoke.texi	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/fortran/invoke.texi	Sun Jun 14 22:32:07 2026
*************** and warnings}.
*** 155,161 ****
  -Wuse-without-only -Wintrinsics-std -Wline-truncation -Wno-align-commons
  -Wno-overwrite-recursive -Wno-tabs -Wreal-q-constant -Wsurprising
  -Wunderflow -Wunused-parameter -Wrealloc-lhs -Wrealloc-lhs-all
! -Wfrontend-loop-interchange -Wtarget-lifetime -fmax-errors=@var{n}
  -fsyntax-only -pedantic
  -pedantic-errors
  }
--- 155,162 ----
  -Wuse-without-only -Wintrinsics-std -Wline-truncation -Wno-align-commons
  -Wno-overwrite-recursive -Wno-tabs -Wreal-q-constant -Wsurprising
  -Wunderflow -Wunused-parameter -Wrealloc-lhs -Wrealloc-lhs-all
! -Wfrontend-loop-interchange -Wtarget-lifetime -Wundefined-vars
! -Wunused-intent-out -Wunused-read -fmax-errors=@var{n}
  -fsyntax-only -pedantic
  -pedantic-errors
  }
*************** This currently includes @option{-Waliasi
*** 996,1003 ****
  @option{-Wconversion}, @option{-Wsurprising}, @option{-Wc-binding-type},
  @option{-Wintrinsics-std}, @option{-Wtabs}, @option{-Wintrinsic-shadow},
  @option{-Wline-truncation}, @option{-Wtarget-lifetime},
! @option{-Winteger-division}, @option{-Wreal-q-constant}, @option{-Wunused}
! and @option{-Wundefined-do-loop}.
  
  @opindex Waliasing
  @cindex aliasing
--- 997,1004 ----
  @option{-Wconversion}, @option{-Wsurprising}, @option{-Wc-binding-type},
  @option{-Wintrinsics-std}, @option{-Wtabs}, @option{-Wintrinsic-shadow},
  @option{-Wline-truncation}, @option{-Wtarget-lifetime},
! @option{-Winteger-division}, @option{-Wreal-q-constant}, @option{-Wunused},
! @option{-Wundefined-do-loop} and @option{-Wundefined-vars}.
  
  @opindex Waliasing
  @cindex aliasing
*************** by @option{-Wall}.
*** 1096,1102 ****
  @item -Wextra
  Enables some warning options for usages of language features that
  may be problematic. This currently includes @option{-Wcompare-reals},
! @option{-Wunused-parameter} and @option{-Wdo-subscript}.
  
  @opindex Wfrontend-loop-interchange
  @cindex warnings, loop interchange
--- 1097,1104 ----
  @item -Wextra
  Enables some warning options for usages of language features that
  may be problematic. This currently includes @option{-Wcompare-reals},
! @option{-Wunused-parameter}, @option{-Wdo-subscript},
! @option{-Wunused-intent-out} and @option{-Wunused-read}.
  
  @opindex Wfrontend-loop-interchange
  @cindex warnings, loop interchange
*************** or an overflow
*** 1208,1213 ****
--- 1210,1222 ----
  during iteration of an induction variable of the loop.
  This option is implied by @option{-Wall}.
  
+ @opindex Wundefined-vars
+ @cindex warnings, undefined variables
+ @item -Wundefined-vars
+ Warn if variables are found to be used that cannot be defined (have a
+ value assigned to them).  This also includes using allocatable
+ variables that are not allocated.
+ 
  @opindex Wunderflow
  @cindex warnings, underflow
  @cindex underflow
*************** but about unused @code{PARAMETER} values
*** 1250,1255 ****
--- 1259,1303 ----
  is implied by @option{-Wextra} if also @option{-Wunused} or
  @option{-Wall} is used.
  
+ @opindex Wunused-intent-out
+ @cindex warnings, unused INTENT(OUT) argument
+ @cindex unused INTENT(OUT) argument
+ @item -Wunused-intent-out
+ Warn about variables passed to @code{INTENT(OUT)} arguments whose
+ values are then unused.  This option is implied by @option{-Wextra}.
+ The following code shows an example where this warning will be
+ emitted:
+ 
+ @smallexample
+ module y
+   implicit none
+ contains
+   subroutine bar
+     real :: a
+     call foo(a) ! Warning will be emitted here
+   end subroutine bar
+   subroutine foo(x)
+     real, intent(out) :: x
+     x = 0.4
+   end subroutine foo
+ end module y
+ @end smallexample
+ 
+ @opindex Wunused-read
+ @cindex warnings, unused read
+ @cindex unused read warnings
+ @item -Wunused-read
+ Warn about variables in @code{READ} statements whose values are
+ never used. This warning is implied by @option{-Wextra}.
+ The following code shows an example where this warning will be
+ emitted:
+ @smallexample
+ program main
+   real :: x
+   read (*,*) x
+ end program main
+ @end smallexample
+ 
  @opindex Walign-commons
  @cindex warnings, alignment of @code{COMMON} blocks
  @cindex alignment of @code{COMMON} blocks
diff -Nrcpad gcc-17-20260607/gcc/fortran/io.cc gcc-17-20260614/gcc/fortran/io.cc
*** gcc-17-20260607/gcc/fortran/io.cc	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/fortran/io.cc	Sun Jun 14 22:32:07 2026
*************** resolve_tag_format (gfc_expr *e)
*** 1795,1800 ****
--- 1795,1801 ----
  	  return false;
  	}
  
+       gfc_value_used_expr (e, VALUE_USED);
        return true;
      }
  
*************** resolve_tag_format (gfc_expr *e)
*** 1835,1840 ****
--- 1836,1842 ----
  	}
      }
  
+   gfc_value_used_expr (e, VALUE_USED);
    return true;
  }
  
*************** resolve_tag (const io_tag *tag, gfc_expr
*** 1904,1909 ****
--- 1906,1917 ----
  	return false;
      }
  
+   if (tag == &tag_convert)
+     {
+       if (!gfc_notify_std (GFC_STD_GNU, "CONVERT tag at %L", &e->where))
+ 	return false;
+     }
+ 
    /* NEWUNIT, IOSTAT, SIZE and IOMSG are variable definition contexts.  */
    if (tag == &tag_newunit || tag == &tag_iostat
        || tag == &tag_size || tag == &tag_iomsg)
*************** resolve_tag (const io_tag *tag, gfc_expr
*** 1913,1925 ****
        sprintf (context, _("%s tag"), tag->name);
        if (!gfc_check_vardef_context (e, false, false, false, context))
  	return false;
-     }
  
!   if (tag == &tag_convert)
!     {
!       if (!gfc_notify_std (GFC_STD_GNU, "CONVERT tag at %L", &e->where))
! 	return false;
      }
  
    return true;
  }
--- 1921,1931 ----
        sprintf (context, _("%s tag"), tag->name);
        if (!gfc_check_vardef_context (e, false, false, false, context))
  	return false;
  
!       gfc_value_set_at (e->symtree->n.sym, &e->where, VALUE_VARDEF);
      }
+   else
+     gfc_value_used_expr (e, VALUE_USED);
  
    return true;
  }
*************** gfc_resolve_dt (gfc_code *dt_code, gfc_d
*** 3300,3305 ****
--- 3306,3312 ----
  {
    gfc_expr *e;
    io_kind k;
+   bool internal_unit;
  
    /* This is set in any case.  */
    gcc_assert (dt->dt_io_kind);
*************** gfc_resolve_dt (gfc_code *dt_code, gfc_d
*** 3348,3353 ****
--- 3355,3361 ----
        return false;
      }
  
+   internal_unit = false;
    if (gfc_resolve_expr (e)
        && (e->ts.type != BT_INTEGER
  	  && (e->ts.type != BT_CHARACTER || e->expr_type != EXPR_VARIABLE)))
*************** gfc_resolve_dt (gfc_code *dt_code, gfc_d
*** 3387,3392 ****
--- 3395,3401 ----
  
    if (e->ts.type == BT_CHARACTER)
      {
+       internal_unit = true;
        if (gfc_has_vector_index (e))
  	{
  	  gfc_error ("Internal unit with vector subscript at %L", &e->where);
*************** gfc_resolve_dt (gfc_code *dt_code, gfc_d
*** 3395,3404 ****
  
        /* If we are writing, make sure the internal unit can be changed.  */
        gcc_assert (k != M_PRINT);
!       if (k == M_WRITE
! 	  && !gfc_check_vardef_context (e, false, false, false,
  					_("internal unit in WRITE")))
! 	return false;
      }
  
    if (e->rank && e->ts.type != BT_CHARACTER)
--- 3404,3417 ----
  
        /* If we are writing, make sure the internal unit can be changed.  */
        gcc_assert (k != M_PRINT);
!       if (k == M_WRITE)
! 	{
! 	  if (!gfc_check_vardef_context (e, false, false, false,
  					_("internal unit in WRITE")))
! 	    return false;
! 
! 	  gfc_value_set_at (e->symtree->n.sym, &e->where);
! 	}
      }
  
    if (e->rank && e->ts.type != BT_CHARACTER)
*************** gfc_resolve_dt (gfc_code *dt_code, gfc_d
*** 3415,3420 ****
--- 3428,3436 ----
        return false;
      }
  
+   if (!internal_unit)
+     gfc_value_used_expr (e, VALUE_USED);
+ 
    /* If we are reading and have a namelist, check that all namelist symbols
       can appear in a variable definition context.  */
    if (dt->namelist)
*************** gfc_resolve_dt (gfc_code *dt_code, gfc_d
*** 3439,3444 ****
--- 3455,3461 ----
  			     dt->namelist->name, loc, n->sym->name);
  		  return false;
  		}
+ 	      gfc_value_set_at (n->sym, NULL);
  	    }
  
  	  t = dtio_procs_present (n->sym, k);
*************** gfc_resolve_inquire (gfc_inquire *inquir
*** 4776,4781 ****
--- 4793,4799 ----
        if (gfc_check_vardef_context ((expr), false, false, false, \
  				    context) == false) \
  	return false; \
+       gfc_value_set_at (expr->symtree->n.sym, &expr->where); \
      }
    INQUIRE_RESOLVE_TAG (&tag_iomsg, inquire->iomsg);
    INQUIRE_RESOLVE_TAG (&tag_iostat, inquire->iostat);
diff -Nrcpad gcc-17-20260607/gcc/fortran/lang.opt gcc-17-20260614/gcc/fortran/lang.opt
*** gcc-17-20260607/gcc/fortran/lang.opt	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/fortran/lang.opt	Sun Jun 14 22:32:07 2026
*************** Wundefined-do-loop
*** 345,350 ****
--- 345,354 ----
  Fortran Warning Var(warn_undefined_do_loop) LangEnabledBy(Fortran,Wall)
  Warn about an invalid DO loop.
  
+ Wundefined-vars
+ Fortran Warning Var(warn_undefined_vars) LangEnabledBy(Fortran,Wall)
+ Warn about variables which are not defined but referenced.
+ 
  Wunderflow
  Fortran Warning Var(warn_underflow) Init(1)
  Warn about underflow of numerical constant expressions.
*************** Wunused-dummy-argument
*** 365,370 ****
--- 369,382 ----
  Fortran Warning Var(warn_unused_dummy_argument) LangEnabledBy(Fortran,Wall)
  Warn about unused dummy arguments.
  
+ Wunused-intent-out
+ Fortran Warning Var(warn_unused_intent_out) LangEnabledBy(Fortran,Wextra)
+ Warn about INTENT(OUT) arguments whose values are not used.
+ 
+ Wunused-read
+ Fortran Warning Var(warn_unused_read) LangEnabledBy(Fortran,Wextra)
+ Warn about variables read in whose values are not used.
+ 
  Wzerotrip
  Fortran Warning Var(warn_zerotrip) LangEnabledBy(Fortran,Wall)
  Warn about zero-trip DO loops.
diff -Nrcpad gcc-17-20260607/gcc/fortran/lang.opt.urls gcc-17-20260614/gcc/fortran/lang.opt.urls
*** gcc-17-20260607/gcc/fortran/lang.opt.urls	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/fortran/lang.opt.urls	Sun Jun 14 22:32:07 2026
*************** LangUrlSuffix_Fortran(gfortran/Error-and
*** 255,260 ****
--- 255,263 ----
  Wundefined-do-loop
  LangUrlSuffix_Fortran(gfortran/Error-and-Warning-Options.html#index-Wundefined-do-loop)
  
+ Wundefined-vars
+ LangUrlSuffix_Fortran(gfortran/Error-and-Warning-Options.html#index-Wundefined-vars)
+ 
  Wunderflow
  LangUrlSuffix_Fortran(gfortran/Error-and-Warning-Options.html#index-Wunderflow)
  
*************** UrlSuffix(gcc/Warning-Options.html#index
*** 270,275 ****
--- 273,284 ----
  Wunused-dummy-argument
  LangUrlSuffix_Fortran(gfortran/Error-and-Warning-Options.html#index-Wunused-dummy-argument)
  
+ Wunused-intent-out
+ LangUrlSuffix_Fortran(gfortran/Error-and-Warning-Options.html#index-Wunused-intent-out)
+ 
+ Wunused-read
+ LangUrlSuffix_Fortran(gfortran/Error-and-Warning-Options.html#index-Wunused-read)
+ 
  Wzerotrip
  LangUrlSuffix_Fortran(gfortran/Error-and-Warning-Options.html#index-Wzerotrip)
  
diff -Nrcpad gcc-17-20260607/gcc/fortran/match.cc gcc-17-20260614/gcc/fortran/match.cc
*** gcc-17-20260607/gcc/fortran/match.cc	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/fortran/match.cc	Sun Jun 14 22:32:07 2026
*************** match_association_list (bool for_change_
*** 2326,2331 ****
--- 2326,2346 ----
  	  else
  	    gfc_free_expr (tmp);
  	}
+       else if (newAssoc->target->ts.type == BT_UNKNOWN
+ 	       && newAssoc->target->expr_type == EXPR_OP)
+ 	{
+ 	  /* The selector is an unresolved expression involving an overloaded
+ 	     intrinsic operator (e.g. a `+' bound via an explicit interface
+ 	     to a function returning CHARACTER).  Try to extend it now, the
+ 	     same way the type-bound user-defined operator case above does
+ 	     for INTRINSIC_USER, so the associate name gets a usable type
+ 	     before the body of the ASSOCIATE construct is parsed.  */
+ 	  gfc_expr *tmp = gfc_copy_expr (newAssoc->target);
+ 	  if (gfc_extend_expr (tmp) == MATCH_YES)
+ 	    gfc_replace_expr (newAssoc->target, tmp);
+ 	  else
+ 	    gfc_free_expr (tmp);
+ 	}
  
        /* The `variable' field is left blank for now; because the target is not
  	 yet resolved, we can't use gfc_has_vector_subscript to determine it
*************** gfc_match_call (void)
*** 6028,6039 ****
       target type.  */
    if (((sym->attr.flavor != FL_PROCEDURE
  	|| gfc_is_function_return_value (sym, gfc_current_ns))
!        && (sym->ts.type == BT_DERIVED || sym->ts.type == BT_CLASS))
! 		||
!       (sym->assoc && sym->assoc->target
!        && gfc_resolve_expr (sym->assoc->target)
!        && (sym->assoc->target->ts.type == BT_DERIVED
! 	   || sym->assoc->target->ts.type == BT_CLASS)))
      return match_typebound_call (st);
  
    /* If it does not seem to be callable (include functions so that the
--- 6043,6060 ----
       target type.  */
    if (((sym->attr.flavor != FL_PROCEDURE
  	|| gfc_is_function_return_value (sym, gfc_current_ns))
! 	&& (sym->ts.type == BT_DERIVED || sym->ts.type == BT_CLASS))
!       ||
!       /* Skip gfc_resolve_expr for ASSOCIATE names followed by '%'.
! 	 resolving a contained-function selector before CONTAINS is
! 	 parsed prematurely, marks it EXTERNAL, conflicting with its
! 	 later INTERNAL declaration.  */
! 	(sym->assoc && sym->assoc->target && gfc_peek_ascii_char () == '%')
!       ||
! 	(sym->assoc && sym->assoc->target
! 	 && gfc_resolve_expr (sym->assoc->target)
! 	 && (sym->assoc->target->ts.type == BT_DERIVED
! 	     || sym->assoc->target->ts.type == BT_CLASS)))
      return match_typebound_call (st);
  
    /* If it does not seem to be callable (include functions so that the
*************** gfc_free_omp_namelist (gfc_omp_namelist
*** 6521,6527 ****
    bool free_align_allocator = (list == OMP_LIST_ALLOCATE);
    bool free_mem_traits_space = (list == OMP_LIST_USES_ALLOCATORS);
    bool free_init = (list == OMP_LIST_INIT);
!   bool free_mapper = (list == OMP_LIST_MAP);
  
    gfc_omp_namelist *n;
    gfc_expr *last_allocator = NULL;
--- 6542,6550 ----
    bool free_align_allocator = (list == OMP_LIST_ALLOCATE);
    bool free_mem_traits_space = (list == OMP_LIST_USES_ALLOCATORS);
    bool free_init = (list == OMP_LIST_INIT);
!   bool free_mapper = (list == OMP_LIST_MAP
! 		      || list == OMP_LIST_TO
! 		      || list == OMP_LIST_FROM);
  
    gfc_omp_namelist *n;
    gfc_expr *last_allocator = NULL;
*************** gfc_free_omp_namelist (gfc_omp_namelist
*** 6555,6562 ****
  	      free (name->u2.init_interop);
  	    }
  	}
!       else if (free_mapper)
! 	{ } /* For now, u3.udm is not a pointer.  */
        else if (!free_mapper && name->u2.udr)
  	{
  	  if (name->u2.udr->combiner)
--- 6578,6585 ----
  	      free (name->u2.init_interop);
  	    }
  	}
!       else if (free_mapper && name->u3.udm)
! 	free (name->u3.udm);
        else if (!free_mapper && name->u2.udr)
  	{
  	  if (name->u2.udr->combiner)
diff -Nrcpad gcc-17-20260607/gcc/fortran/module.cc gcc-17-20260614/gcc/fortran/module.cc
*** gcc-17-20260607/gcc/fortran/module.cc	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/fortran/module.cc	Sun Jun 14 22:32:07 2026
*************** along with GCC; see the file COPYING3.
*** 76,81 ****
--- 76,82 ----
  #include "parse.h" /* FIXME */
  #include "constructor.h"
  #include "cpp.h"
+ #include "diagnostic-core.h"
  #include "scanner.h"
  #include <zlib.h>
  
*************** along with GCC; see the file COPYING3.
*** 85,90 ****
--- 86,92 ----
  /* Don't put any single quote (') in MOD_VERSION, if you want it to be
     recognized.  */
  #define MOD_VERSION "16"
+ #define MOD_VERSION_NUMERIC 16
  /* Older mod versions we can still parse.  */
  #define COMPAT_MOD_VERSIONS { "15" }
  
*************** load_omp_udrs (void)
*** 5443,5454 ****
  	  pointer_info *p = get_integer (atom_int);
  	  if (strcmp (p->u.rsym.module, udr->omp_out->module))
  	    {
! 	      gfc_error ("Ambiguous !$OMP DECLARE REDUCTION from "
! 			 "module %s at %L",
! 			 p->u.rsym.module, &gfc_current_locus);
! 	      gfc_error ("Previous !$OMP DECLARE REDUCTION from module "
! 			 "%s at %L",
! 			 udr->omp_out->module, &udr->where);
  	    }
  	  skip_list (1);
  	  continue;
--- 5445,5458 ----
  	  pointer_info *p = get_integer (atom_int);
  	  if (strcmp (p->u.rsym.module, udr->omp_out->module))
  	    {
! 	      gcc_assert (!gfc_buffered_p ());  /* Cf. PR80012 comment 15.  */
! 	      auto_diagnostic_group d;
! 	      gfc_error ("Ambiguous !$OMP DECLARE REDUCTION %qs for type %qs "
! 			 "from module %qs at %L", udr->name,
! 			 gfc_typename (&ts), module_name, &gfc_current_locus);
! 	      inform (gfc_get_location (&udr->where),
! 		      "Previous !$OMP DECLARE REDUCTION from module %qs",
! 		      udr->omp_out->module);
  	    }
  	  skip_list (1);
  	  continue;
*************** load_omp_udrs (void)
*** 5485,5490 ****
--- 5489,5608 ----
  }
  
  
+ /* In declare mapper, not all map types are permitted; hence, only
+    a subset is needed.  */
+ 
+ static const mstring omp_map_clause_ops[] =
+ {
+     minit ("ALLOC", OMP_MAP_ALLOC),
+     minit ("TO", OMP_MAP_TO),
+     minit ("FROM", OMP_MAP_FROM),
+     minit ("TOFROM", OMP_MAP_TOFROM),
+     minit ("ALWAYS_TO", OMP_MAP_ALWAYS_TO),
+     minit ("ALWAYS_FROM", OMP_MAP_ALWAYS_FROM),
+     minit ("ALWAYS_TOFROM", OMP_MAP_ALWAYS_TOFROM),
+     minit ("UNSET", OMP_MAP_UNSET),
+     minit (NULL, -1)
+ };
+ 
+ /* This function loads OpenMP user-defined mappers.  */
+ 
+ static void
+ load_omp_udms (void)
+ {
+   while (peek_atom () != ATOM_RPAREN)
+     {
+       const char *mapper_id = NULL;
+       gfc_symtree *st;
+ 
+       mio_lparen ();
+       gfc_omp_udm *udm = gfc_get_omp_udm ();
+ 
+       require_atom (ATOM_INTEGER);
+       pointer_info *udmpi = get_integer (atom_int);
+       associate_integer_pointer (udmpi, udm);
+ 
+       mio_pool_string (&mapper_id);
+ 
+       /* Note: for a derived-type typespec, we might not have loaded the
+ 	 "u.derived" symbol yet.  Defer checking duplicates until
+ 	 check_omp_declare_mappers is called after loading all symbols.  */
+       mio_typespec (&udm->ts);
+ 
+       if (mapper_id == NULL)
+ 	mapper_id = gfc_get_string ("%s", "");
+ 
+       st = gfc_find_symtree (gfc_current_ns->omp_udm_root, mapper_id);
+ 
+       pointer_info *p = mio_symbol_ref (&udm->var_sym);
+       pointer_info *q = get_integer (p->u.rsym.ns);
+ 
+       udm->where = gfc_current_locus;
+       udm->mapper_id = mapper_id;
+       udm->mapper_ns = gfc_get_namespace (gfc_current_ns, 1);
+       udm->mapper_ns->proc_name = gfc_current_ns->proc_name;
+       udm->mapper_ns->omp_udm_ns = 1;
+ 
+       associate_integer_pointer (q, udm->mapper_ns);
+ 
+       gfc_omp_namelist *clauses = NULL;
+       gfc_omp_namelist **clausep = &clauses;
+ 
+       mio_lparen ();
+       while (peek_atom () != ATOM_RPAREN)
+ 	{
+ 	  /* Read each map clause.  */
+ 	  gfc_omp_namelist *n = gfc_get_omp_namelist ();
+ 
+ 	  mio_lparen ();
+ 
+ 	  n->u.map.op = (gfc_omp_map_op) mio_name (0, omp_map_clause_ops);
+ 	  mio_symbol_ref (&n->sym);
+ 	  mio_expr (&n->expr);
+ 
+ 	  mio_lparen ();
+ 
+ 	  if (peek_atom () != ATOM_RPAREN)
+ 	    {
+ 	      n->u3.udm = gfc_get_omp_namelist_udm ();
+ 	      mio_pool_string (&n->u3.udm->mapper_id);
+ 
+ 	      if (n->u3.udm->mapper_id == NULL)
+ 		n->u3.udm->mapper_id = gfc_get_string ("%s", "");
+ 
+ 	      mio_pointer_ref (&n->u3.udm->udm);
+ 	    }
+ 
+ 	  mio_rparen ();
+ 
+ 	  n->where = gfc_current_locus;
+ 
+ 	  mio_rparen ();
+ 
+ 	  *clausep = n;
+ 	  clausep = &n->next;
+ 	}
+       mio_rparen ();
+ 
+       udm->clauses = gfc_get_omp_clauses ();
+       udm->clauses->lists[OMP_LIST_MAP] = clauses;
+ 
+       if (st)
+ 	{
+ 	  udm->next = st->n.omp_udm;
+ 	  st->n.omp_udm = udm;
+ 	}
+       else
+ 	{
+ 	  st = gfc_new_symtree (&gfc_current_ns->omp_udm_root, mapper_id);
+ 	  st->n.omp_udm = udm;
+ 	}
+ 
+       mio_rparen ();
+     }
+ }
+ 
+ 
  /* Recursive function to traverse the pointer_info tree and load a
     needed symbol.  We return nonzero if we load a symbol and stop the
     traversal, because the act of loading can alter the tree.  */
*************** check_for_ambiguous (gfc_symtree *st, po
*** 5675,5686 ****
  }
  
  
  /* Read a module file.  */
  
  static void
  read_module (void)
  {
!   module_locus operator_interfaces, user_operators, omp_udrs;
    const char *p;
    char name[GFC_MAX_SYMBOL_LEN + 1];
    int i;
--- 5793,5844 ----
  }
  
  
+ static void
+ check_omp_declare_mappers (gfc_symtree *st)
+ {
+   if (!st)
+     return;
+ 
+   check_omp_declare_mappers (st->left);
+   check_omp_declare_mappers (st->right);
+ 
+   gfc_omp_udm **udmp = &st->n.omp_udm;
+   gfc_symtree tmp_st;
+ 
+   while (*udmp)
+     {
+       gfc_omp_udm *udm = *udmp;
+       tmp_st.n.omp_udm = udm->next;
+       gfc_omp_udm *prev_udm = gfc_omp_udm_find (&tmp_st, &udm->ts);
+       if (prev_udm)
+ 	{
+ 	  gcc_assert (!gfc_buffered_p ());  /* Cf. PR80012 comment 15.  */
+ 	  auto_diagnostic_group d;
+ 	  gfc_error ("Ambiguous !$OMP DECLARE MAPPER %qs for type %qs from "
+ 		     "module %qs at %L",
+ 		     st->n.omp_udm->mapper_id[0] != '\0'
+ 		     ? st->n.omp_udm->mapper_id : "default",
+ 		     udm->ts.u.derived->name, module_name,
+ 		     &udm->where);
+ 	  inform (gfc_get_location (&prev_udm->where),
+ 		  "Previous !$OMP DECLARE MAPPER from module %qs",
+ 		  prev_udm->var_sym->module);
+ 	  /* Delete the duplicate.  */
+ 	  *udmp = (*udmp)->next;
+ 	}
+       else
+ 	udmp = &(*udmp)->next;
+     }
+ }
+ 
+ 
  /* Read a module file.  */
  
  static void
  read_module (void)
  {
!   module_locus operator_interfaces, user_operators, omp_udrs, omp_udms;
!   bool has_omp_udms = false;
    const char *p;
    char name[GFC_MAX_SYMBOL_LEN + 1];
    int i;
*************** read_module (void)
*** 5707,5712 ****
--- 5865,5884 ----
    get_module_locus (&omp_udrs);
    skip_list ();
  
+   /* Skip OpenMP's user-defined 'declare mapper' (UDM); some extra code is
+      required to permit reading files without USM; see write_module for
+      details.  */
+   get_module_locus (&omp_udms);
+   if (peek_atom () == ATOM_LPAREN
+       && parse_atom ()
+       && module_char () == 'U'
+       && module_char () == 'D'
+       && module_char () == 'M')
+     has_omp_udms = true;
+   set_module_locus (&omp_udms);
+   if (has_omp_udms)
+     skip_list ();
+ 
    mio_lparen ();
  
    /* Create the fixup nodes for all the symbols.  */
*************** read_module (void)
*** 6056,6061 ****
--- 6228,6246 ----
    set_module_locus (&omp_udrs);
    load_omp_udrs ();
  
+   /* Load OpenMP user defined mappers.  */
+   if (has_omp_udms)
+     {
+       set_module_locus (&omp_udms);
+       mio_lparen ();
+       /* Skip 'UDM' marker, cf. above.  */
+       (void) module_char ();
+       (void) module_char ();
+       (void) module_char ();
+       load_omp_udms ();
+       mio_rparen ();
+     }
+ 
    /* At this point, we read those symbols that are needed but haven't
       been loaded yet.  If one symbol requires another, the other gets
       marked as NEEDED if its previous state was UNUSED.  */
*************** read_module (void)
*** 6088,6093 ****
--- 6273,6281 ----
  		 module_name);
      }
  
+   /* Check "omp declare mappers" for duplicates from different modules.  */
+   check_omp_declare_mappers (gfc_current_ns->omp_udm_root);
+ 
    /* Clean up symbol nodes that were never loaded, create references
       to hidden symbols.  */
  
*************** write_omp_udr (gfc_omp_udr *udr)
*** 6453,6458 ****
--- 6641,6648 ----
  }
  
  
+ /* Write OpenMP's declare reduction (used defined reductions). */
+ 
  static void
  write_omp_udrs (gfc_symtree *st)
  {
*************** write_omp_udrs (gfc_symtree *st)
*** 6467,6472 ****
--- 6657,6719 ----
  }
  
  
+ /* Write OpenMP's declare mapper (used defined mapper). */
+ 
+ static void
+ write_omp_udm (gfc_omp_udm *udm)
+ {
+   mio_lparen ();
+   /* We need this pointer ref to identify this mapper so that other mappers
+      can refer to it.  */
+   mio_pointer_ref (&udm);
+   mio_pool_string (&udm->mapper_id);
+   mio_typespec (&udm->ts);
+ 
+   if (udm->var_sym->module == NULL)
+     udm->var_sym->module = module_name;
+ 
+   mio_symbol_ref (&udm->var_sym);
+   mio_lparen ();
+   gfc_omp_namelist *n;
+   for (n = udm->clauses->lists[OMP_LIST_MAP]; n; n = n->next)
+     {
+       mio_lparen ();
+ 
+       mio_name (n->u.map.op, omp_map_clause_ops);
+       mio_symbol_ref (&n->sym);
+       mio_expr (&n->expr);
+ 
+       mio_lparen ();
+ 
+       if (n->u3.udm)
+ 	{
+ 	  mio_pool_string (&n->u3.udm->mapper_id);
+ 	  mio_pointer_ref (&n->u3.udm->udm);
+ 	}
+ 
+       mio_rparen ();
+ 
+       mio_rparen ();
+     }
+   mio_rparen ();
+   mio_rparen ();
+ }
+ 
+ 
+ static void
+ write_omp_udms (gfc_symtree *st)
+ {
+   if (st == NULL)
+     return;
+ 
+   write_omp_udms (st->left);
+   gfc_omp_udm *udm;
+   for (udm = st->n.omp_udm; udm; udm = udm->next)
+     write_omp_udm (udm);
+   write_omp_udms (st->right);
+ }
+ 
+ 
  /* Type for the temporary tree used when writing secondary symbols.  */
  
  struct sorted_pointer_info
*************** write_module (void)
*** 6729,6734 ****
--- 6976,6995 ----
    write_char ('\n');
    write_char ('\n');
  
+   /* Condition can be removed if version is bumped.  Note that
+      write_symbol0 starts with an integer.  Keep in sync with read_module;
+      The 'UDM' tag can be only removed when changing COMPAT_MOD_VERSIONS.  */
+   STATIC_ASSERT (MOD_VERSION_NUMERIC == 16);
+   if (gfc_current_ns->omp_udm_root)
+     {
+       mio_lparen ();
+       write_atom (ATOM_NAME, "UDM");  /* Marker. */
+       write_omp_udms (gfc_current_ns->omp_udm_root);
+       mio_rparen ();
+       write_char ('\n');
+       write_char ('\n');
+     }
+ 
    /* Write symbol information.  First we traverse all symbols in the
       primary namespace, writing those that need to be written.
       Sometimes writing one symbol will cause another to need to be
diff -Nrcpad gcc-17-20260607/gcc/fortran/openmp.cc gcc-17-20260614/gcc/fortran/openmp.cc
*** gcc-17-20260607/gcc/fortran/openmp.cc	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/fortran/openmp.cc	Sun Jun 14 22:32:07 2026
*************** gfc_match_dupl_atomic (bool not_dupl, co
*** 2466,2472 ****
  
  
  /* Search upwards though namespace NS and its parents to find an
!    !$omp declare mapper named MAPPER_ID, for typespec TS.  */
  
  gfc_omp_udm *
  gfc_find_omp_udm (gfc_namespace *ns, const char *mapper_id, gfc_typespec *ts)
--- 2466,2473 ----
  
  
  /* Search upwards though namespace NS and its parents to find an
!    !$omp declare mapper named MAPPER_ID, for typespec TS.  The default
!    mapper has mapper_id == "".  */
  
  gfc_omp_udm *
  gfc_find_omp_udm (gfc_namespace *ns, const char *mapper_id, gfc_typespec *ts)
*************** gfc_match_omp_clauses (gfc_omp_clauses *
*** 3841,3846 ****
--- 3842,3849 ----
  		      m = gfc_match (" %n ) ", mapper_id);
  		      if (m != MATCH_YES)
  			goto error;
+ 		      if (strcmp (mapper_id, "default") == 0)
+ 			mapper_id[0] = '\0';
  		    }
  		  else if (gfc_match_iterator (&ns_iter, true) == MATCH_YES)
  		    {
*************** gfc_match_omp_clauses (gfc_omp_clauses *
*** 3934,3950 ****
  		  for (n = *head; n; n = n->next)
  		    {
  		      n->u.map.op = map_op;
! 		      gfc_typespec *ts;
! 		      if (n->expr)
! 			ts = &n->expr->ts;
! 		      else
! 			ts = &n->sym->ts;
! 
! 		      gfc_omp_udm *udm
! 			= gfc_find_omp_udm (gfc_current_ns, mapper_id, ts);
! 		      if (udm)
  			{
! 			  n->u3.udm.udm = udm;
  			}
  		      n->u2.ns = ns_iter;
  		      if (ns_iter)
--- 3937,3947 ----
  		  for (n = *head; n; n = n->next)
  		    {
  		      n->u.map.op = map_op;
! 		      if (mapper_id[0] != '\0')
  			{
! 			  n->u3.udm = gfc_get_omp_namelist_udm ();
! 			  n->u3.udm->mapper_id
! 			    = gfc_get_string ("%s", mapper_id);
  			}
  		      n->u2.ns = ns_iter;
  		      if (ns_iter)
*************** gfc_omp_udm_find (gfc_symtree *st, gfc_t
*** 5979,5989 ****
    if (st == NULL)
      return NULL;
  
    for (omp_udm = st->n.omp_udm; omp_udm; omp_udm = omp_udm->next)
!     if ((omp_udm->ts.type == BT_DERIVED || omp_udm->ts.type == BT_CLASS)
! 	&& (ts->type == BT_DERIVED || ts->type == BT_CLASS)
! 	&& strcmp (omp_udm->ts.u.derived->name, ts->u.derived->name) == 0)
!       return omp_udm;
  
    return NULL;
  }
--- 5976,5996 ----
    if (st == NULL)
      return NULL;
  
+   gfc_symbol *dt = (ts->type == BT_CLASS
+ 		    ? CLASS_DATA (ts->u.derived)->ts.u.derived
+ 		    : ts->u.derived);
    for (omp_udm = st->n.omp_udm; omp_udm; omp_udm = omp_udm->next)
!     {
!       if (dt == omp_udm->ts.u.derived)
! 	return omp_udm;
!       /* Special case for comparing derived types across namespaces.  If the
! 	 true names and module names are the same and the module name is
! 	 nonnull, then they are equal.  */
!       if (dt->module && omp_udm->ts.u.derived->module
! 	  && strcmp (dt->name, omp_udm->ts.u.derived->name) == 0
! 	  && strcmp (dt->module, omp_udm->ts.u.derived->module) == 0)
! 	return omp_udm;
!     }
  
    return NULL;
  }
*************** gfc_omp_udr_find (gfc_symtree *st, gfc_t
*** 6295,6308 ****
    if (st == NULL)
      return NULL;
  
    for (omp_udr = st->n.omp_udr; omp_udr; omp_udr = omp_udr->next)
      if (omp_udr->ts.type == ts->type
! 	|| ((omp_udr->ts.type == BT_DERIVED || omp_udr->ts.type == BT_CLASS)
! 	    && (ts->type == BT_DERIVED || ts->type == BT_CLASS)))
        {
! 	if (omp_udr->ts.type == BT_DERIVED || omp_udr->ts.type == BT_CLASS)
  	  {
! 	    if (strcmp (omp_udr->ts.u.derived->name, ts->u.derived->name) == 0)
  	      return omp_udr;
  	  }
  	else if (omp_udr->ts.kind == ts->kind)
--- 6302,6326 ----
    if (st == NULL)
      return NULL;
  
+   gfc_symbol *dt = NULL;
+   if (ts->type == BT_DERIVED || ts->type == BT_CLASS)
+     dt = (ts->type == BT_CLASS
+ 	  ? CLASS_DATA (ts->u.derived)->ts.u.derived : ts->u.derived);
    for (omp_udr = st->n.omp_udr; omp_udr; omp_udr = omp_udr->next)
      if (omp_udr->ts.type == ts->type
! 	|| (dt && omp_udr->ts.type == BT_DERIVED))
        {
! 	if (dt && omp_udr->ts.type == BT_DERIVED)
  	  {
! 	    gfc_symbol *dtu = omp_udr->ts.u.derived;
! 	    if (dt == dtu)
! 	      return omp_udr;
! 	    /* Special case for comparing derived types across namespaces.  If
! 	       the true names and module names are the same and the module name
! 	       is nonnull, then they are equal.  */
! 	    if (dt->module && dtu->module
! 		&& strcmp (dt->name, dtu->name) == 0
! 		&& strcmp (dt->module, dtu->module) == 0)
  	      return omp_udr;
  	  }
  	else if (omp_udr->ts.kind == ts->kind)
*************** resolve_omp_clauses (gfc_code *code, gfc
*** 10452,10457 ****
--- 10470,10502 ----
  		    default:
  		      break;
  		    }
+ 		if (list == OMP_LIST_MAP
+ 		    || list == OMP_LIST_TO
+ 		    || list == OMP_LIST_FROM)
+ 		  {
+ 		    gfc_typespec *ts = n->expr ? &n->expr->ts : &n->sym->ts;
+ 
+ 		    if (ts->type == BT_DERIVED || ts->type == BT_CLASS)
+ 		      {
+ 			const char *mapper_id = (n->u3.udm
+ 						 ? n->u3.udm->mapper_id : "");
+ 			gfc_omp_udm *udm = gfc_find_omp_udm (gfc_current_ns,
+ 							     mapper_id, ts);
+ 			if (mapper_id[0] != '\0' && !udm)
+ 			  gfc_error ("User-defined mapper %qs not found at %L",
+ 				     mapper_id, &n->where);
+ 			else if (udm)
+ 			  {
+ 			    if (!n->u3.udm)
+ 			      {
+ 				gcc_assert (mapper_id[0] == '\0');
+ 				n->u3.udm = gfc_get_omp_namelist_udm ();
+ 				n->u3.udm->mapper_id = mapper_id;
+ 			      }
+ 			    n->u3.udm->udm = udm;
+ 			  }
+ 		      }
+ 		  }
  	      }
  
  	    if (list != OMP_LIST_DEPEND)
diff -Nrcpad gcc-17-20260607/gcc/fortran/parse.cc gcc-17-20260614/gcc/fortran/parse.cc
*** gcc-17-20260607/gcc/fortran/parse.cc	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/fortran/parse.cc	Sun Jun 14 22:32:07 2026
*************** static void reject_statement (void);
*** 72,94 ****
     input with the passed string.  If this succeeds, we call the
     keyword-dependent matching function that will match the rest of the
     statement.  For single keywords, the matching subroutine is
!    gfc_match_eos().  */
  
  static match
! match_word (const char *str, match (*subr) (void), locus *old_locus)
  {
    match m;
  
    if (str != NULL)
      {
        m = gfc_match (str);
        if (m != MATCH_YES)
  	return m;
      }
  
    m = (*subr) ();
  
!   if (m != MATCH_YES)
      {
        gfc_current_locus = *old_locus;
        reject_statement ();
--- 72,110 ----
     input with the passed string.  If this succeeds, we call the
     keyword-dependent matching function that will match the rest of the
     statement.  For single keywords, the matching subroutine is
!    gfc_match_eos().
! 
!    If NO_SUBSTRING, the keyword must be followed by a character not
!    permitted in a name (for free form); EOF is not handled here. Due
!    to fixed-form Fortran, longer keywords still need to be matched
!    before shorter substrings.
! 
!    If REJECT_STMT_ON_ERROR is false, it is assumed that no error
!    recovery handling is needed.  */
  
  static match
! match_word (const char *str, match (*subr) (void), locus *old_locus,
! 	    bool no_substring = false, bool reject_stmt_on_error = true)
  {
    match m;
+   char c;
  
    if (str != NULL)
      {
        m = gfc_match (str);
        if (m != MATCH_YES)
  	return m;
+       if (no_substring && gfc_current_form == FORM_FREE
+ 	  && ((c = gfc_peek_ascii_char ()) == '_' || c == '$' || ISALNUM (c)))
+ 	{
+ 	  gfc_current_locus = *old_locus;
+ 	  return MATCH_NO;
+ 	}
      }
  
    m = (*subr) ();
  
!   if (m == MATCH_NO || (reject_stmt_on_error && m == MATCH_ERROR))
      {
        gfc_current_locus = *old_locus;
        reject_statement ();
*************** match_word (const char *str, match (*sub
*** 99,122 ****
  
  
  /* Like match_word, but if str is matched, set a flag that it
!    was matched.  */
  static match
  match_word_omp_simd (const char *str, match (*subr) (void), locus *old_locus,
  		     bool *simd_matched)
  {
    match m;
  
    if (str != NULL)
      {
        m = gfc_match (str);
        if (m != MATCH_YES)
  	return m;
        *simd_matched = true;
      }
  
    m = (*subr) ();
  
!   if (m != MATCH_YES)
      {
        gfc_current_locus = *old_locus;
        reject_statement ();
--- 115,147 ----
  
  
  /* Like match_word, but if str is matched, set a flag that it
!    was matched. Note that reject_statement() is not called if
!    SUBR returned a match error - and no substring matching is
!    assumed.  */
  static match
  match_word_omp_simd (const char *str, match (*subr) (void), locus *old_locus,
  		     bool *simd_matched)
  {
    match m;
+   char c;
  
    if (str != NULL)
      {
        m = gfc_match (str);
        if (m != MATCH_YES)
  	return m;
+       if (gfc_current_form == FORM_FREE
+ 	  && ((c = gfc_peek_ascii_char ()) == '_' || c == '$' || ISALNUM (c)))
+ 	{
+ 	  gfc_current_locus = *old_locus;
+ 	  return MATCH_NO;
+ 	}
        *simd_matched = true;
      }
  
    m = (*subr) ();
  
!   if (m == MATCH_NO)
      {
        gfc_current_locus = *old_locus;
        reject_statement ();
*************** decode_statement (void)
*** 677,697 ****
  }
  
  /* Like match and if spec_only, goto do_spec_only without actually
!    matching.  */
! /* If the directive matched but the clauses failed, do not start
!    matching the next directive in the same switch statement. */
! #define matcha(keyword, subr, st)				\
!     do {							\
!       match m2;							\
!       if (spec_only && gfc_match (keyword) == MATCH_YES)	\
! 	goto do_spec_only;					\
!       else if ((m2 = match_word (keyword, subr, &old_locus))	\
! 	       == MATCH_YES)					\
! 	return st;						\
!       else if (m2 == MATCH_ERROR)				\
! 	goto error_handling;					\
!       else							\
! 	undo_new_statement ();				  	\
      } while (0)
  
  static gfc_statement
--- 702,721 ----
  }
  
  /* Like match and if spec_only, goto do_spec_only without actually
!    matching.  If the directive matched but the parsing then failed,
!    do not start matching the next directive in the same switch statement.  */
! #define matcha(keyword, subr, st)					\
!     do {								\
!       match m2;								\
!       if (spec_only && gfc_match (keyword) == MATCH_YES)		\
! 	goto do_spec_only;						\
!       else if ((m2 = match_word (keyword, subr, &old_locus, true,	\
! 				 false)) == MATCH_YES)			\
! 	return st;							\
!       else if (m2 == MATCH_ERROR)					\
! 	goto error_handling;						\
!       else								\
! 	undo_new_statement ();				  		\
      } while (0)
  
  static gfc_statement
*************** decode_oacc_directive (void)
*** 745,751 ****
        break;
      case 'd':
        matcha ("data", gfc_match_oacc_data, ST_OACC_DATA);
!       match ("declare", gfc_match_oacc_declare, ST_OACC_DECLARE);
        break;
      case 'e':
        matcha ("end atomic", gfc_match_omp_eos_error, ST_OACC_END_ATOMIC);
--- 769,775 ----
        break;
      case 'd':
        matcha ("data", gfc_match_oacc_data, ST_OACC_DATA);
!       matcha ("declare", gfc_match_oacc_declare, ST_OACC_DECLARE);
        break;
      case 'e':
        matcha ("end atomic", gfc_match_omp_eos_error, ST_OACC_END_ATOMIC);
*************** decode_oacc_directive (void)
*** 791,807 ****
        break;
      }
  
!   /* Directive not found or stored an error message.
!      Check and give up.  */
  
   error_handling:
    if (gfc_error_check () == 0)
!     gfc_error_now ("Unclassifiable OpenACC directive at %C");
  
    reject_statement ();
- 
    gfc_error_recovery ();
- 
    return ST_NONE;
  
   do_spec_only:
--- 815,833 ----
        break;
      }
  
!   /* Directive not found. */
!   gfc_error_now ("Unclassifiable OpenACC directive at %C");
!   goto recover;
  
+   /* Directive found but failed with an error, possibly with
+      a stored an error message.  */
   error_handling:
    if (gfc_error_check () == 0)
!     gfc_error_now ("Syntax error in statement at %C");
  
+  recover:
    reject_statement ();
    gfc_error_recovery ();
    return ST_NONE;
  
   do_spec_only:
*************** decode_oacc_directive (void)
*** 812,817 ****
--- 838,845 ----
    return ST_GET_FCN_CHARACTERISTICS;
  }
  
+ #undef matcha
+ 
  /* Checks for the ST_OMP_ALLOCATE. First, check whether all list items
     are allocatables/pointers - and if so, assume it is associated with a Fortran
     ALLOCATE stmt.  If not, do some initial parsing-related checks and append
*************** check_omp_allocate_stmt (locus *loc)
*** 911,933 ****
     and if spec_only, goto do_spec_only without actually matching.  */
  /* If the directive matched but the clauses failed, do not start
     matching the next directive in the same switch statement. */
! #define matcho(keyword, subr, st)				\
!     do {							\
!       match m2;							\
!       if (!flag_openmp)						\
! 	;							\
!       else if (spec_only && gfc_match (keyword) == MATCH_YES)	\
! 	goto do_spec_only;					\
!       else if ((m2 = match_word (keyword, subr, &old_locus))	\
! 	       == MATCH_YES)					\
! 	{							\
! 	  ret = st;						\
! 	  goto finish;						\
! 	}							\
!       else if (m2 == MATCH_ERROR)				\
! 	goto error_handling;					\
!       else							\
! 	undo_new_statement ();				  	\
      } while (0)
  
  /* Like match, but set a flag simd_matched if keyword matched.  */
--- 939,961 ----
     and if spec_only, goto do_spec_only without actually matching.  */
  /* If the directive matched but the clauses failed, do not start
     matching the next directive in the same switch statement. */
! #define matcho(keyword, subr, st)					\
!     do {								\
!       match m2;								\
!       if (!flag_openmp)							\
! 	;								\
!       else if (spec_only && gfc_match (keyword) == MATCH_YES)		\
! 	goto do_spec_only;						\
!       else if ((m2 = match_word (keyword, subr, &old_locus, true,	\
! 				 false)) == MATCH_YES)			\
! 	{								\
! 	  ret = st;							\
! 	  goto finish;							\
! 	}								\
!       else if (m2 == MATCH_ERROR)					\
! 	goto error_handling;						\
!       else								\
! 	undo_new_statement ();				  		\
      } while (0)
  
  /* Like match, but set a flag simd_matched if keyword matched.  */
*************** check_omp_allocate_stmt (locus *loc)
*** 947,967 ****
      } while (0)
  
  /* Like match, but don't match anything if not -fopenmp.  */
! #define matchdo(keyword, subr, st)				\
!     do {							\
!       match m2;							\
!       if (!flag_openmp)						\
! 	;							\
!       else if ((m2 = match_word (keyword, subr, &old_locus))	\
! 	       == MATCH_YES)					\
! 	{							\
! 	  ret = st;						\
! 	  goto finish;						\
! 	}							\
!       else if (m2 == MATCH_ERROR)				\
! 	goto error_handling;					\
!       else							\
! 	undo_new_statement ();				  	\
      } while (0)
  
  static gfc_statement
--- 975,995 ----
      } while (0)
  
  /* Like match, but don't match anything if not -fopenmp.  */
! #define matchdo(keyword, subr, st)					\
!     do {								\
!       match m2;								\
!       if (!flag_openmp)							\
! 	;								\
!       else if ((m2 = match_word (keyword, subr, &old_locus, true,	\
! 				 false)) == MATCH_YES)			\
! 	{								\
! 	  ret = st;							\
! 	  goto finish;							\
! 	}								\
!       else if (m2 == MATCH_ERROR)					\
! 	goto error_handling;						\
!       else								\
! 	undo_new_statement ();				  		\
      } while (0)
  
  static gfc_statement
*************** decode_omp_directive (void)
*** 1330,1346 ****
        break;
      }
  
!   /* All else has failed, so give up.  See if any of the matchers has
!      stored an error message of some sort.  Don't error out if
!      not -fopenmp and simd_matched is false, i.e. if a directive other
!      than one marked with match has been seen.  */
  
   error_handling:
!   if (flag_openmp || simd_matched)
!     {
!       if (!gfc_error_check ())
! 	gfc_error_now ("Unclassifiable OpenMP directive at %C");
!     }
  
    /* If parsing a metadirective, let the caller deal with the cleanup.  */
    if (gfc_matching_omp_context_selector)
--- 1358,1377 ----
        break;
      }
  
!   /* Directive not found.  Don't error out if not -fopenmp and
!      simd_matched is false, i.e. if a directive other than one marked
!      with match has been seen.  */
!   if (flag_openmp || simd_matched)
!     gfc_error_now ("Unclassifiable OpenMP directive at %C");
!   goto recover;
  
   error_handling:
!   /* Directive found but failed with an error, possibly with
!      a stored an error message.  */
!   if ((flag_openmp || simd_matched) && gfc_error_check () == 0)
!     gfc_error_now ("Syntax error in statement at %C");
! 
!  recover:
  
    /* If parsing a metadirective, let the caller deal with the cleanup.  */
    if (gfc_matching_omp_context_selector)
*************** decode_omp_directive (void)
*** 1467,1472 ****
--- 1498,1508 ----
    return ST_GET_FCN_CHARACTERISTICS;
  }
  
+ #undef matchs
+ #undef matcho
+ #undef matchds
+ #undef matchdo
+ 
  gfc_statement
  match_omp_directive (void)
  {
diff -Nrcpad gcc-17-20260607/gcc/fortran/resolve.cc gcc-17-20260614/gcc/fortran/resolve.cc
*** gcc-17-20260607/gcc/fortran/resolve.cc	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/fortran/resolve.cc	Sun Jun 14 22:32:07 2026
*************** resolve_function (gfc_expr *expr)
*** 3524,3536 ****
  	      gfc_warning (OPT_Wexternal_argument_mismatch,
  			   "Different argument lists in external dummy "
  			   "function %s at %L and %L", sym->name,
! 			   &expr->where, &sym->formal_at);
  	    }
  	}
        else if (!sym->formal_resolved)
  	{
  	  gfc_get_formal_from_actual_arglist (sym, expr->value.function.actual);
! 	  sym->formal_at = expr->where;
  	}
      }
    /* See if function is already resolved.  */
--- 3524,3536 ----
  	      gfc_warning (OPT_Wexternal_argument_mismatch,
  			   "Different argument lists in external dummy "
  			   "function %s at %L and %L", sym->name,
! 			   &expr->where, &sym->other_loc);
  	    }
  	}
        else if (!sym->formal_resolved)
  	{
  	  gfc_get_formal_from_actual_arglist (sym, expr->value.function.actual);
! 	  sym->other_loc = expr->where;
  	}
      }
    /* See if function is already resolved.  */
*************** resolve_call (gfc_code *c)
*** 4301,4313 ****
  	      gfc_warning (OPT_Wexternal_argument_mismatch,
  			   "Different argument lists in external dummy "
  			   "subroutine %s at %L and %L", csym->name,
! 			   &c->loc, &csym->formal_at);
  	    }
  	}
        else if (!csym->formal_resolved)
  	{
  	  gfc_get_formal_from_actual_arglist (csym, c->ext.actual);
! 	  csym->formal_at = c->loc;
  	}
      }
  
--- 4301,4313 ----
  	      gfc_warning (OPT_Wexternal_argument_mismatch,
  			   "Different argument lists in external dummy "
  			   "subroutine %s at %L and %L", csym->name,
! 			   &c->loc, &csym->other_loc);
  	    }
  	}
        else if (!csym->formal_resolved)
  	{
  	  gfc_get_formal_from_actual_arglist (csym, c->ext.actual);
! 	  csym->other_loc = c->loc;
  	}
      }
  
*************** gfc_resolve_iterator (gfc_iterator *iter
*** 8506,8511 ****
--- 8506,8517 ----
  		     &iter->step->where);
      }
  
+   gfc_value_set_and_used (iter->var, &iter->var->where, VALUE_VARDEF,
+ 			  VALUE_USED);
+   gfc_value_used_expr (iter->start, VALUE_USED);
+   gfc_value_used_expr (iter->end, VALUE_USED);
+   gfc_value_used_expr (iter->step, VALUE_USED);
+ 
    return true;
  }
  
*************** resolve_forall_iterators (gfc_forall_ite
*** 8947,8952 ****
--- 8953,8964 ----
  	}
        if (iter->var->ts.kind != iter->stride->ts.kind)
  	gfc_convert_type (iter->stride, &iter->var->ts, 1);
+ 
+       gfc_value_set_and_used (iter->var, &iter->var->where, VALUE_VARDEF,
+ 			      VALUE_USED);
+       gfc_value_used_expr (iter->start, VALUE_USED);
+       gfc_value_used_expr (iter->end, VALUE_USED);
+       gfc_value_used_expr (iter->stride, VALUE_USED);
      }
  
    for (iter = it; iter; iter = iter->next)
*************** check_symbols:
*** 9738,9743 ****
--- 9750,9760 ----
      }
  
  success:
+   gfc_used_in_allocate_expr (e, &e->where);
+ 
+   if (code->expr3)
+     gfc_value_set_at (e->symtree->n.sym, &code->expr3->where);
+ 
    return true;
  
  failure:
*************** resolve_transfer (gfc_code *code)
*** 11758,11770 ****
  		      && exp->expr_type != EXPR_STRUCTURE))
      return;
  
!   /* If we are reading, the variable will be changed.  Note that
!      code->ext.dt may be NULL if the TRANSFER is related to
!      an INQUIRE statement -- but in this case, we are not reading, either.  */
!   if (dt && dt->dt_io_kind->value.iokind == M_READ
!       && !gfc_check_vardef_context (exp, false, false, false,
! 				    _("item in READ")))
!     return;
  
    const gfc_typespec *ts = exp->expr_type == EXPR_STRUCTURE
  			|| exp->expr_type == EXPR_FUNCTION
--- 11775,11791 ----
  		      && exp->expr_type != EXPR_STRUCTURE))
      return;
  
!   if (dt && dt->dt_io_kind->value.iokind == M_READ)
!     {
!       /* If we are reading, the variable will be changed.  Note that
! 	 code->ext.dt may be NULL if the TRANSFER is related to an INQUIRE
! 	 statement -- but in this case, we are not reading, either.  */
!       if (!gfc_check_vardef_context (exp, false, false, false,
! 				     _("item in READ")))
! 	return;
! 
!       gfc_value_set_at (exp->symtree->n.sym, &exp->where, VALUE_READ);
!     }
  
    const gfc_typespec *ts = exp->expr_type == EXPR_STRUCTURE
  			|| exp->expr_type == EXPR_FUNCTION
*************** resolve_transfer (gfc_code *code)
*** 11879,11884 ****
--- 11900,11910 ----
  		 "an assumed-size array", &code->loc);
        return;
      }
+ 
+   if (dt && (dt->dt_io_kind->value.iokind == M_WRITE
+ 	     || dt->dt_io_kind->value.iokind == M_PRINT))
+     gfc_value_used_expr (exp, VALUE_USED);
+ 
  }
  
  
*************** gfc_resolve_blocks (gfc_code *b, gfc_nam
*** 13082,13088 ****
  	default:
  	  gfc_internal_error ("gfc_resolve_blocks(): Bad block type");
  	}
! 
        gfc_resolve_code (b->next, ns);
      }
  }
--- 13108,13115 ----
  	default:
  	  gfc_internal_error ("gfc_resolve_blocks(): Bad block type");
  	}
!       gfc_value_used_expr (b->expr1, VALUE_USED);
!       gfc_value_used_expr (b->expr2, VALUE_USED);
        gfc_resolve_code (b->next, ns);
      }
  }
*************** deferred_op_assign (gfc_code **code, gfc
*** 14181,14186 ****
--- 14208,14214 ----
    return true;
  }
  
+ static void mark_lhs_assignments_set (gfc_code *code);
  
  /* Given a block of code, recursively resolve everything pointed to by this
     code block.  */
*************** gfc_resolve_code (gfc_code *code, gfc_na
*** 14192,14197 ****
--- 14220,14226 ----
    int forall_save, do_concurrent_save;
    code_stack frame;
    bool t;
+   gfc_code *orig_code = code;
  
    frame.prev = cs_base;
    frame.head = code;
*************** start:
*** 14862,14869 ****
--- 14891,14903 ----
  	default:
  	  gfc_internal_error ("gfc_resolve_code(): Bad statement code");
  	}
+       gfc_value_used_expr (code->expr2, VALUE_USED);
+       gfc_value_used_expr (code->expr3, VALUE_USED);
+       gfc_value_used_expr (code->expr4, VALUE_USED);
      }
  
+   mark_lhs_assignments_set (orig_code);
+ 
    cs_base = frame.prev;
  }
  
*************** gfc_resolve_uops (gfc_symtree *symtree)
*** 20531,20536 ****
--- 20565,20599 ----
      check_uop_procedure (itr->sym, itr->sym->declared_at);
  }
  
+ /* Mark all lhs in assignment statement as used.  It is better to put this into
+    its own function rather than into the different switch cases in
+    gfc_resolve_code.  */
+ 
+ static void
+ mark_lhs_assignments_set (gfc_code *code)
+ {
+ 
+   for (; code; code = code->next)
+     {
+       gfc_expr *lvalue = code->expr1, *rvalue = code->expr2;
+ 
+       if (lvalue == NULL || lvalue->symtree == NULL || rvalue == NULL)
+ 	continue;
+ 
+       switch (code->op)
+ 	{
+ 	case EXEC_ASSIGN:
+ 	  if (gfc_is_reallocatable_lhs (lvalue) && lvalue->rank == rvalue->rank)
+ 	    gfc_lvalue_allocated_at (lvalue->symtree->n.sym, &lvalue->where);
+ 
+ 	  gcc_fallthrough();
+ 	case EXEC_POINTER_ASSIGN:
+ 	  gfc_value_set_at (lvalue->symtree->n.sym, &rvalue->where);
+ 	default:
+ 	  break;
+ 	}
+     }
+ }
  
  /* Examine all of the expressions associated with a program unit,
     assign types to all intermediate expressions, make sure that all
*************** resolve_types (gfc_namespace *ns)
*** 20631,20639 ****
    gfc_resolve_omp_udrs (ns->omp_udr_root);
  
    gfc_resolve_omp_udms (ns->omp_udm_root);
-   if (ns->omp_udm_root)
-     gfc_error ("Sorry, %<declare mapper%>, used at %L, is not yet implemented",
- 	       &ns->omp_udm_root->n.omp_udm->where);
  
    ns->types_resolved = 1;
  
--- 20694,20699 ----
*************** resolve_codes (gfc_namespace *ns)
*** 20678,20683 ****
--- 20738,20972 ----
    labels_obstack = old_obstack;
  }
  
+ /* Return true if the value of a variable can be considered used, either
+    through the value_used flag or because it is a suitable dummy argument.  */
+ 
+ static bool
+ var_value_is_used (gfc_symbol *sym)
+ {
+   if (sym->attr.value_used != VALUE_UNUSED)
+     return true;
+ 
+   if (!sym->attr.dummy)
+     return false;
+ 
+   if (sym->attr.value)
+     return false;
+ 
+   switch (sym->attr.intent)
+     {
+     case INTENT_UNKNOWN:
+     case INTENT_INOUT:
+     case INTENT_OUT:
+       return true;
+ 
+     case INTENT_IN:
+     default:
+       return false;
+     }
+ }
+ 
+ /* Similar, see if the variable could have gotten its value from somewhere.  */
+ 
+ static bool
+ var_value_is_set (gfc_symbol *sym)
+ {
+   if (sym->attr.value_set != VALUE_UNSET)
+     return true;
+ 
+   if (sym->value)
+     return true;
+ 
+   if (sym->ts.type == BT_DERIVED
+       && gfc_has_default_initializer (sym->ts.u.derived))
+     return true;
+ 
+   if (!sym->attr.dummy)
+     return false;
+ 
+   if (sym->attr.value)
+     return true;
+ 
+   if (sym->attr.intent == INTENT_OUT)
+     return false;
+ 
+   return true;
+ }
+ 
+ /* Callback function to catch set but never used variables.  */
+ 
+ static void
+ find_unused_vs_set (gfc_symbol *sym)
+ {
+   symbol_attribute *attr = &sym->attr;
+ 
+   if (attr->flavor != FL_VARIABLE)
+     return;
+ 
+   /* Do not warn about anything too far out of the ordinary.  This might be
+      tightened later.  */
+   if (attr->in_common || attr->in_equivalence || attr->artificial
+       || attr->cray_pointer || attr->cray_pointee || attr->associate_var
+       || attr->target || attr->fe_temp || attr->omp_declare_target
+       || attr->omp_declare_target_link || attr->omp_declare_target_local
+       || attr->omp_declare_target_indirect || attr->oacc_declare_create
+       || attr->oacc_declare_copyin || attr->oacc_declare_deviceptr
+       || attr->oacc_declare_device_resident || attr->oacc_declare_link
+       || attr->result || attr->warning_emitted || attr->use_assoc
+       || attr->volatile_ || attr->asynchronous || !attr->referenced)
+     return;
+ 
+   if (warn_unused_intent_out && attr->value_set == VALUE_INTENT_OUT
+       && !var_value_is_used (sym))
+     {
+       gfc_warning (OPT_Wunused_intent_out, "Variable %qs passed to "
+ 		   "INTENT(OUT) argument at %L but value never used",
+ 		   sym->name, &sym->other_loc);
+       attr->warning_emitted = 1;
+       return;
+     }
+ 
+   if (warn_unused_read && attr->value_set == VALUE_READ && !var_value_is_used (sym))
+     {
+       gfc_warning (OPT_Wunused_read, "Variable %qs read at %L but never "
+ 		   "used", sym->name, &sym->other_loc);
+       attr->warning_emitted = 1;
+       return;
+     }
+ 
+   /* There is no allocation in sight, but the variable is used anyway.  This
+      might be hidden behind PRESENT, but issue a warning nonetheless.  If
+      people complain, we might want to make this to an extra option to be
+      included with -Wextra.  */
+ 
+   if (warn_undefined_vars && attr->allocatable && !attr->allocated
+       && var_value_is_used (sym))
+     {
+       if (attr->dummy && attr->intent == INTENT_OUT)
+ 	{
+ 	  gfc_warning (OPT_Wundefined_vars, "Unallocated INTENT(OUT) variable "
+ 		       "%qs referenced at %L", sym->name, &sym->other_loc);
+ 	  attr->warning_emitted = 1;
+ 	  return;
+ 	}
+ 
+       if (!attr->dummy)
+ 	{
+ 	  gfc_warning (OPT_Wundefined_vars, "Unallocated variable %qs "
+ 		       "referenced at %L", sym->name, &sym->other_loc);
+ 	  attr->warning_emitted = 1;
+ 	  return;
+ 	}
+     }
+ 
+   if (warn_undefined_vars && !var_value_is_set (sym))
+     {
+       /* Warn about variables which have been allocated and used, but never
+ 	 set.  */
+       if (attr->allocated && sym->attr.value_used > VALUE_MAYBE_USED)
+ 	{
+ 	  switch (sym->attr.value_used)
+ 	    {
+ 	    case VALUE_INTENT_IN:
+ 	      gfc_warning (OPT_Wundefined_vars, "Allocated variable %qs passed "
+ 			   "undefined to INTENT(IN) argument at %L", sym->name,
+ 			   &sym->other_loc);
+ 	      break;
+ 
+ 	    case VALUE_VALUE_ARG:
+ 	      gfc_warning (OPT_Wundefined_vars, "Allocated variable %qs passed "
+ 			   "undefined to VALUE argument at %L", sym->name,
+ 			   &sym->other_loc);
+ 	      break;
+ 	    case VALUE_USED:
+ 	      gfc_warning (OPT_Wundefined_vars, "Allocated undefined variable "
+ 			   "%qs used at %L", sym->name, &sym->other_loc);
+ 	      break;
+ 	    default:
+ 	      gfc_internal_error ("Wrong value_set");
+ 	      break;
+ 	    }
+ 	  attr->warning_emitted = 1;
+ 	  return;
+ 	}
+ 
+       /* Similar, when undefined variables are passed to INTENT(IN), VALUE
+ 	 arguments or are used in general.  */
+ 
+       if (attr->value_used == VALUE_INTENT_IN)
+ 	{
+ 	  gfc_warning (OPT_Wundefined_vars, "Undefined variable %qs passed "
+ 		       "to INTENT(IN) argument at %L", sym->name, &sym->other_loc);
+ 	  attr->warning_emitted = 1;
+ 	  return;
+ 	}
+       else if (attr->value_used == VALUE_VALUE_ARG)
+ 	{
+ 	  gfc_warning (OPT_Wundefined_vars, "Undefined variable %qs passed "
+ 		       "to VALUE argument at %L", sym->name, &sym->other_loc);
+ 	  attr->warning_emitted = 1;
+ 	  return;
+ 	}
+       else if (attr->value_used == VALUE_USED)
+ 	{
+ 	  if (attr->dummy && attr->intent == INTENT_OUT)
+ 	    gfc_warning (OPT_Wundefined_vars, "Undefined INTENT(OUT) variable %qs "
+ 			 "used at %L", sym->name, &sym->other_loc);
+ 	  else
+ 	    gfc_warning (OPT_Wundefined_vars, "Undefined variable %qs used at "
+ 			 "%L", sym->name, &sym->other_loc);
+ 
+ 	  attr->warning_emitted = 1;
+ 	  return;
+ 	}
+ 
+       /* PR 28004 - warn about INTENT(OUT) variables that are never set.  If
+ 	 the variable or a component are allocatable, do not warn since this is
+ 	 a frequent shortcut for deallocation.  */
+ 
+       if (sym->attr.dummy && sym->attr.intent == INTENT_OUT
+ 	  && !(attr->allocatable || attr->alloc_comp))
+ 	{
+ 	  gfc_warning (OPT_Wundefined_vars, "INTENT(OUT) variable %qs  "
+ 		       "declared at %L is not assigned a value", sym->name,
+ 		       &sym->declared_at);
+ 	  attr->warning_emitted = 1;
+ 	  return;
+ 	}
+     }
+ 
+   /* Warn for unused but defined variables.  */
+ 
+   if (warn_unused_but_set_variable)
+     {
+       if (attr->value_set == VALUE_VARDEF && !var_value_is_used (sym))
+ 	{
+ 	  gfc_warning (OPT_Wunused_but_set_variable_, "Variable %qs defined at "
+ 		       "%L but never used", sym->name, &sym->other_loc);
+ 	  attr->warning_emitted = 1;
+ 	  return;
+ 	}
+       if (attr->allocatable && attr->allocated && !var_value_is_used (sym))
+ 	{
+ 	  gfc_warning (OPT_Wunused_but_set_variable_, "Variable %qs "
+ 		       "allocated at %L but never used", sym->name,
+ 		       &sym->extra_loc);
+ 	  attr->warning_emitted = 1;
+ 	  return;
+ 	}
+     }
+ }
+ 
+ /* Run warn_unused_vs_set over a namespace recursively.  */
+ 
+ static void
+ warn_unused_vs_set (gfc_namespace *ns)
+ {
+   gfc_traverse_ns (ns, find_unused_vs_set);
+ 
+   for (gfc_namespace *n = ns->contained; n; n = n->sibling)
+     warn_unused_vs_set (n);
+ }
  
  /* This function is called after a complete program unit has been compiled.
     Its purpose is to examine all of the expressions associated with a program
*************** gfc_resolve (gfc_namespace *ns)
*** 20709,20714 ****
--- 20998,21007 ----
    component_assignment_level = 0;
    resolve_codes (ns);
  
+   if (warn_unused_but_set_variable || warn_unused_intent_out
+       || warn_unused_read || warn_undefined_vars)
+     warn_unused_vs_set (ns);
+ 
    if (ns->omp_assumes)
      gfc_resolve_omp_assumptions (ns->omp_assumes);
  
diff -Nrcpad gcc-17-20260607/gcc/fortran/symbol.cc gcc-17-20260614/gcc/fortran/symbol.cc
*** gcc-17-20260607/gcc/fortran/symbol.cc	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/fortran/symbol.cc	Sun Jun 14 22:32:07 2026
*************** find_derived_types (gfc_symbol *sym, gfc
*** 2493,2499 ****
    if (st->n.sym && st->n.sym->attr.flavor == FL_DERIVED
        && !st->n.sym->attr.is_class
        && ((contained && st->n.sym->attr.use_assoc) || !contained)
!       && gfc_find_component (st->n.sym, name, true, true, NULL))
      {
        /* Do the stashing, if required.  */
        cts++;
--- 2493,2503 ----
    if (st->n.sym && st->n.sym->attr.flavor == FL_DERIVED
        && !st->n.sym->attr.is_class
        && ((contained && st->n.sym->attr.use_assoc) || !contained)
!       && !st->n.sym->attr.vtype
!       && (gfc_find_component (st->n.sym, name, true, true, NULL)
! 	  || (st->n.sym->f2k_derived
! 	      && gfc_find_typebound_proc (st->n.sym, NULL, name, true,
! 					 NULL))))
      {
        /* Do the stashing, if required.  */
        cts++;
*************** gfc_find_symbol_by_name (const char *nam
*** 5759,5761 ****
--- 5763,5926 ----
    *result = found_sym;
    return result != 0;
  }
+ 
+ /* Note that the value of a variable has been set to a "higher" value and, if
+    loc is passed, where.  Return true of loc has been changed.  */
+ 
+ bool
+ gfc_value_set_at (gfc_symbol *sym, locus *loc, enum value_set how)
+ {
+   if (sym == NULL || sym->attr.flavor != FL_VARIABLE)
+     return false;
+ 
+   if (how <= sym->attr.value_set)
+     return false;
+ 
+   if (loc)
+     sym->other_loc = *loc;
+   else
+     memset (&sym->other_loc, 0, sizeof(*loc));
+ 
+   sym->attr.value_set = how;
+   return true;
+ }
+ 
+ /* Callback function for setting the "value_used" flag.  We can also set
+    other_loc here because, in the event of an error message, at most one of
+    attr.value_used and attr.value_set can be true.  */
+ 
+ static int
+ mark_vars_as_used (gfc_expr **e, int *walk_subtrees, void *data)
+ {
+   gfc_expr *expr = *e;
+   gfc_symbol *sym;
+   enum value_used how_used = *(enum value_used *) data;
+ 
+   if (expr->expr_type != EXPR_VARIABLE && expr->expr_type != EXPR_FUNCTION)
+     return 0;
+ 
+   if (expr->symtree == NULL)
+     return 0;
+ 
+   /* Some intrinsic functions do not evaluate some (or all) of their
+      aguments. Do not walk the expressions there.  */
+ 
+   if (expr->expr_type == EXPR_FUNCTION && expr->value.function.isym)
+     {
+       gfc_actual_arglist *a = expr->value.function.actual;
+ 
+       switch (expr->value.function.isym->id)
+ 	{
+ 	case GFC_ISYM_ALLOCATED:
+ 	case GFC_ISYM_EXTENDS_TYPE_OF:
+ 	case GFC_ISYM_SAME_TYPE_AS:
+ 	case GFC_ISYM_ASSOCIATED:
+ 	case GFC_ISYM_IS_CONTIGUOUS:
+ 	case GFC_ISYM_PRESENT:
+ 	case GFC_ISYM_RANK:
+ 	case GFC_ISYM_STORAGE_SIZE:
+ 	case GFC_ISYM_NULL:
+ 	  *walk_subtrees = 0;
+ 	  return 0;
+ 
+ 	case GFC_ISYM_LBOUND:
+ 	case GFC_ISYM_UBOUND:
+ 	case GFC_ISYM_SIZE:
+ 	  gfc_expr_walker (&a->next->expr, mark_vars_as_used, &how_used);
+ 	  *walk_subtrees = 0;
+ 	  return 0;
+ 
+ 	case GFC_ISYM_TRANSFER:
+ 	  /* Source.  */
+ 	  gfc_expr_walker (&a->expr, mark_vars_as_used, &how_used);
+ 	  /* Size.  */
+ 	  gfc_expr_walker (&a->next->next->expr, mark_vars_as_used, &how_used);
+ 	  *walk_subtrees = 0;
+ 	  return 0;
+ 
+ 	case GFC_ISYM_OUT_OF_RANGE:
+ 	  gfc_expr_walker (&a->next->expr, mark_vars_as_used, &how_used);
+ 	  *walk_subtrees = 0;
+ 	  return 0;
+ 
+ 	default:
+ 	  break;
+ 	}
+     }
+ 
+   sym = expr->symtree->n.sym;
+ 
+   if (sym->attr.flavor != FL_VARIABLE)
+     return 0;
+ 
+   if (how_used <= sym->attr.value_used)
+     return 0;
+ 
+   sym->attr.value_used = how_used;
+   if (sym->other_loc.nextc == NULL)
+     sym->other_loc = expr->where;
+ 
+   return 0;
+ }
+ 
+ /* Recursively visit every variable and mark it as used.  */
+ 
+ void
+ gfc_value_used_expr (gfc_expr *expr, enum value_used how_used)
+ {
+ 
+   if (expr == NULL)
+     return;
+ 
+   gfc_expr_walker (&expr, mark_vars_as_used, &how_used);
+ }
+ 
+ /* For when we want to set everything in an expression as both
+    set and used, for example in an actual argument list.  */
+ 
+ void
+ gfc_value_set_and_used (gfc_expr *expr, locus *loc, enum value_set how_set,
+ 			enum value_used how_used)
+ {
+   if (!expr)
+     return;
+ 
+   if (expr->expr_type == EXPR_VARIABLE)
+     gfc_value_set_at (expr->symtree->n.sym, loc, how_set);
+ 
+   gfc_value_used_expr (expr, how_used);
+ }
+ 
+ /* ALLOCATE (A(N)) means that N is used, but A is not marked as such.  */
+ 
+ void
+ gfc_used_in_allocate_expr (gfc_expr *expr, locus *loc)
+ {
+   gfc_symbol *sym;
+   enum value_used prev_used;
+   locus prev_loc;
+ 
+   if (expr->expr_type != EXPR_VARIABLE)
+     return;
+ 
+   sym = expr->symtree->n.sym;
+   prev_used = sym->attr.value_used;
+   prev_loc = sym->other_loc;
+   gfc_value_used_expr (expr, VALUE_USED);
+   sym->attr.value_used = prev_used;
+   sym->other_loc = prev_loc;
+   sym->attr.allocated = 1;
+ 
+   if (sym->extra_loc.nextc == NULL)
+     sym->extra_loc = *loc;
+ }
+ 
+ 
+ bool gfc_lvalue_allocated_at (gfc_symbol *sym, locus *loc)
+ {
+   if (sym->other_loc.nextc == 0)
+     sym->other_loc = *loc;
+ 
+   sym->attr.allocated = 1;
+   return true;
+ }
diff -Nrcpad gcc-17-20260607/gcc/fortran/trans-decl.cc gcc-17-20260614/gcc/fortran/trans-decl.cc
*** gcc-17-20260607/gcc/fortran/trans-decl.cc	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/fortran/trans-decl.cc	Sun Jun 14 22:32:07 2026
*************** gfc_finish_var_decl (tree decl, gfc_symb
*** 657,662 ****
--- 657,667 ----
        && (sym->attr.dimension || sym->ts.type == BT_DERIVED))
      TREE_READONLY (decl) = 1;
  
+   /* The front end already warned the user about this decl.  Once should be
+      enough.  */
+   if (sym->attr.warning_emitted)
+     suppress_warning (decl);
+ 
    /* Chain this decl to the pending declarations.  Don't do pushdecl()
       because this would add them to the current scope rather than the
       function scope.  */
diff -Nrcpad gcc-17-20260607/gcc/fortran/trans-openmp.cc gcc-17-20260614/gcc/fortran/trans-openmp.cc
*** gcc-17-20260607/gcc/fortran/trans-openmp.cc	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/fortran/trans-openmp.cc	Sun Jun 14 22:32:07 2026
*************** gfc_omp_array_data (tree decl, bool type
*** 177,182 ****
--- 177,200 ----
    return decl;
  }
  
+ /* Returns true if DECL is an array for which the actual array data has to be
+    privatized; the caller must ensure that DECL is an array descriptor,
+    i.e. 'omp_array_data' returns true.  */
+ 
+ bool
+ gfc_omp_array_data_privatize (tree decl)
+ {
+   tree type = TREE_TYPE (decl);
+ 
+   if (POINTER_TYPE_P (type))
+     type = TREE_TYPE (type);
+ 
+   gcc_assert (GFC_DESCRIPTOR_TYPE_P (type));
+ 
+   return (GFC_TYPE_ARRAY_AKIND (type) != GFC_ARRAY_POINTER
+ 	  && GFC_TYPE_ARRAY_AKIND (type) != GFC_ARRAY_POINTER_CONT);
+ }
+ 
  /* Return the byte-size of the passed array descriptor. */
  
  tree
*************** gfc_trans_omp_clauses (stmtblock_t *bloc
*** 4322,4327 ****
--- 4340,4352 ----
  	    {
  	      if (!openacc)
  		{
+ 		  if (n->u3.udm)
+ 		    gfc_error ("Sorry, declared mapper %qs, used for %qs at %L, "
+ 			       "is not yet supported",
+ 			       n->u3.udm->mapper_id[0] != '\0'
+ 			       ? n->u3.udm->mapper_id : "default",
+ 			       n->sym->name, &n->where);
+ 
  		  // Remove duplicates
  		  bool skip = false;
  		  for (gfc_omp_namelist *n2 = n->next; n2 != NULL;
diff -Nrcpad gcc-17-20260607/gcc/fortran/trans-stmt.cc gcc-17-20260614/gcc/fortran/trans-stmt.cc
*** gcc-17-20260607/gcc/fortran/trans-stmt.cc	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/fortran/trans-stmt.cc	Sun Jun 14 22:32:07 2026
*************** trans_associate_var (gfc_symbol *sym, gf
*** 2368,2375 ****
  	  gfc_add_modify (&se.pre, sym->ts.u.cl->backend_decl,
  			  fold_convert (TREE_TYPE (sym->ts.u.cl->backend_decl),
  					se.string_length));
! 	  if (e->expr_type == EXPR_FUNCTION)
  	    {
  	      tmp = gfc_call_free (sym->backend_decl);
  	      gfc_add_expr_to_block (&se.post, tmp);
  	    }
--- 2368,2379 ----
  	  gfc_add_modify (&se.pre, sym->ts.u.cl->backend_decl,
  			  fold_convert (TREE_TYPE (sym->ts.u.cl->backend_decl),
  					se.string_length));
! 	  if (e->expr_type == EXPR_FUNCTION && gfc_expr_attr (e).pointer)
  	    {
+ 	      /* For an allocatable function result, the result temporary
+ 		 is already freed by the procedure call's cleanup code;
+ 		 freeing it again here would be a double free.  A pointer
+ 		 result is not freed there, so do it here.  */
  	      tmp = gfc_call_free (sym->backend_decl);
  	      gfc_add_expr_to_block (&se.post, tmp);
  	    }
diff -Nrcpad gcc-17-20260607/gcc/fortran/trans.h gcc-17-20260614/gcc/fortran/trans.h
*** gcc-17-20260607/gcc/fortran/trans.h	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/fortran/trans.h	Sun Jun 14 22:32:07 2026
*************** tree gfc_omp_call_is_alloc (tree);
*** 827,832 ****
--- 827,833 ----
  bool gfc_omp_is_allocatable_or_ptr (const_tree);
  tree gfc_omp_check_optional_argument (tree, bool);
  tree gfc_omp_array_data (tree, bool);
+ bool gfc_omp_array_data_privatize (tree);
  tree gfc_omp_array_size (tree, gimple_seq *);
  bool gfc_omp_privatize_by_reference (const_tree);
  enum omp_clause_default_kind gfc_omp_predetermined_sharing (tree);
diff -Nrcpad gcc-17-20260607/gcc/gcc.cc gcc-17-20260614/gcc/gcc.cc
*** gcc-17-20260607/gcc/gcc.cc	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/gcc.cc	Sun Jun 14 22:32:07 2026
*************** static const char *machine_suffix = 0;
*** 1631,1636 ****
--- 1631,1641 ----
  
  static const char *just_machine_suffix = 0;
  
+ /* Prefix to attach to *basename* of commands being searched.
+    This is just `MACHINE-'.  */
+ 
+ static const char *just_machine_prefix = 0;
+ 
  /* Adjusted value of GCC_EXEC_PREFIX envvar.  */
  
  static const char *gcc_exec_prefix;
*************** for_each_path (const struct path_prefix
*** 2830,2836 ****
    const char *multi_suffix;
    const char *just_multi_suffix;
    char *path = NULL;
!   decltype (callback (nullptr)) ret = nullptr;
    bool skip_multi_dir = false;
    bool skip_multi_os_dir = false;
  
--- 2835,2841 ----
    const char *multi_suffix;
    const char *just_multi_suffix;
    char *path = NULL;
!   decltype (callback (nullptr, false)) ret = nullptr;
    bool skip_multi_dir = false;
    bool skip_multi_os_dir = false;
  
*************** for_each_path (const struct path_prefix
*** 2881,2887 ****
  	  if (!skip_multi_dir)
  	    {
  	      memcpy (path + len, multi_suffix, suffix_len + 1);
! 	      ret = callback (path);
  	      if (ret)
  		break;
  	    }
--- 2886,2892 ----
  	  if (!skip_multi_dir)
  	    {
  	      memcpy (path + len, multi_suffix, suffix_len + 1);
! 	      ret = callback (path, true);
  	      if (ret)
  		break;
  	    }
*************** for_each_path (const struct path_prefix
*** 2892,2898 ****
  	      && pl->require_machine_suffix == 2)
  	    {
  	      memcpy (path + len, just_multi_suffix, just_suffix_len + 1);
! 	      ret = callback (path);
  	      if (ret)
  		break;
  	    }
--- 2897,2903 ----
  	      && pl->require_machine_suffix == 2)
  	    {
  	      memcpy (path + len, just_multi_suffix, just_suffix_len + 1);
! 	      ret = callback (path, true);
  	      if (ret)
  		break;
  	    }
*************** for_each_path (const struct path_prefix
*** 2902,2908 ****
  	      && !pl->require_machine_suffix && multiarch_dir)
  	    {
  	      memcpy (path + len, multiarch_suffix, multiarch_len + 1);
! 	      ret = callback (path);
  	      if (ret)
  		break;
  	    }
--- 2907,2913 ----
  	      && !pl->require_machine_suffix && multiarch_dir)
  	    {
  	      memcpy (path + len, multiarch_suffix, multiarch_len + 1);
! 	      ret = callback (path, true);
  	      if (ret)
  		break;
  	    }
*************** for_each_path (const struct path_prefix
*** 2930,2936 ****
  	      else
  		path[len] = '\0';
  
! 	      ret = callback (path);
  	      if (ret)
  		break;
  	    }
--- 2935,2941 ----
  	      else
  		path[len] = '\0';
  
! 	      ret = callback (path, false);
  	      if (ret)
  		break;
  	    }
*************** build_search_list (const struct path_pre
*** 3003,3009 ****
    obstack_1grow (&collect_obstack, '=');
  
    /* Callback adds path to obstack being built.  */
!   for_each_path (paths, do_multi, 0, [&](char *path) -> void*
      {
        if (check_dir && !is_directory (path))
  	return NULL;
--- 3008,3014 ----
    obstack_1grow (&collect_obstack, '=');
  
    /* Callback adds path to obstack being built.  */
!   for_each_path (paths, do_multi, 0, [&](char *path, bool) -> void*
      {
        if (check_dir && !is_directory (path))
  	return NULL;
*************** find_a_file (const struct path_prefix *p
*** 3077,3083 ****
       to the file.  */
    return for_each_path (pprefix, do_multi,
  			name_len,
! 			[=](char *path) -> char*
      {
        memcpy (path + strlen (path), name, name_len + 1);
  
--- 3082,3088 ----
       to the file.  */
    return for_each_path (pprefix, do_multi,
  			name_len,
! 			[=](char *path, bool) -> char*
      {
        memcpy (path + strlen (path), name, name_len + 1);
  
*************** find_a_program (const char *name)
*** 3128,3161 ****
  
    const char *suffix = HOST_EXECUTABLE_SUFFIX;
    const int name_len = strlen (name);
    const int suffix_len = strlen (suffix);
  
    /* Callback appends the file name to the directory path.  If the
       resulting file exists in the right mode, return the full pathname
       to the file.  */
    return for_each_path (&exec_prefixes, false,
! 			name_len + suffix_len,
! 			[=](char *path) -> char*
      {
!       size_t len = strlen (path);
! 
!       memcpy (path + len, name, name_len);
!       len += name_len;
  
!       /* Some systems have a suffix for executable files.
! 	 So try appending that first.  */
!       if (suffix_len)
  	{
! 	  memcpy (path + len, suffix, suffix_len + 1);
  	  if (access_check (path, X_OK) == 0)
  	    return path;
- 	}
  
!       path[len] = '\0';
!       if (access_check (path, X_OK) == 0)
! 	return path;
  
!       return NULL;
      });
  }
  
--- 3133,3184 ----
  
    const char *suffix = HOST_EXECUTABLE_SUFFIX;
    const int name_len = strlen (name);
+   const int prefix_len = strlen (just_machine_prefix);
    const int suffix_len = strlen (suffix);
  
    /* Callback appends the file name to the directory path.  If the
       resulting file exists in the right mode, return the full pathname
       to the file.  */
    return for_each_path (&exec_prefixes, false,
! 			prefix_len + name_len + suffix_len,
! 			[=](char *path, bool machine_specific) -> char*
      {
!       size_t path_len = strlen (path);
  
!       auto search = [=](size_t len) -> char*
  	{
! 	  memcpy (path + len, name, name_len + 1);
! 	  len += name_len;
! 
! 	  /* Some systems have a suffix for executable files.
! 	     So try appending that first.  */
! 	  if (suffix_len)
! 	    {
! 	      memcpy (path + len, suffix, suffix_len + 1);
! 	      if (access_check (path, X_OK) == 0)
! 		return path;
! 	    }
! 
! 	  path[len] = '\0';
  	  if (access_check (path, X_OK) == 0)
  	    return path;
  
! 	  return NULL;
! 	};
  
!       /* Additionally search for $target-prog in machine-agnostic dirs,
! 	 as an additional way to disambiguate targets. Do not do this in
! 	 machine-specific dirs because so further disambiguation is
! 	 needed. */
!       if (!machine_specific)
! 	{
! 	  memcpy (path + path_len, just_machine_prefix, prefix_len);
! 	  auto ret = search(path_len + prefix_len);
! 	  if (ret)
! 	    return ret;
! 	}
! 
!       return search(path_len);
      });
  }
  
*************** process_command (unsigned int decoded_op
*** 5659,5664 ****
--- 5682,5733 ----
    infiles[n_infiles].name = 0;
  }
  
+ /* Set COLLECT_GCC_OPTIONS in the environment.  If the value would
+    exceed COLLECT2_OPTIONS_MAX_LENGTH, spill it to a temporary
+    response file and set the variable to @<path> instead.  */
+ 
+ static void
+ xsetenv_collect_gcc_options (char *string)
+ {
+   if (strlen (string) <= COLLECT2_OPTIONS_MAX_LENGTH)
+     {
+       xputenv (string);
+       return;
+     }
+ 
+   static const char prefix[] = "COLLECT_GCC_OPTIONS=";
+   gcc_assert (startswith (string, prefix));
+ 
+   /* parse_options_from_collect_gcc_options expects argc to start
+      at 1, so push a placeholder argv[0].  */
+   struct obstack argv_obstack;
+   obstack_init (&argv_obstack);
+   obstack_ptr_grow (&argv_obstack, const_cast<char *> (progname));
+   int argc;
+   parse_options_from_collect_gcc_options (string + sizeof (prefix) - 1,
+ 					  &argv_obstack, &argc);
+   char **argv = XOBFINISH (&argv_obstack, char **);
+ 
+   char *temp_file = make_temp_file ("");
+   FILE *f = fopen (temp_file, "wb");
+   if (f == nullptr)
+     fatal_error (input_location,
+ 		 "cannot open response file %qs: %m", temp_file);
+   /* writeargv walks until NULL; skip our placeholder argv[0].  */
+   if (writeargv (argv + 1, f) != 0)
+     fatal_error (input_location,
+ 		 "cannot write response file %qs: %m", temp_file);
+   if (fclose (f) != 0)
+     fatal_error (input_location,
+ 		 "cannot close response file %qs: %m", temp_file);
+ 
+   char *env_val = concat (prefix, "@", temp_file, nullptr);
+   /* Delete on both success and failure unless -save-temps.  */
+   record_temp_file (temp_file, !save_temps_flag, !save_temps_flag);
+   obstack_free (&argv_obstack, nullptr);
+   xputenv (env_val);
+ }
+ 
  /* Store switches not filtered out by %<S in spec in COLLECT_GCC_OPTIONS
     and place that in the environment.  */
  
*************** set_collect_gcc_options (void)
*** 5737,5743 ****
      }
  
    obstack_grow (&collect_obstack, "\0", 1);
!   xputenv (XOBFINISH (&collect_obstack, char *));
  }
  
  /* Process a spec string, accumulating and running commands.  */
--- 5806,5812 ----
      }
  
    obstack_grow (&collect_obstack, "\0", 1);
!   xsetenv_collect_gcc_options (XOBFINISH (&collect_obstack, char *));
  }
  
  /* Process a spec string, accumulating and running commands.  */
*************** struct spec_path {
*** 6067,6077 ****
    bool separate_options;
    bool realpaths;
  
!   void *operator() (char *path);
  };
  
  void *
! spec_path::operator() (char *path)
  {
    size_t len = 0;
    char save = 0;
--- 6136,6146 ----
    bool separate_options;
    bool realpaths;
  
!   void *operator() (char *path, bool);
  };
  
  void *
! spec_path::operator() (char *path, bool)
  {
    size_t len = 0;
    char save = 0;
*************** driver::set_up_specs () const
*** 8543,8548 ****
--- 8612,8618 ----
    machine_suffix = concat (spec_host_machine, dir_separator_str, spec_version,
  			   accel_dir_suffix, dir_separator_str, NULL);
    just_machine_suffix = concat (spec_machine, dir_separator_str, NULL);
+   just_machine_prefix = concat (spec_machine, "-", NULL);
  
    specs_file = find_a_file (&startfile_prefixes, "specs", true);
    /* Read the specs file unless it is a default one.  */
diff -Nrcpad gcc-17-20260607/gcc/gcov.cc gcc-17-20260614/gcc/gcov.cc
*** gcc-17-20260607/gcc/gcov.cc	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/gcov.cc	Sun Jun 14 22:32:07 2026
*************** solve_flow_graph (function_info *fn)
*** 2852,2858 ****
  
    /* If the graph has been correctly solved, every block will have a
       valid count.  */
!   for (unsigned i = 0; ix < fn->blocks.size (); i++)
      if (!fn->blocks[i].count_valid)
        {
  	fnotice (stderr, "%s:graph is unsolvable for '%s'\n",
--- 2852,2858 ----
  
    /* If the graph has been correctly solved, every block will have a
       valid count.  */
!   for (unsigned i = 0; i < fn->blocks.size (); i++)
      if (!fn->blocks[i].count_valid)
        {
  	fnotice (stderr, "%s:graph is unsolvable for '%s'\n",
diff -Nrcpad gcc-17-20260607/gcc/gimple-match-exports.cc gcc-17-20260614/gcc/gimple-match-exports.cc
*** gcc-17-20260607/gcc/gimple-match-exports.cc	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/gimple-match-exports.cc	Sun Jun 14 22:32:07 2026
*************** get_conditional_internal_fn (code_helper
*** 1413,1415 ****
--- 1413,1494 ----
    auto cfn = combined_fn (code);
    return get_conditional_internal_fn (associated_internal_fn (cfn, type));
  }
+ 
+ /* Find the operand which is different between ARG0_OP and ARG1_OP.
+    Returns the operand num where the difference is.
+    Set NEWARG0 and NEWARG1 from the different argument.
+    Returns -1 if none is found.
+    If ARG0_OP/ARG1_OP is commutative also try swapping the
+    two commutative operands and return the operand number where
+    the difference happens in ARG0_OP. */
+ 
+ int
+ find_different_opnum (const gimple_match_op &arg0_op,
+ 		      const gimple_match_op &arg1_op,
+ 		      tree *new_arg0, tree *new_arg1)
+ {
+   unsigned opnum = -1;
+   unsigned first;
+   first = first_commutative_argument (arg1_op.code, arg1_op.type);
+   for (unsigned i = 0; i < arg0_op.num_ops; i++)
+     {
+       if (!operand_equal_for_phi_arg_p (arg0_op.ops[i],
+ 					arg1_op.ops[i]))
+ 	{
+ 	  /* Can handle only one non equal operand. */
+ 	  if (opnum != -1u)
+ 	    {
+ 	      /* Though if opnum is right before i and opnum is equal
+ 		 to the first communtative argument, handle communtative
+ 		 specially. */
+ 	      if (i == opnum + 1 && opnum == first)
+ 		goto commutative;
+ 	      return -1;
+ 	    }
+ 	  opnum = i;
+ 	}
+   }
+   /* If all operands are equal only do this is there was single
+      operand.  */
+   if (opnum == -1u)
+     {
+       if (arg0_op.num_ops != 1)
+ 	return -1;
+       opnum = 0;
+     }
+   *new_arg0 = arg0_op.ops[opnum];
+   *new_arg1 = arg1_op.ops[opnum];
+   return opnum;
+ 
+ /* Handle commutative operations. */
+ commutative:
+   gcc_assert (first != -1u);
+ 
+   /* Check the rest of the arguments to make sure they are the same. */
+   for (unsigned i = first + 2; i < arg0_op.num_ops; i++)
+     if (!operand_equal_for_phi_arg_p (arg0_op.ops[i],
+ 				      arg1_op.ops[i]))
+       return -1;
+ 
+   /* If the arg0[first+1] and arg1[first] are the same
+      then the one which is different is arg0[first] and arg1[first+1]
+      return first since this is based on arg0.  */
+   if (operand_equal_for_phi_arg_p (arg0_op.ops[first + 1],
+ 				   arg1_op.ops[first]))
+     {
+        *new_arg0 = arg0_op.ops[first];
+        *new_arg1 = arg1_op.ops[first + 1];
+        return first;
+     }
+   /* If the arg0[first] and arg1[first+1] are the same
+      then the one which is different is arg0[first+1] and arg1[first]
+      return first+1 since this is based on arg0.  */
+   if (operand_equal_for_phi_arg_p (arg0_op.ops[first],
+ 				   arg1_op.ops[first + 1]))
+     {
+        *new_arg0 = arg0_op.ops[first + 1];
+        *new_arg1 = arg1_op.ops[first];
+        return first + 1;
+     }
+   return -1;
+ }
diff -Nrcpad gcc-17-20260607/gcc/gimple-match.h gcc-17-20260614/gcc/gimple-match.h
*** gcc-17-20260607/gcc/gimple-match.h	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/gimple-match.h	Sun Jun 14 22:32:07 2026
*************** bool directly_supported_p (code_helper,
*** 426,430 ****
--- 426,433 ----
  #endif
  
  internal_fn get_conditional_internal_fn (code_helper, tree);
+ int find_different_opnum (const gimple_match_op &arg0_op,
+ 			  const gimple_match_op &arg1_op,
+ 			  tree *new_arg0, tree *new_arg1);
  
  #endif  /* GCC_GIMPLE_MATCH_H */
diff -Nrcpad gcc-17-20260607/gcc/gimple-range-fold.cc gcc-17-20260614/gcc/gimple-range-fold.cc
*** gcc-17-20260607/gcc/gimple-range-fold.cc	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/gimple-range-fold.cc	Sun Jun 14 22:32:07 2026
*************** fold_using_range::relation_fold_and_or (
*** 1570,1576 ****
      return;
  
    if (reverse_op2)
!     relation2 = relation_negate (relation2);
  
    // x && y is false if the relation intersection of the true cases is NULL.
    if (is_and && relation_intersect (relation1, relation2) == VREL_UNDEFINED)
--- 1570,1576 ----
      return;
  
    if (reverse_op2)
!     relation2 = relation_swap (relation2);
  
    // x && y is false if the relation intersection of the true cases is NULL.
    if (is_and && relation_intersect (relation1, relation2) == VREL_UNDEFINED)
diff -Nrcpad gcc-17-20260607/gcc/gimple-ssa-backprop.cc gcc-17-20260614/gcc/gimple-ssa-backprop.cc
*** gcc-17-20260607/gcc/gimple-ssa-backprop.cc	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/gimple-ssa-backprop.cc	Sun Jun 14 22:32:07 2026
*************** backprop::process_var (tree var, var_inf
*** 633,644 ****
    if (has_zero_uses (var))
      return;
  
-   /* Propagating along abnormal edges is delicate, punt for now.  */
-   if (SSA_NAME_OCCURS_IN_ABNORMAL_PHI (var))
-     return;
- 
    usage_info info;
!   intersect_uses (var, &info);
  
    gimple *stmt = SSA_NAME_DEF_STMT (var);
    auto hash = SSA_NAME_VERSION (var);
--- 633,643 ----
    if (has_zero_uses (var))
      return;
  
    usage_info info;
! 
!   /* Propagating along abnormal edges is delicate, punt for now.  */
!   if (!SSA_NAME_OCCURS_IN_ABNORMAL_PHI (var))
!     intersect_uses (var, &info);
  
    gimple *stmt = SSA_NAME_DEF_STMT (var);
    auto hash = SSA_NAME_VERSION (var);
diff -Nrcpad gcc-17-20260607/gcc/hard-reg-set.h gcc-17-20260614/gcc/hard-reg-set.h
*** gcc-17-20260607/gcc/hard-reg-set.h	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/hard-reg-set.h	Sun Jun 14 22:32:07 2026
*************** hard_reg_set_iter_next (hard_reg_set_ite
*** 401,410 ****
    iter->bits &= ~ HARD_CONST (1);
  }
  
! /* SET must not change throughout the iteration.
     REGNUM (and ITER) may only be changed by the iteration functions.  */
  #define EXECUTE_IF_SET_IN_HARD_REG_SET(SET, MIN, REGNUM, ITER)          \
!   for (hard_reg_set_iter_init (&(ITER), (SET), (MIN), &(REGNUM));       \
         hard_reg_set_iter_set (&(ITER), &(REGNUM));                      \
         hard_reg_set_iter_next (&(ITER), &(REGNUM)))
  
--- 401,420 ----
    iter->bits &= ~ HARD_CONST (1);
  }
  
! template <typename T>
! inline void
! build_error_on_rvalue (T &&)
! {
!   static_assert (!std::is_rvalue_reference<T&&>::value, "");
! }
! 
! /* SET must not change throughout the iteration.  Its lifetime must cover
!    the entire loop so we call build_error_on_rvalue() to reject a temporary
!    object as SET.
     REGNUM (and ITER) may only be changed by the iteration functions.  */
  #define EXECUTE_IF_SET_IN_HARD_REG_SET(SET, MIN, REGNUM, ITER)          \
!   for (build_error_on_rvalue (SET),                                     \
!        hard_reg_set_iter_init (&(ITER), (SET), (MIN), &(REGNUM));       \
         hard_reg_set_iter_set (&(ITER), &(REGNUM));                      \
         hard_reg_set_iter_next (&(ITER), &(REGNUM)))
  
diff -Nrcpad gcc-17-20260607/gcc/internal-fn.cc gcc-17-20260614/gcc/internal-fn.cc
*** gcc-17-20260607/gcc/internal-fn.cc	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/internal-fn.cc	Sun Jun 14 22:32:07 2026
*************** expand_MASK_CALL (internal_fn, gcall *)
*** 5687,5692 ****
--- 5687,5699 ----
  }
  
  void
+ expand_VARYING (internal_fn, gcall *)
+ {
+   /* This IFN should reach expand.  */
+   gcc_unreachable ();
+ }
+ 
+ void
  expand_MULBITINT (internal_fn, gcall *stmt)
  {
    rtx_mode_t args[6];
diff -Nrcpad gcc-17-20260607/gcc/internal-fn.def gcc-17-20260614/gcc/internal-fn.def
*** gcc-17-20260607/gcc/internal-fn.def	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/internal-fn.def	Sun Jun 14 22:32:07 2026
*************** DEF_INTERNAL_FN (CO_FRAME, ECF_PURE | EC
*** 622,627 ****
--- 622,631 ----
  /* A NOP function with arbitrary arguments and return value.  */
  DEF_INTERNAL_FN (NOP, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
  
+ /* A GIMPLE value with no definition and not Virtual Opeands for temporary
+    assignment cases within a pass.  */
+ DEF_INTERNAL_FN (VARYING , ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
+ 
  /* Temporary vehicle for __builtin_shufflevector.  */
  DEF_INTERNAL_FN (SHUFFLEVECTOR, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
  
diff -Nrcpad gcc-17-20260607/gcc/internal-fn.h gcc-17-20260614/gcc/internal-fn.h
*** gcc-17-20260607/gcc/internal-fn.h	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/internal-fn.h	Sun Jun 14 22:32:07 2026
*************** extern void expand_SPACESHIP (internal_f
*** 275,280 ****
--- 275,281 ----
  extern void expand_TRAP (internal_fn, gcall *);
  extern void expand_ASSUME (internal_fn, gcall *);
  extern void expand_MASK_CALL (internal_fn, gcall *);
+ extern void expand_VARYING (internal_fn, gcall *);
  extern void expand_MULBITINT (internal_fn, gcall *);
  extern void expand_DIVMODBITINT (internal_fn, gcall *);
  extern void expand_FLOATTOBITINT (internal_fn, gcall *);
diff -Nrcpad gcc-17-20260607/gcc/ipa-param-manipulation.cc gcc-17-20260614/gcc/ipa-param-manipulation.cc
*** gcc-17-20260607/gcc/ipa-param-manipulation.cc	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/ipa-param-manipulation.cc	Sun Jun 14 22:32:07 2026
*************** ipa_param_body_adjustments::prepare_debu
*** 1386,1393 ****
  	}
  
        gcc_assert (TREE_CODE (value) == SSA_NAME);
!       tree *d = m_dead_ssa_debug_equiv.get (value);
!       m_dead_ssa_debug_equiv.put (dead_ssa, *d);
        return true;
      }
  
--- 1386,1393 ----
  	}
  
        gcc_assert (TREE_CODE (value) == SSA_NAME);
!       tree d = *m_dead_ssa_debug_equiv.get (value);
!       m_dead_ssa_debug_equiv.put (dead_ssa, d);
        return true;
      }
  
diff -Nrcpad gcc-17-20260607/gcc/ira-costs.cc gcc-17-20260614/gcc/ira-costs.cc
*** gcc-17-20260607/gcc/ira-costs.cc	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/ira-costs.cc	Sun Jun 14 22:32:07 2026
*************** find_costs_and_classes (void)
*** 2185,2191 ****
  	    i_mem_cost = 0;
  	  else if (ira_use_lra_p)
  	    {
! 	      if (equiv_savings > 0)
  		{
  		  i_mem_cost = 0;
  		  if (ira_dump_file != NULL && internal_flag_ira_verbose > 5)
--- 2185,2202 ----
  	    i_mem_cost = 0;
  	  else if (ira_use_lra_p)
  	    {
! 	      rtx x;
! 	      if (equiv_savings > 0
! 		  /* During LRA constraint pass, some equivalences are
! 		     invalidated.  Align IRA with LRA here and do not consider
! 		     those equivalences since otherwise those pseudos are
! 		     spilled.  */
! 		  && (!pic_offset_table_rtx
! 		      || (x = ira_reg_equiv[i].constant) == NULL
! 		      || ((!CONST_POOL_OK_P (PSEUDO_REGNO_MODE (i), x)
! 			   || targetm.preferred_reload_class
! 			      (x, reg_allocno_class (i)) != NO_REGS)
! 			  && !contains_symbol_ref_p (x))))
  		{
  		  i_mem_cost = 0;
  		  if (ira_dump_file != NULL && internal_flag_ira_verbose > 5)
diff -Nrcpad gcc-17-20260607/gcc/ira-int.h gcc-17-20260614/gcc/ira-int.h
*** gcc-17-20260607/gcc/ira-int.h	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/ira-int.h	Sun Jun 14 22:32:07 2026
*************** ira_caller_save_loop_spill_p (ira_allocn
*** 1715,1718 ****
--- 1715,1727 ----
    return call_cost && call_cost >= spill_cost;
  }
  
+ /* True if X is a constant that can be forced into the constant pool.
+    MODE is the mode of the operand, or VOIDmode if not known.  */
+ #define CONST_POOL_OK_P(MODE, X)		\
+   ((MODE) != VOIDmode				\
+    && CONSTANT_P (X)				\
+    && GET_CODE (X) != HIGH			\
+    && GET_MODE_SIZE (MODE).is_constant ()	\
+    && !targetm.cannot_force_const_mem (MODE, X))
+ 
  #endif /* GCC_IRA_INT_H */
diff -Nrcpad gcc-17-20260607/gcc/ira.cc gcc-17-20260614/gcc/ira.cc
*** gcc-17-20260607/gcc/ira.cc	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/ira.cc	Sun Jun 14 22:32:07 2026
*************** combine_and_move_insns (void)
*** 3990,3995 ****
--- 3990,3996 ----
  	continue;
  
        rtx_insn *use_insn = 0;
+       bool multiple_insns = false;
        for (df_ref use = DF_REG_USE_CHAIN (regno);
  	   use;
  	   use = DF_REF_NEXT_REG (use))
*************** combine_and_move_insns (void)
*** 3997,4007 ****
  	  {
  	    if (DEBUG_INSN_P (DF_REF_INSN (use)))
  	      continue;
! 	    gcc_assert (!use_insn);
  	    use_insn = DF_REF_INSN (use);
  	  }
        gcc_assert (use_insn);
  
        /* Don't substitute into jumps.  indirect_jump_optimize does
  	 this for anything we are prepared to handle.  */
        if (JUMP_P (use_insn))
--- 3998,4017 ----
  	  {
  	    if (DEBUG_INSN_P (DF_REF_INSN (use)))
  	      continue;
! 	    if (use_insn && DF_REF_INSN (use) != use_insn)
! 	      {
! 		multiple_insns = true;
! 		break;
! 	      }
  	    use_insn = DF_REF_INSN (use);
  	  }
        gcc_assert (use_insn);
  
+       /* If a register is used by more than one insn, we cannot trivially move
+ 	 or delete the definition anymore.  */
+       if (multiple_insns)
+ 	continue;
+ 
        /* Don't substitute into jumps.  indirect_jump_optimize does
  	 this for anything we are prepared to handle.  */
        if (JUMP_P (use_insn))
diff -Nrcpad gcc-17-20260607/gcc/jit/ChangeLog gcc-17-20260614/gcc/jit/ChangeLog
*** gcc-17-20260607/gcc/jit/ChangeLog	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/jit/ChangeLog	Sun Jun 14 22:32:07 2026
***************
*** 1,3 ****
--- 1,8 ----
+ 2026-06-09  Antoni Boucher  <bouanto@zoho.com>
+ 
+ 	* libgccjit.cc: Allow cast between integers and pointers in
+ 	is_valid_cast.
+ 
  2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
  
  	* TODO.rst: Fix typos.
diff -Nrcpad gcc-17-20260607/gcc/jit/libgccjit.cc gcc-17-20260614/gcc/jit/libgccjit.cc
*** gcc-17-20260607/gcc/jit/libgccjit.cc	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/jit/libgccjit.cc	Sun Jun 14 22:32:07 2026
*************** is_valid_cast (gcc::jit::recording::type
*** 2513,2522 ****
      if (dst_is_int || dst_is_bool)
        return true;
  
!   /* Permit casts between pointer types.  */
    gcc::jit::recording::type *deref_src_type = src_type->is_pointer ();
    gcc::jit::recording::type *deref_dst_type = dst_type->is_pointer ();
!   if (deref_src_type && deref_dst_type)
      return true;
  
    return false;
--- 2513,2522 ----
      if (dst_is_int || dst_is_bool)
        return true;
  
!   /* Permit casts between pointer types and integers and pointers.  */
    gcc::jit::recording::type *deref_src_type = src_type->is_pointer ();
    gcc::jit::recording::type *deref_dst_type = dst_type->is_pointer ();
!   if ((deref_src_type || src_is_int) && (deref_dst_type || dst_is_int))
      return true;
  
    return false;
diff -Nrcpad gcc-17-20260607/gcc/langhooks-def.h gcc-17-20260614/gcc/langhooks-def.h
*** gcc-17-20260607/gcc/langhooks-def.h	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/langhooks-def.h	Sun Jun 14 22:32:07 2026
*************** extern tree lhd_unit_size_without_reusab
*** 263,268 ****
--- 263,269 ----
  #define LANG_HOOKS_POST_COMPILATION_PARSING_CLEANUPS NULL
  #define LANG_HOOKS_DECL_OK_FOR_SIBCALL	lhd_decl_ok_for_sibcall
  #define LANG_HOOKS_OMP_ARRAY_DATA	hook_tree_tree_bool_null
+ #define LANG_HOOKS_OMP_ARRAY_DATA_PRIVATIZE hook_bool_tree_false
  #define LANG_HOOKS_OMP_ARRAY_SIZE	lhd_omp_array_size
  #define LANG_HOOKS_OMP_IS_ALLOCATABLE_OR_PTR hook_bool_const_tree_false
  #define LANG_HOOKS_OMP_CHECK_OPTIONAL_ARGUMENT hook_tree_tree_bool_null
*************** extern tree lhd_unit_size_without_reusab
*** 305,311 ****
    LANG_HOOKS_POST_COMPILATION_PARSING_CLEANUPS, \
    LANG_HOOKS_DECL_OK_FOR_SIBCALL, \
    LANG_HOOKS_OMP_ARRAY_DATA, \
!   LANG_HOOKS_OMP_ARRAY_SIZE, \
    LANG_HOOKS_OMP_IS_ALLOCATABLE_OR_PTR, \
    LANG_HOOKS_OMP_CHECK_OPTIONAL_ARGUMENT, \
    LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE, \
--- 306,313 ----
    LANG_HOOKS_POST_COMPILATION_PARSING_CLEANUPS, \
    LANG_HOOKS_DECL_OK_FOR_SIBCALL, \
    LANG_HOOKS_OMP_ARRAY_DATA, \
!   LANG_HOOKS_OMP_ARRAY_DATA_PRIVATIZE, \
!   LANG_HOOKS_OMP_ARRAY_SIZE,		\
    LANG_HOOKS_OMP_IS_ALLOCATABLE_OR_PTR, \
    LANG_HOOKS_OMP_CHECK_OPTIONAL_ARGUMENT, \
    LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE, \
diff -Nrcpad gcc-17-20260607/gcc/langhooks.h gcc-17-20260614/gcc/langhooks.h
*** gcc-17-20260607/gcc/langhooks.h	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/langhooks.h	Sun Jun 14 22:32:07 2026
*************** struct lang_hooks_for_decls
*** 243,248 ****
--- 243,255 ----
       is true, only the TREE_TYPE is returned without generating a new tree.  */
    tree (*omp_array_data) (tree, bool);
  
+   /* Return true if the actual array data of the passed array descriptor decl
+      shall be privatized as well, otherwise only the array descriptor is to
+      be privatized.  The argument must be a decl for an array descriptor,
+      i.e. it may only be called for a decl for which omp_array_data returns
+      a non-NULL_TREE.  */
+   bool (*omp_array_data_privatize) (tree);
+ 
    /* Return a tree for the actual data of an array descriptor - or NULL_TREE
       if original tree is not an array descriptor.  If the second argument
       is true, only the TREE_TYPE is returned without generating a new tree.  */
diff -Nrcpad gcc-17-20260607/gcc/lra-constraints.cc gcc-17-20260614/gcc/lra-constraints.cc
*** gcc-17-20260607/gcc/lra-constraints.cc	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/lra-constraints.cc	Sun Jun 14 22:32:07 2026
***************
*** 123,128 ****
--- 123,129 ----
  #include "optabs.h"
  #include "regs.h"
  #include "ira.h"
+ #include "ira-int.h"
  #include "recog.h"
  #include "output.h"
  #include "addresses.h"
*************** operands_match_p (rtx x, rtx y, int y_ha
*** 1013,1027 ****
    return true;
  }
  
- /* True if X is a constant that can be forced into the constant pool.
-    MODE is the mode of the operand, or VOIDmode if not known.  */
- #define CONST_POOL_OK_P(MODE, X)		\
-   ((MODE) != VOIDmode				\
-    && CONSTANT_P (X)				\
-    && GET_CODE (X) != HIGH			\
-    && GET_MODE_SIZE (MODE).is_constant ()	\
-    && !targetm.cannot_force_const_mem (MODE, X))
- 
  /* If REG is a reload pseudo, try to make its class satisfying CL.  */
  static void
  narrow_reload_pseudo_class (rtx reg, enum reg_class cl)
--- 1014,1019 ----
*************** postpone_insns (rtx_insn *first)
*** 4315,4320 ****
--- 4307,4364 ----
      }
  }
  
+ /* Test whether the n-th operand is a MEM where the address is the sum of a
+    section anchor and a constant and return true in case of reloading the
+    section anchor only results in a satisfiable operand w.r.t. its
+    corresponding constraint.  Otherwise return false.  */
+ 
+ static bool
+ reload_section_anchor_p (int nop)
+ {
+   rtx op = *curr_id->operand_loc[nop];
+   if (!MEM_P (op))
+     return false;
+   rtx addr = XEXP (op, 0);
+ 
+   if (GET_CODE (addr) != CONST
+       || GET_CODE (XEXP (addr, 0)) != PLUS
+       || GET_CODE (XEXP (XEXP (addr, 0), 0)) != SYMBOL_REF
+       || !SYMBOL_REF_ANCHOR_P (XEXP (XEXP (addr, 0), 0))
+       || !CONST_INT_P (XEXP (XEXP (addr, 0), 1))
+       /* Some offsets are valid in conjunction with a symbol and
+ 	 invalid in conjunction with a register.  Thus, pull out
+ 	 the anchor only in case the offset is a valid anchor
+ 	 offset.  */
+       || INTVAL (XEXP (XEXP (addr, 0), 1)) < targetm.min_anchor_offset
+       || INTVAL (XEXP (XEXP (addr, 0), 1)) > targetm.max_anchor_offset)
+     return false;
+ 
+   /* Now test whether a new address of the form REG+DISPLACEMENT is valid for
+      the selected alternative.  In order to do so, utilize lra_pmode_pseudo
+      instead of an actual reload register.  */
+ 
+   rtx offset = XEXP (XEXP (addr, 0), 1);
+   rtx new_addr = gen_rtx_PLUS (Pmode, lra_pmode_pseudo, offset);
+   rtx new_op = shallow_copy_rtx (op);
+   XEXP (new_op, 0) = new_addr;
+ 
+   /* Get operand constraints for given alternative.  */
+   const char *p = (curr_static_id->operand_alternative
+ 		   [goal_alt_number * curr_static_id->n_operands + nop]
+ 		   .constraint);
+   char c;
+   for (;
+        (c = *p) && c != ',' && c != '#';
+        p += CONSTRAINT_LEN (c, p))
+     {
+       enum constraint_num cn = lookup_constraint (p);
+       if (constraint_satisfied_p (new_op, cn))
+ 	return true;
+     }
+ 
+   return false;
+ }
+ 
  /* 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)
*** 4882,4887 ****
--- 4926,4952 ----
  	    new_reg = emit_inc (rclass, *loc,
  				/* This value does not matter for MODIFY.  */
  				GET_MODE_SIZE (GET_MODE (op)));
+ 	  /* Try to pull out section anchors.  For example, instead of
+ 	     reloading an "entire" address like .LANCHOR42+offset only reload
+ 	     .LANCHOR42 and use the new reload register as the base register.
+ 	     This allows following optimizations to share section anchors and
+ 	     remove redundant loads.  */
+ 	  else if (reload_section_anchor_p (i))
+ 	    {
+ 	      rtx anchor = XEXP (XEXP (*loc, 0), 0);
+ 	      rtx offset = XEXP (XEXP (*loc, 0), 1);
+ 
+ 	      if (get_reload_reg (OP_IN, Pmode, anchor, rclass, NULL, false,
+ 				  false, "offsetable address", &new_reg))
+ 		lra_emit_move (new_reg, anchor);
+ 
+ 	      rtx new_addr = gen_rtx_PLUS (Pmode, new_reg, offset);
+ 	      rtx new_op = shallow_copy_rtx (op);
+ 	      XEXP (new_op, 0) = new_addr;
+ 
+ 	      new_reg = new_op;
+ 	      loc = curr_id->operand_loc[i];
+ 	    }
  	  else if (get_reload_reg (OP_IN, Pmode, *loc, rclass,
  				   NULL, false, false,
  				   "offsetable address", &new_reg))
diff -Nrcpad gcc-17-20260607/gcc/lto-wrapper.cc gcc-17-20260614/gcc/lto-wrapper.cc
*** gcc-17-20260607/gcc/lto-wrapper.cc	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/lto-wrapper.cc	Sun Jun 14 22:32:07 2026
*************** run_gcc (unsigned argc, char *argv[])
*** 1452,1458 ****
    if (!collect_gcc)
      fatal_error (input_location,
  		 "environment variable %<COLLECT_GCC%> must be set");
!   collect_gcc_options = getenv ("COLLECT_GCC_OPTIONS");
    if (!collect_gcc_options)
      fatal_error (input_location,
  		 "environment variable %<COLLECT_GCC_OPTIONS%> must be set");
--- 1452,1458 ----
    if (!collect_gcc)
      fatal_error (input_location,
  		 "environment variable %<COLLECT_GCC%> must be set");
!   collect_gcc_options = const_cast<char *> (read_collect_gcc_options ());
    if (!collect_gcc_options)
      fatal_error (input_location,
  		 "environment variable %<COLLECT_GCC_OPTIONS%> must be set");
diff -Nrcpad gcc-17-20260607/gcc/match.pd gcc-17-20260614/gcc/match.pd
*** gcc-17-20260607/gcc/match.pd	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/match.pd	Sun Jun 14 22:32:08 2026
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 1831,1836 ****
--- 1831,1843 ----
  	&& wi::to_wide (@1) != wi::min_value (TYPE_PRECISION (type),
  					      SIGNED))
      (minus (plus @1 { build_minus_one_cst (type); }) @0))))
+ 
+ /* (~X) >> X -> -1 for signed X.  */
+ (simplify
+  (rshift (bit_not @0) (convert? @0))
+  (if (INTEGRAL_TYPE_P (type)
+       && !TYPE_UNSIGNED (type))
+   { build_minus_one_cst (type); }))
  #endif
  
  /* ~(X >> Y) -> ~X >> Y if ~X can be simplified.  */
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 2518,2523 ****
--- 2525,2535 ----
   (if (INTEGRAL_TYPE_P (type))
    (bit_and @0 @1)))
  
+ /* Transform { 0 or 1 } * -{ 0 or 1 } into -({ 0 or 1 } & { 0 or 1 }).  */
+ (simplify
+  (mult:c (negate zero_one_valued_p@0) zero_one_valued_p@1)
+  (negate (bit_and @0 @1)))
+ 
  /* Fold `(a ? b : 0) | (a ? 0 : c)` into (a ? b : c).
      Handle also ^ and + in replacement of `|`. */
  (for cnd (cond vec_cond)
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 4489,4494 ****
--- 4501,4521 ----
  	&& !TYPE_OVERFLOW_SANITIZED (type))
      (minus (minmax @0 @1) @2))))
  
+ /* (type) minmax ((wide_type) a, (wide_type) b) -> minmax (a, b)
+    when type matches the type of a and b, and wide_type is a wider
+    type with the same signedness as type. */
+ (for minmax (min max)
+  (simplify
+   (convert (minmax:c (convert@2 @0) (convert@3 @1)))
+   (if (INTEGRAL_TYPE_P (type)
+        && INTEGRAL_TYPE_P (TREE_TYPE (@2))
+        && types_match (type, TREE_TYPE (@0))
+        && types_match (type, TREE_TYPE (@1))
+        && types_match (TREE_TYPE (@2), TREE_TYPE (@3))
+        && TYPE_PRECISION (TREE_TYPE (@2)) > TYPE_PRECISION (type)
+        && TYPE_UNSIGNED (TREE_TYPE (@2)) == TYPE_UNSIGNED (type))
+    (minmax @0 @1))))
+ 
  /* max (a, a + CST) -> a + CST where CST is positive.  */
  /* max (a, a + CST) -> a where CST is negative.  */
  (simplify
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 6658,6663 ****
--- 6685,6699 ----
   (simplify
    (bitop (neeql @0 @1) (neeqr (bit_ior @0 @1) integer_zerop))
    { constant_boolean_node (bitop == BIT_IOR_EXPR, type); }))
+ 
+ /* (a == 0) | ((a | b) == 0) -> (a == 0) -- PR125442
+    (a != 0) & ((a | b) != 0) -> (a != 0) -- PR125442 */
+ 
+ (for bitop (bit_and bit_ior)
+      neeq  (ne      eq)
+ (simplify
+   (bitop:c (neeq@2 @0 integer_zerop) (neeq (bit_ior:c @0 @1) integer_zerop))
+   @2))
  #endif
  
  /* These was part of minmax phiopt.  */
diff -Nrcpad gcc-17-20260607/gcc/omp-low.cc gcc-17-20260614/gcc/omp-low.cc
*** gcc-17-20260607/gcc/omp-low.cc	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/omp-low.cc	Sun Jun 14 22:32:08 2026
*************** scan_sharing_clauses (tree clauses, omp_
*** 1464,1470 ****
  	  if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_FIRSTPRIVATE
  	      && is_gimple_omp_offloaded (ctx->stmt)
  	      && !is_gimple_omp_oacc (ctx->stmt)
! 	      && lang_hooks.decls.omp_array_data (decl, true))
  	    {
  	      install_var_field (decl, false, 16 | 3, ctx);
  	      install_var_field (decl, true, 8 | 3, ctx);
--- 1464,1471 ----
  	  if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_FIRSTPRIVATE
  	      && is_gimple_omp_offloaded (ctx->stmt)
  	      && !is_gimple_omp_oacc (ctx->stmt)
! 	      && lang_hooks.decls.omp_array_data (decl, true)
! 	      && lang_hooks.decls.omp_array_data_privatize (decl))
  	    {
  	      install_var_field (decl, false, 16 | 3, ctx);
  	      install_var_field (decl, true, 8 | 3, ctx);
*************** lower_omp_target (gimple_stmt_iterator *
*** 13078,13084 ****
  	  }
  	  /* Fortran array descriptors: firstprivate of data + attach.  */
  	  if (OMP_CLAUSE_CODE (c) != OMP_CLAUSE_HAS_DEVICE_ADDR
! 	      && lang_hooks.decls.omp_array_data (var, true))
  	    map_cnt += 2;
  
        do_dtor:
--- 13079,13086 ----
  	  }
  	  /* Fortran array descriptors: firstprivate of data + attach.  */
  	  if (OMP_CLAUSE_CODE (c) != OMP_CLAUSE_HAS_DEVICE_ADDR
! 	      && lang_hooks.decls.omp_array_data (var, true)
! 	      && lang_hooks.decls.omp_array_data_privatize (var))
  	    map_cnt += 2;
  
        do_dtor:
*************** lower_omp_target (gimple_stmt_iterator *
*** 13757,13763 ****
  				    build_int_cstu (tkind_type, tkind));
  	    /* Fortran array descriptors: firstprivate of data + attach.  */
  	    if (OMP_CLAUSE_CODE (c) != OMP_CLAUSE_HAS_DEVICE_ADDR
! 		&& lang_hooks.decls.omp_array_data (ovar, true))
  	      {
  		tree not_null_lb, null_lb, after_lb;
  		tree var1, var2, size1, size2;
--- 13759,13766 ----
  				    build_int_cstu (tkind_type, tkind));
  	    /* Fortran array descriptors: firstprivate of data + attach.  */
  	    if (OMP_CLAUSE_CODE (c) != OMP_CLAUSE_HAS_DEVICE_ADDR
! 		&& lang_hooks.decls.omp_array_data (ovar, true)
! 		&& lang_hooks.decls.omp_array_data_privatize (ovar))
  	      {
  		tree not_null_lb, null_lb, after_lb;
  		tree var1, var2, size1, size2;
diff -Nrcpad gcc-17-20260607/gcc/range-op.cc gcc-17-20260614/gcc/range-op.cc
*** gcc-17-20260607/gcc/range-op.cc	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/range-op.cc	Sun Jun 14 22:32:08 2026
*************** operator_trunc_mod::wi_fold (irange &r,
*** 4367,4372 ****
--- 4367,4390 ----
    new_ub = wi::min (new_ub, tmp, sign);
  
    value_range_with_overflow (r, type, new_lb, new_ub);
+ 
+   // When all positive and all X/Y combinations produce the same quotient
+   // we can refine the result with    X % Y == X - Q * Y.
+   // Ensure that division by 0 is not an option.
+   if (wi::gt_p (rh_lb, 0, sign) && wi::ge_p (lh_lb, 0, sign))
+     {
+       wide_int q_lb = wi::div_trunc (lh_lb, rh_ub, sign);
+       wide_int q_ub = wi::div_trunc (lh_ub, rh_lb, sign);
+ 
+       if (q_lb == q_ub)
+ 	{
+ 	  new_lb = lh_lb - q_lb * rh_ub;
+ 	  new_ub = lh_ub - q_lb * rh_lb;
+ 
+ 	  int_range<2> refined (type, new_lb, new_ub);
+ 	  r.intersect (refined);
+ 	}
+     }
  }
  
  bool
diff -Nrcpad gcc-17-20260607/gcc/simplify-rtx.cc gcc-17-20260614/gcc/simplify-rtx.cc
*** gcc-17-20260607/gcc/simplify-rtx.cc	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/simplify-rtx.cc	Sun Jun 14 22:32:08 2026
*************** simplify_context::simplify_unary_operati
*** 1900,1905 ****
--- 1900,1911 ----
  #endif
        break;
  
+     case VEC_DUPLICATE:
+       if (GET_CODE (op) == VEC_DUPLICATE)
+ 	return simplify_gen_unary (VEC_DUPLICATE, mode, XEXP (op, 0),
+ 				   GET_MODE (XEXP (op, 0)));
+       break;
+ 
      default:
        break;
      }
diff -Nrcpad gcc-17-20260607/gcc/target.def gcc-17-20260614/gcc/target.def
*** gcc-17-20260607/gcc/target.def	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/target.def	Sun Jun 14 22:32:08 2026
*************** The result is the value to be used with
*** 3547,3553 ****
  DEFHOOK
  (diagnose_usage,
   "Define this hook if the availability of an address space depends on\n\
! command line options and some diagnostics should be printed when the\n\
  address space is used.  This hook is called during parsing and allows\n\
  to emit a better diagnostic compared to the case where the address space\n\
  was not registered with @code{c_register_addr_space}.  @var{as} is\n\
--- 3547,3553 ----
  DEFHOOK
  (diagnose_usage,
   "Define this hook if the availability of an address space depends on\n\
! command-line options and some diagnostics should be printed when the\n\
  address space is used.  This hook is called during parsing and allows\n\
  to emit a better diagnostic compared to the case where the address space\n\
  was not registered with @code{c_register_addr_space}.  @var{as} is\n\
diff -Nrcpad gcc-17-20260607/gcc/testsuite/ChangeLog gcc-17-20260614/gcc/testsuite/ChangeLog
*** gcc-17-20260607/gcc/testsuite/ChangeLog	Sun Jun  7 22:32:07 2026
--- gcc-17-20260614/gcc/testsuite/ChangeLog	Sun Jun 14 22:32:08 2026
***************
*** 1,3 ****
--- 1,913 ----
+ 2026-06-13  Jose E. Marchesi  <jemarch@gnu.org>
+ 
+ 	* algol68/execute/modules/program-1.a68: Fix test.
+ 
+ 2026-06-13  Jose E. Marchesi  <jemarch@gnu.org>
+ 
+ 	* algol68/execute/modules/module1.a68: Add an operator %.
+ 	* algol68/execute/modules/program-1.a68: Use operator %.
+ 
+ 2026-06-13  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/125776
+ 	* gcc.dg/torture/pr125776-1.c: New test.
+ 	* gcc.dg/torture/pr125776-2.c: New test.
+ 
+ 2026-06-13  Jose E. Marchesi  <jemarch@gnu.org>
+ 
+ 	* algol68/execute/gen-in-constructor-1.a68: New test.
+ 	* algol68/execute/gen-in-constructor-2.a68: Likewise.
+ 
+ 2026-06-13  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	PR tree-optimization/125750
+ 	* g++.dg/tree-ssa/mult-negate-zeroone-1.C: New test.
+ 	* g++.dg/tree-ssa/mult-negate-zeroone-2.C: New test.
+ 
+ 2026-06-13  Kael Andrew Alonzo Franco  <kaelfandrew@gmail.com>
+ 
+ 	PR tree-optimization/125707
+ 	PR tree-optimization/125707
+ 	* gcc.dg/pr125707.c: New test.
+ 
+ 2026-06-13  Sunil Dora  <sunilkumar.dora@windriver.com>
+ 
+ 	PR driver/111527
+ 	* gcc.misc-tests/pr111527.exp: New test.
+ 
+ 2026-06-13  Jose E. Marchesi  <jemarch@gnu.org>
+ 
+ 	* algol68/execute/formula-3.a68: New test.
+ 	* algol68/execute/formula-4.a68: Likewise.
+ 	* algol68/execute/formula-5.a68: Likewise.
+ 
+ 2026-06-12  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* gfortran.dg/gomp/declare-mapper-6.f90: New test.
+ 	* gfortran.dg/gomp/declare-mapper-7.f90: New test.
+ 	* gfortran.dg/gomp/declare-reduction-3.f90: New test.
+ 	* gfortran.dg/gomp/declare-reduction-4.f90: New test.
+ 
+ 2026-06-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/125674
+ 	* g++.dg/template/bitfield5.C: New test.
+ 	* g++.dg/template/bitfield6.C: New test.
+ 
+ 2026-06-12  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* gfortran.dg/goacc/asyncwait-4.f95: Update dg-error.
+ 	* gfortran.dg/goacc/routine-6.f90: Likewise.
+ 	* gfortran.dg/gomp/udr1.f90: Likewise.
+ 	* gfortran.dg/gomp/udr2.f90: Likewise.
+ 	* gfortran.dg/gomp/udr4.f90: Likewise.
+ 	* gfortran.dg/gomp/declare-reduction-2.f90: New test.
+ 
+ 2026-06-12  Julian Brown  <julian@codesourcery.com>
+ 	    Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* gfortran.dg/gomp/declare-mapper-1.f90: Remove no longer
+ 	expect 'sorry, unimplemented'.
+ 	* gfortran.dg/gomp/declare-mapper-3.f90: New test.
+ 	* gfortran.dg/gomp/declare-mapper-31.f90: New test.
+ 	* gfortran.dg/gomp/declare-mapper-4.f90: New test.
+ 	* gfortran.dg/gomp/declare-mapper-5.f90: New test.
+ 
+ 2026-06-12  Stefan Schulze Frielinghaus  <stefansf@gcc.gnu.org>
+ 
+ 	* gcc.target/s390/section-anchors-4.c: New test.
+ 
+ 2026-06-12  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* g++.dg/modules/clone-4_b.C: Account for missing strong symbol
+ 	aliases.
+ 	* g++.dg/template/explicit-instantiation8.C: Likewise.
+ 
+ 2026-06-12  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/125597
+ 	* gcc.target/aarch64/pr125597.c: New test.
+ 
+ 2026-06-12  Stefan Schulze Frielinghaus  <stefansf@gcc.gnu.org>
+ 
+ 	PR rtl-optimization/125173
+ 	* gcc.dg/pr125173-1.c: New test.
+ 
+ 2026-06-12  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 	    Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	PR tree-optimization/125557
+ 	PR tree-optimization/64700
+ 	PR tree-optimization/29144
+ 	PR tree-optimization/94274
+ 	* gcc.dg/tree-ssa/recip-3.c: Disable phiopt since it removes
+ 	one division and recip pass needs 3.
+ 	* gcc.dg/tree-ssa/recip-5.c: Likewise.
+ 	* gcc.dg/tree-ssa/recip-6.c: Likewise.
+ 	* gcc.dg/tree-ssa/recip-7.c: Likewise.
+ 	* gcc.dg/tree-ssa/slsr-12.c: xfail.
+ 	* gcc.dg/tree-ssa/slsr-34.c: Likewise.
+ 	* gcc.dg/tree-ssa/pr122629-1.c: Update to scan phiopt1.
+ 	* gcc.dg/vect/vect-reduc-cond-2.c: Likewise.
+ 	* gcc.dg/tree-ssa/phi-factor-binary-1.c: New test.
+ 	* gcc.dg/tree-ssa/phi-factor-binary-2.c: New test.
+ 	* gcc.target/aarch64/phi-factor-binary-1.c: New test.
+ 	* gcc.target/aarch64/cinc_common_1.c: xfail.
+ 	* gcc.target/aarch64/fuse_cmp_csel.c: xfail.
+ 	* gcc.target/aarch64/fuse_cmp_csel-1.c: New test.
+ 
+ 2026-06-12  Stefan Schulze Frielinghaus  <stefansf@gcc.gnu.org>
+ 
+ 	* gcc.target/s390/ira-pic-spill-1.c: New test.
+ 	* gcc.target/s390/ira-pic-spill-2.c: New test.
+ 	* gcc.target/s390/ira-pic-spill-3.c: New test.
+ 
+ 2026-06-11  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/30438
+ 	PR fortran/28004
+ 	* gfortran.dg/allocatable_length.f90: Add -Wno-undefined-vars.
+ 	* gfortran.dg/allocatable_scalar_6.f90: Likewise.
+ 	* gfortran.dg/allocatable_uninitialized_1.f90: Add -Wno-unused-but-set-variable
+ 	-Wno-undefined-vars.
+ 	* gfortran.dg/assignment_4.f90: Add -Wno-undefined-vars.
+ 	* gfortran.dg/attr_deprecated-2.f90: Likewise.
+ 	* gfortran.dg/c_by_val_5.f90: Add -Wno-unused-but-set-variable.
+ 	* gfortran.dg/char_component_initializer_2.f90: Shut up warning.
+ 	* gfortran.dg/char_length_1.f90: Add statement to shut up warning.
+ 	* gfortran.dg/constructor_9.f90: Add -Wno-unused-but-set-variable.
+ 	* gfortran.dg/gamma_2.f90: Add statement to shut up warning.
+ 	* gfortran.dg/gomp/allocate-10.f90: Add -Wno-unused-but-set-variable.
+ 	* gfortran.dg/io_constraints_8.f90: Likewise.
+ 	* gfortran.dg/label_5.f90: Likewise.
+ 	* gfortran.dg/len_trim.f90: Likewise.
+ 	* gfortran.dg/linefile.f90: Likewise.
+ 	* gfortran.dg/pointer_check_13.f90: Add dg-warning.
+ 	* gfortran.dg/pr102366.f90: Add -Wno-unused-but-set-variable.
+ 	* gfortran.dg/pr103475.f90: Likewise.
+ 	* gfortran.dg/pr91497.f90: Likewise.
+ 	* gfortran.dg/pr91497_2.f90: Likewise.
+ 	* gfortran.dg/pr96312.f90: Likewise.
+ 	* gfortran.dg/pr98411.f90: Likewise.
+ 	* gfortran.dg/transfer_check_4.f90: Likewise.
+ 	* gfortran.dg/warnings_are_errors_1.f90: Add print statement.
+ 	* gfortran.dg/warn_undefined_vars_1.f90: New test.
+ 	* gfortran.dg/warn_undefined_vars_2.f90: New test.
+ 	* gfortran.dg/warn_undefined_vars_3.f90: New test.
+ 	* gfortran.dg/warn_undefined_vars_4.f90: New test.
+ 	* gfortran.dg/warn_unused_intent_out_1.f90: New test.
+ 	* gfortran.dg/warn_unused_read_1.f90: New test.
+ 	* gfortran.dg/warn_unused_but_set_1.f90: New file.
+ 
+ 2026-06-11  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* c-c++-common/tls-attr-common.c: Add emulated TLS
+ 	matches.
+ 	* c-c++-common/tls-attr-le-pic.c: Likewise.
+ 	* c-c++-common/tls-attr-le-pie.c: Likewise.
+ 
+ 2026-06-11  Jonathan Yong  <10walls@gmail.com>
+ 
+ 	Revert:
+ 	2026-05-28  oltolm  <oleg.tolmatcev@gmail.com>
+ 
+ 	PR target/54412
+ 	* gcc.target/i386/pr54412-v4d-o0-aligned-locals.c: New test.
+ 	* gcc.target/i386/pr54412-o2-by-value-cases.c: New test.
+ 	* gcc.target/i386/pr54412-sret-no-args.c: New test.
+ 	* gcc.target/i386/pr54412-callee-byref-param.c: New test.
+ 	* gcc.target/i386/pr54412-avx512-aligned64.c: New test.
+ 
+ 2026-06-11  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* g++.dg/reflect/visibility1.C: Use scan-weak/scan-not-weak to
+ 	improve portability.
+ 
+ 2026-06-11  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/125752
+ 	* gcc.target/avr/torture/fx-to-double.c: New test.
+ 
+ 2026-06-11  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/125706
+ 	* gcc.dg/pr125706.c: New.
+ 
+ 2026-06-11  Naveen  <naveen.siddegowda@oss.qualcomm.com>
+ 
+ 	PR target/113926
+ 	* gcc.target/aarch64/pr113926.c: New test.
+ 	* gcc.target/aarch64/pr113926_1.c: New test.
+ 
+ 2026-06-11  Zhongyao Chen  <chenzhongyao.hit@gmail.com>
+ 
+ 	PR tree-optimization/123343
+ 	* gcc.dg/vect/slp-reduc-var.c: New testcase.
+ 
+ 2026-06-11  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 
+ 	* lib/target-supports.exp (arm_mixed_fp): Simplify
+ 	implementation.
+ 
+ 2026-06-11  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* cobol.dg/group2/MOVE_NumericDisplay_to_COMP-3.cob: New test.
+ 	* cobol.dg/group2/MOVE_NumericDisplay_to_COMP-3.out: New test.
+ 
+ 2026-06-11  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/93727
+ 	* gfortran.dg/EXformat_4.F90: New test covering EX format read
+ 	for kind=4 and 8 (always) and kind=10, 16 (when available):
+ 	hex-significand literals, lowercase prefix, negative binary
+ 	exponent, decimal fallback, d-field adjustment, INF/NAN, zero
+ 	field, and round-trips through write_ex.
+ 
+ 2026-06-11  Hongyu Wang  <hongyu.wang@intel.com>
+ 
+ 	* gcc.target/i386/mvc18.c: New test for target_clones with
+ 	avx10.2, apxf, and arch=diamondrapids/novalake.
+ 
+ 2026-06-11  Zhongyao Chen  <chen.zhongyao@zte.com.cn>
+ 
+ 	PR tree-optimization/125567
+ 	* gcc.dg/vect/pr125567.c: New test.
+ 
+ 2026-06-10  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* gcc.dg/pr97172-2.c: Allow undefined symbols at link-time.
+ 
+ 2026-06-10  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* gcc.dg/debug/dwarf2/dwarf2-macro.c: XFAIL for Darwin23+.
+ 	* gcc.dg/debug/dwarf2/dwarf2-macro2.c: Likewise.
+ 
+ 2026-06-10  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* gcc.misc-tests/outputs.exp: Pass -w to linker invocations
+ 	when ld64 is in use.
+ 
+ 2026-06-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/125694
+ 	* c-c++-common/builtin-bswapg-5.c: New test.
+ 	* c-c++-common/builtin-bitreverseg-4.c: New test.
+ 
+ 2026-06-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/91155
+ 	* g++.dg/torture/pr91155.C: Change into dg-do run test, actually test
+ 	the strings are the same.
+ 
+ 2026-06-10  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-06-10  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125650
+ 	* gfortran.dg/associate_81.f90: New test.
+ 
+ 2026-06-10  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* g++.target/i386/cf_check-4.C: Support Darwin ABI/Mach-O syntax.
+ 	* g++.target/i386/memset-pr108585-1a.C: Likewise.
+ 	* g++.target/i386/memset-pr108585-1b.C: Likewise.
+ 
+ 2026-06-10  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* gcc.target/i386/builtin-memmove-13.c: Add support for Mach-O.
+ 	* gcc.target/i386/cf_check-11.c: Likewise.
+ 	* gcc.target/i386/memcpy-pr120683-1.c: Likewise.
+ 	* gcc.target/i386/memcpy-strategy-13.c: Likewise.
+ 	* gcc.target/i386/memset-pr120683-10.c: Likewise.
+ 	* gcc.target/i386/memset-pr120683-20.c: Likewise.
+ 	* gcc.target/i386/memset-pr120683-21.c: Likewise.
+ 	* gcc.target/i386/memset-strategy-27.c: Likewise.
+ 	* gcc.target/i386/opt-comi-1.c: Likewise.
+ 	* gcc.target/i386/pr111657-1.c: Likewise.
+ 	* gcc.target/i386/pr122343-1a.c: Likewise.
+ 	* gcc.target/i386/pr122343-1b.c: Likewise.
+ 	* gcc.target/i386/pr122343-2a.c: Likewise.
+ 	* gcc.target/i386/pr122343-2b.c: Likewise.
+ 	* gcc.target/i386/pr122343-3.c: Likewise.
+ 	* gcc.target/i386/pr122343-4a.c: Likewise.
+ 	* gcc.target/i386/pr122343-4b.c: Likewise.
+ 	* gcc.target/i386/pr122343-5a.c: Likewise.
+ 	* gcc.target/i386/pr122343-5b.c: Likewise.
+ 	* gcc.target/i386/pr122343-6a.c: Likewise.
+ 	* gcc.target/i386/pr122343-6b.c: Likewise.
+ 	* gcc.target/i386/pr122343-7.c: Likewise.
+ 	* gcc.target/i386/pr122675-1.c: Likewise.
+ 	* gcc.target/i386/pr125351.c: Likewise.
+ 	* gcc.target/i386/pr125355-2.c: Likewise.
+ 	* gcc.target/i386/pr125355.c: Likewise.
+ 	* gcc.target/i386/pr92080-17.c: Likewise.
+ 	* gcc.target/i386/prefetchi-1.c: Likewise.
+ 	* gcc.target/i386/prefetchi-1b.c: Likewise.
+ 
+ 2026-06-10  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* lib/scanasm.exp (target_regex_skip_line,
+ 	target_regex_verbatim_line, target_substitute_func_regex): New.
+ 	(check-function-bodies): use the customisation points.
+ 	(configure_check-function-bodies): Populate the new customisation
+ 	points for Darwin/Mach-O.
+ 	* lib/target-supports.exp
+ 	(add_options_for_check_function_bodies): Add Darwin criteria.
+ 
+ 2026-06-10  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-06-10  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125530
+ 	* gfortran.dg/associate_contained_func_typebound.f90: New test.
+ 	* gfortran.dg/associate_contained_func_typebound_2.f90: New
+ 	run-time test exercising generic resolution and a module-scope
+ 	selector.
+ 
+ 2026-06-10  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/125498
+ 	* g++.dg/reflect/mangle7.C: New test.
+ 	* g++.dg/reflect/parameters_of9.C: New test.
+ 
+ 2026-06-10  Wilco Dijkstra  <wilco.dijkstra@arm.com>
+ 
+ 	* gcc.target/aarch64/sve/vcond_18.c: Update.
+ 
+ 2026-06-09  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* cobol.dg/group2/COMP-3_to_COMP-3__IN-PHASE__MOVES.cob: New test.
+ 	* cobol.dg/group2/COMP-3_to_COMP-3__IN-PHASE__MOVES.out: New test.
+ 	* cobol.dg/group2/COMP-3_to_COMP-3__OUT-OF-PHASE__MOVES.cob: New test.
+ 	* cobol.dg/group2/COMP-3_to_COMP-3__OUT-OF-PHASE__MOVES.out: New test.
+ 
+ 2026-06-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/bigint1.adb: New  test.
+ 
+ 2026-06-09  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/121287
+ 	PR c++/125212
+ 	PR c++/105667
+ 	PR c++/121597
+ 	PR c++/110961
+ 	* g++.dg/cpp26/lambda-targ1.C: New test.
+ 	* g++.dg/cpp2a/lambda-targ26.C: New test.
+ 	* g++.dg/cpp2a/lambda-targ27.C: New test.
+ 	* g++.dg/cpp2a/lambda-targ28.C: New test.
+ 	* g++.dg/cpp2a/lambda-targ29.C: New test.
+ 	* g++.dg/cpp2a/lambda-targ30.C: New test.
+ 	* g++.dg/cpp2a/lambda-targ31.C: New test.
+ 	* g++.dg/cpp2a/lambda-targ32.C: New test.
+ 
+ 2026-06-09  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/125636
+ 	* gcc.target/i386/pr89954.c: Update assembler scan
+ 	directives to expect movsbl instead of movsbw.
+ 
+ 2026-06-09  Ciprian Arbone  <Ciprian.Arbone@microchip.com>
+ 	    Senthil Kumar Selvaraj  <saaadhu@gcc.gnu.org>
+ 
+ 	PR target/124077
+ 	* gcc.target/arm/pr124077.c: New test.
+ 
+ 2026-06-09  Antoni Boucher  <bouanto@zoho.com>
+ 
+ 	* jit.dg/test-cast.c: Add test case for pointer to int cast.
+ 
+ 2026-06-09  Wilco Dijkstra  <wilco.dijkstra@arm.com>
+ 
+ 	* gcc.target/aarch64/sve/acle/asm/dup_bf16.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/dup_f16.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/dup_f32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/dup_f64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/dup_s16.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/dup_s32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/dup_s64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/dup_s8.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/dup_u16.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/dup_u32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/dup_u64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/dup_u8.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/mul_s16.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/mul_s32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/mul_s64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/mul_s8.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/mul_u16.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/mul_u32.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/mul_u64.c: Update.
+ 	* gcc.target/aarch64/sve/acle/asm/mul_u8.c: Update.
+ 	* gcc.target/aarch64/sve/vcond_18.c: Update.
+ 	* g++.target/aarch64/sve/dup_sel_5.C: Update.
+ 	* g++.target/aarch64/sve/dup_sel_6.C: Update.
+ 
+ 2026-06-09  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	PR target/125550
+ 	* gcc.target/aarch64/ldp_stp_16.c: Adjust testcases.
+ 	* gcc.target/aarch64/pr109072_1.c: Likewise.
+ 	* gcc.target/aarch64/simd/mf8_data_1.c: Likewise.
+ 	* gcc.target/aarch64/sve/vec_init_5.c: Likewise.
+ 	* gcc.target/aarch64/vec-init-14.c: Likewise.
+ 	* gcc.target/aarch64/vec-init-23.c: Likewise.
+ 	* gcc.target/aarch64/vec-init-9.c: Likewise.
+ 	* gcc.target/aarch64/sve/pr125550.c: New test.
+ 
+ 2026-06-09  JRobinNTA  <johnrobin044@gmail.com>
+ 
+ 	PR target/125395
+ 	* gcc.target/riscv/rvv/xtheadvector/pr125395.c: New test.
+ 
+ 2026-06-09  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	PR middle-end/125621
+ 	* gcc.target/aarch64/torture/pr125621.c: New test.
+ 
+ 2026-06-09  Monk Chiang  <monk.chiang@sifive.com>
+ 	     "Jim Wilson  <jimw@sifive.com>
+ 
+ 	* gcc.target/riscv/sifive-7-load-address-bypass.c: New test.
+ 
+ 2026-06-09  Monk Chiang  <monk.chiang@sifive.com>
+ 
+ 	* gcc.target/riscv/zicfilp-trampoline.c: New test.
+ 
+ 2026-06-09  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* gfortran.dg/gomp/declare-reduction-1.f90: New test.
+ 
+ 2026-06-09  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/125669
+ 	* gfortran.dg/pdt_92.f03: New test.
+ 
+ 2026-06-09  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
+ 
+ 	* gcc.target/powerpc/amo8.c: New test.
+ 	* gcc.target/powerpc/amo9.c: New test.
+ 
+ 2026-06-08  Jose E. Marchesi  <jemarch@gnu.org>
+ 
+ 	* algol68/compile/error-attr-format-token-1.a68: New test.
+ 
+ 2026-06-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/125629
+ 	* c-c++-common/builtin-bswapg-4.c: New test.
+ 	* c-c++-common/builtin-bitreverseg-3.c: New test.
+ 
+ 2026-06-08  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	* gcc.target/aarch64/acle/rprfm.c: New test.
+ 	* gcc.target/aarch64/acle/rprfm_error.c: New test.
+ 
+ 2026-06-08  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	* gcc.target/aarch64/acle/fprcvt.c: New test.
+ 	* gcc.target/aarch64/fprcvt.c: New test.
+ 	* gcc.target/aarch64/fprcvt.x: New test.
+ 	* gcc.target/aarch64/fprcvt_float32_int32.c: New test.
+ 	* gcc.target/aarch64/fprcvt_float32_int64.c: New test.
+ 	* gcc.target/aarch64/fprcvt_float32_uint32.c: New test.
+ 	* gcc.target/aarch64/fprcvt_float32_uint64.c: New test.
+ 	* gcc.target/aarch64/fprcvt_float64_int32.c: New test.
+ 	* gcc.target/aarch64/fprcvt_float64_int64.c: New test.
+ 	* gcc.target/aarch64/fprcvt_float64_uint32.c: New test.
+ 	* gcc.target/aarch64/fprcvt_float64_uint64.c: New test.
+ 
+ 2026-06-08  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	* gcc.target/aarch64/acle/fcvt_intrinsics.c: New test.
+ 
+ 2026-06-08  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	* gcc.target/aarch64/pragma_cpp_predefs_4.c: Add
+ 	__ARM_FEATURE_SSVE_FEXPA test.
+ 	* gcc.target/aarch64/sve/acle/asm/expa_f16.c: Add streaming mode
+ 	test.
+ 	* gcc.target/aarch64/sve/acle/asm/expa_f32.c: Likewise.
+ 	* gcc.target/aarch64/sve/acle/asm/expa_f64.c: Likewise.
+ 	* lib/target-supports.exp (sve_ext): Add ssve-fexpa support test.
+ 	* g++.target/aarch64/sve/aarch64-ssve.exp (GCC target pragma):
+ 	Add ssve-fexpa.
+ 	(streaming_ok): Add svexpa.
+ 	(nonstreaming_only) Remove svexpa.
+ 
+ 2026-06-08  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	* lib/target-supports.exp (exts): Add dg conditions for ssve-bitperm.
+ 	* g++.target/aarch64/sve/aarch64-ssve.exp: Update test for ssve-bitperm.
+ 	* gcc.target/aarch64/pragma_cpp_predefs_5.c: Update test.
+ 	* gcc.target/aarch64/sve2/acle/asm/bdep_u16.c: Update for ssve-bitperm.
+ 	* gcc.target/aarch64/sve2/acle/asm/bdep_u32.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/bdep_u64.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/bdep_u8.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/bext_u16.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/bext_u32.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/bext_u64.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/bext_u8.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/bgrp_u16.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/bgrp_u32.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/bgrp_u64.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/bgrp_u8.c: Likewise.
+ 	* gcc.target/aarch64/sme2/acle-asm/bdep_u16.c: Likewise.
+ 	* gcc.target/aarch64/sme2/acle-asm/bdep_u32.c: Likewise.
+ 	* gcc.target/aarch64/sme2/acle-asm/bdep_u64.c: Likewise.
+ 	* gcc.target/aarch64/sme2/acle-asm/bdep_u8.c: Likewise.
+ 	* gcc.target/aarch64/sme2/acle-asm/bext_u16.c: Likewise.
+ 	* gcc.target/aarch64/sme2/acle-asm/bext_u32.c: Likewise.
+ 	* gcc.target/aarch64/sme2/acle-asm/bext_u64.c: Likewise.
+ 	* gcc.target/aarch64/sme2/acle-asm/bext_u8.c: Likewise.
+ 	* gcc.target/aarch64/sme2/acle-asm/bgrp_u16.c: Likewise.
+ 	* gcc.target/aarch64/sme2/acle-asm/bgrp_u32.c: Likewise.
+ 	* gcc.target/aarch64/sme2/acle-asm/bgrp_u64.c: Likewise.
+ 	* gcc.target/aarch64/sme2/acle-asm/bgrp_u8.c: Likewise.
+ 
+ 2026-06-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/125668
+ 	* gcc.dg/pr125668.c: New testcase.
+ 
+ 2026-06-08  Richard Sandiford  <rdsandiford@googlemail.com>
+ 
+ 	PR tree-optimization/125653
+ 	* gcc.dg/torture/pr125653.c: New test.
+ 
+ 2026-06-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/125652
+ 	* gcc.dg/torture/pr125652.c: New testcase.
+ 
+ 2026-06-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/125646
+ 	* gcc.dg/vect/pr125646.c: New testcase.
+ 
+ 2026-06-08  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 
+ 	* g++.dg/modules/test-p1689.py: Make arrays have predictable
+ 	order.
+ 
+ 2026-06-08  Haochen Jiang  <haochen.jiang@intel.com>
+ 
+ 	* g++.dg/modules/modules.exp (module_cmi_p): Add std parameter
+ 	and include it in test report.  Update call site.
+ 	* lib/lto.exp (lto_handle_diagnostics_for_file): Add optstr
+ 	parameter and append it to the test report.
+ 	(lto_handle_diagnostics): Add optstr parameter.
+ 	(lto-link-and-maybe-run): Update lto_handle_diagnostics call site.
+ 
+ 2026-06-08  Naveen  <naveen.siddegowda@oss.qualcomm.com>
+ 
+ 	* gcc.dg/tree-ssa/pr118680.c: New test.
+ 	* gcc.dg/vect/pr113281-5.c: Drop MIN_EXPR and MAX_EXPR narrowing
+ 	dump checks that are optimized away before vectorization.
+ 
+ 2026-06-08  Zhou Qiankang  <wszqkzqk@qq.com>
+ 
+ 	PR c++/125642
+ 	* g++.dg/pr125642.C: New test.
+ 
+ 2026-06-07  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125535
+ 	* gfortran.dg/implied_do_alloc_comp_1.f90: New test.
+ 
+ 2026-06-07  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125534
+ 	* gfortran.dg/pdt_array_alloc_1.f90: New test.
+ 
+ 2026-06-07  Richard Sandiford  <rdsandiford@googlemail.com>
+ 
+ 	* lib/gcc-dg.exp (dg-final): Add check_function_bodies options
+ 	for check-function-bodies directives.
+ 	* g++.target/i386/cf_check-3.C: Remove explicit
+ 	{ dg-add-options check_function_bodies }.
+ 	* g++.target/i386/cf_check-4.C: Likewise.
+ 	* g++.target/i386/memset-pr101366-1.C: Likewise.
+ 	* g++.target/i386/memset-pr101366-2.C: Likewise.
+ 	* g++.target/i386/memset-pr108585-1a.C: Likewise.
+ 	* g++.target/i386/memset-pr108585-1b.C: Likewise.
+ 	* g++.target/i386/memset-pr118276-1a.C: Likewise.
+ 	* g++.target/i386/memset-pr118276-1b.C: Likewise.
+ 	* g++.target/i386/memset-pr118276-1c.C: Likewise.
+ 	* gcc.target/i386/20040112-1.c: Likewise.
+ 	* gcc.target/i386/builtin-copysign-2.c: Likewise.
+ 	* gcc.target/i386/builtin-copysign-3.c: Likewise.
+ 	* gcc.target/i386/builtin-copysign-4.c: Likewise.
+ 	* gcc.target/i386/builtin-copysign-5.c: Likewise.
+ 	* gcc.target/i386/builtin-copysign-6.c: Likewise.
+ 	* gcc.target/i386/builtin-copysign-7.c: Likewise.
+ 	* gcc.target/i386/builtin-copysign-8a.c: Likewise.
+ 	* gcc.target/i386/builtin-copysign-8b.c: Likewise.
+ 	* gcc.target/i386/builtin-fabs-1.c: Likewise.
+ 	* gcc.target/i386/builtin-memmove-10.c: Likewise.
+ 	* gcc.target/i386/builtin-memmove-11a.c: Likewise.
+ 	* gcc.target/i386/builtin-memmove-11b.c: Likewise.
+ 	* gcc.target/i386/builtin-memmove-11c.c: Likewise.
+ 	* gcc.target/i386/builtin-memmove-12.c: Likewise.
+ 	* gcc.target/i386/builtin-memmove-13.c: Likewise.
+ 	* gcc.target/i386/builtin-memmove-14.c: Likewise.
+ 	* gcc.target/i386/builtin-memmove-15.c: Likewise.
+ 	* gcc.target/i386/builtin-memmove-1a.c: Likewise.
+ 	* gcc.target/i386/builtin-memmove-1b.c: Likewise.
+ 	* gcc.target/i386/builtin-memmove-1c.c: Likewise.
+ 	* gcc.target/i386/builtin-memmove-1d.c: Likewise.
+ 	* gcc.target/i386/builtin-memmove-2a.c: Likewise.
+ 	* gcc.target/i386/builtin-memmove-2b.c: Likewise.
+ 	* gcc.target/i386/builtin-memmove-2c.c: Likewise.
+ 	* gcc.target/i386/builtin-memmove-2d.c: Likewise.
+ 	* gcc.target/i386/builtin-memmove-3a.c: Likewise.
+ 	* gcc.target/i386/builtin-memmove-3b.c: Likewise.
+ 	* gcc.target/i386/builtin-memmove-3c.c: Likewise.
+ 	* gcc.target/i386/builtin-memmove-4a.c: Likewise.
+ 	* gcc.target/i386/builtin-memmove-4b.c: Likewise.
+ 	* gcc.target/i386/builtin-memmove-4c.c: Likewise.
+ 	* gcc.target/i386/builtin-memmove-5a.c: Likewise.
+ 	* gcc.target/i386/builtin-memmove-5b.c: Likewise.
+ 	* gcc.target/i386/builtin-memmove-5c.c: Likewise.
+ 	* gcc.target/i386/builtin-memmove-6.c: Likewise.
+ 	* gcc.target/i386/builtin-memmove-7.c: Likewise.
+ 	* gcc.target/i386/builtin-memmove-8.c: Likewise.
+ 	* gcc.target/i386/builtin-memmove-9.c: Likewise.
+ 	* gcc.target/i386/cf_check-11.c: Likewise.
+ 	* gcc.target/i386/cf_check-7.c: Likewise.
+ 	* gcc.target/i386/memcpy-pr120683-1.c: Likewise.
+ 	* gcc.target/i386/memcpy-pr120683-2.c: Likewise.
+ 	* gcc.target/i386/memcpy-pr120683-3.c: Likewise.
+ 	* gcc.target/i386/memcpy-pr120683-4.c: Likewise.
+ 	* gcc.target/i386/memcpy-pr120683-5.c: Likewise.
+ 	* gcc.target/i386/memcpy-pr120683-6.c: Likewise.
+ 	* gcc.target/i386/memcpy-pr120683-7.c: Likewise.
+ 	* gcc.target/i386/memcpy-strategy-12.c: Likewise.
+ 	* gcc.target/i386/memset-pr120683-1.c: Likewise.
+ 	* gcc.target/i386/memset-pr120683-10.c: Likewise.
+ 	* gcc.target/i386/memset-pr120683-11.c: Likewise.
+ 	* gcc.target/i386/memset-pr120683-12.c: Likewise.
+ 	* gcc.target/i386/memset-pr120683-13.c: Likewise.
+ 	* gcc.target/i386/memset-pr120683-14.c: Likewise.
+ 	* gcc.target/i386/memset-pr120683-15.c: Likewise.
+ 	* gcc.target/i386/memset-pr120683-16.c: Likewise.
+ 	* gcc.target/i386/memset-pr120683-17.c: Likewise.
+ 	* gcc.target/i386/memset-pr120683-18.c: Likewise.
+ 	* gcc.target/i386/memset-pr120683-19.c: Likewise.
+ 	* gcc.target/i386/memset-pr120683-2.c: Likewise.
+ 	* gcc.target/i386/memset-pr120683-20.c: Likewise.
+ 	* gcc.target/i386/memset-pr120683-21.c: Likewise.
+ 	* gcc.target/i386/memset-pr120683-22.c: Likewise.
+ 	* gcc.target/i386/memset-pr120683-23.c: Likewise.
+ 	* gcc.target/i386/memset-pr120683-3.c: Likewise.
+ 	* gcc.target/i386/memset-pr120683-4.c: Likewise.
+ 	* gcc.target/i386/memset-pr120683-5.c: Likewise.
+ 	* gcc.target/i386/memset-pr120683-6.c: Likewise.
+ 	* gcc.target/i386/memset-pr120683-7.c: Likewise.
+ 	* gcc.target/i386/memset-pr120683-8.c: Likewise.
+ 	* gcc.target/i386/memset-pr120683-9.c: Likewise.
+ 	* gcc.target/i386/memset-pr70308-1a.c: Likewise.
+ 	* gcc.target/i386/memset-pr70308-1b.c: Likewise.
+ 	* gcc.target/i386/memset-strategy-10.c: Likewise.
+ 	* gcc.target/i386/memset-strategy-13.c: Likewise.
+ 	* gcc.target/i386/memset-strategy-25.c: Likewise.
+ 	* gcc.target/i386/memset-strategy-28.c: Likewise.
+ 	* gcc.target/i386/memset-strategy-29.c: Likewise.
+ 	* gcc.target/i386/memset-strategy-30.c: Likewise.
+ 	* gcc.target/i386/pr111673.c: Likewise.
+ 	* gcc.target/i386/pr120936-1.c: Likewise.
+ 	* gcc.target/i386/pr120936-11.c: Likewise.
+ 	* gcc.target/i386/pr120936-2.c: Likewise.
+ 	* gcc.target/i386/pr120936-4.c: Likewise.
+ 	* gcc.target/i386/pr120936-5.c: Likewise.
+ 	* gcc.target/i386/pr120936-9.c: Likewise.
+ 	* gcc.target/i386/pr122343-1a.c: Likewise.
+ 	* gcc.target/i386/pr122343-1b.c: Likewise.
+ 	* gcc.target/i386/pr122343-2a.c: Likewise.
+ 	* gcc.target/i386/pr122343-2b.c: Likewise.
+ 	* gcc.target/i386/pr122343-3.c: Likewise.
+ 	* gcc.target/i386/pr122343-4a.c: Likewise.
+ 	* gcc.target/i386/pr122343-4b.c: Likewise.
+ 	* gcc.target/i386/pr122343-5a.c: Likewise.
+ 	* gcc.target/i386/pr122343-5b.c: Likewise.
+ 	* gcc.target/i386/pr122343-6a.c: Likewise.
+ 	* gcc.target/i386/pr122343-6b.c: Likewise.
+ 	* gcc.target/i386/pr122343-7.c: Likewise.
+ 	* gcc.target/i386/pr122675-1.c: Likewise.
+ 	* gcc.target/i386/pr125100-4.c: Likewise.
+ 	* gcc.target/i386/pr125355-2.c: Likewise.
+ 	* gcc.target/i386/pr125355.c: Likewise.
+ 	* gcc.target/i386/pr82142a.c: Likewise.
+ 	* gcc.target/i386/pr82142b.c: Likewise.
+ 	* gcc.target/i386/pr92080-17.c: Likewise.
+ 
+ 2026-06-07  Paul Thomas  <pault@gcc.gnu.org>
+ 	    Claude Sonnet 4.6  <noreply@anthropic.com>
+ 
+ 	PR fortran/121379
+ 	* gfortran.dg/pdt_59.f03: Add module attribute as required.
+ 	* gfortran.dg/pr87907.f90: Ditto.
+ 	* gfortran.dg/pr93461.f90: Ditto.
+ 	* gfortran.dg/submodule_10.f08: Ditto.
+ 	* gfortran.dg/submodule_33.f08: Ditto.
+ 	* gfortran.dg/submodule_36.f90: New test.
+ 	* gfortran.dg/submodule_37.f90: Add module attribute.
+ 
+ 2026-06-07  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/125612
+ 	* gcc.dg/tree-ssa/pr125612-1.c: New test.
+ 
+ 2026-06-07  Kwok Cheung Yeung  <kcyeung@baylibre.com>
+ 	    Andrew Stubbs   <ams@baylibre.com>
+ 	    Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	* gfortran.dg/gomp/target-update-iterators-1.f90: New.
+ 	* gfortran.dg/gomp/target-update-iterators-2.f90: New.
+ 	* gfortran.dg/gomp/target-update-iterators-3.f90: New.
+ 
+ 2026-06-07  Kwok Cheung Yeung  <kcyeung@baylibre.com>
+ 	    Andrew Stubbs  <ams@baylibre.com>
+ 	    Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	* gfortran.dg/gomp/target-map-iterators-1.f90: New.
+ 	* gfortran.dg/gomp/target-map-iterators-2.f90: New.
+ 	* gfortran.dg/gomp/target-map-iterators-3.f90: New.
+ 	* gfortran.dg/gomp/target-map-iterators-4.f90: New.
+ 	* gfortran.dg/gomp/target-map-iterators-6.f90: New.
+ 
+ 2026-06-06  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/125606
+ 	* gfortran.dg/loc_3.f90: New test.
+ 
+ 2026-06-06  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	* gfortran.dg/do_concurrent_assoc_iter_1.f90: New test.
+ 
+ 2026-06-06  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125531
+ 	* gfortran.dg/associate_infer_program_type.f90: New test.
+ 
+ 2026-06-06  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* g++.dg/asan/deep-thread-stack-1.C: Omit duplicate libraries
+ 	for Darwin.
+ 
+ 2026-06-06  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* gcc.dg/analyzer/mkdtemp-1.c: Add unistd header.
+ 	* gcc.dg/analyzer/mkstemps-1.c: Likewise.
+ 	* gcc.dg/analyzer/mktemp-1.c: Handle deprecation warnings.
+ 
+ 2026-06-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/125611
+ 	* gcc.target/i386/ssse3-pr125611.c: New test.
+ 
+ 2026-06-05  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	* c-c++-common/gomp/target-map-iterators-2.c: Don't expect warnings
+ 	about unused iterator variables.
+ 	* c-c++-common/gomp/target-update-iterators-2.c: Likewise.
+ 
+ 2026-06-05  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* cobol.dg/group2/DISPLAY_IBM-formatted_COMP-1_and_COMP-2.cob:
+ 	Tests for "DISPLAY 1.23" as ".123 01".
+ 	* cobol.dg/group2/DISPLAY_IBM-formatted_COMP-1_and_COMP-2.out:
+ 	Likewise.
+ 
+ 2026-06-05  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/125501
+ 	* gcc.dg/pr125501.c: New.
+ 
+ 2026-06-05  Robert Dubner  <rdubner@symas.com>
+ 
+ 	PR cobol/125616
+ 	* cobol.dg/group2/DISPLAY_IBM-formatted_COMP-1_and_COMP-2.cob: New test.
+ 	* cobol.dg/group2/DISPLAY_IBM-formatted_COMP-1_and_COMP-2.out: New test.
+ 
+ 2026-06-05  Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
+ 
+ 	PR rtl-optimization/124713
+ 	* gcc.target/aarch64/pr124713.c: New test.
+ 
+ 2026-06-05  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	PR target/125538
+ 	* gcc.target/aarch64/sve/vec_init_5.c: Add new 8/16-bit testcases.
+ 	* gcc.target/aarch64/vec-init-23.c: Likewise.
+ 	* gcc.target/aarch64/pr125538.c: New test.
+ 
+ 2026-06-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* c-c++-common/builtin-bswapg-2.c: Add further enum related tests.
+ 	* c-c++-common/builtin-bitreverseg-2.c: Likewise.
+ 	* c-c++-common/pr111309-2.c: Likewise.
+ 	* c-c++-common/pr111309-3.c: New test.
+ 
+ 2026-06-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/125602
+ 	* gcc.dg/torture/pr125602.c: New testcase.
+ 
+ 2026-06-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gcc.dg/bitint-137.c: New test.
+ 
+ 2026-06-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/122731
+ 	* c-c++-common/builtin-bswapg-1.c: New test.
+ 	* c-c++-common/builtin-bswapg-2.c: New test.
+ 	* c-c++-common/builtin-bswapg-3.c: New test.
+ 	* c-c++-common/builtin-bitreverseg-1.c: New test.
+ 	* c-c++-common/builtin-bitreverseg-2.c: New test.
+ 
+ 2026-06-05  Richard Sandiford  <rdsandiford@googlemail.com>
+ 
+ 	PR tree-optimization/125599
+ 	* g++.dg/torture/pr125599.C: New test.
+ 
+ 2026-06-04  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-06-04  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125529
+ 	* gfortran.dg/do_concurrent_assoc_default_none.f90: New test.
+ 
+ 2026-06-04  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125528
+ 	* gfortran.dg/associate_80.f90: New test.
+ 
+ 2026-06-04  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/125575
+ 	PR c++/98524
+ 	* g++.dg/cpp1y/var-templ90.C: New test.
+ 	* g++.dg/cpp1y/var-templ91.C: New test.
+ 	* g++.dg/cpp1y/var-templ92.C: New test.
+ 	* g++.dg/cpp1y/var-templ93.C: New test.
+ 
+ 2026-06-04  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	PR c/125072
+ 	* gcc.dg/pr125072.c: New test.
+ 	* gcc.dg/ubsan/pointer-counted-by-bounds-124230-union.c: Avoid heap
+ 	corruption.
+ 	* gcc.dg/ubsan/pointer-counted-by-bounds-124230.c: Likewise.
+ 
+ 2026-06-04  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/60576
+ 	PR fortran/60576
+ 	* gfortran.dg/asan/assumed_rank_26.f90: New test covering both
+ 	assumed-rank and fixed-rank type actuals passed to a CLASS
+ 	assumed-rank dummy.
+ 
+ 2026-06-04  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* cobol.dg/group2/FUNCTION_TRIM_with_extra_characters.cob: New test.
+ 	* cobol.dg/group2/FUNCTION_TRIM_with_extra_characters.out: New test.
+ 
+ 2026-06-04  Xavier Del Campo Romero  <xdelcampo@symas.com>
+ 
+ 	* cobol.dg/group2/cbltypes.cpy: Removed.
+ 
+ 2026-06-04  Paul Thomas  <pault@gcc.gnu.org>
+ 	    Claude Sonnet 4.6  <noreply@anthropic.com>
+ 
+ 	PR fortran/121204
+ 	* gfortran.dg/submodule_38.f90: New test.
+ 
+ 2026-06-04  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/93424
+ 	* gfortran.dg/submodule_37.f90: New test.
+ 
+ 2026-06-04  Raphael Zinsly  <raphael.zinsly@oss.qualcomm.com>
+ 	    Jeff Law  <jeffrey.law@oss.qualcomm.com>
+ 
+ 	PR target/125387
+ 	* gcc.target/riscv/pr125387.c: New test.
+ 
+ 2026-06-04  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
+ 
+ 	* lib/target-supports.exp
+ 	(check_effective_target_powerpc_future_compile_ok): New target support
+ 	procedure.
+ 	(check_effective_target_powerpc_future_assemble_ok): Likewise.
+ 	(check_powerpc_future_hw_available): Likewise.
+ 	(is-effective-target): Register powerpc_future_hw.
+ 	(is-effective-target-keyword): Likewise.
+ 
  2026-06-04  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
  
  	PR target/106895
diff -Nrcpad gcc-17-20260607/gcc/testsuite/algol68/compile/error-attr-format-token-1.a68 gcc-17-20260614/gcc/testsuite/algol68/compile/error-attr-format-token-1.a68
*** gcc-17-20260607/gcc/testsuite/algol68/compile/error-attr-format-token-1.a68	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/algol68/compile/error-attr-format-token-1.a68	Sun Jun 14 22:32:09 2026
***************
*** 0 ****
--- 1,5 ----
+ begin mode Set = struct (string class, ref[]int elems);
+       Set empty_set
+          = ("", heap[1:0]Elems); { dg-error "collateral clause" }
+       skip
+ end
diff -Nrcpad gcc-17-20260607/gcc/testsuite/algol68/execute/formula-3.a68 gcc-17-20260614/gcc/testsuite/algol68/execute/formula-3.a68
*** gcc-17-20260607/gcc/testsuite/algol68/execute/formula-3.a68	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/algol68/execute/formula-3.a68	Sun Jun 14 22:32:09 2026
***************
*** 0 ****
--- 1,11 ----
+ { This tests that names are passed properly to dyadic operators. }
+ 
+ begin mode Foo = struct (int i,j);
+       Foo f;
+       i'f := 10;
+       j'f := 20;
+       op +:= = (ref Foo f, int i) int: (i'f +:= i; j'f +:= i; i + 1);
+       assert ((f +:= 1) = 2);
+       assert (i'f = 11);
+       assert (j'f = 21)
+ end
diff -Nrcpad gcc-17-20260607/gcc/testsuite/algol68/execute/formula-4.a68 gcc-17-20260614/gcc/testsuite/algol68/execute/formula-4.a68
*** gcc-17-20260607/gcc/testsuite/algol68/execute/formula-4.a68	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/algol68/execute/formula-4.a68	Sun Jun 14 22:32:09 2026
***************
*** 0 ****
--- 1,11 ----
+ { This tests that names are passed properly to dyadic operators. }
+ 
+ begin mode Foo = struct (int i,j);
+       Foo f;
+       i'f := 10;
+       j'f := 20;
+       op +=: = (int i, ref Foo f) int: (i'f +:= i; j'f +:= i; i + 1);
+       assert ((1 +=: f) = 2);
+       assert (i'f = 11);
+       assert (j'f = 21)
+ end
diff -Nrcpad gcc-17-20260607/gcc/testsuite/algol68/execute/formula-5.a68 gcc-17-20260614/gcc/testsuite/algol68/execute/formula-5.a68
*** gcc-17-20260607/gcc/testsuite/algol68/execute/formula-5.a68	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/algol68/execute/formula-5.a68	Sun Jun 14 22:32:09 2026
***************
*** 0 ****
--- 1,11 ----
+ { This tests that names are passed properly to monadic operators. }
+ 
+ begin mode Foo = struct (int i,j);
+       Foo f;
+       i'f := 10;
+       j'f := 20;
+       op + = (ref Foo f) int: (i'f +:= 2; j'f +:= 2; i'f + j'f);
+       assert (+f = 34);
+       assert (i'f = 12);
+       assert (j'f = 22)
+ end
diff -Nrcpad gcc-17-20260607/gcc/testsuite/algol68/execute/gen-in-constructor-1.a68 gcc-17-20260614/gcc/testsuite/algol68/execute/gen-in-constructor-1.a68
*** gcc-17-20260607/gcc/testsuite/algol68/execute/gen-in-constructor-1.a68	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/algol68/execute/gen-in-constructor-1.a68	Sun Jun 14 22:32:09 2026
***************
*** 0 ****
--- 1,7 ----
+ begin mode Foo = struct (ref[]int lala, bool sign);
+       Foo zero = (heap[3:10]int, true);
+       assert(sign'zero = true);
+       assert(UPB lala'zero = 10);
+       assert(LWB lala'zero = 3);
+       skip
+ end
diff -Nrcpad gcc-17-20260607/gcc/testsuite/algol68/execute/gen-in-constructor-2.a68 gcc-17-20260614/gcc/testsuite/algol68/execute/gen-in-constructor-2.a68
*** gcc-17-20260607/gcc/testsuite/algol68/execute/gen-in-constructor-2.a68	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/algol68/execute/gen-in-constructor-2.a68	Sun Jun 14 22:32:09 2026
***************
*** 0 ****
--- 1,7 ----
+ begin mode Foo = struct (bool sign, ref[]int lala);
+       Foo zero = (false, heap[0:-1]int);
+       assert(sign'zero = false);
+       assert(UPB lala'zero = -1);
+       assert(LWB lala'zero = 0);
+       skip
+ end
diff -Nrcpad gcc-17-20260607/gcc/testsuite/algol68/execute/modules/module1.a68 gcc-17-20260614/gcc/testsuite/algol68/execute/modules/module1.a68
*** gcc-17-20260607/gcc/testsuite/algol68/execute/modules/module1.a68	Sun Jun  7 22:32:08 2026
--- gcc-17-20260614/gcc/testsuite/algol68/execute/modules/module1.a68	Sun Jun 14 22:32:09 2026
*************** def
*** 3,8 ****
--- 3,10 ----
      pub mode MyInt = int, MyOtherInt = int;
      pub int beast_number := 666, angelic_number := 777;
      pub string who = "jemarch", whoelse = "pietro";
+     pub mode SomeStruct = struct (int a,b);
+     pub op % = (SomeStruct a,b) SomeStruct: (10, 20);
      puts ("Hello from module'n")
  postlude
      puts ("Bye from module'n")
diff -Nrcpad gcc-17-20260607/gcc/testsuite/algol68/execute/modules/program-1.a68 gcc-17-20260614/gcc/testsuite/algol68/execute/modules/program-1.a68
*** gcc-17-20260607/gcc/testsuite/algol68/execute/modules/program-1.a68	Sun Jun  7 22:32:08 2026
--- gcc-17-20260614/gcc/testsuite/algol68/execute/modules/program-1.a68	Sun Jun 14 22:32:09 2026
*************** begin string je = access Module1 begin w
*** 15,20 ****
--- 15,21 ----
        assert (aa = "jemarch");
        assert (bb = "jemarch");
        assert (cc = "jemarch");
+       access Module1 (SomeStruct u,v; SomeStruct z = u%v; assert (a'z = 10 AND b'z = 20));
        access Module1 to 1 do assert (who = "jemarch" AND whoelse = "pietro") od;
        access Module1 (assert (beast_number = 666 AND angelic_number = 777));
        access Module1 (MyInt a = 1; MyOtherInt b = 1; assert (a + b = 2))
diff -Nrcpad gcc-17-20260607/gcc/testsuite/c-c++-common/builtin-bitreverseg-3.c gcc-17-20260614/gcc/testsuite/c-c++-common/builtin-bitreverseg-3.c
*** gcc-17-20260607/gcc/testsuite/c-c++-common/builtin-bitreverseg-3.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/c-c++-common/builtin-bitreverseg-3.c	Sun Jun 14 22:32:09 2026
***************
*** 0 ****
--- 1,10 ----
+ /* PR c/125629 */
+ /* { dg-do compile } */
+ 
+ int c;
+ 
+ unsigned
+ foo ()
+ {
+   return __builtin_bitreverseg (c ? : 0u);
+ }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/c-c++-common/builtin-bitreverseg-4.c gcc-17-20260614/gcc/testsuite/c-c++-common/builtin-bitreverseg-4.c
*** gcc-17-20260607/gcc/testsuite/c-c++-common/builtin-bitreverseg-4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/c-c++-common/builtin-bitreverseg-4.c	Sun Jun 14 22:32:09 2026
***************
*** 0 ****
--- 1,8 ----
+ /* PR c/125694 */
+ /* { dg-do compile } */
+ 
+ void
+ foo ()
+ {
+   __builtin_bitreverseg (__builtin_bitreverseg ());	/* { dg-error "wrong number of arguments to '__builtin_bitreverseg'" } */
+ }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/c-c++-common/builtin-bswapg-4.c gcc-17-20260614/gcc/testsuite/c-c++-common/builtin-bswapg-4.c
*** gcc-17-20260607/gcc/testsuite/c-c++-common/builtin-bswapg-4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/c-c++-common/builtin-bswapg-4.c	Sun Jun 14 22:32:09 2026
***************
*** 0 ****
--- 1,10 ----
+ /* PR c/125629 */
+ /* { dg-do compile } */
+ 
+ int c;
+ 
+ unsigned
+ foo ()
+ {
+   return __builtin_bswapg (c ? : 0u);
+ }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/c-c++-common/builtin-bswapg-5.c gcc-17-20260614/gcc/testsuite/c-c++-common/builtin-bswapg-5.c
*** gcc-17-20260607/gcc/testsuite/c-c++-common/builtin-bswapg-5.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/c-c++-common/builtin-bswapg-5.c	Sun Jun 14 22:32:09 2026
***************
*** 0 ****
--- 1,8 ----
+ /* PR c/125694 */
+ /* { dg-do compile } */
+ 
+ void
+ foo ()
+ {
+   __builtin_bswapg (__builtin_bswapg ());		/* { dg-error "wrong number of arguments to '__builtin_bswapg'" } */
+ }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/c-c++-common/tls-attr-common.c gcc-17-20260614/gcc/testsuite/c-c++-common/tls-attr-common.c
*** gcc-17-20260607/gcc/testsuite/c-c++-common/tls-attr-common.c	Sun Jun  7 22:32:08 2026
--- gcc-17-20260614/gcc/testsuite/c-c++-common/tls-attr-common.c	Sun Jun 14 22:32:09 2026
*************** foo (void)
*** 17,20 ****
  }
  
  /* tls_model should be tls-initial-exec due to common attribute.  */
! /* { dg-final { scan-ipa-dump "Varpool flags: tls-initial-exec" "whole-program" } } */
--- 17,22 ----
  }
  
  /* tls_model should be tls-initial-exec due to common attribute.  */
! /* { dg-final { scan-ipa-dump "Varpool flags: tls-emulated" "whole-program" { target { ! tls_native } } } } */
! /* { dg-final { scan-ipa-dump "Varpool flags: tls-global-dynamic" "whole-program" { target { ! tls_native } } } } */
! /* { dg-final { scan-ipa-dump "Varpool flags: tls-initial-exec" "whole-program" { target tls_native } } } */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/c-c++-common/tls-attr-le-pic.c gcc-17-20260614/gcc/testsuite/c-c++-common/tls-attr-le-pic.c
*** gcc-17-20260607/gcc/testsuite/c-c++-common/tls-attr-le-pic.c	Sun Jun  7 22:32:08 2026
--- gcc-17-20260614/gcc/testsuite/c-c++-common/tls-attr-le-pic.c	Sun Jun 14 22:32:09 2026
*************** foo (void)
*** 12,15 ****
--- 12,16 ----
  }
  
  /* tls_model should be local-exec due to tls_model attribute.  */
+ /* { dg-final { scan-ipa-dump "Varpool flags: initialized tls-emulated" "whole-program" { target { ! tls_native } } } } */
  /* { dg-final { scan-ipa-dump "Varpool flags: tls-local-exec" "whole-program" } } */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/c-c++-common/tls-attr-le-pie.c gcc-17-20260614/gcc/testsuite/c-c++-common/tls-attr-le-pie.c
*** gcc-17-20260607/gcc/testsuite/c-c++-common/tls-attr-le-pie.c	Sun Jun  7 22:32:08 2026
--- gcc-17-20260614/gcc/testsuite/c-c++-common/tls-attr-le-pie.c	Sun Jun 14 22:32:09 2026
*************** ppfoo (void)
*** 12,15 ****
  }
  
  /* tls_model should be local-exec due to -fPIE.  */
! /* { dg-final { scan-ipa-dump "Varpool flags: initialized tls-local-exec" "whole-program" } } */
--- 12,17 ----
  }
  
  /* tls_model should be local-exec due to -fPIE.  */
! /* { dg-final { scan-ipa-dump "Varpool flags: initialized tls-emulated" "whole-program" { target { ! tls_native } } } } */
! /* { dg-final { scan-ipa-dump "Varpool flags: tls-local-exec" "whole-program" { target { ! tls_native } } } } */
! /* { dg-final { scan-ipa-dump "Varpool flags: initialized tls-local-exec" "whole-program" { target tls_native } } } */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/cobol.dg/group2/COMP-3_to_COMP-3__IN-PHASE__MOVES.cob gcc-17-20260614/gcc/testsuite/cobol.dg/group2/COMP-3_to_COMP-3__IN-PHASE__MOVES.cob
*** gcc-17-20260607/gcc/testsuite/cobol.dg/group2/COMP-3_to_COMP-3__IN-PHASE__MOVES.cob	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/cobol.dg/group2/COMP-3_to_COMP-3__IN-PHASE__MOVES.cob	Sun Jun 14 22:32:09 2026
***************
*** 0 ****
--- 1,72 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/COMP-3_to_COMP-3__IN-PHASE__MOVES.out" }
+         identification              division.
+         program-id.                 prog.
+         data                        division.
+         working-storage             section.
+         *> Test MOVE COMP-3 to COMP-3 where the source and destination are
+         *> "in-phase" with regard to decimal-point location.
+         *> Same-same
+         01 var11 pic   999v99 comp-3 value  123.45 .
+         01 var12 pic  s999v99 comp-3 value  123.45 .
+         01 var13 pic  s999v99 comp-3 value -123.45 .
+         01 var14 pic   999v9999 comp-3.
+         01 var15 pic  s999v9999 comp-3.
+         01 var16 pic  s999v9999 comp-3.
+         *>big-small to small-big 
+         01 var21 pic   9999v99 comp-3 value  1234.56 .
+         01 var22 pic  s9999v99 comp-3 value  1234.56 .
+         01 var23 pic  s9999v99 comp-3 value -1234.56 .
+         01 var24 pic   999v9999 comp-3.
+         01 var25 pic  s999v9999 comp-3.
+         01 var26 pic  s999v9999 comp-3.
+         *>small-big to big-small 
+         01 var31 pic    999v9999 comp-3 value  123.4567 .
+         01 var32 pic   s999v9999 comp-3 value  123.4567 .
+         01 var33 pic   s999v9999 comp-3 value -123.4567 .
+         01 var34 pic   9999v99 comp-3.
+         01 var35 pic  s9999v99 comp-3.
+         01 var36 pic  s9999v99 comp-3.
+         procedure                   division.
+            display "same-same"
+            move var11 to var14 var15 var16
+             display space var14 space "should be  123.4500"
+             display       var15 space "should be +123.4500"
+             display       var16 space "should be +123.4500"
+            move var12 to var14 var15 var16
+             display space var14 space "should be  123.4500"
+             display       var15 space "should be +123.4500"
+             display       var16 space "should be +123.4500"
+            move var13 to var14 var15 var16
+             display space var14 space "should be  123.4500"
+             display       var15 space "should be -123.4500"
+             display       var16 space "should be -123.4500"
+            display "big-small to small-big"
+            move var21 to var24 var25 var26
+             display space var24 space "should be  234.5600"
+             display       var25 space "should be +234.5600"
+             display       var26 space "should be +234.5600"
+            move var22 to var24 var25 var26
+             display space var24 space "should be  234.5600"
+             display       var25 space "should be +234.5600"
+             display       var26 space "should be +234.5600"
+            move var23 to var24 var25 var26
+             display space var24 space "should be  234.5600"
+             display       var25 space "should be -234.5600"
+             display       var26 space "should be -234.5600"
+            display "small-big to big-small"
+            move var31 to var34 var35 var36
+             display space var34 space "should be  0123.4500"
+             display       var35 space "should be +0123.4500"
+             display       var36 space "should be +0123.4500"
+            move var32 to var34 var35 var36
+             display space var34 space "should be  0123.4500"
+             display       var35 space "should be +0123.4500"
+             display       var36 space "should be +0123.4500"
+            move var33 to var34 var35 var36
+             display space var34 space "should be  0123.4500"
+             display       var35 space "should be -0123.4500"
+             display       var36 space "should be -0123.4500"
+             goback.
+         end program                 prog.
+ 
diff -Nrcpad gcc-17-20260607/gcc/testsuite/cobol.dg/group2/COMP-3_to_COMP-3__IN-PHASE__MOVES.out gcc-17-20260614/gcc/testsuite/cobol.dg/group2/COMP-3_to_COMP-3__IN-PHASE__MOVES.out
*** gcc-17-20260607/gcc/testsuite/cobol.dg/group2/COMP-3_to_COMP-3__IN-PHASE__MOVES.out	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/cobol.dg/group2/COMP-3_to_COMP-3__IN-PHASE__MOVES.out	Sun Jun 14 22:32:09 2026
***************
*** 0 ****
--- 1,31 ----
+ same-same
+  123.4500 should be  123.4500
+ +123.4500 should be +123.4500
+ +123.4500 should be +123.4500
+  123.4500 should be  123.4500
+ +123.4500 should be +123.4500
+ +123.4500 should be +123.4500
+  123.4500 should be  123.4500
+ -123.4500 should be -123.4500
+ -123.4500 should be -123.4500
+ big-small to small-big
+  234.5600 should be  234.5600
+ +234.5600 should be +234.5600
+ +234.5600 should be +234.5600
+  234.5600 should be  234.5600
+ +234.5600 should be +234.5600
+ +234.5600 should be +234.5600
+  234.5600 should be  234.5600
+ -234.5600 should be -234.5600
+ -234.5600 should be -234.5600
+ small-big to big-small
+  0123.45 should be  0123.4500
+ +0123.45 should be +0123.4500
+ +0123.45 should be +0123.4500
+  0123.45 should be  0123.4500
+ +0123.45 should be +0123.4500
+ +0123.45 should be +0123.4500
+  0123.45 should be  0123.4500
+ -0123.45 should be -0123.4500
+ -0123.45 should be -0123.4500
+ 
diff -Nrcpad gcc-17-20260607/gcc/testsuite/cobol.dg/group2/COMP-3_to_COMP-3__OUT-OF-PHASE__MOVES.cob gcc-17-20260614/gcc/testsuite/cobol.dg/group2/COMP-3_to_COMP-3__OUT-OF-PHASE__MOVES.cob
*** gcc-17-20260607/gcc/testsuite/cobol.dg/group2/COMP-3_to_COMP-3__OUT-OF-PHASE__MOVES.cob	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/cobol.dg/group2/COMP-3_to_COMP-3__OUT-OF-PHASE__MOVES.cob	Sun Jun 14 22:32:09 2026
***************
*** 0 ****
--- 1,50 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/COMP-3_to_COMP-3__OUT-OF-PHASE__MOVES.out" }
+         identification              division.
+         program-id.                 prog.
+         data                        division.
+         working-storage             section.
+         *> Test MOVE COMP-3 to COMP-3 where the source and destination are
+         *> "out-of-phase" with regard to decimal-point location.
+         01 var11 pic  999v9(1) comp-3 value  123.4 .
+         01 var12 pic  999v9(3) comp-3 value  123.456 .
+         01 var13 pic  999v9(5) comp-3 value  123.45678 .
+         01 var14 pic  999v9(7) comp-3 value  123.4567898 .
+         01 var1t pic  999v9999   comp-3.
+         01 var21  pic  s999v9999  comp-3 value -123.4567.
+         01 var2t1 pic  s999v9(1) comp-3.
+         01 var2t2 pic  s999v9(3) comp-3.
+         01 var2t3 pic  s999v9(5) comp-3.
+         01 var2t4 pic  s999v9(7) comp-3.
+         01 var31 pic  9999v9(1) comp-3 value  9123.4 .
+         01 var32 pic  9999v9(3) comp-3 value  9123.456 .
+         01 var33 pic  9999v9(5) comp-3 value  9123.45678 .
+         01 var34 pic  9999v9(7) comp-3 value  9123.4567898 .
+         01 var3t pic  999v9999   comp-3.
+         01 var41  pic  s9999v9999  comp-3 value -9123.4567.
+         01 var4t1 pic  s999v9(1) comp-3.
+         01 var4t2 pic  s999v9(3) comp-3.
+         01 var4t3 pic  s999v9(5) comp-3.
+         01 var4t4 pic  s999v9(7) comp-3.
+         procedure                   division.
+             move var11 to var1t display var1t " should be 123.4000"
+             move var12 to var1t display var1t " should be 123.4560"
+             move var13 to var1t display var1t " should be 123.4567"
+             move var14 to var1t display var1t " should be 123.4567"
+             move var21 to var2t1 var2t2 var2t3 var2t4
+             display var2t1 "       should be -123.4"
+             display var2t2 "     should be -123.456"
+             display var2t3 "   should be -123.45670"
+             display var2t4 " should be -123.4567000"
+             move var31 to var3t display var3t " should be 123.4000"
+             move var32 to var3t display var3t " should be 123.4560"
+             move var33 to var3t display var3t " should be 123.4567"
+             move var34 to var3t display var3t " should be 123.4567"
+             move var41 to var4t1 var4t2 var4t3 var4t4
+             display var4t1 "       should be -123.4"
+             display var4t2 "     should be -123.456"
+             display var4t3 "   should be -123.45670"
+             display var4t4 " should be -123.4567000"
+             goback.
+         end program                 prog.
+ 
diff -Nrcpad gcc-17-20260607/gcc/testsuite/cobol.dg/group2/COMP-3_to_COMP-3__OUT-OF-PHASE__MOVES.out gcc-17-20260614/gcc/testsuite/cobol.dg/group2/COMP-3_to_COMP-3__OUT-OF-PHASE__MOVES.out
*** gcc-17-20260607/gcc/testsuite/cobol.dg/group2/COMP-3_to_COMP-3__OUT-OF-PHASE__MOVES.out	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/cobol.dg/group2/COMP-3_to_COMP-3__OUT-OF-PHASE__MOVES.out	Sun Jun 14 22:32:09 2026
***************
*** 0 ****
--- 1,17 ----
+ 123.4000 should be 123.4000
+ 123.4560 should be 123.4560
+ 123.4567 should be 123.4567
+ 123.4567 should be 123.4567
+ -123.4       should be -123.4
+ -123.456     should be -123.456
+ -123.45670   should be -123.45670
+ -123.4567000 should be -123.4567000
+ 123.4000 should be 123.4000
+ 123.4560 should be 123.4560
+ 123.4567 should be 123.4567
+ 123.4567 should be 123.4567
+ -123.4       should be -123.4
+ -123.456     should be -123.456
+ -123.45670   should be -123.45670
+ -123.4567000 should be -123.4567000
+ 
diff -Nrcpad gcc-17-20260607/gcc/testsuite/cobol.dg/group2/COMP-3_to_COMP-3_size_error.cob gcc-17-20260614/gcc/testsuite/cobol.dg/group2/COMP-3_to_COMP-3_size_error.cob
*** gcc-17-20260607/gcc/testsuite/cobol.dg/group2/COMP-3_to_COMP-3_size_error.cob	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/cobol.dg/group2/COMP-3_to_COMP-3_size_error.cob	Sun Jun 14 22:32:09 2026
***************
*** 0 ****
--- 1,34 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/COMP-3_to_COMP-3_size_error.out" }
+         identification division.
+         program-id. onsize.
+         data division.
+         working-storage section.
+         01 var11 pic  99999 comp-3 value  12345.
+         01 var12 pic 999999 comp-3 value 123456.
+         01 var13 pic  999   comp-3             .
+         01 var14 pic 9999   comp-3             .
+         procedure       division.
+             display "test1: " with no advancing
+             compute var13 = var11
+                 ON SIZE ERROR Display "Proper size error"
+                 NOT ON SIZE ERROR Display "IMPROPER no error"
+                 end-compute
+             display "test2: " with no advancing
+             compute var14 = var11
+                 ON SIZE ERROR Display "Proper size error"
+                 NOT ON SIZE ERROR Display "IMPROPER no error"
+                 end-compute
+             display "test3: " with no advancing
+             compute var13 = var12
+                 ON SIZE ERROR Display "Proper size error"
+                 NOT ON SIZE ERROR Display "IMPROPER no error"
+                 end-compute
+             display "test4: " with no advancing
+             compute var14 = var12
+                 ON SIZE ERROR Display "Proper size error"
+                 NOT ON SIZE ERROR Display "IMPROPER no error"
+                 end-compute
+             goback.
+         end program onsize.
+ 
diff -Nrcpad gcc-17-20260607/gcc/testsuite/cobol.dg/group2/COMP-3_to_COMP-3_size_error.out gcc-17-20260614/gcc/testsuite/cobol.dg/group2/COMP-3_to_COMP-3_size_error.out
*** gcc-17-20260607/gcc/testsuite/cobol.dg/group2/COMP-3_to_COMP-3_size_error.out	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/cobol.dg/group2/COMP-3_to_COMP-3_size_error.out	Sun Jun 14 22:32:09 2026
***************
*** 0 ****
--- 1,5 ----
+ test1: Proper size error
+ test2: Proper size error
+ test3: Proper size error
+ test4: Proper size error
+ 
diff -Nrcpad gcc-17-20260607/gcc/testsuite/cobol.dg/group2/COMP-3_to_numeric-display_size_error.cob gcc-17-20260614/gcc/testsuite/cobol.dg/group2/COMP-3_to_numeric-display_size_error.cob
*** gcc-17-20260607/gcc/testsuite/cobol.dg/group2/COMP-3_to_numeric-display_size_error.cob	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/cobol.dg/group2/COMP-3_to_numeric-display_size_error.cob	Sun Jun 14 22:32:09 2026
***************
*** 0 ****
--- 1,34 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/COMP-3_to_numeric-display_size_error.out" }
+         identification division.
+         program-id. onsize.
+         data division.
+         working-storage section.
+         01 var11 pic  99999 comp-3 value  12345.
+         01 var12 pic 999999 comp-3 value 123456.
+         01 var13 pic  999   display            .
+         01 var14 pic 9999   display            .
+         procedure       division.
+             display "test1: " with no advancing
+             compute var13 = var11
+                 ON SIZE ERROR Display "Proper size error"
+                 NOT ON SIZE ERROR Display "IMPROPER no error"
+                 end-compute
+             display "test2: " with no advancing
+             compute var14 = var11
+                 ON SIZE ERROR Display "Proper size error"
+                 NOT ON SIZE ERROR Display "IMPROPER no error"
+                 end-compute
+             display "test3: " with no advancing
+             compute var13 = var12
+                 ON SIZE ERROR Display "Proper size error"
+                 NOT ON SIZE ERROR Display "IMPROPER no error"
+                 end-compute
+             display "test4: " with no advancing
+             compute var14 = var12
+                 ON SIZE ERROR Display "Proper size error"
+                 NOT ON SIZE ERROR Display "IMPROPER no error"
+                 end-compute
+             goback.
+         end program onsize.
+ 
diff -Nrcpad gcc-17-20260607/gcc/testsuite/cobol.dg/group2/COMP-3_to_numeric-display_size_error.out gcc-17-20260614/gcc/testsuite/cobol.dg/group2/COMP-3_to_numeric-display_size_error.out
*** gcc-17-20260607/gcc/testsuite/cobol.dg/group2/COMP-3_to_numeric-display_size_error.out	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/cobol.dg/group2/COMP-3_to_numeric-display_size_error.out	Sun Jun 14 22:32:09 2026
***************
*** 0 ****
--- 1,5 ----
+ test1: Proper size error
+ test2: Proper size error
+ test3: Proper size error
+ test4: Proper size error
+ 
diff -Nrcpad gcc-17-20260607/gcc/testsuite/cobol.dg/group2/Clear_negative_zero_after_truncated_MOVE.cob gcc-17-20260614/gcc/testsuite/cobol.dg/group2/Clear_negative_zero_after_truncated_MOVE.cob
*** gcc-17-20260607/gcc/testsuite/cobol.dg/group2/Clear_negative_zero_after_truncated_MOVE.cob	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/cobol.dg/group2/Clear_negative_zero_after_truncated_MOVE.cob	Sun Jun 14 22:32:09 2026
***************
*** 0 ****
--- 1,23 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/Clear_negative_zero_after_truncated_MOVE.out" }
+         identification division.
+         program-id. onsize.
+         data division.
+         working-storage section.
+         01 var11 pic s9999 value -1000.
+         01 var12 pic s999.
+         01 var21 pic s9999 comp-3 value -1000.
+         01 var22 pic s999  comp-3 .
+         procedure       division.
+             *> Make sure we don't create "-0000"
+             move    var21 to var22
+             display          var22 space function hex-of(var22)
+             move    var11 to var22
+             display          var22 space function hex-of(var22)
+             move    var11 to var12
+             display          var12 space ''''var12(3:1)''''
+             move    var21 to var12
+             display          var12 space ''''var12(3:1)''''
+             goback.
+         end program onsize.
+ 
diff -Nrcpad gcc-17-20260607/gcc/testsuite/cobol.dg/group2/Clear_negative_zero_after_truncated_MOVE.out gcc-17-20260614/gcc/testsuite/cobol.dg/group2/Clear_negative_zero_after_truncated_MOVE.out
*** gcc-17-20260607/gcc/testsuite/cobol.dg/group2/Clear_negative_zero_after_truncated_MOVE.out	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/cobol.dg/group2/Clear_negative_zero_after_truncated_MOVE.out	Sun Jun 14 22:32:09 2026
***************
*** 0 ****
--- 1,5 ----
+ +000 000C
+ +000 000C
+ +000 '0'
+ +000 '0'
+ 
diff -Nrcpad gcc-17-20260607/gcc/testsuite/cobol.dg/group2/MOVE_NumericDisplay_to_COMP-3.cob gcc-17-20260614/gcc/testsuite/cobol.dg/group2/MOVE_NumericDisplay_to_COMP-3.cob
*** gcc-17-20260607/gcc/testsuite/cobol.dg/group2/MOVE_NumericDisplay_to_COMP-3.cob	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/cobol.dg/group2/MOVE_NumericDisplay_to_COMP-3.cob	Sun Jun 14 22:32:09 2026
***************
*** 0 ****
--- 1,32 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/MOVE_NumericDisplay_to_COMP-3.out" }
+         identification              division.
+         program-id.                 prog.
+         data                        division.
+         working-storage             section.
+         01 var11    pic     9     value 1     .
+         01 var12    pic     99    value 12    .
+         01 var13    pic     999   value 123   .
+         01 var14    pic     9999  value 1234  .
+         01 var1t    pic     999v999 COMP-3.
+         01 var21    pic        s9v9  value   -1.2  .
+         01 var22    pic       s99v9  value   -12.3  .
+         01 var23    pic      s999v9  value   -123.4  .
+         01 var24    pic     s9999v9  value   -1234.5  .
+         01 var2t    pic      s999v999 COMP-3.
+         procedure                   division.
+             move var11 to var1t display var1t
+             move var12 to var1t display var1t
+             move var13 to var1t display var1t
+             move var14 to var1t display var1t
+             move var21 to var2t display var2t
+             move var22 to var2t display var2t
+             move var23 to var2t display var2t
+             move var24 to var2t display var2t
+             move var11 to var2t display var2t
+             move var12 to var2t display var2t
+             move var13 to var2t display var2t
+             move var14 to var2t display var2t
+             goback.
+         end program                 prog.
+ 
diff -Nrcpad gcc-17-20260607/gcc/testsuite/cobol.dg/group2/MOVE_NumericDisplay_to_COMP-3.out gcc-17-20260614/gcc/testsuite/cobol.dg/group2/MOVE_NumericDisplay_to_COMP-3.out
*** gcc-17-20260607/gcc/testsuite/cobol.dg/group2/MOVE_NumericDisplay_to_COMP-3.out	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/cobol.dg/group2/MOVE_NumericDisplay_to_COMP-3.out	Sun Jun 14 22:32:09 2026
***************
*** 0 ****
--- 1,13 ----
+ 001.000
+ 012.000
+ 123.000
+ 234.000
+ -001.200
+ -012.300
+ -123.400
+ -234.500
+ +001.000
+ +012.000
+ +123.000
+ +234.000
+ 
diff -Nrcpad gcc-17-20260607/gcc/testsuite/cobol.dg/group2/numeric-display_to_COMP-3_size_error.cob gcc-17-20260614/gcc/testsuite/cobol.dg/group2/numeric-display_to_COMP-3_size_error.cob
*** gcc-17-20260607/gcc/testsuite/cobol.dg/group2/numeric-display_to_COMP-3_size_error.cob	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/cobol.dg/group2/numeric-display_to_COMP-3_size_error.cob	Sun Jun 14 22:32:09 2026
***************
*** 0 ****
--- 1,34 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/numeric-display_to_COMP-3_size_error.out" }
+         identification division.
+         program-id. onsize.
+         data division.
+         working-storage section.
+         01 var11 pic  99999 display value  12345.
+         01 var12 pic 999999 display value 123456.
+         01 var13 pic  999   comp-3              .
+         01 var14 pic 9999   comp-3              .
+         procedure       division.
+             display "test1: " with no advancing
+             compute var13 = var11
+                 ON SIZE ERROR Display "Proper size error"
+                 NOT ON SIZE ERROR Display "IMPROPER no error"
+                 end-compute
+             display "test2: " with no advancing
+             compute var14 = var11
+                 ON SIZE ERROR Display "Proper size error"
+                 NOT ON SIZE ERROR Display "IMPROPER no error"
+                 end-compute
+             display "test3: " with no advancing
+             compute var13 = var12
+                 ON SIZE ERROR Display "Proper size error"
+                 NOT ON SIZE ERROR Display "IMPROPER no error"
+                 end-compute
+             display "test4: " with no advancing
+             compute var14 = var12
+                 ON SIZE ERROR Display "Proper size error"
+                 NOT ON SIZE ERROR Display "IMPROPER no error"
+                 end-compute
+             goback.
+         end program onsize.
+ 
diff -Nrcpad gcc-17-20260607/gcc/testsuite/cobol.dg/group2/numeric-display_to_COMP-3_size_error.out gcc-17-20260614/gcc/testsuite/cobol.dg/group2/numeric-display_to_COMP-3_size_error.out
*** gcc-17-20260607/gcc/testsuite/cobol.dg/group2/numeric-display_to_COMP-3_size_error.out	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/cobol.dg/group2/numeric-display_to_COMP-3_size_error.out	Sun Jun 14 22:32:09 2026
***************
*** 0 ****
--- 1,5 ----
+ test1: Proper size error
+ test2: Proper size error
+ test3: Proper size error
+ test4: Proper size error
+ 
diff -Nrcpad gcc-17-20260607/gcc/testsuite/g++.dg/cpp26/lambda-targ1.C gcc-17-20260614/gcc/testsuite/g++.dg/cpp26/lambda-targ1.C
*** gcc-17-20260607/gcc/testsuite/g++.dg/cpp26/lambda-targ1.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/g++.dg/cpp26/lambda-targ1.C	Sun Jun 14 22:32:09 2026
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/121287
+ // { dg-do compile { target c++26 } }
+ // { dg-additional-options "-freflection" }
+ 
+ template <typename _Iter>
+ concept random_access_iterator = requires(_Iter __n) { __n; };
+ template <typename> struct default_accessor {};
+ template <random_access_iterator I> struct iterator_accessor {
+   using element_type = [:[] { return ^^I; }():];
+   operator default_accessor<const element_type>();
+ };
+ default_accessor<const int> _ = iterator_accessor<int>();
diff -Nrcpad gcc-17-20260607/gcc/testsuite/g++.dg/cpp2a/lambda-targ26.C gcc-17-20260614/gcc/testsuite/g++.dg/cpp2a/lambda-targ26.C
*** gcc-17-20260607/gcc/testsuite/g++.dg/cpp2a/lambda-targ26.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/g++.dg/cpp2a/lambda-targ26.C	Sun Jun 14 22:32:09 2026
***************
*** 0 ****
--- 1,32 ----
+ // PR c++/125212
+ // { dg-do compile { target c++20 } }
+ 
+ template <auto dummyVal>
+ struct MyStruct
+ {
+     template<class Callable>
+     static constexpr auto Invoke(Callable callable)
+     {
+         return callable.template operator() <decltype(val)> ();
+     }
+ 
+     static constexpr int val = 0;
+ 
+     template <auto callable>
+     using Alias = MyStruct<dummyVal>;
+ };
+ 
+ template <typename T>
+ constexpr auto IceFunction()
+ {
+     using Alias1 = T::template Alias<[]<typename>() {}>;
+     constexpr auto lambda = []<typename>() {};
+     using Alias2 = T::template Alias<lambda>;
+     using Alias = Alias1;
+     return Alias::Invoke([]<typename>{ return MyStruct<Alias::val>{}; });
+ }
+ 
+ int main()
+ {
+     IceFunction<MyStruct<1>>();
+ }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/g++.dg/cpp2a/lambda-targ27.C gcc-17-20260614/gcc/testsuite/g++.dg/cpp2a/lambda-targ27.C
*** gcc-17-20260607/gcc/testsuite/g++.dg/cpp2a/lambda-targ27.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/g++.dg/cpp2a/lambda-targ27.C	Sun Jun 14 22:32:09 2026
***************
*** 0 ****
--- 1,22 ----
+ // PR c++/105667
+ // { dg-do compile { target c++20 } }
+ 
+ template<auto f>
+ struct h {typedef int type;};
+ 
+ template<class Types>
+ struct t{};
+ 
+ template<int Ts>
+ struct crash {
+     using Types = typename h<[]() {}>::type;
+     template<int tt>
+     static void f()
+     {
+         t<Types> b;
+     };
+ };
+ 
+ int main() {
+     crash<0>::f<1>();
+ }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/g++.dg/cpp2a/lambda-targ28.C gcc-17-20260614/gcc/testsuite/g++.dg/cpp2a/lambda-targ28.C
*** gcc-17-20260607/gcc/testsuite/g++.dg/cpp2a/lambda-targ28.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/g++.dg/cpp2a/lambda-targ28.C	Sun Jun 14 22:32:09 2026
***************
*** 0 ****
--- 1,16 ----
+ // PR c++/105667
+ // { dg-do compile { target c++20 } }
+ 
+ template<typename>
+ struct get { };
+ 
+ template<int>
+ struct thing {
+     using T = decltype([](auto) { });
+ 
+     static constexpr auto value = [](auto) {
+         return get<T>();
+     }(0);
+ };
+ 
+ thing<0> X;
diff -Nrcpad gcc-17-20260607/gcc/testsuite/g++.dg/cpp2a/lambda-targ29.C gcc-17-20260614/gcc/testsuite/g++.dg/cpp2a/lambda-targ29.C
*** gcc-17-20260607/gcc/testsuite/g++.dg/cpp2a/lambda-targ29.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/g++.dg/cpp2a/lambda-targ29.C	Sun Jun 14 22:32:09 2026
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/105667
+ // { dg-do compile { target c++20 } }
+ 
+ template <auto A = []<class B>(B){}>
+ struct C {
+   using D = void;
+ };
+ 
+ template <class...>
+ using E = C<>::D;
+ 
+ using F = E<>;
diff -Nrcpad gcc-17-20260607/gcc/testsuite/g++.dg/cpp2a/lambda-targ30.C gcc-17-20260614/gcc/testsuite/g++.dg/cpp2a/lambda-targ30.C
*** gcc-17-20260607/gcc/testsuite/g++.dg/cpp2a/lambda-targ30.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/g++.dg/cpp2a/lambda-targ30.C	Sun Jun 14 22:32:09 2026
***************
*** 0 ****
--- 1,22 ----
+ // PR c++/105667
+ // { dg-do compile { target c++20 } }
+ 
+ struct class1
+ {
+ 	virtual void a_function() = 0;
+ };
+ 
+ template<auto my_lambda = []<typename T>() {}>
+ class class2 {};
+ 
+ template<typename Touter>
+ struct class3 : public class1 {
+ 	void a_function()
+ 	{
+ 		class2<> x;
+ 	}
+ };
+ 
+ struct class4 : public class3<class4> {
+ 	class4() {}
+ };
diff -Nrcpad gcc-17-20260607/gcc/testsuite/g++.dg/cpp2a/lambda-targ31.C gcc-17-20260614/gcc/testsuite/g++.dg/cpp2a/lambda-targ31.C
*** gcc-17-20260607/gcc/testsuite/g++.dg/cpp2a/lambda-targ31.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/g++.dg/cpp2a/lambda-targ31.C	Sun Jun 14 22:32:09 2026
***************
*** 0 ****
--- 1,21 ----
+ // PR c++/121597
+ // { dg-do compile { target c++20 } }
+ 
+ template<int, class> struct Tmpl {};
+ template<typename T> struct Wrap {};
+ 
+ template<typename = void>
+ void foo()
+ {
+   using Type = decltype([]<typename = void>{
+     return Tmpl<0, char>{};
+   }());
+ 
+   []<typename = void>{
+     using X = decltype([]<auto N, class T>(Tmpl<N, T>&&)
+       {}.template operator()<0>(Type{}));
+     return Wrap<X>{};
+   }();
+ };
+ 
+ template void foo<>();
diff -Nrcpad gcc-17-20260607/gcc/testsuite/g++.dg/cpp2a/lambda-targ32.C gcc-17-20260614/gcc/testsuite/g++.dg/cpp2a/lambda-targ32.C
*** gcc-17-20260607/gcc/testsuite/g++.dg/cpp2a/lambda-targ32.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/g++.dg/cpp2a/lambda-targ32.C	Sun Jun 14 22:32:09 2026
***************
*** 0 ****
--- 1,21 ----
+ // PR c++/121287
+ // { dg-do compile { target c++20 } }
+ 
+ template <typename _Tp, _Tp...> struct integer_sequence {};
+ template <long... _Idx>
+ using index_sequence = integer_sequence<unsigned long, _Idx...>;
+ template <typename> struct array {};
+ 
+ template <typename = void>
+ auto
+ f ()
+ {
+   using Res = decltype([]<unsigned long Idx>(index_sequence<Idx>) { }(index_sequence<3>{}));
+   return []<long...>(index_sequence<>) { array<Res>{}; }({});
+ }
+ 
+ void
+ g ()
+ {
+   f ();
+ }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/g++.dg/modules/clone-4_b.C gcc-17-20260614/gcc/testsuite/g++.dg/modules/clone-4_b.C
*** gcc-17-20260607/gcc/testsuite/g++.dg/modules/clone-4_b.C	Sun Jun  7 22:32:09 2026
--- gcc-17-20260614/gcc/testsuite/g++.dg/modules/clone-4_b.C	Sun Jun 14 22:32:09 2026
*************** int main() {
*** 8,12 ****
    __shared_ptr<double> s2;
  }
  
! // { dg-final { scan-assembler-not {_ZNW1M12__shared_ptrIiEC[1-4]Ev:} } }
! // { dg-final { scan-assembler {_ZNW1M12__shared_ptrIdEC2Ev:} } }
--- 8,13 ----
    __shared_ptr<double> s2;
  }
  
! // { dg-final { scan-assembler-not {_?_ZNW1M12__shared_ptrIiEC[1-4]Ev:} } }
! // { dg-final { scan-assembler {_?_ZNW1M12__shared_ptrIdEC2Ev:} { target alias } } }
! // { dg-final { scan-assembler {_?_ZNW1M12__shared_ptrIdEC1Ev:} { target { ! alias } } } }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/g++.dg/modules/modules.exp gcc-17-20260614/gcc/testsuite/g++.dg/modules/modules.exp
*** gcc-17-20260607/gcc/testsuite/g++.dg/modules/modules.exp	Sun Jun  7 22:32:09 2026
--- gcc-17-20260614/gcc/testsuite/g++.dg/modules/modules.exp	Sun Jun 14 22:32:09 2026
*************** proc dg-module-cmi { args } {
*** 151,157 ****
  
  # check the expected module files exist (or not)
  # return list to delete
! proc module_cmi_p { src ifs } {
      set res {}
      foreach if_arg $ifs {
  	set spec [lindex $if_arg 0]
--- 151,157 ----
  
  # check the expected module files exist (or not)
  # return list to delete
! proc module_cmi_p { src ifs std } {
      set res {}
      foreach if_arg $ifs {
  	set spec [lindex $if_arg 0]
*************** proc module_cmi_p { src ifs } {
*** 169,177 ****
  	global srcdir
  	set relcmi [string map [list $srcdir "/\$srcdir"] $cmi]
  	if { $not != [file_on_host exists $cmi] } {
! 	    pass "$src module-cmi $spec ($relcmi)"
  	} else {
! 	    fail "$src module-cmi $spec ($relcmi)"
  	    set not [expr ! $not ]
  	}
  	if { ! $not } {
--- 169,177 ----
  	global srcdir
  	set relcmi [string map [list $srcdir "/\$srcdir"] $cmi]
  	if { $not != [file_on_host exists $cmi] } {
! 	    pass "$src $std module-cmi $spec ($relcmi)"
  	} else {
! 	    fail "$src $std module-cmi $spec ($relcmi)"
  	    set not [expr ! $not ]
  	}
  	if { ! $not } {
*************** foreach test [prune [lsort [find $srcdir
*** 369,375 ****
  		continue
  	    }
  	    set testcase [string range $test [string length "$srcdir/"] end]
! 	    cleanup_module_files [module_cmi_p $testcase $module_cmis]
  	}
      }
  }
--- 369,375 ----
  		continue
  	    }
  	    set testcase [string range $test [string length "$srcdir/"] end]
! 	    cleanup_module_files [module_cmi_p $testcase $module_cmis $std]
  	}
      }
  }
*************** foreach src [lsort [find $srcdir/$subdir
*** 417,423 ****
  			break
  		    }
  		    set testcase [string range $test [string length "$srcdir/"] end]
! 		    lappend mod_files [module_cmi_p $testcase $module_cmis]
  		}
  	    }
  	    set testcase [regsub {_a.[CH]} $src {}]
--- 417,423 ----
  			break
  		    }
  		    set testcase [string range $test [string length "$srcdir/"] end]
! 		    lappend mod_files [module_cmi_p $testcase $module_cmis $std]
  		}
  	    }
  	    set testcase [regsub {_a.[CH]} $src {}]
diff -Nrcpad gcc-17-20260607/gcc/testsuite/g++.dg/modules/test-p1689.py gcc-17-20260614/gcc/testsuite/g++.dg/modules/test-p1689.py
*** gcc-17-20260607/gcc/testsuite/g++.dg/modules/test-p1689.py	Sun Jun  7 22:32:09 2026
--- gcc-17-20260614/gcc/testsuite/g++.dg/modules/test-p1689.py	Sun Jun 14 22:32:09 2026
*************** def _inspect_ordering(arr):
*** 131,136 ****
--- 131,146 ----
  
      return arr, req_ordering
  
+ def _get_predictable_ordered_array(arr):
+     if not arr:
+         return arr
+ 
+     # Convert to list of string to get predictable order.
+     # Using set() here causes issue with complex arrays
+     arr = [json.dumps(x) for x in arr]
+     arr.sort()
+     return [json.loads(x) for x in arr]
+ 
  
  def compare_json(path, actual, expect):
      actual_type = type(actual)
*************** def compare_json(path, actual, expect):
*** 146,153 ****
      elif actual_type == list:
          expect, req_ordering = _inspect_ordering(expect)
          if not req_ordering:
!             actual = set(actual)
!             expect = set(expect)
          is_ok = _compare_array(path, actual, expect)
      elif actual_type == str:
          is_ok = _compare_string(path, actual, expect)
--- 156,163 ----
      elif actual_type == list:
          expect, req_ordering = _inspect_ordering(expect)
          if not req_ordering:
!             actual = _get_predictable_ordered_array(actual)
!             expect = _get_predictable_ordered_array(expect)
          is_ok = _compare_array(path, actual, expect)
      elif actual_type == str:
          is_ok = _compare_string(path, actual, expect)
diff -Nrcpad gcc-17-20260607/gcc/testsuite/g++.dg/pr125642.C gcc-17-20260614/gcc/testsuite/g++.dg/pr125642.C
*** gcc-17-20260607/gcc/testsuite/g++.dg/pr125642.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/g++.dg/pr125642.C	Sun Jun 14 22:32:10 2026
***************
*** 0 ****
--- 1,5 ----
+ /* { dg-do preprocess } */
+ 
+ #ifdef __FRACT_FBIT__
+ #error "we should not report _Fract support in C++"
+ #endif
diff -Nrcpad gcc-17-20260607/gcc/testsuite/g++.dg/reflect/mangle7.C gcc-17-20260614/gcc/testsuite/g++.dg/reflect/mangle7.C
*** gcc-17-20260607/gcc/testsuite/g++.dg/reflect/mangle7.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/g++.dg/reflect/mangle7.C	Sun Jun 14 22:32:10 2026
***************
*** 0 ****
--- 1,65 ----
+ // PR c++/125498
+ // { dg-do compile { target c++26 } }
+ // { dg-additional-options "-freflection" }
+ 
+ #include <meta>
+ 
+ using namespace std::meta;
+ 
+ template<info>
+ void
+ xyzzy ()
+ {
+ }
+ 
+ struct S {
+   void fn1 (const S &)
+   {
+     xyzzy<parameters_of (^^S::fn1)[0]> ();
+   }
+   void fn2 (this S)
+   {
+     xyzzy<parameters_of (^^S::fn2)[0]> ();
+   }
+   static void fn3 (int)
+   {
+     xyzzy<parameters_of (^^S::fn3)[0]> ();
+   }
+ };
+ 
+ struct V : virtual S {
+   void fn1 (const V &)
+   {
+     xyzzy<parameters_of (^^V::fn1)[0]> ();
+   }
+   void fn2 (this V)
+   {
+     xyzzy<parameters_of (^^V::fn2)[0]> ();
+   }
+   static void fn3 (int)
+   {
+     xyzzy<parameters_of (^^V::fn3)[0]> ();
+   }
+ };
+ 
+ void
+ g (int)
+ {
+   xyzzy<parameters_of (^^g)[0]> ();
+   S s;
+   s.fn1 (s);
+   s.fn2 ();
+   S::fn3 (42);
+   V v;
+   v.fn1 (v);
+   v.fn2 ();
+   V::fn3 (42);
+ }
+ 
+ // { dg-final { scan-assembler "_Z5xyzzyILDmpa_N1S3fn1ERKS0_EEvv" } }
+ // { dg-final { scan-assembler "_Z5xyzzyILDmpa_NH1S3fn2ES0_EEvv" } }
+ // { dg-final { scan-assembler "_Z5xyzzyILDmpa_N1S3fn3EiEEvv" } }
+ // { dg-final { scan-assembler "_Z5xyzzyILDmpa_N1V3fn1ERKS0_EEvv" } }
+ // { dg-final { scan-assembler "_Z5xyzzyILDmpa_NH1V3fn2ES0_EEvv" } }
+ // { dg-final { scan-assembler "_Z5xyzzyILDmpa_N1V3fn3EiEEvv" } }
+ // { dg-final { scan-assembler "_Z5xyzzyILDmpa_1giEEvv" } }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/g++.dg/reflect/parameters_of9.C gcc-17-20260614/gcc/testsuite/g++.dg/reflect/parameters_of9.C
*** gcc-17-20260607/gcc/testsuite/g++.dg/reflect/parameters_of9.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/g++.dg/reflect/parameters_of9.C	Sun Jun 14 22:32:10 2026
***************
*** 0 ****
--- 1,45 ----
+ // PR c++/125498
+ // { dg-do compile { target c++26 } }
+ // { dg-additional-options "-freflection -g" }
+ 
+ #include <meta>
+ 
+ struct tag {};
+ 
+ struct S {
+   S(int) {}
+ };
+ 
+ struct B { };
+ struct A : virtual B { A(int); };
+ 
+ template <auto Param> struct GetAnnotations {
+   static constexpr auto value = std::define_static_array(
+       std::meta::annotations_of_with_type(Param, ^^tag));
+ };
+ 
+ consteval bool test() {
+   template for (constexpr auto member :
+ 		std::define_static_array(std::meta::members_of(
+ 		    ^^S, std::meta::access_context::unchecked()))) {
+     if constexpr (std::meta::is_constructor(member)) {
+       constexpr auto parameters =
+ 	  std::define_static_array(std::meta::parameters_of(member));
+       constexpr auto annotations = GetAnnotations<parameters[0]>::value;
+       return annotations.empty();
+     }
+   }
+ }
+ 
+ consteval bool test2() {
+   template for (constexpr auto member :
+ 		std::define_static_array(std::meta::members_of(
+ 		    ^^A, std::meta::access_context::unchecked()))) {
+     if constexpr (std::meta::is_constructor(member)) {
+       constexpr auto parameters =
+ 	  std::define_static_array(std::meta::parameters_of(member));
+       constexpr auto annotations = GetAnnotations<parameters[0]>::value;
+       return annotations.empty();
+     }
+   }
+ }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/g++.dg/reflect/visibility1.C gcc-17-20260614/gcc/testsuite/g++.dg/reflect/visibility1.C
*** gcc-17-20260607/gcc/testsuite/g++.dg/reflect/visibility1.C	Sun Jun  7 22:32:09 2026
--- gcc-17-20260614/gcc/testsuite/g++.dg/reflect/visibility1.C	Sun Jun 14 22:32:10 2026
*************** static void
*** 37,56 ****
  bar (int x)
  {
    int v = 42;
!   foo <100, ^^x> ();				// { dg-final { scan-assembler-not "\t.weak\t_Z3fooILi100EL" } } - var in TU-local fn
!   foo <101, ^^v> ();				// { dg-final { scan-assembler-not "\t.weak\t_Z3fooILi101EL" } } - var in TU-local fn
!   foo <102, parameters_of (^^baz)[0]> ();	// { dg-final { scan-assembler-not "\t.weak\t_Z3fooILi102EL" } } - param of TU-local fn
!   foo <103, bases_of (^^C, ctx)[0]> ();		// { dg-final { scan-assembler-not "\t.weak\t_Z3fooILi103EL" } } - direct base relationship with TU-local derived
!   foo <104, bases_of (^^D, ctx)[0]> ();		// { dg-final { scan-assembler-not "\t.weak\t_Z3fooILi104EL" } } - direct base relationship with TU-local base
!   foo <105, data_member_spec (^^B, { .name = "foo" })> (); // { dg-final { scan-assembler-not "\t.weak\t_Z3fooILi105EL" } } - data member spec with TU-local type
  }
  
  inline void
  qux (int x)
  {
    int v = 42;
!   foo <106, ^^x> ();				// { dg-final { scan-assembler "\t.weak\t_Z3fooILi106EL" } } - var in inline fn
!   foo <107, ^^v> ();				// { dg-final { scan-assembler "\t.weak\t_Z3fooILi107EL" } } - var in inline fn
  }
  
  template <int N>
--- 37,56 ----
  bar (int x)
  {
    int v = 42;
!   foo <100, ^^x> ();				// { dg-final { scan-not-weak "_Z3fooILi100EL" } } - var in TU-local fn
!   foo <101, ^^v> ();				// { dg-final { scan-not-weak "_Z3fooILi101EL" } } - var in TU-local fn
!   foo <102, parameters_of (^^baz)[0]> ();	// { dg-final { scan-not-weak "_Z3fooILi102EL" } } - param of TU-local fn
!   foo <103, bases_of (^^C, ctx)[0]> ();		// { dg-final { scan-not-weak "_Z3fooILi103EL" } } - direct base relationship with TU-local derived
!   foo <104, bases_of (^^D, ctx)[0]> ();		// { dg-final { scan-not-weak "_Z3fooILi104EL" } } - direct base relationship with TU-local base
!   foo <105, data_member_spec (^^B, { .name = "foo" })> (); // { dg-final { scan-not-weak "_Z3fooILi105EL" } } - data member spec with TU-local type
  }
  
  inline void
  qux (int x)
  {
    int v = 42;
!   foo <106, ^^x> ();				// { dg-final { scan-weak "_Z3fooILi106EL" } } - var in inline fn
!   foo <107, ^^v> ();				// { dg-final { scan-weak "_Z3fooILi107EL" } } - var in inline fn
  }
  
  template <int N>
*************** void
*** 58,66 ****
  plugh (int x)
  {
    int v = 42;
!   foo <132, ^^x> ();				// { dg-final { scan-assembler "\t.weak\t_Z3fooILi132EL" } } - var in public fn template instantiation
!   foo <133, ^^v> ();				// { dg-final { scan-assembler "\t.weak\t_Z3fooILi133EL" } } - var in public fn template instantiation
!   foo <134, parameters_of (parent_of (^^v))[0]> (); // { dg-final { scan-assembler "\t.weak\t_Z3fooILi134EL" { target *-*-linux* } } } - fn parm of public fn template instantiation
  }
  
  namespace {
--- 58,66 ----
  plugh (int x)
  {
    int v = 42;
!   foo <132, ^^x> ();				// { dg-final { scan-weak "_Z3fooILi132EL" } } - var in public fn template instantiation
!   foo <133, ^^v> ();				// { dg-final { scan-weak "_Z3fooILi133EL" } } - var in public fn template instantiation
!   foo <134, parameters_of (parent_of (^^v))[0]> (); // { dg-final { scan-weak "_Z3fooILi134EL" { target *-*-linux* } } } - fn parm of public fn template instantiation
  }
  
  namespace {
*************** void
*** 69,77 ****
  garply (int x)
  {
    int v = 42;
!   foo <135, ^^x> ();				// { dg-final { scan-assembler-not "\t.weak\t_Z3fooILi135EL" } } - var in TU-local fn template instantiation
!   foo <136, ^^v> ();				// { dg-final { scan-assembler-not "\t.weak\t_Z3fooILi136EL" } } - var in Tu-local fn template instantiation
!   foo <137, parameters_of (parent_of (^^v))[0]> (); // { dg-final { scan-assembler-not "\t.weak\t_Z3fooILi137EL" } } - fn parm of TU-local fn template instantiation
  }
  }
  
--- 69,77 ----
  garply (int x)
  {
    int v = 42;
!   foo <135, ^^x> ();				// { dg-final { scan-not-weak "_Z3fooILi135EL" } } - var in TU-local fn template instantiation
!   foo <136, ^^v> ();				// { dg-final { scan-not-weak "_Z3fooILi136EL" } } - var in Tu-local fn template instantiation
!   foo <137, parameters_of (parent_of (^^v))[0]> (); // { dg-final { scan-not-weak "_Z3fooILi137EL" } } - fn parm of TU-local fn template instantiation
  }
  }
  
*************** void
*** 80,88 ****
  fred (int x)
  {
    int v = 42;
!   foo <138, ^^x> ();				// { dg-final { scan-assembler "\t.weak\t_Z3fooILi138EL" } } - var in fn template instantiation
!   foo <139, ^^v> ();				// { dg-final { scan-assembler "\t.weak\t_Z3fooILi139EL" } } - var in fn template instantiation
!   foo <140, parameters_of (parent_of (^^v))[0]> (); // { dg-final { scan-assembler "\t.weak\t_Z3fooILi140EL" } } - fn parm of fn template instantiation
  }
  
  [[=1]] void
--- 80,88 ----
  fred (int x)
  {
    int v = 42;
!   foo <138, ^^x> ();				// { dg-final { scan-weak "_Z3fooILi138EL" } } - var in fn template instantiation
!   foo <139, ^^v> ();				// { dg-final { scan-weak "_Z3fooILi139EL" } } - var in fn template instantiation
!   foo <140, parameters_of (parent_of (^^v))[0]> (); // { dg-final { scan-weak "_Z3fooILi140EL" } } - fn parm of fn template instantiation
  }
  
  [[=1]] void
*************** xyzzy (int x)
*** 91,120 ****
    int v;
    struct E {};
    qux (x);
!   foo <108, annotations_of (^^xyzzy)[0]> ();	// { dg-final { scan-assembler-not "\t.weak\t_Z3fooILi108EL" } } - annotations always TU-local
!   foo <109, parameters_of (^^bar)[0]> ();	// { dg-final { scan-assembler-not "\t.weak\t_Z3fooILi109EL" } } - fn parm of TU-local fn
!   foo <110, parameters_of (^^qux)[0]> ();	// { dg-final { scan-assembler "\t.weak\t_Z3fooILi110EL" { target *-*-linux* } } } - fn parm of inline fn
!   foo <111, parameters_of (^^xyzzy)[0]> ();	// { dg-final { scan-assembler "\t.weak\t_Z3fooILi111EL" { target *-*-linux* } } } - fn parm of public fn
!   foo <112, ^^B> ();				// { dg-final { scan-assembler-not "\t.weak\t_Z3fooILi112EL" } } - TU-local class
!   foo <113, ^^C> ();				// { dg-final { scan-assembler-not "\t.weak\t_Z3fooILi113EL" } } - TU-local class
!   foo <114, ^^D> ();				// { dg-final { scan-assembler "\t.weak\t_Z3fooILi114EL" { target *-*-linux* } } } - public class
!   foo <115, ^^E> ();				// { dg-final { scan-assembler-not "\t.weak\t_Z3fooILi115EL" } } - TU-local class
!   foo <116, ^^au> ();				// { dg-final { scan-assembler-not "\t.weak\t_Z3fooILi116EL" } } - anon union var at namespace scope
!   foo <117, ^^F> ();				// { dg-final { scan-assembler "\t.weak\t_Z3fooILi117EL" { target *-*-linux* } } } - public template
!   foo <118, ^^F <int>> ();			// { dg-final { scan-assembler "\t.weak\t_Z3fooILi118EL" { target *-*-linux* } } } - specialization of public template
!   foo <119, ^^F <A>> ();			// { dg-final { scan-assembler "\t.weak\t_Z3fooILi119EL" { target *-*-linux* } } } - specialization of public template
!   foo <120, ^^F <B>> ();			// { dg-final { scan-assembler-not "\t.weak\t_Z3fooILi120EL" } } - specialization with TU-local parameter
!   foo <121, ^^G> ();				// { dg-final { scan-assembler-not "\t.weak\t_Z3fooILi121EL" } } - TU-local template
!   foo <122, ^^G <int>> ();			// { dg-final { scan-assembler-not "\t.weak\t_Z3fooILi122EL" } } - specialization of TU-local template
!   foo <123, ^^G <A>> ();			// { dg-final { scan-assembler-not "\t.weak\t_Z3fooILi123EL" } } - specialization of TU-local template
!   foo <124, ^^G <B>> ();			// { dg-final { scan-assembler-not "\t.weak\t_Z3fooILi124EL" } } - specialization of TU-local template
!   foo <125, ^^x> ();				// { dg-final { scan-assembler "\t.weak\t_Z3fooILi125EL" } } - var in public fn but non-comdat
!   foo <126, ^^v> ();				// { dg-final { scan-assembler "\t.weak\t_Z3fooILi126EL" } } - var in public fn but non-comdat
!   foo <127, std::meta::info {}> ();		// { dg-final { scan-assembler "\t.weak\t_Z3fooILi127EL" { target *-*-linux* } } } - null reflection
!   foo <128, ^^b> ();				// { dg-final { scan-assembler "\t.weak\t_Z3fooILi128EL" { target *-*-linux* } } } - public variable
!   foo <129, ^^c> ();				// { dg-final { scan-assembler-not "\t.weak\t_Z3fooILi129EL" } } - TU-local variable
!   foo <130, data_member_spec (^^D, { .name = "foo" })> (); // { dg-final { scan-assembler "\t.weak\t_Z3fooILi130EL" { target *-*-linux* } } } - data member spec with public type
!   foo <131, bases_of (^^H, ctx)[0]> ();		// { dg-final { scan-assembler "\t.weak\t_Z3fooILi131EL" { target *-*-linux* } } } - direct base relationship with both types public
    plugh <42> (x);
    garply <42> (x);
    fred <B> (x);
--- 91,120 ----
    int v;
    struct E {};
    qux (x);
!   foo <108, annotations_of (^^xyzzy)[0]> ();	// { dg-final { scan-not-weak "_Z3fooILi108EL" } } - annotations always TU-local
!   foo <109, parameters_of (^^bar)[0]> ();	// { dg-final { scan-not-weak "_Z3fooILi109EL" } } - fn parm of TU-local fn
!   foo <110, parameters_of (^^qux)[0]> ();	// { dg-final { scan-weak "_Z3fooILi110EL" { target *-*-linux* } } } - fn parm of inline fn
!   foo <111, parameters_of (^^xyzzy)[0]> ();	// { dg-final { scan-weak "_Z3fooILi111EL" { target *-*-linux* } } } - fn parm of public fn
!   foo <112, ^^B> ();				// { dg-final { scan-not-weak "_Z3fooILi112EL" } } - TU-local class
!   foo <113, ^^C> ();				// { dg-final { scan-not-weak "_Z3fooILi113EL" } } - TU-local class
!   foo <114, ^^D> ();				// { dg-final { scan-weak "_Z3fooILi114EL" { target *-*-linux* } } } - public class
!   foo <115, ^^E> ();				// { dg-final { scan-not-weak "_Z3fooILi115EL" } } - TU-local class
!   foo <116, ^^au> ();				// { dg-final { scan-not-weak "_Z3fooILi116EL" } } - anon union var at namespace scope
!   foo <117, ^^F> ();				// { dg-final { scan-weak "_Z3fooILi117EL" { target *-*-linux* } } } - public template
!   foo <118, ^^F <int>> ();			// { dg-final { scan-weak "_Z3fooILi118EL" { target *-*-linux* } } } - specialization of public template
!   foo <119, ^^F <A>> ();			// { dg-final { scan-weak "_Z3fooILi119EL" { target *-*-linux* } } } - specialization of public template
!   foo <120, ^^F <B>> ();			// { dg-final { scan-not-weak "_Z3fooILi120EL" } } - specialization with TU-local parameter
!   foo <121, ^^G> ();				// { dg-final { scan-not-weak "_Z3fooILi121EL" } } - TU-local template
!   foo <122, ^^G <int>> ();			// { dg-final { scan-not-weak "_Z3fooILi122EL" } } - specialization of TU-local template
!   foo <123, ^^G <A>> ();			// { dg-final { scan-not-weak "_Z3fooILi123EL" } } - specialization of TU-local template
!   foo <124, ^^G <B>> ();			// { dg-final { scan-not-weak "_Z3fooILi124EL" } } - specialization of TU-local template
!   foo <125, ^^x> ();				// { dg-final { scan-weak "_Z3fooILi125EL" } } - var in public fn but non-comdat
!   foo <126, ^^v> ();				// { dg-final { scan-weak "_Z3fooILi126EL" } } - var in public fn but non-comdat
!   foo <127, std::meta::info {}> ();		// { dg-final { scan-weak "_Z3fooILi127EL" { target *-*-linux* } } } - null reflection
!   foo <128, ^^b> ();				// { dg-final { scan-weak "_Z3fooILi128EL" { target *-*-linux* } } } - public variable
!   foo <129, ^^c> ();				// { dg-final { scan-not-weak "_Z3fooILi129EL" } } - TU-local variable
!   foo <130, data_member_spec (^^D, { .name = "foo" })> (); // { dg-final { scan-weak "_Z3fooILi130EL" { target *-*-linux* } } } - data member spec with public type
!   foo <131, bases_of (^^H, ctx)[0]> ();		// { dg-final { scan-weak "_Z3fooILi131EL" { target *-*-linux* } } } - direct base relationship with both types public
    plugh <42> (x);
    garply <42> (x);
    fred <B> (x);
diff -Nrcpad gcc-17-20260607/gcc/testsuite/g++.dg/template/bitfield5.C gcc-17-20260614/gcc/testsuite/g++.dg/template/bitfield5.C
*** gcc-17-20260607/gcc/testsuite/g++.dg/template/bitfield5.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/g++.dg/template/bitfield5.C	Sun Jun 14 22:32:10 2026
***************
*** 0 ****
--- 1,16 ----
+ // PR c++/125674
+ // { dg-do compile { target c++20 } }
+ 
+ struct A { int a : 1.; };	// { dg-error "width of bit-field 'a' has non-integral type 'double'" }
+ template <typename T>
+ struct B { int b : 1.; };	// { dg-error "width of bit-field 'b' has non-integral type 'double'" }
+ template <typename T>
+ struct C { T c : 1.; };		// { dg-error "width of bit-field 'c' has non-integral type 'double'" }
+ template <auto N>
+ struct D { int d : N; };	// { dg-error "width of bit-field 'D<N>::d' has non-integral type 'double'" }
+ template <typename T, auto N>
+ struct E { T e : N; };		// { dg-error "width of bit-field 'E<T, N>::e' has non-integral type 'double'" }
+ B <int> b;
+ C <int> c;
+ D <1.> d;
+ E <int, 1.> e;
diff -Nrcpad gcc-17-20260607/gcc/testsuite/g++.dg/template/bitfield6.C gcc-17-20260614/gcc/testsuite/g++.dg/template/bitfield6.C
*** gcc-17-20260607/gcc/testsuite/g++.dg/template/bitfield6.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/g++.dg/template/bitfield6.C	Sun Jun 14 22:32:10 2026
***************
*** 0 ****
--- 1,9 ----
+ // PR c++/125674
+ // { dg-do compile }
+ 
+ template <typename T>
+ struct A {
+   int f ();
+   int i : f;	// { dg-error "width of bit-field 'A<T>::i' has non-integral type '<unresolved overloaded function type>'" }
+ };
+ A<int> a;
diff -Nrcpad gcc-17-20260607/gcc/testsuite/g++.dg/template/explicit-instantiation8.C gcc-17-20260614/gcc/testsuite/g++.dg/template/explicit-instantiation8.C
*** gcc-17-20260607/gcc/testsuite/g++.dg/template/explicit-instantiation8.C	Sun Jun  7 22:32:09 2026
--- gcc-17-20260614/gcc/testsuite/g++.dg/template/explicit-instantiation8.C	Sun Jun 14 22:32:10 2026
*************** extern template struct use_shallow<char>
*** 21,24 ****
  template struct shallow<char>;
  template struct use_shallow<char>;
  
! // { dg-final { scan-assembler "_ZN7shallowIcEC2Ev" } }
--- 21,25 ----
  template struct shallow<char>;
  template struct use_shallow<char>;
  
! // { dg-final { scan-assembler "_?_ZN7shallowIcEC2Ev" { target alias } } }
! // { dg-final { scan-assembler "_?_ZN7shallowIcEC1Ev" { target { ! alias } } } }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/g++.dg/torture/pr91155.C gcc-17-20260614/gcc/testsuite/g++.dg/torture/pr91155.C
*** gcc-17-20260607/gcc/testsuite/g++.dg/torture/pr91155.C	Sun Jun  7 22:32:09 2026
--- gcc-17-20260614/gcc/testsuite/g++.dg/torture/pr91155.C	Sun Jun 14 22:32:10 2026
***************
*** 1,4 ****
! /* PR c++/91155.  */
  
  template< char C > struct dummy {};
  
--- 1,5 ----
! // PR c++/91155
! // { dg-do run }
  
  template< char C > struct dummy {};
  
*************** template< typename T > const char *test(
*** 10,18 ****
  
  int main()
  {
!     if (__builtin_strcmp ("const char* test() [with T = dummy<\'\\000\'>]", test< dummy< '\0' > > ()) != 0)
!     {};//      __builtin_abort ();
!     if (__builtin_strcmp ("const char* test() [with T = dummy<\'\\\'\'>]", test< dummy< '\'' > > ()) != 0)
!     {};//      __builtin_abort ();
!     return 0;
  }
--- 11,19 ----
  
  int main()
  {
!   if (__builtin_strcmp ("const char* test() [with T = dummy<\'\\000\'>]", test< dummy< '\0' > > ()) != 0)
!     __builtin_abort ();
!   if (__builtin_strcmp ("const char* test() [with T = dummy<\'\\\'\'>]", test< dummy< '\'' > > ()) != 0)
!     __builtin_abort ();
!   return 0;
  }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/g++.dg/tree-ssa/mult-negate-zeroone-1.C gcc-17-20260614/gcc/testsuite/g++.dg/tree-ssa/mult-negate-zeroone-1.C
*** gcc-17-20260607/gcc/testsuite/g++.dg/tree-ssa/mult-negate-zeroone-1.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/g++.dg/tree-ssa/mult-negate-zeroone-1.C	Sun Jun 14 22:32:10 2026
***************
*** 0 ****
--- 1,12 ----
+ // Test that { 0, 1 } * -{ 0, 1 } folds to -({ 0, 1 } & { 0, 1 }) and does not
+ // keep a multiply.  Also check the commutative (negated operand first) form.
+ // { dg-do compile }
+ // { dg-options "-O2 -fdump-tree-optimized" }
+ 
+ int f1 (int x, int y) { return (x > 5) * -(y > 5); }
+ long f2 (long x, long y) { return (long) (x > 5) * -(long) (y > 5); }
+ unsigned f3 (unsigned x, unsigned y) { return (x > 5u) * -(unsigned) (y > 5u); }
+ int f4 (int x, int y) { return -(y > 5) * (x > 5); }
+ 
+ // { dg-final { scan-tree-dump-not " \* " "optimized" } }
+ // { dg-final { scan-tree-dump-times " & " 4 "optimized" } }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/g++.dg/tree-ssa/mult-negate-zeroone-2.C gcc-17-20260614/gcc/testsuite/g++.dg/tree-ssa/mult-negate-zeroone-2.C
*** gcc-17-20260607/gcc/testsuite/g++.dg/tree-ssa/mult-negate-zeroone-2.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/g++.dg/tree-ssa/mult-negate-zeroone-2.C	Sun Jun 14 22:32:10 2026
***************
*** 0 ****
--- 1,17 ----
+ // Verify { 0, 1 } * -{ 0, 1 } == -({ 0, 1 } & { 0, 1 }) at runtime, including
+ // the commutative (negated operand first) form.
+ // { dg-do run }
+ // { dg-options "-O2" }
+ 
+ int __attribute__((noipa)) f (int x, int y) { return (x > 5) * -(y > 5); }
+ int __attribute__((noipa)) g (int x, int y) { return -(y > 5) * (x > 5); }
+ 
+ int main () {
+   for (int x = -3; x < 12; x++)
+     for (int y = -3; y < 12; y++)
+       {
+ 	if (f (x, y) != -((x > 5) & (y > 5))) __builtin_abort ();
+ 	if (g (x, y) != -((x > 5) & (y > 5))) __builtin_abort ();
+       }
+   return 0;
+ }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/g++.target/aarch64/sve/aarch64-ssve.exp gcc-17-20260614/gcc/testsuite/g++.target/aarch64/sve/aarch64-ssve.exp
*** gcc-17-20260607/gcc/testsuite/g++.target/aarch64/sve/aarch64-ssve.exp	Sun Jun  7 22:32:10 2026
--- gcc-17-20260614/gcc/testsuite/g++.target/aarch64/sve/aarch64-ssve.exp	Sun Jun 14 22:32:10 2026
*************** gcc_parallel_test_enable 0
*** 37,43 ****
  set preamble {
  #include <arm_sve.h>
  
! #pragma GCC target "+i8mm+f32mm+f64mm+sve2+sve2-bitperm+sve2-sm4+sve2-aes+sve2-sha3+sme+sme2p2"
  
  extern svbool_t &pred;
  
--- 37,43 ----
  set preamble {
  #include <arm_sve.h>
  
! #pragma GCC target "+i8mm+f32mm+f64mm+sve2+sve2-sm4+sve2-aes+sve2-sha3+sme+sme2p2+ssve-bitperm+ssve-fexpa"
  
  extern svbool_t &pred;
  
*************** set streaming_ok {
*** 146,151 ****
--- 146,155 ----
      s8 = svadd_x (pred, s8, s8)
      s8 = svld1 (pred, s8_ptr)
      u32 = svcompact (pred, u32)
+     u8 = svbdep (u8, u8)
+     u8 = svbext (u8, u8)
+     u8 = svbgrp (u8, u8)
+     f32 = svexpa (u32)
  }
  
  # This order follows the list in the SME manual.
*************** set nonstreaming_only {
*** 162,172 ****
      u8 = svaese (u8, u8)
      u8 = svaesimc (u8)
      u8 = svaesmc (u8)
-     u8 = svbdep (u8, u8)
-     u8 = svbext (u8, u8)
      f32 = svbfmmla (f32, bf16, bf16)
      f32 = svadda (pred, 1.0f, f32)
-     f32 = svexpa (u32)
      f32 = svmmla (f32, f32, f32)
      f32 = svtmad (f32, f32, 0)
      f32 = svtsmul (f32, u32)
--- 166,173 ----
diff -Nrcpad gcc-17-20260607/gcc/testsuite/g++.target/aarch64/sve/dup_sel_5.C gcc-17-20260614/gcc/testsuite/g++.target/aarch64/sve/dup_sel_5.C
*** gcc-17-20260607/gcc/testsuite/g++.target/aarch64/sve/dup_sel_5.C	Sun Jun  7 22:32:10 2026
--- gcc-17-20260614/gcc/testsuite/g++.target/aarch64/sve/dup_sel_5.C	Sun Jun 14 22:32:10 2026
*************** foo (int32_t val)
*** 15,18 ****
    asm volatile ("" :: "w" (x));
  }
  
! /* { dg-final { scan-assembler {\tmovprfx\tz0\.s, p[0-7]/z, z0\.s\n\tmov\tz0\.s, p[0-7]/m, w[0-9]+\n} } } */
--- 15,18 ----
    asm volatile ("" :: "w" (x));
  }
  
! /* { dg-final { scan-assembler {\tmov\tz0\.s, p[0-7]/m, w[0-9]+\n} } } */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/g++.target/aarch64/sve/dup_sel_6.C gcc-17-20260614/gcc/testsuite/g++.target/aarch64/sve/dup_sel_6.C
*** gcc-17-20260607/gcc/testsuite/g++.target/aarch64/sve/dup_sel_6.C	Sun Jun  7 22:32:10 2026
--- gcc-17-20260614/gcc/testsuite/g++.target/aarch64/sve/dup_sel_6.C	Sun Jun 14 22:32:10 2026
*************** foo (float val)
*** 15,18 ****
    asm volatile ("" :: "w" (x));
  }
  
! /* { dg-final { scan-assembler {\tmovprfx\tz0\.s, p[0-7]/z, z0\.s\n\tmov\tz0\.s, p[0-7]/m, s[0-9]+\n} } } */
--- 15,18 ----
    asm volatile ("" :: "w" (x));
  }
  
! /* { dg-final { scan-assembler {\tmov\tz[0-7]+\.s, p[0-7]/m, s[0-9]+\n} } } */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/g++.target/i386/cf_check-4.C gcc-17-20260614/gcc/testsuite/g++.target/i386/cf_check-4.C
*** gcc-17-20260607/gcc/testsuite/g++.target/i386/cf_check-4.C	Sun Jun  7 22:32:10 2026
--- gcc-17-20260614/gcc/testsuite/g++.target/i386/cf_check-4.C	Sun Jun 14 22:32:10 2026
*************** foo (void)
*** 20,23 ****
  {
  }
  
! /* { dg-final { scan-assembler ".weak\[ \t\]_?_Z3foov" } } */
--- 20,23 ----
  {
  }
  
! /* { dg-final { scan-assembler ".weak(|_definition)\[ \t\]_?_Z3foov" } } */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/g++.target/i386/memset-pr108585-1a.C gcc-17-20260614/gcc/testsuite/g++.target/i386/memset-pr108585-1a.C
*** gcc-17-20260607/gcc/testsuite/g++.target/i386/memset-pr108585-1a.C	Sun Jun  7 22:32:10 2026
--- gcc-17-20260614/gcc/testsuite/g++.target/i386/memset-pr108585-1a.C	Sun Jun 14 22:32:10 2026
***************
*** 17,23 ****
  **	movaps	%xmm0, 48\(%rsp\)
  **	movaps	%xmm0, 64\(%rsp\)
  **	movaps	%xmm0, 80\(%rsp\)
! **	call	_Z3fooPc
  **	addq	\$104, %rsp
  **	.cfi_def_cfa_offset 8
  **	ret
--- 17,23 ----
  **	movaps	%xmm0, 48\(%rsp\)
  **	movaps	%xmm0, 64\(%rsp\)
  **	movaps	%xmm0, 80\(%rsp\)
! **	call	_?_Z3fooPc
  **	addq	\$104, %rsp
  **	.cfi_def_cfa_offset 8
  **	ret
diff -Nrcpad gcc-17-20260607/gcc/testsuite/g++.target/i386/memset-pr108585-1b.C gcc-17-20260614/gcc/testsuite/g++.target/i386/memset-pr108585-1b.C
*** gcc-17-20260607/gcc/testsuite/g++.target/i386/memset-pr108585-1b.C	Sun Jun  7 22:32:10 2026
--- gcc-17-20260614/gcc/testsuite/g++.target/i386/memset-pr108585-1b.C	Sun Jun 14 22:32:10 2026
***************
*** 17,23 ****
  **	movaps	%xmm0, 48\(%rsp\)
  **	movaps	%xmm0, 64\(%rsp\)
  **	movaps	%xmm0, 80\(%rsp\)
! **	call	_Z3fooPSt4byte
  **	addq	\$104, %rsp
  **	.cfi_def_cfa_offset 8
  **	ret
--- 17,23 ----
  **	movaps	%xmm0, 48\(%rsp\)
  **	movaps	%xmm0, 64\(%rsp\)
  **	movaps	%xmm0, 80\(%rsp\)
! **	call	_?_Z3fooPSt4byte
  **	addq	\$104, %rsp
  **	.cfi_def_cfa_offset 8
  **	ret
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.dg/darwin-minversion-link.c gcc-17-20260614/gcc/testsuite/gcc.dg/darwin-minversion-link.c
*** gcc-17-20260607/gcc/testsuite/gcc.dg/darwin-minversion-link.c	Sun Jun  7 22:32:10 2026
--- gcc-17-20260614/gcc/testsuite/gcc.dg/darwin-minversion-link.c	Sun Jun 14 22:32:10 2026
***************
*** 21,26 ****
--- 21,27 ----
  /* { dg-additional-options "-mmacosx-version-min=014.000.00 -DCHECK=140000" { target *-*-darwin23* } } */
  /* { dg-additional-options "-mmacosx-version-min=015.000.00 -DCHECK=150000" { target *-*-darwin24* } } */
  /* { dg-additional-options "-mmacosx-version-min=026.000.00 -DCHECK=260000" { target *-*-darwin25* } } */
+ /* { dg-additional-options "-mmacosx-version-min=027.000.00 -DCHECK=270000" { target *-*-darwin27* } } */
  
  int
  main ()
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-macro.c gcc-17-20260614/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-macro.c
*** gcc-17-20260607/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-macro.c	Sun Jun  7 22:32:10 2026
--- gcc-17-20260614/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-macro.c	Sun Jun 14 22:32:10 2026
***************
*** 1,7 ****
  /* Test to make sure the mcaro info includes a start file command for the main source */
  /* { dg-do compile } */
  /* { dg-options "-g3 -gdwarf -dA -fverbose-asm" } */
! /* { dg-final { scan-assembler "Start new file" } } */
  
  #define ADD(x) (M + x)
  
--- 1,7 ----
  /* Test to make sure the mcaro info includes a start file command for the main source */
  /* { dg-do compile } */
  /* { dg-options "-g3 -gdwarf -dA -fverbose-asm" } */
! /* { dg-final { scan-assembler "Start new file"  { xfail *-*-darwin23* } } } */
  
  #define ADD(x) (M + x)
  
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-macro2.c gcc-17-20260614/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-macro2.c
*** gcc-17-20260607/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-macro2.c	Sun Jun  7 22:32:10 2026
--- gcc-17-20260614/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-macro2.c	Sun Jun 14 22:32:10 2026
***************
*** 1,7 ****
  /* Test to make sure the macro info includes the predefined macros with line number 0.  */
  /* { dg-do compile } */
  /* { dg-options "-g3 -gdwarf -dA -fverbose-asm" } */
! /* { dg-final { scan-assembler "At line number 0" } } */
  
  #define FOO 1
  int i;
--- 1,7 ----
  /* Test to make sure the macro info includes the predefined macros with line number 0.  */
  /* { dg-do compile } */
  /* { dg-options "-g3 -gdwarf -dA -fverbose-asm" } */
! /* { dg-final { scan-assembler "At line number 0" { xfail *-*-darwin23* } } } */
  
  #define FOO 1
  int i;
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.dg/int-bwise-opt-3.c gcc-17-20260614/gcc/testsuite/gcc.dg/int-bwise-opt-3.c
*** gcc-17-20260607/gcc/testsuite/gcc.dg/int-bwise-opt-3.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.dg/int-bwise-opt-3.c	Sun Jun 14 22:32:11 2026
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ 
+ int f1(int a, int b)
+ {
+   return (a == 0) | ((a | b) == 0);
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "\\\|" 0 "optimized" } } */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.dg/int-bwise-opt-4.c gcc-17-20260614/gcc/testsuite/gcc.dg/int-bwise-opt-4.c
*** gcc-17-20260607/gcc/testsuite/gcc.dg/int-bwise-opt-4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.dg/int-bwise-opt-4.c	Sun Jun 14 22:32:11 2026
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ 
+ int f2(int a, int b)
+ {
+   return (a != 0) & ((a | b) != 0);
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "\&" 0 "optimized" } } */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.dg/pr125173-1.c gcc-17-20260614/gcc/testsuite/gcc.dg/pr125173-1.c
*** gcc-17-20260607/gcc/testsuite/gcc.dg/pr125173-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.dg/pr125173-1.c	Sun Jun 14 22:32:11 2026
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O1 -fno-fuse-ops-with-volatile-access -fno-forward-propagate --param=max-cse-insns=0" } */
+ 
+ int a;
+ volatile short b;
+ 
+ struct
+ {
+   char c;
+   int d;
+ } s;
+ 
+ void
+ foo ()
+ {
+   __asm__ ("":"+m" (b), "+m" (s.d), "+m" (a));
+ }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.dg/pr125668.c gcc-17-20260614/gcc/testsuite/gcc.dg/pr125668.c
*** gcc-17-20260607/gcc/testsuite/gcc.dg/pr125668.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.dg/pr125668.c	Sun Jun 14 22:32:11 2026
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fno-strict-aliasing -fdump-tree-forwprop1-gimple" } */
+ 
+ struct S {
+   long x;
+   int y;
+ };
+ 
+ struct S2 {
+   struct S bufs[];
+ };
+ 
+ void foo(struct S2 *p, int i)
+ {
+   struct S *buf = &p->bufs[i];
+   if (*((volatile int *)&buf->y) < 0)
+     *((volatile int *)&buf->y) = 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times ", 32>" 2 "forwprop1" { target lp64 } } } */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.dg/pr125706.c gcc-17-20260614/gcc/testsuite/gcc.dg/pr125706.c
*** gcc-17-20260607/gcc/testsuite/gcc.dg/pr125706.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.dg/pr125706.c	Sun Jun 14 22:32:11 2026
***************
*** 0 ****
--- 1,14 ----
+ // { dg-do compile }
+ // { dg-options "-O2 -fdump-tree-evrp" }
+ 
+ #include <stdint.h>
+ 
+ int8_t src(uint8_t v2_u8, int8_t v4_i8, int8_t v5_i8) {
+   if (!(((uint8_t)6 <= v2_u8) && (v2_u8 <= (uint8_t)7))) __builtin_unreachable();
+   if (!(((int8_t)65 <= v4_i8) && (v4_i8 <= (int8_t)80))) __builtin_unreachable();
+   if (!(((int8_t)100 <= v5_i8) && (v5_i8 <= (int8_t)101))) __builtin_unreachable();
+   int8_t i0_i8 = (int8_t)(v5_i8 % v4_i8);
+   int8_t i1_i8 = (int8_t)((int8_t)i0_i8 >> (uint8_t)v2_u8);
+   return i1_i8;
+ }
+ // { dg-final { scan-tree-dump "20, 36" "evrp" } }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.dg/pr125707.c gcc-17-20260614/gcc/testsuite/gcc.dg/pr125707.c
*** gcc-17-20260607/gcc/testsuite/gcc.dg/pr125707.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.dg/pr125707.c	Sun Jun 14 22:32:11 2026
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ 
+ int
+ rshift_bit_not_int_x_x (int x)
+ {
+   return (~x) >> x;
+ }
+ 
+ long
+ rshift_bit_not_long_x_x (long x)
+ {
+   return (~x) >> x;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return -1;" 2 "optimized" } } */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.dg/pr97172-2.c gcc-17-20260614/gcc/testsuite/gcc.dg/pr97172-2.c
*** gcc-17-20260607/gcc/testsuite/gcc.dg/pr97172-2.c	Sun Jun  7 22:32:10 2026
--- gcc-17-20260614/gcc/testsuite/gcc.dg/pr97172-2.c	Sun Jun 14 22:32:11 2026
***************
*** 2,7 ****
--- 2,8 ----
     streams
     { dg-do link }
     { dg-options "-Wall -flto -fpic -shared" }
+    { dg-additional-options "-Wl,-undefined,dynamic_lookup" { target *-*-darwin* } }
     { dg-require-effective-target fpic }
     { dg-require-effective-target shared }
     { dg-require-effective-target lto } */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.dg/torture/pr125652.c gcc-17-20260614/gcc/testsuite/gcc.dg/torture/pr125652.c
*** gcc-17-20260607/gcc/testsuite/gcc.dg/torture/pr125652.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.dg/torture/pr125652.c	Sun Jun 14 22:32:11 2026
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target int32plus } */
+ 
+ #include <stdint.h>
+ 
+ int a, b, c, d;
+ 
+ void e(int64_t f, int64_t g)
+ {
+   int64_t h = 1, *i, **j;
+   while (1)
+     {
+       i = &h;
+       j = &i;
+       if (h <= h + f - ~h)
+         break;
+       *i += g;
+     }
+   c *= 2;
+   d = a >> b + d;
+ }
+ 
+ int f123()
+ {
+   e(-2147483627, 4611686018427387904);
+   return 0;
+ }
+ 
+ int main()
+ {
+   return f123();
+ }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.dg/torture/pr125653.c gcc-17-20260614/gcc/testsuite/gcc.dg/torture/pr125653.c
*** gcc-17-20260607/gcc/testsuite/gcc.dg/torture/pr125653.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.dg/torture/pr125653.c	Sun Jun 14 22:32:11 2026
***************
*** 0 ****
--- 1,26 ----
+ /* { dg-do run } */
+ 
+ int
+ main ()
+ {
+   __label__ set, neg, check;
+   void *ops[] = { &&set, &&neg, &&check };
+   int i = 0;
+   double foo = 0.0;
+ 
+ next:
+   goto *ops[i++];
+ 
+ set:
+   foo = 1.0;
+   goto next;
+ 
+ neg:
+   foo = -foo;
+   goto next;
+ 
+ check:
+   if (foo != -1.0)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.dg/torture/pr125774-1.c gcc-17-20260614/gcc/testsuite/gcc.dg/torture/pr125774-1.c
*** gcc-17-20260607/gcc/testsuite/gcc.dg/torture/pr125774-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.dg/torture/pr125774-1.c	Sun Jun 14 22:32:11 2026
***************
*** 0 ****
--- 1,48 ----
+ /* { dg-do run } */
+ /* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
+ /* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } { "" } } */
+ /* PR tree-optimization/125774 */
+ 
+ __attribute__((noipa))
+ _Bool __GIMPLE (ssa,startwith("dom2"))
+ f (int a, int b)
+ {
+   _Bool _3;
+   _Bool _4;
+   _Bool _5;
+ 
+   __BB(2):
+   _3 = a_1(D) > b_2(D);
+   _4 = b_2(D) > a_1(D);
+   _5 = _3 | _4;
+   return _5;
+ }
+ 
+ __attribute__((noipa))
+ _Bool __GIMPLE (ssa,startwith("dom2"))
+ f1 (int a, int b)
+ {
+   _Bool _3;
+   _Bool _4;
+   _Bool _5;
+ 
+   __BB(2):
+   _3 = a_1(D) > b_2(D);
+   _4 = a_1(D) < b_2(D);
+   _5 = _3 | _4;
+   return _5;
+ }
+ 
+ int main()
+ {
+   int a = 10, b = 10;
+   if (f(a,b))
+     __builtin_abort();
+   if (f1(a,b))
+     __builtin_abort();
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "return 1" "optimized" } } */
+ /* Both functions should be optimized to `a_1 != b_2`. */
+ /* { dg-final { scan-tree-dump-times "a_1.D. != b_2.D." 2 "optimized" { target __OPTIMIZE__ } } } */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.dg/torture/pr125776-1.c gcc-17-20260614/gcc/testsuite/gcc.dg/torture/pr125776-1.c
*** gcc-17-20260607/gcc/testsuite/gcc.dg/torture/pr125776-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.dg/torture/pr125776-1.c	Sun Jun 14 22:32:11 2026
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-fcompare-debug" } */
+ /* PR tree-optimization/125776 */
+ 
+ int a, b, d, e, f;
+ long c;
+ void g();
+ void h() {
+   unsigned i;
+   for (;;) {
+     unsigned j = a ? a : d;
+     i += j;
+     f = b & 40 | b > 4;
+     e = a ? a : b;
+     if (e)
+       break;
+     if (j)
+       g();
+   }
+   c = i;
+ }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.dg/torture/pr125776-2.c gcc-17-20260614/gcc/testsuite/gcc.dg/torture/pr125776-2.c
*** gcc-17-20260607/gcc/testsuite/gcc.dg/torture/pr125776-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.dg/torture/pr125776-2.c	Sun Jun 14 22:32:11 2026
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-fcompare-debug" } */
+ /* PR tree-optimization/125776 */
+ int a, b, d, e, f;
+ long c;
+ void g();
+ void h(int i) {
+   for (;;) {
+     i++;
+     int j = a  ? a : d;
+     i = i > 0 ? i : -i;
+     f = b & 40 | b > 4;
+     e = a ? a : b;
+     if (e)
+       break;
+     if (j)
+       g();
+   }
+   c = i;
+ }
+ 
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/phi-factor-binary-1.c gcc-17-20260614/gcc/testsuite/gcc.dg/tree-ssa/phi-factor-binary-1.c
*** gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/phi-factor-binary-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.dg/tree-ssa/phi-factor-binary-1.c	Sun Jun 14 22:32:11 2026
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-phiopt1-details" } */
+ 
+ /* PR tree-optimization/125557.  Both arms of the diamond apply the same binary
+    operation sharing one operand (* c), so phi-opt factors it out: the join
+    becomes t = PHI <a, b>; x = t * c -- one multiply at the merge instead of
+    one in each arm, and no extra PHI.  */
+ 
+ int
+ f (int cond, int a, int b, int c)
+ {
+   int x;
+   if (cond)
+     x = a * c;
+   else
+     x = b * c;
+   return x;
+ }
+ 
+ /* { dg-final { scan-tree-dump " changed to factor operation out from COND_EXP" "phiopt1" } } */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/phi-factor-binary-2.c gcc-17-20260614/gcc/testsuite/gcc.dg/tree-ssa/phi-factor-binary-2.c
*** gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/phi-factor-binary-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.dg/tree-ssa/phi-factor-binary-2.c	Sun Jun 14 22:32:11 2026
***************
*** 0 ****
--- 1,41 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-phiopt1-details" } */
+ 
+ /* tree-optimization/125557.  factor_out_binary_common_operand handles more than
+    one operation kind and, when several join PHIs share the differing operand,
+    factors each of them -- collapsing the arms to a single select.  */
+ 
+ /* Two PHIs share the differing operand a/b: the multiply and the add are each
+    factored out, so both arms reduce to one select of a/b.  */
+ void
+ f2 (int cond, int a, int b, int c, int d, int *p, int *q)
+ {
+   int x, y;
+   if (cond)
+     {
+       x = a * c;
+       y = a + d;
+     }
+   else
+     {
+       x = b * c;
+       y = b + d;
+     }
+   *p = x;
+   *q = y;
+ }
+ 
+ /* A shift is factored just like the arithmetic ops.  */
+ unsigned long
+ f3 (int cond, unsigned long a, unsigned long b, int s)
+ {
+   unsigned long x;
+   if (cond)
+     x = a << s;
+   else
+     x = b << s;
+   return x;
+ }
+ 
+ /* f2 factors twice (the * and the +), f3 once (the <<).  */
+ /* { dg-final { scan-tree-dump-times " changed to factor operation out from COND_EXP" 3 "phiopt1" } } */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/pr118680.c gcc-17-20260614/gcc/testsuite/gcc.dg/tree-ssa/pr118680.c
*** gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/pr118680.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.dg/tree-ssa/pr118680.c	Sun Jun 14 22:32:11 2026
***************
*** 0 ****
--- 1,33 ----
+ /* PR tree-optimization/118680 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ 
+ typedef __UINT32_TYPE__ uint32_t;
+ typedef __UINT64_TYPE__ uint64_t;
+ 
+ static inline uint64_t
+ max_u64 (uint64_t a, uint64_t b)
+ {
+   return a > b ? a : b;
+ }
+ 
+ static inline uint64_t
+ min_u64 (uint64_t a, uint64_t b)
+ {
+   return a < b ? a : b;
+ }
+ 
+ uint32_t
+ test_max (uint32_t a, uint32_t b)
+ {
+   return max_u64 (a, b);
+ }
+ 
+ uint32_t
+ test_min (uint32_t a, uint32_t b)
+ {
+   return min_u64 (a, b);
+ }
+ 
+ /* { dg-final { scan-tree-dump "MAX_EXPR <\[ab\]_\[0-9\]+\\(D\\), \[ab\]_\[0-9\]+\\(D\\)>" "optimized" } } */
+ /* { dg-final { scan-tree-dump "MIN_EXPR <\[ab\]_\[0-9\]+\\(D\\), \[ab\]_\[0-9\]+\\(D\\)>" "optimized" } } */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/pr122629-1.c gcc-17-20260614/gcc/testsuite/gcc.dg/tree-ssa/pr122629-1.c
*** gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/pr122629-1.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.dg/tree-ssa/pr122629-1.c	Sun Jun 14 22:32:11 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -fdump-tree-ifcvt-details" } */
  /* PR tree-optimization/122629 */
  
  typedef int ix4 __attribute__((vector_size(4*sizeof(int))));
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fdump-tree-ifcvt-details -fdump-tree-phiopt-details" } */
  /* PR tree-optimization/122629 */
  
  typedef int ix4 __attribute__((vector_size(4*sizeof(int))));
*************** int g(ix4 *a, int l, int *b, ix4 *c)
*** 33,36 ****
  }
  
  /* Make sure BIT_INSERT_EXPR/BIT_FIELD_REF is still factored out for the case if operand 0 is different. */
! /* { dg-final { scan-tree-dump-times "changed to factor operation out from" 2 "ifcvt" } } */
--- 33,36 ----
  }
  
  /* Make sure BIT_INSERT_EXPR/BIT_FIELD_REF is still factored out for the case if operand 0 is different. */
! /* { dg-final { scan-tree-dump-times "changed to factor operation out from" 2 "phiopt1" } } */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/recip-3.c gcc-17-20260614/gcc/testsuite/gcc.dg/tree-ssa/recip-3.c
*** gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/recip-3.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.dg/tree-ssa/recip-3.c	Sun Jun 14 22:32:12 2026
***************
*** 5,10 ****
--- 5,13 ----
     to optimize a sequence.  With a FP enabled ranger, we eliminate one of them
     earlier, causing the pass to skip this optimization.  */
  /* { dg-additional-options "-fno-thread-jumps -fno-tree-dominator-opts" } */
+ /* PHI-OPT will factor out the `/d` from the `?:` expression which means there will
+    only be 2 `/d` left so disable that. */
+ /* { dg-additional-options "-fno-ssa-phiopt" } */
  
  double F[5] = { 0.0, 0.0 }, e;
  
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/recip-5.c gcc-17-20260614/gcc/testsuite/gcc.dg/tree-ssa/recip-5.c
*** gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/recip-5.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.dg/tree-ssa/recip-5.c	Sun Jun 14 22:32:12 2026
***************
*** 1,4 ****
! /* { dg-options "-O1 -funsafe-math-optimizations -ftrapping-math -fdump-tree-recip -fdump-tree-optimized" } */
  /* { dg-do compile } */
  /* { dg-warning "'-fassociative-math' disabled" "" { target *-*-* } 0 } */
  
--- 1,4 ----
! /* { dg-options "-O1 -funsafe-math-optimizations -ftrapping-math -fdump-tree-recip -fdump-tree-optimized -fno-ssa-phiopt" } */
  /* { dg-do compile } */
  /* { dg-warning "'-fassociative-math' disabled" "" { target *-*-* } 0 } */
  
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/recip-6.c gcc-17-20260614/gcc/testsuite/gcc.dg/tree-ssa/recip-6.c
*** gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/recip-6.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.dg/tree-ssa/recip-6.c	Sun Jun 14 22:32:12 2026
***************
*** 1,4 ****
! /* { dg-options "-O1 -funsafe-math-optimizations -fno-trapping-math -fdump-tree-recip" } */
  /* { dg-do compile } */
  
  /* Test inserting in a block that does not contain a division.  */
--- 1,4 ----
! /* { dg-options "-O1 -funsafe-math-optimizations -fno-trapping-math -fdump-tree-recip -fno-ssa-phiopt" } */
  /* { dg-do compile } */
  
  /* Test inserting in a block that does not contain a division.  */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/recip-7.c gcc-17-20260614/gcc/testsuite/gcc.dg/tree-ssa/recip-7.c
*** gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/recip-7.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.dg/tree-ssa/recip-7.c	Sun Jun 14 22:32:12 2026
***************
*** 1,4 ****
! /* { dg-options "-O1 -funsafe-math-optimizations -fno-trapping-math -fdump-tree-recip" } */
  /* { dg-do compile } */
  
  /* Test inserting in a block that does not contain a division.  */
--- 1,4 ----
! /* { dg-options "-O1 -funsafe-math-optimizations -fno-trapping-math -fdump-tree-recip -fno-ssa-phiopt" } */
  /* { dg-do compile } */
  
  /* Test inserting in a block that does not contain a division.  */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/slsr-12.c gcc-17-20260614/gcc/testsuite/gcc.dg/tree-ssa/slsr-12.c
*** gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/slsr-12.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.dg/tree-ssa/slsr-12.c	Sun Jun 14 22:32:12 2026
*************** f (int s, int c)
*** 26,29 ****
    return x;
  }
  
! /* { dg-final { scan-tree-dump-times " \\* " 3 "optimized" } } */
--- 26,29 ----
    return x;
  }
  
! /* { dg-final { scan-tree-dump-times " \\* " 3 "optimized" { xfail *-*-* } } } */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/slsr-34.c gcc-17-20260614/gcc/testsuite/gcc.dg/tree-ssa/slsr-34.c
*** gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/slsr-34.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.dg/tree-ssa/slsr-34.c	Sun Jun 14 22:32:12 2026
*************** f (int c, int i)
*** 38,42 ****
    return x;
  }
  
! /* { dg-final { scan-tree-dump-times " \\* " 1 "optimized" } } */
  /* { dg-final { scan-tree-dump-times "PHI" 2 "optimized" } } */
--- 38,42 ----
    return x;
  }
  
! /* { dg-final { scan-tree-dump-times " \\* " 1 "optimized" { xfail *-*-* } } } */
  /* { dg-final { scan-tree-dump-times "PHI" 2 "optimized" } } */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.dg/vect/pr113281-5.c gcc-17-20260614/gcc/testsuite/gcc.dg/vect/pr113281-5.c
*** gcc-17-20260607/gcc/testsuite/gcc.dg/vect/pr113281-5.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.dg/vect/pr113281-5.c	Sun Jun 14 22:32:12 2026
*************** f5 (void)
*** 62,66 ****
  
  /* { dg-final { scan-tree-dump {can narrow to signed:17 without loss [^\n]+= -} "vect" } } */
  /* { dg-final { scan-tree-dump {can narrow to signed:16 without loss [^\n]+= ~} "vect" } } */
- /* { dg-final { scan-tree-dump {can narrow to signed:16 without loss [^\n]+ MIN_EXPR} "vect" } } */
- /* { dg-final { scan-tree-dump {can narrow to signed:16 without loss [^\n]+ MAX_EXPR} "vect" } } */
--- 62,64 ----
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.dg/vect/pr125567.c gcc-17-20260614/gcc/testsuite/gcc.dg/vect/pr125567.c
*** gcc-17-20260607/gcc/testsuite/gcc.dg/vect/pr125567.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.dg/vect/pr125567.c	Sun Jun 14 22:32:12 2026
***************
*** 0 ****
--- 1,40 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target vect_int } */
+ /* { dg-additional-options "-O3 -ftree-vectorize -fdump-tree-slp1-details" } */
+ 
+ typedef short i16;
+ 
+ void
+ foo (i16 *__restrict out, i16 *__restrict in, i16 x, unsigned n)
+ {
+   unsigned k = 0;
+   i16 tmp = x + 3;
+ 
+   while (k < n)
+     {
+       tmp = tmp ^ 0x3f;
+ 
+       out[k + 0]  = in[k + 0]  + tmp;
+       out[k + 1]  = in[k + 1]  + tmp;
+       out[k + 2]  = in[k + 2]  + tmp;
+       out[k + 3]  = in[k + 3]  + tmp;
+       out[k + 4]  = in[k + 4]  + tmp;
+       out[k + 5]  = in[k + 5]  + tmp;
+       out[k + 6]  = in[k + 6]  + tmp;
+       out[k + 7]  = in[k + 7]  + tmp;
+       out[k + 8]  = in[k + 8]  + tmp;
+       out[k + 9]  = in[k + 9]  + tmp;
+       out[k + 10] = in[k + 10] + tmp;
+       out[k + 11] = in[k + 11] + tmp;
+       out[k + 12] = in[k + 12] + tmp;
+       out[k + 13] = in[k + 13] + tmp;
+       out[k + 14] = in[k + 14] + tmp;
+       out[k + 15] = in[k + 15] + tmp;
+ 
+       k += 16;
+     }
+ }
+ 
+ /* { dg-final { scan-tree-dump "Re-trying with swapped operands of stmts" "slp1" } } */
+ /* { dg-final { scan-tree-dump "Using a splat of the uniform operand" "slp1" } } */
+ /* { dg-final { scan-tree-dump "optimized: basic block part vectorized" "slp1" } } */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.dg/vect/pr125646.c gcc-17-20260614/gcc/testsuite/gcc.dg/vect/pr125646.c
*** gcc-17-20260607/gcc/testsuite/gcc.dg/vect/pr125646.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.dg/vect/pr125646.c	Sun Jun 14 22:32:12 2026
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-fno-tree-fre -fno-tree-forwprop" } */
+ 
+ int a;
+ int main()
+ {
+   int c = 1;
+   while (1)
+     {
+       a = 2 * a;
+       c = -1 - 1 / c;
+       if (!c)
+ 	break;
+       a = -2 * a;
+     }
+   return 0;
+ }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.dg/vect/slp-reduc-var.c gcc-17-20260614/gcc/testsuite/gcc.dg/vect/slp-reduc-var.c
*** gcc-17-20260607/gcc/testsuite/gcc.dg/vect/slp-reduc-var.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.dg/vect/slp-reduc-var.c	Sun Jun 14 22:32:12 2026
***************
*** 0 ****
--- 1,25 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-O3 --param vect-epilogues-nomask=0" } */
+ #include <stdint-gcc.h>
+ 
+ uint64_t
+ x264_pixel_var_8x8 (uint8_t *pix, int i_stride)
+ {
+   uint32_t sum = 0, sqr = 0;
+   for (int y = 0; y < 8; y++)
+     {
+       for (int x = 0; x < 8; x++)
+ 	{
+ 	  sum += pix[x];
+ 	  sqr += pix[x] * pix[x];
+ 	}
+       pix += i_stride;
+     }
+   return sum + ((uint64_t)sqr << 32);
+ }
+ 
+ /* Verify that size-1 reductions fall back to single-lane reduction chains.  */
+ /* { dg-final { scan-tree-dump "Starting SLP discovery of reduction chain" "vect" } } */
+ /* { dg-final { scan-tree-dump-not "SLP discovery of reduction chain failed" "vect" } } */
+ /* { dg-final { scan-tree-dump-not "SLP discovery of size 2 reduction group" "vect" } } */
+ /* { dg-final { scan-tree-dump-not "SLP discovery of size 1 reduction group" "vect" } } */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.dg/vect/vect-reduc-cond-2.c gcc-17-20260614/gcc/testsuite/gcc.dg/vect/vect-reduc-cond-2.c
*** gcc-17-20260607/gcc/testsuite/gcc.dg/vect/vect-reduc-cond-2.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.dg/vect/vect-reduc-cond-2.c	Sun Jun 14 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-require-effective-target vect_int } */
  /* { dg-require-effective-target vect_condition } */
! /* { dg-additional-options "-fdump-tree-ifcvt-details" } */
  
  #include <stdarg.h>
  #include "tree-vect.h"
--- 1,6 ----
  /* { dg-require-effective-target vect_int } */
  /* { dg-require-effective-target vect_condition } */
! /* { dg-additional-options "-fdump-tree-phiopt1-details" } */
  
  #include <stdarg.h>
  #include "tree-vect.h"
*************** int main (void)
*** 59,62 ****
  }
  
  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_int_add } } } } */
! /* { dg-final { scan-tree-dump-times "changed to factor operation out from COND_EXPR" 2 "ifcvt" } } */
--- 59,62 ----
  }
  
  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_int_add } } } } */
! /* { dg-final { scan-tree-dump-times "changed to factor operation out from COND_EXPR" 2 "phiopt1" } } */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.misc-tests/outputs.exp gcc-17-20260614/gcc/testsuite/gcc.misc-tests/outputs.exp
*** gcc-17-20260607/gcc/testsuite/gcc.misc-tests/outputs.exp	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.misc-tests/outputs.exp	Sun Jun 14 22:32:12 2026
*************** if !$skip_lto {
*** 60,65 ****
--- 60,67 ----
  # created, and thus fail.  Configuring the compiler --with-gnu-ld
  # fixes this.
  set gld [check_effective_target_gld]
+ # Darwin's linker is not silent about missing -L values.
+ set ld64 [istarget *-*-darwin*]
  
  # Prepare additional options to be used for linking.
  # We do not compile to an executable, because that requires naming an output.
*************** proc outest { test sources opts dirs out
*** 185,191 ****
  	foreach og $olist {
  	    if { [string index $og 0] == "!" } {
  		global gspd ltop
! 		global gld
  		set cond [expr $og]
  		continue
  	    }
--- 187,193 ----
  	foreach og $olist {
  	    if { [string index $og 0] == "!" } {
  		global gspd ltop
! 		global gld ld64
  		set cond [expr $og]
  		continue
  	    }
*************** if !$skip_atsave {
*** 371,377 ****
  outest "$b-22 exe savetmp namedb-2" $sing "@$devnull -o $b.exe -save-temps" {} {{--0.i --0.s --0.o .args.0 !!$gld .ld1_args !0 .exe}}
  outest "$b-23 exe savetmp named2-2" $mult "@$devnull -o $b.exe -save-temps" {} {{--1.i --1.s --1.o --2.i --2.s --2.o .args.0 !!$gld .ld1_args !0 .exe}}
  outest "$b-24 exe savetmp named2-3" $mult "@$devnull -I dummy -o $b.exe -save-temps" {} {{--1.i --1.s --1.o --2.i --2.s --2.o -args.0 -args.1 .args.2 !!$gld .ld1_args !0 .exe}}
! outest "$b-25 exe savetmp named2-4" $mult "@$devnull -I dummy -L dummy -o $b.exe -save-temps" {} {{--1.i --1.s --1.o --2.i --2.s --2.o -args.0 -args.1 .args.2 .args.3 !!$gld .ld1_args !0 .exe}}
  }
  
  # Setting the main output to a dir selects it as the default aux&dump
--- 373,384 ----
  outest "$b-22 exe savetmp namedb-2" $sing "@$devnull -o $b.exe -save-temps" {} {{--0.i --0.s --0.o .args.0 !!$gld .ld1_args !0 .exe}}
  outest "$b-23 exe savetmp named2-2" $mult "@$devnull -o $b.exe -save-temps" {} {{--1.i --1.s --1.o --2.i --2.s --2.o .args.0 !!$gld .ld1_args !0 .exe}}
  outest "$b-24 exe savetmp named2-3" $mult "@$devnull -I dummy -o $b.exe -save-temps" {} {{--1.i --1.s --1.o --2.i --2.s --2.o -args.0 -args.1 .args.2 !!$gld .ld1_args !0 .exe}}
!   if $ld64 {
!     # Darwin's linker warns about missing args to -L.
!     outest "$b-25 exe savetmp named2-4" $mult "@$devnull -I dummy -L dummy -o $b.exe -save-temps -Wl,-w" {} {{--1.i --1.s --1.o --2.i --2.s --2.o -args.0 -args.1 .args.2 !!0 .args.3 !!$gld .ld1_args !0 .exe}}
!   } else {
!     outest "$b-25 exe savetmp named2-4" $mult "@$devnull -I dummy -L dummy -o $b.exe -save-temps" {} {{--1.i --1.s --1.o --2.i --2.s --2.o -args.0 -args.1 .args.2 .args.3 !!$gld .ld1_args !0 .exe}}
!   }
  }
  
  # Setting the main output to a dir selects it as the default aux&dump
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.misc-tests/pr111527.exp gcc-17-20260614/gcc/testsuite/gcc.misc-tests/pr111527.exp
*** gcc-17-20260607/gcc/testsuite/gcc.misc-tests/pr111527.exp	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.misc-tests/pr111527.exp	Sun Jun 14 22:32:12 2026
***************
*** 0 ****
--- 1,78 ----
+ # Copyright (C) 2026 Free Software Foundation, Inc.
+ # This program is free software; you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+ # the Free Software Foundation; either version 3 of the License, or
+ # (at your option) any later version.
+ #
+ # This program is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ # GNU General Public License for more details.
+ #
+ # You should have received a copy of the GNU General Public License
+ # along with GCC; see the file COPYING3.  If not see
+ # <http://www.gnu.org/licenses/>.
+ 
+ # PR driver/111527 - very long COLLECT_GCC_OPTIONS exceeding
+ # COLLECT2_OPTIONS_MAX_LENGTH.  The driver should spill
+ # the option list to a response file when it would not fit.
+ 
+ load_lib gcc-defs.exp
+ load_lib target-supports.exp
+ 
+ if { [is_remote host] } {
+     return
+ }
+ 
+ global GCC_UNDER_TEST
+ if { ![info exists GCC_UNDER_TEST] } {
+     set GCC_UNDER_TEST [find_gcc]
+ }
+ 
+ # Use @file rather than additional_flags: DejaGnu collapses very
+ # long flag strings.  The driver still expands @file into argv and
+ # builds COLLECT_GCC_OPTIONS from it, exercising the spill path.
+ set work_dir [pwd]
+ set src [file join $work_dir "pr111527.c"]
+ set rsp [file join $work_dir "pr111527.rsp"]
+ set obj [file join $work_dir "pr111527.o"]
+ 
+ set f [open $src w]
+ puts $f "int main (void) { return 0; }"
+ close $f
+ 
+ set f [open $rsp w]
+ for { set i 0 } { $i < 50 } { incr i } {
+     puts $f "-DPR111527_PADDING_$i=1"
+ }
+ close $f
+ 
+ # (1) Build must succeed.
+ set cmd "$GCC_UNDER_TEST -c $src -o $obj @$rsp"
+ verbose -log "Test 1: $cmd"
+ set status [remote_exec host $cmd]
+ set rc [lindex $status 0]
+ set out [lindex $status 1]
+ if { $rc == 0 } {
+     pass "PR111527: build with very long COLLECT_GCC_OPTIONS"
+ } else {
+     fail "PR111527: build with very long COLLECT_GCC_OPTIONS"
+     verbose -log "compiler output: $out"
+ }
+ file delete -force $obj
+ 
+ # (2) Confirm spill path engaged.
+ set cmd "$GCC_UNDER_TEST -v -c $src -o $obj @$rsp"
+ verbose -log "Test 2: $cmd"
+ set status [remote_exec host $cmd]
+ set out [lindex $status 1]
+ if { [regexp {COLLECT_GCC_OPTIONS=@[^[:space:]]+} $out] } {
+     pass "PR111527: driver spilled to @file"
+ } else {
+     fail "PR111527: driver spilled to @file"
+     verbose -log "compiler output: $out"
+ }
+ 
+ file delete -force $obj
+ file delete -force $rsp
+ file delete -force $src
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/acle/fcvt_intrinsics.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/acle/fcvt_intrinsics.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/acle/fcvt_intrinsics.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/acle/fcvt_intrinsics.c	Sun Jun 14 22:32:12 2026
***************
*** 0 ****
--- 1,166 ----
+ /* { dg-do compile } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #include <arm_acle.h>
+ #include <arm_neon.h>
+ 
+ #define CONVERT_INTRINSIC(T_FROM, T_TO, INTRINSIC)                             \
+   void convert_##INTRINSIC (T_FROM *from, T_TO *to)                            \
+   {                                                                            \
+     T_FROM from_val = *from;                                                   \
+     T_TO to_val = INTRINSIC (from_val);                                        \
+     *to = to_val;                                                              \
+   }
+ 
+ CONVERT_INTRINSIC (float32_t, int64_t, vcvts_s64_f32)
+ /*
+ ** convert_vcvts_s64_f32:
+ **...
+ **	fcvtzs	x[0-9]+, s[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float32_t, uint64_t, vcvts_u64_f32)
+ /*
+ ** convert_vcvts_u64_f32:
+ **...
+ **	fcvtzu	x[0-9]+, s[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float32_t, int64_t, vcvtns_s64_f32)
+ /*
+ ** convert_vcvtns_s64_f32:
+ **...
+ **	fcvtns	x[0-9]+, s[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float32_t, uint64_t, vcvtns_u64_f32)
+ /*
+ ** convert_vcvtns_u64_f32:
+ **...
+ **	fcvtnu	x[0-9]+, s[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float32_t, int64_t, vcvtms_s64_f32)
+ /*
+ ** convert_vcvtms_s64_f32:
+ **...
+ **	fcvtms	x[0-9]+, s[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float32_t, uint64_t, vcvtms_u64_f32)
+ /*
+ ** convert_vcvtms_u64_f32:
+ **...
+ **	fcvtmu	x[0-9]+, s[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float32_t, int64_t, vcvtps_s64_f32)
+ /*
+ ** convert_vcvtps_s64_f32:
+ **...
+ **	fcvtps	x[0-9]+, s[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float32_t, uint64_t, vcvtps_u64_f32)
+ /*
+ ** convert_vcvtps_u64_f32:
+ **...
+ **	fcvtpu	x[0-9]+, s[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float32_t, int64_t, vcvtas_s64_f32)
+ /*
+ ** convert_vcvtas_s64_f32:
+ **...
+ **	fcvtas	x[0-9]+, s[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float32_t, uint64_t, vcvtas_u64_f32)
+ /*
+ ** convert_vcvtas_u64_f32:
+ **...
+ **	fcvtau	x[0-9]+, s[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float64_t, int32_t, vcvtd_s32_f64)
+ /*
+ ** convert_vcvtd_s32_f64:
+ **...
+ **	fcvtzs	w[0-9]+, d[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float64_t, uint32_t, vcvtd_u32_f64)
+ /*
+ ** convert_vcvtd_u32_f64:
+ **...
+ **	fcvtzu	w[0-9]+, d[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float64_t, int32_t, vcvtnd_s32_f64)
+ /*
+ ** convert_vcvtnd_s32_f64:
+ **...
+ **	fcvtns	w[0-9]+, d[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float64_t, uint32_t, vcvtnd_u32_f64)
+ /*
+ ** convert_vcvtnd_u32_f64:
+ **...
+ **	fcvtnu	w[0-9]+, d[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float64_t, int32_t, vcvtmd_s32_f64)
+ /*
+ ** convert_vcvtmd_s32_f64:
+ **...
+ **	fcvtms	w[0-9]+, d[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float64_t, uint32_t, vcvtmd_u32_f64)
+ /*
+ ** convert_vcvtmd_u32_f64:
+ **...
+ **	fcvtmu	w[0-9]+, d[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float64_t, int32_t, vcvtpd_s32_f64)
+ /*
+ ** convert_vcvtpd_s32_f64:
+ **...
+ **	fcvtps	w[0-9]+, d[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float64_t, uint32_t, vcvtpd_u32_f64)
+ /*
+ ** convert_vcvtpd_u32_f64:
+ **...
+ **	fcvtpu	w[0-9]+, d[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float64_t, int32_t, vcvtad_s32_f64)
+ /*
+ ** convert_vcvtad_s32_f64:
+ **...
+ **	fcvtas	w[0-9]+, d[0-9]+
+ **...
+ */
+ 
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/acle/fprcvt.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/acle/fprcvt.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/acle/fprcvt.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/acle/fprcvt.c	Sun Jun 14 22:32:12 2026
***************
*** 0 ****
--- 1,651 ----
+ /* { dg-do compile } */
+ /* { dg-options "-save-temps -fno-inline -O1 -march=armv9-a+fprcvt" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #include <stdint.h>
+ #include <arm_fp16.h>
+ #include <arm_acle.h>
+ #include <arm_neon.h>
+ 
+ #define FORCE_FP_REG(a) asm volatile("fmov %d0, %d1" : "=w"(a) : "w"(a) :)
+ #define CONVERT_INTRINSIC(T_FROM, T_TO, INTRINSIC)                             \
+   void convert_##INTRINSIC (T_FROM *from, T_TO *to)        \
+   {                                                                            \
+     T_FROM from_val = *from;                                                   \
+     FORCE_FP_REG (from_val);                                                   \
+     T_TO to_val = INTRINSIC (from_val);                                        \
+     FORCE_FP_REG (to_val);                                                     \
+     *to = to_val;                                                              \
+   }
+ 
+ CONVERT_INTRINSIC (float32_t, int32_t, vcvts_s32_f32)
+ /*
+ ** convert_vcvts_s32_f32:
+ **...
+ **	fcvtzs	s[0-9]+, s[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float32_t, int64_t, vcvts_s64_f32)
+ /*
+ ** convert_vcvts_s64_f32:
+ **...
+ **	fcvtzs	d[0-9]+, s[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float32_t, uint32_t, vcvts_u32_f32)
+ /*
+ ** convert_vcvts_u32_f32:
+ **...
+ **	fcvtzu	s[0-9]+, s[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float32_t, uint64_t, vcvts_u64_f32)
+ /*
+ ** convert_vcvts_u64_f32:
+ **...
+ **	fcvtzu	d[0-9]+, s[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float32_t, int32_t, vcvtns_s32_f32)
+ /*
+ ** convert_vcvtns_s32_f32:
+ **...
+ **	fcvtns	s[0-9]+, s[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float32_t, int64_t, vcvtns_s64_f32)
+ /*
+ ** convert_vcvtns_s64_f32:
+ **...
+ **	fcvtns	d[0-9]+, s[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float32_t, uint32_t, vcvtns_u32_f32)
+ /*
+ ** convert_vcvtns_u32_f32:
+ **...
+ **	fcvtnu	s[0-9]+, s[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float32_t, uint64_t, vcvtns_u64_f32)
+ /*
+ ** convert_vcvtns_u64_f32:
+ **...
+ **	fcvtnu	d[0-9]+, s[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float32_t, int32_t, vcvtms_s32_f32)
+ /*
+ ** convert_vcvtms_s32_f32:
+ **...
+ **	fcvtms	s[0-9]+, s[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float32_t, int64_t, vcvtms_s64_f32)
+ /*
+ ** convert_vcvtms_s64_f32:
+ **...
+ **	fcvtms	d[0-9]+, s[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float32_t, uint32_t, vcvtms_u32_f32)
+ /*
+ ** convert_vcvtms_u32_f32:
+ **...
+ **	fcvtmu	s[0-9]+, s[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float32_t, uint64_t, vcvtms_u64_f32)
+ /*
+ ** convert_vcvtms_u64_f32:
+ **...
+ **	fcvtmu	d[0-9]+, s[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float32_t, int32_t, vcvtps_s32_f32)
+ /*
+ ** convert_vcvtps_s32_f32:
+ **...
+ **	fcvtps	s[0-9]+, s[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float32_t, int64_t, vcvtps_s64_f32)
+ /*
+ ** convert_vcvtps_s64_f32:
+ **...
+ **	fcvtps	d[0-9]+, s[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float32_t, uint32_t, vcvtps_u32_f32)
+ /*
+ ** convert_vcvtps_u32_f32:
+ **...
+ **	fcvtpu	s[0-9]+, s[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float32_t, uint64_t, vcvtps_u64_f32)
+ /*
+ ** convert_vcvtps_u64_f32:
+ **...
+ **	fcvtpu	d[0-9]+, s[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float32_t, int32_t, vcvtas_s32_f32)
+ /*
+ ** convert_vcvtas_s32_f32:
+ **...
+ **	fcvtas	s[0-9]+, s[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float32_t, int64_t, vcvtas_s64_f32)
+ /*
+ ** convert_vcvtas_s64_f32:
+ **...
+ **	fcvtas	d[0-9]+, s[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float32_t, uint32_t, vcvtas_u32_f32)
+ /*
+ ** convert_vcvtas_u32_f32:
+ **...
+ **	fcvtau	s[0-9]+, s[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float32_t, uint64_t, vcvtas_u64_f32)
+ /*
+ ** convert_vcvtas_u64_f32:
+ **...
+ **	fcvtau	d[0-9]+, s[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float64_t, int32_t, vcvtd_s32_f64)
+ /*
+ ** convert_vcvtd_s32_f64:
+ **...
+ **	fcvtzs	s[0-9]+, d[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float64_t, int64_t, vcvtd_s64_f64)
+ /*
+ ** convert_vcvtd_s64_f64:
+ **...
+ **	fcvtzs	d[0-9]+, d[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float64_t, uint32_t, vcvtd_u32_f64)
+ /*
+ ** convert_vcvtd_u32_f64:
+ **...
+ **	fcvtzu	s[0-9]+, d[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float64_t, uint64_t, vcvtd_u64_f64)
+ /*
+ ** convert_vcvtd_u64_f64:
+ **...
+ **	fcvtzu	d[0-9]+, d[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float64_t, int32_t, vcvtnd_s32_f64)
+ /*
+ ** convert_vcvtnd_s32_f64:
+ **...
+ **	fcvtns	s[0-9]+, d[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float64_t, int64_t, vcvtnd_s64_f64)
+ /*
+ ** convert_vcvtnd_s64_f64:
+ **...
+ **	fcvtns	d[0-9]+, d[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float64_t, uint32_t, vcvtnd_u32_f64)
+ /*
+ ** convert_vcvtnd_u32_f64:
+ **...
+ **	fcvtnu	s[0-9]+, d[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float64_t, uint64_t, vcvtnd_u64_f64)
+ /*
+ ** convert_vcvtnd_u64_f64:
+ **...
+ **	fcvtnu	d[0-9]+, d[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float64_t, int32_t, vcvtmd_s32_f64)
+ /*
+ ** convert_vcvtmd_s32_f64:
+ **...
+ **	fcvtms	s[0-9]+, d[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float64_t, int64_t, vcvtmd_s64_f64)
+ /*
+ ** convert_vcvtmd_s64_f64:
+ **...
+ **	fcvtms	d[0-9]+, d[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float64_t, uint32_t, vcvtmd_u32_f64)
+ /*
+ ** convert_vcvtmd_u32_f64:
+ **...
+ **	fcvtmu	s[0-9]+, d[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float64_t, uint64_t, vcvtmd_u64_f64)
+ /*
+ ** convert_vcvtmd_u64_f64:
+ **...
+ **	fcvtmu	d[0-9]+, d[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float64_t, int32_t, vcvtpd_s32_f64)
+ /*
+ ** convert_vcvtpd_s32_f64:
+ **...
+ **	fcvtps	s[0-9]+, d[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float64_t, int64_t, vcvtpd_s64_f64)
+ /*
+ ** convert_vcvtpd_s64_f64:
+ **...
+ **	fcvtps	d[0-9]+, d[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float64_t, uint32_t, vcvtpd_u32_f64)
+ /*
+ ** convert_vcvtpd_u32_f64:
+ **...
+ **	fcvtpu	s[0-9]+, d[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float64_t, uint64_t, vcvtpd_u64_f64)
+ /*
+ ** convert_vcvtpd_u64_f64:
+ **...
+ **	fcvtpu	d[0-9]+, d[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float64_t, int32_t, vcvtad_s32_f64)
+ /*
+ ** convert_vcvtad_s32_f64:
+ **...
+ **	fcvtas	s[0-9]+, d[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float64_t, int64_t, vcvtad_s64_f64)
+ /*
+ ** convert_vcvtad_s64_f64:
+ **...
+ **	fcvtas	d[0-9]+, d[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float64_t, uint32_t, vcvtad_u32_f64)
+ /*
+ ** convert_vcvtad_u32_f64:
+ **...
+ **	fcvtau	s[0-9]+, d[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float64_t, uint64_t, vcvtad_u64_f64)
+ /*
+ ** convert_vcvtad_u64_f64:
+ **...
+ **	fcvtau	d[0-9]+, d[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float16_t, int16_t, vcvth_s16_f16)
+ /*
+ ** convert_vcvth_s16_f16:
+ **...
+ **	fcvtzs	h[0-9]+, h[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float16_t, int32_t, vcvth_s32_f16)
+ /*
+ ** convert_vcvth_s32_f16:
+ **...
+ **	fcvtzs	s[0-9]+, h[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float16_t, int64_t, vcvth_s64_f16)
+ /*
+ ** convert_vcvth_s64_f16:
+ **...
+ **	fcvtzs	d[0-9]+, h[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float16_t, uint16_t, vcvth_u16_f16)
+ /*
+ ** convert_vcvth_u16_f16:
+ **...
+ **	fcvtzu	h[0-9]+, h[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float16_t, uint32_t, vcvth_u32_f16)
+ /*
+ ** convert_vcvth_u32_f16:
+ **...
+ **	fcvtzu	s[0-9]+, h[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float16_t, uint64_t, vcvth_u64_f16)
+ /*
+ ** convert_vcvth_u64_f16:
+ **...
+ **	fcvtzu	d[0-9]+, h[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float16_t, int16_t, vcvtah_s16_f16)
+ /*
+ ** convert_vcvtah_s16_f16:
+ **...
+ **	fcvtas	h[0-9]+, h[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float16_t, int32_t, vcvtah_s32_f16)
+ /*
+ ** convert_vcvtah_s32_f16:
+ **...
+ **	fcvtas	s[0-9]+, h[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float16_t, int64_t, vcvtah_s64_f16)
+ /*
+ ** convert_vcvtah_s64_f16:
+ **...
+ **	fcvtas	d[0-9]+, h[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float16_t, uint16_t, vcvtah_u16_f16)
+ /*
+ ** convert_vcvtah_u16_f16:
+ **...
+ **	fcvtau	h[0-9]+, h[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float16_t, uint32_t, vcvtah_u32_f16)
+ /*
+ ** convert_vcvtah_u32_f16:
+ **...
+ **	fcvtau	s[0-9]+, h[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float16_t, uint64_t, vcvtah_u64_f16)
+ /*
+ ** convert_vcvtah_u64_f16:
+ **...
+ **	fcvtau	d[0-9]+, h[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float16_t, int16_t, vcvtmh_s16_f16)
+ /*
+ ** convert_vcvtmh_s16_f16:
+ **...
+ **	fcvtms	h[0-9]+, h[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float16_t, int32_t, vcvtmh_s32_f16)
+ /*
+ ** convert_vcvtmh_s32_f16:
+ **...
+ **	fcvtms	s[0-9]+, h[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float16_t, int64_t, vcvtmh_s64_f16)
+ /*
+ ** convert_vcvtmh_s64_f16:
+ **...
+ **	fcvtms	d[0-9]+, h[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float16_t, uint16_t, vcvtmh_u16_f16)
+ /*
+ ** convert_vcvtmh_u16_f16:
+ **...
+ **	fcvtmu	h[0-9]+, h[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float16_t, uint32_t, vcvtmh_u32_f16)
+ /*
+ ** convert_vcvtmh_u32_f16:
+ **...
+ **	fcvtmu	s[0-9]+, h[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float16_t, uint64_t, vcvtmh_u64_f16)
+ /*
+ ** convert_vcvtmh_u64_f16:
+ **...
+ **	fcvtmu	d[0-9]+, h[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float16_t, int16_t, vcvtnh_s16_f16)
+ /*
+ ** convert_vcvtnh_s16_f16:
+ **...
+ **	fcvtns	h[0-9]+, h[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float16_t, int32_t, vcvtnh_s32_f16)
+ /*
+ ** convert_vcvtnh_s32_f16:
+ **...
+ **	fcvtns	s[0-9]+, h[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float16_t, int64_t, vcvtnh_s64_f16)
+ /*
+ ** convert_vcvtnh_s64_f16:
+ **...
+ **	fcvtns	d[0-9]+, h[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float16_t, uint16_t, vcvtnh_u16_f16)
+ /*
+ ** convert_vcvtnh_u16_f16:
+ **...
+ **	fcvtnu	h[0-9]+, h[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float16_t, uint32_t, vcvtnh_u32_f16)
+ /*
+ ** convert_vcvtnh_u32_f16:
+ **...
+ **	fcvtnu	s[0-9]+, h[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float16_t, uint64_t, vcvtnh_u64_f16)
+ /*
+ ** convert_vcvtnh_u64_f16:
+ **...
+ **	fcvtnu	d[0-9]+, h[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float16_t, int16_t, vcvtph_s16_f16)
+ /*
+ ** convert_vcvtph_s16_f16:
+ **...
+ **	fcvtps	h[0-9]+, h[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float16_t, int32_t, vcvtph_s32_f16)
+ /*
+ ** convert_vcvtph_s32_f16:
+ **...
+ **	fcvtps	s[0-9]+, h[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float16_t, int64_t, vcvtph_s64_f16)
+ /*
+ ** convert_vcvtph_s64_f16:
+ **...
+ **	fcvtps	d[0-9]+, h[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float16_t, uint16_t, vcvtph_u16_f16)
+ /*
+ ** convert_vcvtph_u16_f16:
+ **...
+ **	fcvtpu	h[0-9]+, h[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float16_t, uint32_t, vcvtph_u32_f16)
+ /*
+ ** convert_vcvtph_u32_f16:
+ **...
+ **	fcvtpu	s[0-9]+, h[0-9]+
+ **...
+ */
+ 
+ CONVERT_INTRINSIC (float16_t, uint64_t, vcvtph_u64_f16)
+ /*
+ ** convert_vcvtph_u64_f16:
+ **...
+ **	fcvtpu	d[0-9]+, h[0-9]+
+ **...
+ */
+ 
+ 
+ CONVERT_INTRINSIC (int32_t, float32_t, vcvts_f32_s32)
+ /*
+ ** convert_vcvts_f32_s32:
+ **...
+ **	scvtf	s[0-9]+, s[0-9]+
+ **...
+ */
+ CONVERT_INTRINSIC (uint32_t, float32_t, vcvts_f32_u32)
+ /*
+ ** convert_vcvts_f32_u32:
+ **...
+ **	ucvtf	s[0-9]+, s[0-9]+
+ **...
+ */
+ CONVERT_INTRINSIC (int64_t, float64_t, vcvtd_f64_s64)
+ /*
+ ** convert_vcvtd_f64_s64:
+ **...
+ **	scvtf	d[0-9]+, d[0-9]+
+ **...
+ */
+ CONVERT_INTRINSIC (uint64_t, float64_t, vcvtd_f64_u64)
+ /*
+ ** convert_vcvtd_f64_u64:
+ **...
+ **	ucvtf	d[0-9]+, d[0-9]+
+ **...
+ */
+ CONVERT_INTRINSIC (int16_t, float16_t, vcvth_f16_s16)
+ /*
+ ** convert_vcvth_f16_s16:
+ **...
+ **	scvtf	h[0-9]+, h[0-9]+
+ **...
+ */
+ CONVERT_INTRINSIC (int32_t, float16_t, vcvth_f16_s32)
+ /*
+ ** convert_vcvth_f16_s32:
+ **...
+ **	scvtf	h[0-9]+, s[0-9]+
+ **...
+ */
+ CONVERT_INTRINSIC (int64_t, float16_t, vcvth_f16_s64)
+ /*
+ ** convert_vcvth_f16_s64:
+ **...
+ **	scvtf	h[0-9]+, d[0-9]+
+ **...
+ */
+ CONVERT_INTRINSIC (uint16_t, float16_t, vcvth_f16_u16)
+ /*
+ ** convert_vcvth_f16_u16:
+ **...
+ **	ucvtf	h[0-9]+, h[0-9]+
+ **...
+ */
+ CONVERT_INTRINSIC (uint32_t, float16_t, vcvth_f16_u32)
+ /*
+ ** convert_vcvth_f16_u32:
+ **...
+ **	ucvtf	h[0-9]+, s[0-9]+
+ **...
+ */
+ CONVERT_INTRINSIC (uint64_t, float16_t, vcvth_f16_u64)
+ /*
+ ** convert_vcvth_f16_u64:
+ **...
+ **	ucvtf	h[0-9]+, d[0-9]+
+ **...
+ */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/acle/rprfm.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/acle/rprfm.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/acle/rprfm.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/acle/rprfm.c	Sun Jun 14 22:32:12 2026
***************
*** 0 ****
--- 1,107 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=armv8-a -O1 -fno-schedule-insns" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #include <arm_acle.h>
+ 
+ /* Access kind specifiers.  */
+ #define PLD 0
+ #define PST 1
+ /* Retention policies.  */
+ #define KEEP 0
+ #define STRM 1
+ 
+ /* This test is a bit awkward as we need to test the constants that get passed
+    into x1/w1. This may be a bit fragile.  */
+ 
+ /*
+ ** pldx_range:
+ **...
+ **	mov	[xw]1, 0
+ **	rprfm	PLDKEEP, [xw]1, \[x0\]
+ **	rprfm	PSTKEEP, [xw]1, \[x0\]
+ **	rprfm	PLDSTRM, [xw]1, \[x0\]
+ **	rprfm	PSTSTRM, [xw]1, \[x0\]
+ **	mov	[xw]1, 1
+ **	rprfm	PLDKEEP, [xw]1, \[x0\]
+ **	mov	[xw]1, 4194303
+ **	rprfm	PLDKEEP, [xw]1, \[x0\]
+ **	mov	[xw]1, 2097152
+ **	rprfm	PLDKEEP, [xw]1, \[x0\]
+ **	mov	[xw]1, 2097151
+ **	rprfm	PLDKEEP, [xw]1, \[x0\]
+ **	mov	[xw]1, 0
+ **	rprfm	PLDKEEP, [xw]1, \[x0\]
+ **	mov	[xw]1, 4194304
+ **	rprfm	PLDKEEP, [xw]1, \[x0\]
+ **	mov	[xw]1, 274873712640
+ **	rprfm	PLDKEEP, [xw]1, \[x0\]
+ **	mov	[xw]1, 576460752303423488
+ **	rprfm	PLDKEEP, [xw]1, \[x0\]
+ **	mov	[xw]1, 576460477425516544
+ **	rprfm	PLDKEEP, [xw]1, \[x0\]
+ **	mov	[xw]1, -1152921504606846976
+ **	rprfm	PLDKEEP, [xw]1, \[x0\]
+ **	rprfm	PLDKEEP, [xw]1, \[x0\]
+ **	rprfm	PLDKEEP, [xw]1, \[x0\]
+ **	mov	[xw]1, -2305843009213693952
+ **	rprfm	PLDKEEP, [xw]1, \[x0\]
+ **	rprfm	PLDKEEP, [xw]1, \[x0\]
+ **	mov	[xw]1, -3458764513820540928
+ **	rprfm	PLDKEEP, [xw]1, \[x0\]
+ **	mov	[xw]1, 2305843009213693952
+ **	rprfm	PLDKEEP, [xw]1, \[x0\]
+ **	mov	[xw]1, 1152921504606846976
+ **	rprfm	PLDKEEP, [xw]1, \[x0\]
+ **	rprfm	PLDKEEP, [xw]1, \[x0\]
+ **	rprfm	PLDKEEP, [xw]1, \[x0\]
+ **	mov	[xw]1, 0
+ **	rprfm	PLDKEEP, [xw]1, \[x0\]
+ **	rprfm	PLDKEEP, [xw]1, \[x0\]
+ **	rprfm	PLDKEEP, [xw]1, \[x0\]
+ **...
+ */
+ int pldx_range (void *a) {
+   __pldx_range (PLD, KEEP, 0, 1, 0, 0, a);
+   __pldx_range (PST, KEEP, 0, 1, 0, 0, a);
+   __pldx_range (PLD, STRM, 0, 1, 0, 0, a);
+   __pldx_range (PST, STRM, 0, 1, 0, 0, a);
+   __pldx_range (PLD, KEEP, 1, 1, 0, 0, a);
+   __pldx_range (PLD, KEEP, -1, 1, 0, 0, a);
+   __pldx_range (PLD, KEEP, -(1<<21), 1, 0, 0, a);
+   __pldx_range (PLD, KEEP, (1<<21)-1, 1, 0, 0, a);
+   __pldx_range (PLD, KEEP, 0, 1, 0, 0, a);
+   __pldx_range (PLD, KEEP, 0, 2, 0, 0, a);
+   __pldx_range (PLD, KEEP, 0, 65536, 0, 0, a);
+   __pldx_range (PLD, KEEP, 0, 1, -(1<<21), 0, a);
+   __pldx_range (PLD, KEEP, 0, 1, (1<<21)-1, 0, a);
+   __pldx_range (PLD, KEEP, 0, 1, 0, 1ULL, a);
+   __pldx_range (PLD, KEEP, 0, 1, 0, (1ULL << 15) - 1, a);
+   __pldx_range (PLD, KEEP, 0, 1, 0, 1ULL << 15, a);
+   __pldx_range (PLD, KEEP, 0, 1, 0, (1ULL << 16) - 1, a);
+   __pldx_range (PLD, KEEP, 0, 1, 0, 1ULL << 16, a);
+   __pldx_range (PLD, KEEP, 0, 1, 0, (1ULL << 16) + 1, a);
+   __pldx_range (PLD, KEEP, 0, 1, 0, 1ULL << 28, a);
+   __pldx_range (PLD, KEEP, 0, 1, 0, (1ULL << 28) + 1, a);
+   __pldx_range (PLD, KEEP, 0, 1, 0, (1ULL << 29) - 1, a);
+   __pldx_range (PLD, KEEP, 0, 1, 0, 1ULL << 29, a);
+   __pldx_range (PLD, KEEP, 0, 1, 0, (1ULL << 29) + 1, a);
+   __pldx_range (PLD, KEEP, 0, 1, 0, (1ULL << 30), a);
+   __pldx_range (PLD, KEEP, 0, 1, 0, (1ULL << 31), a);
+ }
+ 
+ /*
+ ** pld_range:
+ **...
+ **	rprfm	PLDKEEP, x1, \[x0\]
+ **	rprfm	PSTKEEP, x1, \[x0\]
+ **	rprfm	PLDSTRM, x1, \[x0\]
+ **	rprfm	PSTSTRM, x1, \[x0\]
+ **...
+ */
+ int pld_range (void *a, uint64_t m) {
+   __pld_range (PLD, KEEP, m, a);
+   __pld_range (PST, KEEP, m, a);
+   __pld_range (PLD, STRM, m, a);
+   __pld_range (PST, STRM, m, a);
+ }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/acle/rprfm_error.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/acle/rprfm_error.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/acle/rprfm_error.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/acle/rprfm_error.c	Sun Jun 14 22:32:12 2026
***************
*** 0 ****
--- 1,31 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=armv8-a -O2" } */
+ 
+ #include <arm_acle.h>
+ 
+ /* Access kind specifiers.  */
+ #define PLD 0
+ #define PST 1
+ /* Retention policies.  */
+ #define KEEP 0
+ #define STRM 1
+ 
+ int test (void *a, uint64_t m) {
+   __pld_range (2, KEEP, m, a);                        /* { dg-error "argument 1 must be a constant immediate in range \\\[0,1\\\]" } */
+   __pld_range (-1, KEEP, m, a);                       /* { dg-error "argument 1 must be a constant immediate in range \\\[0,1\\\]" } */
+   __pld_range (PLD, 2, m, a);                         /* { dg-error "argument 2 must be a constant immediate in range \\\[0,1\\\]" } */
+   __pld_range (PLD, -1, m, a);                        /* { dg-error "argument 2 must be a constant immediate in range \\\[0,1\\\]" } */
+ 
+   __pldx_range (2, KEEP, 0, 1, 0, 0, a);              /* { dg-error "argument 1 must be a constant immediate in range \\\[0,1\\\]" } */
+   __pldx_range (PLD, 2, 0, 1, 0, 0, a);               /* { dg-error "argument 2 must be a constant immediate in range \\\[0,1\\\]" } */
+   __pldx_range (-1, KEEP, 0, 1, 0, 0, a);             /* { dg-error "argument 1 must be a constant immediate in range \\\[0,1\\\]" } */
+   __pldx_range (PLD, -1, 0, 1, 0, 0, a);              /* { dg-error "argument 2 must be a constant immediate in range \\\[0,1\\\]" } */
+ 
+   __pldx_range (PLD, KEEP, -(1<<21) - 1, 1, 0, 0, a); /* { dg-error "argument 3 must be a constant immediate in range \\\[-2097152,2097151\\\]" } */
+   __pldx_range (PLD, KEEP, (1<<21), 1, 0, 0, a);      /* { dg-error "argument 3 must be a constant immediate in range \\\[-2097152,2097151\\\]" } */
+   __pldx_range (PLD, KEEP, 0, 0, 0, 0, a);            /* { dg-error "argument 4 must be a constant immediate in range \\\[1,65536\\\]" } */
+   __pldx_range (PLD, KEEP, 0, (1<<16) + 1, 0, 0, a);  /* { dg-error "argument 4 must be a constant immediate in range \\\[1,65536\\\]" } */
+   __pldx_range (PLD, KEEP, 0, 1, -(1<<21)-1, 0, a);   /* { dg-error "argument 5 must be a constant immediate in range \\\[-2097152,2097151\\\]" } */
+   __pldx_range (PLD, KEEP, 0, 1, (1<<21), 0, a);      /* { dg-error "argument 5 must be a constant immediate in range \\\[-2097152,2097151\\\]" } */
+   __pldx_range (PLD, KEEP, 0, 1, 0, -1, a);     /* { dg-error "argument 6 must be a constant immediate in range \\\[0,9223372036854775806\\\]" } */
+ }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/cinc_common_1.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/cinc_common_1.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/cinc_common_1.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/cinc_common_1.c	Sun Jun 14 22:32:12 2026
*************** bardi (long long x)
*** 27,34 ****
    return x > 100 ? x + 4 : x + 3;
  }
  
! /* { dg-final { scan-assembler-times "cs?inc\tw\[0-9\]*" 2 } } */
! /* { dg-final { scan-assembler-times "cs?inc\tx\[0-9\]*" 2 } } */
  
  int
  main (void)
--- 27,35 ----
    return x > 100 ? x + 4 : x + 3;
  }
  
! /* xfailed due to PR112304. */
! /* { dg-final { scan-assembler-times "cs?inc\tw\[0-9\]*" 2 { xfail *-*-* } } } */
! /* { dg-final { scan-assembler-times "cs?inc\tx\[0-9\]*" 2 { xfail *-*-* } } } */
  
  int
  main (void)
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/fprcvt.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/fprcvt.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/fprcvt.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/fprcvt.c	Sun Jun 14 22:32:12 2026
***************
*** 0 ****
--- 1,147 ----
+ /* { dg-do compile } */
+ /* { dg-options "-save-temps -fno-inline -O2 -march=armv9-a+fprcvt" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #include <stdint.h>
+ #include <arm_fp16.h>
+ #include <arm_acle.h>
+ #include <arm_neon.h>
+ 
+ #define FORCE_FP_REG(a) asm volatile("fmov %d0, %d1" : "=w"(a) : "w"(a) :)
+ #define CONVERT(T_FROM, T_TO)                                                  \
+   void convert_##T_FROM##_to_##T_TO (T_FROM *from, T_TO *to)                      \
+   {                                                                            \
+     T_FROM from_val = *from;                                                   \
+     FORCE_FP_REG (from_val);                                                       \
+     T_TO to_val = (T_TO) from_val;                                             \
+     FORCE_FP_REG (to_val);                                                         \
+     *to = to_val;                                                              \
+   }
+ 
+ /*
+ ** convert_float16_t_to_int32_t:
+ **...
+ **	fcvtzs	s[0-9]+, h[0-9]+
+ **...
+ */
+ CONVERT (float16_t, int32_t)
+ 
+ /*
+ ** convert_float64_t_to_int32_t:
+ **...
+ **	fcvtzs	s[0-9]+, d[0-9]+
+ **...
+ */
+ CONVERT (float64_t, int32_t)
+ 
+ /*
+ ** convert_float16_t_to_int64_t:
+ **...
+ **	fcvtzs	d[0-9]+, h[0-9]+
+ **...
+ */
+ CONVERT (float16_t, int64_t)
+ 
+ /*
+ ** convert_float32_t_to_int64_t:
+ **...
+ **	fcvtzs	d[0-9]+, s[0-9]+
+ **...
+ */
+ CONVERT (float32_t, int64_t)
+ 
+ /*
+ ** convert_float16_t_to_uint32_t:
+ **...
+ **	fcvtzu	s[0-9]+, h[0-9]+
+ **...
+ */
+ CONVERT (float16_t, uint32_t)
+ 
+ /*
+ ** convert_float64_t_to_uint32_t:
+ **...
+ **	fcvtzu	s[0-9]+, d[0-9]+
+ **...
+ */
+ CONVERT (float64_t, uint32_t)
+ 
+ /*
+ ** convert_float16_t_to_uint64_t:
+ **...
+ **	fcvtzu	d[0-9]+, h[0-9]+
+ **...
+ */
+ CONVERT (float16_t, uint64_t)
+ 
+ /*
+ ** convert_float32_t_to_uint64_t:
+ **...
+ **	fcvtzu	d[0-9]+, s[0-9]+
+ **...
+ */
+ CONVERT (float32_t, uint64_t)
+ 
+ /*
+ ** convert_int32_t_to_float16_t:
+ **...
+ **	scvtf	h[0-9]+, s[0-9]+
+ **...
+ */
+ CONVERT (int32_t, float16_t)
+ 
+ /*
+ ** convert_int32_t_to_float64_t:
+ **...
+ **	scvtf	d[0-9]+, s[0-9]+
+ **...
+ */
+ CONVERT (int32_t, float64_t)
+ 
+ /*
+ ** convert_int64_t_to_float16_t:
+ **...
+ **	scvtf	h[0-9]+, d[0-9]+
+ **...
+ */
+ CONVERT (int64_t, float16_t)
+ 
+ /*
+ ** convert_int64_t_to_float32_t:
+ **...
+ **	scvtf	s[0-9]+, d[0-9]+
+ **...
+ */
+ CONVERT (int64_t, float32_t)
+ 
+ /*
+ ** convert_uint32_t_to_float16_t:
+ **...
+ **	ucvtf	h[0-9]+, s[0-9]+
+ **...
+ */
+ CONVERT (uint32_t, float16_t)
+ 
+ /*
+ ** convert_uint32_t_to_float64_t:
+ **...
+ **	ucvtf	d[0-9]+, s[0-9]+
+ **...
+ */
+ CONVERT (uint32_t, float64_t)
+ 
+ /*
+ ** convert_uint64_t_to_float16_t:
+ **...
+ **	ucvtf	h[0-9]+, d[0-9]+
+ **...
+ */
+ CONVERT (uint64_t, float16_t)
+ 
+ /*
+ ** convert_uint64_t_to_float32_t:
+ **...
+ **	ucvtf	s[0-9]+, d[0-9]+
+ **...
+ */
+ CONVERT (uint64_t, float32_t)
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/fprcvt.x gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/fprcvt.x
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/fprcvt.x	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/fprcvt.x	Sun Jun 14 22:32:12 2026
***************
*** 0 ****
--- 1,87 ----
+ extern GPF SUFFIX(trunc) (GPF);
+ extern GPF SUFFIX(ceil) (GPF);
+ extern GPF SUFFIX(floor) (GPF);
+ extern GPF SUFFIX(round) (GPF);
+ 
+ #define FORCE_FP_REG(a) asm volatile("fmov %d0, %d1" : "=w"(a) : "w"(a) :)
+ 
+ GPI test1a (GPF x) {
+   FORCE_FP_REG(x);
+   GPI res = SUFFIX(__builtin_trunc)(x);
+   FORCE_FP_REG(res);
+   return res;
+ }
+ 
+ GPI test1b (GPF x)
+ {
+   FORCE_FP_REG(x);
+   GPI res = SUFFIX(trunc)(x);
+   FORCE_FP_REG(res);
+   return res;
+ }
+ 
+ GPI test2a (GPF x)
+ {
+   FORCE_FP_REG(x);
+   GPI res = SUFFIX(__builtin_lceil)(x);
+   FORCE_FP_REG(res);
+   return res;
+ }
+ 
+ GPI test2b (GPF x)
+ {
+   FORCE_FP_REG(x);
+   GPI res = SUFFIX(ceil)(x);
+   FORCE_FP_REG(res);
+   return res;
+ }
+ 
+ GPI test2c (GPF x)
+ {
+   FORCE_FP_REG(x);
+   GPI res = SUFFIX(__builtin_ceil)(x);
+   FORCE_FP_REG(res);
+   return res;
+ }
+ 
+ GPI test3a (GPF x)
+ {
+   FORCE_FP_REG(x);
+   GPI res = SUFFIX(__builtin_lfloor)(x);
+   FORCE_FP_REG(res);
+   return res;
+ }
+ 
+ GPI test3b (GPF x)
+ {
+   FORCE_FP_REG(x);
+   GPI res = SUFFIX(floor)(x);
+   FORCE_FP_REG(res);
+   return res;
+ }
+ 
+ GPI test3c (GPF x)
+ {
+   FORCE_FP_REG(x);
+   GPI res = SUFFIX(__builtin_floor)(x);
+   FORCE_FP_REG(res);
+   return res;
+ }
+ 
+ GPI test4a (GPF x)
+ {
+   FORCE_FP_REG(x);
+   GPI res = SUFFIX(__builtin_round)(x);
+   FORCE_FP_REG(res);
+   return res;
+ }
+ 
+ GPI test4b (GPF x)
+ {
+   FORCE_FP_REG(x);
+   GPI res = SUFFIX(round)(x);
+   FORCE_FP_REG(res);
+   return res;
+ }
+ 
+ 
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/fprcvt_float32_int32.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/fprcvt_float32_int32.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/fprcvt_float32_int32.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/fprcvt_float32_int32.c	Sun Jun 14 22:32:12 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -march=armv9-a+fprcvt" } */
+ 
+ #include <stdint.h>
+ #include <arm_neon.h>
+ 
+ #define GPF float32_t
+ #define SUFFIX(x) x##f
+ #define GPI int32_t
+ 
+ #include "fprcvt.x"
+ 
+ /* { dg-final { scan-assembler-times "fcvtzs\ts\[0-9\]+, *s\[0-9\]" 2 } } */
+ /* { dg-final { scan-assembler-times "fcvtps\td\[0-9\]+, *s\[0-9\]" 1 } } */
+ /* { dg-final { scan-assembler-times "fcvtps\ts\[0-9\]+, *s\[0-9\]" 2 } } */
+ /* { dg-final { scan-assembler-times "fcvtms\td\[0-9\]+, *s\[0-9\]" 1 } } */
+ /* { dg-final { scan-assembler-times "fcvtms\ts\[0-9\]+, *s\[0-9\]" 2 } } */
+ /* { dg-final { scan-assembler-times "fcvtas\ts\[0-9\]+, *s\[0-9\]" 2 } } */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/fprcvt_float32_int64.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/fprcvt_float32_int64.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/fprcvt_float32_int64.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/fprcvt_float32_int64.c	Sun Jun 14 22:32:12 2026
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -march=armv9-a+fprcvt" } */
+ 
+ #include <stdint.h>
+ #include <arm_neon.h>
+ 
+ #define GPF float32_t
+ #define SUFFIX(x) x##f
+ #define GPI int64_t
+ 
+ #include "fprcvt.x"
+ 
+ /* { dg-final { scan-assembler-times "fcvtzs\td\[0-9\]+, *s\[0-9\]" 2 } } */
+ /* { dg-final { scan-assembler-times "fcvtps\td\[0-9\]+, *s\[0-9\]" 3 } } */
+ /* { dg-final { scan-assembler-times "fcvtms\td\[0-9\]+, *s\[0-9\]" 3 } } */
+ /* { dg-final { scan-assembler-times "fcvtas\td\[0-9\]+, *s\[0-9\]" 2 } } */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/fprcvt_float32_uint32.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/fprcvt_float32_uint32.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/fprcvt_float32_uint32.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/fprcvt_float32_uint32.c	Sun Jun 14 22:32:12 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -march=armv9-a+fprcvt" } */
+ 
+ #include <stdint.h>
+ #include <arm_neon.h>
+ 
+ #define GPF float32_t
+ #define SUFFIX(x) x##f
+ #define GPI uint32_t
+ 
+ #include "fprcvt.x"
+ 
+ /* { dg-final { scan-assembler-times "fcvtzu\ts\[0-9\]+, *s\[0-9\]" 2 } } */
+ /* { dg-final { scan-assembler-times "fcvtps\td\[0-9\]+, *s\[0-9\]" 1 } } */
+ /* { dg-final { scan-assembler-times "fcvtpu\ts\[0-9\]+, *s\[0-9\]" 2 } } */
+ /* { dg-final { scan-assembler-times "fcvtms\td\[0-9\]+, *s\[0-9\]" 1 } } */
+ /* { dg-final { scan-assembler-times "fcvtmu\ts\[0-9\]+, *s\[0-9\]" 2 } } */
+ /* { dg-final { scan-assembler-times "fcvtau\ts\[0-9\]+, *s\[0-9\]" 2 } } */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/fprcvt_float32_uint64.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/fprcvt_float32_uint64.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/fprcvt_float32_uint64.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/fprcvt_float32_uint64.c	Sun Jun 14 22:32:12 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -march=armv9-a+fprcvt" } */
+ 
+ #include <stdint.h>
+ #include <arm_neon.h>
+ 
+ #define GPF float32_t
+ #define SUFFIX(x) x##f
+ #define GPI uint64_t
+ 
+ #include "fprcvt.x"
+ 
+ /* { dg-final { scan-assembler-times "fcvtzu\td\[0-9\]+, *s\[0-9\]" 2 } } */
+ /* { dg-final { scan-assembler-times "fcvtps\td\[0-9\]+, *s\[0-9\]" 1 } } *
+ /* { dg-final { scan-assembler-times "fcvtpu\td\[0-9\]+, *s\[0-9\]" 2 } } */
+ /* { dg-final { scan-assembler-times "fcvtms\td\[0-9\]+, *s\[0-9\]" 1 } } */
+ /* { dg-final { scan-assembler-times "fcvtmu\td\[0-9\]+, *s\[0-9\]" 2 } } */
+ /* { dg-final { scan-assembler-times "fcvtau\td\[0-9\]+, *s\[0-9\]" 2 } } */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/fprcvt_float64_int32.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/fprcvt_float64_int32.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/fprcvt_float64_int32.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/fprcvt_float64_int32.c	Sun Jun 14 22:32:12 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -march=armv9-a+fprcvt" } */
+ 
+ #include <stdint.h>
+ #include <arm_neon.h>
+ 
+ #define GPF float64_t
+ #define SUFFIX(x) x
+ #define GPI int32_t
+ 
+ #include "fprcvt.x"
+ 
+ /* { dg-final { scan-assembler-times "fcvtzs\ts\[0-9\]+, *d\[0-9\]" 2 } } */
+ /* { dg-final { scan-assembler-times "fcvtps\td\[0-9\]+, *d\[0-9\]" 1 } } */
+ /* { dg-final { scan-assembler-times "fcvtps\ts\[0-9\]+, *d\[0-9\]" 2 } } */
+ /* { dg-final { scan-assembler-times "fcvtms\td\[0-9\]+, *d\[0-9\]" 1 } } */
+ /* { dg-final { scan-assembler-times "fcvtms\ts\[0-9\]+, *d\[0-9\]" 2 } } */
+ /* { dg-final { scan-assembler-times "fcvtas\ts\[0-9\]+, *d\[0-9\]" 2 } } */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/fprcvt_float64_int64.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/fprcvt_float64_int64.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/fprcvt_float64_int64.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/fprcvt_float64_int64.c	Sun Jun 14 22:32:12 2026
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -march=armv9-a+fprcvt" } */
+ 
+ #include <stdint.h>
+ #include <arm_neon.h>
+ 
+ #define GPF float64_t
+ #define SUFFIX(x) x
+ #define GPI int64_t
+ 
+ #include "fprcvt.x"
+ 
+ /* { dg-final { scan-assembler-times "fcvtzs\td\[0-9\]+, *d\[0-9\]" 2 } } */
+ /* { dg-final { scan-assembler-times "fcvtps\td\[0-9\]+, *d\[0-9\]" 3 } } */
+ /* { dg-final { scan-assembler-times "fcvtms\td\[0-9\]+, *d\[0-9\]" 3 } } */
+ /* { dg-final { scan-assembler-times "fcvtas\td\[0-9\]+, *d\[0-9\]" 2 } } */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/fprcvt_float64_uint32.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/fprcvt_float64_uint32.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/fprcvt_float64_uint32.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/fprcvt_float64_uint32.c	Sun Jun 14 22:32:12 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -march=armv9-a+fprcvt" } */
+ 
+ #include <stdint.h>
+ #include <arm_neon.h>
+ 
+ #define GPF float64_t
+ #define SUFFIX(x) x
+ #define GPI uint32_t
+ 
+ #include "fprcvt.x"
+ 
+ /* { dg-final { scan-assembler-times "fcvtzu\ts\[0-9\]+, *d\[0-9\]" 2 } } */
+ /* { dg-final { scan-assembler-times "fcvtps\td\[0-9\]+, *d\[0-9\]" 1 } } *
+ /* { dg-final { scan-assembler-times "fcvtpu\ts\[0-9\]+, *d\[0-9\]" 2 } } */
+ /* { dg-final { scan-assembler-times "fcvtms\td\[0-9\]+, *d\[0-9\]" 1 } } */
+ /* { dg-final { scan-assembler-times "fcvtmu\ts\[0-9\]+, *d\[0-9\]" 2 } } */
+ /* { dg-final { scan-assembler-times "fcvtau\ts\[0-9\]+, *d\[0-9\]" 2 } } */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/fprcvt_float64_uint64.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/fprcvt_float64_uint64.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/fprcvt_float64_uint64.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/fprcvt_float64_uint64.c	Sun Jun 14 22:32:12 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -march=armv9-a+fprcvt" } */
+ 
+ #include <stdint.h>
+ #include <arm_neon.h>
+ 
+ #define GPF float64_t
+ #define SUFFIX(x) x
+ #define GPI uint64_t
+ 
+ #include "fprcvt.x"
+ 
+ /* { dg-final { scan-assembler-times "fcvtzu\td\[0-9\]+, *d\[0-9\]" 2 } } */
+ /* { dg-final { scan-assembler-times "fcvtpu\td\[0-9\]+, *d\[0-9\]" 2 } } */
+ /* { dg-final { scan-assembler-times "fcvtps\td\[0-9\]+, *d\[0-9\]" 1 } } */
+ /* { dg-final { scan-assembler-times "fcvtmu\td\[0-9\]+, *d\[0-9\]" 2 } } */
+ /* { dg-final { scan-assembler-times "fcvtms\td\[0-9\]+, *d\[0-9\]" 1 } } */
+ /* { dg-final { scan-assembler-times "fcvtau\td\[0-9\]+, *d\[0-9\]" 2 } } */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/fuse_cmp_csel-1.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/fuse_cmp_csel-1.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/fuse_cmp_csel-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/fuse_cmp_csel-1.c	Sun Jun 14 22:32:12 2026
***************
*** 0 ****
--- 1,35 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mcpu=neoverse-v2" } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ /*
+ ** f1:
+ **	...
+ **	cmp	w[0-9]+, w[0-9]+
+ **	csel	w[0-9]+, w[0-9]+, w[0-9]+, gt
+ **	add	w[0-9]+, w[0-9]+, w[0-9]+
+ **	ret
+ */
+ int f1 (int a, int b, int c, int d, int e)
+ {
+   int cmp = a > b;
+   int add1 = c + d;
+   int add2 = c + e;
+   return cmp ? add1 : add2;
+ }
+ 
+ /*
+ ** f2:
+ **	...
+ **	cmp	x[0-9]+, x[0-9]+
+ **	csel	x[0-9]+, x[0-9]+, x[0-9]+, gt
+ **	add	x[0-9]+, x[0-9]+, x[0-9]+
+ **	ret
+ */
+ long long f2 (long long a, long long b, long long c, long long d, long long e)
+ {
+  long long cmp = a > b;
+   long long add1 = c + d;
+   long long add2 = c + e;
+   return cmp ? add1 : add2;
+ }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/fuse_cmp_csel.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/fuse_cmp_csel.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/fuse_cmp_csel.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/fuse_cmp_csel.c	Sun Jun 14 22:32:12 2026
***************
*** 2,12 ****
  /* { dg-options "-O2 -mcpu=neoverse-v2" } */
  /* { dg-final { check-function-bodies "**" "" } } */
  
  /*
! ** f1:
  **	...
  **	cmp	w[0-9]+, w[0-9]+
! **	csel	w[0-9]+, w[0-9]+, w[0-9]+, le
  **	ret
  */
  int f1 (int a, int b, int c)
--- 2,17 ----
  /* { dg-options "-O2 -mcpu=neoverse-v2" } */
  /* { dg-final { check-function-bodies "**" "" } } */
  
+ /* IRA moves constant moves between cmp and csel
+    and never recovers since they use the same register
+    #s. */
+ 
  /*
! ** f1: { xfail *-*-* }
  **	...
  **	cmp	w[0-9]+, w[0-9]+
! **	csel	w[0-9]+, w[0-9]+, w[0-9]+, gt
! **	add	w[0-9]+, w[0-9]+, w[0-9]+
  **	ret
  */
  int f1 (int a, int b, int c)
*************** int f1 (int a, int b, int c)
*** 18,27 ****
  }
  
  /*
! ** f2:
  **	...
  **	cmp	x[0-9]+, x[0-9]+
! **	csel	x[0-9]+, x[0-9]+, x[0-9]+, le
  **	ret
  */
  long long f2 (long long a, long long b, long long c)
--- 23,33 ----
  }
  
  /*
! ** f2: { xfail *-*-* }
  **	...
  **	cmp	x[0-9]+, x[0-9]+
! **	csel	x[0-9]+, x[0-9]+, x[0-9]+, gt
! **	add	x[0-9]+, x[0-9]+, x[0-9]+
  **	ret
  */
  long long f2 (long long a, long long b, long long c)
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/ldp_stp_16.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/ldp_stp_16.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/ldp_stp_16.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/ldp_stp_16.c	Sun Jun 14 22:32:12 2026
*************** CONS2_FN (2, float);
*** 80,93 ****
  
  /*
  ** cons2_4_float:	{ target aarch64_little_endian }
! **	uzp1	v([0-9])\.2s, v0\.2s, v1\.2s
  **	stp	d\1, d\1, \[x0\]
  **	stp	d\1, d\1, \[x0, #?16\]
  **	ret
  */
  /*
  ** cons2_4_float:	{ target aarch64_big_endian }
! **	uzp1	v([0-9])\.2s, v1\.2s, v0\.2s
  **	stp	d\1, d\1, \[x0\]
  **	stp	d\1, d\1, \[x0, #?16\]
  **	ret
--- 80,93 ----
  
  /*
  ** cons2_4_float:	{ target aarch64_little_endian }
! **	zip1	v([0-9])\.2s, v0\.2s, v1\.2s
  **	stp	d\1, d\1, \[x0\]
  **	stp	d\1, d\1, \[x0, #?16\]
  **	ret
  */
  /*
  ** cons2_4_float:	{ target aarch64_big_endian }
! **	zip1	v([0-9])\.2s, v1\.2s, v0\.2s
  **	stp	d\1, d\1, \[x0\]
  **	stp	d\1, d\1, \[x0, #?16\]
  **	ret
*************** CONS2_FN (4, float);
*** 96,102 ****
  
  /*
  ** cons2_8_float:
! **	uzp1	v1\.2s, v0\.2s, v1\.2s
  **	dup	v([0-9]+)\.2d, v1\.d\[0\]
  **	stp	q\1, q\1, \[x0\]
  **	stp	q\1, q\1, \[x0, #?32\]
--- 96,102 ----
  
  /*
  ** cons2_8_float:
! **	zip1	v1\.2s, v0\.2s, v1\.2s
  **	dup	v([0-9]+)\.2d, v1\.d\[0\]
  **	stp	q\1, q\1, \[x0\]
  **	stp	q\1, q\1, \[x0, #?32\]
*************** CONS4_FN (2, float);
*** 124,131 ****
  
  /*
  ** cons4_4_float:
! **	uzp1	v[0-9]+\.2s[^\n]+
! **	uzp1	v[0-9]+\.2s[^\n]+
  **	zip1	v([0-9]+).4s, [^\n]+
  **	stp	q\1, q\1, \[x0\]
  **	stp	q\1, q\1, \[x0, #?32\]
--- 124,131 ----
  
  /*
  ** cons4_4_float:
! **	zip1	v[0-9]+\.2s[^\n]+
! **	zip1	v[0-9]+\.2s[^\n]+
  **	zip1	v([0-9]+).4s, [^\n]+
  **	stp	q\1, q\1, \[x0\]
  **	stp	q\1, q\1, \[x0, #?32\]
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/phi-factor-binary-1.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/phi-factor-binary-1.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/phi-factor-binary-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/phi-factor-binary-1.c	Sun Jun 14 22:32:12 2026
***************
*** 0 ****
--- 1,60 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ 
+ /* tree-optimization/125557: factor_out_binary_common_operand computes a binary
+    operation shared between a PHI's two arms once, behind a single select,
+    instead of once per arm -- and when several join PHIs share the differing
+    operand it collapses them to one select, which also removes the
+    data-dependent branch.  These are the asm wins of patch 1 on its own.  */
+ 
+ /* f1: one multiply behind a select, not one per arm.  */
+ int
+ f1 (int cond, int a, int b, int c)
+ {
+   int x;
+   if (cond)
+     x = a * c;
+   else
+     x = b * c;
+   return x;
+ }
+ 
+ /* f3: one shift, not one per arm (snappy's address-arithmetic shape).  */
+ unsigned long
+ f3 (int cond, unsigned long a, unsigned long b, int s)
+ {
+   unsigned long x;
+   if (cond)
+     x = a << s;
+   else
+     x = b << s;
+   return x;
+ }
+ 
+ /* f2: two results share the differing operand (a/b): one select feeds both, so
+    only one multiply and one add remain and the diamond is branchless.  */
+ void
+ f2 (int cond, int a, int b, int c, int d, int *p, int *q)
+ {
+   int x, y;
+   if (cond)
+     {
+       x = a * c;
+       y = a + d;
+     }
+   else
+     {
+       x = b * c;
+       y = b + d;
+     }
+   *p = x;
+   *q = y;
+ }
+ 
+ /* f1 and f2 each keep a single multiply (two without the factoring).  */
+ /* { dg-final { scan-assembler-times {\tmul\t} 2 } } */
+ /* f3 keeps a single shift (two without the factoring).  */
+ /* { dg-final { scan-assembler-times {\tlsl\t} 1 } } */
+ /* Each diamond becomes a branchless select; no data-dependent branch remains.  */
+ /* { dg-final { scan-assembler-not {\tcbn?z\t} } } */
+ /* { dg-final { scan-assembler-not {\tb\.[a-z]} } } */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/pr109072_1.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/pr109072_1.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/pr109072_1.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/pr109072_1.c	Sun Jun 14 22:32:12 2026
*************** f32x2_1 (float32_t x)
*** 54,60 ****
  
  /*
  ** f32x2_2:
! **	uzp1	v0\.2s, v0\.2s, v1\.2s
  **	ret
  */
  float32x2_t
--- 54,60 ----
  
  /*
  ** f32x2_2:
! **	zip1	v0\.2s, v0\.2s, v1\.2s
  **	ret
  */
  float32x2_t
*************** f64x2_1 (float64_t x)
*** 166,172 ****
  
  /*
  ** f64x2_2:
! **	uzp1	v0\.2d, v0\.2d, v1\.2d
  **	ret
  */
  float64x2_t
--- 166,172 ----
  
  /*
  ** f64x2_2:
! **	zip1	v0\.2d, v0\.2d, v1\.2d
  **	ret
  */
  float64x2_t
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/pr113926.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/pr113926.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/pr113926.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/pr113926.c	Sun Jun 14 22:32:12 2026
***************
*** 0 ****
--- 1,34 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ 
+ typedef signed char v16qi __attribute__((vector_size(16)));
+ typedef short v8hi __attribute__((vector_size(16)));
+ typedef int v4si __attribute__((vector_size(16)));
+ 
+ v16qi
+ f_qi (void)
+ {
+   return (v16qi)
+     { 3, 3, 3, 3, 3, 3, 3, 3,
+       0, 0, 0, 0, 0, 0, 0, 0 };
+ }
+ 
+ v8hi
+ f_hi (void)
+ {
+   return (v8hi)
+     { 2, 2, 2, 2,
+       0, 0, 0, 0 };
+ }
+ 
+ v4si
+ f_si (void)
+ {
+   return (v4si)
+     { 1, 1, 0, 0 };
+ }
+ 
+ /* { dg-final { scan-assembler-times {\tmovi\tv[0-9]+\.8b, 0x3} 1 } } */
+ /* { dg-final { scan-assembler-times {\tmovi\tv[0-9]+\.4h, 0x2} 1 } } */
+ /* { dg-final { scan-assembler-times {\tmovi\tv[0-9]+\.2s, 0x1} 1 } } */
+ /* { dg-final { scan-assembler-not {\tldr\tq[0-9]+,} } } */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/pr113926_1.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/pr113926_1.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/pr113926_1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/pr113926_1.c	Sun Jun 14 22:32:12 2026
***************
*** 0 ****
--- 1,44 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -march=armv8.2-a+fp16" } */
+ 
+ typedef float  v2sf  __attribute__((vector_size(8)));
+ typedef float  v4sf  __attribute__((vector_size(16)));
+ typedef double v2df  __attribute__((vector_size(16)));
+ typedef __fp16 v4hf  __attribute__((vector_size(8)));
+ typedef __fp16 v8hf  __attribute__((vector_size(16)));
+ 
+ v2sf
+ f_v2sf (void)
+ {
+   return (v2sf){ 1.0f, 1.0f };
+ }
+ 
+ v4sf
+ f_v4sf (void)
+ {
+   return (v4sf){ 1.0f, 1.0f, 0.0f, 0.0f };
+ }
+ 
+ v2df
+ f_v2df (void)
+ {
+   return (v2df){ 1.0, 0.0 };
+ }
+ 
+ v4hf
+ f_v4hf (void)
+ {
+   return (v4hf){ (__fp16)1.0, (__fp16)1.0, (__fp16)1.0, (__fp16)1.0 };
+ }
+ 
+ v8hf
+ f_v8hf (void)
+ {
+   return (v8hf){ (__fp16)1.0, (__fp16)1.0, (__fp16)1.0, (__fp16)1.0, 0, 0, 0, 0 };
+ }
+ 
+ /* Each function should use fmov, not a literal pool load.  */
+ /* { dg-final { scan-assembler-times {fmov[ \t]+v[0-9]+[.]2s,[ \t]+1[.]0e[+]0} 2 } } */
+ /* { dg-final { scan-assembler-times {fmov[ \t]+v[0-9]+[.]4h,[ \t]+1[.]0e[+]0} 2 } } */
+ /* { dg-final { scan-assembler-times {\tfmov\td[0-9]+,} 1 } } */
+ /* { dg-final { scan-assembler-not  {\tldr\t[sdq][0-9]+, =} } } */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/pr125597.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/pr125597.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/pr125597.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/pr125597.c	Sun Jun 14 22:32:12 2026
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -mcpu=c1-ultra -mautovec-preference=sve-only" } */
+ 
+ _BitInt(256) b;
+ 
+ void
+ foo()
+ {
+   for (;;)
+     b ^= 0x100000000020000000000000000000000000000000000wb;
+ }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_4.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_4.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_4.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_4.c	Sun Jun 14 22:32:12 2026
***************
*** 383,385 ****
--- 383,390 ----
  #ifndef __ARM_FEATURE_FAMINMAX
  #error Foo
  #endif
+ 
+ #pragma GCC target "arch=armv8-a+sve2+ssve-fexpa"
+ #ifndef __ARM_FEATURE_SSVE_FEXPA
+ #error Foo
+ #endif
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_5.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_5.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_5.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_5.c	Sun Jun 14 22:32:12 2026
***************
*** 214,219 ****
--- 214,230 ----
  #endif
  #pragma GCC pop_options
  
+ #pragma GCC push_options
+ #pragma GCC target "arch=armv8-a+sve2+ssve-bitperm"
+ #ifndef __ARM_FEATURE_SSVE_BITPERM
+ #error Foo
+ #endif
+ 
+ #ifndef __ARM_FEATURE_SVE2_BITPERM
+ #error Foo
+ #endif
+ #pragma GCC pop_options
+ 
  int
  foo (int a)
  {
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/simd/mf8_data_1.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/simd/mf8_data_1.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/simd/mf8_data_1.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/simd/mf8_data_1.c	Sun Jun 14 22:32:12 2026
*************** mfloat8x16_t test_bslq3(mfloat8x16_t a,
*** 66,72 ****
  
  /*
  ** test_combine1:
! **	uzp1	v0.2d, v1.2d, v2.2d
  **	ret
  */
  mfloat8x16_t test_combine1(mfloat8_t a, mfloat8x8_t b, mfloat8x8_t c)
--- 66,72 ----
  
  /*
  ** test_combine1:
! **	zip1	v0.2d, v1.2d, v2.2d
  **	ret
  */
  mfloat8x16_t test_combine1(mfloat8_t a, mfloat8x8_t b, mfloat8x8_t c)
*************** mfloat8x8_t test_tbl1(mfloat8x8_t a, uin
*** 1397,1403 ****
  
  /*
  ** test_tbl2:
! **	uzp1	v([0-9]+).2d, v0.2d, v1.2d
  **	tbl	v0.8b, {v\1.16b}, v2.8b
  **	ret
  */
--- 1397,1403 ----
  
  /*
  ** test_tbl2:
! **	zip1	v([0-9]+).2d, v0.2d, v1.2d
  **	tbl	v0.8b, {v\1.16b}, v2.8b
  **	ret
  */
*************** mfloat8x8_t test_tbl2(mfloat8x8x2_t a, u
*** 1408,1414 ****
  
  /*
  ** test_tbl3:
! **	uzp1	v([0-9]+).2d, v0.2d, v1.2d
  **	fmov	d([0-9]+), d2
  **	tbl	v0.8b, {v\1.16b( - |, )v\2.16b}, v3.8b
  **	ret
--- 1408,1414 ----
  
  /*
  ** test_tbl3:
! **	zip1	v([0-9]+).2d, v0.2d, v1.2d
  **	fmov	d([0-9]+), d2
  **	tbl	v0.8b, {v\1.16b( - |, )v\2.16b}, v3.8b
  **	ret
*************** mfloat8x8_t test_tbl3(mfloat8x8x3_t a, u
*** 1420,1427 ****
  
  /*
  ** test_tbl4:
! **	uzp1	v([0-9]+).2d, v0.2d, v1.2d
! **	uzp1	v([0-9]+).2d, v2.2d, v3.2d
  **	tbl	v0.8b, {v\1.16b( - |, )v\2.16b}, v4.8b
  **	ret
  */
--- 1420,1427 ----
  
  /*
  ** test_tbl4:
! **	zip1	v([0-9]+).2d, v0.2d, v1.2d
! **	zip1	v([0-9]+).2d, v2.2d, v3.2d
  **	tbl	v0.8b, {v\1.16b( - |, )v\2.16b}, v4.8b
  **	ret
  */
*************** mfloat8x8_t test_tbx1(mfloat8x8_t a, mfl
*** 1526,1532 ****
  
  /*
  ** test_tbx2:
! **	uzp1	v([0-9]+).2d, v1.2d, v2.2d
  **	tbx	v[0-9]+.8b, {v\1.16b}, v3.8b
  **	ret
  */
--- 1526,1532 ----
  
  /*
  ** test_tbx2:
! **	zip1	v([0-9]+).2d, v1.2d, v2.2d
  **	tbx	v[0-9]+.8b, {v\1.16b}, v3.8b
  **	ret
  */
*************** mfloat8x8_t test_tbx2(mfloat8x8_t a, mfl
*** 1537,1543 ****
  
  /*
  ** test_tbx3:
! **	uzp1	v([0-9]+).2d, v1.2d, v2.2d
  **	fmov	d([0-9]+), d3
  **	tbl	v[0-9]+.8b, {v\1.16b( - |, )v\2.16b}, v4.8b
  **	...
--- 1537,1543 ----
  
  /*
  ** test_tbx3:
! **	zip1	v([0-9]+).2d, v1.2d, v2.2d
  **	fmov	d([0-9]+), d3
  **	tbl	v[0-9]+.8b, {v\1.16b( - |, )v\2.16b}, v4.8b
  **	...
*************** mfloat8x8_t test_tbx3(mfloat8x8_t a, mfl
*** 1552,1559 ****
  
  /*
  ** test_tbx4:
! **	uzp1	v([0-9]+).2d, v1.2d, v2.2d
! **	uzp1	v([0-9]+).2d, v3.2d, v4.2d
  **	tbx	v0.8b, {v\1.16b( - |, )v\2.16b}, v5.8b
  **	ret
  */
--- 1552,1559 ----
  
  /*
  ** test_tbx4:
! **	zip1	v([0-9]+).2d, v1.2d, v2.2d
! **	zip1	v([0-9]+).2d, v3.2d, v4.2d
  **	tbx	v0.8b, {v\1.16b( - |, )v\2.16b}, v5.8b
  **	ret
  */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bdep_u16.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bdep_u16.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bdep_u16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bdep_u16.c	Sun Jun 14 22:32:12 2026
***************
*** 0 ****
--- 1,74 ----
+ /* { dg-do assemble { target aarch64_asm_ssve-bitperm_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_ssve-bitperm_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ 
+ #pragma GCC target "+sve2+ssve-bitperm"
+ 
+ /*
+ ** bdep_u16_tied1:
+ **	bdep	z0\.h, z0\.h, z1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (bdep_u16_tied1, svuint16_t,
+ 		z0 = svbdep_u16 (z0, z1),
+ 		z0 = svbdep (z0, z1))
+ 
+ /*
+ ** bdep_u16_tied2:
+ **	bdep	z0\.h, z1\.h, z0\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (bdep_u16_tied2, svuint16_t,
+ 		z0 = svbdep_u16 (z1, z0),
+ 		z0 = svbdep (z1, z0))
+ 
+ /*
+ ** bdep_u16_untied:
+ **	bdep	z0\.h, z1\.h, z2\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (bdep_u16_untied, svuint16_t,
+ 		z0 = svbdep_u16 (z1, z2),
+ 		z0 = svbdep (z1, z2))
+ 
+ /*
+ ** bdep_w0_u16_tied1:
+ **	mov	(z[0-9]+\.h), w0
+ **	bdep	z0\.h, z0\.h, \1
+ **	ret
+ */
+ TEST_UNIFORM_ZX (bdep_w0_u16_tied1, svuint16_t, uint16_t,
+ 		 z0 = svbdep_n_u16 (z0, x0),
+ 		 z0 = svbdep (z0, x0))
+ 
+ /*
+ ** bdep_w0_u16_untied:
+ **	mov	(z[0-9]+\.h), w0
+ **	bdep	z0\.h, z1\.h, \1
+ **	ret
+ */
+ TEST_UNIFORM_ZX (bdep_w0_u16_untied, svuint16_t, uint16_t,
+ 		 z0 = svbdep_n_u16 (z1, x0),
+ 		 z0 = svbdep (z1, x0))
+ 
+ /*
+ ** bdep_11_u16_tied1:
+ **	mov	(z[0-9]+\.h), #11
+ **	bdep	z0\.h, z0\.h, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (bdep_11_u16_tied1, svuint16_t,
+ 		z0 = svbdep_n_u16 (z0, 11),
+ 		z0 = svbdep (z0, 11))
+ 
+ /*
+ ** bdep_11_u16_untied:
+ **	mov	(z[0-9]+\.h), #11
+ **	bdep	z0\.h, z1\.h, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (bdep_11_u16_untied, svuint16_t,
+ 		z0 = svbdep_n_u16 (z1, 11),
+ 		z0 = svbdep (z1, 11))
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bdep_u32.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bdep_u32.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bdep_u32.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bdep_u32.c	Sun Jun 14 22:32:12 2026
***************
*** 0 ****
--- 1,74 ----
+ /* { dg-do assemble { target aarch64_asm_ssve-bitperm_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_ssve-bitperm_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ 
+ #pragma GCC target "+sve2+ssve-bitperm"
+ 
+ /*
+ ** bdep_u32_tied1:
+ **	bdep	z0\.s, z0\.s, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (bdep_u32_tied1, svuint32_t,
+ 		z0 = svbdep_u32 (z0, z1),
+ 		z0 = svbdep (z0, z1))
+ 
+ /*
+ ** bdep_u32_tied2:
+ **	bdep	z0\.s, z1\.s, z0\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (bdep_u32_tied2, svuint32_t,
+ 		z0 = svbdep_u32 (z1, z0),
+ 		z0 = svbdep (z1, z0))
+ 
+ /*
+ ** bdep_u32_untied:
+ **	bdep	z0\.s, z1\.s, z2\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (bdep_u32_untied, svuint32_t,
+ 		z0 = svbdep_u32 (z1, z2),
+ 		z0 = svbdep (z1, z2))
+ 
+ /*
+ ** bdep_w0_u32_tied1:
+ **	mov	(z[0-9]+\.s), w0
+ **	bdep	z0\.s, z0\.s, \1
+ **	ret
+ */
+ TEST_UNIFORM_ZX (bdep_w0_u32_tied1, svuint32_t, uint32_t,
+ 		 z0 = svbdep_n_u32 (z0, x0),
+ 		 z0 = svbdep (z0, x0))
+ 
+ /*
+ ** bdep_w0_u32_untied:
+ **	mov	(z[0-9]+\.s), w0
+ **	bdep	z0\.s, z1\.s, \1
+ **	ret
+ */
+ TEST_UNIFORM_ZX (bdep_w0_u32_untied, svuint32_t, uint32_t,
+ 		 z0 = svbdep_n_u32 (z1, x0),
+ 		 z0 = svbdep (z1, x0))
+ 
+ /*
+ ** bdep_11_u32_tied1:
+ **	mov	(z[0-9]+\.s), #11
+ **	bdep	z0\.s, z0\.s, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (bdep_11_u32_tied1, svuint32_t,
+ 		z0 = svbdep_n_u32 (z0, 11),
+ 		z0 = svbdep (z0, 11))
+ 
+ /*
+ ** bdep_11_u32_untied:
+ **	mov	(z[0-9]+\.s), #11
+ **	bdep	z0\.s, z1\.s, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (bdep_11_u32_untied, svuint32_t,
+ 		z0 = svbdep_n_u32 (z1, 11),
+ 		z0 = svbdep (z1, 11))
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bdep_u64.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bdep_u64.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bdep_u64.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bdep_u64.c	Sun Jun 14 22:32:12 2026
***************
*** 0 ****
--- 1,74 ----
+ /* { dg-do assemble { target aarch64_asm_ssve-bitperm_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_ssve-bitperm_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ 
+ #pragma GCC target "+sve2+ssve-bitperm"
+ 
+ /*
+ ** bdep_u64_tied1:
+ **	bdep	z0\.d, z0\.d, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (bdep_u64_tied1, svuint64_t,
+ 		z0 = svbdep_u64 (z0, z1),
+ 		z0 = svbdep (z0, z1))
+ 
+ /*
+ ** bdep_u64_tied2:
+ **	bdep	z0\.d, z1\.d, z0\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (bdep_u64_tied2, svuint64_t,
+ 		z0 = svbdep_u64 (z1, z0),
+ 		z0 = svbdep (z1, z0))
+ 
+ /*
+ ** bdep_u64_untied:
+ **	bdep	z0\.d, z1\.d, z2\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (bdep_u64_untied, svuint64_t,
+ 		z0 = svbdep_u64 (z1, z2),
+ 		z0 = svbdep (z1, z2))
+ 
+ /*
+ ** bdep_x0_u64_tied1:
+ **	mov	(z[0-9]+\.d), x0
+ **	bdep	z0\.d, z0\.d, \1
+ **	ret
+ */
+ TEST_UNIFORM_ZX (bdep_x0_u64_tied1, svuint64_t, uint64_t,
+ 		 z0 = svbdep_n_u64 (z0, x0),
+ 		 z0 = svbdep (z0, x0))
+ 
+ /*
+ ** bdep_x0_u64_untied:
+ **	mov	(z[0-9]+\.d), x0
+ **	bdep	z0\.d, z1\.d, \1
+ **	ret
+ */
+ TEST_UNIFORM_ZX (bdep_x0_u64_untied, svuint64_t, uint64_t,
+ 		 z0 = svbdep_n_u64 (z1, x0),
+ 		 z0 = svbdep (z1, x0))
+ 
+ /*
+ ** bdep_11_u64_tied1:
+ **	mov	(z[0-9]+\.d), #11
+ **	bdep	z0\.d, z0\.d, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (bdep_11_u64_tied1, svuint64_t,
+ 		z0 = svbdep_n_u64 (z0, 11),
+ 		z0 = svbdep (z0, 11))
+ 
+ /*
+ ** bdep_11_u64_untied:
+ **	mov	(z[0-9]+\.d), #11
+ **	bdep	z0\.d, z1\.d, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (bdep_11_u64_untied, svuint64_t,
+ 		z0 = svbdep_n_u64 (z1, 11),
+ 		z0 = svbdep (z1, 11))
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bdep_u8.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bdep_u8.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bdep_u8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bdep_u8.c	Sun Jun 14 22:32:12 2026
***************
*** 0 ****
--- 1,74 ----
+ /* { dg-do assemble { target aarch64_asm_ssve-bitperm_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_ssve-bitperm_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ 
+ #pragma GCC target "+sve2+ssve-bitperm"
+ 
+ /*
+ ** bdep_u8_tied1:
+ **	bdep	z0\.b, z0\.b, z1\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (bdep_u8_tied1, svuint8_t,
+ 		z0 = svbdep_u8 (z0, z1),
+ 		z0 = svbdep (z0, z1))
+ 
+ /*
+ ** bdep_u8_tied2:
+ **	bdep	z0\.b, z1\.b, z0\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (bdep_u8_tied2, svuint8_t,
+ 		z0 = svbdep_u8 (z1, z0),
+ 		z0 = svbdep (z1, z0))
+ 
+ /*
+ ** bdep_u8_untied:
+ **	bdep	z0\.b, z1\.b, z2\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (bdep_u8_untied, svuint8_t,
+ 		z0 = svbdep_u8 (z1, z2),
+ 		z0 = svbdep (z1, z2))
+ 
+ /*
+ ** bdep_w0_u8_tied1:
+ **	mov	(z[0-9]+\.b), w0
+ **	bdep	z0\.b, z0\.b, \1
+ **	ret
+ */
+ TEST_UNIFORM_ZX (bdep_w0_u8_tied1, svuint8_t, uint8_t,
+ 		 z0 = svbdep_n_u8 (z0, x0),
+ 		 z0 = svbdep (z0, x0))
+ 
+ /*
+ ** bdep_w0_u8_untied:
+ **	mov	(z[0-9]+\.b), w0
+ **	bdep	z0\.b, z1\.b, \1
+ **	ret
+ */
+ TEST_UNIFORM_ZX (bdep_w0_u8_untied, svuint8_t, uint8_t,
+ 		 z0 = svbdep_n_u8 (z1, x0),
+ 		 z0 = svbdep (z1, x0))
+ 
+ /*
+ ** bdep_11_u8_tied1:
+ **	mov	(z[0-9]+\.b), #11
+ **	bdep	z0\.b, z0\.b, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (bdep_11_u8_tied1, svuint8_t,
+ 		z0 = svbdep_n_u8 (z0, 11),
+ 		z0 = svbdep (z0, 11))
+ 
+ /*
+ ** bdep_11_u8_untied:
+ **	mov	(z[0-9]+\.b), #11
+ **	bdep	z0\.b, z1\.b, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (bdep_11_u8_untied, svuint8_t,
+ 		z0 = svbdep_n_u8 (z1, 11),
+ 		z0 = svbdep (z1, 11))
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bext_u16.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bext_u16.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bext_u16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bext_u16.c	Sun Jun 14 22:32:12 2026
***************
*** 0 ****
--- 1,74 ----
+ /* { dg-do assemble { target aarch64_asm_ssve-bitperm_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_ssve-bitperm_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ 
+ #pragma GCC target "+sve2+ssve-bitperm"
+ 
+ /*
+ ** bext_u16_tied1:
+ **	bext	z0\.h, z0\.h, z1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (bext_u16_tied1, svuint16_t,
+ 		z0 = svbext_u16 (z0, z1),
+ 		z0 = svbext (z0, z1))
+ 
+ /*
+ ** bext_u16_tied2:
+ **	bext	z0\.h, z1\.h, z0\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (bext_u16_tied2, svuint16_t,
+ 		z0 = svbext_u16 (z1, z0),
+ 		z0 = svbext (z1, z0))
+ 
+ /*
+ ** bext_u16_untied:
+ **	bext	z0\.h, z1\.h, z2\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (bext_u16_untied, svuint16_t,
+ 		z0 = svbext_u16 (z1, z2),
+ 		z0 = svbext (z1, z2))
+ 
+ /*
+ ** bext_w0_u16_tied1:
+ **	mov	(z[0-9]+\.h), w0
+ **	bext	z0\.h, z0\.h, \1
+ **	ret
+ */
+ TEST_UNIFORM_ZX (bext_w0_u16_tied1, svuint16_t, uint16_t,
+ 		 z0 = svbext_n_u16 (z0, x0),
+ 		 z0 = svbext (z0, x0))
+ 
+ /*
+ ** bext_w0_u16_untied:
+ **	mov	(z[0-9]+\.h), w0
+ **	bext	z0\.h, z1\.h, \1
+ **	ret
+ */
+ TEST_UNIFORM_ZX (bext_w0_u16_untied, svuint16_t, uint16_t,
+ 		 z0 = svbext_n_u16 (z1, x0),
+ 		 z0 = svbext (z1, x0))
+ 
+ /*
+ ** bext_11_u16_tied1:
+ **	mov	(z[0-9]+\.h), #11
+ **	bext	z0\.h, z0\.h, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (bext_11_u16_tied1, svuint16_t,
+ 		z0 = svbext_n_u16 (z0, 11),
+ 		z0 = svbext (z0, 11))
+ 
+ /*
+ ** bext_11_u16_untied:
+ **	mov	(z[0-9]+\.h), #11
+ **	bext	z0\.h, z1\.h, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (bext_11_u16_untied, svuint16_t,
+ 		z0 = svbext_n_u16 (z1, 11),
+ 		z0 = svbext (z1, 11))
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bext_u32.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bext_u32.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bext_u32.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bext_u32.c	Sun Jun 14 22:32:12 2026
***************
*** 0 ****
--- 1,74 ----
+ /* { dg-do assemble { target aarch64_asm_ssve-bitperm_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_ssve-bitperm_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ 
+ #pragma GCC target "+sve2+ssve-bitperm"
+ 
+ /*
+ ** bext_u32_tied1:
+ **	bext	z0\.s, z0\.s, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (bext_u32_tied1, svuint32_t,
+ 		z0 = svbext_u32 (z0, z1),
+ 		z0 = svbext (z0, z1))
+ 
+ /*
+ ** bext_u32_tied2:
+ **	bext	z0\.s, z1\.s, z0\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (bext_u32_tied2, svuint32_t,
+ 		z0 = svbext_u32 (z1, z0),
+ 		z0 = svbext (z1, z0))
+ 
+ /*
+ ** bext_u32_untied:
+ **	bext	z0\.s, z1\.s, z2\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (bext_u32_untied, svuint32_t,
+ 		z0 = svbext_u32 (z1, z2),
+ 		z0 = svbext (z1, z2))
+ 
+ /*
+ ** bext_w0_u32_tied1:
+ **	mov	(z[0-9]+\.s), w0
+ **	bext	z0\.s, z0\.s, \1
+ **	ret
+ */
+ TEST_UNIFORM_ZX (bext_w0_u32_tied1, svuint32_t, uint32_t,
+ 		 z0 = svbext_n_u32 (z0, x0),
+ 		 z0 = svbext (z0, x0))
+ 
+ /*
+ ** bext_w0_u32_untied:
+ **	mov	(z[0-9]+\.s), w0
+ **	bext	z0\.s, z1\.s, \1
+ **	ret
+ */
+ TEST_UNIFORM_ZX (bext_w0_u32_untied, svuint32_t, uint32_t,
+ 		 z0 = svbext_n_u32 (z1, x0),
+ 		 z0 = svbext (z1, x0))
+ 
+ /*
+ ** bext_11_u32_tied1:
+ **	mov	(z[0-9]+\.s), #11
+ **	bext	z0\.s, z0\.s, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (bext_11_u32_tied1, svuint32_t,
+ 		z0 = svbext_n_u32 (z0, 11),
+ 		z0 = svbext (z0, 11))
+ 
+ /*
+ ** bext_11_u32_untied:
+ **	mov	(z[0-9]+\.s), #11
+ **	bext	z0\.s, z1\.s, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (bext_11_u32_untied, svuint32_t,
+ 		z0 = svbext_n_u32 (z1, 11),
+ 		z0 = svbext (z1, 11))
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bext_u64.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bext_u64.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bext_u64.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bext_u64.c	Sun Jun 14 22:32:12 2026
***************
*** 0 ****
--- 1,74 ----
+ /* { dg-do assemble { target aarch64_asm_ssve-bitperm_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_ssve-bitperm_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ 
+ #pragma GCC target "+sve2+ssve-bitperm"
+ 
+ /*
+ ** bext_u64_tied1:
+ **	bext	z0\.d, z0\.d, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (bext_u64_tied1, svuint64_t,
+ 		z0 = svbext_u64 (z0, z1),
+ 		z0 = svbext (z0, z1))
+ 
+ /*
+ ** bext_u64_tied2:
+ **	bext	z0\.d, z1\.d, z0\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (bext_u64_tied2, svuint64_t,
+ 		z0 = svbext_u64 (z1, z0),
+ 		z0 = svbext (z1, z0))
+ 
+ /*
+ ** bext_u64_untied:
+ **	bext	z0\.d, z1\.d, z2\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (bext_u64_untied, svuint64_t,
+ 		z0 = svbext_u64 (z1, z2),
+ 		z0 = svbext (z1, z2))
+ 
+ /*
+ ** bext_x0_u64_tied1:
+ **	mov	(z[0-9]+\.d), x0
+ **	bext	z0\.d, z0\.d, \1
+ **	ret
+ */
+ TEST_UNIFORM_ZX (bext_x0_u64_tied1, svuint64_t, uint64_t,
+ 		 z0 = svbext_n_u64 (z0, x0),
+ 		 z0 = svbext (z0, x0))
+ 
+ /*
+ ** bext_x0_u64_untied:
+ **	mov	(z[0-9]+\.d), x0
+ **	bext	z0\.d, z1\.d, \1
+ **	ret
+ */
+ TEST_UNIFORM_ZX (bext_x0_u64_untied, svuint64_t, uint64_t,
+ 		 z0 = svbext_n_u64 (z1, x0),
+ 		 z0 = svbext (z1, x0))
+ 
+ /*
+ ** bext_11_u64_tied1:
+ **	mov	(z[0-9]+\.d), #11
+ **	bext	z0\.d, z0\.d, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (bext_11_u64_tied1, svuint64_t,
+ 		z0 = svbext_n_u64 (z0, 11),
+ 		z0 = svbext (z0, 11))
+ 
+ /*
+ ** bext_11_u64_untied:
+ **	mov	(z[0-9]+\.d), #11
+ **	bext	z0\.d, z1\.d, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (bext_11_u64_untied, svuint64_t,
+ 		z0 = svbext_n_u64 (z1, 11),
+ 		z0 = svbext (z1, 11))
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bext_u8.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bext_u8.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bext_u8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bext_u8.c	Sun Jun 14 22:32:12 2026
***************
*** 0 ****
--- 1,74 ----
+ /* { dg-do assemble { target aarch64_asm_ssve-bitperm_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_ssve-bitperm_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ 
+ #pragma GCC target "+sve2+ssve-bitperm"
+ 
+ /*
+ ** bext_u8_tied1:
+ **	bext	z0\.b, z0\.b, z1\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (bext_u8_tied1, svuint8_t,
+ 		z0 = svbext_u8 (z0, z1),
+ 		z0 = svbext (z0, z1))
+ 
+ /*
+ ** bext_u8_tied2:
+ **	bext	z0\.b, z1\.b, z0\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (bext_u8_tied2, svuint8_t,
+ 		z0 = svbext_u8 (z1, z0),
+ 		z0 = svbext (z1, z0))
+ 
+ /*
+ ** bext_u8_untied:
+ **	bext	z0\.b, z1\.b, z2\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (bext_u8_untied, svuint8_t,
+ 		z0 = svbext_u8 (z1, z2),
+ 		z0 = svbext (z1, z2))
+ 
+ /*
+ ** bext_w0_u8_tied1:
+ **	mov	(z[0-9]+\.b), w0
+ **	bext	z0\.b, z0\.b, \1
+ **	ret
+ */
+ TEST_UNIFORM_ZX (bext_w0_u8_tied1, svuint8_t, uint8_t,
+ 		 z0 = svbext_n_u8 (z0, x0),
+ 		 z0 = svbext (z0, x0))
+ 
+ /*
+ ** bext_w0_u8_untied:
+ **	mov	(z[0-9]+\.b), w0
+ **	bext	z0\.b, z1\.b, \1
+ **	ret
+ */
+ TEST_UNIFORM_ZX (bext_w0_u8_untied, svuint8_t, uint8_t,
+ 		 z0 = svbext_n_u8 (z1, x0),
+ 		 z0 = svbext (z1, x0))
+ 
+ /*
+ ** bext_11_u8_tied1:
+ **	mov	(z[0-9]+\.b), #11
+ **	bext	z0\.b, z0\.b, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (bext_11_u8_tied1, svuint8_t,
+ 		z0 = svbext_n_u8 (z0, 11),
+ 		z0 = svbext (z0, 11))
+ 
+ /*
+ ** bext_11_u8_untied:
+ **	mov	(z[0-9]+\.b), #11
+ **	bext	z0\.b, z1\.b, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (bext_11_u8_untied, svuint8_t,
+ 		z0 = svbext_n_u8 (z1, 11),
+ 		z0 = svbext (z1, 11))
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bgrp_u16.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bgrp_u16.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bgrp_u16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bgrp_u16.c	Sun Jun 14 22:32:12 2026
***************
*** 0 ****
--- 1,74 ----
+ /* { dg-do assemble { target aarch64_asm_ssve-bitperm_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_ssve-bitperm_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ 
+ #pragma GCC target "+sve2+ssve-bitperm"
+ 
+ /*
+ ** bgrp_u16_tied1:
+ **	bgrp	z0\.h, z0\.h, z1\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (bgrp_u16_tied1, svuint16_t,
+ 		z0 = svbgrp_u16 (z0, z1),
+ 		z0 = svbgrp (z0, z1))
+ 
+ /*
+ ** bgrp_u16_tied2:
+ **	bgrp	z0\.h, z1\.h, z0\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (bgrp_u16_tied2, svuint16_t,
+ 		z0 = svbgrp_u16 (z1, z0),
+ 		z0 = svbgrp (z1, z0))
+ 
+ /*
+ ** bgrp_u16_untied:
+ **	bgrp	z0\.h, z1\.h, z2\.h
+ **	ret
+ */
+ TEST_UNIFORM_Z (bgrp_u16_untied, svuint16_t,
+ 		z0 = svbgrp_u16 (z1, z2),
+ 		z0 = svbgrp (z1, z2))
+ 
+ /*
+ ** bgrp_w0_u16_tied1:
+ **	mov	(z[0-9]+\.h), w0
+ **	bgrp	z0\.h, z0\.h, \1
+ **	ret
+ */
+ TEST_UNIFORM_ZX (bgrp_w0_u16_tied1, svuint16_t, uint16_t,
+ 		 z0 = svbgrp_n_u16 (z0, x0),
+ 		 z0 = svbgrp (z0, x0))
+ 
+ /*
+ ** bgrp_w0_u16_untied:
+ **	mov	(z[0-9]+\.h), w0
+ **	bgrp	z0\.h, z1\.h, \1
+ **	ret
+ */
+ TEST_UNIFORM_ZX (bgrp_w0_u16_untied, svuint16_t, uint16_t,
+ 		 z0 = svbgrp_n_u16 (z1, x0),
+ 		 z0 = svbgrp (z1, x0))
+ 
+ /*
+ ** bgrp_11_u16_tied1:
+ **	mov	(z[0-9]+\.h), #11
+ **	bgrp	z0\.h, z0\.h, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (bgrp_11_u16_tied1, svuint16_t,
+ 		z0 = svbgrp_n_u16 (z0, 11),
+ 		z0 = svbgrp (z0, 11))
+ 
+ /*
+ ** bgrp_11_u16_untied:
+ **	mov	(z[0-9]+\.h), #11
+ **	bgrp	z0\.h, z1\.h, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (bgrp_11_u16_untied, svuint16_t,
+ 		z0 = svbgrp_n_u16 (z1, 11),
+ 		z0 = svbgrp (z1, 11))
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bgrp_u32.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bgrp_u32.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bgrp_u32.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bgrp_u32.c	Sun Jun 14 22:32:12 2026
***************
*** 0 ****
--- 1,74 ----
+ /* { dg-do assemble { target aarch64_asm_ssve-bitperm_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_ssve-bitperm_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ 
+ #pragma GCC target "+sve2+ssve-bitperm"
+ 
+ /*
+ ** bgrp_u32_tied1:
+ **	bgrp	z0\.s, z0\.s, z1\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (bgrp_u32_tied1, svuint32_t,
+ 		z0 = svbgrp_u32 (z0, z1),
+ 		z0 = svbgrp (z0, z1))
+ 
+ /*
+ ** bgrp_u32_tied2:
+ **	bgrp	z0\.s, z1\.s, z0\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (bgrp_u32_tied2, svuint32_t,
+ 		z0 = svbgrp_u32 (z1, z0),
+ 		z0 = svbgrp (z1, z0))
+ 
+ /*
+ ** bgrp_u32_untied:
+ **	bgrp	z0\.s, z1\.s, z2\.s
+ **	ret
+ */
+ TEST_UNIFORM_Z (bgrp_u32_untied, svuint32_t,
+ 		z0 = svbgrp_u32 (z1, z2),
+ 		z0 = svbgrp (z1, z2))
+ 
+ /*
+ ** bgrp_w0_u32_tied1:
+ **	mov	(z[0-9]+\.s), w0
+ **	bgrp	z0\.s, z0\.s, \1
+ **	ret
+ */
+ TEST_UNIFORM_ZX (bgrp_w0_u32_tied1, svuint32_t, uint32_t,
+ 		 z0 = svbgrp_n_u32 (z0, x0),
+ 		 z0 = svbgrp (z0, x0))
+ 
+ /*
+ ** bgrp_w0_u32_untied:
+ **	mov	(z[0-9]+\.s), w0
+ **	bgrp	z0\.s, z1\.s, \1
+ **	ret
+ */
+ TEST_UNIFORM_ZX (bgrp_w0_u32_untied, svuint32_t, uint32_t,
+ 		 z0 = svbgrp_n_u32 (z1, x0),
+ 		 z0 = svbgrp (z1, x0))
+ 
+ /*
+ ** bgrp_11_u32_tied1:
+ **	mov	(z[0-9]+\.s), #11
+ **	bgrp	z0\.s, z0\.s, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (bgrp_11_u32_tied1, svuint32_t,
+ 		z0 = svbgrp_n_u32 (z0, 11),
+ 		z0 = svbgrp (z0, 11))
+ 
+ /*
+ ** bgrp_11_u32_untied:
+ **	mov	(z[0-9]+\.s), #11
+ **	bgrp	z0\.s, z1\.s, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (bgrp_11_u32_untied, svuint32_t,
+ 		z0 = svbgrp_n_u32 (z1, 11),
+ 		z0 = svbgrp (z1, 11))
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bgrp_u64.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bgrp_u64.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bgrp_u64.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bgrp_u64.c	Sun Jun 14 22:32:12 2026
***************
*** 0 ****
--- 1,74 ----
+ /* { dg-do assemble { target aarch64_asm_ssve-bitperm_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_ssve-bitperm_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ 
+ #pragma GCC target "+sve2+ssve-bitperm"
+ 
+ /*
+ ** bgrp_u64_tied1:
+ **	bgrp	z0\.d, z0\.d, z1\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (bgrp_u64_tied1, svuint64_t,
+ 		z0 = svbgrp_u64 (z0, z1),
+ 		z0 = svbgrp (z0, z1))
+ 
+ /*
+ ** bgrp_u64_tied2:
+ **	bgrp	z0\.d, z1\.d, z0\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (bgrp_u64_tied2, svuint64_t,
+ 		z0 = svbgrp_u64 (z1, z0),
+ 		z0 = svbgrp (z1, z0))
+ 
+ /*
+ ** bgrp_u64_untied:
+ **	bgrp	z0\.d, z1\.d, z2\.d
+ **	ret
+ */
+ TEST_UNIFORM_Z (bgrp_u64_untied, svuint64_t,
+ 		z0 = svbgrp_u64 (z1, z2),
+ 		z0 = svbgrp (z1, z2))
+ 
+ /*
+ ** bgrp_x0_u64_tied1:
+ **	mov	(z[0-9]+\.d), x0
+ **	bgrp	z0\.d, z0\.d, \1
+ **	ret
+ */
+ TEST_UNIFORM_ZX (bgrp_x0_u64_tied1, svuint64_t, uint64_t,
+ 		 z0 = svbgrp_n_u64 (z0, x0),
+ 		 z0 = svbgrp (z0, x0))
+ 
+ /*
+ ** bgrp_x0_u64_untied:
+ **	mov	(z[0-9]+\.d), x0
+ **	bgrp	z0\.d, z1\.d, \1
+ **	ret
+ */
+ TEST_UNIFORM_ZX (bgrp_x0_u64_untied, svuint64_t, uint64_t,
+ 		 z0 = svbgrp_n_u64 (z1, x0),
+ 		 z0 = svbgrp (z1, x0))
+ 
+ /*
+ ** bgrp_11_u64_tied1:
+ **	mov	(z[0-9]+\.d), #11
+ **	bgrp	z0\.d, z0\.d, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (bgrp_11_u64_tied1, svuint64_t,
+ 		z0 = svbgrp_n_u64 (z0, 11),
+ 		z0 = svbgrp (z0, 11))
+ 
+ /*
+ ** bgrp_11_u64_untied:
+ **	mov	(z[0-9]+\.d), #11
+ **	bgrp	z0\.d, z1\.d, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (bgrp_11_u64_untied, svuint64_t,
+ 		z0 = svbgrp_n_u64 (z1, 11),
+ 		z0 = svbgrp (z1, 11))
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bgrp_u8.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bgrp_u8.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bgrp_u8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/bgrp_u8.c	Sun Jun 14 22:32:12 2026
***************
*** 0 ****
--- 1,74 ----
+ /* { dg-do assemble { target aarch64_asm_ssve-bitperm_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_ssve-bitperm_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sme2_acle.h"
+ 
+ #pragma GCC target "+sve2+ssve-bitperm"
+ 
+ /*
+ ** bgrp_u8_tied1:
+ **	bgrp	z0\.b, z0\.b, z1\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (bgrp_u8_tied1, svuint8_t,
+ 		z0 = svbgrp_u8 (z0, z1),
+ 		z0 = svbgrp (z0, z1))
+ 
+ /*
+ ** bgrp_u8_tied2:
+ **	bgrp	z0\.b, z1\.b, z0\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (bgrp_u8_tied2, svuint8_t,
+ 		z0 = svbgrp_u8 (z1, z0),
+ 		z0 = svbgrp (z1, z0))
+ 
+ /*
+ ** bgrp_u8_untied:
+ **	bgrp	z0\.b, z1\.b, z2\.b
+ **	ret
+ */
+ TEST_UNIFORM_Z (bgrp_u8_untied, svuint8_t,
+ 		z0 = svbgrp_u8 (z1, z2),
+ 		z0 = svbgrp (z1, z2))
+ 
+ /*
+ ** bgrp_w0_u8_tied1:
+ **	mov	(z[0-9]+\.b), w0
+ **	bgrp	z0\.b, z0\.b, \1
+ **	ret
+ */
+ TEST_UNIFORM_ZX (bgrp_w0_u8_tied1, svuint8_t, uint8_t,
+ 		 z0 = svbgrp_n_u8 (z0, x0),
+ 		 z0 = svbgrp (z0, x0))
+ 
+ /*
+ ** bgrp_w0_u8_untied:
+ **	mov	(z[0-9]+\.b), w0
+ **	bgrp	z0\.b, z1\.b, \1
+ **	ret
+ */
+ TEST_UNIFORM_ZX (bgrp_w0_u8_untied, svuint8_t, uint8_t,
+ 		 z0 = svbgrp_n_u8 (z1, x0),
+ 		 z0 = svbgrp (z1, x0))
+ 
+ /*
+ ** bgrp_11_u8_tied1:
+ **	mov	(z[0-9]+\.b), #11
+ **	bgrp	z0\.b, z0\.b, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (bgrp_11_u8_tied1, svuint8_t,
+ 		z0 = svbgrp_n_u8 (z0, 11),
+ 		z0 = svbgrp (z0, 11))
+ 
+ /*
+ ** bgrp_11_u8_untied:
+ **	mov	(z[0-9]+\.b), #11
+ **	bgrp	z0\.b, z1\.b, \1
+ **	ret
+ */
+ TEST_UNIFORM_Z (bgrp_11_u8_untied, svuint8_t,
+ 		z0 = svbgrp_n_u8 (z1, 11),
+ 		z0 = svbgrp (z1, 11))
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_bf16.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_bf16.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_bf16.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_bf16.c	Sun Jun 14 22:32:12 2026
*************** TEST_UNIFORM_ZD (dup_h4_bf16_m, svbfloat
*** 23,29 ****
  
  /*
  ** dup_h4_bf16_z:
! **	movprfx	z0\.h, p0/z, z0\.h
  **	mov	z0\.h, p0/m, h4
  **	ret
  */
--- 23,29 ----
  
  /*
  ** dup_h4_bf16_z:
! **	movi	d0, #?0
  **	mov	z0\.h, p0/m, h4
  **	ret
  */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_f16.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_f16.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_f16.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_f16.c	Sun Jun 14 22:32:12 2026
*************** TEST_UNIFORM_Z (dup_513_f16_z, svfloat16
*** 151,157 ****
  		z0 = svdup_f16_z (p0, 513))
  /*
  ** dup_h4_f16_z:
! **	movprfx	z0\.h, p0/z, z0\.h
  **	mov	z0\.h, p0/m, h4
  **	ret
  */
--- 151,157 ----
  		z0 = svdup_f16_z (p0, 513))
  /*
  ** dup_h4_f16_z:
! **	movi	d0, #?0
  **	mov	z0\.h, p0/m, h4
  **	ret
  */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_f32.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_f32.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_f32.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_f32.c	Sun Jun 14 22:32:12 2026
*************** TEST_UNIFORM_ZD (dup_s4_f32_m, svfloat32
*** 108,114 ****
  
  /*
  ** dup_1_f32_z:
! **	movprfx	z0\.s, p0/z, z0\.s
  **	fmov	z0\.s, p0/m, #1\.0(?:e\+0)?
  **	ret
  */
--- 108,114 ----
  
  /*
  ** dup_1_f32_z:
! **	movi	d0, #?0
  **	fmov	z0\.s, p0/m, #1\.0(?:e\+0)?
  **	ret
  */
*************** TEST_UNIFORM_Z (dup_0_f32_z, svfloat32_t
*** 127,133 ****
  
  /*
  ** dup_8_f32_z:
! **	movprfx	z0\.s, p0/z, z0\.s
  **	fmov	z0\.s, p0/m, #8\.0(?:e\+0)?
  **	ret
  */
--- 127,133 ----
  
  /*
  ** dup_8_f32_z:
! **	movi	d0, #?0
  **	fmov	z0\.s, p0/m, #8\.0(?:e\+0)?
  **	ret
  */
*************** TEST_UNIFORM_Z (dup_513_f32_z, svfloat32
*** 147,153 ****
  
  /*
  ** dup_s4_f32_z:
! **	movprfx	z0\.s, p0/z, z0\.s
  **	mov	z0\.s, p0/m, s4
  **	ret
  */
--- 147,153 ----
  
  /*
  ** dup_s4_f32_z:
! **	movi	d0, #?0
  **	mov	z0\.s, p0/m, s4
  **	ret
  */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_f64.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_f64.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_f64.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_f64.c	Sun Jun 14 22:32:12 2026
*************** TEST_UNIFORM_ZD (dup_d4_f64_m, svfloat64
*** 108,114 ****
  
  /*
  ** dup_1_f64_z:
! **	movprfx	z0\.d, p0/z, z0\.d
  **	fmov	z0\.d, p0/m, #1\.0(?:e\+0)?
  **	ret
  */
--- 108,114 ----
  
  /*
  ** dup_1_f64_z:
! **	movi	d0, #?0
  **	fmov	z0\.d, p0/m, #1\.0(?:e\+0)?
  **	ret
  */
*************** TEST_UNIFORM_Z (dup_0_f64_z, svfloat64_t
*** 127,133 ****
  
  /*
  ** dup_8_f64_z:
! **	movprfx	z0\.d, p0/z, z0\.d
  **	fmov	z0\.d, p0/m, #8\.0(?:e\+0)?
  **	ret
  */
--- 127,133 ----
  
  /*
  ** dup_8_f64_z:
! **	movi	d0, #?0
  **	fmov	z0\.d, p0/m, #8\.0(?:e\+0)?
  **	ret
  */
*************** TEST_UNIFORM_Z (dup_513_f64_z, svfloat64
*** 147,153 ****
  
  /*
  ** dup_d4_f64_z:
! **	movprfx	z0\.d, p0/z, z0\.d
  **	mov	z0\.d, p0/m, d4
  **	ret
  */
--- 147,153 ----
  
  /*
  ** dup_d4_f64_z:
! **	movi	d0, #?0
  **	mov	z0\.d, p0/m, d4
  **	ret
  */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_s16.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_s16.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_s16.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_s16.c	Sun Jun 14 22:32:12 2026
*************** TEST_UNIFORM_Z (dup_0_s16_z, svint16_t,
*** 950,956 ****
  
  /*
  ** dup_w0_s16_z:
! **	movprfx	z0\.h, p0/z, z0\.h
  **	mov	z0\.h, p0/m, w0
  **	ret
  */
--- 950,956 ----
  
  /*
  ** dup_w0_s16_z:
! **	movi	d0, #?0
  **	mov	z0\.h, p0/m, w0
  **	ret
  */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_s32.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_s32.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_s32.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_s32.c	Sun Jun 14 22:32:12 2026
*************** TEST_UNIFORM_Z (dup_0_s32_z, svint32_t,
*** 918,924 ****
  
  /*
  ** dup_w0_s32_z:
! **	movprfx	z0\.s, p0/z, z0\.s
  **	mov	z0\.s, p0/m, w0
  **	ret
  */
--- 918,924 ----
  
  /*
  ** dup_w0_s32_z:
! **	movi	d0, #?0
  **	mov	z0\.s, p0/m, w0
  **	ret
  */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_s64.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_s64.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_s64.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_s64.c	Sun Jun 14 22:32:12 2026
*************** TEST_UNIFORM_Z (dup_0_s64_z, svint64_t,
*** 918,924 ****
  
  /*
  ** dup_x0_s64_z:
! **	movprfx	z0\.d, p0/z, z0\.d
  **	mov	z0\.d, p0/m, x0
  **	ret
  */
--- 918,924 ----
  
  /*
  ** dup_x0_s64_z:
! **	movi	d0, #?0
  **	mov	z0\.d, p0/m, x0
  **	ret
  */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_s8.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_s8.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_s8.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_s8.c	Sun Jun 14 22:32:12 2026
*************** TEST_UNIFORM_Z (dup_0_s8_z, svint8_t,
*** 284,290 ****
  
  /*
  ** dup_w0_s8_z:
! **	movprfx	z0\.b, p0/z, z0\.b
  **	mov	z0\.b, p0/m, w0
  **	ret
  */
--- 284,290 ----
  
  /*
  ** dup_w0_s8_z:
! **	movi	d0, #?0
  **	mov	z0\.b, p0/m, w0
  **	ret
  */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_u16.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_u16.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_u16.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_u16.c	Sun Jun 14 22:32:12 2026
*************** TEST_UNIFORM_Z (dup_0_u16_z, svuint16_t,
*** 950,956 ****
  
  /*
  ** dup_w0_u16_z:
! **	movprfx	z0\.h, p0/z, z0\.h
  **	mov	z0\.h, p0/m, w0
  **	ret
  */
--- 950,956 ----
  
  /*
  ** dup_w0_u16_z:
! **	movi	d0, #?0
  **	mov	z0\.h, p0/m, w0
  **	ret
  */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_u32.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_u32.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_u32.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_u32.c	Sun Jun 14 22:32:12 2026
*************** TEST_UNIFORM_Z (dup_0_u32_z, svuint32_t,
*** 918,924 ****
  
  /*
  ** dup_w0_u32_z:
! **	movprfx	z0\.s, p0/z, z0\.s
  **	mov	z0\.s, p0/m, w0
  **	ret
  */
--- 918,924 ----
  
  /*
  ** dup_w0_u32_z:
! **	movi	d0, #?0
  **	mov	z0\.s, p0/m, w0
  **	ret
  */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_u64.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_u64.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_u64.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_u64.c	Sun Jun 14 22:32:12 2026
*************** TEST_UNIFORM_Z (dup_0_u64_z, svuint64_t,
*** 918,924 ****
  
  /*
  ** dup_x0_u64_z:
! **	movprfx	z0\.d, p0/z, z0\.d
  **	mov	z0\.d, p0/m, x0
  **	ret
  */
--- 918,924 ----
  
  /*
  ** dup_x0_u64_z:
! **	movi	d0, #?0
  **	mov	z0\.d, p0/m, x0
  **	ret
  */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_u8.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_u8.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_u8.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/dup_u8.c	Sun Jun 14 22:32:12 2026
*************** TEST_UNIFORM_Z (dup_0_u8_z, svuint8_t,
*** 284,290 ****
  
  /*
  ** dup_w0_u8_z:
! **	movprfx	z0\.b, p0/z, z0\.b
  **	mov	z0\.b, p0/m, w0
  **	ret
  */
--- 284,290 ----
  
  /*
  ** dup_w0_u8_z:
! **	movi	d0, #?0
  **	mov	z0\.b, p0/m, w0
  **	ret
  */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/expa_f16.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/expa_f16.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/expa_f16.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/expa_f16.c	Sun Jun 14 22:32:12 2026
***************
*** 1,8 ****
! /* { dg-skip-if "" { *-*-* } { "-DSTREAMING_COMPATIBLE" } { "" } } */
  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
  
  #include "test_sve_acle.h"
  
  /*
  ** expa_f16_tied1:
  **	fexpa	z0\.h, z0\.h
--- 1,13 ----
! /* { dg-do assemble { target aarch64_asm_ssve-fexpa_ok } } */
! /* { dg-do compile { target { ! aarch64_asm_ssve-fexpa_ok } } } */
  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
  
  #include "test_sve_acle.h"
  
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+ssve-fexpa"
+ #endif
+ 
  /*
  ** expa_f16_tied1:
  **	fexpa	z0\.h, z0\.h
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/expa_f32.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/expa_f32.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/expa_f32.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/expa_f32.c	Sun Jun 14 22:32:12 2026
***************
*** 1,8 ****
! /* { dg-skip-if "" { *-*-* } { "-DSTREAMING_COMPATIBLE" } { "" } } */
  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
  
  #include "test_sve_acle.h"
  
  /*
  ** expa_f32_tied1:
  **	fexpa	z0\.s, z0\.s
--- 1,13 ----
! /* { dg-do assemble { target aarch64_asm_ssve-fexpa_ok } } */
! /* { dg-do compile { target { ! aarch64_asm_ssve-fexpa_ok } } } */
  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
  
  #include "test_sve_acle.h"
  
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+ssve-fexpa"
+ #endif
+ 
  /*
  ** expa_f32_tied1:
  **	fexpa	z0\.s, z0\.s
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/expa_f64.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/expa_f64.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/expa_f64.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/expa_f64.c	Sun Jun 14 22:32:12 2026
***************
*** 1,8 ****
! /* { dg-skip-if "" { *-*-* } { "-DSTREAMING_COMPATIBLE" } { "" } } */
  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
  
  #include "test_sve_acle.h"
  
  /*
  ** expa_f64_tied1:
  **	fexpa	z0\.d, z0\.d
--- 1,13 ----
! /* { dg-do assemble { target aarch64_asm_ssve-fexpa_ok } } */
! /* { dg-do compile { target { ! aarch64_asm_ssve-fexpa_ok } } } */
  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
  
  #include "test_sve_acle.h"
  
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+ssve-fexpa"
+ #endif
+ 
  /*
  ** expa_f64_tied1:
  **	fexpa	z0\.d, z0\.d
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_s16.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_s16.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_s16.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_s16.c	Sun Jun 14 22:32:12 2026
*************** TEST_UNIFORM_Z (mul_1op1_s16_z_tied2, sv
*** 333,339 ****
  
  /*
  ** mul_1op1n_s16_z:
! **	movprfx	z0\.h, p0/z, z0\.h
  **	mov	z0\.h, p0/m, w0
  **	ret
  */
--- 333,339 ----
  
  /*
  ** mul_1op1n_s16_z:
! **	movi	d0, #?0
  **	mov	z0\.h, p0/m, w0
  **	ret
  */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_s32.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_s32.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_s32.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_s32.c	Sun Jun 14 22:32:12 2026
*************** TEST_UNIFORM_Z (mul_1op1_s32_z_tied2, sv
*** 343,349 ****
  
  /*
  ** mul_1op1n_s32_z:
! **	movprfx	z0\.s, p0/z, z0\.s
  **	mov	z0\.s, p0/m, w0
  **	ret
  */
--- 343,349 ----
  
  /*
  ** mul_1op1n_s32_z:
! **	movi	d0, #?0
  **	mov	z0\.s, p0/m, w0
  **	ret
  */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_s64.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_s64.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_s64.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_s64.c	Sun Jun 14 22:32:12 2026
*************** TEST_UNIFORM_Z (mul_1op1_s64_z_tied2, sv
*** 342,348 ****
  
  /*
  ** mul_1op1n_s64_z:
! **	movprfx	z0\.d, p0/z, z0\.d
  **	mov	z0\.d, p0/m, x0
  **	ret
  */
--- 342,348 ----
  
  /*
  ** mul_1op1n_s64_z:
! **	movi	d0, #?0
  **	mov	z0\.d, p0/m, x0
  **	ret
  */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_s8.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_s8.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_s8.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_s8.c	Sun Jun 14 22:32:12 2026
*************** TEST_UNIFORM_Z (mul_1op1_s8_z_tied2, svi
*** 333,339 ****
  
  /*
  ** mul_1op1n_s8_z:
! **	movprfx	z0\.b, p0/z, z0\.b
  **	mov	z0\.b, p0/m, w0
  **	ret
  */
--- 333,339 ----
  
  /*
  ** mul_1op1n_s8_z:
! **	movi	d0, #?0
  **	mov	z0\.b, p0/m, w0
  **	ret
  */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_u16.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_u16.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_u16.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_u16.c	Sun Jun 14 22:32:12 2026
*************** TEST_UNIFORM_Z (mul_1op1_u16_z_tied2, sv
*** 314,320 ****
  
  /*
  ** mul_1op1n_u16_z:
! **	movprfx	z0\.h, p0/z, z0\.h
  **	mov	z0\.h, p0/m, w0
  **	ret
  */
--- 314,320 ----
  
  /*
  ** mul_1op1n_u16_z:
! **	movi	d0, #?0
  **	mov	z0\.h, p0/m, w0
  **	ret
  */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_u32.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_u32.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_u32.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_u32.c	Sun Jun 14 22:32:12 2026
*************** TEST_UNIFORM_Z (mul_1op1_u32_z_tied2, sv
*** 314,320 ****
  
  /*
  ** mul_1op1n_u32_z:
! **	movprfx	z0\.s, p0/z, z0\.s
  **	mov	z0\.s, p0/m, w0
  **	ret
  */
--- 314,320 ----
  
  /*
  ** mul_1op1n_u32_z:
! **	movi	d0, #?0
  **	mov	z0\.s, p0/m, w0
  **	ret
  */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_u64.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_u64.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_u64.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_u64.c	Sun Jun 14 22:32:12 2026
*************** TEST_UNIFORM_Z (mul_1op1_u64_z_tied2, sv
*** 335,341 ****
  
  /*
  ** mul_1op1n_u64_z:
! **	movprfx	z0\.d, p0/z, z0\.d
  **	mov	z0\.d, p0/m, x0
  **	ret
  */
--- 335,341 ----
  
  /*
  ** mul_1op1n_u64_z:
! **	movi	d0, #?0
  **	mov	z0\.d, p0/m, x0
  **	ret
  */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_u8.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_u8.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_u8.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/mul_u8.c	Sun Jun 14 22:32:12 2026
*************** TEST_UNIFORM_Z (mul_1op1_u8_z_tied2, svu
*** 314,320 ****
  
  /*
  ** mul_1op1n_u8_z:
! **	movprfx	z0\.b, p0/z, z0\.b
  **	mov	z0\.b, p0/m, w0
  **	ret
  */
--- 314,320 ----
  
  /*
  ** mul_1op1n_u8_z:
! **	movi	d0, #?0
  **	mov	z0\.b, p0/m, w0
  **	ret
  */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/pr125550.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/pr125550.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/pr125550.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/pr125550.c	Sun Jun 14 22:32:12 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -march=armv9.5-a" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #include <arm_sve.h>
+ 
+ svfloat16_t foo (float x0, float x1)
+ {
+   return svdupq_n_f16 (x0, x1, x0, x1, x0, x1, x0, x1);
+ }
+ 
+ /*
+ ** foo:
+ **	fcvt	h([01]), s\1
+ **	fcvt	h([01]), s\2
+ **	zip1	v0\.4h, v0\.4h, v1\.4h
+ **	mov	z0\.s, s0
+ **	ret
+ */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/vcond_18.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/vcond_18.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/vcond_18.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/vcond_18.c	Sun Jun 14 22:32:12 2026
*************** TEST_ALL (DEF_LOOP)
*** 31,44 ****
  /* { dg-final { scan-assembler-times {\tmov\tz[0-9]+\.h, p[0-9]+/z, #-16128\n} 1 } } */
  /* { dg-final { scan-assembler-times {\tsel\tz[0-9]+\.h, p[0-9]+, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
  
! /* { dg-final { scan-assembler {\tmovprfx\t(z[0-9]+\.s), (p[0-7])/z, \1\n\tfmov\t\1, \2/m, #2\.0(?:e[+]0)?\n} } } */
! /* { dg-final { scan-assembler {\tmovprfx\t(z[0-9]+\.s), (p[0-7])/z, \1\n\tfmov\t\1, \2/m, #1\.25(?:e[+]0)?\n} } } */
! /* { dg-final { scan-assembler {\tmovprfx\t(z[0-9]+\.s), (p[0-7])/z, \1\n\tfmov\t\1, \2/m, #-4\.0(?:e[+]0)?\n} } } */
! /* { dg-final { scan-assembler {\tmovprfx\t(z[0-9]+\.s), (p[0-7])/z, \1\n\tfmov\t\1, \2/m, #-2\.5(?:e[+]0)?\n} } } */
  /* { dg-final { scan-assembler-times {\tsel\tz[0-9]+\.s, p[0-9]+, z[0-9]+\.s, z[0-9]+\.s\n} 2 } } */
  
! /* { dg-final { scan-assembler {\tmovprfx\t(z[0-9]+\.d), (p[0-7])/z, \1\n\tfmov\t\1, \2/m, #2\.0(?:e[+]0)?\n} } } */
! /* { dg-final { scan-assembler {\tmovprfx\t(z[0-9]+\.d), (p[0-7])/z, \1\n\tfmov\t\1, \2/m, #1\.25(?:e[+]0)?\n} } } */
! /* { dg-final { scan-assembler {\tmovprfx\t(z[0-9]+\.d), (p[0-7])/z, \1\n\tfmov\t\1, \2/m, #-4\.0(?:e[+]0)?\n} } } */
! /* { dg-final { scan-assembler {\tmovprfx\t(z[0-9]+\.d), (p[0-7])/z, \1\n\tfmov\t\1, \2/m, #-2\.5(?:e[+]0)?\n} } } */
  /* { dg-final { scan-assembler-times {\tsel\tz[0-9]+\.d, p[0-9]+, z[0-9]+\.d, z[0-9]+\.d\n} 2 } } */
--- 31,44 ----
  /* { dg-final { scan-assembler-times {\tmov\tz[0-9]+\.h, p[0-9]+/z, #-16128\n} 1 } } */
  /* { dg-final { scan-assembler-times {\tsel\tz[0-9]+\.h, p[0-9]+, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
  
! /* { dg-final { scan-assembler {\tfmov\tz[0-9]+\.s, p[0-9]+/m, #2\.0(?:e[+]0)?\n} } } */
! /* { dg-final { scan-assembler {\tfmov\tz[0-9]+\.s, p[0-9]+/m, #1\.25(?:e[+]0)?\n} } } */
! /* { dg-final { scan-assembler {\tfmov\tz[0-9]+\.s, p[0-9]+/m, #-4\.0(?:e[+]0)?\n} } } */
! /* { dg-final { scan-assembler {\tfmov\tz[0-9]+\.s, p[0-9]+/m, #-2\.5(?:e[+]0)?\n} } } */
  /* { dg-final { scan-assembler-times {\tsel\tz[0-9]+\.s, p[0-9]+, z[0-9]+\.s, z[0-9]+\.s\n} 2 } } */
  
! /* { dg-final { scan-assembler {\tfmov\tz[0-9]+\.d, p[0-9]+/m, #2\.0(?:e[+]0)?\n} } } */
! /* { dg-final { scan-assembler {\tfmov\tz[0-9]+\.d, p[0-9]+/m, #1\.25(?:e[+]0)?\n} } } */
! /* { dg-final { scan-assembler {\tfmov\tz[0-9]+\.d, p[0-9]+/m, #-4\.0(?:e[+]0)?\n} } } */
! /* { dg-final { scan-assembler {\tfmov\tz[0-9]+\.d, p[0-9]+/m, #-2\.5(?:e[+]0)?\n} } } */
  /* { dg-final { scan-assembler-times {\tsel\tz[0-9]+\.d, p[0-9]+, z[0-9]+\.d, z[0-9]+\.d\n} 2 } } */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/vec_init_5.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/vec_init_5.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/vec_init_5.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve/vec_init_5.c	Sun Jun 14 22:32:12 2026
***************
*** 183,197 ****
  ** test_float16_2:
  **	fcvt	h1, s1
  **	fcvt	h0, s0
! **	uzp1	v0\.4h, v0\.4h, v1\.4h
  **	mov	z0\.s, s0
  **	ret
  */
  
  /*
  ** test_float16_3:
! **	uzp1	v2\.2s, v0\.2s, v2\.2s
! **	uzp1	v3\.2s, v1\.2s, v3\.2s
  **	zip1	v3\.4s, v2\.4s, v3\.4s
  **	fcvtn	v3\.4h, v3\.4s
  **	mov	z0\.d, d3
--- 183,197 ----
  ** test_float16_2:
  **	fcvt	h1, s1
  **	fcvt	h0, s0
! **	zip1	v0\.4h, v0\.4h, v1\.4h
  **	mov	z0\.s, s0
  **	ret
  */
  
  /*
  ** test_float16_3:
! **	zip1	v2\.2s, v0\.2s, v2\.2s
! **	zip1	v3\.2s, v1\.2s, v3\.2s
  **	zip1	v3\.4s, v2\.4s, v3\.4s
  **	fcvtn	v3\.4h, v3\.4s
  **	mov	z0\.d, d3
***************
*** 210,216 ****
  ** test_float16_5:
  **	movi	v31\.4h, #0
  **	fcvt	h0, s0
! **	uzp1	v0\.4h, v31\.4h, v0\.4h
  **	mov	z0\.s, s0
  **	ret
  */
--- 210,216 ----
  ** test_float16_5:
  **	movi	v31\.4h, #0
  **	fcvt	h0, s0
! **	zip1	v0\.4h, v31\.4h, v0\.4h
  **	mov	z0\.s, s0
  **	ret
  */
***************
*** 221,227 ****
  **	fcvt	h1, s1
  **	fmov	h31, 1.0e\+0
  **	fmov	h2, h2
! **	uzp1	v1\.4h, v1\.4h, v31\.4h
  **	dup	v0\.2s, v2\.s\[0\]
  **	dup	v1\.2s, v1\.s\[0\]
  **	zip1	v0\.8h, v0\.8h, v1\.8h
--- 221,227 ----
  **	fcvt	h1, s1
  **	fmov	h31, 1.0e\+0
  **	fmov	h2, h2
! **	zip1	v1\.4h, v1\.4h, v31\.4h
  **	dup	v0\.2s, v2\.s\[0\]
  **	dup	v1\.2s, v1\.s\[0\]
  **	zip1	v0\.8h, v0\.8h, v1\.8h
***************
*** 235,242 ****
  **	fcvt	h2, s1
  **	movi	v0\.4h, #0
  **	fmov	h1, 1.0e\+0
! **	uzp1	v1\.4h, v1\.4h, v2\.4h
! **	uzp1	v0\.4h, v0\.4h, v3\.4h
  **	dup	v1\.2s, v1\.s\[0\]
  **	dup	v0\.2s, v0\.s\[0\]
  **	zip1	v0\.8h, v0\.8h, v1\.8h
--- 235,242 ----
  **	fcvt	h2, s1
  **	movi	v0\.4h, #0
  **	fmov	h1, 1.0e\+0
! **	zip1	v1\.4h, v1\.4h, v2\.4h
! **	zip1	v0\.4h, v0\.4h, v3\.4h
  **	dup	v1\.2s, v1\.s\[0\]
  **	dup	v0\.2s, v0\.s\[0\]
  **	zip1	v0\.8h, v0\.8h, v1\.8h
***************
*** 249,255 ****
  **	fcvt	h1, s1
  **	fcvt	h0, s0
  **	movi	v31\.2s, 0x3c, lsl 24
! **	uzp1	v0\.4h, v0\.4h, v1.4h
  **	dup	v0\.2s, v0\.s\[0\]
  **	zip1	v0\.8h, v31\.8h, v0\.8h
  **	dup	z0\.q, z0\.q\[0\]
--- 249,255 ----
  **	fcvt	h1, s1
  **	fcvt	h0, s0
  **	movi	v31\.2s, 0x3c, lsl 24
! **	zip1	v0\.4h, v0\.4h, v1.4h
  **	dup	v0\.2s, v0\.s\[0\]
  **	zip1	v0\.8h, v31\.8h, v0\.8h
  **	dup	z0\.q, z0\.q\[0\]
***************
*** 261,268 ****
  **	fcvt	h1, s1
  **	fcvt	h2, s2
  **	fcvt	h0, s0
! **	uzp1	v0\.4h, v0\.4h, v1\.4h
! **	uzp1	v1\.4h, v1\.4h, v2\.4h
  **	dup	v0\.2s, v0\.s\[0\]
  **	dup	v1\.2s, v1\.s\[0\]
  **	zip1	v0\.8h, v0\.8h, v1\.8h
--- 261,268 ----
  **	fcvt	h1, s1
  **	fcvt	h2, s2
  **	fcvt	h0, s0
! **	zip1	v0\.4h, v0\.4h, v1\.4h
! **	zip1	v1\.4h, v1\.4h, v2\.4h
  **	dup	v0\.2s, v0\.s\[0\]
  **	dup	v1\.2s, v1\.s\[0\]
  **	zip1	v0\.8h, v0\.8h, v1\.8h
***************
*** 275,281 ****
  **	fcvt	h2, s2
  **	fcvt	h0, s0
  **	fcvt	h1, s1
! **	uzp1	v0\.4h, v0\.4h, v2\.4h
  **	dup	v1\.4h, v1\.h\[0\]
  **	dup	v0\.2s, v0\.s\[0\]
  **	zip1	v0\.8h, v0\.8h, v1\.8h
--- 275,281 ----
  **	fcvt	h2, s2
  **	fcvt	h0, s0
  **	fcvt	h1, s1
! **	zip1	v0\.4h, v0\.4h, v2\.4h
  **	dup	v1\.4h, v1\.h\[0\]
  **	dup	v0\.2s, v0\.s\[0\]
  **	zip1	v0\.8h, v0\.8h, v1\.8h
***************
*** 386,392 ****
  
  /*
  ** test_float32_2:
! **	uzp1	v0\.2s, v0\.2s, v1\.2s
  **	mov	z0\.d, d0
  **	ret
  */
--- 386,392 ----
  
  /*
  ** test_float32_2:
! **	zip1	v0\.2s, v0\.2s, v1\.2s
  **	mov	z0\.d, d0
  **	ret
  */
***************
*** 401,407 ****
  /*
  ** test_float32_4:
  **	movi	v31\.2s, #0
! **	uzp1	v0\.2s, v31\.2s, v0\.2s
  **	mov	z0\.d, d0
  **	ret
  */
--- 401,407 ----
  /*
  ** test_float32_4:
  **	movi	v31\.2s, #0
! **	zip1	v0\.2s, v31\.2s, v0\.2s
  **	mov	z0\.d, d0
  **	ret
  */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bdep_u16.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bdep_u16.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bdep_u16.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bdep_u16.c	Sun Jun 14 22:32:12 2026
***************
*** 1,9 ****
! /* { dg-skip-if "" { *-*-* } { "-DSTREAMING_COMPATIBLE" } { "" } } */
  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
  
  #include "test_sve_acle.h"
  
  #pragma GCC target "+sve2-bitperm"
  
  /*
  ** bdep_u16_tied1:
--- 1,14 ----
! /* { dg-do assemble { target aarch64_asm_ssve-bitperm_ok } } */
! /* { dg-do compile { target { ! aarch64_asm_ssve-bitperm_ok } } } */
  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
  
  #include "test_sve_acle.h"
  
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sve2+ssve-bitperm"
+ #else
  #pragma GCC target "+sve2-bitperm"
+ #endif
  
  /*
  ** bdep_u16_tied1:
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bdep_u32.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bdep_u32.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bdep_u32.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bdep_u32.c	Sun Jun 14 22:32:12 2026
***************
*** 1,9 ****
! /* { dg-skip-if "" { *-*-* } { "-DSTREAMING_COMPATIBLE" } { "" } } */
  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
  
  #include "test_sve_acle.h"
  
  #pragma GCC target "+sve2-bitperm"
  
  /*
  ** bdep_u32_tied1:
--- 1,14 ----
! /* { dg-do assemble { target aarch64_asm_ssve-bitperm_ok } } */
! /* { dg-do compile { target { ! aarch64_asm_ssve-bitperm_ok } } } */
  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
  
  #include "test_sve_acle.h"
  
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sve2+ssve-bitperm"
+ #else
  #pragma GCC target "+sve2-bitperm"
+ #endif
  
  /*
  ** bdep_u32_tied1:
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bdep_u64.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bdep_u64.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bdep_u64.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bdep_u64.c	Sun Jun 14 22:32:12 2026
***************
*** 1,9 ****
! /* { dg-skip-if "" { *-*-* } { "-DSTREAMING_COMPATIBLE" } { "" } } */
  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
  
  #include "test_sve_acle.h"
  
  #pragma GCC target "+sve2-bitperm"
  
  /*
  ** bdep_u64_tied1:
--- 1,14 ----
! /* { dg-do assemble { target aarch64_asm_ssve-bitperm_ok } } */
! /* { dg-do compile { target { ! aarch64_asm_ssve-bitperm_ok } } } */
  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
  
  #include "test_sve_acle.h"
  
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sve2+ssve-bitperm"
+ #else
  #pragma GCC target "+sve2-bitperm"
+ #endif
  
  /*
  ** bdep_u64_tied1:
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bdep_u8.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bdep_u8.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bdep_u8.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bdep_u8.c	Sun Jun 14 22:32:12 2026
***************
*** 1,9 ****
! /* { dg-skip-if "" { *-*-* } { "-DSTREAMING_COMPATIBLE" } { "" } } */
  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
  
  #include "test_sve_acle.h"
  
  #pragma GCC target "+sve2-bitperm"
  
  /*
  ** bdep_u8_tied1:
--- 1,14 ----
! /* { dg-do assemble { target aarch64_asm_ssve-bitperm_ok } } */
! /* { dg-do compile { target { ! aarch64_asm_ssve-bitperm_ok } } } */
  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
  
  #include "test_sve_acle.h"
  
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sve2+ssve-bitperm"
+ #else
  #pragma GCC target "+sve2-bitperm"
+ #endif
  
  /*
  ** bdep_u8_tied1:
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bext_u16.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bext_u16.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bext_u16.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bext_u16.c	Sun Jun 14 22:32:12 2026
***************
*** 1,9 ****
! /* { dg-skip-if "" { *-*-* } { "-DSTREAMING_COMPATIBLE" } { "" } } */
  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
  
  #include "test_sve_acle.h"
  
  #pragma GCC target "+sve2-bitperm"
  
  /*
  ** bext_u16_tied1:
--- 1,14 ----
! /* { dg-do assemble { target aarch64_asm_ssve-bitperm_ok } } */
! /* { dg-do compile { target { ! aarch64_asm_ssve-bitperm_ok } } } */
  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
  
  #include "test_sve_acle.h"
  
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sve2+ssve-bitperm"
+ #else
  #pragma GCC target "+sve2-bitperm"
+ #endif
  
  /*
  ** bext_u16_tied1:
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bext_u32.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bext_u32.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bext_u32.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bext_u32.c	Sun Jun 14 22:32:12 2026
***************
*** 1,9 ****
! /* { dg-skip-if "" { *-*-* } { "-DSTREAMING_COMPATIBLE" } { "" } } */
  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
  
  #include "test_sve_acle.h"
  
  #pragma GCC target "+sve2-bitperm"
  
  /*
  ** bext_u32_tied1:
--- 1,14 ----
! /* { dg-do assemble { target aarch64_asm_ssve-bitperm_ok } } */
! /* { dg-do compile { target { ! aarch64_asm_ssve-bitperm_ok } } } */
  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
  
  #include "test_sve_acle.h"
  
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sve2+ssve-bitperm"
+ #else
  #pragma GCC target "+sve2-bitperm"
+ #endif
  
  /*
  ** bext_u32_tied1:
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bext_u64.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bext_u64.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bext_u64.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bext_u64.c	Sun Jun 14 22:32:12 2026
***************
*** 1,9 ****
! /* { dg-skip-if "" { *-*-* } { "-DSTREAMING_COMPATIBLE" } { "" } } */
  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
  
  #include "test_sve_acle.h"
  
  #pragma GCC target "+sve2-bitperm"
  
  /*
  ** bext_u64_tied1:
--- 1,14 ----
! /* { dg-do assemble { target aarch64_asm_ssve-bitperm_ok } } */
! /* { dg-do compile { target { ! aarch64_asm_ssve-bitperm_ok } } } */
  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
  
  #include "test_sve_acle.h"
  
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sve2+ssve-bitperm"
+ #else
  #pragma GCC target "+sve2-bitperm"
+ #endif
  
  /*
  ** bext_u64_tied1:
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bext_u8.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bext_u8.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bext_u8.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bext_u8.c	Sun Jun 14 22:32:12 2026
***************
*** 1,9 ****
! /* { dg-skip-if "" { *-*-* } { "-DSTREAMING_COMPATIBLE" } { "" } } */
  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
  
  #include "test_sve_acle.h"
  
  #pragma GCC target "+sve2-bitperm"
  
  /*
  ** bext_u8_tied1:
--- 1,14 ----
! /* { dg-do assemble { target aarch64_asm_ssve-bitperm_ok } } */
! /* { dg-do compile { target { ! aarch64_asm_ssve-bitperm_ok } } } */
  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
  
  #include "test_sve_acle.h"
  
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sve2+ssve-bitperm"
+ #else
  #pragma GCC target "+sve2-bitperm"
+ #endif
  
  /*
  ** bext_u8_tied1:
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bgrp_u16.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bgrp_u16.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bgrp_u16.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bgrp_u16.c	Sun Jun 14 22:32:12 2026
***************
*** 1,9 ****
! /* { dg-skip-if "" { *-*-* } { "-DSTREAMING_COMPATIBLE" } { "" } } */
  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
  
  #include "test_sve_acle.h"
  
  #pragma GCC target "+sve2-bitperm"
  
  /*
  ** bgrp_u16_tied1:
--- 1,14 ----
! /* { dg-do assemble { target aarch64_asm_ssve-bitperm_ok } } */
! /* { dg-do compile { target { ! aarch64_asm_ssve-bitperm_ok } } } */
  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
  
  #include "test_sve_acle.h"
  
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sve2+ssve-bitperm"
+ #else
  #pragma GCC target "+sve2-bitperm"
+ #endif
  
  /*
  ** bgrp_u16_tied1:
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bgrp_u32.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bgrp_u32.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bgrp_u32.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bgrp_u32.c	Sun Jun 14 22:32:12 2026
***************
*** 1,9 ****
! /* { dg-skip-if "" { *-*-* } { "-DSTREAMING_COMPATIBLE" } { "" } } */
  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
  
  #include "test_sve_acle.h"
  
  #pragma GCC target "+sve2-bitperm"
  
  /*
  ** bgrp_u32_tied1:
--- 1,14 ----
! /* { dg-do assemble { target aarch64_asm_ssve-bitperm_ok } } */
! /* { dg-do compile { target { ! aarch64_asm_ssve-bitperm_ok } } } */
  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
  
  #include "test_sve_acle.h"
  
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sve2+ssve-bitperm"
+ #else
  #pragma GCC target "+sve2-bitperm"
+ #endif
  
  /*
  ** bgrp_u32_tied1:
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bgrp_u64.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bgrp_u64.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bgrp_u64.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bgrp_u64.c	Sun Jun 14 22:32:12 2026
***************
*** 1,9 ****
! /* { dg-skip-if "" { *-*-* } { "-DSTREAMING_COMPATIBLE" } { "" } } */
  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
  
  #include "test_sve_acle.h"
  
  #pragma GCC target "+sve2-bitperm"
  
  /*
  ** bgrp_u64_tied1:
--- 1,14 ----
! /* { dg-do assemble { target aarch64_asm_ssve-bitperm_ok } } */
! /* { dg-do compile { target { ! aarch64_asm_ssve-bitperm_ok } } } */
  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
  
  #include "test_sve_acle.h"
  
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sve2+ssve-bitperm"
+ #else
  #pragma GCC target "+sve2-bitperm"
+ #endif
  
  /*
  ** bgrp_u64_tied1:
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bgrp_u8.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bgrp_u8.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bgrp_u8.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/bgrp_u8.c	Sun Jun 14 22:32:12 2026
***************
*** 1,9 ****
! /* { dg-skip-if "" { *-*-* } { "-DSTREAMING_COMPATIBLE" } { "" } } */
  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
  
  #include "test_sve_acle.h"
  
  #pragma GCC target "+sve2-bitperm"
  
  /*
  ** bgrp_u8_tied1:
--- 1,14 ----
! /* { dg-do assemble { target aarch64_asm_ssve-bitperm_ok } } */
! /* { dg-do compile { target { ! aarch64_asm_ssve-bitperm_ok } } } */
  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
  
  #include "test_sve_acle.h"
  
+ #ifdef STREAMING_COMPATIBLE
+ #pragma GCC target "+sve2+ssve-bitperm"
+ #else
  #pragma GCC target "+sve2-bitperm"
+ #endif
  
  /*
  ** bgrp_u8_tied1:
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/torture/pr125621.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/torture/pr125621.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/torture/pr125621.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/torture/pr125621.c	Sun Jun 14 22:32:13 2026
***************
*** 0 ****
--- 1,7 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=armv8.2-a+sve -fsanitize=undefined" } */
+ #include <arm_sve.h>
+ 
+ long foo(long x) {
+   return (long)svcntd() * x;
+ }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/vec-init-14.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/vec-init-14.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/vec-init-14.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/vec-init-14.c	Sun Jun 14 22:32:13 2026
*************** int32x2_t s32_6(int32_t a0, int32_t a1)
*** 67,73 ****
  
  /*
  ** f32_1:
! **	uzp1	v0\.2s, v0\.2s, v1\.2s
  **	ret
  */
  float32x2_t f32_1(float32_t a0, float32_t a1) {
--- 67,73 ----
  
  /*
  ** f32_1:
! **	zip1	v0\.2s, v0\.2s, v1\.2s
  **	ret
  */
  float32x2_t f32_1(float32_t a0, float32_t a1) {
*************** float32x2_t f32_2(float32_t a0, float32_
*** 90,96 ****
  /*
  ** f32_3:
  **	ldr	s0, \[x0\]
! **	uzp1	v0\.2s, v0\.2s, v1\.2s
  **	ret
  */
  float32x2_t f32_3(float32_t a0, float32_t a1, float32_t *ptr) {
--- 90,96 ----
  /*
  ** f32_3:
  **	ldr	s0, \[x0\]
! **	zip1	v0\.2s, v0\.2s, v1\.2s
  **	ret
  */
  float32x2_t f32_3(float32_t a0, float32_t a1, float32_t *ptr) {
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/vec-init-23.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/vec-init-23.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/vec-init-23.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/vec-init-23.c	Sun Jun 14 22:32:13 2026
*************** TEST_64(int, int64_t, s)
*** 242,256 ****
  ** test_float16_2:
  **	fcvt	h1, s1
  **	fcvt	h0, s0
! **	uzp1	v0\.4h, v0\.4h, v1\.4h
  **	dup	v0\.4s, v0\.s\[0\]
  **	ret
  */
  
  /*
  ** test_float16_3:
! **	uzp1	v2\.2s, v0\.2s, v2\.2s
! **	uzp1	v3\.2s, v1\.2s, v3\.2s
  **	zip1	v3\.4s, v2\.4s, v3\.4s
  **	fcvtn	v3\.4h, v3\.4s
  **	dup	v0\.2d, v3\.d\[0\]
--- 242,256 ----
  ** test_float16_2:
  **	fcvt	h1, s1
  **	fcvt	h0, s0
! **	zip1	v0\.4h, v0\.4h, v1\.4h
  **	dup	v0\.4s, v0\.s\[0\]
  **	ret
  */
  
  /*
  ** test_float16_3:
! **	zip1	v2\.2s, v0\.2s, v2\.2s
! **	zip1	v3\.2s, v1\.2s, v3\.2s
  **	zip1	v3\.4s, v2\.4s, v3\.4s
  **	fcvtn	v3\.4h, v3\.4s
  **	dup	v0\.2d, v3\.d\[0\]
*************** TEST_64(int, int64_t, s)
*** 269,275 ****
  ** test_float16_5:
  **	movi	v31\.4h, #0
  **	fcvt	h0, s0
! **	uzp1	v0\.4h, v31\.4h, v0\.4h
  **	dup	v0\.4s, v0\.s\[0\]
  **	ret
  */
--- 269,275 ----
  ** test_float16_5:
  **	movi	v31\.4h, #0
  **	fcvt	h0, s0
! **	zip1	v0\.4h, v31\.4h, v0\.4h
  **	dup	v0\.4s, v0\.s\[0\]
  **	ret
  */
*************** TEST_64(int, int64_t, s)
*** 280,286 ****
  **	fcvt	h1, s1
  **	fmov	h31, 1.0e\+0
  **	fmov	h0, h0
! **	uzp1	v1\.4h, v1\.4h, v31\.4h
  **	dup	v0\.2s, v0\.s\[0\]
  **	dup	v1\.2s, v1\.s\[0\]
  **	zip1	v0\.8h, v0\.8h, v1\.8h
--- 280,286 ----
  **	fcvt	h1, s1
  **	fmov	h31, 1.0e\+0
  **	fmov	h0, h0
! **	zip1	v1\.4h, v1\.4h, v31\.4h
  **	dup	v0\.2s, v0\.s\[0\]
  **	dup	v1\.2s, v1\.s\[0\]
  **	zip1	v0\.8h, v0\.8h, v1\.8h
*************** TEST_64(int, int64_t, s)
*** 292,300 ****
  **	fcvt	h0, s0
  **	movi	v31\.4h, #0
  **	fcvt	h1, s1
! **	uzp1	v31\.4h, v31\.4h, v0\.4h
  **	fmov	h0, 1.0e\+0
! **	uzp1	v0\.4h, v0\.4h, v1\.4h
  **	dup	v31\.2s, v31\.s\[0\]
  **	dup	v0\.2s, v0\.s\[0\]
  **	zip1	v0\.8h, v31\.8h, v0\.8h
--- 292,300 ----
  **	fcvt	h0, s0
  **	movi	v31\.4h, #0
  **	fcvt	h1, s1
! **	zip1	v31\.4h, v31\.4h, v0\.4h
  **	fmov	h0, 1.0e\+0
! **	zip1	v0\.4h, v0\.4h, v1\.4h
  **	dup	v31\.2s, v31\.s\[0\]
  **	dup	v0\.2s, v0\.s\[0\]
  **	zip1	v0\.8h, v31\.8h, v0\.8h
*************** TEST_64(int, int64_t, s)
*** 306,312 ****
  **	fcvt	h1, s1
  **	fcvt	h0, s0
  **	movi	v31\.2s, 0x3c, lsl 24
! **	uzp1	v0\.4h, v0\.4h, v1\.4h
  **	dup	v0\.2s, v0\.s\[0\]
  **	zip1	v0\.8h, v31\.8h, v0\.8h
  **	ret
--- 306,312 ----
  **	fcvt	h1, s1
  **	fcvt	h0, s0
  **	movi	v31\.2s, 0x3c, lsl 24
! **	zip1	v0\.4h, v0\.4h, v1\.4h
  **	dup	v0\.2s, v0\.s\[0\]
  **	zip1	v0\.8h, v31\.8h, v0\.8h
  **	ret
*************** TEST_64(int, int64_t, s)
*** 317,324 ****
  **	fcvt	h1, s1
  **	fcvt	h2, s2
  **	fcvt	h0, s0
! **	uzp1	v0\.4h, v0\.4h, v1\.4h
! **	uzp1	v1\.4h, v1\.4h, v2\.4h
  **	dup	v0\.2s, v0\.s\[0\]
  **	dup	v1\.2s, v1\.s\[0\]
  **	zip1	v0\.8h, v0\.8h, v1\.8h
--- 317,324 ----
  **	fcvt	h1, s1
  **	fcvt	h2, s2
  **	fcvt	h0, s0
! **	zip1	v0\.4h, v0\.4h, v1\.4h
! **	zip1	v1\.4h, v1\.4h, v2\.4h
  **	dup	v0\.2s, v0\.s\[0\]
  **	dup	v1\.2s, v1\.s\[0\]
  **	zip1	v0\.8h, v0\.8h, v1\.8h
*************** TEST_64(int, int64_t, s)
*** 330,336 ****
  **	fcvt	h2, s2
  **	fcvt	h0, s0
  **	fcvt	h1, s1
! **	uzp1	v0\.4h, v0\.4h, v2\.4h
  **	dup	v1\.4h, v1\.h\[0\]
  **	dup	v0\.2s, v0\.s\[0\]
  **	zip1	v0\.8h, v0\.8h, v1\.8h
--- 330,336 ----
  **	fcvt	h2, s2
  **	fcvt	h0, s0
  **	fcvt	h1, s1
! **	zip1	v0\.4h, v0\.4h, v2\.4h
  **	dup	v1\.4h, v1\.h\[0\]
  **	dup	v0\.2s, v0\.s\[0\]
  **	zip1	v0\.8h, v0\.8h, v1\.8h
*************** TEST_64(int, int64_t, s)
*** 434,440 ****
  
  /*
  ** test_float32_2:
! **	uzp1	v0\.2s, v0\.2s, v1\.2s
  **	dup	v0\.2d, v0\.d\[0\]
  **	ret
  */
--- 434,440 ----
  
  /*
  ** test_float32_2:
! **	zip1	v0\.2s, v0\.2s, v1\.2s
  **	dup	v0\.2d, v0\.d\[0\]
  **	ret
  */
*************** TEST_64(int, int64_t, s)
*** 449,455 ****
  /*
  ** test_float32_4:
  **	movi	v31\.2s, #0
! **	uzp1	v0\.2s, v31\.2s, v0\.2s
  **	dup	v0\.2d, v0\.d\[0\]
  **	ret
  */
--- 449,455 ----
  /*
  ** test_float32_4:
  **	movi	v31\.2s, #0
! **	zip1	v0\.2s, v31\.2s, v0\.2s
  **	dup	v0\.2d, v0\.d\[0\]
  **	ret
  */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/vec-init-9.c gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/vec-init-9.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/vec-init-9.c	Sun Jun  7 22:32:11 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/aarch64/vec-init-9.c	Sun Jun 14 22:32:13 2026
*************** int64x2_t s64q_6(int64_t a0, int64_t a1)
*** 75,81 ****
  
  /*
  ** f64q_1:
! **	uzp1	v0\.2d, v0\.2d, v1\.2d
  **	ret
  */
  float64x2_t f64q_1(float64_t a0, float64_t a1) {
--- 75,81 ----
  
  /*
  ** f64q_1:
! **	zip1	v0\.2d, v0\.2d, v1\.2d
  **	ret
  */
  float64x2_t f64q_1(float64_t a0, float64_t a1) {
*************** float64x2_t f64q_2(float64_t a0, float64
*** 98,104 ****
  /*
  ** f64q_3:
  **	ldr	d0, \[x0\]
! **	uzp1	v0\.2d, v0\.2d, v1\.2d
  **	ret
  */
  float64x2_t f64q_3(float64_t a0, float64_t a1, float64_t *ptr) {
--- 98,104 ----
  /*
  ** f64q_3:
  **	ldr	d0, \[x0\]
! **	zip1	v0\.2d, v0\.2d, v1\.2d
  **	ret
  */
  float64x2_t f64q_3(float64_t a0, float64_t a1, float64_t *ptr) {
*************** float64x2_t f64q_6(float64_t a0, float64
*** 140,146 ****
  
  /*
  ** s32q_1:
! **	uzp1	v0\.2d, v0\.2d, v1\.2d
  **	ret
  */
  int32x4_t s32q_1(int32x2_t a0, int32x2_t a1) {
--- 140,146 ----
  
  /*
  ** s32q_1:
! **	zip1	v0\.2d, v0\.2d, v1\.2d
  **	ret
  */
  int32x4_t s32q_1(int32x2_t a0, int32x2_t a1) {
*************** int32x4_t s32q_2(int32x2_t a0, int32x2_t
*** 157,163 ****
  /*
  ** s32q_3:
  **	ldr	d0, \[x0\]
! **	uzp1	v0\.2d, v0\.2d, v1\.2d
  **	ret
  */
  int32x4_t s32q_3(int32x2_t a0, int32x2_t a1, int32x2_t *ptr) {
--- 157,163 ----
  /*
  ** s32q_3:
  **	ldr	d0, \[x0\]
! **	zip1	v0\.2d, v0\.2d, v1\.2d
  **	ret
  */
  int32x4_t s32q_3(int32x2_t a0, int32x2_t a1, int32x2_t *ptr) {
*************** int32x4_t s32q_6(int32x2_t a0, int32x2_t
*** 204,210 ****
  
  /*
  ** f32q_1:
! **	uzp1	v0\.2d, v0\.2d, v1\.2d
  **	ret
  */
  float32x4_t f32q_1(float32x2_t a0, float32x2_t a1) {
--- 204,210 ----
  
  /*
  ** f32q_1:
! **	zip1	v0\.2d, v0\.2d, v1\.2d
  **	ret
  */
  float32x4_t f32q_1(float32x2_t a0, float32x2_t a1) {
*************** float32x4_t f32q_2(float32x2_t a0, float
*** 221,227 ****
  /*
  ** f32q_3:
  **	ldr	d0, \[x0\]
! **	uzp1	v0\.2d, v0\.2d, v1\.2d
  **	ret
  */
  float32x4_t f32q_3(float32x2_t a0, float32x2_t a1, float32x2_t *ptr) {
--- 221,227 ----
  /*
  ** f32q_3:
  **	ldr	d0, \[x0\]
! **	zip1	v0\.2d, v0\.2d, v1\.2d
  **	ret
  */
  float32x4_t f32q_3(float32x2_t a0, float32x2_t a1, float32x2_t *ptr) {
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/arm/pr124077.c gcc-17-20260614/gcc/testsuite/gcc.target/arm/pr124077.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/arm/pr124077.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/arm/pr124077.c	Sun Jun 14 22:32:13 2026
***************
*** 0 ****
--- 1,25 ----
+ /* { dg-do compile } */
+ /* { dg-options "-Os" } */
+ /* { dg-require-effective-target arm_arch_v8m_base_ok } */
+ /* { dg-add-options arm_arch_v8m_base } */
+ 
+ extern int y;
+ extern void bar(void);
+ extern volatile int *p;
+ 
+ #define FILL p[0] = 1; p[1] = 2; p[2] = 3; p[3] = 4; p[4] = 5; p[5] = 6; p[6] = 7;
+ 
+ void foo(int x, int z)
+ {
+   y = x & z;
+   if (y)
+   {
+     FILL FILL FILL FILL FILL;
+   }
+   else
+   {
+     bar();
+   }
+ }
+ 
+ /* { dg-final { scan-assembler-not "cmp\tr\[0-9\], #0" } } */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/avr/torture/fx-to-double.c gcc-17-20260614/gcc/testsuite/gcc.target/avr/torture/fx-to-double.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/avr/torture/fx-to-double.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/avr/torture/fx-to-double.c	Sun Jun 14 22:32:13 2026
***************
*** 0 ****
--- 1,88 ----
+ /* { dg-do run { target { ! avr_tiny } } } */
+ /* { dg-additional-options "-std=gnu99 -Wno-pedantic" } */
+ 
+ typedef long double DD;
+ 
+ typedef long long _Fract dq_t;
+ typedef long long _Accum ta_t;
+ typedef long _Accum da_t;
+ typedef unsigned long long _Fract udq_t;
+ typedef unsigned long long _Accum uta_t;
+ typedef unsigned long _Accum uda_t;
+ 
+ #define NI __attribute__((noipa))
+ 
+ #define MK_CONV(T)				\
+   NI DD T##2d (T##_t x)				\
+   {						\
+     __asm ("" : "+r" (x));			\
+     return (DD) x;				\
+   }						\
+ 						\
+   NI T##_t d2##T (DD x)				\
+   {						\
+     __asm ("" : "+r" (x));			\
+     return (T##_t) x;				\
+   }
+ 
+ 
+ MK_CONV (da)
+ MK_CONV (ta)
+ MK_CONV (dq)
+ 
+ MK_CONV (uda)
+ MK_CONV (uta)
+ MK_CONV (udq)
+ 
+ #define TEST(T)					\
+   do {						\
+     T##_t fx = d2##T (x);			\
+     DD y = T##2d (fx);				\
+     if (y != x)					\
+       __builtin_exit (__LINE__);		\
+   } while (0)
+ 
+ 
+ NI void test_s (DD x)
+ {
+   TEST (da);
+   TEST (ta);
+ 
+   if (x < 1.0L && x >= -1.0L)
+     TEST (dq);
+ }
+ 
+ 
+ NI void test_u (long double x)
+ {
+   TEST (uda);
+   TEST (uta);
+ 
+   if (x < 1.0L)
+     TEST (udq);
+ }
+ 
+ void test (DD x)
+ {
+   if (x >= 0)
+     test_u (x);
+ 
+   test_s (x);
+ }
+ 
+ int main (void)
+ {
+   test (+0.0L);
+   test (-0.0L);
+ 
+   test (+1.0L);
+   test (-1.0L);
+ 
+   test (-0x0.cafe123p0);
+   test (+0x0.cafe123p0);
+ 
+   test (+0x1234.cafe123p0);
+   test (-0x1234.cafe123p0);
+ 
+   return 0;
+ }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-13.c gcc-17-20260614/gcc/testsuite/gcc.target/i386/builtin-memmove-13.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-13.c	Sun Jun  7 22:32:12 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/i386/builtin-memmove-13.c	Sun Jun 14 22:32:13 2026
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-avx -msse2 -mtune=generic -fno-pie" } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
! /* { dg-final { check-function-bodies "**" "" "" { target { lp64 } } {^\t?\.} } } */
  
  /*
  **foo:
--- 1,8 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-avx -msse2 -mtune=generic -fno-pie" } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
! /* { dg-final { check-function-bodies "**" "*#" "" { target { lp64 && { ! *-*-darwin* } } } {^\t?\.} } } */
! /* { dg-final { check-function-bodies "*D" "*E" "" { target { lp64 && *-*-darwin* } } {^\t?\.} } } */
  
  /*
  **foo:
***************
*** 14,19 ****
--- 15,30 ----
  **	ret
  **	.cfi_endproc
  **...
+ *#
+ 
+ *Dfoo:
+ *D	movl	3\+_a\(%rip\), %eax
+ *D	movl	%eax, _a\(%rip\)
+ *D	movzbl	7\+_a\(%rip\), %eax
+ *D	movb	%al, 4\+_a\(%rip\)
+ *D	ret
+ *D...
+ *E
  */
  
  char a[8] = "12345678";
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/i386/cf_check-11.c gcc-17-20260614/gcc/testsuite/gcc.target/i386/cf_check-11.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/i386/cf_check-11.c	Sun Jun  7 22:32:12 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/i386/cf_check-11.c	Sun Jun 14 22:32:13 2026
*************** foo (void)
*** 21,24 ****
  {
  }
  
! /* { dg-final { scan-assembler ".weak\[ \t\]_?foo" } } */
--- 21,24 ----
  {
  }
  
! /* { dg-final { scan-assembler ".weak(|_definition)\[ \t\]_?foo" } } */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/i386/memcpy-pr120683-1.c gcc-17-20260614/gcc/testsuite/gcc.target/i386/memcpy-pr120683-1.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/i386/memcpy-pr120683-1.c	Sun Jun  7 22:32:12 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/i386/memcpy-pr120683-1.c	Sun Jun 14 22:32:13 2026
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-sse -mmemcpy-strategy=unrolled_loop:256:noalign,libcall:-1:noalign" } */
! /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
! /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
  /*
  **foo:
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-sse -mmemcpy-strategy=unrolled_loop:256:noalign,libcall:-1:noalign" } */
! /* { dg-final { check-function-bodies "**" "*#" "" { target { lp64 && { ! *-*-darwin* } } } {^\t?\.} } } */
! /* { dg-final { check-function-bodies "*D" "*E" "" { target { lp64 && *-*-darwin* } } {^\t?\.} } } */
  
  /*
  **foo:
***************
*** 31,36 ****
--- 31,64 ----
  **	jb	.L[0-9]+
  **	ret
  **...
+ *#
+ 
+ *Dfoo:
+ *D	movq	221\(%rsi\), %rax
+ *D	xorl	%edx, %edx
+ *D	movq	%rax, 221\(%rdi\)
+ *D	movq	229\(%rsi\), %rax
+ *D	movq	%rax, 229\(%rdi\)
+ *D	movq	237\(%rsi\), %rax
+ *D	movq	%rax, 237\(%rdi\)
+ *D	movq	245\(%rsi\), %rax
+ *D	movq	%rax, 245\(%rdi\)
+ *D.L[0-9]+:
+ *D	movl	%edx, %eax
+ *D	addl	\$32, %edx
+ *D	movq	\(%rsi,%rax\), %r10
+ *D	cmpl	\$224, %edx
+ *D	movq	8\(%rsi,%rax\), %r9
+ *D	movq	16\(%rsi,%rax\), %r8
+ *D	movq	24\(%rsi,%rax\), %rcx
+ *D	movq	%r10, \(%rdi,%rax\)
+ *D	movq	%r9, 8\(%rdi,%rax\)
+ *D	movq	%r8, 16\(%rdi,%rax\)
+ *D	movq	%rcx, 24\(%rdi,%rax\)
+ *D	jb	.L[0-9]+
+ *D	ret
+ *D...
+ *E
  */
  
  void
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/i386/memcpy-strategy-13.c gcc-17-20260614/gcc/testsuite/gcc.target/i386/memcpy-strategy-13.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/i386/memcpy-strategy-13.c	Sun Jun  7 22:32:12 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/i386/memcpy-strategy-13.c	Sun Jun 14 22:32:13 2026
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mtune=generic -mno-avx" } */
! /* { dg-final { scan-assembler "jmp\tmemcpy" { target { ! ia32 } } } } */
! /* { dg-final { scan-assembler "call\tmemcpy" { target ia32 } } } */
  /* { dg-final { scan-assembler-not "rep movsb" } } */
  
  void
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -mtune=generic -mno-avx" } */
! /* { dg-final { scan-assembler "jmp\t_?memcpy" { target { ! ia32 } } } } */
! /* { dg-final { scan-assembler "call\t_?memcpy" { target ia32 } } } */
  /* { dg-final { scan-assembler-not "rep movsb" } } */
  
  void
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-10.c gcc-17-20260614/gcc/testsuite/gcc.target/i386/memset-pr120683-10.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-10.c	Sun Jun  7 22:32:12 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/i386/memset-pr120683-10.c	Sun Jun 14 22:32:13 2026
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-sse -mmemset-strategy=unrolled_loop:256:noalign,libcall:-1:noalign" } */
! /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
! /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
  /*
  **foo:
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-sse -mmemset-strategy=unrolled_loop:256:noalign,libcall:-1:noalign" } */
! /* { dg-final { check-function-bodies "**" "*#" "" { target { lp64 && { ! *-*-darwin* } } } {^\t?\.} } } */
! /* { dg-final { check-function-bodies "*D" "*E" "" { target { lp64 && *-*-darwin* } } {^\t?\.} } } */
  
  /*
  **foo:
***************
*** 17,22 ****
--- 17,36 ----
  **	movq	\$0, 53\(%rdi\)
  **	ret
  **...
+ *#
+ 
+ *Dfoo:
+ *D	movq	\$0, 29\(%rdi\)
+ *D	movq	\$0, 37\(%rdi\)
+ *D	movq	\$0, 45\(%rdi\)
+ *D	movq	\$0, 53\(%rdi\)
+ *D	movq	\$0, \(%rdi\)
+ *D	movq	\$0, 8\(%rdi\)
+ *D	movq	\$0, 16\(%rdi\)
+ *D	movq	\$0, 24\(%rdi\)
+ *D	ret
+ *D...
+ *E
  */
  
  void
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-20.c gcc-17-20260614/gcc/testsuite/gcc.target/i386/memset-pr120683-20.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-20.c	Sun Jun  7 22:32:12 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/i386/memset-pr120683-20.c	Sun Jun 14 22:32:13 2026
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=x86-64 -mmemset-strategy=vector_loop:256:noalign,libcall:-1:noalign -fno-pie" } */
! /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
! /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
  /*
  **foo:
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=x86-64 -mmemset-strategy=vector_loop:256:noalign,libcall:-1:noalign -fno-pie" } */
! /* { dg-final { check-function-bodies "**" "*#" "" { target { lp64 && { ! *-*-darwin* } } } {^\t?\.} } } */
! /* { dg-final { check-function-bodies "*D" "*E" "" { target { lp64 && *-*-darwin* } } {^\t?\.} } } */
  
  /*
  **foo:
***************
*** 25,30 ****
--- 25,52 ----
  **	movd	%xmm0, dest\+175\(%rip\)
  **	ret
  **...
+ *#
+ 
+ *Dfoo:
+ *D	movd	%edi, %xmm0
+ *D	punpcklbw	%xmm0, %xmm0
+ *D	punpcklwd	%xmm0, %xmm0
+ *D	pshufd	\$0, %xmm0, %xmm0
+ *D	movaps	%xmm0, 160\+_dest\(%rip\)
+ *D	movaps	%xmm0, _dest\(%rip\)
+ *D	movaps	%xmm0, 16\+_dest\(%rip\)
+ *D	movaps	%xmm0, 32\+_dest\(%rip\)
+ *D	movaps	%xmm0, 48\+_dest\(%rip\)
+ *D	movaps	%xmm0, 64\+_dest\(%rip\)
+ *D	movaps	%xmm0, 80\+_dest\(%rip\)
+ *D	movaps	%xmm0, 96\+_dest\(%rip\)
+ *D	movaps	%xmm0, 112\+_dest\(%rip\)
+ *D	movaps	%xmm0, 128\+_dest\(%rip\)
+ *D	movaps	%xmm0, 144\+_dest\(%rip\)
+ *D	movd	%xmm0, 175\+_dest\(%rip\)
+ *D	ret
+ *D...
+ *E
  */
  
  char dest[179];
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-21.c gcc-17-20260614/gcc/testsuite/gcc.target/i386/memset-pr120683-21.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-21.c	Sun Jun  7 22:32:12 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/i386/memset-pr120683-21.c	Sun Jun 14 22:32:13 2026
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=x86-64 -mmemset-strategy=vector_loop:256:noalign,libcall:-1:noalign -fno-pie" } */
! /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
! /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
  /*
  **foo:
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=x86-64 -mmemset-strategy=vector_loop:256:noalign,libcall:-1:noalign -fno-pie" } */
! /* { dg-final { check-function-bodies "**" "*#" "" { target { lp64 && { ! *-*-darwin* } } } {^\t?\.} } } */
! /* { dg-final { check-function-bodies "*D" "*E" "" { target { lp64 && *-*-darwin* } } {^\t?\.} } } */
  
  /*
  **foo:
***************
*** 25,30 ****
--- 25,52 ----
  **	movaps	%xmm0, dest\+160\(%rip\)
  **	ret
  **...
+ *#
+ 
+ *Dfoo:
+ *D	movd	%edi, %xmm0
+ *D	movb	%dil, 176\+_dest\(%rip\)
+ *D	punpcklbw	%xmm0, %xmm0
+ *D	punpcklwd	%xmm0, %xmm0
+ *D	pshufd	\$0, %xmm0, %xmm0
+ *D	movaps	%xmm0, _dest\(%rip\)
+ *D	movaps	%xmm0, 16\+_dest\(%rip\)
+ *D	movaps	%xmm0, 32\+_dest\(%rip\)
+ *D	movaps	%xmm0, 48\+_dest\(%rip\)
+ *D	movaps	%xmm0, 64\+_dest\(%rip\)
+ *D	movaps	%xmm0, 80\+_dest\(%rip\)
+ *D	movaps	%xmm0, 96\+_dest\(%rip\)
+ *D	movaps	%xmm0, 112\+_dest\(%rip\)
+ *D	movaps	%xmm0, 128\+_dest\(%rip\)
+ *D	movaps	%xmm0, 144\+_dest\(%rip\)
+ *D	movaps	%xmm0, 160\+_dest\(%rip\)
+ *D	ret
+ *D...
+ *E
  */
  
  char dest[177];
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-strategy-27.c gcc-17-20260614/gcc/testsuite/gcc.target/i386/memset-strategy-27.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-strategy-27.c	Sun Jun  7 22:32:12 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/i386/memset-strategy-27.c	Sun Jun 14 22:32:13 2026
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mtune=generic -mno-avx" } */
! /* { dg-final { scan-assembler "jmp\tmemset" { target { ! ia32 } } } } */
! /* { dg-final { scan-assembler "call\tmemset" { target ia32 } } } */
  /* { dg-final { scan-assembler-not "rep stosb" } } */
  
  void
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -mtune=generic -mno-avx" } */
! /* { dg-final { scan-assembler "jmp\t_?memset" { target { ! ia32 } } } } */
! /* { dg-final { scan-assembler "call\t_?memset" { target ia32 } } } */
  /* { dg-final { scan-assembler-not "rep stosb" } } */
  
  void
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/i386/mvc18.c gcc-17-20260614/gcc/testsuite/gcc.target/i386/mvc18.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/i386/mvc18.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/i386/mvc18.c	Sun Jun 14 22:32:13 2026
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do compile } */
+ /* { dg-require-ifunc "" } */
+ 
+ /* { dg-final { scan-assembler "foo\.avx10_2\[,@\]" } } */
+ /* { dg-final { scan-assembler "foo\.apxf\[,@\]" } } */
+ /* { dg-final { scan-assembler "foo\.arch_diamondrapids\[,@\]" } } */
+ /* { dg-final { scan-assembler "foo\.arch_novalake\[,@\]" } } */
+ 
+ __attribute__((target_clones("avx10.2","apxf","arch=diamondrapids",
+ 			     "arch=novalake","default")))
+ int foo ();
+ 
+ int main()
+ {
+   return foo();
+ }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/i386/opt-comi-1.c gcc-17-20260614/gcc/testsuite/gcc.target/i386/opt-comi-1.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/i386/opt-comi-1.c	Sun Jun  7 22:32:12 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/i386/opt-comi-1.c	Sun Jun 14 22:32:13 2026
***************
*** 1,5 ****
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -mfpmath=sse -msse2" } */
+ /* { dg-additional-options "-fno-unwind-tables -fno-asynchronous-unwind-tables" { target *-*-darwin* } } */
  /* { dg-final { scan-assembler-times "comiss" 9 } } */
  /* { dg-final { scan-assembler-times "set" 9 } } */
  
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr111657-1.c gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr111657-1.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr111657-1.c	Sun Jun  7 22:32:12 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr111657-1.c	Sun Jun 14 22:32:13 2026
***************
*** 1,7 ****
  /* { dg-do assemble } */
  /* { dg-options "-O2 -mno-sse -mtune=generic -save-temps -fno-pie" } */
! /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
! /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
  /*
  **bar:
--- 1,7 ----
  /* { dg-do assemble } */
  /* { dg-options "-O2 -mno-sse -mtune=generic -save-temps -fno-pie" } */
! /* { dg-final { check-function-bodies "**" "*#" "" { target { lp64 && { ! *-*-darwin* } } } {^\t?\.} } } */
! /* { dg-final { check-function-bodies "*D" "*E" "" { target { lp64 && *-*-darwin* } } {^\t?\.} } } */
  
  /*
  **bar:
***************
*** 20,25 ****
--- 20,45 ----
  **	cmpl	\$224, %eax
  **	jb	.L[0-9]+
  **...
+ *#
+ 
+ * Darwin caches the address of m in rax.
+ *Dbar:
+ *D...
+ *DL[0-9]+:
+ *D	movl	%edx, %ecx
+ *D	addl	\$32, %edx
+ *D	movq	%gs:\(%rax,%rcx\), %r10
+ *D	movq	%gs:8\(%rax,%rcx\), %r9
+ *D	movq	%gs:16\(%rax,%rcx\), %r8
+ *D	movq	%gs:24\(%rax,%rcx\), %rsi
+ *D	movq	%r10, \(%rdi,%rcx\)
+ *D	movq	%r9, 8\(%rdi,%rcx\)
+ *D	movq	%r8, 16\(%rdi,%rcx\)
+ *D	movq	%rsi, 24\(%rdi,%rcx\)
+ *D	cmpl	\$224, %edx
+ *D	jb	L[0-9]+
+ *D...
+ *E
  */
  
  typedef unsigned long uword __attribute__ ((mode (word)));
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-1a.c gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr122343-1a.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-1a.c	Sun Jun  7 22:32:12 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr122343-1a.c	Sun Jun 14 22:32:13 2026
***************
*** 2,8 ****
  /* { dg-options "-O2 -fomit-frame-pointer" } */
  /* { dg-additional-options "-mregparm=1" { target ia32 } } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
! /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
  
  /*
  **foo:
--- 2,9 ----
  /* { dg-options "-O2 -fomit-frame-pointer" } */
  /* { dg-additional-options "-mregparm=1" { target ia32 } } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
! /* { dg-final { check-function-bodies "**" "*#" "" { target { ! *-*-darwin* } } {^\t?\.} } } */
! /* { dg-final { check-function-bodies "*D" "*E" "" { target { *-*-darwin* && lp64 } } {^\t?\.} } } */
  
  /*
  **foo:
***************
*** 13,18 ****
--- 14,29 ----
  **	ret
  **	.cfi_endproc
  **...
+ *#
+ 
+ * Darwin indirects the extern
+ *Dfoo:
+ *D	movq	_bar@GOTPCREL\(%rip\), %rdx
+ *D	imull	\$123, %edi, %eax
+ *D	addl	\(%rdx\), %eax
+ *D	ret
+ *D...
+ *E
  */
  
  extern volatile int bar;
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-1b.c gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr122343-1b.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-1b.c	Sun Jun  7 22:32:12 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr122343-1b.c	Sun Jun 14 22:32:13 2026
***************
*** 2,8 ****
  /* { dg-options "-O2 -fomit-frame-pointer -fno-fuse-ops-with-volatile-access" } */
  /* { dg-additional-options "-mregparm=1" { target ia32 } } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
! /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
  
  /*
  **foo:
--- 2,9 ----
  /* { dg-options "-O2 -fomit-frame-pointer -fno-fuse-ops-with-volatile-access" } */
  /* { dg-additional-options "-mregparm=1" { target ia32 } } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
! /* { dg-final { check-function-bodies "**" "*#" "" { target { ! *-*-darwin* } } {^\t?\.} } } */
! /* { dg-final { check-function-bodies "*D" "*E" "" { target { *-*-darwin* && lp64 } } {^\t?\.} } } */
  
  /*
  **foo:
***************
*** 14,19 ****
--- 15,31 ----
  **	ret
  **	.cfi_endproc
  **...
+ *#
+ 
+ * Darwin indirects the extern
+ *Dfoo:
+ *D	movq	_bar@GOTPCREL\(%rip\), %rax
+ *D	movl	\(%rax\), %edx
+ *D	imull	\$123, %edi, %eax
+ *D	addl	%edx, %eax
+ *D	ret
+ *D...
+ *E
  */
  
  #include "pr122343-1a.c"
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-2a.c gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr122343-2a.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-2a.c	Sun Jun  7 22:32:12 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr122343-2a.c	Sun Jun 14 22:32:13 2026
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -fomit-frame-pointer" } */
! /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
! /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
  
  /*
  **foo:
--- 1,8 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -fomit-frame-pointer" } */
! /* { dg-add-options check_function_bodies } */
! /* { dg-final { check-function-bodies "**" "*#" "" { target { ! *-*-darwin* } } {^\t?\.} } } */
! /* { dg-final { check-function-bodies "*D" "*E" "" { target *-*-darwin* } {^\t?\.} } } */
  
  /*
  **foo:
***************
*** 12,17 ****
--- 13,29 ----
  **	ret
  **	.cfi_endproc
  **...
+ *#
+ 
+ * Darwin indirects accesses to externs.
+ *Dfoo:
+ *D	movq	_bar1@GOTPCREL\(%rip\), %rax
+ *D	movq	_bar2@GOTPCREL\(%rip\), %rdx
+ *D	movl	\(%rax\), %eax
+ *D	addl	\(%rdx\), %eax
+ *D	ret
+ *D...
+ *E
  */
  
  extern volatile int bar1, bar2;
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-2b.c gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr122343-2b.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-2b.c	Sun Jun  7 22:32:12 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr122343-2b.c	Sun Jun 14 22:32:13 2026
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -fomit-frame-pointer -fno-fuse-ops-with-volatile-access" } */
! /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
! /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
  
  /*
  **foo:
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -fomit-frame-pointer -fno-fuse-ops-with-volatile-access" } */
! /* { dg-final { check-function-bodies "**" "*#" "" { target { ! *-*-darwin* } } {^\t?\.} } } */
! /* { dg-final { check-function-bodies "*D" "*E" "" { target *-*-darwin* } {^\t?\.} } } */
  
  /*
  **foo:
***************
*** 13,18 ****
--- 13,30 ----
  **	ret
  **	.cfi_endproc
  **...
+ *#
+ *
+ * Darwin indirects accesses to externs.
+ *Dfoo:
+ *D	movq	_bar1@GOTPCREL\(%rip\), %rax
+ *D	movq	_bar2@GOTPCREL\(%rip\), %rdx
+ *D	movl	\(%rax\), %eax
+ *D	movl	\(%rdx\), %edx
+ *D	addl	%edx, %eax
+ *D	ret
+ *D...
+ *E
  */
  
  #include "pr122343-2a.c"
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-3.c gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr122343-3.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-3.c	Sun Jun  7 22:32:12 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr122343-3.c	Sun Jun 14 22:32:13 2026
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -fomit-frame-pointer" } */
! /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
! /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
  
  /*
  **foo:
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -fomit-frame-pointer" } */
! /* { dg-final { check-function-bodies "**" "*#" "" { target { ! *-*-darwin* } } {^\t?\.} } } */
! /* { dg-final { check-function-bodies "*D" "*E" "" { target { *-*-darwin* && lp64 } } {^\t?\.} } } */
  
  /*
  **foo:
***************
*** 11,16 ****
--- 11,25 ----
  **	ret
  **	.cfi_endproc
  **...
+ *#
+ 
+ * Darwin indirects the extern.
+ *Dfoo:
+ *D	movq	_bar@GOTPCREL\(%rip\), %rax
+ *D	addl	\$123, \(%rax\)
+ *D	ret
+ *D...
+ *E
  */
  
  extern volatile int bar;
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-4a.c gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr122343-4a.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-4a.c	Sun Jun  7 22:32:12 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr122343-4a.c	Sun Jun 14 22:32:13 2026
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -fomit-frame-pointer" } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
! /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
  
  /*
  **foo:
--- 1,8 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -fomit-frame-pointer" } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
! /* { dg-final { check-function-bodies "**" "*#" "" { target { ! *-*-darwin* } } {^\t?\.} } } */
! /* { dg-final { check-function-bodies "*D" "*E" "" { target { *-*-darwin* && lp64 } } {^\t?\.} } } */
  
  /*
  **foo:
***************
*** 17,22 ****
--- 18,38 ----
  **	ret
  **	.cfi_endproc
  **...
+ *#
+ 
+ * Darwin indirects the extern.
+ *Dfoo:
+ *D	movq	_bar@GOTPCREL\(%rip\), %rdx
+ *D	movl	\(%rdx\), %eax
+ *D	movl	\(%rdx\), %eax
+ *D...
+ *D	barrier
+ *D...
+ *D	addl	\(%rdx\), %eax
+ *D	subl	\(%rdx\), %eax
+ *D	ret
+ *D...
+ *E
  */
  
  extern volatile int bar;
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-4b.c gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr122343-4b.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-4b.c	Sun Jun  7 22:32:12 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr122343-4b.c	Sun Jun 14 22:32:13 2026
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -fomit-frame-pointer -fno-fuse-ops-with-volatile-access" } */
! /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
! /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
  
  /*
  **foo:
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -fomit-frame-pointer -fno-fuse-ops-with-volatile-access" } */
! /* { dg-final { check-function-bodies "**" "*#" "" { target { ! *-*-darwin* } } {^\t?\.} } } */
! /* { dg-final { check-function-bodies "*D" "*E" "" { target { *-*-darwin* && lp64 } } {^\t?\.} } } */
  
  /*
  **foo:
***************
*** 19,24 ****
--- 19,41 ----
  **	ret
  **	.cfi_endproc
  **...
+ *#
+ 
+ * Darwin indirects extern accesses
+ *Dfoo:
+ *D	movq	_bar@GOTPCREL\(%rip\), %rdx
+ *D	movl	\(%rdx\), %eax
+ *D	movl	\(%rdx\), %eax
+ *D...
+ *D	barrier
+ *D...
+ *D	movl	\(%rdx\), %ecx
+ *D	movl	\(%rdx\), %edx
+ *D	addl	%ecx, %eax
+ *D	subl	%edx, %eax
+ *D	ret
+ *D...
+ *E
  */
  
  #include "pr122343-4a.c"
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-5a.c gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr122343-5a.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-5a.c	Sun Jun  7 22:32:12 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr122343-5a.c	Sun Jun 14 22:32:13 2026
***************
*** 1,8 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -fomit-frame-pointer" } */
  /* { dg-additional-options "-mregparm=1" { target ia32 } } */
! /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
! /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
  
  /*
  **foo:
--- 1,8 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -fomit-frame-pointer" } */
  /* { dg-additional-options "-mregparm=1" { target ia32 } } */
! /* { dg-final { check-function-bodies "**" "*#" "" { target { ! *-*-darwin* } } {^\t?\.} } } */
! /* { dg-final { check-function-bodies "*D" "*E" "" { target { *-*-darwin* && lp64 } } {^\t?\.} } } */
  
  /*
  **foo:
***************
*** 13,18 ****
--- 13,27 ----
  **	ret
  **	.cfi_endproc
  **...
+ *#
+ 
+ * Darwin indirects extern accesses
+ *Dfoo:
+ *D	movq	_bar@GOTPCREL\(%rip\), %rax
+ *D	imull	\$123, %edi, %edi
+ *D	addl	%edi, \(%rax\)
+ *D	ret
+ *E
  */
  
  extern volatile int bar;
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-5b.c gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr122343-5b.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-5b.c	Sun Jun  7 22:32:12 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr122343-5b.c	Sun Jun 14 22:32:13 2026
***************
*** 1,8 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -fomit-frame-pointer -fno-fuse-ops-with-volatile-access" } */
  /* { dg-additional-options "-mregparm=1" { target ia32 } } */
! /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
! /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
  
  /*
  **foo:
--- 1,8 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -fomit-frame-pointer -fno-fuse-ops-with-volatile-access" } */
  /* { dg-additional-options "-mregparm=1" { target ia32 } } */
! /* { dg-final { check-function-bodies "**" "*#" "" { target { ! *-*-darwin* } } {^\t?\.} } } */
! /* { dg-final { check-function-bodies "*D" "*E" "" { target { *-*-darwin* && lp64 } } {^\t?\.} } } */
  
  /*
  **foo:
***************
*** 15,20 ****
--- 15,32 ----
  **	ret
  **	.cfi_endproc
  **...
+ *#
+ 
+ * Darwin indirects extern accesses
+ *Dfoo:
+ *D	movq	_bar@GOTPCREL\(%rip\), %rax
+ *D	imull	\$123, %edi, %edi
+ *D	movl	\(%rax\), %edx
+ *D	addl	%edx, %edi
+ *D	movl	%edi, \(%rax\)
+ *D	ret
+ *D...
+ *E
  */
  
  #include "pr122343-5a.c"
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-6a.c gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr122343-6a.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-6a.c	Sun Jun  7 22:32:12 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr122343-6a.c	Sun Jun 14 22:32:13 2026
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -fomit-frame-pointer" } */
! /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
! /* { dg-final { check-function-bodies "**" "" "" { target { *-*-* } } {^\t?\.} } } */
  
  /*
  **foo:
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -fomit-frame-pointer" } */
! /* { dg-final { check-function-bodies "**" "*#" "" { target { ! *-*-darwin* } } {^\t?\.} } } */
! /* { dg-final { check-function-bodies "*D" "*E" "" { target { *-*-darwin* && lp64 } } {^\t?\.} } } */
  
  /*
  **foo:
***************
*** 20,25 ****
--- 20,42 ----
  **	ret
  **	.cfi_endproc
  **...
+ *#
+ * Darwin indirects extern accesses
+ *Dfoo:
+ *D	movq	_bar@GOTPCREL\(%rip\), %rax
+ *D	movl	\(%rax\), %edx
+ *D	movl	\(%rax\), %edx
+ *D	imull	\$123, %edx, %ecx
+ *D	movl	%ecx, \(%rax\)
+ *D...
+ *D	barrier
+ *D...
+ *D	movl	\(%rax\), %ecx
+ *D	addl	%ecx, %edx
+ *D	subl	%edx, \(%rax\)
+ *D	ret
+ *D...
+ *E
  */
  
  extern volatile int bar;
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-6b.c gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr122343-6b.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-6b.c	Sun Jun  7 22:32:12 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr122343-6b.c	Sun Jun 14 22:32:13 2026
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -fomit-frame-pointer -fno-fuse-ops-with-volatile-access" } */
! /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
! /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
  
  /*
  **foo:
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -fomit-frame-pointer -fno-fuse-ops-with-volatile-access" } */
! /* { dg-final { check-function-bodies "**" "*#" "" { target { ! *-*-darwin* } } {^\t?\.} } } */
! /* { dg-final { check-function-bodies "*D" "*E" "" { target { *-*-darwin* && lp64 } } {^\t?\.} } } */
  
  /*
  **foo:
***************
*** 22,27 ****
--- 22,46 ----
  **	ret
  **	.cfi_endproc
  **...
+ *#
+ * Darwin indirects extern accesses
+ *Dfoo:
+ *D	movq	_bar@GOTPCREL\(%rip\), %rax
+ *D	movl	\(%rax\), %edx
+ *D	movl	\(%rax\), %edx
+ *D	imull	\$123, %edx, %ecx
+ *D	movl	%ecx, \(%rax\)
+ *D...
+ *D	barrier
+ *D...
+ *D	movl	\(%rax\), %esi
+ *D	movl	\(%rax\), %ecx
+ *D	addl	%esi, %edx
+ *D	subl	%edx, %ecx
+ *D	movl	%ecx, \(%rax\)
+ *D	ret
+ *D...
+ *E
  */
  
  #include "pr122343-6a.c"
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-7.c gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr122343-7.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-7.c	Sun Jun  7 22:32:12 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr122343-7.c	Sun Jun 14 22:32:13 2026
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -fomit-frame-pointer" } */
! /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
! /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
  
  /*
  **test:
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -fomit-frame-pointer" } */
! /* { dg-final { check-function-bodies "**" "*#" "" { target { ! *-*-darwin* } } {^\t?\.} } } */
! /* { dg-final { check-function-bodies "*D" "*E" "" { target { *-*-darwin* && lp64 } } {^\t?\.} } } */
  
  /*
  **test:
***************
*** 15,20 ****
--- 15,32 ----
  **	ret
  **	.cfi_endproc
  **...
+ *#
+ 
+ *Dtest:
+ *D	movq	_u8@GOTPCREL\(%rip\), %rax
+ *D	movzbl	\(%rax\), %edx
+ *D	addb	%dl, \(%rax\)
+ *D	movzbl	\(%rax\), %edx
+ *D	subb	\(%rax\), %dl
+ *D	movb	%dl, \(%rax\)
+ *D	ret
+ *D...
+ *E
  */
  
  extern volatile unsigned char u8;
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122675-1.c gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr122675-1.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122675-1.c	Sun Jun  7 22:32:12 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr122675-1.c	Sun Jun 14 22:32:13 2026
***************
*** 12,18 ****
  **	je	.L[0-9]*
  **	subq	\$[0-9]*, %rsp
  **	.cfi_def_cfa_offset [0-9]*
! **	call	f1
  **	addq	\$[0-9]*, %rsp
  **	.cfi_def_cfa_offset [0-9]*
  **	ret
--- 12,18 ----
  **	je	.L[0-9]*
  **	subq	\$[0-9]*, %rsp
  **	.cfi_def_cfa_offset [0-9]*
! **	call	_?f1
  **	addq	\$[0-9]*, %rsp
  **	.cfi_def_cfa_offset [0-9]*
  **	ret
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr125351.c gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr125351.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr125351.c	Sun Jun  7 22:32:12 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr125351.c	Sun Jun 14 22:32:13 2026
***************
*** 1,3 ****
--- 1,4 ----
  /* { dg-do compile } */
  /* { dg-options "-mptwrite -masm=intel" } */
+ /* { dg-skip-if "no intel asm" *-*-darwin* "" "" } */
  void foo() { __builtin_ia32_ptwrite32(0); }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr125355-2.c gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr125355-2.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr125355-2.c	Sun Jun  7 22:32:12 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr125355-2.c	Sun Jun 14 22:32:13 2026
***************
*** 6,13 ****
  /*
  **foo.cold:
  **...
! **	call	memmove
! **	call	abort
  **	.cfi_endproc
  **...
  */
--- 6,13 ----
  /*
  **foo.cold:
  **...
! **	call	_?memmove
! **	call	_?abort
  **	.cfi_endproc
  **...
  */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr125355.c gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr125355.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr125355.c	Sun Jun  7 22:32:12 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr125355.c	Sun Jun 14 22:32:13 2026
***************
*** 7,13 ****
  **foo:
  **.LFB0:
  **	.cfi_startproc
! **	jmp	memmove
  **	.cfi_endproc
  **...
  */
--- 7,13 ----
  **foo:
  **.LFB0:
  **	.cfi_startproc
! **	jmp	_?memmove
  **	.cfi_endproc
  **...
  */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr54412-avx512-aligned64.c gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr54412-avx512-aligned64.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr54412-avx512-aligned64.c	Sun Jun  7 22:32:12 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr54412-avx512-aligned64.c	Thu Jan  1 00:00:00 1970
***************
*** 1,29 ****
- /* PR target/54412 */
- /* { dg-do run { target { avx512f && { ! ia32 } } } } */
- /* { dg-skip-if "PR target/54412 exercises the Win64 ABI" { ! x86_64-*-mingw* } } */
- /* { dg-options "-O0 -mavx512f" } */
- 
- #include "avx512-check.h"
- 
- typedef double v8d __attribute__ ((vector_size (64), aligned (64)));
- 
- __attribute__ ((noinline)) static v8d
- roundtrip_v8d (v8d x)
- {
-   return x;
- }
- 
- static void
- test_512 (void)
- {
-   v8d x __attribute__ ((aligned (64)))
-     = { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 };
-   v8d expected __attribute__ ((aligned (64)))
-     = { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 };
-   v8d r __attribute__ ((aligned (64)));
- 
-   r = roundtrip_v8d (x);
- 
-   if (__builtin_memcmp (&r, &expected, sizeof (r)) != 0)
-     __builtin_abort ();
- }
--- 0 ----
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr54412-callee-byref-param.c gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr54412-callee-byref-param.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr54412-callee-byref-param.c	Sun Jun  7 22:32:12 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr54412-callee-byref-param.c	Thu Jan  1 00:00:00 1970
***************
*** 1,27 ****
- /* PR target/54412 */
- /* { dg-do run { target { avx && { ! ia32 } } } } */
- /* { dg-skip-if "PR target/54412 exercises the Win64 ABI" { ! x86_64-*-mingw* } } */
- /* { dg-options "-O0 -mavx" } */
- 
- #include "avx-check.h"
- 
- typedef float v8f __attribute__ ((vector_size (32), aligned (32)));
- 
- static const v8f expected = { 1.0f, 2.0f, 3.0f, 4.0f,
-                               5.0f, 6.0f, 7.0f, 8.0f };
- 
- __attribute__ ((noinline)) static int
- param_matches (v8f x)
- {
-   return __builtin_memcmp (&x, &expected, sizeof (x)) == 0;
- }
- 
- static void
- avx_test (void)
- {
-   v8f x __attribute__ ((aligned (32)))
-     = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f };
- 
-   if (!param_matches (x))
-     __builtin_abort ();
- }
--- 0 ----
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr54412-o2-by-value-cases.c gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr54412-o2-by-value-cases.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr54412-o2-by-value-cases.c	Sun Jun  7 22:32:12 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr54412-o2-by-value-cases.c	Thu Jan  1 00:00:00 1970
***************
*** 1,104 ****
- /* PR target/54412 */
- /* { dg-do run { target { avx && { ! ia32 } } } } */
- /* { dg-skip-if "PR target/54412 exercises the Win64 ABI" { ! x86_64-*-mingw* } } */
- /* { dg-options "-O2 -mavx -std=gnu99" } */
- 
- #include "avx-check.h"
- #include <immintrin.h>
- 
- typedef double v4d __attribute__ ((vector_size (32), aligned (32)));
- typedef char byte_vec __attribute__ ((vector_size (32)));
- 
- struct avx_wrapper
- {
-   __m256 value;
- };
- 
- #define PERM_LEFT_BVEC \
-   (byte_vec) { 63, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, \
-                15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, \
-                29, 30 }
- 
- __attribute__ ((noinline, noclone)) static v4d
- roundtrip_v4d (v4d x)
- {
-   return x;
- }
- 
- __attribute__ ((noinline)) static __m256
- pass_m256 (__m256 x)
- {
-   return x;
- }
- 
- __attribute__ ((noinline)) static struct avx_wrapper
- pass_wrapper (struct avx_wrapper x)
- {
-   return x;
- }
- 
- __attribute__ ((noinline)) static byte_vec
- permute (byte_vec x, byte_vec y)
- {
-   return __builtin_shuffle (x, y, PERM_LEFT_BVEC);
- }
- 
- static void
- test_v4d_roundtrip (void)
- {
-   v4d x = (v4d) { 1.0, 2.0, 3.0, 4.0 };
-   v4d r = roundtrip_v4d (x);
-   v4d expected = (v4d) { 1.0, 2.0, 3.0, 4.0 };
- 
-   if (__builtin_memcmp (&r, &expected, sizeof (r)) != 0)
-     __builtin_abort ();
- }
- 
- static void
- test_m256_and_wrapper_by_value (void)
- {
-   __m256 m = _mm256_set_ps (8.0f, 7.0f, 6.0f, 5.0f,
-                             4.0f, 3.0f, 2.0f, 1.0f);
-   __m256 r = pass_m256 (m);
-   struct avx_wrapper x;
-   struct avx_wrapper y;
- 
-   x.value = _mm256_set_ps (16.0f, 15.0f, 14.0f, 13.0f,
-                            12.0f, 11.0f, 10.0f, 9.0f);
-   y = pass_wrapper (x);
- 
-   if (__builtin_memcmp (&r, &m, sizeof (r)) != 0)
-     __builtin_abort ();
- 
-   if (__builtin_memcmp (&y, &x, sizeof (y)) != 0)
-     __builtin_abort ();
- }
- 
- static void
- test_two_arg_bytevec_shuffle (void)
- {
-   byte_vec x = { 1, 2, 3, 4, 5, 6, 7, 8,
-                  9, 10, 11, 12, 13, 14, 15, 16,
-                  17, 18, 19, 20, 21, 22, 23, 24,
-                  25, 26, 27, 28, 29, 30, 31, 32 };
-   byte_vec y = { 11, 12, 13, 14, 15, 16, 17, 18,
-                  19, 110, 111, 112, 113, 114, 115, 116,
-                  117, 118, 119, 120, 121, 122, 123, 124,
-                  125, 126, 127, 88, 89, 90, 91, 92 };
-   byte_vec expected = { 92, 1, 2, 3, 4, 5, 6, 7,
-                         8, 9, 10, 11, 12, 13, 14, 15,
-                         16, 17, 18, 19, 20, 21, 22, 23,
-                         24, 25, 26, 27, 28, 29, 30, 31 };
-   byte_vec z = permute (x, y);
- 
-   if (__builtin_memcmp (&z, &expected, sizeof (z)) != 0)
-     __builtin_abort ();
- }
- 
- static void
- avx_test (void)
- {
-   test_v4d_roundtrip ();
-   test_m256_and_wrapper_by_value ();
-   test_two_arg_bytevec_shuffle ();
- }
--- 0 ----
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr54412-sret-no-args.c gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr54412-sret-no-args.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr54412-sret-no-args.c	Sun Jun  7 22:32:12 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr54412-sret-no-args.c	Thu Jan  1 00:00:00 1970
***************
*** 1,36 ****
- /* PR target/54412 */
- /* { dg-do run { target { avx && { ! ia32 } } } } */
- /* { dg-skip-if "PR target/54412 exercises the Win64 ABI" { ! x86_64-*-mingw* } } */
- /* { dg-options "-O2 -mavx -std=gnu99" } */
- 
- #include "avx-check.h"
- #include <immintrin.h>
- 
- struct avx_wrapper
- {
-   __m256 value;
- };
- 
- __attribute__ ((noinline)) static struct avx_wrapper
- make_wrapper (void)
- {
-   struct avx_wrapper x;
- 
-   x.value = _mm256_set_ps (8.0f, 7.0f, 6.0f, 5.0f,
-                            4.0f, 3.0f, 2.0f, 1.0f);
-   return x;
- }
- 
- static void
- avx_test (void)
- {
-   struct avx_wrapper expected;
-   struct avx_wrapper r;
- 
-   expected.value = _mm256_set_ps (8.0f, 7.0f, 6.0f, 5.0f,
-                                   4.0f, 3.0f, 2.0f, 1.0f);
-   r = make_wrapper ();
- 
-   if (__builtin_memcmp (&r, &expected, sizeof (r)) != 0)
-     __builtin_abort ();
- }
--- 0 ----
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr54412-v4d-o0-aligned-locals.c gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr54412-v4d-o0-aligned-locals.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr54412-v4d-o0-aligned-locals.c	Sun Jun  7 22:32:12 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr54412-v4d-o0-aligned-locals.c	Thu Jan  1 00:00:00 1970
***************
*** 1,27 ****
- /* PR target/54412 */
- /* { dg-do run { target { avx && { ! ia32 } } } } */
- /* { dg-skip-if "PR target/54412 exercises the Win64 ABI" { ! x86_64-*-mingw* } } */
- /* { dg-options "-O0 -mavx" } */
- 
- #include "avx-check.h"
- 
- typedef double v4d __attribute__ ((vector_size (32)));
- 
- __attribute__ ((noinline)) static v4d
- f (v4d x)
- {
-   return x;
- }
- 
- static void
- avx_test (void)
- {
-   v4d x __attribute__ ((aligned (32))) = { 1.0, 2.0, 3.0, 4.0 };
-   v4d expected __attribute__ ((aligned (32))) = { 1.0, 2.0, 3.0, 4.0 };
-   v4d r __attribute__ ((aligned (32)));
- 
-   r = f (x);
- 
-   if (__builtin_memcmp (&r, &expected, sizeof (r)) != 0)
-     __builtin_abort ();
- }
--- 0 ----
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr89954.c gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr89954.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr89954.c	Sun Jun  7 22:32:12 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr89954.c	Sun Jun 14 22:32:13 2026
*************** long long sext_xorlq (void) { return al
*** 36,43 ****
  
  #endif
  
! /* { dg-final { scan-assembler-times "movsbw" 3 } } */
! /* { dg-final { scan-assembler-times "movsbl" 3 } } */
  /* { dg-final { scan-assembler-times "movswl" 3 } } */
  
  /* { dg-final { scan-assembler-times "movsbq" 3 { target { ! ia32 } } } } */
--- 36,42 ----
  
  #endif
  
! /* { dg-final { scan-assembler-times "movsbl" 6 } } */
  /* { dg-final { scan-assembler-times "movswl" 3 } } */
  
  /* { dg-final { scan-assembler-times "movsbq" 3 { target { ! ia32 } } } } */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr92080-17.c gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr92080-17.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr92080-17.c	Sun Jun  7 22:32:12 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/i386/pr92080-17.c	Sun Jun 14 22:32:13 2026
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=x86-64-v3" } */
! /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
! /* { dg-final { check-function-bodies "**" "" "" { target { ! ia32 } } {^\t?\.}  } } */
  
  /*
  **foo:
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=x86-64-v3" } */
! /* { dg-final { check-function-bodies "**" "*#" "" { target { { ! ia32 } && { ! *-*-darwin* } } } {^\t?\.} } } */
! /* { dg-final { check-function-bodies "*D" "*E" "" { target { lp64 && *-*-darwin* } } {^\t?\.} } } */
  
  /*
  **foo:
***************
*** 12,17 ****
--- 12,29 ----
  **	vmovdqu	%xmm0, cost2\(%rip\)
  **	ret
  **...
+ *#
+ 
+ *Dfoo:
+ *D	movq	_cost@GOTPCREL\(%rip\), %rax
+ *D	vpbroadcastw	\(%rax\), %xmm0
+ *D	movq	_cost1@GOTPCREL\(%rip\), %rax
+ *D	vmovq	%xmm0, \(%rax\)
+ *D	movq	_cost2@GOTPCREL\(%rip\), %rax
+ *D	vmovdqu	%xmm0, \(%rax\)
+ *D	ret
+ *D...
+ *E
  */
  
  extern struct {
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/i386/prefetchi-1.c gcc-17-20260614/gcc/testsuite/gcc.target/i386/prefetchi-1.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/i386/prefetchi-1.c	Sun Jun  7 22:32:12 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/i386/prefetchi-1.c	Sun Jun 14 22:32:13 2026
***************
*** 1,7 ****
  /* { dg-do compile { target { ! ia32 } } } */
  /* { dg-options "-mprefetchi -O2" } */
! /* { dg-final { scan-assembler-times "\[ \\t\]+prefetchit0\[ \\t\]+bar\\(%rip\\)" 2 } } */
! /* { dg-final { scan-assembler-times "\[ \\t\]+prefetchit1\[ \\t\]+bar\\(%rip\\)" 2 } } */
  
  #include <x86intrin.h>
  
--- 1,7 ----
  /* { dg-do compile { target { ! ia32 } } } */
  /* { dg-options "-mprefetchi -O2" } */
! /* { dg-final { scan-assembler-times "\[ \\t\]+prefetchit0\[ \\t\]+_?bar\\(%rip\\)" 2 } } */
! /* { dg-final { scan-assembler-times "\[ \\t\]+prefetchit1\[ \\t\]+_?bar\\(%rip\\)" 2 } } */
  
  #include <x86intrin.h>
  
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/i386/prefetchi-1b.c gcc-17-20260614/gcc/testsuite/gcc.target/i386/prefetchi-1b.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/i386/prefetchi-1b.c	Sun Jun  7 22:32:12 2026
--- gcc-17-20260614/gcc/testsuite/gcc.target/i386/prefetchi-1b.c	Sun Jun 14 22:32:13 2026
***************
*** 1,7 ****
  /* { dg-do compile { target { ! ia32 } } } */
  /* { dg-options "-mprefetchi -O0" } */
! /* { dg-final { scan-assembler-times "\[ \\t\]+prefetchit0\[ \\t\]+bar\\(%rip\\)" 1 } } */
! /* { dg-final { scan-assembler-times "\[ \\t\]+prefetchit1\[ \\t\]+bar\\(%rip\\)" 1 } } */
  
  #include <x86intrin.h>
  
--- 1,7 ----
  /* { dg-do compile { target { ! ia32 } } } */
  /* { dg-options "-mprefetchi -O0" } */
! /* { dg-final { scan-assembler-times "\[ \\t\]+prefetchit0\[ \\t\]+_?bar\\(%rip\\)" 1 } } */
! /* { dg-final { scan-assembler-times "\[ \\t\]+prefetchit1\[ \\t\]+_?bar\\(%rip\\)" 1 } } */
  
  #include <x86intrin.h>
  
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/powerpc/amo8.c gcc-17-20260614/gcc/testsuite/gcc.target/powerpc/amo8.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/powerpc/amo8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/powerpc/amo8.c	Sun Jun 14 22:32:13 2026
***************
*** 0 ****
--- 1,36 ----
+ /* { dg-do compile { target { lp64 } } } */
+ /* { dg-options "-mdejagnu-cpu=future -O2" } */
+ /* { dg-require-effective-target powerpc_future_compile_ok } */
+ 
+ #include <amo.h>
+ #include <stdint.h>
+ 
+ /* Test whether the compiler generates expected code for the ISA <future> AMO
+    (atomic memory operations) functions  */
+ 
+ uint32_t
+ do_lw_cs_eq (uint32_t *mem, uint32_t cond, uint32_t value)
+ {
+   return amo_lwat_cas_eq (mem, cond, value);
+ }
+ 
+ int32_t
+ do_lw_scs_eq (int32_t *mem, int32_t cond, int32_t value)
+ {
+   return amo_lwat_scas_eq (mem, cond, value);
+ }
+ 
+ uint64_t
+ do_ld_cs_eq (uint64_t *mem, uint64_t cond, uint64_t value)
+ {
+   return amo_ldat_cas_eq (mem, cond, value);
+ }
+ 
+ int64_t
+ do_ld_scs_eq (int64_t *mem, int64_t cond, int64_t value)
+ {
+   return amo_ldat_scas_eq (mem, cond, value);
+ }
+ 
+ /* { dg-final { scan-assembler-times {\mlwat\M}  2 } } */
+ /* { dg-final { scan-assembler-times {\mldat\M}  2 } } */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/powerpc/amo9.c gcc-17-20260614/gcc/testsuite/gcc.target/powerpc/amo9.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/powerpc/amo9.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/powerpc/amo9.c	Sun Jun 14 22:32:13 2026
***************
*** 0 ****
--- 1,57 ----
+ /* { dg-do run { target { lp64 } } } */
+ /* { dg-options "-mdejagnu-cpu=future -O2" } */
+ /* { dg-require-effective-target powerpc_future_hw } */
+ 
+ #include <amo.h>
+ #include <stdint.h>
+ #include <stdlib.h>
+ #include <limits.h>
+ 
+ /* Test whether the compiler generates expected output for the Future ISA amo
+    (atomic memory operations) functions  */
+ 
+ int
+ main (void)
+ {
+   static uint32_t u32_test1_mem = 100;
+   static uint32_t u32_test1_cond = 100;
+   static uint32_t u32_test1_value = 250;
+   static uint32_t u32_test1_expected_result = 100;
+   static uint32_t u32_test1_actual_result;
+   static uint32_t u32_test2_mem = 100;
+   static uint32_t u32_test2_cond = 200;
+   static uint32_t u32_test2_value = 250;
+   static uint32_t u32_test2_expected_result = 100;
+   static uint32_t u32_test2_actual_result;
+   static uint64_t u64_mem = 300;
+   static uint64_t u64_cond = 300;
+   static uint64_t u64_value = 250;
+   static uint64_t u64_expected_result = 300;
+   static uint64_t u64_actual_result;
+ 
+   u32_test1_actual_result = amo_lwat_cas_eq (&u32_test1_mem,
+ 					     u32_test1_cond, u32_test1_value);
+   u32_test2_actual_result = amo_lwat_cas_eq (&u32_test2_mem,
+ 					     u32_test2_cond, u32_test2_value);
+   u64_actual_result = amo_ldat_cas_eq (&u64_mem, u64_cond, u64_value);
+ 
+   if (u32_test1_mem != u32_test1_value)
+     abort ();
+ 
+   if (u32_test1_actual_result != u32_test1_expected_result)
+     abort ();
+ 
+   if (u32_test2_mem != u32_test2_expected_result)
+     abort ();
+ 
+   if (u32_test2_actual_result != u32_test2_expected_result)
+     abort ();
+ 
+   if (u64_mem != u64_value)
+     abort ();
+ 
+   if (u64_actual_result != u64_expected_result)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/pr125395.c gcc-17-20260614/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/pr125395.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/pr125395.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/pr125395.c	Sun Jun 14 22:32:14 2026
***************
*** 0 ****
--- 1,26 ----
+ /* { dg-do assemble } */
+ /* { dg-options "-march=rv32gc_xtheadvector -mabi=ilp32d -O2 -save-temps" { target { rv32 } } } */
+ /* { dg-options "-march=rv64gc_xtheadvector -mabi=lp64d -O2 -save-temps" { target { rv64 } } } */
+ 
+ #include "riscv_vector.h"
+ 
+ /* Test that static rounding modes do not cause string splicing in th_asm_output_opcode. */
+ 
+ vint32m1_t test_vfncvt_ftoi(vfloat64m2_t src, size_t vl) {
+   return __riscv_vfncvt_rtz_x_f_w_i32m1(src, vl);
+ }
+ 
+ vfloat32m1_t test_vfncvt_ftof(vfloat64m2_t src, size_t vl) {
+   return __riscv_vfncvt_rod_f_f_w_f32m1(src, vl);
+ }
+ 
+ vint64m4_t test_vfwcvt_ftoi(vfloat32m2_t src, size_t vl) {
+   return __riscv_vfwcvt_rtz_x_f_v_i64m4(src, vl);
+ }
+ 
+ /* { dg-final { scan-assembler-not "\\.rtz" } } */
+ /* { dg-final { scan-assembler-not "\\.rod" } } */
+ /* { dg-final { scan-assembler-not "th\\.vfncvt\\..*\\.w" } } */
+ /* { dg-final { scan-assembler-times "th\\.vfncvt\\.x\\.f\\.v\\s+" 1 } } */
+ /* { dg-final { scan-assembler-times "th\\.vfncvt\\.f\\.f\\.v\\s+" 1 } } */
+ /* { dg-final { scan-assembler-times "th\\.vfwcvt\\.x\\.f\\.v\\s+" 1 } } */
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sifive-7-load-address-bypass.c gcc-17-20260614/gcc/testsuite/gcc.target/riscv/sifive-7-load-address-bypass.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sifive-7-load-address-bypass.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/riscv/sifive-7-load-address-bypass.c	Sun Jun 14 22:32:14 2026
***************
*** 0 ****
--- 1,23 ----
+ /* Test SiFive-7 load-to-address bypass optimization.  */
+ 
+ /* { dg-do compile } */
+ /* { dg-options "-mtune=sifive-7-series" } */
+ /* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Os" "-Oz" "-Og" "-flto" } } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ struct node {
+   int value;
+   struct node *next;
+ };
+ 
+ /*
+ **load_value:
+ **	l[wd]	[at][0-9],0\(a0\)
+ **	lw	a0,0\([at][0-9]\)
+ **	ret
+ */
+ int load_value(struct node **ptr)
+ {
+   struct node *p = *ptr;
+   return p->value;
+ }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/riscv/zicfilp-trampoline.c gcc-17-20260614/gcc/testsuite/gcc.target/riscv/zicfilp-trampoline.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/riscv/zicfilp-trampoline.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/riscv/zicfilp-trampoline.c	Sun Jun 14 22:32:14 2026
***************
*** 0 ****
--- 1,14 ----
+ /* { dg-do compile { target { riscv64*-*-* } } } */
+ /* { dg-require-effective-target trampolines } */
+ /* { dg-options "-Wpadded -march=rv64gc_zicfilp -mabi=lp64d -fcf-protection=branch -O2" } */
+ /* { dg-final { scan-assembler "lpad\\s+0" } } */
+ 
+ extern int baz(int (*) (int));
+ int foo(void)
+ {
+   int k = 3;
+   int bar(int x) {
+     return x + k;
+   }
+   return baz(bar);
+ }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/s390/ira-pic-spill-1.c gcc-17-20260614/gcc/testsuite/gcc.target/s390/ira-pic-spill-1.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/s390/ira-pic-spill-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/s390/ira-pic-spill-1.c	Sun Jun 14 22:32:14 2026
***************
*** 0 ****
--- 1,14 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -march=z14 -fPIC" } */
+ /* { dg-final { scan-assembler-not {lay\t%r15,-[0-9]+\(%r15\)} } } */
+ 
+ /* Ensure no spills and ultimately that no stack frame is allocated.  */
+ 
+ long strstr_ifunc_hwcap;
+ void __redirect_strstr();
+ __typeof(__redirect_strstr) __strstr_vx __attribute__((visibility("hidden")));
+ __typeof(__redirect_strstr) __strstr_arch13 __attribute__((visibility("hidden")));
+ __typeof(__redirect_strstr) *strstr_ifunc()
+ {
+   return strstr_ifunc_hwcap ? __strstr_arch13 : __strstr_vx;
+ }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/s390/ira-pic-spill-2.c gcc-17-20260614/gcc/testsuite/gcc.target/s390/ira-pic-spill-2.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/s390/ira-pic-spill-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/s390/ira-pic-spill-2.c	Sun Jun 14 22:32:14 2026
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -march=z14 -fPIC" } */
+ /* { dg-final { scan-assembler-not {lay\t%r15,-[0-9]+\(%r15\)} } } */
+ 
+ /* Ensure no spills and ultimately that no stack frame is allocated.  */
+ 
+ typedef long int __time_t;
+ typedef long int __syscall_slong_t;
+ struct timespec
+ {
+   __time_t tv_sec;
+   __syscall_slong_t tv_nsec;
+ };
+ 
+ struct timespec
+ support_timespec_normalize (struct timespec time)
+ {
+   struct timespec norm;
+   norm.tv_sec = time.tv_nsec ? 1073741824 : 65536;
+   return norm;
+ }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/s390/ira-pic-spill-3.c gcc-17-20260614/gcc/testsuite/gcc.target/s390/ira-pic-spill-3.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/s390/ira-pic-spill-3.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/s390/ira-pic-spill-3.c	Sun Jun 14 22:32:14 2026
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -march=z14 -fPIC" } */
+ /* { dg-final { scan-assembler-not {lay\t%r15,-[0-9]+\(%r15\)} } } */
+ 
+ /* Ensure no spills and ultimately that no stack frame is allocated.  */
+ 
+ int _mode;
+ struct _IO_FILE_plus {
+   int vtable;
+ };
+ enum { IO_FILE_JUMPS_MAYBE_MMAP, IO_WFILE_JUMPS_MAYBE_MMAP };
+ extern int __io_vtables[] __attribute__((visibility("hidden")));
+ void __fopen_maybe_mmap_fp() {
+   if (_mode)
+     *(__typeof__(&(struct _IO_FILE_plus){}.vtable) *)__fopen_maybe_mmap_fp =
+         &__io_vtables[IO_FILE_JUMPS_MAYBE_MMAP];
+   else
+     *(__typeof__(&(struct _IO_FILE_plus){}.vtable) *)__fopen_maybe_mmap_fp =
+         &__io_vtables[IO_WFILE_JUMPS_MAYBE_MMAP];
+ }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gcc.target/s390/section-anchors-4.c gcc-17-20260614/gcc/testsuite/gcc.target/s390/section-anchors-4.c
*** gcc-17-20260607/gcc/testsuite/gcc.target/s390/section-anchors-4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gcc.target/s390/section-anchors-4.c	Sun Jun 14 22:32:14 2026
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -march=z13" } */
+ /* { dg-final { scan-assembler-times "\tlarl\t" 1 } } */
+ 
+ /* Prior LRA we have
+ 
+    12: {%f0:DF=[`*.LANCHOR0']+[const(`*.LANCHOR0'+0x8)];clobber %cc:CC;}
+ 
+    and afterwards
+ 
+    20: %r1:DI=`*.LANCHOR0'
+    17: %f0:DF=[%r1:DI]
+    19: %r1:DI=`*.LANCHOR0'
+    12: {%f0:DF=%f0:DF+[%r1:DI+0x8];clobber %cc:CC;}
+ 
+    where postreload removes the redundant insn 19.  */
+ 
+ double x, y;
+ 
+ double
+ test ()
+ {
+   return x + y;
+ }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/EXformat_4.F90 gcc-17-20260614/gcc/testsuite/gfortran.dg/EXformat_4.F90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/EXformat_4.F90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/EXformat_4.F90	Sun Jun 14 22:32:14 2026
***************
*** 0 ****
--- 1,172 ----
+ ! { dg-do run }
+ ! PR93727 Test EX format READ (read_ex).
+ ! Covers: hex-significand input (0X...P...), decimal fallback, round-trips,
+ ! INF/NAN, and all supported real kinds.
+ program main
+   implicit none
+   call test04
+   call test08
+   call test10
+   call test16
+ 
+ contains
+ 
+ subroutine test04
+   real(kind=4) :: r4
+   character(kind=1,len=40) :: s
+ 
+   ! Round-trip: write then read back.
+   s = ' '
+   write(s,'(EX0.0)') -huge(1.0_4)
+   read(s,'(EX40.0)') r4
+   if (r4 /= -huge(1.0_4)) stop 1
+ 
+   s = ' '
+   write(s,'(EX0.0)') tiny(1.0_4)
+   read(s,'(EX40.0)') r4
+   if (r4 /= tiny(1.0_4)) stop 2
+ 
+   ! Explicit hex literal input.
+   s = '0X1.8P+0'             ! = 1.5 exactly
+   read(s,'(EX40.0)') r4
+   if (r4 /= 1.5_4) stop 3
+ 
+   s = '-0X1.P+0'             ! = -1.0
+   read(s,'(EX40.0)') r4
+   if (r4 /= -1.0_4) stop 4
+ 
+   ! Decimal fallback: no 0X prefix, ordinary E-style input.
+   s = '1.5E0'
+   read(s,'(EX40.0)') r4
+   if (r4 /= 1.5_4) stop 5
+ 
+   s = '   1.5E2   '
+   read(s,'(EX40.0)') r4
+   if (r4 /= 150.0_4) stop 6
+ 
+   ! Zero field (blank record).
+   s = '    '
+   read(s,'(EX4.0)') r4
+   if (r4 /= 0.0_4) stop 7
+ 
+ end subroutine test04
+ 
+ 
+ subroutine test08
+   real(kind=8) :: r8
+   character(kind=1,len=40) :: s
+ 
+   ! Round-trip.
+   s = ' '
+   write(s,'(EX0.0)') -huge(1.0_8)
+   read(s,'(EX40.0)') r8
+   if (r8 /= -huge(1.0_8)) stop 8
+ 
+   s = ' '
+   write(s,'(EX0.0)') tiny(1.0_8)
+   read(s,'(EX40.0)') r8
+   if (r8 /= tiny(1.0_8)) stop 9
+ 
+   ! Explicit hex: IEEE 754 representation of 1/3.
+   s = '0X1.5555555555555P-2'
+   read(s,'(EX40.0)') r8
+   if (r8 /= 1.0_8 / 3.0_8) stop 10
+ 
+   ! Negative hex.
+   s = '-0X1.8P+0'            ! = -1.5
+   read(s,'(EX40.0)') r8
+   if (r8 /= -1.5_8) stop 11
+ 
+   ! Decimal fallback.
+   s = '3.14159265358979E0'
+   read(s,'(EX40.0)') r8
+   if (abs(r8 - 3.14159265358979_8) > 2.0_8 * epsilon(r8)) stop 12
+ 
+   ! Round-trip on an interesting value.
+   s = ' '
+   write(s,'(EX0.0)') -3.14159265358979_8 * 25.0_8
+   read(s,'(EX40.0)') r8
+   if (r8 /= -3.14159265358979_8 * 25.0_8) stop 13
+ 
+   ! Lowercase hex prefix and negative binary exponent.
+   s = '0x1.8p-1'            ! = 0.75
+   read(s,'(EX40.0)') r8
+   if (r8 /= 0.75_8) stop 14
+ 
+   ! d-field: no decimal point in decimal input; d=2 places from right.
+   s = '12345   '
+   read(s,'(EX10.2)') r8
+   if (r8 /= 123.45_8) stop 15
+ 
+   ! INF and NaN input via decimal fallback path.
+   s = 'Inf'
+   read(s,'(EX40.0)') r8
+   if (r8 <= huge(r8)) stop 16
+ 
+   s = '-Infinity'
+   read(s,'(EX40.0)') r8
+   if (r8 >= -huge(r8)) stop 17
+ 
+   s = 'NaN'
+   read(s,'(EX40.0)') r8
+   if (r8 == r8) stop 18
+ 
+ end subroutine test08
+ 
+ 
+ #ifdef __GFC_REAL_10__
+ subroutine test10
+   real(kind=10) :: r10
+   character(kind=1,len=40) :: s
+ 
+   ! Round-trip.
+   s = ' '
+   write(s,'(EX0.0)') -huge(1.0_10)
+   read(s,'(EX40.0)') r10
+   if (r10 /= -huge(1.0_10)) stop 19
+ 
+   s = ' '
+   write(s,'(EX0.0)') tiny(1.0_10)
+   read(s,'(EX40.0)') r10
+   if (r10 /= tiny(1.0_10)) stop 20
+ 
+   ! Explicit hex: 1.5 = 0X1.8P+0
+   s = '0X1.8P+0'
+   read(s,'(EX40.0)') r10
+   if (r10 /= 1.5_10) stop 21
+ 
+ end subroutine test10
+ #else
+ subroutine test10
+ end subroutine test10
+ #endif
+ 
+ 
+ #ifdef __GFC_REAL_16__
+ subroutine test16
+   real(kind=16) :: r16
+   character(kind=1,len=40) :: s
+ 
+   ! Round-trip.
+   s = ' '
+   write(s,'(EX0.0)') -huge(1.0_16)
+   read(s,'(EX40.0)') r16
+   if (r16 /= -huge(1.0_16)) stop 22
+ 
+   s = ' '
+   write(s,'(EX0.0)') tiny(1.0_16)
+   read(s,'(EX40.0)') r16
+   if (r16 /= tiny(1.0_16)) stop 23
+ 
+   ! Explicit hex: 1.5 = 0X1.8P+0
+   s = '0X1.8P+0'
+   read(s,'(EX40.0)') r16
+   if (r16 /= 1.5_16) stop 24
+ 
+ end subroutine test16
+ #else
+ subroutine test16
+ end subroutine test16
+ #endif
+ 
+ end program main
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/allocatable_length.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/allocatable_length.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/allocatable_length.f90	Sun Jun  7 22:32:13 2026
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/allocatable_length.f90	Sun Jun 14 22:32:14 2026
***************
*** 1,5 ****
  ! { dg-do compile }
! ! { dg-options "-Werror -Wall" }
  module foo
     contains
        subroutine bar 
--- 1,5 ----
  ! { dg-do compile }
! ! { dg-options "-Werror -Wall -Wno-undefined-vars" }
  module foo
     contains
        subroutine bar 
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/allocatable_scalar_6.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/allocatable_scalar_6.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/allocatable_scalar_6.f90	Sun Jun  7 22:32:13 2026
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/allocatable_scalar_6.f90	Sun Jun 14 22:32:14 2026
***************
*** 1,5 ****
  ! { dg-do run }
! ! { dg-options "-Wall -pedantic" }
  !
  ! PR fortran/41872
  !
--- 1,5 ----
  ! { dg-do run }
! ! { dg-options "-Wall -pedantic -Wno-unused-but-set-variable" }
  !
  ! PR fortran/41872
  !
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/allocatable_uninitialized_1.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/allocatable_uninitialized_1.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/allocatable_uninitialized_1.f90	Sun Jun  7 22:32:13 2026
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/allocatable_uninitialized_1.f90	Sun Jun 14 22:32:14 2026
***************
*** 1,8 ****
  ! { dg-do compile }
! ! { dg-options "-O -Wall" }
  program main
    real,allocatable:: a(:),b(:)
  
     a(1)=2*b(1) ! { dg-warning "uninitialized" }
- 
  end
--- 1,7 ----
  ! { dg-do compile }
! ! { dg-options "-O -Wall -Wno-unused-but-set-variable -Wno-undefined-vars" }
  program main
    real,allocatable:: a(:),b(:)
  
     a(1)=2*b(1) ! { dg-warning "uninitialized" }
  end
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/assignment_4.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/assignment_4.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/assignment_4.f90	Sun Jun  7 22:32:13 2026
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/assignment_4.f90	Sun Jun 14 22:32:14 2026
***************
*** 1,5 ****
  ! { dg-do compile }
! ! { dg-options "-Wall" }
  !
  ! PR 55855: [OOP] incorrect warning with procedure pointer component on pointer-valued base object
  !
--- 1,5 ----
  ! { dg-do compile }
! ! { dg-options "-Wall -Wno-undefined-vars" }
  !
  ! PR 55855: [OOP] incorrect warning with procedure pointer component on pointer-valued base object
  !
***************
*** 13,16 ****
--- 13,17 ----
    type(event), pointer :: myEvent
    allocate(myEvent)
    r=myEvent%task()  ! { dg-warning "uninitialized" }
+   call foo(r)
  end 
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/associate_81.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/associate_81.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/associate_81.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/associate_81.f90	Sun Jun 14 22:32:14 2026
***************
*** 0 ****
--- 1,44 ----
+ ! { dg-do run }
+ !
+ ! PR fortran/125650
+ !
+ ! Verify that an ASSOCIATE selector that is an overloaded intrinsic operator
+ ! expression (here a CHARACTER-returning `+', bound via an explicit
+ ! interface) is extended to a function call early enough that the
+ ! associate name receives a known type before the body of the ASSOCIATE
+ ! construct is parsed.  Previously the associate name stayed untyped,
+ ! a substring reference to it was matched incorrectly, and the wrong
+ ! reference reached the back end, causing an ICE in trans-expr.cc.
+ 
+ module associate_81_m
+   implicit none
+ 
+   interface operator(+)
+     module procedure concat
+   end interface
+ 
+ contains
+ 
+   function concat (dd1, dd2)
+     implicit none
+     character(len = 8) :: concat
+     character(len = 3), intent(in) :: dd1
+     character(len = 5), intent(in) :: dd2
+     concat = dd1 // dd2
+   end function
+ 
+ end module
+ 
+ program associate_81
+   use associate_81_m
+   implicit none
+ 
+   character(len = 3) :: arg1 = 'aaa'
+   character(len = 5) :: arg2 = 'ccccc'
+ 
+   associate (aa => arg1, bb => arg2, cc => arg1 + arg2)
+     if (cc /= 'aaaccccc') stop 1
+     if (cc(3:5) /= 'acc') stop 2
+   end associate
+ 
+ end program
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/associate_82.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/associate_82.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/associate_82.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/associate_82.f90	Sun Jun 14 22:32:14 2026
***************
*** 0 ****
--- 1,25 ----
+ ! { dg-do run }
+ !
+ ! Test the fix for a double free when an ASSOCIATE selector is a function
+ ! returning an allocatable deferred-length character.  The cleanup code
+ ! for the associate name freed the result a second time, after the
+ ! procedure call's own cleanup had already freed it.
+ 
+ module m
+   implicit none
+ contains
+   function get_string () result(val)
+     character(len=:), allocatable :: val
+     val = "needle"
+   end function
+ end module
+ 
+ program main
+   use m
+   implicit none
+ 
+   associate (search_string => get_string ())
+     if (len (search_string) == 0) STOP 1
+     if (search_string // "!" /= "needle!") STOP 2
+   end associate
+ end program
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/associate_contained_func_typebound.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/associate_contained_func_typebound.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/associate_contained_func_typebound.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/associate_contained_func_typebound.f90	Sun Jun 14 22:32:14 2026
***************
*** 0 ****
--- 1,54 ----
+ ! { dg-do compile }
+ ! { dg-options "" }
+ !
+ ! PR fortran/125530
+ ! ASSOCIATE with a contained-function selector giving spurious errors when
+ ! type-bound (including generic) procedures are called on the associate name.
+ 
+ module tbp_m
+   implicit none
+   type :: t
+     integer :: n = 0
+   contains
+     procedure :: direct_call
+     procedure :: target_of_generic
+     generic   :: generic_call => target_of_generic
+   end type
+ contains
+   subroutine direct_call (self)
+     class(t), intent(in) :: self
+     print *, self%n
+   end subroutine
+   subroutine target_of_generic (self)
+     class(t), intent(in) :: self
+     print *, self%n
+   end subroutine
+ end module
+ 
+ ! Direct type-bound call.
+ subroutine test_direct ()
+   use tbp_m
+   implicit none
+   associate (x => make_t())
+     call x%direct_call()
+   end associate
+ contains
+   function make_t() result(r)
+     type(t) :: r
+     r%n = 1
+   end function
+ end subroutine
+ 
+ ! Generic type-bound call.
+ subroutine test_generic ()
+   use tbp_m
+   implicit none
+   associate (x => make_t())
+     call x%generic_call()
+   end associate
+ contains
+   function make_t() result(r)
+     type(t) :: r
+     r%n = 2
+   end function
+ end subroutine
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/associate_contained_func_typebound_2.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/associate_contained_func_typebound_2.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/associate_contained_func_typebound_2.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/associate_contained_func_typebound_2.f90	Sun Jun 14 22:32:14 2026
***************
*** 0 ****
--- 1,73 ----
+ ! { dg-do run }
+ ! { dg-options "" }
+ !
+ ! PR fortran/125530
+ ! ASSOCIATE with a contained-function selector must allow type-bound
+ ! (including generic) procedure calls on the associate name, and resolve
+ ! them to the correct target.  Run-time companion to
+ ! associate_contained_func_typebound.f90.
+ 
+ module m
+   implicit none
+   type :: t
+     integer :: n = 0
+   contains
+     procedure :: direct_call
+     procedure :: target_of_generic1
+     procedure :: target_of_generic2
+     generic   :: generic_call => target_of_generic1, target_of_generic2
+   end type
+   integer :: ctr = 0
+ contains
+   subroutine direct_call (self)
+     class(t), intent(in) :: self
+     ctr = ctr + self%n
+   end subroutine
+   subroutine target_of_generic1 (self)
+     class(t), intent(in) :: self
+     ctr = ctr + self%n * 10
+   end subroutine
+   subroutine target_of_generic2 (self, arg)
+     class(t), intent(in) :: self
+     integer, intent(in) :: arg
+     ctr = ctr + (self%n + arg) * 100
+   end subroutine
+ end module
+ 
+ module m2
+   use m
+   implicit none
+ contains
+   ! Selector is a contained function.
+   subroutine test_direct ()
+     associate (x => make_t ())
+       call x%direct_call ()
+     end associate
+   contains
+     function make_t () result (r)
+       type(t) :: r
+       r%n = 1
+     end function
+   end subroutine
+ 
+   ! Selector is the module-scope function; generic resolved by argument count.
+   subroutine test_generic ()
+     associate (x => make_t ())
+       call x%generic_call ()
+       call x%generic_call (1)
+     end associate
+   end subroutine
+ 
+   function make_t () result (r)
+     type(t) :: r
+     r%n = 2
+   end function
+ end module
+ 
+ program p
+   use m
+   use m2
+   call test_generic    ! 2*10 + (2+1)*100 = 320
+   call test_direct     ! + 1            = 321
+   if (ctr /= 321) stop 1
+ end program p
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/attr_deprecated-2.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/attr_deprecated-2.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/attr_deprecated-2.f90	Sun Jun  7 22:32:13 2026
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/attr_deprecated-2.f90	Sun Jun 14 22:32:14 2026
***************
*** 1,5 ****
  ! { dg-do compile }
! ! { dg-additional-options "-Wall" }
  !
  ! Ensure that only those parameters are warned for which are actually used
  !
--- 1,5 ----
  ! { dg-do compile }
! ! { dg-additional-options "-Wall -Wno-undefined-vars" }
  !
  ! Ensure that only those parameters are warned for which are actually used
  !
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/c_by_val_5.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/c_by_val_5.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/c_by_val_5.f90	Sun Jun  7 22:32:13 2026
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/c_by_val_5.f90	Sun Jun 14 22:32:14 2026
***************
*** 1,6 ****
  ! { dg-do run }
  ! Overwrite -pedantic setting:
! ! { dg-options "-Wall" }
  !
  ! Tests the fix for PR31668, in which %VAL was rejected for
  ! module and internal procedures.
--- 1,6 ----
  ! { dg-do run }
  ! Overwrite -pedantic setting:
! ! { dg-options "-Wall -Wno-unused-but-set-variable" }
  !
  ! Tests the fix for PR31668, in which %VAL was rejected for
  ! module and internal procedures.
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/char_component_initializer_2.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/char_component_initializer_2.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/char_component_initializer_2.f90	Sun Jun  7 22:32:13 2026
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/char_component_initializer_2.f90	Sun Jun 14 22:32:14 2026
*************** program gfcbug62
*** 13,16 ****
--- 13,17 ----
    i = 1
    k = 1
    if (tdefi(1) .ne. ctl%tdefi(1)) STOP 1
+   if (i /=1 .or. k /= 1) stop 2
  end program gfcbug62
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/char_length_1.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/char_length_1.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/char_length_1.f90	Sun Jun  7 22:32:13 2026
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/char_length_1.f90	Sun Jun 14 22:32:14 2026
*************** program test
*** 16,19 ****
--- 16,20 ----
    a =  (/ 'Takata ', 'Tanaka ', 'Hayashi' /)
    b = "abc" ! { dg-error "no IMPLICIT" }
    c = "abcdefg"   ! { dg-warning "will be truncated" }
+   print *,a,b,c
  end program test
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/constructor_9.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/constructor_9.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/constructor_9.f90	Sun Jun  7 22:32:13 2026
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/constructor_9.f90	Sun Jun 14 22:32:14 2026
***************
*** 1,5 ****
  ! { dg-do compile }
! ! { dg-options "-Wall" }
  !
  ! PR 58471: [4.8/4.9 Regression] ICE on invalid with missing type constructor and -Wall
  !
--- 1,5 ----
  ! { dg-do compile }
! ! { dg-options "-Wall -Wno-unused-but-set-variable" }
  !
  ! PR 58471: [4.8/4.9 Regression] ICE on invalid with missing type constructor and -Wall
  !
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/gamma_2.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/gamma_2.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/gamma_2.f90	Sun Jun  7 22:32:13 2026
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/gamma_2.f90	Sun Jun 14 22:32:14 2026
*************** rsp = lgamma(rsp)
*** 28,32 ****
--- 28,33 ----
  rdp = lgamma(rdp)
  rsp = algama(rsp)
  rdp = dlgama(rdp)
+ print *,rsp,rdp
  end subroutine foo
  end
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/goacc/asyncwait-4.f95 gcc-17-20260614/gcc/testsuite/gfortran.dg/goacc/asyncwait-4.f95
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/goacc/asyncwait-4.f95	Sun Jun  7 22:32:13 2026
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/goacc/asyncwait-4.f95	Sun Jun 14 22:32:14 2026
*************** program asyncwait
*** 35,41 ****
  
    !$acc wait async 1 ! { dg-error "Failed to match clause" }
  
!   !$acc waitasync ! { dg-error "Failed to match clause" }
  
    !$acc wait,async ! { dg-error "Failed to match clause" }
  end program asyncwait
--- 35,41 ----
  
    !$acc wait async 1 ! { dg-error "Failed to match clause" }
  
!   !$acc waitasync ! { dg-error "Unclassifiable OpenACC directive" }
  
    !$acc wait,async ! { dg-error "Failed to match clause" }
  end program asyncwait
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/goacc/routine-6.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/goacc/routine-6.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/goacc/routine-6.f90	Sun Jun  7 22:32:13 2026
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/goacc/routine-6.f90	Sun Jun 14 22:32:14 2026
*************** end program main
*** 63,69 ****
  ! Ensure that we recover from incomplete function definitions.
  
  integer function f1 ! { dg-error "Expected formal argument list in function definition" }
!   !$acc routine ! { dg-error "Unclassifiable OpenACC directive" }
  end function f1 ! { dg-error "Expecting END PROGRAM statement" }
  
  subroutine subr1 (x) 
--- 63,69 ----
  ! Ensure that we recover from incomplete function definitions.
  
  integer function f1 ! { dg-error "Expected formal argument list in function definition" }
!   !$acc routine ! { dg-error "16: Syntax error in statement" }
  end function f1 ! { dg-error "Expecting END PROGRAM statement" }
  
  subroutine subr1 (x) 
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/allocate-10.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/gomp/allocate-10.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/allocate-10.f90	Sun Jun  7 22:32:13 2026
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/gomp/allocate-10.f90	Sun Jun 14 22:32:14 2026
***************
*** 1,4 ****
! ! { dg-additional-options "-Wall -fdump-tree-gimple" }
  
  module m
  use iso_c_binding
--- 1,4 ----
! ! { dg-additional-options "-Wall -fdump-tree-gimple -Wno-unused-but-set-variable" }
  
  module m
  use iso_c_binding
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/declare-mapper-1.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/gomp/declare-mapper-1.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/declare-mapper-1.f90	Sun Jun  7 22:32:13 2026
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/gomp/declare-mapper-1.f90	Sun Jun 14 22:32:14 2026
*************** end type
*** 8,14 ****
  
  integer :: q, z
  
! !$omp declare mapper(t :: v) map(v%x(1:5)) ! { dg-error "Sorry, 'declare mapper', used at .1., is not yet implemented" }
  !$omp declare mapper(my_name : t :: v2) map(q) map(v2) map(z)
  
  type(t) :: var(4)
--- 8,14 ----
  
  integer :: q, z
  
! !$omp declare mapper(t :: v) map(v%x(1:5))
  !$omp declare mapper(my_name : t :: v2) map(q) map(v2) map(z)
  
  type(t) :: var(4)
*************** type t
*** 29,35 ****
  end type t
  integer :: y
  !$omp declare mapper( t :: var) map(to: y) ! { dg-error "At least one 'map' clause in !.OMP DECLARE MAPPER at .1. must map 'var' or an element of it" }
- ! { dg-error "Sorry, 'declare mapper', used at .1., is not yet implemented" "" { target *-*-* } .-1 }
  end
  
  
--- 29,34 ----
*************** type t
*** 39,45 ****
  end type t
  integer :: y
  !$omp declare mapper( t :: var) ! { dg-error "At least one 'map' clause in !.OMP DECLARE MAPPER at .1. must map 'var' or an element of it" }
- ! { dg-error "Sorry, 'declare mapper', used at .1., is not yet implemented" "" { target *-*-* } .-1 }
  end
  
  subroutine four
--- 38,43 ----
*************** subroutine four
*** 50,55 ****
    !$omp declare mapper(my_id : t :: v3) map(v3)  ! { dg-error "Redefinition of !.OMP DECLARE MAPPER at .1. for type 'TYPE\\(t\\)' with id 'my_id'" }
  
    !$omp declare mapper(t :: v4) map(v4)  ! { dg-note "Previous !.OMP DECLARE MAPPER here" }
- ! { dg-error "Sorry, 'declare mapper', used at .1., is not yet implemented" "" { target *-*-* } .-1 }
    !$omp declare mapper(t :: v5) map(v5)  ! { dg-error "Redefinition of !.OMP DECLARE MAPPER at .1. for type 'TYPE\\(t\\)'" }
  end
--- 48,52 ----
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/declare-mapper-3.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/gomp/declare-mapper-3.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/declare-mapper-3.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/gomp/declare-mapper-3.f90	Sun Jun 14 22:32:14 2026
***************
*** 0 ****
--- 1,29 ----
+ ! { dg-do compile }
+ 
+ ! Simple module test.
+ 
+ module m
+  implicit none
+  type t
+    integer :: x
+  end type t
+  !$omp declare mapper(t :: v) map(v)
+  !$omp declare mapper(only_x : t :: y) map(y%x)
+ 
+ type(t) :: var2
+ contains
+ subroutine s
+ !$omp target enter data map(mapper(default), to: var2)  ! { dg-error "Sorry, declared mapper 'default', used for 'var2' at .1., is not yet supported" }
+ end
+ end module m
+ 
+ use m
+ implicit none
+ type(t) :: var
+ !$omp target enter data map(mapper(default), to: var)  ! { dg-error "Sorry, declared mapper 'default', used for 'var' at .1., is not yet supported" }
+ 
+ !$omp target exit data map(mapper(only_x), release: var)  ! { dg-error "Sorry, declared mapper 'only_x', used for 'var' at .1., is not yet supported" }
+ 
+ !$omp target map(var)  ! { dg-error "Sorry, declared mapper 'default', used for 'var' at .1., is not yet supported" }
+ !$omp end target
+ end
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/declare-mapper-31.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/gomp/declare-mapper-31.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/declare-mapper-31.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/gomp/declare-mapper-31.f90	Sun Jun 14 22:32:14 2026
***************
*** 0 ****
--- 1,38 ----
+ ! { dg-do compile }
+ 
+ type t
+ integer :: x, y
+ integer, allocatable :: arr(:)
+ end type t
+ 
+ type(t) :: var
+ 
+ allocate(var%arr(1:20))
+ 
+ var%arr = 0
+ 
+ ! If we ask for a named mapper that hasn't been defined, an error should be
+ ! raised.  This isn't a *syntax* error, so the !$omp target..!$omp end target
+ ! block should still be parsed correctly.
+ !$omp target map(mapper(arraymapper), tofrom: var)
+ ! { dg-error "User-defined mapper .arraymapper. not found" "" { target *-*-* } .-1 }
+ block
+ var%arr(5) = 5
+ end block
+ !$omp end target
+ 
+ ! OTOH, this is a syntax error, and the offload block is not recognized.
+ !$omp target map(
+ ! { dg-error "Syntax error in OpenMP variable list" "" { target *-*-* } .-1 }
+ block
+ var%arr(6) = 6
+ end block
+ 
+ ! ...but not for the specific name 'default'.
+ !$omp target map(mapper(default), tofrom: var)
+ block
+ var%arr(5) = 5
+ end block
+ !$omp end target
+ 
+ end
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/declare-mapper-4.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/gomp/declare-mapper-4.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/declare-mapper-4.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/gomp/declare-mapper-4.f90	Sun Jun 14 22:32:14 2026
***************
*** 0 ****
--- 1,20 ----
+ module m
+   implicit none
+   private
+   type t
+     integer :: x, z
+   end type t
+   type t2
+  !  private
+     type(t) :: y
+   end type t2
+   public :: t2
+   !$omp declare mapper(t :: v) map(v%x)
+ end module m
+ 
+ use m
+ implicit none
+ type(t2) :: var
+ ! Shall honor mapper
+ !$omp target enter data map(var%y) ! { dg-error "Sorry, declared mapper 'default', used for 'var' at .1., is not yet supported" }
+ end
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/declare-mapper-5.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/gomp/declare-mapper-5.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/declare-mapper-5.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/gomp/declare-mapper-5.f90	Sun Jun 14 22:32:14 2026
***************
*** 0 ****
--- 1,39 ----
+ ! { dg-do compile }
+ 
+ ! The following are two declare mapper.
+ ! Technically, they aren't ambiguous as they are identical
+ ! but still we expect an error.
+ 
+ module one
+   implicit none
+   type t
+     integer, pointer :: x(:)
+   end type t
+ end module
+ 
+ module two
+   use one
+   implicit none
+   !$omp declare mapper(t :: v) map(v, v%x)
+ end module two
+ 
+ module three
+   use one
+   implicit none
+   !$omp declare mapper(t :: v) map(v, v%x)
+ end module three
+ 
+ subroutine sub1
+   use two   ! { dg-note "Previous !.OMP DECLARE MAPPER from module 'two'" }
+   use three ! { dg-error "Ambiguous !.OMP DECLARE MAPPER 'default' for type 't' from module 'three' at .1." }
+   implicit none
+   type(t) :: var
+ 
+   allocate(var%x(1:20))
+   var%x = 0
+ 
+   !$omp target map(tofrom: var)
+   block
+     var%x = 1
+   end block
+ end
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/declare-mapper-6.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/gomp/declare-mapper-6.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/declare-mapper-6.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/gomp/declare-mapper-6.f90	Sun Jun 14 22:32:14 2026
***************
*** 0 ****
--- 1,43 ----
+ ! Check that type renaming via module use is properly handled.
+ 
+ module first
+   implicit none
+   type t
+     integer, pointer :: x(:)
+   end type t
+   !$omp declare mapper(t :: v) map(v, v%x)
+ end module
+ 
+ module second
+   implicit none
+   type t
+     integer, pointer :: y(:)
+     integer, pointer :: z(:)
+   end type t
+   !$omp declare mapper(t :: v) map(v, v%y, v%z)
+ end module
+ 
+ subroutine sub2
+  use first, t1 => t
+  use second, t2 => t
+  implicit none
+   type(t1) :: var
+   type(t2) :: var2
+ 
+   allocate(var%x(1:20))
+   allocate(var2%y(1:3), var2%z(5))
+   var%x = 9
+   var2%y = 1
+   var2%z = 43
+ 
+   !$omp target map(tofrom: var) ! { dg-error "Sorry, declared mapper 'default', used for 'var' at .1., is not yet supported" }
+   block
+     var%x = 4
+   end block
+ 
+   !$omp target map(tofrom: var2) ! { dg-error "Sorry, declared mapper 'default', used for 'var2' at .1., is not yet supported" }
+   block
+     var2%y = 3
+     var2%z = 7
+   end block
+ end
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/declare-mapper-7.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/gomp/declare-mapper-7.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/declare-mapper-7.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/gomp/declare-mapper-7.f90	Sun Jun 14 22:32:14 2026
***************
*** 0 ****
--- 1,29 ----
+ ! Check that type renaming via module use is properly handled.
+ 
+ module zero
+   implicit none
+   type t
+     integer, pointer :: x(:)
+     integer, pointer :: y(:)
+   end type t
+ end module zero
+ 
+ module first
+   use zero, only: t1 => t
+   implicit none
+   !$omp declare mapper(t1 :: v1) map(v1, v1%x)
+ end module
+ 
+ module second
+   use zero, only: t2 => t
+   implicit none
+   !$omp declare mapper(t2 :: v2) map(v2, v2%x, v2%y)
+ end module
+ 
+ subroutine sub2
+   use first  ! { dg-note "Previous !.OMP DECLARE MAPPER from module 'first'" }
+   use second ! { dg-error "Ambiguous !.OMP DECLARE MAPPER 'default' for type 't' from module 'second'" }
+   implicit none
+   ! type(t1) :: var1
+   ! type(t2) :: var2
+ end
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/declare-reduction-1.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/gomp/declare-reduction-1.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/declare-reduction-1.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/gomp/declare-reduction-1.f90	Sun Jun 14 22:32:14 2026
***************
*** 0 ****
--- 1,39 ----
+ ! { dg-do compile }
+ 
+ module one
+   implicit none
+   type t
+     integer :: x
+   end type t
+ end module
+ 
+ module two
+   use one
+   implicit none
+   !$omp declare reduction(+ : t : omp_out%x = omp_out%x + omp_in%x) initializer (omp_priv%x = 0)
+ end module
+ 
+ module three
+   use one
+   implicit none
+   !$omp declare reduction(+ : t : omp_out%x = omp_out%x + omp_in%x) initializer (omp_priv%x = 0)
+ end module
+ 
+ subroutine sub2
+   use two    ! { dg-note "Previous !.OMP DECLARE REDUCTION from module 'two'" }
+   use three  ! { dg-error "Ambiguous !.OMP DECLARE REDUCTION 'operator \\+' for type 'TYPE\\(t\\)' from module 'three' at .1." }
+   implicit none
+   type(t) :: var(3), sum
+   integer :: i
+ 
+   var(:)%x = [1,2,3]
+   sum%x = 0
+ 
+   !$omp parallel do reduction(+: sum)
+   do i = 1, 3
+     sum%x = sum%x + var(i)%x 
+   end do
+ end
+ 
+ call sub2
+ end
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/declare-reduction-2.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/gomp/declare-reduction-2.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/declare-reduction-2.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/gomp/declare-reduction-2.f90	Sun Jun 14 22:32:14 2026
***************
*** 0 ****
--- 1,10 ----
+ ! Ensure that a someone sensible error message is printed
+ 
+ type t
+ end type t
+ !$omp declare reduction(+:t)
+ ! { dg-error "28: Syntax error in statement at .1." "" { target *-*-* } .-1 }
+ ! { dg-bogus "Unclassifiable OpenMP directive" "" { target *-*-* } .-2 }
+ 
+ 
+ end
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/declare-reduction-3.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/gomp/declare-reduction-3.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/declare-reduction-3.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/gomp/declare-reduction-3.f90	Sun Jun 14 22:32:14 2026
***************
*** 0 ****
--- 1,47 ----
+ ! Check that type renaming via module use is properly handled.
+ 
+ module first
+   implicit none
+   type t
+     integer :: x = 0
+   end type t
+   !$omp declare reduction(+: t : omp_out%x = omp_out%x + omp_in%x)
+ end module
+ 
+ module second
+   implicit none
+   type t
+     integer :: y = 0
+   end type t
+   !$omp declare reduction(+: t : omp_out%y = omp_out%y + omp_in%y)
+ end module
+ 
+ subroutine sub2
+  use first, t1 => t
+  use second, t2 => t
+  implicit none
+   type(t1) :: var(5), sum1
+   type(t2) :: var2(3), sum2
+   integer :: i
+ 
+   var%x = [(2*i, i = 1,5)]
+   var2%y = [(5*i+1, i = 1,3)]
+   sum1%x = 0
+   sum2%y = 0
+ 
+   !$omp parallel do reduction(+:sum1)
+   do i = 1, size(var)
+     sum1%x = sum1%x + var(i)%x
+   end do 
+ 
+   !$omp parallel do reduction(+:sum2)
+   do i = 1, size(var2)
+     sum2%y = sum2%y + var2(i)%y
+   end do 
+   
+   if (sum1%x /= sum(var%x)) stop 1
+   if (sum2%y /= sum(var2%y)) stop 2
+ end
+ 
+ call sub2
+ end
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/declare-reduction-4.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/gomp/declare-reduction-4.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/declare-reduction-4.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/gomp/declare-reduction-4.f90	Sun Jun 14 22:32:14 2026
***************
*** 0 ****
--- 1,28 ----
+ ! Check that type renaming via module use is properly handled.
+ 
+ module zero
+   implicit none
+   type t
+     integer :: x = 0
+   end type t
+ end module zero
+ 
+ module first
+   use zero, only: t1 => t
+   implicit none
+   !$omp declare reduction(+: t1 : omp_out%x = omp_out%x + omp_in%x)
+ end module
+ 
+ module second
+   use zero, only: t2 => t
+   implicit none
+   !$omp declare reduction(+: t2 : omp_out%x = omp_out%x + omp_in%x)
+ end module
+ 
+ subroutine sub2
+   use first  ! { dg-note "Previous !.OMP DECLARE REDUCTION from module 'first'" }
+   use second ! { dg-error "Ambiguous !.OMP DECLARE REDUCTION 'operator \\+' for type 'TYPE\\(t\\)' from module 'second' at .1." }
+   implicit none
+   type(t1) :: var(5), sum1
+   type(t2) :: var2(3), sum2
+ end
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/udr1.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/gomp/udr1.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/udr1.f90	Sun Jun  7 22:32:13 2026
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/gomp/udr1.f90	Sun Jun 14 22:32:14 2026
*************** subroutine f2
*** 22,28 ****
    end do
  end subroutine f2
  subroutine f3
! !$omp declare reduction (foo:blah:omp_out=omp_out + omp_in) ! { dg-error "Unclassifiable OpenMP directive" }
  end subroutine f3
  subroutine f4
  !$omp declare reduction (foo:integer:a => null()) ! { dg-error "Invalid character in name" }
--- 22,28 ----
    end do
  end subroutine f2
  subroutine f3
! !$omp declare reduction (foo:blah:omp_out=omp_out + omp_in) ! { dg-error "30: Syntax error in statement at .1." }
  end subroutine f3
  subroutine f4
  !$omp declare reduction (foo:integer:a => null()) ! { dg-error "Invalid character in name" }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/udr2.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/gomp/udr2.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/udr2.f90	Sun Jun  7 22:32:13 2026
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/gomp/udr2.f90	Sun Jun 14 22:32:14 2026
***************
*** 1,13 ****
  ! { dg-do compile }
  
  subroutine f6
! !$omp declare reduction (foo:real:omp_out (omp_in)) ! { dg-error "Unclassifiable OpenMP directive" }
! !$omp declare reduction (bar:real:omp_out = omp_in * omp_out) & ! { dg-error "Unclassifiable OpenMP directive" }
  !$omp & initializer (omp_priv (omp_orig))
  end subroutine f6
  subroutine f7
    integer :: a
! !$omp declare reduction (foo:integer:a (omp_out, omp_in)) ! { dg-error "Unclassifiable OpenMP directive" }
  !$omp declare reduction (bar:real:omp_out = omp_out.or.omp_in) ! { dg-error "Operands of logical operator" }
  !$omp declare reduction (baz:real:omp_out = omp_out + omp_in)
  !$omp & initializer (a (omp_priv, omp_orig)) ! { dg-error "Unclassifiable OpenMP directive" }
--- 1,13 ----
  ! { dg-do compile }
  
  subroutine f6
! !$omp declare reduction (foo:real:omp_out (omp_in)) ! { dg-error "35: Syntax error in statement at .1." }
! !$omp declare reduction (bar:real:omp_out = omp_in * omp_out) & ! { dg-error "35: Syntax error in statement at .1." }
  !$omp & initializer (omp_priv (omp_orig))
  end subroutine f6
  subroutine f7
    integer :: a
! !$omp declare reduction (foo:integer:a (omp_out, omp_in)) ! { dg-error "38: Syntax error in statement at .1." }
  !$omp declare reduction (bar:real:omp_out = omp_out.or.omp_in) ! { dg-error "Operands of logical operator" }
  !$omp declare reduction (baz:real:omp_out = omp_out + omp_in)
  !$omp & initializer (a (omp_priv, omp_orig)) ! { dg-error "Unclassifiable OpenMP directive" }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/udr4.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/gomp/udr4.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/udr4.f90	Sun Jun  7 22:32:13 2026
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/gomp/udr4.f90	Sun Jun 14 22:32:14 2026
***************
*** 1,10 ****
  ! { dg-do compile }
  
  subroutine f3
! !$omp declare reduction ! { dg-error "Unclassifiable OpenMP directive" }
! !$omp declare reduction foo ! { dg-error "Unclassifiable OpenMP directive" }
! !$omp declare reduction (foo) ! { dg-error "Unclassifiable OpenMP directive" }
! !$omp declare reduction (foo:integer) ! { dg-error "Unclassifiable OpenMP directive" }
  !$omp declare reduction (foo:integer:omp_out=omp_out+omp_in) &
  !$omp & initializer(omp_priv=0) initializer(omp_priv=0) ! { dg-error "Unexpected junk after" }
  end subroutine f3
--- 1,10 ----
  ! { dg-do compile }
  
  subroutine f3
! !$omp declare reduction ! { dg-error "24: Syntax error in statement at .1." }
! !$omp declare reduction foo ! { dg-error "24: Syntax error in statement at .1." }
! !$omp declare reduction (foo) ! { dg-error "26: Syntax error in statement at .1." }
! !$omp declare reduction (foo:integer) ! { dg-error "37: Syntax error in statement at .1." }
  !$omp declare reduction (foo:integer:omp_out=omp_out+omp_in) &
  !$omp & initializer(omp_priv=0) initializer(omp_priv=0) ! { dg-error "Unexpected junk after" }
  end subroutine f3
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/io_constraints_8.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/io_constraints_8.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/io_constraints_8.f90	Sun Jun  7 22:32:13 2026
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/io_constraints_8.f90	Sun Jun 14 22:32:14 2026
***************
*** 1,5 ****
  ! { dg-do compile }
! ! { dg-options "-fmax-errors=100 -Wall" }
  !
  ! PR fortran/48972
  !
--- 1,5 ----
  ! { dg-do compile }
! ! { dg-options "-fmax-errors=100 -Wall -Wno-unused-but-set-variable" }
  !
  ! PR fortran/48972
  !
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/label_5.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/label_5.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/label_5.f90	Sun Jun  7 22:32:13 2026
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/label_5.f90	Sun Jun 14 22:32:14 2026
***************
*** 1,5 ****
  ! { dg-do compile }
! ! { dg-options "-Wall" }
  ! PR fortran/27553
  program pr27553
  10: a=10   ! { dg-error "character in statement" }
--- 1,5 ----
  ! { dg-do compile }
! ! { dg-options "-Wall -Wno-unused-but-set-variable" }
  ! PR fortran/27553
  program pr27553
  10: a=10   ! { dg-error "character in statement" }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/len_trim.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/len_trim.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/len_trim.f90	Sun Jun  7 22:32:13 2026
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/len_trim.f90	Sun Jun 14 22:32:14 2026
***************
*** 1,5 ****
  ! { dg-do compile }
! ! { dg-options "-O -Wall -Wconversion-extra -fdump-tree-original" }
  ! { dg-final { scan-tree-dump-not "_gfortran_stop_numeric" "original" } }
  ! PR fortran/87711 - ICE in gfc_trans_transfer
  ! PR fortran/87851 - return type for len_trim
--- 1,5 ----
  ! { dg-do compile }
! ! { dg-options "-O -Wall -Wconversion-extra -fdump-tree-original -Wno-unused-but-set-variable" }
  ! { dg-final { scan-tree-dump-not "_gfortran_stop_numeric" "original" } }
  ! PR fortran/87711 - ICE in gfc_trans_transfer
  ! PR fortran/87851 - return type for len_trim
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/linefile.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/linefile.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/linefile.f90	Sun Jun  7 22:32:13 2026
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/linefile.f90	Sun Jun 14 22:32:14 2026
***************
*** 1,5 ****
  ! { dg-do compile }
! ! { dg-options "-Wall" }
  
  ! This will verify that the # <line> <file> directive later does not
  ! mess up the diagnostic on this line
--- 1,5 ----
  ! { dg-do compile }
! ! { dg-options "-Wall -Wno-unused-but-set-variable" }
  
  ! This will verify that the # <line> <file> directive later does not
  ! mess up the diagnostic on this line
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/pdt_92.f03 gcc-17-20260614/gcc/testsuite/gfortran.dg/pdt_92.f03
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/pdt_92.f03	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/pdt_92.f03	Sun Jun 14 22:32:14 2026
***************
*** 0 ****
--- 1,25 ----
+ ! { dg-do compile }
+ ! { dg-options "-fdump-tree-original" }
+ !
+ ! Test the fix for pr125669, in which the components 'v' and 'c' below were
+ ! allocated and freed unnecessarily.
+ !
+ module m
+   implicit none
+   type :: t(k1, k2)
+     integer, kind :: k1, k2
+     real :: v(k1*k2, max(k1,k2))
+     character(len = k1+k2-1) :: c
+   end type
+ end module
+ 
+ program p
+   use m
+   implicit none
+   integer, parameter :: n=3, k=2
+   type(t(n,k)) :: x
+   if (any (shape(x%v) /= [6,3])) stop 1
+   if (len(x%c) /= 4) stop 2
+ end program
+ ! { dg-final { scan-tree-dump-times "__builtin_malloc" 0 "original" } }
+ ! { dg-final { scan-tree-dump-times "__builtin_free" 0 "original" } }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/pointer_check_13.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/pointer_check_13.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/pointer_check_13.f90	Sun Jun  7 22:32:13 2026
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/pointer_check_13.f90	Sun Jun 14 22:32:15 2026
*************** contains
*** 13,19 ****
      implicit none
      integer, target  :: so
      integer, pointer :: sp
!     sp => so
      return
    end function So
  end module s
--- 13,19 ----
      implicit none
      integer, target  :: so
      integer, pointer :: sp
!     sp => so ! { dg-warning "but never used" }
      return
    end function So
  end module s
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/pr102366.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/pr102366.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/pr102366.f90	Sun Jun  7 22:32:13 2026
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/pr102366.f90	Sun Jun 14 22:32:15 2026
***************
*** 1,5 ****
  ! { dg-do compile }
! ! { dg-options "-fdump-tree-original -Wall" }
  ! { dg-final { scan-tree-dump-times "static real" 1 "original" } }
  ! PR fortran/102366 - large arrays no longer become static
  
--- 1,5 ----
  ! { dg-do compile }
! ! { dg-options "-fdump-tree-original -Wall -Wno-unused-but-set-variable" }
  ! { dg-final { scan-tree-dump-times "static real" 1 "original" } }
  ! PR fortran/102366 - large arrays no longer become static
  
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/pr103475.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/pr103475.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/pr103475.f90	Sun Jun  7 22:32:13 2026
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/pr103475.f90	Sun Jun 14 22:32:15 2026
***************
*** 1,5 ****
  ! { dg-do compile }
! ! { dg-options "-O2 -Wall" }
  ! PR fortran/103475 - ICE in gfc_expr_attr
  ! Contributed by G.Steinmetz
  
--- 1,5 ----
  ! { dg-do compile }
! ! { dg-options "-O2 -Wall -Wno-unused-but-set-variable" }
  ! PR fortran/103475 - ICE in gfc_expr_attr
  ! Contributed by G.Steinmetz
  
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/pr91497.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/pr91497.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/pr91497.f90	Sun Jun  7 22:32:14 2026
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/pr91497.f90	Sun Jun 14 22:32:15 2026
***************
*** 1,7 ****
  ! { dg-do compile }
  ! { dg-require-effective-target fortran_real_10 }
  ! { dg-require-effective-target fortran_real_16 }
! ! { dg-options "-Wall" }
  ! Code contributed by Manfred Schwarb <manfred99 at gmx dot ch>
  ! PR fortran/91497
  !
--- 1,7 ----
  ! { dg-do compile }
  ! { dg-require-effective-target fortran_real_10 }
  ! { dg-require-effective-target fortran_real_16 }
! ! { dg-options "-Wall -Wno-unused-but-set-variable" }
  ! Code contributed by Manfred Schwarb <manfred99 at gmx dot ch>
  ! PR fortran/91497
  !
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/pr91497_2.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/pr91497_2.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/pr91497_2.f90	Sun Jun  7 22:32:14 2026
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/pr91497_2.f90	Sun Jun 14 22:32:15 2026
***************
*** 1,5 ****
  ! { dg-do compile }
! ! { dg-options "-Wall" }
  ! Code contributed by Manfred Schwarb <manfred99 at gmx dot ch>
  ! PR fortran/91497
  !
--- 1,5 ----
  ! { dg-do compile }
! ! { dg-options "-Wall -Wno-unused-but-set-variable" }
  ! Code contributed by Manfred Schwarb <manfred99 at gmx dot ch>
  ! PR fortran/91497
  !
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/pr96312.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/pr96312.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/pr96312.f90	Sun Jun  7 22:32:14 2026
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/pr96312.f90	Sun Jun 14 22:32:15 2026
***************
*** 1,5 ****
  ! { dg-do compile }
! ! { dg-options "-O1 -Wall" }
  !
  ! PR fortran/96312. The line with the call to 'matmul' gave the warning
  ! ‘tmp.dim[0].lbound’ is used uninitialized in this function
--- 1,5 ----
  ! { dg-do compile }
! ! { dg-options "-O1 -Wall -Wno-unused-but-set-variable" }
  !
  ! PR fortran/96312. The line with the call to 'matmul' gave the warning
  ! ‘tmp.dim[0].lbound’ is used uninitialized in this function
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/pr98411.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/pr98411.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/pr98411.f90	Sun Jun  7 22:32:14 2026
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/pr98411.f90	Sun Jun 14 22:32:15 2026
***************
*** 1,5 ****
  ! { dg-do compile }
! ! { dg-options "-std=f2008 -Wall -fautomatic -fmax-stack-var-size=100" }
  ! PR fortran/98411 - Pointless warning for static variables 
  
  module try
--- 1,5 ----
  ! { dg-do compile }
! ! { dg-options "-std=f2008 -Wall -fautomatic -fmax-stack-var-size=100 -Wno-unused-but-set-variable" }
  ! PR fortran/98411 - Pointless warning for static variables 
  
  module try
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/transfer_check_4.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/transfer_check_4.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/transfer_check_4.f90	Sun Jun  7 22:32:14 2026
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/transfer_check_4.f90	Sun Jun 14 22:32:15 2026
***************
*** 1,5 ****
  ! { dg-do compile }
! ! { dg-options "-Wall" }
  
  ! PR 57022: [4.7/4.8/4.9 Regression] Inappropriate warning for use of TRANSFER with arrays
  ! Contributed by William Clodius <wclodius@los-alamos.net>
--- 1,5 ----
  ! { dg-do compile }
! ! { dg-options "-Wall -Wno-unused-but-set-variable" }
  
  ! PR 57022: [4.7/4.8/4.9 Regression] Inappropriate warning for use of TRANSFER with arrays
  ! Contributed by William Clodius <wclodius@los-alamos.net>
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/warn_undefined_vars_1.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/warn_undefined_vars_1.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/warn_undefined_vars_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/warn_undefined_vars_1.f90	Sun Jun 14 22:32:15 2026
***************
*** 0 ****
--- 1,34 ----
+ ! { dg-do compile }
+ ! { dg-options "-Wundefined-vars" }
+ program memain
+   implicit none
+   integer, dimension(:), allocatable :: a
+   integer, allocatable :: d
+   integer, dimension(10) :: e
+   integer :: f, g, h, i
+   real, dimension(:), allocatable :: r
+   allocate (a(10))
+   call s1(a) ! { dg-warning "Allocated.*INTENT.IN." }
+   allocate (d, source=42)
+   print *,d
+   call s2(f) ! { dg-warning "Undefined variable" }
+   print *,g  ! { dg-warning "Undefined variable.*used" }
+   call s3(h,i)
+   print *,i
+   call allocit(r)
+   print *,r
+ contains
+   subroutine s1(in)
+     integer, dimension(:), intent(in) :: in
+     print *,in
+   end subroutine s1
+   subroutine s2(in)
+     integer, value :: in
+     print *,in
+   end subroutine s2
+   subroutine allocit(fld)
+     real, dimension(:), intent(out), allocatable :: fld
+     fld = [1,2,3]
+   end subroutine allocit
+ end program memain
+ 
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/warn_undefined_vars_2.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/warn_undefined_vars_2.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/warn_undefined_vars_2.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/warn_undefined_vars_2.f90	Sun Jun 14 22:32:15 2026
***************
*** 0 ****
--- 1,17 ----
+ ! { dg-do compile }
+ ! { dg-options "-Wundefined-vars" }
+ program memain
+   implicit none
+   integer, allocatable :: b, c, d
+   integer, dimension(10) :: e
+   integer :: f, g, h, i
+   real, dimension(:), allocatable :: r
+   allocate (b)
+   call s2(b) ! { dg-warning "Allocated variable.*VALUE" }
+ contains
+   subroutine s2(in)
+     integer, value :: in
+     print *,in
+   end subroutine s2
+ end program memain
+ 
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/warn_undefined_vars_3.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/warn_undefined_vars_3.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/warn_undefined_vars_3.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/warn_undefined_vars_3.f90	Sun Jun 14 22:32:15 2026
***************
*** 0 ****
--- 1,15 ----
+ ! { dg-do compile }
+ ! { dg-options "-Wundefined-vars" }
+ program memain
+   implicit none
+   integer, allocatable :: c
+   integer, dimension(10) :: e
+   allocate (c)
+   print *,c  ! { dg-warning "Allocated.*undefined" }
+ contains
+   subroutine s1(in)
+     integer, dimension(:), intent(in) :: in
+     print *,in
+   end subroutine s1
+ 
+ end program memain
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/warn_undefined_vars_4.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/warn_undefined_vars_4.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/warn_undefined_vars_4.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/warn_undefined_vars_4.f90	Sun Jun 14 22:32:15 2026
***************
*** 0 ****
--- 1,17 ----
+ ! { dg-do compile }
+ ! { dg-options "-Wundefined-vars" }
+ program memain
+   integer, dimension(10) :: e
+   call s1(e) ! { dg-warning "Undefined.*passed to INTENT.IN. argument" }
+ contains
+   subroutine s1(in)
+     integer, dimension(:), intent(in) :: in
+     print *,in
+   end subroutine s1
+ end program memain
+ 
+ subroutine s3(a, b)
+   integer, intent(out) :: a
+   integer, intent(inout) :: b
+   b = a + 1 ! { dg-warning "Undefined INTENT.OUT. variable" }
+ end subroutine s3
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/warn_unused_but_set_1.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/warn_unused_but_set_1.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/warn_unused_but_set_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/warn_unused_but_set_1.f90	Sun Jun 14 22:32:15 2026
***************
*** 0 ****
--- 1,54 ----
+ ! { dg-do compile }
+ ! { dg-options "-Wunused-but-set-variable" }
+ module x
+   implicit none
+ contains
+   subroutine tst1
+     character(len=100) :: iomsg
+     character(len=30) :: outstring
+     integer :: ios, u, n
+     real :: x
+     integer, dimension(:), allocatable :: a1, a2
+     inquire (6, iostat=ios) ! { dg-warning "never used" }
+     inquire (6, iomsg=iomsg) ! { dg-warning "never used" }
+     write (outstring,'(A)') "Hello, world" ! { dg-warning "never used" }
+     x = 42. ! { dg-warning "never used" }
+     open (newunit=u,file="asdf.txt") ! { dg-warning "never used" }
+     n = 10
+     allocate(a1(n)) ! { dg-warning "allocated at" }
+     allocate(a2(n))
+     a2 = 42 ! { dg-warning "never used" }
+   end subroutine tst1
+   ! Test a few combinations that should not emit warnings
+   subroutine tst2
+     integer i, n, m,k,l
+     integer, target:: it
+     integer, pointer :: p
+     real, allocatable :: r
+     real :: x
+     integer, dimension(:), allocatable :: ia
+ 
+     n = 12
+     l = 2
+     do i=1,n,l
+     end do
+     m = 12
+     k = 3
+     forall (i=1:m:k)
+     end forall
+     p => it
+     p = 42
+     print *,p
+     allocate(r)
+     r = 42.
+     print *,r
+     x = 42.
+     call in(x+4.)
+     ia = [1, 2, 3]
+     print *,ia
+   end subroutine tst2
+   subroutine in(x)
+     real, intent(in) :: x
+     print *,x
+   end subroutine in
+ end module x
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/warn_unused_but_set_variable_3.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/warn_unused_but_set_variable_3.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/warn_unused_but_set_variable_3.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/warn_unused_but_set_variable_3.f90	Sun Jun 14 22:32:15 2026
***************
*** 0 ****
--- 1,24 ----
+ ! { dg-do compile }
+ ! { dg-additional-options "-Wunused-but-set-variable" }
+ ! Some checks of things that should not warn
+ module mymod
+   implicit none
+   real :: x
+ contains
+   subroutine print_x
+     print *,x
+   end subroutine print_x
+   subroutine vol
+   end subroutine vol
+ end module mymod
+ 
+ program memain
+   use mymod
+   implicit none
+   integer, volatile :: a
+   real, asynchronous :: b
+   x = 42.
+   call print_x
+   a = 43.
+   b = 44.
+ end program memain
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/warn_unused_intent_out_1.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/warn_unused_intent_out_1.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/warn_unused_intent_out_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/warn_unused_intent_out_1.f90	Sun Jun 14 22:32:15 2026
***************
*** 0 ****
--- 1,16 ----
+ ! { dg-do compile }
+ ! { dg-additional-options "-Wunused-intent-out" }
+ module y
+   implicit none
+ contains
+     subroutine tst
+     real :: a, b
+     call intent_out(a) ! { dg-warning "passed to INTENT\\(OUT\\)" }
+     call intent_out(b)
+     print *,b
+   end subroutine tst
+   subroutine intent_out(x)
+     real, intent(out) :: x
+     x = 0.4
+   end subroutine intent_out
+ end module y
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/warn_unused_read_1.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/warn_unused_read_1.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/warn_unused_read_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/warn_unused_read_1.f90	Sun Jun 14 22:32:15 2026
***************
*** 0 ****
--- 1,8 ----
+ ! { dg-do compile }
+ ! { dg-additional-options "-Wunused-read" }
+ program main
+   real :: x, y
+   read (*,*) x ! { dg-warning "read at" }
+   read (*,*) y
+   print *,y
+ end program main
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gfortran.dg/warnings_are_errors_1.f90 gcc-17-20260614/gcc/testsuite/gfortran.dg/warnings_are_errors_1.f90
*** gcc-17-20260607/gcc/testsuite/gfortran.dg/warnings_are_errors_1.f90	Sun Jun  7 22:32:14 2026
--- gcc-17-20260614/gcc/testsuite/gfortran.dg/warnings_are_errors_1.f90	Sun Jun 14 22:32:15 2026
***************
*** 19,25 ****
  ! gfc_warning:
  1234  complex :: cplx ! { dg-error "defined but cannot be used" }
        cplx = 20.
! 
         end
  ! { dg-final { output-exists-not } }
  ! { dg-prune-output "warnings being treated as errors" }
--- 19,25 ----
  ! gfc_warning:
  1234  complex :: cplx ! { dg-error "defined but cannot be used" }
        cplx = 20.
!       print *,cplx
         end
  ! { dg-final { output-exists-not } }
  ! { dg-prune-output "warnings being treated as errors" }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/gnat.dg/bigint1.adb gcc-17-20260614/gcc/testsuite/gnat.dg/bigint1.adb
*** gcc-17-20260607/gcc/testsuite/gnat.dg/bigint1.adb	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/gcc/testsuite/gnat.dg/bigint1.adb	Sun Jun 14 22:32:15 2026
***************
*** 0 ****
--- 1,27 ----
+ -- { dg-do run }
+ -- { dg-options "-gnat2022 -gnata" }
+ 
+ with Ada.Numerics.Big_Numbers.Big_Integers;
+ use Ada.Numerics.Big_Numbers.Big_Integers;
+ 
+ procedure Bigint1 is
+ 
+   Minus_One   : constant Big_Integer := To_Big_Integer (-1);
+   Minus_Two   : constant Big_Integer := To_Big_Integer (-2);
+   Minus_Three : constant Big_Integer := To_Big_Integer (-3);
+ 
+ begin
+ 
+   pragma Assert (Minus_One ** 1 = Minus_One);
+   pragma Assert (Minus_One ** 2 = To_Big_Integer (1));
+   pragma Assert (Minus_One ** 3 = Minus_One);
+ 
+   pragma Assert (Minus_Two ** 1 = Minus_Two);
+   pragma Assert (Minus_Two ** 2 = To_Big_Integer (4));
+   pragma Assert (Minus_Two ** 3 = To_Big_Integer (-8));
+ 
+   pragma Assert (Minus_Three ** 1 = Minus_Three);
+   pragma Assert (Minus_Three ** 2 = To_Big_Integer (9));
+   pragma Assert (Minus_Three ** 3 = To_Big_Integer (-27));
+ 
+ end;
diff -Nrcpad gcc-17-20260607/gcc/testsuite/jit.dg/test-cast.c gcc-17-20260614/gcc/testsuite/jit.dg/test-cast.c
*** gcc-17-20260607/gcc/testsuite/jit.dg/test-cast.c	Sun Jun  7 22:32:14 2026
--- gcc-17-20260614/gcc/testsuite/jit.dg/test-cast.c	Sun Jun 14 22:32:15 2026
*************** my_casts (int x)
*** 15,23 ****
--- 15,31 ----
  {
     return (char)(long) x;
  }
+ 
+ int
+ ptrtoint (int *y)
+ {
+   return (int) y;
+ }
     */
    gcc_jit_type *int_type =
      gcc_jit_context_get_type (ctxt, GCC_JIT_TYPE_INT);
+   gcc_jit_type *int_ptr_type =
+     gcc_jit_type_get_pointer (int_type);
    gcc_jit_type *long_type =
      gcc_jit_context_get_type (ctxt, GCC_JIT_TYPE_LONG);
    gcc_jit_type *return_type =
*************** my_casts (int x)
*** 50,66 ****
          ),
          return_type
      ));
  }
  
  void
  verify_code (gcc_jit_context *ctxt, gcc_jit_result *result)
  {
-   typedef int (*my_casts_fn_type) (int);
    CHECK_NON_NULL (result);
    my_casts_fn_type my_casts =
      (my_casts_fn_type)gcc_jit_result_get_code (result, "my_casts");
    CHECK_NON_NULL (my_casts);
    char val = my_casts (10);
    note ("my_casts returned: %d", val);
    CHECK_VALUE (val, 10);
  }
--- 58,107 ----
          ),
          return_type
      ));
+ 
+   gcc_jit_param *y =
+     gcc_jit_context_new_param (
+       ctxt,
+       NULL,
+       int_ptr_type, "y");
+   gcc_jit_param *params2[1] = {y};
+   gcc_jit_function *ptrtoint_func =
+     gcc_jit_context_new_function (ctxt,
+ 				  NULL,
+ 				  GCC_JIT_FUNCTION_EXPORTED,
+ 				  int_type,
+ 				  "ptrtoint",
+ 				  1, params2, 0);
+ 
+   gcc_jit_block *start_block =
+     gcc_jit_function_new_block (ptrtoint_func, "start_block");
+ 
+   gcc_jit_block_end_with_return (start_block, NULL,
+     gcc_jit_context_new_cast (ctxt,
+         NULL,
+         gcc_jit_param_as_rvalue (y),
+         int_type
+     ));
  }
  
  void
  verify_code (gcc_jit_context *ctxt, gcc_jit_result *result)
  {
    CHECK_NON_NULL (result);
+ 
+   typedef int (*my_casts_fn_type) (int);
    my_casts_fn_type my_casts =
      (my_casts_fn_type)gcc_jit_result_get_code (result, "my_casts");
    CHECK_NON_NULL (my_casts);
    char val = my_casts (10);
    note ("my_casts returned: %d", val);
    CHECK_VALUE (val, 10);
+ 
+   typedef int (*ptrtoint_fn_type) (int*);
+   ptrtoint_fn_type ptrtoint =
+     (ptrtoint_fn_type)gcc_jit_result_get_code (result, "ptrtoint");
+   CHECK_NON_NULL (ptrtoint);
+   int int_val = ptrtoint (NULL);
+   note ("ptrtoint returned: %d", int_val);
+   CHECK_VALUE (int_val, 0);
  }
diff -Nrcpad gcc-17-20260607/gcc/testsuite/lib/lto.exp gcc-17-20260614/gcc/testsuite/lib/lto.exp
*** gcc-17-20260607/gcc/testsuite/lib/lto.exp	Sun Jun  7 22:32:14 2026
--- gcc-17-20260614/gcc/testsuite/lib/lto.exp	Sun Jun 14 22:32:15 2026
***************
*** 25,32 ****
  # MESSAGES_FOR_FILE is a list of expected messages, akin to DejaGnu's
  # "dg-messages" variable.
  # TEXT is the textual output from the LTO link.
  
! proc lto_handle_diagnostics_for_file { name filename messages_for_file text } {
      global dg-linenum-format
  
      set filename_without_path [file tail $filename]
--- 25,33 ----
  # MESSAGES_FOR_FILE is a list of expected messages, akin to DejaGnu's
  # "dg-messages" variable.
  # TEXT is the textual output from the LTO link.
+ # OPTSTR is the LTO option set in effect.
  
! proc lto_handle_diagnostics_for_file { name filename messages_for_file text optstr } {
      global dg-linenum-format
  
      set filename_without_path [file tail $filename]
*************** proc lto_handle_diagnostics_for_file { n
*** 69,76 ****
  
  	# Unlike dg-test, add the filename to the PASS/FAIL message (rather
  	# than just the line number) so that the user can identify the
! 	# pertinent directive.
! 	set describe_where "$filename_without_path line $line"
  
  	# Issue the PASS/FAIL, adding "LTO" to the messages (e.g. "LTO errors")
  	# to distinguish them from the non-LTO case (in case we ever need to
--- 70,78 ----
  
  	# Unlike dg-test, add the filename to the PASS/FAIL message (rather
  	# than just the line number) so that the user can identify the
! 	# pertinent directive.  Also append the option set, so that the same
! 	# directive checked under several LTO options got a unique test name.
! 	set describe_where "$filename_without_path line $line $optstr"
  
  	# Issue the PASS/FAIL, adding "LTO" to the messages (e.g. "LTO errors")
  	# to distinguish them from the non-LTO case (in case we ever need to
*************** proc lto_handle_diagnostics_for_file { n
*** 112,119 ****
  # Return TEXT, stripped of any diagnostics that were handled.
  #
  # TEXT is the textual output from the LTO link.
  
! proc lto_handle_diagnostics { text } {
      global testcase
  
      upvar dg-messages-by-file messages_by_file
--- 114,122 ----
  # Return TEXT, stripped of any diagnostics that were handled.
  #
  # TEXT is the textual output from the LTO link.
+ # OPTSTR is the LTO option set in effect.
  
! proc lto_handle_diagnostics { text optstr } {
      global testcase
  
      upvar dg-messages-by-file messages_by_file
*************** proc lto_handle_diagnostics { text } {
*** 128,134 ****
  	set dg-messages $messages_by_file($src)
  	verbose "  messages for $src: ${dg-messages}" 3
  	set text [lto_handle_diagnostics_for_file $testcase $src \
! 		      ${dg-messages} $text]
      }
  
      verbose "lto_handle_diagnostics: exit: $text" 2
--- 131,137 ----
  	set dg-messages $messages_by_file($src)
  	verbose "  messages for $src: ${dg-messages}" 3
  	set text [lto_handle_diagnostics_for_file $testcase $src \
! 		      ${dg-messages} $text $optstr]
      }
  
      verbose "lto_handle_diagnostics: exit: $text" 2
*************** proc lto-link-and-maybe-run { testname o
*** 414,420 ****
      }
  
      # Check for diagnostics specified by directives
!     set comp_output [lto_handle_diagnostics $comp_output]
  
      # Prune unimportant visibility warnings before checking output.
      set comp_output [lto_prune_warns $comp_output]
--- 417,423 ----
      }
  
      # Check for diagnostics specified by directives
!     set comp_output [lto_handle_diagnostics $comp_output $optstr]
  
      # Prune unimportant visibility warnings before checking output.
      set comp_output [lto_prune_warns $comp_output]
diff -Nrcpad gcc-17-20260607/gcc/testsuite/lib/scanasm.exp gcc-17-20260614/gcc/testsuite/lib/scanasm.exp
*** gcc-17-20260607/gcc/testsuite/lib/scanasm.exp	Sun Jun  7 22:32:14 2026
--- gcc-17-20260614/gcc/testsuite/lib/scanasm.exp	Sun Jun 14 22:32:15 2026
*************** proc configure_check-function-bodies { c
*** 921,927 ****
      } elseif { [istarget *-*-darwin*] } {
  	set up_config(start) {
  	    {^_([a-zA-Z_]\S*):$}
! 	    {^LFB[0-9]+:}
  	}
      } else {
  	set up_config(start) {{^([a-zA-Z_]\S*):$}}
--- 921,927 ----
      } elseif { [istarget *-*-darwin*] } {
  	set up_config(start) {
  	    {^_([a-zA-Z_]\S*):$}
! 	    {^LFS?B[0-9]+:$}
  	}
      } else {
  	set up_config(start) {{^([a-zA-Z_]\S*):$}}
*************** proc configure_check-function-bodies { c
*** 931,937 ****
      if { [istarget nvptx*-*-*] } {
  	set up_config(end) {^\}$}
      } elseif { [istarget *-*-darwin*] } {
! 	set up_config(end) {^LFE[0-9]+}
      } elseif { [istarget *-*-mingw32] } {
  	set up_config(end) {seh_endproc}
      } else {
--- 931,937 ----
      if { [istarget nvptx*-*-*] } {
  	set up_config(end) {^\}$}
      } elseif { [istarget *-*-darwin*] } {
! 	set up_config(end) {^LFE[0-9]+:$}
      } elseif { [istarget *-*-mingw32] } {
  	set up_config(end) {seh_endproc}
      } else {
*************** proc configure_check-function-bodies { c
*** 944,950 ****
  	# example).
  	set up_config(fluff) {^\s*(?://)}
      } elseif { [istarget *-*-darwin*] } {
! 	set up_config(fluff) {^\s*(?:\.|//|@)|^L[0-9ABCESV]}
      } elseif { [istarget s390*-*-*] } {
  	# Additionally to the defaults skip lines beginning with a # resulting
  	# from inline asm.
--- 944,950 ----
  	# example).
  	set up_config(fluff) {^\s*(?://)}
      } elseif { [istarget *-*-darwin*] } {
! 	set up_config(fluff) {^\s*(?:\.|//|@|#)|^L[ABCESV]}
      } elseif { [istarget s390*-*-*] } {
  	# Additionally to the defaults skip lines beginning with a # resulting
  	# from inline asm.
*************** proc configure_check-function-bodies { c
*** 967,972 ****
--- 967,1052 ----
      } else {
  	set up_config(line_prefix) {\t}
      }
+ 
+     # Set up regex lines that should be skipped for a given object format
+     set up_config(skip_regex_cases) ""
+     if { [istarget *-*-darwin*] } {
+         # Darwin already matches .LF* as part of start/end.
+         # Currently, .cfi_xxx instructions are not used.
+ 	set up_config(skip_regex_cases) {
+ 	    {^\\?\.LF.*$}
+ 	    {^.*\.cfi_.*$}
+ 	}
+     }
+ 
+     # Set up regex lines that should be copied verbatim for a given object
+     # format
+     if { [istarget *-*-darwin*] } {
+         # Lines starting with a label, for Darwin we accept ELF local labels
+         # (starting with .L) and Mach-O (starting with L).  We also accept
+         # numeric assembler labels.
+ 	set up_config(verbatim_regex_cases) {
+ 	    {^\\?\.?L\[?[0-9].*:$}
+ 	    {^[0-9]+:.*$}
+ 	}
+     } else {
+         # Lines starting with a local code label ".L" (which are usually the
+         # only entries on a line -  or numeric assembler labels, which are
+         # often followed by some instruction.
+         set up_config(verbatim_regex_cases) {
+ 	    {^\\?\.L}
+ 	    {^[0-9]+:.*$}
+ 	}
+     }
+ 
+     set up_config(regex_substitutions) ""
+     if { [istarget *-*-darwin*] } {
+         # Setup substitution pairs for body regexes
+         # the first entry is what should be matched, the second is what should
+         # replace it.
+ 	set up_config(regex_substitutions) {
+ 	    { {\\?\.LC} {[lL]C} }
+ 	    { {\\?\.L} "L" }
+ 	}
+     }
+ 
+ }
+ 
+ # Sometimes the function match regex might include directives that are not
+ # used by a given binary format.  Allow these to be skipped.
+ proc target_regex_skip_line { config line } {
+     upvar $config up_config
+     foreach check $up_config(skip_regex_cases) {
+         if { [regexp $check $line] } {
+             return 1
+         }
+     }
+     return 0
+ }
+ 
+ # Some regex lines (mostly ones starting with a label) should be copied
+ # verbatim (i.e. without prepending config(line_prefix)).
+ 
+ proc target_regex_verbatim_line { config line } {
+     upvar $config up_config
+     foreach check $up_config(verbatim_regex_cases) {
+         if { [regexp $check $line] } {
+             return 1
+         }
+     }
+     return 0
+ }
+ 
+ # Apply global substitutions to the function body regex as needed by the
+ # target ABI / assembler syntax.
+ 
+ proc target_substitute_func_regex { config func_regex } {
+     upvar $config up_config
+     upvar $func_regex up_func_regex
+     foreach subs $up_config(regex_substitutions) {
+         regsub -all [lindex $subs 0] $up_func_regex [lindex $subs 1] up_func_regex
+         incr item
+     }
  }
  
  # Per CONFIG, read assembly file FILENAME and store a mapping from function
*************** proc parse_function_bodies { config file
*** 1002,1008 ****
  		set function_name $maybe_function_name
  		set in_function 1
  	    } elseif { [regexp $up_config(end) $line] } {
! 		verbose "parse_function_bodies: $function_name:\n$function_body"
  		set up_result($function_name) $function_body
  		set in_function 0
  	    } elseif { $up_config(matched) ne "" \
--- 1082,1088 ----
  		set function_name $maybe_function_name
  		set in_function 1
  	    } elseif { [regexp $up_config(end) $line] } {
! 		verbose "parse_function_bodies: found end marker for $function_name:\n$function_body"
  		set up_result($function_name) $function_body
  		set in_function 0
  	    } elseif { $up_config(matched) ne "" \
*************** proc check-function-bodies { args } {
*** 1188,1201 ****
  		append function_regexp ")"
  	    } elseif { [string equal $line "..."] } {
  		append function_regexp ".*"
! 	    } elseif { [regexp {^\.L} $line] } {
! 		append function_regexp $line "\n"
! 	    } elseif { [regexp {^[0-9]+:} $line] } {
! 		append function_regexp $line "\n"
  	    } else {
  		append function_regexp $config(line_prefix) $line "\n"
  	    }
  	} elseif { [string equal -length $terminator_len $line $terminator] } {
  	    if { ![string equal $selector "N"] } {
  		if { $xfail_all || [string equal $selector "F"] } {
  		    setup_xfail "*-*-*"
--- 1268,1286 ----
  		append function_regexp ")"
  	    } elseif { [string equal $line "..."] } {
  		append function_regexp ".*"
! 	    } elseif { [target_regex_skip_line config $line] } {
! 	        # Drop this line.
! 	        continue
! 	    } elseif { [target_regex_verbatim_line config $line] } {
! 	        # Copy this through.
! 	        append function_regexp $line "\n"
  	    } else {
+ 	        # Copy but with a prefix (typically \t).
  		append function_regexp $config(line_prefix) $line "\n"
  	    }
  	} elseif { [string equal -length $terminator_len $line $terminator] } {
+ 	    # Do any global substitutions the target ABI/asm syntax needs.
+ 	    target_substitute_func_regex config function_regexp
  	    if { ![string equal $selector "N"] } {
  		if { $xfail_all || [string equal $selector "F"] } {
  		    setup_xfail "*-*-*"
diff -Nrcpad gcc-17-20260607/gcc/testsuite/lib/target-supports.exp gcc-17-20260614/gcc/testsuite/lib/target-supports.exp
*** gcc-17-20260607/gcc/testsuite/lib/target-supports.exp	Sun Jun  7 22:32:14 2026
--- gcc-17-20260614/gcc/testsuite/lib/target-supports.exp	Sun Jun 14 22:32:15 2026
*************** proc add_options_for_check_function_bodi
*** 982,987 ****
--- 982,991 ----
  	# off on Solaris/x86 with as and ld.  Similarly it also expects
  	# the .LFB/.LFE labels, which aren't emitted for 32-bit.
  	return "-fdwarf2-cfi-asm -fasynchronous-unwind-tables $flags "
+     } elseif { [istarget *-*-darwin*] } {
+         # Darwin does not currently use .cfi_ instructions and also requires
+         # unwind tables to be forced on for 32bit.
+ 	return "-fno-dwarf2-cfi-asm -fasynchronous-unwind-tables $flags "
      }
      return $flags
  }
*************** proc check_effective_target_arm_mixed_fp
*** 6397,6406 ****
      }
  
      return [check_no_compiler_messages arm_mixed_fp assembly {
! 	#ifndef __ARM_FP
! 	# error __ARM_FP not defined
! 	#elif ((__ARM_FP & 0xc) == 0xc)
! 	# error __ARM_FP indicates that both single- and double-precision FP are supported
  	#endif
  	int main (void) { return 0; }
      } "" ]
--- 6401,6409 ----
      }
  
      return [check_no_compiler_messages arm_mixed_fp assembly {
! 	// Mixed FP means we have hw FP, but only for SFmode (ignores HFmode)
! 	#if !defined(__ARM_FP) || ((__ARM_FP & 0xc) != 0x4)
! 	#error Not mixed FP
  	#endif
  	int main (void) { return 0; }
      } "" ]
*************** set exts {
*** 12841,12846 ****
--- 12844,12850 ----
      "sme-f8f16" "sme-f8f32"
      "sme-b16b16" "sme-f16f16" "sme-i16i64" "sme" "sme2" "sme2p1" "sme2p2"
      "ssve-fp8dot2" "ssve-fp8dot4" "ssve-fp8fma" "sve-bfscale" "sme-lutv2"
+     "ssve-fexpa" "ssve-bitperm"
  }
  
  foreach { aarch64_ext } $exts {
diff -Nrcpad gcc-17-20260607/gcc/tree-cfg.cc gcc-17-20260614/gcc/tree-cfg.cc
*** gcc-17-20260607/gcc/tree-cfg.cc	Sun Jun  7 22:32:14 2026
--- gcc-17-20260614/gcc/tree-cfg.cc	Sun Jun 14 22:32:15 2026
*************** verify_gimple_call (gcall *stmt)
*** 3419,3424 ****
--- 3419,3432 ----
  	  }
      }
  
+   /* IFN_VARING is not allowed to be present after the completion of any pass
+      as it should have been replaced.  */
+   if (gimple_call_internal_p (stmt, IFN_VARYING))
+     {
+       error ("%<.VARYING%> calls should have been replaced and are not allowed "
+ 	     "outside of the pass that introduced them");
+       return true;
+     }
    /* ???  The C frontend passes unpromoted arguments in case it
       didn't see a function declaration before the call.  So for now
       leave the call arguments mostly unverified.  Once we gimplify
diff -Nrcpad gcc-17-20260607/gcc/tree-chrec.cc gcc-17-20260614/gcc/tree-chrec.cc
*** gcc-17-20260607/gcc/tree-chrec.cc	Sun Jun  7 22:32:14 2026
--- gcc-17-20260614/gcc/tree-chrec.cc	Sun Jun 14 22:32:15 2026
*************** chrec_fold_plus_poly_poly (enum tree_cod
*** 127,132 ****
--- 127,142 ----
  
    if (chrec_zerop (right))
      return left;
+   /* When we have an evolution in a non-wrapping type and in the process of
+      accumulating CHREC_RIGHT there was overflow this indicates in the
+      association that happened in accumulating the CHRECs clearly involved UB.
+      Avoid this.  When accumulating two CHRECs we basically turn
+      (a + INCR1) + INCR2 into a + (INCR1 + INCR2) which is not always valid.
+      Note this check only catches few invalid cases.  */
+   else if ((INTEGRAL_TYPE_P (type) && ! TYPE_OVERFLOW_WRAPS (type))
+ 	   && TREE_CODE (right) == INTEGER_CST
+ 	   && TREE_OVERFLOW (right))
+     return chrec_dont_know;
    else
      return build_polynomial_chrec
        (CHREC_VARIABLE (poly0), left, right);
diff -Nrcpad gcc-17-20260607/gcc/tree-if-conv.cc gcc-17-20260614/gcc/tree-if-conv.cc
*** gcc-17-20260607/gcc/tree-if-conv.cc	Sun Jun  7 22:32:14 2026
--- gcc-17-20260614/gcc/tree-if-conv.cc	Sun Jun 14 22:32:15 2026
*************** gen_phi_arg_condition (gphi *phi, ifcvt_
*** 2173,2257 ****
    return cond;
  }
  
- /* Find the operand which is different between ARG0_OP and ARG1_OP.
-    Returns the operand num where the difference is.
-    Set NEWARG0 and NEWARG1 from the different argument.
-    Returns -1 if none is found.
-    If ARG0_OP/ARG1_OP is commutative also try swapping the
-    two commutative operands and return the operand number where
-    the difference happens in ARG0_OP. */
- 
- static int
- find_different_opnum (const gimple_match_op &arg0_op,
- 		      const gimple_match_op &arg1_op,
- 		      tree *new_arg0, tree *new_arg1)
- {
-   unsigned opnum = -1;
-   unsigned first;
-   first = first_commutative_argument (arg1_op.code, arg1_op.type);
-   for (unsigned i = 0; i < arg0_op.num_ops; i++)
-     {
-       if (!operand_equal_for_phi_arg_p (arg0_op.ops[i],
- 					arg1_op.ops[i]))
- 	{
- 	  /* Can handle only one non equal operand. */
- 	  if (opnum != -1u)
- 	    {
- 	      /* Though if opnum is right before i and opnum is equal
- 		 to the first communtative argument, handle communtative
- 		 specially. */
- 	      if (i == opnum + 1 && opnum == first)
- 		goto commutative;
- 	      return -1;
- 	    }
- 	  opnum = i;
- 	}
-   }
-   /* If all operands are equal only do this is there was single
-      operand.  */
-   if (opnum == -1u)
-     {
-       if (arg0_op.num_ops != 1)
- 	return -1;
-       opnum = 0;
-     }
-   *new_arg0 = arg0_op.ops[opnum];
-   *new_arg1 = arg1_op.ops[opnum];
-   return opnum;
- 
- /* Handle commutative operations. */
- commutative:
-   gcc_assert (first != -1u);
- 
-   /* Check the rest of the arguments to make sure they are the same. */
-   for (unsigned i = first + 2; i < arg0_op.num_ops; i++)
-     if (!operand_equal_for_phi_arg_p (arg0_op.ops[i],
- 				      arg1_op.ops[i]))
-       return -1;
- 
-   /* If the arg0[first+1] and arg1[first] are the same
-      then the one which is different is arg0[first] and arg1[first+1]
-      return first since this is based on arg0.  */
-   if (operand_equal_for_phi_arg_p (arg0_op.ops[first + 1],
- 				   arg1_op.ops[first]))
-     {
-        *new_arg0 = arg0_op.ops[first];
-        *new_arg1 = arg1_op.ops[first + 1];
-        return first;
-     }
-   /* If the arg0[first] and arg1[first+1] are the same
-      then the one which is different is arg0[first+1] and arg1[first]
-      return first+1 since this is based on arg0.  */
-   if (operand_equal_for_phi_arg_p (arg0_op.ops[first],
- 				   arg1_op.ops[first + 1]))
-     {
-        *new_arg0 = arg0_op.ops[first + 1];
-        *new_arg1 = arg1_op.ops[first];
-        return first + 1;
-     }
-   return -1;
- }
- 
  /* Factors out an operation from *ARG0 and *ARG1 and
     create the new statement at GSI. *RES is the
     result of that new statement. Update *ARG0 and *ARG1
--- 2173,2178 ----
diff -Nrcpad gcc-17-20260607/gcc/tree-ssa-forwprop.cc gcc-17-20260614/gcc/tree-ssa-forwprop.cc
*** gcc-17-20260607/gcc/tree-ssa-forwprop.cc	Sun Jun  7 22:32:14 2026
--- gcc-17-20260614/gcc/tree-ssa-forwprop.cc	Sun Jun 14 22:32:15 2026
*************** forward_propagate_addr_expr_1 (tree name
*** 760,767 ****
  	      new_base = build_fold_addr_expr (*def_rhs_basep);
  	      new_offset = TREE_OPERAND (lhs, 1);
  	    }
! 	  *def_rhs_basep = build2 (MEM_REF, TREE_TYPE (*def_rhs_basep),
! 				   new_base, new_offset);
  	  TREE_THIS_VOLATILE (*def_rhs_basep) = TREE_THIS_VOLATILE (lhs);
  	  TREE_SIDE_EFFECTS (*def_rhs_basep) = TREE_SIDE_EFFECTS (lhs);
  	  TREE_THIS_NOTRAP (*def_rhs_basep) = TREE_THIS_NOTRAP (lhs);
--- 760,769 ----
  	      new_base = build_fold_addr_expr (*def_rhs_basep);
  	      new_offset = TREE_OPERAND (lhs, 1);
  	    }
! 	  tree atype = TREE_TYPE (*def_rhs_basep);
! 	  if (TYPE_ALIGN (TREE_TYPE (lhs)) < TYPE_ALIGN (atype))
! 	    atype = build_aligned_type (atype, TYPE_ALIGN (TREE_TYPE (lhs)));
! 	  *def_rhs_basep = build2 (MEM_REF, atype, new_base, new_offset);
  	  TREE_THIS_VOLATILE (*def_rhs_basep) = TREE_THIS_VOLATILE (lhs);
  	  TREE_SIDE_EFFECTS (*def_rhs_basep) = TREE_SIDE_EFFECTS (lhs);
  	  TREE_THIS_NOTRAP (*def_rhs_basep) = TREE_THIS_NOTRAP (lhs);
diff -Nrcpad gcc-17-20260607/gcc/tree-ssa-phiopt.cc gcc-17-20260614/gcc/tree-ssa-phiopt.cc
*** gcc-17-20260607/gcc/tree-ssa-phiopt.cc	Sun Jun  7 22:32:14 2026
--- gcc-17-20260614/gcc/tree-ssa-phiopt.cc	Sun Jun 14 22:32:15 2026
*************** replace_phi_edge_with_variable (basic_bl
*** 221,246 ****
  	      bb->index);
  }
  
! /* Returns true if the ARG used from DEF_STMT is profitable to move
!    to a PHI node of the basic block MERGE where the new statement
     will be located.  */
  static bool
! is_factor_profitable (gimple *def_stmt, basic_block merge, tree arg)
  {
    /* The defining statement should be conditional.  */
    if (dominated_by_p (CDI_DOMINATORS, merge,
  		      gimple_bb (def_stmt)))
      return false;
  
-   /* If the arg is invariant, then there is
-      no extending of the live range. */
-   if (is_gimple_min_invariant (arg))
-     return true;
- 
-   /* Otherwise, the arg needs to be a ssa name. */
-   if (TREE_CODE (arg) != SSA_NAME)
-     return false;
- 
    /* We should not increase the live range of arg
       across too many statements or calls.  */
    gimple_stmt_iterator gsi = gsi_for_stmt (def_stmt);
--- 221,237 ----
  	      bb->index);
  }
  
! /* Returns true if the operands of arg_op defined from DEF_STMT is profitable to move
!    to the usage into the basic block MERGE where the new statement
     will be located.  */
  static bool
! is_factor_profitable (gimple *def_stmt, basic_block merge, const gimple_match_op &arg_op)
  {
    /* The defining statement should be conditional.  */
    if (dominated_by_p (CDI_DOMINATORS, merge,
  		      gimple_bb (def_stmt)))
      return false;
  
    /* We should not increase the live range of arg
       across too many statements or calls.  */
    gimple_stmt_iterator gsi = gsi_for_stmt (def_stmt);
*************** is_factor_profitable (gimple *def_stmt,
*** 257,279 ****
    if (gsi_end_p (gsi))
      return true;
  
-   /* Check if the uses of arg is dominated by merge block, this is a quick and
-      rough estimate if arg is still alive at the merge bb.  */
-   /* FIXME: extend to a more complete live range detection.  */
-   use_operand_p use_p;
-   imm_use_iterator iter;
-   FOR_EACH_IMM_USE_FAST (use_p, iter, arg)
-     {
-       gimple *use_stmt = USE_STMT (use_p);
-       basic_block use_bb = gimple_bb (use_stmt);
-       if (dominated_by_p (CDI_DOMINATORS, merge, use_bb))
- 	return true;
-     }
- 
    /* If there are a few (non-call/asm) statements between
       the old defining statement and end of the bb, then
!      the live range of new arg does not increase enough.  */
    int max_statements = param_phiopt_factor_max_stmts_live;
  
    while (!gsi_end_p (gsi))
      {
--- 248,258 ----
    if (gsi_end_p (gsi))
      return true;
  
    /* If there are a few (non-call/asm) statements between
       the old defining statement and end of the bb, then
!      the live range of operands will increase enough.  */
    int max_statements = param_phiopt_factor_max_stmts_live;
+   bool stmts_extending_ok = true;
  
    while (!gsi_end_p (gsi))
      {
*************** is_factor_profitable (gimple *def_stmt,
*** 288,298 ****
  	}
        /* Non-assigns will extend the live range too much.  */
        if (gcode != GIMPLE_ASSIGN)
! 	return false;
        max_statements --;
        if (max_statements == 0)
! 	return false;
        gsi_next_nondebug (&gsi);
      }
    return true;
  }
--- 267,320 ----
  	}
        /* Non-assigns will extend the live range too much.  */
        if (gcode != GIMPLE_ASSIGN)
! 	{
! 	  stmts_extending_ok = false;
! 	  break;
! 	}
        max_statements --;
        if (max_statements == 0)
! 	{
! 	  stmts_extending_ok = false;
! 	  break;
! 	}
        gsi_next_nondebug (&gsi);
+   }
+   if (stmts_extending_ok)
+     return true;
+ 
+   /* Loop over all of the operands to see if all are used after anyways.  */
+   for (unsigned i = 0; i < arg_op.num_ops; i++)
+     {
+       tree arg = arg_op.ops[i];
+       /* If the arg is invariant, then there is
+ 	 no extending of the live range. */
+       if (is_gimple_min_invariant (arg))
+ 	continue;
+ 
+       /* Otherwise, the arg needs to be a ssa name. */
+       if (TREE_CODE (arg) != SSA_NAME)
+ 	return false;
+ 
+       /* Check if the uses of arg is dominated by merge block, this is a quick and
+ 	 rough estimate if arg is still alive at the merge bb.  */
+       /* FIXME: extend to a more complete live range detection.  */
+       use_operand_p use_p;
+       imm_use_iterator iter;
+       bool usedafter = false;
+       FOR_EACH_IMM_USE_FAST (use_p, iter, arg)
+ 	{
+ 	  gimple *use_stmt = USE_STMT (use_p);
+ 	  if (is_gimple_debug (use_stmt))
+ 	    continue;
+ 	  basic_block use_bb = gimple_bb (use_stmt);
+ 	  if (dominated_by_p (CDI_DOMINATORS, merge, use_bb))
+ 	    {
+ 	      usedafter = true;
+ 	      break;
+ 	    }
+ 	}
+       if (!usedafter)
+ 	return false;
      }
    return true;
  }
*************** is_factor_profitable (gimple *def_stmt,
*** 304,310 ****
  
  static bool
  factor_out_conditional_operation (edge e0, edge e1, basic_block merge,
! 				  gphi *phi, gimple *cond_stmt)
  {
    gimple *arg0_def_stmt = NULL, *arg1_def_stmt = NULL;
    tree temp, result;
--- 326,333 ----
  
  static bool
  factor_out_conditional_operation (edge e0, edge e1, basic_block merge,
! 				  gphi *phi, gimple *cond_stmt,
! 				  bool early_p)
  {
    gimple *arg0_def_stmt = NULL, *arg1_def_stmt = NULL;
    tree temp, result;
*************** factor_out_conditional_operation (edge e
*** 358,376 ****
    if (arg0_op.operands_occurs_in_abnormal_phi ())
     return false;
  
!   /* Currently just support one operand expressions. */
!   if (arg0_op.num_ops != 1)
!     return false;
! 
!   tree new_arg0 = arg0_op.ops[0];
    tree new_arg1;
  
    /* If arg0 have > 1 use, then this transformation actually increases
       the number of expressions evaluated at runtime.  */
    if (!has_single_use (arg0))
      return false;
-   if (!is_factor_profitable (arg0_def_stmt, merge, new_arg0))
-     return false;
    if (gimple_has_location (arg0_def_stmt))
      narg0_loc = gimple_location (arg0_def_stmt);
  
--- 381,394 ----
    if (arg0_op.operands_occurs_in_abnormal_phi ())
     return false;
  
!   tree new_arg0;
    tree new_arg1;
+   int opnum = -1;
  
    /* If arg0 have > 1 use, then this transformation actually increases
       the number of expressions evaluated at runtime.  */
    if (!has_single_use (arg0))
      return false;
    if (gimple_has_location (arg0_def_stmt))
      narg0_loc = gimple_location (arg0_def_stmt);
  
*************** factor_out_conditional_operation (edge e
*** 387,400 ****
        if (arg1_op.operands_occurs_in_abnormal_phi ())
  	return false;
  
        /* If arg1 have > 1 use, then this transformation actually increases
  	 the number of expressions evaluated at runtime.  */
        if (!has_single_use (arg1))
  	return false;
  
!       new_arg1 = arg1_op.ops[0];
!       if (!is_factor_profitable (arg1_def_stmt, merge, new_arg1))
  	return false;
        if (gimple_has_location (arg1_def_stmt))
  	narg1_loc = gimple_location (arg1_def_stmt);
  
--- 405,471 ----
        if (arg1_op.operands_occurs_in_abnormal_phi ())
  	return false;
  
+       /* For the complex expression, don't factor
+ 	 out, that will confuse the uninitializing
+ 	 warnings.  */
+       if (arg1_op.code == COMPLEX_EXPR)
+ 	return false;
+ 
        /* If arg1 have > 1 use, then this transformation actually increases
  	 the number of expressions evaluated at runtime.  */
        if (!has_single_use (arg1))
  	return false;
  
!       opnum = find_different_opnum (arg0_op, arg1_op, &new_arg0, &new_arg1);
!       if (opnum == -1)
  	return false;
+ 
+       /* Check to make sure extending the lifetimes of all operands is ok.  */
+       if (!is_factor_profitable (arg0_def_stmt, merge, arg0_op))
+ 	return false;
+       if (!is_factor_profitable (arg1_def_stmt, merge, arg1_op))
+ 	return false;
+ 
+       /* If this was a division and the operand is the divisor
+ 	 and either divisor was a constant, don't factor out
+ 	 the division; dividing by an explicit constant can be
+ 	 expanded better than without an constant.
+ 	 FIXME: maybe isel could undo this case.  */
+       if (int_divide_or_mod_p (arg1_op.code)
+ 	  && opnum == 1
+ 	  && (poly_int_tree_p (new_arg0)
+ 	      || poly_int_tree_p (new_arg1)))
+ 	return false;
+ 
+       /* For early phiopt, don't factor out constants for pointer plus.
+ 	 BOS pass does not like that factoring.  */
+       if (early_p && arg1_op.code == POINTER_PLUS_EXPR
+ 	  && opnum == 1
+ 	  && TREE_CODE (new_arg0) != SSA_NAME
+ 	  && TREE_CODE (new_arg1) != SSA_NAME)
+ 	return false;
+ 
+       /* BIT_FIELD_REF and BIT_INSERT_EXPR can't be factored out for non-0 operands
+ 	 as the other operands require constants. */
+       if ((arg1_op.code == BIT_FIELD_REF
+ 	   || arg1_op.code == BIT_INSERT_EXPR)
+ 	  && opnum != 0)
+ 	return false;
+ 
+       /* It is not profitability to factor out vec_perm with
+ 	 constant masks (operand 2).  The target might not support it
+ 	 and that might be invalid to do as such. Also with constants
+ 	 masks, the number of elements of the mask type does not need
+ 	 to match the number of elements of other operands and can be
+ 	 arbitrary integral vector type so factoring that out can't work.
+ 	 Note in the case where one mask is a constant and the other is not,
+ 	 the check for compatible types will reject the case the
+ 	 constant mask has the incompatible type.  */
+       if (arg1_op.code == VEC_PERM_EXPR && opnum == 2
+ 	  && TREE_CODE (new_arg0) == VECTOR_CST
+ 	  && TREE_CODE (new_arg1) == VECTOR_CST)
+ 	return false;
+ 
        if (gimple_has_location (arg1_def_stmt))
  	narg1_loc = gimple_location (arg1_def_stmt);
  
*************** factor_out_conditional_operation (edge e
*** 409,425 ****
  	    locus = narg0_loc;
  	}
      }
    else
      {
        /* For constants only handle if the phi was the only one. */
        if (single_non_singleton_phi_for_edges (phi_nodes (merge), e0, e1) == NULL)
  	return false;
        /* TODO: handle more than just casts here. */
        if (!gimple_assign_cast_p (arg0_def_stmt))
  	return false;
! 
!       /* arg0_def_stmt should be conditional.  */
!       if (dominated_by_p (CDI_DOMINATORS, gimple_bb (phi), gimple_bb (arg0_def_stmt)))
  	return false;
  
        /* If arg1 is an INTEGER_CST, fold it to new type if it fits, or else
--- 480,498 ----
  	    locus = narg0_loc;
  	}
      }
+   else if (arg0_op.num_ops != 1)
+     return false;
    else
      {
+       new_arg0 = arg0_op.ops[0];
+       opnum = 0;
        /* For constants only handle if the phi was the only one. */
        if (single_non_singleton_phi_for_edges (phi_nodes (merge), e0, e1) == NULL)
  	return false;
        /* TODO: handle more than just casts here. */
        if (!gimple_assign_cast_p (arg0_def_stmt))
  	return false;
!       if (!is_factor_profitable (arg0_def_stmt, merge, arg0_op))
  	return false;
  
        /* If arg1 is an INTEGER_CST, fold it to new type if it fits, or else
*************** factor_out_conditional_operation (edge e
*** 509,515 ****
    gimple_match_op new_op = arg0_op;
  
    /* Create the operation stmt if possible and insert it.  */
!   new_op.ops[0] = temp;
    gimple_seq seq = NULL;
    result = maybe_push_res_to_seq (&new_op, &seq, result);
  
--- 582,588 ----
    gimple_match_op new_op = arg0_op;
  
    /* Create the operation stmt if possible and insert it.  */
!   new_op.ops[opnum] = temp;
    gimple_seq seq = NULL;
    result = maybe_push_res_to_seq (&new_op, &seq, result);
  
*************** pass_phiopt::execute (function *)
*** 4108,4114 ****
  	      gphi *phi = as_a <gphi *> (gsi_stmt (gsi));
  
  	      if (factor_out_conditional_operation (e1, e2, merge, phi,
! 		  cond_stmt))
  		{
  		  /* Start over if there was an operation that was factored out because the new phi might have another opportunity.  */
  		  phis = phi_nodes (merge);
--- 4181,4187 ----
  	      gphi *phi = as_a <gphi *> (gsi_stmt (gsi));
  
  	      if (factor_out_conditional_operation (e1, e2, merge, phi,
! 		  cond_stmt, early_p))
  		{
  		  /* Start over if there was an operation that was factored out because the new phi might have another opportunity.  */
  		  phis = phi_nodes (merge);
diff -Nrcpad gcc-17-20260607/gcc/tree-vect-loop-manip.cc gcc-17-20260614/gcc/tree-vect-loop-manip.cc
*** gcc-17-20260607/gcc/tree-vect-loop-manip.cc	Sun Jun  7 22:32:14 2026
--- gcc-17-20260614/gcc/tree-vect-loop-manip.cc	Sun Jun 14 22:32:15 2026
*************** vect_set_loop_condition (class loop *loo
*** 1402,1407 ****
--- 1402,1420 ----
    gcond *orig_cond = get_loop_exit_condition (loop_e);
    gimple_stmt_iterator loop_cond_gsi = gsi_for_stmt (orig_cond);
  
+   /* Check to see whether we will be replacing final_IV below.  Because of the
+      various replacement strategies (assign vs PHI) just remove it now and
+      leave the SSA name to be rebuild below.  */
+   if (final_iv && TREE_CODE (final_iv) == SSA_NAME)
+     {
+       gimple *def = SSA_NAME_DEF_STMT (final_iv);
+       if (gimple_call_internal_p (def, IFN_VARYING))
+ 	{
+ 	  gimple_stmt_iterator gsi = gsi_for_stmt (def);
+ 	  gsi_remove (&gsi, true);
+ 	}
+     }
+ 
    if (loop_vinfo && LOOP_VINFO_USING_PARTIAL_VECTORS_P (loop_vinfo))
      {
        if (LOOP_VINFO_PARTIAL_VECTORS_STYLE (loop_vinfo) == vect_partial_vectors_avx512)
*************** vect_do_peeling (loop_vec_info loop_vinf
*** 3743,3749 ****
  		 until then.  */
  	      niters_vector_mult_vf
  		= make_ssa_name (TREE_TYPE (*niters_vector));
! 	      SSA_NAME_DEF_STMT (niters_vector_mult_vf) = gimple_build_nop ();
  	      *niters_vector_mult_vf_var = niters_vector_mult_vf;
  	    }
  	  else
--- 3756,3768 ----
  		 until then.  */
  	      niters_vector_mult_vf
  		= make_ssa_name (TREE_TYPE (*niters_vector));
! 	      edge exit_e = LOOP_VINFO_MAIN_EXIT (loop_vinfo);
! 	      gimple_stmt_iterator loop_cond_gsi
! 		= gsi_after_labels (exit_e->dest);
! 
! 	      gcall *tmp = gimple_build_call_internal (IFN_VARYING, 0);
! 	      gimple_call_set_lhs (tmp, niters_vector_mult_vf);
! 	      gsi_insert_before (&loop_cond_gsi, tmp, GSI_SAME_STMT);
  	      *niters_vector_mult_vf_var = niters_vector_mult_vf;
  	    }
  	  else
*************** vect_do_peeling (loop_vec_info loop_vinf
*** 3822,3827 ****
--- 3841,3850 ----
  	{
  	  tree tmp_niters_vf
  	    = make_ssa_name (LOOP_VINFO_EARLY_BRK_IV_TYPE (loop_vinfo));
+ 	  gcall *tmp_call = gimple_build_call_internal (IFN_VARYING, 0);
+ 	  gimple_call_set_lhs (tmp_call, tmp_niters_vf);
+ 	  auto header_gsi = gsi_after_labels (loop->header);
+ 	  gsi_insert_after (&header_gsi, tmp_call, GSI_SAME_STMT);
  
  	  if (!(LOOP_VINFO_NITERS_UNCOUNTED_P (loop_vinfo)
  		&& get_loop_exit_edges (loop).length () == 1)
diff -Nrcpad gcc-17-20260607/gcc/tree-vect-loop.cc gcc-17-20260614/gcc/tree-vect-loop.cc
*** gcc-17-20260607/gcc/tree-vect-loop.cc	Sun Jun  7 22:32:14 2026
--- gcc-17-20260614/gcc/tree-vect-loop.cc	Sun Jun 14 22:32:15 2026
*************** vect_update_ivs_after_vectorizer_for_ear
*** 11079,11084 ****
--- 11079,11089 ----
    auto loop = LOOP_VINFO_LOOP (loop_vinfo);
    tree induc_var = niters_skip ? copy_ssa_name (phi_var) : phi_var;
  
+   /* Remove the existing dummy GIMPLE statement and just keep the def.  */
+   gimple *def = SSA_NAME_DEF_STMT (phi_var);
+   auto def_gsi = gsi_for_stmt (def);
+   gsi_remove (&def_gsi, true);
+ 
    auto induction_phi = create_phi_node (induc_var, loop->header);
    tree induc_def = PHI_RESULT (induction_phi);
  
*************** vect_update_ivs_after_vectorizer_for_ear
*** 11149,11155 ****
        gcc_assert (exit_bb);
        auto exit_gsi = gsi_after_labels (exit_bb);
        gsi_insert_seq_before (&exit_gsi, iv_stmts, GSI_SAME_STMT);
!   }
    /* Write the init_stmts in the loop-preheader block.  */
    auto psi = gsi_last_nondebug_bb (pe->src);
    gsi_insert_seq_after (&psi, init_stmts, GSI_LAST_NEW_STMT);
--- 11154,11160 ----
        gcc_assert (exit_bb);
        auto exit_gsi = gsi_after_labels (exit_bb);
        gsi_insert_seq_before (&exit_gsi, iv_stmts, GSI_SAME_STMT);
!     }
    /* Write the init_stmts in the loop-preheader block.  */
    auto psi = gsi_last_nondebug_bb (pe->src);
    gsi_insert_seq_after (&psi, init_stmts, GSI_LAST_NEW_STMT);
diff -Nrcpad gcc-17-20260607/gcc/tree-vect-patterns.cc gcc-17-20260614/gcc/tree-vect-patterns.cc
*** gcc-17-20260607/gcc/tree-vect-patterns.cc	Sun Jun  7 22:32:14 2026
--- gcc-17-20260614/gcc/tree-vect-patterns.cc	Sun Jun 14 22:32:15 2026
*************** target_supports_mult_synth_alg (struct a
*** 4244,4250 ****
  static gimple *
  synth_lshift_by_additions (vec_info *vinfo,
  			   tree dest, tree op, HOST_WIDE_INT amnt,
! 			   stmt_vec_info stmt_info)
  {
    HOST_WIDE_INT i;
    tree itype = TREE_TYPE (op);
--- 4244,4250 ----
  static gimple *
  synth_lshift_by_additions (vec_info *vinfo,
  			   tree dest, tree op, HOST_WIDE_INT amnt,
! 			   stmt_vec_info stmt_info, tree vectype)
  {
    HOST_WIDE_INT i;
    tree itype = TREE_TYPE (op);
*************** synth_lshift_by_additions (vec_info *vin
*** 4258,4264 ****
          = gimple_build_assign (tmp_var, PLUS_EXPR, prev_res, prev_res);
        prev_res = tmp_var;
        if (i < amnt - 1)
! 	append_pattern_def_seq (vinfo, stmt_info, stmt);
        else
  	return stmt;
      }
--- 4258,4264 ----
          = gimple_build_assign (tmp_var, PLUS_EXPR, prev_res, prev_res);
        prev_res = tmp_var;
        if (i < amnt - 1)
! 	append_pattern_def_seq (vinfo, stmt_info, stmt, vectype);
        else
  	return stmt;
      }
*************** synth_lshift_by_additions (vec_info *vin
*** 4276,4282 ****
  static tree
  apply_binop_and_append_stmt (vec_info *vinfo,
  			     tree_code code, tree op1, tree op2,
! 			     stmt_vec_info stmt_vinfo, bool synth_shift_p)
  {
    if (integer_zerop (op2)
        && (code == LSHIFT_EXPR
--- 4276,4283 ----
  static tree
  apply_binop_and_append_stmt (vec_info *vinfo,
  			     tree_code code, tree op1, tree op2,
! 			     stmt_vec_info stmt_vinfo, tree vectype,
! 			     bool synth_shift_p)
  {
    if (integer_zerop (op2)
        && (code == LSHIFT_EXPR
*************** apply_binop_and_append_stmt (vec_info *v
*** 4294,4306 ****
        && synth_shift_p)
      {
        stmt = synth_lshift_by_additions (vinfo, tmp_var, op1,
! 					TREE_INT_CST_LOW (op2), stmt_vinfo);
!       append_pattern_def_seq (vinfo, stmt_vinfo, stmt);
        return tmp_var;
      }
  
    stmt = gimple_build_assign (tmp_var, code, op1, op2);
!   append_pattern_def_seq (vinfo, stmt_vinfo, stmt);
    return tmp_var;
  }
  
--- 4295,4308 ----
        && synth_shift_p)
      {
        stmt = synth_lshift_by_additions (vinfo, tmp_var, op1,
! 					TREE_INT_CST_LOW (op2), stmt_vinfo,
! 					vectype);
!       append_pattern_def_seq (vinfo, stmt_vinfo, stmt, vectype);
        return tmp_var;
      }
  
    stmt = gimple_build_assign (tmp_var, code, op1, op2);
!   append_pattern_def_seq (vinfo, stmt_vinfo, stmt, vectype);
    return tmp_var;
  }
  
*************** vect_synth_mult_by_constant (vec_info *v
*** 4396,4402 ****
      {
        tree tmp_op = vect_recog_temp_ssa_var (multtype, NULL);
        stmt = gimple_build_assign (tmp_op, CONVERT_EXPR, op);
!       append_pattern_def_seq (vinfo, stmt_vinfo, stmt);
        op = tmp_op;
      }
  
--- 4398,4404 ----
      {
        tree tmp_op = vect_recog_temp_ssa_var (multtype, NULL);
        stmt = gimple_build_assign (tmp_op, CONVERT_EXPR, op);
!       append_pattern_def_seq (vinfo, stmt_vinfo, stmt, vectype);
        op = tmp_op;
      }
  
*************** vect_synth_mult_by_constant (vec_info *v
*** 4420,4426 ****
  	  if (synth_shift_p)
  	    stmt
  	      = synth_lshift_by_additions (vinfo, accum_tmp, accumulator,
! 					   alg.log[i], stmt_vinfo);
  	  else
  	    stmt = gimple_build_assign (accum_tmp, LSHIFT_EXPR, accumulator,
  					 shft_log);
--- 4422,4428 ----
  	  if (synth_shift_p)
  	    stmt
  	      = synth_lshift_by_additions (vinfo, accum_tmp, accumulator,
! 					   alg.log[i], stmt_vinfo, vectype);
  	  else
  	    stmt = gimple_build_assign (accum_tmp, LSHIFT_EXPR, accumulator,
  					 shft_log);
*************** vect_synth_mult_by_constant (vec_info *v
*** 4428,4441 ****
  	case alg_add_t_m2:
  	  tmp_var
  	    = apply_binop_and_append_stmt (vinfo, LSHIFT_EXPR, op, shft_log,
! 					   stmt_vinfo, synth_shift_p);
  	  stmt = gimple_build_assign (accum_tmp, PLUS_EXPR, accumulator,
  				       tmp_var);
  	  break;
  	case alg_sub_t_m2:
  	  tmp_var = apply_binop_and_append_stmt (vinfo, LSHIFT_EXPR, op,
  						 shft_log, stmt_vinfo,
! 						 synth_shift_p);
  	  /* In some algorithms the first step involves zeroing the
  	     accumulator.  If subtracting from such an accumulator
  	     just emit the negation directly.  */
--- 4430,4443 ----
  	case alg_add_t_m2:
  	  tmp_var
  	    = apply_binop_and_append_stmt (vinfo, LSHIFT_EXPR, op, shft_log,
! 					   stmt_vinfo, vectype, synth_shift_p);
  	  stmt = gimple_build_assign (accum_tmp, PLUS_EXPR, accumulator,
  				       tmp_var);
  	  break;
  	case alg_sub_t_m2:
  	  tmp_var = apply_binop_and_append_stmt (vinfo, LSHIFT_EXPR, op,
  						 shft_log, stmt_vinfo,
! 						 vectype, synth_shift_p);
  	  /* In some algorithms the first step involves zeroing the
  	     accumulator.  If subtracting from such an accumulator
  	     just emit the negation directly.  */
*************** vect_synth_mult_by_constant (vec_info *v
*** 4448,4473 ****
  	case alg_add_t2_m:
  	  tmp_var
  	    = apply_binop_and_append_stmt (vinfo, LSHIFT_EXPR, accumulator,
! 					   shft_log, stmt_vinfo, synth_shift_p);
  	  stmt = gimple_build_assign (accum_tmp, PLUS_EXPR, tmp_var, op);
  	  break;
  	case alg_sub_t2_m:
  	  tmp_var
  	    = apply_binop_and_append_stmt (vinfo, LSHIFT_EXPR, accumulator,
! 					   shft_log, stmt_vinfo, synth_shift_p);
  	  stmt = gimple_build_assign (accum_tmp, MINUS_EXPR, tmp_var, op);
  	  break;
  	case alg_add_factor:
  	  tmp_var
  	    = apply_binop_and_append_stmt (vinfo, LSHIFT_EXPR, accumulator,
! 					   shft_log, stmt_vinfo, synth_shift_p);
  	  stmt = gimple_build_assign (accum_tmp, PLUS_EXPR, accumulator,
  				       tmp_var);
  	  break;
  	case alg_sub_factor:
  	  tmp_var
  	    = apply_binop_and_append_stmt (vinfo, LSHIFT_EXPR, accumulator,
! 					   shft_log, stmt_vinfo, synth_shift_p);
  	  stmt = gimple_build_assign (accum_tmp, MINUS_EXPR, tmp_var,
  				      accumulator);
  	  break;
--- 4450,4479 ----
  	case alg_add_t2_m:
  	  tmp_var
  	    = apply_binop_and_append_stmt (vinfo, LSHIFT_EXPR, accumulator,
! 					   shft_log, stmt_vinfo, vectype,
! 					   synth_shift_p);
  	  stmt = gimple_build_assign (accum_tmp, PLUS_EXPR, tmp_var, op);
  	  break;
  	case alg_sub_t2_m:
  	  tmp_var
  	    = apply_binop_and_append_stmt (vinfo, LSHIFT_EXPR, accumulator,
! 					   shft_log, stmt_vinfo, vectype,
! 					   synth_shift_p);
  	  stmt = gimple_build_assign (accum_tmp, MINUS_EXPR, tmp_var, op);
  	  break;
  	case alg_add_factor:
  	  tmp_var
  	    = apply_binop_and_append_stmt (vinfo, LSHIFT_EXPR, accumulator,
! 					   shft_log, stmt_vinfo, vectype,
! 					   synth_shift_p);
  	  stmt = gimple_build_assign (accum_tmp, PLUS_EXPR, accumulator,
  				       tmp_var);
  	  break;
  	case alg_sub_factor:
  	  tmp_var
  	    = apply_binop_and_append_stmt (vinfo, LSHIFT_EXPR, accumulator,
! 					   shft_log, stmt_vinfo, vectype,
! 					   synth_shift_p);
  	  stmt = gimple_build_assign (accum_tmp, MINUS_EXPR, tmp_var,
  				      accumulator);
  	  break;
*************** vect_synth_mult_by_constant (vec_info *v
*** 4478,4484 ****
  	 but rather return it directly.  */
  
        if ((i < alg.ops - 1) || needs_fixup || cast_to_unsigned_p)
! 	append_pattern_def_seq (vinfo, stmt_vinfo, stmt);
        accumulator = accum_tmp;
      }
    if (variant == negate_variant)
--- 4484,4490 ----
  	 but rather return it directly.  */
  
        if ((i < alg.ops - 1) || needs_fixup || cast_to_unsigned_p)
! 	append_pattern_def_seq (vinfo, stmt_vinfo, stmt, vectype);
        accumulator = accum_tmp;
      }
    if (variant == negate_variant)
*************** vect_synth_mult_by_constant (vec_info *v
*** 4487,4493 ****
        stmt = gimple_build_assign (accum_tmp, NEGATE_EXPR, accumulator);
        accumulator = accum_tmp;
        if (cast_to_unsigned_p)
! 	append_pattern_def_seq (vinfo, stmt_vinfo, stmt);
      }
    else if (variant == add_variant)
      {
--- 4493,4499 ----
        stmt = gimple_build_assign (accum_tmp, NEGATE_EXPR, accumulator);
        accumulator = accum_tmp;
        if (cast_to_unsigned_p)
! 	append_pattern_def_seq (vinfo, stmt_vinfo, stmt, vectype);
      }
    else if (variant == add_variant)
      {
*************** vect_synth_mult_by_constant (vec_info *v
*** 4495,4501 ****
        stmt = gimple_build_assign (accum_tmp, PLUS_EXPR, accumulator, op);
        accumulator = accum_tmp;
        if (cast_to_unsigned_p)
! 	append_pattern_def_seq (vinfo, stmt_vinfo, stmt);
      }
    /* Move back to a signed if needed.  */
    if (cast_to_unsigned_p)
--- 4501,4507 ----
        stmt = gimple_build_assign (accum_tmp, PLUS_EXPR, accumulator, op);
        accumulator = accum_tmp;
        if (cast_to_unsigned_p)
! 	append_pattern_def_seq (vinfo, stmt_vinfo, stmt, vectype);
      }
    /* Move back to a signed if needed.  */
    if (cast_to_unsigned_p)
diff -Nrcpad gcc-17-20260607/gcc/tree-vect-slp.cc gcc-17-20260614/gcc/tree-vect-slp.cc
*** gcc-17-20260607/gcc/tree-vect-slp.cc	Sun Jun  7 22:32:14 2026
--- gcc-17-20260614/gcc/tree-vect-slp.cc	Sun Jun 14 22:32:15 2026
*************** vect_slp_linearize_chain (vec_info *vinf
*** 1873,1878 ****
--- 1873,1884 ----
      }
  }
  
+ /* Distance from the node currently being discovered to the closest upthread
+    commutative operation whose operand-zero discovery may still be fixed by
+    retrying with swapped operands, or -1U if there is none.  */
+ 
+ static unsigned least_upthread_swappable_op_distance = -1U;
+ 
  static slp_tree
  vect_build_slp_tree_2 (vec_info *vinfo, slp_tree node,
  		       vec<stmt_vec_info> stmts, unsigned int group_size,
*************** out:
*** 2815,2820 ****
--- 2821,2830 ----
      {
        slp_tree child = nullptr;
        unsigned int j;
+       unsigned old_swap_distance;
+       bool can_swap;
+       bool can_swap_nonmatching;
+       bool *stmt_can_swap;
  
        /* We're skipping certain operands from processing, for example
  	 outer loop reduction initial defs.  */
*************** out:
*** 2965,2974 ****
  	    def_stmts2.release ();
  	}
  
!       if ((child = vect_build_slp_tree (vinfo, oprnd_info->def_stmts,
! 					group_size, &this_max_nunits,
! 					matches, limit,
! 					&this_tree_size, bst_map)) != NULL)
  	{
  	  oprnd_info->def_stmts = vNULL;
  	  children.safe_push (child);
--- 2975,3031 ----
  	    def_stmts2.release ();
  	}
  
!       can_swap = (i == 0
! 		  && (nops == 2 || nops == 3)
! 		  && oprnds_info.length () > 1
! 		  && oprnds_info[1]->first_dt == vect_internal_def
! 		  && (is_gimple_assign (stmt_info->stmt)
! 		      || is_gimple_call (stmt_info->stmt))
! 		  /* Swapping operands for reductions breaks assumptions
! 		     later on.  */
! 		  && STMT_VINFO_REDUC_IDX (stmt_info) == -1);
!       can_swap_nonmatching = can_swap;
!       stmt_can_swap = NULL;
!       if (can_swap)
! 	{
! 	  stmt_can_swap = XALLOCAVEC (bool, group_size);
! 	  for (j = 0; j < group_size; ++j)
! 	    {
! 	      stmt_can_swap[j] = false;
! 	      if (!stmts[j])
! 		/* NULL lanes are gaps and have no stmt to swap.  */
! 		stmt_can_swap[j] = true;
! 	      else if (gassign *stmt = dyn_cast <gassign *> (stmts[j]->stmt))
! 		{
! 		  tree_code code = gimple_assign_rhs_code (stmt);
! 		  stmt_can_swap[j] = (commutative_tree_code (code)
! 				      || commutative_ternary_tree_code (code));
! 		}
! 	      else if (gcall *call = dyn_cast <gcall *> (stmts[j]->stmt))
! 		{
! 		  internal_fn fn = (gimple_call_internal_p (call)
! 				    ? gimple_call_internal_fn (call) : IFN_LAST);
! 		  stmt_can_swap[j] = ((commutative_binary_fn_p (fn)
! 				       || commutative_ternary_fn_p (fn))
! 				      && first_commutative_argument (fn) == 0);
! 		}
! 
! 	      if (j != 0 && !stmt_can_swap[j])
! 		can_swap_nonmatching = false;
! 	    }
! 	}
! 
!       old_swap_distance = least_upthread_swappable_op_distance;
!       if (can_swap_nonmatching)
! 	least_upthread_swappable_op_distance = 1;
!       else if (least_upthread_swappable_op_distance != -1U)
! 	least_upthread_swappable_op_distance++;
!       child = vect_build_slp_tree (vinfo, oprnd_info->def_stmts,
! 				   group_size, &this_max_nunits,
! 				   matches, limit,
! 				   &this_tree_size, bst_map);
!       least_upthread_swappable_op_distance = old_swap_distance;
!       if (child != NULL)
  	{
  	  oprnd_info->def_stmts = vNULL;
  	  children.safe_push (child);
*************** out:
*** 2978,2994 ****
        /* If the SLP build for operand zero failed and operand zero
  	 and one can be commuted try that for the scalar stmts
  	 that failed the match.  */
!       if (i == 0
! 	  /* A first scalar stmt mismatch signals a fatal mismatch.  */
! 	  && matches[0]
! 	  /* ???  For COND_EXPRs we can swap the comparison operands
! 	     as well as the arms under some constraints.  */
! 	  && (nops == 2 || nops == 3)
! 	  && oprnds_info[1]->first_dt == vect_internal_def
! 	  && (is_gimple_assign (stmt_info->stmt)
! 	      || is_gimple_call (stmt_info->stmt))
! 	  /* Swapping operands for reductions breaks assumptions later on.  */
! 	  && STMT_VINFO_REDUC_IDX (stmt_info) == -1)
  	{
  	  /* See whether we can swap the matching or the non-matching
  	     stmt operands.  */
--- 3035,3043 ----
        /* If the SLP build for operand zero failed and operand zero
  	 and one can be commuted try that for the scalar stmts
  	 that failed the match.  */
!       if (/* A first scalar stmt mismatch signals a fatal mismatch.  */
! 	  matches[0]
! 	  && can_swap)
  	{
  	  /* See whether we can swap the matching or the non-matching
  	     stmt operands.  */
*************** out:
*** 2999,3032 ****
  		{
  		  if (matches[j] != !swap_not_matching)
  		    continue;
- 		  stmt_vec_info stmt_info = stmts[j];
  		  /* Verify if we can swap operands of this stmt.  */
! 		  if (gassign *stmt = dyn_cast <gassign *> (stmt_info->stmt))
! 		    {
! 		      tree_code code = gimple_assign_rhs_code (stmt);
! 		      if (! commutative_tree_code (code)
! 			  && ! commutative_ternary_tree_code (code))
! 			{
! 			  if (!swap_not_matching)
! 			    goto fail;
! 			  swap_not_matching = false;
! 			  break;
! 			}
! 		    }
! 		  else if (gcall *call = dyn_cast <gcall *> (stmt_info->stmt))
  		    {
! 		      internal_fn fn = (gimple_call_internal_p (call)
! 					? gimple_call_internal_fn (call)
! 					: IFN_LAST);
! 		      if ((! commutative_binary_fn_p (fn)
! 			   && ! commutative_ternary_fn_p (fn))
! 			  || first_commutative_argument (fn) != 0)
! 			{
! 			  if (!swap_not_matching)
! 			    goto fail;
! 			  swap_not_matching = false;
! 			  break;
! 			}
  		    }
  		}
  	    }
--- 3048,3060 ----
  		{
  		  if (matches[j] != !swap_not_matching)
  		    continue;
  		  /* Verify if we can swap operands of this stmt.  */
! 		  if (!stmt_can_swap[j])
  		    {
! 		      if (!swap_not_matching)
! 			goto fail;
! 		      swap_not_matching = false;
! 		      break;
  		    }
  		}
  	    }
*************** fail:
*** 3078,3083 ****
--- 3106,3117 ----
  	  /* ???  Rejecting patterns this way doesn't work.  We'd have to
  	     do extra work to cancel the pattern so the uses see the
  	     scalar version.  */
+ 	  /* Skip building vector operands from scalars while operand
+ 	     discovery may still be fixed by retrying with swapped operands.  */
+ 	  && (least_upthread_swappable_op_distance != 1
+ 	      /* A first scalar stmt mismatch signals a fatal mismatch
+ 		 that the parent commutative retry cannot recover.  */
+ 	      || !matches[0])
  	  && !is_pattern_stmt_p (stmt_info)
  	  && !oprnd_info->any_pattern)
  	{
*************** vect_analyze_slp_reduction_group (loop_v
*** 4818,4825 ****
  				  unsigned max_tree_size, unsigned *limit,
  				  bool *matches)
  {
!   /* Try to form a reduction group.  */
    unsigned int group_size = scalar_stmts.length ();
    if (!matches)
      matches = XALLOCAVEC (bool, group_size);
    poly_uint64 max_nunits = 1;
--- 4852,4862 ----
  				  unsigned max_tree_size, unsigned *limit,
  				  bool *matches)
  {
!   /* Try to form a reduction group.  Size-1 groups are not suitable
!      for SLP reduction and should fall back to single-lane reduction.  */
    unsigned int group_size = scalar_stmts.length ();
+   if (group_size <= 1)
+     return false;
    if (!matches)
      matches = XALLOCAVEC (bool, group_size);
    poly_uint64 max_nunits = 1;
*************** vect_analyze_slp_reductions (loop_vec_in
*** 4969,4974 ****
--- 5006,5013 ----
  	      }
  	  scalar_stmts.truncate (j);
  	  group_size = scalar_stmts.length ();
+ 	  if (group_size <= 1)
+ 	    break;
  	  if (vect_analyze_slp_reduction_group (loop_vinfo, scalar_stmts,
  						bst_map, max_tree_size, limit,
  						matches))
diff -Nrcpad gcc-17-20260607/gcc/tree.h gcc-17-20260614/gcc/tree.h
*** gcc-17-20260607/gcc/tree.h	Sun Jun  7 22:32:14 2026
--- gcc-17-20260614/gcc/tree.h	Sun Jun 14 22:32:15 2026
*************** trunc_or_exact_div_p (tree_code code)
*** 5805,5810 ****
--- 5805,5831 ----
    return code == TRUNC_DIV_EXPR || code == EXACT_DIV_EXPR;
  }
  
+ /* Return true if CODE is an integer division or integer mod code. */
+ inline bool
+ int_divide_or_mod_p (const code_helper &code)
+ {
+   switch (code.get_rep())
+     {
+     case TRUNC_DIV_EXPR:
+     case CEIL_DIV_EXPR:
+     case FLOOR_DIV_EXPR:
+     case ROUND_DIV_EXPR:
+     case EXACT_DIV_EXPR:
+     case TRUNC_MOD_EXPR:
+     case FLOOR_MOD_EXPR:
+     case CEIL_MOD_EXPR:
+     case ROUND_MOD_EXPR:
+       return true;
+     default:
+       return false;
+     }
+ }
+ 
  /* Return nonzero if CODE is a tree code that represents a truth value.  */
  inline bool
  truth_value_p (enum tree_code code)
diff -Nrcpad gcc-17-20260607/gcc/value-range-storage.cc gcc-17-20260614/gcc/value-range-storage.cc
*** gcc-17-20260607/gcc/value-range-storage.cc	Sun Jun  7 22:32:14 2026
--- gcc-17-20260614/gcc/value-range-storage.cc	Sun Jun 14 22:32:15 2026
*************** irange_storage::alloc (vrange_internal_a
*** 296,302 ****
  // Initialize the storage with R.
  
  irange_storage::irange_storage (const irange &r)
!   : m_max_ranges (r.num_pairs ())
  {
    m_num_ranges = m_max_ranges;
    set_irange (r);
--- 296,302 ----
  // Initialize the storage with R.
  
  irange_storage::irange_storage (const irange &r)
!   : vrange_storage (VR_IRANGE), m_max_ranges (r.num_pairs ())
  {
    m_num_ranges = m_max_ranges;
    set_irange (r);
*************** frange_storage::fits_p (const frange &)
*** 593,600 ****
  prange_storage *
  prange_storage::alloc (vrange_internal_alloc &allocator, const prange &r)
  {
!   prange_format format (r);
!   size_t size = sizeof (prange_storage) + format.extra_size;
    prange_storage *p = static_cast <prange_storage *> (allocator.alloc (size));
    new (p) prange_storage (r);
    return p;
--- 593,609 ----
  prange_storage *
  prange_storage::alloc (vrange_internal_alloc &allocator, const prange &r)
  {
!   unsigned num_words;
!   prange_format (r, num_words);
!   size_t extra_size = 0;
!   if (num_words)
!     {
!       unsigned short precision = TYPE_PRECISION (r.type ());
!       extra_size = trailing_wide_ints<PRANGE_STORAGE_NINTS>
! 		     ::extra_size (precision, num_words);
!     }
! 
!   size_t size = sizeof (prange_storage) + extra_size;
    prange_storage *p = static_cast <prange_storage *> (allocator.alloc (size));
    new (p) prange_storage (r);
    return p;
*************** prange_storage::alloc (vrange_internal_a
*** 602,642 ****
  
  // Initialize the storage with R.
  
! prange_storage::prange_storage (const prange &r)
  {
!   prange_format format (r);
!   m_trailing_ints.set_precision (format.precision, format.num_words);
    set_prange (r);
  }
  
! // FIll the format structure for range R.
  
! prange_storage::prange_format::prange_format (const prange &r)
  {
-   kind = PR_UNDEFINED;
-   has_bitmask = 0;
-   extra_size = 0;
-   precision = 0;
    num_words = 0;
- 
    if (r.undefined_p ())
!     return;
  
    if (r.varying_p ())
!     {
!       kind = PR_VARYING;
!       return;
!     }
  
    if (r.zero_p ())
!     {
!       kind = PR_ZERO;
!       return;
!     }
  
!   if (r.nonzero_p ())
!     kind = PR_NONZERO;
!   else
      {
        prange tmp (r.type ());
        if (r.lower_bound () == tmp.lower_bound ()
--- 611,644 ----
  
  // Initialize the storage with R.
  
! prange_storage::prange_storage (const prange &r) : vrange_storage (VR_PRANGE)
  {
!   unsigned num_words;
!   enum prange_kind kind = prange_format (r, num_words);
!   unsigned short prec = (kind == PR_UNDEFINED) ? 0 : TYPE_PRECISION (r.type ());
!   m_trailing_ints.set_precision (prec, num_words);
    set_prange (r);
  }
  
! // Return the prange_kind for range R, and the number of words of storage
! // it requires in NUM_WORDS.
  
! enum prange_kind
! prange_storage::prange_format (const prange &r, unsigned &num_words)
  {
    num_words = 0;
    if (r.undefined_p ())
!     return PR_UNDEFINED;
  
    if (r.varying_p ())
!     return PR_VARYING;
  
    if (r.zero_p ())
!     return PR_ZERO;
  
!   enum prange_kind kind = PR_NONZERO;
! 
!   if (!r.nonzero_p ())
      {
        prange tmp (r.type ());
        if (r.lower_bound () == tmp.lower_bound ()
*************** prange_storage::prange_format::prange_fo
*** 649,674 ****
  	  num_words += 2;
  	}
      }
-   precision = TYPE_PRECISION (r.type ());
-   has_bitmask = !r.get_bitmask ().unknown_p ();
  
    // Bitmasks require 2 words of storage.
!   if (has_bitmask)
      num_words += 2;
  
!   if (num_words != 0)
!     extra_size = trailing_wide_ints<NINTS>::extra_size (precision, num_words);
! 
!   // PR_FULL must have a bitmask, or it should be PR_VARYING.
!   gcc_checking_assert (kind != PR_FULL || has_bitmask);
  }
  
  void
  prange_storage::set_prange (const prange &r)
  {
!   prange_format format (r);
!   m_kind = format.kind;
!   m_has_bitmask = format.has_bitmask;
    unsigned index = 0;
  
    switch (m_kind)
--- 651,673 ----
  	  num_words += 2;
  	}
      }
  
    // Bitmasks require 2 words of storage.
!   if (!r.get_bitmask ().unknown_p ())
      num_words += 2;
  
!   // PR_FULL must have a bitmask or points to, or it should be PR_VARYING.
!   gcc_checking_assert (kind != PR_FULL || !r.get_bitmask ().unknown_p ());
!   return kind;
  }
  
  void
  prange_storage::set_prange (const prange &r)
  {
!   unsigned num_words;
!   m_kind = prange_format (r, num_words);
!   m_has_bitmask = !r.get_bitmask ().unknown_p ();
! 
    unsigned index = 0;
  
    switch (m_kind)
*************** prange_storage::set_prange (const prange
*** 694,700 ****
        set_word (index++, r.m_bitmask.value (), r.type ());
        set_word (index++, r.m_bitmask.mask (), r.type ());
      }
!    gcc_checking_assert (index == format.num_words);
  }
  
  void
--- 693,699 ----
        set_word (index++, r.m_bitmask.value (), r.type ());
        set_word (index++, r.m_bitmask.mask (), r.type ());
      }
!   gcc_checking_assert (index == num_words);
  }
  
  void
*************** prange_storage::equal_p (const prange &r
*** 762,770 ****
    if (r.undefined_p ())
      return m_kind == PR_UNDEFINED;
  
!   prange tmp;
!   get_prange (tmp, r.type ());
!   return tmp == r;
  }
  
  bool
--- 761,809 ----
    if (r.undefined_p ())
      return m_kind == PR_UNDEFINED;
  
!   unsigned index = 0;
!   switch (m_kind)
!     {
!       case PR_VARYING:
! 	return r.varying_p ();
! 
!       case PR_ZERO:
! 	return r.zero_p ();
! 
!       case PR_NONZERO:
! 	if (!r.nonzero_p ())
! 	  return false;
! 	break;
! 
!       case PR_FULL:
! 	if (r.m_min != wi::zero (TYPE_PRECISION (r.m_type))
! 	    || r.m_max != wi::max_value (TYPE_PRECISION (r.m_type),
! 					 TYPE_SIGN (r.m_type)))
! 	  return false;
! 	break;
! 
!       case PR_OTHER:
! 	if (r.m_min != get_word (index++, r.m_type)
! 	    || r.m_max != get_word (index++, r.m_type))
! 	  return false;
! 	break;
! 
!       default:
! 	gcc_unreachable ();
!     }
! 
!   if (m_has_bitmask)
!     {
!       wide_int value = get_word (index++, r.m_type);
!       wide_int mask = get_word (index++, r.m_type);
!       if (r.m_bitmask != irange_bitmask (value, mask))
! 	return false;
!     }
!   else
!     if (!r.m_bitmask.unknown_p ())
!       return false;
! 
!   return true;
  }
  
  bool
*************** prange_storage::fits_p (const prange &r)
*** 775,785 ****
    if (r.undefined_p ())
      return true;
  
!   prange_format f (r);
!   unsigned prec = m_trailing_ints.get_precision ();
!   unsigned num = m_trailing_ints.num_elements ();
!   size_t curr = num ? trailing_wide_ints<NINTS>::extra_size (prec, num) : 0;
!   return f.extra_size <= curr;
  }
  
  
--- 814,822 ----
    if (r.undefined_p ())
      return true;
  
!   unsigned num_words;
!   prange_format (r, num_words);
!   return num_words <= m_trailing_ints.num_elements ();
  }
  
  
diff -Nrcpad gcc-17-20260607/gcc/value-range-storage.h gcc-17-20260614/gcc/value-range-storage.h
*** gcc-17-20260607/gcc/value-range-storage.h	Sun Jun  7 22:32:14 2026
--- gcc-17-20260614/gcc/value-range-storage.h	Sun Jun 14 22:32:15 2026
*************** private:
*** 46,52 ****
  // ggc_test_and_set_mark calls.  We ignore the derived classes, since
  // they don't contain any pointers.
  
! class GTY(()) vrange_storage
  {
  public:
    static vrange_storage *alloc (vrange_internal_alloc &, const vrange &);
--- 46,52 ----
  // ggc_test_and_set_mark calls.  We ignore the derived classes, since
  // they don't contain any pointers.
  
! class GTY((desc ("%h.m_discriminator"), tag("VR_UNKNOWN"))) vrange_storage
  {
  public:
    static vrange_storage *alloc (vrange_internal_alloc &, const vrange &);
*************** public:
*** 54,67 ****
    void set_vrange (const vrange &r);
    bool fits_p (const vrange &r) const;
    bool equal_p (const vrange &r) const;
! protected:
    // Stack initialization disallowed.
!   vrange_storage () { }
  };
  
  // Efficient memory storage for an irange.
  
! class irange_storage : public vrange_storage
  {
  public:
    static irange_storage *alloc (vrange_internal_alloc &, const irange &);
--- 54,68 ----
    void set_vrange (const vrange &r);
    bool fits_p (const vrange &r) const;
    bool equal_p (const vrange &r) const;
! 
    // Stack initialization disallowed.
!   vrange_storage (enum value_range_discriminator d) : m_discriminator (d) { }
!   const ENUM_BITFIELD(value_range_discriminator) m_discriminator : 4;
  };
  
  // Efficient memory storage for an irange.
  
! class GTY((tag ("VR_IRANGE"))) irange_storage: public vrange_storage
  {
  public:
    static irange_storage *alloc (vrange_internal_alloc &, const irange &);
*************** private:
*** 98,136 ****
    irange_storage (const irange &r);
  };
  
- // Efficient memory storage for a prange.
  
! class prange_storage : public vrange_storage
  {
  public:
    static prange_storage *alloc (vrange_internal_alloc &, const prange &);
    void set_prange (const prange &r);
    void get_prange (prange &r, tree type) const;
    bool equal_p (const prange &r) const;
    bool fits_p (const prange &r) const;
    void dump () const;
  private:
    DISABLE_COPY_AND_ASSIGN (prange_storage);
    prange_storage (const prange &r);
! 
!   // A prange_format class summarizes the storage requirements for a prange
!   // which are then used to initialize the prange_storage fields.
!   enum prange_kind { PR_UNDEFINED,	// VR_UNDEFINED
! 		     PR_VARYING,	// VR_VARYING
! 		     PR_ZERO,		// [0, 0]
! 		     PR_NONZERO,	// [1, +INF]
! 		     PR_FULL,		// [0, +INF] (Must have bitmask)
! 		     PR_OTHER };	// [x, y]
!   class prange_format
!   {
!   public:
!     prange_format (const prange &r);
!     enum prange_kind kind;
!     bool has_bitmask;
!     size_t extra_size;
!     unsigned short precision;
!     unsigned num_words;
!   };
  
    enum prange_kind m_kind;
    bool m_has_bitmask;
--- 99,137 ----
    irange_storage (const irange &r);
  };
  
  
! // A prange_kind summarizes some common variations for a prange, and is used
! // in a prange_storage clas for efficiency.
! 
! enum prange_kind { PR_UNDEFINED,	// VR_UNDEFINED
! 		   PR_VARYING,		// VR_VARYING
! 		   PR_ZERO,		// [0, 0]
! 		   PR_NONZERO,		// [1, +INF] (May have bitmask)
! 		   PR_FULL,		// [0, +INF] (Must have bitmask)
! 		   PR_OTHER };		// [x, y]    (MAy have bitmask)
! 
! // Maximum number of words that may be allocated by a prange_storage class.
! const unsigned int PRANGE_STORAGE_NINTS = 4;
! 
! // Efficient memory storage for a prange.
! class GTY((tag ("VR_PRANGE"))) prange_storage : public vrange_storage
  {
  public:
+   friend void gt_ggc_mx_vrange_storage(void *);
+   friend void gt_pch_nx_vrange_storage(void *);
+   friend void gt_pch_p_14vrange_storage(void *, void *, gt_pointer_operator,
+ 					void *);
    static prange_storage *alloc (vrange_internal_alloc &, const prange &);
    void set_prange (const prange &r);
    void get_prange (prange &r, tree type) const;
    bool equal_p (const prange &r) const;
    bool fits_p (const prange &r) const;
    void dump () const;
+ 
  private:
    DISABLE_COPY_AND_ASSIGN (prange_storage);
    prange_storage (const prange &r);
!   static enum prange_kind prange_format (const prange &r, unsigned &num_words);
  
    enum prange_kind m_kind;
    bool m_has_bitmask;
*************** private:
*** 143,155 ****
    template <typename T> void set_word (unsigned i, const T &x, tree)
      { m_trailing_ints[i] = x; }
  
!   static const unsigned int NINTS = 4;
!   trailing_wide_ints<NINTS> m_trailing_ints;
  };
  
  // Efficient memory storage for an frange.
  
! class frange_storage : public vrange_storage
  {
   public:
    static frange_storage *alloc (vrange_internal_alloc &, const frange &r);
--- 144,155 ----
    template <typename T> void set_word (unsigned i, const T &x, tree)
      { m_trailing_ints[i] = x; }
  
!   trailing_wide_ints<PRANGE_STORAGE_NINTS> m_trailing_ints;
  };
  
  // Efficient memory storage for an frange.
  
! class GTY((tag ("VR_FRANGE"))) frange_storage : public vrange_storage
  {
   public:
    static frange_storage *alloc (vrange_internal_alloc &, const frange &r);
*************** class frange_storage : public vrange_sto
*** 158,164 ****
    bool equal_p (const frange &r) const;
    bool fits_p (const frange &) const;
   private:
!   frange_storage (const frange &r) { set_frange (r); }
    DISABLE_COPY_AND_ASSIGN (frange_storage);
  
    enum value_range_kind m_kind;
--- 158,165 ----
    bool equal_p (const frange &r) const;
    bool fits_p (const frange &) const;
   private:
!   frange_storage (const frange &r) : vrange_storage (VR_FRANGE)
!     { set_frange (r); }
    DISABLE_COPY_AND_ASSIGN (frange_storage);
  
    enum value_range_kind m_kind;
diff -Nrcpad gcc-17-20260607/include/ChangeLog gcc-17-20260614/include/ChangeLog
*** gcc-17-20260607/include/ChangeLog	Sun Jun  7 22:32:14 2026
--- gcc-17-20260614/include/ChangeLog	Sun Jun 14 22:32:15 2026
***************
*** 1,3 ****
--- 1,8 ----
+ 2026-06-13  Sunil Dora  <sunilkumar.dora@windriver.com>
+ 
+ 	PR driver/111527
+ 	* libiberty.h (expandargstr): Declare.
+ 
  2026-06-01  Arsen Arsenović  <aarsenovic@baylibre.com>
  
  	* gomp-constants.h (GOMP_VERSION): Bump.  Signature of
diff -Nrcpad gcc-17-20260607/include/libiberty.h gcc-17-20260614/include/libiberty.h
*** gcc-17-20260607/include/libiberty.h	Sun Jun  7 22:32:14 2026
--- gcc-17-20260614/include/libiberty.h	Sun Jun 14 22:32:15 2026
*************** extern int writeargv (char * const *, FI
*** 94,99 ****
--- 94,104 ----
  
  extern int countargv (char * const *);
  
+ /* Expand VAL as a response file if it begins with '@' and return the
+    result as a shell-quoted string.  */
+ 
+ extern char *expandargstr (const char *, const char *);
+ 
  /* Return the last component of a path name.  Note that we can't use a
     prototype here because the parameter is declared inconsistently
     across different systems, sometimes as "char *" and sometimes as
diff -Nrcpad gcc-17-20260607/libcpp/init.cc gcc-17-20260614/libcpp/init.cc
*** gcc-17-20260607/libcpp/init.cc	Sun Jun  7 22:32:14 2026
--- gcc-17-20260614/libcpp/init.cc	Sun Jun 14 22:32:15 2026
*************** read_original_directory (cpp_reader *pfi
*** 933,939 ****
     Maybe it should also reset state, such that you could call
     cpp_start_read with a new filename to restart processing.  */
  void
! cpp_finish (struct cpp_reader *pfile, FILE *deps_stream, FILE *fdeps_stream)
  {
    /* Warn about unused macros before popping the final buffer.  */
    if (CPP_OPTION (pfile, warn_unused_macros))
--- 933,939 ----
     Maybe it should also reset state, such that you could call
     cpp_start_read with a new filename to restart processing.  */
  void
! cpp_finish (cpp_reader *pfile, FILE *deps_stream, FILE *fdeps_stream)
  {
    /* Warn about unused macros before popping the final buffer.  */
    if (CPP_OPTION (pfile, warn_unused_macros))
diff -Nrcpad gcc-17-20260607/libcpp/mkdeps.cc gcc-17-20260614/libcpp/mkdeps.cc
*** gcc-17-20260607/libcpp/mkdeps.cc	Sun Jun  7 22:32:14 2026
--- gcc-17-20260614/libcpp/mkdeps.cc	Sun Jun 14 22:32:15 2026
*************** fdeps_add_target (struct mkdeps *d, cons
*** 309,319 ****
  {
    o = apply_vpath (d, o);
    if (is_primary)
!   {
!     if (d->primary_output)
!       d->fdeps_targets.push (d->primary_output);
!     d->primary_output = xstrdup (o);
!   } else
      d->fdeps_targets.push (xstrdup (o));
  }
  
--- 309,320 ----
  {
    o = apply_vpath (d, o);
    if (is_primary)
!     {
!       if (d->primary_output)
! 	d->fdeps_targets.push (d->primary_output);
!       d->primary_output = xstrdup (o);
!     }
!   else
      d->fdeps_targets.push (xstrdup (o));
  }
  
diff -Nrcpad gcc-17-20260607/libgcc/ChangeLog gcc-17-20260614/libgcc/ChangeLog
*** gcc-17-20260607/libgcc/ChangeLog	Sun Jun  7 22:32:14 2026
--- gcc-17-20260614/libgcc/ChangeLog	Sun Jun 14 22:32:15 2026
***************
*** 1,3 ****
--- 1,21 ----
+ 2026-06-12  Ramin Moussavi  <lordrasmus@gmail.com>
+ 
+ 	* config.host (microblaze*-linux*): Set md_unwind_header.
+ 	* config/microblaze/linux-unwind.h: New file.
+ 
+ 2026-06-09  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* config/avr/lib1funcs.S: Fix trailing blanks.
+ 	(mov_h): Remove macro and invocations.
+ 	(mov_l): Remove macro.  Replace invocations with wmov.
+ 	(__zero_reg__, __tmp_reg__, __SREG__, __SP_H__)
+ 	(__SP_L__, __RAMPZ__, __EIND__, skip, NEG2, NEG4)
+ 	(wmov, wsubi, waddi, mov4, XCALL, XJMP, XICALL, XIJMP)
+ 	(do_prologue_saves, do_epilogue_restores, .branch_plus)
+ 	(DEFUN, ENDF, FALIAS): Move macros to...
+ 	* config/avr/asm-defs.h: ...this new file.
+ 	* config/avr/lib1funcs-fixed.S: Fix trailing blanks.
+ 
  2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
  
  	* config/s390/tpf-unwind.h (s390_fallback_frame_state): Likewise.
diff -Nrcpad gcc-17-20260607/libgcc/config/avr/asm-defs.h gcc-17-20260614/libgcc/config/avr/asm-defs.h
*** gcc-17-20260607/libgcc/config/avr/asm-defs.h	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/libgcc/config/avr/asm-defs.h	Sun Jun 14 22:32:15 2026
***************
*** 0 ****
--- 1,271 ----
+ /*  -*- Mode: Asm -*-  */
+ /* Copyright (C) 1998-2026 Free Software Foundation, Inc.
+    Contributed by Denis Chertykov <chertykov@gmail.com>
+ 
+    This file is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 3, or (at your option) any
+    later version.
+ 
+    This file is distributed in the hope that it will be useful, but
+    WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    General Public License for more details.
+ 
+    Under Section 7 of GPL version 3, you are granted additional
+    permissions described in the GCC Runtime Library Exception, version
+    3.1, as published by the Free Software Foundation.
+ 
+    You should have received a copy of the GNU General Public License and
+    a copy of the GCC Runtime Library Exception along with this program;
+    see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+ 
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ ;;; Definitions for common SFRs and fixed registers.
+ 
+ #if defined (__AVR_TINY__)
+ #define __zero_reg__ r17
+ #define __tmp_reg__ r16
+ #else
+ #define __zero_reg__ r1
+ #define __tmp_reg__ r0
+ #endif
+ 
+ #if defined (__AVR_HAVE_SPH__)
+ #define __SP_H__ 0x3e
+ #endif
+ 
+ #define __SP_L__  0x3d
+ #define __RAMPZ__ 0x3B
+ #define __EIND__  0x3C
+ #define __SREG__  0x3f
+ 
+ 
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ ;;; Helper macros.
+ 
+ ;;; REGNO sets symbol SYM to the register number of REG.
+ ;;; Valid REGs are: r0..r31, R0..R31 and XL, yh, ZH etc.
+ ;;; Expressions that evaluate to a number can also be used.
+ .macro  REGNO sym, reg
+     ..regno.done = 0
+     ..regno = 0
+     .irp  name,                                                 \
+              r0,  r1,  r2,  r3,  r4,  r5,  r6,  r7,  r8,  r9,   \
+             r10, r11, r12, r13, r14, r15, r16, r17, r18, r19,   \
+             r20, r21, r22, r23, r24, r25, r26, r27, r28, r29,   \
+             r30, r31,                                           \
+              R0,  R1,  R2,  R3,  R4,  R5,  R6,  R7,  R8,  R9,   \
+             R10, R11, R12, R13, R14, R15, R16, R17, R18, R19,   \
+             R20, R21, R22, R23, R24, R25, R26, R27, R28, R29,   \
+             R30, R31
+         .ifc  \name,\reg
+             \sym = ..regno % 32
+             ..regno.done = 1
+         .endif
+         ..regno = ..regno + 1
+     .endr
+ 
+     ..regno = 0
+     .irp  name,                       \
+             xl, xh, yl, yh, zl, zh,   \
+             Xl, Xh, Yl, Yh, Zl, Zh,   \
+             xL, xH, yL, yH, zL, zH,   \
+             XL, XH, YL, YH, ZL, ZH,   \
+             x,  xh, y,  yh, z,  zh,   \
+             X,  XH, Y,  YH, Z,  ZH
+         .ifc  \name,\reg
+             \sym = 26 + ..regno % 6
+             ..regno.done = 1
+         .endif
+         ..regno = ..regno + 1
+     .endr
+ 
+     .if ! ..regno.done
+         ;; Assume that \reg is some valid numeric expression.
+         \sym = \reg
+     .endif
+ .endm
+ 
+ 
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ ;;; Definitions to factor out different ISAs.
+ 
+ #if defined (__AVR_HAVE_JMP_CALL__)
+ #define XCALL call
+ #define XJMP  jmp
+ #else
+ #define XCALL rcall
+ #define XJMP  rjmp
+ #endif
+ 
+ #if defined (__AVR_HAVE_EIJMP_EICALL__)
+ #define XICALL eicall
+ #define XIJMP  eijmp
+ #define PC_SIZE 3
+ #else
+ #define XICALL icall
+ #define XIJMP  ijmp
+ #define PC_SIZE 2
+ #endif
+ 
+ 
+ ;;; Like MOVW
+ #ifdef __AVR_HAVE_MOVW__
+ #define wmov movw
+ #else
+ .macro  wmov  dst, src
+     REGNO ..wmov.dst, \dst
+     REGNO ..wmov.src, \src
+     mov   ..wmov.dst+0, ..wmov.src+0
+     mov   ..wmov.dst+1, ..wmov.src+1
+ .endm
+ #endif /* __AVR_HAVE_MOVW__ */
+ 
+ 
+ ;;; Like SBIW, ADIW
+ #ifdef __AVR_HAVE_ADIW__
+ #define waddi adiw
+ #define wsubi sbiw
+ #else
+ .macro  wsubi  reg, arg
+     REGNO ..wsubi.reg, \reg
+     subi  ..wsubi.reg+0, lo8 (\arg)
+     sbci  ..wsubi.reg+1, hi8 (\arg)
+ .endm
+ 
+ .macro  waddi  reg, arg
+     REGNO ..waddi.reg, \reg
+     subi  ..waddi.reg+0, lo8 (-(\arg))
+     sbci  ..waddi.reg+1, hi8 (-(\arg))
+ .endm
+ #endif /* __AVR_HAVE_ADIW__ */
+ 
+ 
+ ;;; [R]JMP to label LABL when REG is positive (REG.7 = 0).
+ ;;; Otherwise, fallthrough.
+ .macro  .branch_plus  reg, labl
+ #ifdef __AVR_ERRATA_SKIP_JMP_CALL__
+     ;; Some cores have a problem skipping 2-word instructions.
+     tst     \reg
+     brmi    .L.branch_plus.\@
+ #else
+     sbrs    \reg, 7
+ #endif /* skip erratum */
+     XJMP    \labl
+ .L.branch_plus.\@:
+ .endm ; .branch_plus
+ 
+ 
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ ;;; Macros for convenience.
+ 
+ ;; Skip the next instruction, typically a jump target.
+ #define skip cpse 16,16
+ 
+ 
+ .macro  mov4  dst, src
+     REGNO ..mov4.dst, \dst
+     REGNO ..mov4.src, \src
+     .if ..mov4.dst < ..mov4.src
+         wmov    ..mov4.dst+0, ..mov4.src+0
+         wmov    ..mov4.dst+2, ..mov4.src+2
+     .else
+         wmov    ..mov4.dst+2, ..mov4.src+2
+         wmov    ..mov4.dst+0, ..mov4.src+0
+     .endif
+ .endm
+ 
+ 
+ ;; Negate a 2-byte value held in consecutive registers.
+ .macro  NEG2  reg
+     com     \reg+1
+     neg     \reg
+     sbci    \reg+1, -1
+ .endm
+ 
+ 
+ ;; Negate a 4-byte value held in consecutive registers.
+ ;; Sets the V flag for signed overflow tests if REG >= 16.
+ .macro  NEG4  reg
+     com     \reg+3
+     com     \reg+2
+     com     \reg+1
+ .if \reg >= 16
+     neg     \reg
+     sbci    \reg+1, -1
+     sbci    \reg+2, -1
+     sbci    \reg+3, -1
+ .else
+     com     \reg
+     adc     \reg,   __zero_reg__
+     adc     \reg+1, __zero_reg__
+     adc     \reg+2, __zero_reg__
+     adc     \reg+3, __zero_reg__
+ .endif
+ .endm
+ 
+ 
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ ;; Function entry and exit.
+ 
+ .macro DEFUN name
+     .global \name
+     .func \name
+     \name:
+ .endm
+ 
+ .macro ENDF name
+     .size \name, .-\name
+     .endfunc
+ .endm
+ 
+ .macro FALIAS name
+     .global \name
+     .func \name
+     \name:
+     .size \name, .-\name
+     .endfunc
+ .endm
+ 
+ 
+ #ifndef __AVR_TINY__
+ 
+ ;;; Convenience macro for easy use of __prologue_saves__.
+ ;;; Push the N_PUSHED callee-saved registers  Y, R17, R16, R15, ...
+ ;;; with 0 <= N_PUSHED <= 18.  The frame pointer (Y) is set up according
+ ;;; to a frame size of N_FRAME.  Clobbers TMP_REG.  Does not clobber T.
+ .macro do_prologue_saves n_pushed n_frame=0
+     ldi     r26, lo8 (\n_frame)
+     ldi     r27, hi8 (\n_frame)
+     ldi     r30, lo8 (gs(.L_prologue_saves.\@))
+     ldi     r31, hi8 (gs(.L_prologue_saves.\@))
+     XJMP __prologue_saves__ + ((18 - (\n_pushed)) * 2)
+ .L_prologue_saves.\@:
+ .endm
+ 
+ ;;; Convenience macro for easy use of __epilogue_restores__.
+ ;;; Undo the effect of __prologue_saves__.  Clobbers TMP_REG.
+ .macro do_epilogue_restores n_pushed n_frame=0
+     in      r28, __SP_L__
+ #ifdef __AVR_HAVE_SPH__
+     in      r29, __SP_H__
+ .if \n_frame > 63
+     subi    r28, lo8 (-(\n_frame))
+     sbci    r29, hi8 (-(\n_frame))
+ .elseif \n_frame > 0
+     adiw    r28, \n_frame
+ .endif
+ #else
+     clr     r29
+ .if \n_frame > 0
+     subi    r28, lo8 (-(\n_frame))
+ .endif
+ #endif /* HAVE SPH */
+     ldi     r30, \n_pushed
+     XJMP __epilogue_restores__ + ((18 - (\n_pushed)) * 2)
+ .endm
+ 
+ #endif /* AVR_TINY */
diff -Nrcpad gcc-17-20260607/libgcc/config/avr/lib1funcs-fixed.S gcc-17-20260614/libgcc/config/avr/lib1funcs-fixed.S
*** gcc-17-20260607/libgcc/config/avr/lib1funcs-fixed.S	Sun Jun  7 22:32:14 2026
--- gcc-17-20260614/libgcc/config/avr/lib1funcs-fixed.S	Sun Jun 14 22:32:15 2026
*************** DEFUN  __rounduha3
*** 1598,1604 ****
      ;; [ R25:R24  = 1 << (FBIT-1 - RP)
      ;;   R23:R22 += 1 << (FBIT-1 - RP) ]
      XCALL   __addmask_2
!     XJMP    __round_u2_const 
  ENDF  __rounduha3
  
  #endif /* L_round_u2 */
--- 1598,1604 ----
      ;; [ R25:R24  = 1 << (FBIT-1 - RP)
      ;;   R23:R22 += 1 << (FBIT-1 - RP) ]
      XCALL   __addmask_2
!     XJMP    __round_u2_const
  ENDF  __rounduha3
  
  #endif /* L_round_u2 */
*************** DEFUN __round_u2_const
*** 1627,1633 ****
      ;; C[] = 2^{-RP}
      lsl     C0
      rol     C1
!     ;;      
      NEG2    C0
      ;; Clear the bits beyond the rounding point.
      and     C0, A0
--- 1627,1633 ----
      ;; C[] = 2^{-RP}
      lsl     C0
      rol     C1
!     ;;
      NEG2    C0
      ;; Clear the bits beyond the rounding point.
      and     C0, A0
*************** DEFUN  __roundusa3
*** 1717,1723 ****
      ;; [ R25:R22  = 1 << (FBIT-1 - RP)
      ;;   R21:R18 += 1 << (FBIT-1 - RP) ]
      XCALL   __addmask_4
!     XJMP    __round_u4_const 
  ENDF  __roundusa3
  
  #endif /* L_round_u4 */
--- 1717,1723 ----
      ;; [ R25:R22  = 1 << (FBIT-1 - RP)
      ;;   R21:R18 += 1 << (FBIT-1 - RP) ]
      XCALL   __addmask_4
!     XJMP    __round_u4_const
  ENDF  __roundusa3
  
  #endif /* L_round_u4 */
diff -Nrcpad gcc-17-20260607/libgcc/config/avr/lib1funcs.S gcc-17-20260614/libgcc/config/avr/lib1funcs.S
*** gcc-17-20260607/libgcc/config/avr/lib1funcs.S	Sun Jun  7 22:32:14 2026
--- gcc-17-20260614/libgcc/config/avr/lib1funcs.S	Sun Jun 14 22:32:15 2026
*************** a copy of the GCC Runtime Library Except
*** 21,222 ****
  see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  <http://www.gnu.org/licenses/>.  */
  
! #if defined (__AVR_TINY__)
! #define __zero_reg__ r17
! #define __tmp_reg__ r16
! #else
! #define __zero_reg__ r1
! #define __tmp_reg__ r0
! #endif
! #define __SREG__ 0x3f
! #if defined (__AVR_HAVE_SPH__)
! #define __SP_H__ 0x3e
! #endif
! #define __SP_L__ 0x3d
! #define __RAMPZ__ 0x3B
! #define __EIND__  0x3C
  
  /* Most of the functions here are called directly from avr.md
     patterns, instead of using the standard libcall mechanisms.
     This can make better code because GCC knows exactly which
!    of the call-used registers (not all of them) are clobbered.  */
! 
! /* FIXME:  At present, there is no SORT directive in the linker
!            script so that we must not assume that different modules
!            in the same input section like .libgcc.text.mul will be
!            located close together.  Therefore, we cannot use
!            RCALL/RJMP to call a function like __udivmodhi4 from
!            __divmodhi4 and have to use lengthy XCALL/XJMP even
!            though they are in the same input section and all same
!            input sections together are small enough to reach every
!            location with a RCALL/RJMP instruction.  */
  
  #if defined (__AVR_HAVE_EIJMP_EICALL__) && !defined (__AVR_HAVE_ELPMX__)
  #error device not supported
  #endif
  
- 	.macro	mov_l  r_dest, r_src
- #if defined (__AVR_HAVE_MOVW__)
- 	movw	\r_dest, \r_src
- #else
- 	mov	\r_dest, \r_src
- #endif
- 	.endm
- 
- 	.macro	mov_h  r_dest, r_src
- #if defined (__AVR_HAVE_MOVW__)
- 	; empty
- #else
- 	mov	\r_dest, \r_src
- #endif
- 	.endm
- 
- .macro	wmov  r_dest, r_src
- #if defined (__AVR_HAVE_MOVW__)
-     movw \r_dest,   \r_src
- #else
-     mov \r_dest,    \r_src
-     mov \r_dest+1,  \r_src+1
- #endif
- .endm
- 
- .macro	mov4  r_dest, r_src
-     wmov \r_dest,   \r_src
-     wmov \r_dest+2, \r_src+2
- .endm
- 
- #if defined (__AVR_HAVE_JMP_CALL__)
- #define XCALL call
- #define XJMP  jmp
- #else
- #define XCALL rcall
- #define XJMP  rjmp
- #endif
- 
- #if defined (__AVR_HAVE_EIJMP_EICALL__)
- #define XICALL eicall
- #define XIJMP  eijmp
- #else
- #define XICALL icall
- #define XIJMP  ijmp
- #endif
- 
- ;;; [R]JMP to label \labl when \reg is positive (\reg.7 = 0).
- ;;; Otherwise, fallthrough.
- .macro  .branch_plus    reg, labl
- #ifdef __AVR_ERRATA_SKIP_JMP_CALL__
-     ;; Some cores have a problem skipping 2-word instructions
-     tst     \reg
-     brmi    .L..\@
- #else
-     sbrs    \reg, 7
- #endif /* skip erratum */
-     XJMP    \labl
- .L..\@:
- .endm ; .branch_plus
- 
- ;; Prologue stuff
- 
- .macro do_prologue_saves n_pushed n_frame=0
-     ldi r26, lo8(\n_frame)
-     ldi r27, hi8(\n_frame)
-     ldi r30, lo8(gs(.L_prologue_saves.\@))
-     ldi r31, hi8(gs(.L_prologue_saves.\@))
-     XJMP __prologue_saves__ + ((18 - (\n_pushed)) * 2)
- .L_prologue_saves.\@:
- .endm
- 
- ;; Epilogue stuff
- 
- .macro do_epilogue_restores n_pushed n_frame=0
-     in      r28, __SP_L__
- #ifdef __AVR_HAVE_SPH__
-     in      r29, __SP_H__
- .if \n_frame > 63
-     subi    r28, lo8(-\n_frame)
-     sbci    r29, hi8(-\n_frame)
- .elseif \n_frame > 0
-     adiw    r28, \n_frame
- .endif
- #else
-     clr     r29
- .if \n_frame > 0
-     subi    r28, lo8(-\n_frame)
- .endif
- #endif /* HAVE SPH */
-     ldi     r30, \n_pushed
-     XJMP __epilogue_restores__ + ((18 - (\n_pushed)) * 2)
- .endm
- 
- ;; Support function entry and exit for convenience
- 
- .macro wsubi r_arg1, i_arg2
- #if defined (__AVR_TINY__)
-     subi \r_arg1,   lo8(\i_arg2)
-     sbci \r_arg1+1, hi8(\i_arg2)
- #else
-     sbiw \r_arg1, \i_arg2
- #endif
- .endm
- 
- .macro waddi r_arg1, i_arg2
- #if defined (__AVR_TINY__)
-     subi \r_arg1,   lo8(-\i_arg2)
-     sbci \r_arg1+1, hi8(-\i_arg2)
- #else
-     adiw \r_arg1, \i_arg2
- #endif
- .endm
- 
- .macro DEFUN name
- .global \name
- .func \name
- \name:
- .endm
- 
- .macro ENDF name
- .size \name, .-\name
- .endfunc
- .endm
- 
- .macro FALIAS name
- .global \name
- .func \name
- \name:
- .size \name, .-\name
- .endfunc
- .endm
- 
- ;; Skip next instruction, typically a jump target
- #define skip cpse 16,16
- 
- ;; Negate a 2-byte value held in consecutive registers
- .macro NEG2  reg
-     com     \reg+1
-     neg     \reg
-     sbci    \reg+1, -1
- .endm
- 
- ;; Negate a 4-byte value held in consecutive registers
- ;; Sets the V flag for signed overflow tests if REG >= 16
- .macro NEG4  reg
-     com     \reg+3
-     com     \reg+2
-     com     \reg+1
- .if \reg >= 16
-     neg     \reg
-     sbci    \reg+1, -1
-     sbci    \reg+2, -1
-     sbci    \reg+3, -1
- .else
-     com     \reg
-     adc     \reg,   __zero_reg__
-     adc     \reg+1, __zero_reg__
-     adc     \reg+2, __zero_reg__
-     adc     \reg+3, __zero_reg__
- .endif
- .endm
- 
  #define exp_lo(N)  hlo8 ((N) << 23)
  #define exp_hi(N)  hhi8 ((N) << 23)
  
--- 21,38 ----
  see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  <http://www.gnu.org/licenses/>.  */
  
! #include "asm-defs.h"
  
  /* Most of the functions here are called directly from avr.md
     patterns, instead of using the standard libcall mechanisms.
     This can make better code because GCC knows exactly which
!    of the call-used registers (not all of them) are clobbered.
!    Some functions are using a non-ABI interface.  */
  
  #if defined (__AVR_HAVE_EIJMP_EICALL__) && !defined (__AVR_HAVE_ELPMX__)
  #error device not supported
  #endif
  
  #define exp_lo(N)  hlo8 ((N) << 23)
  #define exp_hi(N)  hhi8 ((N) << 23)
  
*************** __mulqi3_loop:
*** 244,250 ****
  	breq	__mulqi3_exit	; while multiplicand != 0
  	lsr	r_arg1		;
  	brne	__mulqi3_loop	; exit if multiplier = 0
! __mulqi3_exit:	
  	mov	r_arg1,r_res	; result to return register
  	ret
  ENDF __mulqi3
--- 60,66 ----
  	breq	__mulqi3_exit	; while multiplicand != 0
  	lsr	r_arg1		;
  	brne	__mulqi3_loop	; exit if multiplier = 0
! __mulqi3_exit:
  	mov	r_arg1,r_res	; result to return register
  	ret
  ENDF __mulqi3
*************** ENDF __mulqi3
*** 252,258 ****
  #undef r_arg2
  #undef r_arg1
  #undef r_res
! 	
  #endif 	/* defined (L_mulqi3) */
  
  
--- 68,74 ----
  #undef r_arg2
  #undef r_arg1
  #undef r_res
! 
  #endif 	/* defined (L_mulqi3) */
  
  
*************** ENDF __mulhisi3
*** 457,472 ****
  #if defined (L_mulsi3)
  DEFUN __mulsi3
  #if defined (__AVR_TINY__)
!     in     r26, __SP_L__ ; safe to use X, as it is CC0/CC1
!     in     r27, __SP_H__
!     subi   r26, lo8(-3)   ; Add 3 to point past return address
!     sbci   r27, hi8(-3)
!     push   B0    ; save callee saved regs
!     push   B1
!     ld     B0, X+   ; load from caller stack
!     ld     B1, X+
!     ld     B2, X+
!     ld     B3, X
  #endif
      ;; Clear result
      clr     CC2
--- 273,287 ----
  #if defined (L_mulsi3)
  DEFUN __mulsi3
  #if defined (__AVR_TINY__)
!     in       r26, __SP_L__      ; Safe to use X, as it is CC0/CC1.
!     in       r27, __SP_H__
!     waddi    r26, 1 + PC_SIZE   ; Add 3 to point past return address.
!     push     B0                 ; Save callee saved regs.
!     push     B1
!     ld       B0, X+             ; Load from arg pointer.
!     ld       B1, X+
!     ld       B2, X+
!     ld       B3, X
  #endif
      ;; Clear result
      clr     CC2
*************** DEFUN __mulsi3_helper
*** 501,507 ****
      wmov    C2, CC2
  #if defined (__AVR_TINY__)
      pop     B1      ; restore callee saved regs
!     pop     B0 
  #endif  /* defined (__AVR_TINY__) */
  
      ret
--- 316,322 ----
      wmov    C2, CC2
  #if defined (__AVR_TINY__)
      pop     B1      ; restore callee saved regs
!     pop     B0
  #endif  /* defined (__AVR_TINY__) */
  
      ret
*************** ENDF __umulhisi3
*** 615,628 ****
  ;;; (C3:C0) = (signed long) A1:A0   * B3:B0
  ;;; Clobbers: __tmp_reg__
  DEFUN __mulshisi3
! #ifdef __AVR_ERRATA_SKIP_JMP_CALL__
!     ;; Some cores have problem skipping 2-word instruction
!     tst     A1
!     brmi    __mulohisi3
! #else
!     sbrs    A1, 7
! #endif /* __AVR_HAVE_JMP_CALL__ */
!     XJMP    __muluhisi3
      ;; FALLTHRU
  ENDF __mulshisi3
  
--- 430,436 ----
  ;;; (C3:C0) = (signed long) A1:A0   * B3:B0
  ;;; Clobbers: __tmp_reg__
  DEFUN __mulshisi3
!     .branch_plus A1, __muluhisi3
      ;; FALLTHRU
  ENDF __mulshisi3
  
*************** ENDF __mulpsi3
*** 760,774 ****
  
  DEFUN __mulpsi3
  #if defined (__AVR_TINY__)
!     in r26,__SP_L__ 
!     in r27,__SP_H__
!     subi r26, lo8(-3)   ; Add 3 to point past return address
!     sbci r27, hi8(-3)
!     push B0    ; save callee saved regs
!     push B1
!     ld B0,X+   ; load from caller stack 
!     ld B1,X+
!     ld B2,X+
  #endif /* defined (__AVR_TINY__) */
  
      ;; C[] = 0
--- 568,581 ----
  
  DEFUN __mulpsi3
  #if defined (__AVR_TINY__)
!     in      r26, __SP_L__
!     in      r27, __SP_H__
!     waddi   r26, 1 + PC_SIZE    ; Add 3 to point past return address.
!     push    B0                  ; Save callee saved regs.
!     push    B1
!     ld      B0, X+              ; Load from arg pointer.
!     ld      B1, X+
!     ld      B2, X+
  #endif /* defined (__AVR_TINY__) */
  
      ;; C[] = 0
*************** ENDF __muldi3
*** 1119,1133 ****
  
  #if defined (__AVR_HAVE_MUL__)
  #define A0 r22
! #define A1 r23 
  #define A2 r24
  #define A3 r25
!  
  #define B0 r18
  #define B1 r19
  #define B2 r20
  #define B3 r21
!  
  #define C0  18
  #define C1  C0+1
  #define C2  20
--- 926,940 ----
  
  #if defined (__AVR_HAVE_MUL__)
  #define A0 r22
! #define A1 r23
  #define A2 r24
  #define A3 r25
! 
  #define B0 r18
  #define B1 r19
  #define B2 r20
  #define B3 r21
! 
  #define C0  18
  #define C1  C0+1
  #define C2  20
*************** ENDF __umulsidi3
*** 1349,1355 ****
  #endif /* L_mulsidi3 && !HAVE_MUL */
  #endif /* if not __AVR_TINY__ */
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
! 	
  
  .section .text.libgcc.div, "ax", @progbits
  
--- 1156,1162 ----
  #endif /* L_mulsidi3 && !HAVE_MUL */
  #endif /* if not __AVR_TINY__ */
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
! 
  
  .section .text.libgcc.div, "ax", @progbits
  
*************** ENDF __divmodqi4
*** 1405,1412 ****
  #undef r_arg1
  #undef r_arg2
  #undef r_cnt
! 	
! 		
  /*******************************************************
         Division 16 / 16 => (result + remainder)
  *******************************************************/
--- 1212,1219 ----
  #undef r_arg1
  #undef r_arg2
  #undef r_cnt
! 
! 
  /*******************************************************
         Division 16 / 16 => (result + remainder)
  *******************************************************/
*************** ENDF __divmodqi4
*** 1420,1426 ****
  /* return: quotient */
  #define	r_arg2L	r22	/* divisor Low */
  #define	r_arg2H	r23	/* divisor High */
! 	
  #define	r_cnt	r21	/* loop count */
  
  #if defined (L_udivmodhi4)
--- 1227,1233 ----
  /* return: quotient */
  #define	r_arg2L	r22	/* divisor Low */
  #define	r_arg2H	r23	/* divisor High */
! 
  #define	r_cnt	r21	/* loop count */
  
  #if defined (L_udivmodhi4)
*************** __udivmodhi4_ep:
*** 1445,1454 ****
  	com	r_arg1L
  	com	r_arg1H
  ; div/mod results to return registers, as for the div() function
! 	mov_l	r_arg2L, r_arg1L	; quotient
! 	mov_h	r_arg2H, r_arg1H
! 	mov_l	r_arg1L, r_remL		; remainder
! 	mov_h	r_arg1H, r_remH
  	ret
  ENDF __udivmodhi4
  #endif /* defined (L_udivmodhi4) */
--- 1252,1259 ----
  	com	r_arg1L
  	com	r_arg1H
  ; div/mod results to return registers, as for the div() function
! 	wmov	r_arg2L, r_arg1L	; quotient
! 	wmov	r_arg1L, r_remL		; remainder
  	ret
  ENDF __udivmodhi4
  #endif /* defined (L_udivmodhi4) */
*************** ENDF __divmodhi4
*** 1493,1500 ****
  
  #undef r_arg2H
  #undef r_arg2L
!              	
! #undef r_cnt   	
  
  /*******************************************************
         Division 24 / 24 => (result + remainder)
--- 1298,1305 ----
  
  #undef r_arg2H
  #undef r_arg2L
! 
! #undef r_cnt
  
  /*******************************************************
         Division 24 / 24 => (result + remainder)
*************** ENDF __divmodpsi4
*** 1650,1656 ****
  #define	r_arg2HL r20
  #define	r_arg2H  r19
  #define	r_arg2L  r18	/* divisor Low */
! 	
  #define	r_cnt __zero_reg__  /* loop count (0 after the loop!) */
  
  #if defined (L_udivmodsi4)
--- 1455,1461 ----
  #define	r_arg2HL r20
  #define	r_arg2H  r19
  #define	r_arg2L  r18	/* divisor Low */
! 
  #define	r_cnt __zero_reg__  /* loop count (0 after the loop!) */
  
  #if defined (L_udivmodsi4)
*************** DEFUN __udivmodsi4
*** 1659,1666 ****
  	mov	r_cnt, r_remL
  	sub	r_remL,r_remL
  	sub	r_remH,r_remH	; clear remainder and carry
! 	mov_l	r_remHL, r_remL
! 	mov_h	r_remHH, r_remH
  	rjmp	__udivmodsi4_ep	; jump to entry point
  __udivmodsi4_loop:
          rol	r_remL		; shift dividend into remainder
--- 1464,1470 ----
  	mov	r_cnt, r_remL
  	sub	r_remL,r_remL
  	sub	r_remH,r_remH	; clear remainder and carry
! 	wmov	r_remHL, r_remL
  	rjmp	__udivmodsi4_ep	; jump to entry point
  __udivmodsi4_loop:
          rol	r_remL		; shift dividend into remainder
*************** __udivmodsi4_ep:
*** 1689,1702 ****
  	com	r_arg1HL
  	com	r_arg1HH
  ; div/mod results to return registers, as for the ldiv() function
! 	mov_l	r_arg2L,  r_arg1L	; quotient
! 	mov_h	r_arg2H,  r_arg1H
! 	mov_l	r_arg2HL, r_arg1HL
! 	mov_h	r_arg2HH, r_arg1HH
! 	mov_l	r_arg1L,  r_remL	; remainder
! 	mov_h	r_arg1H,  r_remH
! 	mov_l	r_arg1HL, r_remHL
! 	mov_h	r_arg1HH, r_remHH
  	ret
  ENDF __udivmodsi4
  #endif /* defined (L_udivmodsi4) */
--- 1493,1502 ----
  	com	r_arg1HL
  	com	r_arg1HH
  ; div/mod results to return registers, as for the ldiv() function
! 	wmov	r_arg2L,  r_arg1L	; quotient
! 	wmov	r_arg2HL, r_arg1HL
! 	wmov	r_arg1L,  r_remL	; remainder
! 	wmov	r_arg1HL, r_remHL
  	ret
  ENDF __udivmodsi4
  #endif /* defined (L_udivmodsi4) */
*************** DEFUN __epilogue_restores__
*** 2277,2284 ****
  	out	__SP_H__,r29
  	out	__SREG__,__tmp_reg__
  	out	__SP_L__,r28
! 	mov_l	r28, r26
! 	mov_h	r29, r27
  #endif /* #SP = 8/16 */
  	ret
  ENDF __epilogue_restores__
--- 2077,2083 ----
  	out	__SP_H__,r29
  	out	__SREG__,__tmp_reg__
  	out	__SP_L__,r28
! 	wmov	r28, r26
  #endif /* #SP = 8/16 */
  	ret
  ENDF __epilogue_restores__
*************** DEFUN __tablejump2__
*** 2353,2359 ****
      wsubi 30, -(__AVR_TINY_PM_BASE_ADDRESS__) ; Add PM offset to Z
      ld __tmp_reg__, Z+
      ld r31, Z   ; Use ld instead of lpm to load Z
!     mov r30, __tmp_reg__    
      ijmp
  #else
      lpm
--- 2152,2158 ----
      wsubi 30, -(__AVR_TINY_PM_BASE_ADDRESS__) ; Add PM offset to Z
      ld __tmp_reg__, Z+
      ld r31, Z   ; Use ld instead of lpm to load Z
!     mov r30, __tmp_reg__
      ijmp
  #else
      lpm
*************** DEFUN __do_global_ctors
*** 2496,2503 ****
      sbc     r16, __zero_reg__
      mov     r24, r16
  #endif /* HAVE_EIJMP */
!     mov_h   r31, r29
!     mov_l   r30, r28
      XCALL   __tablejump2__
  .L__do_global_ctors_start:
      cpi     r28, pm_lo8(__ctors_start)
--- 2295,2301 ----
      sbc     r16, __zero_reg__
      mov     r24, r16
  #endif /* HAVE_EIJMP */
!     wmov    r30, r28
      XCALL   __tablejump2__
  .L__do_global_ctors_start:
      cpi     r28, pm_lo8(__ctors_start)
*************** DEFUN __do_global_dtors
*** 2524,2531 ****
  #ifdef __AVR_HAVE_EIJMP_EICALL__
      mov     r24, r16
  #endif /* HAVE_EIJMP */
!     mov_h   r31, r29
!     mov_l   r30, r28
      XCALL   __tablejump2__
      waddi   28, 1
  #ifdef __AVR_HAVE_EIJMP_EICALL__
--- 2322,2328 ----
  #ifdef __AVR_HAVE_EIJMP_EICALL__
      mov     r24, r16
  #endif /* HAVE_EIJMP */
!     wmov    r30, r28
      XCALL   __tablejump2__
      waddi   28, 1
  #ifdef __AVR_HAVE_EIJMP_EICALL__
*************** ENDF __fload_4
*** 2764,2777 ****
  #if !defined (__AVR_TINY__)
  #if defined (L_strlen_memx)
  DEFUN __strlen_memx
! #ifdef __AVR_ERRATA_SKIP_JMP_CALL__
!     tst     r24
!     brmi 1f
! #else
!     sbrs    r24, 7
! #endif
!     XJMP    strlen_PF           ; AVR-LibC
! 1:  wmov    24, 22
      XJMP    strlen              ; AVR-LibC
  ENDF __strlen_memx
  #endif /* L_strlen_memx */
--- 2561,2568 ----
  #if !defined (__AVR_TINY__)
  #if defined (L_strlen_memx)
  DEFUN __strlen_memx
!     .branch_plus r24, strlen_PF ; AVR-LibC
!     wmov    24, 22
      XJMP    strlen              ; AVR-LibC
  ENDF __strlen_memx
  #endif /* L_strlen_memx */
*************** ENDF __movmemf_hi
*** 2872,2878 ****
  #undef LOOP
  
  #endif /* L_movmemf */
! #endif /* !defined (__AVR_TINY__) */ 
  
  
  .section .text.libgcc.builtins, "ax", @progbits
--- 2663,2669 ----
  #undef LOOP
  
  #endif /* L_movmemf */
! #endif /* !defined (__AVR_TINY__) */
  
  
  .section .text.libgcc.builtins, "ax", @progbits
*************** DEFUN __clzdi2
*** 2984,2993 ****
      XCALL __clzsi2
      sbrs r24, 5
      ret
!     mov_l r22, r18
!     mov_h r23, r19
!     mov_l r24, r20
!     mov_h r25, r21
      XCALL __clzsi2
      subi r24, -32
      ret
--- 2775,2782 ----
      XCALL __clzsi2
      sbrs r24, 5
      ret
!     wmov r22, r18
!     wmov r24, r20
      XCALL __clzsi2
      subi r24, -32
      ret
*************** DEFUN __clzsi2
*** 3002,3009 ****
      XCALL __clzhi2
      sbrs r24, 4
      ret
!     mov_l r24, r22
!     mov_h r25, r23
      XCALL __clzhi2
      subi r24, -16
      ret
--- 2791,2797 ----
      XCALL __clzhi2
      sbrs r24, 4
      ret
!     wmov r24, r22
      XCALL __clzhi2
      subi r24, -16
      ret
*************** ENDF __popcounthi2_tail
*** 3124,3131 ****
  DEFUN __popcountsi2
      XCALL __popcounthi2
      push  r24
!     mov_l r24, r22
!     mov_h r25, r23
      XCALL __popcounthi2
      XJMP  __popcounthi2_tail
  ENDF __popcountsi2
--- 2912,2918 ----
  DEFUN __popcountsi2
      XCALL __popcounthi2
      push  r24
!     wmov  r24, r22
      XCALL __popcounthi2
      XJMP  __popcounthi2_tail
  ENDF __popcountsi2
*************** ENDF __popcountsi2
*** 3138,3147 ****
  DEFUN __popcountdi2
      XCALL __popcountsi2
      push  r24
!     mov_l r22, r18
!     mov_h r23, r19
!     mov_l r24, r20
!     mov_h r25, r21
      XCALL __popcountsi2
      XJMP  __popcounthi2_tail
  ENDF __popcountdi2
--- 2925,2932 ----
  DEFUN __popcountdi2
      XCALL __popcountsi2
      push  r24
!     wmov  r22, r18
!     wmov  r24, r20
      XCALL __popcountsi2
      XJMP  __popcounthi2_tail
  ENDF __popcountdi2
*************** DEFUN __fmulsu_exit
*** 3433,3447 ****
      ;; A1 = |A1|
      sbrc A1, 7
      neg  A1
! #ifdef __AVR_ERRATA_SKIP_JMP_CALL__
!     ;; Some cores have problem skipping 2-word instruction
!     tst  A0
!     brmi 1f
! #else
!     sbrs A0, 7
! #endif /* __AVR_HAVE_JMP_CALL__ */
!     XJMP  __fmul
! 1:  XCALL __fmul
      ;; C = -C iff A0.7 = 1
      NEG2 C0
      ret
--- 3218,3225 ----
      ;; A1 = |A1|
      sbrc A1, 7
      neg  A1
!     .branch_plus A0, __fmul
!     XCALL __fmul
      ;; C = -C iff A0.7 = 1
      NEG2 C0
      ret
diff -Nrcpad gcc-17-20260607/libgcc/config/avr/libf7/ChangeLog gcc-17-20260614/libgcc/config/avr/libf7/ChangeLog
*** gcc-17-20260607/libgcc/config/avr/libf7/ChangeLog	Sun Jun  7 22:32:14 2026
--- gcc-17-20260614/libgcc/config/avr/libf7/ChangeLog	Sun Jun 14 22:32:15 2026
***************
*** 1,3 ****
--- 1,29 ----
+ 2026-06-13  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* asm-defs.h (REGNO): New .macro.
+ 	(wmov): Use it.
+ 	(do_epilogue_restores) <\n_frame>: Put in () where needed.
+ 
+ 2026-06-11  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* libf7.c (__floatdidf, __floatundidf): Minor tweak.
+ 
+ 2026-06-11  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/125752
+ 	* libf7-asm.sx (ufx64_to_d, d_to_fx64): New DEFUNs.
+ 	(__fractdadf, __fractudadf, __fracttadf, __fractutadf)
+ 	(__fractdqdf, __fractudqdf): New _DEFUNs.
+ 	* libf7-common.mk (F7_ASM_PARTS) Add: fx2D, D2fx,
+ 	dq2D, udq2D, da2D, uda2D, ta2D uta2D.
+ 	(F7F): Add d_to_fx64, ufx64_to_d, sfx64_to_d.
+ 	* libf7.c (d_to_ufx, d_to_sfx): New protos.
+ 	(__fractdfda, __fractdfuda, __fractdfta, __fractdfuta)
+ 	(__fractdfdq, __fractdfudq): New modules.
+ 	* t-libf7 (LIBF7_DF_CONV): Add fractdfda,
+ 	fractdfta, fractdfdq, fractdfuda, fractdfuta, fractdfudq.
+ 	* f7-renames.h: Rebuild.
+ 
  2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
  
  	* libf7.c (f7_addsub): Likewise.
diff -Nrcpad gcc-17-20260607/libgcc/config/avr/libf7/asm-defs.h gcc-17-20260614/libgcc/config/avr/libf7/asm-defs.h
*** gcc-17-20260607/libgcc/config/avr/libf7/asm-defs.h	Sun Jun  7 22:32:14 2026
--- gcc-17-20260614/libgcc/config/avr/libf7/asm-defs.h	Sun Jun 14 22:32:15 2026
***************
*** 30,35 ****
--- 30,38 ----
  /* Stuff for Assembler-only                                      */
  /*****************************************************************/
  
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ ;;; Definitions for common SFRs and fixed registers.
+ 
  #if defined (__AVR_TINY__)
      #define __tmp_reg__  16
      #define __zero_reg__ 17
***************
*** 44,67 ****
  #define __SP_H__ 0x3e
  #endif
  
! #if !defined ASM_DEFS_HAVE_DEFUN
! .macro DEFUN name
!     .global \name
!     .func \name
!     \name:
! .endm
  
! .macro ENDF name
!     .size \name, .-\name
!     .endfunc
! .endm
  
! .macro LABEL name
!     .global \name
!     \name:
  .endm
- #endif /* HAVE_DEFUN */
  
  
  #if defined (__AVR_HAVE_JMP_CALL__)
      #define XCALL call
--- 47,100 ----
  #define __SP_H__ 0x3e
  #endif
  
! ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
! ;;; Helper macros.
  
! ;;; REGNO sets symbol SYM to the register number of REG.
! ;;; Valid REGs are: r0..r31, R0..R31 and XL, yh, ZH etc.
! ;;; Expressions that evaluate to a number can also be used.
! .macro  REGNO sym, reg
!     ..regno.done = 0
!     ..regno = 0
!     .irp  name,                                                 \
!              r0,  r1,  r2,  r3,  r4,  r5,  r6,  r7,  r8,  r9,   \
!             r10, r11, r12, r13, r14, r15, r16, r17, r18, r19,   \
!             r20, r21, r22, r23, r24, r25, r26, r27, r28, r29,   \
!             r30, r31,                                           \
!              R0,  R1,  R2,  R3,  R4,  R5,  R6,  R7,  R8,  R9,   \
!             R10, R11, R12, R13, R14, R15, R16, R17, R18, R19,   \
!             R20, R21, R22, R23, R24, R25, R26, R27, R28, R29,   \
!             R30, R31
!         .ifc  \name,\reg
!             \sym = ..regno % 32
!             ..regno.done = 1
!         .endif
!         ..regno = ..regno + 1
!     .endr
  
!     ..regno = 0
!     .irp  name,                       \
!             xl, xh, yl, yh, zl, zh,   \
!             Xl, Xh, Yl, Yh, Zl, Zh,   \
!             xL, xH, yL, yH, zL, zH,   \
!             XL, XH, YL, YH, ZL, ZH,   \
!             x,  xh, y,  yh, z,  zh,   \
!             X,  XH, Y,  YH, Z,  ZH
!         .ifc  \name,\reg
!             \sym = 26 + ..regno % 6
!             ..regno.done = 1
!         .endif
!         ..regno = ..regno + 1
!     .endr
! 
!     .if ! ..regno.done
!         ;; Assume that \reg is some valid numeric expression.
!         \sym = \reg
!     .endif
  .endm
  
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ ;;; Definitions to factor out different ISAs.
  
  #if defined (__AVR_HAVE_JMP_CALL__)
      #define XCALL call
***************
*** 81,167 ****
      #define PC_SIZE 2
  #endif
  
! .macro skipnext
!     cpse r16, r16
! .endm
! 
! /*
!     Factor out support of MOVW.  Usage is like
! 
!         wmov  30, 24
! 
!     to move R25:R24 to R31:R30, i.e. plain register numbers
!     are required and no register prefix 'R'.
! */
! 
! #if defined (__AVR_HAVE_MOVW__)
! #define wmov    movw
  #else
!     .macro  wmov dst src
!     ..dst = \dst
!     ..src = \src
!     ..regno = 0
!     .irp    reg,                                                \
!             r0,  r1,  r2,  r3,  r4,  r5,  r6,   r7,  r8,  r9,   \
!             r10, r11, r12, r13, r14, r15, r16, r17, r18, r19,   \
!             r20, r21, r22, r23, r24, r25, r26, r27, r28, r29,   \
!             r30, r31
!         .ifc  \reg,\dst
!             ..dst = ..regno
!         .endif
!         .ifc  \reg,\src
!             ..src = ..regno
!         .endif
!         ..regno = ..regno + 1
!     .endr
  
!     ..regno = 0
  
!     .irp    reg,                                                \
!             R0,  R1,  R2,  R3,  R4,  R5,  R6,   R7,  R8,  R9,   \
!             R10, R11, R12, R13, R14, R15, R16, R17, R18, R19,   \
!             R20, R21, R22, R23, R24, R25, R26, R27, R28, R29,   \
!             R30, R31
!         .ifc  \reg,\dst
!             ..dst = ..regno
!         .endif
!         .ifc  \reg,\src
!             ..src = ..regno
!         .endif
!         ..regno = ..regno + 1
!     .endr
  
!     ..regno = 0
  
!     .irp    reg,                        \
!             X, x, XL, xl, Xl, xL, x, x, \
!             Y, y, YL, yl, Yl, yL, y, y, \
!             Z, z, ZL, zl, Zl, zL, z, z
!         .ifc  \reg,\dst
!             ..dst = 2 * (..regno / 8) + 26
!         .endif
!         .ifc  \reg,\src
!             ..src = 2 * (..regno / 8) + 26
!         .endif
!         ..regno = ..regno + 1
!     .endr
  
!     mov     ..dst+0, ..src+0
!     mov     ..dst+1, ..src+1
!     .endm
! #endif /* MOVW */
  
  
  #if !defined (__AVR_TINY__)
- /*
-     Convenience macro for easy use of __prologue_saves__ from libgcc.
-     Push the N_PUSHED callee-saved registers  Y, R17, R16, R15, ...
-     with 0 <= N_PUSHED <= 18.  The frame pointer (Y) is set up according
-     to a frame size of N_FRAME.  Clobbers TMP_REG.
-     For the code of __prologue_saves__ from libgcc see
-     http://gcc.gnu.org/viewcvs/gcc/trunk/libgcc/config/avr/lib1funcs.S?revision=267494&view=markup#l2159
- */
  
  .macro do_prologue_saves n_pushed n_frame=0
      ldi r26, lo8(\n_frame)
      ldi r27, hi8(\n_frame)
--- 114,166 ----
      #define PC_SIZE 2
  #endif
  
! ;;; Like MOVW
! .macro  wmov  dst, src
!     REGNO ..wmov.dst, \dst
!     REGNO ..wmov.src, \src
! #ifdef __AVR_HAVE_MOVW__
!     movw  ..wmov.dst, ..wmov.src
  #else
!     mov   ..wmov.dst+0, ..wmov.src+0
!     mov   ..wmov.dst+1, ..wmov.src+1
! #endif /* __AVR_HAVE_MOVW__ */
! .endm
  
! ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
! ;;; Macros for convenience.
  
! .macro skipnext
!     cpse r16, r16
! .endm
  
! ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
! ;; Function entry and exit.
  
! #if !defined ASM_DEFS_HAVE_DEFUN
! .macro DEFUN name
!     .global \name
!     .func \name
!     \name:
! .endm
  
! .macro ENDF name
!     .size \name, .-\name
!     .endfunc
! .endm
  
+ .macro LABEL name
+     .global \name
+     .type   \name,@function
+     \name:
+ .endm
+ #endif /* HAVE_DEFUN */
  
  #if !defined (__AVR_TINY__)
  
+ ;;; Convenience macro for easy use of __prologue_saves__ from libgcc.
+ ;;; Push the N_PUSHED callee-saved registers  Y, R17, R16, R15, ...
+ ;;; with 0 <= N_PUSHED <= 18.  The frame pointer (Y) is set up according
+ ;;; to a frame size of N_FRAME.  Clobbers TMP_REG.  Does not clobber T.
  .macro do_prologue_saves n_pushed n_frame=0
      ldi r26, lo8(\n_frame)
      ldi r27, hi8(\n_frame)
***************
*** 171,197 ****
  .L_prologue_saves.\@:
  .endm
  
! /*
!     Convenience macro for easy use of __epilogue_restores__ from libgcc.
!     Undo the effect of __prologue_saves__.  Clobbers TMP_REG.
!     For the code of __epilogue_restores__ from libgcc see
!     http://gcc.gnu.org/viewcvs/gcc/trunk/libgcc/config/avr/lib1funcs.S?revision=267494&view=markup#l2216
! */
! 
  .macro do_epilogue_restores n_pushed n_frame=0
      in      r28, __SP_L__
  #ifdef __AVR_HAVE_SPH__
      in      r29, __SP_H__
  .if \n_frame > 63
!     subi    r28, lo8(-\n_frame)
!     sbci    r29, hi8(-\n_frame)
  .elseif \n_frame > 0
      adiw    r28, \n_frame
  .endif
  #else
      clr     r29
  .if \n_frame > 0
!     subi    r28, lo8(-\n_frame)
  .endif
  #endif /* HAVE SPH */
      ldi     r30, \n_pushed
--- 170,191 ----
  .L_prologue_saves.\@:
  .endm
  
! ;;; Convenience macro for easy use of __epilogue_restores__ from libgcc.
! ;;; Undo the effect of __prologue_saves__.  Clobbers TMP_REG.
  .macro do_epilogue_restores n_pushed n_frame=0
      in      r28, __SP_L__
  #ifdef __AVR_HAVE_SPH__
      in      r29, __SP_H__
  .if \n_frame > 63
!     subi    r28, lo8(-(\n_frame))
!     sbci    r29, hi8(-(\n_frame))
  .elseif \n_frame > 0
      adiw    r28, \n_frame
  .endif
  #else
      clr     r29
  .if \n_frame > 0
!     subi    r28, lo8(-(\n_frame))
  .endif
  #endif /* HAVE SPH */
      ldi     r30, \n_pushed
diff -Nrcpad gcc-17-20260607/libgcc/config/avr/libf7/f7-renames.h gcc-17-20260614/libgcc/config/avr/libf7/f7-renames.h
*** gcc-17-20260607/libgcc/config/avr/libf7/f7-renames.h	Sun Jun  7 22:32:14 2026
--- gcc-17-20260614/libgcc/config/avr/libf7/f7-renames.h	Sun Jun 14 22:32:15 2026
***************
*** 222,227 ****
--- 222,230 ----
  #define f7_sqrt16_floor_asm __f7_sqrt16_floor_asm
  #define f7_lshrdi3_asm __f7_lshrdi3_asm
  #define f7_ashldi3_asm __f7_ashldi3_asm
+ #define f7_d_to_fx64_asm __f7_d_to_fx64_asm
+ #define f7_ufx64_to_d_asm __f7_ufx64_to_d_asm
+ #define f7_sfx64_to_d_asm __f7_sfx64_to_d_asm
  #define f7_class_D_asm __f7_class_D_asm
  #define f7_call_ddd_asm __f7_call_ddd_asm
  #define f7_call_xdd_asm __f7_call_xdd_asm
diff -Nrcpad gcc-17-20260607/libgcc/config/avr/libf7/libf7-asm.sx gcc-17-20260614/libgcc/config/avr/libf7/libf7-asm.sx
*** gcc-17-20260607/libgcc/config/avr/libf7/libf7-asm.sx	Sun Jun  7 22:32:14 2026
--- gcc-17-20260614/libgcc/config/avr/libf7/libf7-asm.sx	Sun Jun 14 22:32:15 2026
*************** _ENDF __fractqqdf
*** 2308,2315 ****
  #endif /* F7MOD_qq2D_ */
  
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
! ;;; Fixed-point -> double conversions.
  
  #ifdef F7MOD_D2qq_
  _DEFUN __fractdfqq
--- 2308,2392 ----
  #endif /* F7MOD_qq2D_ */
  
  
+ #ifdef F7MOD_fx2D_
+ ;;; Convert an [un]signed 64-bit fixed point value R18[] to double.
+ ;;;    double ufx64_to_d (ufx64_t R18, uint8_t fbit R30);
+ ;;;    double sfx64_to_d (sfx64_t R18, uint8_t fbit R30);
+ ;;; FBIT accounts for the fractional bits of the fixed point type,
+ ;;; e.g. pass __DA_FBIT__ for long accum etc.
+ DEFUN ufx64_to_d
+     push    r30
+     XCALL __floatundidf
+     rjmp  1f
+ 
+ LABEL sfx64_to_d
+     push    r30
+     XCALL __floatdidf
+ 1:  pop     r30
+ 
+     ;; The MSB indicates a value of 0.  Notice that at this point,
+     ;; we have a normal floating point number with a biased exponent
+     ;; that won't underflow below.
+     tst     r25
+     breq 0f
+ 
+     ;; Subtract fbit from the double exponent.  R30[] = fbit << 4.
+     swap    r30
+     mov     r31, r30
+     andi    r30, lo8 (0x0ff0)
+     andi    r31, hi8 (0x0ff0)
+     sub     r24, r30
+     sbc     r25, r31
+ 
+ 0:  ret
+ ENDF ufx64_to_d
+ #endif /* F7MOD_fx2D_ */
+ 
+ #ifdef F7MOD_da2D_
+ _DEFUN __fractdadf
+     ldi     r30, __DA_FBIT__
+     F7jmp   sfx64_to_d
+ _ENDF __fractdadf
+ #endif /* F7MOD_da2D_ */
+ 
+ #ifdef F7MOD_uda2D_
+ _DEFUN __fractudadf
+     ldi     r30, __UDA_FBIT__
+     F7jmp   ufx64_to_d
+ _ENDF __fractudadf
+ #endif /* F7MOD_uda2D_ */
+ 
+ #ifdef F7MOD_ta2D_
+ _DEFUN __fracttadf
+     ldi     r30, __TA_FBIT__
+     F7jmp   sfx64_to_d
+ _ENDF __fracttadf
+ #endif /* F7MOD_ta2D_ */
+ 
+ #ifdef F7MOD_uta2D_
+ _DEFUN __fractutadf
+     ldi     r30, __UTA_FBIT__
+     F7jmp   ufx64_to_d
+ _ENDF __fractutadf
+ #endif /* F7MOD_uta2D_ */
+ 
+ #ifdef F7MOD_dq2D_
+ _DEFUN __fractdqdf
+     ldi     r30, __DQ_FBIT__
+     F7jmp   sfx64_to_d
+ _ENDF __fractdqdf
+ #endif /* F7MOD_dq2D_ */
+ 
+ #ifdef F7MOD_udq2D_
+ _DEFUN __fractudqdf
+     ldi     r30, __UDQ_FBIT__
+     F7jmp   ufx64_to_d
+ _ENDF __fractudqdf
+ #endif /* F7MOD_udq2D_ */
+ 
+ 
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
! ;;; Double -> fixed-point conversions.
  
  #ifdef F7MOD_D2qq_
  _DEFUN __fractdfqq
*************** _ENDF __fractdfusa
*** 2389,2394 ****
--- 2466,2514 ----
  #endif /* F7MOD_D2usa_ */
  
  
+ #ifdef F7MOD_D2fx_
+ ;;; Convert double R18 to a 64-bit fixed point value.
+ ;;; R18 d_to_fx64 (double R18, int8_t fbit R16);
+ ;;; |FBIT| accounts for the extra fbits compared to [u]int64_t.
+ ;;; FBIT < 0 indicates a signed conversion.
+ ;;; FBIT > 0 indicates an unsigned conversion.
+ DEFUN d_to_fx64
+     do_prologue_saves  4, F7_SIZEOF
+ 
+     ;; Y = FramePointer + 1
+     adiw    Y,      1
+ 
+     ;; FP + 1 = (f7_t) arg
+     wmov    r16,    Y
+ 
+     ;; Convert double R18 to f7_t *R16.
+     XCALL   F7_NAME (set_double_impl)
+ 
+     ;; Prepare for *R24 = ldexp (*R24, R22).  ldexp() accounts for the
+     ;; fractional bits of the fixed point value, i.e. we have to <<= FBIT.
+     wmov    r24,    r16
+     ;; Zero-extend FBIT.
+     clr     r23
+     ;; R16 has been clobbered.  Fetch it from where prologue_saves put it.
+     ldd     r22,    Y + F7_SIZEOF + 3       ; Saved R16
+     tst     r22
+     brmi 1f
+ 
+     ;; Positive FBIT indicates an unsigned conversion.
+     XCALL   F7_NAME (Ildexp)
+     XCALL   F7_NAME (get_u64)
+     rjmp 9f
+ 
+ 1:  ;; Negative FBIT indicates a signed conversion.
+     neg     r22                 ; FBIT := |FBIT|
+     XCALL   F7_NAME (Ildexp)
+     XCALL   F7_NAME (get_s64)
+ 
+ 9:  do_epilogue_restores  4, F7_SIZEOF
+ ENDF d_to_fx64
+ #endif /* F7MOD_D2fx_ */
+ 
+ 
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;; [u]int32_t -> double conversions.
  
diff -Nrcpad gcc-17-20260607/libgcc/config/avr/libf7/libf7-common.mk gcc-17-20260614/libgcc/config/avr/libf7/libf7-common.mk
*** gcc-17-20260607/libgcc/config/avr/libf7/libf7-common.mk	Sun Jun  7 22:32:14 2026
--- gcc-17-20260614/libgcc/config/avr/libf7/libf7-common.mk	Sun Jun 14 22:32:15 2026
*************** F7_ASM_PARTS += D_cmp D_eq D_ne D_ge D_g
*** 29,40 ****
  F7_ASM_PARTS += call_dd call_ddd
  
  # Fixed-point -> double conversions
! F7_ASM_PARTS += qq2D uqq2D            sq2D usq2D
! F7_ASM_PARTS +=            ha2D uha2D sa2D usa2D
  
  # Double -> fixed-point conversions
  F7_ASM_PARTS += D2qq D2uqq D2hq D2uhq
  F7_ASM_PARTS +=            D2ha D2uha D2sa D2usa
  
  # Integer -> double conversions
  F7_ASM_PARTS += D_floatsidf D_floatunsidf
--- 29,42 ----
  F7_ASM_PARTS += call_dd call_ddd
  
  # Fixed-point -> double conversions
! F7_ASM_PARTS += qq2D uqq2D            sq2D usq2D dq2D udq2D
! F7_ASM_PARTS +=            ha2D uha2D sa2D usa2D da2D uda2D ta2D uta2D
! F7_ASM_PARTS += fx2D
  
  # Double -> fixed-point conversions
  F7_ASM_PARTS += D2qq D2uqq D2hq D2uhq
  F7_ASM_PARTS +=            D2ha D2uha D2sa D2usa
+ F7_ASM_PARTS += D2fx
  
  # Integer -> double conversions
  F7_ASM_PARTS += D_floatsidf D_floatunsidf
*************** F7F_asm += set_u64 set_s64 addsub_mant_s
*** 107,113 ****
  F7F_asm += to_integer to_unsigned clr_mant_lsbs
  F7F_asm += div sqrt_approx sqrt16_round sqrt16_floor
  F7F_asm += lshrdi3 ashldi3
! 
  F7F_asm += class_D
  
  F7F_asm += call_ddd call_xdd call_ddx
--- 109,115 ----
  F7F_asm += to_integer to_unsigned clr_mant_lsbs
  F7F_asm += div sqrt_approx sqrt16_round sqrt16_floor
  F7F_asm += lshrdi3 ashldi3
! F7F_asm += d_to_fx64 ufx64_to_d sfx64_to_d
  F7F_asm += class_D
  
  F7F_asm += call_ddd call_xdd call_ddx
diff -Nrcpad gcc-17-20260607/libgcc/config/avr/libf7/libf7.c gcc-17-20260614/libgcc/config/avr/libf7/libf7.c
*** gcc-17-20260607/libgcc/config/avr/libf7/libf7.c	Sun Jun  7 22:32:14 2026
--- gcc-17-20260614/libgcc/config/avr/libf7/libf7.c	Sun Jun 14 22:32:15 2026
*************** int8_t ssat8_range (int16_t a, int8_t ra
*** 122,130 ****
  F7_WEAK
  f7_double_t __floatundidf (uint64_t x)
  {
!   f7_t xx;
!   f7_set_u64 (&xx, x);
!   return f7_get_double (&xx);
  }
  #endif // F7MOD_floatundidf_
  
--- 122,130 ----
  F7_WEAK
  f7_double_t __floatundidf (uint64_t x)
  {
!   f7_t xx7, *xx = &xx7;
!   xx = f7_set_u64 (xx, x);
!   return f7_get_double (xx);
  }
  #endif // F7MOD_floatundidf_
  
*************** f7_double_t __floatundidf (uint64_t x)
*** 133,145 ****
  F7_WEAK
  f7_double_t __floatdidf (int64_t x)
  {
!   f7_t xx;
!   f7_set_s64 (&xx, x);
!   return f7_get_double (&xx);
  }
  #endif // F7MOD_floatdidf_
  
  
  #ifdef F7MOD_init_
  f7_t* f7_init_impl (uint64_t mant, uint8_t flags, f7_t *cc, int16_t expo)
  {
--- 133,197 ----
  F7_WEAK
  f7_double_t __floatdidf (int64_t x)
  {
!   f7_t xx7, *xx = &xx7;
!   xx = f7_set_s64 (xx, x);
!   return f7_get_double (xx);
  }
  #endif // F7MOD_floatdidf_
  
  
+ extern uint64_t d_to_ufx (f7_double_t, int8_t) F7ASM(f7_d_to_fx64_asm);
+ extern int64_t  d_to_sfx (f7_double_t, int8_t) F7ASM(f7_d_to_fx64_asm);
+ 
+ #ifdef F7MOD_fractdfda_
+ F7_WEAK
+ int64_t __fractdfda (f7_double_t d)
+ {
+   return d_to_sfx (d, -__DA_FBIT__);
+ }
+ #endif // F7MOD_fractdfda_
+ 
+ #ifdef F7MOD_fractdfuda_
+ F7_WEAK
+ uint64_t __fractdfuda (f7_double_t d)
+ {
+   return d_to_ufx (d, __UDA_FBIT__);
+ }
+ #endif // F7MOD_fractdfuda_
+ 
+ #ifdef F7MOD_fractdfta_
+ F7_WEAK
+ int64_t __fractdfta (f7_double_t d)
+ {
+   return d_to_sfx (d, -__TA_FBIT__);
+ }
+ #endif // F7MOD_fractdfta_
+ 
+ #ifdef F7MOD_fractdfuta_
+ F7_WEAK
+ uint64_t __fractdfuta (f7_double_t d)
+ {
+   return d_to_ufx (d, __UTA_FBIT__);
+ }
+ #endif // F7MOD_fractdfuta_
+ 
+ #ifdef F7MOD_fractdfdq_
+ F7_WEAK
+ int64_t __fractdfdq (f7_double_t d)
+ {
+   return d_to_sfx (d, -__DQ_FBIT__);
+ }
+ #endif // F7MOD_fractdfdq_
+ 
+ #ifdef F7MOD_fractdfudq_
+ F7_WEAK
+ uint64_t __fractdfudq (f7_double_t d)
+ {
+   return d_to_ufx (d, __UDQ_FBIT__);
+ }
+ #endif // F7MOD_fractdfudq_
+ 
+ 
  #ifdef F7MOD_init_
  f7_t* f7_init_impl (uint64_t mant, uint8_t flags, f7_t *cc, int16_t expo)
  {
diff -Nrcpad gcc-17-20260607/libgcc/config/avr/libf7/t-libf7 gcc-17-20260614/libgcc/config/avr/libf7/t-libf7
*** gcc-17-20260607/libgcc/config/avr/libf7/t-libf7	Sun Jun  7 22:32:14 2026
--- gcc-17-20260614/libgcc/config/avr/libf7/t-libf7	Sun Jun 14 22:32:15 2026
*************** F7_PREFIX = __f7_
*** 9,14 ****
--- 9,16 ----
  include $(libf7)/libf7-common.mk
  
  LIBF7_DF_CONV +=  floatundidf floatdidf # floatunsidf floatsidf
+ LIBF7_DF_CONV +=  fractdfda fractdfta fractdfdq
+ LIBF7_DF_CONV +=  fractdfuda fractdfuta fractdfudq
  
  # Wrappers like f7_lt_impl for f7_lt etc. because the latter is inline.
  LIBF7_DF_CMP  += lt le gt ge ne eq unord
diff -Nrcpad gcc-17-20260607/libgcc/config/microblaze/linux-unwind.h gcc-17-20260614/libgcc/config/microblaze/linux-unwind.h
*** gcc-17-20260607/libgcc/config/microblaze/linux-unwind.h	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/libgcc/config/microblaze/linux-unwind.h	Sun Jun 14 22:32:16 2026
***************
*** 0 ****
--- 1,102 ----
+ /* DWARF2 EH unwinding support for MicroBlaze Linux.
+    Copyright (C) 2026 Free Software Foundation, Inc.
+ 
+    This file is part of GCC.
+ 
+    GCC is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 3, or (at your option)
+    any later version.
+ 
+    GCC is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+ 
+    Under Section 7 of GPL version 3, you are granted additional
+    permissions described in the GCC Runtime Library Exception, version
+    3.1, as published by the Free Software Foundation.
+ 
+    You should have received a copy of the GNU General Public License and
+    a copy of the GCC Runtime Library Exception along with this program;
+    see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #ifndef inhibit_libc
+ 
+ /* Do code reading to identify a signal frame, and set the frame state
+    data appropriately.  See unwind-dw2.c for the structs.  */
+ 
+ #include <signal.h>
+ #include <sys/ucontext.h>
+ #include <asm/unistd.h>
+ 
+ #define MD_FALLBACK_FRAME_STATE_FOR microblaze_fallback_frame_state
+ 
+ static _Unwind_Reason_Code
+ microblaze_fallback_frame_state (struct _Unwind_Context *context,
+ 				 _Unwind_FrameState *fs)
+ {
+   const unsigned int *pc = (const unsigned int *) context->ra;
+   struct sigcontext *sc;
+   _Unwind_Ptr new_cfa;
+   int i;
+ 
+   /* The outermost frame of a thread may leave a null or near-null
+      return address; do not dereference it looking for the
+      trampoline.  */
+   if ((unsigned long) pc < 4096)
+     return _URC_END_OF_STACK;
+ 
+   /* The kernel writes the signal trampoline onto the stack
+      (struct rt_sigframe.tramp):
+ 
+ 	addik r12, r0, __NR_rt_sigreturn
+ 	brki  r14, 0x8
+ 
+      and sets the saved r15 to the trampoline address minus 8 (the
+      handler returns with "rtsd r15, 8"), so the unwound return
+      address points 8 bytes before the trampoline.  */
+   if (pc[0] == (0x31800000 | __NR_rt_sigreturn) && pc[1] == 0xb9cc0008)
+     ;
+   else if (pc[2] == (0x31800000 | __NR_rt_sigreturn) && pc[3] == 0xb9cc0008)
+     pc += 2;
+   else
+     return _URC_END_OF_STACK;
+ 
+   /* The trampoline is the last member of the kernel's rt_sigframe and
+      the ucontext sits directly in front of it.  Anchor there rather
+      than at the CFA so the layout of the frame head does not matter
+      (the kernel may insert an ABI argument-home gap at the front).
+      uClibc's ucontext_t matches the kernel's struct ucontext.  */
+   ucontext_t *uc = (ucontext_t *) ((_Unwind_Ptr) pc - sizeof (ucontext_t));
+ 
+   sc = (struct sigcontext *) &uc->uc_mcontext;
+ 
+   new_cfa = sc->regs.r1;
+   fs->regs.cfa_how = CFA_REG_OFFSET;
+   fs->regs.cfa_reg = 1;		/* r1, the stack pointer.  */
+   fs->regs.cfa_offset = new_cfa - (_Unwind_Ptr) context->cfa;
+ 
+   /* pt_regs holds r0..r31 consecutively.  */
+   for (i = 0; i < 32; i++)
+     {
+       fs->regs.how[i] = REG_SAVED_OFFSET;
+       fs->regs.reg[i].loc.offset
+ 	= (_Unwind_Ptr) &sc->regs.r0 + i * sizeof (unsigned long) - new_cfa;
+     }
+ 
+   /* The interrupted PC goes into the alternate return column
+      (DWARF_ALT_FRAME_RETURN_COLUMN, defined as 36 in
+      gcc/config/microblaze/microblaze.h), one past the hard registers;
+      column 15 above keeps the interrupted r15.  */
+   fs->regs.how[__LIBGCC_DWARF_ALT_FRAME_RETURN_COLUMN__] = REG_SAVED_OFFSET;
+   fs->regs.reg[__LIBGCC_DWARF_ALT_FRAME_RETURN_COLUMN__].loc.offset
+     = (_Unwind_Ptr) &sc->regs.pc - new_cfa;
+   fs->retaddr_column = __LIBGCC_DWARF_ALT_FRAME_RETURN_COLUMN__;
+   fs->signal_frame = 1;
+ 
+   return _URC_NO_REASON;
+ }
+ 
+ #endif
diff -Nrcpad gcc-17-20260607/libgcc/config.host gcc-17-20260614/libgcc/config.host
*** gcc-17-20260607/libgcc/config.host	Sun Jun  7 22:32:14 2026
--- gcc-17-20260614/libgcc/config.host	Sun Jun 14 22:32:15 2026
*************** mcore-*-elf)
*** 1050,1055 ****
--- 1050,1056 ----
  	;;
  microblaze*-linux*)
  	tmake_file="${tmake_file} microblaze/t-microblaze t-fdpbit t-slibgcc-libgcc"
+ 	md_unwind_header=microblaze/linux-unwind.h
  	;;
  microblaze*-*-elf)
  	tmake_file="${tmake_file} microblaze/t-microblaze t-fdpbit"
diff -Nrcpad gcc-17-20260607/libgcobol/ChangeLog gcc-17-20260614/libgcobol/ChangeLog
*** gcc-17-20260607/libgcobol/ChangeLog	Sun Jun  7 22:32:15 2026
--- gcc-17-20260614/libgcobol/ChangeLog	Sun Jun 14 22:32:16 2026
***************
*** 1,3 ****
--- 1,43 ----
+ 2026-06-11  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* intrinsic.cc (__gg__char_national): New function.
+ 
+ 2026-06-09  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* libgcobol.cc (__gg__to_be_canceled): Use pointer instead of size_t.
+ 	(__gg__is_canceled): Likewise.
+ 
+ 2026-06-05  Robert Dubner  <rdubner@symas.com>
+ 
+ 	PR cobol/125616
+ 	* libgcobol.cc (format_for_display_internal): Format matches the
+ 	description in the PR.
+ 
+ 2026-06-05  Robert Dubner  <rdubner@symas.com>
+ 
+ 	PR cobol/125616
+ 	* common-defs.h (enum cbl_dialect_t): Move cbl_dialect_t here.
+ 	* intrinsic.cc (__gg__trim_1): Make a formal parameter const.
+ 	* libgcobol.cc (format_for_display_internal): Change the formatting
+ 	of COMP-1/COMP2 when "-dialect ibm" is in force.
+ 	(default_exception_handler): Whitespace formatting.
+ 	(ec_type_disposition): Likewise.
+ 	(ec_is_fatal): Likewise.
+ 
+ 2026-06-04  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* intrinsic.cc (__gg__formatted_date): Formatting change.
+ 	(change_case): Likewise.
+ 	(__gg__trim): Rename as __gg__trim_1.
+ 	(__gg__trim_1): Reworked to handle an array of single-byte chars.
+ 	(__gg__trim_a): Reworked to handle an array of multi-byte chars.
+ 	(iscasematch): Formatting change.
+ 
+ 2026-06-04  Xavier Del Campo Romero  <xdelcampo@symas.com>
+ 
+ 	* Makefile.am: Install posix copybooks to build tree.
+ 	* Makefile.in: Likewise.
+ 
  2026-06-02  Robert Dubner  <rdubner@symas.com>
  
  	* intrinsic.cc (__gg__trim): Eliminate useless comment.
diff -Nrcpad gcc-17-20260607/libgcobol/intrinsic.cc gcc-17-20260614/libgcobol/intrinsic.cc
*** gcc-17-20260607/libgcobol/intrinsic.cc	Sun Jun  7 22:32:15 2026
--- gcc-17-20260614/libgcobol/intrinsic.cc	Sun Jun 14 22:32:16 2026
*************** __gg__char( cblc_field_t *dest,
*** 1212,1217 ****
--- 1212,1251 ----
  
  extern "C"
  void
+ __gg__char_national(cblc_field_t *dest,
+               const cblc_field_t *source,
+                     size_t        source_offset,
+                     size_t        source_size )
+   {
+   // Since we haven't tried to implement collation sequences for National,
+   // this whole subroutine is a Hail Mary play.  I frankly don't even know
+   // why we tried.
+   int rdigits;
+ 
+   // The CHAR function takes an integer, the ordinal position.  It
+   // returns a single-character string, which is the character at that
+   // ordinal position in the DISPLAY collation.
+ 
+   // 'A', with the ascii value of 65, is at the ordinal position 66
+   // in the default collation.
+ 
+   int ordinal = (int)(__gg__binary_value_from_qualified_field(&rdigits,
+                                                               source,
+                                                               source_offset,
+                                                               source_size));
+   ordinal /= __gg__power_of_ten(rdigits);
+   ordinal -= 1;
+ 
+   // We need to convert the ch character to the destination encoding.
+   // THIS IS A KLUDGE UNTIL WE MAKE THE CURRENT_COLLATION TO BE A MAP OF
+   // WIDE CHARACTERS!
+   const charmap_t *charmap_dest = __gg__get_charmap(dest->encoding);
+ 
+   memcpy(dest->data, &ordinal, charmap_dest->stride());
+   }
+ 
+ extern "C"
+ void
  __gg__combined_datetime(cblc_field_t *dest,
                    const cblc_field_t *arg1,
                          size_t arg1_offset,
diff -Nrcpad gcc-17-20260607/libgcobol/libgcobol.cc gcc-17-20260614/libgcobol/libgcobol.cc
*** gcc-17-20260607/libgcobol/libgcobol.cc	Sun Jun  7 22:32:15 2026
--- gcc-17-20260614/libgcobol/libgcobol.cc	Sun Jun 14 22:32:16 2026
*************** int128_to_field(cblc_field_t   *var,
*** 2052,2057 ****
--- 2052,2062 ----
              // We are now set up to do the conversion:
              __gg__binary_to_packed(location, digits, value);
  
+             if( value == 0 && sign_nybble == 0x0D )
+               {
+               sign_nybble = 0x0C;
+               }
+ 
              // We can put the sign nybble into place at this point.  Note that
              // for COMP-6 numbers the sign_nybble value is zero, so the next
              // operation is harmless.
*************** done:
*** 9675,9684 ****
    return overflow;
    }
  
! static std::set<size_t> to_be_canceled;
  
  extern "C"
! void __gg__to_be_canceled(size_t function_pointer)
    {
    if( function_pointer )
      {
--- 9680,9689 ----
    return overflow;
    }
  
! static std::set<void *> to_be_canceled;
  
  extern "C"
! void __gg__to_be_canceled(void * function_pointer)
    {
    if( function_pointer )
      {
*************** void __gg__to_be_canceled(size_t functio
*** 9687,9695 ****
    }
  
  extern "C"
! int __gg__is_canceled(size_t function_pointer)
    {
!   int retval = static_cast<int>(to_be_canceled.erase(function_pointer));
    return retval;
    }
  
--- 9692,9700 ----
    }
  
  extern "C"
! int __gg__is_canceled(void * function_pointer)
    {
!   int retval = to_be_canceled.erase(function_pointer);
    return retval;
    }
  
diff -Nrcpad gcc-17-20260607/libgfortran/ChangeLog gcc-17-20260614/libgfortran/ChangeLog
*** gcc-17-20260607/libgfortran/ChangeLog	Sun Jun  7 22:32:15 2026
--- gcc-17-20260614/libgfortran/ChangeLog	Sun Jun 14 22:32:16 2026
***************
*** 1,3 ****
--- 1,19 ----
+ 2026-06-11  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/30438
+ 	PR fortran/28004
+ 	* mk-kinds-h.sh: Add print statement so test will compile with -Wall -Werror.
+ 	* mk-sik-inc.sh: Likewise.
+ 	* mk-srk-inc.sh: Likewise.
+ 
+ 2026-06-11  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/93727
+ 	* io/read.c (read_ex): New function implementing EX format read.
+ 	* io/io.h (read_ex): Declare.
+ 	* io/transfer.c (formatted_transfer_scalar_read): Add FMT_EX case
+ 	dispatching to read_ex.
+ 
  2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
  
  	* caf/caf_error.h (caf_runtime_error): Fix typos.
diff -Nrcpad gcc-17-20260607/libgfortran/io/io.h gcc-17-20260614/libgfortran/io/io.h
*** gcc-17-20260607/libgfortran/io/io.h	Sun Jun  7 22:32:15 2026
--- gcc-17-20260614/libgfortran/io/io.h	Sun Jun 14 22:32:16 2026
*************** internal_proto(read_a);
*** 887,892 ****
--- 887,895 ----
  extern void read_f (st_parameter_dt *, const fnode *, char *, int);
  internal_proto(read_f);
  
+ extern void read_ex (st_parameter_dt *, const fnode *, char *, int);
+ internal_proto(read_ex);
+ 
  extern void read_l (st_parameter_dt *, const fnode *, char *, int);
  internal_proto(read_l);
  
diff -Nrcpad gcc-17-20260607/libgfortran/io/read.c gcc-17-20260614/libgfortran/io/read.c
*** gcc-17-20260607/libgfortran/io/read.c	Sun Jun  7 22:32:15 2026
--- gcc-17-20260614/libgfortran/io/read.c	Sun Jun 14 22:32:16 2026
*************** bad_float:
*** 1525,1530 ****
--- 1525,1888 ----
  }
  
  
+ /* read_ex()-- Read a floating-point number with EX editing.
+    Per Fortran 2023 13.7.2.3.6 para 3, the input form is the same as for
+    Fw.d editing (13.7.2.3.2).  That includes the hexadecimal-significand
+    form (13.7.2.3.2 para 7): [sign] 0X [hex-significand] P [decimal-exp].
+    Decimal mantissas and IEEE exceptional forms (INF, NAN) are also
+    accepted.  Embedded blanks are not permitted within a hex float; C
+    strtod handles the 0x...p... form natively.  */
+ 
+ void
+ read_ex (st_parameter_dt *dtp, const fnode *f, char *dest, int length)
+ {
+ #define READEX_TMP 64
+   char tmp[READEX_TMP];
+   size_t buf_size = 0;
+   size_t w;
+   int seen_dp, exponent;
+   int exponent_sign;
+   const char *p;
+   char *buffer;
+   char *out;
+   int seen_int_digit;
+   int seen_dec_digit;
+ 
+   seen_dp = 0;
+   seen_int_digit = 0;
+   seen_dec_digit = 0;
+   exponent_sign = 1;
+   exponent = 0;
+   w = f->u.real.w;
+   buffer = tmp;
+ 
+   p = read_block_form (dtp, &w);
+   if (p == NULL)
+     return;
+   p = eat_leading_spaces (&w, (char *) p);
+   if (w == 0)
+     goto zero;
+ 
+   buf_size = w + 11;
+   if (buf_size > READEX_TMP)
+     buffer = xmalloc (buf_size);
+ 
+   out = buffer;
+ 
+   /* Optional sign.  */
+   if (*p == '-' || *p == '+')
+     {
+       if (*p == '-')
+ 	*(out++) = '-';
+       ++p;
+       --w;
+     }
+ 
+   p = eat_leading_spaces (&w, (char *) p);
+   if (w == 0)
+     {
+       if (buf_size > READEX_TMP)
+ 	free (buffer);
+       goto zero;
+     }
+ 
+   /* IEEE exceptional specification: INF or NAN.  */
+   if (unlikely (w >= 3 && (*p == 'i' || *p == 'I' || *p == 'n' || *p == 'N')))
+     {
+       int seen_paren = 0;
+       char *save = out;
+ 
+       while (w > 0)
+ 	{
+ 	  *out = safe_tolower (*p);
+ 	  switch (*p)
+ 	    {
+ 	    case ' ':
+ 	      if (dtp->u.p.blank_status == BLANK_ZERO)
+ 		{
+ 		  *out = '0';
+ 		  break;
+ 		}
+ 	      *out = '\0';
+ 	      if (seen_paren == 1)
+ 		goto bad_float;
+ 	      break;
+ 	    case '(':
+ 	      seen_paren++;
+ 	      *out = '\0';
+ 	      break;
+ 	    case ')':
+ 	      if (seen_paren++ != 1)
+ 		goto bad_float;
+ 	      break;
+ 	    default:
+ 	      if (!safe_isalnum (*out))
+ 		goto bad_float;
+ 	    }
+ 	  --w;
+ 	  ++p;
+ 	  ++out;
+ 	}
+ 
+       *out = '\0';
+ 
+       if (seen_paren != 0 && seen_paren != 2)
+ 	goto bad_float;
+ 
+       if ((strcmp (save, "inf") == 0) || (strcmp (save, "infinity") == 0))
+ 	{
+ 	  if (seen_paren)
+ 	    goto bad_float;
+ 	}
+       else if (strcmp (save, "nan") != 0)
+ 	goto bad_float;
+ 
+       convert_infnan (dtp, dest, buffer, length);
+       if (buf_size > READEX_TMP)
+ 	free (buffer);
+       return;
+     }
+ 
+   /* Hexadecimal-significand number: 0X or 0x prefix.
+      Embedded blanks are forbidden; we stop at the first blank and let
+      convert_real report an error if the string is malformed.  */
+   if (w >= 2 && *p == '0' && (p[1] == 'x' || p[1] == 'X'))
+     {
+       while (w > 0 && *p != ' ')
+ 	{
+ 	  *(out++) = *p++;
+ 	  --w;
+ 	}
+       *(out++) = '\0';
+ 
+       convert_real (dtp, dest, buffer, length);
+       if (buf_size > READEX_TMP)
+ 	free (buffer);
+       return;
+     }
+ 
+   /* Decimal floating-point fallback: same rules as Fw.d editing.  */
+   while (w > 0)
+     {
+       switch (*p)
+ 	{
+ 	case ',':
+ 	  if (dtp->u.p.current_unit->decimal_status != DECIMAL_COMMA)
+ 	    goto bad_float;
+ 	  if (seen_dp)
+ 	    goto bad_float;
+ 	  if (!seen_int_digit)
+ 	    *(out++) = '0';
+ 	  *(out++) = '.';
+ 	  seen_dp = 1;
+ 	  break;
+ 
+ 	case '.':
+ 	  if (dtp->u.p.current_unit->decimal_status != DECIMAL_POINT)
+ 	    goto bad_float;
+ 	  if (seen_dp)
+ 	    goto bad_float;
+ 	  if (!seen_int_digit)
+ 	    *(out++) = '0';
+ 	  *(out++) = '.';
+ 	  seen_dp = 1;
+ 	  break;
+ 
+ 	case ' ':
+ 	  if (dtp->u.p.blank_status == BLANK_ZERO)
+ 	    {
+ 	      *(out++) = '0';
+ 	      goto found_digit;
+ 	    }
+ 	  else if (dtp->u.p.blank_status == BLANK_NULL)
+ 	    break;
+ 	  else
+ 	    goto done;
+ 	  /* Fall through.  */
+ 	case '0':
+ 	case '1':
+ 	case '2':
+ 	case '3':
+ 	case '4':
+ 	case '5':
+ 	case '6':
+ 	case '7':
+ 	case '8':
+ 	case '9':
+ 	  *(out++) = *p;
+ found_digit:
+ 	  if (!seen_dp)
+ 	    seen_int_digit = 1;
+ 	  else
+ 	    seen_dec_digit = 1;
+ 	  break;
+ 
+ 	case '-':
+ 	case '+':
+ 	  goto exponent;
+ 
+ 	case 'e':
+ 	case 'E':
+ 	case 'd':
+ 	case 'D':
+ 	case 'q':
+ 	case 'Q':
+ 	  ++p;
+ 	  --w;
+ 	  goto exponent;
+ 
+ 	default:
+ 	  goto bad_float;
+ 	}
+ 
+       ++p;
+       --w;
+     }
+ 
+   /* No exponent seen; apply the scale factor.  */
+   exponent = -dtp->u.p.scale_factor;
+   goto done;
+ 
+ exponent:
+   p = eat_leading_spaces (&w, (char *) p);
+   if (*p == '-' || *p == '+')
+     {
+       if (*p == '-')
+ 	exponent_sign = -1;
+       ++p;
+       --w;
+     }
+ 
+   if (w == 0)
+     {
+       if (dtp->common.flags & IOPARM_DT_DEC_EXT)
+ 	goto done;
+       else
+ 	goto bad_float;
+     }
+ 
+   if (dtp->u.p.blank_status == BLANK_UNSPECIFIED)
+     {
+       while (w > 0 && safe_isdigit (*p))
+ 	{
+ 	  exponent *= 10;
+ 	  exponent += *p - '0';
+ 	  ++p;
+ 	  --w;
+ 	}
+       while (w > 0)
+ 	{
+ 	  if (*p != ' ')
+ 	    goto bad_float;
+ 	  ++p;
+ 	  --w;
+ 	}
+     }
+   else
+     {
+       while (w > 0)
+ 	{
+ 	  if (*p == ' ')
+ 	    {
+ 	      if (dtp->u.p.blank_status == BLANK_ZERO)
+ 		exponent *= 10;
+ 	      else
+ 		assert (dtp->u.p.blank_status == BLANK_NULL);
+ 	    }
+ 	  else if (!safe_isdigit (*p))
+ 	    goto bad_float;
+ 	  else
+ 	    {
+ 	      exponent *= 10;
+ 	      exponent += *p - '0';
+ 	    }
+ 	  ++p;
+ 	  --w;
+ 	}
+     }
+ 
+   exponent *= exponent_sign;
+ 
+ done:
+   if (!seen_dp)
+     exponent -= f->u.real.d;
+ 
+   if (seen_dp && !seen_dec_digit)
+     *(out++) = '0';
+   else if (!seen_int_digit && !seen_dec_digit)
+     {
+       notify_std (&dtp->common, GFC_STD_LEGACY,
+ 		  "REAL input of style 'E+NN'");
+       *(out++) = '0';
+     }
+ 
+   if (exponent != 0)
+     {
+       int dig;
+ 
+       *(out++) = 'e';
+       if (exponent < 0)
+ 	{
+ 	  *(out++) = '-';
+ 	  exponent = -exponent;
+ 	}
+ 
+       if (exponent >= 10000)
+ 	goto bad_float;
+ 
+       for (dig = 3; dig >= 0; --dig)
+ 	{
+ 	  out[dig] = (char) ('0' + exponent % 10);
+ 	  exponent /= 10;
+ 	}
+       out += 4;
+     }
+   *(out++) = '\0';
+ 
+   convert_real (dtp, dest, buffer, length);
+   if (buf_size > READEX_TMP)
+     free (buffer);
+   return;
+ 
+ zero:
+   switch (length)
+     {
+     case 4:
+       *((GFC_REAL_4 *) dest) = 0.0;
+       break;
+     case 8:
+       *((GFC_REAL_8 *) dest) = 0.0;
+       break;
+ #ifdef HAVE_GFC_REAL_10
+     case 10:
+       *((GFC_REAL_10 *) dest) = 0.0;
+       break;
+ #endif
+ #ifdef HAVE_GFC_REAL_16
+     case 16:
+       *((GFC_REAL_16 *) dest) = 0.0;
+       break;
+ #endif
+ #ifdef HAVE_GFC_REAL_17
+     case 17:
+       *((GFC_REAL_17 *) dest) = 0.0;
+       break;
+ #endif
+     default:
+       internal_error (&dtp->common, "Unsupported real kind during IO");
+     }
+   return;
+ 
+ bad_float:
+   if (buf_size > READEX_TMP)
+     free (buffer);
+   generate_error (&dtp->common, LIBERROR_READ_VALUE,
+ 		  "Bad value during floating point read");
+   next_record (dtp, 1);
+   return;
+ }
+ 
+ 
  /* read_x()-- Deal with the X/TR descriptor.  We just read some data
     and never look at it. */
  
diff -Nrcpad gcc-17-20260607/libgfortran/io/transfer.c gcc-17-20260614/libgfortran/io/transfer.c
*** gcc-17-20260607/libgfortran/io/transfer.c	Sun Jun  7 22:32:15 2026
--- gcc-17-20260614/libgfortran/io/transfer.c	Sun Jun 14 22:32:16 2026
*************** formatted_transfer_scalar_read (st_param
*** 1840,1845 ****
--- 1840,1853 ----
  	  read_f (dtp, f, p, kind);
  	  break;
  
+ 	case FMT_EX:
+ 	  if (n == 0)
+ 	    goto need_read_data;
+ 	  if (require_type (dtp, BT_REAL, type, f))
+ 	    return;
+ 	  read_ex (dtp, f, p, kind);
+ 	  break;
+ 
  	case FMT_F:
  	  if (n == 0)
  	    goto need_read_data;
diff -Nrcpad gcc-17-20260607/libgfortran/mk-kinds-h.sh gcc-17-20260614/libgfortran/mk-kinds-h.sh
*** gcc-17-20260607/libgfortran/mk-kinds-h.sh	Sun Jun  7 22:32:15 2026
--- gcc-17-20260614/libgfortran/mk-kinds-h.sh	Sun Jun 14 22:32:16 2026
*************** smallest=""
*** 18,23 ****
--- 18,24 ----
  for k in $possible_integer_kinds; do
    echo "  integer (kind=$k) :: i" > tmp$$.f90
    echo "  i = 1_$k" >> tmp$$.f90
+   echo "  print *,i" >> tmp$$.f90
    echo "  end" >> tmp$$.f90
    if $compile -S tmp$$.f90 > /dev/null 2>&1; then
      s=`expr 8 \* $k`
*************** rm -f tmq$$.*
*** 61,66 ****
--- 62,68 ----
  for k in $possible_real_kinds; do
    echo "  real (kind=$k) :: x" > tmp$$.f90
    echo "  x = 1.0_$k" >> tmp$$.f90
+   echo "  print *,x" >> tmp$$.f90
    echo "  end" >> tmp$$.f90
    if $compile -S tmp$$.f90 > /dev/null 2>&1; then
      case $k in
diff -Nrcpad gcc-17-20260607/libgfortran/mk-sik-inc.sh gcc-17-20260614/libgfortran/mk-sik-inc.sh
*** gcc-17-20260607/libgfortran/mk-sik-inc.sh	Sun Jun  7 22:32:15 2026
--- gcc-17-20260614/libgfortran/mk-sik-inc.sh	Sun Jun 14 22:32:16 2026
*************** c=0
*** 15,20 ****
--- 15,21 ----
  for k in $possible_integer_kinds; do
    echo "  integer (kind=$k) :: x" > tmp$$.f90
    echo "  x = 1_$k" >> tmp$$.f90
+   echo "  print *,x" >> tmp$$.f90
    echo "  end" >> tmp$$.f90
    if $compile -S tmp$$.f90 > /dev/null 2>&1; then
      kinds="$kinds $k"
diff -Nrcpad gcc-17-20260607/libgfortran/mk-srk-inc.sh gcc-17-20260614/libgfortran/mk-srk-inc.sh
*** gcc-17-20260607/libgfortran/mk-srk-inc.sh	Sun Jun  7 22:32:15 2026
--- gcc-17-20260614/libgfortran/mk-srk-inc.sh	Sun Jun 14 22:32:16 2026
*************** c=0
*** 15,20 ****
--- 15,21 ----
  for k in $possible_real_kinds; do
    echo "  real (kind=$k) :: x" > tmp$$.f90
    echo "  x = 1.0_$k" >> tmp$$.f90
+   echo "  print *,x" >> tmp$$.f90
    echo "  end" >> tmp$$.f90
    if $compile -S tmp$$.f90 > /dev/null 2>&1; then
      kinds="$kinds $k"
diff -Nrcpad gcc-17-20260607/libgomp/ChangeLog gcc-17-20260614/libgomp/ChangeLog
*** gcc-17-20260607/libgomp/ChangeLog	Sun Jun  7 22:32:15 2026
--- gcc-17-20260614/libgomp/ChangeLog	Sun Jun 14 22:32:16 2026
***************
*** 1,3 ****
--- 1,62 ----
+ 2026-06-12  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	* config/linux/allocator.c: De-duplicate '#define _GNU_SOURCE'.
+ 
+ 2026-06-12  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	* plugin/plugin-gcn.c: '#define _GNU_SOURCE'.
+ 	* plugin/Makefrag.am (libgomp_plugin_gcn_la_CPPFLAGS): Don't add
+ 	'-D_GNU_SOURCE'.
+ 	* Makefile.in: Regenerate.
+ 
+ 2026-06-12  Thomas Schwinge  <tschwinge@baylibre.com>
+ 
+ 	PR target/101484
+ 	* configure.tgt [GCN] (XCFLAGS): Don't add '-Wno-error=array-bounds'.
+ 
+ 2026-06-12  Lipeng Zhu  <lipeng.zhu@intel.com>
+ 
+ 	PR testsuite/113005
+ 	* testsuite/libgomp.fortran/rwlock_1.f90: Enlarge buffer size of
+ 	'file_name' handling 5 instead of 3 digit I/O unit numbers.
+ 
+ 2026-06-11  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/30438
+ 	PR fortran/28004
+ 	* testsuite/libgomp.fortran/alloc-1.F90: Shut up -Wunused-but-set-variable.
+ 	* testsuite/libgomp.fortran/alloc-12.f90: Likewise.
+ 
+ 2026-06-10  Chung-Lin Tang  <cltang@baylibre.com>
+ 
+ 	PR fortran/122910
+ 	* testsuite/libgomp.fortran/pr122910.f90: New test.
+ 
+ 2026-06-09  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* libgomp.texi (GCN): Mention ROCR_VISIBLE_DEVICES.
+ 
+ 2026-06-07  Kwok Cheung Yeung  <kcyeung@baylibre.com>
+ 	    Andrew Stubbs   <ams@baylibre.com>
+ 	    Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	* testsuite/libgomp.fortran/target-update-iterators-1.f90: New.
+ 	* testsuite/libgomp.fortran/target-update-iterators-2.f90: New.
+ 	* testsuite/libgomp.fortran/target-update-iterators-3.f90: New.
+ 
+ 2026-06-07  Kwok Cheung Yeung  <kcyeung@baylibre.com>
+ 	    Andrew Stubbs  <ams@baylibre.com>
+ 	    Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	* target.c (kind_to_name): Handle GOMP_MAP_STRUCT and
+ 	GOMP_MAP_STRUCT_UNORD.
+ 	(gomp_add_map): New.
+ 	(gomp_merge_iterator_maps): Expand fields of a struct mapping
+ 	breadth-first.
+ 	* testsuite/libgomp.fortran/target-map-iterators-1.f90: New.
+ 	* testsuite/libgomp.fortran/target-map-iterators-2.f90: New.
+ 	* testsuite/libgomp.fortran/target-map-iterators-3.f90: New.
+ 
  2026-06-02  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
  
  	* oacc-parallel.c (GOACC_parallel_keyed): Use gomp_alloca instead
diff -Nrcpad gcc-17-20260607/libgomp/Makefile.in gcc-17-20260614/libgomp/Makefile.in
*** gcc-17-20260607/libgomp/Makefile.in	Sun Jun  7 22:32:19 2026
--- gcc-17-20260614/libgomp/Makefile.in	Sun Jun 14 22:32:20 2026
*************** libgomp_la_SOURCES = alloc.c atomic.c ba
*** 590,598 ****
  @PLUGIN_GCN_TRUE@libgomp_plugin_gcn_la_SOURCES = plugin/plugin-gcn.c simple-allocator.c \
  @PLUGIN_GCN_TRUE@				plugin/mutex.c
  
! @PLUGIN_GCN_TRUE@libgomp_plugin_gcn_la_CPPFLAGS = $(AM_CPPFLAGS) \
! @PLUGIN_GCN_TRUE@	-D_GNU_SOURCE
! 
  @PLUGIN_GCN_TRUE@libgomp_plugin_gcn_la_LDFLAGS = $(libgomp_plugin_gcn_version_info) \
  @PLUGIN_GCN_TRUE@	$(lt_host_flags)
  
--- 590,596 ----
  @PLUGIN_GCN_TRUE@libgomp_plugin_gcn_la_SOURCES = plugin/plugin-gcn.c simple-allocator.c \
  @PLUGIN_GCN_TRUE@				plugin/mutex.c
  
! @PLUGIN_GCN_TRUE@libgomp_plugin_gcn_la_CPPFLAGS = $(AM_CPPFLAGS)
  @PLUGIN_GCN_TRUE@libgomp_plugin_gcn_la_LDFLAGS = $(libgomp_plugin_gcn_version_info) \
  @PLUGIN_GCN_TRUE@	$(lt_host_flags)
  
diff -Nrcpad gcc-17-20260607/libgomp/config/linux/allocator.c gcc-17-20260614/libgomp/config/linux/allocator.c
*** gcc-17-20260607/libgomp/config/linux/allocator.c	Sun Jun  7 22:32:15 2026
--- gcc-17-20260614/libgomp/config/linux/allocator.c	Sun Jun 14 22:32:16 2026
***************
*** 51,57 ****
     that two pinned allocations don't share the same page.  This also means
     that large allocations don't pin extra pages by being poorly aligned.  */
  
- #define _GNU_SOURCE
  #include <sys/mman.h>
  #include <unistd.h>
  #include <string.h>
--- 51,56 ----
diff -Nrcpad gcc-17-20260607/libgomp/configure.tgt gcc-17-20260614/libgomp/configure.tgt
*** gcc-17-20260607/libgomp/configure.tgt	Sun Jun  7 22:32:15 2026
--- gcc-17-20260614/libgomp/configure.tgt	Sun Jun 14 22:32:16 2026
*************** case "${target}" in
*** 181,189 ****
  
    amdgcn*-*-*)
  	config_path="gcn accel"
- 
- 	#TODO PR101484
- 	XCFLAGS="$XCFLAGS -Wno-error=array-bounds"
  	;;
  
    *)
--- 181,186 ----
diff -Nrcpad gcc-17-20260607/libgomp/libgomp.texi gcc-17-20260614/libgomp/libgomp.texi
*** gcc-17-20260607/libgomp/libgomp.texi	Sun Jun  7 22:32:15 2026
--- gcc-17-20260614/libgomp/libgomp.texi	Sun Jun 14 22:32:16 2026
*************** The implementation remark:
*** 7236,7243 ****
        true, in which case the runtime will attempt to set the @code{HSA_XNACK}
        environment variable to @samp{1} automatically (user-set values are not
        overridden, and the setting only affects the executable itself and any
!       child processes).  If any AMD GPU device is not supported, all AMD GPUs
!       are removed from the list of available devices (``host fallback'').
  @item The available stack size can be changed using the @code{GCN_STACK_SIZE}
        environment variable; the default is 32 kiB per thread.
  @item Low-latency memory (@code{omp_low_lat_mem_space}) is supported when the
--- 7236,7245 ----
        true, in which case the runtime will attempt to set the @code{HSA_XNACK}
        environment variable to @samp{1} automatically (user-set values are not
        overridden, and the setting only affects the executable itself and any
!       child processes).  If any AMD GPU device does not support unified-shared
!       memory, all AMD GPUs are removed from the list of available devices
!       (``host fallback''); consider using @code{ROCR_VISIBLE_DEVICES} to only
!       enable devices supporting it.
  @item The available stack size can be changed using the @code{GCN_STACK_SIZE}
        environment variable; the default is 32 kiB per thread.
  @item Low-latency memory (@code{omp_low_lat_mem_space}) is supported when the
diff -Nrcpad gcc-17-20260607/libgomp/plugin/Makefrag.am gcc-17-20260614/libgomp/plugin/Makefrag.am
*** gcc-17-20260607/libgomp/plugin/Makefrag.am	Sun Jun  7 22:32:15 2026
--- gcc-17-20260614/libgomp/plugin/Makefrag.am	Sun Jun 14 22:32:16 2026
*************** libgomp_plugin_gcn_version_info = -versi
*** 59,66 ****
  toolexeclib_LTLIBRARIES += libgomp-plugin-gcn.la
  libgomp_plugin_gcn_la_SOURCES = plugin/plugin-gcn.c simple-allocator.c \
  				plugin/mutex.c
! libgomp_plugin_gcn_la_CPPFLAGS = $(AM_CPPFLAGS) \
! 	-D_GNU_SOURCE
  libgomp_plugin_gcn_la_LDFLAGS = $(libgomp_plugin_gcn_version_info) \
  	$(lt_host_flags)
  libgomp_plugin_gcn_la_LIBADD = libgomp.la
--- 59,65 ----
  toolexeclib_LTLIBRARIES += libgomp-plugin-gcn.la
  libgomp_plugin_gcn_la_SOURCES = plugin/plugin-gcn.c simple-allocator.c \
  				plugin/mutex.c
! libgomp_plugin_gcn_la_CPPFLAGS = $(AM_CPPFLAGS)
  libgomp_plugin_gcn_la_LDFLAGS = $(libgomp_plugin_gcn_version_info) \
  	$(lt_host_flags)
  libgomp_plugin_gcn_la_LIBADD = libgomp.la
diff -Nrcpad gcc-17-20260607/libgomp/plugin/plugin-gcn.c gcc-17-20260614/libgomp/plugin/plugin-gcn.c
*** gcc-17-20260607/libgomp/plugin/plugin-gcn.c	Sun Jun  7 22:32:15 2026
--- gcc-17-20260614/libgomp/plugin/plugin-gcn.c	Sun Jun 14 22:32:16 2026
***************
*** 28,33 ****
--- 28,34 ----
  
  /* {{{ Includes and defines  */
  
+ #define _GNU_SOURCE
  #include "config.h"
  #include "symcat.h"
  #include <stdio.h>
diff -Nrcpad gcc-17-20260607/libgomp/testsuite/libgomp.fortran/alloc-1.F90 gcc-17-20260614/libgomp/testsuite/libgomp.fortran/alloc-1.F90
*** gcc-17-20260607/libgomp/testsuite/libgomp.fortran/alloc-1.F90	Sun Jun  7 22:32:15 2026
--- gcc-17-20260614/libgomp/testsuite/libgomp.fortran/alloc-1.F90	Sun Jun 14 22:32:16 2026
***************
*** 48,54 ****
          call c_f_pointer (cp, p, [3])
          p(1) = 1
          p(2) = 2
!         p(3) = 3
          call omp_free (cp, omp_default_mem_alloc)
  
          cp = omp_alloc (2_c_size_t * c_sizeof (i),                      &
--- 48,54 ----
          call c_f_pointer (cp, p, [3])
          p(1) = 1
          p(2) = 2
!         p(3) = p(1) + p(2) ! Shut up -Wunused-but-set-variable
          call omp_free (cp, omp_default_mem_alloc)
  
          cp = omp_alloc (2_c_size_t * c_sizeof (i),                      &
***************
*** 64,69 ****
--- 64,70 ----
          if (mod (transfer (cp, intptr), 4_c_intptr_t) /= 0) stop 3
          call c_f_pointer (cp, p0)
          p0 = 3
+         p0 = p0 + 0 ! Shut up -Wunused-but-set-variable
          call omp_free (cp, omp_get_default_allocator ())
  
          traits = [omp_alloctrait (omp_atk_alignment, 64),               &
***************
*** 115,126 ****
--- 116,129 ----
          if (mod (transfer (cq, intptr), 16_c_intptr_t) /= 0) stop 12
          call c_f_pointer (cq, q, [768 / c_sizeof (i)])
          q(1) = 7
+         q(1) = q(1) + 0 ! Shut up -Wunused-but-set-variable
          q(768 / c_sizeof (i)) = 8
          cr = omp_alloc (512_c_size_t, a2)
          if (mod (transfer (cr, intptr), 4_c_intptr_t) /= 0) stop 13
          call c_f_pointer (cr, r, [512 / c_sizeof (i)])
          r(1) = 9
          r(512 / c_sizeof (i)) = 10
+         r(1) = r(1) + 0 ! Shut up -Wunused-but-set-variable
          call omp_free (cp, omp_null_allocator)
          call omp_free (cq, a2)
          call omp_free (cr, omp_null_allocator)
diff -Nrcpad gcc-17-20260607/libgomp/testsuite/libgomp.fortran/alloc-12.f90 gcc-17-20260614/libgomp/testsuite/libgomp.fortran/alloc-12.f90
*** gcc-17-20260607/libgomp/testsuite/libgomp.fortran/alloc-12.f90	Sun Jun  7 22:32:15 2026
--- gcc-17-20260614/libgomp/testsuite/libgomp.fortran/alloc-12.f90	Sun Jun 14 22:32:16 2026
*************** program main
*** 23,28 ****
--- 23,29 ----
    ip(1) = 1
    ip(2) = 2
    ip(3) = 3
+   if (ip(3) /= 3) stop 1
    call omp_free (p, a)
    call omp_destroy_allocator (a)
  end program main
diff -Nrcpad gcc-17-20260607/libgomp/testsuite/libgomp.fortran/pr122910.f90 gcc-17-20260614/libgomp/testsuite/libgomp.fortran/pr122910.f90
*** gcc-17-20260607/libgomp/testsuite/libgomp.fortran/pr122910.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/libgomp/testsuite/libgomp.fortran/pr122910.f90	Sun Jun 14 22:32:16 2026
***************
*** 0 ****
--- 1,84 ----
+ ! { dg-do run }
+ 
+ program main
+   implicit none
+ 
+   !$omp requires self_maps
+ 
+   integer :: i
+   INTEGER, POINTER :: fptr(:)
+   INTEGER, ALLOCATABLE :: alloc_array(:)
+   integer, parameter :: N = 5
+ 
+   ALLOCATE(fptr(N))
+   fptr = 7
+   alloc_array = [1,2,3,4,5,6]
+ 
+   !$omp target firstprivate(fptr, alloc_array)
+     DO i=1, N
+       fptr(i) = 5*i + fptr(i)
+     END DO
+     fptr => null() ! ptr must be privatized, pointer target not
+     if (any (alloc_array /= [1,2,3,4,5,6])) stop 1
+     alloc_array = alloc_array * 21
+   !$omp end target
+ 
+   ! pointer array: values shall be updated
+   if (any (fptr /= 7 + 5*[1,2,3,4,5])) stop 2
+   ! allocatables: shall not be updated
+   if (any (alloc_array /= [1,2,3,4,5,6])) stop 3
+ 
+   ! Check data-sharing constructs as well:
+   !$omp parallel firstprivate(fptr, alloc_array)
+     !$omp masked
+       fptr = fptr * 10
+       fptr => null()
+       if (any (alloc_array /= [1,2,3,4,5,6])) stop 4
+       alloc_array = alloc_array * 21
+     !$omp end masked
+   !$omp end parallel
+ 
+   if (any (fptr /= (7 + 5*[1,2,3,4,5])*10)) stop 5
+   if (any (alloc_array /= [1,2,3,4,5,6])) stop 6
+ 
+   call assumed_shape(alloc_array, N)
+ 
+   DEALLOCATE(fptr, alloc_array)
+ 
+ contains
+   subroutine assumed_shape(x, m)
+     integer, value :: m
+     integer :: x(:)
+     integer :: y(m)
+     integer, save :: z(5) 
+ 
+     y = [11,22,33,44,55]
+     z = [111,222,333,444,555]
+     !$omp target firstprivate(x,y,z)
+       if (any (x /= [1,2,3,4,5,6])) stop 7
+       if (any (y /= [11,22,33,44,55])) stop 8
+       if (any (z /= [111,222,333,444,555])) stop 9
+       x = 31 * x
+       y = 47 * y
+       z = 53 * z
+     !$omp end target
+ 
+     if (any (x /= [1,2,3,4,5,6])) stop 10
+     if (any (y /= [11,22,33,44,55])) stop 11
+     if (any (z /= [111,222,333,444,555])) stop 12
+ 
+     !$omp parallel firstprivate(x,y,z) if(.false.)
+       if (any (x /= [1,2,3,4,5,6])) stop 13
+       if (any (y /= [11,22,33,44,55])) stop 14
+       if (any (z /= [111,222,333,444,555])) stop 15
+       x = 31 * x
+       y = 47 * y
+       z = 53 * z
+     !$omp end parallel
+ 
+     if (any (x /= [1,2,3,4,5,6])) stop 16
+     if (any (y /= [11,22,33,44,55])) stop 17
+     if (any (z /= [111,222,333,444,555])) stop 18
+   end subroutine
+ 
+ end program
diff -Nrcpad gcc-17-20260607/libgomp/testsuite/libgomp.fortran/rwlock_1.f90 gcc-17-20260614/libgomp/testsuite/libgomp.fortran/rwlock_1.f90
*** gcc-17-20260607/libgomp/testsuite/libgomp.fortran/rwlock_1.f90	Sun Jun  7 22:32:15 2026
--- gcc-17-20260614/libgomp/testsuite/libgomp.fortran/rwlock_1.f90	Sun Jun 14 22:32:16 2026
*************** program main
*** 7,19 ****
    use omp_lib
    implicit none
    integer:: unit_number, v1, v2, i
!   character(11) :: file_name
    character(3) :: async = "no"
    !$omp parallel private (unit_number, v1, v2, file_name, async, i)
      do i = 0, 100
        unit_number = 10 + omp_get_thread_num ()
!       write (file_name, "(I3, A)") unit_number, "_tst.dat"
!       file_name = adjustl(file_name)
        open (unit_number, file=file_name, asynchronous="yes")
        ! call inquire with file parameter to test find_file in unix.c
        inquire (file=file_name, asynchronous=async)
--- 7,18 ----
    use omp_lib
    implicit none
    integer:: unit_number, v1, v2, i
!   character(16) :: file_name
    character(3) :: async = "no"
    !$omp parallel private (unit_number, v1, v2, file_name, async, i)
      do i = 0, 100
        unit_number = 10 + omp_get_thread_num ()
!       write (file_name, "(I5.5, A)") unit_number, "_tst.dat"
        open (unit_number, file=file_name, asynchronous="yes")
        ! call inquire with file parameter to test find_file in unix.c
        inquire (file=file_name, asynchronous=async)
diff -Nrcpad gcc-17-20260607/libiberty/ChangeLog gcc-17-20260614/libiberty/ChangeLog
*** gcc-17-20260607/libiberty/ChangeLog	Sun Jun  7 22:32:16 2026
--- gcc-17-20260614/libiberty/ChangeLog	Sun Jun 14 22:32:17 2026
***************
*** 1,3 ****
--- 1,30 ----
+ 2026-06-13  Sunil Dora  <sunilkumar.dora@windriver.com>
+ 
+ 	PR driver/111527
+ 	* argv.c (expandargstr): New function.
+ 
+ 2026-06-10  Pietro Monteiro  <pietro@sociotechnical.xyz>
+ 
+ 	* simple-object-mach-o.c (MACH_O_MH_DYLIB): New definition.
+ 	(simple_object_mach_o_match): Accept dylibs as well as object files.
+ 
+ 2026-06-07  Andrew Burgess  <aburgess@redhat.com>
+ 
+ 	* d-demangle.c (struct dlang_info::options): New field,
+ 	carries options passed to the demangler.
+ 	(struct dlang_info::num_backrefs): Count total number of back
+ 	referenced types that have been processed.
+ 	(struct dlang_info::backref_depth): Count the depth of
+ 	recursive back references.
+ 	(dlang_type_backref): Track recursive back reference depth,
+ 	and the total number of back references encountered.  Bail out
+ 	early if the total number gets too high.
+ 	(dlang_demangle_init_info): Initialise new 'struct dlang_info'
+ 	fields.
+ 	(dlang_demangle): Pass demangler options to
+ 	dlang_demangle_init_info.
+ 	* testsuite/d-demangle-expected: Add new test.
+ 
  2026-06-01  Jakub Jelinek  <jakub@redhat.com>
  
  	* configure: Regenerate.
diff -Nrcpad gcc-17-20260607/libiberty/argv.c gcc-17-20260614/libiberty/argv.c
*** gcc-17-20260607/libiberty/argv.c	Sun Jun  7 22:32:16 2026
--- gcc-17-20260614/libiberty/argv.c	Sun Jun 14 22:32:17 2026
*************** countargv (char * const *argv)
*** 492,497 ****
--- 492,572 ----
    return argc;
  }
  
+ /*
+ 
+ @deftypefn Extension {char *} expandargstr @
+   (const char *@var{progname}, const char *@var{val})
+ 
+ Expand @var{val} as a response file via @code{expandargv} if it begins
+ with @samp{@@}, using @var{progname} as @code{argv[0]}, and return the
+ expanded option list as a shell-quoted string.  Returns a newly
+ allocated string.
+ 
+ @end deftypefn
+ 
+ */
+ 
+ char *
+ expandargstr (const char *progname, const char *val)
+ {
+   int argc = 2;
+   char **argv;
+   char **orig;
+   size_t len;
+   char *buf;
+   char *p;
+   int i;
+ 
+   if (val[0] != '@')
+     return xstrdup (val);
+ 
+   argv = (char **) xcalloc (3, sizeof (char *));
+   orig = argv;
+   argv[0] = xstrdup (progname);
+   argv[1] = xstrdup (val);
+   argv[2] = NULL;
+   expandargv (&argc, &argv);
+   if (argv != orig)
+     freeargv (orig);
+ 
+   len = 1;
+   for (i = 1; argv[i] != NULL; i++)
+     {
+       const char *q;
+       if (i > 1)
+ 	len++;
+       len += 2;
+       for (q = argv[i]; *q; q++)
+ 	len += (*q == '\'') ? 4 : 1;
+     }
+ 
+   buf = (char *) xmalloc (len);
+   p = buf;
+   for (i = 1; argv[i] != NULL; i++)
+     {
+       const char *q;
+       if (i > 1)
+ 	*p++ = ' ';
+       *p++ = '\'';
+       for (q = argv[i]; *q; q++)
+ 	{
+ 	  if (*q == '\'')
+ 	    {
+ 	      *p++ = '\'';
+ 	      *p++ = '\\';
+ 	      *p++ = '\'';
+ 	      *p++ = '\'';
+ 	    }
+ 	  else
+ 	    *p++ = *q;
+ 	}
+       *p++ = '\'';
+     }
+   *p = '\0';
+   freeargv (argv);
+   return buf;
+ }
+ 
  #ifdef MAIN
  
  /* Simple little test driver. */
diff -Nrcpad gcc-17-20260607/libiberty/simple-object-mach-o.c gcc-17-20260614/libiberty/simple-object-mach-o.c
*** gcc-17-20260607/libiberty/simple-object-mach-o.c	Sun Jun  7 22:32:16 2026
--- gcc-17-20260614/libiberty/simple-object-mach-o.c	Sun Jun 14 22:32:17 2026
*************** struct mach_o_header_64
*** 78,83 ****
--- 78,84 ----
  /* For filetype field in header.  */
  
  #define MACH_O_MH_OBJECT		0x01
+ #define MACH_O_MH_DYLIB			0x06
  
  /* A Mach-O file is a list of load commands.  This is the header of a
     load command.  */
*************** simple_object_mach_o_match (
*** 312,320 ****
    b = &buf[0];
  
    filetype = (*fetch_32) (b + offsetof (struct mach_o_header_32, filetype));
!   if (filetype != MACH_O_MH_OBJECT)
      {
!       *errmsg = "Mach-O file is not object file";
        *err = 0;
        return NULL;
      }
--- 313,321 ----
    b = &buf[0];
  
    filetype = (*fetch_32) (b + offsetof (struct mach_o_header_32, filetype));
!   if (!(filetype == MACH_O_MH_OBJECT || filetype == MACH_O_MH_DYLIB))
      {
!       *errmsg = "Mach-O file is neither object file nor dylib";
        *err = 0;
        return NULL;
      }
diff -Nrcpad gcc-17-20260607/libstdc++-v3/ChangeLog gcc-17-20260614/libstdc++-v3/ChangeLog
*** gcc-17-20260607/libstdc++-v3/ChangeLog	Sun Jun  7 22:32:16 2026
--- gcc-17-20260614/libstdc++-v3/ChangeLog	Sun Jun 14 22:32:17 2026
***************
*** 1,3 ****
--- 1,41 ----
+ 2026-06-13  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/bits/version.def (constant_wrapper): Bump to 202606L.
+ 	* include/bits/version.h: Regenerate.
+ 	* include/bits/funcref_impl.h (function_ref::function_ref): Rename
+ 	template parameter from __cwfn to __fn and use it direclty.
+ 	* include/bits/funcwrap.h (function_ref): Rename template parameter
+ 	to __fn.
+ 	(std::constant_wrapper): Use auto as non-type template parameter,
+ 	and refeference it as value.
+ 	* include/bits/utility.h (__CwFixedValue): Remove.
+ 	* testsuite/20_util/constant_wrapper/generic.cc: Remove arrays
+ 	and string literal tests. Add test for address of value.
+ 	* testsuite/20_util/constant_wrapper/other_wrappers.cc:
+ 	Remove test_array.
+ 	* testsuite/20_util/constant_wrapper/type_param_neg.cc: New file.
+ 
+ 2026-06-08  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/xml/manual/abi.xml: Spell command-line option with a dash.
+ 	Simplify language.
+ 	* doc/html/manual/abi.html: Regenerate.
+ 
+ 2026-06-08  Haochen Jiang  <haochen.jiang@intel.com>
+ 
+ 	* testsuite/libstdc++-prettyprinters/prettyprinters.exp: Pass
+ 	-flto as the options to make it shown in test report.
+ 
+ 2026-06-05  Yuao Ma  <c8ef@outlook.com>
+ 
+ 	* include/std/generator (generator::yield_value): Change the
+ 	second template parameter from range_value_t<R> to void.
+ 	* testsuite/24_iterators/range_generators/lwg4119.cc: New test.
+ 
+ 2026-06-04  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/debug/safe_iterator.h: Remove trailing whitespace.
+ 
  2026-06-03  Jonathan Wakely  <jwakely@redhat.com>
  
  	* include/bits/version.def: Define macros for hardened
diff -Nrcpad gcc-17-20260607/libstdc++-v3/doc/html/manual/abi.html gcc-17-20260614/libstdc++-v3/doc/html/manual/abi.html
*** gcc-17-20260607/libstdc++-v3/doc/html/manual/abi.html	Sun Jun  7 22:32:16 2026
--- gcc-17-20260614/libstdc++-v3/doc/html/manual/abi.html	Sun Jun 14 22:32:17 2026
***************
*** 22,31 ****
    GNU C++ compiler uses an industry-standard C++ ABI, the
    <a class="link" href="abi.html#biblio.cxxabi" title="Itanium C++ ABI">Itanium C++ ABI</a>.
  </p><p>
!  The GNU C++ compiler, g++, has a compiler command line option to
    switch between various different C++ ABIs. This explicit version
    switch is the flag <code class="code">-fabi-version</code>. In addition, some
!   g++ command line options may change the ABI as a side-effect of
    use. Such flags include <code class="code">-fpack-struct</code> and
    <code class="code">-fno-exceptions</code>, but include others: see the complete
    list in the GCC manual under the heading <a class="link" href="https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code%20Gen%20Options" target="_top">Options
--- 22,31 ----
    GNU C++ compiler uses an industry-standard C++ ABI, the
    <a class="link" href="abi.html#biblio.cxxabi" title="Itanium C++ ABI">Itanium C++ ABI</a>.
  </p><p>
!   The GNU C++ compiler, g++, has a command-line option to
    switch between various different C++ ABIs. This explicit version
    switch is the flag <code class="code">-fabi-version</code>. In addition, some
!   command-line options may change the ABI as a side-effect of
    use. Such flags include <code class="code">-fpack-struct</code> and
    <code class="code">-fno-exceptions</code>, but include others: see the complete
    list in the GCC manual under the heading <a class="link" href="https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code%20Gen%20Options" target="_top">Options
*************** compatible.
*** 137,143 ****
      This macro was defined in the file "lang-specs.h" in the gcc/cp directory.
      Later versions defined it in "c-common.c" in the gcc directory, and from
      G++ 3.4 it is defined in c-cppbuiltin.c and its value determined by the
!     '-fabi-version' command line option.
      </p><p>
      It is versioned as follows, where 'n' is given by '-fabi-version=n':
      </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>GCC 3.0: 100</p></li><li class="listitem"><p>GCC 3.1: 100 (Error, should be 101)</p></li><li class="listitem"><p>GCC 3.2: 102</p></li><li class="listitem"><p>GCC 3.3: 102</p></li><li class="listitem"><p>GCC 3.4, GCC 4.x: 102 (when n=1)</p></li><li class="listitem"><p>GCC 3.4, GCC 4.x: 1000 + n (when n&gt;1) </p></li><li class="listitem"><p>GCC 3.4, GCC 4.x: 999999 (when n=0)</p></li></ul></div><p></p></li><li class="listitem"><p>Changes to the default compiler option for
--- 137,143 ----
      This macro was defined in the file "lang-specs.h" in the gcc/cp directory.
      Later versions defined it in "c-common.c" in the gcc directory, and from
      G++ 3.4 it is defined in c-cppbuiltin.c and its value determined by the
!     '-fabi-version' command-line option.
      </p><p>
      It is versioned as follows, where 'n' is given by '-fabi-version=n':
      </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>GCC 3.0: 100</p></li><li class="listitem"><p>GCC 3.1: 100 (Error, should be 101)</p></li><li class="listitem"><p>GCC 3.2: 102</p></li><li class="listitem"><p>GCC 3.3: 102</p></li><li class="listitem"><p>GCC 3.4, GCC 4.x: 102 (when n=1)</p></li><li class="listitem"><p>GCC 3.4, GCC 4.x: 1000 + n (when n&gt;1) </p></li><li class="listitem"><p>GCC 3.4, GCC 4.x: 999999 (when n=0)</p></li></ul></div><p></p></li><li class="listitem"><p>Changes to the default compiler option for
diff -Nrcpad gcc-17-20260607/libstdc++-v3/doc/xml/manual/abi.xml gcc-17-20260614/libstdc++-v3/doc/xml/manual/abi.xml
*** gcc-17-20260607/libstdc++-v3/doc/xml/manual/abi.xml	Sun Jun  7 22:32:16 2026
--- gcc-17-20260614/libstdc++-v3/doc/xml/manual/abi.xml	Sun Jun 14 22:32:17 2026
***************
*** 46,55 ****
  </para>
  
  <para>
!  The GNU C++ compiler, g++, has a compiler command line option to
    switch between various different C++ ABIs. This explicit version
    switch is the flag <code>-fabi-version</code>. In addition, some
!   g++ command line options may change the ABI as a side-effect of
    use. Such flags include <code>-fpack-struct</code> and
    <code>-fno-exceptions</code>, but include others: see the complete
    list in the GCC manual under the heading <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code%20Gen%20Options">Options
--- 46,55 ----
  </para>
  
  <para>
!   The GNU C++ compiler, g++, has a command-line option to
    switch between various different C++ ABIs. This explicit version
    switch is the flag <code>-fabi-version</code>. In addition, some
!   command-line options may change the ABI as a side-effect of
    use. Such flags include <code>-fpack-struct</code> and
    <code>-fno-exceptions</code>, but include others: see the complete
    list in the GCC manual under the heading <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code%20Gen%20Options">Options
*************** compatible.
*** 381,387 ****
      This macro was defined in the file "lang-specs.h" in the gcc/cp directory.
      Later versions defined it in "c-common.c" in the gcc directory, and from
      G++ 3.4 it is defined in c-cppbuiltin.c and its value determined by the
!     '-fabi-version' command line option.
      </para>
  
      <para>
--- 381,387 ----
      This macro was defined in the file "lang-specs.h" in the gcc/cp directory.
      Later versions defined it in "c-common.c" in the gcc directory, and from
      G++ 3.4 it is defined in c-cppbuiltin.c and its value determined by the
!     '-fabi-version' command-line option.
      </para>
  
      <para>
diff -Nrcpad gcc-17-20260607/libstdc++-v3/include/bits/funcref_impl.h gcc-17-20260614/libstdc++-v3/include/bits/funcref_impl.h
*** gcc-17-20260607/libstdc++-v3/include/bits/funcref_impl.h	Sun Jun  7 22:32:16 2026
--- gcc-17-20260614/libstdc++-v3/include/bits/funcref_impl.h	Sun Jun 14 22:32:17 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 132,143 ****
        // _GLIBCXX_RESOLVE_LIB_DEFECTS
        // 4256. Incorrect constrains for function_ref constructors from nontype
        /// Target object is __fn. There is no bound object.
!       template<auto __cwfn, typename _Fn>
  	requires __is_invocable_using<const _Fn&>
  	constexpr
! 	function_ref(constant_wrapper<__cwfn, _Fn>) noexcept
  	{
- 	  constexpr const _Fn& __fn = constant_wrapper<__cwfn, _Fn>::value;
  	  if constexpr (sizeof...(_ArgTypes) > 0)
  	    if constexpr ((... && _ConstExprParam<remove_cvref_t<_ArgTypes>>))
  	      static_assert(!requires {
--- 132,142 ----
        // _GLIBCXX_RESOLVE_LIB_DEFECTS
        // 4256. Incorrect constrains for function_ref constructors from nontype
        /// Target object is __fn. There is no bound object.
!       template<auto __fn, typename _Fn>
  	requires __is_invocable_using<const _Fn&>
  	constexpr
! 	function_ref(constant_wrapper<__fn, _Fn>) noexcept
  	{
  	  if constexpr (sizeof...(_ArgTypes) > 0)
  	    if constexpr ((... && _ConstExprParam<remove_cvref_t<_ArgTypes>>))
  	      static_assert(!requires {
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 153,166 ****
  
        /// Target object is equivalent to std::bind_front<_fn>(std::ref(__ref)).
        /// Bound object is object referenced by second parameter.
!       template<auto __cwfn, typename _Fn, typename _Up,
  	       typename _Td = remove_reference_t<_Up>>
  	requires (!is_rvalue_reference_v<_Up&&>)
  		 && __is_invocable_using<const _Fn&, _Td _GLIBCXX_MOF_CV&>
  	constexpr
! 	function_ref(constant_wrapper<__cwfn, _Fn>, _Up&& __ref) noexcept
  	{
- 	  constexpr const _Fn& __fn = constant_wrapper<__cwfn, _Fn>::value;
  	  if constexpr (is_pointer_v<_Fn> || is_member_pointer_v<_Fn>)
  	    static_assert(__fn != nullptr);
  
--- 152,164 ----
  
        /// Target object is equivalent to std::bind_front<_fn>(std::ref(__ref)).
        /// Bound object is object referenced by second parameter.
!       template<auto __fn, typename _Fn, typename _Up,
  	       typename _Td = remove_reference_t<_Up>>
  	requires (!is_rvalue_reference_v<_Up&&>)
  		 && __is_invocable_using<const _Fn&, _Td _GLIBCXX_MOF_CV&>
  	constexpr
! 	function_ref(constant_wrapper<__fn, _Fn>, _Up&& __ref) noexcept
  	{
  	  if constexpr (is_pointer_v<_Fn> || is_member_pointer_v<_Fn>)
  	    static_assert(__fn != nullptr);
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 176,187 ****
  
        /// Target object is equivalent to std::bind_front<_fn>(__ptr).
        /// Bound object is object pointed by second parameter (if any).
!       template< auto __cwfn, typename _Fn, typename _Td>
  	requires __is_invocable_using<const _Fn&, _Td _GLIBCXX_MOF_CV*>
  	constexpr
! 	function_ref(constant_wrapper<__cwfn, _Fn>, _Td _GLIBCXX_MOF_CV* __ptr) noexcept
  	{
- 	  constexpr const _Fn& __fn = constant_wrapper<__cwfn, _Fn>::value;
  	  if constexpr (is_pointer_v<_Fn> || is_member_pointer_v<_Fn>)
  	    static_assert(__fn != nullptr);
  	  if constexpr (is_member_pointer_v<_Fn>)
--- 174,184 ----
  
        /// Target object is equivalent to std::bind_front<_fn>(__ptr).
        /// Bound object is object pointed by second parameter (if any).
!       template<auto __fn, typename _Fn, typename _Td>
  	requires __is_invocable_using<const _Fn&, _Td _GLIBCXX_MOF_CV*>
  	constexpr
! 	function_ref(constant_wrapper<__fn, _Fn>, _Td _GLIBCXX_MOF_CV* __ptr) noexcept
  	{
  	  if constexpr (is_pointer_v<_Fn> || is_member_pointer_v<_Fn>)
  	    static_assert(__fn != nullptr);
  	  if constexpr (is_member_pointer_v<_Fn>)
diff -Nrcpad gcc-17-20260607/libstdc++-v3/include/bits/funcwrap.h gcc-17-20260614/libstdc++-v3/include/bits/funcwrap.h
*** gcc-17-20260607/libstdc++-v3/include/bits/funcwrap.h	Sun Jun  7 22:32:16 2026
--- gcc-17-20260614/libstdc++-v3/include/bits/funcwrap.h	Sun Jun 14 22:32:17 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 592,607 ****
      requires is_function_v<_Fn>
      function_ref(_Fn*) -> function_ref<_Fn>;
  
!   template<auto __cwfn, typename _Fn>
      requires is_function_v<remove_pointer_t<_Fn>>
!     function_ref(constant_wrapper<__cwfn, _Fn>)
        -> function_ref<remove_pointer_t<_Fn>>;
  
!   template<auto __cwfn, typename _Fn, typename _Tp,
  	   typename _SignaturePtr =
  	     decltype(__polyfunc::__deduce_funcref<_Fn, _Tp&>())>
      requires (!is_void_v<_SignaturePtr>)
!     function_ref(constant_wrapper<__cwfn, _Fn>, _Tp&&)
        -> function_ref<remove_pointer_t<_SignaturePtr>>;
  
    /// @cond undocumented
--- 592,607 ----
      requires is_function_v<_Fn>
      function_ref(_Fn*) -> function_ref<_Fn>;
  
!   template<auto __fn, typename _Fn>
      requires is_function_v<remove_pointer_t<_Fn>>
!     function_ref(constant_wrapper<__fn, _Fn>)
        -> function_ref<remove_pointer_t<_Fn>>;
  
!   template<auto __fn, typename _Fn, typename _Tp,
  	   typename _SignaturePtr =
  	     decltype(__polyfunc::__deduce_funcref<_Fn, _Tp&>())>
      requires (!is_void_v<_SignaturePtr>)
!     function_ref(constant_wrapper<__fn, _Fn>, _Tp&&)
        -> function_ref<remove_pointer_t<_SignaturePtr>>;
  
    /// @cond undocumented
diff -Nrcpad gcc-17-20260607/libstdc++-v3/include/bits/utility.h gcc-17-20260614/libstdc++-v3/include/bits/utility.h
*** gcc-17-20260607/libstdc++-v3/include/bits/utility.h	Sun Jun  7 22:32:16 2026
--- gcc-17-20260614/libstdc++-v3/include/bits/utility.h	Sun Jun 14 22:32:17 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 141,182 ****
  #endif
  
  #ifdef __glibcxx_constant_wrapper // C++ >= 26
!   template<typename _Tp>
!     struct _CwFixedValue
!     {
!       using __type = _Tp;
! 
!       constexpr
!       _CwFixedValue(__type __v) noexcept
!       : _M_data(__v) { }
! 
!       __type _M_data;
!     };
! 
!   template<typename _Tp, size_t _Extent>
!     struct _CwFixedValue<_Tp[_Extent]>
!     {
!       using __type = _Tp[_Extent];
! 
!       constexpr
!       _CwFixedValue(_Tp (&__arr)[_Extent]) noexcept
!         : _CwFixedValue(__arr, typename _Build_index_tuple<_Extent>::__type())
!       { }
! 
!       template<size_t... _Indices>
! 	constexpr
! 	_CwFixedValue(_Tp (&__arr)[_Extent], _Index_tuple<_Indices...>) noexcept
! 	  : _M_data{__arr[_Indices]...}
! 	{ }
! 
!       _Tp _M_data[_Extent];
!     };
! 
!   template<typename _Tp, size_t _Extent>
!     _CwFixedValue(_Tp (&)[_Extent]) -> _CwFixedValue<_Tp[_Extent]>;
! 
!   template<_CwFixedValue _Xv,
! 	   typename = typename decltype(_CwFixedValue(_Xv))::__type>
      struct constant_wrapper;
  
    template<typename _Tp>
--- 141,148 ----
  #endif
  
  #ifdef __glibcxx_constant_wrapper // C++ >= 26
!   // remove_cvref_t needed due PR115314
!   template<auto _Xv, typename _Vt = remove_cvref_t<decltype(_Xv)>>
      struct constant_wrapper;
  
    template<typename _Tp>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 430,441 ****
        { return {}; }
    };
  
!   template<_CwFixedValue _Xv, typename>
    struct constant_wrapper : _CwOperators
    {
!     static constexpr const auto& value = _Xv._M_data;
      using type = constant_wrapper;
!     using value_type = typename decltype(_Xv)::__type;
  
      template<_ConstExprParam _Right>
        constexpr auto
--- 396,409 ----
        { return {}; }
    };
  
!   template<auto _Xv, typename _Vt>
    struct constant_wrapper : _CwOperators
    {
!     // Use decltype((_Xv)) instead of decltype(auto) due PR125188
!     static constexpr decltype((_Xv)) value = (_Xv);
      using type = constant_wrapper;
!     using value_type = decltype(_Xv);
!     static_assert(is_same_v<value_type, _Vt>);
  
      template<_ConstExprParam _Right>
        constexpr auto
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 490,497 ****
    template<auto __cw, typename _Fn>
      constexpr bool __is_constant_wrapper_v<constant_wrapper<__cw, _Fn>> = true;
  
!   template<_CwFixedValue _Tp>
!     constexpr auto cw = constant_wrapper<_Tp>{};
  #endif
  
  #ifdef __glibcxx_integer_sequence // C++ >= 14
--- 458,465 ----
    template<auto __cw, typename _Fn>
      constexpr bool __is_constant_wrapper_v<constant_wrapper<__cw, _Fn>> = true;
  
!   template<auto _Xv>
!     constexpr auto cw = constant_wrapper<_Xv>{};
  #endif
  
  #ifdef __glibcxx_integer_sequence // C++ >= 14
diff -Nrcpad gcc-17-20260607/libstdc++-v3/include/bits/version.def gcc-17-20260614/libstdc++-v3/include/bits/version.def
*** gcc-17-20260607/libstdc++-v3/include/bits/version.def	Sun Jun  7 22:32:16 2026
--- gcc-17-20260614/libstdc++-v3/include/bits/version.def	Sun Jun 14 22:32:17 2026
*************** ftms = {
*** 410,418 ****
    name = constant_wrapper;
    // 202506 P2781R9 std::constexpr_wrapper 
    // 202603 P3978R3 constant_wrapper should unwrap on call and subscript
    values = {
!     v = 202603;
!     cxxmin = 26;
    };
  };
  
--- 410,419 ----
    name = constant_wrapper;
    // 202506 P2781R9 std::constexpr_wrapper 
    // 202603 P3978R3 constant_wrapper should unwrap on call and subscript
+   // 202606 P4206R0 Revert string support in std::constant_wrapper
    values = {
!     v = 202606;
!     cxxmin = 26; // P4206R0 accepted as DR for C++26
    };
  };
  
diff -Nrcpad gcc-17-20260607/libstdc++-v3/include/bits/version.h gcc-17-20260614/libstdc++-v3/include/bits/version.h
*** gcc-17-20260607/libstdc++-v3/include/bits/version.h	Sun Jun  7 22:32:19 2026
--- gcc-17-20260614/libstdc++-v3/include/bits/version.h	Sun Jun 14 22:32:17 2026
***************
*** 447,455 ****
  
  #if !defined(__cpp_lib_constant_wrapper)
  # if (__cplusplus >  202302L)
! #  define __glibcxx_constant_wrapper 202603L
  #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_constant_wrapper)
! #   define __cpp_lib_constant_wrapper 202603L
  #  endif
  # endif
  #endif /* !defined(__cpp_lib_constant_wrapper) */
--- 447,455 ----
  
  #if !defined(__cpp_lib_constant_wrapper)
  # if (__cplusplus >  202302L)
! #  define __glibcxx_constant_wrapper 202606L
  #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_constant_wrapper)
! #   define __cpp_lib_constant_wrapper 202606L
  #  endif
  # endif
  #endif /* !defined(__cpp_lib_constant_wrapper) */
diff -Nrcpad gcc-17-20260607/libstdc++-v3/testsuite/20_util/constant_wrapper/generic.cc gcc-17-20260614/libstdc++-v3/testsuite/20_util/constant_wrapper/generic.cc
*** gcc-17-20260607/libstdc++-v3/testsuite/20_util/constant_wrapper/generic.cc	Sun Jun  7 22:32:16 2026
--- gcc-17-20260614/libstdc++-v3/testsuite/20_util/constant_wrapper/generic.cc	Sun Jun 14 22:32:17 2026
*************** check_same(auto actual, auto expected)
*** 12,65 ****
    static_assert(std::same_as<decltype(actual), decltype(expected)>);
  };
  
- 
- constexpr void
- test_c_arrays()
- {
-   constexpr double x[] = {1.1, 2.2, 3.3};
-   auto cx = std::cw<x>;
-   auto access = [](auto x, size_t i)
-   { return x[i]; };
- 
-   check_same(std::cw<x>[0], x[0]);
-   check_same(std::cw<x>[1], x[1]);
-   check_same(std::cw<x>[2], x[2]);
- 
-   check_same(cx[std::cw<0>], std::cw<x[0]>);
-   check_same(cx[std::cw<1>], std::cw<x[1]>);
-   check_same(cx[std::cw<2>], std::cw<x[2]>);
- }
- 
- constexpr size_t
- deduce_cstr_size(auto str)
- {
-   size_t sz = 0;
-   while(str[sz++] != '\0') { }
-   return sz;
- }
- 
- constexpr void
- test_string_literals()
- {
-   auto foo = std::cw<"foo">;
-   constexpr const typename decltype(foo)::value_type & cstr = foo;
-   constexpr size_t N = std::size(cstr);
-   constexpr auto foo_view = std::string_view(cstr, N-1);
- 
-   constexpr const char (&cstr1)[deduce_cstr_size(foo)] = foo;
-   constexpr size_t N1 = std::size(cstr);
- 
-   static_assert(static_cast<char const*>(cstr) ==
- 		static_cast<char const*>(cstr1));
-   static_assert(N1 == N);
- 
-   static_assert(foo[0] == 'f');
-   static_assert(foo[1] == 'o');
-   static_assert(foo[2] == 'o');
-   static_assert(foo[3] == '\0');
-   static_assert(static_cast<char const *>(foo) == foo_view);
- }
- 
  constexpr bool
  convert_constexpr(auto c)
  {
--- 12,17 ----
*************** test_ints()
*** 93,98 ****
--- 45,71 ----
    VERIFY(two + 3 == std::cw<5>);
  }
  
+ constexpr void
+ test_objects()
+ {
+   if consteval {
+     return;
+   }
+ 
+   auto check = []<auto V>
+   {
+     VERIFY(&V == &std::constant_wrapper<V>::value);
+     std::constant_wrapper<V> cw;
+     VERIFY(&V == &cw.value);
+   };
+ 
+   struct Obj
+   { int x; };
+ 
+   check.operator()<Obj{10}>();
+   check.operator()<Obj{20}>();
+ }
+ 
  constexpr int
  add(int i, int j)
  { return i + j; }
*************** test_assignment()
*** 586,597 ****
  	     std::cw<ConstAssignable{2}>);
  }
  
- 
  constexpr bool
  test_all()
  {
-   test_c_arrays();
    test_ints();
    test_function_object();
    test_function_pointer();
    test_indexable1();
--- 559,569 ----
  	     std::cw<ConstAssignable{2}>);
  }
  
  constexpr bool
  test_all()
  {
    test_ints();
+   test_objects();
    test_function_object();
    test_function_pointer();
    test_indexable1();
diff -Nrcpad gcc-17-20260607/libstdc++-v3/testsuite/20_util/constant_wrapper/other_wrappers.cc gcc-17-20260614/libstdc++-v3/testsuite/20_util/constant_wrapper/other_wrappers.cc
*** gcc-17-20260607/libstdc++-v3/testsuite/20_util/constant_wrapper/other_wrappers.cc	Sun Jun  7 22:32:16 2026
--- gcc-17-20260614/libstdc++-v3/testsuite/20_util/constant_wrapper/other_wrappers.cc	Sun Jun 14 22:32:17 2026
*************** test_mix_integer_constant()
*** 31,49 ****
  }
  
  constexpr void
- test_array()
- {
-   constexpr double x[] = {1.1, 2.2, 3.3};
-   auto cx = std::cw<x>;
-   auto i2 = std::integral_constant<int, 2>{};
-   auto w2 = ConstWrapper<int, 2>{};
- 
-   check_same(x[i2], x[2]);
-   check_same(cx[i2], std::cw<x[2]>);
-   check_same(cx[w2], std::cw<x[2]>);
- }
- 
- constexpr void
  test_function_object()
  {
    auto cadd = std::cw<[](int i, int j) { return i + j; }>;
--- 31,36 ----
*************** constexpr bool
*** 61,67 ****
  test_all()
  {
    test_mix_integer_constant();
-   test_array();
    test_function_object();
    return true;
  }
--- 48,53 ----
diff -Nrcpad gcc-17-20260607/libstdc++-v3/testsuite/20_util/constant_wrapper/type_param_neg.cc gcc-17-20260614/libstdc++-v3/testsuite/20_util/constant_wrapper/type_param_neg.cc
*** gcc-17-20260607/libstdc++-v3/testsuite/20_util/constant_wrapper/type_param_neg.cc	Thu Jan  1 00:00:00 1970
--- gcc-17-20260614/libstdc++-v3/testsuite/20_util/constant_wrapper/type_param_neg.cc	Sun Jun 14 22:32:17 2026
***************
*** 0 ****
--- 1,9 ----
+ // { dg-do compile { target c++26 } }
+ #include <utility>
+ 
+ std::constant_wrapper<1, float> c1;      // { dg-error "from here" }
+ std::constant_wrapper<1.0, int> c2;      // { dg-error "from here" }
+ std::constant_wrapper<1, int const> c3;  // { dg-error "from here" }
+ std::constant_wrapper<1, int const&> c4; // { dg-error "from here" }
+ 
+ // { dg-prune-output "static assertion failed" }
diff -Nrcpad gcc-17-20260607/libstdc++-v3/testsuite/libstdc++-prettyprinters/prettyprinters.exp gcc-17-20260614/libstdc++-v3/testsuite/libstdc++-prettyprinters/prettyprinters.exp
*** gcc-17-20260607/libstdc++-v3/testsuite/libstdc++-prettyprinters/prettyprinters.exp	Sun Jun  7 22:32:17 2026
--- gcc-17-20260614/libstdc++-v3/testsuite/libstdc++-prettyprinters/prettyprinters.exp	Sun Jun 14 22:32:18 2026
*************** if { [check_effective_target_lto] } {
*** 52,58 ****
    # Work around linker bug https://sourceware.org/PR20882
    regsub {^(.*)-Wl,--gc-sections(.*)$} $cxxldflags {\1\2} cxxldflags
    gdb-dg-runtest [lsort [glob $srcdir/$subdir/*.cc]] \
!     "" "$DEFAULT_CXXFLAGS -flto $PCH_CXXFLAGS"
  }
  
  if [info exists guality_gdb_name] {
--- 52,58 ----
    # Work around linker bug https://sourceware.org/PR20882
    regsub {^(.*)-Wl,--gc-sections(.*)$} $cxxldflags {\1\2} cxxldflags
    gdb-dg-runtest [lsort [glob $srcdir/$subdir/*.cc]] \
!     "-flto" "$DEFAULT_CXXFLAGS $PCH_CXXFLAGS"
  }
  
  if [info exists guality_gdb_name] {
diff -Nrcpad gcc-17-20260607/lto-plugin/ChangeLog gcc-17-20260614/lto-plugin/ChangeLog
*** gcc-17-20260607/lto-plugin/ChangeLog	Sun Jun  7 22:32:17 2026
--- gcc-17-20260614/lto-plugin/ChangeLog	Sun Jun 14 22:32:18 2026
***************
*** 1,3 ****
--- 1,9 ----
+ 2026-06-13  Sunil Dora  <sunilkumar.dora@windriver.com>
+ 
+ 	PR driver/111527
+ 	* lto-plugin.c (read_collect_gcc_options): New function.
+ 	(onload): Use read_collect_gcc_options instead of getenv.
+ 
  2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
  
  	* lto-plugin.c (startswith): Fix typos.
diff -Nrcpad gcc-17-20260607/lto-plugin/lto-plugin.c gcc-17-20260614/lto-plugin/lto-plugin.c
*** gcc-17-20260607/lto-plugin/lto-plugin.c	Sun Jun  7 22:32:17 2026
--- gcc-17-20260614/lto-plugin/lto-plugin.c	Sun Jun 14 22:32:18 2026
*************** negotiate_api_version (void)
*** 1506,1511 ****
--- 1506,1531 ----
      }
  }
  
+ /* Return COLLECT_GCC_OPTIONS, expanding an @file reference if present.
+    Returns NULL if unset.  Result owned by an internal cache.  */
+ 
+ static const char *
+ read_collect_gcc_options (void)
+ {
+   static char *cached;
+   const char *raw;
+ 
+   if (cached)
+     return cached;
+ 
+   raw = getenv ("COLLECT_GCC_OPTIONS");
+   if (raw == NULL)
+     return NULL;
+ 
+   cached = expandargstr ("lto-plugin", raw);
+   return cached;
+ }
+ 
  /* Called by a linker after loading the plugin. TV is the transfer vector. */
  
  enum ld_plugin_status
*************** onload (struct ld_plugin_tv *tv)
*** 1617,1623 ****
  	     "could not register the all_symbols_read callback");
      }
  
!   char *collect_gcc_options = getenv ("COLLECT_GCC_OPTIONS");
    if (collect_gcc_options)
      {
        /* Support -fno-use-linker-plugin by failing to load the plugin
--- 1637,1643 ----
  	     "could not register the all_symbols_read callback");
      }
  
!   const char *collect_gcc_options = read_collect_gcc_options ();
    if (collect_gcc_options)
      {
        /* Support -fno-use-linker-plugin by failing to load the plugin
